From 622d26ba10bb7d37d006c73e240082a6f6c69db9 Mon Sep 17 00:00:00 2001
From: mg <maokecheng@163.com>
Date: 星期五, 14 十月 2022 16:47:50 +0800
Subject: [PATCH] 修改处置流程。

---
 ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java |  139 ++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 127 insertions(+), 12 deletions(-)

diff --git a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
index 366c696..86a520b 100644
--- a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
+++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
@@ -10,22 +10,23 @@
 import com.ycl.bo.AdminUserDetails;
 import com.ycl.dto.UmsAdminParam;
 import com.ycl.dto.UpdateAdminPasswordParam;
-import com.ycl.entity.depart.SccgDepart;
+import com.ycl.entity.depart.UmsDepart;
 import com.ycl.entity.user.*;
+import com.ycl.exception.ApiException;
 import com.ycl.exception.Asserts;
-import com.ycl.mapper.user.UmsAdminLoginLogMapper;
-import com.ycl.mapper.user.UmsAdminMapper;
-import com.ycl.mapper.user.UmsResourceMapper;
-import com.ycl.mapper.user.UmsRoleMapper;
-import com.ycl.service.depart.SccgDepartService;
+import com.ycl.mapper.user.*;
+import com.ycl.service.depart.UmsDepartService;
+import com.ycl.service.redis.RedisService;
 import com.ycl.service.user.UmsAdminCacheService;
 import com.ycl.service.user.UmsAdminRoleRelationService;
 import com.ycl.service.user.UmsAdminService;
 import com.ycl.utils.JwtTokenUtil;
 import com.ycl.utils.SpringUtil;
+import com.ycl.utils.common.LiveTimeMillisecond;
 import com.ycl.utils.common.MacUtils;
 import com.ycl.utils.common.PojoUtils;
 import com.ycl.utils.common.RandomUtils;
+import com.ycl.utils.redis.RedisKey;
 import com.ycl.vo.user.UserVO;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -49,6 +50,7 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 鍚庡彴绠$悊鍛樼鐞哠ervice瀹炵幇绫�
@@ -70,7 +72,17 @@
     @Resource
     private UmsResourceMapper umsResourceMapper;
     @Resource
-    private SccgDepartService sccgDepartService;
+    private UmsDepartService departService;
+    @Resource
+    private RedisService redisService;
+    @Resource
+    private UmsDepartManageMapper umsDepartManageMapper;
+    @Resource
+    UmsRoleMenuRelationMapper umsRoleMenuRelationMapper;
+    @Resource
+    AdminMenuRelationMapper adminMenuRelationMapper;
+    @Resource
+    UmsMenuMapper umsMenuMapper;
 
     @Override
     public UmsAdmin getAdminByUsername(String username) {
@@ -107,8 +119,49 @@
         String encodePassword = passwordEncoder.encode(umsAdmin.getPassword());
         umsAdmin.setPassword(encodePassword);
         baseMapper.insert(umsAdmin);
+
+        //娣诲姞瑙掕壊鎺堟潈
+        List<Long> ids = umsAdminParam.getRoleIds();
+        if (!ids.isEmpty()) {
+            List<UmsAdminRoleRelation> roleIds = new ArrayList<>();
+            for (Long id : ids) {
+                UmsAdminRoleRelation urr = new UmsAdminRoleRelation();
+                urr.setAdminId(umsAdmin.getId());
+                urr.setRoleId(id);
+                roleIds.add(urr);
+            }
+            umsAdminRoleRelationService.saveBatch(roleIds);
+        }
+        //缁戝畾鑿滃崟浜庣敤鎴�
+        if (!ids.isEmpty()) {
+            Integer size = 0;
+            Long maxId = null;
+            for (Long id : ids) {
+                if (size < umsRoleMenuRelationMapper
+                        .selectList(new LambdaQueryWrapper<UmsRoleMenuRelation>()
+                                .eq(UmsRoleMenuRelation::getRoleId, id)).size()) {
+                    size = umsRoleMenuRelationMapper
+                            .selectList(new LambdaQueryWrapper<UmsRoleMenuRelation>()
+                                    .eq(UmsRoleMenuRelation::getRoleId, id)).size();
+                    maxId = id;
+                }
+            }
+            umsRoleMenuRelationMapper
+                    .selectList(new LambdaQueryWrapper<UmsRoleMenuRelation>()
+                            .eq(UmsRoleMenuRelation::getRoleId, maxId))
+                    .stream()
+                    .forEach(item -> {
+                        AdminMenuRelation adminMenuRelation = new AdminMenuRelation();
+                        adminMenuRelation.setAdminId(umsAdmin.getId());
+                        adminMenuRelation.setMenuId(item.getMenuId());
+                        adminMenuRelation.setSort(umsMenuMapper.selectOne(new LambdaQueryWrapper<UmsMenu>().eq(UmsMenu::getId, item.getMenuId())).getSort());
+                        adminMenuRelationMapper.insert(adminMenuRelation);
+                    });
+        }
+        //瀵圭敤鎴峰悕绯荤粺榛樿娣诲姞
         umsAdmin.setNickName(RandomUtils.getUserId(umsAdmin.getId()));
         baseMapper.updateById(umsAdmin);
+
         return umsAdmin;
     }
 
@@ -117,7 +170,7 @@
         String token = null;
         //瀵嗙爜闇�瑕佸鎴风鍔犲瘑鍚庝紶閫�
         try {
-            UserDetails userDetails = loadUserByUsername(username);
+            AdminUserDetails userDetails = (AdminUserDetails) loadUserByUsername(username);
             if (!passwordEncoder.matches(password, userDetails.getPassword())) {
                 Asserts.fail("瀵嗙爜涓嶆纭�");
             }
@@ -126,7 +179,9 @@
             }
             UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
             SecurityContextHolder.getContext().setAuthentication(authentication);
-            token = jwtTokenUtil.generateToken(userDetails);
+            //鏍规嵁鐢ㄦ埛id锛岀敤鎴峰鍚�
+            token = jwtTokenUtil.generateToken(userDetails.getUserId(), userDetails.getUsername());
+            redisService.set(RedisKey.PLATFORM_TOKEN_KEY.concat(username), token, LiveTimeMillisecond.s7200.time);
 //            updateLoginTimeByUsername(username);
             insertLoginLog(username);
         } catch (AuthenticationException e) {
@@ -181,6 +236,7 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean update(Long id, UmsAdmin admin) {
         admin.setId(id);
         UmsAdmin rawAdmin = getById(id);
@@ -293,6 +349,12 @@
         int current = pageUserVO.getCurrent();
         Page<UmsAdmin> page = new Page<>(current, pageSize);
         LambdaQueryWrapper<UmsAdmin> queryWrapper = new LambdaQueryWrapper<>();
+
+        if (StringUtils.isNotBlank(pageUserVO.getKeyword())) {
+            queryWrapper.like(UmsAdmin::getUsername, pageUserVO.getKeyword())
+                    .or().like(UmsAdmin::getNickName, pageUserVO.getKeyword())
+                    .or().like(UmsAdmin::getMobile, pageUserVO.getKeyword());
+        }
         if (StringUtils.isNotBlank(pageUserVO.getJobTitle())) {
             queryWrapper.eq(UmsAdmin::getJobTitle, pageUserVO.getJobTitle());
         }
@@ -306,12 +368,65 @@
         List<UmsAdmin> records = page1.getRecords();
         if (CollUtil.isNotEmpty(records)) {
             records.forEach(e -> {
-                SccgDepart sccgDepart = sccgDepartService.getById(e.getDepartmentId());
-                if (null != sccgDepart) {
-                    e.setDepartName(sccgDepart.getDepartName());
+                UmsDepart umsDepart = departService.getById(e.getDepartmentId());
+                if (null != umsDepart) {
+                    e.setDepartName(umsDepart.getDepartName());
                 }
+                //鑾峰彇瑙掕壊鍒楄〃
+                List<UmsRole> roles = umsRoleMapper.getRoleList(e.getId());
+                e.setRoles(roles);
             });
         }
         return page1;
     }
+
+    @Override
+    public boolean deleteBatch(List<Long> ids) {
+        boolean success = removeByIds(ids);
+        getCacheService().delBatchAdmin(ids);
+        return success;
+    }
+
+    @Override
+    public boolean updateStatusBatch(List<Long> ids, Integer status) {
+        List<UmsAdmin> users = new ArrayList<>();
+        for (Long id : ids) {
+            UmsAdmin umsAdmin = UmsAdmin.builder().
+                    id(id).status(status).build();
+            users.add(umsAdmin);
+        }
+        updateBatchById(users, users.size());
+        getCacheService().delBatchAdmin(ids);
+        return true;
+    }
+
+    @Override
+    public List<UmsAdmin> getDepartUser(Long departId) {
+        QueryWrapper<UmsDepartManage> wrapper = new QueryWrapper<>();
+        wrapper.lambda().eq(UmsDepartManage::getDepartId, departId);
+        List<UmsDepartManage> list = umsDepartManageMapper.selectList(wrapper);
+        List<Long> userIds = list.stream().map(UmsDepartManage::getUserId).collect(Collectors.toList());
+        QueryWrapper<UmsAdmin> wrapperUser = new QueryWrapper<>();
+        wrapperUser.in("id", userIds);
+        List<UmsAdmin> adminList = baseMapper.selectList(wrapperUser);
+        return adminList;
+    }
+
+    @Override
+    public String getTargetTo(String ids, String sendType) {
+        String str = null;
+        String[] arr = ids.split(",");
+        QueryWrapper<UmsAdmin> wrapperUser = new QueryWrapper<>();
+        wrapperUser.in("id", arr);
+        List<UmsAdmin> adminList = baseMapper.selectList(wrapperUser);
+        if (adminList == null || adminList.isEmpty()) {
+            throw new ApiException("鏈煡璇㈠埌鐢ㄦ埛");
+        }
+        if ("02".equals(sendType)) {
+            str = adminList.stream().map(UmsAdmin::getEmail).collect(Collectors.joining(","));
+        } else {
+            str = adminList.stream().map(UmsAdmin::getMobile).collect(Collectors.joining(","));
+        }
+        return str;
+    }
 }

--
Gitblit v1.8.0