From 7ef4892f9f24f941aca37e6b3991b808a0aca619 Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期五, 08 九月 2023 11:16:35 +0800 Subject: [PATCH] 优化 --- ycl-common/src/main/java/com/ycl/service/user/impl/UmsDepartManageServiceImpl.java | 149 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 149 insertions(+), 0 deletions(-) diff --git a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsDepartManageServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsDepartManageServiceImpl.java new file mode 100644 index 0000000..9a792f3 --- /dev/null +++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsDepartManageServiceImpl.java @@ -0,0 +1,149 @@ +package com.ycl.service.user.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ycl.api.BasePageDTO; +import com.ycl.entity.depart.UmsDepart; +import com.ycl.entity.user.*; +import com.ycl.mapper.user.AdminMenuRelationMapper; +import com.ycl.mapper.user.UmsAdminRoleRelationMapper; +import com.ycl.mapper.user.UmsDepartManageMapper; +import com.ycl.mapper.user.UmsRoleMenuRelationMapper; +import com.ycl.service.depart.UmsDepartService; +import com.ycl.service.user.UmsAdminService; +import com.ycl.service.user.UmsDepartManageService; +import com.ycl.vo.depart.DepartVO; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author lyq + * @since 2022-09-09 + */ +@Service +public class UmsDepartManageServiceImpl extends ServiceImpl<UmsDepartManageMapper, UmsDepartManage> implements UmsDepartManageService { + + @Resource + private UmsDepartManageMapper umsDepartManageMapper; + @Resource + private UmsDepartService sccgDepartService; + @Resource + private UmsAdminService umsAdminService; + @Resource + UmsAdminRoleRelationMapper umsAdminRoleRelationMapper; + @Resource + AdminMenuRelationMapper adminMenuRelationMapper; + @Resource + UmsRoleMenuRelationMapper roleMenuRelationMapper; + + @Override + public List<UmsDepartManage> queryByDepartId(Long departId) { + List<UmsDepartManage> umsAdminDeparts = umsDepartManageMapper.selectList(new LambdaQueryWrapper<UmsDepartManage>() + .eq(UmsDepartManage::getDepartId, departId)); + if (CollUtil.isNotEmpty(umsAdminDeparts)) { + return umsAdminDeparts; + } + return null; + } + + @Override + public List<UmsDepartManage> queryByUserId(long userId) { + List<UmsDepartManage> umsAdminDeparts = umsDepartManageMapper.selectList(new LambdaQueryWrapper<UmsDepartManage>().eq(UmsDepartManage::getUserId, userId)); + if (CollUtil.isNotEmpty(umsAdminDeparts)) { + return umsAdminDeparts; + } + return null; + } + + @Override + public void deletedByDepartId(long departId) { + umsDepartManageMapper.deletedByDepartId(departId); + } + + @Override + public BasePageDTO belongDepart(long userId, int current, int pageSize) { + BasePageDTO basePageDTO = new BasePageDTO(); + Long count = umsDepartManageMapper.selectCount(new LambdaQueryWrapper<UmsDepartManage>().eq(UmsDepartManage::getUserId, userId)); + basePageDTO.setTotal(count); + if (count > 0) { + current = (current - 1) * pageSize; + List<UmsDepartManage> departList = umsDepartManageMapper.selectPageByUserId(userId, current, pageSize); + List<DepartVO.AdminDepartInfoVO> adminDepartInfoVOS = new ArrayList<>(); + DepartVO.AdminDepartInfoVO adminDepartInfoVO = null; + for (UmsDepartManage umsAdminDepart : departList) { + adminDepartInfoVO = new DepartVO.AdminDepartInfoVO(); + UmsDepart sccgDepart = sccgDepartService.loadDepartById(umsAdminDepart.getDepartId()); + UmsAdmin umsAdmin = umsAdminService.getById(userId); + adminDepartInfoVO.setDepartId(umsAdminDepart.getDepartId()); + adminDepartInfoVO.setDepartName(sccgDepart.getDepartName()); + adminDepartInfoVO.setDepartDes(sccgDepart.getDepartDes()); + adminDepartInfoVO.setDepartType(sccgDepart.getDepartType()); + adminDepartInfoVO.setUserId(userId); + adminDepartInfoVO.setUserName(umsAdmin.getUsername()); + adminDepartInfoVOS.add(adminDepartInfoVO); + } + basePageDTO.setRecords(adminDepartInfoVOS); + } + return basePageDTO; + } + + @Override + public void userUpdateRoles(Long id, List<Long> roles) { + //瑙i櫎鐢ㄦ埛瑙掕壊缁戝畾 + umsAdminRoleRelationMapper.delete(new LambdaQueryWrapper<UmsAdminRoleRelation>().eq(UmsAdminRoleRelation::getAdminId, id)); + //瑙i櫎鐢ㄦ埛缁戝畾瑙掕壊缁戝畾鑿滃崟 + adminMenuRelationMapper.delete(new LambdaQueryWrapper<AdminMenuRelation>().eq(AdminMenuRelation::getAdminId, id)); + //缁戝畾瑙掕壊浜庣敤鎴� + if (!roles.isEmpty()) { + for (Long role : roles) { + UmsAdminRoleRelation urr = new UmsAdminRoleRelation(); + urr.setAdminId(id); + urr.setRoleId(role); + umsAdminRoleRelationMapper.insert(urr); + } + } + //缁戝畾鑿滃崟浜庣敤鎴� + ArrayList<UmsRoleMenuRelation> umsRoleMenuRelations = new ArrayList<>(); + for (Long role : roles) { + umsRoleMenuRelations.addAll(roleMenuRelationMapper + .selectList(new LambdaQueryWrapper<UmsRoleMenuRelation>() + .eq(UmsRoleMenuRelation::getRoleId, role))); + } + umsRoleMenuRelations + .stream() + .map(item -> item.getMenuId()) + .collect(Collectors.toList()) + .stream() + .distinct() + .collect(Collectors.toList()) + .stream() + .forEach(item -> { + AdminMenuRelation adminMenuRelation = new AdminMenuRelation(); + adminMenuRelation.setAdminId(id); + adminMenuRelation.setMenuId(item); + adminMenuRelationMapper.insert(adminMenuRelation); + }); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void userUpdateDepart(Long userId,Long departId) { + umsDepartManageMapper.delete(new LambdaQueryWrapper<UmsDepartManage>().eq(UmsDepartManage::getUserId,userId)); + UmsDepartManage umsDepartManage = new UmsDepartManage(); + umsDepartManage.setUserId(userId); + umsDepartManage.setCreateTime(new Date()); + umsDepartManage.setDepartId(departId); + umsDepartManageMapper.insert(umsDepartManage); + } +} \ No newline at end of file -- Gitblit v1.8.0