添加部门用户排序功能

This commit is contained in:
wanggeng888 2021-06-12 13:53:11 +08:00
parent 58a1671fc2
commit 15b0ec994a
6 changed files with 187 additions and 34 deletions

View File

@ -5,6 +5,7 @@ import ink.wgink.pojo.dtos.department.DepartmentUserDTO;
import ink.wgink.pojo.result.SuccessResultList;
import java.util.List;
import java.util.Map;
/**
* When you feel like quitting. Think about why you started
@ -18,6 +19,30 @@ import java.util.List;
**/
public interface IDepartmentUserBaseService {
/**
* 机构用户列表
*
* @param params
* @return
*/
List<DepartmentUserDTO> list(Map<String, Object> params);
/**
* 机构用户列表
*
* @param departmentId
* @return
*/
List<DepartmentUserDTO> list(String departmentId);
/**
* 机构用户列表
*
* @param departmentIds
* @return
*/
List<DepartmentUserDTO> list(List<String> departmentIds);
/**
* 用户ID列表
*
@ -26,6 +51,7 @@ public interface IDepartmentUserBaseService {
*/
List<String> listUserId(String departmentId);
/**
* 用户ID列表
*

View File

@ -27,7 +27,8 @@ public class DepartmentUserDTO implements Serializable {
private String departmentName;
private String userSort;
public DepartmentUserDTO() {}
public DepartmentUserDTO() {
}
public DepartmentUserDTO(UserDTO userDTO) {
this.userId = userDTO.getUserId();
@ -41,6 +42,18 @@ public class DepartmentUserDTO implements Serializable {
this.userAvatar = userDTO.getUserAvatar();
}
public void setUser(UserDTO userDTO) {
this.userId = userDTO.getUserId();
this.userUsername = userDTO.getUserUsername();
this.userName = userDTO.getUserName();
this.userPhone = userDTO.getUserPhone();
this.userEmail = userDTO.getUserEmail();
this.loginType = userDTO.getLoginType();
this.userType = userDTO.getUserType();
this.userState = userDTO.getUserState();
this.userAvatar = userDTO.getUserAvatar();
}
public String getUserId() {
return userId == null ? "" : userId;
}

View File

@ -4,6 +4,7 @@ import ink.wgink.exceptions.RemoveException;
import ink.wgink.exceptions.SaveException;
import ink.wgink.exceptions.SearchException;
import ink.wgink.exceptions.UpdateException;
import ink.wgink.pojo.dtos.department.DepartmentUserDTO;
import org.springframework.stereotype.Repository;
import java.util.List;
@ -53,6 +54,15 @@ public interface IDepartmentUserDao {
*/
void updateSort(Map<String, Object> params) throws UpdateException;
/**
* 部门用户ID列表
*
* @param params
* @return
* @throws SearchException
*/
List<DepartmentUserDTO> list(Map<String, Object> params) throws SearchException;
/**
* 用户ID列表
*

View File

@ -134,6 +134,25 @@ public class DepartmentUserServiceImpl extends DefaultBaseService implements IDe
return departmentService.listPO(departmentIds);
}
@Override
public List<DepartmentUserDTO> list(Map<String, Object> params) {
return departmentUserDao.list(params);
}
@Override
public List<DepartmentUserDTO> list(String departmentId) {
Map<String, Object> params = getHashMap(2);
params.put("departmentId", departmentId);
return list(params);
}
@Override
public List<DepartmentUserDTO> list(List<String> departmentIds) {
Map<String, Object> params = getHashMap(2);
params.put("departmentIds", departmentIds);
return list(params);
}
@Override
public List<String> listUserId(String departmentId) {
Map<String, Object> params = getHashMap(2);
@ -166,20 +185,10 @@ public class DepartmentUserServiceImpl extends DefaultBaseService implements IDe
@Override
public SuccessResultList<List<DepartmentUserDTO>> listPage(String departmentId, ListPage page) {
SuccessResultList<List<UserDTO>> successResultList;
if (StringUtils.equals(departmentId, ISystemConstant.TREE_BASE_ROOT_ID_VALUE)) {
successResultList = listPageUserByExcludeDepartment(page);
} else {
successResultList = listPageUser(departmentId, page);
return listPageUserByExcludeDepartment(page);
}
List<UserDTO> userDTOs = successResultList.getRows();
List<DepartmentUserDTO> departmentUserDTOs = new ArrayList<>();
for (UserDTO userDTO : userDTOs) {
DepartmentUserDTO departmentUserDTO = new DepartmentUserDTO(userDTO);
departmentUserDTO.setDepartmentId(departmentId);
departmentUserDTOs.add(departmentUserDTO);
}
return new SuccessResultList<>(departmentUserDTOs, successResultList.getPage(), successResultList.getTotal());
return listPageUser(departmentId, page);
}
private List<String> listGroupUserId(Map<String, Object> params) {
@ -192,9 +201,17 @@ public class DepartmentUserServiceImpl extends DefaultBaseService implements IDe
* @param page
* @return
*/
private SuccessResultList<List<UserDTO>> listPageUserByExcludeDepartment(ListPage page) {
List<String> hasDepartmentUserIds = listGroupUserId(new HashMap<>(0));
return userBaseService.listPageByExcludeIds(hasDepartmentUserIds, page);
private SuccessResultList<List<DepartmentUserDTO>> listPageUserByExcludeDepartment(ListPage page) {
List<DepartmentUserDTO> hasDepartmentUsers = list(getHashMap(0));
if (hasDepartmentUsers.isEmpty()) {
return new SuccessResultList<>(new ArrayList<>(), 1, 0L);
}
List<String> userIds = new ArrayList<>();
for (DepartmentUserDTO hasDepartmentUserId : hasDepartmentUsers) {
userIds.add(hasDepartmentUserId.getUserId());
}
SuccessResultList<List<UserDTO>> successResultList = userBaseService.listPageByExcludeIds(userIds, page);
return listPageDepartmentUser(successResultList, hasDepartmentUsers, page);
}
/**
@ -204,11 +221,42 @@ public class DepartmentUserServiceImpl extends DefaultBaseService implements IDe
* @param page
* @return
*/
private SuccessResultList<List<UserDTO>> listPageUser(String departmentId, ListPage page) {
List<String> userIds = listUserId(departmentId);
if (userIds.isEmpty()) {
private SuccessResultList<List<DepartmentUserDTO>> listPageUser(String departmentId, ListPage page) {
List<DepartmentUserDTO> hasDepartmentUsers = list(getHashMap(0));
if (hasDepartmentUsers.isEmpty()) {
return new SuccessResultList<>(new ArrayList<>(), 1, 0L);
}
return userBaseService.listPageByIds(userIds, page);
List<String> userIds = new ArrayList<>();
for (DepartmentUserDTO hasDepartmentUserId : hasDepartmentUsers) {
userIds.add(hasDepartmentUserId.getUserId());
}
SuccessResultList<List<UserDTO>> successResultList = userBaseService.listPageByIds(userIds, page);
return listPageDepartmentUser(successResultList, hasDepartmentUsers, page);
}
/**
* 机构用户分页列表
*
* @param userIds
* @param hasDepartmentUsers
* @param page
* @return
*/
private SuccessResultList<List<DepartmentUserDTO>> listPageDepartmentUser(SuccessResultList<List<UserDTO>> successResultList, List<DepartmentUserDTO> hasDepartmentUsers, ListPage page) {
// 查询用户排序
List<UserDTO> userDTOs = successResultList.getRows();
List<DepartmentUserDTO> departmentUserDTOs = new ArrayList<>();
for (DepartmentUserDTO hasDepartmentUserDTO : hasDepartmentUsers) {
for (UserDTO userDTO : userDTOs) {
if (StringUtils.equals(userDTO.getUserId(), hasDepartmentUserDTO.getUserId())) {
DepartmentUserDTO departmentUserDTO = new DepartmentUserDTO(userDTO);
departmentUserDTO.setDepartmentId(hasDepartmentUserDTO.getDepartmentId());
departmentUserDTO.setUserSort(hasDepartmentUserDTO.getUserSort());
departmentUserDTOs.add(departmentUserDTO);
}
}
}
return new SuccessResultList<>(departmentUserDTOs, successResultList.getPage(), successResultList.getTotal());
}
}

View File

@ -4,6 +4,12 @@
<cache flushInterval="3600000"/>
<resultMap id="departmentUserDTO" type="ink.wgink.pojo.dtos.department.DepartmentUserDTO">
<result column="department_id" property="departmentId"/>
<result column="user_id" property="userId"/>
<result column="user_sort" property="userSort"/>
</resultMap>
<!-- 建表 -->
<update id="createTable">
CREATE TABLE IF NOT EXISTS `sys_department_user` (
@ -67,9 +73,40 @@
WHERE
department_id = #{departmentId}
AND
user_sort = #{userSort}
user_id = #{userId}
</update>
<!-- 机构用户列表 -->
<select id="list" parameterType="map" resultMap="departmentUserDTO" useCache="true">
SELECT
department_id,
user_id,
user_sort
FROM
sys_department_user
<where>
<if test="departmentId != null and departmentId != ''">
department_id = #{departmentId}
</if>
<if test="departmentIds != null and departmentIds.size > 0">
AND
department_id IN
<foreach collection="departmentIds" index="index" open="(" separator="," close=")">
#{departmentIds[${index}]}
</foreach>
</if>
<if test="userIds != null and userIds.size > 0">
AND
user_id IN
<foreach collection="userIds" index="index" open="(" separator="," close=")">
#{userIds[${index}]}
</foreach>
</if>
</where>
ORDER BY
user_sort
</select>
<!-- 用户ID列表 -->
<select id="listUserId" parameterType="map" resultType="java.lang.String">
SELECT
@ -82,19 +119,17 @@
</if>
<if test="departmentIds != null and departmentIds.size > 0">
AND
department_id IN (
department_id IN
<foreach collection="departmentIds" index="index" open="(" separator="," close=")">
#{departmentIds[${index}]}
</foreach>
)
</if>
<if test="userIds != null and userIds.size > 0">
AND
user_id IN (
user_id IN
<foreach collection="userIds" index="index" open="(" separator="," close=")">
#{userIds[${index}]}
</foreach>
)
</if>
</where>
ORDER BY

View File

@ -80,11 +80,7 @@
{field:'rowNum', width:80, title: '序号', align:'center', templet: '<span>{{d.LAY_INDEX}}</span>'},
{field:'userUsername', width:140, title: '用户名', align:'center'},
{field:'userName', width:140, title: '昵称', align:'center'},
{field:'userSort', width:140, title: '排序', align:'center',
templet: function(item) {
return '<a href="javascript:void(0);" lay-event="sortEvent"'+ item.userSort +'</a>';
}
},
{field:'userSort', width:140, title: '排序[编辑更新]', align:'center', edit: 'text'},
{field:'userPhone', width:140, title: '手机', align:'center',
templet: function(item) {
if(!item.userPhone) {
@ -264,13 +260,38 @@
}
}
});
table.on('tool(dataTable)', function(obj) {
var data = obj.data;
var event = obj.event;
if(event === 'sortEvent') {
function userSortFormat(value) {
if(/^[a-zA-Z0-9]{3}\-[a-zA-Z0-9]{3}$/g.test(value)) {
return true;
}
return false;
}
table.on('edit(dataTable)', function(obj) {
if(obj.field === 'userSort') {
if(!userSortFormat(obj.value)) {
top.dialog.msg('排序格式不正确格式应为XXX-XXX其中X为0-9、a-z、A-Z');
reloadTable();
return;
}
var loadLayerIndex;
top.restAjax.put(top.restAjax.path('api/department/user/update-sort/{departmentId}', [departmentId]), {
userId: obj.data.userId,
userSort: obj.value
}, null, function(code, data) {
top.dialog.msg('更新成功');
reloadTable();
}, function(code, data) {
top.dialog.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.committing, {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
});
}
});
});
</script>
</body>