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;
|
|
/**
|
* <p>
|
* 服务实现类
|
* </p>
|
*
|
* @author YuZhiTong
|
* @since 2025-05-08
|
*/
|
@Service
|
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IRoleService {
|
/*
|
* Service注入
|
* */
|
@Autowired
|
private TbCompanyService companyService;
|
@Autowired
|
private RoleMenuService roleMenuService;
|
@Autowired
|
public TbSystemOperationLogService systemOperationLogService;
|
|
|
/*
|
* 角色列表信息
|
* */
|
@Override
|
public RoleResult FindRoleInfo(RoleTreeTableDto roleTreeTableDto) {
|
// 创建查询包装器
|
QueryWrapper<Role> queryWrapper = new QueryWrapper<>();
|
|
// 处理部门 ID 为空的情况
|
if (StringUtils.isEmpty(roleTreeTableDto.getDepartmentId())) {
|
List<Long> 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<Role> 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<RoleCompanyList> FindCompanyRole(String companyid) {
|
// 使用泛型指定 QueryWrapper 的类型
|
if (companyid.isEmpty()){
|
companyid = UserInfoUtil.getUserCompanyId();
|
}
|
QueryWrapper<Role> queryWrapper = new QueryWrapper<>();
|
queryWrapper.eq("companyid", companyid);
|
// 查询角色列表
|
List<Role> 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<Role> 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<Integer,Integer> 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<Integer,Integer> 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());
|
|
}
|
|
}
|