From 9ecdeb52f601b93116f6e89d8db32d8db95cb0c5 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Wed, 30 Oct 2024 22:20:30 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E4=BC=98=E5=8C=96=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/system/mapper/UserMapper.java | 2 +- .../{ => user}/UserBasicInfoUpdateReq.java | 2 +- .../{ => user}/UserEmailUpdateRequest.java | 2 +- .../model/req/{ => user}/UserImportReq.java | 2 +- .../req/{ => user}/UserImportRowReq.java | 2 +- .../req/{ => user}/UserPasswordResetReq.java | 2 +- .../req/{ => user}/UserPasswordUpdateReq.java | 2 +- .../req/{ => user}/UserPhoneUpdateReq.java | 2 +- .../system/model/req/{ => user}/UserReq.java | 2 +- .../req/{ => user}/UserRoleUpdateReq.java | 2 +- .../model/resp/{ => user}/UserDetailResp.java | 3 +- .../resp/{ => user}/UserImportParseResp.java | 22 +- .../model/resp/{ => user}/UserImportResp.java | 2 +- .../model/resp/{ => user}/UserResp.java | 2 +- .../resp/{ => user}/UserSocialBindResp.java | 2 +- .../admin/system/service/UserService.java | 58 ++--- .../system/service/impl/DeptServiceImpl.java | 2 +- .../system/service/impl/UserServiceImpl.java | 238 +++++++++--------- .../src/main/resources/mapper/UserMapper.xml | 4 +- .../admin/controller/auth/AuthController.java | 2 +- .../system/UserCenterController.java | 10 +- .../controller/system/UserController.java | 36 +-- .../{userImportTemplate.xlsx => user.xlsx} | Bin 23 files changed, 202 insertions(+), 199 deletions(-) rename continew-admin-system/src/main/java/top/continew/admin/system/model/req/{ => user}/UserBasicInfoUpdateReq.java (97%) rename continew-admin-system/src/main/java/top/continew/admin/system/model/req/{ => user}/UserEmailUpdateRequest.java (97%) rename continew-admin-system/src/main/java/top/continew/admin/system/model/req/{ => user}/UserImportReq.java (97%) rename continew-admin-system/src/main/java/top/continew/admin/system/model/req/{ => user}/UserImportRowReq.java (98%) rename continew-admin-system/src/main/java/top/continew/admin/system/model/req/{ => user}/UserPasswordResetReq.java (96%) rename continew-admin-system/src/main/java/top/continew/admin/system/model/req/{ => user}/UserPasswordUpdateReq.java (96%) rename continew-admin-system/src/main/java/top/continew/admin/system/model/req/{ => user}/UserPhoneUpdateReq.java (97%) rename continew-admin-system/src/main/java/top/continew/admin/system/model/req/{ => user}/UserReq.java (98%) rename continew-admin-system/src/main/java/top/continew/admin/system/model/req/{ => user}/UserRoleUpdateReq.java (96%) rename continew-admin-system/src/main/java/top/continew/admin/system/model/resp/{ => user}/UserDetailResp.java (98%) rename continew-admin-system/src/main/java/top/continew/admin/system/model/resp/{ => user}/UserImportParseResp.java (78%) rename continew-admin-system/src/main/java/top/continew/admin/system/model/resp/{ => user}/UserImportResp.java (96%) rename continew-admin-system/src/main/java/top/continew/admin/system/model/resp/{ => user}/UserResp.java (98%) rename continew-admin-system/src/main/java/top/continew/admin/system/model/resp/{ => user}/UserSocialBindResp.java (96%) rename continew-admin-webapi/src/main/resources/templates/import/{userImportTemplate.xlsx => user.xlsx} (100%) diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/mapper/UserMapper.java b/continew-admin-system/src/main/java/top/continew/admin/system/mapper/UserMapper.java index 19f15e28..ad4d7e96 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/mapper/UserMapper.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/mapper/UserMapper.java @@ -23,7 +23,7 @@ import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import top.continew.admin.common.config.mybatis.DataPermissionMapper; import top.continew.admin.system.model.entity.UserDO; -import top.continew.admin.system.model.resp.UserDetailResp; +import top.continew.admin.system.model.resp.user.UserDetailResp; import top.continew.starter.extension.datapermission.annotation.DataPermission; import top.continew.starter.security.crypto.annotation.FieldEncrypt; diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserBasicInfoUpdateReq.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserBasicInfoUpdateReq.java similarity index 97% rename from continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserBasicInfoUpdateReq.java rename to continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserBasicInfoUpdateReq.java index 82d1080d..3fe11ed0 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserBasicInfoUpdateReq.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserBasicInfoUpdateReq.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.admin.system.model.req; +package top.continew.admin.system.model.req.user; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserEmailUpdateRequest.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserEmailUpdateRequest.java similarity index 97% rename from continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserEmailUpdateRequest.java rename to continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserEmailUpdateRequest.java index edb15397..727fb1da 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserEmailUpdateRequest.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserEmailUpdateRequest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.admin.system.model.req; +package top.continew.admin.system.model.req.user; import cn.hutool.core.lang.RegexPool; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserImportReq.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserImportReq.java similarity index 97% rename from continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserImportReq.java rename to continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserImportReq.java index 41201efe..af0edfd3 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserImportReq.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserImportReq.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.admin.system.model.req; +package top.continew.admin.system.model.req.user; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserImportRowReq.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserImportRowReq.java similarity index 98% rename from continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserImportRowReq.java rename to continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserImportRowReq.java index 7e7e7ff5..201942d4 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserImportRowReq.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserImportRowReq.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.admin.system.model.req; +package top.continew.admin.system.model.req.user; import cn.hutool.core.lang.RegexPool; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserPasswordResetReq.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserPasswordResetReq.java similarity index 96% rename from continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserPasswordResetReq.java rename to continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserPasswordResetReq.java index 41cfcce1..fa6df695 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserPasswordResetReq.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserPasswordResetReq.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.admin.system.model.req; +package top.continew.admin.system.model.req.user; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserPasswordUpdateReq.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserPasswordUpdateReq.java similarity index 96% rename from continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserPasswordUpdateReq.java rename to continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserPasswordUpdateReq.java index 0b1ed10a..63917ed6 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserPasswordUpdateReq.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserPasswordUpdateReq.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.admin.system.model.req; +package top.continew.admin.system.model.req.user; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserPhoneUpdateReq.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserPhoneUpdateReq.java similarity index 97% rename from continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserPhoneUpdateReq.java rename to continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserPhoneUpdateReq.java index a98afb15..7a2f0fd3 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserPhoneUpdateReq.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserPhoneUpdateReq.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.admin.system.model.req; +package top.continew.admin.system.model.req.user; import cn.hutool.core.lang.RegexPool; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserReq.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserReq.java similarity index 98% rename from continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserReq.java rename to continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserReq.java index 89397393..41aa96dc 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserReq.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserReq.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.admin.system.model.req; +package top.continew.admin.system.model.req.user; import cn.hutool.core.lang.RegexPool; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserRoleUpdateReq.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserRoleUpdateReq.java similarity index 96% rename from continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserRoleUpdateReq.java rename to continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserRoleUpdateReq.java index 801b96da..7b3adcba 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/req/UserRoleUpdateReq.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/req/user/UserRoleUpdateReq.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.admin.system.model.req; +package top.continew.admin.system.model.req.user; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserDetailResp.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/user/UserDetailResp.java similarity index 98% rename from continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserDetailResp.java rename to continew-admin-system/src/main/java/top/continew/admin/system/model/resp/user/UserDetailResp.java index 157b2404..afe3b7fc 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserDetailResp.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/user/UserDetailResp.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.admin.system.model.resp; +package top.continew.admin.system.model.resp.user; import cn.crane4j.annotation.Assemble; import cn.crane4j.annotation.AssembleMethod; @@ -30,6 +30,7 @@ import top.continew.admin.common.constant.ContainerConstants; import top.continew.admin.common.context.UserContextHolder; import top.continew.admin.common.enums.DisEnableStatusEnum; import top.continew.admin.common.enums.GenderEnum; +import top.continew.admin.system.model.resp.DeptResp; import top.continew.admin.system.service.DeptService; import top.continew.starter.extension.crud.model.resp.BaseDetailResp; import top.continew.starter.file.excel.converter.ExcelBaseEnumConverter; diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserImportParseResp.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/user/UserImportParseResp.java similarity index 78% rename from continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserImportParseResp.java rename to continew-admin-system/src/main/java/top/continew/admin/system/model/resp/user/UserImportParseResp.java index 8d959bbc..8b36f3e6 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserImportParseResp.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/user/UserImportParseResp.java @@ -14,31 +14,35 @@ * limitations under the License. */ -package top.continew.admin.system.model.resp; +package top.continew.admin.system.model.resp.user; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serial; +import java.io.Serializable; + /** - * 用户导入结果 + * 用户导入解析结果 * * @author kils - * @since 2024-06-18 14:37 + * @since 2024/6/18 14:37 */ @Data -@Schema(description = "用户导入结果") @AllArgsConstructor @NoArgsConstructor -public class UserImportParseResp { +@Schema(description = "用户导入解析结果") +public class UserImportParseResp implements Serializable { + @Serial private static final long serialVersionUID = 1L; /** - * 导入会话KEY + * 导入会话 Key */ - @Schema(description = "导入会话KEY", example = "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed") + @Schema(description = "导入会话Key", example = "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed") private String importKey; /** @@ -54,9 +58,9 @@ public class UserImportParseResp { private Integer validRows; /** - * 用户重复行数 + * 重复行数 */ - @Schema(description = "用户重复行数", example = "100") + @Schema(description = "重复行数", example = "100") private Integer duplicateUserRows; /** diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserImportResp.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/user/UserImportResp.java similarity index 96% rename from continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserImportResp.java rename to continew-admin-system/src/main/java/top/continew/admin/system/model/resp/user/UserImportResp.java index eab02687..8df8d791 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserImportResp.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/user/UserImportResp.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.admin.system.model.resp; +package top.continew.admin.system.model.resp.user; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserResp.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/user/UserResp.java similarity index 98% rename from continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserResp.java rename to continew-admin-system/src/main/java/top/continew/admin/system/model/resp/user/UserResp.java index 52f5b18a..dc3a19d9 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserResp.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/user/UserResp.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.admin.system.model.resp; +package top.continew.admin.system.model.resp.user; import cn.crane4j.annotation.Assemble; import cn.crane4j.core.executor.handler.ManyToManyAssembleOperationHandler; diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserSocialBindResp.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/user/UserSocialBindResp.java similarity index 96% rename from continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserSocialBindResp.java rename to continew-admin-system/src/main/java/top/continew/admin/system/model/resp/user/UserSocialBindResp.java index 312a40b9..75992051 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/UserSocialBindResp.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/user/UserSocialBindResp.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.admin.system.model.resp; +package top.continew.admin.system.model.resp.user; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/service/UserService.java b/continew-admin-system/src/main/java/top/continew/admin/system/service/UserService.java index 73c9e1cc..09d942ae 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/service/UserService.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/service/UserService.java @@ -20,11 +20,11 @@ import jakarta.servlet.http.HttpServletResponse; import org.springframework.web.multipart.MultipartFile; import top.continew.admin.system.model.entity.UserDO; import top.continew.admin.system.model.query.UserQuery; -import top.continew.admin.system.model.req.*; -import top.continew.admin.system.model.resp.UserDetailResp; -import top.continew.admin.system.model.resp.UserImportParseResp; -import top.continew.admin.system.model.resp.UserImportResp; -import top.continew.admin.system.model.resp.UserResp; +import top.continew.admin.system.model.req.user.*; +import top.continew.admin.system.model.resp.user.UserDetailResp; +import top.continew.admin.system.model.resp.user.UserImportParseResp; +import top.continew.admin.system.model.resp.user.UserImportResp; +import top.continew.admin.system.model.resp.user.UserResp; import top.continew.starter.data.mp.service.IService; import top.continew.starter.extension.crud.service.BaseService; @@ -47,6 +47,30 @@ public interface UserService extends BaseService deptIds); - - /** - * 下载用户导入模板 - * - * @param response 响应对象 - * @throws IOException / - */ - void downloadImportUserTemplate(HttpServletResponse response) throws IOException; - - /** - * 导入用户 - * - * @param req 导入信息 - * @return 导入结果 - */ - UserImportResp importUser(UserImportReq req); - - /** - * 解析用户导入数据 - * - * @param file 导入用户文件 - * @return 解析结果 - */ - UserImportParseResp parseImportUser(MultipartFile file); } diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/DeptServiceImpl.java b/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/DeptServiceImpl.java index c7fd4042..4e27fd8f 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/DeptServiceImpl.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/DeptServiceImpl.java @@ -34,7 +34,7 @@ import top.continew.admin.system.model.query.DeptQuery; import top.continew.admin.system.model.query.UserQuery; import top.continew.admin.system.model.req.DeptReq; import top.continew.admin.system.model.resp.DeptResp; -import top.continew.admin.system.model.resp.UserResp; +import top.continew.admin.system.model.resp.user.UserResp; import top.continew.admin.system.service.DeptService; import top.continew.admin.system.service.RoleDeptService; import top.continew.admin.system.service.UserService; diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/UserServiceImpl.java b/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/UserServiceImpl.java index a783f197..2fb431e8 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/UserServiceImpl.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/UserServiceImpl.java @@ -44,6 +44,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import me.ahoo.cosid.IdGenerator; import me.ahoo.cosid.provider.DefaultIdGeneratorProvider; import net.dreamlu.mica.core.result.R; @@ -66,11 +67,11 @@ import top.continew.admin.system.model.entity.RoleDO; import top.continew.admin.system.model.entity.UserDO; import top.continew.admin.system.model.entity.UserRoleDO; import top.continew.admin.system.model.query.UserQuery; -import top.continew.admin.system.model.req.*; -import top.continew.admin.system.model.resp.UserDetailResp; -import top.continew.admin.system.model.resp.UserImportParseResp; -import top.continew.admin.system.model.resp.UserImportResp; -import top.continew.admin.system.model.resp.UserResp; +import top.continew.admin.system.model.req.user.*; +import top.continew.admin.system.model.resp.user.UserDetailResp; +import top.continew.admin.system.model.resp.user.UserImportParseResp; +import top.continew.admin.system.model.resp.user.UserImportResp; +import top.continew.admin.system.model.resp.user.UserResp; import top.continew.admin.system.service.*; import top.continew.starter.cache.redisson.util.RedisUtils; import top.continew.starter.core.constant.StringConstants; @@ -99,6 +100,7 @@ import static top.continew.admin.system.enums.PasswordPolicyEnum.*; * @author Charles7c * @since 2022/12/21 21:49 */ +@Slf4j @Service @RequiredArgsConstructor public class UserServiceImpl extends BaseServiceImpl implements UserService, CommonUserService { @@ -133,6 +135,89 @@ public class UserServiceImpl extends BaseServiceImpl disjunctionRoleIds = CollUtil.disjunction(req.getRoleIds(), userRoleService + .listRoleIdByUserId(id)); + CheckUtils.throwIfNotEmpty(disjunctionRoleIds, "[{}] 是系统内置用户,不允许变更角色", oldUser.getNickname()); + } + // 更新信息 + UserDO newUser = BeanUtil.toBean(req, UserDO.class); + newUser.setId(id); + baseMapper.updateById(newUser); + // 保存用户和角色关联 + boolean isSaveUserRoleSuccess = userRoleService.add(req.getRoleIds(), id); + // 如果禁用用户,则踢出在线用户 + if (DisEnableStatusEnum.DISABLE.equals(newStatus)) { + onlineUserService.kickOut(id); + return; + } + // 如果角色有变更,则更新在线用户权限信息 + if (isSaveUserRoleSuccess) { + UserContext userContext = UserContextHolder.getContext(id); + if (null != userContext) { + userContext.setRoles(roleService.listByUserId(id)); + userContext.setPermissions(roleService.listPermissionByUserId(id)); + UserContextHolder.setContext(userContext); + } + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + @CacheInvalidate(key = "#ids", name = CacheConstants.USER_KEY_PREFIX, multi = true) + public void delete(List ids) { + CheckUtils.throwIf(CollUtil.contains(ids, UserContextHolder.getUserId()), "不允许删除当前用户"); + List list = baseMapper.lambdaQuery() + .select(UserDO::getNickname, UserDO::getIsSystem) + .in(UserDO::getId, ids) + .list(); + Optional isSystemData = list.stream().filter(UserDO::getIsSystem).findFirst(); + CheckUtils.throwIf(isSystemData::isPresent, "所选用户 [{}] 是系统内置用户,不允许删除", isSystemData.orElseGet(UserDO::new) + .getNickname()); + // 删除用户和角色关联 + userRoleService.deleteByUserIds(ids); + // 删除历史密码 + userPasswordHistoryService.deleteByUserIds(ids); + // 删除用户 + super.delete(ids); + } + @Override public Long add(UserDO user) { user.setStatus(DisEnableStatusEnum.ENABLE); @@ -141,12 +226,12 @@ public class UserServiceImpl extends BaseServiceImpl userRowList; + List importRowList; // 读取表格数据 try { - userRowList = EasyExcel.read(file.getInputStream()) + importRowList = EasyExcel.read(file.getInputStream()) .head(UserImportRowReq.class) .sheet() .headRowNumber(1) .doReadSync(); } catch (Exception e) { - log.error("用户导入数据文件解析异常:", e); + log.error("用户导入数据文件解析异常:{}", e.getMessage(), e); throw new BusinessException("数据文件解析异常"); } - userImportResp.setTotalRows(userRowList.size()); - if (CollUtil.isEmpty(userRowList)) { - throw new BusinessException("数据文件格式错误"); - } - - // 过滤无效数据 - List validUserRowList = filterErrorUserImportData(userRowList); - userImportResp.setValidRows(validUserRowList.size()); - if (CollUtil.isEmpty(validUserRowList)) { - throw new BusinessException("数据文件格式错误"); - } + // 总计行数 + userImportResp.setTotalRows(importRowList.size()); + CheckUtils.throwIfEmpty(importRowList, "数据文件格式错误"); + // 有效行数:过滤无效数据 + List validRowList = this.filterImportData(importRowList); + userImportResp.setValidRows(validRowList.size()); + CheckUtils.throwIfEmpty(validRowList, "数据文件格式错误"); // 检测表格内数据是否合法 Set seenEmails = new HashSet<>(); - boolean hasDuplicateEmail = validUserRowList.stream() + boolean hasDuplicateEmail = validRowList.stream() .map(UserImportRowReq::getEmail) .anyMatch(email -> email != null && !seenEmails.add(email)); CheckUtils.throwIf(hasDuplicateEmail, "存在重复邮箱,请检测数据"); Set seenPhones = new HashSet<>(); - boolean hasDuplicatePhone = validUserRowList.stream() + boolean hasDuplicatePhone = validRowList.stream() .map(UserImportRowReq::getPhone) .anyMatch(phone -> phone != null && !seenPhones.add(phone)); CheckUtils.throwIf(hasDuplicatePhone, "存在重复手机,请检测数据"); // 校验是否存在错误角色 - List roleNames = validUserRowList.stream().map(UserImportRowReq::getRoleName).distinct().toList(); + List roleNames = validRowList.stream().map(UserImportRowReq::getRoleName).distinct().toList(); int existRoleCount = roleService.countByNames(roleNames); CheckUtils.throwIf(existRoleCount < roleNames.size(), "存在错误角色,请检查数据"); // 校验是否存在错误部门 - List deptNames = validUserRowList.stream().map(UserImportRowReq::getDeptName).distinct().toList(); + List deptNames = validRowList.stream().map(UserImportRowReq::getDeptName).distinct().toList(); int existDeptCount = deptService.countByNames(deptNames); CheckUtils.throwIf(existDeptCount < deptNames.size(), "存在错误部门,请检查数据"); // 查询重复用户 userImportResp - .setDuplicateUserRows(countExistByField(validUserRowList, UserImportRowReq::getUsername, UserDO::getUsername, false)); + .setDuplicateUserRows(countExistByField(validRowList, UserImportRowReq::getUsername, UserDO::getUsername, false)); // 查询重复邮箱 userImportResp - .setDuplicateEmailRows(countExistByField(validUserRowList, UserImportRowReq::getEmail, UserDO::getEmail, true)); + .setDuplicateEmailRows(countExistByField(validRowList, UserImportRowReq::getEmail, UserDO::getEmail, true)); // 查询重复手机 userImportResp - .setDuplicatePhoneRows(countExistByField(validUserRowList, UserImportRowReq::getPhone, UserDO::getPhone, true)); + .setDuplicatePhoneRows(countExistByField(validRowList, UserImportRowReq::getPhone, UserDO::getPhone, true)); // 设置导入会话并缓存数据,有效期10分钟 String importKey = UUID.fastUUID().toString(true); - RedisUtils.set(CacheConstants.DATA_IMPORT_KEY + importKey, JSONUtil.toJsonStr(validUserRowList), Duration + RedisUtils.set(CacheConstants.DATA_IMPORT_KEY + importKey, JSONUtil.toJsonStr(validRowList), Duration .ofMinutes(10)); userImportResp.setImportKey(importKey); - return userImportResp; } @@ -290,7 +370,6 @@ public class UserServiceImpl extends BaseServiceImpl insertList, List updateList, List userRoleDOList) { if (CollUtil.isNotEmpty(insertList)) { baseMapper.insert(insertList); @@ -304,70 +383,6 @@ public class UserServiceImpl extends BaseServiceImpl disjunctionRoleIds = CollUtil.disjunction(req.getRoleIds(), userRoleService - .listRoleIdByUserId(id)); - CheckUtils.throwIfNotEmpty(disjunctionRoleIds, "[{}] 是系统内置用户,不允许变更角色", oldUser.getNickname()); - } - // 更新信息 - UserDO newUser = BeanUtil.toBean(req, UserDO.class); - newUser.setId(id); - baseMapper.updateById(newUser); - // 保存用户和角色关联 - boolean isSaveUserRoleSuccess = userRoleService.add(req.getRoleIds(), id); - // 如果禁用用户,则踢出在线用户 - if (DisEnableStatusEnum.DISABLE.equals(newStatus)) { - onlineUserService.kickOut(id); - return; - } - // 如果角色有变更,则更新在线用户权限信息 - if (isSaveUserRoleSuccess) { - UserContext userContext = UserContextHolder.getContext(id); - if (null != userContext) { - userContext.setRoles(roleService.listByUserId(id)); - userContext.setPermissions(roleService.listPermissionByUserId(id)); - UserContextHolder.setContext(userContext); - } - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - @CacheInvalidate(key = "#ids", name = CacheConstants.USER_KEY_PREFIX, multi = true) - public void delete(List ids) { - CheckUtils.throwIf(CollUtil.contains(ids, UserContextHolder.getUserId()), "不允许删除当前用户"); - List list = baseMapper.lambdaQuery() - .select(UserDO::getNickname, UserDO::getIsSystem) - .in(UserDO::getId, ids) - .list(); - Optional isSystemData = list.stream().filter(UserDO::getIsSystem).findFirst(); - CheckUtils.throwIf(isSystemData::isPresent, "所选用户 [{}] 是系统内置用户,不允许删除", isSystemData.orElseGet(UserDO::new) - .getNickname()); - // 删除用户和角色关联 - userRoleService.deleteByUserIds(ids); - // 删除历史密码 - userPasswordHistoryService.deleteByUserIds(ids); - // 删除用户 - super.delete(ids); - } - @Override public void resetPassword(UserPasswordResetReq req, Long id) { super.getById(id); @@ -515,25 +530,6 @@ public class UserServiceImpl extends BaseServiceImpl filterErrorUserImportData(List userImportList) { + private List filterImportData(List importRowList) { // 校验过滤 - List list = userImportList.stream() - .filter(row -> ValidationUtil.validate(row).size() == 0) + List list = importRowList.stream() + .filter(row -> ValidationUtil.validate(row).isEmpty()) .toList(); // 用户名去重 return list.stream() diff --git a/continew-admin-system/src/main/resources/mapper/UserMapper.xml b/continew-admin-system/src/main/resources/mapper/UserMapper.xml index 87b6eb5a..cb4c2c29 100644 --- a/continew-admin-system/src/main/resources/mapper/UserMapper.xml +++ b/continew-admin-system/src/main/resources/mapper/UserMapper.xml @@ -26,12 +26,12 @@ LEFT JOIN sys_dept AS t2 ON t2.id = t1.dept_id - ${ew.customSqlSegment} - ${ew.customSqlSegment} diff --git a/continew-admin-webapi/src/main/java/top/continew/admin/controller/auth/AuthController.java b/continew-admin-webapi/src/main/java/top/continew/admin/controller/auth/AuthController.java index fadc59b0..af54542b 100644 --- a/continew-admin-webapi/src/main/java/top/continew/admin/controller/auth/AuthController.java +++ b/continew-admin-webapi/src/main/java/top/continew/admin/controller/auth/AuthController.java @@ -38,7 +38,7 @@ import top.continew.admin.common.constant.CacheConstants; import top.continew.admin.common.context.UserContext; import top.continew.admin.common.context.UserContextHolder; import top.continew.admin.common.util.SecureUtils; -import top.continew.admin.system.model.resp.UserDetailResp; +import top.continew.admin.system.model.resp.user.UserDetailResp; import top.continew.admin.system.service.UserService; import top.continew.starter.cache.redisson.util.RedisUtils; import top.continew.starter.core.util.ExceptionUtils; diff --git a/continew-admin-webapi/src/main/java/top/continew/admin/controller/system/UserCenterController.java b/continew-admin-webapi/src/main/java/top/continew/admin/controller/system/UserCenterController.java index 19f57a07..13d1ecf1 100644 --- a/continew-admin-webapi/src/main/java/top/continew/admin/controller/system/UserCenterController.java +++ b/continew-admin-webapi/src/main/java/top/continew/admin/controller/system/UserCenterController.java @@ -35,12 +35,12 @@ import top.continew.admin.common.context.UserContextHolder; import top.continew.admin.common.util.SecureUtils; import top.continew.admin.system.enums.SocialSourceEnum; import top.continew.admin.system.model.entity.UserSocialDO; -import top.continew.admin.system.model.req.UserBasicInfoUpdateReq; -import top.continew.admin.system.model.req.UserEmailUpdateRequest; -import top.continew.admin.system.model.req.UserPasswordUpdateReq; -import top.continew.admin.system.model.req.UserPhoneUpdateReq; +import top.continew.admin.system.model.req.user.UserBasicInfoUpdateReq; +import top.continew.admin.system.model.req.user.UserEmailUpdateRequest; +import top.continew.admin.system.model.req.user.UserPasswordUpdateReq; +import top.continew.admin.system.model.req.user.UserPhoneUpdateReq; import top.continew.admin.system.model.resp.AvatarResp; -import top.continew.admin.system.model.resp.UserSocialBindResp; +import top.continew.admin.system.model.resp.user.UserSocialBindResp; import top.continew.admin.system.service.UserService; import top.continew.admin.system.service.UserSocialService; import top.continew.starter.cache.redisson.util.RedisUtils; diff --git a/continew-admin-webapi/src/main/java/top/continew/admin/controller/system/UserController.java b/continew-admin-webapi/src/main/java/top/continew/admin/controller/system/UserController.java index eea8311c..ca71d7a1 100644 --- a/continew-admin-webapi/src/main/java/top/continew/admin/controller/system/UserController.java +++ b/continew-admin-webapi/src/main/java/top/continew/admin/controller/system/UserController.java @@ -32,14 +32,14 @@ import org.springframework.web.multipart.MultipartFile; import top.continew.admin.common.constant.RegexConstants; import top.continew.admin.common.util.SecureUtils; import top.continew.admin.system.model.query.UserQuery; -import top.continew.admin.system.model.req.UserImportReq; -import top.continew.admin.system.model.req.UserPasswordResetReq; -import top.continew.admin.system.model.req.UserReq; -import top.continew.admin.system.model.req.UserRoleUpdateReq; -import top.continew.admin.system.model.resp.UserDetailResp; -import top.continew.admin.system.model.resp.UserImportParseResp; -import top.continew.admin.system.model.resp.UserImportResp; -import top.continew.admin.system.model.resp.UserResp; +import top.continew.admin.system.model.req.user.UserImportReq; +import top.continew.admin.system.model.req.user.UserPasswordResetReq; +import top.continew.admin.system.model.req.user.UserReq; +import top.continew.admin.system.model.req.user.UserRoleUpdateReq; +import top.continew.admin.system.model.resp.user.UserDetailResp; +import top.continew.admin.system.model.resp.user.UserImportParseResp; +import top.continew.admin.system.model.resp.user.UserImportResp; +import top.continew.admin.system.model.resp.user.UserResp; import top.continew.admin.system.service.UserService; import top.continew.starter.core.util.ExceptionUtils; import top.continew.starter.core.util.validate.ValidationUtils; @@ -83,24 +83,24 @@ public class UserController extends BaseController