修改人员选择:统一更新 -> 单独更新新增、删除

This commit is contained in:
wanggeng 2022-02-09 09:55:00 +08:00
parent 0a693df6de
commit 4815194d2d
21 changed files with 291 additions and 116 deletions

View File

@ -7,7 +7,7 @@ import ink.wgink.pojo.dtos.department.DepartmentUserDTO;
import ink.wgink.pojo.result.ErrorResult;
import ink.wgink.pojo.result.SuccessResult;
import ink.wgink.pojo.result.SuccessResultList;
import ink.wgink.pojo.vos.IdsVO;
import ink.wgink.pojo.vos.SaveAndDeleteIdsVO;
import ink.wgink.service.department.pojo.vos.DepartmentUserSortVO;
import ink.wgink.service.department.service.IDepartmentUserService;
import io.swagger.annotations.*;
@ -43,8 +43,8 @@ public class DepartmentUserController extends DefaultBaseController {
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PutMapping("update/{departmentId}")
public synchronized SuccessResult update(@PathVariable("departmentId") String departmentId,
@RequestBody IdsVO idsVO) {
departmentUserService.update(departmentId, idsVO.getIds());
@RequestBody SaveAndDeleteIdsVO saveAndDeleteIdsVO) {
departmentUserService.update(departmentId, saveAndDeleteIdsVO.getSaveIds(), saveAndDeleteIdsVO.getDeleteIds());
return new SuccessResult();
}

View File

@ -61,9 +61,10 @@ public interface IDepartmentUserService extends IDepartmentUserBaseService {
* 更新用户
*
* @param departmentId 部门ID
* @param userIds 用户ID
* @param saveIds 新增ID
* @param deleteIds 删除ID
*/
void update(String departmentId, List<String> userIds);
void update(String departmentId, List<String> saveIds, List<String> deleteIds);
/**
* 更新用户排序
@ -74,7 +75,6 @@ public interface IDepartmentUserService extends IDepartmentUserBaseService {
void updateSort(String departmentId, DepartmentUserSortVO departmentUserSortVO);
/**
*
* @param departmentId
* @param userIds
* @return

View File

@ -175,7 +175,7 @@ public class DepartmentServiceImpl extends DefaultBaseService implements IDepart
String newDepartmentId = saveReturnId(splitDepartmentInfoVO);
departmentAdjustmentService.save(departmentId, departmentDTO.getDepartmentName(), newDepartmentId, splitDepartmentInfoVO.getDepartmentName(), DepartmentAdjustmentTypeEnum.SPLIT);
if (!StringUtils.isBlank(userIds)) {
departmentUserService.update(newDepartmentId, Arrays.asList(userIds.split("_")));
departmentUserService.update(newDepartmentId, Arrays.asList(userIds.split("_")), new ArrayList<>());
}
}
}

View File

@ -97,37 +97,25 @@ public class DepartmentUserServiceImpl extends DefaultBaseService implements IDe
}
@Override
public void update(String departmentId, List<String> userIds) {
if (userIds.isEmpty()) {
return;
}
public void update(String departmentId, List<String> saveUserIds, List<String> deleteUserIds) {
DepartmentPO departmentPO = departmentService.getPO(departmentId);
if (departmentPO == null) {
throw new SearchException("部门不存在");
}
Map<String, Object> params = getHashMap(2);
params.put("departmentId", departmentId);
List<String> existUserIds = departmentUserDao.listUserId(params);
List<String> newUserIds = new ArrayList<>();
for (String userId : userIds) {
boolean isNewUser = true;
for (String existUserId : existUserIds) {
if (StringUtils.equals(userId, existUserId)) {
isNewUser = false;
break;
}
}
if (isNewUser) {
if (deleteUserIds != null && !deleteUserIds.isEmpty()) {
delete(departmentId, departmentPO.getDepartmentName(), deleteUserIds);
}
if (saveUserIds != null && !saveUserIds.isEmpty()) {
Map<String, Object> params = getHashMap(4);
params.put("departmentId", departmentId);
for (String userId : saveUserIds) {
params.put("userId", userId);
departmentUserDao.save(params);
newUserIds.add(userId);
}
}
List<String> removeUserIds = new ArrayList<>();
departmentAdjustmentService.save(newUserIds, departmentId, departmentPO.getDepartmentName(), USER_DEPARTMENT_TYPE_JOIN);
departmentAdjustmentService.save(saveUserIds, departmentId, departmentPO.getDepartmentName(), USER_DEPARTMENT_TYPE_JOIN);
if (departmentUserSaveAfterHandler != null) {
departmentUserSaveAfterHandler.handle(departmentId, userIds);
departmentUserSaveAfterHandler.handle(departmentId, saveUserIds);
}
}

View File

@ -213,10 +213,12 @@
height: '500px',
closeBtn: 0,
onClose: function() {
var selectedUsers = top.dialog.dialogData.selectedDepartmentUsers;
if(selectedUsers != null && selectedUsers.length > 0) {
top.dialog.dialogData.selectedDepartmentUsers = null;
var insertUsers = top.dialog.dialogData.saveDepartmentUsers;
var deleteUsers = top.dialog.dialogData.deleteDepartmentUsers;
if(insertUsers && insertUsers.length > 0 || deleteUsers && deleteUsers.length > 0) {
var ids = [];
for (var i = 0, item; item = selectedUsers[i++];) {
for (var i = 0, item; item = insertUsers[i++];) {
ids.push(item.userId);
}
top.dialog.msg(top.dataMessage.update, {
@ -226,7 +228,8 @@
top.dialog.close(index);
var loadLayerIndex;
top.restAjax.put(top.restAjax.path('api/department/user/update/{departmentId}', [departmentId]), {
ids: ids
saveIds: ids,
deleteIds: deleteUsers
}, null, function (code, data) {
top.dialog.msg(top.dataMessage.updated);
initSelectUserIds();

View File

@ -109,11 +109,17 @@
var selectedUserIds = top.dialog.dialogData.selectedUserIds;
var selectDepartmentUserOldArray = [];
var selectDepartmentUserArray = [];
var selectDepartmentUserObject = {};
var saveDepartmentUserObject = {};
var deleteDepartmentUserObject = {};
var selectRoleId = 0;
var selectedParentId = 0;
var selectedParentId = -1;
var searchTimeout;
var hasRoleService = [[${hasRoleService}]];
var LAZY_GET_USER_COUNT = 500;
top.dialog.dialogData.selectedDepartmentUsers = [];
top.dialog.dialogData.saveDepartmentUsers = [];
top.dialog.dialogData.deleteDepartmentUsers = [];
function closeBox() {
top.dialog.closeBox();
@ -293,20 +299,24 @@
}
// 初始化人员列表
function initUsers(parentId) {
if(selectedParentId == parentId) {
return;
}
$('#userWrapper').empty();
$('.layui-flow-more').remove();
selectedParentId = parentId;
initUserFlowLoad();
}
// 初始化选择的人员
function initSelectedUsers(callback) {
if(!selectedUserIds) {
callback();
return;
}
// 分页懒加载,数据量大(500为单位)
function lazyPageInitSelectedUsers(allSelectedUserIdsArray, page, totalPage, callback) {
var loadLayerIndex;
var startIndex = (page - 1) * LAZY_GET_USER_COUNT;
var endIndex = page * LAZY_GET_USER_COUNT;
var searchUserIds = allSelectedUserIdsArray.slice(startIndex, endIndex);
var hasMore = page < totalPage;
top.restAjax.post(top.restAjax.path('api/user/listbyids', []), {
ids: selectedUserIds.split('\_')
ids: searchUserIds
}, null, function(code, data) {
for(var i = 0, item; item = data[i++]; ) {
selectUser(item.userId, item.userName, item.userUsername);
@ -316,15 +326,25 @@
username: item.userUsername
});
}
if(hasMore) {
setTimeout(function() {
lazyPageInitSelectedUsers(allSelectedUserIdsArray, page + 1, totalPage, callback);
}, 100);
}
callback();
}, function(code, data) {
top.dialog.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
});
}
// 初始化选择的人员
function initSelectedUsers(callback) {
if(!selectedUserIds) {
callback();
return;
}
var selectedUserIdsArray = selectedUserIds.split('\_');
lazyPageInitSelectedUsers(selectedUserIdsArray, 1, Math.ceil(selectedUserIdsArray.length / LAZY_GET_USER_COUNT), callback);
}
initFrame();
if(hasRoleService) {
initRoleTree();
@ -352,37 +372,62 @@
// 人员是否已经选择
function isUserSelected(userId) {
var isSelected = false;
for(var i = 0, item; item = selectDepartmentUserArray[i]; i++) {
if(item.userId == userId) {
isSelected = true;
break;
}
var obj = selectDepartmentUserObject[userId];
if(obj) {
isSelected = true;
}
// for(var i = 0, item; item = selectDepartmentUserArray[i]; i++) {
// if(item.userId == userId) {
// isSelected = true;
// break;
// }
// }
return isSelected;
}
// 删除已经选择的人员
function removeSelectedUser(userId) {
for(var i = 0, item; item = selectDepartmentUserArray[i]; i++) {
if(item.userId == userId) {
selectDepartmentUserArray.splice(i, 1);
var selectedUserDom = $('#selected_user_'+ userId);
selectedUserDom.focus();
selectedUserDom.remove();
$('#user_'+ userId).removeClass('user-selected');
break;
}
}
delete selectDepartmentUserObject[userId];
var selectedUserDom = $('#selected_user_'+ userId);
selectedUserDom.focus();
selectedUserDom.remove();
$('#user_'+ userId).removeClass('user-selected');
deleteDepartmentUserObject[userId] = userId;
// for(var i = 0, item; item = selectDepartmentUserArray[i]; i++) {
// if(item.userId == userId) {
// selectDepartmentUserArray.splice(i, 1);
// var selectedUserDom = $('#selected_user_'+ userId);
// selectedUserDom.focus();
// selectedUserDom.remove();
// $('#user_'+ userId).removeClass('user-selected');
// break;
// }
// }
}
// 选择人员
function selectUser(userId, userName, username, isOnlySelect) {
function selectUser(userId, userName, username) {
$('#user_'+ userId).addClass('user-selected');
selectDepartmentUserObject[userId] = {
userId: userId,
userName: userName,
username: username
}
delete deleteDepartmentUserObject[userId];
// selectDepartmentUserArray.push({
// userId: userId,
// userName: userName,
// username: username
// });
$('#selectUsers').append('<a id="selected_user_'+ userId +'" href="javascript:void(0);" class="layui-btn layui-btn-xs">'+ userName +' <i class="fa fa-close" lay-click-removeuser data-userid="'+ userId +'"></i></a>');
}
// 点击用户
function clickUser(userId, userName, username, isOnlySelect) {
if(!isUserSelected(userId)) {
$('#user_'+ userId).addClass('user-selected');
selectDepartmentUserArray.push({
userId: userId,
userName: userName,
username: username
});
$('#selectUsers').append('<a id="selected_user_'+ userId +'" href="javascript:void(0);" class="layui-btn layui-btn-xs">'+ userName +' <i class="fa fa-close" lay-click-removeuser data-userid="'+ userId +'"></i></a>');
selectUser(userId, userName, username);
$('#selected_user_'+ userId).focus();
} else {
if(!isOnlySelect) {
@ -392,7 +437,7 @@
}
$(document.body).on('click', '*[lay-click-user]', null, function() {
var data = this.dataset;
selectUser(data.userid, data.username, data.userUsername);
clickUser(data.userid, data.username, data.userUsername);
});
$(document.body).on('click', '*[lay-click-removeuser]', null, function() {
var data = this.dataset;
@ -401,7 +446,7 @@
$(document.body).on('click', '*[lay-click-select-all-user]', null, function() {
$('#userWrapper').children().each(function() {
var data = this.dataset;
selectUser(data.userid, data.username, data.userUsername, true);
clickUser(data.userid, data.username, data.userUsername, true);
});
});
$(document.body).on('click', '*[lay-click-clear-all-user]', null, function() {
@ -417,7 +462,34 @@
closeBox();
});
$('.confirm').on('click', function() {
for(var key in selectDepartmentUserObject) {
selectDepartmentUserArray.push(selectDepartmentUserObject[key]);
}
top.dialog.dialogData.selectedDepartmentUsers = selectDepartmentUserArray;
// 删除的用户
var deleteDepartmentUsersArray = [];
for(var key in deleteDepartmentUserObject) {
deleteDepartmentUsersArray.push(key);
}
top.dialog.dialogData.deleteDepartmentUsers = deleteDepartmentUsersArray;
// 新增的用户
var saveDepartmentUserArray = [];
for(var key in selectDepartmentUserObject) {
var exist = false;
for(var i = 0, item; item = selectDepartmentUserOldArray[i++];) {
if(key == item.userId) {
exist = true;
break;
}
}
if(!exist) {
saveDepartmentUserArray.push(selectDepartmentUserObject[key]);
}
}
top.dialog.dialogData.saveDepartmentUsers = saveDepartmentUserArray;
top.dialog.dialogData.selectedUserIds = null;
closeBox();
});

View File

@ -7,7 +7,7 @@ import ink.wgink.pojo.dtos.group.GroupUserDTO;
import ink.wgink.pojo.result.ErrorResult;
import ink.wgink.pojo.result.SuccessResult;
import ink.wgink.pojo.result.SuccessResultList;
import ink.wgink.pojo.vos.IdsVO;
import ink.wgink.pojo.vos.SaveAndDeleteIdsVO;
import ink.wgink.service.group.service.IGroupUserService;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
@ -42,8 +42,8 @@ public class GroupUserController extends DefaultBaseController {
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PutMapping("update/{groupId}")
public synchronized SuccessResult update(@PathVariable("groupId") String groupId,
@RequestBody IdsVO idsVO) {
groupUserService.update(groupId, idsVO.getIds());
@RequestBody SaveAndDeleteIdsVO saveAndDeleteIdsVO) {
groupUserService.update(groupId, saveAndDeleteIdsVO.getSaveIds(), saveAndDeleteIdsVO.getDeleteIds());
return new SuccessResult();
}

View File

@ -19,10 +19,11 @@ public interface IGroupUserService extends IGroupUserBaseService {
/**
* 更新用户组人员列表
*
* @param groupId 用户组ID
* @param userIds 用户ID列表
* @param groupId 用户组ID
* @param saveUserIds 保存用户ID列表
* @param deleteUserIds 删除用户ID列表
*/
void update(String groupId, List<String> userIds);
void update(String groupId, List<String> saveUserIds, List<String> deleteUserIds);
/**
* 用户组人员删除

View File

@ -42,12 +42,14 @@ public class GroupUserServiceImpl extends DefaultBaseService implements IGroupUs
private IGroupService groupService;
@Override
public void update(String groupId, List<String> userIds) {
delete(groupId, userIds);
if (!userIds.isEmpty()) {
public void update(String groupId, List<String> saveUserIds, List<String> deleteUserIds) {
if (deleteUserIds != null && !deleteUserIds.isEmpty()) {
delete(groupId, deleteUserIds);
}
if (saveUserIds != null && !saveUserIds.isEmpty()) {
Map<String, Object> params = getHashMap(4);
params.put("groupId", groupId);
for (String userId : userIds) {
for (String userId : saveUserIds) {
params.put("userId", userId);
groupUserDao.save(params);
}

View File

@ -212,10 +212,12 @@
height: '500px',
closeBtn: 0,
onClose: function() {
var selectedUsers = top.dialog.dialogData.selectedDepartmentUsers;
if(selectedUsers != null && selectedUsers.length > 0) {
top.dialog.dialogData.selectedDepartmentUsers = null;
var insertUsers = top.dialog.dialogData.saveDepartmentUsers;
var deleteUsers = top.dialog.dialogData.deleteDepartmentUsers;
if(insertUsers && insertUsers.length > 0 || deleteUsers && deleteUsers.length > 0) {
var ids = [];
for (var i = 0, item; item = selectedUsers[i++];) {
for (var i = 0, item; item = insertUsers[i++];) {
ids.push(item.userId);
}
top.dialog.msg(top.dataMessage.update, {
@ -225,7 +227,8 @@
top.dialog.close(index);
var loadLayerIndex;
top.restAjax.put(top.restAjax.path('api/group/user/update/{groupId}', [groupId]), {
ids: ids
saveIds: ids,
deleteIds: deleteUsers
}, null, function (code, data) {
top.dialog.msg(top.dataMessage.updated);
initSelectUserIds();

View File

@ -7,7 +7,7 @@ import ink.wgink.pojo.dtos.position.PositionUserDTO;
import ink.wgink.pojo.result.ErrorResult;
import ink.wgink.pojo.result.SuccessResult;
import ink.wgink.pojo.result.SuccessResultList;
import ink.wgink.pojo.vos.IdsVO;
import ink.wgink.pojo.vos.SaveAndDeleteIdsVO;
import ink.wgink.service.position.service.IPositionUserService;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
@ -42,8 +42,8 @@ public class PositionUserController extends DefaultBaseController {
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PutMapping("update/{positionId}")
public synchronized SuccessResult update(@PathVariable("positionId") String positionId,
@RequestBody IdsVO idsVO) {
positionUserService.update(positionId, idsVO.getIds());
@RequestBody SaveAndDeleteIdsVO saveAndDeleteIdsVO) {
positionUserService.update(positionId, saveAndDeleteIdsVO.getSaveIds(), saveAndDeleteIdsVO.getDeleteIds());
return new SuccessResult();
}

View File

@ -19,10 +19,11 @@ public interface IPositionUserService extends IPositionUserBaseService {
/**
* 更新职位人员列表
*
* @param positionId 职位ID
* @param userIds 用户ID列表
* @param positionId 职位ID
* @param saveUserIds 新增用户ID列表
* @param deleteUserIds 删除用户ID列表
*/
void update(String positionId, List<String> userIds);
void update(String positionId, List<String> saveUserIds, List<String> deleteUserIds);
/**
* 职位人员删除

View File

@ -42,12 +42,14 @@ public class PositionUserServiceImpl extends DefaultBaseService implements IPosi
private IPositionService positionService;
@Override
public void update(String positionId, List<String> userIds) {
delete(positionId, userIds);
if (!userIds.isEmpty()) {
public void update(String positionId, List<String> saveUserIds, List<String> deleteUserIds) {
if (deleteUserIds != null && !deleteUserIds.isEmpty()) {
delete(positionId, deleteUserIds);
}
if (saveUserIds != null && !saveUserIds.isEmpty()) {
Map<String, Object> params = getHashMap(4);
params.put("positionId", positionId);
for (String userId : userIds) {
for (String userId : saveUserIds) {
params.put("userId", userId);
positionUserDao.save(params);
}

View File

@ -212,10 +212,13 @@
height: '500px',
closeBtn: 0,
onClose: function() {
var selectedUsers = top.dialog.dialogData.selectedDepartmentUsers;
if(selectedUsers != null && selectedUsers.length > 0) {
top.dialog.dialogData.selectedDepartmentUsers = null;
var insertUsers = top.dialog.dialogData.saveDepartmentUsers;
var deleteUsers = top.dialog.dialogData.deleteDepartmentUsers;
if(insertUsers && insertUsers.length > 0 || deleteUsers && deleteUsers.length > 0) {
var ids = [];
for (var i = 0, item; item = selectedUsers[i++];) {
for (var i = 0, item; item = insertUsers[i++];) {
ids.push(item.userId);
}
top.dialog.msg(top.dataMessage.update, {
@ -225,7 +228,8 @@
top.dialog.close(index);
var loadLayerIndex;
top.restAjax.put(top.restAjax.path('api/position/user/update/{positionId}', [positionId]), {
ids: ids
saveIds: ids,
deleteIds: deleteUsers
}, null, function (code, data) {
top.dialog.msg(top.dataMessage.updated);
$('#selectedUserIds').val(ids.toString().replaceAll(',', '\_'));

View File

@ -4,10 +4,11 @@ import ink.wgink.common.base.DefaultBaseController;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.dtos.role.RoleUserDTO;
import ink.wgink.pojo.dtos.user.UserDTO;
import ink.wgink.pojo.result.ErrorResult;
import ink.wgink.pojo.result.SuccessResult;
import ink.wgink.pojo.result.SuccessResultList;
import ink.wgink.pojo.vos.IdsVO;
import ink.wgink.pojo.vos.SaveAndDeleteIdsVO;
import ink.wgink.service.role.service.IRoleUserService;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
@ -31,7 +32,7 @@ import java.util.Map;
@RestController
@RequestMapping(ISystemConstant.API_PREFIX + "/role/user")
public class RoleUserController extends DefaultBaseController {
@Autowired
private IRoleUserService roleUserService;
@ -42,8 +43,8 @@ public class RoleUserController extends DefaultBaseController {
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PutMapping("update/{roleId}")
public synchronized SuccessResult update(@PathVariable("roleId") String roleId,
@RequestBody IdsVO idsVO) {
roleUserService.update(roleId, idsVO.getIds());
@RequestBody SaveAndDeleteIdsVO saveAndDeleteIdsVO) {
roleUserService.update(roleId, saveAndDeleteIdsVO.getSaveIds(), saveAndDeleteIdsVO.getDeleteIds());
return new SuccessResult();
}
@ -85,4 +86,25 @@ public class RoleUserController extends DefaultBaseController {
return roleUserService.listUserId(roleId);
}
@ApiOperation(value = "用户列表", notes = "通过角色ID获取用户列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "roleId", value = "用户角色ID", paramType = "path"),
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("list-user/role-id/{roleId}")
public List<UserDTO> listUserByRoleId(@PathVariable("roleId") String roleId) {
return roleUserService.listUserByRoleId(roleId);
}
@ApiOperation(value = "用户分页列表", notes = "通过角色ID获取用户分页列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "roleId", value = "用户角色ID", paramType = "path"),
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("listpage-user/role-id/{roleId}")
public SuccessResultList<List<UserDTO>> listPageUserByRoleId(@PathVariable("roleId") String roleId, ListPage page) {
return roleUserService.listPageUserByRoleId(roleId, page);
}
}

View File

@ -5,6 +5,7 @@ import ink.wgink.exceptions.ParamsException;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.dtos.role.RoleUserDTO;
import ink.wgink.pojo.dtos.user.UserDTO;
import ink.wgink.pojo.pos.RolePO;
import ink.wgink.pojo.result.ErrorResult;
import ink.wgink.pojo.result.SuccessResultList;
@ -93,4 +94,24 @@ public class RoleUserResourceController extends DefaultBaseController {
return roleUserService.listUserIdByRoleIdAndUserIds(roleId, idsVO.getIds());
}
@ApiOperation(value = "用户列表", notes = "通过角色ID获取用户列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "roleId", value = "用户角色ID", paramType = "path"),
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("list-user/role-id/{roleId}")
public List<UserDTO> listUserByRoleId(@PathVariable("roleId") String roleId) {
return roleUserService.listUserByRoleId(roleId);
}
@ApiOperation(value = "用户分页列表", notes = "通过角色ID获取用户分页列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "roleId", value = "用户角色ID", paramType = "path"),
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("listpage-user/role-id/{roleId}")
public SuccessResultList<List<UserDTO>> listPageUserByRoleId(@PathVariable("roleId") String roleId, ListPage page) {
return roleUserService.listPageUserByRoleId(roleId, page);
}
}

View File

@ -4,6 +4,7 @@ import ink.wgink.exceptions.RemoveException;
import ink.wgink.exceptions.SaveException;
import ink.wgink.exceptions.SearchException;
import ink.wgink.interfaces.init.IInitBaseTable;
import ink.wgink.pojo.dtos.user.UserDTO;
import org.springframework.stereotype.Repository;
import java.util.List;
@ -49,6 +50,7 @@ public interface IRoleUserDao extends IInitBaseTable {
/**
* 角色列表
*
* @param params
* @return
* @throws SearchException
@ -64,4 +66,12 @@ public interface IRoleUserDao extends IInitBaseTable {
*/
List<String> listGroupUserId(Map<String, Object> params) throws SearchException;
/**
* 用户列表
*
* @param params
* @return
* @throws SearchException
*/
List<UserDTO> listUser(Map<String, Object> params) throws SearchException;
}

View File

@ -19,17 +19,18 @@ public interface IRoleUserService extends IRoleUserBaseService {
/**
* 更新用户组人员列表
*
* @param groupId 用户组ID
* @param userIds 用户ID列表
* @param roleId 角色ID
* @param saveIds 新增ID列表
* @param deleteIds 删除ID列表
*/
void update(String groupId, List<String> userIds);
void update(String roleId, List<String> saveIds, List<String> deleteIds);
/**
* 用户组人员删除
*
* @param groupId 用户组ID
* @param roleId 用户组ID
* @param userIds 用户ID列表
*/
void delete(String groupId, List<String> userIds);
void delete(String roleId, List<String> userIds);
}

View File

@ -1,5 +1,7 @@
package ink.wgink.service.role.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import ink.wgink.common.base.DefaultBaseService;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.interfaces.role.IRoleUserDeleteAfterHandler;
@ -48,18 +50,20 @@ public class RoleUserServiceImpl extends DefaultBaseService implements IRoleUser
private IRoleUserDeleteAfterHandler roleUserDeleteAfterHandler;
@Override
public void update(String roleId, List<String> userIds) {
delete(roleId, userIds);
if (!userIds.isEmpty()) {
public void update(String roleId, List<String> saveUserIds, List<String> deleteUserIds) {
if (deleteUserIds != null && !deleteUserIds.isEmpty()) {
delete(roleId, deleteUserIds);
}
if (saveUserIds != null && !saveUserIds.isEmpty()) {
Map<String, Object> params = getHashMap(4);
params.put("roleId", roleId);
for (String userId : userIds) {
for (String userId : saveUserIds) {
params.put("userId", userId);
roleUserDao.save(params);
}
}
if (roleUserSaveAfterHandler != null) {
roleUserSaveAfterHandler.handle(roleId, userIds);
roleUserSaveAfterHandler.handle(roleId, saveUserIds);
}
}
@ -148,6 +152,20 @@ public class RoleUserServiceImpl extends DefaultBaseService implements IRoleUser
return roleUserDao.listUserId(params);
}
@Override
public List<UserDTO> listUserByRoleId(String roleId) {
Map<String, Object> params = getHashMap(2);
params.put("roleId", roleId);
return roleUserDao.listUser(params);
}
@Override
public SuccessResultList<List<UserDTO>> listPageUserByRoleId(String roleId, ListPage page) {
PageHelper.startPage(page.getPage(), page.getRows());
List<UserDTO> userDTOs = listUserByRoleId(roleId);
PageInfo<UserDTO> pageInfo = new PageInfo<>(userDTOs);
return new SuccessResultList<>(userDTOs, pageInfo.getPageNum(), pageInfo.getTotal());
}
private List<String> listGroupUserId(Map<String, Object> params) {
return roleUserDao.listGroupUserId(params);

View File

@ -108,5 +108,28 @@
user_id
</select>
<!-- 用户列表 -->
<select id="listUser" parameterType="map" resultMap="ink.wgink.service.user.dao.IUserDao.userDTO" useCache="true">
SELECT
user_id,
user_username,
user_name,
user_phone,
user_email,
user_type,
user_state
FROM
sys_user t1
WHERE
user_id IN (
SELECT
user_id
FROM
sys_role_user st1
WHERE
role_id = #{roleId}
)
</select>
</mapper>

View File

@ -220,10 +220,13 @@
height: '500px',
closeBtn: 0,
onClose: function() {
var selectedUsers = top.dialog.dialogData.selectedDepartmentUsers;
if(selectedUsers != null && selectedUsers.length > 0) {
top.dialog.dialogData.selectedDepartmentUsers = null;
var insertUsers = top.dialog.dialogData.saveDepartmentUsers;
var deleteUsers = top.dialog.dialogData.deleteDepartmentUsers;
if(insertUsers && insertUsers.length > 0 || deleteUsers && deleteUsers.length > 0) {
var ids = [];
for (var i = 0, item; item = selectedUsers[i++];) {
for (var i = 0, item; item = insertUsers[i++];) {
ids.push(item.userId);
}
top.dialog.msg(top.dataMessage.update, {
@ -233,7 +236,8 @@
top.dialog.close(index);
var loadLayerIndex;
top.restAjax.put(top.restAjax.path('api/role/user/update/{roleId}', [roleId]), {
ids: ids
saveIds: ids,
deleteIds: deleteUsers
}, null, function (code, data) {
top.dialog.msg(top.dataMessage.updated);
initSelectUserIds();