package cn.huge.module.ctrole.service;
|
|
import cn.huge.base.common.exception.ServiceException;
|
import cn.huge.base.common.utils.DateUtils;
|
import cn.huge.base.common.utils.IdUtils;
|
import cn.huge.module.client.api.impl.UtilsClientImpl;
|
import cn.huge.module.constant.BaseConsts;
|
import cn.huge.module.ctrole.dao.mapper.CtRolefunMapper;
|
import cn.huge.module.ctrole.domain.po.CtRolefun;
|
import cn.huge.module.ctuser.domain.bo.RoleTreeBO;
|
import cn.huge.module.cust.constant.UserBaseConsts;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.google.common.collect.Maps;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.PageImpl;
|
import org.springframework.data.domain.PageRequest;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.PostConstruct;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @title: 客户角色菜单权限表业务逻辑处理
|
* @Description 客户角色菜单权限表业务逻辑处理
|
* @company hugeinfo
|
* @author liyj
|
* @Time 2024-08-19 20:04:19
|
* @version 1.0.0
|
*/
|
@Slf4j
|
@Service
|
@Transactional(rollbackFor = Exception.class)
|
public class CtRolefunService extends ServiceImpl<CtRolefunMapper, CtRolefun>{
|
|
@Autowired
|
private CtRolefunMapper mapper;
|
|
@Autowired
|
private UtilsClientImpl utilsClient;
|
|
/**
|
* 更新对象
|
* @param entity 对象
|
*/
|
public void updateCtRolefun(CtRolefun entity){
|
try{
|
mapper.updateCtRolefun(entity);
|
}catch (Exception e){
|
log.error("[CtRolefunService.updateCtRolefun]调用失败,异常信息:"+e, e);
|
throw new ServiceException("CtRolefunService.updateCtRolefun", e);
|
}
|
}
|
|
/**
|
* 条件更新对象
|
* @param entity 对象
|
* @param terms 条件
|
*/
|
public void updateCtRolefunTerms(CtRolefun entity, Map<String, Object> terms){
|
try{
|
mapper.updateCtRolefunTerms(entity, terms);
|
}catch (Exception e){
|
log.error("[CtRolefunService.updateCtRolefunTerms]调用失败,异常信息:"+e, e);
|
throw new ServiceException("CtRolefunService.updateCtRolefunTerms", e);
|
}
|
}
|
|
/**
|
* 根据编号物理删除
|
* @param id 查询条件集合
|
*/
|
public void deleteCtRolefun(String id){
|
try{
|
mapper.deleteCtRolefun(id);
|
}catch (Exception e){
|
log.error("[CtRolefunService.deleteCtRolefun]调用失败,异常信息:"+e, e);
|
throw new ServiceException("CtRolefunService.deleteCtRolefun", e);
|
}
|
}
|
|
/**
|
* 按条件查询
|
* @param terms 条件
|
* @return List
|
*/
|
public List<CtRolefun> listTerms(Map<String, Object> terms){
|
return mapper.listTerms(terms);
|
}
|
|
/**
|
* 按条件统计
|
* @param terms 条件
|
* @return long
|
*/
|
public long countTerms(Map<String, Object> terms){
|
return mapper.countTerms(terms);
|
}
|
|
/**
|
* 按条件分页查询
|
* @param page 分页对象
|
* @param terms 条件
|
* @return Page
|
*/
|
public Page<CtRolefun> pageQuery(PageRequest page, Map<String, Object> terms){
|
long total = mapper.countTerms(terms);
|
List<CtRolefun> content = mapper.pageTerms(page, terms);
|
return new PageImpl<CtRolefun>(content, page, total);
|
}
|
|
/**
|
* 新增或更新对象
|
* @param ctRolefun 实体对象
|
*/
|
public void saveCtRolefun(CtRolefun ctRolefun){
|
try{
|
Date nowDate = DateUtils.getNowDate();
|
// 判断是否新增
|
if (IdUtils.checkNewId(ctRolefun.getId())){
|
ctRolefun.setId(utilsClient.getNewTimeId());
|
ctRolefun.setCreateTime(nowDate);
|
}
|
ctRolefun.setUpdateTime(nowDate);
|
this.saveOrUpdate(ctRolefun);
|
}catch (Exception e){
|
log.error("[CtRolefunService.saveCtRolefun]调用失败,异常信息:"+e, e);
|
throw new ServiceException("CtRolefunService.saveCtRolefun", e);
|
}
|
}
|
|
/**
|
* 查询角色树形结构
|
* @param roleId 角色编号
|
* @return List<RoleTreeBO> 树形结构
|
*/
|
public List<RoleTreeBO> getRolefunTree(String roleId){
|
//查询所有的关系
|
Map<String, Object> terms = Maps.newHashMap();
|
terms.put("roleId",roleId);
|
List<CtRolefun> rolefuns = mapper.listTerms(terms);
|
List<CtRolefun> list = new ArrayList<>();
|
List<RoleTreeBO> treeBOS = new ArrayList<>();
|
if (rolefuns.size() > 0) {
|
//第一级菜单集合
|
for (int i = 0; i < rolefuns.size(); i++) {
|
// 一级菜单没有parentId
|
if (BaseConsts.ROOT.equals(rolefuns.get(i).getParentId())) {
|
list.add(rolefuns.get(i));
|
}
|
}
|
// 为一级菜单设置子菜单,getChild是递归调用的
|
for (CtRolefun rolefun : list) {
|
RoleTreeBO treeBO = new RoleTreeBO();
|
treeBO.setLabel(rolefun.getPowerName());
|
treeBO.setValue(rolefun.getPowerId());
|
treeBO.setLabelType(rolefun.getPowerType());
|
treeBO.setAppClient(rolefun.getAppClient());
|
treeBO.setPowerTag(rolefun.getPowerTag());
|
treeBO.setPowerUrl(rolefun.getPowerUrl());
|
treeBO.setPowerIcon(rolefun.getPowerIcon());
|
treeBO.setChildren(getChild(rolefun.getPowerId(), rolefuns));
|
treeBOS.add(treeBO);
|
}
|
}
|
return treeBOS;
|
}
|
|
/**
|
* 递归查找子菜单
|
* @param id 当前菜单id
|
* @param ctRolefuns 要查找的列表
|
* @return List<TreeBO> 树形列表集合
|
*/
|
private List<RoleTreeBO> getChild(String id, List<CtRolefun> ctRolefuns) {
|
// 子菜单
|
List<RoleTreeBO> childList = new ArrayList<>();
|
for (CtRolefun rolefun : ctRolefuns) {
|
// 遍历所有节点,将父菜单id与传过来的id比较
|
if (StringUtils.isNotBlank(rolefun.getParentId())) {
|
if (rolefun.getParentId().equals(id)) {
|
RoleTreeBO roleTree = new RoleTreeBO();
|
roleTree.setLabel(rolefun.getPowerName());
|
roleTree.setValue(rolefun.getPowerId());
|
roleTree.setLabelType(rolefun.getPowerType());
|
roleTree.setAppClient(rolefun.getAppClient());
|
roleTree.setPowerTag(rolefun.getPowerTag());
|
roleTree.setPowerUrl(rolefun.getPowerUrl());
|
roleTree.setPowerIcon(rolefun.getPowerIcon());
|
roleTree.setChildren(getChild(rolefun.getPowerId(), ctRolefuns));
|
childList.add(roleTree);
|
}
|
}
|
}
|
return childList;
|
}
|
}
|