diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/constant/PostCodeEnum.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/constant/PostCodeEnum.java index 043e79c08..8a9068d6c 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/constant/PostCodeEnum.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/constant/PostCodeEnum.java @@ -10,31 +10,33 @@ package com.pig4cloud.pigx.admin.api.constant; */ public enum PostCodeEnum { - /** - * 部门负责人 - */ - TEAM_LEADER("TEAM_LEADER", "部门负责人"); - /** - * 编码 - */ - private final String code; + /** + * 部门负责人 + */ + TEAM_LEADER("TEAM_LEADER", "部门负责人"); - /** - * 描述 - */ - private final String description; + /** + * 编码 + */ + private final String code; - PostCodeEnum(String code, String description) { - this.code = code; - this.description = description; - } + /** + * 描述 + */ + private final String description; - public String getCode() { - return code; - } + PostCodeEnum(String code, String description) { + this.code = code; + this.description = description; + } + + public String getCode() { + return code; + } + + public String getDescription() { + return description; + } - public String getDescription() { - return description; - } } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/constant/SmsBizCodeEnum.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/constant/SmsBizCodeEnum.java index d7bcfad2d..aed0551c6 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/constant/SmsBizCodeEnum.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/constant/SmsBizCodeEnum.java @@ -20,4 +20,5 @@ public enum SmsBizCodeEnum { private final String code; private final String desc; + } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/constant/SystemConfigTypeEnum.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/constant/SystemConfigTypeEnum.java index de2d1547a..07935e6b1 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/constant/SystemConfigTypeEnum.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/constant/SystemConfigTypeEnum.java @@ -11,6 +11,7 @@ import lombok.RequiredArgsConstructor; */ @RequiredArgsConstructor public enum SystemConfigTypeEnum { + /** * 存储 */ @@ -28,7 +29,6 @@ public enum SystemConfigTypeEnum { */ EMAIL("email"), - /** * webhook */ @@ -48,7 +48,6 @@ public enum SystemConfigTypeEnum { WETALK("wetalk"); @Getter - private final String value; - + private final String value; } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/AiChatMessageDTO.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/AiChatMessageDTO.java index db00bef99..d35f8d82d 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/AiChatMessageDTO.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/AiChatMessageDTO.java @@ -20,4 +20,5 @@ public class AiChatMessageDTO { * 网络搜索 */ private boolean webSearch; + } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/MessageEmailDTO.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/MessageEmailDTO.java index e6760e3e7..394386ec9 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/MessageEmailDTO.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/MessageEmailDTO.java @@ -20,56 +20,56 @@ import java.util.Map; @FieldNameConstants public class MessageEmailDTO { - /** - * 邮件列表 - */ - @NotNull - private List mailAddress = new ArrayList<>(); + /** + * 邮件列表 + */ + @NotNull + private List mailAddress = new ArrayList<>(); - /** - * 标题 - */ - @NotBlank - private String title; + /** + * 标题 + */ + @NotBlank + private String title; - /** - * body - */ - private String body; + /** + * body + */ + private String body; - /** - * [HTML全文] - */ - private String html; + /** + * [HTML全文] + */ + private String html; - /** - * HTML 值 - */ - private Map htmlValues = new HashMap<>(); + /** + * HTML 值 + */ + private Map htmlValues = new HashMap<>(); - /** - * CC 列表 - */ - private List ccList = new ArrayList<>(); + /** + * CC 列表 + */ + private List ccList = new ArrayList<>(); - /** - * 密件抄送列表 - */ - private List bccList = new ArrayList<>(); + /** + * 密件抄送列表 + */ + private List bccList = new ArrayList<>(); - /** - * 附件文件 (fileName) - */ - private List attachmentList = new ArrayList<>(); + /** + * 附件文件 (fileName) + */ + private List attachmentList = new ArrayList<>(); - /** - * ZIP 名称 - */ - private String zipName; + /** + * ZIP 名称 + */ + private String zipName; - /** - * 业务代码 - */ - private String bizCode; + /** + * 业务代码 + */ + private String bizCode; } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/MessageHookDTO.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/MessageHookDTO.java index 8e3b72d79..850a60593 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/MessageHookDTO.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/MessageHookDTO.java @@ -16,7 +16,6 @@ import java.util.List; @FieldNameConstants public class MessageHookDTO { - /** * 业务代码 */ @@ -27,19 +26,16 @@ public class MessageHookDTO { */ private List phoneList = new ArrayList<>(); - /** * 通知全部 */ private boolean noticeAll; - /** * 消息类型 */ private String messageType; - /** * 留言内容 */ @@ -57,7 +53,7 @@ public class MessageHookDTO { /** * 图片链接 - */ - private String picUrl; + */ + private String picUrl; } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/MessageSmsDTO.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/MessageSmsDTO.java index 8e78f845d..ad5266d6a 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/MessageSmsDTO.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/MessageSmsDTO.java @@ -50,14 +50,19 @@ public class MessageSmsDTO { */ private String supplier; - /** * 模板 ID */ private String templateId; + // 静态方法用于创建Builder实例 + public static Builder builder() { + return new Builder(); + } + // Builder类 public static class Builder { + private MessageSmsDTO dto; public Builder() { @@ -90,10 +95,7 @@ public class MessageSmsDTO { public MessageSmsDTO build() { return dto; } + } - // 静态方法用于创建Builder实例 - public static Builder builder() { - return new Builder(); - } } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/RegisterUserDTO.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/RegisterUserDTO.java index e6a20721d..fb2b73abe 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/RegisterUserDTO.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/RegisterUserDTO.java @@ -11,28 +11,29 @@ import lombok.Data; @Data public class RegisterUserDTO { - /** - * 用户名 - */ - private String username; + /** + * 用户名 + */ + private String username; - /** - * 密码 - */ - private String password; + /** + * 密码 + */ + private String password; - /** - * 新密码1 - */ - private String newpassword1; + /** + * 新密码1 + */ + private String newpassword1; - /** - * 电话 - */ - private String phone; + /** + * 电话 + */ + private String phone; + + /** + * 租户ID + */ + private Long tenantId; - /** - * 租户ID - */ - private Long tenantId; } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/SysTenantUserDTO.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/SysTenantUserDTO.java index d9c791a38..bb30a6feb 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/SysTenantUserDTO.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/SysTenantUserDTO.java @@ -11,28 +11,29 @@ import lombok.Data; @Data public class SysTenantUserDTO { - /** - * 租户ID - */ - private Long tenantId; + /** + * 租户ID + */ + private Long tenantId; - /** - * 用户ID数组 - */ - private Long[] userIds; + /** + * 用户ID数组 + */ + private Long[] userIds; - /** - * 角色ID - */ - private Long roleId; + /** + * 角色ID + */ + private Long roleId; - /** - * 帖子ID - */ - private Long postId; + /** + * 帖子ID + */ + private Long postId; + + /** + * 部门ID + */ + private Long deptId; - /** - * 部门ID - */ - private Long deptId; } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/UserInfo.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/UserInfo.java index 1e17dfa84..d329cacdb 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/UserInfo.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/UserInfo.java @@ -40,22 +40,22 @@ import java.util.List; @EqualsAndHashCode(callSuper = true) public class UserInfo extends UserVO implements Serializable { - /** - * 密码 - */ - @JsonIgnore(value = false) - private String password; + /** + * 密码 + */ + @JsonIgnore(value = false) + private String password; - /** - * 随机盐 - */ - @JsonIgnore(value = false) - private String salt; + /** + * 随机盐 + */ + @JsonIgnore(value = false) + private String salt; - /** - * 权限标识集合 - */ - @Schema(description = "权限标识集合") - private List permissions = new ArrayList<>(); + /** + * 权限标识集合 + */ + @Schema(description = "权限标识集合") + private List permissions = new ArrayList<>(); } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysAreaEntity.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysAreaEntity.java index e61b3baf9..386d27acb 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysAreaEntity.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysAreaEntity.java @@ -22,7 +22,6 @@ import java.time.LocalDateTime; @Schema(description = "行政区划表") public class SysAreaEntity extends Model { - /** * 主键ID */ @@ -123,6 +122,7 @@ public class SysAreaEntity extends Model { */ @TableLogic @TableField(fill = FieldFill.INSERT) - @Schema(description = "删除标记") - private String delFlag; + @Schema(description = "删除标记") + private String delFlag; + } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysFile.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysFile.java index 172e43d0d..856821e3e 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysFile.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysFile.java @@ -132,7 +132,7 @@ public class SysFile extends Model { */ @TableLogic @TableField(fill = FieldFill.INSERT) - @Schema(description = "删除标记,1:已删除,0:正常") - private String delFlag; + @Schema(description = "删除标记,1:已删除,0:正常") + private String delFlag; } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysMenu.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysMenu.java index ec6963a25..a0530eb27 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysMenu.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysMenu.java @@ -154,7 +154,7 @@ public class SysMenu extends Model { */ @TableLogic @TableField(fill = FieldFill.INSERT) - @Schema(description = "删除标记,1:已删除,0:正常") - private String delFlag; + @Schema(description = "删除标记,1:已删除,0:正常") + private String delFlag; } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysRouteConf.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysRouteConf.java index 0ee0d6b69..f803033b5 100755 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysRouteConf.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysRouteConf.java @@ -117,6 +117,6 @@ public class SysRouteConf extends Model { @TableLogic @TableField(fill = FieldFill.INSERT) @Schema(description = "删除标记,1:已删除,0:正常") - private String delFlag; + private String delFlag; } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysScheduleEntity.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysScheduleEntity.java index 2c3cd38bf..2cddedd48 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysScheduleEntity.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysScheduleEntity.java @@ -120,7 +120,7 @@ public class SysScheduleEntity extends Model { */ @TableLogic @Schema(description = "删除标记") - @TableField(fill = FieldFill.INSERT) - private String delFlag; + @TableField(fill = FieldFill.INSERT) + private String delFlag; } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysSensitiveWordEntity.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysSensitiveWordEntity.java index 7370fabd1..0d73fc12e 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysSensitiveWordEntity.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysSensitiveWordEntity.java @@ -22,71 +22,71 @@ import java.time.LocalDateTime; @Schema(description = "敏感词") public class SysSensitiveWordEntity extends Model { - /** - * 主键 - */ + * 主键 + */ @TableId(type = IdType.ASSIGN_ID) - @Schema(description="主键") + @Schema(description = "主键") private Long sensitiveId; /** - * 敏感词 - */ - @Schema(description="敏感词") + * 敏感词 + */ + @Schema(description = "敏感词") private String sensitiveWord; /** - * 类型 - */ - @Schema(description="类型") + * 类型 + */ + @Schema(description = "类型") private String sensitiveType; /** - * 备注 - */ - @Schema(description="备注") + * 备注 + */ + @Schema(description = "备注") private String remark; /** - * 创建人 - */ + * 创建人 + */ @TableField(fill = FieldFill.INSERT) - @Schema(description="创建人") + @Schema(description = "创建人") private String createBy; /** - * 创建时间 - */ + * 创建时间 + */ @TableField(fill = FieldFill.INSERT) - @Schema(description="创建时间") + @Schema(description = "创建时间") private LocalDateTime createTime; /** - * 修改人 - */ + * 修改人 + */ @TableField(fill = FieldFill.INSERT_UPDATE) - @Schema(description="修改人") + @Schema(description = "修改人") private String updateBy; /** - * 修改时间 - */ + * 修改时间 + */ @TableField(fill = FieldFill.INSERT_UPDATE) - @Schema(description="修改时间") + @Schema(description = "修改时间") private LocalDateTime updateTime; /** - * 删除标记 - */ + * 删除标记 + */ @TableLogic @TableField(fill = FieldFill.INSERT) - @Schema(description="删除标记") + @Schema(description = "删除标记") private String delFlag; /** - * 租户ID - */ - @Schema(description="租户ID") + * 租户ID + */ + @Schema(description = "租户ID") private Long tenantId; + } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysSystemConfigEntity.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysSystemConfigEntity.java index 65dab12c6..09979d2f7 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysSystemConfigEntity.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysSystemConfigEntity.java @@ -24,83 +24,83 @@ import java.time.LocalDateTime; @Schema(description = "系统配置") public class SysSystemConfigEntity extends Model { - /** - * 主键 - */ + * 主键 + */ @TableId(type = IdType.ASSIGN_ID) - @Schema(description="主键") + @Schema(description = "主键") private Long id; /** - * 配置类型 - */ - @Schema(description="配置类型") + * 配置类型 + */ + @Schema(description = "配置类型") private String configType; /** - * 配置名称 - */ - @Schema(description="配置名称") + * 配置名称 + */ + @Schema(description = "配置名称") private String configName; /** - * 配置标识 - */ - @Schema(description="配置标识") + * 配置标识 + */ + @Schema(description = "配置标识") private String configKey; /** - * 配置值 - */ - @Schema(description="配置值") + * 配置值 + */ + @Schema(description = "配置值") private String configValue; /** - * 开启状态 - */ - @Schema(description="开启状态") + * 开启状态 + */ + @Schema(description = "开启状态") private String configStatus; /** - * 创建人 - */ + * 创建人 + */ @TableField(fill = FieldFill.INSERT) - @Schema(description="创建人") + @Schema(description = "创建人") private String createBy; /** - * 创建时间 - */ + * 创建时间 + */ @TableField(fill = FieldFill.INSERT) - @Schema(description="创建时间") + @Schema(description = "创建时间") private LocalDateTime createTime; /** - * 修改人 - */ + * 修改人 + */ @TableField(fill = FieldFill.INSERT_UPDATE) - @Schema(description="修改人") + @Schema(description = "修改人") private String updateBy; /** - * 修改时间 - */ + * 修改时间 + */ @TableField(fill = FieldFill.INSERT_UPDATE) - @Schema(description="修改时间") + @Schema(description = "修改时间") private LocalDateTime updateTime; /** - * 删除标记 - */ + * 删除标记 + */ @TableLogic @TableField(fill = FieldFill.INSERT) - @Schema(description="删除标记") + @Schema(description = "删除标记") private String delFlag; /** - * 租户ID - */ - @Schema(description="租户ID") + * 租户ID + */ + @Schema(description = "租户ID") private Long tenantId; + } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysTenantUser.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysTenantUser.java index ef6559338..2f9a7733c 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysTenantUser.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysTenantUser.java @@ -37,19 +37,19 @@ import java.io.Serial; @EqualsAndHashCode(callSuper = true) public class SysTenantUser extends Model { - @Serial - private static final long serialVersionUID = 1L; + @Serial + private static final long serialVersionUID = 1L; - /** - * 用户ID - */ - @Schema(description = "用户id") - private Long userId; + /** + * 用户ID + */ + @Schema(description = "用户id") + private Long userId; - /** - * 租户ID - */ - @Schema(description = "租户ID") - private Long tenantId; + /** + * 租户ID + */ + @Schema(description = "租户ID") + private Long tenantId; } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysUser.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysUser.java index 35df109eb..04d172319 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysUser.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysUser.java @@ -124,14 +124,12 @@ public class SysUser extends Model implements Serializable { @Schema(description = "密码过期标记") private String passwordExpireFlag; - /** * 密码修改时间 */ @Schema(description = "密码修改时间") private LocalDateTime passwordModifyTime; - /** * 手机号 */ @@ -146,7 +144,6 @@ public class SysUser extends Model implements Serializable { @Schema(description = "头像地址") private String avatar; - /** * 租户ID */ @@ -214,4 +211,5 @@ public class SysUser extends Model implements Serializable { @PropertyName("邮箱") @Schema(description = "邮箱") private String email; + } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysUserPost.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysUserPost.java index fe163332a..496248806 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysUserPost.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysUserPost.java @@ -35,7 +35,7 @@ import java.io.Serial; @EqualsAndHashCode(callSuper = true) public class SysUserPost extends Model { - @Serial + @Serial private static final long serialVersionUID = 1L; /** @@ -50,10 +50,10 @@ public class SysUserPost extends Model { @Schema(description = "岗位id") private Long postId; - /** * 租户ID */ @Schema(description = "租户ID") private Long tenantId; + } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysUserRole.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysUserRole.java index 3a91c6dd6..5540cabdc 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysUserRole.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysUserRole.java @@ -41,26 +41,25 @@ import java.io.Serial; @EqualsAndHashCode(callSuper = true) public class SysUserRole extends Model { - @Serial - private static final long serialVersionUID = 1L; + @Serial + private static final long serialVersionUID = 1L; - /** - * 用户ID - */ - @Schema(description = "用户id") - private Long userId; + /** + * 用户ID + */ + @Schema(description = "用户id") + private Long userId; - /** - * 角色ID - */ - @Schema(description = "角色id") - private Long roleId; + /** + * 角色ID + */ + @Schema(description = "角色id") + private Long roleId; - - /** - * 租户ID - */ - @Schema(description = "租户ID") - private Long tenantId; + /** + * 租户ID + */ + @Schema(description = "租户ID") + private Long tenantId; } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteFileService.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteFileService.java index a31ee7c28..cc5159390 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteFileService.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteFileService.java @@ -21,33 +21,33 @@ import org.springframework.web.multipart.MultipartFile; @FeignClient(contextId = "remoteFileService", value = ServiceNameConstants.UPMS_SERVICE) public interface RemoteFileService { - /** - * 获取文件的方法 - * - * @param fileName 文件的名称 - * @return 响应对象,包含文件内容 - */ - @GetMapping("/sys-file/oss/file") - Response getFile(@RequestParam String fileName); + /** + * 获取文件的方法 + * + * @param fileName 文件的名称 + * @return 响应对象,包含文件内容 + */ + @GetMapping("/sys-file/oss/file") + Response getFile(@RequestParam String fileName); - /** - * 上传文件 - * - * @param file 资源 - * @return R(/ admin / bucketName / filename) - */ - @PostMapping(value = "/sys-file/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - R upload(@RequestPart("file") MultipartFile file); + /** + * 上传文件 + * + * @param file 资源 + * @return R(/ admin / bucketName / filename) + */ + @PostMapping(value = "/sys-file/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + R upload(@RequestPart("file") MultipartFile file); + /** + * 内部上传文件接口 + * + * @param file 要上传的文件 + * @param fileName 文件名 + * @return 上传结果 + */ + @NoToken + @PostMapping(value = "/sys-file/inner/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + R innerUpload(@RequestPart("file") MultipartFile file, @RequestParam String fileName); - /** - * 内部上传文件接口 - * - * @param file 要上传的文件 - * @param fileName 文件名 - * @return 上传结果 - */ - @NoToken - @PostMapping(value = "/sys-file/inner/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - R innerUpload(@RequestPart("file") MultipartFile file, @RequestParam String fileName); } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteMenuService.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteMenuService.java index 7005c35f5..460be9839 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteMenuService.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteMenuService.java @@ -39,23 +39,22 @@ import java.util.List; @FeignClient(contextId = "remoteMenuService", value = ServiceNameConstants.UPMS_SERVICE) public interface RemoteMenuService { + /** + * 获取菜单详细信息 + * + * @param sysMenu SYS菜单 + * @return {@link R }<{@link List }<{@link SysMenu }>> + */ + @GetMapping("/menu/details") + R> getMenuDetails(@SpringQueryMap SysMenu sysMenu); - /** - * 获取菜单详细信息 - * - * @param sysMenu SYS菜单 - * @return {@link R }<{@link List }<{@link SysMenu }>> - */ - @GetMapping("/menu/details") - R> getMenuDetails(@SpringQueryMap SysMenu sysMenu); + /** + * 保存菜单 + * + * @param sysMenu SYS菜单 + * @return {@link R }<{@link Boolean }> + */ + @PostMapping("/menu") + R saveMenu(@RequestBody SysMenu sysMenu); - - /** - * 保存菜单 - * - * @param sysMenu SYS菜单 - * @return {@link R }<{@link Boolean }> - */ - @PostMapping("/menu") - R saveMenu(@RequestBody SysMenu sysMenu); } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteMessageService.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteMessageService.java index 2d5b12520..81d65dbb4 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteMessageService.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteMessageService.java @@ -37,7 +37,6 @@ import org.springframework.web.bind.annotation.RequestBody; @FeignClient(contextId = "remoteMessageService", value = ServiceNameConstants.UPMS_SERVICE) public interface RemoteMessageService { - /** * 发送短消息 * @@ -64,4 +63,5 @@ public interface RemoteMessageService { */ @PostMapping("/sysMessage/send/hook") R sendHook(@RequestBody MessageHookDTO hookDTO); + } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteRouteConfService.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteRouteConfService.java index 11c6174e4..ccce695d4 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteRouteConfService.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteRouteConfService.java @@ -38,7 +38,6 @@ import java.util.List; @FeignClient(contextId = "remoteRouteConfService", value = ServiceNameConstants.UPMS_SERVICE) public interface RemoteRouteConfService { - /** * 获取路由详细信息 * @@ -47,7 +46,6 @@ public interface RemoteRouteConfService { @GetMapping("/route") R> getRouteDetails(); - /** * 保存 sys route conf * @@ -56,4 +54,5 @@ public interface RemoteRouteConfService { */ @PostMapping("/route/save") R saveSysRouteConf(@RequestBody SysRouteConf SysRouteConf); + } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/utils/DataUtil.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/utils/DataUtil.java index ba97313d2..1ebbbccc3 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/utils/DataUtil.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/utils/DataUtil.java @@ -46,9 +46,7 @@ public class DataUtil { optionalDept.ifPresent(list::add); - List collect = allDeptList.stream() - .filter(w -> w.getParentId() == deptId) - .toList(); + List collect = allDeptList.stream().filter(w -> w.getParentId() == deptId).toList(); if (CollUtil.isEmpty(collect)) { return list; @@ -72,9 +70,7 @@ public class DataUtil { List list = new ArrayList<>(); list.add(allMenuList.stream().filter(w -> w.getMenuId() == menuId).findFirst().get()); - List collect = allMenuList.stream() - .filter(w -> w.getParentId() == menuId) - .toList(); + List collect = allMenuList.stream().filter(w -> w.getParentId() == menuId).toList(); if (CollUtil.isEmpty(collect)) { return list; } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/SysSocialDetailsVO.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/SysSocialDetailsVO.java index 156ecf83f..8f517d825 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/SysSocialDetailsVO.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/SysSocialDetailsVO.java @@ -29,4 +29,5 @@ public class SysSocialDetailsVO { */ @Schema(description = "扩展字段") private String ext; + } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/SysSystemSmsConfigVO.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/SysSystemSmsConfigVO.java index 258940927..ea4e857ef 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/SysSystemSmsConfigVO.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/SysSystemSmsConfigVO.java @@ -54,9 +54,9 @@ public class SysSystemSmsConfigVO { */ private int retryInterval = 5; - /** * 最大发送数量,默认integer上限 */ private int maximum = Integer.MAX_VALUE; + } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserExcelVO.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserExcelVO.java index ccfa6fe77..e9eaf79f9 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserExcelVO.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserExcelVO.java @@ -75,7 +75,7 @@ public class UserExcelVO implements Serializable { */ @NotBlank(message = "部门名称不能为空") @ExcelProperty("部门名称") - private String deptNameList; + private String deptNameList; /** * 角色列表 diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserVO.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserVO.java index 91d887544..ea553740e 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserVO.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/vo/UserVO.java @@ -153,14 +153,12 @@ public class UserVO implements Serializable { @Schema(description = "头像") private String avatar; - /** * 租户ID */ @Schema(description = "所属租户") private Long tenantId; - @Schema(description = "所属部门名称") private List deptList; @@ -186,13 +184,12 @@ public class UserVO implements Serializable { * 姓名 */ @Schema(description = "姓名") - private String name; - - /** - * 邮箱 - */ - @Schema(description = "邮箱") - private String email; + private String name; + /** + * 邮箱 + */ + @Schema(description = "邮箱") + private String email; } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/config/DynamicRouteInitRunner.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/config/DynamicRouteInitRunner.java index 56c9e0440..106c691f0 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/config/DynamicRouteInitRunner.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/config/DynamicRouteInitRunner.java @@ -56,62 +56,62 @@ import java.util.Map; @ConditionalOnDiscoveryEnabled public class DynamicRouteInitRunner implements InitializingBean { - private final RedisTemplate redisTemplate; + private final RedisTemplate redisTemplate; - private final SysRouteConfService routeConfService; + private final SysRouteConfService routeConfService; - private final RedisMessageListenerContainer listenerContainer; + private final RedisMessageListenerContainer listenerContainer; - /** - * WebServerInitializedEvent 使用 TransactionalEventListener 时启动时无法获取到事件 - */ - @Async - @Order - @EventListener({WebServerInitializedEvent.class}) - public void WebServerInit() { - this.initRoute(); - } + /** + * WebServerInitializedEvent 使用 TransactionalEventListener 时启动时无法获取到事件 + */ + @Async + @Order + @EventListener({WebServerInitializedEvent.class}) + public void WebServerInit() { + this.initRoute(); + } - @Async - @Order - @TransactionalEventListener({DynamicRouteInitEvent.class}) - public void initRoute() { - redisTemplate.delete(CacheConstants.ROUTE_KEY); - log.info("开始初始化网关路由"); + @Async + @Order + @TransactionalEventListener({DynamicRouteInitEvent.class}) + public void initRoute() { + redisTemplate.delete(CacheConstants.ROUTE_KEY); + log.info("开始初始化网关路由"); - routeConfService.list().forEach(route -> { - RouteDefinitionVo vo = new RouteDefinitionVo(); - vo.setRouteName(route.getRouteName()); - vo.setId(route.getRouteId()); - vo.setUri(URI.create(route.getUri())); - vo.setOrder(route.getSortOrder()); + routeConfService.list().forEach(route -> { + RouteDefinitionVo vo = new RouteDefinitionVo(); + vo.setRouteName(route.getRouteName()); + vo.setId(route.getRouteId()); + vo.setUri(URI.create(route.getUri())); + vo.setOrder(route.getSortOrder()); - JSONArray filterObj = JSONUtil.parseArray(route.getFilters()); - vo.setFilters(filterObj.toList(FilterDefinition.class)); - JSONArray predicateObj = JSONUtil.parseArray(route.getPredicates()); - vo.setPredicates(predicateObj.toList(PredicateDefinition.class)); - vo.setMetadata(JSONUtil.toBean(route.getMetadata(), Map.class)); - log.info("加载路由ID:{},{}", route.getRouteId(), vo); + JSONArray filterObj = JSONUtil.parseArray(route.getFilters()); + vo.setFilters(filterObj.toList(FilterDefinition.class)); + JSONArray predicateObj = JSONUtil.parseArray(route.getPredicates()); + vo.setPredicates(predicateObj.toList(PredicateDefinition.class)); + vo.setMetadata(JSONUtil.toBean(route.getMetadata(), Map.class)); + log.info("加载路由ID:{},{}", route.getRouteId(), vo); - redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(RouteDefinitionVo.class)); - HashOperations stringStringValueOperations = redisTemplate.opsForHash(); - stringStringValueOperations.put(CacheConstants.ROUTE_KEY, route.getRouteId(), vo); - }); + redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(RouteDefinitionVo.class)); + HashOperations stringStringValueOperations = redisTemplate.opsForHash(); + stringStringValueOperations.put(CacheConstants.ROUTE_KEY, route.getRouteId(), vo); + }); - // 通知网关重置路由 - redisTemplate.convertAndSend(CacheConstants.ROUTE_JVM_RELOAD_TOPIC, "路由信息,网关缓存更新"); - log.debug("初始化网关路由结束 "); - } + // 通知网关重置路由 + redisTemplate.convertAndSend(CacheConstants.ROUTE_JVM_RELOAD_TOPIC, "路由信息,网关缓存更新"); + log.debug("初始化网关路由结束 "); + } - /** - * redis 监听配置,监听 upms_redis_route_reload_topic,重新加载Redis - */ - @Override - public void afterPropertiesSet() { - listenerContainer.addMessageListener((message, bytes) -> { - log.warn("接收到重新Redis 重新加载路由事件"); - initRoute(); - }, new ChannelTopic(CacheConstants.ROUTE_REDIS_RELOAD_TOPIC)); - } + /** + * redis 监听配置,监听 upms_redis_route_reload_topic,重新加载Redis + */ + @Override + public void afterPropertiesSet() { + listenerContainer.addMessageListener((message, bytes) -> { + log.warn("接收到重新Redis 重新加载路由事件"); + initRoute(); + }, new ChannelTopic(CacheConstants.ROUTE_REDIS_RELOAD_TOPIC)); + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/AiChatController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/AiChatController.java index 4902f46f3..4124e2b23 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/AiChatController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/AiChatController.java @@ -25,26 +25,26 @@ import java.util.Optional; @RequiredArgsConstructor public class AiChatController { - private final Optional deepSeekClientOptional; + private final Optional deepSeekClientOptional; + /** + * 聊天 + * + * @param message 消息 + * @return {@link Flux }<{@link ChatCompletionResponse }> + */ + @PostMapping("/chat") + public Flux chat(@RequestBody AiChatMessageDTO message) { - /** - * 聊天 - * - * @param message 消息 - * @return {@link Flux }<{@link ChatCompletionResponse }> - */ - @PostMapping("/chat") - public Flux chat(@RequestBody AiChatMessageDTO message) { + if (deepSeekClientOptional.isEmpty()) { + log.warn("DeepSeek 大模型聊天未开启,请检查配置"); + return Flux.empty(); + } - if (deepSeekClientOptional.isEmpty()) { - log.warn("DeepSeek 大模型聊天未开启,请检查配置"); - return Flux.empty(); - } + if (message.isWebSearch()) { + return deepSeekClientOptional.get().chatSearchCompletion(message.getMessage()); + } + return deepSeekClientOptional.get().chatFluxCompletion(message.getMessage()); + } - if (message.isWebSearch()) { - return deepSeekClientOptional.get().chatSearchCompletion(message.getMessage()); - } - return deepSeekClientOptional.get().chatFluxCompletion(message.getMessage()); - } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/ConnectController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/ConnectController.java index 803fbbf69..3cf57aaf4 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/ConnectController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/ConnectController.java @@ -32,7 +32,6 @@ public class ConnectController { /** * 同步钉钉用户信息 - * * @return 操作结果 */ @PostMapping("/sync/ding/user") @@ -46,7 +45,6 @@ public class ConnectController { /** * 同步钉钉部门信息 - * * @return 同步操作结果 * @see R */ @@ -58,7 +56,6 @@ public class ConnectController { /** * 同步企业微信用户信息 - * * @return 同步操作结果 */ @PostMapping("/sync/cp/user") @@ -69,7 +66,6 @@ public class ConnectController { /** * 同步企业微信部门信息 - * * @return 包含同步结果的响应对象 */ @PostMapping("/sync/cp/dept") diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysAreaController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysAreaController.java index 536c0c0cc..8e9e665e3 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysAreaController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysAreaController.java @@ -128,8 +128,8 @@ public class SysAreaController { @GetMapping("/export") @HasPermission("sys_sysArea_export") public List export(SysAreaEntity sysArea, Long[] ids) { - return sysAreaService - .list(Wrappers.lambdaQuery(sysArea).in(ArrayUtil.isNotEmpty(ids), SysAreaEntity::getId, CollUtil.toList(ids))); - } + return sysAreaService.list(Wrappers.lambdaQuery(sysArea) + .in(ArrayUtil.isNotEmpty(ids), SysAreaEntity::getId, CollUtil.toList(ids))); + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysAuditLogController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysAuditLogController.java index 915ee528e..71b7d56ac 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysAuditLogController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysAuditLogController.java @@ -110,7 +110,8 @@ public class SysAuditLogController { @GetMapping("/export") @HasPermission("sys_audit_export") public List export(SysAuditLog sysAuditLog, Long[] ids) { - return sysAuditLogService - .list(Wrappers.lambdaQuery(sysAuditLog).in(ArrayUtil.isNotEmpty(ids), SysAuditLog::getId, CollUtil.toList(ids))); + return sysAuditLogService.list(Wrappers.lambdaQuery(sysAuditLog) + .in(ArrayUtil.isNotEmpty(ids), SysAuditLog::getId, CollUtil.toList(ids))); } + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDictController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDictController.java index 5ce95b63a..598784ad6 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDictController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDictController.java @@ -167,8 +167,7 @@ public class SysDictController { .like(StrUtil.isNotBlank(name), SysDict::getDictType, name) .or() .like(StrUtil.isNotBlank(name), SysDict::getDescription, name) - .orderByDesc(SysDict::getCreateTime) - )); + .orderByDesc(SysDict::getCreateTime))); } /** @@ -185,7 +184,6 @@ public class SysDictController { /** * 通过id查询字典项 - * * @param id id * @return R */ @@ -196,7 +194,6 @@ public class SysDictController { /** * 查询字典项详情 - * * @param query 查询条件 * @return R */ @@ -220,7 +217,6 @@ public class SysDictController { /** * 修改字典项 - * * @param sysDictItem 字典项 * @return R */ @@ -232,7 +228,6 @@ public class SysDictController { /** * 通过id删除字典项 - * * @param id id * @return R */ @@ -251,12 +246,12 @@ public class SysDictController { @PutMapping("/sync") public R sync() { return sysDictService.syncDictCache(); - } + } - @ResponseExcel - @GetMapping("/export") - public List export(SysDictItem sysDictItem) { - return sysDictItemService.list(Wrappers.query(sysDictItem)); - } + @ResponseExcel + @GetMapping("/export") + public List export(SysDictItem sysDictItem) { + return sysDictItemService.list(Wrappers.query(sysDictItem)); + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysFileController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysFileController.java index 2dd5d5d27..a5b91bcb7 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysFileController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysFileController.java @@ -114,7 +114,6 @@ public class SysFileController { return sysFileService.uploadFile(file, fileName, dir, groupId, type); } - /** * 内部文件上传接口 * @@ -127,14 +126,14 @@ public class SysFileController { */ @Inner @PostMapping(value = "/inner/upload") - public R innerUpload(@RequestPart("file") MultipartFile file, @RequestParam(value = "dir", required = false) String dir, + public R innerUpload(@RequestPart("file") MultipartFile file, + @RequestParam(value = "dir", required = false) String dir, @RequestParam(value = "groupId", required = false) Long groupId, @RequestParam(value = "type", required = false) String type, @RequestParam(value = "fileName", required = false) String fileName) { return sysFileService.uploadFile(file, fileName, dir, groupId, type); } - /** * 获取文件 * @@ -165,7 +164,6 @@ public class SysFileController { /** * 查询文件组列表 - * * @param fileGroup SysFileGroup对象,用于筛选条件 * @return 包含文件组列表的R对象 */ @@ -176,7 +174,6 @@ public class SysFileController { /** * 添加文件组 - * * @param fileGroup SysFileGroup对象,要添加的文件组信息 * @return 包含添加结果的R对象 */ @@ -198,7 +195,6 @@ public class SysFileController { /** * 删除文件组 - * * @param id 待删除文件组的ID * @return 包含删除结果的R对象 */ @@ -209,13 +205,12 @@ public class SysFileController { /** * 移动文件组 - * * @param fileGroupDTO SysFileGroupDTO对象,要移动的文件组信息 * @return 包含移动结果的R对象 - */ - @PutMapping("/group/move") - public R moveFileGroup(@RequestBody SysFileGroupDTO fileGroupDTO) { - return R.ok(sysFileService.moveFileGroup(fileGroupDTO)); - } + */ + @PutMapping("/group/move") + public R moveFileGroup(@RequestBody SysFileGroupDTO fileGroupDTO) { + return R.ok(sysFileService.moveFileGroup(fileGroupDTO)); + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysI18nController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysI18nController.java index 2abaca563..055650251 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysI18nController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysI18nController.java @@ -141,8 +141,8 @@ public class SysI18nController { @GetMapping("/export") @HasPermission("sys_i18n_export") public List export(SysI18nEntity sysI18n, Long[] ids) { - return sysI18nService - .list(Wrappers.lambdaQuery(sysI18n).in(ArrayUtil.isNotEmpty(ids), SysI18nEntity::getId, CollUtil.toList(ids))); + return sysI18nService.list(Wrappers.lambdaQuery(sysI18n) + .in(ArrayUtil.isNotEmpty(ids), SysI18nEntity::getId, CollUtil.toList(ids))); } /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysLogController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysLogController.java index b9bc79cc8..3f6b4bb60 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysLogController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysLogController.java @@ -119,7 +119,8 @@ public class SysLogController { @GetMapping("/export") @HasPermission("sys_log_export") public List export(SysLog sysLog, Long[] ids) { - return sysLogService.list(Wrappers.lambdaQuery(sysLog).in(Objects.nonNull(ids), SysLog::getId, CollUtil.toList(ids))); + return sysLogService + .list(Wrappers.lambdaQuery(sysLog).in(Objects.nonNull(ids), SysLog::getId, CollUtil.toList(ids))); } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMenuController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMenuController.java index a483b8d3e..9ca8e83f4 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMenuController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMenuController.java @@ -48,96 +48,95 @@ import java.util.Set; @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class SysMenuController { - private final SysMenuService sysMenuService; + private final SysMenuService sysMenuService; - /** - * 返回当前用户的树形菜单集合 - * - * @param type 类型 - * @param parentId 父节点ID - * @return 当前用户的树形菜单 - */ - @GetMapping - public R getUserMenu(String type, Long parentId) { - // 获取符合条件的菜单 - Set all = new HashSet<>(); - SecurityUtils.getRoleIds().forEach(roleId -> all.addAll(sysMenuService.findMenuByRoleId(roleId))); - return R.ok(sysMenuService.filterMenu(all, type, parentId)); - } + /** + * 返回当前用户的树形菜单集合 + * + * @param type 类型 + * @param parentId 父节点ID + * @return 当前用户的树形菜单 + */ + @GetMapping + public R getUserMenu(String type, Long parentId) { + // 获取符合条件的菜单 + Set all = new HashSet<>(); + SecurityUtils.getRoleIds().forEach(roleId -> all.addAll(sysMenuService.findMenuByRoleId(roleId))); + return R.ok(sysMenuService.filterMenu(all, type, parentId)); + } - /** - * 返回树形菜单集合 - * - * @param parentId 父节点ID - * @param menuName 菜单名称 - * @return 树形菜单 - */ - @GetMapping(value = "/tree") - public R getTree(Long parentId, String menuName, String type) { - return R.ok(sysMenuService.treeMenu(parentId, menuName, type)); - } + /** + * 返回树形菜单集合 + * + * @param parentId 父节点ID + * @param menuName 菜单名称 + * @return 树形菜单 + */ + @GetMapping(value = "/tree") + public R getTree(Long parentId, String menuName, String type) { + return R.ok(sysMenuService.treeMenu(parentId, menuName, type)); + } - /** - * 返回角色的菜单集合 - * - * @param roleId 角色ID - * @return 属性集合 - */ - @GetMapping("/tree/{roleId}") - public R getRoleTree(@PathVariable Long roleId) { - return R - .ok(sysMenuService.findMenuByRoleId(roleId).stream().map(SysMenu::getMenuId).toList()); - } + /** + * 返回角色的菜单集合 + * + * @param roleId 角色ID + * @return 属性集合 + */ + @GetMapping("/tree/{roleId}") + public R getRoleTree(@PathVariable Long roleId) { + return R.ok(sysMenuService.findMenuByRoleId(roleId).stream().map(SysMenu::getMenuId).toList()); + } - /** - * 获取详细信息 - * - * @param query 查询条件 - * @return {@link R } - */ - @GetMapping("/details") - public R getDetails(@ParameterObject SysMenu query) { - return R.ok(sysMenuService.list(Wrappers.query(query))); - } + /** + * 获取详细信息 + * + * @param query 查询条件 + * @return {@link R } + */ + @GetMapping("/details") + public R getDetails(@ParameterObject SysMenu query) { + return R.ok(sysMenuService.list(Wrappers.query(query))); + } - /** - * 新增菜单 - * - * @param sysMenu 菜单信息 - * @return success/false - */ - @SysLog("新增菜单") - @PostMapping - @HasPermission("sys_menu_add") - public R save(@Valid @RequestBody SysMenu sysMenu) { - sysMenuService.save(sysMenu); - return R.ok(sysMenu); - } + /** + * 新增菜单 + * + * @param sysMenu 菜单信息 + * @return success/false + */ + @SysLog("新增菜单") + @PostMapping + @HasPermission("sys_menu_add") + public R save(@Valid @RequestBody SysMenu sysMenu) { + sysMenuService.save(sysMenu); + return R.ok(sysMenu); + } - /** - * 删除菜单 - * - * @param id 菜单ID - * @return success/false - */ - @SysLog("删除菜单") - @DeleteMapping("/{id}") - @HasPermission("sys_menu_del") - public R removeById(@PathVariable Long id) { - return sysMenuService.removeMenuById(id); - } + /** + * 删除菜单 + * + * @param id 菜单ID + * @return success/false + */ + @SysLog("删除菜单") + @DeleteMapping("/{id}") + @HasPermission("sys_menu_del") + public R removeById(@PathVariable Long id) { + return sysMenuService.removeMenuById(id); + } - /** - * 更新菜单 - * - * @param sysMenu - * @return - */ - @SysLog("更新菜单") - @PutMapping - @HasPermission("sys_menu_edit") - public R update(@Valid @RequestBody SysMenu sysMenu) { - return R.ok(sysMenuService.updateMenuById(sysMenu)); - } + /** + * 更新菜单 + * + * @param sysMenu + * @return + */ + @SysLog("更新菜单") + @PutMapping + @HasPermission("sys_menu_edit") + public R update(@Valid @RequestBody SysMenu sysMenu) { + return R.ok(sysMenuService.updateMenuById(sysMenu)); + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMessageController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMessageController.java index 3ebdd5cba..a9a78a766 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMessageController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMessageController.java @@ -125,8 +125,8 @@ public class SysMessageController { @GetMapping("/export") @HasPermission("sys_message_export") public List export(SysMessageEntity sysMessage, Long[] ids) { - return sysMessageService - .list(Wrappers.lambdaQuery(sysMessage).in(ArrayUtil.isNotEmpty(ids), SysMessageEntity::getId, CollUtil.toList(ids))); + return sysMessageService.list(Wrappers.lambdaQuery(sysMessage) + .in(ArrayUtil.isNotEmpty(ids), SysMessageEntity::getId, CollUtil.toList(ids))); } /** @@ -183,7 +183,6 @@ public class SysMessageController { /** * 发送短信验证码 - * * @param mobile 手机号 * @return {@link R } */ @@ -195,7 +194,6 @@ public class SysMessageController { /** * 发送短信 - * * @param messageSmsDTO 消息 短信 DTO * @return {@link R } */ @@ -206,7 +204,6 @@ public class SysMessageController { /** * 发送邮件 - * * @param messageEmailDTO 留言内容 电子邮件 DTO * @return {@link R } */ @@ -217,17 +214,17 @@ public class SysMessageController { /** * 发送 webhook - * * @param messageHookDTO 消息挂钩 DTO * @return {@link R } */ @PostMapping("/send/hook") public R sendWebhook(@Valid @RequestBody MessageHookDTO messageHookDTO) { - return sysMessageService.sendHook(messageHookDTO); - } + return sysMessageService.sendHook(messageHookDTO); + } + + @GetMapping("/list/hook") + public R listHookBizCode(MessageHookDTO messageHookDTO) { + return sysMessageService.listHookBizCode(messageHookDTO); + } - @GetMapping("/list/hook") - public R listHookBizCode(MessageHookDTO messageHookDTO) { - return sysMessageService.listHookBizCode(messageHookDTO); - } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysPublicParamController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysPublicParamController.java index 0215ffd99..351d2ef27 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysPublicParamController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysPublicParamController.java @@ -162,8 +162,8 @@ public class SysPublicParamController { @GetMapping("/export") @HasPermission("sys_syspublicparam_edit") public List export(SysPublicParam param, Long[] ids) { - return sysPublicParamService - .list(Wrappers.lambdaQuery(param).in(ArrayUtil.isNotEmpty(ids), SysPublicParam::getPublicId, CollUtil.toList(ids))); + return sysPublicParamService.list(Wrappers.lambdaQuery(param) + .in(ArrayUtil.isNotEmpty(ids), SysPublicParam::getPublicId, CollUtil.toList(ids))); } /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRegisterController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRegisterController.java index 6deca3b6a..c892fe429 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRegisterController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRegisterController.java @@ -1,7 +1,6 @@ package com.pig4cloud.pigx.admin.controller; import com.pig4cloud.pigx.admin.api.dto.RegisterUserDTO; -import com.pig4cloud.pigx.admin.api.dto.UserDTO; import com.pig4cloud.pigx.admin.service.SysUserService; import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.common.log.annotation.SysLog; @@ -60,5 +59,6 @@ public class SysRegisterController { @PostMapping("/forget/{code}") public R forgetUserPassword(@RequestBody RegisterUserDTO userDto, @PathVariable String code) { return userService.forgetUserPassword(userDto, code); - } + } + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRouteConfController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRouteConfController.java index 224ccfbda..6fd568656 100755 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRouteConfController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRouteConfController.java @@ -82,5 +82,6 @@ public class SysRouteConfController { @HasPermission("sys_route_manage") public R saveRoute(@RequestBody SysRouteConf routeConf) { return R.ok(sysRouteConfService.saveRoute(routeConf)); - } + } + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSensitiveWordController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSensitiveWordController.java index 22bc041cb..fb987ce9e 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSensitiveWordController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSensitiveWordController.java @@ -51,12 +51,13 @@ public class SysSensitiveWordController { @Operation(summary = "分页查询", description = "分页查询") @GetMapping("/page") @HasPermission("admin_sysSensitiveWord_view") - public R getSysSensitiveWordPage(@ParameterObject Page page, @ParameterObject SysSensitiveWordEntity sysSensitiveWord) { + public R getSysSensitiveWordPage(@ParameterObject Page page, + @ParameterObject SysSensitiveWordEntity sysSensitiveWord) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.like(StrUtil.isNotBlank(sysSensitiveWord.getSensitiveWord()) - , SysSensitiveWordEntity::getSensitiveWord, sysSensitiveWord.getSensitiveWord()); - wrapper.eq(StrUtil.isNotBlank(sysSensitiveWord.getSensitiveType()) - , SysSensitiveWordEntity::getSensitiveType, sysSensitiveWord.getSensitiveType()); + wrapper.like(StrUtil.isNotBlank(sysSensitiveWord.getSensitiveWord()), SysSensitiveWordEntity::getSensitiveWord, + sysSensitiveWord.getSensitiveWord()); + wrapper.eq(StrUtil.isNotBlank(sysSensitiveWord.getSensitiveType()), SysSensitiveWordEntity::getSensitiveType, + sysSensitiveWord.getSensitiveType()); return R.ok(sysSensitiveWordService.page(page, wrapper)); } @@ -64,8 +65,11 @@ public class SysSensitiveWordController { @Operation(summary = "查询所有敏感词", description = "查询所有敏感词") @GetMapping("/remote/list/{type}") public R list(@PathVariable String type) { - return R.ok(sysSensitiveWordService.list(Wrappers.lambdaQuery() - .eq(SysSensitiveWordEntity::getSensitiveType, type)).stream().map(SysSensitiveWordEntity::getSensitiveWord).toList()); + return R.ok(sysSensitiveWordService + .list(Wrappers.lambdaQuery().eq(SysSensitiveWordEntity::getSensitiveType, type)) + .stream() + .map(SysSensitiveWordEntity::getSensitiveWord) + .toList()); } /** @@ -146,7 +150,6 @@ public class SysSensitiveWordController { return R.ok(); } - /** * 导出excel 表格 * @@ -158,7 +161,8 @@ public class SysSensitiveWordController { @GetMapping("/export") @HasPermission("admin_sysSensitiveWord_export") public List export(SysSensitiveWordEntity sysSensitiveWord, Long[] ids) { - return sysSensitiveWordService.list(Wrappers.lambdaQuery(sysSensitiveWord).in(ArrayUtil.isNotEmpty(ids), SysSensitiveWordEntity::getSensitiveId, CollUtil.toList(ids))); + return sysSensitiveWordService.list(Wrappers.lambdaQuery(sysSensitiveWord) + .in(ArrayUtil.isNotEmpty(ids), SysSensitiveWordEntity::getSensitiveId, CollUtil.toList(ids))); } /** @@ -171,9 +175,10 @@ public class SysSensitiveWordController { @HasPermission("admin_sysSensitiveWord_del") public R refresh() { RedisUtils.execute((RedisCallback) connection -> { - connection.publish(CacheConstants.SENSITIVE_REDIS_RELOAD_TOPIC.getBytes(), "刷新敏感词缓存".getBytes()); - return null; - }); - return R.ok(); - } + connection.publish(CacheConstants.SENSITIVE_REDIS_RELOAD_TOPIC.getBytes(), "刷新敏感词缓存".getBytes()); + return null; + }); + return R.ok(); + } + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSocialDetailsController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSocialDetailsController.java index fedbe4c64..a4ebeb17c 100755 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSocialDetailsController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSocialDetailsController.java @@ -71,7 +71,7 @@ public class SysSocialDetailsController { */ @Inner(value = false) @GetMapping("/getLoginAppList") - public R getLoginAppList(){ + public R getLoginAppList() { return R.ok(sysSocialDetailsService.selectList()); } @@ -155,8 +155,8 @@ public class SysSocialDetailsController { */ @GetMapping("/export") public List export(SysSocialDetails sysSocialDetails, Long[] ids) { - return sysSocialDetailsService - .list(Wrappers.lambdaQuery(sysSocialDetails).in(ArrayUtil.isNotEmpty(ids), SysSocialDetails::getId, CollUtil.toList(ids))); + return sysSocialDetailsService.list(Wrappers.lambdaQuery(sysSocialDetails) + .in(ArrayUtil.isNotEmpty(ids), SysSocialDetails::getId, CollUtil.toList(ids))); } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSystemConfigController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSystemConfigController.java index 31563646a..c0e593be7 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSystemConfigController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSystemConfigController.java @@ -45,16 +45,16 @@ public class SysSystemConfigController { @Operation(summary = "分页查询", description = "分页查询") @GetMapping("/page") @HasPermission("sys_message_view") - public R getSysSystemConfigPage(@ParameterObject Page page, @ParameterObject SysSystemConfigEntity sysSystemConfig) { + public R getSysSystemConfigPage(@ParameterObject Page page, + @ParameterObject SysSystemConfigEntity sysSystemConfig) { return sysSystemConfigService.pageSystemConfig(page, sysSystemConfig); } - /** * 通过条件查询系统配置 * * @param sysSystemConfig 查询条件 - * @return R 对象列表 + * @return R 对象列表 */ @Operation(summary = "通过条件查询", description = "通过条件查询对象") @GetMapping("/details") @@ -105,7 +105,6 @@ public class SysSystemConfigController { return R.ok(sysSystemConfigService.removeBatchByIds(CollUtil.toList(ids))); } - /** * 导出excel 表格 * @@ -117,6 +116,8 @@ public class SysSystemConfigController { @GetMapping("/export") @HasPermission("sys_message_export") public List export(SysSystemConfigEntity sysSystemConfig, Long[] ids) { - return sysSystemConfigService.list(Wrappers.lambdaQuery(sysSystemConfig).in(ArrayUtil.isNotEmpty(ids), SysSystemConfigEntity::getId, CollUtil.toList(ids))); - } + return sysSystemConfigService.list(Wrappers.lambdaQuery(sysSystemConfig) + .in(ArrayUtil.isNotEmpty(ids), SysSystemConfigEntity::getId, CollUtil.toList(ids))); + } + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSystemInfoController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSystemInfoController.java index 1ce1760a7..b4e24f8f0 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSystemInfoController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSystemInfoController.java @@ -29,8 +29,8 @@ public class SysSystemInfoController { @GetMapping("/cache") public R cache() { Properties info = RedisUtils.execute((RedisCallback) RedisServerCommands::info); - Properties commandStats = RedisUtils.execute((RedisCallback) - connection -> connection.serverCommands().info("commandstats")); + Properties commandStats = RedisUtils + .execute((RedisCallback) connection -> connection.serverCommands().info("commandstats")); Object dbSize = RedisUtils.execute((RedisCallback) RedisServerCommands::dbSize); if (commandStats == null) { diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysTenantController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysTenantController.java index 80feb2656..3d4f57c05 100755 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysTenantController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysTenantController.java @@ -62,218 +62,215 @@ import java.util.List; @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class SysTenantController { - private final SysTenantService sysTenantService; + private final SysTenantService sysTenantService; - private final SysMenuService sysMenuService; + private final SysMenuService sysMenuService; - /** - * 分页查询 - * - * @param page 分页对象 - * @param sysTenant 租户 - * @return - */ - @GetMapping("/page") - public R getSysTenantPage(@ParameterObject Page page, @ParameterObject SysTenant sysTenant) { - return R.ok(sysTenantService.page(page, Wrappers.lambdaQuery() - .like(StrUtil.isNotBlank(sysTenant.getName()), SysTenant::getName, sysTenant.getName()))); - } + /** + * 分页查询 + * + * @param page 分页对象 + * @param sysTenant 租户 + * @return + */ + @GetMapping("/page") + public R getSysTenantPage(@ParameterObject Page page, @ParameterObject SysTenant sysTenant) { + return R.ok(sysTenantService.page(page, Wrappers.lambdaQuery() + .like(StrUtil.isNotBlank(sysTenant.getName()), SysTenant::getName, sysTenant.getName()))); + } - /** - * 通过ID 查询租户信息 - * - * @param id ID - * @return R - */ - @GetMapping("/details/{id}") - public R getById(@PathVariable Long id) { - return R.ok(sysTenantService.getById(id)); - } + /** + * 通过ID 查询租户信息 + * + * @param id ID + * @return R + */ + @GetMapping("/details/{id}") + public R getById(@PathVariable Long id) { + return R.ok(sysTenantService.getById(id)); + } - /** - * 查询租户信息 - * - * @param query 查询条件 - * @return 租户信息 - */ - @GetMapping("/details") - public R getDetails(@ParameterObject SysTenant query) { - return R.ok(sysTenantService.getOne(Wrappers.query(query), false)); - } + /** + * 查询租户信息 + * + * @param query 查询条件 + * @return 租户信息 + */ + @GetMapping("/details") + public R getDetails(@ParameterObject SysTenant query) { + return R.ok(sysTenantService.getOne(Wrappers.query(query), false)); + } - /** - * 新增租户 - * - * @param sysTenant 租户 - * @return R - */ - @SysLog("新增租户") - @PostMapping - @HasPermission("sys_systenant_add") - @CacheEvict(value = CacheConstants.TENANT_DETAILS, allEntries = true) - public R save(@RequestBody SysTenant sysTenant) { - return R.ok(sysTenantService.saveTenant(sysTenant)); - } + /** + * 新增租户 + * + * @param sysTenant 租户 + * @return R + */ + @SysLog("新增租户") + @PostMapping + @HasPermission("sys_systenant_add") + @CacheEvict(value = CacheConstants.TENANT_DETAILS, allEntries = true) + public R save(@RequestBody SysTenant sysTenant) { + return R.ok(sysTenantService.saveTenant(sysTenant)); + } - /** - * 修改租户 - * - * @param sysTenant 租户 - * @return R - */ - @SysLog("修改租户") - @PutMapping - @HasPermission("sys_systenant_edit") - public R updateById(@RequestBody SysTenant sysTenant) { - return R.ok(sysTenantService.updateTenant(sysTenant)); - } + /** + * 修改租户 + * + * @param sysTenant 租户 + * @return R + */ + @SysLog("修改租户") + @PutMapping + @HasPermission("sys_systenant_edit") + public R updateById(@RequestBody SysTenant sysTenant) { + return R.ok(sysTenantService.updateTenant(sysTenant)); + } - /** - * 通过id删除租户 - *

- * 为了保证安全,这里只删除租户表的数据,不删除基础表中的租户初始化数据。 - * - * @param ids id 列表 - * @return R - */ - @SysLog("删除租户") - @DeleteMapping - @HasPermission("sys_systenant_del") - public R removeById(@RequestBody Long[] ids) { - return R.ok(sysTenantService.removeTenant(ids)); - } + /** + * 通过id删除租户 + *

+ * 为了保证安全,这里只删除租户表的数据,不删除基础表中的租户初始化数据。 + * + * @param ids id 列表 + * @return R + */ + @SysLog("删除租户") + @DeleteMapping + @HasPermission("sys_systenant_del") + public R removeById(@RequestBody Long[] ids) { + return R.ok(sysTenantService.removeTenant(ids)); + } - /** - * 查询全部有效的租户列表 - * - * @return 包含有效租户列表的响应结果 - */ - @Inner(value = false) - @GetMapping("/list") - public R list() { - List tenants = sysTenantService.getNormalTenant() - .stream() - .filter(tenant -> tenant.getStartTime().isBefore(LocalDateTime.now())) - .filter(tenant -> tenant.getEndTime().isAfter(LocalDateTime.now())) - .toList(); - return R.ok(tenants); - } + /** + * 查询全部有效的租户列表 + * + * @return 包含有效租户列表的响应结果 + */ + @Inner(value = false) + @GetMapping("/list") + public R list() { + List tenants = sysTenantService.getNormalTenant() + .stream() + .filter(tenant -> tenant.getStartTime().isBefore(LocalDateTime.now())) + .filter(tenant -> tenant.getEndTime().isAfter(LocalDateTime.now())) + .toList(); + return R.ok(tenants); + } - /** - * 导出租户信息到Excel - * - * @param sysTenant 租户查询条件 - * @param ids 租户ID数组 - * @return 符合条件的租户列表 - */ - @ResponseExcel - @GetMapping("/export") - @HasPermission("sys_systenant_export") - public List export(SysTenant sysTenant, Long[] ids) { - return sysTenantService - .list(Wrappers.lambdaQuery(sysTenant).in(ArrayUtil.isNotEmpty(ids), SysTenant::getId, CollUtil.toList(ids))); - } + /** + * 导出租户信息到Excel + * + * @param sysTenant 租户查询条件 + * @param ids 租户ID数组 + * @return 符合条件的租户列表 + */ + @ResponseExcel + @GetMapping("/export") + @HasPermission("sys_systenant_export") + public List export(SysTenant sysTenant, Long[] ids) { + return sysTenantService.list( + Wrappers.lambdaQuery(sysTenant).in(ArrayUtil.isNotEmpty(ids), SysTenant::getId, CollUtil.toList(ids))); + } - /** - * 获取租户菜单 - * - * @return 包含菜单树结构的响应结果 - */ - @GetMapping(value = "/tree/menu") - public R getTree() { - Long defaultId = ParamResolver.getLong("TENANT_DEFAULT_ID", 1L); - List> trees = new ArrayList<>(); - TenantBroker.runAs(defaultId, (id) -> { - trees.addAll(sysMenuService.treeMenu(null, null, null)); - }); + /** + * 获取租户菜单 + * + * @return 包含菜单树结构的响应结果 + */ + @GetMapping(value = "/tree/menu") + public R getTree() { + Long defaultId = ParamResolver.getLong("TENANT_DEFAULT_ID", 1L); + List> trees = new ArrayList<>(); + TenantBroker.runAs(defaultId, (id) -> { + trees.addAll(sysMenuService.treeMenu(null, null, null)); + }); - return R.ok(trees); - } + return R.ok(trees); + } - /** - * 获取用户租户信息 - * - * @return 包含用户租户信息的响应结果 - */ - @GetMapping("/user-tenant") - public R getUserTenant() { - return R.ok(sysTenantService.getUserTenant()); - } + /** + * 获取用户租户信息 + * + * @return 包含用户租户信息的响应结果 + */ + @GetMapping("/user-tenant") + public R getUserTenant() { + return R.ok(sysTenantService.getUserTenant()); + } - /** - * 新增用户租户关联关系 - * - * @param tenantUserDTO 用户租户关联信息DTO - * @return 操作结果 - */ - @PostMapping("/user-tenant") - @HasPermission("sys_systenant_del") - public R addUserTenant(@RequestBody SysTenantUserDTO tenantUserDTO) { - return R.ok(sysTenantService.saveTenantUser(tenantUserDTO)); - } + /** + * 新增用户租户关联关系 + * + * @param tenantUserDTO 用户租户关联信息DTO + * @return 操作结果 + */ + @PostMapping("/user-tenant") + @HasPermission("sys_systenant_del") + public R addUserTenant(@RequestBody SysTenantUserDTO tenantUserDTO) { + return R.ok(sysTenantService.saveTenantUser(tenantUserDTO)); + } - /** - * 获取用户租户分页信息 - * - * @param page 分页参数 - * @param userDTO 用户查询参数 - * @return 租户分页结果 - */ - @GetMapping("/user-tenant/page") - @HasPermission("sys_systenant_del") - public R getUserTenantPage(@ParameterObject Page page, @ParameterObject UserDTO userDTO) { - return R.ok(sysTenantService.getUserTenantPage(page, userDTO)); - } + /** + * 获取用户租户分页信息 + * + * @param page 分页参数 + * @param userDTO 用户查询参数 + * @return 租户分页结果 + */ + @GetMapping("/user-tenant/page") + @HasPermission("sys_systenant_del") + public R getUserTenantPage(@ParameterObject Page page, @ParameterObject UserDTO userDTO) { + return R.ok(sysTenantService.getUserTenantPage(page, userDTO)); + } - /** - * 根据租户用户信息删除用户租户关系 - * - * @param tenantUserDTO 租户用户信息DTO - * @return 操作结果 - */ - @SysLog("删除租户>用户关系") - @DeleteMapping("/remove-users") - @HasPermission("sys_systenant_del") - public R removeUserTenantById(@RequestBody SysTenantUserDTO tenantUserDTO) { - return R.ok(sysTenantService.removeTenantUser(tenantUserDTO)); - } + /** + * 根据租户用户信息删除用户租户关系 + * @param tenantUserDTO 租户用户信息DTO + * @return 操作结果 + */ + @SysLog("删除租户>用户关系") + @DeleteMapping("/remove-users") + @HasPermission("sys_systenant_del") + public R removeUserTenantById(@RequestBody SysTenantUserDTO tenantUserDTO) { + return R.ok(sysTenantService.removeTenantUser(tenantUserDTO)); + } - /** - * 根据条件查询租户用户列表 - * - * @param userDTO 用户查询条件 - * @return 包含查询结果的响应对象 - */ - @GetMapping("/list-users") - @HasPermission("sys_systenant_del") - public R listTenantUser(@ParameterObject UserDTO userDTO) { - return R.ok(sysTenantService.listTenantUser(userDTO)); - } + /** + * 根据条件查询租户用户列表 + * @param userDTO 用户查询条件 + * @return 包含查询结果的响应对象 + */ + @GetMapping("/list-users") + @HasPermission("sys_systenant_del") + public R listTenantUser(@ParameterObject UserDTO userDTO) { + return R.ok(sysTenantService.listTenantUser(userDTO)); + } - /** - * 获取租户角色列表 - * - * @param userDTO 用户信息参数对象 - * @return 包含租户角色列表的响应结果 - */ - @GetMapping("/list-org") - @HasPermission("sys_systenant_del") - public R listTenantOrg(@ParameterObject UserDTO userDTO) { - return R.ok(sysTenantService.listTenantOrg(userDTO)); - } + /** + * 获取租户角色列表 + * @param userDTO 用户信息参数对象 + * @return 包含租户角色列表的响应结果 + */ + @GetMapping("/list-org") + @HasPermission("sys_systenant_del") + public R listTenantOrg(@ParameterObject UserDTO userDTO) { + return R.ok(sysTenantService.listTenantOrg(userDTO)); + } - /** - * 更新用户租户信息 - * - * @param userDto 用户数据传输对象,包含需要更新的用户信息 - * @return 操作结果 - */ - @PutMapping("/personal/update") - public R updateUserTenant(@RequestBody UserDTO userDto) { - String username = SecurityUtils.getUser().getUsername(); - userDto.setUsername(username); - userDto.setUserId(SecurityUtils.getUser().getId()); - return sysTenantService.updateUserTenant(userDto); - } + /** + * 更新用户租户信息 + * + * @param userDto 用户数据传输对象,包含需要更新的用户信息 + * @return 操作结果 + */ + @PutMapping("/personal/update") + public R updateUserTenant(@RequestBody UserDTO userDto) { + String username = SecurityUtils.getUser().getUsername(); + userDto.setUsername(username); + userDto.setUserId(SecurityUtils.getUser().getId()); + return sysTenantService.updateUserTenant(userDto); + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysUserController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysUserController.java index d2bae9f9d..9a69a5bab 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysUserController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysUserController.java @@ -61,255 +61,249 @@ import java.util.List; @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class SysUserController { - private final SysUserService userService; + private final SysUserService userService; - /** - * 获取指定用户全部信息 - * - * @return 用户信息 - */ - @Inner - @GetMapping("/info/{username}") - public R info(@PathVariable String username) { - UserDTO userDTO = new UserDTO(); - userDTO.setUsername(username); - return userService.getUserInfo(userDTO); - } + /** + * 获取指定用户全部信息 + * + * @return 用户信息 + */ + @Inner + @GetMapping("/info/{username}") + public R info(@PathVariable String username) { + UserDTO userDTO = new UserDTO(); + userDTO.setUsername(username); + return userService.getUserInfo(userDTO); + } - /** - * 获取当前用户全部信息 - * - * @return 用户信息 - */ - @GetMapping(value = {"/info"}) - public R info() { - String username = SecurityUtils.getUser().getUsername(); - UserDTO userDTO = new UserDTO(); - userDTO.setUsername(username); - // 获取用户信息,不返回数据库密码字段 - R userInfoR = userService.getUserInfo(userDTO); - if (userInfoR.getData() != null) { - userInfoR.getData().setPassword(null); - } - return userInfoR; - } + /** + * 获取当前用户全部信息 + * + * @return 用户信息 + */ + @GetMapping(value = {"/info"}) + public R info() { + String username = SecurityUtils.getUser().getUsername(); + UserDTO userDTO = new UserDTO(); + userDTO.setUsername(username); + // 获取用户信息,不返回数据库密码字段 + R userInfoR = userService.getUserInfo(userDTO); + if (userInfoR.getData() != null) { + userInfoR.getData().setPassword(null); + } + return userInfoR; + } - /** - * 通过ID查询用户信息 - * - * @param id ID - * @return 用户信息 - */ - @GetMapping("/details/{id}") - public R user(@PathVariable Long id) { - return R.ok(userService.selectUserVoById(id)); - } + /** + * 通过ID查询用户信息 + * + * @param id ID + * @return 用户信息 + */ + @GetMapping("/details/{id}") + public R user(@PathVariable Long id) { + return R.ok(userService.selectUserVoById(id)); + } - /** - * 查询用户信息 - * - * @param query 查询条件 - * @return 不为空返回用户名 - */ - @Inner(value = false) - @GetMapping("/details") - public R getDetails(@ParameterObject SysUser query) { - // 根据用户名、手机号 查询不区分租户 - SysUser sysUser = TenantBroker.noneAs(() -> userService.getOne(Wrappers.query(query), false)); - return R.ok(sysUser == null ? null : CommonConstants.SUCCESS); - } + /** + * 查询用户信息 + * + * @param query 查询条件 + * @return 不为空返回用户名 + */ + @Inner(value = false) + @GetMapping("/details") + public R getDetails(@ParameterObject SysUser query) { + // 根据用户名、手机号 查询不区分租户 + SysUser sysUser = TenantBroker.noneAs(() -> userService.getOne(Wrappers.query(query), false)); + return R.ok(sysUser == null ? null : CommonConstants.SUCCESS); + } - /** - * 删除用户信息 - * - * @param ids ID - * @return R - */ - @SysLog("删除用户信息") - @DeleteMapping - @HasPermission("sys_user_del") - @Operation(summary = "删除用户", description = "根据ID删除用户") - public R userDel(@RequestBody Long[] ids) { - return R.ok(userService.deleteUserByIds(ids)); - } + /** + * 删除用户信息 + * + * @param ids ID + * @return R + */ + @SysLog("删除用户信息") + @DeleteMapping + @HasPermission("sys_user_del") + @Operation(summary = "删除用户", description = "根据ID删除用户") + public R userDel(@RequestBody Long[] ids) { + return R.ok(userService.deleteUserByIds(ids)); + } - /** - * 添加用户 - * - * @param userDto 用户信息 - * @return success/false - */ - @SysLog("添加用户") - @PostMapping - @HasPermission("sys_user_add") - public R user(@RequestBody UserDTO userDto) { - return R.ok(userService.saveUser(userDto)); - } + /** + * 添加用户 + * + * @param userDto 用户信息 + * @return success/false + */ + @SysLog("添加用户") + @PostMapping + @HasPermission("sys_user_add") + public R user(@RequestBody UserDTO userDto) { + return R.ok(userService.saveUser(userDto)); + } - /** - * 分页查询用户 - * - * @param page 参数集 - * @param userDTO 查询参数列表 - * @return 用户集合 - */ - @GetMapping("/page") - public R getUserPage(@ParameterObject Page page, @ParameterObject UserDTO userDTO) { - return R.ok(userService.getUsersWithRolePage(page, userDTO)); - } + /** + * 分页查询用户 + * + * @param page 参数集 + * @param userDTO 查询参数列表 + * @return 用户集合 + */ + @GetMapping("/page") + public R getUserPage(@ParameterObject Page page, @ParameterObject UserDTO userDTO) { + return R.ok(userService.getUsersWithRolePage(page, userDTO)); + } - /** - * 管理员更新用户信息 - * - * @param userDto 用户信息 - * @return R - */ - @SysLog("更新用户信息") - @PutMapping - @HasPermission("sys_user_edit") - public R updateUser(@Valid @RequestBody UserDTO userDto) { - return R.ok(userService.updateUser(userDto)); - } + /** + * 管理员更新用户信息 + * + * @param userDto 用户信息 + * @return R + */ + @SysLog("更新用户信息") + @PutMapping + @HasPermission("sys_user_edit") + public R updateUser(@Valid @RequestBody UserDTO userDto) { + return R.ok(userService.updateUser(userDto)); + } - /** - * 修改个人信息 (当前用户) - * - * @param userDto userDto - * @return success/false - */ - @SysLog("修改个人信息") - @PutMapping("/personal/edit") - public R updateUserInfo(@Valid @RequestBody UserDTO userDto) { - return userService.updateUserInfo(userDto); - } + /** + * 修改个人信息 (当前用户) + * + * @param userDto userDto + * @return success/false + */ + @SysLog("修改个人信息") + @PutMapping("/personal/edit") + public R updateUserInfo(@Valid @RequestBody UserDTO userDto) { + return userService.updateUserInfo(userDto); + } - /** - * 修改个人密码 (当前用户) - * - * @param userDto 用户DTO对象,包含需要修改密码的用户信息 - * @return R 返回结果对象,包含修改密码操作的结果信息 - */ - @PutMapping("/personal/password") - public R updateUserPassword(@RequestBody UserDTO userDto) { - String username = SecurityUtils.getUser().getUsername(); - userDto.setUsername(username); - return userService.changePassword(userDto); - } + /** + * 修改个人密码 (当前用户) + * + * @param userDto 用户DTO对象,包含需要修改密码的用户信息 + * @return R 返回结果对象,包含修改密码操作的结果信息 + */ + @PutMapping("/personal/password") + public R updateUserPassword(@RequestBody UserDTO userDto) { + String username = SecurityUtils.getUser().getUsername(); + userDto.setUsername(username); + return userService.changePassword(userDto); + } + /** + * @param username 用户名称 + * @return 上级部门用户列表 + */ + @GetMapping("/ancestor/{username}") + public R listAncestorUsers(@PathVariable String username) { + return R.ok(userService.listAncestorUsers(username)); + } - /** - * @param username 用户名称 - * @return 上级部门用户列表 - */ - @GetMapping("/ancestor/{username}") - public R listAncestorUsers(@PathVariable String username) { - return R.ok(userService.listAncestorUsers(username)); - } + /** + * 导出excel 表格 + * @param userDTO 查询条件 + * @return + */ + @ResponseExcel + @GetMapping("/export") + @HasPermission("sys_user_export") + public List export(UserDTO userDTO, Long[] ids) { + return userService.listUser(userDTO, ids); + } - /** - * 导出excel 表格 - * - * @param userDTO 查询条件 - * @return - */ - @ResponseExcel - @GetMapping("/export") - @HasPermission("sys_user_export") - public List export(UserDTO userDTO, Long[] ids) { - return userService.listUser(userDTO, ids); - } + /** + * 导入用户 + * + * @param excelVOList 用户列表 + * @param bindingResult 错误信息列表 + * @return R + */ + @PostMapping("/import") + @HasPermission("sys_user_export") + public R importUser(@RequestExcel List excelVOList, BindingResult bindingResult) { + return userService.importUser(excelVOList, bindingResult); + } - /** - * 导入用户 - * - * @param excelVOList 用户列表 - * @param bindingResult 错误信息列表 - * @return R - */ - @PostMapping("/import") - @HasPermission("sys_user_export") - public R importUser(@RequestExcel List excelVOList, BindingResult bindingResult) { - return userService.importUser(excelVOList, bindingResult); - } + /** + * 锁定指定用户 + * + * @param username 用户名 + * @return R + */ + @Inner + @PutMapping("/lock/{username}") + public R lockUser(@PathVariable String username) { + return userService.lockUser(username); + } - /** - * 锁定指定用户 - * - * @param username 用户名 - * @return R - */ - @Inner - @PutMapping("/lock/{username}") - public R lockUser(@PathVariable String username) { - return userService.lockUser(username); - } + /** + * 解绑定接口 + * + * @param type 需要解绑定的类型 + * @return R 返回结果对象,包含解绑定操作的结果信息 + */ + @PostMapping("/unbinding") + public R unbinding(String type) { + return userService.unbinding(type); + } - /** - * 解绑定接口 - * - * @param type 需要解绑定的类型 - * @return R 返回结果对象,包含解绑定操作的结果信息 - */ - @PostMapping("/unbinding") - public R unbinding(String type) { - return userService.unbinding(type); - } + /** + * 校验密码接口 + * + * @param password 需要校验的密码 + * @return R 返回结果对象,包含校验密码操作的结果信息 + */ + @PostMapping("/check") + public R check(String password) { + return userService.checkPassword(SecurityUtils.getUser().getUsername(), password); + } - /** - * 校验密码接口 - * - * @param password 需要校验的密码 - * @return R 返回结果对象,包含校验密码操作的结果信息 - */ - @PostMapping("/check") - public R check(String password) { - return userService.checkPassword(SecurityUtils.getUser().getUsername(), password); - } + /** + * 根据角色ID列表获取用户ID列表接口 + * @param roleIdList 角色ID列表 + * @return R 返回结果对象,包含根据角色ID列表获取到的用户ID列表信息 + */ + @Inner + @GetMapping("/getUserIdListByRoleIdList") + public R> getUserIdListByRoleIdList(Long[] roleIdList) { + return R.ok(userService.listUserIdByRoleIds(CollUtil.toList(roleIdList))); + } - /** - * 根据角色ID列表获取用户ID列表接口 - * - * @param roleIdList 角色ID列表 - * @return R 返回结果对象,包含根据角色ID列表获取到的用户ID列表信息 - */ - @Inner - @GetMapping("/getUserIdListByRoleIdList") - public R> getUserIdListByRoleIdList(Long[] roleIdList) { - return R.ok(userService.listUserIdByRoleIds(CollUtil.toList(roleIdList))); - } + /** + * 根据部门ID列表获取用户ID列表接口 + * @param deptIdList 部门ID列表 + * @return R 返回结果对象,包含根据部门ID列表获取到的用户ID列表信息 + */ + @Inner + @GetMapping("/getUserIdListByDeptIdList") + public R> getUserIdListByDeptIdList(Long[] deptIdList) { + return R.ok(userService.listUserIdByDeptIds(CollUtil.toList(deptIdList))); + } - /** - * 根据部门ID列表获取用户ID列表接口 - * - * @param deptIdList 部门ID列表 - * @return R 返回结果对象,包含根据部门ID列表获取到的用户ID列表信息 - */ - @Inner - @GetMapping("/getUserIdListByDeptIdList") - public R> getUserIdListByDeptIdList(Long[] deptIdList) { - return R.ok(userService.listUserIdByDeptIds(CollUtil.toList(deptIdList))); - } + /** + * 根据用户名获取用户列表 + * @param username 用户名 + * @return 用户列表 + */ + @GetMapping("/getUserListByUserName") + public R> getUserListByUserName(String username) { + return R.ok(userService.list(Wrappers.lambdaQuery().like(SysUser::getUsername, username))); + } - /** - * 根据用户名获取用户列表 - * - * @param username 用户名 - * @return 用户列表 - */ - @GetMapping("/getUserListByUserName") - public R> getUserListByUserName(String username) { - return R.ok(userService.list(Wrappers.lambdaQuery().like(SysUser::getUsername, username))); - } - - /** - * 根据IDS获取用户列表 - * - * @param userIds ID列表 - * @return 用户列表 - */ - @GetMapping("/list") - public R> getUserListByIds(@RequestParam("userIds") List userIds) { - return R.ok(userService.list(Wrappers.lambdaQuery().in(SysUser::getUserId, userIds))); - } + /** + * 根据IDS获取用户列表 + * @param userIds ID列表 + * @return 用户列表 + */ + @GetMapping("/list") + public R> getUserListByIds(@RequestParam("userIds") List userIds) { + return R.ok(userService.list(Wrappers.lambdaQuery().in(SysUser::getUserId, userIds))); + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/CasLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/CasLoginHandler.java index 7d6d10190..2975acd6f 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/CasLoginHandler.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/CasLoginHandler.java @@ -66,7 +66,6 @@ public class CasLoginHandler extends AbstractLoginHandler { /** * 根据用户名获取用户信息 - * * @param username 用户名 * @return 用户信息对象,如果用户不存在则返回null */ diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/DingTalkLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/DingTalkLoginHandler.java index a331f8aa8..1f6e06d26 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/DingTalkLoginHandler.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/DingTalkLoginHandler.java @@ -115,7 +115,7 @@ public class DingTalkLoginHandler extends AbstractLoginHandler { public Boolean bind(SysUser user, String identify) { user.setWxDingUserid(identify); sysUserService.updateById(user); - return true; - } + return true; + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/GiteeLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/GiteeLoginHandler.java index 084ec3c10..3941d3ff8 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/GiteeLoginHandler.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/GiteeLoginHandler.java @@ -81,25 +81,24 @@ public class GiteeLoginHandler extends AbstractLoginHandler { } /** - * 根据标识获取用户信息 - * - * @param identify 用户标识 - * @return 用户信息,未找到时返回null + * 根据标识获取用户信息 + * @param identify 用户标识 + * @return 用户信息,未找到时返回null */ @Override public UserInfo info(String identify) { - UserDTO userDTO = new UserDTO(); - userDTO.setGiteeLogin(identify); + UserDTO userDTO = new UserDTO(); + userDTO.setGiteeLogin(identify); - R userInfoR = sysUserService.getUserInfo(userDTO); + R userInfoR = sysUserService.getUserInfo(userDTO); - if (userInfoR.getData() == null) { - log.info("微信 不存在用户:{}", identify); + if (userInfoR.getData() == null) { + log.info("微信 不存在用户:{}", identify); return null; } - return userInfoR.getData(); + return userInfoR.getData(); } /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/MiniAppLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/MiniAppLoginHandler.java index bc74ae9a6..ed48115c6 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/MiniAppLoginHandler.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/MiniAppLoginHandler.java @@ -46,72 +46,72 @@ import org.springframework.stereotype.Component; @AllArgsConstructor public class MiniAppLoginHandler extends AbstractLoginHandler { - private final SysUserService sysUserService; + private final SysUserService sysUserService; - private final SysSocialDetailsMapper sysSocialDetailsMapper; + private final SysSocialDetailsMapper sysSocialDetailsMapper; - /** - * 小程序登录传入code - *

- * 通过code 调用qq 获取唯一标识 - * - * @param code - * @return - */ - @Override - public String identify(String code) { - SysSocialDetails condition = new SysSocialDetails(); - condition.setType(LoginTypeEnum.MINI_APP.getType()); - SysSocialDetails socialDetails = sysSocialDetailsMapper.selectOne(new QueryWrapper<>(condition)); + /** + * 小程序登录传入code + *

+ * 通过code 调用qq 获取唯一标识 + * + * @param code + * @return + */ + @Override + public String identify(String code) { + SysSocialDetails condition = new SysSocialDetails(); + condition.setType(LoginTypeEnum.MINI_APP.getType()); + SysSocialDetails socialDetails = sysSocialDetailsMapper.selectOne(new QueryWrapper<>(condition)); - String url = String.format(SecurityConstants.MINI_APP_AUTHORIZATION_CODE_URL, socialDetails.getAppId(), - socialDetails.getAppSecret(), code); - String result = HttpUtil.get(url); - log.debug("微信小程序响应报文:{}", result); - JSONObject resultJsonObj = JSONUtil.parseObj(result); + String url = String.format(SecurityConstants.MINI_APP_AUTHORIZATION_CODE_URL, socialDetails.getAppId(), + socialDetails.getAppSecret(), code); + String result = HttpUtil.get(url); + log.debug("微信小程序响应报文:{}", result); + JSONObject resultJsonObj = JSONUtil.parseObj(result); - if (resultJsonObj.containsKey("errcode")) { - log.error("微信小程序登录失败:{}", result); - throw new CheckedException("微信小程序登录失败"); - } + if (resultJsonObj.containsKey("errcode")) { + log.error("微信小程序登录失败:{}", result); + throw new CheckedException("微信小程序登录失败"); + } - Object obj = resultJsonObj.get("openid"); - return obj.toString(); - } + Object obj = resultJsonObj.get("openid"); + return obj.toString(); + } - /** - * 根据openId获取用户信息 - * - * @param openId 用户openId - * @return 用户信息对象,未找到时返回null - */ - @Override - public UserInfo info(String openId) { - UserDTO userDTO = new UserDTO(); - userDTO.setMiniOpenid(openId); + /** + * 根据openId获取用户信息 + * + * @param openId 用户openId + * @return 用户信息对象,未找到时返回null + */ + @Override + public UserInfo info(String openId) { + UserDTO userDTO = new UserDTO(); + userDTO.setMiniOpenid(openId); - R userInfoR = sysUserService.getUserInfo(userDTO); + R userInfoR = sysUserService.getUserInfo(userDTO); - if (userInfoR.getData() == null) { - log.info("小程序不存在用户:{}", openId); - return null; - } + if (userInfoR.getData() == null) { + log.info("小程序不存在用户:{}", openId); + return null; + } - return userInfoR.getData(); - } + return userInfoR.getData(); + } - /** - * 绑定逻辑 - * - * @param user 用户实体 - * @param identify 渠道返回唯一标识 - * @return - */ - @Override - public Boolean bind(SysUser user, String identify) { - user.setMiniOpenid(identify); - sysUserService.updateById(user); - return true; - } + /** + * 绑定逻辑 + * + * @param user 用户实体 + * @param identify 渠道返回唯一标识 + * @return + */ + @Override + public Boolean bind(SysUser user, String identify) { + user.setMiniOpenid(identify); + sysUserService.updateById(user); + return true; + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/OscChinaLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/OscChinaLoginHandler.java index 2e4c00b91..b2bfeb0ca 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/OscChinaLoginHandler.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/OscChinaLoginHandler.java @@ -122,7 +122,7 @@ public class OscChinaLoginHandler extends AbstractLoginHandler { public Boolean bind(SysUser user, String identify) { user.setOscId(identify); sysUserService.updateById(user); - return true; - } + return true; + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/SmsLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/SmsLoginHandler.java index 589dbecb6..f9bf59779 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/SmsLoginHandler.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/SmsLoginHandler.java @@ -49,7 +49,6 @@ public class SmsLoginHandler extends AbstractLoginHandler { /** * 通过手机号获取用户信息 - * * @param identify 手机号标识 * @return 用户信息,未找到时返回null */ diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/WeChatCPLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/WeChatCPLoginHandler.java index dd3b743d4..af636b1ba 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/WeChatCPLoginHandler.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/WeChatCPLoginHandler.java @@ -43,70 +43,70 @@ import org.springframework.stereotype.Component; @RequiredArgsConstructor public class WeChatCPLoginHandler extends AbstractLoginHandler { - private final SysUserService sysUserService; + private final SysUserService sysUserService; - private final SysSocialDetailsMapper sysSocialDetailsMapper; + private final SysSocialDetailsMapper sysSocialDetailsMapper; - /** - * 企微登录传入code - *

- * 通过code 调用获取唯一标识 - * - * @param code - * @return - */ - @Override - public String identify(String code) { - SysSocialDetails condition = new SysSocialDetails(); - condition.setType(LoginTypeEnum.WEIXIN_CP.getType()); - SysSocialDetails socialDetails = sysSocialDetailsMapper.selectOne(new QueryWrapper<>(condition)); + /** + * 企微登录传入code + *

+ * 通过code 调用获取唯一标识 + * + * @param code + * @return + */ + @Override + public String identify(String code) { + SysSocialDetails condition = new SysSocialDetails(); + condition.setType(LoginTypeEnum.WEIXIN_CP.getType()); + SysSocialDetails socialDetails = sysSocialDetailsMapper.selectOne(new QueryWrapper<>(condition)); - String getAccessTokenUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s"; + String getAccessTokenUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s"; - String accessTokenResult = HttpUtil - .get(String.format(getAccessTokenUrl, socialDetails.getAppId(), socialDetails.getAppSecret())); - log.debug("获取企业微信Token响应报文:{}", accessTokenResult); - String accessToken = JSONUtil.parseObj(accessTokenResult).getStr("access_token"); - String getUserIdUrl = "https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=%s&code=%s"; - String userResult = HttpUtil.get(String.format(getUserIdUrl, accessToken, code)); - log.debug("获取企业微信UserId响应报文:{}", userResult); - // 企微唯一标识 - return JSONUtil.parseObj(userResult).getStr("userid"); - } + String accessTokenResult = HttpUtil + .get(String.format(getAccessTokenUrl, socialDetails.getAppId(), socialDetails.getAppSecret())); + log.debug("获取企业微信Token响应报文:{}", accessTokenResult); + String accessToken = JSONUtil.parseObj(accessTokenResult).getStr("access_token"); + String getUserIdUrl = "https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=%s&code=%s"; + String userResult = HttpUtil.get(String.format(getUserIdUrl, accessToken, code)); + log.debug("获取企业微信UserId响应报文:{}", userResult); + // 企微唯一标识 + return JSONUtil.parseObj(userResult).getStr("userid"); + } - /** - * 根据openId获取用户信息 - * - * @param openId 用户openId - * @return 用户信息对象,未找到时返回null - */ - @Override - public UserInfo info(String openId) { - UserDTO userDTO = new UserDTO(); - userDTO.setWxCpUserid(openId); + /** + * 根据openId获取用户信息 + * + * @param openId 用户openId + * @return 用户信息对象,未找到时返回null + */ + @Override + public UserInfo info(String openId) { + UserDTO userDTO = new UserDTO(); + userDTO.setWxCpUserid(openId); - R userInfoR = sysUserService.getUserInfo(userDTO); + R userInfoR = sysUserService.getUserInfo(userDTO); - if (userInfoR.getData() == null) { - log.info("企业微信 不存在用户:{}", openId); - return null; - } + if (userInfoR.getData() == null) { + log.info("企业微信 不存在用户:{}", openId); + return null; + } - return userInfoR.getData(); - } + return userInfoR.getData(); + } - /** - * 绑定逻辑 - * - * @param user 用户实体 - * @param identify 渠道返回唯一标识 - * @return - */ - @Override - public Boolean bind(SysUser user, String identify) { - user.setWxCpUserid(identify); - sysUserService.updateById(user); - return true; - } + /** + * 绑定逻辑 + * + * @param user 用户实体 + * @param identify 渠道返回唯一标识 + * @return + */ + @Override + public Boolean bind(SysUser user, String identify) { + user.setWxCpUserid(identify); + sysUserService.updateById(user); + return true; + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/WeChatLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/WeChatLoginHandler.java index aa19da01b..2c347f6e7 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/WeChatLoginHandler.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/WeChatLoginHandler.java @@ -69,24 +69,23 @@ public class WeChatLoginHandler extends AbstractLoginHandler { } /** - * 根据微信openId获取用户信息 - * - * @param openId 微信openId - * @return 用户信息,未找到时返回null + * 根据微信openId获取用户信息 + * @param openId 微信openId + * @return 用户信息,未找到时返回null */ @Override public UserInfo info(String openId) { - UserDTO userDTO = new UserDTO(); - userDTO.setWxOpenid(openId); + UserDTO userDTO = new UserDTO(); + userDTO.setWxOpenid(openId); - R userInfoR = sysUserService.getUserInfo(userDTO); + R userInfoR = sysUserService.getUserInfo(userDTO); - if (userInfoR.getData() == null) { - log.info("微信 不存在用户:{}", openId); + if (userInfoR.getData() == null) { + log.info("微信 不存在用户:{}", openId); return null; } - return userInfoR.getData(); + return userInfoR.getData(); } /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysAreaMapper.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysAreaMapper.java index a56ea2d7a..ce9d78450 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysAreaMapper.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysAreaMapper.java @@ -7,5 +7,4 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface SysAreaMapper extends PigxBaseMapper { - } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysSensitiveWordMapper.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysSensitiveWordMapper.java index 47a0e6b21..8383b1dff 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysSensitiveWordMapper.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysSensitiveWordMapper.java @@ -7,5 +7,4 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface SysSensitiveWordMapper extends PigxBaseMapper { - } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysTenantUserMapper.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysTenantUserMapper.java index a72c1190c..26200ad75 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysTenantUserMapper.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysTenantUserMapper.java @@ -23,7 +23,6 @@ import com.pig4cloud.pigx.admin.api.entity.SysTenantUser; import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper; import org.apache.ibatis.annotations.Mapper; - /** * 系统租户用户映射接口 * diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysUserDeptMapper.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysUserDeptMapper.java index ae60f3dab..42d5b355d 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysUserDeptMapper.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysUserDeptMapper.java @@ -20,7 +20,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.pig4cloud.pigx.admin.api.entity.SysUserDept; import org.apache.ibatis.annotations.Mapper; - /** * 系统用户部门关联Mapper接口 * diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysUserMapper.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysUserMapper.java index 9297dd60e..06cba3a2d 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysUserMapper.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysUserMapper.java @@ -62,7 +62,6 @@ public interface SysUserMapper extends PigxBaseMapper { /** * 通过ID查询用户信息 - * * @param id 用户ID * @return 用户信息VO对象 */ diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysAreaService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysAreaService.java index f99400c38..1d1b8a8bc 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysAreaService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysAreaService.java @@ -25,4 +25,5 @@ public interface SysAreaService extends IService { * @return Page */ Page selectPage(Page page, SysAreaEntity sysArea); + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysFileService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysFileService.java index aded55512..6af8fab37 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysFileService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysFileService.java @@ -38,12 +38,11 @@ public interface SysFileService extends IService { /** * 上传文件 - * - * @param file 文件流 + * @param file 文件流 * @param fileName 文件名 - * @param dir 存储目录 - * @param groupId 文件分组ID - * @param type 文件类型 + * @param dir 存储目录 + * @param groupId 文件分组ID + * @param type 文件类型 * @return 上传结果 */ R uploadFile(MultipartFile file, String fileName, String dir, Long groupId, String type); @@ -57,7 +56,6 @@ public interface SysFileService extends IService { /** * 根据文件ID删除文件 - * * @param id 文件ID * @return 删除是否成功 */ diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysMessageService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysMessageService.java index 1be098fde..400acd4ff 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysMessageService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysMessageService.java @@ -37,7 +37,6 @@ public interface SysMessageService extends IService { /** * 读取信息 - * * @param id id * @return true/false */ @@ -45,7 +44,6 @@ public interface SysMessageService extends IService { /** * 获取信息 - * * @param id id * @return messageVO */ @@ -63,7 +61,6 @@ public interface SysMessageService extends IService { /** * 发送手机验证码 - * * @param mobile mobile * @return code */ @@ -71,7 +68,6 @@ public interface SysMessageService extends IService { /** * 发送短信 - * * @param messageSmsDTO 消息 短信 DTO * @return {@link R } */ @@ -79,7 +75,6 @@ public interface SysMessageService extends IService { /** * 发送邮件 - * * @param messageEmailDTO 留言内容 电子邮件 DTO * @return {@link R } */ @@ -87,7 +82,6 @@ public interface SysMessageService extends IService { /** * 发送钩子消息 - * * @param messageHookDTO 消息挂钩 DTO * @return {@link R } */ @@ -95,9 +89,9 @@ public interface SysMessageService extends IService { /** * 列出 Hook 业务代码 - * * @param messageHookDTO 消息钩子 DTO - * @return {@link R } - */ - R listHookBizCode(MessageHookDTO messageHookDTO); + * @return {@link R } + */ + R listHookBizCode(MessageHookDTO messageHookDTO); + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysRouteConfService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysRouteConfService.java index b921aa018..42156b8cc 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysRouteConfService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysRouteConfService.java @@ -39,9 +39,9 @@ public interface SysRouteConfService extends IService { /** * 保存路由 - * * @param routeConf 路由配置 * @return {@link SysRouteConf } */ SysRouteConf saveRoute(SysRouteConf routeConf); + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysSensitiveWordService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysSensitiveWordService.java index b2c64af93..574f2bd71 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysSensitiveWordService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysSensitiveWordService.java @@ -9,6 +9,7 @@ public interface SysSensitiveWordService extends IService { UserInfo getUserInfo(String inStr); List selectList(); + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysSystemConfigService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysSystemConfigService.java index ae8d6c038..e66f6d43d 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysSystemConfigService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysSystemConfigService.java @@ -37,4 +37,5 @@ public interface SysSystemConfigService extends IService * @return {@link R } */ R updateSystemConfig(SysSystemConfigEntity sysSystemConfig); + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysTenantService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysTenantService.java index e3ba0c812..4d0c0fea4 100755 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysTenantService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysTenantService.java @@ -37,39 +37,35 @@ import java.util.Map; public interface SysTenantService extends IService { /** - * 获取正常的租户列表 - * - * @return 正常的租户列表 + * 获取正常的租户列表 + * @return 正常的租户列表 */ List getNormalTenant(); /** - * 保存租户信息 - * - * @param sysTenant 租户信息对象 - * @return 保存是否成功 + * 保存租户信息 + * @param sysTenant 租户信息对象 + * @return 保存是否成功 */ Boolean saveTenant(SysTenant sysTenant); /** - * 修改租户信息 - * - * @param sysTenant 租户信息对象 - * @return 修改是否成功 + * 修改租户信息 + * @param sysTenant 租户信息对象 + * @return 修改是否成功 */ Boolean updateTenant(SysTenant sysTenant); - /** - * 获取用户所属租户列表 - * - * @return 用户所属租户列表 - */ - List getUserTenant(); + /** + * 获取用户所属租户列表 + * + * @return 用户所属租户列表 + */ + List getUserTenant(); /** * 获取用户租户分页信息 - * - * @param page 分页参数 + * @param page 分页参数 * @param userDTO 用户信息 * @return 用户租户分页结果 */ @@ -77,7 +73,6 @@ public interface SysTenantService extends IService { /** * 移除租户用户 - * * @param tenantUserDTO 租户用户信息 * @return 是否移除成功 */ @@ -85,7 +80,6 @@ public interface SysTenantService extends IService { /** * 根据用户信息查询租户用户列表 - * * @param userDTO 用户信息传输对象 * @return 租户用户列表 */ @@ -93,7 +87,6 @@ public interface SysTenantService extends IService { /** * 保存租户用户信息 - * * @param tenantUserDTO 租户用户信息DTO * @return 保存是否成功 */ @@ -101,7 +94,6 @@ public interface SysTenantService extends IService { /** * 获取租户角色列表 - * * @param userDTO 用户信息 * @return 租户角色列表 */ @@ -109,7 +101,6 @@ public interface SysTenantService extends IService { /** * 移除租户 - * * @param ids 租户ID列表 * @return 是否移除成功 */ @@ -117,7 +108,6 @@ public interface SysTenantService extends IService { /** * 更新用户租户信息 - * * @param userDto 用户数据传输对象 * @return 更新结果 */ @@ -127,4 +117,5 @@ public interface SysTenantService extends IService { * 检查或更新租户信息 */ Long getOrUpdateTenant(); + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserService.java index 6581bd5e3..065237fbc 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserService.java @@ -39,161 +39,147 @@ import java.util.List; */ public interface SysUserService extends IService { - /** - * 查询用户信息 - * - * @param userDTO 用户数据传输对象 - * @return 用户信息对象 - */ - R getUserInfo(UserDTO userDTO); + /** + * 查询用户信息 + * + * @param userDTO 用户数据传输对象 + * @return 用户信息对象 + */ + R getUserInfo(UserDTO userDTO); - /** - * 分页查询用户信息(含有角色信息) - * - * @param page 分页对象 - * @param userDTO 参数列表 - * @return - */ - IPage getUsersWithRolePage(Page page, UserDTO userDTO); + /** + * 分页查询用户信息(含有角色信息) + * + * @param page 分页对象 + * @param userDTO 参数列表 + * @return + */ + IPage getUsersWithRolePage(Page page, UserDTO userDTO); - /** - * 删除用户 - * - * @param ids 用户 - * @return boolean - */ - Boolean deleteUserByIds(Long[] ids); + /** + * 删除用户 + * @param ids 用户 + * @return boolean + */ + Boolean deleteUserByIds(Long[] ids); - /** - * 更新当前用户基本信息 - * - * @param userDto 用户信息 - * @return Boolean - */ - R updateUserInfo(UserDTO userDto); + /** + * 更新当前用户基本信息 + * + * @param userDto 用户信息 + * @return Boolean + */ + R updateUserInfo(UserDTO userDto); - /** - * 更新指定用户信息 - * - * @param userDto 用户信息 - * @return - */ - Boolean updateUser(UserDTO userDto); + /** + * 更新指定用户信息 + * @param userDto 用户信息 + * @return + */ + Boolean updateUser(UserDTO userDto); - /** - * 通过ID查询用户信息 - * - * @param id 用户ID - * @return 用户信息 - */ - UserVO selectUserVoById(Long id); + /** + * 通过ID查询用户信息 + * @param id 用户ID + * @return 用户信息 + */ + UserVO selectUserVoById(Long id); - /** - * 查询上级部门的用户信息 - * - * @param username 用户名 - * @return R - */ - List listAncestorUsers(String username); + /** + * 查询上级部门的用户信息 + * @param username 用户名 + * @return R + */ + List listAncestorUsers(String username); - /** - * 保存用户信息 - * - * @param userDto DTO 对象 - * @return success/fail - */ - Boolean saveUser(UserDTO userDto); + /** + * 保存用户信息 + * @param userDto DTO 对象 + * @return success/fail + */ + Boolean saveUser(UserDTO userDto); - /** - * 查询全部的用户 - * - * @param userDTO 查询条件 - * @param ids 目标列表 - * @return list - */ - List listUser(UserDTO userDTO, Long[] ids); + /** + * 查询全部的用户 + * @param userDTO 查询条件 + * @param ids 目标列表 + * @return list + */ + List listUser(UserDTO userDTO, Long[] ids); - /** - * excel 导入用户 - * - * @param excelVOList excel 列表数据 - * @param bindingResult 错误数据 - * @return ok fail - */ - R importUser(List excelVOList, BindingResult bindingResult); + /** + * excel 导入用户 + * + * @param excelVOList excel 列表数据 + * @param bindingResult 错误数据 + * @return ok fail + */ + R importUser(List excelVOList, BindingResult bindingResult); - /** - * 注册用户 - * - * @param userDto 用户信息 - * @return success/false - */ - R registerUser(RegisterUserDTO userDto); + /** + * 注册用户 + * @param userDto 用户信息 + * @return success/false + */ + R registerUser(RegisterUserDTO userDto); - /** - * 锁定用户 - * - * @param username 用户名 - * @return R - */ - R lockUser(String username); + /** + * 锁定用户 + * @param username 用户名 + * @return R + */ + R lockUser(String username); - /** - * 修改密码 - * - * @param userDto 用户信息 - * @return - */ - R changePassword(UserDTO userDto); + /** + * 修改密码 + * @param userDto 用户信息 + * @return + */ + R changePassword(UserDTO userDto); - /** - * 解绑社交登录 - * - * @param type 社交登录类型 - * @return R - */ - R unbinding(String type); + /** + * 解绑社交登录 + * + * @param type 社交登录类型 + * @return R + */ + R unbinding(String type); - /** - * 校验密码 - * - * @param username 用户名 - * @param password 密码 - * @return R - */ - R checkPassword(String username, String password); + /** + * 校验密码 + * @param username 用户名 + * @param password 密码 + * @return R + */ + R checkPassword(String username, String password); - /** - * 根据角色ID列表获取用户ID列表接口 - * - * @param roleIdList 角色ID列表 - * @return List 返回结果对象,包含根据角色ID列表获取到的用户ID列表信息 - */ - List listUserIdByRoleIds(List roleIdList); + /** + * 根据角色ID列表获取用户ID列表接口 + * @param roleIdList 角色ID列表 + * @return List 返回结果对象,包含根据角色ID列表获取到的用户ID列表信息 + */ + List listUserIdByRoleIds(List roleIdList); - /** - * 根据部门ID列表获取用户ID列表接口 - * - * @param deptIdList 部门ID列表 - * @return List 返回结果对象,包含根据部门ID列表获取到的用户ID列表信息 - */ - List listUserIdByDeptIds(List deptIdList); + /** + * 根据部门ID列表获取用户ID列表接口 + * @param deptIdList 部门ID列表 + * @return List 返回结果对象,包含根据部门ID列表获取到的用户ID列表信息 + */ + List listUserIdByDeptIds(List deptIdList); - /** - * 重置用户密码 - * - * @param userDto 用户信息 - * @return - */ - R resetUserPassword(RegisterUserDTO userDto); + /** + * 重置用户密码 + * @param userDto 用户信息 + * @return + */ + R resetUserPassword(RegisterUserDTO userDto); - /** - * 找回用户密码 - * - * @param userDto 用户信息 - * @param code 验证码 - * @return - */ - R forgetUserPassword(RegisterUserDTO userDto, String code); + /** + * 找回用户密码 + * @param userDto 用户信息 + * @param code 验证码 + * @return + */ + R forgetUserPassword(RegisterUserDTO userDto, String code); } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysAreaServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysAreaServiceImpl.java index fe93e5eff..a50432004 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysAreaServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysAreaServiceImpl.java @@ -29,6 +29,7 @@ import java.util.Optional; */ @Service public class SysAreaServiceImpl extends ServiceImpl implements SysAreaService { + /** * 查询行政区划树 * @@ -38,13 +39,13 @@ public class SysAreaServiceImpl extends ServiceImpl> selectTree(SysAreaEntity sysArea) { List entityList = baseMapper.selectList(Wrappers.lambdaQuery(sysArea) - .eq(SysAreaEntity::getAreaStatus, YesNoEnum.YES.getCode()) + .eq(SysAreaEntity::getAreaStatus, YesNoEnum.YES.getCode()) .orderByDesc(SysAreaEntity::getAreaSort)); List> nodeList = CollUtil.newArrayList(); for (SysAreaEntity sysAreaEntity : entityList) { - TreeNode treeNode = new TreeNode<>(sysAreaEntity.getAdcode(), sysAreaEntity.getPid() - , sysAreaEntity.getName(), -Optional.ofNullable(sysAreaEntity.getAreaSort()).orElse(0L)); + TreeNode treeNode = new TreeNode<>(sysAreaEntity.getAdcode(), sysAreaEntity.getPid(), + sysAreaEntity.getName(), -Optional.ofNullable(sysAreaEntity.getAreaSort()).orElse(0L)); HashMap extraMap = MapUtil.of(SysAreaEntity.Fields.adcode, sysAreaEntity.getAdcode()); extraMap.put(SysAreaEntity.Fields.hot, sysAreaEntity.getHot()); @@ -70,5 +71,6 @@ public class SysAreaServiceImpl extends ServiceImpl impl /** * 删除部门 - * * @param id 部门 ID * @return 成功、失败 */ @@ -90,7 +89,6 @@ public class SysDeptServiceImpl extends ServiceImpl impl /** * 查询全部部门树 - * * @param deptName * @param parentId * @return 树 部门名称 @@ -99,33 +97,33 @@ public class SysDeptServiceImpl extends ServiceImpl impl public List> selectTree(String deptName, Long parentId) { // 查询全部部门 List deptAllList = deptMapper - .selectList(Wrappers.lambdaQuery().like(StrUtil.isNotBlank(deptName), SysDept::getName, deptName)); + .selectList(Wrappers.lambdaQuery().like(StrUtil.isNotBlank(deptName), SysDept::getName, deptName)); // 查询数据权限内部门 List deptOwnIdList = deptMapper - .selectListByScope( - Wrappers.lambdaQuery().like(StrUtil.isNotBlank(deptName), SysDept::getName, deptName), - DataScope.of()) - .stream() - .map(SysDept::getDeptId) - .toList(); + .selectListByScope( + Wrappers.lambdaQuery().like(StrUtil.isNotBlank(deptName), SysDept::getName, deptName), + DataScope.of()) + .stream() + .map(SysDept::getDeptId) + .toList(); // 权限内部门 List> collect = deptAllList.stream() - .filter(dept -> dept.getDeptId().intValue() != dept.getParentId()) - .sorted(Comparator.comparingInt(SysDept::getSortOrder)) - .map(dept -> { - TreeNode treeNode = new TreeNode<>(); - treeNode.setId(dept.getDeptId()); - treeNode.setParentId(dept.getParentId()); - treeNode.setName(dept.getName()); - treeNode.setWeight(dept.getSortOrder()); - // 有权限不返回标识 - Map extra = new HashMap<>(8); - extra.put("isLock", !deptOwnIdList.contains(dept.getDeptId())); - extra.put("createTime", dept.getCreateTime()); - treeNode.setExtra(extra); - return treeNode; - }) + .filter(dept -> dept.getDeptId().intValue() != dept.getParentId()) + .sorted(Comparator.comparingInt(SysDept::getSortOrder)) + .map(dept -> { + TreeNode treeNode = new TreeNode<>(); + treeNode.setId(dept.getDeptId()); + treeNode.setParentId(dept.getParentId()); + treeNode.setName(dept.getName()); + treeNode.setWeight(dept.getSortOrder()); + // 有权限不返回标识 + Map extra = new HashMap<>(8); + extra.put("isLock", !deptOwnIdList.contains(dept.getDeptId())); + extra.put("createTime", dept.getCreateTime()); + treeNode.setExtra(extra); + return treeNode; + }) .toList(); // 模糊查询 不组装树结构 直接返回 表格方便编辑 @@ -143,7 +141,6 @@ public class SysDeptServiceImpl extends ServiceImpl impl /** * 导出部门 - * * @return */ @Override @@ -153,10 +150,10 @@ public class SysDeptServiceImpl extends ServiceImpl impl DeptExcelVO deptExcelVo = new DeptExcelVO(); deptExcelVo.setName(item.getName()); Optional first = this.list() - .stream() - .filter(it -> item.getParentId().equals(it.getDeptId())) - .map(SysDept::getName) - .findFirst(); + .stream() + .filter(it -> item.getParentId().equals(it.getDeptId())) + .map(SysDept::getName) + .findFirst(); deptExcelVo.setParentName(first.orElse("根部门")); deptExcelVo.setSortOrder(item.getSortOrder()); return deptExcelVo; @@ -189,7 +186,7 @@ public class SysDeptServiceImpl extends ServiceImpl impl sysDept.setParentId(one.getDeptId()); sysDept.setSortOrder(item.getSortOrder()); baseMapper.insert(sysDept); - } else { + } else { // 数据不合法情况 errorMessageList.add(new ErrorMessage(item.getLineNum(), errorMsg)); } @@ -202,7 +199,6 @@ public class SysDeptServiceImpl extends ServiceImpl impl /** * 查询所有子节点 (包含当前节点) - * * @param deptId 部门ID 目标部门ID * @return ID */ @@ -224,37 +220,36 @@ public class SysDeptServiceImpl extends ServiceImpl impl * 获取部门负责人 *

* 1. 根据dept 查询用户 2. 筛选用户列表中 post - * * @param deptId deptId * @return user id list */ @Override public List listDeptLeader(Long deptId) { - List userDeptList = userDeptMapper.selectList(Wrappers.lambdaQuery().eq(SysUserDept::getDeptId, deptId)); + List userDeptList = userDeptMapper + .selectList(Wrappers.lambdaQuery().eq(SysUserDept::getDeptId, deptId)); if (CollUtil.isEmpty(userDeptList)) { return null; } SysPost deptLeader = postMapper - .selectOne(Wrappers.lambdaQuery().eq(SysPost::getPostCode, PostCodeEnum.TEAM_LEADER.getCode())); + .selectOne(Wrappers.lambdaQuery().eq(SysPost::getPostCode, PostCodeEnum.TEAM_LEADER.getCode())); if (deptLeader == null) { return null; } List userIdList = userDeptList.stream().map(SysUserDept::getUserId).toList(); return userPostMapper.selectList(Wrappers.lambdaQuery().in(SysUserPost::getUserId, userIdList)) - .stream() - .filter(post -> Objects.equals(post.getPostId(), deptLeader.getPostId())) - .map(SysUserPost::getUserId) - .toList(); + .stream() + .filter(post -> Objects.equals(post.getPostId(), deptLeader.getPostId())) + .map(SysUserPost::getUserId) + .toList(); } /** * 根据父部门ID和类型获取组织树 - * * @param parentDeptId 父部门ID - * @param type 类型 + * @param type 类型 * @return 组织树信息 */ public Map listOrgTree(Long parentDeptId, String type) { @@ -275,15 +270,15 @@ public class SysDeptServiceImpl extends ServiceImpl impl }); return Dict.create() - .set("roleList", orgs) - .set("childDepartments", orgs) - .set("employees", new ArrayList<>()); + .set("roleList", orgs) + .set("childDepartments", orgs) + .set("employees", new ArrayList<>()); } Dict dict = Dict.create() - .set("titleDepartments", new ArrayList<>()) - .set("roleList", new ArrayList<>()) - .set("employees", new ArrayList<>()); + .set("titleDepartments", new ArrayList<>()) + .set("roleList", new ArrayList<>()) + .set("employees", new ArrayList<>()); List deptList = this.list( Wrappers.lambdaQuery().eq(Objects.nonNull(parentDeptId), SysDept::getParentId, parentDeptId)); @@ -306,8 +301,8 @@ public class SysDeptServiceImpl extends ServiceImpl impl MPJLambdaWrapper userQuery = new MPJLambdaWrapper<>(); userQuery.selectAll(SysUser.class) - .leftJoin(SysUserDept.class, SysUserDept::getUserId, SysUser::getUserId) - .eq(SysUserDept::getDeptId, parentDeptId); + .leftJoin(SysUserDept.class, SysUserDept::getUserId, SysUser::getUserId) + .eq(SysUserDept::getDeptId, parentDeptId); List userList = userMapper.selectJoinList(userQuery); @@ -334,30 +329,28 @@ public class SysDeptServiceImpl extends ServiceImpl impl /** * 模糊搜索用户 - * * @param username 用户名/拼音/首字母 * @return 匹配到的用户 */ public List getOrgTreeUser(String username) { return userMapper.selectList(Wrappers.lambdaQuery().like(SysUser::getUsername, username)) - .stream() - .map(user -> { - OrgTreeVO orgTreeVo = new OrgTreeVO(); - orgTreeVo.setId(user.getUserId()); - orgTreeVo.setName(user.getUsername()); - orgTreeVo.setType(OrgTypeEnum.USER.getType()); - orgTreeVo.setSelected(false); - orgTreeVo.setAvatar(user.getAvatar()); - return orgTreeVo; - }) + .stream() + .map(user -> { + OrgTreeVO orgTreeVo = new OrgTreeVO(); + orgTreeVo.setId(user.getUserId()); + orgTreeVo.setName(user.getUsername()); + orgTreeVo.setType(OrgTypeEnum.USER.getType()); + orgTreeVo.setSelected(false); + orgTreeVo.setAvatar(user.getAvatar()); + return orgTreeVo; + }) .toList(); } /** * 递归查询所有子节点。 - * * @param allDeptList 所有部门列表 - * @param parentId 父部门ID + * @param parentId 父部门ID * @param resDeptList 结果集合 */ private void recursiveDept(List allDeptList, Long parentId, List resDeptList) { diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java index 7ed733d1a..719aae494 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java @@ -123,7 +123,8 @@ public class SysFileServiceImpl extends ServiceImpl impl fileName = urlFileName; } - SysFile sysFile = baseMapper.selectOne(Wrappers.lambdaQuery().eq(SysFile::getFileName, fileName), false); + SysFile sysFile = baseMapper.selectOne(Wrappers.lambdaQuery().eq(SysFile::getFileName, fileName), + false); if (Objects.isNull(sysFile)) { log.warn("文件不存在: {}", fileName); return; @@ -133,7 +134,8 @@ public class SysFileServiceImpl extends ServiceImpl impl response.setContentType("application/octet-stream; charset=UTF-8"); // 文件唯一hash response.addHeader(SysFile.Fields.hash, sysFile.getHash()); - response.addHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + URLUtil.encode(sysFile.getOriginal())); + response.addHeader(HttpHeaders.CONTENT_DISPOSITION, + "attachment; filename=" + URLUtil.encode(sysFile.getOriginal())); IoUtil.copy(s3Object.getObjectContent(), response.getOutputStream()); } catch (Exception e) { log.error("文件读取异常: {}", e.getLocalizedMessage()); @@ -227,7 +229,8 @@ public class SysFileServiceImpl extends ServiceImpl impl file.setGroupId(fileGroupDTO.getGroupId()); // 根据IDS更新对应的SysFile记录 - baseMapper.update(file, Wrappers.lambdaQuery().in(SysFile::getId, CollUtil.toList(fileGroupDTO.getIds()))); + baseMapper.update(file, + Wrappers.lambdaQuery().in(SysFile::getId, CollUtil.toList(fileGroupDTO.getIds()))); return Boolean.TRUE; } @@ -259,12 +262,12 @@ public class SysFileServiceImpl extends ServiceImpl impl sysFile.setOriginal(originalFilename); sysFile.setFileSize(file.getSize()); sysFile.setBucketName(properties.getBucketName()); - sysFile.setType(type); - sysFile.setGroupId(groupId); + sysFile.setType(type); + sysFile.setGroupId(groupId); - sysFile.setHash(SecureUtil.md5(file.getInputStream())); - // 调用save方法保存SysFile对象 - this.save(sysFile); - } + sysFile.setHash(SecureUtil.md5(file.getInputStream())); + // 调用save方法保存SysFile对象 + this.save(sysFile); + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysLogServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysLogServiceImpl.java index e981eff14..e220383bc 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysLogServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysLogServiceImpl.java @@ -131,10 +131,12 @@ public class SysLogServiceImpl extends ServiceImpl impleme return sysLogList.stream() // 按照日期进行分组 .collect(Collectors.groupingBy(log -> DateUtil.format(log.getCreateTime(), DatePattern.NORM_DATE_PATTERN))) - .entrySet().stream() + .entrySet() + .stream() // 将每个日期对应的日志按日志类型分组,并计算每种类型的日志数量 .map(entry -> { - Map map = entry.getValue().stream() + Map map = entry.getValue() + .stream() .collect(Collectors.groupingBy(SysLog::getLogType, Collectors.collectingAndThen(Collectors.counting(), Long::intValue))); map.put(SysLog.Fields.createTime, entry.getKey()); @@ -142,7 +144,7 @@ public class SysLogServiceImpl extends ServiceImpl impleme }) // 按createTime升序排序 .sorted(Comparator.comparing(map -> map.get(SysLog.Fields.createTime).toString())) - .toList(); - } + .toList(); + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMenuServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMenuServiceImpl.java index 299953c15..4c6cb0064 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMenuServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMenuServiceImpl.java @@ -109,7 +109,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl List> collect = baseMapper .selectList(Wrappers.lambdaQuery() - .eq(Objects.nonNull(parentId),SysMenu::getParentId, parentId) + .eq(Objects.nonNull(parentId), SysMenu::getParentId, parentId) .like(StrUtil.isNotBlank(menuName), SysMenu::getName, menuName) .eq(StrUtil.isNotBlank(type), SysMenu::getMenuType, type) .orderByAsc(SysMenu::getSortOrder)) diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMessageServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMessageServiceImpl.java index 604ae0d14..a0bc73d15 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMessageServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMessageServiceImpl.java @@ -86,7 +86,6 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; - /** * 站内信息 * @@ -96,12 +95,15 @@ import java.util.Objects; @Slf4j @Service @RequiredArgsConstructor -public class SysMessageServiceImpl extends ServiceImpl implements SysMessageService { +public class SysMessageServiceImpl extends ServiceImpl + implements SysMessageService { /** * 支持短信服务商 */ - private static final Class[] SUPPORT_CONFIG_CLAZZ = {AlibabaConfig.class, CloopenConfig.class, CtyunConfig.class, EmayConfig.class, HuaweiConfig.class, JdCloudConfig.class, NeteaseConfig.class, TencentConfig.class, UniConfig.class, YunpianConfig.class, ZhutongConfig.class, DingZhongConfig.class, QiNiuConfig.class}; + private static final Class[] SUPPORT_CONFIG_CLAZZ = {AlibabaConfig.class, CloopenConfig.class, CtyunConfig.class, + EmayConfig.class, HuaweiConfig.class, JdCloudConfig.class, NeteaseConfig.class, TencentConfig.class, + UniConfig.class, YunpianConfig.class, ZhutongConfig.class, DingZhongConfig.class, QiNiuConfig.class}; private final RemoteLogService remoteLogService; @@ -149,7 +151,8 @@ public class SysMessageServiceImpl extends ServiceImpllambdaQuery().eq(SysMessageRelationEntity::getMsgId, messageEntity.getId())); + relationMapper.delete(Wrappers.lambdaQuery() + .eq(SysMessageRelationEntity::getMsgId, messageEntity.getId())); List userList = sysMessage.getUserList(); if (CollUtil.isNotEmpty(userList)) { @@ -177,7 +180,17 @@ public class SysMessageServiceImpl extends ServiceImpl pageUserMessage(Page page, SysMessageVO sysMessage) { - MPJLambdaWrapper wrapper = new MPJLambdaWrapper().selectAll(SysMessageEntity.class).select(SysMessageRelationEntity::getReadFlag).leftJoin(SysMessageRelationEntity.class, SysMessageRelationEntity::getMsgId, SysMessageEntity::getId).eq(SysMessageRelationEntity::getUserId, SecurityUtils.getUser().getId()).eq(SysMessageEntity::getSendFlag, YesNoEnum.YES.getCode()).eq(StrUtil.isNotBlank(sysMessage.getCategory()), SysMessageEntity::getCategory, sysMessage.getCategory()).eq(StrUtil.isNotBlank(sysMessage.getReadFlag()), SysMessageRelationEntity::getReadFlag, sysMessage.getReadFlag()).orderByDesc(SysMessageEntity::getSort).orderByDesc(SysMessageEntity::getCreateTime); + MPJLambdaWrapper wrapper = new MPJLambdaWrapper() + .selectAll(SysMessageEntity.class) + .select(SysMessageRelationEntity::getReadFlag) + .leftJoin(SysMessageRelationEntity.class, SysMessageRelationEntity::getMsgId, SysMessageEntity::getId) + .eq(SysMessageRelationEntity::getUserId, SecurityUtils.getUser().getId()) + .eq(SysMessageEntity::getSendFlag, YesNoEnum.YES.getCode()) + .eq(StrUtil.isNotBlank(sysMessage.getCategory()), SysMessageEntity::getCategory, sysMessage.getCategory()) + .eq(StrUtil.isNotBlank(sysMessage.getReadFlag()), SysMessageRelationEntity::getReadFlag, + sysMessage.getReadFlag()) + .orderByDesc(SysMessageEntity::getSort) + .orderByDesc(SysMessageEntity::getCreateTime); return baseMapper.selectJoinPage(page, SysMessageVO.class, wrapper); } @@ -191,7 +204,10 @@ public class SysMessageServiceImpl extends ServiceImpllambdaQuery().eq(SysMessageRelationEntity::getMsgId, id).eq(SysMessageRelationEntity::getUserId, SecurityUtils.getUser().getId())); + relationMapper.update(relationEntity, + Wrappers.lambdaQuery() + .eq(SysMessageRelationEntity::getMsgId, id) + .eq(SysMessageRelationEntity::getUserId, SecurityUtils.getUser().getId())); return Boolean.TRUE; } @@ -211,7 +227,11 @@ public class SysMessageServiceImpl extends ServiceImpl userIdList = relationMapper.selectList(Wrappers.lambdaQuery().eq(SysMessageRelationEntity::getMsgId, id)).stream().map(SysMessageRelationEntity::getUserId).toList(); + List userIdList = relationMapper + .selectList(Wrappers.lambdaQuery().eq(SysMessageRelationEntity::getMsgId, id)) + .stream() + .map(SysMessageRelationEntity::getUserId) + .toList(); if (CollUtil.isNotEmpty(userIdList)) { List orgNodeUserVoList = userMapper.selectByIds(userIdList).stream().map(user -> { @@ -238,7 +258,14 @@ public class SysMessageServiceImpl extends ServiceImpl wrapper = new MPJLambdaWrapper().selectAll(SysMessageRelationEntity.class).select(SysUser::getUsername, SysUser::getName, SysUser::getUserId).select(SysMessageEntity::getTitle).leftJoin(SysUser.class, SysUser::getUserId, SysMessageRelationEntity::getUserId).leftJoin(SysMessageEntity.class, SysMessageEntity::getId, SysMessageRelationEntity::getMsgId).eq(SysMessageRelationEntity::getMsgId, messageId).like(StrUtil.isNotBlank(name), SysUser::getName, name); + MPJLambdaWrapper wrapper = new MPJLambdaWrapper() + .selectAll(SysMessageRelationEntity.class) + .select(SysUser::getUsername, SysUser::getName, SysUser::getUserId) + .select(SysMessageEntity::getTitle) + .leftJoin(SysUser.class, SysUser::getUserId, SysMessageRelationEntity::getUserId) + .leftJoin(SysMessageEntity.class, SysMessageEntity::getId, SysMessageRelationEntity::getMsgId) + .eq(SysMessageRelationEntity::getMsgId, messageId) + .like(StrUtil.isNotBlank(name), SysUser::getName, name); return relationMapper.selectJoinPage(page, SysMessageReadVO.class, wrapper); } @@ -250,14 +277,16 @@ public class SysMessageServiceImpl extends ServiceImpl sendSmsCode(String mobile) { - List userList = userMapper.selectList(Wrappers.query().lambda().eq(SysUser::getPhone, mobile)); + List userList = userMapper + .selectList(Wrappers.query().lambda().eq(SysUser::getPhone, mobile)); if (CollUtil.isEmpty(userList)) { log.info("手机号未注册:{}", mobile); return R.ok(Boolean.FALSE, MsgUtils.getMessage(ErrorCodes.SYS_APP_PHONE_UNREGISTERED, mobile)); } - String codeObj = RedisUtils.get(CacheConstants.DEFAULT_CODE_KEY + LoginTypeEnum.SMS.getType() + StringPool.AT + mobile); + String codeObj = RedisUtils + .get(CacheConstants.DEFAULT_CODE_KEY + LoginTypeEnum.SMS.getType() + StringPool.AT + mobile); if (StrUtil.isNotBlank(codeObj)) { log.info("手机号验证码未过期:{},{}", mobile, codeObj); @@ -266,10 +295,15 @@ public class SysMessageServiceImpl extends ServiceImpl configEntityList = sysSystemConfigMapper.selectList(Wrappers.lambdaQuery().eq(SysSystemConfigEntity::getConfigType, SystemConfigTypeEnum.SMS.getValue()).eq(SysSystemConfigEntity::getConfigStatus, YesNoEnum.YES.getCode()).eq(SysSystemConfigEntity::getConfigKey, messageSmsDTO.getBizCode())); + List configEntityList = sysSystemConfigMapper + .selectList(Wrappers.lambdaQuery() + .eq(SysSystemConfigEntity::getConfigType, SystemConfigTypeEnum.SMS.getValue()) + .eq(SysSystemConfigEntity::getConfigStatus, YesNoEnum.YES.getCode()) + .eq(SysSystemConfigEntity::getConfigKey, messageSmsDTO.getBizCode())); if (CollUtil.isEmpty(configEntityList)) { return R.failed("发送失败,短信通道配置不存在"); } @@ -293,7 +331,12 @@ public class SysMessageServiceImpl extends ServiceImpl config.getSimpleName().toLowerCase().contains(configMap.getStr(MessageSmsDTO.Fields.supplier))).findFirst().orElseThrow(() -> new CheckedException("发送失败,短信通道配置不存在")); + Class targetClass = Arrays.stream(SUPPORT_CONFIG_CLAZZ) + .filter(config -> config.getSimpleName() + .toLowerCase() + .contains(configMap.getStr(MessageSmsDTO.Fields.supplier))) + .findFirst() + .orElseThrow(() -> new CheckedException("发送失败,短信通道配置不存在")); BaseConfig baseConfig = (BaseConfig) JSONUtil.toBean(configEntity.getConfigValue(), targetClass); // 如果渠道扩展参数不为空则增加特性化参数 @@ -312,16 +355,17 @@ public class SysMessageServiceImpl extends ServiceImpl { - log.info("发送短信结果:{}", smsResponse); - sysLog.setTitle(String.format("发送短信 %s", mobile)); - sysLog.setLogType(LogTypeEnum.NORMAL.getType()); - sysLog.setServiceId(SystemConfigTypeEnum.SMS.getValue()); - sysLog.setParams(JacksonSensitiveFieldUtil.writeValueAsString(messageSmsDTO)); - sysLog.setTime(System.currentTimeMillis() - start); - sysLog.setException(JacksonSensitiveFieldUtil.writeValueAsString(smsResponse)); - remoteLogService.saveLog(sysLog); - }); + smsBlend.sendMessageAsync(mobile, configMap.getStr(MessageSmsDTO.Fields.templateId), + messageSmsDTO.getParams(), smsResponse -> { + log.info("发送短信结果:{}", smsResponse); + sysLog.setTitle(String.format("发送短信 %s", mobile)); + sysLog.setLogType(LogTypeEnum.NORMAL.getType()); + sysLog.setServiceId(SystemConfigTypeEnum.SMS.getValue()); + sysLog.setParams(JacksonSensitiveFieldUtil.writeValueAsString(messageSmsDTO)); + sysLog.setTime(System.currentTimeMillis() - start); + sysLog.setException(JacksonSensitiveFieldUtil.writeValueAsString(smsResponse)); + remoteLogService.saveLog(sysLog); + }); } return R.ok(); } @@ -336,10 +380,11 @@ public class SysMessageServiceImpl extends ServiceImpl configEntityList = sysSystemConfigMapper.selectList(Wrappers.lambdaQuery() - .eq(SysSystemConfigEntity::getConfigType, SystemConfigTypeEnum.WEBHOOK.getValue()) - .eq(SysSystemConfigEntity::getConfigStatus, YesNoEnum.YES.getCode()) - .eq(SysSystemConfigEntity::getConfigKey, messageHookDTO.getBizCode())); + List configEntityList = sysSystemConfigMapper + .selectList(Wrappers.lambdaQuery() + .eq(SysSystemConfigEntity::getConfigType, SystemConfigTypeEnum.WEBHOOK.getValue()) + .eq(SysSystemConfigEntity::getConfigStatus, YesNoEnum.YES.getCode()) + .eq(SysSystemConfigEntity::getConfigKey, messageHookDTO.getBizCode())); if (CollUtil.isEmpty(configEntityList)) { return R.failed("发送失败,短信通道配置不存在"); } @@ -366,7 +411,6 @@ public class SysMessageServiceImpl extends ServiceImpl { - log.info("发送Hook结果:{}", response); - sysLog.setTitle(String.format("发送Hook %s", messageHookDTO.getBizCode())); - sysLog.setLogType(LogTypeEnum.NORMAL.getType()); - sysLog.setServiceId(SystemConfigTypeEnum.WEBHOOK.getValue()); - sysLog.setParams(JacksonSensitiveFieldUtil.writeValueAsString(messageHookDTO)); - sysLog.setTime(System.currentTimeMillis() - start); - sysLog.setException(JacksonSensitiveFieldUtil.writeValueAsString(response)); - remoteLogService.saveLog(sysLog); - }); + alarm.senderAsync(request, + MessageType.valueOf(String.format("%s_%s", supplier, messageHookDTO.getMessageType()).toUpperCase()), + response -> { + log.info("发送Hook结果:{}", response); + sysLog.setTitle(String.format("发送Hook %s", messageHookDTO.getBizCode())); + sysLog.setLogType(LogTypeEnum.NORMAL.getType()); + sysLog.setServiceId(SystemConfigTypeEnum.WEBHOOK.getValue()); + sysLog.setParams(JacksonSensitiveFieldUtil.writeValueAsString(messageHookDTO)); + sysLog.setTime(System.currentTimeMillis() - start); + sysLog.setException(JacksonSensitiveFieldUtil.writeValueAsString(response)); + remoteLogService.saveLog(sysLog); + }); return R.ok(); } @@ -412,22 +457,23 @@ public class SysMessageServiceImpl extends ServiceImpl configEntityList = sysSystemConfigMapper.selectList(Wrappers.lambdaQuery() - .eq(SysSystemConfigEntity::getConfigType, SystemConfigTypeEnum.EMAIL.getValue()) - .eq(SysSystemConfigEntity::getConfigStatus, YesNoEnum.YES.getCode()). - eq(SysSystemConfigEntity::getConfigKey, messageEmailDTO.getBizCode())); + List configEntityList = sysSystemConfigMapper + .selectList(Wrappers.lambdaQuery() + .eq(SysSystemConfigEntity::getConfigType, SystemConfigTypeEnum.EMAIL.getValue()) + .eq(SysSystemConfigEntity::getConfigStatus, YesNoEnum.YES.getCode()) + .eq(SysSystemConfigEntity::getConfigKey, messageEmailDTO.getBizCode())); if (CollUtil.isEmpty(configEntityList)) { return R.failed("发送失败,通道配置不存在"); } SysSystemConfigEntity configEntity = configEntityList.get(0); JSONObject configMap = JSONUtil.parseObj(configEntity.getConfigValue()); - List tempFileList = new ArrayList<>(); if (CollUtil.isNotEmpty(messageEmailDTO.getAttachmentList())) { TenantContextHolder.setTenantSkip(); for (String fileName : messageEmailDTO.getAttachmentList()) { - SysFile sysFile = fileMapper.selectOne(Wrappers.lambdaQuery().eq(SysFile::getFileName, fileName)); + SysFile sysFile = fileMapper + .selectOne(Wrappers.lambdaQuery().eq(SysFile::getFileName, fileName)); S3Object s3Object = fileTemplate.getObject(sysFile.getBucketName(), sysFile.getDir(), fileName); File file = FileUtil.file(FileUtil.getTmpDirPath(), sysFile.getOriginal()); tempFileList.add(file); @@ -450,10 +496,9 @@ public class SysMessageServiceImpl extends ServiceImpl configEntityList = sysSystemConfigMapper.selectList(Wrappers.lambdaQuery() - .eq(SysSystemConfigEntity::getConfigType, messageHookDTO.getMessageType()) - .eq(SysSystemConfigEntity::getConfigStatus, YesNoEnum.YES.getCode())); - return R.ok(configEntityList); - } + List configEntityList = sysSystemConfigMapper + .selectList(Wrappers.lambdaQuery() + .eq(SysSystemConfigEntity::getConfigType, messageHookDTO.getMessageType()) + .eq(SysSystemConfigEntity::getConfigStatus, YesNoEnum.YES.getCode())); + return R.ok(configEntityList); + } + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleServiceImpl.java index a5e0b352a..0ea273cb3 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleServiceImpl.java @@ -63,7 +63,6 @@ public class SysRoleServiceImpl extends ServiceImpl impl /** * 通过用户ID查询角色信息 - * * @param userId 用户ID * @return 角色信息列表 */ @@ -155,8 +154,8 @@ public class SysRoleServiceImpl extends ServiceImpl impl */ @Override public List listRole(SysRole sysRole, Long[] ids) { - List roleList = this - .list(Wrappers.lambdaQuery(sysRole).in(ArrayUtil.isNotEmpty(ids), SysRole::getRoleId, CollUtil.toList(ids))); + List roleList = this.list( + Wrappers.lambdaQuery(sysRole).in(ArrayUtil.isNotEmpty(ids), SysRole::getRoleId, CollUtil.toList(ids))); // 转换成execl 对象输出 return roleList.stream().map(role -> { RoleExcelVO roleExcelVO = new RoleExcelVO(); diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRouteConfServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRouteConfServiceImpl.java index 92d6e4cea..ead05c659 100755 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRouteConfServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRouteConfServiceImpl.java @@ -141,6 +141,6 @@ public class SysRouteConfServiceImpl extends ServiceImpl getScheduleByScope(Page page, SysScheduleEntity sysSchedule) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); wrapper.like(StrUtil.isNotBlank(sysSchedule.getTitle()), SysScheduleEntity::getTitle, sysSchedule.getTitle()); - wrapper.like(StrUtil.isNotBlank(sysSchedule.getScheduleType()), SysScheduleEntity::getScheduleType, sysSchedule.getScheduleType()); - wrapper.eq(Objects.nonNull(sysSchedule.getScheduleDate()), SysScheduleEntity::getScheduleDate, sysSchedule.getScheduleDate()); + wrapper.like(StrUtil.isNotBlank(sysSchedule.getScheduleType()), SysScheduleEntity::getScheduleType, + sysSchedule.getScheduleType()); + wrapper.eq(Objects.nonNull(sysSchedule.getScheduleDate()), SysScheduleEntity::getScheduleDate, + sysSchedule.getScheduleDate()); DataScope dataScope = new DataScope(); dataScope.setUsername(SecurityUtils.getUser().getUsername()); return baseMapper.selectPageByScope(page, wrapper, dataScope); diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysSensitiveWordServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysSensitiveWordServiceImpl.java index 63bb16a0e..06673adba 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysSensitiveWordServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysSensitiveWordServiceImpl.java @@ -24,7 +24,8 @@ import java.util.List; */ @Service @RequiredArgsConstructor -public class SysSensitiveWordServiceImpl extends ServiceImpl implements SysSensitiveWordService { +public class SysSensitiveWordServiceImpl extends ServiceImpl + implements SysSensitiveWordService { /** * 查询敏感词 @@ -46,8 +47,9 @@ public class SysSensitiveWordServiceImpl extends ServiceImpl wordEntityList = baseMapper.selectList(Wrappers.lambdaQuery(). - eq(SysSensitiveWordEntity::getSensitiveWord, sysSensitiveWord.getSensitiveWord())); + List wordEntityList = baseMapper + .selectList(Wrappers.lambdaQuery() + .eq(SysSensitiveWordEntity::getSensitiveWord, sysSensitiveWord.getSensitiveWord())); if (CollUtil.isEmpty(wordEntityList)) { save(sysSensitiveWord); @@ -61,7 +63,8 @@ public class SysSensitiveWordServiceImpl extends ServiceImpl) connection -> { connection.publish(CacheConstants.SENSITIVE_REDIS_RELOAD_TOPIC.getBytes(), "刷新敏感词缓存".getBytes()); return null; - }); - return Boolean.TRUE; - } + }); + return Boolean.TRUE; + } + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysSocialDetailsServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysSocialDetailsServiceImpl.java index db0aa8531..d6b1b60fd 100755 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysSocialDetailsServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysSocialDetailsServiceImpl.java @@ -57,7 +57,6 @@ public class SysSocialDetailsServiceImpl extends ServiceImpl */ @Override diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysSystemConfigServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysSystemConfigServiceImpl.java index fa032e8af..311430e29 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysSystemConfigServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysSystemConfigServiceImpl.java @@ -33,7 +33,8 @@ import java.util.Objects; * @date 2024/07/18 */ @Service -public class SysSystemConfigServiceImpl extends ServiceImpl implements SysSystemConfigService { +public class SysSystemConfigServiceImpl extends ServiceImpl + implements SysSystemConfigService { private final SysMessageServiceImpl sysMessageServiceImpl; @@ -69,9 +70,10 @@ public class SysSystemConfigServiceImpl extends ServiceImpl wrapper = Wrappers.lambdaQuery(); - wrapper.eq(StrUtil.isNotBlank(sysSystemConfig.getConfigType()), SysSystemConfigEntity::getConfigType, sysSystemConfig.getConfigType()); - wrapper.like(StrUtil.isNotBlank(sysSystemConfig.getConfigName()) - , SysSystemConfigEntity::getConfigName, sysSystemConfig.getConfigName()); + wrapper.eq(StrUtil.isNotBlank(sysSystemConfig.getConfigType()), SysSystemConfigEntity::getConfigType, + sysSystemConfig.getConfigType()); + wrapper.like(StrUtil.isNotBlank(sysSystemConfig.getConfigName()), SysSystemConfigEntity::getConfigName, + sysSystemConfig.getConfigName()); Page pageResult = baseMapper.selectPage(page, wrapper); pageResult.getRecords().forEach(systemConfig -> { if (StrUtil.isNotBlank(systemConfig.getConfigValue())) { @@ -111,8 +113,9 @@ public class SysSystemConfigServiceImpl extends ServiceImpl configs = (Map) configsField.get(null); - configs.clear(); - } - return R.ok(); - } + configs.clear(); + } + return R.ok(); + } + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysTenantServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysTenantServiceImpl.java index fa033957b..2b8aa970b 100755 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysTenantServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysTenantServiceImpl.java @@ -67,484 +67,488 @@ import java.util.*; @AllArgsConstructor public class SysTenantServiceImpl extends ServiceImpl implements SysTenantService { - private final SysOauthClientDetailsService clientServices; + private final SysOauthClientDetailsService clientServices; - private final SysRoleMenuMapper roleMenuMapper; + private final SysRoleMenuMapper roleMenuMapper; - private final SysDictItemService dictItemService; + private final SysDictItemService dictItemService; - private final SysPublicParamService paramService; + private final SysPublicParamService paramService; - private final SysRoleService roleService; + private final SysRoleService roleService; - private final SysMenuService menuService; + private final SysMenuService menuService; - private final SysDeptService deptService; + private final SysDeptService deptService; - private final SysDictService dictService; + private final SysDictService dictService; - private final SysUserMapper sysUserMapper; - private final SysTenantUserMapper sysTenantUserMapper; - private final SysUserPostMapper sysUserPostMapper; - private final SysUserRoleMapper sysUserRoleMapper; - private final SysUserDeptMapper sysUserDeptMapper; - private final SysRoleMapper sysRoleMapper; - private final SysDeptMapper sysDeptMapper; - private final SysPostMapper sysPostMapper; - private final CacheManager cacheManager; + private final SysUserMapper sysUserMapper; - /** - * 获取正常状态租户 - *

- * 1. 状态正常 2. 开始时间小于等于当前时间 3. 结束时间大于等于当前时间 - * - * @return - */ - @Override - @Cacheable(value = CacheConstants.TENANT_DETAILS) - public List getNormalTenant() { - return baseMapper - .selectList(Wrappers.lambdaQuery().eq(SysTenant::getStatus, TenantStateEnum.NORMAL.getCode())); - } + private final SysTenantUserMapper sysTenantUserMapper; - /** - * 保存租户 - *

- * 1. 保存租户 2. 初始化权限相关表 - sys_user - sys_role - sys_menu - sys_user_role - - * sys_role_menu - sys_dict - sys_dict_item - sys_client_details - sys_public_params - * - * @param sysTenant 租户实体 - * @return - */ - @Override - @Transactional(rollbackFor = Exception.class) - @CacheEvict(value = CacheConstants.TENANT_DETAILS) - public Boolean saveTenant(SysTenant sysTenant) { - this.save(sysTenant); - // 查询系统默认租户配置参数 - TenantDefaultConfig tenantDefault = new TenantDefaultConfig(); + private final SysUserPostMapper sysUserPostMapper; - List dictList = new ArrayList<>(32); - List dictIdList = new ArrayList<>(32); - List dictItemList = new ArrayList<>(64); - List menuList = new ArrayList<>(128); - List clientDetailsList = new ArrayList<>(16); - List publicParamList = new ArrayList<>(64); + private final SysUserRoleMapper sysUserRoleMapper; - TenantBroker.runAs(tenantDefault.getTenantDefaultId(), (id) -> { - // 查询系统内置字典 - dictList.addAll(dictService.list()); - // 查询系统内置字典项目 - dictIdList.addAll(dictList.stream().map(SysDict::getId).toList()); - dictItemList.addAll( - dictItemService.list(Wrappers.lambdaQuery().in(SysDictItem::getDictId, dictIdList))); - List newMenuList = menuService.list(Wrappers.lambdaQuery() - .in(SysMenu::getMenuId, StrUtil.split(sysTenant.getMenuId(), CharUtil.COMMA))); - // 查询当前租户菜单 - menuList.addAll(newMenuList); - // 查询客户端配置 - clientDetailsList.addAll(clientServices.list()); - // 查询系统参数配置 - publicParamList.addAll(paramService.list()); - }); + private final SysUserDeptMapper sysUserDeptMapper; - // 保证插入租户为新的租户 - TenantBroker.applyAs(sysTenant.getId(), (id -> { - // 插入部门 - SysDept dept = new SysDept(); - dept.setName(tenantDefault.getTenantDefaultDeptname()); - dept.setParentId(0L); - deptService.save(dept); + private final SysRoleMapper sysRoleMapper; - // 构造普通用户角色 - SysRole roleDefault = new SysRole(); - roleDefault.setRoleCode(tenantDefault.getUserDefaultRolecode()); - roleDefault.setRoleName(tenantDefault.getUserDefaultRolename()); - roleDefault.setDsType(DataScopeTypeEnum.SELF_LEVEL.getType()); - roleService.save(roleDefault); + private final SysDeptMapper sysDeptMapper; - // 构造新角色 管理员角色 - SysRole role = new SysRole(); - role.setRoleCode(tenantDefault.getTenantDefaultRolecode()); - role.setRoleName(tenantDefault.getTenantDefaultRolename()); - role.setDsType(DataScopeTypeEnum.ALL.getType()); - roleService.save(role); - // 插入新的菜单 - saveTenantMenu(menuList, CommonConstants.MENU_TREE_ROOT_ID, CommonConstants.MENU_TREE_ROOT_ID); + private final SysPostMapper sysPostMapper; - // 重新查询出所有的菜单关联角色 - List list = menuService.list(); + private final CacheManager cacheManager; - // 查询全部菜单,构造角色菜单关系 - List roleMenuList = list.stream().map(menu -> { - SysRoleMenu roleMenu = new SysRoleMenu(); - roleMenu.setRoleId(role.getRoleId()); - roleMenu.setMenuId(menu.getMenuId()); - return roleMenu; - }).toList(); - roleMenuList.forEach(roleMenuMapper::insert); - // 插入系统字典 - dictService.saveBatch(dictList.stream().peek(d -> d.setId(null)).toList()); - // 处理字典项最新关联的字典ID - List itemList = dictList.stream() - .flatMap(dict -> dictItemList.stream() - .filter(item -> item.getDictType().equals(dict.getDictType())) - .peek(item -> { - item.setDictId(dict.getId()); - item.setId(null); - })) - .toList(); + /** + * 获取正常状态租户 + *

+ * 1. 状态正常 2. 开始时间小于等于当前时间 3. 结束时间大于等于当前时间 + * + * @return + */ + @Override + @Cacheable(value = CacheConstants.TENANT_DETAILS) + public List getNormalTenant() { + return baseMapper + .selectList(Wrappers.lambdaQuery().eq(SysTenant::getStatus, TenantStateEnum.NORMAL.getCode())); + } - // 插入客户端 - clientServices.saveBatch(clientDetailsList.stream().peek(d -> d.setId(null)).toList()); - // 插入系统配置 - paramService - .saveBatch(publicParamList.stream().peek(d -> d.setPublicId(null)).toList()); - return dictItemService.saveBatch(itemList); - })); + /** + * 保存租户 + *

+ * 1. 保存租户 2. 初始化权限相关表 - sys_user - sys_role - sys_menu - sys_user_role - + * sys_role_menu - sys_dict - sys_dict_item - sys_client_details - sys_public_params + * + * @param sysTenant 租户实体 + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + @CacheEvict(value = CacheConstants.TENANT_DETAILS) + public Boolean saveTenant(SysTenant sysTenant) { + this.save(sysTenant); + // 查询系统默认租户配置参数 + TenantDefaultConfig tenantDefault = new TenantDefaultConfig(); - SpringContextHolder.publishEvent(new ClientDetailsInitRunner.ClientDetailsInitEvent(sysTenant)); + List dictList = new ArrayList<>(32); + List dictIdList = new ArrayList<>(32); + List dictItemList = new ArrayList<>(64); + List menuList = new ArrayList<>(128); + List clientDetailsList = new ArrayList<>(16); + List publicParamList = new ArrayList<>(64); - return Boolean.TRUE; - } + TenantBroker.runAs(tenantDefault.getTenantDefaultId(), (id) -> { + // 查询系统内置字典 + dictList.addAll(dictService.list()); + // 查询系统内置字典项目 + dictIdList.addAll(dictList.stream().map(SysDict::getId).toList()); + dictItemList.addAll( + dictItemService.list(Wrappers.lambdaQuery().in(SysDictItem::getDictId, dictIdList))); + List newMenuList = menuService.list(Wrappers.lambdaQuery() + .in(SysMenu::getMenuId, StrUtil.split(sysTenant.getMenuId(), CharUtil.COMMA))); + // 查询当前租户菜单 + menuList.addAll(newMenuList); + // 查询客户端配置 + clientDetailsList.addAll(clientServices.list()); + // 查询系统参数配置 + publicParamList.addAll(paramService.list()); + }); - /** - * 修改租户 - * - * @param tenantDTO 新旧套餐数据 - * @return true/false - */ - @Override - @Transactional(rollbackFor = Exception.class) - @CacheEvict(value = CacheConstants.TENANT_DETAILS, allEntries = true) - public Boolean updateTenant(SysTenant tenantDTO) { - SysTenant oldTenant = baseMapper.selectById(tenantDTO.getId()); - List newMenuIdList = StrUtil.split(tenantDTO.getMenuId(), CharUtil.COMMA); - List oldMenuIdList = StrUtil.split(oldTenant.getMenuId(), CharUtil.COMMA); + // 保证插入租户为新的租户 + TenantBroker.applyAs(sysTenant.getId(), (id -> { + // 插入部门 + SysDept dept = new SysDept(); + dept.setName(tenantDefault.getTenantDefaultDeptname()); + dept.setParentId(0L); + deptService.save(dept); - // 更新租户信息 - updateById(tenantDTO); + // 构造普通用户角色 + SysRole roleDefault = new SysRole(); + roleDefault.setRoleCode(tenantDefault.getUserDefaultRolecode()); + roleDefault.setRoleName(tenantDefault.getUserDefaultRolename()); + roleDefault.setDsType(DataScopeTypeEnum.SELF_LEVEL.getType()); + roleService.save(roleDefault); - // 如果没有修改租户套餐 - TenantDefaultConfig tenantDefault = new TenantDefaultConfig(); - List sysMenuList = TenantBroker.applyAs(tenantDefault.getTenantDefaultId(), id -> menuService.list()); - if (tenantDefault.getTenantDefaultId().equals(tenantDTO.getId())) { - return Boolean.TRUE; - } + // 构造新角色 管理员角色 + SysRole role = new SysRole(); + role.setRoleCode(tenantDefault.getTenantDefaultRolecode()); + role.setRoleName(tenantDefault.getTenantDefaultRolename()); + role.setDsType(DataScopeTypeEnum.ALL.getType()); + roleService.save(role); + // 插入新的菜单 + saveTenantMenu(menuList, CommonConstants.MENU_TREE_ROOT_ID, CommonConstants.MENU_TREE_ROOT_ID); - // 比较新旧套餐是否一致 - if (CollUtil.isEqualList(newMenuIdList, oldMenuIdList)) { - return Boolean.TRUE; - } + // 重新查询出所有的菜单关联角色 + List list = menuService.list(); - // 0. 计算两个差集,差集表示变化的功能项 - Collection disjunctionList = CollUtil.disjunction(newMenuIdList, oldMenuIdList); - // 1. 如果旧套餐包含差集元素则删除 - CollUtil.intersection(oldMenuIdList, disjunctionList) - .forEach(menuId -> TenantBroker.runAs(tenantDTO.getId(), (tenantId -> { - // 查询租户菜单元信息 - SysMenu menu = CollUtil.findOneByField(sysMenuList, SysMenu.Fields.menuId, Long.parseLong(menuId)); + // 查询全部菜单,构造角色菜单关系 + List roleMenuList = list.stream().map(menu -> { + SysRoleMenu roleMenu = new SysRoleMenu(); + roleMenu.setRoleId(role.getRoleId()); + roleMenu.setMenuId(menu.getMenuId()); + return roleMenu; + }).toList(); + roleMenuList.forEach(roleMenuMapper::insert); + // 插入系统字典 + dictService.saveBatch(dictList.stream().peek(d -> d.setId(null)).toList()); + // 处理字典项最新关联的字典ID + List itemList = dictList.stream() + .flatMap(dict -> dictItemList.stream() + .filter(item -> item.getDictType().equals(dict.getDictType())) + .peek(item -> { + item.setDictId(dict.getId()); + item.setId(null); + })) + .toList(); - // 根据path 或者 permisson 删除目标租户菜单 - menuService.remove(Wrappers.lambdaQuery() - .eq(StrUtil.isNotBlank(menu.getPath()), SysMenu::getPath, menu.getPath()) - .or() - .eq(StrUtil.isNotBlank(menu.getPermission()), SysMenu::getPermission, menu.getPermission())); - }))); + // 插入客户端 + clientServices.saveBatch(clientDetailsList.stream().peek(d -> d.setId(null)).toList()); + // 插入系统配置 + paramService.saveBatch(publicParamList.stream().peek(d -> d.setPublicId(null)).toList()); + return dictItemService.saveBatch(itemList); + })); - // 2. 如果旧套餐不包含差集元素则新增 - List newTenantMenuIdList = CollUtil.subtract(disjunctionList, oldMenuIdList) - .stream() - .map(menuId -> TenantBroker.applyAs(tenantDTO.getId(), (tenantId -> { - // 查询租户菜单元信息 - SysMenu menu = CollUtil.findOneByField(sysMenuList, SysMenu.Fields.menuId, Long.parseLong(menuId)); + SpringContextHolder.publishEvent(new ClientDetailsInitRunner.ClientDetailsInitEvent(sysTenant)); - // 新增租户菜单,但未维护上下级关系 - SysMenu newMenu = new SysMenu(); - BeanUtils.copyProperties(menu, newMenu, SysMenu.Fields.menuId); - menuService.save(newMenu); - return newMenu; - }))) - .toList(); + return Boolean.TRUE; + } - // 3. 更新新增菜单上下级关系 - for (SysMenu tenantMenu : newTenantMenuIdList) { - // 查询租户菜单父元信息 - SysMenu parentMenu = CollUtil.findOneByField(sysMenuList, SysMenu.Fields.menuId, tenantMenu.getParentId()); - // 查询目标租户父菜单元信息 - TenantBroker.runAs(tenantDTO.getId(), tenantId -> { - // 如何菜单父节点是根节点则直接插入,不要查询父节点判断 - if (Objects.equals(tenantMenu.getParentId(), CommonConstants.MENU_TREE_ROOT_ID)) { - menuService.updateById(tenantMenu); - return; - } + /** + * 修改租户 + * + * @param tenantDTO 新旧套餐数据 + * @return true/false + */ + @Override + @Transactional(rollbackFor = Exception.class) + @CacheEvict(value = CacheConstants.TENANT_DETAILS, allEntries = true) + public Boolean updateTenant(SysTenant tenantDTO) { + SysTenant oldTenant = baseMapper.selectById(tenantDTO.getId()); + List newMenuIdList = StrUtil.split(tenantDTO.getMenuId(), CharUtil.COMMA); + List oldMenuIdList = StrUtil.split(oldTenant.getMenuId(), CharUtil.COMMA); - // 根据path 或者 permisson 查询目标父菜单 - SysMenu tenantParentMenu = menuService.getOne(Wrappers.lambdaQuery() - .eq(StrUtil.isNotBlank(parentMenu.getPath()), SysMenu::getPath, parentMenu.getPath()) - .or() - .eq(StrUtil.isNotBlank(parentMenu.getPermission()), SysMenu::getPermission, - parentMenu.getPermission()), - false); + // 更新租户信息 + updateById(tenantDTO); - tenantMenu.setParentId(tenantParentMenu.getMenuId()); - menuService.updateById(tenantMenu); - }); - } + // 如果没有修改租户套餐 + TenantDefaultConfig tenantDefault = new TenantDefaultConfig(); + List sysMenuList = TenantBroker.applyAs(tenantDefault.getTenantDefaultId(), id -> menuService.list()); + if (tenantDefault.getTenantDefaultId().equals(tenantDTO.getId())) { + return Boolean.TRUE; + } - // 清空指定租户的菜单权限缓存 - Set keys = RedisUtils.keys(String.format("%s:%s::*", tenantDTO.getId(), CacheConstants.MENU_DETAILS)); - if (CollUtil.isNotEmpty(keys)) { - RedisUtils.delete(keys.toArray(new String[0])); - } - return Boolean.TRUE; - } + // 比较新旧套餐是否一致 + if (CollUtil.isEqualList(newMenuIdList, oldMenuIdList)) { + return Boolean.TRUE; + } - /** - * 获取用户所属租户列表 - * - * @return 用户所属租户列表 - */ - @Override - public List getUserTenant() { - MPJLambdaWrapper wrapper = new MPJLambdaWrapper() - .selectAll(SysTenant.class) - .leftJoin(SysTenantUser.class, SysTenantUser::getTenantId, SysTenant::getId) - .eq(SysTenantUser::getUserId, SecurityUtils.getUser().getId()) - .eq(SysTenant::getStatus, TenantStateEnum.NORMAL.getCode()); + // 0. 计算两个差集,差集表示变化的功能项 + Collection disjunctionList = CollUtil.disjunction(newMenuIdList, oldMenuIdList); + // 1. 如果旧套餐包含差集元素则删除 + CollUtil.intersection(oldMenuIdList, disjunctionList) + .forEach(menuId -> TenantBroker.runAs(tenantDTO.getId(), (tenantId -> { + // 查询租户菜单元信息 + SysMenu menu = CollUtil.findOneByField(sysMenuList, SysMenu.Fields.menuId, Long.parseLong(menuId)); - return baseMapper.selectJoinList(wrapper) - .stream() - .filter(tenant -> tenant.getStartTime().isBefore(LocalDateTime.now())) - .filter(tenant -> tenant.getEndTime().isAfter(LocalDateTime.now())) - .toList(); - } + // 根据path 或者 permisson 删除目标租户菜单 + menuService.remove(Wrappers.lambdaQuery() + .eq(StrUtil.isNotBlank(menu.getPath()), SysMenu::getPath, menu.getPath()) + .or() + .eq(StrUtil.isNotBlank(menu.getPermission()), SysMenu::getPermission, menu.getPermission())); + }))); - /** - * 获取用户租户分页信息 - * - * @param page 分页参数 - * @param userDTO 用户信息 - * @return 用户租户分页结果 - */ - @Override - public Page getUserTenantPage(Page page, UserDTO userDTO) { - MPJLambdaWrapper wrapper = new MPJLambdaWrapper() - .selectAll(SysUser.class) - .innerJoin(SysTenantUser.class, SysTenantUser::getUserId, SysUser::getUserId) - .like(StrUtil.isNotBlank(userDTO.getUsername()), SysUser::getUsername, userDTO.getUsername()) - .like(StrUtil.isNotBlank(userDTO.getPhone()), SysUser::getPhone, userDTO.getPhone()) - .like(StrUtil.isNotBlank(userDTO.getEmail()), SysUser::getEmail, userDTO.getEmail()) - .eq(Objects.nonNull(userDTO.getTenantId()), SysTenantUser::getTenantId, userDTO.getTenantId()); - return TenantBroker.noneAs(() -> sysUserMapper.selectJoinPage(page, wrapper)); - } + // 2. 如果旧套餐不包含差集元素则新增 + List newTenantMenuIdList = CollUtil.subtract(disjunctionList, oldMenuIdList) + .stream() + .map(menuId -> TenantBroker.applyAs(tenantDTO.getId(), (tenantId -> { + // 查询租户菜单元信息 + SysMenu menu = CollUtil.findOneByField(sysMenuList, SysMenu.Fields.menuId, Long.parseLong(menuId)); - /** - * 移除租户用户 - * - * @param tenantUserDTO 租户用户信息 - * @return 是否移除成功 - */ - @Override - public Boolean removeTenantUser(SysTenantUserDTO tenantUserDTO) { - ArrayList userIdList = CollUtil.toList(tenantUserDTO.getUserIds()); + // 新增租户菜单,但未维护上下级关系 + SysMenu newMenu = new SysMenu(); + BeanUtils.copyProperties(menu, newMenu, SysMenu.Fields.menuId); + menuService.save(newMenu); + return newMenu; + }))) + .toList(); - // 删除租户用户关系 - sysTenantUserMapper.delete(Wrappers.lambdaQuery() - .eq(SysTenantUser::getTenantId, tenantUserDTO.getTenantId()) - .in(SysTenantUser::getUserId, userIdList) - ); + // 3. 更新新增菜单上下级关系 + for (SysMenu tenantMenu : newTenantMenuIdList) { + // 查询租户菜单父元信息 + SysMenu parentMenu = CollUtil.findOneByField(sysMenuList, SysMenu.Fields.menuId, tenantMenu.getParentId()); + // 查询目标租户父菜单元信息 + TenantBroker.runAs(tenantDTO.getId(), tenantId -> { + // 如何菜单父节点是根节点则直接插入,不要查询父节点判断 + if (Objects.equals(tenantMenu.getParentId(), CommonConstants.MENU_TREE_ROOT_ID)) { + menuService.updateById(tenantMenu); + return; + } - TenantBroker.runAs(tenantUserDTO.getTenantId(), (tenantId -> { - // 删除用户岗位 - sysUserPostMapper.delete(Wrappers.lambdaQuery() - .in(SysUserPost::getUserId, userIdList)); - // 删除用户角色 - sysUserRoleMapper.delete(Wrappers.lambdaQuery() - .in(SysUserRole::getUserId, userIdList)); - // 删除用户部门 - sysUserDeptMapper.delete(Wrappers.lambdaQuery() - .in(SysUserDept::getUserId, userIdList)); - })); - return Boolean.TRUE; - } + // 根据path 或者 permisson 查询目标父菜单 + SysMenu tenantParentMenu = menuService.getOne(Wrappers.lambdaQuery() + .eq(StrUtil.isNotBlank(parentMenu.getPath()), SysMenu::getPath, parentMenu.getPath()) + .or() + .eq(StrUtil.isNotBlank(parentMenu.getPermission()), SysMenu::getPermission, + parentMenu.getPermission()), + false); - /** - * 根据用户信息查询租户用户列表 - * - * @param userDTO 用户信息传输对象 - * @return 租户用户列表 - */ - @Override - public List listTenantUser(UserDTO userDTO) { - return TenantBroker.noneAs(() -> sysUserMapper - .selectList(Wrappers.lambdaQuery().like(StrUtil.isNotBlank(userDTO.getUsername()), SysUser::getUsername, userDTO.getUsername()))); - } + tenantMenu.setParentId(tenantParentMenu.getMenuId()); + menuService.updateById(tenantMenu); + }); + } - /** - * 保存租户用户信息 - * - * @param tenantUserDTO 租户用户信息DTO - * @return 保存是否成功 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public Boolean saveTenantUser(SysTenantUserDTO tenantUserDTO) { - TenantBroker.runAs(tenantUserDTO.getTenantId(), (tenantId -> { - for (Long userId : tenantUserDTO.getUserIds()) { - List sysTenantUsers = sysTenantUserMapper.selectList(Wrappers.lambdaQuery() - .eq(SysTenantUser::getTenantId, tenantId) - .eq(SysTenantUser::getUserId, userId)); - if (CollUtil.isEmpty(sysTenantUsers)) { - // 插入租户用户关系 - SysTenantUser sysTenantUser = new SysTenantUser(); - sysTenantUser.setUserId(userId); - sysTenantUser.setTenantId(tenantId); - sysTenantUserMapper.insert(sysTenantUser); - } + // 清空指定租户的菜单权限缓存 + Set keys = RedisUtils.keys(String.format("%s:%s::*", tenantDTO.getId(), CacheConstants.MENU_DETAILS)); + if (CollUtil.isNotEmpty(keys)) { + RedisUtils.delete(keys.toArray(new String[0])); + } + return Boolean.TRUE; + } + /** + * 获取用户所属租户列表 + * + * @return 用户所属租户列表 + */ + @Override + public List getUserTenant() { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper().selectAll(SysTenant.class) + .leftJoin(SysTenantUser.class, SysTenantUser::getTenantId, SysTenant::getId) + .eq(SysTenantUser::getUserId, SecurityUtils.getUser().getId()) + .eq(SysTenant::getStatus, TenantStateEnum.NORMAL.getCode()); - List userRoleList = sysUserRoleMapper.selectList(Wrappers.lambdaQuery() - .eq(SysUserRole::getUserId, userId) - .eq(SysUserRole::getRoleId, tenantUserDTO.getRoleId())); - if (CollUtil.isEmpty(userRoleList)) { - // 插入用户角色关系 - SysUserRole sysUserRole = new SysUserRole(); - sysUserRole.setUserId(userId); - sysUserRole.setRoleId(tenantUserDTO.getRoleId()); - sysUserRoleMapper.insert(sysUserRole); - } + return baseMapper.selectJoinList(wrapper) + .stream() + .filter(tenant -> tenant.getStartTime().isBefore(LocalDateTime.now())) + .filter(tenant -> tenant.getEndTime().isAfter(LocalDateTime.now())) + .toList(); + } + /** + * 获取用户租户分页信息 + * + * @param page 分页参数 + * @param userDTO 用户信息 + * @return 用户租户分页结果 + */ + @Override + public Page getUserTenantPage(Page page, UserDTO userDTO) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper().selectAll(SysUser.class) + .innerJoin(SysTenantUser.class, SysTenantUser::getUserId, SysUser::getUserId) + .like(StrUtil.isNotBlank(userDTO.getUsername()), SysUser::getUsername, userDTO.getUsername()) + .like(StrUtil.isNotBlank(userDTO.getPhone()), SysUser::getPhone, userDTO.getPhone()) + .like(StrUtil.isNotBlank(userDTO.getEmail()), SysUser::getEmail, userDTO.getEmail()) + .eq(Objects.nonNull(userDTO.getTenantId()), SysTenantUser::getTenantId, userDTO.getTenantId()); + return TenantBroker.noneAs(() -> sysUserMapper.selectJoinPage(page, wrapper)); + } - List userDeptList = sysUserDeptMapper.selectList(Wrappers.lambdaQuery() - .eq(SysUserDept::getUserId, userId) - .eq(SysUserDept::getDeptId, tenantUserDTO.getDeptId())); + /** + * 移除租户用户 + * + * @param tenantUserDTO 租户用户信息 + * @return 是否移除成功 + */ + @Override + public Boolean removeTenantUser(SysTenantUserDTO tenantUserDTO) { + ArrayList userIdList = CollUtil.toList(tenantUserDTO.getUserIds()); - if (CollUtil.isEmpty(userDeptList)) { - // 插入用户部门关系 - SysUserDept sysUserDept = new SysUserDept(); - sysUserDept.setUserId(userId); - sysUserDept.setDeptId(tenantUserDTO.getDeptId()); - sysUserDeptMapper.insert(sysUserDept); - } + // 删除租户用户关系 + sysTenantUserMapper.delete(Wrappers.lambdaQuery() + .eq(SysTenantUser::getTenantId, tenantUserDTO.getTenantId()) + .in(SysTenantUser::getUserId, userIdList)); - List userPostList = sysUserPostMapper.selectList(Wrappers.lambdaQuery() - .eq(SysUserPost::getUserId, userId) - .eq(SysUserPost::getPostId, tenantUserDTO.getPostId())); + TenantBroker.runAs(tenantUserDTO.getTenantId(), (tenantId -> { + // 删除用户岗位 + sysUserPostMapper.delete(Wrappers.lambdaQuery().in(SysUserPost::getUserId, userIdList)); + // 删除用户角色 + sysUserRoleMapper.delete(Wrappers.lambdaQuery().in(SysUserRole::getUserId, userIdList)); + // 删除用户部门 + sysUserDeptMapper.delete(Wrappers.lambdaQuery().in(SysUserDept::getUserId, userIdList)); + })); + return Boolean.TRUE; + } - if (CollUtil.isEmpty(userPostList) && Objects.nonNull(tenantUserDTO.getPostId())) { - // 插入用户岗位关系 - SysUserPost sysUserPost = new SysUserPost(); - sysUserPost.setUserId(userId); - sysUserPost.setPostId(tenantUserDTO.getPostId()); - sysUserPostMapper.insert(sysUserPost); - } - } - })); - return Boolean.TRUE; - } + /** + * 根据用户信息查询租户用户列表 + * + * @param userDTO 用户信息传输对象 + * @return 租户用户列表 + */ + @Override + public List listTenantUser(UserDTO userDTO) { + return TenantBroker.noneAs(() -> sysUserMapper.selectList(Wrappers.lambdaQuery() + .like(StrUtil.isNotBlank(userDTO.getUsername()), SysUser::getUsername, userDTO.getUsername()))); + } - /** - * 获取租户角色列表 - * - * @param userDTO 用户信息 - * @return 租户角色列表 - */ - @Override - public Map listTenantOrg(UserDTO userDTO) { - return TenantBroker.applyAs(userDTO.getTenantId(), tenantId -> { - // 过滤有权限配置的菜单 - List sysRoles = sysRoleMapper.selectList(Wrappers.lambdaQuery()).stream() - .filter(role -> roleMenuMapper.exists(Wrappers.lambdaQuery() - .eq(SysRoleMenu::getRoleId, role.getRoleId()))).toList(); - List sysDepts = sysDeptMapper.selectList(Wrappers.lambdaQuery()); - List sysPosts = sysPostMapper.selectList(Wrappers.lambdaQuery()); - return Map.of("sysRoles", sysRoles, "sysDepts", sysDepts, "sysPosts", sysPosts); - }); - } + /** + * 保存租户用户信息 + * + * @param tenantUserDTO 租户用户信息DTO + * @return 保存是否成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean saveTenantUser(SysTenantUserDTO tenantUserDTO) { + TenantBroker.runAs(tenantUserDTO.getTenantId(), (tenantId -> { + for (Long userId : tenantUserDTO.getUserIds()) { + List sysTenantUsers = sysTenantUserMapper + .selectList(Wrappers.lambdaQuery() + .eq(SysTenantUser::getTenantId, tenantId) + .eq(SysTenantUser::getUserId, userId)); + if (CollUtil.isEmpty(sysTenantUsers)) { + // 插入租户用户关系 + SysTenantUser sysTenantUser = new SysTenantUser(); + sysTenantUser.setUserId(userId); + sysTenantUser.setTenantId(tenantId); + sysTenantUserMapper.insert(sysTenantUser); + } - /** - * 移除租户 - * - * @param ids 租户ID列表 - * @return 是否移除成功 - */ - @Override - @CacheEvict(value = CacheConstants.TENANT_DETAILS, allEntries = true) - public Boolean removeTenant(Long[] ids) { - baseMapper.deleteByIds(CollUtil.toList(ids)); - sysTenantUserMapper.delete(Wrappers.lambdaQuery().in(SysTenantUser::getTenantId, CollUtil.toList(ids))); - return Boolean.TRUE; - } + List userRoleList = sysUserRoleMapper.selectList(Wrappers.lambdaQuery() + .eq(SysUserRole::getUserId, userId) + .eq(SysUserRole::getRoleId, tenantUserDTO.getRoleId())); + if (CollUtil.isEmpty(userRoleList)) { + // 插入用户角色关系 + SysUserRole sysUserRole = new SysUserRole(); + sysUserRole.setUserId(userId); + sysUserRole.setRoleId(tenantUserDTO.getRoleId()); + sysUserRoleMapper.insert(sysUserRole); + } - /** - * 更新用户租户信息 - * - * @param userDto 用户数据传输对象 - * @return 更新结果 - */ - @Override - @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") - public R updateUserTenant(UserDTO userDto) { - return R.ok(TenantBroker.noneAs(() -> sysUserMapper.update(Wrappers.lambdaUpdate() - .set(SysUser::getTenantId, userDto.getTenantId()) - .eq(SysUser::getUserId, userDto.getUserId())))); - } + List userDeptList = sysUserDeptMapper.selectList(Wrappers.lambdaQuery() + .eq(SysUserDept::getUserId, userId) + .eq(SysUserDept::getDeptId, tenantUserDTO.getDeptId())); - /** - * 保存新的租户菜单,维护成新的菜单 - * - * @param menuList 菜单列表 - * @param originParentId 原始上级 - * @param targetParentId 目标上级 - */ - private void saveTenantMenu(List menuList, Long originParentId, Long targetParentId) { - menuList.stream().filter(menu -> menu.getParentId().equals(originParentId)).forEach(menu -> { - // 保存菜单原始menuId, 方便查询子节点使用 - Long originMenuId = menu.getMenuId(); - menu.setMenuId(null); - menu.setParentId(targetParentId); - menuService.save(menu); - // 查找此节点的子节点,然后子节点的重新插入父节点更改为新的menuId - saveTenantMenu(menuList, originMenuId, menu.getMenuId()); - }); - } + if (CollUtil.isEmpty(userDeptList)) { + // 插入用户部门关系 + SysUserDept sysUserDept = new SysUserDept(); + sysUserDept.setUserId(userId); + sysUserDept.setDeptId(tenantUserDTO.getDeptId()); + sysUserDeptMapper.insert(sysUserDept); + } - /** - * 获取或更新当前用户的租户信息 - * - * @return 更新后的租户ID,如果无需更新则返回null - */ - @Override - public Long getOrUpdateTenant() { - PigxUser loginUser = SecurityUtils.getUser(); - boolean match = this.getNormalTenant() - .stream() - .filter(tenant -> tenant.getStartTime().isBefore(LocalDateTime.now())) - .filter(tenant -> tenant.getEndTime().isAfter(LocalDateTime.now())) - .anyMatch(tenant -> tenant.getId().equals(loginUser.getTenantId())); + List userPostList = sysUserPostMapper.selectList(Wrappers.lambdaQuery() + .eq(SysUserPost::getUserId, userId) + .eq(SysUserPost::getPostId, tenantUserDTO.getPostId())); - if (!match) { - SysTenantUser tenantUser = sysTenantUserMapper.selectOne(Wrappers.lambdaQuery() - .eq(SysTenantUser::getUserId, SecurityUtils.getUser().getId()) - .ne(SysTenantUser::getTenantId, loginUser.getTenantId()), false); - // 如果当前用户没有租户信息,则不进行任何操作 - if (Objects.isNull(tenantUser)) { - return null; - } + if (CollUtil.isEmpty(userPostList) && Objects.nonNull(tenantUserDTO.getPostId())) { + // 插入用户岗位关系 + SysUserPost sysUserPost = new SysUserPost(); + sysUserPost.setUserId(userId); + sysUserPost.setPostId(tenantUserDTO.getPostId()); + sysUserPostMapper.insert(sysUserPost); + } + } + })); + return Boolean.TRUE; + } - // 切换至状态正常的租户 - UserDTO userDTO = new UserDTO(); - userDTO.setUserId(loginUser.getId()); - userDTO.setTenantId(tenantUser.getTenantId()); - userDTO.setUsername(loginUser.getUsername()); - updateUserTenant(userDTO); - cacheManager.getCache(CacheConstants.USER_DETAILS).evict(loginUser.getUsername()); - return tenantUser.getTenantId(); - } + /** + * 获取租户角色列表 + * + * @param userDTO 用户信息 + * @return 租户角色列表 + */ + @Override + public Map listTenantOrg(UserDTO userDTO) { + return TenantBroker.applyAs(userDTO.getTenantId(), tenantId -> { + // 过滤有权限配置的菜单 + List sysRoles = sysRoleMapper.selectList(Wrappers.lambdaQuery()) + .stream() + .filter(role -> roleMenuMapper + .exists(Wrappers.lambdaQuery().eq(SysRoleMenu::getRoleId, role.getRoleId()))) + .toList(); + List sysDepts = sysDeptMapper.selectList(Wrappers.lambdaQuery()); + List sysPosts = sysPostMapper.selectList(Wrappers.lambdaQuery()); + return Map.of("sysRoles", sysRoles, "sysDepts", sysDepts, "sysPosts", sysPosts); + }); + } + + /** + * 移除租户 + * + * @param ids 租户ID列表 + * @return 是否移除成功 + */ + @Override + @CacheEvict(value = CacheConstants.TENANT_DETAILS, allEntries = true) + public Boolean removeTenant(Long[] ids) { + baseMapper.deleteByIds(CollUtil.toList(ids)); + sysTenantUserMapper + .delete(Wrappers.lambdaQuery().in(SysTenantUser::getTenantId, CollUtil.toList(ids))); + return Boolean.TRUE; + } + + /** + * 更新用户租户信息 + * + * @param userDto 用户数据传输对象 + * @return 更新结果 + */ + @Override + @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") + public R updateUserTenant(UserDTO userDto) { + return R.ok(TenantBroker.noneAs(() -> sysUserMapper.update(Wrappers.lambdaUpdate() + .set(SysUser::getTenantId, userDto.getTenantId()) + .eq(SysUser::getUserId, userDto.getUserId())))); + } + + /** + * 保存新的租户菜单,维护成新的菜单 + * + * @param menuList 菜单列表 + * @param originParentId 原始上级 + * @param targetParentId 目标上级 + */ + private void saveTenantMenu(List menuList, Long originParentId, Long targetParentId) { + menuList.stream().filter(menu -> menu.getParentId().equals(originParentId)).forEach(menu -> { + // 保存菜单原始menuId, 方便查询子节点使用 + Long originMenuId = menu.getMenuId(); + menu.setMenuId(null); + menu.setParentId(targetParentId); + menuService.save(menu); + // 查找此节点的子节点,然后子节点的重新插入父节点更改为新的menuId + saveTenantMenu(menuList, originMenuId, menu.getMenuId()); + }); + } + + /** + * 获取或更新当前用户的租户信息 + * + * @return 更新后的租户ID,如果无需更新则返回null + */ + @Override + public Long getOrUpdateTenant() { + PigxUser loginUser = SecurityUtils.getUser(); + boolean match = this.getNormalTenant() + .stream() + .filter(tenant -> tenant.getStartTime().isBefore(LocalDateTime.now())) + .filter(tenant -> tenant.getEndTime().isAfter(LocalDateTime.now())) + .anyMatch(tenant -> tenant.getId().equals(loginUser.getTenantId())); + + if (!match) { + SysTenantUser tenantUser = sysTenantUserMapper.selectOne(Wrappers.lambdaQuery() + .eq(SysTenantUser::getUserId, SecurityUtils.getUser().getId()) + .ne(SysTenantUser::getTenantId, loginUser.getTenantId()), false); + // 如果当前用户没有租户信息,则不进行任何操作 + if (Objects.isNull(tenantUser)) { + return null; + } + + // 切换至状态正常的租户 + UserDTO userDTO = new UserDTO(); + userDTO.setUserId(loginUser.getId()); + userDTO.setTenantId(tenantUser.getTenantId()); + userDTO.setUsername(loginUser.getUsername()); + updateUserTenant(userDTO); + cacheManager.getCache(CacheConstants.USER_DETAILS).evict(loginUser.getUsername()); + return tenantUser.getTenantId(); + } + + return null; + } - return null; - } } /** @@ -552,25 +556,37 @@ public class SysTenantServiceImpl extends ServiceImpl args = Arrays.stream(ReflectUtil.getFields(this.getClass())) - .map(Field::getName).map(StrUtil::toUnderlineCase).map(String::toUpperCase).toList(); - Map paramsMap = ParamResolver.getMap(args.toArray(new String[]{})); - for (Field field : ReflectUtil.getFields(this.getClass())) { - String key = StrUtil.toUnderlineCase(field.getName()).toUpperCase(); - if (paramsMap.containsKey(key)) { - field.set(this, paramsMap.get(key)); - } - } - } + private Long tenantDefaultId = 1L; + + private String tenantDefaultDeptname = "租户默认部门"; + + private String tenantDefaultUsername = "admin"; + + private String tenantDefaultPassword = "123456"; + + private String tenantDefaultRolecode = "ROLE_ADMIN"; + + private String tenantDefaultRolename = "租户默认角色"; + + private String userDefaultRolecode = "GENERAL_USER"; + + private String userDefaultRolename = "普通用户"; + + @SneakyThrows + public TenantDefaultConfig() { + List args = Arrays.stream(ReflectUtil.getFields(this.getClass())) + .map(Field::getName) + .map(StrUtil::toUnderlineCase) + .map(String::toUpperCase) + .toList(); + Map paramsMap = ParamResolver.getMap(args.toArray(new String[] {})); + for (Field field : ReflectUtil.getFields(this.getClass())) { + String key = StrUtil.toUnderlineCase(field.getName()).toUpperCase(); + if (paramsMap.containsKey(key)) { + field.set(this, paramsMap.get(key)); + } + } + } + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java index 2265ff136..2eb279119 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java @@ -75,637 +75,644 @@ import java.util.stream.Collectors; @AllArgsConstructor public class SysUserServiceImpl extends ServiceImpl implements SysUserService { - private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder(); - - private final SysMenuService sysMenuService; - - private final SysRoleService sysRoleService; - - private final SysPostService sysPostService; - - private final SysDeptService sysDeptService; - - private final SysTenantService sysTenantService; - - private final SysUserRoleMapper sysUserRoleMapper; - - private final SysUserPostMapper sysUserPostMapper; - - private final SysUserDeptMapper sysUserDeptMapper; - - private final SysTenantUserMapper sysTenantUserMapper; - - private final CacheManager cacheManager; - - private final SysDeptMapper sysDeptMapper; - - private final StringRedisTemplate redisTemplate; - - /** - * 保存用户信息 - * - * @param userDto DTO 对象 - * @return success/fail - */ - @Override - @Transactional(rollbackFor = Exception.class) - public Boolean saveUser(UserDTO userDto) { - SysUser sysUser = new SysUser(); - BeanUtils.copyProperties(userDto, sysUser); - sysUser.setLockFlag( - StrUtil.isBlank(userDto.getLockFlag()) ? UserStateEnum.NORMAL.getCode() : userDto.getLockFlag()); - sysUser.setCreateBy(userDto.getUsername()); - sysUser.setUpdateBy(userDto.getUsername()); - sysUser.setPassword(ENCODER.encode(userDto.getPassword())); - sysUser.setPasswordModifyTime(LocalDateTime.now()); - baseMapper.insert(sysUser); - // 保存用户岗位信息 - Optional.ofNullable(userDto.getPost()).ifPresent(posts -> { - posts.stream().map(postId -> { - SysUserPost userPost = new SysUserPost(); - userPost.setUserId(sysUser.getUserId()); - userPost.setPostId(postId); - return userPost; - }).forEach(sysUserPostMapper::insert); - }); - - // 如果角色为空,赋默认角色 - if (CollUtil.isEmpty(userDto.getRole())) { - // 获取默认角色编码 - String defaultRole = ParamResolver.getStr("USER_DEFAULT_ROLE"); - // 默认角色 - SysRole sysRole = sysRoleService - .getOne(Wrappers.lambdaQuery().eq(SysRole::getRoleCode, defaultRole)); - userDto.setRole(Collections.singletonList(sysRole.getRoleId())); - } - - // 插入用户角色关系表 - userDto.getRole().stream().map(roleId -> { - SysUserRole userRole = new SysUserRole(); - userRole.setUserId(sysUser.getUserId()); - userRole.setRoleId(roleId); - return userRole; - }).forEach(sysUserRoleMapper::insert); - - // 插入用户部门信息 - if (Objects.nonNull(userDto.getDeptId())) { - SysUserDept sysUserDept = new SysUserDept(); - sysUserDept.setUserId(sysUser.getUserId()); - sysUserDept.setDeptId(userDto.getDeptId()); - sysUserDeptMapper.insert(sysUserDept); - } - - // 插入用户租户关系表 - SysTenantUser sysTenantUser = new SysTenantUser(); - sysTenantUser.setUserId(sysUser.getUserId()); - sysTenantUser.setTenantId(Objects.nonNull(SecurityUtils.getUser()) - ? SecurityUtils.getUser().getTenantId() : userDto.getTenantId()); - sysTenantUserMapper.insert(sysTenantUser); - return Boolean.TRUE; - } - - /** - * 根据用户信息查询用户全部信息,包括角色和权限 - * - * @param userDTO 用户信息DTO - * @return 包含用户角色和权限的用户信息对象 - */ - @Override - public R getUserInfo(UserDTO userDTO) { - UserVO dbUser = baseMapper.getUserVo(userDTO); - - if (dbUser == null) { - return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_USERINFO_EMPTY, userDTO.getUsername())); - } - - // 设置角色列表 (ID) - UserInfo userInfo = new UserInfo(); - BeanUtils.copyProperties(dbUser, userInfo); - // 设置权限列表(menu.permission) - List permissions = dbUser.getRoleList() - .stream() - .map(SysRole::getRoleId) - .flatMap(roleId -> sysMenuService.findMenuByRoleId(roleId).stream()) - .map(SysMenu::getPermission) - .filter(StrUtil::isNotEmpty) - .toList(); - userInfo.setPermissions(permissions); - - // 如果是登录成功以后查询租户信息并进行校验 - if (Objects.nonNull(SecurityUtils.getUser())) { - Long updateTenantId = sysTenantService.getOrUpdateTenant(); - if (Objects.nonNull(updateTenantId)) { - userInfo.setTenantId(updateTenantId); - } - } - - return R.ok(userInfo); - } - - /** - * 分页查询用户信息(含有角色信息) - * - * @param page 分页对象 - * @param userDTO 参数列表 - * @return - */ - @Override - public IPage getUsersWithRolePage(Page page, UserDTO userDTO) { - userDTO.setTenantId(SecurityUtils.getUser().getTenantId()); - return baseMapper.getUserVosPage(page, userDTO, DataScope.of()); - } - - /** - * 通过ID查询用户信息 - * - * @param id 用户ID - * @return 用户信息 - */ - @Override - public UserVO selectUserVoById(Long id) { - return baseMapper.getUserVoById(id); - } - - /** - * 删除用户 - * - * @param ids 用户ID 列表 - * @return Boolean - */ - @Override - @Transactional(rollbackFor = Exception.class) - public Boolean deleteUserByIds(Long[] ids) { - // 删除 spring cache - List userList = baseMapper.selectByIds(CollUtil.toList(ids)); - Cache cache = cacheManager.getCache(CacheConstants.USER_DETAILS); - for (SysUser sysUser : userList) { - cache.evict(sysUser.getUsername()); - } - - // 删除用户角色 - sysUserRoleMapper.delete(Wrappers.lambdaQuery().in(SysUserRole::getUserId, CollUtil.toList(ids))); - sysUserDeptMapper.delete(Wrappers.lambdaQuery().in(SysUserDept::getUserId, CollUtil.toList(ids))); - sysUserPostMapper.delete(Wrappers.lambdaQuery().in(SysUserPost::getUserId, CollUtil.toList(ids))); - sysTenantUserMapper.delete(Wrappers.lambdaQuery().in(SysTenantUser::getUserId, CollUtil.toList(ids)) - .eq(SysTenantUser::getTenantId, SecurityUtils.getUser().getTenantId())); - this.removeBatchByIds(CollUtil.toList(ids)); - return Boolean.TRUE; - } - - @Override - @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") - public R updateUserInfo(UserDTO userDto) { - Long userId = SecurityUtils.getUser().getId(); - SysUser sysUser = new SysUser(); - sysUser.setPhone(userDto.getPhone()); - sysUser.setUserId(userId); - sysUser.setAvatar(userDto.getAvatar()); - sysUser.setNickname(userDto.getNickname()); - sysUser.setName(userDto.getName()); - sysUser.setEmail(userDto.getEmail()); - return R.ok(this.updateById(sysUser)); - } - - @Override - @Transactional(rollbackFor = Exception.class) - @Audit(name = "用户更新", spel = "@sysUserMapper.selectById(#userDto.userId)") - @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") - public Boolean updateUser(UserDTO userDto) { - // 更新用户表信息 - SysUser sysUser = new SysUser(); - BeanUtils.copyProperties(userDto, sysUser); - sysUser.setUpdateTime(LocalDateTime.now()); - - if (StrUtil.isNotBlank(userDto.getPassword())) { - sysUser.setPassword(ENCODER.encode(userDto.getPassword())); - } - - this.updateById(sysUser); - - // 更新用户角色表 - if (userDto.getRole() != null) { - sysUserRoleMapper - .delete(Wrappers.lambdaQuery().eq(SysUserRole::getUserId, userDto.getUserId())); - userDto.getRole().stream().map(roleId -> { - SysUserRole userRole = new SysUserRole(); - userRole.setUserId(sysUser.getUserId()); - userRole.setRoleId(roleId); - return userRole; - }).forEach(SysUserRole::insert); - } - - // 更新用户岗位表 - if (userDto.getPost() != null) { - sysUserPostMapper - .delete(Wrappers.lambdaQuery().eq(SysUserPost::getUserId, userDto.getUserId())); - userDto.getPost().stream().map(postId -> { - SysUserPost userPost = new SysUserPost(); - userPost.setUserId(sysUser.getUserId()); - userPost.setPostId(postId); - return userPost; - }).forEach(SysUserPost::insert); - } - - // 更新用户部门表 - if (Objects.nonNull(userDto.getDeptId())) { - sysUserDeptMapper.delete(Wrappers.lambdaQuery().eq(SysUserDept::getUserId, userDto.getUserId())); - SysUserDept sysUserDept = new SysUserDept(); - sysUserDept.setUserId(sysUser.getUserId()); - sysUserDept.setDeptId(userDto.getDeptId()); - sysUserDept.insert(); - } - - return Boolean.TRUE; - } - - /** - * 查询上级部门的用户信息 - * - * @param username 用户名 - * @return R - */ - @Override - public List listAncestorUsers(String username) { - SysUser sysUser = this.getOne(Wrappers.query().lambda().eq(SysUser::getUsername, username)); - - // 查询所属部门 - List sysDeptList = sysDeptMapper.listDeptsByUserId(sysUser.getUserId(), sysUser.getTenantId()); - if (CollUtil.isEmpty(sysDeptList)) { - return null; - } - - // 查询用户部门ID - List parentDeptList = sysDeptList.stream().map(SysDept::getParentId).toList(); - List userIdList = sysUserDeptMapper.selectList(Wrappers.lambdaQuery().in(SysUserDept::getDeptId, parentDeptList)) - .stream().map(SysUserDept::getUserId).toList(); - return this.list(Wrappers.lambdaQuery().in(SysUser::getUserId, userIdList)); - } - - /** - * 查询全部的用户 - * - * @param userDTO 查询条件 - * @param ids ids 用户列表 - * @return list - */ - @Override - public List listUser(UserDTO userDTO, Long[] ids) { - // 根据数据权限查询全部的用户信息 - userDTO.setTenantId(SecurityUtils.getUser().getTenantId()); - List voList = baseMapper.selectVoListByScope(userDTO, ids, DataScope.of()); - return voList.stream().map(userVO -> { - UserExcelVO excelVO = new UserExcelVO(); - BeanUtils.copyProperties(userVO, excelVO); - // 转换角色名称 - String roleNameList = userVO.getRoleList() - .stream() - .map(SysRole::getRoleName) - .collect(Collectors.joining(StrUtil.COMMA)); - excelVO.setRoleNameList(roleNameList); - // 转化岗位名称 - String postNameList = userVO.getPostList() - .stream() - .map(SysPost::getPostName) - .collect(Collectors.joining(StrUtil.COMMA)); - excelVO.setPostNameList(postNameList); - // 转化部门名称 - String deptNameList = userVO.getDeptList().stream() - .map(SysDept::getName) - .collect(Collectors.joining(StrUtil.COMMA)); - excelVO.setDeptNameList(deptNameList); - return excelVO; - }).toList(); - } - - /** - * excel 导入用户, 插入正确的 错误的提示行号 - * - * @param excelVOList excel 列表数据 - * @param bindingResult 错误数据 - * @return ok fail - */ - @Override - public R importUser(List excelVOList, BindingResult bindingResult) { - // 通用校验获取失败的数据 - List errorMessageList = (List) bindingResult.getTarget(); - List deptList = sysDeptService.list(); - List roleList = sysRoleService.list(); - List postList = sysPostService.list(); - - // 执行数据插入操作 组装 UserDto - for (UserExcelVO excel : excelVOList) { - // 个性化校验逻辑 - List userList = this.list(); - - Set errorMsg = new HashSet<>(); - // 校验用户名是否存在 - boolean exsitUserName = userList.stream() - .anyMatch(sysUser -> excel.getUsername().equals(sysUser.getUsername())); - - if (exsitUserName) { - errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, excel.getUsername())); - } - - // 判断输入的部门名称列表是否合法 - Optional deptOptional = deptList.stream() - .filter(dept -> excel.getDeptNameList().equals(dept.getName())) - .findFirst(); - if (!deptOptional.isPresent()) { - errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_DEPT_DEPTNAME_INEXISTENCE, excel.getDeptNameList())); - } - - // 判断输入的角色名称列表是否合法 - List roleNameList = StrUtil.split(excel.getRoleNameList(), StrUtil.COMMA); - List roleCollList = roleList.stream() - .filter(role -> roleNameList.stream().anyMatch(name -> role.getRoleName().equals(name))) - .toList(); - - if (roleCollList.size() != roleNameList.size()) { - errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_ROLE_ROLENAME_INEXISTENCE, excel.getRoleNameList())); - } - - // 判断输入的部门名称列表是否合法 - List postNameList = StrUtil.split(excel.getPostNameList(), StrUtil.COMMA); - List postCollList = postList.stream() - .filter(post -> postNameList.stream().anyMatch(name -> post.getPostName().equals(name))) - .toList(); - - if (postCollList.size() != postNameList.size()) { - errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_POST_POSTNAME_INEXISTENCE, excel.getPostNameList())); - } - - // 数据合法情况 - if (CollUtil.isEmpty(errorMsg)) { - insertExcelUser(excel, deptOptional, roleCollList, postCollList); - } else { - // 数据不合法情况 - errorMessageList.add(new ErrorMessage(excel.getLineNum(), errorMsg)); - } - - } - - if (CollUtil.isNotEmpty(errorMessageList)) { - return R.failed(errorMessageList); - } - return R.ok(null, MsgUtils.getMessage(ErrorCodes.SYS_USER_IMPORT_SUCCEED)); - } - - /** - * 插入excel User - */ - private void insertExcelUser(UserExcelVO excel, Optional deptOptional, List roleCollList, - List postCollList) { - UserDTO userDTO = new UserDTO(); - userDTO.setUsername(excel.getUsername()); - userDTO.setPhone(excel.getPhone()); - userDTO.setNickname(excel.getNickname()); - userDTO.setName(excel.getName()); - userDTO.setEmail(excel.getEmail()); - userDTO.setLockFlag(excel.getLockFlag()); - // 批量导入初始密码为手机号 - userDTO.setPasswordModifyTime(LocalDateTime.now()); - userDTO.setPassword(userDTO.getPhone()); - // 根据部门名称查询部门ID - userDTO.setDeptId(deptOptional.get().getDeptId()); - // 插入岗位名称 - List postIdList = postCollList.stream().map(SysPost::getPostId).toList(); - userDTO.setPost(postIdList); - // 根据角色名称查询角色ID - List roleIdList = roleCollList.stream().map(SysRole::getRoleId).toList(); - userDTO.setRole(roleIdList); - // 插入用户 - this.saveUser(userDTO); - // 插入用户租户关系表 - SysTenantUser sysTenantUser = new SysTenantUser(); - sysTenantUser.setUserId(userDTO.getUserId()); - sysTenantUser.setTenantId(SecurityUtils.getUser().getTenantId()); - sysTenantUserMapper.insert(sysTenantUser); - } - - /** - * 注册用户 赋予用户默认角色 - * - * @param userDto 用户信息 - * @return success/false - */ - @Override - @Transactional(rollbackFor = Exception.class) - public R registerUser(RegisterUserDTO userDto) { - // 判断用户名是否存在 - boolean usernameExists = this.exists(Wrappers.lambdaQuery() - .eq(SysUser::getUsername, userDto.getUsername())); - if (usernameExists) { - String message = MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, userDto.getUsername()); - return R.failed(message); - } - - // 判断手机号是否存在 - boolean phoneExists = this.exists(Wrappers.lambdaQuery() - .eq(SysUser::getPhone, userDto.getPhone())); - if (phoneExists) { - String message = MsgUtils.getMessage(ErrorCodes.SYS_USER_PHONE_EXISTING, userDto.getPhone()); - return R.failed(message); - } - - // 单独的用户避免越权 - UserDTO user = new UserDTO(); - BeanUtils.copyProperties(userDto, user); - return R.ok(saveUser(user)); - } - - /** - * 锁定用户 - * - * @param username 用户名 - * @return 操作结果,包含是否成功 - */ - @Override - @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#username") - public R lockUser(String username) { - SysUser sysUser = baseMapper.selectOne(Wrappers.lambdaQuery().eq(SysUser::getUsername, username)); - - if (Objects.nonNull(sysUser)) { - sysUser.setLockFlag(UserStateEnum.LOCK.getCode()); - baseMapper.updateById(sysUser); - } - return R.ok(); - } - - /** - * 修改用户密码 - * - * @param userDto 用户数据传输对象,包含原密码和新密码 - * @return 操作结果 - * @CacheEvict 清除用户详情缓存 - */ - @Override - @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") - public R changePassword(UserDTO userDto) { - SysUser user = baseMapper.selectById(SecurityUtils.getUser().getId()); - if (StrUtil.isEmpty(userDto.getPassword())) { - return R.failed("原密码不能为空"); - } - - if (!ENCODER.matches(userDto.getPassword(), user.getPassword())) { - log.info("原密码错误,修改个人信息失败:{}", userDto.getUsername()); - return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_UPDATE_PASSWORDERROR)); - } - - if (StrUtil.isEmpty(userDto.getNewpassword1())) { - return R.failed("新密码不能为空"); - } - String password = ENCODER.encode(userDto.getNewpassword1()); - - this.update(Wrappers.lambdaUpdate() - .set(SysUser::getPassword, password) - .set(SysUser::getPasswordModifyTime, LocalDateTime.now()) - .eq(SysUser::getUserId, user.getUserId())); - return R.ok(); - } - - - /** - * 解绑用户第三方登录账号 - * - * @param type 登录类型,参见LoginTypeEnum枚举 - * @return 操作结果,成功返回R.ok(),失败返回R.failed() - */ - @Override - public R unbinding(String type) { - PigxUser user = SecurityUtils.getUser(); - LambdaUpdateWrapper wrapper = null; - - // 微信开放平台 (普通用户扫码登录) - if (type.equals(LoginTypeEnum.WECHAT.getType())) { - wrapper = Wrappers.lambdaUpdate() - .set(SysUser::getWxOpenid, null) - .eq(SysUser::getUserId, user.getId()); - // 码云登录 (方便申请) - } else if (type.equals(LoginTypeEnum.GITEE.getType())) { - wrapper = Wrappers.lambdaUpdate() - .set(SysUser::getGiteeLogin, null) - .eq(SysUser::getUserId, user.getId()); - // 企业微信登录 - } else if (type.equals(LoginTypeEnum.WEIXIN_CP.getType())) { - wrapper = Wrappers.lambdaUpdate() - .set(SysUser::getWxCpUserid, null) - .eq(SysUser::getUserId, user.getId()); - // 钉钉登录 - } else if (type.equals(LoginTypeEnum.DINGTALK.getType())) { - wrapper = Wrappers.lambdaUpdate() - .set(SysUser::getWxDingUserid, null) - .eq(SysUser::getUserId, user.getId()); - } - - if (Objects.isNull(wrapper)) { - return R.failed("解绑账号类型不存在"); - } - this.update(wrapper); - return R.ok(); - } - - /** - * 检查用户密码是否正确 - * - * @param username 用户名 - * @param password 待验证的密码 - * @return 验证结果,成功返回R.ok(),失败返回R.failed() - */ - @Override - public R checkPassword(String username, String password) { - SysUser condition = new SysUser(); - condition.setUsername(username); - SysUser sysUser = this.getOne(new QueryWrapper<>(condition)); - - if (!ENCODER.matches(password, sysUser.getPassword())) { - log.info("原密码错误"); - return R.failed("密码输入错误"); - } else { - return R.ok(); - } - } - - /** - * 重置用户密码 - * - * @param userDto 用户信息DTO,包含用户名、原密码和新密码等信息 - * @return 返回操作结果,成功返回true,失败返回错误信息 - */ - @Override - @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") - public R resetUserPassword(RegisterUserDTO userDto) { - // 校验密码 - R checkedPassword = checkPassword(userDto.getUsername(), userDto.getPassword()); - if (!checkedPassword.isOk()) { - return checkedPassword; - } - - // 新密码校验 - if (StrUtil.equals(userDto.getPassword(), userDto.getNewpassword1())) { - return R.failed("新旧密码不能相同"); - } - - // 重置密码 - String password = ENCODER.encode(userDto.getNewpassword1()); - this.update(Wrappers.lambdaUpdate() - .set(SysUser::getPassword, password) - .set(SysUser::getPasswordModifyTime, LocalDateTime.now()) - .set(SysUser::getPasswordExpireFlag, CommonConstants.STATUS_NORMAL) - .eq(SysUser::getUsername, userDto.getUsername())); - return R.ok(); - } - - /** - * 忘记用户密码 - * - * @param userDto 用户信息DTO - * @param code 验证码 - * @return 操作结果,成功返回true - */ - @Override - public R forgetUserPassword(RegisterUserDTO userDto, String code) { - if (StrUtil.isBlank(userDto.getPhone())) { - return R.failed("非法参数"); - } - - String codeObj = redisTemplate.opsForValue().get(CacheConstants.DEFAULT_CODE_KEY + LoginTypeEnum.SMS.getType() + StringPool.AT + userDto.getPhone()); - if (!StrUtil.equals(codeObj, code)) { - return R.failed("验证码错误"); - } - - String username = lambdaQuery().select(SysUser::getUsername). - eq(SysUser::getPhone, userDto.getPhone()).one().getUsername(); - - // 重置密码 - String password = ENCODER.encode(userDto.getNewpassword1()); - this.update(Wrappers.lambdaUpdate() - .set(SysUser::getPassword, password) - .set(SysUser::getPasswordModifyTime, LocalDateTime.now()) - .set(SysUser::getPasswordExpireFlag, CommonConstants.STATUS_NORMAL) - .eq(SysUser::getPhone, userDto.getPhone())); - cacheManager.getCache(CacheConstants.USER_DETAILS).evict(username); - return R.ok(); - } - - @Override - public List listUserIdByRoleIds(List roleIdList) { - return sysUserRoleMapper.selectList(Wrappers.lambdaQuery().in(SysUserRole::getRoleId, roleIdList)) - .stream() - .map(SysUserRole::getUserId) - .toList(); - } - - /** - * 根据部门ID列表获取用户ID列表接口 - * - * @param deptIdList 部门ID列表 - * @return List 返回结果对象,包含根据部门ID列表获取到的用户ID列表信息 - */ - @Override - public List listUserIdByDeptIds(List deptIdList) { - List userList = sysUserDeptMapper.selectList(Wrappers.lambdaQuery().in(SysUserDept::getDeptId, deptIdList)) - .stream().map(SysUserDept::getUserId).toList(); - return baseMapper.selectList(Wrappers.lambdaQuery().in(SysUser::getUserId, userList)); - } + private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder(); + + private final SysMenuService sysMenuService; + + private final SysRoleService sysRoleService; + + private final SysPostService sysPostService; + + private final SysDeptService sysDeptService; + + private final SysTenantService sysTenantService; + + private final SysUserRoleMapper sysUserRoleMapper; + + private final SysUserPostMapper sysUserPostMapper; + + private final SysUserDeptMapper sysUserDeptMapper; + + private final SysTenantUserMapper sysTenantUserMapper; + + private final CacheManager cacheManager; + + private final SysDeptMapper sysDeptMapper; + + private final StringRedisTemplate redisTemplate; + + /** + * 保存用户信息 + * + * @param userDto DTO 对象 + * @return success/fail + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean saveUser(UserDTO userDto) { + SysUser sysUser = new SysUser(); + BeanUtils.copyProperties(userDto, sysUser); + sysUser.setLockFlag( + StrUtil.isBlank(userDto.getLockFlag()) ? UserStateEnum.NORMAL.getCode() : userDto.getLockFlag()); + sysUser.setCreateBy(userDto.getUsername()); + sysUser.setUpdateBy(userDto.getUsername()); + sysUser.setPassword(ENCODER.encode(userDto.getPassword())); + sysUser.setPasswordModifyTime(LocalDateTime.now()); + baseMapper.insert(sysUser); + // 保存用户岗位信息 + Optional.ofNullable(userDto.getPost()).ifPresent(posts -> { + posts.stream().map(postId -> { + SysUserPost userPost = new SysUserPost(); + userPost.setUserId(sysUser.getUserId()); + userPost.setPostId(postId); + return userPost; + }).forEach(sysUserPostMapper::insert); + }); + + // 如果角色为空,赋默认角色 + if (CollUtil.isEmpty(userDto.getRole())) { + // 获取默认角色编码 + String defaultRole = ParamResolver.getStr("USER_DEFAULT_ROLE"); + // 默认角色 + SysRole sysRole = sysRoleService + .getOne(Wrappers.lambdaQuery().eq(SysRole::getRoleCode, defaultRole)); + userDto.setRole(Collections.singletonList(sysRole.getRoleId())); + } + + // 插入用户角色关系表 + userDto.getRole().stream().map(roleId -> { + SysUserRole userRole = new SysUserRole(); + userRole.setUserId(sysUser.getUserId()); + userRole.setRoleId(roleId); + return userRole; + }).forEach(sysUserRoleMapper::insert); + + // 插入用户部门信息 + if (Objects.nonNull(userDto.getDeptId())) { + SysUserDept sysUserDept = new SysUserDept(); + sysUserDept.setUserId(sysUser.getUserId()); + sysUserDept.setDeptId(userDto.getDeptId()); + sysUserDeptMapper.insert(sysUserDept); + } + + // 插入用户租户关系表 + SysTenantUser sysTenantUser = new SysTenantUser(); + sysTenantUser.setUserId(sysUser.getUserId()); + sysTenantUser.setTenantId(Objects.nonNull(SecurityUtils.getUser()) ? SecurityUtils.getUser().getTenantId() + : userDto.getTenantId()); + sysTenantUserMapper.insert(sysTenantUser); + return Boolean.TRUE; + } + + /** + * 根据用户信息查询用户全部信息,包括角色和权限 + * + * @param userDTO 用户信息DTO + * @return 包含用户角色和权限的用户信息对象 + */ + @Override + public R getUserInfo(UserDTO userDTO) { + UserVO dbUser = baseMapper.getUserVo(userDTO); + + if (dbUser == null) { + return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_USERINFO_EMPTY, userDTO.getUsername())); + } + + // 设置角色列表 (ID) + UserInfo userInfo = new UserInfo(); + BeanUtils.copyProperties(dbUser, userInfo); + // 设置权限列表(menu.permission) + List permissions = dbUser.getRoleList() + .stream() + .map(SysRole::getRoleId) + .flatMap(roleId -> sysMenuService.findMenuByRoleId(roleId).stream()) + .map(SysMenu::getPermission) + .filter(StrUtil::isNotEmpty) + .toList(); + userInfo.setPermissions(permissions); + + // 如果是登录成功以后查询租户信息并进行校验 + if (Objects.nonNull(SecurityUtils.getUser())) { + Long updateTenantId = sysTenantService.getOrUpdateTenant(); + if (Objects.nonNull(updateTenantId)) { + userInfo.setTenantId(updateTenantId); + } + } + + return R.ok(userInfo); + } + + /** + * 分页查询用户信息(含有角色信息) + * + * @param page 分页对象 + * @param userDTO 参数列表 + * @return + */ + @Override + public IPage getUsersWithRolePage(Page page, UserDTO userDTO) { + userDTO.setTenantId(SecurityUtils.getUser().getTenantId()); + return baseMapper.getUserVosPage(page, userDTO, DataScope.of()); + } + + /** + * 通过ID查询用户信息 + * + * @param id 用户ID + * @return 用户信息 + */ + @Override + public UserVO selectUserVoById(Long id) { + return baseMapper.getUserVoById(id); + } + + /** + * 删除用户 + * + * @param ids 用户ID 列表 + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean deleteUserByIds(Long[] ids) { + // 删除 spring cache + List userList = baseMapper.selectByIds(CollUtil.toList(ids)); + Cache cache = cacheManager.getCache(CacheConstants.USER_DETAILS); + for (SysUser sysUser : userList) { + cache.evict(sysUser.getUsername()); + } + + // 删除用户角色 + sysUserRoleMapper.delete(Wrappers.lambdaQuery().in(SysUserRole::getUserId, CollUtil.toList(ids))); + sysUserDeptMapper.delete(Wrappers.lambdaQuery().in(SysUserDept::getUserId, CollUtil.toList(ids))); + sysUserPostMapper.delete(Wrappers.lambdaQuery().in(SysUserPost::getUserId, CollUtil.toList(ids))); + sysTenantUserMapper.delete(Wrappers.lambdaQuery() + .in(SysTenantUser::getUserId, CollUtil.toList(ids)) + .eq(SysTenantUser::getTenantId, SecurityUtils.getUser().getTenantId())); + this.removeBatchByIds(CollUtil.toList(ids)); + return Boolean.TRUE; + } + + @Override + @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") + public R updateUserInfo(UserDTO userDto) { + Long userId = SecurityUtils.getUser().getId(); + SysUser sysUser = new SysUser(); + sysUser.setPhone(userDto.getPhone()); + sysUser.setUserId(userId); + sysUser.setAvatar(userDto.getAvatar()); + sysUser.setNickname(userDto.getNickname()); + sysUser.setName(userDto.getName()); + sysUser.setEmail(userDto.getEmail()); + return R.ok(this.updateById(sysUser)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + @Audit(name = "用户更新", spel = "@sysUserMapper.selectById(#userDto.userId)") + @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") + public Boolean updateUser(UserDTO userDto) { + // 更新用户表信息 + SysUser sysUser = new SysUser(); + BeanUtils.copyProperties(userDto, sysUser); + sysUser.setUpdateTime(LocalDateTime.now()); + + if (StrUtil.isNotBlank(userDto.getPassword())) { + sysUser.setPassword(ENCODER.encode(userDto.getPassword())); + } + + this.updateById(sysUser); + + // 更新用户角色表 + if (userDto.getRole() != null) { + sysUserRoleMapper + .delete(Wrappers.lambdaQuery().eq(SysUserRole::getUserId, userDto.getUserId())); + userDto.getRole().stream().map(roleId -> { + SysUserRole userRole = new SysUserRole(); + userRole.setUserId(sysUser.getUserId()); + userRole.setRoleId(roleId); + return userRole; + }).forEach(SysUserRole::insert); + } + + // 更新用户岗位表 + if (userDto.getPost() != null) { + sysUserPostMapper + .delete(Wrappers.lambdaQuery().eq(SysUserPost::getUserId, userDto.getUserId())); + userDto.getPost().stream().map(postId -> { + SysUserPost userPost = new SysUserPost(); + userPost.setUserId(sysUser.getUserId()); + userPost.setPostId(postId); + return userPost; + }).forEach(SysUserPost::insert); + } + + // 更新用户部门表 + if (Objects.nonNull(userDto.getDeptId())) { + sysUserDeptMapper + .delete(Wrappers.lambdaQuery().eq(SysUserDept::getUserId, userDto.getUserId())); + SysUserDept sysUserDept = new SysUserDept(); + sysUserDept.setUserId(sysUser.getUserId()); + sysUserDept.setDeptId(userDto.getDeptId()); + sysUserDept.insert(); + } + + return Boolean.TRUE; + } + + /** + * 查询上级部门的用户信息 + * + * @param username 用户名 + * @return R + */ + @Override + public List listAncestorUsers(String username) { + SysUser sysUser = this.getOne(Wrappers.query().lambda().eq(SysUser::getUsername, username)); + + // 查询所属部门 + List sysDeptList = sysDeptMapper.listDeptsByUserId(sysUser.getUserId(), sysUser.getTenantId()); + if (CollUtil.isEmpty(sysDeptList)) { + return null; + } + + // 查询用户部门ID + List parentDeptList = sysDeptList.stream().map(SysDept::getParentId).toList(); + List userIdList = sysUserDeptMapper + .selectList(Wrappers.lambdaQuery().in(SysUserDept::getDeptId, parentDeptList)) + .stream() + .map(SysUserDept::getUserId) + .toList(); + return this.list(Wrappers.lambdaQuery().in(SysUser::getUserId, userIdList)); + } + + /** + * 查询全部的用户 + * + * @param userDTO 查询条件 + * @param ids ids 用户列表 + * @return list + */ + @Override + public List listUser(UserDTO userDTO, Long[] ids) { + // 根据数据权限查询全部的用户信息 + userDTO.setTenantId(SecurityUtils.getUser().getTenantId()); + List voList = baseMapper.selectVoListByScope(userDTO, ids, DataScope.of()); + return voList.stream().map(userVO -> { + UserExcelVO excelVO = new UserExcelVO(); + BeanUtils.copyProperties(userVO, excelVO); + // 转换角色名称 + String roleNameList = userVO.getRoleList() + .stream() + .map(SysRole::getRoleName) + .collect(Collectors.joining(StrUtil.COMMA)); + excelVO.setRoleNameList(roleNameList); + // 转化岗位名称 + String postNameList = userVO.getPostList() + .stream() + .map(SysPost::getPostName) + .collect(Collectors.joining(StrUtil.COMMA)); + excelVO.setPostNameList(postNameList); + // 转化部门名称 + String deptNameList = userVO.getDeptList() + .stream() + .map(SysDept::getName) + .collect(Collectors.joining(StrUtil.COMMA)); + excelVO.setDeptNameList(deptNameList); + return excelVO; + }).toList(); + } + + /** + * excel 导入用户, 插入正确的 错误的提示行号 + * + * @param excelVOList excel 列表数据 + * @param bindingResult 错误数据 + * @return ok fail + */ + @Override + public R importUser(List excelVOList, BindingResult bindingResult) { + // 通用校验获取失败的数据 + List errorMessageList = (List) bindingResult.getTarget(); + List deptList = sysDeptService.list(); + List roleList = sysRoleService.list(); + List postList = sysPostService.list(); + + // 执行数据插入操作 组装 UserDto + for (UserExcelVO excel : excelVOList) { + // 个性化校验逻辑 + List userList = this.list(); + + Set errorMsg = new HashSet<>(); + // 校验用户名是否存在 + boolean exsitUserName = userList.stream() + .anyMatch(sysUser -> excel.getUsername().equals(sysUser.getUsername())); + + if (exsitUserName) { + errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, excel.getUsername())); + } + + // 判断输入的部门名称列表是否合法 + Optional deptOptional = deptList.stream() + .filter(dept -> excel.getDeptNameList().equals(dept.getName())) + .findFirst(); + if (!deptOptional.isPresent()) { + errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_DEPT_DEPTNAME_INEXISTENCE, excel.getDeptNameList())); + } + + // 判断输入的角色名称列表是否合法 + List roleNameList = StrUtil.split(excel.getRoleNameList(), StrUtil.COMMA); + List roleCollList = roleList.stream() + .filter(role -> roleNameList.stream().anyMatch(name -> role.getRoleName().equals(name))) + .toList(); + + if (roleCollList.size() != roleNameList.size()) { + errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_ROLE_ROLENAME_INEXISTENCE, excel.getRoleNameList())); + } + + // 判断输入的部门名称列表是否合法 + List postNameList = StrUtil.split(excel.getPostNameList(), StrUtil.COMMA); + List postCollList = postList.stream() + .filter(post -> postNameList.stream().anyMatch(name -> post.getPostName().equals(name))) + .toList(); + + if (postCollList.size() != postNameList.size()) { + errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_POST_POSTNAME_INEXISTENCE, excel.getPostNameList())); + } + + // 数据合法情况 + if (CollUtil.isEmpty(errorMsg)) { + insertExcelUser(excel, deptOptional, roleCollList, postCollList); + } else { + // 数据不合法情况 + errorMessageList.add(new ErrorMessage(excel.getLineNum(), errorMsg)); + } + + } + + if (CollUtil.isNotEmpty(errorMessageList)) { + return R.failed(errorMessageList); + } + return R.ok(null, MsgUtils.getMessage(ErrorCodes.SYS_USER_IMPORT_SUCCEED)); + } + + /** + * 插入excel User + */ + private void insertExcelUser(UserExcelVO excel, Optional deptOptional, List roleCollList, + List postCollList) { + UserDTO userDTO = new UserDTO(); + userDTO.setUsername(excel.getUsername()); + userDTO.setPhone(excel.getPhone()); + userDTO.setNickname(excel.getNickname()); + userDTO.setName(excel.getName()); + userDTO.setEmail(excel.getEmail()); + userDTO.setLockFlag(excel.getLockFlag()); + // 批量导入初始密码为手机号 + userDTO.setPasswordModifyTime(LocalDateTime.now()); + userDTO.setPassword(userDTO.getPhone()); + // 根据部门名称查询部门ID + userDTO.setDeptId(deptOptional.get().getDeptId()); + // 插入岗位名称 + List postIdList = postCollList.stream().map(SysPost::getPostId).toList(); + userDTO.setPost(postIdList); + // 根据角色名称查询角色ID + List roleIdList = roleCollList.stream().map(SysRole::getRoleId).toList(); + userDTO.setRole(roleIdList); + // 插入用户 + this.saveUser(userDTO); + // 插入用户租户关系表 + SysTenantUser sysTenantUser = new SysTenantUser(); + sysTenantUser.setUserId(userDTO.getUserId()); + sysTenantUser.setTenantId(SecurityUtils.getUser().getTenantId()); + sysTenantUserMapper.insert(sysTenantUser); + } + + /** + * 注册用户 赋予用户默认角色 + * + * @param userDto 用户信息 + * @return success/false + */ + @Override + @Transactional(rollbackFor = Exception.class) + public R registerUser(RegisterUserDTO userDto) { + // 判断用户名是否存在 + boolean usernameExists = this + .exists(Wrappers.lambdaQuery().eq(SysUser::getUsername, userDto.getUsername())); + if (usernameExists) { + String message = MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, userDto.getUsername()); + return R.failed(message); + } + + // 判断手机号是否存在 + boolean phoneExists = this.exists(Wrappers.lambdaQuery().eq(SysUser::getPhone, userDto.getPhone())); + if (phoneExists) { + String message = MsgUtils.getMessage(ErrorCodes.SYS_USER_PHONE_EXISTING, userDto.getPhone()); + return R.failed(message); + } + + // 单独的用户避免越权 + UserDTO user = new UserDTO(); + BeanUtils.copyProperties(userDto, user); + return R.ok(saveUser(user)); + } + + /** + * 锁定用户 + * + * @param username 用户名 + * @return 操作结果,包含是否成功 + */ + @Override + @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#username") + public R lockUser(String username) { + SysUser sysUser = baseMapper.selectOne(Wrappers.lambdaQuery().eq(SysUser::getUsername, username)); + + if (Objects.nonNull(sysUser)) { + sysUser.setLockFlag(UserStateEnum.LOCK.getCode()); + baseMapper.updateById(sysUser); + } + return R.ok(); + } + + /** + * 修改用户密码 + * + * @param userDto 用户数据传输对象,包含原密码和新密码 + * @return 操作结果 + * @CacheEvict 清除用户详情缓存 + */ + @Override + @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") + public R changePassword(UserDTO userDto) { + SysUser user = baseMapper.selectById(SecurityUtils.getUser().getId()); + if (StrUtil.isEmpty(userDto.getPassword())) { + return R.failed("原密码不能为空"); + } + + if (!ENCODER.matches(userDto.getPassword(), user.getPassword())) { + log.info("原密码错误,修改个人信息失败:{}", userDto.getUsername()); + return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_UPDATE_PASSWORDERROR)); + } + + if (StrUtil.isEmpty(userDto.getNewpassword1())) { + return R.failed("新密码不能为空"); + } + String password = ENCODER.encode(userDto.getNewpassword1()); + + this.update(Wrappers.lambdaUpdate() + .set(SysUser::getPassword, password) + .set(SysUser::getPasswordModifyTime, LocalDateTime.now()) + .eq(SysUser::getUserId, user.getUserId())); + return R.ok(); + } + + /** + * 解绑用户第三方登录账号 + * @param type 登录类型,参见LoginTypeEnum枚举 + * @return 操作结果,成功返回R.ok(),失败返回R.failed() + */ + @Override + public R unbinding(String type) { + PigxUser user = SecurityUtils.getUser(); + LambdaUpdateWrapper wrapper = null; + + // 微信开放平台 (普通用户扫码登录) + if (type.equals(LoginTypeEnum.WECHAT.getType())) { + wrapper = Wrappers.lambdaUpdate() + .set(SysUser::getWxOpenid, null) + .eq(SysUser::getUserId, user.getId()); + // 码云登录 (方便申请) + } else if (type.equals(LoginTypeEnum.GITEE.getType())) { + wrapper = Wrappers.lambdaUpdate() + .set(SysUser::getGiteeLogin, null) + .eq(SysUser::getUserId, user.getId()); + // 企业微信登录 + } else if (type.equals(LoginTypeEnum.WEIXIN_CP.getType())) { + wrapper = Wrappers.lambdaUpdate() + .set(SysUser::getWxCpUserid, null) + .eq(SysUser::getUserId, user.getId()); + // 钉钉登录 + } else if (type.equals(LoginTypeEnum.DINGTALK.getType())) { + wrapper = Wrappers.lambdaUpdate() + .set(SysUser::getWxDingUserid, null) + .eq(SysUser::getUserId, user.getId()); + } + + if (Objects.isNull(wrapper)) { + return R.failed("解绑账号类型不存在"); + } + this.update(wrapper); + return R.ok(); + } + + /** + * 检查用户密码是否正确 + * @param username 用户名 + * @param password 待验证的密码 + * @return 验证结果,成功返回R.ok(),失败返回R.failed() + */ + @Override + public R checkPassword(String username, String password) { + SysUser condition = new SysUser(); + condition.setUsername(username); + SysUser sysUser = this.getOne(new QueryWrapper<>(condition)); + + if (!ENCODER.matches(password, sysUser.getPassword())) { + log.info("原密码错误"); + return R.failed("密码输入错误"); + } else { + return R.ok(); + } + } + + /** + * 重置用户密码 + * + * @param userDto 用户信息DTO,包含用户名、原密码和新密码等信息 + * @return 返回操作结果,成功返回true,失败返回错误信息 + */ + @Override + @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") + public R resetUserPassword(RegisterUserDTO userDto) { + // 校验密码 + R checkedPassword = checkPassword(userDto.getUsername(), userDto.getPassword()); + if (!checkedPassword.isOk()) { + return checkedPassword; + } + + // 新密码校验 + if (StrUtil.equals(userDto.getPassword(), userDto.getNewpassword1())) { + return R.failed("新旧密码不能相同"); + } + + // 重置密码 + String password = ENCODER.encode(userDto.getNewpassword1()); + this.update(Wrappers.lambdaUpdate() + .set(SysUser::getPassword, password) + .set(SysUser::getPasswordModifyTime, LocalDateTime.now()) + .set(SysUser::getPasswordExpireFlag, CommonConstants.STATUS_NORMAL) + .eq(SysUser::getUsername, userDto.getUsername())); + return R.ok(); + } + + /** + * 忘记用户密码 + * @param userDto 用户信息DTO + * @param code 验证码 + * @return 操作结果,成功返回true + */ + @Override + public R forgetUserPassword(RegisterUserDTO userDto, String code) { + if (StrUtil.isBlank(userDto.getPhone())) { + return R.failed("非法参数"); + } + + String codeObj = redisTemplate.opsForValue() + .get(CacheConstants.DEFAULT_CODE_KEY + LoginTypeEnum.SMS.getType() + StringPool.AT + userDto.getPhone()); + if (!StrUtil.equals(codeObj, code)) { + return R.failed("验证码错误"); + } + + String username = lambdaQuery().select(SysUser::getUsername) + .eq(SysUser::getPhone, userDto.getPhone()) + .one() + .getUsername(); + + // 重置密码 + String password = ENCODER.encode(userDto.getNewpassword1()); + this.update(Wrappers.lambdaUpdate() + .set(SysUser::getPassword, password) + .set(SysUser::getPasswordModifyTime, LocalDateTime.now()) + .set(SysUser::getPasswordExpireFlag, CommonConstants.STATUS_NORMAL) + .eq(SysUser::getPhone, userDto.getPhone())); + cacheManager.getCache(CacheConstants.USER_DETAILS).evict(username); + return R.ok(); + } + + @Override + public List listUserIdByRoleIds(List roleIdList) { + return sysUserRoleMapper.selectList(Wrappers.lambdaQuery().in(SysUserRole::getRoleId, roleIdList)) + .stream() + .map(SysUserRole::getUserId) + .toList(); + } + + /** + * 根据部门ID列表获取用户ID列表接口 + * + * @param deptIdList 部门ID列表 + * @return List 返回结果对象,包含根据部门ID列表获取到的用户ID列表信息 + */ + @Override + public List listUserIdByDeptIds(List deptIdList) { + List userList = sysUserDeptMapper + .selectList(Wrappers.lambdaQuery().in(SysUserDept::getDeptId, deptIdList)) + .stream() + .map(SysUserDept::getUserId) + .toList(); + return baseMapper.selectList(Wrappers.lambdaQuery().in(SysUser::getUserId, userList)); + } }