package com.hxzk.gps.service.impl.Role; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.hxzk.gps.controller.Role.Results.AddRoleDto; import com.hxzk.gps.controller.Role.Results.RoleCompanyList; import com.hxzk.gps.controller.Role.Results.RoleResult; import com.hxzk.gps.controller.Role.Results.RoleTreeTableDto; import com.hxzk.gps.entity.Role.Rolemenu; import com.hxzk.gps.entity.System.TbSystemOperationLog; import com.hxzk.gps.mapper.Role.RoleMenuMapper; import com.hxzk.gps.service.Role.RoleMenuService; import com.hxzk.gps.service.System.TbSystemOperationLogService; import com.hxzk.gps.util.GetUser.UserInfoUtil; import com.hxzk.gps.util.Result.ReturnMessage; import com.hxzk.gps.util.Result.TableDto; import com.hxzk.gps.entity.Role.Role; import com.hxzk.gps.mapper.Role.RoleMapper; import com.hxzk.gps.service.Company.TbCompanyService; import com.hxzk.gps.service.Role.IRoleService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hxzk.gps.util.MessageUtils.MessageUtils; import com.hxzk.gps.controller.User.Results.UserTreeTableDto; import com.hxzk.gps.controller.System.SystemLogUtil; import com.hxzk.gps.util.Time.TimeUtil; import com.sun.org.apache.bcel.internal.generic.PUSH; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.sql.Time; import java.util.*; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author YuZhiTong * @since 2025-05-08 */ @Service public class RoleServiceImpl extends ServiceImpl implements IRoleService { /* * Service注入 * */ @Autowired private TbCompanyService companyService; @Autowired private RoleMenuService roleMenuService; @Autowired public TbSystemOperationLogService systemOperationLogService; /* * 角色列表信息 * */ @Override public RoleResult FindRoleInfo(RoleTreeTableDto roleTreeTableDto) { // 创建查询包装器 QueryWrapper queryWrapper = new QueryWrapper<>(); // 处理部门 ID 为空的情况 if (StringUtils.isEmpty(roleTreeTableDto.getDepartmentId())) { List list = companyService.getChildCompanyIds(UserInfoUtil.getUserCompanyId()); queryWrapper.in("companyid", list); } else { queryWrapper.eq("companyid", roleTreeTableDto.getDepartmentId()); } // 处理角色名称查询条件 Optional.ofNullable(roleTreeTableDto.getName()).ifPresent(name -> queryWrapper.like("name", name)); // 使用PageHelper进行分页查询 Page page = PageHelper.startPage(roleTreeTableDto.getPageNum(), roleTreeTableDto.getPageSize()) .doSelectPage(() -> baseMapper.selectList(queryWrapper)); // 封装角色列表 TableDto tableDto = new TableDto(page.getResult(), page.getPageNum(), page.getPageSize(), page.getTotal()); // 获取成功消息 String message = MessageUtils.getMessage("Success"); // 返回结果 - 根据RoleResult的构造函数调整参数 return new RoleResult(200, message, tableDto); } /* * 获取当前登录用户公司所属角色信息列表 * @return 登录用户公司角色信息列表 lable -- value * */ @Override public List FindCompanyRole(String companyid) { // 使用泛型指定 QueryWrapper 的类型 if (companyid.isEmpty()){ companyid = UserInfoUtil.getUserCompanyId(); } QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("companyid", companyid); // 查询角色列表 List roleList = baseMapper.selectList(queryWrapper); // 使用 Stream API 简化循环操作 return roleList.stream() .map(role -> { RoleCompanyList roleLists = new RoleCompanyList(); roleLists.setLabel(role.getName()); roleLists.setValue(String.valueOf(role.getId())); return roleLists; }) .collect(Collectors.toList()); } /* * 获取角色名称 * @return 角色名称 * @param id 角色ID * */ @Override public String FindRoleName(String id) { QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("id", id).or().eq("name", id); return baseMapper.selectOne(queryWrapper).getName(); } @Override public ReturnMessage add(AddRoleDto addRoleDto) { /* 声明操作状态 * */ boolean isSuccess = false; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("name", addRoleDto.getName()); queryWrapper.eq("companyid", addRoleDto.getCompanyid()); //查重 Integer count = Math.toIntExact(baseMapper.selectCount(queryWrapper)); if (count > 0) { //存在 return ReturnMessage.ReturnMessageError("RoleRepeat"); } else { Role role = new Role(); role.setName(addRoleDto.getName()); if (addRoleDto.getCompanyid().equals("")){ addRoleDto.setCompanyid(UserInfoUtil.getUserCompanyId()); } role.setCompanyname(companyService.getChildCompanyName(addRoleDto.getCompanyid())); role.setUsername(UserInfoUtil.getUserName()); role.setCompanyid(addRoleDto.getCompanyid()); role.setAddtime(TimeUtil.GetTime()); if (addRoleDto.isAddrole()){ role.setAddrole(true); } if (addRoleDto.isEditrole()){ role.setEditrole(true); } if (addRoleDto.isDeleterole()){ role.setDeleterole(true); } baseMapper.insert(role); isSuccess = true; //添加角色成功 QueryWrapper queryWrapperselect = new QueryWrapper<>(); queryWrapperselect.eq("name", role.getName()); queryWrapperselect.eq("companyname", role.getCompanyname()); //查询角色ID Role role1 = baseMapper.selectOne(queryWrapperselect); Integer roleId = role1.getId(); Map map = new HashMap<>(); for (int k = 0; k < addRoleDto.getRolist().size();k++){ map.put(addRoleDto.getRolist().get(k).getId(),addRoleDto.getRolist().get(k).getId()); } for (int i = 0; i < addRoleDto.getRolist().size();i++){ if (addRoleDto.getRolist().get(i).getParentId() != null){ if (!map.containsKey(addRoleDto.getRolist().get(i).getParentId())) { //不包含 Rolemenu rolemenu = new Rolemenu(); rolemenu.setRoleId(roleId); rolemenu.setMenuId(addRoleDto.getRolist().get(i).getParentId()); rolemenu.setIsall(0); roleMenuService.save(rolemenu); map.put(addRoleDto.getRolist().get(i).getParentId(),addRoleDto.getRolist().get(i).getParentId()); } } Rolemenu rolemenu = new Rolemenu(); rolemenu.setRoleId(roleId); rolemenu.setMenuId(addRoleDto.getRolist().get(i).getId()); roleMenuService.save(rolemenu); } return SystemLogUtil.handleAddResult(isSuccess,"RoleAdd",role.getName()); } } @Override public ReturnMessage update(AddRoleDto role) { /* 声明操作状态 * */ boolean isSuccess = false; Role role1 = new Role(); role1.setId(role.getId()); role1.setName(role.getName()); role1.setAddtime(TimeUtil.GetTime()); role1.setAddrole(role.isAddrole()); role1.setEditrole(role.isEditrole()); role1.setDeleterole(role.isDeleterole()); role1.setCompanyname(role.getCompanyname()); role1.setUsername(UserInfoUtil.getUserName()); role1.setCompanyid(role.getCompanyid()); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("id", role.getId()); try { baseMapper.update(role1, queryWrapper); roleMenuService.deleteRoleMenu(role.getId()); Integer roleId = role1.getId(); Map map = new HashMap<>(); for (int k = 0; k < role.getRolist().size();k++){ map.put(role.getRolist().get(k).getId(),role.getRolist().get(k).getId()); } for (int i = 0; i < role.getRolist().size();i++){ if (role.getRolist().get(i).getParentId() != null){ if (!map.containsKey(role.getRolist().get(i).getParentId())) { //不包含 Rolemenu rolemenu = new Rolemenu(); rolemenu.setRoleId(roleId); rolemenu.setMenuId(role.getRolist().get(i).getParentId()); rolemenu.setIsall(0); roleMenuService.save(rolemenu); map.put(role.getRolist().get(i).getParentId(),role.getRolist().get(i).getParentId()); } } Rolemenu rolemenu = new Rolemenu(); rolemenu.setRoleId(roleId); rolemenu.setMenuId(role.getRolist().get(i).getId()); roleMenuService.save(rolemenu); } isSuccess = true; }catch (Exception e){ } return SystemLogUtil.handleUpdateResult(isSuccess,"RoleUpdate",role.getName()); } @Override public ReturnMessage delete(AddRoleDto role) { /* 声明操作状态 * */ boolean isSuccess = false; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("id", role.getId()); roleMenuService.deleteRoleMenu(role.getId()); try { baseMapper.delete(queryWrapper); isSuccess = true; }catch (Exception e){ } return SystemLogUtil.handleDeleteResult(isSuccess,"RoleDelete",role.getName()); } }