ソースを参照

重置指定人员的指定角色

chenshudong 4 ヶ月 前
コミット
6d11885e96

+ 11 - 0
airport-admin/src/main/java/com/sundot/airport/web/controller/system/SysUserController.java

@@ -17,6 +17,7 @@ import com.sundot.airport.attendance.domain.portrait.WorkHoursStats;
17 17
 import com.sundot.airport.check.domain.CheckLargeScreenCommonDto;
18 18
 import com.sundot.airport.check.domain.CheckLargeScreenCorrectionDto;
19 19
 import com.sundot.airport.check.domain.CheckLargeScreenCorrectionQueryParamDto;
20
+import com.sundot.airport.common.core.domain.ResetUserRoleDto;
20 21
 import com.sundot.airport.common.core.domain.SysLargeScreenWorkingPortraitDto;
21 22
 import com.sundot.airport.common.enums.RoleTypeEnum;
22 23
 import com.sundot.airport.exam.domain.DailyTask;
@@ -527,6 +528,16 @@ public class SysUserController extends BaseController {
527 528
     }
528 529
 
529 530
     /**
531
+     * 重置指定人员的指定角色
532
+     */
533
+    @PreAuthorize("@ss.hasPermi('system:user:edit')")
534
+    @Log(title = "重置指定人员的指定角色", businessType = BusinessType.UPDATE)
535
+    @PostMapping("/resetUserRole")
536
+    public AjaxResult resetUserRole(@RequestBody ResetUserRoleDto resetUserRoleDto) {
537
+        return toAjax(userService.resetUserRole(resetUserRoleDto));
538
+    }
539
+
540
+    /**
530 541
      * 根据用户ID获取岗位选择框列表
531 542
      */
532 543
     @PreAuthorize("@ss.hasPermi('system:user:query')")

+ 29 - 0
airport-common/src/main/java/com/sundot/airport/common/core/domain/ResetUserRoleDto.java

@@ -0,0 +1,29 @@
1
+package com.sundot.airport.common.core.domain;
2
+
3
+import lombok.Data;
4
+
5
+import java.io.Serializable;
6
+import java.util.List;
7
+
8
+/**
9
+ * 重置指定人员的指定角色Dto
10
+ *
11
+ * @author sundot
12
+ * @date 2020/12/01
13
+ */
14
+@Data
15
+public class ResetUserRoleDto implements Serializable {
16
+
17
+    private static final long serialVersionUID = 1L;
18
+
19
+    /**
20
+     * 用户账号列表
21
+     */
22
+    private List<String> userNameList;
23
+
24
+    /**
25
+     * 角色key列表
26
+     */
27
+    private List<String> roleKeyList;
28
+
29
+}

+ 10 - 2
airport-system/src/main/java/com/sundot/airport/system/service/ISysUserService.java

@@ -3,6 +3,7 @@ package com.sundot.airport.system.service;
3 3
 import java.util.List;
4 4
 
5 5
 import com.sundot.airport.common.core.domain.BaseLargeScreenQueryParamDto;
6
+import com.sundot.airport.common.core.domain.ResetUserRoleDto;
6 7
 import com.sundot.airport.common.core.domain.entity.SysUser;
7 8
 import com.sundot.airport.system.domain.SysLargeScreenCooperationDto;
8 9
 import com.sundot.airport.system.domain.SysLargeScreenCooperationQueryParamDto;
@@ -224,18 +225,25 @@ public interface ISysUserService {
224 225
     public int resetUserPost();
225 226
 
226 227
     /**
228
+     * 重置指定人员的指定角色
229
+     *
230
+     * @return 结果
231
+     */
232
+    public int resetUserRole(ResetUserRoleDto resetUserRoleDto);
233
+
234
+    /**
227 235
      * 根据角色标识查询用户列表
228 236
      *
229 237
      * @param roleKeyList 角色标识
230 238
      * @return 用户列表
231 239
      */
232 240
     public List<SysUser> selectUserListByRoleKey(List<String> roleKeyList);
233
-    
241
+
234 242
     /**
235 243
      * 根据角色标识和站点ID查询用户列表
236 244
      *
237 245
      * @param roleKeyList 角色标识
238
-     * @param stationId 站点ID
246
+     * @param stationId   站点ID
239 247
      * @return 用户列表
240 248
      */
241 249
     public List<SysUser> selectUserListByRoleKeyAndDeptId(List<String> roleKeyList, Long stationId);

+ 31 - 0
airport-system/src/main/java/com/sundot/airport/system/service/impl/SysUserServiceImpl.java

@@ -18,6 +18,7 @@ import cn.hutool.core.collection.CollectionUtil;
18 18
 import cn.hutool.core.util.ObjUtil;
19 19
 import cn.hutool.core.util.StrUtil;
20 20
 import com.sundot.airport.common.core.domain.BaseLargeScreenQueryParamDto;
21
+import com.sundot.airport.common.core.domain.ResetUserRoleDto;
21 22
 import com.sundot.airport.common.core.domain.entity.SysDept;
22 23
 import com.sundot.airport.common.core.domain.entity.SysDictData;
23 24
 import com.sundot.airport.common.dto.UserInfo;
@@ -603,6 +604,36 @@ public class SysUserServiceImpl implements ISysUserService {
603 604
     }
604 605
 
605 606
     /**
607
+     * 重置指定人员的指定角色
608
+     *
609
+     * @return 结果
610
+     */
611
+    @Transactional(rollbackFor = Exception.class)
612
+    @Override
613
+    public int resetUserRole(ResetUserRoleDto resetUserRoleDto) {
614
+        List<SysUserRole> list = new ArrayList<>();
615
+        List<SysRole> sysRoleList = roleMapper.selectRoleList(new SysRole());
616
+        List<Long> roleIdList = sysRoleList.stream().filter(sysRole -> resetUserRoleDto.getRoleKeyList().contains(sysRole.getRoleKey())).map(SysRole::getRoleId).distinct().collect(Collectors.toList());
617
+        resetUserRoleDto.getUserNameList().forEach(x -> {
618
+            SysUser sysUser = userMapper.selectUserByUserName(x);
619
+            if (sysUser == null) {
620
+                throw new ServiceException("根据【" + x + "】未查询到用户信息");
621
+            }
622
+            userRoleMapper.deleteUserRoleByUserId(sysUser.getUserId());
623
+            roleIdList.forEach(y -> {
624
+                SysUserRole sysUserRole = new SysUserRole();
625
+                sysUserRole.setUserId(sysUser.getUserId());
626
+                sysUserRole.setRoleId(y);
627
+                list.add(sysUserRole);
628
+            });
629
+        });
630
+        if (CollUtil.isNotEmpty(list)) {
631
+            userRoleMapper.batchUserRole(list);
632
+        }
633
+        return 1;
634
+    }
635
+
636
+    /**
606 637
      * 根据角色标识查询用户列表
607 638
      *
608 639
      * @param roleKeyList 角色标识