diff --git a/service-core/src/main/java/ink/wgink/service/core/controller/api/manage/CoreManageController.java b/service-core/src/main/java/ink/wgink/service/core/controller/api/manage/CoreManageController.java index 67abb396..5f49c981 100644 --- a/service-core/src/main/java/ink/wgink/service/core/controller/api/manage/CoreManageController.java +++ b/service-core/src/main/java/ink/wgink/service/core/controller/api/manage/CoreManageController.java @@ -88,6 +88,7 @@ public class CoreManageController extends DefaultBaseController { @ApiOperation(value = "组织部门用户列表", notes = "组织部门用户列表接口") @ApiImplicitParams({ + @ApiImplicitParam(name = "searchLevel", value = "搜索级别", paramType = "query"), @ApiImplicitParam(name = "departmentId", value = "部门ID", paramType = "query"), @ApiImplicitParam(name = "roleId", value = "部门ID", paramType = "query"), @ApiImplicitParam(name = "positionId", value = "部门ID", paramType = "query"), diff --git a/service-core/src/main/java/ink/wgink/service/core/service/manage/impl/CoreManageServiceImpl.java b/service-core/src/main/java/ink/wgink/service/core/service/manage/impl/CoreManageServiceImpl.java index ee1fb63a..8739c06f 100644 --- a/service-core/src/main/java/ink/wgink/service/core/service/manage/impl/CoreManageServiceImpl.java +++ b/service-core/src/main/java/ink/wgink/service/core/service/manage/impl/CoreManageServiceImpl.java @@ -8,6 +8,11 @@ import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.interfaces.user.mongo.IMongoLoginUserService; import ink.wgink.pojo.ListPage; import ink.wgink.pojo.dtos.department.DepartmentDTO; +import ink.wgink.pojo.dtos.department.DepartmentUserDTO; +import ink.wgink.pojo.dtos.group.GroupUserDTO; +import ink.wgink.pojo.dtos.position.PositionUserDTO; +import ink.wgink.pojo.dtos.role.RoleDTO; +import ink.wgink.pojo.dtos.role.RoleUserDTO; import ink.wgink.pojo.dtos.user.UserDTO; import ink.wgink.pojo.pos.DepartmentPO; import ink.wgink.pojo.pos.GroupPO; @@ -112,6 +117,18 @@ public class CoreManageServiceImpl extends DefaultBaseService implements ICoreMa @Override public SuccessResultList> listPageUser(ListPage page) { + Object searchLevelObject = page.getParams().get("searchLevel"); + String searchLevel = searchLevelObject != null ? searchLevelObject.toString() : null; + + Object departmentIdObject = page.getParams().get("departmentId"); + String departmentId = departmentIdObject != null ? departmentIdObject.toString() : null; + + if ((!StringUtils.isBlank(searchLevel) && StringUtils.equals("part", searchLevel)) && !StringUtils.isBlank(departmentId)) { + DepartmentPO departmentPO = departmentService.getPO(departmentId); + page.getParams().remove("departmentId"); + page.getParams().put("departmentCodeLike", departmentPO.getDepartmentCode()); + } + PageHelper.startPage(page.getPage(), page.getRows()); List userDTOs = listUser(page.getParams()); PageInfo pageInfo = new PageInfo<>(userDTOs); @@ -124,43 +141,44 @@ public class CoreManageServiceImpl extends DefaultBaseService implements ICoreMa if (userIds.isEmpty()) { return; } - List departmentPOS = departmentUserService.listDepartmentPOByUserIds(userIds); - List rolePOS = roleUserService.listRolePOByUserIds(userIds); - List positionPOS = positionUserService.listPositionPOByUserIds(userIds); - List groupPOS = groupUserService.listGroupPOByUserIds(userIds); + List departmentUserDTOS = departmentUserService.listByUserIds(userIds); + List roleUserDTOS = roleUserService.listByUserIds(userIds); + List positionUserDTOS = positionUserService.listByUserIds(userIds); + List groupUserDTOS = groupUserService.listByUserIds(userIds); userDTOS.forEach(userDTO -> { + // 组织机构 List departmentIds = new ArrayList<>(); List departmentNames = new ArrayList<>(); - departmentPOS.forEach(departmentPO -> { - departmentIds.add(departmentPO.getDepartmentId()); - departmentNames.add(departmentPO.getDepartmentName()); + departmentUserDTOS.stream().filter(departmentUserDTO -> StringUtils.equals(userDTO.getUserId(), departmentUserDTO.getUserId())).forEach(departmentUserDTO -> { + departmentIds.add(departmentUserDTO.getDepartmentId()); + departmentNames.add(departmentUserDTO.getDepartmentName()); }); userDTO.setDepartmentIds(StringUtils.join(departmentIds, ",")); userDTO.setDepartmentNames(StringUtils.join(departmentNames, ",")); - + // 角色 List roleIds = new ArrayList<>(); List roleNames = new ArrayList<>(); - rolePOS.forEach(rolePO -> { - roleIds.add(rolePO.getRoleId()); - roleNames.add(rolePO.getRoleName()); + roleUserDTOS.stream().filter(roleUserDTO -> StringUtils.equals(userDTO.getUserId(), roleUserDTO.getUserId())).forEach(roleUserDTO -> { + roleIds.add(roleUserDTO.getRoleId()); + roleNames.add(roleUserDTO.getRoleName()); }); userDTO.setRoleIds(StringUtils.join(roleIds, ",")); userDTO.setRoleNames(StringUtils.join(roleNames, ",")); - + // 职位 List positionIds = new ArrayList<>(); List positionNames = new ArrayList<>(); - positionPOS.forEach(positionPO -> { - positionIds.add(positionPO.getPositionId()); - positionNames.add(positionPO.getPositionName()); + positionUserDTOS.stream().filter(positionUserDTO -> StringUtils.equals(userDTO.getUserId(), positionUserDTO.getUserId())).forEach(positionUserDTO -> { + positionIds.add(positionUserDTO.getPositionId()); + positionNames.add(positionUserDTO.getPositionName()); }); userDTO.setPositionIds(StringUtils.join(positionIds, ",")); userDTO.setPositionNames(StringUtils.join(positionNames, ",")); - + // 组 List groupIds = new ArrayList<>(); List groupNames = new ArrayList<>(); - groupPOS.forEach(groupPO -> { - groupIds.add(groupPO.getGroupId()); - groupNames.add(groupPO.getGroupName()); + groupUserDTOS.stream().filter(groupUserDTO -> StringUtils.equals(userDTO.getUserId(), groupUserDTO.getUserId())).forEach(groupUserDTO -> { + groupIds.add(groupUserDTO.getGroupId()); + groupNames.add(groupUserDTO.getGroupName()); }); userDTO.setGroupIds(StringUtils.join(groupIds, ",")); userDTO.setGroupNames(StringUtils.join(groupNames, ",")); diff --git a/service-core/src/main/resources/mybatis/mapper/core-manage-mapper.xml b/service-core/src/main/resources/mybatis/mapper/core-manage-mapper.xml index b2decb18..131b43b9 100644 --- a/service-core/src/main/resources/mybatis/mapper/core-manage-mapper.xml +++ b/service-core/src/main/resources/mybatis/mapper/core-manage-mapper.xml @@ -59,6 +59,23 @@ t1.user_id NOT IN (SELECT st1.user_id FROM sys_department_user st1) + + AND + t1.user_id IN ( + SELECT + user_id + FROM + sys_department_user st1 + INNER JOIN + sys_department st11 + ON + st1.department_id = st11.department_id + WHERE + st11.is_delete = 0 + AND + st11.department_code LIKE CONCAT(#{departmentCodeLike}, '%') + ) + AND t1.user_id IN ( @@ -66,7 +83,13 @@ user_id FROM sys_department_user st1 + INNER JOIN + sys_department st11 + ON + st11.department_id = st11.department_id WHERE + st11.is_delete = 0 + AND st1.department_id = #{departmentId} ) @@ -77,7 +100,13 @@ user_id FROM sys_department_user st1 + INNER JOIN + sys_department st11 + ON + st1.department_id = st11.department_id WHERE + st11.is_delete = 0 + AND st1.department_id IN #{departmentIds[${index}]} @@ -121,7 +150,13 @@ user_id FROM sys_role_user st2 + INNER JOIN + sys_role st21 + ON + st2.role_id = st21.role_id WHERE + st21.is_delete = 0 + AND st2.role_id = #{roleId} ) @@ -132,7 +167,13 @@ user_id FROM sys_role_user st2 + INNER JOIN + sys_role st21 + ON + st2.role_id = st21.role_id WHERE + st21.is_delete = 0 + AND st2.role_id IN #{roleIds[${index}]} @@ -151,7 +192,13 @@ user_id FROM sys_position_user st3 + INNER JOIN + sys_position st31 + ON + st3.position_id = st31.position_id WHERE + st31.is_delete = 0 + AND st3.position_id = #{positionId} ) @@ -162,7 +209,13 @@ user_id FROM sys_position_user st3 + INNER JOIN + sys_position st31 + ON + st3.position_id = st31.position_id WHERE + st31.is_delete = 0 + AND st3.position_id IN #{positionIds[${index}]} @@ -181,6 +234,12 @@ user_id FROM sys_group_user st4 + INNER JOIN + sys_group st41 + ON + st4.group_id = st41.group_id + WHERE + st41.is_delete = 0 WHERE st4.group_id = #{groupId} ) @@ -192,7 +251,13 @@ user_id FROM sys_group_user st4 + INNER JOIN + sys_group st41 + ON + st4.group_id = st41.group_id WHERE + st41.is_delete = 0 + AND st4.group_id IN #{groupIds[${index}]} diff --git a/service-core/src/main/resources/static/assets/js/core/manage/department-user.js b/service-core/src/main/resources/static/assets/js/core/manage/department-user.js index 91e077fc..034f6640 100644 --- a/service-core/src/main/resources/static/assets/js/core/manage/department-user.js +++ b/service-core/src/main/resources/static/assets/js/core/manage/department-user.js @@ -50,7 +50,6 @@ function initMultiSelectInputTree($, treeselect) { url: 'url' }, onInitSelectedDataFilter: function(selectedData) { - console.log(selectedData); $.each(selectedData, function(i, item) { item.id = item.departmentId; item.name = item.departmentName; diff --git a/service-core/src/main/resources/templates/core/manage/list-department-user.html b/service-core/src/main/resources/templates/core/manage/list-department-user.html index b4c40073..ca4acd6e 100644 --- a/service-core/src/main/resources/templates/core/manage/list-department-user.html +++ b/service-core/src/main/resources/templates/core/manage/list-department-user.html @@ -28,6 +28,7 @@
@@ -330,6 +331,7 @@ endTime: $('#endTime').val(), userType: $('#userType').val(), userState: $('#userState').val(), + searchLevel: $('#searchLevel').val(), noDepartment: noDepartment ? 1 : 0, noRole: noRole ? 1 : 0, roleId: noRole ? '' : $('#roleId').val(), @@ -622,7 +624,7 @@ $('#noDepartmentContainer').hide(); form.on('select(searchLevelFilter)', function(data) { - if(data.value === 'this') { + if(data.value === 'this' || data.value === 'part') { $('#noDepartmentContainer').hide(); $('input[name="noDepartment"]').prop('checked', false); noDepartment = false;