mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-08 20:49:00 +08:00
refactor: 统一代码格式,优化注释风格
This commit is contained in:
1 parent
bcfeec31bc
commit
dc0e814522
86 files changed
+2532
-2518
No files matched your search
+24
-22
@@ -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;
|
||||
}
|
||||
}
|
||||
+1
@@ -20,4 +20,5 @@ public enum SmsBizCodeEnum {
|
||||
private final String code;
|
||||
|
||||
private final String desc;
|
||||
|
||||
}
|
||||
+2
-3
@@ -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;
|
||||
|
||||
}
|
||||
+1
@@ -20,4 +20,5 @@ public class AiChatMessageDTO {
|
||||
* 网络搜索
|
||||
*/
|
||||
private boolean webSearch;
|
||||
|
||||
}
|
||||
+42
-42
@@ -20,56 +20,56 @@ import java.util.Map;
|
||||
@FieldNameConstants
|
||||
public class MessageEmailDTO {
|
||||
|
||||
/**
|
||||
* 邮件列表
|
||||
*/
|
||||
@NotNull
|
||||
private List<String> mailAddress = new ArrayList<>();
|
||||
/**
|
||||
* 邮件列表
|
||||
*/
|
||||
@NotNull
|
||||
private List<String> 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<String, String> htmlValues = new HashMap<>();
|
||||
/**
|
||||
* HTML 值
|
||||
*/
|
||||
private Map<String, String> htmlValues = new HashMap<>();
|
||||
|
||||
/**
|
||||
* CC 列表
|
||||
*/
|
||||
private List<String> ccList = new ArrayList<>();
|
||||
/**
|
||||
* CC 列表
|
||||
*/
|
||||
private List<String> ccList = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* 密件抄送列表
|
||||
*/
|
||||
private List<String> bccList = new ArrayList<>();
|
||||
/**
|
||||
* 密件抄送列表
|
||||
*/
|
||||
private List<String> bccList = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* 附件文件 (fileName)
|
||||
*/
|
||||
private List<String> attachmentList = new ArrayList<>();
|
||||
/**
|
||||
* 附件文件 (fileName)
|
||||
*/
|
||||
private List<String> attachmentList = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* ZIP 名称
|
||||
*/
|
||||
private String zipName;
|
||||
/**
|
||||
* ZIP 名称
|
||||
*/
|
||||
private String zipName;
|
||||
|
||||
/**
|
||||
* 业务代码
|
||||
*/
|
||||
private String bizCode;
|
||||
/**
|
||||
* 业务代码
|
||||
*/
|
||||
private String bizCode;
|
||||
|
||||
}
|
||||
+2
-6
@@ -16,7 +16,6 @@ import java.util.List;
|
||||
@FieldNameConstants
|
||||
public class MessageHookDTO {
|
||||
|
||||
|
||||
/**
|
||||
* 业务代码
|
||||
*/
|
||||
@@ -27,19 +26,16 @@ public class MessageHookDTO {
|
||||
*/
|
||||
private List<String> phoneList = new ArrayList<>();
|
||||
|
||||
|
||||
/**
|
||||
* 通知全部
|
||||
*/
|
||||
private boolean noticeAll;
|
||||
|
||||
|
||||
/**
|
||||
* 消息类型
|
||||
*/
|
||||
private String messageType;
|
||||
|
||||
|
||||
/**
|
||||
* 留言内容
|
||||
*/
|
||||
@@ -57,7 +53,7 @@ public class MessageHookDTO {
|
||||
|
||||
/**
|
||||
* 图片链接
|
||||
*/
|
||||
private String picUrl;
|
||||
*/
|
||||
private String picUrl;
|
||||
|
||||
}
|
||||
+7
-5
@@ -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();
|
||||
}
|
||||
}
|
||||
+21
-20
@@ -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;
|
||||
}
|
||||
+21
-20
@@ -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;
|
||||
}
|
||||
+15
-15
@@ -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<String> permissions = new ArrayList<>();
|
||||
/**
|
||||
* 权限标识集合
|
||||
*/
|
||||
@Schema(description = "权限标识集合")
|
||||
private List<String> permissions = new ArrayList<>();
|
||||
|
||||
}
|
||||
+3
-3
@@ -22,7 +22,6 @@ import java.time.LocalDateTime;
|
||||
@Schema(description = "行政区划表")
|
||||
public class SysAreaEntity extends Model<SysAreaEntity> {
|
||||
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@@ -123,6 +122,7 @@ public class SysAreaEntity extends Model<SysAreaEntity> {
|
||||
*/
|
||||
@TableLogic
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description = "删除标记")
|
||||
private String delFlag;
|
||||
@Schema(description = "删除标记")
|
||||
private String delFlag;
|
||||
|
||||
}
|
||||
+2
-2
@@ -132,7 +132,7 @@ public class SysFile extends Model<SysFile> {
|
||||
*/
|
||||
@TableLogic
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description = "删除标记,1:已删除,0:正常")
|
||||
private String delFlag;
|
||||
@Schema(description = "删除标记,1:已删除,0:正常")
|
||||
private String delFlag;
|
||||
|
||||
}
|
||||
+2
-2
@@ -154,7 +154,7 @@ public class SysMenu extends Model<SysMenu> {
|
||||
*/
|
||||
@TableLogic
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description = "删除标记,1:已删除,0:正常")
|
||||
private String delFlag;
|
||||
@Schema(description = "删除标记,1:已删除,0:正常")
|
||||
private String delFlag;
|
||||
|
||||
}
|
||||
+1
-1
@@ -117,6 +117,6 @@ public class SysRouteConf extends Model<SysRouteConf> {
|
||||
@TableLogic
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description = "删除标记,1:已删除,0:正常")
|
||||
private String delFlag;
|
||||
private String delFlag;
|
||||
|
||||
}
|
||||
+2
-2
@@ -120,7 +120,7 @@ public class SysScheduleEntity extends Model<SysScheduleEntity> {
|
||||
*/
|
||||
@TableLogic
|
||||
@Schema(description = "删除标记")
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private String delFlag;
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private String delFlag;
|
||||
|
||||
}
|
||||
+31
-31
@@ -22,71 +22,71 @@ import java.time.LocalDateTime;
|
||||
@Schema(description = "敏感词")
|
||||
public class SysSensitiveWordEntity extends Model<SysSensitiveWordEntity> {
|
||||
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
* 主键
|
||||
*/
|
||||
@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;
|
||||
|
||||
}
|
||||
+37
-37
@@ -24,83 +24,83 @@ import java.time.LocalDateTime;
|
||||
@Schema(description = "系统配置")
|
||||
public class SysSystemConfigEntity extends Model<SysSystemConfigEntity> {
|
||||
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
* 主键
|
||||
*/
|
||||
@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;
|
||||
|
||||
}
|
||||
+12
-12
@@ -37,19 +37,19 @@ import java.io.Serial;
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class SysTenantUser extends Model<SysTenantUser> {
|
||||
|
||||
@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;
|
||||
|
||||
}
|
||||
+1
-3
@@ -124,14 +124,12 @@ public class SysUser extends Model<SysUser> implements Serializable {
|
||||
@Schema(description = "密码过期标记")
|
||||
private String passwordExpireFlag;
|
||||
|
||||
|
||||
/**
|
||||
* 密码修改时间
|
||||
*/
|
||||
@Schema(description = "密码修改时间")
|
||||
private LocalDateTime passwordModifyTime;
|
||||
|
||||
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
@@ -146,7 +144,6 @@ public class SysUser extends Model<SysUser> implements Serializable {
|
||||
@Schema(description = "头像地址")
|
||||
private String avatar;
|
||||
|
||||
|
||||
/**
|
||||
* 租户ID
|
||||
*/
|
||||
@@ -214,4 +211,5 @@ public class SysUser extends Model<SysUser> implements Serializable {
|
||||
@PropertyName("邮箱")
|
||||
@Schema(description = "邮箱")
|
||||
private String email;
|
||||
|
||||
}
|
||||
+2
-2
@@ -35,7 +35,7 @@ import java.io.Serial;
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class SysUserPost extends Model<SysUserPost> {
|
||||
|
||||
@Serial
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
@@ -50,10 +50,10 @@ public class SysUserPost extends Model<SysUserPost> {
|
||||
@Schema(description = "岗位id")
|
||||
private Long postId;
|
||||
|
||||
|
||||
/**
|
||||
* 租户ID
|
||||
*/
|
||||
@Schema(description = "租户ID")
|
||||
private Long tenantId;
|
||||
|
||||
}
|
||||
+17
-18
@@ -41,26 +41,25 @@ import java.io.Serial;
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class SysUserRole extends Model<SysUserRole> {
|
||||
|
||||
@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;
|
||||
|
||||
}
|
||||
+26
-26
@@ -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);
|
||||
}
|
||||
+16
-17
@@ -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<List<SysMenu>> getMenuDetails(@SpringQueryMap SysMenu sysMenu);
|
||||
|
||||
/**
|
||||
* 获取菜单详细信息
|
||||
*
|
||||
* @param sysMenu SYS菜单
|
||||
* @return {@link R }<{@link List }<{@link SysMenu }>>
|
||||
*/
|
||||
@GetMapping("/menu/details")
|
||||
R<List<SysMenu>> getMenuDetails(@SpringQueryMap SysMenu sysMenu);
|
||||
/**
|
||||
* 保存菜单
|
||||
*
|
||||
* @param sysMenu SYS菜单
|
||||
* @return {@link R }<{@link Boolean }>
|
||||
*/
|
||||
@PostMapping("/menu")
|
||||
R<SysMenu> saveMenu(@RequestBody SysMenu sysMenu);
|
||||
|
||||
|
||||
/**
|
||||
* 保存菜单
|
||||
*
|
||||
* @param sysMenu SYS菜单
|
||||
* @return {@link R }<{@link Boolean }>
|
||||
*/
|
||||
@PostMapping("/menu")
|
||||
R<SysMenu> saveMenu(@RequestBody SysMenu sysMenu);
|
||||
}
|
||||
+1
-1
@@ -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);
|
||||
|
||||
}
|
||||
+1
-2
@@ -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<List<SysRouteConf>> getRouteDetails();
|
||||
|
||||
|
||||
/**
|
||||
* 保存 sys route conf
|
||||
*
|
||||
@@ -56,4 +54,5 @@ public interface RemoteRouteConfService {
|
||||
*/
|
||||
@PostMapping("/route/save")
|
||||
R<SysRouteConf> saveSysRouteConf(@RequestBody SysRouteConf SysRouteConf);
|
||||
|
||||
}
|
||||
+2
-6
@@ -46,9 +46,7 @@ public class DataUtil {
|
||||
|
||||
optionalDept.ifPresent(list::add);
|
||||
|
||||
List<SysDept> collect = allDeptList.stream()
|
||||
.filter(w -> w.getParentId() == deptId)
|
||||
.toList();
|
||||
List<SysDept> collect = allDeptList.stream().filter(w -> w.getParentId() == deptId).toList();
|
||||
|
||||
if (CollUtil.isEmpty(collect)) {
|
||||
return list;
|
||||
@@ -72,9 +70,7 @@ public class DataUtil {
|
||||
List<SysMenu> list = new ArrayList<>();
|
||||
list.add(allMenuList.stream().filter(w -> w.getMenuId() == menuId).findFirst().get());
|
||||
|
||||
List<SysMenu> collect = allMenuList.stream()
|
||||
.filter(w -> w.getParentId() == menuId)
|
||||
.toList();
|
||||
List<SysMenu> collect = allMenuList.stream().filter(w -> w.getParentId() == menuId).toList();
|
||||
if (CollUtil.isEmpty(collect)) {
|
||||
return list;
|
||||
}
|
||||
|
||||
+1
@@ -29,4 +29,5 @@ public class SysSocialDetailsVO {
|
||||
*/
|
||||
@Schema(description = "扩展字段")
|
||||
private String ext;
|
||||
|
||||
}
|
||||
+1
-1
@@ -54,9 +54,9 @@ public class SysSystemSmsConfigVO {
|
||||
*/
|
||||
private int retryInterval = 5;
|
||||
|
||||
|
||||
/**
|
||||
* 最大发送数量,默认integer上限
|
||||
*/
|
||||
private int maximum = Integer.MAX_VALUE;
|
||||
|
||||
}
|
||||
+1
-1
@@ -75,7 +75,7 @@ public class UserExcelVO implements Serializable {
|
||||
*/
|
||||
@NotBlank(message = "部门名称不能为空")
|
||||
@ExcelProperty("部门名称")
|
||||
private String deptNameList;
|
||||
private String deptNameList;
|
||||
|
||||
/**
|
||||
* 角色列表
|
||||
|
||||
@@ -153,14 +153,12 @@ public class UserVO implements Serializable {
|
||||
@Schema(description = "头像")
|
||||
private String avatar;
|
||||
|
||||
|
||||
/**
|
||||
* 租户ID
|
||||
*/
|
||||
@Schema(description = "所属租户")
|
||||
private Long tenantId;
|
||||
|
||||
|
||||
@Schema(description = "所属部门名称")
|
||||
private List<SysDept> 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;
|
||||
|
||||
}
|
||||
+48
-48
@@ -56,62 +56,62 @@ import java.util.Map;
|
||||
@ConditionalOnDiscoveryEnabled
|
||||
public class DynamicRouteInitRunner implements InitializingBean {
|
||||
|
||||
private final RedisTemplate<String, String> redisTemplate;
|
||||
private final RedisTemplate<String, String> 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<String, String, RouteDefinitionVo> stringStringValueOperations = redisTemplate.opsForHash();
|
||||
stringStringValueOperations.put(CacheConstants.ROUTE_KEY, route.getRouteId(), vo);
|
||||
});
|
||||
redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(RouteDefinitionVo.class));
|
||||
HashOperations<String, String, RouteDefinitionVo> 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));
|
||||
}
|
||||
|
||||
}
|
||||
+18
-18
@@ -25,26 +25,26 @@ import java.util.Optional;
|
||||
@RequiredArgsConstructor
|
||||
public class AiChatController {
|
||||
|
||||
private final Optional<DeepSeekClient> deepSeekClientOptional;
|
||||
private final Optional<DeepSeekClient> deepSeekClientOptional;
|
||||
|
||||
/**
|
||||
* 聊天
|
||||
*
|
||||
* @param message 消息
|
||||
* @return {@link Flux }<{@link ChatCompletionResponse }>
|
||||
*/
|
||||
@PostMapping("/chat")
|
||||
public Flux<ChatCompletionResponse> chat(@RequestBody AiChatMessageDTO message) {
|
||||
|
||||
/**
|
||||
* 聊天
|
||||
*
|
||||
* @param message 消息
|
||||
* @return {@link Flux }<{@link ChatCompletionResponse }>
|
||||
*/
|
||||
@PostMapping("/chat")
|
||||
public Flux<ChatCompletionResponse> 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());
|
||||
}
|
||||
}
|
||||
-4
@@ -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")
|
||||
|
||||
+3
-3
@@ -128,8 +128,8 @@ public class SysAreaController {
|
||||
@GetMapping("/export")
|
||||
@HasPermission("sys_sysArea_export")
|
||||
public List<SysAreaEntity> 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)));
|
||||
}
|
||||
|
||||
}
|
||||
+3
-2
@@ -110,7 +110,8 @@ public class SysAuditLogController {
|
||||
@GetMapping("/export")
|
||||
@HasPermission("sys_audit_export")
|
||||
public List<SysAuditLog> 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)));
|
||||
}
|
||||
|
||||
}
|
||||
+7
-12
@@ -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<SysDictItem> export(SysDictItem sysDictItem) {
|
||||
return sysDictItemService.list(Wrappers.query(sysDictItem));
|
||||
}
|
||||
@ResponseExcel
|
||||
@GetMapping("/export")
|
||||
public List<SysDictItem> export(SysDictItem sysDictItem) {
|
||||
return sysDictItemService.list(Wrappers.query(sysDictItem));
|
||||
}
|
||||
|
||||
}
|
||||
+7
-12
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
+2
-2
@@ -141,8 +141,8 @@ public class SysI18nController {
|
||||
@GetMapping("/export")
|
||||
@HasPermission("sys_i18n_export")
|
||||
public List<SysI18nEntity> 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)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+2
-1
@@ -119,7 +119,8 @@ public class SysLogController {
|
||||
@GetMapping("/export")
|
||||
@HasPermission("sys_log_export")
|
||||
public List<SysLog> 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)));
|
||||
}
|
||||
|
||||
}
|
||||
+83
-84
@@ -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<SysMenu> 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<SysMenu> 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));
|
||||
}
|
||||
|
||||
}
|
||||
+9
-12
@@ -125,8 +125,8 @@ public class SysMessageController {
|
||||
@GetMapping("/export")
|
||||
@HasPermission("sys_message_export")
|
||||
public List<SysMessageEntity> 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);
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -162,8 +162,8 @@ public class SysPublicParamController {
|
||||
@GetMapping("/export")
|
||||
@HasPermission("sys_syspublicparam_edit")
|
||||
public List<SysPublicParam> 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)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+2
-2
@@ -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<Boolean> forgetUserPassword(@RequestBody RegisterUserDTO userDto, @PathVariable String code) {
|
||||
return userService.forgetUserPassword(userDto, code);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+2
-1
@@ -82,5 +82,6 @@ public class SysRouteConfController {
|
||||
@HasPermission("sys_route_manage")
|
||||
public R saveRoute(@RequestBody SysRouteConf routeConf) {
|
||||
return R.ok(sysRouteConfService.saveRoute(routeConf));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+19
-14
@@ -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<SysSensitiveWordEntity> 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.<SysSensitiveWordEntity>lambdaQuery()
|
||||
.eq(SysSensitiveWordEntity::getSensitiveType, type)).stream().map(SysSensitiveWordEntity::getSensitiveWord).toList());
|
||||
return R.ok(sysSensitiveWordService
|
||||
.list(Wrappers.<SysSensitiveWordEntity>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<SysSensitiveWordEntity> 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<Void>) 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();
|
||||
}
|
||||
|
||||
}
|
||||
+3
-3
@@ -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<SysSocialDetails> 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)));
|
||||
}
|
||||
|
||||
}
|
||||
+7
-6
@@ -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<SysSystemConfigEntity> 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)));
|
||||
}
|
||||
|
||||
}
|
||||
+2
-2
@@ -29,8 +29,8 @@ public class SysSystemInfoController {
|
||||
@GetMapping("/cache")
|
||||
public R cache() {
|
||||
Properties info = RedisUtils.execute((RedisCallback<Properties>) RedisServerCommands::info);
|
||||
Properties commandStats = RedisUtils.execute((RedisCallback<Properties>)
|
||||
connection -> connection.serverCommands().info("commandstats"));
|
||||
Properties commandStats = RedisUtils
|
||||
.execute((RedisCallback<Properties>) connection -> connection.serverCommands().info("commandstats"));
|
||||
Object dbSize = RedisUtils.execute((RedisCallback<Object>) RedisServerCommands::dbSize);
|
||||
|
||||
if (commandStats == null) {
|
||||
|
||||
+192
-195
@@ -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.<SysTenant>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.<SysTenant>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删除租户
|
||||
* <p>
|
||||
* 为了保证安全,这里只删除租户表的数据,不删除基础表中的租户初始化数据。
|
||||
*
|
||||
* @param ids id 列表
|
||||
* @return R
|
||||
*/
|
||||
@SysLog("删除租户")
|
||||
@DeleteMapping
|
||||
@HasPermission("sys_systenant_del")
|
||||
public R removeById(@RequestBody Long[] ids) {
|
||||
return R.ok(sysTenantService.removeTenant(ids));
|
||||
}
|
||||
/**
|
||||
* 通过id删除租户
|
||||
* <p>
|
||||
* 为了保证安全,这里只删除租户表的数据,不删除基础表中的租户初始化数据。
|
||||
*
|
||||
* @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<SysTenant> 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<SysTenant> 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<SysTenant> 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<SysTenant> 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<Tree<Long>> 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<Tree<Long>> 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);
|
||||
}
|
||||
|
||||
}
|
||||
+224
-230
@@ -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<UserInfo> 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<UserInfo> 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<UserExcelVO> 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<UserExcelVO> 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<List<Long>> 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<List<Long>> 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<List<SysUser>> 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<List<SysUser>> getUserIdListByDeptIdList(Long[] deptIdList) {
|
||||
return R.ok(userService.listUserIdByDeptIds(CollUtil.toList(deptIdList)));
|
||||
}
|
||||
/**
|
||||
* 根据用户名获取用户列表
|
||||
* @param username 用户名
|
||||
* @return 用户列表
|
||||
*/
|
||||
@GetMapping("/getUserListByUserName")
|
||||
public R<List<SysUser>> getUserListByUserName(String username) {
|
||||
return R.ok(userService.list(Wrappers.<SysUser>lambdaQuery().like(SysUser::getUsername, username)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据用户名获取用户列表
|
||||
*
|
||||
* @param username 用户名
|
||||
* @return 用户列表
|
||||
*/
|
||||
@GetMapping("/getUserListByUserName")
|
||||
public R<List<SysUser>> getUserListByUserName(String username) {
|
||||
return R.ok(userService.list(Wrappers.<SysUser>lambdaQuery().like(SysUser::getUsername, username)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据IDS获取用户列表
|
||||
*
|
||||
* @param userIds ID列表
|
||||
* @return 用户列表
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public R<List<SysUser>> getUserListByIds(@RequestParam("userIds") List<Long> userIds) {
|
||||
return R.ok(userService.list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUserId, userIds)));
|
||||
}
|
||||
/**
|
||||
* 根据IDS获取用户列表
|
||||
* @param userIds ID列表
|
||||
* @return 用户列表
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public R<List<SysUser>> getUserListByIds(@RequestParam("userIds") List<Long> userIds) {
|
||||
return R.ok(userService.list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUserId, userIds)));
|
||||
}
|
||||
|
||||
}
|
||||
-1
@@ -66,7 +66,6 @@ public class CasLoginHandler extends AbstractLoginHandler {
|
||||
|
||||
/**
|
||||
* 根据用户名获取用户信息
|
||||
*
|
||||
* @param username 用户名
|
||||
* @return 用户信息对象,如果用户不存在则返回null
|
||||
*/
|
||||
|
||||
+2
-2
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
+9
-10
@@ -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<UserInfo> userInfoR = sysUserService.getUserInfo(userDTO);
|
||||
R<UserInfo> 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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+57
-57
@@ -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
|
||||
* <p>
|
||||
* 通过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
|
||||
* <p>
|
||||
* 通过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<UserInfo> userInfoR = sysUserService.getUserInfo(userDTO);
|
||||
R<UserInfo> 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;
|
||||
}
|
||||
|
||||
}
|
||||
+2
-2
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
-1
@@ -49,7 +49,6 @@ public class SmsLoginHandler extends AbstractLoginHandler {
|
||||
|
||||
/**
|
||||
* 通过手机号获取用户信息
|
||||
*
|
||||
* @param identify 手机号标识
|
||||
* @return 用户信息,未找到时返回null
|
||||
*/
|
||||
|
||||
+56
-56
@@ -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
|
||||
* <p>
|
||||
* 通过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
|
||||
* <p>
|
||||
* 通过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<UserInfo> userInfoR = sysUserService.getUserInfo(userDTO);
|
||||
R<UserInfo> 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;
|
||||
}
|
||||
|
||||
}
|
||||
+9
-10
@@ -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<UserInfo> userInfoR = sysUserService.getUserInfo(userDTO);
|
||||
R<UserInfo> 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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
-1
@@ -7,5 +7,4 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
@Mapper
|
||||
public interface SysAreaMapper extends PigxBaseMapper<SysAreaEntity> {
|
||||
|
||||
|
||||
}
|
||||
-1
@@ -7,5 +7,4 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
@Mapper
|
||||
public interface SysSensitiveWordMapper extends PigxBaseMapper<SysSensitiveWordEntity> {
|
||||
|
||||
|
||||
}
|
||||
-1
@@ -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;
|
||||
|
||||
|
||||
/**
|
||||
* 系统租户用户映射接口
|
||||
*
|
||||
|
||||
-1
@@ -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接口
|
||||
*
|
||||
|
||||
-1
@@ -62,7 +62,6 @@ public interface SysUserMapper extends PigxBaseMapper<SysUser> {
|
||||
|
||||
/**
|
||||
* 通过ID查询用户信息
|
||||
*
|
||||
* @param id 用户ID
|
||||
* @return 用户信息VO对象
|
||||
*/
|
||||
|
||||
+1
@@ -25,4 +25,5 @@ public interface SysAreaService extends IService<SysAreaEntity> {
|
||||
* @return Page
|
||||
*/
|
||||
Page selectPage(Page page, SysAreaEntity sysArea);
|
||||
|
||||
}
|
||||
+4
-6
@@ -38,12 +38,11 @@ public interface SysFileService extends IService<SysFile> {
|
||||
|
||||
/**
|
||||
* 上传文件
|
||||
*
|
||||
* @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<SysFile> {
|
||||
|
||||
/**
|
||||
* 根据文件ID删除文件
|
||||
*
|
||||
* @param id 文件ID
|
||||
* @return 删除是否成功
|
||||
*/
|
||||
|
||||
+4
-10
@@ -37,7 +37,6 @@ public interface SysMessageService extends IService<SysMessageEntity> {
|
||||
|
||||
/**
|
||||
* 读取信息
|
||||
*
|
||||
* @param id id
|
||||
* @return true/false
|
||||
*/
|
||||
@@ -45,7 +44,6 @@ public interface SysMessageService extends IService<SysMessageEntity> {
|
||||
|
||||
/**
|
||||
* 获取信息
|
||||
*
|
||||
* @param id id
|
||||
* @return messageVO
|
||||
*/
|
||||
@@ -63,7 +61,6 @@ public interface SysMessageService extends IService<SysMessageEntity> {
|
||||
|
||||
/**
|
||||
* 发送手机验证码
|
||||
*
|
||||
* @param mobile mobile
|
||||
* @return code
|
||||
*/
|
||||
@@ -71,7 +68,6 @@ public interface SysMessageService extends IService<SysMessageEntity> {
|
||||
|
||||
/**
|
||||
* 发送短信
|
||||
*
|
||||
* @param messageSmsDTO 消息 短信 DTO
|
||||
* @return {@link R }
|
||||
*/
|
||||
@@ -79,7 +75,6 @@ public interface SysMessageService extends IService<SysMessageEntity> {
|
||||
|
||||
/**
|
||||
* 发送邮件
|
||||
*
|
||||
* @param messageEmailDTO 留言内容 电子邮件 DTO
|
||||
* @return {@link R }
|
||||
*/
|
||||
@@ -87,7 +82,6 @@ public interface SysMessageService extends IService<SysMessageEntity> {
|
||||
|
||||
/**
|
||||
* 发送钩子消息
|
||||
*
|
||||
* @param messageHookDTO 消息挂钩 DTO
|
||||
* @return {@link R }
|
||||
*/
|
||||
@@ -95,9 +89,9 @@ public interface SysMessageService extends IService<SysMessageEntity> {
|
||||
|
||||
/**
|
||||
* 列出 Hook 业务代码
|
||||
*
|
||||
* @param messageHookDTO 消息钩子 DTO
|
||||
* @return {@link R }
|
||||
*/
|
||||
R listHookBizCode(MessageHookDTO messageHookDTO);
|
||||
* @return {@link R }
|
||||
*/
|
||||
R listHookBizCode(MessageHookDTO messageHookDTO);
|
||||
|
||||
}
|
||||
+1
-1
@@ -39,9 +39,9 @@ public interface SysRouteConfService extends IService<SysRouteConf> {
|
||||
|
||||
/**
|
||||
* 保存路由
|
||||
*
|
||||
* @param routeConf 路由配置
|
||||
* @return {@link SysRouteConf }
|
||||
*/
|
||||
SysRouteConf saveRoute(SysRouteConf routeConf);
|
||||
|
||||
}
|
||||
+3
@@ -9,6 +9,7 @@ public interface SysSensitiveWordService extends IService<SysSensitiveWordEntity
|
||||
|
||||
/**
|
||||
* 查询敏感词
|
||||
*
|
||||
* @param sysSensitiveWord 敏感词
|
||||
* @return 敏感词列表
|
||||
*/
|
||||
@@ -16,8 +17,10 @@ public interface SysSensitiveWordService extends IService<SysSensitiveWordEntity
|
||||
|
||||
/**
|
||||
* 保存敏感词
|
||||
*
|
||||
* @param sysSensitiveWord
|
||||
* @return
|
||||
*/
|
||||
Boolean saveSensitive(SysSensitiveWordEntity sysSensitiveWord);
|
||||
|
||||
}
|
||||
+1
@@ -48,4 +48,5 @@ public interface SysSocialDetailsService extends IService<SysSocialDetails> {
|
||||
UserInfo getUserInfo(String inStr);
|
||||
|
||||
List<SysSocialDetailsVO> selectList();
|
||||
|
||||
}
|
||||
+1
@@ -37,4 +37,5 @@ public interface SysSystemConfigService extends IService<SysSystemConfigEntity>
|
||||
* @return {@link R }
|
||||
*/
|
||||
R updateSystemConfig(SysSystemConfigEntity sysSystemConfig);
|
||||
|
||||
}
|
||||
+16
-25
@@ -37,39 +37,35 @@ import java.util.Map;
|
||||
public interface SysTenantService extends IService<SysTenant> {
|
||||
|
||||
/**
|
||||
* 获取正常的租户列表
|
||||
*
|
||||
* @return 正常的租户列表
|
||||
* 获取正常的租户列表
|
||||
* @return 正常的租户列表
|
||||
*/
|
||||
List<SysTenant> getNormalTenant();
|
||||
|
||||
/**
|
||||
* 保存租户信息
|
||||
*
|
||||
* @param sysTenant 租户信息对象
|
||||
* @return 保存是否成功
|
||||
* 保存租户信息
|
||||
* @param sysTenant 租户信息对象
|
||||
* @return 保存是否成功
|
||||
*/
|
||||
Boolean saveTenant(SysTenant sysTenant);
|
||||
|
||||
/**
|
||||
* 修改租户信息
|
||||
*
|
||||
* @param sysTenant 租户信息对象
|
||||
* @return 修改是否成功
|
||||
* 修改租户信息
|
||||
* @param sysTenant 租户信息对象
|
||||
* @return 修改是否成功
|
||||
*/
|
||||
Boolean updateTenant(SysTenant sysTenant);
|
||||
|
||||
/**
|
||||
* 获取用户所属租户列表
|
||||
*
|
||||
* @return 用户所属租户列表
|
||||
*/
|
||||
List<SysTenant> getUserTenant();
|
||||
/**
|
||||
* 获取用户所属租户列表
|
||||
*
|
||||
* @return 用户所属租户列表
|
||||
*/
|
||||
List<SysTenant> getUserTenant();
|
||||
|
||||
/**
|
||||
* 获取用户租户分页信息
|
||||
*
|
||||
* @param page 分页参数
|
||||
* @param page 分页参数
|
||||
* @param userDTO 用户信息
|
||||
* @return 用户租户分页结果
|
||||
*/
|
||||
@@ -77,7 +73,6 @@ public interface SysTenantService extends IService<SysTenant> {
|
||||
|
||||
/**
|
||||
* 移除租户用户
|
||||
*
|
||||
* @param tenantUserDTO 租户用户信息
|
||||
* @return 是否移除成功
|
||||
*/
|
||||
@@ -85,7 +80,6 @@ public interface SysTenantService extends IService<SysTenant> {
|
||||
|
||||
/**
|
||||
* 根据用户信息查询租户用户列表
|
||||
*
|
||||
* @param userDTO 用户信息传输对象
|
||||
* @return 租户用户列表
|
||||
*/
|
||||
@@ -93,7 +87,6 @@ public interface SysTenantService extends IService<SysTenant> {
|
||||
|
||||
/**
|
||||
* 保存租户用户信息
|
||||
*
|
||||
* @param tenantUserDTO 租户用户信息DTO
|
||||
* @return 保存是否成功
|
||||
*/
|
||||
@@ -101,7 +94,6 @@ public interface SysTenantService extends IService<SysTenant> {
|
||||
|
||||
/**
|
||||
* 获取租户角色列表
|
||||
*
|
||||
* @param userDTO 用户信息
|
||||
* @return 租户角色列表
|
||||
*/
|
||||
@@ -109,7 +101,6 @@ public interface SysTenantService extends IService<SysTenant> {
|
||||
|
||||
/**
|
||||
* 移除租户
|
||||
*
|
||||
* @param ids 租户ID列表
|
||||
* @return 是否移除成功
|
||||
*/
|
||||
@@ -117,7 +108,6 @@ public interface SysTenantService extends IService<SysTenant> {
|
||||
|
||||
/**
|
||||
* 更新用户租户信息
|
||||
*
|
||||
* @param userDto 用户数据传输对象
|
||||
* @return 更新结果
|
||||
*/
|
||||
@@ -127,4 +117,5 @@ public interface SysTenantService extends IService<SysTenant> {
|
||||
* 检查或更新租户信息
|
||||
*/
|
||||
Long getOrUpdateTenant();
|
||||
|
||||
}
|
||||
+124
-138
@@ -39,161 +39,147 @@ import java.util.List;
|
||||
*/
|
||||
public interface SysUserService extends IService<SysUser> {
|
||||
|
||||
/**
|
||||
* 查询用户信息
|
||||
*
|
||||
* @param userDTO 用户数据传输对象
|
||||
* @return 用户信息对象
|
||||
*/
|
||||
R<UserInfo> getUserInfo(UserDTO userDTO);
|
||||
/**
|
||||
* 查询用户信息
|
||||
*
|
||||
* @param userDTO 用户数据传输对象
|
||||
* @return 用户信息对象
|
||||
*/
|
||||
R<UserInfo> 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<Boolean> updateUserInfo(UserDTO userDto);
|
||||
/**
|
||||
* 更新当前用户基本信息
|
||||
*
|
||||
* @param userDto 用户信息
|
||||
* @return Boolean
|
||||
*/
|
||||
R<Boolean> 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<SysUser> listAncestorUsers(String username);
|
||||
/**
|
||||
* 查询上级部门的用户信息
|
||||
* @param username 用户名
|
||||
* @return R
|
||||
*/
|
||||
List<SysUser> 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<UserExcelVO> listUser(UserDTO userDTO, Long[] ids);
|
||||
/**
|
||||
* 查询全部的用户
|
||||
* @param userDTO 查询条件
|
||||
* @param ids 目标列表
|
||||
* @return list
|
||||
*/
|
||||
List<UserExcelVO> listUser(UserDTO userDTO, Long[] ids);
|
||||
|
||||
/**
|
||||
* excel 导入用户
|
||||
*
|
||||
* @param excelVOList excel 列表数据
|
||||
* @param bindingResult 错误数据
|
||||
* @return ok fail
|
||||
*/
|
||||
R importUser(List<UserExcelVO> excelVOList, BindingResult bindingResult);
|
||||
/**
|
||||
* excel 导入用户
|
||||
*
|
||||
* @param excelVOList excel 列表数据
|
||||
* @param bindingResult 错误数据
|
||||
* @return ok fail
|
||||
*/
|
||||
R importUser(List<UserExcelVO> excelVOList, BindingResult bindingResult);
|
||||
|
||||
/**
|
||||
* 注册用户
|
||||
*
|
||||
* @param userDto 用户信息
|
||||
* @return success/false
|
||||
*/
|
||||
R<Boolean> registerUser(RegisterUserDTO userDto);
|
||||
/**
|
||||
* 注册用户
|
||||
* @param userDto 用户信息
|
||||
* @return success/false
|
||||
*/
|
||||
R<Boolean> registerUser(RegisterUserDTO userDto);
|
||||
|
||||
/**
|
||||
* 锁定用户
|
||||
*
|
||||
* @param username 用户名
|
||||
* @return R
|
||||
*/
|
||||
R<Boolean> lockUser(String username);
|
||||
/**
|
||||
* 锁定用户
|
||||
* @param username 用户名
|
||||
* @return R
|
||||
*/
|
||||
R<Boolean> 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<Long> 返回结果对象,包含根据角色ID列表获取到的用户ID列表信息
|
||||
*/
|
||||
List<Long> listUserIdByRoleIds(List<Long> roleIdList);
|
||||
/**
|
||||
* 根据角色ID列表获取用户ID列表接口
|
||||
* @param roleIdList 角色ID列表
|
||||
* @return List<Long> 返回结果对象,包含根据角色ID列表获取到的用户ID列表信息
|
||||
*/
|
||||
List<Long> listUserIdByRoleIds(List<Long> roleIdList);
|
||||
|
||||
/**
|
||||
* 根据部门ID列表获取用户ID列表接口
|
||||
*
|
||||
* @param deptIdList 部门ID列表
|
||||
* @return List<Long> 返回结果对象,包含根据部门ID列表获取到的用户ID列表信息
|
||||
*/
|
||||
List<SysUser> listUserIdByDeptIds(List<Long> deptIdList);
|
||||
/**
|
||||
* 根据部门ID列表获取用户ID列表接口
|
||||
* @param deptIdList 部门ID列表
|
||||
* @return List<Long> 返回结果对象,包含根据部门ID列表获取到的用户ID列表信息
|
||||
*/
|
||||
List<SysUser> listUserIdByDeptIds(List<Long> deptIdList);
|
||||
|
||||
/**
|
||||
* 重置用户密码
|
||||
*
|
||||
* @param userDto 用户信息
|
||||
* @return
|
||||
*/
|
||||
R<Boolean> resetUserPassword(RegisterUserDTO userDto);
|
||||
/**
|
||||
* 重置用户密码
|
||||
* @param userDto 用户信息
|
||||
* @return
|
||||
*/
|
||||
R<Boolean> resetUserPassword(RegisterUserDTO userDto);
|
||||
|
||||
/**
|
||||
* 找回用户密码
|
||||
*
|
||||
* @param userDto 用户信息
|
||||
* @param code 验证码
|
||||
* @return
|
||||
*/
|
||||
R<Boolean> forgetUserPassword(RegisterUserDTO userDto, String code);
|
||||
/**
|
||||
* 找回用户密码
|
||||
* @param userDto 用户信息
|
||||
* @param code 验证码
|
||||
* @return
|
||||
*/
|
||||
R<Boolean> forgetUserPassword(RegisterUserDTO userDto, String code);
|
||||
|
||||
}
|
||||
+6
-4
@@ -29,6 +29,7 @@ import java.util.Optional;
|
||||
*/
|
||||
@Service
|
||||
public class SysAreaServiceImpl extends ServiceImpl<SysAreaMapper, SysAreaEntity> implements SysAreaService {
|
||||
|
||||
/**
|
||||
* 查询行政区划树
|
||||
*
|
||||
@@ -38,13 +39,13 @@ public class SysAreaServiceImpl extends ServiceImpl<SysAreaMapper, SysAreaEntity
|
||||
@Override
|
||||
public List<Tree<Long>> selectTree(SysAreaEntity sysArea) {
|
||||
List<SysAreaEntity> entityList = baseMapper.selectList(Wrappers.lambdaQuery(sysArea)
|
||||
.eq(SysAreaEntity::getAreaStatus, YesNoEnum.YES.getCode())
|
||||
.eq(SysAreaEntity::getAreaStatus, YesNoEnum.YES.getCode())
|
||||
.orderByDesc(SysAreaEntity::getAreaSort));
|
||||
|
||||
List<TreeNode<Long>> nodeList = CollUtil.newArrayList();
|
||||
for (SysAreaEntity sysAreaEntity : entityList) {
|
||||
TreeNode<Long> treeNode = new TreeNode<>(sysAreaEntity.getAdcode(), sysAreaEntity.getPid()
|
||||
, sysAreaEntity.getName(), -Optional.ofNullable(sysAreaEntity.getAreaSort()).orElse(0L));
|
||||
TreeNode<Long> treeNode = new TreeNode<>(sysAreaEntity.getAdcode(), sysAreaEntity.getPid(),
|
||||
sysAreaEntity.getName(), -Optional.ofNullable(sysAreaEntity.getAreaSort()).orElse(0L));
|
||||
|
||||
HashMap<String, Object> extraMap = MapUtil.of(SysAreaEntity.Fields.adcode, sysAreaEntity.getAdcode());
|
||||
extraMap.put(SysAreaEntity.Fields.hot, sysAreaEntity.getHot());
|
||||
@@ -70,5 +71,6 @@ public class SysAreaServiceImpl extends ServiceImpl<SysAreaMapper, SysAreaEntity
|
||||
wrapper.orderByAsc(SysAreaEntity::getAreaType);
|
||||
wrapper.orderByDesc(SysAreaEntity::getAreaSort);
|
||||
return baseMapper.selectPage(page, wrapper);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+54
-61
@@ -73,7 +73,6 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
|
||||
/**
|
||||
* 删除部门
|
||||
*
|
||||
* @param id 部门 ID
|
||||
* @return 成功、失败
|
||||
*/
|
||||
@@ -90,7 +89,6 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
|
||||
/**
|
||||
* 查询全部部门树
|
||||
*
|
||||
* @param deptName
|
||||
* @param parentId
|
||||
* @return 树 部门名称
|
||||
@@ -99,33 +97,33 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
public List<Tree<Long>> selectTree(String deptName, Long parentId) {
|
||||
// 查询全部部门
|
||||
List<SysDept> deptAllList = deptMapper
|
||||
.selectList(Wrappers.<SysDept>lambdaQuery().like(StrUtil.isNotBlank(deptName), SysDept::getName, deptName));
|
||||
.selectList(Wrappers.<SysDept>lambdaQuery().like(StrUtil.isNotBlank(deptName), SysDept::getName, deptName));
|
||||
// 查询数据权限内部门
|
||||
List<Long> deptOwnIdList = deptMapper
|
||||
.selectListByScope(
|
||||
Wrappers.<SysDept>lambdaQuery().like(StrUtil.isNotBlank(deptName), SysDept::getName, deptName),
|
||||
DataScope.of())
|
||||
.stream()
|
||||
.map(SysDept::getDeptId)
|
||||
.toList();
|
||||
.selectListByScope(
|
||||
Wrappers.<SysDept>lambdaQuery().like(StrUtil.isNotBlank(deptName), SysDept::getName, deptName),
|
||||
DataScope.of())
|
||||
.stream()
|
||||
.map(SysDept::getDeptId)
|
||||
.toList();
|
||||
|
||||
// 权限内部门
|
||||
List<TreeNode<Long>> collect = deptAllList.stream()
|
||||
.filter(dept -> dept.getDeptId().intValue() != dept.getParentId())
|
||||
.sorted(Comparator.comparingInt(SysDept::getSortOrder))
|
||||
.map(dept -> {
|
||||
TreeNode<Long> treeNode = new TreeNode<>();
|
||||
treeNode.setId(dept.getDeptId());
|
||||
treeNode.setParentId(dept.getParentId());
|
||||
treeNode.setName(dept.getName());
|
||||
treeNode.setWeight(dept.getSortOrder());
|
||||
// 有权限不返回标识
|
||||
Map<String, Object> 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<Long> treeNode = new TreeNode<>();
|
||||
treeNode.setId(dept.getDeptId());
|
||||
treeNode.setParentId(dept.getParentId());
|
||||
treeNode.setName(dept.getName());
|
||||
treeNode.setWeight(dept.getSortOrder());
|
||||
// 有权限不返回标识
|
||||
Map<String, Object> 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<SysDeptMapper, SysDept> impl
|
||||
|
||||
/**
|
||||
* 导出部门
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@@ -153,10 +150,10 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
DeptExcelVO deptExcelVo = new DeptExcelVO();
|
||||
deptExcelVo.setName(item.getName());
|
||||
Optional<String> 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<SysDeptMapper, SysDept> 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<SysDeptMapper, SysDept> impl
|
||||
|
||||
/**
|
||||
* 查询所有子节点 (包含当前节点)
|
||||
*
|
||||
* @param deptId 部门ID 目标部门ID
|
||||
* @return ID
|
||||
*/
|
||||
@@ -224,37 +220,36 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
* 获取部门负责人
|
||||
* <p>
|
||||
* 1. 根据dept 查询用户 2. 筛选用户列表中 post
|
||||
*
|
||||
* @param deptId deptId
|
||||
* @return user id list
|
||||
*/
|
||||
@Override
|
||||
public List<Long> listDeptLeader(Long deptId) {
|
||||
|
||||
List<SysUserDept> userDeptList = userDeptMapper.selectList(Wrappers.<SysUserDept>lambdaQuery().eq(SysUserDept::getDeptId, deptId));
|
||||
List<SysUserDept> userDeptList = userDeptMapper
|
||||
.selectList(Wrappers.<SysUserDept>lambdaQuery().eq(SysUserDept::getDeptId, deptId));
|
||||
if (CollUtil.isEmpty(userDeptList)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
SysPost deptLeader = postMapper
|
||||
.selectOne(Wrappers.<SysPost>lambdaQuery().eq(SysPost::getPostCode, PostCodeEnum.TEAM_LEADER.getCode()));
|
||||
.selectOne(Wrappers.<SysPost>lambdaQuery().eq(SysPost::getPostCode, PostCodeEnum.TEAM_LEADER.getCode()));
|
||||
if (deptLeader == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
List<Long> userIdList = userDeptList.stream().map(SysUserDept::getUserId).toList();
|
||||
return userPostMapper.selectList(Wrappers.<SysUserPost>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<String, Object> listOrgTree(Long parentDeptId, String type) {
|
||||
@@ -275,15 +270,15 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> 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<SysDept> deptList = this.list(
|
||||
Wrappers.<SysDept>lambdaQuery().eq(Objects.nonNull(parentDeptId), SysDept::getParentId, parentDeptId));
|
||||
@@ -306,8 +301,8 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
|
||||
MPJLambdaWrapper<SysUser> 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<SysUser> userList = userMapper.selectJoinList(userQuery);
|
||||
|
||||
@@ -334,30 +329,28 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
|
||||
/**
|
||||
* 模糊搜索用户
|
||||
*
|
||||
* @param username 用户名/拼音/首字母
|
||||
* @return 匹配到的用户
|
||||
*/
|
||||
public List<OrgTreeVO> getOrgTreeUser(String username) {
|
||||
return userMapper.selectList(Wrappers.<SysUser>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<SysDept> allDeptList, Long parentId, List<SysDept> resDeptList) {
|
||||
|
||||
+12
-9
@@ -123,7 +123,8 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFile> impl
|
||||
fileName = urlFileName;
|
||||
}
|
||||
|
||||
SysFile sysFile = baseMapper.selectOne(Wrappers.<SysFile>lambdaQuery().eq(SysFile::getFileName, fileName), false);
|
||||
SysFile sysFile = baseMapper.selectOne(Wrappers.<SysFile>lambdaQuery().eq(SysFile::getFileName, fileName),
|
||||
false);
|
||||
if (Objects.isNull(sysFile)) {
|
||||
log.warn("文件不存在: {}", fileName);
|
||||
return;
|
||||
@@ -133,7 +134,8 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFile> 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<SysFileMapper, SysFile> impl
|
||||
file.setGroupId(fileGroupDTO.getGroupId());
|
||||
|
||||
// 根据IDS更新对应的SysFile记录
|
||||
baseMapper.update(file, Wrappers.<SysFile>lambdaQuery().in(SysFile::getId, CollUtil.toList(fileGroupDTO.getIds())));
|
||||
baseMapper.update(file,
|
||||
Wrappers.<SysFile>lambdaQuery().in(SysFile::getId, CollUtil.toList(fileGroupDTO.getIds())));
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@@ -259,12 +262,12 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFile> 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);
|
||||
}
|
||||
|
||||
}
|
||||
+6
-4
@@ -131,10 +131,12 @@ public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog> impleme
|
||||
return sysLogList.stream()
|
||||
// 按照日期进行分组
|
||||
.collect(Collectors.groupingBy(log -> DateUtil.format(log.getCreateTime(), DatePattern.NORM_DATE_PATTERN)))
|
||||
.entrySet().stream()
|
||||
.entrySet()
|
||||
.stream()
|
||||
// 将每个日期对应的日志按日志类型分组,并计算每种类型的日志数量
|
||||
.map(entry -> {
|
||||
Map<String, Object> map = entry.getValue().stream()
|
||||
Map<String, Object> 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<SysLogMapper, SysLog> impleme
|
||||
})
|
||||
// 按createTime升序排序
|
||||
.sorted(Comparator.comparing(map -> map.get(SysLog.Fields.createTime).toString()))
|
||||
.toList();
|
||||
}
|
||||
.toList();
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -109,7 +109,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
|
||||
List<TreeNode<Long>> collect = baseMapper
|
||||
.selectList(Wrappers.<SysMenu>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))
|
||||
|
||||
+102
-55
@@ -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<SysMessageMapper, SysMessageEntity> implements SysMessageService {
|
||||
public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMessageEntity>
|
||||
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 ServiceImpl<SysMessageMapper, SysMess
|
||||
}
|
||||
|
||||
// 删除原有用户
|
||||
relationMapper.delete(Wrappers.<SysMessageRelationEntity>lambdaQuery().eq(SysMessageRelationEntity::getMsgId, messageEntity.getId()));
|
||||
relationMapper.delete(Wrappers.<SysMessageRelationEntity>lambdaQuery()
|
||||
.eq(SysMessageRelationEntity::getMsgId, messageEntity.getId()));
|
||||
|
||||
List<OrgTreeVO> userList = sysMessage.getUserList();
|
||||
if (CollUtil.isNotEmpty(userList)) {
|
||||
@@ -177,7 +180,17 @@ public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMess
|
||||
*/
|
||||
@Override
|
||||
public IPage<SysMessageVO> pageUserMessage(Page page, SysMessageVO sysMessage) {
|
||||
MPJLambdaWrapper<SysMessageEntity> wrapper = new MPJLambdaWrapper<SysMessageEntity>().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<SysMessageEntity> wrapper = new MPJLambdaWrapper<SysMessageEntity>()
|
||||
.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 ServiceImpl<SysMessageMapper, SysMess
|
||||
public Boolean readMessage(Long id) {
|
||||
SysMessageRelationEntity relationEntity = new SysMessageRelationEntity();
|
||||
relationEntity.setReadFlag(YesNoEnum.YES.getCode());
|
||||
relationMapper.update(relationEntity, Wrappers.<SysMessageRelationEntity>lambdaQuery().eq(SysMessageRelationEntity::getMsgId, id).eq(SysMessageRelationEntity::getUserId, SecurityUtils.getUser().getId()));
|
||||
relationMapper.update(relationEntity,
|
||||
Wrappers.<SysMessageRelationEntity>lambdaQuery()
|
||||
.eq(SysMessageRelationEntity::getMsgId, id)
|
||||
.eq(SysMessageRelationEntity::getUserId, SecurityUtils.getUser().getId()));
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@@ -211,7 +227,11 @@ public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMess
|
||||
if (messageEntity.getAllFlag().equals(YesNoEnum.YES.getCode())) {
|
||||
return SysMessageVO;
|
||||
}
|
||||
List<Long> userIdList = relationMapper.selectList(Wrappers.<SysMessageRelationEntity>lambdaQuery().eq(SysMessageRelationEntity::getMsgId, id)).stream().map(SysMessageRelationEntity::getUserId).toList();
|
||||
List<Long> userIdList = relationMapper
|
||||
.selectList(Wrappers.<SysMessageRelationEntity>lambdaQuery().eq(SysMessageRelationEntity::getMsgId, id))
|
||||
.stream()
|
||||
.map(SysMessageRelationEntity::getUserId)
|
||||
.toList();
|
||||
|
||||
if (CollUtil.isNotEmpty(userIdList)) {
|
||||
List<OrgTreeVO> orgNodeUserVoList = userMapper.selectByIds(userIdList).stream().map(user -> {
|
||||
@@ -238,7 +258,14 @@ public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMess
|
||||
*/
|
||||
@Override
|
||||
public Page pageUserRead(Page page, Long messageId, String name) {
|
||||
MPJLambdaWrapper<SysMessageRelationEntity> wrapper = new MPJLambdaWrapper<SysMessageRelationEntity>().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<SysMessageRelationEntity> wrapper = new MPJLambdaWrapper<SysMessageRelationEntity>()
|
||||
.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<SysMessageMapper, SysMess
|
||||
*/
|
||||
@Override
|
||||
public R<Boolean> sendSmsCode(String mobile) {
|
||||
List<SysUser> userList = userMapper.selectList(Wrappers.<SysUser>query().lambda().eq(SysUser::getPhone, mobile));
|
||||
List<SysUser> userList = userMapper
|
||||
.selectList(Wrappers.<SysUser>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<SysMessageMapper, SysMess
|
||||
|
||||
String code = RandomUtil.randomNumbers(Integer.parseInt(SecurityConstants.CODE_SIZE));
|
||||
log.info("手机号生成验证码成功:{},{}", mobile, code);
|
||||
RedisUtils.set(CacheConstants.DEFAULT_CODE_KEY + LoginTypeEnum.SMS.getType() + StringPool.AT + mobile, code, SecurityConstants.CODE_TIME);
|
||||
RedisUtils.set(CacheConstants.DEFAULT_CODE_KEY + LoginTypeEnum.SMS.getType() + StringPool.AT + mobile, code,
|
||||
SecurityConstants.CODE_TIME);
|
||||
|
||||
// 发送
|
||||
return this.sendSms(MessageSmsDTO.builder().mobile(mobile).biz(SmsBizCodeEnum.SMS_NORMAL_CODE.getCode()).param(code).build());
|
||||
return this.sendSms(MessageSmsDTO.builder()
|
||||
.mobile(mobile)
|
||||
.biz(SmsBizCodeEnum.SMS_NORMAL_CODE.getCode())
|
||||
.param(code)
|
||||
.build());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -282,7 +316,11 @@ public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMess
|
||||
public R sendSms(MessageSmsDTO messageSmsDTO) {
|
||||
|
||||
// 根据业务编码获取短信通道配置
|
||||
List<SysSystemConfigEntity> configEntityList = sysSystemConfigMapper.selectList(Wrappers.<SysSystemConfigEntity>lambdaQuery().eq(SysSystemConfigEntity::getConfigType, SystemConfigTypeEnum.SMS.getValue()).eq(SysSystemConfigEntity::getConfigStatus, YesNoEnum.YES.getCode()).eq(SysSystemConfigEntity::getConfigKey, messageSmsDTO.getBizCode()));
|
||||
List<SysSystemConfigEntity> configEntityList = sysSystemConfigMapper
|
||||
.selectList(Wrappers.<SysSystemConfigEntity>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<SysMessageMapper, SysMess
|
||||
// 组装SMS4J 的发送对象
|
||||
SmsBlend smsBlend = SmsFactory.getSmsBlend(messageSmsDTO.getBizCode());
|
||||
if (Objects.isNull(smsBlend)) {
|
||||
Class targetClass = Arrays.stream(SUPPORT_CONFIG_CLAZZ).filter(config -> 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<SysMessageMapper, SysMess
|
||||
Long start = System.currentTimeMillis();
|
||||
sysLog.setTenantId(TenantContextHolder.getTenantId());
|
||||
for (String mobile : messageSmsDTO.getMobiles()) {
|
||||
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);
|
||||
});
|
||||
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<SysMessageMapper, SysMess
|
||||
public R sendHook(MessageHookDTO messageHookDTO) {
|
||||
|
||||
// 根据业务编码获取短信通道配置
|
||||
List<SysSystemConfigEntity> configEntityList = sysSystemConfigMapper.selectList(Wrappers.<SysSystemConfigEntity>lambdaQuery()
|
||||
.eq(SysSystemConfigEntity::getConfigType, SystemConfigTypeEnum.WEBHOOK.getValue())
|
||||
.eq(SysSystemConfigEntity::getConfigStatus, YesNoEnum.YES.getCode())
|
||||
.eq(SysSystemConfigEntity::getConfigKey, messageHookDTO.getBizCode()));
|
||||
List<SysSystemConfigEntity> configEntityList = sysSystemConfigMapper
|
||||
.selectList(Wrappers.<SysSystemConfigEntity>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<SysMessageMapper, SysMess
|
||||
OaFactory.createAndRegisterOaSender(byteTalkConfig);
|
||||
}
|
||||
|
||||
|
||||
if (StrUtil.equalsAnyIgnoreCase(OaType.WE_TALK.toString(), supplier)) {
|
||||
WeTalkConfig weTalkConfig = new WeTalkConfig();
|
||||
weTalkConfig.setConfigId(messageHookDTO.getBizCode());
|
||||
@@ -377,7 +421,6 @@ public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMess
|
||||
alarm = OaFactory.getSmsOaBlend(messageHookDTO.getBizCode());
|
||||
}
|
||||
|
||||
|
||||
Request request = new Request();
|
||||
request.setContent(messageHookDTO.getMessageContent());
|
||||
request.setTitle(messageHookDTO.getMessageTitle());
|
||||
@@ -389,16 +432,18 @@ public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMess
|
||||
SysLogDTO sysLog = SysLogUtils.getSysLog();
|
||||
sysLog.setTenantId(TenantContextHolder.getTenantId());
|
||||
Long start = System.currentTimeMillis();
|
||||
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);
|
||||
});
|
||||
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<SysMessageMapper, SysMess
|
||||
@Override
|
||||
public R sendEmail(MessageEmailDTO messageEmailDTO) {
|
||||
// 根据业务编码获取短信通道配置
|
||||
List<SysSystemConfigEntity> configEntityList = sysSystemConfigMapper.selectList(Wrappers.<SysSystemConfigEntity>lambdaQuery()
|
||||
.eq(SysSystemConfigEntity::getConfigType, SystemConfigTypeEnum.EMAIL.getValue())
|
||||
.eq(SysSystemConfigEntity::getConfigStatus, YesNoEnum.YES.getCode()).
|
||||
eq(SysSystemConfigEntity::getConfigKey, messageEmailDTO.getBizCode()));
|
||||
List<SysSystemConfigEntity> configEntityList = sysSystemConfigMapper
|
||||
.selectList(Wrappers.<SysSystemConfigEntity>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<File> tempFileList = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(messageEmailDTO.getAttachmentList())) {
|
||||
TenantContextHolder.setTenantSkip();
|
||||
for (String fileName : messageEmailDTO.getAttachmentList()) {
|
||||
SysFile sysFile = fileMapper.selectOne(Wrappers.<SysFile>lambdaQuery().eq(SysFile::getFileName, fileName));
|
||||
SysFile sysFile = fileMapper
|
||||
.selectOne(Wrappers.<SysFile>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<SysMessageMapper, SysMess
|
||||
String result = template.render(messageEmailDTO.getHtmlValues());
|
||||
|
||||
Long start = System.currentTimeMillis();
|
||||
MailUtil.send(account, messageEmailDTO.getMailAddress(),
|
||||
messageEmailDTO.getCcList(),
|
||||
messageEmailDTO.getBccList(),
|
||||
messageEmailDTO.getTitle(), result, true, tempFileList.toArray(new File[0]));
|
||||
MailUtil.send(account, messageEmailDTO.getMailAddress(), messageEmailDTO.getCcList(),
|
||||
messageEmailDTO.getBccList(), messageEmailDTO.getTitle(), result, true,
|
||||
tempFileList.toArray(new File[0]));
|
||||
Long end = System.currentTimeMillis();
|
||||
// 写入日志
|
||||
SysLogDTO sysLog = SysLogUtils.getSysLog();
|
||||
@@ -477,9 +522,11 @@ public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMess
|
||||
*/
|
||||
@Override
|
||||
public R listHookBizCode(MessageHookDTO messageHookDTO) {
|
||||
List<SysSystemConfigEntity> configEntityList = sysSystemConfigMapper.selectList(Wrappers.<SysSystemConfigEntity>lambdaQuery()
|
||||
.eq(SysSystemConfigEntity::getConfigType, messageHookDTO.getMessageType())
|
||||
.eq(SysSystemConfigEntity::getConfigStatus, YesNoEnum.YES.getCode()));
|
||||
return R.ok(configEntityList);
|
||||
}
|
||||
List<SysSystemConfigEntity> configEntityList = sysSystemConfigMapper
|
||||
.selectList(Wrappers.<SysSystemConfigEntity>lambdaQuery()
|
||||
.eq(SysSystemConfigEntity::getConfigType, messageHookDTO.getMessageType())
|
||||
.eq(SysSystemConfigEntity::getConfigStatus, YesNoEnum.YES.getCode()));
|
||||
return R.ok(configEntityList);
|
||||
}
|
||||
|
||||
}
|
||||
+2
-3
@@ -63,7 +63,6 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||
|
||||
/**
|
||||
* 通过用户ID查询角色信息
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @return 角色信息列表
|
||||
*/
|
||||
@@ -155,8 +154,8 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||
*/
|
||||
@Override
|
||||
public List<RoleExcelVO> listRole(SysRole sysRole, Long[] ids) {
|
||||
List<SysRole> roleList = this
|
||||
.list(Wrappers.lambdaQuery(sysRole).in(ArrayUtil.isNotEmpty(ids), SysRole::getRoleId, CollUtil.toList(ids)));
|
||||
List<SysRole> 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();
|
||||
|
||||
+1
-1
@@ -141,6 +141,6 @@ public class SysRouteConfServiceImpl extends ServiceImpl<SysRouteConfMapper, Sys
|
||||
baseMapper.insert(routeConf);
|
||||
this.applicationEventPublisher.publishEvent(new DynamicRouteInitEvent(this));
|
||||
return routeConf;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+4
-2
@@ -56,8 +56,10 @@ public class SysScheduleServiceImpl extends ServiceImpl<SysScheduleMapper, SysSc
|
||||
public IPage<SysScheduleEntity> getScheduleByScope(Page page, SysScheduleEntity sysSchedule) {
|
||||
LambdaQueryWrapper<SysScheduleEntity> 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);
|
||||
|
||||
+9
-6
@@ -24,7 +24,8 @@ import java.util.List;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysSensitiveWordServiceImpl extends ServiceImpl<SysSensitiveWordMapper, SysSensitiveWordEntity> implements SysSensitiveWordService {
|
||||
public class SysSensitiveWordServiceImpl extends ServiceImpl<SysSensitiveWordMapper, SysSensitiveWordEntity>
|
||||
implements SysSensitiveWordService {
|
||||
|
||||
/**
|
||||
* 查询敏感词
|
||||
@@ -46,8 +47,9 @@ public class SysSensitiveWordServiceImpl extends ServiceImpl<SysSensitiveWordMap
|
||||
*/
|
||||
@Override
|
||||
public Boolean saveSensitive(SysSensitiveWordEntity sysSensitiveWord) {
|
||||
List<SysSensitiveWordEntity> wordEntityList = baseMapper.selectList(Wrappers.<SysSensitiveWordEntity>lambdaQuery().
|
||||
eq(SysSensitiveWordEntity::getSensitiveWord, sysSensitiveWord.getSensitiveWord()));
|
||||
List<SysSensitiveWordEntity> wordEntityList = baseMapper
|
||||
.selectList(Wrappers.<SysSensitiveWordEntity>lambdaQuery()
|
||||
.eq(SysSensitiveWordEntity::getSensitiveWord, sysSensitiveWord.getSensitiveWord()));
|
||||
|
||||
if (CollUtil.isEmpty(wordEntityList)) {
|
||||
save(sysSensitiveWord);
|
||||
@@ -61,7 +63,8 @@ public class SysSensitiveWordServiceImpl extends ServiceImpl<SysSensitiveWordMap
|
||||
RedisUtils.execute((RedisCallback<Void>) connection -> {
|
||||
connection.publish(CacheConstants.SENSITIVE_REDIS_RELOAD_TOPIC.getBytes(), "刷新敏感词缓存".getBytes());
|
||||
return null;
|
||||
});
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
});
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
}
|
||||
-3
@@ -57,7 +57,6 @@ public class SysSocialDetailsServiceImpl extends ServiceImpl<SysSocialDetailsMap
|
||||
|
||||
/**
|
||||
* 绑定社交账号
|
||||
*
|
||||
* @param type type
|
||||
* @param code code
|
||||
* @return
|
||||
@@ -77,7 +76,6 @@ public class SysSocialDetailsServiceImpl extends ServiceImpl<SysSocialDetailsMap
|
||||
|
||||
/**
|
||||
* 根据入参查询用户信息
|
||||
*
|
||||
* @param inStr TYPE@code
|
||||
* @return
|
||||
*/
|
||||
@@ -91,7 +89,6 @@ public class SysSocialDetailsServiceImpl extends ServiceImpl<SysSocialDetailsMap
|
||||
|
||||
/**
|
||||
* 查询当前租户下的三方应用信息 ,脱敏 appSecret
|
||||
*
|
||||
* @return List<SysSocialDetails>
|
||||
*/
|
||||
@Override
|
||||
|
||||
+11
-8
@@ -33,7 +33,8 @@ import java.util.Objects;
|
||||
* @date 2024/07/18
|
||||
*/
|
||||
@Service
|
||||
public class SysSystemConfigServiceImpl extends ServiceImpl<SysSystemConfigMapper, SysSystemConfigEntity> implements SysSystemConfigService {
|
||||
public class SysSystemConfigServiceImpl extends ServiceImpl<SysSystemConfigMapper, SysSystemConfigEntity>
|
||||
implements SysSystemConfigService {
|
||||
|
||||
private final SysMessageServiceImpl sysMessageServiceImpl;
|
||||
|
||||
@@ -69,9 +70,10 @@ public class SysSystemConfigServiceImpl extends ServiceImpl<SysSystemConfigMappe
|
||||
@Override
|
||||
public R pageSystemConfig(Page page, SysSystemConfigEntity sysSystemConfig) {
|
||||
LambdaQueryWrapper<SysSystemConfigEntity> 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<SysSystemConfigEntity> pageResult = baseMapper.selectPage(page, wrapper);
|
||||
pageResult.getRecords().forEach(systemConfig -> {
|
||||
if (StrUtil.isNotBlank(systemConfig.getConfigValue())) {
|
||||
@@ -111,8 +113,9 @@ public class SysSystemConfigServiceImpl extends ServiceImpl<SysSystemConfigMappe
|
||||
Field configsField = ReflectUtil.getField(OaFactory.class, "CONFIGS");
|
||||
configsField.setAccessible(true);
|
||||
Map<String, OaSender> configs = (Map<String, OaSender>) configsField.get(null);
|
||||
configs.clear();
|
||||
}
|
||||
return R.ok();
|
||||
}
|
||||
configs.clear();
|
||||
}
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
}
|
||||
+459
-443
@@ -67,484 +67,488 @@ import java.util.*;
|
||||
@AllArgsConstructor
|
||||
public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant> 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;
|
||||
|
||||
/**
|
||||
* 获取正常状态租户
|
||||
* <p>
|
||||
* 1. 状态正常 2. 开始时间小于等于当前时间 3. 结束时间大于等于当前时间
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Cacheable(value = CacheConstants.TENANT_DETAILS)
|
||||
public List<SysTenant> getNormalTenant() {
|
||||
return baseMapper
|
||||
.selectList(Wrappers.<SysTenant>lambdaQuery().eq(SysTenant::getStatus, TenantStateEnum.NORMAL.getCode()));
|
||||
}
|
||||
private final SysTenantUserMapper sysTenantUserMapper;
|
||||
|
||||
/**
|
||||
* 保存租户
|
||||
* <p>
|
||||
* 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<SysDict> dictList = new ArrayList<>(32);
|
||||
List<Long> dictIdList = new ArrayList<>(32);
|
||||
List<SysDictItem> dictItemList = new ArrayList<>(64);
|
||||
List<SysMenu> menuList = new ArrayList<>(128);
|
||||
List<SysOauthClientDetails> clientDetailsList = new ArrayList<>(16);
|
||||
List<SysPublicParam> 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.<SysDictItem>lambdaQuery().in(SysDictItem::getDictId, dictIdList)));
|
||||
List<SysMenu> newMenuList = menuService.list(Wrappers.<SysMenu>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<SysMenu> list = menuService.list();
|
||||
private final CacheManager cacheManager;
|
||||
|
||||
// 查询全部菜单,构造角色菜单关系
|
||||
List<SysRoleMenu> 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<SysDictItem> itemList = dictList.stream()
|
||||
.flatMap(dict -> dictItemList.stream()
|
||||
.filter(item -> item.getDictType().equals(dict.getDictType()))
|
||||
.peek(item -> {
|
||||
item.setDictId(dict.getId());
|
||||
item.setId(null);
|
||||
}))
|
||||
.toList();
|
||||
/**
|
||||
* 获取正常状态租户
|
||||
* <p>
|
||||
* 1. 状态正常 2. 开始时间小于等于当前时间 3. 结束时间大于等于当前时间
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Cacheable(value = CacheConstants.TENANT_DETAILS)
|
||||
public List<SysTenant> getNormalTenant() {
|
||||
return baseMapper
|
||||
.selectList(Wrappers.<SysTenant>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);
|
||||
}));
|
||||
/**
|
||||
* 保存租户
|
||||
* <p>
|
||||
* 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<SysDict> dictList = new ArrayList<>(32);
|
||||
List<Long> dictIdList = new ArrayList<>(32);
|
||||
List<SysDictItem> dictItemList = new ArrayList<>(64);
|
||||
List<SysMenu> menuList = new ArrayList<>(128);
|
||||
List<SysOauthClientDetails> clientDetailsList = new ArrayList<>(16);
|
||||
List<SysPublicParam> 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.<SysDictItem>lambdaQuery().in(SysDictItem::getDictId, dictIdList)));
|
||||
List<SysMenu> newMenuList = menuService.list(Wrappers.<SysMenu>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<String> newMenuIdList = StrUtil.split(tenantDTO.getMenuId(), CharUtil.COMMA);
|
||||
List<String> 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<SysMenu> 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<SysMenu> list = menuService.list();
|
||||
|
||||
// 0. 计算两个差集,差集表示变化的功能项
|
||||
Collection<String> 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<SysRoleMenu> 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<SysDictItem> 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.<SysMenu>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<SysMenu> 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<String> newMenuIdList = StrUtil.split(tenantDTO.getMenuId(), CharUtil.COMMA);
|
||||
List<String> oldMenuIdList = StrUtil.split(oldTenant.getMenuId(), CharUtil.COMMA);
|
||||
|
||||
// 根据path 或者 permisson 查询目标父菜单
|
||||
SysMenu tenantParentMenu = menuService.getOne(Wrappers.<SysMenu>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<SysMenu> sysMenuList = TenantBroker.applyAs(tenantDefault.getTenantDefaultId(), id -> menuService.list());
|
||||
if (tenantDefault.getTenantDefaultId().equals(tenantDTO.getId())) {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
// 清空指定租户的菜单权限缓存
|
||||
Set<String> 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<SysTenant> getUserTenant() {
|
||||
MPJLambdaWrapper<SysTenant> wrapper = new MPJLambdaWrapper<SysTenant>()
|
||||
.selectAll(SysTenant.class)
|
||||
.leftJoin(SysTenantUser.class, SysTenantUser::getTenantId, SysTenant::getId)
|
||||
.eq(SysTenantUser::getUserId, SecurityUtils.getUser().getId())
|
||||
.eq(SysTenant::getStatus, TenantStateEnum.NORMAL.getCode());
|
||||
// 0. 计算两个差集,差集表示变化的功能项
|
||||
Collection<String> 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.<SysMenu>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<SysUser> wrapper = new MPJLambdaWrapper<SysUser>()
|
||||
.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<SysMenu> 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<Long> 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.<SysTenantUser>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.<SysUserPost>lambdaQuery()
|
||||
.in(SysUserPost::getUserId, userIdList));
|
||||
// 删除用户角色
|
||||
sysUserRoleMapper.delete(Wrappers.<SysUserRole>lambdaQuery()
|
||||
.in(SysUserRole::getUserId, userIdList));
|
||||
// 删除用户部门
|
||||
sysUserDeptMapper.delete(Wrappers.<SysUserDept>lambdaQuery()
|
||||
.in(SysUserDept::getUserId, userIdList));
|
||||
}));
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
// 根据path 或者 permisson 查询目标父菜单
|
||||
SysMenu tenantParentMenu = menuService.getOne(Wrappers.<SysMenu>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<SysUser> listTenantUser(UserDTO userDTO) {
|
||||
return TenantBroker.noneAs(() -> sysUserMapper
|
||||
.selectList(Wrappers.<SysUser>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<SysTenantUser> sysTenantUsers = sysTenantUserMapper.selectList(Wrappers.<SysTenantUser>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<String> 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<SysTenant> getUserTenant() {
|
||||
MPJLambdaWrapper<SysTenant> wrapper = new MPJLambdaWrapper<SysTenant>().selectAll(SysTenant.class)
|
||||
.leftJoin(SysTenantUser.class, SysTenantUser::getTenantId, SysTenant::getId)
|
||||
.eq(SysTenantUser::getUserId, SecurityUtils.getUser().getId())
|
||||
.eq(SysTenant::getStatus, TenantStateEnum.NORMAL.getCode());
|
||||
|
||||
List<SysUserRole> userRoleList = sysUserRoleMapper.selectList(Wrappers.<SysUserRole>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<SysUser> wrapper = new MPJLambdaWrapper<SysUser>().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<SysUserDept> userDeptList = sysUserDeptMapper.selectList(Wrappers.<SysUserDept>lambdaQuery()
|
||||
.eq(SysUserDept::getUserId, userId)
|
||||
.eq(SysUserDept::getDeptId, tenantUserDTO.getDeptId()));
|
||||
/**
|
||||
* 移除租户用户
|
||||
*
|
||||
* @param tenantUserDTO 租户用户信息
|
||||
* @return 是否移除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean removeTenantUser(SysTenantUserDTO tenantUserDTO) {
|
||||
ArrayList<Long> 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.<SysTenantUser>lambdaQuery()
|
||||
.eq(SysTenantUser::getTenantId, tenantUserDTO.getTenantId())
|
||||
.in(SysTenantUser::getUserId, userIdList));
|
||||
|
||||
List<SysUserPost> userPostList = sysUserPostMapper.selectList(Wrappers.<SysUserPost>lambdaQuery()
|
||||
.eq(SysUserPost::getUserId, userId)
|
||||
.eq(SysUserPost::getPostId, tenantUserDTO.getPostId()));
|
||||
TenantBroker.runAs(tenantUserDTO.getTenantId(), (tenantId -> {
|
||||
// 删除用户岗位
|
||||
sysUserPostMapper.delete(Wrappers.<SysUserPost>lambdaQuery().in(SysUserPost::getUserId, userIdList));
|
||||
// 删除用户角色
|
||||
sysUserRoleMapper.delete(Wrappers.<SysUserRole>lambdaQuery().in(SysUserRole::getUserId, userIdList));
|
||||
// 删除用户部门
|
||||
sysUserDeptMapper.delete(Wrappers.<SysUserDept>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<SysUser> listTenantUser(UserDTO userDTO) {
|
||||
return TenantBroker.noneAs(() -> sysUserMapper.selectList(Wrappers.<SysUser>lambdaQuery()
|
||||
.like(StrUtil.isNotBlank(userDTO.getUsername()), SysUser::getUsername, userDTO.getUsername())));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取租户角色列表
|
||||
*
|
||||
* @param userDTO 用户信息
|
||||
* @return 租户角色列表
|
||||
*/
|
||||
@Override
|
||||
public Map<String, Object> listTenantOrg(UserDTO userDTO) {
|
||||
return TenantBroker.applyAs(userDTO.getTenantId(), tenantId -> {
|
||||
// 过滤有权限配置的菜单
|
||||
List<SysRole> sysRoles = sysRoleMapper.selectList(Wrappers.lambdaQuery()).stream()
|
||||
.filter(role -> roleMenuMapper.exists(Wrappers.<SysRoleMenu>lambdaQuery()
|
||||
.eq(SysRoleMenu::getRoleId, role.getRoleId()))).toList();
|
||||
List<SysDept> sysDepts = sysDeptMapper.selectList(Wrappers.lambdaQuery());
|
||||
List<SysPost> 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<SysTenantUser> sysTenantUsers = sysTenantUserMapper
|
||||
.selectList(Wrappers.<SysTenantUser>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.<SysTenantUser>lambdaQuery().in(SysTenantUser::getTenantId, CollUtil.toList(ids)));
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
List<SysUserRole> userRoleList = sysUserRoleMapper.selectList(Wrappers.<SysUserRole>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.<SysUser>lambdaUpdate()
|
||||
.set(SysUser::getTenantId, userDto.getTenantId())
|
||||
.eq(SysUser::getUserId, userDto.getUserId()))));
|
||||
}
|
||||
List<SysUserDept> userDeptList = sysUserDeptMapper.selectList(Wrappers.<SysUserDept>lambdaQuery()
|
||||
.eq(SysUserDept::getUserId, userId)
|
||||
.eq(SysUserDept::getDeptId, tenantUserDTO.getDeptId()));
|
||||
|
||||
/**
|
||||
* 保存新的租户菜单,维护成新的菜单
|
||||
*
|
||||
* @param menuList 菜单列表
|
||||
* @param originParentId 原始上级
|
||||
* @param targetParentId 目标上级
|
||||
*/
|
||||
private void saveTenantMenu(List<SysMenu> 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<SysUserPost> userPostList = sysUserPostMapper.selectList(Wrappers.<SysUserPost>lambdaQuery()
|
||||
.eq(SysUserPost::getUserId, userId)
|
||||
.eq(SysUserPost::getPostId, tenantUserDTO.getPostId()));
|
||||
|
||||
if (!match) {
|
||||
SysTenantUser tenantUser = sysTenantUserMapper.selectOne(Wrappers.<SysTenantUser>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<String, Object> listTenantOrg(UserDTO userDTO) {
|
||||
return TenantBroker.applyAs(userDTO.getTenantId(), tenantId -> {
|
||||
// 过滤有权限配置的菜单
|
||||
List<SysRole> sysRoles = sysRoleMapper.selectList(Wrappers.lambdaQuery())
|
||||
.stream()
|
||||
.filter(role -> roleMenuMapper
|
||||
.exists(Wrappers.<SysRoleMenu>lambdaQuery().eq(SysRoleMenu::getRoleId, role.getRoleId())))
|
||||
.toList();
|
||||
List<SysDept> sysDepts = sysDeptMapper.selectList(Wrappers.lambdaQuery());
|
||||
List<SysPost> 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.<SysTenantUser>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.<SysUser>lambdaUpdate()
|
||||
.set(SysUser::getTenantId, userDto.getTenantId())
|
||||
.eq(SysUser::getUserId, userDto.getUserId()))));
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存新的租户菜单,维护成新的菜单
|
||||
*
|
||||
* @param menuList 菜单列表
|
||||
* @param originParentId 原始上级
|
||||
* @param targetParentId 目标上级
|
||||
*/
|
||||
private void saveTenantMenu(List<SysMenu> 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.<SysTenantUser>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<SysTenantMapper, SysTenant
|
||||
*/
|
||||
@Data
|
||||
class TenantDefaultConfig {
|
||||
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<String> args = Arrays.stream(ReflectUtil.getFields(this.getClass()))
|
||||
.map(Field::getName).map(StrUtil::toUnderlineCase).map(String::toUpperCase).toList();
|
||||
Map<String, Object> 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<String> args = Arrays.stream(ReflectUtil.getFields(this.getClass()))
|
||||
.map(Field::getName)
|
||||
.map(StrUtil::toUnderlineCase)
|
||||
.map(String::toUpperCase)
|
||||
.toList();
|
||||
Map<String, Object> 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+639
-632
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user