From c820abb027bd31b455f168709d11c2642401c2b2 Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Sun, 9 Mar 2025 23:38:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=9D=9E=E8=B6=85=E7=BA=A7=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98=E9=99=90=E5=88=B6=E6=97=A0=E6=9D=83=E9=99=90?= =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E8=B6=85=E7=BA=A7=E7=AE=A1=E7=90=86=E5=91=98?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E7=9A=84=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/model/query/UserPageQuery.java | 9 +++- .../system/service/impl/UserServiceImpl.java | 42 +++++++++++++++---- .../resources/mapper/system/UserMapper.xml | 26 ++++++++++-- 3 files changed, 64 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/youlai/boot/system/model/query/UserPageQuery.java b/src/main/java/com/youlai/boot/system/model/query/UserPageQuery.java index b6848db8..a2b2fbff 100644 --- a/src/main/java/com/youlai/boot/system/model/query/UserPageQuery.java +++ b/src/main/java/com/youlai/boot/system/model/query/UserPageQuery.java @@ -1,6 +1,7 @@ package com.youlai.boot.system.model.query; import cn.hutool.db.sql.Direction; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.youlai.boot.common.base.BasePageQuery; import com.youlai.boot.common.annotation.ValidField; import io.swagger.v3.oas.annotations.media.Schema; @@ -36,11 +37,17 @@ public class UserPageQuery extends BasePageQuery { private List createTime; @Schema(description = "排序的字段") - @ValidField(allowedValues = {"create_time","update_time"}) + @ValidField(allowedValues = {"create_time", "update_time"}) private String field; @Schema(description = "排序方式(正序:ASC;反序:DESC)") private Direction direction; + /** + * 是否超级管理员 + */ + @JsonIgnore + @Schema(hidden = true) + private Boolean isRoot; } diff --git a/src/main/java/com/youlai/boot/system/service/impl/UserServiceImpl.java b/src/main/java/com/youlai/boot/system/service/impl/UserServiceImpl.java index ab32f36d..17c8f6bd 100644 --- a/src/main/java/com/youlai/boot/system/service/impl/UserServiceImpl.java +++ b/src/main/java/com/youlai/boot/system/service/impl/UserServiceImpl.java @@ -86,6 +86,10 @@ public class UserServiceImpl extends ServiceImpl implements Us int pageNum = queryParams.getPageNum(); int pageSize = queryParams.getPageSize(); Page page = new Page<>(pageNum, pageSize); + + boolean isRoot = SecurityUtils.isRoot(); + queryParams.setIsRoot(isRoot); + // 查询数据 Page userPage = this.baseMapper.getUserPage(page, queryParams); @@ -276,15 +280,35 @@ public class UserServiceImpl extends ServiceImpl implements Us */ @Override public List listExportUsers(UserPageQuery queryParams) { - List userExportDTOS = this.baseMapper.listExportUsers(queryParams); - //获取角色的字典数据 - List list = dictDataService.list(new LambdaQueryWrapper().eq(DictData::getDictCode, DictCodeEnum.GENDER.getValue())); - Map genderMap = list.stream().collect(Collectors.toMap(DictData::getValue, DictData::getLabel)); - userExportDTOS.forEach(userExportDTO -> { - String genderLabel = genderMap.get(userExportDTO.getGender()); - userExportDTO.setGender(genderLabel); - }); - return null; + + boolean isRoot = SecurityUtils.isRoot(); + queryParams.setIsRoot(isRoot); + + List exportUsers = this.baseMapper.listExportUsers(queryParams); + if (CollectionUtil.isNotEmpty(exportUsers)) { + //获取角色的字典数据 + Map genderMap = dictDataService.list( + new LambdaQueryWrapper().eq(DictData::getDictCode, + DictCodeEnum.GENDER.getValue()) + ).stream() + .collect(Collectors.toMap(DictData::getValue, DictData::getLabel) + ); + + exportUsers.forEach(item -> { + String gender = item.getGender(); + if (StrUtil.isBlank(gender)) { + return; + } + + // 判断map是否为空 + if (genderMap.isEmpty()) { + return; + } + + item.setGender(genderMap.get(gender)); + }); + } + return exportUsers; } /** diff --git a/src/main/resources/mapper/system/UserMapper.xml b/src/main/resources/mapper/system/UserMapper.xml index a9177c6d..d810841f 100644 --- a/src/main/resources/mapper/system/UserMapper.xml +++ b/src/main/resources/mapper/system/UserMapper.xml @@ -24,9 +24,18 @@ LEFT JOIN sys_user_role sur ON u.id = sur.user_id LEFT JOIN sys_role r ON sur.role_id = r.id - u.is_deleted = 0 AND u.username != 'root' - - AND r.code != '${@com.youlai.boot.common.constant.SystemConstants@ROOT_ROLE_CODE}' + u.is_deleted = 0 + + AND NOT EXISTS ( + SELECT + 1 + FROM sys_user_role sur + INNER JOIN sys_role r ON sur.role_id = r.id + WHERE + sur.user_id = u.id + AND r.code = '${@com.youlai.boot.common.constant.SystemConstants@ROOT_ROLE_CODE}' + ) + AND ( u.username LIKE CONCAT('%',#{queryParams.keywords},'%') @@ -188,6 +197,17 @@ LEFT JOIN sys_dept d ON u.dept_id = d.id u.is_deleted = 0 + + AND NOT EXISTS ( + SELECT + 1 + FROM sys_user_role sur + INNER JOIN sys_role r ON sur.role_id = r.id + WHERE + sur.user_id = u.id + AND r.code = '${@com.youlai.boot.common.constant.SystemConstants@ROOT_ROLE_CODE}' + ) + AND (u.username LIKE CONCAT('%',#{keywords},'%') OR u.nickname LIKE CONCAT('%',#{keywords},'%')