diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/mq/consumer/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/mq/consumer/package-info.java deleted file mode 100644 index 301ea9a..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/mq/consumer/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package cn.iocoder.dashboard.modules.infra.mq.consumer; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/mq/message/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/mq/message/package-info.java deleted file mode 100644 index 5c63e49..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/mq/message/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package cn.iocoder.dashboard.modules.infra.mq.message; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/mq/producer/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/mq/producer/package-info.java deleted file mode 100644 index 0895cd9..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/mq/producer/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package cn.iocoder.dashboard.modules.infra.mq.producer; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateBaseVO.java deleted file mode 100644 index 584050d..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateBaseVO.java +++ /dev/null @@ -1,46 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.template; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** -* 短信模板 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class SysSmsTemplateBaseVO { - - @ApiModelProperty(value = "短信类型", required = true, example = "1", notes = "参见 SysSmsTemplateTypeEnum 枚举类") - @NotNull(message = "短信类型不能为空") - private Integer type; - - @ApiModelProperty(value = "开启状态", required = true, example = "1", notes = "参见 CommonStatusEnum 枚举类") - @NotNull(message = "开启状态不能为空") - private Integer status; - - @ApiModelProperty(value = "模板编码", required = true, example = "test_01") - @NotNull(message = "模板编码不能为空") - private String code; - - @ApiModelProperty(value = "模板名称", required = true, example = "yudao") - @NotNull(message = "模板名称不能为空") - private String name; - - @ApiModelProperty(value = "模板内容", required = true, example = "你好,{name}。你长的太{like}啦!") - @NotNull(message = "模板内容不能为空") - private String content; - - @ApiModelProperty(value = "备注", example = "哈哈哈") - private String remark; - - @ApiModelProperty(value = "短信 API 的模板编号", required = true, example = "4383920") - @NotNull(message = "短信 API 的模板编号不能为空") - private String apiTemplateId; - - @ApiModelProperty(value = "短信渠道编号", required = true, example = "10") - @NotNull(message = "短信渠道编号不能为空") - private Long channelId; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateExcelVO.java deleted file mode 100644 index aab91e7..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateExcelVO.java +++ /dev/null @@ -1,55 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.template; - -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; -import com.alibaba.excel.annotation.ExcelProperty; -import lombok.Data; - -import java.util.Date; - -/** - * 短信模板 Excel VO - * - * @author 芋道源码 - */ -@Data -public class SysSmsTemplateExcelVO { - - @ExcelProperty("编号") - private Long id; - - @ExcelProperty(value = "短信签名", converter = DictConvert.class) - @DictFormat(SysDictTypeConstants.SMS_TEMPLATE_TYPE) - private Integer type; - - @ExcelProperty(value = "开启状态", converter = DictConvert.class) - @DictFormat(SysDictTypeConstants.COMMON_STATUS) - private Integer status; - - @ExcelProperty("模板编码") - private String code; - - @ExcelProperty("模板名称") - private String name; - - @ExcelProperty("模板内容") - private String content; - - @ExcelProperty("备注") - private String remark; - - @ExcelProperty("短信 API 的模板编号") - private String apiTemplateId; - - @ExcelProperty("短信渠道编号") - private Long channelId; - - @ExcelProperty(value = "短信渠道编码", converter = DictConvert.class) - @DictFormat(SysDictTypeConstants.SMS_CHANNEL_CODE) - private String channelCode; - - @ExcelProperty("创建时间") - private Date createTime; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateExportReqVO.java deleted file mode 100644 index 96500bf..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateExportReqVO.java +++ /dev/null @@ -1,42 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.template; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.util.Date; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@ApiModel(value = "短信模板 Excel 导出 Request VO", description = "参数和 SysSmsTemplatePageReqVO 是一致的") -@Data -public class SysSmsTemplateExportReqVO { - - @ApiModelProperty(value = "短信签名", example = "1") - private Integer type; - - @ApiModelProperty(value = "开启状态", example = "1") - private Integer status; - - @ApiModelProperty(value = "模板编码", example = "test_01", notes = "模糊匹配") - private String code; - - @ApiModelProperty(value = "模板内容", example = "你好,{name}。你长的太{like}啦!", notes = "模糊匹配") - private String content; - - @ApiModelProperty(value = "短信 API 的模板编号", example = "4383920", notes = "模糊匹配") - private String apiTemplateId; - - @ApiModelProperty(value = "短信渠道编号", example = "10") - private Long channelId; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @ApiModelProperty(value = "开始创建时间") - private Date beginCreateTime; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @ApiModelProperty(value = "结束创建时间") - private Date endCreateTime; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplatePageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplatePageReqVO.java deleted file mode 100644 index 6a72e3e..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplatePageReqVO.java +++ /dev/null @@ -1,47 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.template; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.util.Date; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@ApiModel("短信模板分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class SysSmsTemplatePageReqVO extends PageParam { - - @ApiModelProperty(value = "短信签名", example = "1") - private Integer type; - - @ApiModelProperty(value = "开启状态", example = "1") - private Integer status; - - @ApiModelProperty(value = "模板编码", example = "test_01", notes = "模糊匹配") - private String code; - - @ApiModelProperty(value = "模板内容", example = "你好,{name}。你长的太{like}啦!", notes = "模糊匹配") - private String content; - - @ApiModelProperty(value = "短信 API 的模板编号", example = "4383920", notes = "模糊匹配") - private String apiTemplateId; - - @ApiModelProperty(value = "短信渠道编号", example = "10") - private Long channelId; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @ApiModelProperty(value = "开始创建时间") - private Date beginCreateTime; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @ApiModelProperty(value = "结束创建时间") - private Date endCreateTime; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateRespVO.java deleted file mode 100644 index fda5848..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateRespVO.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.template; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import java.util.Date; -import java.util.List; - -@ApiModel("短信模板 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class SysSmsTemplateRespVO extends SysSmsTemplateBaseVO { - - @ApiModelProperty(value = "编号", required = true, example = "1024") - private Long id; - - @ApiModelProperty(value = "短信渠道编码", required = true, example = "ALIYUN") - private String channelCode; - - @ApiModelProperty(value = "参数数组", example = "name,code") - private List params; - - @ApiModelProperty(value = "创建时间", required = true) - private Date createTime; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateSendReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateSendReqVO.java deleted file mode 100644 index 2857ee5..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateSendReqVO.java +++ /dev/null @@ -1,25 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.template; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; -import java.util.Map; - -@ApiModel("短信模板的发送 Request VO") -@Data -public class SysSmsTemplateSendReqVO { - - @ApiModelProperty(value = "手机号", required = true, example = "15601691300") - @NotNull(message = "手机号不能为空") - private String mobile; - - @ApiModelProperty(value = "模板编码", required = true, example = "test_01") - @NotNull(message = "模板编码不能为空") - private String templateCode; - - @ApiModelProperty(value = "模板参数") - private Map templateParams; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/profile/SysUserProfileRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/profile/SysUserProfileRespVO.java deleted file mode 100644 index de264b1..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/profile/SysUserProfileRespVO.java +++ /dev/null @@ -1,88 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.user.vo.profile; - -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserBaseVO; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - -import java.util.Date; -import java.util.List; - - -@Data -@EqualsAndHashCode(callSuper = true) -@NoArgsConstructor -@AllArgsConstructor -@ApiModel("用户个人中心信息 Response VO") -public class SysUserProfileRespVO extends SysUserBaseVO { - - @ApiModelProperty(value = "用户编号", required = true, example = "1") - private Long id; - - @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 SysCommonStatusEnum 枚举类") - private Integer status; - - @ApiModelProperty(value = "最后登陆 IP", required = true, example = "192.168.1.1") - private String loginIp; - - @ApiModelProperty(value = "最后登录时间", required = true, example = "时间戳格式") - private Date loginDate; - - @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式") - private Date createTime; - - /** - * 所属角色 - */ - private List roles; - - /** - * 所在部门 - */ - private Dept dept; - - /** - * 所属岗位数组 - */ - private List posts; - - @ApiModel("角色") - @Data - public static class Role { - - @ApiModelProperty(value = "角色编号", required = true, example = "1") - private Long id; - - @ApiModelProperty(value = "角色名称", required = true, example = "普通角色") - private String name; - - } - - @ApiModel("部门") - @Data - public static class Dept { - - @ApiModelProperty(value = "部门编号", required = true, example = "1") - private Long id; - - @ApiModelProperty(value = "部门名称", required = true, example = "研发部") - private String name; - - } - - @ApiModel("岗位") - @Data - public static class Post { - - @ApiModelProperty(value = "岗位编号", required = true, example = "1") - private Long id; - - @ApiModelProperty(value = "岗位名称", required = true, example = "开发") - private String name; - - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/profile/SysUserProfileUpdatePasswordReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/profile/SysUserProfileUpdatePasswordReqVO.java deleted file mode 100644 index 6ff5648..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/profile/SysUserProfileUpdatePasswordReqVO.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.user.vo.profile; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.NotEmpty; - -@ApiModel("用户个人中心更新密码 Request VO") -@Data -public class SysUserProfileUpdatePasswordReqVO { - - @ApiModelProperty(value = "旧密码", required = true, example = "123456") - @NotEmpty(message = "旧密码不能为空") - @Length(min = 4, max = 16, message = "密码长度为 4-16 位") - private String oldPassword; - - @ApiModelProperty(value = "新密码", required = true, example = "654321") - @NotEmpty(message = "新密码不能为空") - @Length(min = 4, max = 16, message = "密码长度为 4-16 位") - private String newPassword; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/profile/SysUserProfileUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/profile/SysUserProfileUpdateReqVO.java deleted file mode 100644 index 95051f0..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/profile/SysUserProfileUpdateReqVO.java +++ /dev/null @@ -1,31 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.user.vo.profile; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.Email; -import javax.validation.constraints.Size; - -@ApiModel("用户个人信息更新 Request VO") -@Data -public class SysUserProfileUpdateReqVO { - - @ApiModelProperty(value = "用户昵称", required = true, example = "芋艿") - @Size(max = 30, message = "用户昵称长度不能超过30个字符") - private String nickname; - - @ApiModelProperty(value = "用户邮箱", example = "yudao@iocoder.cn") - @Email(message = "邮箱格式不正确") - @Size(max = 50, message = "邮箱长度不能超过 50 个字符") - private String email; - - @ApiModelProperty(value = "手机号码", example = "15601691300") - @Length(min = 11, max = 11, message = "手机号长度必须 11 位") - private String mobile; - - @ApiModelProperty(value = "用户性别", example = "1", notes = "参见 SysSexEnum 枚举类") - private Integer sex; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserBaseVO.java deleted file mode 100644 index 4fe0f9b..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserBaseVO.java +++ /dev/null @@ -1,52 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.user.vo.user; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.Email; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Size; -import java.util.Set; - -/** - * 用户 Base VO,提供给添加、修改、详细的子 VO 使用 - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 - */ -@Data -public class SysUserBaseVO { - - @ApiModelProperty(value = "用户账号", required = true, example = "yudao") - @NotBlank(message = "用户账号不能为空") - @Size(min = 4, max = 30, message = "用户账号长度为 4-30 个字符") - private String username; - - @ApiModelProperty(value = "用户昵称", required = true, example = "芋艿") - @Size(max = 30, message = "用户昵称长度不能超过30个字符") - private String nickname; - - @ApiModelProperty(value = "备注", example = "我是一个用户") - private String remark; - - @ApiModelProperty(value = "部门ID", example = "我是一个用户") - private Long deptId; - - @ApiModelProperty(value = "岗位编号数组", example = "1") - private Set postIds; - - @ApiModelProperty(value = "用户邮箱", example = "yudao@iocoder.cn") - @Email(message = "邮箱格式不正确") - @Size(max = 50, message = "邮箱长度不能超过 50 个字符") - private String email; - - @ApiModelProperty(value = "手机号码", example = "15601691300") - @Length(min = 11, max = 11, message = "手机号长度必须 11 位") - private String mobile; - - @ApiModelProperty(value = "用户性别", example = "1", notes = "参见 SysSexEnum 枚举类") - private Integer sex; - - @ApiModelProperty(value = "用户头像", example = "http://www.iocoder.cn/xxx.png") - private String avatar; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserCreateReqVO.java deleted file mode 100644 index 76be8ff..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserCreateReqVO.java +++ /dev/null @@ -1,22 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.user.vo.user; - - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.NotEmpty; - -@ApiModel("用户创建 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -public class SysUserCreateReqVO extends SysUserBaseVO { - - @ApiModelProperty(value = "密码", required = true, example = "123456") - @NotEmpty(message = "密码不能为空") - @Length(min = 4, max = 16, message = "密码长度为 4-16 位") - private String password; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserExcelVO.java deleted file mode 100644 index db5d058..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserExcelVO.java +++ /dev/null @@ -1,52 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.user.vo.user; - -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; -import com.alibaba.excel.annotation.ExcelProperty; -import lombok.Data; - -import java.util.Date; - -/** - * 用户 Excel 导出 VO - */ -@Data -public class SysUserExcelVO { - - @ExcelProperty("用户编号") - private Long id; - - @ExcelProperty("用户名称") - private String username; - - @ExcelProperty("用户昵称") - private String nickname; - - @ExcelProperty("用户邮箱") - private String email; - - @ExcelProperty("手机号码") - private String mobile; - - @ExcelProperty(value = "用户性别", converter = DictConvert.class) - @DictFormat(SysDictTypeConstants.USER_SEX) - private Integer sex; - - @ExcelProperty(value = "帐号状态", converter = DictConvert.class) - @DictFormat(SysDictTypeConstants.COMMON_STATUS) - private Integer status; - - @ExcelProperty("最后登录IP") - private String loginIp; - - @ExcelProperty("最后登录时间") - private Date loginDate; - - @ExcelProperty("部门名称") - private String deptName; - - @ExcelProperty("部门负责人") - private String deptLeader; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserExportReqVO.java deleted file mode 100644 index 00559b2..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserExportReqVO.java +++ /dev/null @@ -1,40 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.user.vo.user; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.springframework.format.annotation.DateTimeFormat; - -import java.util.Date; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@ApiModel(value = "用户导出 Request VO", description = "参数和 SysUserPageReqVO 是一致的") -@Data -@NoArgsConstructor -@AllArgsConstructor -public class SysUserExportReqVO { - - @ApiModelProperty(value = "用户账号", example = "yudao", notes = "模糊匹配") - private String username; - - @ApiModelProperty(value = "手机号码", example = "yudao", notes = "模糊匹配") - private String mobile; - - @ApiModelProperty(value = "展示状态", example = "1", notes = "参见 SysCommonStatusEnum 枚举类") - private Integer status; - - @ApiModelProperty(value = "开始时间", example = "2020-10-24") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private Date beginTime; - - @ApiModelProperty(value = "结束时间", example = "2020-10-24") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private Date endTime; - - @ApiModelProperty(value = "部门编号", example = "1024", notes = "同时筛选子部门") - private Long deptId; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserImportExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserImportExcelVO.java deleted file mode 100644 index 25b8f3a..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserImportExcelVO.java +++ /dev/null @@ -1,44 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.user.vo.user; - -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; -import com.alibaba.excel.annotation.ExcelProperty; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 用户 Excel 导入 VO - */ -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class SysUserImportExcelVO { - - @ExcelProperty("登录名称") - private String username; - - @ExcelProperty("用户名称") - private String nickname; - - @ExcelProperty("部门编号") - private Long deptId; - - @ExcelProperty("用户邮箱") - private String email; - - @ExcelProperty("手机号码") - private String mobile; - - @ExcelProperty(value = "用户性别", converter = DictConvert.class) - @DictFormat(SysDictTypeConstants.USER_SEX) - private Integer sex; - - @ExcelProperty(value = "账号状态", converter = DictConvert.class) - @DictFormat(SysDictTypeConstants.COMMON_STATUS) - private Integer status; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserImportRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserImportRespVO.java deleted file mode 100644 index 551eeb1..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserImportRespVO.java +++ /dev/null @@ -1,25 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.user.vo.user; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Builder; -import lombok.Data; - -import java.util.List; -import java.util.Map; - -@ApiModel("用户导入 Response VO") -@Data -@Builder -public class SysUserImportRespVO { - - @ApiModelProperty(value = "创建成功的用户名数组", required = true) - private List createUsernames; - - @ApiModelProperty(value = "更新成功的用户名数组", required = true) - private List updateUsernames; - - @ApiModelProperty(value = "导入失败的用户集合", required = true, notes = "key 为用户名,value 为失败原因") - private Map failureUsernames; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserPageItemRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserPageItemRespVO.java deleted file mode 100644 index dc6963c..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserPageItemRespVO.java +++ /dev/null @@ -1,34 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.user.vo.user; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - -@ApiModel(value = "用户分页时的信息 Response VO", description = "相比用户基本信息来说,会多部门信息") -@Data -@NoArgsConstructor -@AllArgsConstructor -@EqualsAndHashCode(callSuper = true) -public class SysUserPageItemRespVO extends SysUserRespVO { - - /** - * 所在部门 - */ - private Dept dept; - - @ApiModel("部门") - @Data - public static class Dept { - - @ApiModelProperty(value = "部门编号", required = true, example = "1") - private Long id; - - @ApiModelProperty(value = "部门名称", required = true, example = "研发部") - private String name; - - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserPageReqVO.java deleted file mode 100644 index 9dd9a95..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserPageReqVO.java +++ /dev/null @@ -1,43 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.user.vo.user; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import org.springframework.format.annotation.DateTimeFormat; - -import java.util.Date; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@ApiModel("用户分页 Request VO") -@Data -@NoArgsConstructor -@AllArgsConstructor -@EqualsAndHashCode(callSuper = true) -public class SysUserPageReqVO extends PageParam { - - @ApiModelProperty(value = "用户账号", example = "yudao", notes = "模糊匹配") - private String username; - - @ApiModelProperty(value = "手机号码", example = "yudao", notes = "模糊匹配") - private String mobile; - - @ApiModelProperty(value = "展示状态", example = "1", notes = "参见 SysCommonStatusEnum 枚举类") - private Integer status; - - @ApiModelProperty(value = "开始时间", example = "2020-10-24") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private Date beginTime; - - @ApiModelProperty(value = "结束时间", example = "2020-10-24") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private Date endTime; - - @ApiModelProperty(value = "部门编号", example = "1024", notes = "同时筛选子部门") - private Long deptId; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserRespVO.java deleted file mode 100644 index fa23351..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserRespVO.java +++ /dev/null @@ -1,31 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.user.vo.user; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.*; - -import java.util.Date; - -@ApiModel("用户信息 Response VO") -@Data -@NoArgsConstructor -@AllArgsConstructor -@EqualsAndHashCode(callSuper = true) -public class SysUserRespVO extends SysUserBaseVO { - - @ApiModelProperty(value = "用户编号", required = true, example = "1") - private Long id; - - @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 SysCommonStatusEnum 枚举类") - private Integer status; - - @ApiModelProperty(value = "最后登陆 IP", required = true, example = "192.168.1.1") - private String loginIp; - - @ApiModelProperty(value = "最后登录时间", required = true, example = "时间戳格式") - private Date loginDate; - - @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式") - private Date createTime; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserUpdatePasswordReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserUpdatePasswordReqVO.java deleted file mode 100644 index 10fa4a0..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserUpdatePasswordReqVO.java +++ /dev/null @@ -1,25 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.user.vo.user; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; - -@ApiModel("用户更新密码 Request VO") -@Data -public class SysUserUpdatePasswordReqVO { - - @ApiModelProperty(value = "用户编号", required = true, example = "1024") - @NotNull(message = "用户编号不能为空") - private Long id; - - @ApiModelProperty(value = "密码", required = true, example = "123456") - @NotEmpty(message = "密码不能为空") - @Length(min = 4, max = 16, message = "密码长度为 4-16 位") - private String password; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserUpdateReqVO.java deleted file mode 100644 index 8c2bb9a..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserUpdateReqVO.java +++ /dev/null @@ -1,19 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.user.vo.user; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import javax.validation.constraints.NotNull; - -@ApiModel("用户更新 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -public class SysUserUpdateReqVO extends SysUserBaseVO { - - @ApiModelProperty(value = "用户编号", required = true, example = "1024") - @NotNull(message = "用户编号不能为空") - private Long id; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserUpdateStatusReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserUpdateStatusReqVO.java deleted file mode 100644 index bd4e1bb..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/vo/user/SysUserUpdateStatusReqVO.java +++ /dev/null @@ -1,22 +0,0 @@ -package cn.iocoder.dashboard.modules.system.controller.user.vo.user; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -@ApiModel("用户更新状态 Request VO") -@Data -public class SysUserUpdateStatusReqVO { - - @ApiModelProperty(value = "用户编号", required = true, example = "1024") - @NotNull(message = "角色编号不能为空") - private Long id; - - @ApiModelProperty(value = "状态", required = true, example = "1", notes = "见 SysCommonStatusEnum 枚举") - @NotNull(message = "状态不能为空") -// @InEnum(value = SysCommonStatusEnum.class, message = "修改状态必须是 {value}") - private Integer status; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/auth/SysAuthConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/auth/SysAuthConvert.java deleted file mode 100644 index f29c17e..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/auth/SysAuthConvert.java +++ /dev/null @@ -1,79 +0,0 @@ -package cn.iocoder.dashboard.modules.system.convert.auth; - -import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthMenuRespVO; -import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthPermissionInfoRespVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysMenuDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.dashboard.modules.system.enums.permission.MenuIdEnum; -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.factory.Mappers; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -@Mapper -public interface SysAuthConvert { - - SysAuthConvert INSTANCE = Mappers.getMapper(SysAuthConvert.class); - - @Mapping(source = "updateTime", target = "updateTime", ignore = true) - // 字段相同,但是含义不同,忽略 - LoginUser convert(SysUserDO bean); - - default SysAuthPermissionInfoRespVO convert(SysUserDO user, List roleList, List menuList) { - return SysAuthPermissionInfoRespVO.builder() - .user(SysAuthPermissionInfoRespVO.UserVO.builder().nickname(user.getNickname()).avatar(user.getAvatar()).build()) - .roles(CollectionUtils.convertSet(roleList, SysRoleDO::getCode)) - .permissions(CollectionUtils.convertSet(menuList, SysMenuDO::getPermission)) - .build(); - } - - SysAuthMenuRespVO convertTreeNode(SysMenuDO menu); - - LoginUser convert(SysUserProfileUpdateReqVO reqVO); - - LoginUser convert(SysUserProfileUpdatePasswordReqVO reqVO); - - /** - * 将菜单列表,构建成菜单树 - * - * @param menuList 菜单列表 - * @return 菜单树 - */ - default List buildMenuTree(List menuList) { - // 排序,保证菜单的有序性 - menuList.sort(Comparator.comparing(SysMenuDO::getSort)); - // 构建菜单树 - // 使用 LinkedHashMap 的原因,是为了排序 。实际也可以用 Stream API ,就是太丑了。 - Map treeNodeMap = new LinkedHashMap<>(); - menuList.forEach(menu -> treeNodeMap.put(menu.getId(), SysAuthConvert.INSTANCE.convertTreeNode(menu))); - // 处理父子关系 - treeNodeMap.values().stream().filter(node -> !node.getParentId().equals(MenuIdEnum.ROOT.getId())).forEach(childNode -> { - // 获得父节点 - SysAuthMenuRespVO parentNode = treeNodeMap.get(childNode.getParentId()); - if (parentNode == null) { - LoggerFactory.getLogger(getClass()).error("[buildRouterTree][resource({}) 找不到父资源({})]", - childNode.getId(), childNode.getParentId()); - return; - } - // 将自己添加到父节点中 - if (parentNode.getChildren() == null) { - parentNode.setChildren(new ArrayList<>()); - } - parentNode.getChildren().add(childNode); - }); - // 获得到所有的根节点 - return CollectionUtils.filterList(treeNodeMap.values(), node -> MenuIdEnum.ROOT.getId().equals(node.getParentId())); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/auth/SysUserSessionConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/auth/SysUserSessionConvert.java deleted file mode 100644 index 3b3eae3..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/auth/SysUserSessionConvert.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.iocoder.dashboard.modules.system.convert.auth; - -import cn.iocoder.dashboard.modules.system.controller.auth.vo.session.SysUserSessionPageItemRespVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.auth.SysUserSessionDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -@Mapper -public interface SysUserSessionConvert { - - SysUserSessionConvert INSTANCE = Mappers.getMapper(SysUserSessionConvert.class); - - SysUserSessionPageItemRespVO convert(SysUserSessionDO session); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/common/SysCaptchaConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/common/SysCaptchaConvert.java deleted file mode 100644 index 992c9c9..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/common/SysCaptchaConvert.java +++ /dev/null @@ -1,18 +0,0 @@ -package cn.iocoder.dashboard.modules.system.convert.common; - -import cn.hutool.captcha.AbstractCaptcha; -import cn.hutool.captcha.ICaptcha; -import cn.iocoder.dashboard.modules.system.controller.common.vo.SysCaptchaImageRespVO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -@Mapper -public interface SysCaptchaConvert { - - SysCaptchaConvert INSTANCE = Mappers.getMapper(SysCaptchaConvert.class); - - default SysCaptchaImageRespVO convert(String uuid, AbstractCaptcha captcha) { - return SysCaptchaImageRespVO.builder().uuid(uuid).img(captcha.getImageBase64()).build(); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/dept/SysDeptConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/dept/SysDeptConvert.java deleted file mode 100644 index f114c3a..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/dept/SysDeptConvert.java +++ /dev/null @@ -1,28 +0,0 @@ -package cn.iocoder.dashboard.modules.system.convert.dept; - -import cn.iocoder.dashboard.modules.system.controller.dept.vo.dept.SysDeptCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.dept.SysDeptRespVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.dept.SysDeptSimpleRespVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.dept.SysDeptUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -@Mapper -public interface SysDeptConvert { - - SysDeptConvert INSTANCE = Mappers.getMapper(SysDeptConvert.class); - - List convertList(List list); - - List convertList02(List list); - - SysDeptRespVO convert(SysDeptDO bean); - - SysDeptDO convert(SysDeptCreateReqVO bean); - - SysDeptDO convert(SysDeptUpdateReqVO bean); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/dept/SysPostConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/dept/SysPostConvert.java deleted file mode 100644 index 8b84d9c..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/dept/SysPostConvert.java +++ /dev/null @@ -1,28 +0,0 @@ -package cn.iocoder.dashboard.modules.system.convert.dept; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.*; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysPostDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -@Mapper -public interface SysPostConvert { - - SysPostConvert INSTANCE = Mappers.getMapper(SysPostConvert.class); - - List convertList02(List list); - - PageResult convertPage(PageResult page); - - SysPostRespVO convert(SysPostDO id); - - SysPostDO convert(SysPostCreateReqVO bean); - - SysPostDO convert(SysPostUpdateReqVO reqVO); - - List convertList03(List list); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/dict/SysDictDataConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/dict/SysDictDataConvert.java deleted file mode 100644 index e90f143..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/dict/SysDictDataConvert.java +++ /dev/null @@ -1,34 +0,0 @@ -package cn.iocoder.dashboard.modules.system.convert.dict; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.dict.core.dto.DictDataRespDTO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.*; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictDataDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.Collection; -import java.util.List; - -@Mapper -public interface SysDictDataConvert { - - SysDictDataConvert INSTANCE = Mappers.getMapper(SysDictDataConvert.class); - - List convertList(List list); - - SysDictDataRespVO convert(SysDictDataDO bean); - - PageResult convertPage(PageResult page); - - SysDictDataDO convert(SysDictDataUpdateReqVO bean); - - SysDictDataDO convert(SysDictDataCreateReqVO bean); - - List convertList02(List bean); - - DictDataRespDTO convert02(SysDictDataDO bean); - - List convertList03(Collection list); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/dict/SysDictTypeConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/dict/SysDictTypeConvert.java deleted file mode 100644 index 8b89ab1..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/dict/SysDictTypeConvert.java +++ /dev/null @@ -1,28 +0,0 @@ -package cn.iocoder.dashboard.modules.system.convert.dict; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.*; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictTypeDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -@Mapper -public interface SysDictTypeConvert { - - SysDictTypeConvert INSTANCE = Mappers.getMapper(SysDictTypeConvert.class); - - PageResult convertPage(PageResult bean); - - SysDictTypeRespVO convert(SysDictTypeDO bean); - - SysDictTypeDO convert(SysDictTypeCreateReqVO bean); - - SysDictTypeDO convert(SysDictTypeUpdateReqVO bean); - - List convertList(List list); - - List convertList02(List list); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/errorcode/SysErrorCodeConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/errorcode/SysErrorCodeConvert.java deleted file mode 100644 index 118d4d5..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/errorcode/SysErrorCodeConvert.java +++ /dev/null @@ -1,42 +0,0 @@ -package cn.iocoder.dashboard.modules.system.convert.errorcode; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.tool.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO; -import cn.iocoder.dashboard.modules.tool.framework.errorcode.core.dto.ErrorCodeRespDTO; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodeCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodeExcelVO; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodeRespVO; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodeUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.errorcode.SysErrorCodeDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -/** - * 错误码 Convert - * - * @author 芋道源码 - */ -@Mapper -public interface SysErrorCodeConvert { - - SysErrorCodeConvert INSTANCE = Mappers.getMapper(SysErrorCodeConvert.class); - - SysErrorCodeDO convert(SysErrorCodeCreateReqVO bean); - - SysErrorCodeDO convert(SysErrorCodeUpdateReqVO bean); - - SysErrorCodeRespVO convert(SysErrorCodeDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - - List convertList02(List list); - - SysErrorCodeDO convert(ErrorCodeAutoGenerateReqDTO bean); - - List convertList03(List list); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/logger/SysLoginLogConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/logger/SysLoginLogConvert.java deleted file mode 100644 index 1ac3018..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/logger/SysLoginLogConvert.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.iocoder.dashboard.modules.system.convert.logger; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogExcelVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogRespVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysLoginLogDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -@Mapper -public interface SysLoginLogConvert { - - SysLoginLogConvert INSTANCE = Mappers.getMapper(SysLoginLogConvert.class); - - SysLoginLogDO convert(SysLoginLogCreateReqVO bean); - - PageResult convertPage(PageResult page); - - List convertList(List list); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/logger/SysOperateLogConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/logger/SysOperateLogConvert.java deleted file mode 100644 index f1875af..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/logger/SysOperateLogConvert.java +++ /dev/null @@ -1,41 +0,0 @@ -package cn.iocoder.dashboard.modules.system.convert.logger; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog.SysOperateLogExcelVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog.SysOperateLogRespVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysOperateLogDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.SUCCESS; - -@Mapper -public interface SysOperateLogConvert { - - SysOperateLogConvert INSTANCE = Mappers.getMapper(SysOperateLogConvert.class); - - SysOperateLogDO convert(OperateLogCreateReqDTO bean); - - PageResult convertPage(PageResult page); - - SysOperateLogRespVO convert(SysOperateLogDO bean); - - default List convertList(List list, Map userMap) { - return list.stream().map(operateLog -> { - SysOperateLogExcelVO excelVO = convert02(operateLog); - MapUtils.findAndThen(userMap, operateLog.getId(), user -> excelVO.setUserNickname(user.getNickname())); - excelVO.setSuccessStr(SUCCESS.getCode().equals(operateLog.getResultCode()) ? "成功" : "失败"); - return excelVO; - }).collect(Collectors.toList()); - } - - SysOperateLogExcelVO convert02(SysOperateLogDO bean); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/notice/SysNoticeConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/notice/SysNoticeConvert.java deleted file mode 100644 index 4bebe82..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/notice/SysNoticeConvert.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.iocoder.dashboard.modules.system.convert.notice; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeRespVO; -import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.notice.SysNoticeDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -@Mapper -public interface SysNoticeConvert { - - SysNoticeConvert INSTANCE = Mappers.getMapper(SysNoticeConvert.class); - - PageResult convertPage(PageResult page); - - SysNoticeRespVO convert(SysNoticeDO bean); - - SysNoticeDO convert(SysNoticeUpdateReqVO bean); - - SysNoticeDO convert(SysNoticeCreateReqVO bean); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/permission/SysMenuConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/permission/SysMenuConvert.java deleted file mode 100644 index 3d5b222..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/permission/SysMenuConvert.java +++ /dev/null @@ -1,28 +0,0 @@ -package cn.iocoder.dashboard.modules.system.convert.permission; - -import cn.iocoder.dashboard.modules.system.controller.permission.vo.menu.SysMenuCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.menu.SysMenuRespVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.menu.SysMenuSimpleRespVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.menu.SysMenuUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysMenuDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -@Mapper -public interface SysMenuConvert { - - SysMenuConvert INSTANCE = Mappers.getMapper(SysMenuConvert.class); - - List convertList(List list); - - SysMenuDO convert(SysMenuCreateReqVO bean); - - SysMenuDO convert(SysMenuUpdateReqVO bean); - - SysMenuRespVO convert(SysMenuDO bean); - - List convertList02(List list); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/permission/SysRoleConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/permission/SysRoleConvert.java deleted file mode 100644 index 0201ae6..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/permission/SysRoleConvert.java +++ /dev/null @@ -1,25 +0,0 @@ -package cn.iocoder.dashboard.modules.system.convert.permission; - -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.*; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -@Mapper -public interface SysRoleConvert { - - SysRoleConvert INSTANCE = Mappers.getMapper(SysRoleConvert.class); - - SysRoleDO convert(SysRoleUpdateReqVO bean); - - SysRoleRespVO convert(SysRoleDO bean); - - SysRoleDO convert(SysRoleCreateReqVO bean); - - List convertList02(List list); - - List convertList03(List list); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/sms/SysSmsChannelConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/sms/SysSmsChannelConvert.java deleted file mode 100644 index 4236565..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/sms/SysSmsChannelConvert.java +++ /dev/null @@ -1,39 +0,0 @@ -package cn.iocoder.dashboard.modules.system.convert.sms; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelRespVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelSimpleRespVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -/** - * 短信渠道 Convert - * - * @author 芋道源码 - */ -@Mapper -public interface SysSmsChannelConvert { - - SysSmsChannelConvert INSTANCE = Mappers.getMapper(SysSmsChannelConvert.class); - - SysSmsChannelDO convert(SysSmsChannelCreateReqVO bean); - - SysSmsChannelDO convert(SysSmsChannelUpdateReqVO bean); - - SysSmsChannelRespVO convert(SysSmsChannelDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - - List convertList02(List list); - - List convertList03(List list); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/sms/SysSmsLogConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/sms/SysSmsLogConvert.java deleted file mode 100644 index 72018cd..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/sms/SysSmsLogConvert.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.iocoder.dashboard.modules.system.convert.sms; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogExcelVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogRespVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsLogDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -/** - * 短信日志 Convert - * - * @author 芋道源码 - */ -@Mapper -public interface SysSmsLogConvert { - - SysSmsLogConvert INSTANCE = Mappers.getMapper(SysSmsLogConvert.class); - - SysSmsLogRespVO convert(SysSmsLogDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - - List convertList02(List list); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/sms/SysSmsTemplateConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/sms/SysSmsTemplateConvert.java deleted file mode 100644 index 2a93cc2..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/sms/SysSmsTemplateConvert.java +++ /dev/null @@ -1,31 +0,0 @@ -package cn.iocoder.dashboard.modules.system.convert.sms; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateExcelVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateRespVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -@Mapper -public interface SysSmsTemplateConvert { - - SysSmsTemplateConvert INSTANCE = Mappers.getMapper(SysSmsTemplateConvert.class); - - SysSmsTemplateDO convert(SysSmsTemplateCreateReqVO bean); - - SysSmsTemplateDO convert(SysSmsTemplateUpdateReqVO bean); - - SysSmsTemplateRespVO convert(SysSmsTemplateDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - - List convertList02(List list); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/user/SysUserConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/user/SysUserConvert.java deleted file mode 100644 index fd4a8b9..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/user/SysUserConvert.java +++ /dev/null @@ -1,45 +0,0 @@ -package cn.iocoder.dashboard.modules.system.convert.user; - -import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileRespVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.*; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysPostDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -@Mapper -public interface SysUserConvert { - - SysUserConvert INSTANCE = Mappers.getMapper(SysUserConvert.class); - - SysUserPageItemRespVO convert(SysUserDO bean); - - SysUserPageItemRespVO.Dept convert(SysDeptDO bean); - - SysUserDO convert(SysUserCreateReqVO bean); - - SysUserDO convert(SysUserUpdateReqVO bean); - - SysUserExcelVO convert02(SysUserDO bean); - - SysUserDO convert(SysUserImportExcelVO bean); - - SysUserProfileRespVO convert03(SysUserDO bean); - - List convertList(List list); - - SysUserProfileRespVO.Dept convert02(SysDeptDO bean); - - SysUserDO convert(SysUserProfileUpdateReqVO bean); - - SysUserDO convert(SysUserProfileUpdatePasswordReqVO bean); - - List convertList02(List list); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/auth/SysUserSessionDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/auth/SysUserSessionDO.java deleted file mode 100644 index 4fa45e1..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/auth/SysUserSessionDO.java +++ /dev/null @@ -1,62 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.dataobject.auth; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Builder; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Date; - -/** - * 在线用户表 - * - * 我们已经将 {@link LoginUser} 缓存在 Redis 当中。 - * 这里额外存储在线用户到 MySQL 中,目的是为了方便管理界面可以灵活查询。 - * 同时,通过定时轮询 SysUserSessionDO 表,可以主动删除 Redis 的缓存,因为 Redis 的过期删除是延迟的。 - * - * @author 芋道源码 - */ -@TableName(value = "sys_user_session", autoResultMap = true) -@Data -@Builder -@EqualsAndHashCode(callSuper = true) -public class SysUserSessionDO extends BaseDO { - - /** - * 会话编号, 即 sessionId - */ - @TableId(type = IdType.INPUT) - private String id; - /** - * 用户编号 - * - * 关联 {@link SysUserDO#getId()} - */ - private Long userId; - - /** - * 用户账号 - * - * 冗余,因为账号可以变更 - */ - private String username; - - /** - * 用户 IP - */ - private String userIp; - /** - * 浏览器 UA - */ - private String userAgent; - /** - * 会话超时时间 - */ - private Date sessionTimeout; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/dept/SysDeptDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/dept/SysDeptDO.java deleted file mode 100644 index 901e8ce..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/dept/SysDeptDO.java +++ /dev/null @@ -1,58 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.dataobject.dept; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * 部门表 - * - * @author ruoyi - */ -@TableName("sys_dept") -@Data -@EqualsAndHashCode(callSuper = true) -public class SysDeptDO extends BaseDO { - - /** - * 部门ID - */ - @TableId - private Long id; - /** - * 部门名称 - */ - private String name; - /** - * 父部门ID - * - * 关联 {@link #id} - */ - private Long parentId; - /** - * 显示顺序 - */ - private Integer sort; - /** - * 负责人 - */ - private String leader; - /** - * 联系电话 - */ - private String phone; - /** - * 邮箱 - */ - private String email; - /** - * 部门状态 - * - * 枚举 {@link CommonStatusEnum} - */ - private Integer status; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/dept/SysPostDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/dept/SysPostDO.java deleted file mode 100644 index 3cb2d84..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/dept/SysPostDO.java +++ /dev/null @@ -1,49 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.dataobject.dept; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * 岗位表 - * - * @author ruoyi - */ -@TableName("sys_post") -@Data -@EqualsAndHashCode(callSuper = true) -public class SysPostDO extends BaseDO { - - /** - * 岗位序号 - */ - @TableId - private Long id; - - /** - * 岗位名称 - */ - private String name; - /** - * 岗位编码 - */ - private String code; - /** - * 岗位排序 - */ - private Integer sort; - /** - * 状态 - * - * 枚举 {@link CommonStatusEnum} - */ - private Integer status; - /** - * 备注 - */ - private String remark; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/dict/SysDictDataDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/dict/SysDictDataDO.java deleted file mode 100644 index b58129f..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/dict/SysDictDataDO.java +++ /dev/null @@ -1,54 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.dataobject.dict; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * 字典数据表 - * - * @author ruoyi - */ -@TableName("sys_dict_data") -@Data -@EqualsAndHashCode(callSuper = true) -public class SysDictDataDO extends BaseDO { - - /** - * 字典数据编号 - */ - @TableId - private Long id; - /** - * 字典排序 - */ - private Integer sort; - /** - * 字典标签 - */ - private String label; - /** - * 字典值 - */ - private String value; - /** - * 字典类型 - * - * 冗余 {@link SysDictDataDO#getDictType()} - */ - private String dictType; - /** - * 状态 - * - * 枚举 {@link CommonStatusEnum} - */ - private Integer status; - /** - * 备注 - */ - private String remark; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/dict/SysDictTypeDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/dict/SysDictTypeDO.java deleted file mode 100644 index 256a8ac..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/dict/SysDictTypeDO.java +++ /dev/null @@ -1,49 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.dataobject.dict; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -/** - * 字典类型表 - * - * @author ruoyi - */ -@TableName("sys_dict_type") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class SysDictTypeDO extends BaseDO { - - /** - * 字典主键 - */ - @TableId - private Long id; - /** - * 字典名称 - */ - private String name; - /** - * 字典类型 - */ - @TableField("`type`") - private String type; - /** - * 状态 - * - * 枚举 {@link CommonStatusEnum} - */ - private Integer status; - /** - * 备注 - */ - private String remark; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/errorcode/SysErrorCodeDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/errorcode/SysErrorCodeDO.java deleted file mode 100644 index 9e1e207..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/errorcode/SysErrorCodeDO.java +++ /dev/null @@ -1,50 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.dataobject.errorcode; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.dashboard.modules.system.enums.errorcode.SysErrorCodeTypeEnum; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -/** - * 错误码表 - * - * @author 芋道源码 - */ -@TableName(value = "sys_error_code") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class SysErrorCodeDO extends BaseDO { - - /** - * 错误码编号,自增 - */ - @TableId - private Long id; - /** - * 错误码类型 - * - * 枚举 {@link SysErrorCodeTypeEnum} - */ - private Integer type; - /** - * 应用名 - */ - private String applicationName; - /** - * 错误码编码 - */ - private Integer code; - /** - * 错误码错误提示 - */ - private String message; - /** - * 错误码备注 - */ - private String memo; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/logger/SysLoginLogDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/logger/SysLoginLogDO.java deleted file mode 100644 index 9fc6bac..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/logger/SysLoginLogDO.java +++ /dev/null @@ -1,59 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.dataobject.logger; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.dashboard.modules.system.enums.logger.SysLoginLogTypeEnum; -import cn.iocoder.dashboard.modules.system.enums.logger.SysLoginResultEnum; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -/** - * 登陆日志表 - * - * 注意,包括登陆和登出两种行为 - * - * @author ruoyi - */ -@TableName("sys_login_log") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class SysLoginLogDO extends BaseDO { - - /** - * 日志主键 - */ - private Long id; - /** - * 日志类型 - * - * 枚举 {@link SysLoginLogTypeEnum} - */ - private Integer logType; - /** - * 链路追踪编号 - */ - private String traceId; - /** - * 用户账号 - * - * 冗余,因为账号可以变更 - */ - private String username; - /** - * 登陆结果 - * - * 枚举 {@link SysLoginResultEnum} - */ - private Integer result; - /** - * 用户 IP - */ - private String userIp; - /** - * 浏览器 UA - */ - private String userAgent; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/logger/SysOperateLogDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/logger/SysOperateLogDO.java deleted file mode 100644 index 2143851..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/logger/SysOperateLogDO.java +++ /dev/null @@ -1,137 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.dataobject.logger; - -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Date; -import java.util.Map; - -/** - * 操作日志表 - * - * @author 芋道源码 - */ -@TableName(value = "sys_operate_log", autoResultMap = true) -@Data -@EqualsAndHashCode(callSuper = true) -public class SysOperateLogDO extends BaseDO { - - /** - * {@link #javaMethodArgs} 的最大长度 - */ - public static final Integer JAVA_METHOD_ARGS_MAX_LENGTH = 8000; - - /** - * {@link #resultData} 的最大长度 - */ - public static final Integer RESULT_MAX_LENGTH = 4000; - - /** - * 日志主键 - */ - @TableId - private Long id; - /** - * 链路追踪编号 - * - * 一般来说,通过链路追踪编号,可以将访问日志,错误日志,链路追踪日志,logger 打印日志等,结合在一起,从而进行排错。 - */ - private String traceId; - /** - * 用户编号 - * - * {@link SysUserDO#getId()} - */ - private Long userId; - /** - * 操作模块 - */ - private String module; - /** - * 操作名 - */ - private String name; - /** - * 操作分类 - * - * 枚举 {@link OperateTypeEnum} - */ - @TableField("operate_type") - private Integer type; - /** - * 操作内容,记录整个操作的明细 - * 例如说,修改编号为 1 的用户信息,将性别从男改成女,将姓名从芋道改成源码。 - */ - private String content; - /** - * 拓展字段,有些复杂的业务,需要记录一些字段 - * 例如说,记录订单编号,则可以添加 key 为 "orderId",value 为订单编号 - */ - @TableField(typeHandler = JacksonTypeHandler.class) - private Map exts; - - /** - * 请求方法名 - */ - private String requestMethod; - /** - * 请求地址 - */ - private String requestUrl; - /** - * 用户 IP - */ - private String userIp; - /** - * 浏览器 UA - */ - private String userAgent; - - /** - * Java 方法名 - */ - private String javaMethod; - /** - * Java 方法的参数 - * - * 实际格式为 Map - * 不使用 @TableField(typeHandler = FastjsonTypeHandler.class) 注解的原因是,数据库存储有长度限制,会进行裁剪,会导致 JSON 反序列化失败 - * 其中,key 为参数名,value 为参数值 - */ - private String javaMethodArgs; - /** - * 开始时间 - */ - private Date startTime; - /** - * 执行时长,单位:毫秒 - */ - private Integer duration; - /** - * 结果码 - * - * 目前使用的 {@link CommonResult#getCode()} 属性 - */ - private Integer resultCode; - /** - * 结果提示 - * - * 目前使用的 {@link CommonResult#getMsg()} 属性 - */ - private String resultMsg; - /** - * 结果数据 - * - * 如果是对象,则使用 JSON 格式化 - */ - private String resultData; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/notice/SysNoticeDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/notice/SysNoticeDO.java deleted file mode 100644 index 600610e..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/notice/SysNoticeDO.java +++ /dev/null @@ -1,47 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.dataobject.notice; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.dashboard.modules.system.enums.notice.SysNoticeTypeEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * 通知公告表 - * - * @author ruoyi - */ -@TableName("sys_notice") -@Data -@EqualsAndHashCode(callSuper = true) -public class SysNoticeDO extends BaseDO { - - /** - * 公告ID - */ - private Long id; - /** - * 公告标题 - */ - private String title; - /** - * 公告类型 - * - * 枚举 {@link SysNoticeTypeEnum} - */ - @TableField("notice_type") - private Integer type; - /** - * 公告内容 - */ - private String content; - /** - * 公告状态 - * - * 枚举 {@link CommonStatusEnum} - */ - private Integer status; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/permission/SysMenuDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/permission/SysMenuDO.java deleted file mode 100644 index 1a706d6..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/permission/SysMenuDO.java +++ /dev/null @@ -1,76 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.dataobject.permission; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.dashboard.modules.system.enums.permission.MenuTypeEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * 菜单 DO - * - * @author ruoyi - */ -@TableName("sys_menu") -@Data -@EqualsAndHashCode(callSuper = true) -public class SysMenuDO extends BaseDO { - - /** - * 菜单ID - */ - @TableId - private Long id; - /** - * 菜单名称 - */ - private String name; - /** - * 权限标识 - * - * 一般格式为:${系统}:${模块}:${操作} - * 例如说:system:admin:add,即 system 服务的添加管理员。 - * - * 当我们把该 SysMenuDO 赋予给角色后,意味着该角色有该资源: - * - 对于后端,配合 @PreAuthorize 注解,配置 API 接口需要该权限,从而对 API 接口进行权限控制。 - * - 对于前端,配合前端标签,配置按钮是否展示,避免用户没有该权限时,结果可以看到该操作。 - */ - private String permission; - /** - * 菜单类型 - * - * 枚举 {@link MenuTypeEnum} - */ - @TableField("menu_type") - private Integer type; - /** - * 显示顺序 - */ - private Integer sort; - /** - * 父菜单ID - */ - private Long parentId; - /** - * 路由地址 - */ - private String path; - /** - * 菜单图标 - */ - private String icon; - /** - * 组件路径 - */ - private String component; - /** - * 状态 - * - * 枚举 {@link CommonStatusEnum} - */ - private Integer status; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/permission/SysRoleDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/permission/SysRoleDO.java deleted file mode 100644 index e6dfd74..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/permission/SysRoleDO.java +++ /dev/null @@ -1,77 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.dataobject.permission; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.framework.mybatis.core.type.JsonLongSetTypeHandler; -import cn.iocoder.yudao.framework.security.core.enums.DataScopeEnum; -import cn.iocoder.dashboard.modules.system.enums.permission.RoleCodeEnum; -import cn.iocoder.dashboard.modules.system.enums.permission.SysRoleTypeEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Set; - -/** - * 角色 DO - * - * @author ruoyi - */ -@TableName(value = "sys_role", autoResultMap = true) -@Data -@EqualsAndHashCode(callSuper = true) -public class SysRoleDO extends BaseDO { - - /** - * 角色ID - */ - @TableId - private Long id; - /** - * 角色名称 - */ - private String name; - /** - * 角色标识 - * - * 枚举 {@link RoleCodeEnum} - */ - private String code; - /** - * 角色排序 - */ - private Integer sort; - /** - * 角色状态 - * - * 枚举 {@link CommonStatusEnum} - */ - private Integer status; - /** - * 角色类型 - * - * 枚举 {@link SysRoleTypeEnum} - */ - private Integer type; - /** - * 备注 - */ - private String remark; - - /** - * 数据范围 - * - * 枚举 {@link DataScopeEnum} - */ - private Integer dataScope; - /** - * 数据范围(指定部门数组) - * - * 适用于 {@link #dataScope} 的值为 {@link DataScopeEnum#DEPT_CUSTOM} 时 - */ - @TableField(typeHandler = JsonLongSetTypeHandler.class) - private Set dataScopeDeptIds; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/permission/SysRoleMenuDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/permission/SysRoleMenuDO.java deleted file mode 100644 index 08afe01..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/permission/SysRoleMenuDO.java +++ /dev/null @@ -1,33 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.dataobject.permission; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * 角色和菜单关联 - * - * @author ruoyi - */ -@TableName("sys_role_menu") -@Data -@EqualsAndHashCode(callSuper = true) -public class SysRoleMenuDO extends BaseDO { - - /** - * 自增主键 - */ - @TableId - private Long id; - /** - * 角色ID - */ - private Long roleId; - /** - * 菜单ID - */ - private Long menuId; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/permission/SysUserRoleDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/permission/SysUserRoleDO.java deleted file mode 100644 index b97c9b4..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/permission/SysUserRoleDO.java +++ /dev/null @@ -1,33 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.dataobject.permission; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * 用户和角色关联 - * - * @author ruoyi - */ -@TableName("sys_user_role") -@Data -@EqualsAndHashCode(callSuper = true) -public class SysUserRoleDO extends BaseDO { - - /** - * 自增主键 - */ - @TableId - private Long id; - /** - * 用户 ID - */ - private Long userId; - /** - * 角色 ID - */ - private Long roleId; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/sms/SysSmsChannelDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/sms/SysSmsChannelDO.java deleted file mode 100644 index befc9b9..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/sms/SysSmsChannelDO.java +++ /dev/null @@ -1,60 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.dataobject.sms; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.framework.sms.core.enums.SmsChannelEnum; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -/** - * 短信渠道 DO - * - * @author zzf - * @since 2021-01-25 - */ -@TableName(value = "sys_sms_channel", autoResultMap = true) -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class SysSmsChannelDO extends BaseDO { - - /** - * 渠道编号 - */ - private Long id; - /** - * 短信签名 - */ - private String signature; - /** - * 渠道编码 - * - * 枚举 {@link SmsChannelEnum} - */ - private String code; - /** - * 启用状态 - * - * 枚举 {@link CommonStatusEnum} - */ - private Integer status; - /** - * 备注 - */ - private String remark; - /** - * 短信 API 的账号 - */ - private String apiKey; - /** - * 短信 API 的秘钥 - */ - private String apiSecret; - /** - * 短信发送回调 URL - */ - private String callbackUrl; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/sms/SysSmsLogDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/sms/SysSmsLogDO.java deleted file mode 100644 index 782d004..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/sms/SysSmsLogDO.java +++ /dev/null @@ -1,173 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.dataobject.sms; - -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.framework.sms.core.enums.SmsFrameworkErrorCodeConstants; -import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsReceiveStatusEnum; -import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendStatusEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; -import lombok.*; - -import java.util.Date; -import java.util.Map; - -/** - * 短信日志 DO - * - * @author zzf - * @since 2021-01-25 - */ -@TableName(value = "sys_sms_log", autoResultMap = true) -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class SysSmsLogDO extends BaseDO { - - /** - * 自增编号 - */ - private Long id; - - // ========= 渠道相关字段 ========= - - /** - * 短信渠道编号 - * - * 关联 {@link SysSmsChannelDO#getId()} - */ - private Long channelId; - /** - * 短信渠道编码 - * - * 冗余 {@link SysSmsChannelDO#getCode()} - */ - private String channelCode; - - // ========= 模板相关字段 ========= - - /** - * 模板编号 - * - * 关联 {@link SysSmsTemplateDO#getId()} - */ - private Long templateId; - /** - * 模板编码 - * - * 冗余 {@link SysSmsTemplateDO#getCode()} - */ - private String templateCode; - /** - * 短信类型 - * - * 冗余 {@link SysSmsTemplateDO#getType()} - */ - private Integer templateType; - /** - * 基于 {@link SysSmsTemplateDO#getContent()} 格式化后的内容 - */ - private String templateContent; - /** - * 基于 {@link SysSmsTemplateDO#getParams()} 输入后的参数 - */ - @TableField(typeHandler = JacksonTypeHandler.class) - private Map templateParams; - /** - * 短信 API 的模板编号 - * - * 冗余 {@link SysSmsTemplateDO#getApiTemplateId()} - */ - private String apiTemplateId; - - // ========= 手机相关字段 ========= - - /** - * 手机号 - */ - private String mobile; - /** - * 用户编号 - */ - private Long userId; - /** - * 用户类型 - * - * 枚举 {@link UserTypeEnum} - */ - private Integer userType; - - // ========= 发送相关字段 ========= - - /** - * 发送状态 - * - * 枚举 {@link SysSmsSendStatusEnum} - */ - private Integer sendStatus; - /** - * 发送时间 - */ - private Date sendTime; - /** - * 发送结果的编码 - * - * 枚举 {@link SmsFrameworkErrorCodeConstants} - */ - private Integer sendCode; - /** - * 发送结果的提示 - * - * 一般情况下,使用 {@link SmsFrameworkErrorCodeConstants} - * 异常情况下,通过格式化 Exception 的提示存储 - */ - private String sendMsg; - /** - * 短信 API 发送结果的编码 - * - * 由于第三方的错误码可能是字符串,所以使用 String 类型 - */ - private String apiSendCode; - /** - * 短信 API 发送失败的提示 - */ - private String apiSendMsg; - /** - * 短信 API 发送返回的唯一请求 ID - * - * 用于和短信 API 进行定位于排错 - */ - private String apiRequestId; - /** - * 短信 API 发送返回的序号 - * - * 用于和短信 API 平台的发送记录关联 - */ - private String apiSerialNo; - - // ========= 接收相关字段 ========= - - /** - * 接收状态 - * - * 枚举 {@link SysSmsReceiveStatusEnum} - */ - private Integer receiveStatus; - /** - * 接收时间 - */ - private Date receiveTime; - /** - * 短信 API 接收结果的编码 - */ - private String apiReceiveCode; - /** - * 短信 API 接收结果的提示 - */ - private String apiReceiveMsg; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/sms/SysSmsTemplateDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/sms/SysSmsTemplateDO.java deleted file mode 100644 index 3af1e67..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/sms/SysSmsTemplateDO.java +++ /dev/null @@ -1,89 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.dataobject.sms; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsTemplateTypeEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import java.util.List; - -/** - * 短信模板 DO - * - * @author zzf - * @since 2021-01-25 - */ -@TableName(value = "sys_sms_template", autoResultMap = true) -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class SysSmsTemplateDO extends BaseDO { - - /** - * 自增编号 - */ - private Long id; - - // ========= 模板相关字段 ========= - - /** - * 短信类型 - * - * 枚举 {@link SysSmsTemplateTypeEnum} - */ - private Integer type; - /** - * 启用状态 - * - * 枚举 {@link CommonStatusEnum} - */ - private Integer status; - /** - * 模板编码,保证唯一 - */ - private String code; - /** - * 模板名称 - */ - private String name; - /** - * 模板内容 - * - * 内容的参数,使用 {} 包括,例如说 {name} - */ - private String content; - /** - * 参数数组(自动根据内容生成) - */ - @TableField(typeHandler = JacksonTypeHandler.class) - private List params; - /** - * 备注 - */ - private String remark; - /** - * 短信 API 的模板编号 - */ - private String apiTemplateId; - - // ========= 渠道相关字段 ========= - - /** - * 短信渠道编号 - * - * 关联 {@link SysSmsChannelDO#getId()} - */ - private Long channelId; - /** - * 短信渠道编码 - * - * 冗余 {@link SysSmsChannelDO#getCode()} - */ - private String channelCode; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/user/SysUserDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/user/SysUserDO.java deleted file mode 100644 index 782ed59..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/user/SysUserDO.java +++ /dev/null @@ -1,94 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.dataobject.user; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.framework.mybatis.core.type.JsonLongSetTypeHandler; -import cn.iocoder.dashboard.modules.system.enums.common.SysSexEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; - -import java.util.Date; -import java.util.Set; - -/** - * 用户 DO - * - * @author ruoyi - */ -@TableName(value = "sys_user", autoResultMap = true) -@Data -@EqualsAndHashCode(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class SysUserDO extends BaseDO { - - /** - * 用户ID - */ - @TableId - private Long id; - /** - * 用户账号 - */ - private String username; - /** - * 加密后的密码 - * - * 因为目前使用 {@link BCryptPasswordEncoder} 加密器,所以无需自己处理 salt 盐 - */ - private String password; - /** - * 用户昵称 - */ - private String nickname; - /** - * 备注 - */ - private String remark; - /** - * 部门ID - */ - private Long deptId; - /** - * 岗位编号数组 - */ - @TableField(typeHandler = JsonLongSetTypeHandler.class) - private Set postIds; - /** - * 用户邮箱 - */ - private String email; - /** - * 手机号码 - */ - private String mobile; - /** - * 用户性别 - * - * 枚举类 {@link SysSexEnum} - */ - private Integer sex; - /** - * 用户头像 - */ - private String avatar; - /** - * 帐号状态 - * - * 枚举 {@link CommonStatusEnum} - */ - private Integer status; - /** - * 最后登录IP - */ - private String loginIp; - /** - * 最后登录时间 - */ - private Date loginDate; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/auth/SysUserSessionMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/auth/SysUserSessionMapper.java deleted file mode 100644 index ed53d35..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/auth/SysUserSessionMapper.java +++ /dev/null @@ -1,26 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.mysql.auth; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.auth.SysUserSessionDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Collection; -import java.util.Date; -import java.util.List; - -@Mapper -public interface SysUserSessionMapper extends BaseMapperX { - - default PageResult selectPage(SysUserSessionPageReqVO reqVO, Collection userIds) { - return selectPage(reqVO, new QueryWrapperX() - .inIfPresent("user_id", userIds) - .likeIfPresent("user_ip", reqVO.getUserIp())); - } - - default List selectListBySessionTimoutLt() { - return selectList(new QueryWrapperX().lt("session_timeout",new Date())); - } -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dept/SysDeptMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dept/SysDeptMapper.java deleted file mode 100644 index bbca887..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dept/SysDeptMapper.java +++ /dev/null @@ -1,35 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.mysql.dept; - -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.dept.SysDeptListReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Date; -import java.util.List; - -@Mapper -public interface SysDeptMapper extends BaseMapperX { - - default List selectList(SysDeptListReqVO reqVO) { - return selectList(new QueryWrapperX().likeIfPresent("name", reqVO.getName()) - .eqIfPresent("status", reqVO.getStatus())); - } - - default SysDeptDO selectByParentIdAndName(Long parentId, String name) { - return selectOne(new QueryWrapper().eq("parent_id", parentId) - .eq("name", name)); - } - - default Integer selectCountByParentId(Long parentId) { - return selectCount(new QueryWrapper().eq("parent_id", parentId)); - } - - default boolean selectExistsByUpdateTimeAfter(Date maxUpdateTime) { - return selectOne(new QueryWrapper().select("id") - .gt("update_time", maxUpdateTime).last("LIMIT 1")) != null; - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dept/SysPostMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dept/SysPostMapper.java deleted file mode 100644 index db85d8f..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dept/SysPostMapper.java +++ /dev/null @@ -1,45 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.mysql.dept; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostPageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysPostDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Collection; -import java.util.List; - -@Mapper -public interface SysPostMapper extends BaseMapperX { - - default List selectList(Collection ids, Collection statuses) { - return selectList(new QueryWrapperX().inIfPresent("id", ids) - .inIfPresent("status", statuses)); - } - - default PageResult selectPage(SysPostPageReqVO reqVO) { - return selectPage(reqVO, new QueryWrapperX() - .likeIfPresent("code", reqVO.getCode()) - .likeIfPresent("name", reqVO.getName()) - .eqIfPresent("status", reqVO.getStatus())); - } - - default List selectList(SysPostExportReqVO reqVO) { - return selectList(new QueryWrapperX() - .likeIfPresent("code", reqVO.getCode()) - .likeIfPresent("name", reqVO.getName()) - .eqIfPresent("status", reqVO.getStatus())); - } - - default SysPostDO selectByName(String name) { - return selectOne(new QueryWrapper().eq("name", name)); - } - - default SysPostDO selectByCode(String code) { - return selectOne(new QueryWrapper().eq("code", code)); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dict/SysDictDataMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dict/SysDictDataMapper.java deleted file mode 100644 index 57b736a..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dict/SysDictDataMapper.java +++ /dev/null @@ -1,46 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.mysql.dict; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataPageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictDataDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Date; -import java.util.List; - -@Mapper -public interface SysDictDataMapper extends BaseMapperX { - - default SysDictDataDO selectByDictTypeAndValue(String dictType, String value) { - return selectOne(new QueryWrapper().eq("dict_type", dictType) - .eq("value", value)); - } - - default int selectCountByDictType(String dictType) { - return selectCount("dict_type", dictType); - } - - default PageResult selectPage(SysDictDataPageReqVO reqVO) { - return selectPage(reqVO, new QueryWrapperX() - .likeIfPresent("label", reqVO.getLabel()) - .likeIfPresent("dict_type", reqVO.getDictType()) - .eqIfPresent("status", reqVO.getStatus()) - .orderByAsc("dict_type", "sort")); - } - - default List selectList(SysDictDataExportReqVO reqVO) { - return selectList(new QueryWrapperX().likeIfPresent("label", reqVO.getLabel()) - .likeIfPresent("dict_type", reqVO.getDictType()) - .eqIfPresent("status", reqVO.getStatus())); - } - - default boolean selectExistsByUpdateTimeAfter(Date maxUpdateTime) { - return selectOne(new QueryWrapper().select("id") - .gt("update_time", maxUpdateTime).last("LIMIT 1")) != null; - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dict/SysDictTypeMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dict/SysDictTypeMapper.java deleted file mode 100644 index 2ace162..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dict/SysDictTypeMapper.java +++ /dev/null @@ -1,40 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.mysql.dict; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypePageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictTypeDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -@Mapper -public interface SysDictTypeMapper extends BaseMapperX { - - default PageResult selectPage(SysDictTypePageReqVO reqVO) { - return selectPage(reqVO, new QueryWrapperX() - .likeIfPresent("name", reqVO.getName()) - .likeIfPresent("`type`", reqVO.getType()) - .eqIfPresent("status", reqVO.getStatus()) - .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())); - } - - default List selectList(SysDictTypeExportReqVO reqVO) { - return selectList(new QueryWrapperX() - .likeIfPresent("name", reqVO.getName()) - .likeIfPresent("`type`", reqVO.getType()) - .eqIfPresent("status", reqVO.getStatus()) - .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())); - } - - default SysDictTypeDO selectByType(String type) { - return selectOne(new QueryWrapperX().eq("`type`", type)); - } - - default SysDictTypeDO selectByName(String name) { - return selectOne(new QueryWrapperX().eq("name", name)); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/errorcode/SysErrorCodeMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/errorcode/SysErrorCodeMapper.java deleted file mode 100644 index 3be6195..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/errorcode/SysErrorCodeMapper.java +++ /dev/null @@ -1,52 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.mysql.errorcode; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodeExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodePageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.errorcode.SysErrorCodeDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Collection; -import java.util.Date; -import java.util.List; - -@Mapper -public interface SysErrorCodeMapper extends BaseMapperX { - - default PageResult selectPage(SysErrorCodePageReqVO reqVO) { - return selectPage(reqVO, new QueryWrapperX() - .eqIfPresent("type", reqVO.getType()) - .likeIfPresent("application_name", reqVO.getApplicationName()) - .eqIfPresent("code", reqVO.getCode()) - .likeIfPresent("message", reqVO.getMessage()) - .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) - .orderByAsc("application_name", "code")); - } - - default List selectList(SysErrorCodeExportReqVO reqVO) { - return selectList(new QueryWrapperX() - .eqIfPresent("type", reqVO.getType()) - .likeIfPresent("application_name", reqVO.getApplicationName()) - .eqIfPresent("code", reqVO.getCode()) - .likeIfPresent("message", reqVO.getMessage()) - .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) - .orderByAsc("application_name", "code")); - } - - default List selectListByCodes(Collection codes) { - return selectList(new QueryWrapper().in("code", codes)); - } - - default SysErrorCodeDO selectByCode(Integer code) { - return selectOne(new QueryWrapper().eq("code", code)); - } - - default List selectListByApplicationNameAndUpdateTimeGt(String applicationName, Date minUpdateTime) { - return selectList(new QueryWrapperX().eq("application_name", applicationName) - .gtIfPresent("update_time", minUpdateTime)); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/logger/SysLoginLogMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/logger/SysLoginLogMapper.java deleted file mode 100644 index 174de74..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/logger/SysLoginLogMapper.java +++ /dev/null @@ -1,45 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.mysql.logger; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysLoginLogDO; -import cn.iocoder.dashboard.modules.system.enums.logger.SysLoginResultEnum; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -@Mapper -public interface SysLoginLogMapper extends BaseMapperX { - - default PageResult selectPage(SysLoginLogPageReqVO reqVO) { - QueryWrapperX query = new QueryWrapperX() - .likeIfPresent("user_ip", reqVO.getUserIp()) - .likeIfPresent("username", reqVO.getUsername()) - .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime()); - if (Boolean.TRUE.equals(reqVO.getStatus())) { - query.eq("result", SysLoginResultEnum.SUCCESS.getResult()); - } else if (Boolean.FALSE.equals(reqVO.getStatus())) { - query.gt("result", SysLoginResultEnum.SUCCESS.getResult()); - } - query.orderByDesc("id"); // 降序 - return selectPage(reqVO, query); - } - - default List selectList(SysLoginLogExportReqVO reqVO) { - QueryWrapperX query = new QueryWrapperX() - .likeIfPresent("user_ip", reqVO.getUserIp()) - .likeIfPresent("username", reqVO.getUsername()) - .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime()); - if (Boolean.TRUE.equals(reqVO.getStatus())) { - query.eq("result", SysLoginResultEnum.SUCCESS.getResult()); - } else if (Boolean.FALSE.equals(reqVO.getStatus())) { - query.gt("result", SysLoginResultEnum.SUCCESS.getResult()); - } - query.orderByDesc("id"); // 降序 - return selectList(query); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/logger/SysOperateLogMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/logger/SysOperateLogMapper.java deleted file mode 100644 index 61d97e6..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/logger/SysOperateLogMapper.java +++ /dev/null @@ -1,48 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.mysql.logger; - -import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysOperateLogDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Collection; -import java.util.List; - -@Mapper -public interface SysOperateLogMapper extends BaseMapperX { - - default PageResult selectPage(SysOperateLogPageReqVO reqVO, Collection userIds) { - QueryWrapperX query = new QueryWrapperX() - .likeIfPresent("module", reqVO.getModule()) - .inIfPresent("user_id", userIds) - .eqIfPresent("operate_type", reqVO.getType()) - .betweenIfPresent("start_time", reqVO.getBeginTime(), reqVO.getEndTime()); - if (Boolean.TRUE.equals(reqVO.getSuccess())) { - query.eq("result_code", GlobalErrorCodeConstants.SUCCESS.getCode()); - } else if (Boolean.FALSE.equals(reqVO.getSuccess())) { - query.gt("result_code", GlobalErrorCodeConstants.SUCCESS.getCode()); - } - query.orderByDesc("id"); // 降序 - return selectPage(reqVO, query); - } - - default List selectList(SysOperateLogExportReqVO reqVO, Collection userIds) { - QueryWrapperX query = new QueryWrapperX() - .likeIfPresent("module", reqVO.getModule()) - .inIfPresent("user_id", userIds) - .eqIfPresent("operate_type", reqVO.getType()) - .betweenIfPresent("start_time", reqVO.getBeginTime(), reqVO.getEndTime()); - if (Boolean.TRUE.equals(reqVO.getSuccess())) { - query.eq("result_code", GlobalErrorCodeConstants.SUCCESS.getCode()); - } else if (Boolean.FALSE.equals(reqVO.getSuccess())) { - query.gt("result_code", GlobalErrorCodeConstants.SUCCESS.getCode()); - } - query.orderByDesc("id"); // 降序 - return selectList(query); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/notice/SysNoticeMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/notice/SysNoticeMapper.java deleted file mode 100644 index a89f97b..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/notice/SysNoticeMapper.java +++ /dev/null @@ -1,19 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.mysql.notice; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticePageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.notice.SysNoticeDO; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface SysNoticeMapper extends BaseMapperX { - - default PageResult selectPage(SysNoticePageReqVO reqVO) { - return selectPage(reqVO, new QueryWrapperX() - .likeIfPresent("title", reqVO.getTitle()) - .eqIfPresent("status", reqVO.getStatus())); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/permission/SysMenuMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/permission/SysMenuMapper.java deleted file mode 100644 index 9e2d625..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/permission/SysMenuMapper.java +++ /dev/null @@ -1,35 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.mysql.permission; - -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.menu.SysMenuListReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysMenuDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Date; -import java.util.List; - -@Mapper -public interface SysMenuMapper extends BaseMapperX { - - default SysMenuDO selectByParentIdAndName(Long parentId, String name) { - return selectOne(new QueryWrapper().eq("parent_id", parentId) - .eq("name", name)); - } - - default Integer selectCountByParentId(Long parentId) { - return selectCount(new QueryWrapper().eq("parent_id", parentId)); - } - - default List selectList(SysMenuListReqVO reqVO) { - return selectList(new QueryWrapperX().likeIfPresent("name", reqVO.getName()) - .eqIfPresent("status", reqVO.getStatus())); - } - - default boolean selectExistsByUpdateTimeAfter(Date maxUpdateTime) { - return selectOne(new QueryWrapper().select("id") - .gt("update_time", maxUpdateTime).last("LIMIT 1")) != null; - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/permission/SysRoleMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/permission/SysRoleMapper.java deleted file mode 100644 index 25161f2..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/permission/SysRoleMapper.java +++ /dev/null @@ -1,51 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.mysql.permission; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRolePageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; -import org.springframework.lang.Nullable; - -import java.util.Collection; -import java.util.Date; -import java.util.List; - -@Mapper -public interface SysRoleMapper extends BaseMapperX { - - default PageResult selectPage(SysRolePageReqVO reqVO) { - return selectPage(reqVO, new QueryWrapperX().likeIfPresent("name", reqVO.getName()) - .likeIfPresent("code", reqVO.getCode()) - .eqIfPresent("status", reqVO.getStatus()) - .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime())); - } - - default List listRoles(SysRoleExportReqVO reqVO) { - return selectList(new QueryWrapperX().likeIfPresent("name", reqVO.getName()) - .likeIfPresent("code", reqVO.getCode()) - .eqIfPresent("status", reqVO.getStatus()) - .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime())); - } - - default SysRoleDO selectByName(String name) { - return selectOne(new QueryWrapperX().eq("name", name)); - } - - default SysRoleDO selectByCode(String code) { - return selectOne(new QueryWrapperX().eq("code", code)); - } - - default List selectListByStatus(@Nullable Collection statuses) { - return selectList(new QueryWrapperX().in("status", statuses)); - } - - default boolean selectExistsByUpdateTimeAfter(Date maxUpdateTime) { - return selectOne(new QueryWrapper().select("id") - .gt("update_time", maxUpdateTime).last("LIMIT 1")) != null; - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/permission/SysRoleMenuMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/permission/SysRoleMenuMapper.java deleted file mode 100644 index 6483528..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/permission/SysRoleMenuMapper.java +++ /dev/null @@ -1,48 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.mysql.permission; - -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleMenuDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.Collection; -import java.util.Date; -import java.util.List; -import java.util.stream.Collectors; - -@Mapper -public interface SysRoleMenuMapper extends BaseMapperX { - - default List selectListByRoleId(Long roleId) { - return selectList(new QueryWrapper().eq("role_id", roleId)); - } - - default void insertList(Long roleId, Collection menuIds) { - List list = menuIds.stream().map(menuId -> { - SysRoleMenuDO entity = new SysRoleMenuDO(); - entity.setRoleId(roleId); - entity.setMenuId(menuId); - return entity; - }).collect(Collectors.toList()); - // TODO 芋艿,mybatis plus 增加批量插入的功能 - list.forEach(this::insert); - } - - default void deleteListByRoleIdAndMenuIds(Long roleId, Collection menuIds) { - delete(new QueryWrapper().eq("role_id", roleId) - .in("menu_id", menuIds)); - } - - default void deleteListByMenuId(Long menuId) { - delete(new QueryWrapper().eq("menu_id", menuId)); - } - - default void deleteListByRoleId(Long roleId) { - delete(new QueryWrapper().eq("role_id", roleId)); - } - - @Select("SELECT id FROM sys_role_menu WHERE update_time > #{maxUpdateTime} LIMIT 1") - Long selectExistsByUpdateTimeAfter(Date maxUpdateTime); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/permission/SysUserRoleMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/permission/SysUserRoleMapper.java deleted file mode 100644 index 26a16b0..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/permission/SysUserRoleMapper.java +++ /dev/null @@ -1,43 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.mysql.permission; - -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysUserRoleDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; - -@Mapper -public interface SysUserRoleMapper extends BaseMapperX { - - default List selectListByUserId(Long userId) { - return selectList(new QueryWrapper().eq("user_id", userId)); - } - - default void insertList(Long userId, Collection roleIds) { - List list = roleIds.stream().map(roleId -> { - SysUserRoleDO entity = new SysUserRoleDO(); - entity.setUserId(userId); - entity.setRoleId(roleId); - return entity; - }).collect(Collectors.toList()); - // TODO 芋艿,mybatis plus 增加批量插入的功能 - list.forEach(this::insert); - } - - default void deleteListByUserIdAndRoleIdIds(Long userId, Collection roleIds) { - delete(new QueryWrapper().eq("user_id", userId) - .in("role_id", roleIds)); - } - - default void deleteListByUserId(Long userId) { - delete(new QueryWrapper().eq("user_id", userId)); - } - - default void deleteListByRoleId(Long roleId) { - delete(new QueryWrapper().eq("role_id", roleId)); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/sms/SysSmsChannelMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/sms/SysSmsChannelMapper.java deleted file mode 100644 index faa8180..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/sms/SysSmsChannelMapper.java +++ /dev/null @@ -1,27 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.mysql.sms; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.Date; - -@Mapper -public interface SysSmsChannelMapper extends BaseMapperX { - - default PageResult selectPage(SysSmsChannelPageReqVO reqVO) { - return selectPage(reqVO, new QueryWrapperX() - .likeIfPresent("signature", reqVO.getSignature()) - .eqIfPresent("status", reqVO.getStatus()) - .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) - .orderByDesc("id")); - } - - @Select("SELECT id FROM sys_sms_channel WHERE update_time > #{maxUpdateTime} LIMIT 1") - Long selectExistsByUpdateTimeAfter(Date maxUpdateTime); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/sms/SysSmsLogMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/sms/SysSmsLogMapper.java deleted file mode 100644 index 0a22ef6..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/sms/SysSmsLogMapper.java +++ /dev/null @@ -1,40 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.mysql.sms; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsLogDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -@Mapper -public interface SysSmsLogMapper extends BaseMapperX { - - default PageResult selectPage(SysSmsLogPageReqVO reqVO) { - return selectPage(reqVO, new QueryWrapperX() - .eqIfPresent("channel_id", reqVO.getChannelId()) - .eqIfPresent("template_id", reqVO.getTemplateId()) - .likeIfPresent("mobile", reqVO.getMobile()) - .eqIfPresent("send_status", reqVO.getSendStatus()) - .betweenIfPresent("send_time", reqVO.getBeginSendTime(), reqVO.getEndSendTime()) - .eqIfPresent("receive_status", reqVO.getReceiveStatus()) - .betweenIfPresent("receive_time", reqVO.getBeginReceiveTime(), reqVO.getEndReceiveTime()) - .orderByDesc("id")); - } - - default List selectList(SysSmsLogExportReqVO reqVO) { - return selectList(new QueryWrapperX() - .eqIfPresent("channel_id", reqVO.getChannelId()) - .eqIfPresent("template_id", reqVO.getTemplateId()) - .likeIfPresent("mobile", reqVO.getMobile()) - .eqIfPresent("send_status", reqVO.getSendStatus()) - .betweenIfPresent("send_time", reqVO.getBeginSendTime(), reqVO.getEndSendTime()) - .eqIfPresent("receive_status", reqVO.getReceiveStatus()) - .betweenIfPresent("receive_time", reqVO.getBeginReceiveTime(), reqVO.getEndReceiveTime()) - .orderByDesc("id")); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/sms/SysSmsTemplateMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/sms/SysSmsTemplateMapper.java deleted file mode 100644 index 7b3608f..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/sms/SysSmsTemplateMapper.java +++ /dev/null @@ -1,53 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.mysql.sms; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.Date; -import java.util.List; - -@Mapper -public interface SysSmsTemplateMapper extends BaseMapperX { - - default SysSmsTemplateDO selectByCode(String code) { - return selectOne("code", code); - } - - default PageResult selectPage(SysSmsTemplatePageReqVO reqVO) { - return selectPage(reqVO, new QueryWrapperX() - .eqIfPresent("type", reqVO.getType()) - .eqIfPresent("status", reqVO.getStatus()) - .likeIfPresent("code", reqVO.getCode()) - .likeIfPresent("content", reqVO.getContent()) - .likeIfPresent("api_template_id", reqVO.getApiTemplateId()) - .eqIfPresent("channel_id", reqVO.getChannelId()) - .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) - .orderByDesc("id")); - } - - default List selectList(SysSmsTemplateExportReqVO reqVO) { - return selectList(new QueryWrapperX() - .eqIfPresent("type", reqVO.getType()) - .eqIfPresent("status", reqVO.getStatus()) - .likeIfPresent("code", reqVO.getCode()) - .likeIfPresent("content", reqVO.getContent()) - .likeIfPresent("api_template_id", reqVO.getApiTemplateId()) - .eqIfPresent("channel_id", reqVO.getChannelId()) - .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) - .orderByDesc("id")); - } - - default Integer selectCountByChannelId(Long channelId) { - return selectCount("channel_id", channelId); - } - - @Select("SELECT id FROM sys_sms_template WHERE update_time > #{maxUpdateTime} LIMIT 1") - Long selectExistsByUpdateTimeAfter(Date maxUpdateTime); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/user/SysUserMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/user/SysUserMapper.java deleted file mode 100644 index 579bef5..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/user/SysUserMapper.java +++ /dev/null @@ -1,56 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.mysql.user; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserPageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Collection; -import java.util.List; - -@Mapper -public interface SysUserMapper extends BaseMapperX { - - default SysUserDO selectByUsername(String username) { - return selectOne(new QueryWrapper().eq("username", username)); - } - - default SysUserDO selectByMobile(String mobile) { - return selectOne(new QueryWrapper().eq("mobile", mobile)); - } - - default SysUserDO selectByEmail(String email) { - return selectOne(new QueryWrapper().eq("email", email)); - } - - default PageResult selectPage(SysUserPageReqVO reqVO, Collection deptIds) { - return selectPage(reqVO, new QueryWrapperX() - .likeIfPresent("username", reqVO.getUsername()) - .likeIfPresent("mobile", reqVO.getMobile()) - .eqIfPresent("status", reqVO.getStatus()) - .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime()) - .inIfPresent("dept_id", deptIds)); - } - - default List selectList(SysUserExportReqVO reqVO, Collection deptIds) { - return selectList(new QueryWrapperX().likeIfPresent("username", reqVO.getUsername()) - .likeIfPresent("mobile", reqVO.getMobile()) - .eqIfPresent("status", reqVO.getStatus()) - .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime()) - .inIfPresent("dept_id", deptIds)); - } - - default List selectListByNickname(String nickname) { - return selectList(new QueryWrapperX().like("nickname", nickname)); - } - - default List selectListByUsername(String username) { - return selectList(new QueryWrapperX().like("username", username)); - } - -} - diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/redis/SysRedisKeyConstants.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/redis/SysRedisKeyConstants.java deleted file mode 100644 index e935174..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/redis/SysRedisKeyConstants.java +++ /dev/null @@ -1,23 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.redis; - -import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine; -import cn.iocoder.yudao.framework.security.core.LoginUser; - -import static cn.iocoder.yudao.framework.redis.core.RedisKeyDefine.KeyTypeEnum.STRING; - -/** - * System Redis Key 枚举类 - * - * @author 芋道源码 - */ -public interface SysRedisKeyConstants { - - RedisKeyDefine LOGIN_USER = new RedisKeyDefine("登陆用户的缓存", - "login_user:%s", // 参数为 sessionId - STRING, LoginUser.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); - - RedisKeyDefine CAPTCHA_CODE = new RedisKeyDefine("验证码的缓存", - "captcha_code:%s", // 参数为 uuid - STRING, String.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/redis/auth/SysLoginUserRedisDAO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/redis/auth/SysLoginUserRedisDAO.java deleted file mode 100644 index 15ebad2..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/redis/auth/SysLoginUserRedisDAO.java +++ /dev/null @@ -1,47 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.redis.auth; - -import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.dashboard.modules.system.service.auth.SysUserSessionService; -import cn.iocoder.yudao.framework.common.util.json.JsonUtils; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Repository; - -import javax.annotation.Resource; -import java.time.Duration; - -import static cn.iocoder.dashboard.modules.system.dal.redis.SysRedisKeyConstants.LOGIN_USER; - -/** - * {@link LoginUser} 的 RedisDAO - * - * @author 芋道源码 - */ -@Repository -public class SysLoginUserRedisDAO { - - @Resource - private StringRedisTemplate stringRedisTemplate; - @Resource - private SysUserSessionService sysUserSessionService; - - public LoginUser get(String sessionId) { - String redisKey = formatKey(sessionId); - return JsonUtils.parseObject(stringRedisTemplate.opsForValue().get(redisKey), LoginUser.class); - } - - public void set(String sessionId, LoginUser loginUser) { - String redisKey = formatKey(sessionId); - stringRedisTemplate.opsForValue().set(redisKey, JsonUtils.toJsonString(loginUser), - Duration.ofMillis(sysUserSessionService.getSessionTimeoutMillis())); - } - - public void delete(String sessionId) { - String redisKey = formatKey(sessionId); - stringRedisTemplate.delete(redisKey); - } - - private static String formatKey(String sessionId) { - return String.format(LOGIN_USER.getKeyTemplate(), sessionId); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/redis/common/SysCaptchaRedisDAO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/redis/common/SysCaptchaRedisDAO.java deleted file mode 100644 index 520b484..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/redis/common/SysCaptchaRedisDAO.java +++ /dev/null @@ -1,41 +0,0 @@ -package cn.iocoder.dashboard.modules.system.dal.redis.common; - -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Repository; - -import javax.annotation.Resource; -import java.time.Duration; - -import static cn.iocoder.dashboard.modules.system.dal.redis.SysRedisKeyConstants.CAPTCHA_CODE; - -/** - * 验证码的 Redis DAO - * - * @author 芋道源码 - */ -@Repository -public class SysCaptchaRedisDAO { - - @Resource - private StringRedisTemplate stringRedisTemplate; - - public String get(String uuid) { - String redisKey = formatKey(uuid); - return stringRedisTemplate.opsForValue().get(redisKey); - } - - public void set(String uuid, String code, Duration timeout) { - String redisKey = formatKey(uuid); - stringRedisTemplate.opsForValue().set(redisKey, code, timeout); - } - - public void delete(String uuid) { - String redisKey = formatKey(uuid); - stringRedisTemplate.delete(redisKey); - } - - private static String formatKey(String uuid) { - return String.format(CAPTCHA_CODE.getKeyTemplate(), uuid); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/SysDictTypeConstants.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/SysDictTypeConstants.java deleted file mode 100644 index 69bdc06..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/SysDictTypeConstants.java +++ /dev/null @@ -1,25 +0,0 @@ -package cn.iocoder.dashboard.modules.system.enums; - -/** - * System 字典类型的枚举类 - * - * @author 芋道源码 - */ -public interface SysDictTypeConstants { - - String USER_TYPE = "user_type"; // 用户类型 - String COMMON_STATUS = "sys_common_status"; // 系统状态 - - String USER_SEX = "sys_user_sex"; // 用户性别 - String OPERATE_TYPE = "sys_operate_type"; // 操作类型 - String LOGIN_RESULT = "sys_login_result"; // 登陆结果 - String CONFIG_TYPE = "sys_config_type"; // 参数配置类型 - String BOOLEAN_STRING = "sys_boolean_string"; // Boolean 是否类型 - - String SMS_CHANNEL_CODE = "sys_sms_channel_code"; // 短信渠道编码 - String SMS_TEMPLATE_TYPE = "sys_sms_template_type"; // 短信模板类型 - String SMS_SEND_STATUS = "sys_sms_send_status"; // 短信发送状态 - String SMS_RECEIVE_STATUS = "sys_sms_receive_status"; // 短信接收状态 - - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/common/SysSexEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/common/SysSexEnum.java deleted file mode 100644 index 63dec92..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/common/SysSexEnum.java +++ /dev/null @@ -1,23 +0,0 @@ -package cn.iocoder.dashboard.modules.system.enums.common; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 性别的枚举值 - * - * @author 芋道源码 - */ -@Getter -@AllArgsConstructor -public enum SysSexEnum { - - MALE(1), // 男 - FEMALE(2); // 女 - - /** - * 性别 - */ - private final Integer sex; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/dept/DeptIdEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/dept/DeptIdEnum.java deleted file mode 100644 index 583ba1a..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/dept/DeptIdEnum.java +++ /dev/null @@ -1,20 +0,0 @@ -package cn.iocoder.dashboard.modules.system.enums.dept; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 部门编号枚举 - */ -@Getter -@AllArgsConstructor -public enum DeptIdEnum { - - /** - * 根节点 - */ - ROOT(0L); - - private final Long id; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/errorcode/SysErrorCodeTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/errorcode/SysErrorCodeTypeEnum.java deleted file mode 100644 index f541650..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/errorcode/SysErrorCodeTypeEnum.java +++ /dev/null @@ -1,39 +0,0 @@ -package cn.iocoder.dashboard.modules.system.enums.errorcode; - -import cn.iocoder.yudao.framework.common.core.IntArrayValuable; -import lombok.AllArgsConstructor; -import lombok.Getter; - -import java.util.Arrays; - -/** - * 错误码的类型枚举 - * - * @author dylan - */ -@AllArgsConstructor -@Getter -public enum SysErrorCodeTypeEnum implements IntArrayValuable { - - /** - * 自动生成 - */ - AUTO_GENERATION(1), - /** - * 手动编辑 - */ - MANUAL_OPERATION(2); - - public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(SysErrorCodeTypeEnum::getType).toArray(); - - /** - * 类型 - */ - private final Integer type; - - @Override - public int[] array() { - return ARRAYS; - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/logger/SysLoginLogTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/logger/SysLoginLogTypeEnum.java deleted file mode 100644 index 81a48e7..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/logger/SysLoginLogTypeEnum.java +++ /dev/null @@ -1,25 +0,0 @@ -package cn.iocoder.dashboard.modules.system.enums.logger; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 登陆日志的类型枚举 - */ -@Getter -@AllArgsConstructor -public enum SysLoginLogTypeEnum { - - LOGIN_USERNAME(100), // 使用账号登录 - - LOGOUT_SELF(200), // 自己主动登出 - LOGOUT_TIMEOUT(201), // 超时登出 - LOGOUT_DELETE(202), // 强制退出 - ; - - /** - * 日志类型 - */ - private final Integer type; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/logger/SysLoginResultEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/logger/SysLoginResultEnum.java deleted file mode 100644 index 96887fb..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/logger/SysLoginResultEnum.java +++ /dev/null @@ -1,27 +0,0 @@ -package cn.iocoder.dashboard.modules.system.enums.logger; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 登陆结果的枚举类 - */ -@Getter -@AllArgsConstructor -public enum SysLoginResultEnum { - - SUCCESS(0), // 成功 - BAD_CREDENTIALS(10), // 账号或密码不正确 - USER_DISABLED(20), // 用户被禁用 - CAPTCHA_NOT_FOUND(30), // 验证码不存在 - CAPTCHA_CODE_ERROR(31), // 验证码不正确 - - UNKNOWN_ERROR(100), // 未知异常 - ; - - /** - * 结果 - */ - private final Integer result; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/notice/SysNoticeTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/notice/SysNoticeTypeEnum.java deleted file mode 100644 index 86a3fea..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/notice/SysNoticeTypeEnum.java +++ /dev/null @@ -1,23 +0,0 @@ -package cn.iocoder.dashboard.modules.system.enums.notice; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 通知类型 - * - * @author 芋道源码 - */ -@Getter -@AllArgsConstructor -public enum SysNoticeTypeEnum { - - NOTICE(1), - ANNOUNCEMENT(2); - - /** - * 类型 - */ - private final Integer type; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/permission/MenuIdEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/permission/MenuIdEnum.java deleted file mode 100644 index 4a1d7c2..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/permission/MenuIdEnum.java +++ /dev/null @@ -1,20 +0,0 @@ -package cn.iocoder.dashboard.modules.system.enums.permission; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * Menu 编号枚举 - */ -@Getter -@AllArgsConstructor -public enum MenuIdEnum { - - /** - * 根节点 - */ - ROOT(0L); - - private final Long id; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/permission/MenuTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/permission/MenuTypeEnum.java deleted file mode 100644 index a50f0f1..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/permission/MenuTypeEnum.java +++ /dev/null @@ -1,25 +0,0 @@ -package cn.iocoder.dashboard.modules.system.enums.permission; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 菜单类型枚举类 - * - * @author 芋道源码 - */ -@Getter -@AllArgsConstructor -public enum MenuTypeEnum { - - DIR(1), // 目录 - MENU(2), // 菜单 - BUTTON(3) // 按钮 - ; - - /** - * 类型 - */ - private final Integer type; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/permission/RoleCodeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/permission/RoleCodeEnum.java deleted file mode 100644 index 9af9516..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/permission/RoleCodeEnum.java +++ /dev/null @@ -1,21 +0,0 @@ -package cn.iocoder.dashboard.modules.system.enums.permission; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 角色标识枚举 - */ -@Getter -@AllArgsConstructor -public enum RoleCodeEnum { - - ADMIN("admin"), // 超级管理员 - ; - - /** - * 角色编码 - */ - private final String key; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/permission/SysRoleTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/permission/SysRoleTypeEnum.java deleted file mode 100644 index 2a33e26..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/permission/SysRoleTypeEnum.java +++ /dev/null @@ -1,21 +0,0 @@ -package cn.iocoder.dashboard.modules.system.enums.permission; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -@Getter -@AllArgsConstructor -public enum SysRoleTypeEnum { - - /** - * 内置角色 - */ - SYSTEM(1), - /** - * 自定义角色 - */ - CUSTOM(2); - - private final Integer type; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/sms/SysSmsReceiveStatusEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/sms/SysSmsReceiveStatusEnum.java deleted file mode 100644 index 8802388..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/sms/SysSmsReceiveStatusEnum.java +++ /dev/null @@ -1,23 +0,0 @@ -package cn.iocoder.dashboard.modules.system.enums.sms; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 短信的接收状态枚举 - * - * @author 芋道源码 - * @date 2021/2/1 13:39 - */ -@Getter -@AllArgsConstructor -public enum SysSmsReceiveStatusEnum { - - INIT(0), // 初始化 - SUCCESS(10), // 接收成功 - FAILURE(20), // 接收失败 - ; - - private final int status; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/sms/SysSmsSendStatusEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/sms/SysSmsSendStatusEnum.java deleted file mode 100644 index 1d505ee..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/sms/SysSmsSendStatusEnum.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.iocoder.dashboard.modules.system.enums.sms; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 短信的发送状态枚举 - * - * @author zzf - * @date 2021/2/1 13:39 - */ -@Getter -@AllArgsConstructor -public enum SysSmsSendStatusEnum { - - INIT(0), // 初始化 - SUCCESS(10), // 发送成功 - FAILURE(20), // 发送失败 - IGNORE(30), // 忽略,即不发送 - ; - - private final int status; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/sms/SysSmsTemplateTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/sms/SysSmsTemplateTypeEnum.java deleted file mode 100644 index 8ff9c49..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/sms/SysSmsTemplateTypeEnum.java +++ /dev/null @@ -1,25 +0,0 @@ -package cn.iocoder.dashboard.modules.system.enums.sms; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 短信的模板类型枚举 - * - * @author 芋道源码 - */ -@Getter -@AllArgsConstructor -public enum SysSmsTemplateTypeEnum { - - VERIFICATION_CODE(1), // 验证码 - NOTICE(2), // 通知 - PROMOTION(3), // 营销 - ; - - /** - * 类型 - */ - private final int type; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/captcha/config/CaptchaConfig.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/captcha/config/CaptchaConfig.java deleted file mode 100644 index 4df03f8..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/captcha/config/CaptchaConfig.java +++ /dev/null @@ -1,9 +0,0 @@ -package cn.iocoder.dashboard.modules.system.framework.captcha.config; - -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -@Configuration -@EnableConfigurationProperties(CaptchaProperties.class) -public class CaptchaConfig { -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/captcha/config/CaptchaProperties.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/captcha/config/CaptchaProperties.java deleted file mode 100644 index c3e466d..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/captcha/config/CaptchaProperties.java +++ /dev/null @@ -1,31 +0,0 @@ -package cn.iocoder.dashboard.modules.system.framework.captcha.config; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.validation.annotation.Validated; - -import javax.validation.constraints.NotNull; -import java.time.Duration; - -@ConfigurationProperties(prefix = "yudao.captcha") -@Validated -@Data -public class CaptchaProperties { - - /** - * 验证码的过期时间 - */ - @NotNull(message = "验证码的过期时间不为空") - private Duration timeout; - /** - * 验证码的高度 - */ - @NotNull(message = "验证码的高度不能为空") - private Integer height; - /** - * 验证码的宽度 - */ - @NotNull(message = "验证码的宽度不能为空") - private Integer width; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/codegen/config/CodegenConfiguration.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/codegen/config/CodegenConfiguration.java deleted file mode 100644 index 26faf29..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/codegen/config/CodegenConfiguration.java +++ /dev/null @@ -1,9 +0,0 @@ -package cn.iocoder.dashboard.modules.system.framework.codegen.config; - -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -@Configuration -@EnableConfigurationProperties(CodegenProperties.class) -public class CodegenConfiguration { -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/codegen/config/CodegenProperties.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/codegen/config/CodegenProperties.java deleted file mode 100644 index 7e174f5..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/codegen/config/CodegenProperties.java +++ /dev/null @@ -1,28 +0,0 @@ -package cn.iocoder.dashboard.modules.system.framework.codegen.config; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.validation.annotation.Validated; - -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; -import java.util.Collection; - -@ConfigurationProperties(prefix = "yudao.codegen") -@Validated -@Data -public class CodegenProperties { - - /** - * 生成的 Java 代码的基础包 - */ - @NotNull(message = "Java 代码的基础包不能为空") - private String basePackage; - - /** - * 数据库名数组 - */ - @NotEmpty(message = "数据库不能为空") - private Collection dbSchemas; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/codegen/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/codegen/package-info.java deleted file mode 100644 index 2be2578..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/codegen/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * 代码生成器 - */ -package cn.iocoder.dashboard.modules.system.framework.codegen; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/job/auth/SysUserSessionTimeoutJob.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/job/auth/SysUserSessionTimeoutJob.java deleted file mode 100644 index 0d028ee..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/job/auth/SysUserSessionTimeoutJob.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.iocoder.dashboard.modules.system.job.auth; - -import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; -import cn.iocoder.dashboard.modules.system.service.auth.SysUserSessionService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * 用户 Session 超时 Job - * - * @author 願 - */ -@Component -@Slf4j -public class SysUserSessionTimeoutJob implements JobHandler { - - @Resource - private SysUserSessionService sysUserSessionService; - - @Override - public String execute(String param) throws Exception { - // 执行过期 - Long timeoutCount = sysUserSessionService.clearSessionTimeout(); - // 返回结果,记录每次的超时数量 - return String.format("移除在线会话数量为 %s 个", timeoutCount); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/job/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/job/package-info.java deleted file mode 100644 index de70499..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/job/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package cn.iocoder.dashboard.modules.system.job; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/dept/SysDeptRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/dept/SysDeptRefreshConsumer.java deleted file mode 100644 index 8ad82e8..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/dept/SysDeptRefreshConsumer.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.consumer.dept; - -import cn.iocoder.yudao.framework.redis.core.pubsub.AbstractChannelMessageListener; -import cn.iocoder.dashboard.modules.system.mq.message.dept.SysDeptRefreshMessage; -import cn.iocoder.dashboard.modules.system.service.dept.SysDeptService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * 针对 {@link SysDeptRefreshMessage} 的消费者 - * - * @author 芋道源码 - */ -@Component -@Slf4j -public class SysDeptRefreshConsumer extends AbstractChannelMessageListener { - - @Resource - private SysDeptService deptService; - - @Override - public void onMessage(SysDeptRefreshMessage message) { - log.info("[onMessage][收到 Dept 刷新消息]"); - deptService.initLocalCache(); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/dict/SysDictDataRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/dict/SysDictDataRefreshConsumer.java deleted file mode 100644 index d929641..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/dict/SysDictDataRefreshConsumer.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.consumer.dict; - -import cn.iocoder.yudao.framework.redis.core.pubsub.AbstractChannelMessageListener; -import cn.iocoder.dashboard.modules.system.mq.message.dict.SysDictDataRefreshMessage; -import cn.iocoder.dashboard.modules.system.service.dict.SysDictDataService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * 针对 {@link SysDictDataRefreshMessage} 的消费者 - * - * @author 芋道源码 - */ -@Component -@Slf4j -public class SysDictDataRefreshConsumer extends AbstractChannelMessageListener { - - @Resource - private SysDictDataService dictDataService; - - @Override - public void onMessage(SysDictDataRefreshMessage message) { - log.info("[onMessage][收到 DictData 刷新消息]"); - dictDataService.initLocalCache(); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/mail/SysMailSendConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/mail/SysMailSendConsumer.java deleted file mode 100644 index 72cb8f2..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/mail/SysMailSendConsumer.java +++ /dev/null @@ -1,17 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.consumer.mail; - -import cn.iocoder.yudao.framework.redis.core.stream.AbstractStreamMessageListener; -import cn.iocoder.dashboard.modules.system.mq.message.mail.SysMailSendMessage; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -@Component -@Slf4j -public class SysMailSendConsumer extends AbstractStreamMessageListener { - - @Override - public void onMessage(SysMailSendMessage message) { - log.info("[onMessage][消息内容({})]", message); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/permission/SysMenuRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/permission/SysMenuRefreshConsumer.java deleted file mode 100644 index 044f126..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/permission/SysMenuRefreshConsumer.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.consumer.permission; - -import cn.iocoder.yudao.framework.redis.core.pubsub.AbstractChannelMessageListener; -import cn.iocoder.dashboard.modules.system.mq.message.permission.SysMenuRefreshMessage; -import cn.iocoder.dashboard.modules.system.service.permission.SysMenuService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * 针对 {@link SysMenuRefreshMessage} 的消费者 - * - * @author 芋道源码 - */ -@Component -@Slf4j -public class SysMenuRefreshConsumer extends AbstractChannelMessageListener { - - @Resource - private SysMenuService menuService; - - @Override - public void onMessage(SysMenuRefreshMessage message) { - log.info("[onMessage][收到 Menu 刷新消息]"); - menuService.initLocalCache(); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/permission/SysRoleMenuRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/permission/SysRoleMenuRefreshConsumer.java deleted file mode 100644 index 6295f33..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/permission/SysRoleMenuRefreshConsumer.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.consumer.permission; - -import cn.iocoder.yudao.framework.redis.core.pubsub.AbstractChannelMessageListener; -import cn.iocoder.dashboard.modules.system.mq.message.permission.SysRoleMenuRefreshMessage; -import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * 针对 {@link SysRoleMenuRefreshMessage} 的消费者 - * - * @author 芋道源码 - */ -@Component -@Slf4j -public class SysRoleMenuRefreshConsumer extends AbstractChannelMessageListener { - - @Resource - private SysPermissionService permissionService; - - @Override - public void onMessage(SysRoleMenuRefreshMessage message) { - log.info("[onMessage][收到 Role 与 Menu 的关联刷新消息]"); - permissionService.initLocalCache(); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/permission/SysRoleRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/permission/SysRoleRefreshConsumer.java deleted file mode 100644 index 022daae..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/permission/SysRoleRefreshConsumer.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.consumer.permission; - -import cn.iocoder.yudao.framework.redis.core.pubsub.AbstractChannelMessageListener; -import cn.iocoder.dashboard.modules.system.mq.message.permission.SysRoleRefreshMessage; -import cn.iocoder.dashboard.modules.system.service.permission.SysRoleService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * 针对 {@link SysRoleRefreshMessage} 的消费者 - * - * @author 芋道源码 - */ -@Component -@Slf4j -public class SysRoleRefreshConsumer extends AbstractChannelMessageListener { - - @Resource - private SysRoleService roleService; - - @Override - public void onMessage(SysRoleRefreshMessage message) { - log.info("[onMessage][收到 Role 刷新消息]"); - roleService.initLocalCache(); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/sms/SysSmsChannelRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/sms/SysSmsChannelRefreshConsumer.java deleted file mode 100644 index 3d93ac5..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/sms/SysSmsChannelRefreshConsumer.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.consumer.sms; - -import cn.iocoder.yudao.framework.redis.core.pubsub.AbstractChannelMessageListener; -import cn.iocoder.dashboard.modules.system.mq.message.sms.SysSmsChannelRefreshMessage; -import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * 针对 {@link SysSmsChannelRefreshMessage} 的消费者 - * - * @author 芋道源码 - */ -@Component -@Slf4j -public class SysSmsChannelRefreshConsumer extends AbstractChannelMessageListener { - - @Resource - private SysSmsChannelService smsChannelService; - - @Override - public void onMessage(SysSmsChannelRefreshMessage message) { - log.info("[onMessage][收到 SmsChannel 刷新消息]"); - smsChannelService.initSmsClients(); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/sms/SysSmsSendConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/sms/SysSmsSendConsumer.java deleted file mode 100644 index 80864ae..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/sms/SysSmsSendConsumer.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.consumer.sms; - -import cn.iocoder.yudao.framework.redis.core.stream.AbstractStreamMessageListener; -import cn.iocoder.dashboard.modules.system.mq.message.sms.SysSmsSendMessage; -import cn.iocoder.dashboard.modules.system.service.sms.SysSmsService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * 针对 {@link SysSmsSendMessage} 的消费者 - * - * @author zzf - * @date 2021/3/9 16:35 - */ -@Component -@Slf4j -public class SysSmsSendConsumer extends AbstractStreamMessageListener { - - @Resource - private SysSmsService smsService; - - @Override - public void onMessage(SysSmsSendMessage message) { - log.info("[onMessage][消息内容({})]", message); - smsService.doSendSms(message); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/sms/SysSmsTemplateRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/sms/SysSmsTemplateRefreshConsumer.java deleted file mode 100644 index 7d117eb..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/consumer/sms/SysSmsTemplateRefreshConsumer.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.consumer.sms; - -import cn.iocoder.yudao.framework.redis.core.pubsub.AbstractChannelMessageListener; -import cn.iocoder.dashboard.modules.system.mq.message.sms.SysSmsTemplateRefreshMessage; -import cn.iocoder.dashboard.modules.system.service.sms.SysSmsTemplateService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * 针对 {@link SysSmsTemplateRefreshMessage} 的消费者 - * - * @author 芋道源码 - */ -@Component -@Slf4j -public class SysSmsTemplateRefreshConsumer extends AbstractChannelMessageListener { - - @Resource - private SysSmsTemplateService smsTemplateService; - - @Override - public void onMessage(SysSmsTemplateRefreshMessage message) { - log.info("[onMessage][收到 SmsTemplate 刷新消息]"); - smsTemplateService.initLocalCache(); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/dept/SysDeptRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/dept/SysDeptRefreshMessage.java deleted file mode 100644 index 22cdbda..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/dept/SysDeptRefreshMessage.java +++ /dev/null @@ -1,17 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.message.dept; - -import cn.iocoder.yudao.framework.redis.core.pubsub.ChannelMessage; -import lombok.Data; - -/** - * 部门数据刷新 Message - */ -@Data -public class SysDeptRefreshMessage implements ChannelMessage { - - @Override - public String getChannel() { - return "system.dept.refresh"; - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/dict/SysDictDataRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/dict/SysDictDataRefreshMessage.java deleted file mode 100644 index c88c7d5..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/dict/SysDictDataRefreshMessage.java +++ /dev/null @@ -1,17 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.message.dict; - -import cn.iocoder.yudao.framework.redis.core.pubsub.ChannelMessage; -import lombok.Data; - -/** - * 字典数据数据刷新 Message - */ -@Data -public class SysDictDataRefreshMessage implements ChannelMessage { - - @Override - public String getChannel() { - return "system.dict-data.refresh"; - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/mail/SysMailSendMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/mail/SysMailSendMessage.java deleted file mode 100644 index 6a56f7d..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/mail/SysMailSendMessage.java +++ /dev/null @@ -1,46 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.message.mail; - -import cn.iocoder.yudao.framework.redis.core.stream.StreamMessage; -import lombok.Data; - -import javax.validation.constraints.NotNull; -import java.util.Map; - -/** - * 邮箱发送消息 - * - * @author 芋道源码 - */ -@Data -public class SysMailSendMessage implements StreamMessage { - - /** - * 邮箱地址 - */ - @NotNull(message = "邮箱地址不能为空") - private String address; - /** - * 短信模板编号 - */ - @NotNull(message = "短信模板编号不能为空") - private String templateCode; - /** - * 短信模板参数 - */ - private Map templateParams; - - /** - * 用户编号,允许空 - */ - private Integer userId; - /** - * 用户类型,允许空 - */ - private Integer userType; - - @Override - public String getStreamKey() { - return "system.mail.send"; - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/permission/SysMenuRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/permission/SysMenuRefreshMessage.java deleted file mode 100644 index 753cc2e..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/permission/SysMenuRefreshMessage.java +++ /dev/null @@ -1,17 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.message.permission; - -import cn.iocoder.yudao.framework.redis.core.pubsub.ChannelMessage; -import lombok.Data; - -/** - * 菜单数据刷新 Message - */ -@Data -public class SysMenuRefreshMessage implements ChannelMessage { - - @Override - public String getChannel() { - return "system.menu.refresh"; - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/permission/SysRoleMenuRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/permission/SysRoleMenuRefreshMessage.java deleted file mode 100644 index e32c5e0..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/permission/SysRoleMenuRefreshMessage.java +++ /dev/null @@ -1,17 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.message.permission; - -import cn.iocoder.yudao.framework.redis.core.pubsub.ChannelMessage; -import lombok.Data; - -/** - * 角色与菜单数据刷新 Message - */ -@Data -public class SysRoleMenuRefreshMessage implements ChannelMessage { - - @Override - public String getChannel() { - return "system.role-menu.refresh"; - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/permission/SysRoleRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/permission/SysRoleRefreshMessage.java deleted file mode 100644 index 0dc9c5d..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/permission/SysRoleRefreshMessage.java +++ /dev/null @@ -1,17 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.message.permission; - -import cn.iocoder.yudao.framework.redis.core.pubsub.ChannelMessage; -import lombok.Data; - -/** - * 角色数据刷新 Message - */ -@Data -public class SysRoleRefreshMessage implements ChannelMessage { - - @Override - public String getChannel() { - return "system.role.refresh"; - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/sms/SysSmsChannelRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/sms/SysSmsChannelRefreshMessage.java deleted file mode 100644 index aaef601..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/sms/SysSmsChannelRefreshMessage.java +++ /dev/null @@ -1,17 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.message.sms; - -import cn.iocoder.yudao.framework.redis.core.pubsub.ChannelMessage; -import lombok.Data; - -/** - * 短信渠道的数据刷新 Message - */ -@Data -public class SysSmsChannelRefreshMessage implements ChannelMessage { - - @Override - public String getChannel() { - return "system.sms-channel.refresh"; - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/sms/SysSmsSendMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/sms/SysSmsSendMessage.java deleted file mode 100644 index 3d3efda..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/sms/SysSmsSendMessage.java +++ /dev/null @@ -1,48 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.message.sms; - -import cn.iocoder.yudao.framework.common.core.KeyValue; -import cn.iocoder.yudao.framework.redis.core.stream.StreamMessage; -import lombok.Data; - -import javax.validation.constraints.NotNull; -import java.util.List; - -/** - * 短信发送消息 - * - * @author 芋道源码 - */ -@Data -public class SysSmsSendMessage implements StreamMessage { - - /** - * 短信日志编号 - */ - @NotNull(message = "短信日志编号不能为空") - private Long logId; - /** - * 手机号 - */ - @NotNull(message = "手机号不能为空") - private String mobile; - /** - * 短信渠道编号 - */ - @NotNull(message = "短信渠道编号不能为空") - private Long channelId; - /** - * 短信 API 的模板编号 - */ - @NotNull(message = "短信 API 的模板编号不能为空") - private String apiTemplateId; - /** - * 短信模板参数 - */ - private List> templateParams; - - @Override - public String getStreamKey() { - return "system.sms.send"; - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/sms/SysSmsTemplateRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/sms/SysSmsTemplateRefreshMessage.java deleted file mode 100644 index 927d0b8..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/message/sms/SysSmsTemplateRefreshMessage.java +++ /dev/null @@ -1,17 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.message.sms; - -import cn.iocoder.yudao.framework.redis.core.pubsub.ChannelMessage; -import lombok.Data; - -/** - * 短信模板的数据刷新 Message - */ -@Data -public class SysSmsTemplateRefreshMessage implements ChannelMessage { - - @Override - public String getChannel() { - return "system.sms-template.refresh"; - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/dept/SysDeptProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/dept/SysDeptProducer.java deleted file mode 100644 index 2fe137c..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/dept/SysDeptProducer.java +++ /dev/null @@ -1,27 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.producer.dept; - -import cn.iocoder.yudao.framework.redis.core.util.RedisMessageUtils; -import cn.iocoder.dashboard.modules.system.mq.message.dept.SysDeptRefreshMessage; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * Dept 部门相关消息的 Producer - */ -@Component -public class SysDeptProducer { - - @Resource - private StringRedisTemplate stringRedisTemplate; - - /** - * 发送 {@link SysDeptRefreshMessage} 消息 - */ - public void sendDeptRefreshMessage() { - SysDeptRefreshMessage message = new SysDeptRefreshMessage(); - RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/dict/SysDictDataProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/dict/SysDictDataProducer.java deleted file mode 100644 index 8eb415b..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/dict/SysDictDataProducer.java +++ /dev/null @@ -1,27 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.producer.dict; - -import cn.iocoder.yudao.framework.redis.core.util.RedisMessageUtils; -import cn.iocoder.dashboard.modules.system.mq.message.dict.SysDictDataRefreshMessage; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * DictData 字典数据相关消息的 Producer - */ -@Component -public class SysDictDataProducer { - - @Resource - private StringRedisTemplate stringRedisTemplate; - - /** - * 发送 {@link SysDictDataRefreshMessage} 消息 - */ - public void sendDictDataRefreshMessage() { - SysDictDataRefreshMessage message = new SysDictDataRefreshMessage(); - RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/permission/SysMenuProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/permission/SysMenuProducer.java deleted file mode 100644 index 8818b40..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/permission/SysMenuProducer.java +++ /dev/null @@ -1,27 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.producer.permission; - -import cn.iocoder.yudao.framework.redis.core.util.RedisMessageUtils; -import cn.iocoder.dashboard.modules.system.mq.message.permission.SysMenuRefreshMessage; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * Menu 菜单相关消息的 Producer - */ -@Component -public class SysMenuProducer { - - @Resource - private StringRedisTemplate stringRedisTemplate; - - /** - * 发送 {@link SysMenuRefreshMessage} 消息 - */ - public void sendMenuRefreshMessage() { - SysMenuRefreshMessage message = new SysMenuRefreshMessage(); - RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/permission/SysPermissionProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/permission/SysPermissionProducer.java deleted file mode 100644 index 64440a8..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/permission/SysPermissionProducer.java +++ /dev/null @@ -1,27 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.producer.permission; - -import cn.iocoder.yudao.framework.redis.core.util.RedisMessageUtils; -import cn.iocoder.dashboard.modules.system.mq.message.permission.SysRoleMenuRefreshMessage; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * Permission 权限相关消息的 Producer - */ -@Component -public class SysPermissionProducer { - - @Resource - private StringRedisTemplate stringRedisTemplate; - - /** - * 发送 {@link SysRoleMenuRefreshMessage} 消息 - */ - public void sendRoleMenuRefreshMessage() { - SysRoleMenuRefreshMessage message = new SysRoleMenuRefreshMessage(); - RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/permission/SysRoleProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/permission/SysRoleProducer.java deleted file mode 100644 index e95b64f..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/permission/SysRoleProducer.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.producer.permission; - -import cn.iocoder.yudao.framework.redis.core.util.RedisMessageUtils; -import cn.iocoder.dashboard.modules.system.mq.message.permission.SysRoleRefreshMessage; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * Role 角色相关消息的 Producer - * - * @author 芋道源码 - */ -@Component -public class SysRoleProducer { - - @Resource - private StringRedisTemplate stringRedisTemplate; - - /** - * 发送 {@link SysRoleRefreshMessage} 消息 - */ - public void sendRoleRefreshMessage() { - SysRoleRefreshMessage message = new SysRoleRefreshMessage(); - RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/sms/SysSmsProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/sms/SysSmsProducer.java deleted file mode 100644 index 246ad31..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/mq/producer/sms/SysSmsProducer.java +++ /dev/null @@ -1,60 +0,0 @@ -package cn.iocoder.dashboard.modules.system.mq.producer.sms; - -import cn.iocoder.yudao.framework.common.core.KeyValue; -import cn.iocoder.yudao.framework.redis.core.util.RedisMessageUtils; -import cn.iocoder.dashboard.modules.system.mq.message.sms.SysSmsChannelRefreshMessage; -import cn.iocoder.dashboard.modules.system.mq.message.sms.SysSmsSendMessage; -import cn.iocoder.dashboard.modules.system.mq.message.sms.SysSmsTemplateRefreshMessage; -import lombok.extern.slf4j.Slf4j; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.List; - -/** - * Sms 短信相关消息的 Producer - * - * @author zzf - * @date 2021/3/9 16:35 - */ -@Slf4j -@Component -public class SysSmsProducer { - - @Resource - private StringRedisTemplate stringRedisTemplate; - - /** - * 发送 {@link SysSmsSendMessage} 消息 - * - * @param logId 短信日志编号 - * @param mobile 手机号 - * @param channelId 渠道编号 - * @param apiTemplateId 短信模板编号 - * @param templateParams 短信模板参数 - */ - public void sendSmsSendMessage(Long logId, String mobile, - Long channelId, String apiTemplateId, List> templateParams) { - SysSmsSendMessage message = new SysSmsSendMessage().setLogId(logId).setMobile(mobile); - message.setChannelId(channelId).setApiTemplateId(apiTemplateId).setTemplateParams(templateParams); - RedisMessageUtils.sendStreamMessage(stringRedisTemplate, message); - } - - /** - * 发送 {@link SysSmsChannelRefreshMessage} 消息 - */ - public void sendSmsChannelRefreshMessage() { - SysSmsChannelRefreshMessage message = new SysSmsChannelRefreshMessage(); - RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); - } - - /** - * 发送 {@link SysSmsTemplateRefreshMessage} 消息 - */ - public void sendSmsTemplateRefreshMessage() { - SysSmsTemplateRefreshMessage message = new SysSmsTemplateRefreshMessage(); - RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/package-info.java deleted file mode 100644 index 54c955b..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -/** - * system 包下,我们放通用业务,支撑上层的核心业务。 - * 例如说:用户、部门、权限、数据字典等等 - * - * 缩写:sys - */ -package cn.iocoder.dashboard.modules.system; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/auth/SysAuthService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/auth/SysAuthService.java deleted file mode 100644 index e51c09d..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/auth/SysAuthService.java +++ /dev/null @@ -1,25 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.auth; - -import cn.iocoder.yudao.framework.security.core.service.SecurityAuthFrameworkService; -import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthLoginReqVO; - -/** - * 认证 Service 接口 - * - * 提供用户的账号密码登陆、token 的校验等认证相关的功能 - * - * @author 芋道源码 - */ -public interface SysAuthService extends SecurityAuthFrameworkService { - - /** - * 登陆用户 - * - * @param reqVO 登陆信息 - * @param userIp 用户 IP - * @param userAgent 用户 UA - * @return 身份令牌,使用 JWT 方式 - */ - String login(SysAuthLoginReqVO reqVO, String userIp, String userAgent); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/auth/SysUserSessionService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/auth/SysUserSessionService.java deleted file mode 100644 index 54c9470..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/auth/SysUserSessionService.java +++ /dev/null @@ -1,69 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.auth; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.dashboard.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.auth.SysUserSessionDO; - -/** - * 在线用户 Session Service 接口 - * - * @author 芋道源码 - */ -public interface SysUserSessionService { - - /** - * 创建在线用户 Session - * - * @param loginUser 登陆用户 - * @param userIp 用户 IP - * @param userAgent 用户 UA - * @return Session 编号 - */ - String createUserSession(LoginUser loginUser, String userIp, String userAgent); - - /** - * 刷新在线用户 Session 的更新时间 - * - * @param sessionId Session 编号 - * @param loginUser 登陆用户 - */ - void refreshUserSession(String sessionId, LoginUser loginUser); - - /** - * 删除在线用户 Session - * - * @param sessionId Session 编号 - */ - void deleteUserSession(String sessionId); - - /** - * 获得 Session 编号对应的在线用户 - * - * @param sessionId Session 编号 - * @return 在线用户 - */ - LoginUser getLoginUser(String sessionId); - - /** - * 获得 Session 超时时间,单位:毫秒 - * - * @return 超时时间 - */ - Long getSessionTimeoutMillis(); - - /** - * 获得在线用户分页列表 - * - * @param reqVO 分页条件 - * @return 份额与列表 - */ - PageResult getUserSessionPage(SysUserSessionPageReqVO reqVO); - - /** - * 移除超时的在线用户 - * - * @return {@link Long } 移出的超时用户数量 - **/ - long clearSessionTimeout(); -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/auth/impl/SysUserSessionServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/auth/impl/SysUserSessionServiceImpl.java deleted file mode 100644 index d04ccc4..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/auth/impl/SysUserSessionServiceImpl.java +++ /dev/null @@ -1,151 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.auth.impl; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.StrUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.security.config.SecurityProperties; -import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; -import cn.iocoder.dashboard.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.auth.SysUserSessionDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.auth.SysUserSessionMapper; -import cn.iocoder.dashboard.modules.system.dal.redis.auth.SysLoginUserRedisDAO; -import cn.iocoder.dashboard.modules.system.enums.logger.SysLoginLogTypeEnum; -import cn.iocoder.dashboard.modules.system.enums.logger.SysLoginResultEnum; -import cn.iocoder.dashboard.modules.system.service.auth.SysUserSessionService; -import cn.iocoder.dashboard.modules.system.service.logger.SysLoginLogService; -import cn.iocoder.dashboard.modules.system.service.user.SysUserService; -import com.google.common.collect.Lists; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.time.Duration; -import java.util.*; -import java.util.stream.Collectors; - -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime; - -/** - * 在线用户 Session Service 实现类 - * - * @author 芋道源码 - */ -@Service -public class SysUserSessionServiceImpl implements SysUserSessionService { - - @Resource - private SecurityProperties securityProperties; - @Resource - private SysLoginUserRedisDAO loginUserRedisDAO; - @Resource - private SysUserSessionMapper userSessionMapper; - @Resource - private SysUserService userService; - @Resource - private SysLoginLogService loginLogService; - - @Override - public String createUserSession(LoginUser loginUser, String userIp, String userAgent) { - // 生成 Session 编号 - String sessionId = generateSessionId(); - // 写入 Redis 缓存 - loginUser.setUpdateTime(new Date()); - loginUserRedisDAO.set(sessionId, loginUser); - // 写入 DB 中 - SysUserSessionDO userSession = SysUserSessionDO.builder().id(sessionId) - .userId(loginUser.getId()).userIp(userIp).userAgent(userAgent).username(loginUser.getUsername()) - .sessionTimeout(addTime(Duration.ofMillis(getSessionTimeoutMillis()))) - .build(); - userSessionMapper.insert(userSession); - // 返回 Session 编号 - return sessionId; - } - - @Override - public void refreshUserSession(String sessionId, LoginUser loginUser) { - // 写入 Redis 缓存 - loginUser.setUpdateTime(new Date()); - loginUserRedisDAO.set(sessionId, loginUser); - // 更新 DB 中 - SysUserSessionDO updateObj = SysUserSessionDO.builder().id(sessionId).build(); - updateObj.setUsername(loginUser.getUsername()); - updateObj.setUpdateTime(new Date()); - updateObj.setSessionTimeout(addTime(Duration.ofMillis(getSessionTimeoutMillis()))); - userSessionMapper.updateById(updateObj); - } - - @Override - public void deleteUserSession(String sessionId) { - // 删除 Redis 缓存 - loginUserRedisDAO.delete(sessionId); - // 删除 DB 记录 - userSessionMapper.deleteById(sessionId); - } - - @Override - public LoginUser getLoginUser(String sessionId) { - return loginUserRedisDAO.get(sessionId); - } - - @Override - public Long getSessionTimeoutMillis() { - return securityProperties.getSessionTimeout().toMillis(); - } - - @Override - public PageResult getUserSessionPage(SysUserSessionPageReqVO reqVO) { - // 处理基于用户昵称的查询 - Collection userIds = null; - if (StrUtil.isNotEmpty(reqVO.getUsername())) { - userIds = convertSet(userService.getUsersByUsername(reqVO.getUsername()), SysUserDO::getId); - if (CollUtil.isEmpty(userIds)) { - return PageResult.empty(); - } - } - return userSessionMapper.selectPage(reqVO, userIds); - } - - @Override - public long clearSessionTimeout() { - // 获取db里已经超时的用户列表 - List sessionTimeoutDOS = userSessionMapper.selectListBySessionTimoutLt(); - Map timeoutSessionDOMap = sessionTimeoutDOS - .stream() - .filter(sessionDO -> loginUserRedisDAO.get(sessionDO.getId()) == null) - .collect(Collectors.toMap(SysUserSessionDO::getId, o -> o)); - // 确认已经超时,按批次移出在线用户列表 - if (CollUtil.isNotEmpty(timeoutSessionDOMap)) { - Lists.partition(new ArrayList<>(timeoutSessionDOMap.keySet()), 100).forEach(userSessionMapper::deleteBatchIds); - //记录用户超时退出日志 - createTimeoutLogoutLog(timeoutSessionDOMap.values()); - } - return timeoutSessionDOMap.size(); - } - - private void createTimeoutLogoutLog(Collection timeoutSessionDOS) { - for (SysUserSessionDO timeoutSessionDO : timeoutSessionDOS) { - SysLoginLogCreateReqVO reqVO = new SysLoginLogCreateReqVO(); - reqVO.setLogType(SysLoginLogTypeEnum.LOGOUT_TIMEOUT.getType()); - reqVO.setTraceId(TracerUtils.getTraceId()); - reqVO.setUsername(timeoutSessionDO.getUsername()); - reqVO.setUserAgent(timeoutSessionDO.getUserAgent()); - reqVO.setUserIp(timeoutSessionDO.getUserIp()); - reqVO.setResult(SysLoginResultEnum.SUCCESS.getResult()); - loginLogService.createLoginLog(reqVO); - } - } - - /** - * 生成 Session 编号,目前采用 UUID 算法 - * - * @return Session 编号 - */ - private static String generateSessionId() { - return IdUtil.fastSimpleUUID(); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/common/SysCaptchaService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/common/SysCaptchaService.java deleted file mode 100644 index a86b406..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/common/SysCaptchaService.java +++ /dev/null @@ -1,32 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.common; - -import cn.iocoder.dashboard.modules.system.controller.common.vo.SysCaptchaImageRespVO; - -/** - * 验证码 Service 接口 - */ -public interface SysCaptchaService { - - /** - * 获得验证码图片 - * - * @return 验证码图片 - */ - SysCaptchaImageRespVO getCaptchaImage(); - - /** - * 获得 uuid 对应的验证码 - * - * @param uuid 验证码编号 - * @return 验证码 - */ - String getCaptchaCode(String uuid); - - /** - * 删除 uuid 对应的验证码 - * - * @param uuid 验证码编号 - */ - void deleteCaptchaCode(String uuid); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/common/impl/SysCaptchaServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/common/impl/SysCaptchaServiceImpl.java deleted file mode 100644 index f3be748..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/common/impl/SysCaptchaServiceImpl.java +++ /dev/null @@ -1,48 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.common.impl; - -import cn.hutool.captcha.CaptchaUtil; -import cn.hutool.captcha.CircleCaptcha; -import cn.hutool.core.util.IdUtil; -import cn.iocoder.dashboard.modules.system.framework.captcha.config.CaptchaProperties; -import cn.iocoder.dashboard.modules.system.controller.common.vo.SysCaptchaImageRespVO; -import cn.iocoder.dashboard.modules.system.convert.common.SysCaptchaConvert; -import cn.iocoder.dashboard.modules.system.dal.redis.common.SysCaptchaRedisDAO; -import cn.iocoder.dashboard.modules.system.service.common.SysCaptchaService; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; - -/** - * 验证码 Service 实现类 - */ -@Service -public class SysCaptchaServiceImpl implements SysCaptchaService { - - @Resource - private CaptchaProperties captchaProperties; - - @Resource - private SysCaptchaRedisDAO captchaRedisDAO; - - @Override - public SysCaptchaImageRespVO getCaptchaImage() { - // 生成验证码 - CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(captchaProperties.getWidth(), captchaProperties.getHeight()); - // 缓存到 Redis 中 - String uuid = IdUtil.fastSimpleUUID(); - captchaRedisDAO.set(uuid, captcha.getCode(), captchaProperties.getTimeout()); - // 返回 - return SysCaptchaConvert.INSTANCE.convert(uuid, captcha); - } - - @Override - public String getCaptchaCode(String uuid) { - return captchaRedisDAO.get(uuid); - } - - @Override - public void deleteCaptchaCode(String uuid) { - captchaRedisDAO.delete(uuid); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dept/SysDeptService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dept/SysDeptService.java deleted file mode 100644 index 85d5451..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dept/SysDeptService.java +++ /dev/null @@ -1,96 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.dept; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.dept.SysDeptCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.dept.SysDeptListReqVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.dept.SysDeptUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; - -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -/** - * 部门 Service 接口 - * - * @author 芋道源码 - */ -public interface SysDeptService { - - /** - * 初始化部门的本地缓存 - */ - void initLocalCache(); - - /** - * 创建部门 - * - * @param reqVO 部门信息 - * @return 部门编号 - */ - Long createDept(SysDeptCreateReqVO reqVO); - - /** - * 更新部门 - * - * @param reqVO 部门信息 - */ - void updateDept(SysDeptUpdateReqVO reqVO); - - /** - * 删除部门 - * - * @param id 部门编号 - */ - void deleteDept(Long id); - - /** - * 获得指定编号的部门列表 - * - * @param ids 部门编号数组 - * @return 部门列表 - */ - List getSimpleDepts(Collection ids); - - /** - * 获得指定编号的部门 Map - * - * @param ids 部门编号数组 - * @return 部门 Map - */ - default Map getDeptMap(Collection ids) { - if (CollUtil.isEmpty(ids)) { - return Collections.emptyMap(); - } - List list = getSimpleDepts(ids); - return CollectionUtils.convertMap(list, SysDeptDO::getId); - } - - /** - * 筛选部门列表 - * - * @param reqVO 筛选条件请求 VO - * @return 部门列表 - */ - List getSimpleDepts(SysDeptListReqVO reqVO); - - /** - * 获得部门信息 - * - * @param id 部门编号 - * @return 部门信息 - */ - SysDeptDO getDept(Long id); - - /** - * 获得所有子部门,从缓存中 - * - * @param parentId 部门编号 - * @param recursive 是否递归获取所有 - * @return 子部门列表 - */ - List getDeptsByParentIdFromCache(Long parentId, boolean recursive); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dept/SysPostService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dept/SysPostService.java deleted file mode 100644 index 5d1326d..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dept/SysPostService.java +++ /dev/null @@ -1,89 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.dept; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostPageReqVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysPostDO; -import org.springframework.lang.Nullable; - -import java.util.Collection; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet; - -/** - * 岗位 Service 接口 - * - * @author 芋道源码 - */ -public interface SysPostService { - - /** - * 创建岗位 - * - * @param reqVO 岗位信息 - * @return 岗位编号 - */ - Long createPost(SysPostCreateReqVO reqVO); - - /** - * 更新岗位 - * - * @param reqVO 岗位信息 - */ - void updatePost(SysPostUpdateReqVO reqVO); - - /** - * 删除岗位信息 - * - * @param id 岗位编号 - */ - void deletePost(Long id); - - /** - * 获得岗位列表 - * - * @param ids 岗位编号数组。如果为空,不进行筛选 - * @return 部门列表 - */ - default List getPosts(@Nullable Collection ids) { - return getPosts(ids, asSet(CommonStatusEnum.ENABLE.getStatus(), CommonStatusEnum.DISABLE.getStatus())); - } - - /** - * 获得符合条件的岗位列表 - * - * @param ids 岗位编号数组。如果为空,不进行筛选 - * @param statuses 状态数组。如果为空,不进行筛选 - * @return 部门列表 - */ - List getPosts(@Nullable Collection ids, @Nullable Collection statuses); - - /** - * 获得岗位分页列表 - * - * @param reqVO 分页条件 - * @return 部门分页列表 - */ - PageResult getPostPage(SysPostPageReqVO reqVO); - - /** - * 获得岗位列表 - * - * @param reqVO 查询条件 - * @return 部门列表 - */ - List getPosts(SysPostExportReqVO reqVO); - - /** - * 获得岗位信息 - * - * @param id 岗位编号 - * @return 岗位信息 - */ - SysPostDO getPost(Long id); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dept/impl/SysPostServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dept/impl/SysPostServiceImpl.java deleted file mode 100644 index a23b419..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dept/impl/SysPostServiceImpl.java +++ /dev/null @@ -1,128 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.dept.impl; - -import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostPageReqVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostUpdateReqVO; -import cn.iocoder.dashboard.modules.system.convert.dept.SysPostConvert; -import cn.iocoder.dashboard.modules.system.dal.mysql.dept.SysPostMapper; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysPostDO; -import cn.iocoder.dashboard.modules.system.service.dept.SysPostService; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.Resource; -import java.util.Collection; -import java.util.List; - -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; - -/** - * 岗位 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class SysPostServiceImpl implements SysPostService { - - @Resource - private SysPostMapper postMapper; - - @Override - public Long createPost(SysPostCreateReqVO reqVO) { - // 校验正确性 - this.checkCreateOrUpdate(null, reqVO.getName(), reqVO.getCode()); - // 插入岗位 - SysPostDO post = SysPostConvert.INSTANCE.convert(reqVO); - postMapper.insert(post); - return post.getId(); - } - - @Override - public void updatePost(SysPostUpdateReqVO reqVO) { - // 校验正确性 - this.checkCreateOrUpdate(reqVO.getId(), reqVO.getName(), reqVO.getCode()); - // 更新岗位 - SysPostDO updateObj = SysPostConvert.INSTANCE.convert(reqVO); - postMapper.updateById(updateObj); - } - - @Override - public void deletePost(Long id) { - // 校验是否存在 - this.checkPostExists(id); - // 删除部门 - postMapper.deleteById(id); - } - - @Override - public List getPosts(Collection ids, Collection statuses) { - return postMapper.selectList(ids, statuses); - } - - @Override - public PageResult getPostPage(SysPostPageReqVO reqVO) { - return postMapper.selectPage(reqVO); - } - - @Override - public List getPosts(SysPostExportReqVO reqVO) { - return postMapper.selectList(reqVO); - } - - @Override - public SysPostDO getPost(Long id) { - return postMapper.selectById(id); - } - - private void checkCreateOrUpdate(Long id, String name, String code) { - // 校验自己存在 - checkPostExists(id); - // 校验岗位名的唯一性 - checkPostNameUnique(id, name); - // 校验岗位编码的唯一性 - checkPostCodeUnique(id, code); - } - - private void checkPostNameUnique(Long id, String name) { - SysPostDO post = postMapper.selectByName(name); - if (post == null) { - return; - } - // 如果 id 为空,说明不用比较是否为相同 id 的岗位 - if (id == null) { - throw ServiceExceptionUtil.exception(POST_NAME_DUPLICATE); - } - if (!post.getId().equals(id)) { - throw ServiceExceptionUtil.exception(POST_NAME_DUPLICATE); - } - } - - private void checkPostCodeUnique(Long id, String code) { - SysPostDO post = postMapper.selectByCode(code); - if (post == null) { - return; - } - // 如果 id 为空,说明不用比较是否为相同 id 的岗位 - if (id == null) { - throw ServiceExceptionUtil.exception(POST_CODE_DUPLICATE); - } - if (!post.getId().equals(id)) { - throw ServiceExceptionUtil.exception(POST_CODE_DUPLICATE); - } - } - - private void checkPostExists(Long id) { - if (id == null) { - return; - } - SysPostDO post = postMapper.selectById(id); - if (post == null) { - throw ServiceExceptionUtil.exception(POST_NOT_FOUND); - } - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dict/SysDictDataService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dict/SysDictDataService.java deleted file mode 100644 index 872fa40..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dict/SysDictDataService.java +++ /dev/null @@ -1,86 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.dict; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.dict.core.service.DictDataFrameworkService; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataPageReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictDataDO; - -import java.util.List; - -/** - * 字典数据 Service 接口 - * - * @author ruoyi - */ -public interface SysDictDataService extends DictDataFrameworkService { - - /** - * 初始化字典数据的本地缓存 - */ - void initLocalCache(); - - /** - * 创建字典数据 - * - * @param reqVO 字典数据信息 - * @return 字典数据编号 - */ - Long createDictData(SysDictDataCreateReqVO reqVO); - - /** - * 更新字典数据 - * - * @param reqVO 字典数据信息 - */ - void updateDictData(SysDictDataUpdateReqVO reqVO); - - /** - * 删除字典数据 - * - * @param id 字典数据编号 - */ - void deleteDictData(Long id); - - /** - * 获得字典数据列表 - * - * @return 字典数据全列表 - */ - List getDictDatas(); - - /** - * 获得字典数据分页列表 - * - * @param reqVO 分页请求 - * @return 字典数据分页列表 - */ - PageResult getDictDataPage(SysDictDataPageReqVO reqVO); - - /** - * 获得字典数据列表 - * - * @param reqVO 列表请求 - * @return 字典数据列表 - */ - List getDictDatas(SysDictDataExportReqVO reqVO); - - /** - * 获得字典数据详情 - * - * @param id 字典数据编号 - * @return 字典数据 - */ - SysDictDataDO getDictData(Long id); - - /** - * 获得指定字典类型的数据数量 - * - * @param dictType 字典类型 - * @return 数据数量 - */ - int countByDictType(String dictType); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dict/SysDictTypeService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dict/SysDictTypeService.java deleted file mode 100644 index 5bd79cd..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dict/SysDictTypeService.java +++ /dev/null @@ -1,80 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.dict; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypePageReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictTypeDO; - -import java.util.List; - -/** - * 字典类型 Service 接口 - * - * @author 芋道源码 - */ -public interface SysDictTypeService { - - /** - * 创建字典类型 - * - * @param reqVO 字典类型信息 - * @return 字典类型编号 - */ - Long createDictType(SysDictTypeCreateReqVO reqVO); - - /** - * 更新字典类型 - * - * @param reqVO 字典类型信息 - */ - void updateDictType(SysDictTypeUpdateReqVO reqVO); - - /** - * 删除字典类型 - * - * @param id 字典类型编号 - */ - void deleteDictType(Long id); - - /** - * 获得字典类型分页列表 - * - * @param reqVO 分页请求 - * @return 字典类型分页列表 - */ - PageResult getDictTypePage(SysDictTypePageReqVO reqVO); - - /** - * 获得字典类型列表 - * - * @param reqVO 列表请求 - * @return 字典类型列表 - */ - List getDictTypeList(SysDictTypeExportReqVO reqVO); - - /** - * 获得字典类型详情 - * - * @param id 字典类型编号 - * @return 字典类型 - */ - SysDictTypeDO getDictType(Long id); - - /** - * 获得字典类型详情 - * - * @param type 字典类型 - * @return 字典类型详情 - */ - SysDictTypeDO getDictType(String type); - - /** - * 获得全部字典类型列表 - * - * @return 字典类型列表 - */ - List getDictTypeList(); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dict/impl/SysDictTypeServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dict/impl/SysDictTypeServiceImpl.java deleted file mode 100644 index 88a7aa3..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dict/impl/SysDictTypeServiceImpl.java +++ /dev/null @@ -1,143 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.dict.impl; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypePageReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeUpdateReqVO; -import cn.iocoder.dashboard.modules.system.convert.dict.SysDictTypeConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictTypeDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.dict.SysDictTypeMapper; -import cn.iocoder.dashboard.modules.system.service.dict.SysDictDataService; -import cn.iocoder.dashboard.modules.system.service.dict.SysDictTypeService; -import com.google.common.annotations.VisibleForTesting; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; - -/** - * 字典类型 Service 实现类 - * - * @author 芋道源码 - */ -@Service -public class SysDictTypeServiceImpl implements SysDictTypeService { - - @Resource - private SysDictDataService dictDataService; - - @Resource - private SysDictTypeMapper dictTypeMapper; - - @Override - public PageResult getDictTypePage(SysDictTypePageReqVO reqVO) { - return dictTypeMapper.selectPage(reqVO); - } - - @Override - public List getDictTypeList(SysDictTypeExportReqVO reqVO) { - return dictTypeMapper.selectList(reqVO); - } - - @Override - public SysDictTypeDO getDictType(Long id) { - return dictTypeMapper.selectById(id); - } - - @Override - public SysDictTypeDO getDictType(String type) { - return dictTypeMapper.selectByType(type); - } - - @Override - public Long createDictType(SysDictTypeCreateReqVO reqVO) { - // 校验正确性 - this.checkCreateOrUpdate(null, reqVO.getName(), reqVO.getType()); - // 插入字典类型 - SysDictTypeDO dictType = SysDictTypeConvert.INSTANCE.convert(reqVO); - dictTypeMapper.insert(dictType); - return dictType.getId(); - } - - @Override - public void updateDictType(SysDictTypeUpdateReqVO reqVO) { - // 校验正确性 - this.checkCreateOrUpdate(reqVO.getId(), reqVO.getName(), null); - // 更新字典类型 - SysDictTypeDO updateObj = SysDictTypeConvert.INSTANCE.convert(reqVO); - dictTypeMapper.updateById(updateObj); - } - - @Override - public void deleteDictType(Long id) { - // 校验是否存在 - SysDictTypeDO dictType = this.checkDictTypeExists(id); - // 校验是否有字典数据 - if (dictDataService.countByDictType(dictType.getType()) > 0) { - throw exception(DICT_TYPE_HAS_CHILDREN); - } - // 删除字典类型 - dictTypeMapper.deleteById(id); - } - - @Override - public List getDictTypeList() { - return dictTypeMapper.selectList(); - } - - private void checkCreateOrUpdate(Long id, String name, String type) { - // 校验自己存在 - checkDictTypeExists(id); - // 校验字典类型的名字的唯一性 - checkDictTypeNameUnique(id, name); - // 校验字典类型的类型的唯一性 - checkDictTypeUnique(id, type); - } - - @VisibleForTesting - public void checkDictTypeNameUnique(Long id, String name) { - SysDictTypeDO dictType = dictTypeMapper.selectByName(name); - if (dictType == null) { - return; - } - // 如果 id 为空,说明不用比较是否为相同 id 的字典类型 - if (id == null) { - throw exception(DICT_TYPE_NAME_DUPLICATE); - } - if (!dictType.getId().equals(id)) { - throw exception(DICT_TYPE_NAME_DUPLICATE); - } - } - - @VisibleForTesting - public void checkDictTypeUnique(Long id, String type) { - SysDictTypeDO dictType = dictTypeMapper.selectByType(type); - if (dictType == null) { - return; - } - // 如果 id 为空,说明不用比较是否为相同 id 的字典类型 - if (id == null) { - throw exception(DICT_TYPE_TYPE_DUPLICATE); - } - if (!dictType.getId().equals(id)) { - throw exception(DICT_TYPE_TYPE_DUPLICATE); - } - } - - @VisibleForTesting - public SysDictTypeDO checkDictTypeExists(Long id) { - if (id == null) { - return null; - } - SysDictTypeDO dictType = dictTypeMapper.selectById(id); - if (dictType == null) { - throw exception(DICT_TYPE_NOT_EXISTS); - } - return dictType; - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/errorcode/SysErrorCodeService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/errorcode/SysErrorCodeService.java deleted file mode 100644 index 1fdb574..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/errorcode/SysErrorCodeService.java +++ /dev/null @@ -1,67 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.errorcode; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.tool.framework.errorcode.core.service.ErrorCodeFrameworkService; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodeCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodeExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodePageReqVO; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodeUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.errorcode.SysErrorCodeDO; - -import javax.validation.Valid; -import java.util.List; - -/** - * 错误码 Service 接口 - * - * @author 芋道源码 - */ -public interface SysErrorCodeService extends ErrorCodeFrameworkService { - - /** - * 创建错误码 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createErrorCode(@Valid SysErrorCodeCreateReqVO createReqVO); - - /** - * 更新错误码 - * - * @param updateReqVO 更新信息 - */ - void updateErrorCode(@Valid SysErrorCodeUpdateReqVO updateReqVO); - - /** - * 删除错误码 - * - * @param id 编号 - */ - void deleteErrorCode(Long id); - - /** - * 获得错误码 - * - * @param id 编号 - * @return 错误码 - */ - SysErrorCodeDO getErrorCode(Long id); - - /** - * 获得错误码分页 - * - * @param pageReqVO 分页查询 - * @return 错误码分页 - */ - PageResult getErrorCodePage(SysErrorCodePageReqVO pageReqVO); - - /** - * 获得错误码列表, 用于 Excel 导出 - * - * @param exportReqVO 查询条件 - * @return 错误码列表 - */ - List getErrorCodeList(SysErrorCodeExportReqVO exportReqVO); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/logger/SysLoginLogService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/logger/SysLoginLogService.java deleted file mode 100644 index fb5d08c..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/logger/SysLoginLogService.java +++ /dev/null @@ -1,39 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.logger; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysLoginLogDO; - -import java.util.List; - -/** - * 登陆日志 Service 接口 - */ -public interface SysLoginLogService { - - /** - * 创建登陆日志 - * - * @param reqVO 日志信息 - */ - void createLoginLog(SysLoginLogCreateReqVO reqVO); - - /** - * 获得登陆日志分页 - * - * @param reqVO 分页条件 - * @return 登陆日志分页 - */ - PageResult getLoginLogPage(SysLoginLogPageReqVO reqVO); - - /** - * 获得登陆日志列表 - * - * @param reqVO 列表条件 - * @return 登陆日志列表 - */ - List getLoginLogList(SysLoginLogExportReqVO reqVO); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/logger/SysOperateLogService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/logger/SysOperateLogService.java deleted file mode 100644 index 1397a65..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/logger/SysOperateLogService.java +++ /dev/null @@ -1,32 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.logger; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.operatelog.core.service.OperateLogFrameworkService; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysOperateLogDO; - -import java.util.List; - -/** - * 操作日志 Service 接口 - */ -public interface SysOperateLogService extends OperateLogFrameworkService { - - /** - * 获得操作日志分页列表 - * - * @param reqVO 分页条件 - * @return 操作日志分页列表 - */ - PageResult getOperateLogPage(SysOperateLogPageReqVO reqVO); - - /** - * 获得操作日志列表 - * - * @param reqVO 列表条件 - * @return 日志列表 - */ - List getOperateLogs(SysOperateLogExportReqVO reqVO); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/logger/impl/SysLoginLogServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/logger/impl/SysLoginLogServiceImpl.java deleted file mode 100644 index 7b72246..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/logger/impl/SysLoginLogServiceImpl.java +++ /dev/null @@ -1,41 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.logger.impl; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO; -import cn.iocoder.dashboard.modules.system.convert.logger.SysLoginLogConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysLoginLogDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.logger.SysLoginLogMapper; -import cn.iocoder.dashboard.modules.system.service.logger.SysLoginLogService; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.List; - -/** - * 登陆日志 Service 实现 - */ -@Service -public class SysLoginLogServiceImpl implements SysLoginLogService { - - @Resource - private SysLoginLogMapper loginLogMapper; - - @Override - public void createLoginLog(SysLoginLogCreateReqVO reqVO) { - SysLoginLogDO loginLog = SysLoginLogConvert.INSTANCE.convert(reqVO); - loginLogMapper.insert(loginLog); - } - - @Override - public PageResult getLoginLogPage(SysLoginLogPageReqVO reqVO) { - return loginLogMapper.selectPage(reqVO); - } - - @Override - public List getLoginLogList(SysLoginLogExportReqVO reqVO) { - return loginLogMapper.selectList(reqVO); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/logger/impl/SysOperateLogServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/logger/impl/SysOperateLogServiceImpl.java deleted file mode 100644 index 04d908c..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/logger/impl/SysOperateLogServiceImpl.java +++ /dev/null @@ -1,85 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.logger.impl; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO; -import cn.iocoder.dashboard.modules.system.convert.logger.SysOperateLogConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysOperateLogDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.logger.SysOperateLogMapper; -import cn.iocoder.dashboard.modules.system.service.logger.SysOperateLogService; -import cn.iocoder.dashboard.modules.system.service.user.SysUserService; -import cn.iocoder.yudao.framework.common.util.string.StrUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.annotation.AsyncResult; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.concurrent.Future; - -import static cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysOperateLogDO.JAVA_METHOD_ARGS_MAX_LENGTH; -import static cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysOperateLogDO.RESULT_MAX_LENGTH; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; - -@Service -@Slf4j -public class SysOperateLogServiceImpl implements SysOperateLogService { - - @Resource - private SysOperateLogMapper operateLogMapper; - - @Resource - private SysUserService userService; - - @Override - @Async - public Future createOperateLogAsync(OperateLogCreateReqDTO reqVO) { - boolean success = false; - try { - SysOperateLogDO logDO = SysOperateLogConvert.INSTANCE.convert(reqVO); - logDO.setJavaMethodArgs(StrUtils.maxLength(logDO.getJavaMethodArgs(), JAVA_METHOD_ARGS_MAX_LENGTH)); - logDO.setResultData(StrUtils.maxLength(logDO.getResultData(), RESULT_MAX_LENGTH)); - success = operateLogMapper.insert(logDO) == 1; - } catch (Throwable throwable) { - // 仅仅打印日志,不对外抛出。原因是,还是要保留现场数据。 - log.error("[createOperateLogAsync][记录操作日志异常,日志为 ({})]", reqVO, throwable); - } - return new AsyncResult<>(success); - } - - @Override - public PageResult getOperateLogPage(SysOperateLogPageReqVO reqVO) { - // 处理基于用户昵称的查询 - Collection userIds = null; - if (StrUtil.isNotEmpty(reqVO.getUserNickname())) { - userIds = convertSet(userService.getUsersByNickname(reqVO.getUserNickname()), SysUserDO::getId); - if (CollUtil.isEmpty(userIds)) { - return PageResult.empty(); - } - } - // 查询分页 - return operateLogMapper.selectPage(reqVO, userIds); - } - - @Override - public List getOperateLogs(SysOperateLogExportReqVO reqVO) { - // 处理基于用户昵称的查询 - Collection userIds = null; - if (StrUtil.isNotEmpty(reqVO.getUserNickname())) { - userIds = convertSet(userService.getUsersByNickname(reqVO.getUserNickname()), SysUserDO::getId); - if (CollUtil.isEmpty(userIds)) { - return Collections.emptyList(); - } - } - // 查询列表 - return operateLogMapper.selectList(reqVO, userIds); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/notice/SysNoticeService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/notice/SysNoticeService.java deleted file mode 100644 index 9e41466..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/notice/SysNoticeService.java +++ /dev/null @@ -1,52 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.notice; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticePageReqVO; -import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.notice.SysNoticeDO; - -/** - * 通知公告 Service 接口 - */ -public interface SysNoticeService { - - /** - * 创建岗位公告公告 - * - * @param reqVO 岗位公告公告信息 - * @return 岗位公告公告编号 - */ - Long createNotice(SysNoticeCreateReqVO reqVO); - - /** - * 更新岗位公告公告 - * - * @param reqVO 岗位公告公告信息 - */ - void updateNotice(SysNoticeUpdateReqVO reqVO); - - /** - * 删除岗位公告公告信息 - * - * @param id 岗位公告公告编号 - */ - void deleteNotice(Long id); - - /** - * 获得岗位公告公告分页列表 - * - * @param reqVO 分页条件 - * @return 部门分页列表 - */ - PageResult pageNotices(SysNoticePageReqVO reqVO); - - /** - * 获得岗位公告公告信息 - * - * @param id 岗位公告公告编号 - * @return 岗位公告公告信息 - */ - SysNoticeDO getNotice(Long id); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/notice/impl/SysNoticeServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/notice/impl/SysNoticeServiceImpl.java deleted file mode 100644 index d08a0fa..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/notice/impl/SysNoticeServiceImpl.java +++ /dev/null @@ -1,75 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.notice.impl; - -import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticePageReqVO; -import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeUpdateReqVO; -import cn.iocoder.dashboard.modules.system.convert.notice.SysNoticeConvert; -import cn.iocoder.dashboard.modules.system.dal.mysql.notice.SysNoticeMapper; -import cn.iocoder.dashboard.modules.system.dal.dataobject.notice.SysNoticeDO; -import cn.iocoder.dashboard.modules.system.service.notice.SysNoticeService; -import com.google.common.annotations.VisibleForTesting; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; - -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.NOTICE_NOT_FOUND; - -/** - * 通知公告 Service 实现类 - * - * @author 芋道源码 - */ -@Service -public class SysNoticeServiceImpl implements SysNoticeService { - - @Resource - private SysNoticeMapper noticeMapper; - - @Override - public Long createNotice(SysNoticeCreateReqVO reqVO) { - SysNoticeDO notice = SysNoticeConvert.INSTANCE.convert(reqVO); - noticeMapper.insert(notice); - return notice.getId(); - } - - @Override - public void updateNotice(SysNoticeUpdateReqVO reqVO) { - // 校验是否存在 - this.checkNoticeExists(reqVO.getId()); - // 更新通知公告 - SysNoticeDO updateObj = SysNoticeConvert.INSTANCE.convert(reqVO); - noticeMapper.updateById(updateObj); - } - - @Override - public void deleteNotice(Long id) { - // 校验是否存在 - this.checkNoticeExists(id); - // 删除通知公告 - noticeMapper.deleteById(id); - } - - @Override - public PageResult pageNotices(SysNoticePageReqVO reqVO) { - return noticeMapper.selectPage(reqVO); - } - - @Override - public SysNoticeDO getNotice(Long id) { - return noticeMapper.selectById(id); - } - - @VisibleForTesting - public void checkNoticeExists(Long id) { - if (id == null) { - return; - } - SysNoticeDO notice = noticeMapper.selectById(id); - if (notice == null) { - throw ServiceExceptionUtil.exception(NOTICE_NOT_FOUND); - } - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/permission/SysMenuService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/permission/SysMenuService.java deleted file mode 100644 index 6e84007..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/permission/SysMenuService.java +++ /dev/null @@ -1,100 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.permission; - -import cn.iocoder.dashboard.modules.system.controller.permission.vo.menu.SysMenuCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.menu.SysMenuListReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.menu.SysMenuUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysMenuDO; - -import java.util.Collection; -import java.util.List; - -/** - * 菜单 Service 接口 - * - * @author 芋道源码 - */ -public interface SysMenuService { - - /** - * 初始化菜单的本地缓存 - */ - void initLocalCache(); - - /** - * 创建菜单 - * - * @param reqVO 菜单信息 - * @return 创建出来的菜单编号 - */ - Long createMenu(SysMenuCreateReqVO reqVO); - - /** - * 更新菜单 - * - * @param reqVO 菜单信息 - */ - void updateMenu(SysMenuUpdateReqVO reqVO); - - /** - * 删除菜单 - * - * @param id 菜单编号 - */ - void deleteMenu(Long id); - - /** - * 获得所有菜单列表 - * - * @return 菜单列表 - */ - List getMenus(); - - /** - * 筛选菜单列表 - * - * @param reqVO 筛选条件请求 VO - * @return 菜单列表 - */ - List getMenus(SysMenuListReqVO reqVO); - - /** - * 获得所有菜单,从缓存中 - * - * 任一参数为空时,则返回为空 - * - * @param menuTypes 菜单类型数组 - * @param menusStatuses 菜单状态数组 - * @return 菜单列表 - */ - List listMenusFromCache(Collection menuTypes, Collection menusStatuses); - - /** - * 获得指定编号的菜单数组,从缓存中 - * - * 任一参数为空时,则返回为空 - * - * @param menuIds 菜单编号数组 - * @param menuTypes 菜单类型数组 - * @param menusStatuses 菜单状态数组 - * @return 菜单数组 - */ - List listMenusFromCache(Collection menuIds, Collection menuTypes, - Collection menusStatuses); - - /** - * 获得权限对应的菜单数组 - * - * @param permission 权限标识 - * @return 数组 - */ - List getMenuListByPermissionFromCache(String permission); - - /** - * 获得菜单 - * - * @param id 菜单编号 - * @return 菜单 - */ - SysMenuDO getMenu(Long id); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/permission/SysPermissionService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/permission/SysPermissionService.java deleted file mode 100644 index ed1426c..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/permission/SysPermissionService.java +++ /dev/null @@ -1,109 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.permission; - -import cn.iocoder.yudao.framework.security.core.service.SecurityPermissionFrameworkService; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysMenuDO; -import org.springframework.lang.Nullable; - -import java.util.Collection; -import java.util.List; -import java.util.Set; - -/** - * 权限 Service 接口 - * - * 提供用户-角色、角色-菜单、角色-部门的关联权限处理 - * - * @author 芋道源码 - */ -public interface SysPermissionService extends SecurityPermissionFrameworkService { - - /** - * 初始化权限的本地缓存 - */ - void initLocalCache(); - - /** - * 获得角色们拥有的菜单列表,从缓存中获取 - * - * 任一参数为空时,则返回为空 - * - * @param roleIds 角色编号数组 - * @param menuTypes 菜单类型数组 - * @param menusStatuses 菜单状态数组 - * @return 菜单列表 - */ - List getRoleMenusFromCache(Collection roleIds, Collection menuTypes, - Collection menusStatuses); - - /** - * 获得用户拥有的角色编号集合 - * - * @param userId 用户编号 - * @param roleStatuses 角色状态集合. 允许为空,为空时不过滤 - * @return 角色编号集合 - */ - Set getUserRoleIds(Long userId, @Nullable Collection roleStatuses); - - /** - * 获得角色拥有的菜单编号集合 - * - * @param roleId 角色编号 - * @return 菜单编号集合 - */ - Set listRoleMenuIds(Long roleId); - - /** - * 设置角色菜单 - * - * @param roleId 角色编号 - * @param menuIds 菜单编号集合 - */ - void assignRoleMenu(Long roleId, Set menuIds); - - /** - * 获得用户拥有的角色编号集合 - * - * @param userId 用户编号 - * @return 角色编号集合 - */ - Set listUserRoleIs(Long userId); - - /** - * 设置用户角色 - * - * @param userId 角色编号 - * @param roleIds 角色编号集合 - */ - void assignUserRole(Long userId, Set roleIds); - - /** - * 设置角色的数据权限 - * - * @param roleId 角色编号 - * @param dataScope 数据范围 - * @param dataScopeDeptIds 部门编号数组 - */ - void assignRoleDataScope(Long roleId, Integer dataScope, Set dataScopeDeptIds); - - /** - * 处理角色删除时,删除关联授权数据 - * - * @param roleId 角色编号 - */ - void processRoleDeleted(Long roleId); - - /** - * 处理菜单删除时,删除关联授权数据 - * - * @param menuId 菜单编号 - */ - void processMenuDeleted(Long menuId); - - /** - * 处理用户删除是,删除关联授权数据 - * - * @param userId 用户编号 - */ - void processUserDeleted(Long userId); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/permission/SysRoleService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/permission/SysRoleService.java deleted file mode 100644 index 1e3fd95..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/permission/SysRoleService.java +++ /dev/null @@ -1,132 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.permission; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRolePageReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleDO; -import org.springframework.lang.Nullable; - -import java.util.Collection; -import java.util.List; -import java.util.Set; - -/** - * 角色 Service 接口 - * - * @author 芋道源码 - */ -public interface SysRoleService { - - /** - * 初始化角色的本地缓存 - */ - void initLocalCache(); - - /** - * 创建角色 - * - * @param reqVO 创建角色信息 - * @return 角色编号 - */ - Long createRole(SysRoleCreateReqVO reqVO); - - /** - * 更新角色 - * - * @param reqVO 更新角色信息 - */ - void updateRole(SysRoleUpdateReqVO reqVO); - - /** - * 删除角色 - * - * @param id 角色编号 - */ - void deleteRole(Long id); - - /** - * 更新角色状态 - * - * @param id 角色编号 - * @param status 状态 - */ - void updateRoleStatus(Long id, Integer status); - - /** - * 设置角色的数据权限 - * - * @param id 角色编号 - * @param dataScope 数据范围 - * @param dataScopeDeptIds 部门编号数组 - */ - void updateRoleDataScope(Long id, Integer dataScope, Set dataScopeDeptIds); - - /** - * 获得角色,从缓存中 - * - * @param id 角色编号 - * @return 角色 - */ - SysRoleDO getRoleFromCache(Long id); - - /** - * 获得角色列表 - * - * @param statuses 筛选的状态。允许空,空时不筛选 - * @return 角色列表 - */ - List getRoles(@Nullable Collection statuses); - - /** - * 获得角色数组,从缓存中 - * - * @param ids 角色编号数组 - * @return 角色数组 - */ - List getRolesFromCache(Collection ids); - - /** - * 判断角色数组中,是否有管理员 - * - * @param roleList 角色数组 - * @return 是否有管理员 - */ - boolean hasAnyAdmin(Collection roleList); - - /** - * 判断角色编号数组中,是否有管理员 - * - * @param ids 角色编号数组 - * @return 是否有管理员 - */ - default boolean hasAnyAdmin(Set ids) { - return hasAnyAdmin(getRolesFromCache(ids)); - } - - /** - * 获得角色 - * - * @param id 角色编号 - * @return 角色 - */ - SysRoleDO getRole(Long id); - - /** - * 获得角色分页 - * - * @param reqVO 角色分页查询 - * @return 角色分页结果 - */ - PageResult getRolePage(SysRolePageReqVO reqVO); - - /** - * 获得角色列表 - * - * @param reqVO 列表查询 - * @return 角色列表 - */ - List getRoles(SysRoleExportReqVO reqVO); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsChannelService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsChannelService.java deleted file mode 100644 index 6ad0b7c..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsChannelService.java +++ /dev/null @@ -1,79 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.sms; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO; - -import javax.validation.Valid; -import java.util.Collection; -import java.util.List; - -/** - * 短信渠道Service接口 - * - * @author zzf - * @date 2021/1/25 9:24 - */ -public interface SysSmsChannelService { - - /** - * 初始化短信客户端 - */ - void initSmsClients(); - - /** - * 创建短信渠道 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createSmsChannel(@Valid SysSmsChannelCreateReqVO createReqVO); - - /** - * 更新短信渠道 - * - * @param updateReqVO 更新信息 - */ - void updateSmsChannel(@Valid SysSmsChannelUpdateReqVO updateReqVO); - - /** - * 删除短信渠道 - * - * @param id 编号 - */ - void deleteSmsChannel(Long id); - - /** - * 获得短信渠道 - * - * @param id 编号 - * @return 短信渠道 - */ - SysSmsChannelDO getSmsChannel(Long id); - - /** - * 获得短信渠道列表 - * - * @param ids 编号 - * @return 短信渠道列表 - */ - List getSmsChannelList(Collection ids); - - /** - * 获得所有短信渠道列表 - * - * @return 短信渠道列表 - */ - List getSmsChannelList(); - - /** - * 获得短信渠道分页 - * - * @param pageReqVO 分页查询 - * @return 短信渠道分页 - */ - PageResult getSmsChannelPage(SysSmsChannelPageReqVO pageReqVO); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsLogService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsLogService.java deleted file mode 100644 index 8676a34..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsLogService.java +++ /dev/null @@ -1,77 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.sms; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsLogDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; - -import java.util.Date; -import java.util.List; -import java.util.Map; - -/** - * 短信日志 Service 实现类 - * - * @author zzf - * @date 13:48 2021/3/2 - */ -public interface SysSmsLogService { - - /** - * 创建短信日志 - * - * @param mobile 手机号 - * @param userId 用户编号 - * @param userType 用户类型 - * @param isSend 是否发送 - * @param template 短信模板 - * @param templateContent 短信内容 - * @param templateParams 短信参数 - * @return 发送日志编号 - */ - Long createSmsLog(String mobile, Long userId, Integer userType, Boolean isSend, - SysSmsTemplateDO template, String templateContent, Map templateParams); - - /** - * 更新日志的发送结果 - * - * @param id 日志编号 - * @param sendCode 发送结果的编码 - * @param sendMsg 发送结果的提示 - * @param apiSendCode 短信 API 发送结果的编码 - * @param apiSendMsg 短信 API 发送失败的提示 - * @param apiRequestId 短信 API 发送返回的唯一请求 ID - * @param apiSerialNo 短信 API 发送返回的序号 - */ - void updateSmsSendResult(Long id, Integer sendCode, String sendMsg, - String apiSendCode, String apiSendMsg, String apiRequestId, String apiSerialNo); - - /** - * 更新日志的接收结果 - * - * @param id 日志编号 - * @param success 是否接收成功 - * @param receiveTime 用户接收时间 - * @param apiReceiveCode API 接收结果的编码 - * @param apiReceiveMsg API 接收结果的说明 - */ - void updateSmsReceiveResult(Long id, Boolean success, Date receiveTime, String apiReceiveCode, String apiReceiveMsg); - - /** - * 获得短信日志分页 - * - * @param pageReqVO 分页查询 - * @return 短信日志分页 - */ - PageResult getSmsLogPage(SysSmsLogPageReqVO pageReqVO); - - /** - * 获得短信日志列表, 用于 Excel 导出 - * - * @param exportReqVO 查询条件 - * @return 短信日志列表 - */ - List getSmsLogList(SysSmsLogExportReqVO exportReqVO); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsService.java deleted file mode 100644 index f568b11..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsService.java +++ /dev/null @@ -1,62 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.sms; - -import cn.iocoder.dashboard.modules.system.mq.message.sms.SysSmsSendMessage; - -import java.util.List; -import java.util.Map; - -/** - * 短信Service接口 - * 只支持异步,因此没有返回值 - * - * @author zzf - * @date 2021/1/25 9:24 - */ -public interface SysSmsService { - - /** - * 发送单条短信给用户(管理员) - * - * 在 mobile 为空时,使用 userId 加载对应管理员的手机号 - * - * @param mobile 手机号 - * @param userId 用户编号 - * @param templateCode 短信模板编号 - * @param templateParams 短信模板参数 - * @return 发送日志编号 - */ - Long sendSingleSmsToAdmin(String mobile, Long userId, - String templateCode, Map templateParams); - - /** - * 发送单条短信给用户(会员) - * - * 在 mobile 为空时,使用 userId 加载对应会员的手机号 - * - * @param mobile 手机号 - * @param userId 用户编号 - * @param templateCode 短信模板编号 - * @param templateParams 短信模板参数 - * @return 发送日志编号 - */ - Long sendSingleSmsToMember(String mobile, Long userId, - String templateCode, Map templateParams); - - Long sendSingleSms(String mobile, Long userId, Integer userType, - String templateCode, Map templateParams); - - void sendBatchSms(List mobiles, List userIds, Integer userType, - String templateCode, Map templateParams); - - void doSendSms(SysSmsSendMessage message); - - /** - * 接收短信的接收结果 - * - * @param channelCode 渠道编码 - * @param text 结果内容 - * @throws Throwable 处理失败时,抛出异常 - */ - void receiveSmsStatus(String channelCode, String text) throws Throwable; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsTemplateService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsTemplateService.java deleted file mode 100644 index 52c8bde..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsTemplateService.java +++ /dev/null @@ -1,115 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.sms; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; - -import javax.validation.Valid; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -/** - * 短信模板 Service 接口 - * - * @author zzf - * @date 2021/1/25 9:24 - */ -public interface SysSmsTemplateService { - - /** - * 初始化短信模板的本地缓存 - */ - void initLocalCache(); - - /** - * 获得短信模板 - * - * @param code 模板编码 - * @return 短信模板 - */ - SysSmsTemplateDO getSmsTemplateByCode(String code); - - /** - * 获得短信模板,从缓存中 - * - * @param code 模板编码 - * @return 短信模板 - */ - SysSmsTemplateDO getSmsTemplateByCodeFromCache(String code); - - /** - * 格式化短信内容 - * - * @param content 短信模板的内容 - * @param params 内容的参数 - * @return 格式化后的内容 - */ - String formatSmsTemplateContent(String content, Map params); - - /** - * 创建短信模板 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createSmsTemplate(@Valid SysSmsTemplateCreateReqVO createReqVO); - - /** - * 更新短信模板 - * - * @param updateReqVO 更新信息 - */ - void updateSmsTemplate(@Valid SysSmsTemplateUpdateReqVO updateReqVO); - - /** - * 删除短信模板 - * - * @param id 编号 - */ - void deleteSmsTemplate(Long id); - - /** - * 获得短信模板 - * - * @param id 编号 - * @return 短信模板 - */ - SysSmsTemplateDO getSmsTemplate(Long id); - - /** - * 获得短信模板列表 - * - * @param ids 编号 - * @return 短信模板列表 - */ - List getSmsTemplateList(Collection ids); - - /** - * 获得短信模板分页 - * - * @param pageReqVO 分页查询 - * @return 短信模板分页 - */ - PageResult getSmsTemplatePage(SysSmsTemplatePageReqVO pageReqVO); - - /** - * 获得短信模板列表, 用于 Excel 导出 - * - * @param exportReqVO 查询条件 - * @return 短信模板分页 - */ - List getSmsTemplateList(SysSmsTemplateExportReqVO exportReqVO); - - /** - * 获得指定短信渠道下的短信模板数量 - * - * @param channelId 短信渠道编号 - * @return 数量 - */ - Integer countByChannelId(Long channelId); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsChannelServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsChannelServiceImpl.java deleted file mode 100644 index f0fe411..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsChannelServiceImpl.java +++ /dev/null @@ -1,172 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.sms.impl; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; -import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO; -import cn.iocoder.dashboard.modules.system.convert.sms.SysSmsChannelConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsChannelMapper; -import cn.iocoder.dashboard.modules.system.mq.producer.sms.SysSmsProducer; -import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService; -import cn.iocoder.dashboard.modules.system.service.sms.SysSmsTemplateService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Service; - -import javax.annotation.PostConstruct; -import javax.annotation.Resource; -import java.util.Collection; -import java.util.Comparator; -import java.util.Date; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.SMS_CHANNEL_HAS_CHILDREN; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.SMS_CHANNEL_NOT_EXISTS; - -/** - * 短信渠道Service实现类 - * - * @author zzf - * @date 2021/1/25 9:25 - */ -@Service -@Slf4j -public class SysSmsChannelServiceImpl implements SysSmsChannelService { - - /** - * 定时执行 {@link #schedulePeriodicRefresh()} 的周期 - * 因为已经通过 Redis Pub/Sub 机制,所以频率不需要高 - */ - private static final long SCHEDULER_PERIOD = 5 * 60 * 1000L; - - /** - * 缓存菜单的最大更新时间,用于后续的增量轮询,判断是否有更新 - */ - private volatile Date maxUpdateTime; - - @Resource - private SmsClientFactory smsClientFactory; - - @Resource - private SysSmsChannelMapper smsChannelMapper; - - @Resource - private SysSmsTemplateService smsTemplateService; - - @Resource - private SysSmsProducer smsProducer; - - @Override - @PostConstruct - public void initSmsClients() { - // 获取短信渠道,如果有更新 - List smsChannels = this.loadSmsChannelIfUpdate(maxUpdateTime); - if (CollUtil.isEmpty(smsChannels)) { - return; - } - - // 创建或更新短信 Client - List propertiesList = SysSmsChannelConvert.INSTANCE.convertList02(smsChannels); - propertiesList.forEach(properties -> smsClientFactory.createOrUpdateSmsClient(properties)); - - // 写入缓存 - assert smsChannels.size() > 0; // 断言,避免告警 - maxUpdateTime = smsChannels.stream().max(Comparator.comparing(BaseDO::getUpdateTime)).get().getUpdateTime(); - log.info("[initSmsClients][初始化 SmsChannel 数量为 {}]", smsChannels.size()); - } - - @Scheduled(fixedDelay = SCHEDULER_PERIOD, initialDelay = SCHEDULER_PERIOD) - public void schedulePeriodicRefresh() { - initSmsClients(); - } - - /** - * 如果短信渠道发生变化,从数据库中获取最新的全量短信渠道。 - * 如果未发生变化,则返回空 - * - * @param maxUpdateTime 当前短信渠道的最大更新时间 - * @return 短信渠道列表 - */ - private List loadSmsChannelIfUpdate(Date maxUpdateTime) { - // 第一步,判断是否要更新。 - if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据 - log.info("[loadSmsChannelIfUpdate][首次加载全量短信渠道]"); - } else { // 判断数据库中是否有更新的短信渠道 - if (smsChannelMapper.selectExistsByUpdateTimeAfter(maxUpdateTime) == null) { - return null; - } - log.info("[loadSmsChannelIfUpdate][增量加载全量短信渠道]"); - } - // 第二步,如果有更新,则从数据库加载所有短信渠道 - return smsChannelMapper.selectList(); - } - - @Override - public Long createSmsChannel(SysSmsChannelCreateReqVO createReqVO) { - // 插入 - SysSmsChannelDO smsChannel = SysSmsChannelConvert.INSTANCE.convert(createReqVO); - smsChannelMapper.insert(smsChannel); - // 发送刷新消息 - smsProducer.sendSmsChannelRefreshMessage(); - // 返回 - return smsChannel.getId(); - } - - @Override - public void updateSmsChannel(SysSmsChannelUpdateReqVO updateReqVO) { - // 校验存在 - this.validateSmsChannelExists(updateReqVO.getId()); - // 更新 - SysSmsChannelDO updateObj = SysSmsChannelConvert.INSTANCE.convert(updateReqVO); - smsChannelMapper.updateById(updateObj); - // 发送刷新消息 - smsProducer.sendSmsChannelRefreshMessage(); - } - - @Override - public void deleteSmsChannel(Long id) { - // 校验存在 - this.validateSmsChannelExists(id); - // 校验是否有字典数据 - if (smsTemplateService.countByChannelId(id) > 0) { - throw exception(SMS_CHANNEL_HAS_CHILDREN); - } - // 删除 - smsChannelMapper.deleteById(id); - // 发送刷新消息 - smsProducer.sendSmsChannelRefreshMessage(); - } - - private void validateSmsChannelExists(Long id) { - if (smsChannelMapper.selectById(id) == null) { - throw exception(SMS_CHANNEL_NOT_EXISTS); - } - } - - @Override - public SysSmsChannelDO getSmsChannel(Long id) { - return smsChannelMapper.selectById(id); - } - - @Override - public List getSmsChannelList(Collection ids) { - return smsChannelMapper.selectBatchIds(ids); - } - - @Override - public List getSmsChannelList() { - return smsChannelMapper.selectList(); - } - - @Override - public PageResult getSmsChannelPage(SysSmsChannelPageReqVO pageReqVO) { - return smsChannelMapper.selectPage(pageReqVO); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsLogServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsLogServiceImpl.java deleted file mode 100644 index cda9c43..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsLogServiceImpl.java +++ /dev/null @@ -1,86 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.sms.impl; - -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsLogDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsLogMapper; -import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsReceiveStatusEnum; -import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendStatusEnum; -import cn.iocoder.dashboard.modules.system.service.sms.SysSmsLogService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Objects; - -/** - * 短信日志 Service 实现类 - * - * @author zzf - * @date 2021/1/25 9:25 - */ -@Slf4j -@Service -public class SysSmsLogServiceImpl implements SysSmsLogService { - - @Resource - private SysSmsLogMapper smsLogMapper; - - @Override - public Long createSmsLog(String mobile, Long userId, Integer userType, Boolean isSend, - SysSmsTemplateDO template, String templateContent, Map templateParams) { - SysSmsLogDO.SysSmsLogDOBuilder logBuilder = SysSmsLogDO.builder(); - // 根据是否要发送,设置状态 - logBuilder.sendStatus(Objects.equals(isSend, true) ? SysSmsSendStatusEnum.INIT.getStatus() - : SysSmsSendStatusEnum.IGNORE.getStatus()); - // 设置手机相关字段 - logBuilder.mobile(mobile).userId(userId).userType(userType); - // 设置模板相关字段 - logBuilder.templateId(template.getId()).templateCode(template.getCode()).templateType(template.getType()); - logBuilder.templateContent(templateContent).templateParams(templateParams).apiTemplateId(template.getApiTemplateId()); - // 设置渠道相关字段 - logBuilder.channelId(template.getChannelId()).channelCode(template.getChannelCode()); - // 设置接收相关字段 - logBuilder.receiveStatus(SysSmsReceiveStatusEnum.INIT.getStatus()); - - // 插入数据库 - SysSmsLogDO logDO = logBuilder.build(); - smsLogMapper.insert(logDO); - return logDO.getId(); - } - - @Override - public void updateSmsSendResult(Long id, Integer sendCode, String sendMsg, - String apiSendCode, String apiSendMsg, String apiRequestId, String apiSerialNo) { - SysSmsSendStatusEnum sendStatus = CommonResult.isSuccess(sendCode) ? SysSmsSendStatusEnum.SUCCESS - : SysSmsSendStatusEnum.FAILURE; - smsLogMapper.updateById(SysSmsLogDO.builder().id(id).sendStatus(sendStatus.getStatus()).sendTime(new Date()) - .sendCode(sendCode).sendMsg(sendMsg).apiSendCode(apiSendCode).apiSendMsg(apiSendMsg) - .apiRequestId(apiRequestId).apiSerialNo(apiSerialNo).build()); - } - - @Override - public void updateSmsReceiveResult(Long id, Boolean success, Date receiveTime, String apiReceiveCode, String apiReceiveMsg) { - SysSmsReceiveStatusEnum receiveStatus = Objects.equals(success, true) ? SysSmsReceiveStatusEnum.SUCCESS - : SysSmsReceiveStatusEnum.FAILURE; - smsLogMapper.updateById(SysSmsLogDO.builder().id(id).receiveStatus(receiveStatus.getStatus()).receiveTime(receiveTime) - .apiReceiveCode(apiReceiveCode).apiReceiveMsg(apiReceiveMsg).build()); - } - - @Override - public PageResult getSmsLogPage(SysSmsLogPageReqVO pageReqVO) { - return smsLogMapper.selectPage(pageReqVO); - } - - @Override - public List getSmsLogList(SysSmsLogExportReqVO exportReqVO) { - return smsLogMapper.selectList(exportReqVO); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsServiceImpl.java deleted file mode 100644 index 7e2f350..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsServiceImpl.java +++ /dev/null @@ -1,171 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.sms.impl; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; -import cn.iocoder.yudao.framework.common.core.KeyValue; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; -import cn.iocoder.yudao.framework.sms.core.client.SmsClient; -import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; -import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult; -import cn.iocoder.yudao.framework.sms.core.client.dto.SmsReceiveRespDTO; -import cn.iocoder.yudao.framework.sms.core.client.dto.SmsSendRespDTO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.dashboard.modules.system.mq.message.sms.SysSmsSendMessage; -import cn.iocoder.dashboard.modules.system.mq.producer.sms.SysSmsProducer; -import cn.iocoder.dashboard.modules.system.service.sms.SysSmsLogService; -import cn.iocoder.dashboard.modules.system.service.sms.SysSmsService; -import cn.iocoder.dashboard.modules.system.service.sms.SysSmsTemplateService; -import cn.iocoder.dashboard.modules.system.service.user.SysUserService; -import com.google.common.annotations.VisibleForTesting; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.util.Assert; - -import javax.annotation.Resource; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; - -/** - * 短信日志Service实现类 - * - * @author zzf - * @date 2021/1/25 9:25 - */ -@Service -@Slf4j -public class SysSmsServiceImpl implements SysSmsService { - - @Resource - private SysSmsTemplateService smsTemplateService; - @Resource - private SysSmsLogService smsLogService; - @Resource - private SysSmsProducer smsProducer; - @Resource - private SmsClientFactory smsClientFactory; - - @Resource - private SysUserService userService; - - @Override - public Long sendSingleSmsToAdmin(String mobile, Long userId, String templateCode, Map templateParams) { - // 如果 mobile 为空,则加载用户编号对应的手机号 - if (StrUtil.isEmpty(mobile)) { - SysUserDO user = userService.getUser(userId); - if (user != null) { - mobile = user.getMobile(); - } - } - // 执行发送 - return this.sendSingleSms(mobile, userId, UserTypeEnum.ADMIN.getValue(), templateCode, templateParams); - } - - @Override - public Long sendSingleSmsToMember(String mobile, Long userId, String templateCode, Map templateParams) { - throw new UnsupportedOperationException("暂时不支持该操作,感兴趣可以实现该功能哟!"); - } - - @Override - public Long sendSingleSms(String mobile, Long userId, Integer userType, - String templateCode, Map templateParams) { - // 校验短信模板是否合法 - SysSmsTemplateDO template = this.checkSmsTemplateValid(templateCode); - // 校验手机号码是否存在 - mobile = this.checkMobile(mobile); - // 构建有序的模板参数。为什么放在这个位置,是提前保证模板参数的正确性,而不是到了插入发送日志 - List> newTemplateParams = this.buildTemplateParams(template, templateParams); - - // 创建发送日志 - Boolean isSend = CommonStatusEnum.ENABLE.getStatus().equals(template.getStatus()); // 如果模板被禁用,则不发送短信,只记录日志 - String content = smsTemplateService.formatSmsTemplateContent(template.getContent(), templateParams); - Long sendLogId = smsLogService.createSmsLog(mobile, userId, userType, isSend, template, content, templateParams); - - // 发送 MQ 消息,异步执行发送短信 - if (isSend) { - smsProducer.sendSmsSendMessage(sendLogId, mobile, template.getChannelId(), template.getApiTemplateId(), newTemplateParams); - } - return sendLogId; - } - - @Override - public void sendBatchSms(List mobiles, List userIds, Integer userType, - String templateCode, Map templateParams) { - throw new UnsupportedOperationException("暂时不支持该操作,感兴趣可以实现该功能哟!"); - } - - @VisibleForTesting - public SysSmsTemplateDO checkSmsTemplateValid(String templateCode) { - // 获得短信模板。考虑到效率,从缓存中获取 - SysSmsTemplateDO template = smsTemplateService.getSmsTemplateByCodeFromCache(templateCode); - // 短信模板不存在 - if (template == null) { - throw exception(SMS_TEMPLATE_NOT_EXISTS); - } - return template; - } - - /** - * 将参数模板,处理成有序的 KeyValue 数组 - * - * 原因是,部分短信平台并不是使用 key 作为参数,而是数组下标,例如说腾讯云 https://cloud.tencent.com/document/product/382/39023 - * - * @param template 短信模板 - * @param templateParams 原始参数 - * @return 处理后的参数 - */ - @VisibleForTesting - public List> buildTemplateParams(SysSmsTemplateDO template, Map templateParams) { - return template.getParams().stream().map(key -> { - Object value = templateParams.get(key); - if (value == null) { - throw exception(SMS_SEND_MOBILE_TEMPLATE_PARAM_MISS, key); - } - return new KeyValue<>(key, value); - }).collect(Collectors.toList()); - } - - @VisibleForTesting - public String checkMobile(String mobile) { - if (StrUtil.isEmpty(mobile)) { - throw exception(SMS_SEND_MOBILE_NOT_EXISTS); - } - return mobile; - } - - @Override - public void doSendSms(SysSmsSendMessage message) { - // 获得渠道对应的 SmsClient 客户端 - SmsClient smsClient = smsClientFactory.getSmsClient(message.getChannelId()); - Assert.notNull(smsClient, String.format("短信客户端(%d) 不存在", message.getChannelId())); - // 发送短信 - SmsCommonResult sendResult = smsClient.sendSms(message.getLogId(), message.getMobile(), - message.getApiTemplateId(), message.getTemplateParams()); - smsLogService.updateSmsSendResult(message.getLogId(), sendResult.getCode(), sendResult.getMsg(), - sendResult.getApiCode(), sendResult.getApiMsg(), sendResult.getApiRequestId(), - sendResult.getData() != null ? sendResult.getData().getSerialNo() : null); - } - - @Override - public void receiveSmsStatus(String channelCode, String text) throws Throwable { - // 获得渠道对应的 SmsClient 客户端 - SmsClient smsClient = smsClientFactory.getSmsClient(channelCode); - Assert.notNull(smsClient, String.format("短信客户端(%s) 不存在", channelCode)); - // 解析内容 - List receiveResults = smsClient.parseSmsReceiveStatus(text); - if (CollUtil.isEmpty(receiveResults)) { - return; - } - // 更新短信日志的接收结果. 因为量一般不打,所以先使用 for 循环更新 - receiveResults.forEach(result -> { - smsLogService.updateSmsReceiveResult(result.getLogId(), result.getSuccess(), result.getReceiveTime(), - result.getErrorCode(), result.getErrorCode()); - }); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/user/SysUserService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/user/SysUserService.java deleted file mode 100644 index 74690a2..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/user/SysUserService.java +++ /dev/null @@ -1,169 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.user; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserImportExcelVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserImportRespVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserPageReqVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; - -import java.io.InputStream; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 用户 Service 接口 - * - * @author 芋道源码 - */ -public interface SysUserService { - - /** - * 创建用户 - * - * @param reqVO 用户信息 - * @return 用户编号 - */ - Long createUser(SysUserCreateReqVO reqVO); - - /** - * 修改用户 - * - * @param reqVO 用户信息 - */ - void updateUser(SysUserUpdateReqVO reqVO); - - /** - * 修改用户个人信息 - * - * @param id 用户编号 - * @param reqVO 用户个人信息 - */ - void updateUserProfile(Long id, SysUserProfileUpdateReqVO reqVO); - - /** - * 修改用户个人密码 - * - * @param id 用户编号 - * @param reqVO 更新用户个人密码 - */ - void updateUserPassword(Long id, SysUserProfileUpdatePasswordReqVO reqVO); - - /** - * 更新用户头像 - * - * @param id 用户 id - * @param avatarFile 头像文件 - */ - void updateUserAvatar(Long id, InputStream avatarFile); - - /** - * 修改密码 - * - * @param id 用户编号 - * @param password 密码 - */ - void updateUserPassword(Long id, String password); - - /** - * 修改密码 - * - * @param id 用户编号 - * @param status 状态 - */ - void updateUserStatus(Long id, Integer status); - - /** - * 删除用户 - * - * @param id 用户编号 - */ - void deleteUser(Long id); - - /** - * 通过用户名查询用户 - * - * @param username 用户名 - * @return 用户对象信息 - */ - SysUserDO getUserByUsername(String username); - - /** - * 通过用户 ID 查询用户 - * - * @param id 用户ID - * @return 用户对象信息 - */ - SysUserDO getUser(Long id); - - /** - * 获得用户分页列表 - * - * @param reqVO 分页条件 - * @return 分页列表 - */ - PageResult getUserPage(SysUserPageReqVO reqVO); - - /** - * 获得用户列表 - * - * @param reqVO 列表请求 - * @return 用户列表 - */ - List getUsers(SysUserExportReqVO reqVO); - - /** - * 获得用户列表 - * - * @param ids 用户编号数组 - * @return 用户列表 - */ - List getUsers(Collection ids); - - /** - * 获得用户 Map - * - * @param ids 用户编号数组 - * @return 用户 Map - */ - default Map getUserMap(Collection ids) { - if (CollUtil.isEmpty(ids)) { - return new HashMap<>(); - } - return CollectionUtils.convertMap(getUsers(ids), SysUserDO::getId); - } - - /** - * 获得用户列表,基于昵称模糊匹配 - * - * @param nickname 昵称 - * @return 用户列表 - */ - List getUsersByNickname(String nickname); - - /** - * 获得用户列表,基于用户账号模糊匹配 - * - * @param username 用户账号 - * @return 用户列表 - */ - List getUsersByUsername(String username); - - /** - * 批量导入用户 - * - * @param importUsers 导入用户列表 - * @param isUpdateSupport 是否支持更新 - * @return 导入结果 - */ - SysUserImportRespVO importUsers(List importUsers, boolean isUpdateSupport); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/ToolCodegenDetailRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/ToolCodegenDetailRespVO.java deleted file mode 100644 index 503ac8b..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/ToolCodegenDetailRespVO.java +++ /dev/null @@ -1,21 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.controller.codegen.vo; - -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.column.ToolCodegenColumnRespVO; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTableRespVO; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.List; - -@ApiModel("代码生成表和字段的明细 Response VO") -@Data -public class ToolCodegenDetailRespVO { - - @ApiModelProperty("表定义") - private ToolCodegenTableRespVO table; - - @ApiModelProperty("字段定义") - private List columns; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/ToolCodegenPreviewRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/ToolCodegenPreviewRespVO.java deleted file mode 100644 index 3f41a7d..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/ToolCodegenPreviewRespVO.java +++ /dev/null @@ -1,17 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.controller.codegen.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@ApiModel(value = "代码生成预览 Response VO", description ="注意,每个文件都是一个该对象") -@Data -public class ToolCodegenPreviewRespVO { - - @ApiModelProperty(value = "文件路径", required = true, example = "java/cn/iocoder/dashboard/modules/system/controller/test/SysTestDemoController.java") - private String filePath; - - @ApiModelProperty(value = "代码", required = true, example = "Hello World") - private String code; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/ToolCodegenUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/ToolCodegenUpdateReqVO.java deleted file mode 100644 index 72d430e..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/ToolCodegenUpdateReqVO.java +++ /dev/null @@ -1,49 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.controller.codegen.vo; - -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.column.ToolCodegenColumnBaseVO; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTableBaseVO; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import javax.validation.Valid; -import javax.validation.constraints.NotNull; -import java.util.List; - -@ApiModel("代码生成表和字段的修改 Request VO") -@Data -public class ToolCodegenUpdateReqVO { - - @Valid // 校验内嵌的字段 - @NotNull(message = "表定义不能为空") - private Table table; - - @Valid // 校验内嵌的字段 - @NotNull(message = "字段定义不能为空") - private List columns; - - @ApiModel("更新表定义") - @Data - @EqualsAndHashCode(callSuper = true) - @ToString(callSuper = true) - public static class Table extends ToolCodegenTableBaseVO { - - @ApiModelProperty(value = "编号", required = true, example = "1") - private Long id; - - } - - @ApiModel("更新表定义") - @Data - @EqualsAndHashCode(callSuper = true) - @ToString(callSuper = true) - public static class Column extends ToolCodegenColumnBaseVO { - - @ApiModelProperty(value = "编号", required = true, example = "1") - private Long id; - - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/column/ToolCodegenColumnBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/column/ToolCodegenColumnBaseVO.java deleted file mode 100644 index 04a828f..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/column/ToolCodegenColumnBaseVO.java +++ /dev/null @@ -1,85 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.controller.codegen.vo.column; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** -* 代码生成字段定义 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class ToolCodegenColumnBaseVO { - - @ApiModelProperty(value = "表编号", required = true, example = "1") - @NotNull(message = "表编号不能为空") - private Long tableId; - - @ApiModelProperty(value = "字段名", required = true, example = "user_age") - @NotNull(message = "字段名不能为空") - private String columnName; - - @ApiModelProperty(value = "字段类型", required = true, example = "int(11)") - @NotNull(message = "字段类型不能为空") - private String columnType; - - @ApiModelProperty(value = "字段描述", required = true, example = "年龄") - @NotNull(message = "字段描述不能为空") - private String columnComment; - - @ApiModelProperty(value = "是否允许为空", required = true, example = "true") - @NotNull(message = "是否允许为空不能为空") - private Boolean nullable; - - @ApiModelProperty(value = "是否主键", required = true, example = "false") - @NotNull(message = "是否主键不能为空") - private Boolean primaryKey; - - @ApiModelProperty(value = "是否自增", required = true, example = "true") - @NotNull(message = "是否自增不能为空") - private String autoIncrement; - - @ApiModelProperty(value = "排序", required = true, example = "10") - @NotNull(message = "排序不能为空") - private Integer ordinalPosition; - - @ApiModelProperty(value = "Java 属性类型", required = true, example = "userAge") - @NotNull(message = "Java 属性类型不能为空") - private String javaType; - - @ApiModelProperty(value = "Java 属性名", required = true, example = "Integer") - @NotNull(message = "Java 属性名不能为空") - private String javaField; - - @ApiModelProperty(value = "字典类型", example = "sys_gender") - private String dictType; - - @ApiModelProperty(value = "数据示例", example = "1024") - private String example; - - @ApiModelProperty(value = "是否为 Create 创建操作的字段", required = true, example = "true") - @NotNull(message = "是否为 Create 创建操作的字段不能为空") - private Boolean createOperation; - - @ApiModelProperty(value = "是否为 Update 更新操作的字段", required = true, example = "false") - @NotNull(message = "是否为 Update 更新操作的字段不能为空") - private Boolean updateOperation; - - @ApiModelProperty(value = "是否为 List 查询操作的字段", required = true, example = "true") - @NotNull(message = "是否为 List 查询操作的字段不能为空") - private Boolean listOperation; - - @ApiModelProperty(value = "List 查询操作的条件类型", required = true, example = "LIKE", notes = "参见 ToolCodegenColumnListConditionEnum 枚举") - @NotNull(message = "List 查询操作的条件类型不能为空") - private String listOperationCondition; - - @ApiModelProperty(value = "是否为 List 查询操作的返回字段", required = true, example = "true") - @NotNull(message = "是否为 List 查询操作的返回字段不能为空") - private Boolean listOperationResult; - - @ApiModelProperty(value = "显示类型", required = true, example = "input") - @NotNull(message = "显示类型不能为空") - private String htmlType; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/column/ToolCodegenColumnRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/column/ToolCodegenColumnRespVO.java deleted file mode 100644 index 12251e2..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/column/ToolCodegenColumnRespVO.java +++ /dev/null @@ -1,23 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.controller.codegen.vo.column; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import java.util.Date; - -@ApiModel("代码生成字段定义 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ToolCodegenColumnRespVO extends ToolCodegenColumnBaseVO { - - @ApiModelProperty(value = "编号", required = true, example = "1") - private Long id; - - @ApiModelProperty(value = "创建时间", required = true) - private Date createTime; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/table/ToolCodegenTableBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/table/ToolCodegenTableBaseVO.java deleted file mode 100644 index 6d56902..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/table/ToolCodegenTableBaseVO.java +++ /dev/null @@ -1,57 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** -* 代码生成 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class ToolCodegenTableBaseVO { - - @ApiModelProperty(value = "导入类型", required = true, example = "1", notes = "参见 ToolCodegenImportTypeEnum 枚举") - @NotNull(message = "导入类型不能为空") - private Integer importType; - - @ApiModelProperty(value = "表名称", required = true, example = "yudao") - @NotNull(message = "表名称不能为空") - private String tableName; - - @ApiModelProperty(value = "表描述", required = true, example = "芋道") - @NotNull(message = "表描述不能为空") - private String tableComment; - - @ApiModelProperty(value = "备注", example = "我是备注") - private String remark; - - @ApiModelProperty(value = "模块名", required = true, example = "system") - @NotNull(message = "模块名不能为空") - private String moduleName; - - @ApiModelProperty(value = "业务名", required = true, example = "codegen") - @NotNull(message = "业务名不能为空") - private String businessName; - - @ApiModelProperty(value = "类名称", required = true, example = "ToolCodegenTable") - @NotNull(message = "类名称不能为空") - private String className; - - @ApiModelProperty(value = "类描述", required = true, example = "代码生成器的表定义") - @NotNull(message = "类描述不能为空") - private String classComment; - - @ApiModelProperty(value = "作者", required = true, example = "芋道源码") - @NotNull(message = "作者不能为空") - private String author; - - @ApiModelProperty(value = "模板类型", required = true, example = "1", notes = "参见 ToolCodegenTemplateTypeEnum 枚举") - @NotNull(message = "模板类型不能为空") - private Integer templateType; - - @ApiModelProperty(value = "父菜单编号", example = "1024") - private Long parentMenuId; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/table/ToolCodegenTablePageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/table/ToolCodegenTablePageReqVO.java deleted file mode 100644 index 1b25084..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/table/ToolCodegenTablePageReqVO.java +++ /dev/null @@ -1,35 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.util.Date; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@ApiModel("表定义分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ToolCodegenTablePageReqVO extends PageParam { - - @ApiModelProperty(value = "表名称", example = "yudao", notes = "模糊匹配") - private String tableName; - - @ApiModelProperty(value = "表描述", example = "芋道", notes = "模糊匹配") - private String tableComment; - - @ApiModelProperty(value = "开始创建时间", example = "2020-10-24 00:00:00") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private Date beginCreateTime; - - @ApiModelProperty(value = "结束创建时间", example = "2020-10-24 23:59:59") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private Date endCreateTime; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/table/ToolCodegenTableRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/table/ToolCodegenTableRespVO.java deleted file mode 100644 index a214df9..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/table/ToolCodegenTableRespVO.java +++ /dev/null @@ -1,26 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import java.util.Date; - -@ApiModel("代码生成表定义 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ToolCodegenTableRespVO extends ToolCodegenTableBaseVO { - - @ApiModelProperty(value = "编号", required = true, example = "1") - private Long id; - - @ApiModelProperty(value = "创建时间", required = true) - private Date createTime; - - @ApiModelProperty(value = "更新时间", required = true) - private Date updateTime; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/table/ToolSchemaTableRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/table/ToolSchemaTableRespVO.java deleted file mode 100644 index 4b724a1..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/vo/table/ToolSchemaTableRespVO.java +++ /dev/null @@ -1,25 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.Date; - -@ApiModel("数据字典的表定义 Response VO") -@Data -public class ToolSchemaTableRespVO { - - @ApiModelProperty(value = "数据库", required = true, example = "yudao") - private String tableSchema; - - @ApiModelProperty(value = "表名称", required = true, example = "yuanma") - private String tableName; - - @ApiModelProperty(value = "表描述", required = true, example = "芋道源码") - private String tableComment; - - @ApiModelProperty(value = "创建时间", required = true) - private Date createTime; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/ToolTestDemoController.http b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/ToolTestDemoController.http deleted file mode 100644 index b10a3d2..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/ToolTestDemoController.http +++ /dev/null @@ -1,7 +0,0 @@ -### 请求 /tool/test-demo/get 接口 => 成功 -GET {{baseUrl}}/tool/test-demo/get?id=1 -Authorization: Bearer {{token}} - -### 请求 /tool/test-demo/list 接口 => 成功 -GET {{baseUrl}}/tool/test-demo/list?ids=1 -Authorization: Bearer {{token}} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/ToolTestDemoController.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/ToolTestDemoController.java deleted file mode 100644 index 6322f54..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/ToolTestDemoController.java +++ /dev/null @@ -1,108 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.controller.test; - -import cn.hutool.core.thread.ThreadUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.framework.tracer.core.annotation.BizTrace; -import cn.iocoder.dashboard.modules.tool.controller.test.vo.*; -import cn.iocoder.dashboard.modules.tool.convert.test.ToolTestDemoConvert; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.test.ToolTestDemoDO; -import cn.iocoder.dashboard.modules.tool.service.test.ToolTestDemoService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiOperation; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; -import javax.validation.Valid; -import java.io.IOException; -import java.util.Collection; -import java.util.List; -import java.util.concurrent.TimeUnit; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Api(tags = "测试示例") -@RestController -@RequestMapping("/tool/test-demo") -@Validated -public class ToolTestDemoController { - - @Resource - private ToolTestDemoService testDemoService; - - @PostMapping("/create") - @ApiOperation("创建测试示例") - @PreAuthorize("@ss.hasPermission('tool:test-demo:create')") - public CommonResult createTestDemo(@Valid @RequestBody ToolTestDemoCreateReqVO createReqVO) { - return success(testDemoService.createTestDemo(createReqVO)); - } - - @PutMapping("/update") - @ApiOperation("更新测试示例") - @PreAuthorize("@ss.hasPermission('tool:test-demo:update')") - public CommonResult updateTestDemo(@Valid @RequestBody ToolTestDemoUpdateReqVO updateReqVO) { - testDemoService.updateTestDemo(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @ApiOperation("删除测试示例") - @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class) - @PreAuthorize("@ss.hasPermission('tool:test-demo:delete')") - public CommonResult deleteTestDemo(@RequestParam("id") Long id) { - testDemoService.deleteTestDemo(id); - return success(true); - } - - @GetMapping("/get") - @ApiOperation("获得测试示例") - @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class) - @PreAuthorize("@ss.hasPermission('tool:test-demo:query')") -// @Lock4j // 分布式锁 - public CommonResult getTestDemo(@RequestParam("id") Long id) { - if (true) { // 测试分布式锁 - ThreadUtil.sleep(5, TimeUnit.SECONDS); - } - ToolTestDemoDO testDemo = testDemoService.getTestDemo(id); - return success(ToolTestDemoConvert.INSTANCE.convert(testDemo)); - } - - @GetMapping("/list") - @ApiOperation("获得测试示例列表") - @ApiImplicitParam(name = "ids", value = "编号列表", required = true, dataTypeClass = List.class) - @PreAuthorize("@ss.hasPermission('tool:test-demo:query')") -// @RateLimiter(name = "backendA") - @BizTrace(id = "#ids", type = "'user'") - public CommonResult> getTestDemoList(@RequestParam("ids") Collection ids) { - List list = testDemoService.getTestDemoList(ids); - return success(ToolTestDemoConvert.INSTANCE.convertList(list)); - } - - @GetMapping("/page") - @ApiOperation("获得测试示例分页") - @PreAuthorize("@ss.hasPermission('tool:test-demo:query')") - public CommonResult> getTestDemoPage(@Valid ToolTestDemoPageReqVO pageVO) { - PageResult pageResult = testDemoService.getTestDemoPage(pageVO); - return success(ToolTestDemoConvert.INSTANCE.convertPage(pageResult)); - } - - @GetMapping("/export-excel") - @ApiOperation("导出测试示例 Excel") - @PreAuthorize("@ss.hasPermission('tool:test-demo:export')") - @OperateLog(type = EXPORT) - public void exportTestDemoExcel(@Valid ToolTestDemoExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List list = testDemoService.getTestDemoList(exportReqVO); - // 导出 Excel - List datas = ToolTestDemoConvert.INSTANCE.convertList02(list); - ExcelUtils.write(response, "测试示例.xls", "数据", ToolTestDemoExcelVO.class, datas); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoBaseVO.java deleted file mode 100644 index f10fdb2..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoBaseVO.java +++ /dev/null @@ -1,34 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.controller.test.vo; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** -* 字典类型 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class ToolTestDemoBaseVO { - - @ApiModelProperty(value = "名字", required = true, example = "芋道") - @NotNull(message = "名字不能为空") - private String name; - - @ApiModelProperty(value = "状态", required = true, example = "1") - @NotNull(message = "状态不能为空") - private Integer status; - - @ApiModelProperty(value = "类型", required = true, example = "2") - @NotNull(message = "类型不能为空") - private Integer type; - - @ApiModelProperty(value = "分类", required = true, example = "3") - @NotNull(message = "分类不能为空") - private Integer category; - - @ApiModelProperty(value = "备注", example = "我是备注") - private String remark; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoCreateReqVO.java deleted file mode 100644 index 5b267fe..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoCreateReqVO.java +++ /dev/null @@ -1,14 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.controller.test.vo; - -import io.swagger.annotations.ApiModel; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -@ApiModel("字典类型创建 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ToolTestDemoCreateReqVO extends ToolTestDemoBaseVO { - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoExcelVO.java deleted file mode 100644 index 25c3649..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoExcelVO.java +++ /dev/null @@ -1,44 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.controller.test.vo; - -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.dashboard.modules.infra.enums.InfDictTypeConstants; -import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; -import com.alibaba.excel.annotation.ExcelProperty; -import lombok.Data; - -import java.util.Date; - -/** - * 测试示例 Excel VO - * - * @author 芋艿 - */ -@Data -public class ToolTestDemoExcelVO { - - @ExcelProperty("编号") - private Long id; - - @ExcelProperty("名字") - private String name; - - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat(SysDictTypeConstants.COMMON_STATUS) - private Integer status; - - @ExcelProperty(value = "类型", converter = DictConvert.class) - @DictFormat(SysDictTypeConstants.OPERATE_TYPE) - private Integer type; - - @ExcelProperty(value = "分类", converter = DictConvert.class) - @DictFormat(InfDictTypeConstants.REDIS_TIMEOUT_TYPE) - private Integer category; - - @ExcelProperty("备注") - private String remark; - - @ExcelProperty("创建时间") - private Date createTime; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoExportReqVO.java deleted file mode 100644 index d655b98..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoExportReqVO.java +++ /dev/null @@ -1,39 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.controller.test.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.util.Date; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@ApiModel(value = "字典类型 Excel 导出 Request VO", description = "参数和 ToolTestDemoPageReqVO 是一致的") -@Data -public class ToolTestDemoExportReqVO { - - @ApiModelProperty(value = "名字", example = "芋道") - private String name; - - @ApiModelProperty(value = "状态", example = "1") - private Integer status; - - @ApiModelProperty(value = "类型", example = "2") - private Integer type; - - @ApiModelProperty(value = "分类", example = "3") - private Integer category; - - @ApiModelProperty(value = "备注", example = "我是备注") - private String remark; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @ApiModelProperty(value = "开始创建时间") - private Date beginCreateTime; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @ApiModelProperty(value = "结束创建时间") - private Date endCreateTime; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoPageReqVO.java deleted file mode 100644 index 053a021..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoPageReqVO.java +++ /dev/null @@ -1,44 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.controller.test.vo; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.util.Date; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@ApiModel("字典类型分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ToolTestDemoPageReqVO extends PageParam { - - @ApiModelProperty(value = "名字", example = "芋道") - private String name; - - @ApiModelProperty(value = "状态", example = "1") - private Integer status; - - @ApiModelProperty(value = "类型", example = "2") - private Integer type; - - @ApiModelProperty(value = "分类", example = "3") - private Integer category; - - @ApiModelProperty(value = "备注", example = "我是备注") - private String remark; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @ApiModelProperty(value = "开始创建时间") - private Date beginCreateTime; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @ApiModelProperty(value = "结束创建时间") - private Date endCreateTime; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoRespVO.java deleted file mode 100644 index cc22897..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoRespVO.java +++ /dev/null @@ -1,23 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.controller.test.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import java.util.Date; - -@ApiModel("字典类型 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ToolTestDemoRespVO extends ToolTestDemoBaseVO { - - @ApiModelProperty(value = "编号", required = true, example = "1") - private Long id; - - @ApiModelProperty(value = "创建时间", required = true) - private Date createTime; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoUpdateReqVO.java deleted file mode 100644 index d4bb383..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/test/vo/ToolTestDemoUpdateReqVO.java +++ /dev/null @@ -1,21 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.controller.test.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import javax.validation.constraints.NotNull; - -@ApiModel("字典类型更新 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ToolTestDemoUpdateReqVO extends ToolTestDemoBaseVO { - - @ApiModelProperty(value = "编号", required = true, example = "1") - @NotNull(message = "编号不能为空") - private Long id; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/convert/codegen/ToolCodegenConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/convert/codegen/ToolCodegenConvert.java deleted file mode 100644 index 68bf402..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/convert/codegen/ToolCodegenConvert.java +++ /dev/null @@ -1,70 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.convert.codegen; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenDetailRespVO; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenPreviewRespVO; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenUpdateReqVO; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.column.ToolCodegenColumnRespVO; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTableRespVO; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolSchemaTableRespVO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -@Mapper -public interface ToolCodegenConvert { - - ToolCodegenConvert INSTANCE = Mappers.getMapper(ToolCodegenConvert.class); - - // ========== ToolInformationSchemaTableDO 和 ToolInformationSchemaColumnDO 相关 ========== - - ToolCodegenTableDO convert(ToolSchemaTableDO bean); - - List convertList(List list); - - ToolCodegenTableRespVO convert(ToolSchemaColumnDO bean); - - // ========== ToolCodegenTableDO 相关 ========== - -// List convertList02(List list); - - ToolCodegenTableRespVO convert(ToolCodegenTableDO bean); - - PageResult convertPage(PageResult page); - - // ========== ToolCodegenTableDO 相关 ========== - - List convertList02(List list); - - ToolCodegenTableDO convert(ToolCodegenUpdateReqVO.Table bean); - - List convertList03(List columns); - - List convertList04(List list); - - // ========== 其它 ========== - - default ToolCodegenDetailRespVO convert(ToolCodegenTableDO table, List columns) { - ToolCodegenDetailRespVO respVO = new ToolCodegenDetailRespVO(); - respVO.setTable(convert(table)); - respVO.setColumns(convertList02(columns)); - return respVO; - } - - default List convert(Map codes) { - return codes.entrySet().stream().map(entry -> { - ToolCodegenPreviewRespVO respVO = new ToolCodegenPreviewRespVO(); - respVO.setFilePath(entry.getKey()); - respVO.setCode(entry.getValue()); - return respVO; - }).collect(Collectors.toList()); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/convert/test/ToolTestDemoConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/convert/test/ToolTestDemoConvert.java deleted file mode 100644 index 0e89a08..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/convert/test/ToolTestDemoConvert.java +++ /dev/null @@ -1,36 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.convert.test; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.tool.controller.test.vo.ToolTestDemoCreateReqVO; -import cn.iocoder.dashboard.modules.tool.controller.test.vo.ToolTestDemoExcelVO; -import cn.iocoder.dashboard.modules.tool.controller.test.vo.ToolTestDemoRespVO; -import cn.iocoder.dashboard.modules.tool.controller.test.vo.ToolTestDemoUpdateReqVO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.test.ToolTestDemoDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -/** -* 字典类型 Convert -* -* @author 芋艿 -*/ -@Mapper -public interface ToolTestDemoConvert { - - ToolTestDemoConvert INSTANCE = Mappers.getMapper(ToolTestDemoConvert.class); - - ToolTestDemoDO convert(ToolTestDemoCreateReqVO bean); - - ToolTestDemoDO convert(ToolTestDemoUpdateReqVO bean); - - ToolTestDemoRespVO convert(ToolTestDemoDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - - List convertList02(List list); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/dataobject/codegen/ToolCodegenColumnDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/dataobject/codegen/ToolCodegenColumnDO.java deleted file mode 100644 index 82aed21..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/dataobject/codegen/ToolCodegenColumnDO.java +++ /dev/null @@ -1,125 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictTypeDO; -import cn.iocoder.dashboard.modules.tool.enums.codegen.ToolCodegenColumnHtmlTypeEnum; -import cn.iocoder.dashboard.modules.tool.enums.codegen.ToolCodegenColumnListConditionEnum; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -/** - * 代码生成 column 字段定义 - * - * @author 芋道源码 - */ -@TableName(value = "tool_codegen_column", autoResultMap = true) -@Data -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = true) -public class ToolCodegenColumnDO extends BaseDO { - - /** - * ID 编号 - */ - @TableId - private Long id; - /** - * 表编号 - * - * 关联 {@link ToolCodegenTableDO#getId()} - */ - private Long tableId; - - // ========== 表相关字段 ========== - - /** - * 字段名 - */ - private String columnName; - /** - * 字段类型 - */ - private String columnType; - /** - * 字段描述 - */ - private String columnComment; - /** - * 是否允许为空 - */ - private Boolean nullable; - /** - * 是否主键 - */ - private Boolean primaryKey; - /** - * 是否自增 - */ - private Boolean autoIncrement; - /** - * 排序 - */ - private Integer ordinalPosition; - - // ========== Java 相关字段 ========== - - /** - * Java 属性类型 - * - * 例如说 String、Boolean 等等 - */ - private String javaType; - /** - * Java 属性名 - */ -// @NotBlank(message = "Java属性不能为空") - private String javaField; - /** - * 字典类型 - * - * 关联 {@link SysDictTypeDO#getType()} - */ - private String dictType; - /** - * 数据示例,主要用于生成 Swagger 注解的 example 字段 - */ - private String example; - - // ========== CRUD 相关字段 ========== - - /** - * 是否为 Create 创建操作的字段 - */ - private Boolean createOperation; - /** - * 是否为 Update 更新操作的字段 - */ - private Boolean updateOperation; - /** - * 是否为 List 查询操作的字段 - */ - private Boolean listOperation; - /** - * List 查询操作的条件类型 - * - * 枚举 {@link ToolCodegenColumnListConditionEnum} - */ - private String listOperationCondition; - /** - * 是否为 List 查询操作的返回字段 - */ - private Boolean listOperationResult; - - // ========== UI 相关字段 ========== - - /** - * 显示类型 - * - * 枚举 {@link ToolCodegenColumnHtmlTypeEnum} - */ - private String htmlType; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/dataobject/codegen/ToolCodegenTableDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/dataobject/codegen/ToolCodegenTableDO.java deleted file mode 100644 index 8a05f1d..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/dataobject/codegen/ToolCodegenTableDO.java +++ /dev/null @@ -1,96 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysMenuDO; -import cn.iocoder.dashboard.modules.tool.enums.codegen.ToolCodegenTemplateTypeEnum; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -/** - * 代码生成 table 表定义 - * - * @author 芋道源码 - */ -@TableName(value = "tool_codegen_table", autoResultMap = true) -@Data -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = true) -public class ToolCodegenTableDO extends BaseDO { - - /** - * ID 编号 - */ - private Long id; - - /** - * 导入类型 - * - * 枚举 {@link ToolCodegenTemplateTypeEnum} - */ - private Integer importType; - - // ========== 表相关字段 ========== - - /** - * 表名称 - */ - private String tableName; - /** - * 表描述 - */ - private String tableComment; - /** - * 备注 - */ - private String remark; - - // ========== 类相关字段 ========== - - /** - * 模块名,即一级目录 - * - * 例如说,system、infra、tool 等等 - */ - private String moduleName; - /** - * 业务名,即二级目录 - * - * 例如说,user、permission、dict 等等 - */ - private String businessName; - /** - * 类名称(首字母大写) - * - * 例如说,SysUser、SysMenu、SysDictData 等等 - */ - private String className; - /** - * 类描述 - */ - private String classComment; - /** - * 作者 - */ - private String author; - - // ========== 生成相关字段 ========== - - /** - * 模板类型 - * - * 枚举 {@link ToolCodegenTemplateTypeEnum} - */ - private Integer templateType; - - // ========== 菜单相关字段 ========== - - /** - * 父菜单编号 - * - * 关联 {@link SysMenuDO#getId()} - */ - private Long parentMenuId; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/dataobject/codegen/ToolSchemaColumnDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/dataobject/codegen/ToolSchemaColumnDO.java deleted file mode 100644 index d20a9c8..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/dataobject/codegen/ToolSchemaColumnDO.java +++ /dev/null @@ -1,54 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Builder; -import lombok.Data; - -/** - * MySQL 数据库中的 column 字段定义 - * - * @author 芋道源码 - */ -@TableName(value = "information_schema.columns", autoResultMap = true) -@Data -@Builder -public class ToolSchemaColumnDO { - - /** - * 表名称 - */ - private String tableName; - /** - * 字段名 - */ - private String columnName; - /** - * 字段类型 - */ - private String columnType; - /** - * 字段描述 - */ - private String columnComment; - /** - * 是否允许为空 - */ - @TableField("case when is_nullable = 'yes' then '1' else '0' end") - private Boolean nullable; - /** - * 是否主键 - */ - @TableField("case when column_key = 'PRI' then '1' else '0' end") - private Boolean primaryKey; - /** - * 是否自增 - */ - @TableField("case when extra = 'auto_increment' then '1' else '0' end") - private Boolean autoIncrement; - /** - * 排序字段 - */ - private Integer ordinalPosition; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/dataobject/codegen/ToolSchemaTableDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/dataobject/codegen/ToolSchemaTableDO.java deleted file mode 100644 index e16d913..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/dataobject/codegen/ToolSchemaTableDO.java +++ /dev/null @@ -1,36 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Builder; -import lombok.Data; - -import java.util.Date; - -/** - * MySQL 数据库中的 table 表定义 - * - * @author 芋道源码 - */ -@TableName(value = "information_schema.tables", autoResultMap = true) -@Data -@Builder -public class ToolSchemaTableDO { - - /** - * 数据库 - */ - private String tableSchema; - /** - * 表名称 - */ - private String tableName; - /** - * 表描述 - */ - private String tableComment; - /** - * 创建时间 - */ - private Date createTime; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/dataobject/test/ToolTestDemoDO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/dataobject/test/ToolTestDemoDO.java deleted file mode 100644 index 848bb85..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/dataobject/test/ToolTestDemoDO.java +++ /dev/null @@ -1,55 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.dal.dataobject.test; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -/** -* 字典类型 DO -* -* @author 芋艿 -*/ -@TableName("tool_test_demo") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ToolTestDemoDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 名字 - */ - private String name; - /** - * 状态 - * - * 枚举 {@link CommonStatusEnum} - */ - private Integer status; - /** - * 类型 - * - * 枚举 {@link cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum} - */ - private Integer type; - /** - * 分类 - * - * 枚举 {@link cn.iocoder.yudao.framework.redis.core.RedisKeyDefine.TimeoutTypeEnum} - */ - private Integer category; - /** - * 备注 - */ - private String remark; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolCodegenColumnMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolCodegenColumnMapper.java deleted file mode 100644 index 8f066f3..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolCodegenColumnMapper.java +++ /dev/null @@ -1,22 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.dal.mysql.codegen; - -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -@Mapper -public interface ToolCodegenColumnMapper extends BaseMapperX { - - default List selectListByTableId(Long tableId) { - return selectList(new QueryWrapper().eq("table_id", tableId) - .orderByAsc("ordinal_position")); - } - - default void deleteListByTableId(Long tableId) { - delete(new QueryWrapper().eq("table_id", tableId)); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolCodegenTableMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolCodegenTableMapper.java deleted file mode 100644 index 453733c..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolCodegenTableMapper.java +++ /dev/null @@ -1,25 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.dal.mysql.codegen; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface ToolCodegenTableMapper extends BaseMapperX { - - default ToolCodegenTableDO selectByTableName(String tableName) { - return selectOne(new QueryWrapper().eq("table_name", tableName)); - } - - default PageResult selectPage(ToolCodegenTablePageReqVO pageReqVO) { - return selectPage(pageReqVO, new QueryWrapperX() - .likeIfPresent("table_name", pageReqVO.getTableName()) - .likeIfPresent("table_comment", pageReqVO.getTableComment()) - .betweenIfPresent("create_time", pageReqVO.getBeginCreateTime(), pageReqVO.getEndCreateTime())); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolSchemaColumnMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolSchemaColumnMapper.java deleted file mode 100644 index 8ba6aa1..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolSchemaColumnMapper.java +++ /dev/null @@ -1,19 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.dal.mysql.codegen; - -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -@Mapper -public interface ToolSchemaColumnMapper extends BaseMapperX { - - default List selectListByTableName(String tableSchema, String tableName) { - return selectList(new QueryWrapper().eq("table_name", tableName) - .eq("table_schema", tableSchema) - .orderByAsc("ordinal_position")); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolSchemaTableMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolSchemaTableMapper.java deleted file mode 100644 index 2572117..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolSchemaTableMapper.java +++ /dev/null @@ -1,26 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.dal.mysql.codegen; - -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Collection; -import java.util.List; - -@Mapper -public interface ToolSchemaTableMapper extends BaseMapperX { - - default List selectList(Collection tableSchemas, String tableName, String tableComment) { - return selectList(new QueryWrapperX().in("table_schema", tableSchemas) - .likeIfPresent("table_name", tableName) - .likeIfPresent("table_comment", tableComment)); - } - - default ToolSchemaTableDO selectByTableSchemaAndTableName(String tableSchema, String tableName) { - return selectOne(new QueryWrapper().eq("table_schema",tableSchema) - .eq("table_name", tableName)); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/mysql/test/ToolTestDemoMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/mysql/test/ToolTestDemoMapper.java deleted file mode 100644 index 1209ac1..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/dal/mysql/test/ToolTestDemoMapper.java +++ /dev/null @@ -1,43 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.dal.mysql.test; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.tool.controller.test.vo.ToolTestDemoExportReqVO; -import cn.iocoder.dashboard.modules.tool.controller.test.vo.ToolTestDemoPageReqVO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.test.ToolTestDemoDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * 字典类型 Mapper - * - * @author 芋艿 - */ -@Mapper -public interface ToolTestDemoMapper extends BaseMapperX { - - default PageResult selectPage(ToolTestDemoPageReqVO reqVO) { - return selectPage(reqVO, new QueryWrapperX() - .likeIfPresent("name", reqVO.getName()) - .eqIfPresent("status", reqVO.getStatus()) - .eqIfPresent("type", reqVO.getType()) - .eqIfPresent("category", reqVO.getCategory()) - .eqIfPresent("remark", reqVO.getRemark()) - .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) - ); - } - - default List selectList(ToolTestDemoExportReqVO reqVO) { - return selectList(new QueryWrapperX() - .likeIfPresent("name", reqVO.getName()) - .eqIfPresent("status", reqVO.getStatus()) - .eqIfPresent("type", reqVO.getType()) - .eqIfPresent("category", reqVO.getCategory()) - .eqIfPresent("remark", reqVO.getRemark()) - .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) - ); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/enums/ToolErrorCodeConstants.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/enums/ToolErrorCodeConstants.java deleted file mode 100644 index 0753eb6..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/enums/ToolErrorCodeConstants.java +++ /dev/null @@ -1,25 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.enums; - -import cn.iocoder.yudao.framework.common.exception.ErrorCode; - -/** - * Tool 错误码枚举类 - * - * tool 系统,使用 1-003-000-000 段 - */ -public interface ToolErrorCodeConstants { - - // ========== 字典类型(测试) 1003000000 ========== - ErrorCode TEST_DEMO_NOT_EXISTS = new ErrorCode(1003000000, "测试示例不存在"); - - // ========== 代码生成器 1003001000 ========== - ErrorCode CODEGEN_TABLE_EXISTS = new ErrorCode(1003001000, "表定义已经存在"); - ErrorCode CODEGEN_IMPORT_TABLE_NULL = new ErrorCode(1003001001, "导入的表不存在"); - ErrorCode CODEGEN_IMPORT_COLUMNS_NULL = new ErrorCode(1003001002, "导入的字段不存在"); - ErrorCode CODEGEN_PARSE_SQL_ERROR = new ErrorCode(1003001003, "解析 SQL 失败,请检查"); - ErrorCode CODEGEN_TABLE_NOT_EXISTS = new ErrorCode(1003001004, "表定义不存在"); - ErrorCode CODEGEN_COLUMN_NOT_EXISTS = new ErrorCode(1003001005, "字段义不存在"); - ErrorCode CODEGEN_SYNC_COLUMNS_NULL = new ErrorCode(1003001006, "同步的字段不存在"); - ErrorCode CODEGEN_SYNC_NONE_CHANGE = new ErrorCode(1003001007, "同步失败,不存在改变"); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/enums/codegen/ToolCodegenColumnHtmlTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/enums/codegen/ToolCodegenColumnHtmlTypeEnum.java deleted file mode 100644 index 8eec060..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/enums/codegen/ToolCodegenColumnHtmlTypeEnum.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.enums.codegen; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 代码生成器的字段 HTML 展示枚举 - */ -@AllArgsConstructor -@Getter -public enum ToolCodegenColumnHtmlTypeEnum { - - INPUT("input"), // 文本框 - TEXTAREA("textarea"), // 文本域 - SELECT("select"), // 下拉框 - RADIO("radio"), // 单选框 - CHECKBOX("checkbox"), // 复选框 - DATETIME("datetime"), // 日期控件 - UPLOAD_IMAGE("upload_image"), // 上传图片 - UPLOAD_FILE("upload_file"), // 上传文件 - EDITOR("editor"), // 富文本控件 - ; - - /** - * 条件 - */ - private final String type; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/enums/codegen/ToolCodegenColumnListConditionEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/enums/codegen/ToolCodegenColumnListConditionEnum.java deleted file mode 100644 index bfa76a8..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/enums/codegen/ToolCodegenColumnListConditionEnum.java +++ /dev/null @@ -1,27 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.enums.codegen; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 代码生成器的字段过滤条件枚举 - */ -@AllArgsConstructor -@Getter -public enum ToolCodegenColumnListConditionEnum { - - EQ("="), - NE("!="), - GT(">"), - GTE(">="), - LT("<"), - LTE("<="), - LIKE("LIKE"), - BETWEEN("BETWEEN"); - - /** - * 条件 - */ - private final String condition; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/enums/codegen/ToolCodegenImportTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/enums/codegen/ToolCodegenImportTypeEnum.java deleted file mode 100644 index 0e598c0..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/enums/codegen/ToolCodegenImportTypeEnum.java +++ /dev/null @@ -1,23 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.enums.codegen; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 代码生成的导入类型 - * - * @author 芋道源码 - */ -@AllArgsConstructor -@Getter -public enum ToolCodegenImportTypeEnum { - - DB(1), // 从 information_schema 的 table 和 columns 表导入 - SQL(2); // 基于建表 SQL 语句导入 - - /** - * 类型 - */ - private final Integer type; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/enums/codegen/ToolCodegenTemplateTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/enums/codegen/ToolCodegenTemplateTypeEnum.java deleted file mode 100644 index d24cd2f..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/enums/codegen/ToolCodegenTemplateTypeEnum.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.enums.codegen; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 代码生成模板类型 - * - * @author 芋道源码 - */ -@AllArgsConstructor -@Getter -public enum ToolCodegenTemplateTypeEnum { - - CRUD(1), // 单表(增删改查) - TREE(2), // 树表(增删改查) - ; - - /** - * 类型 - */ - private final Integer type; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/config/ErrorCodeConfiguration.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/config/ErrorCodeConfiguration.java deleted file mode 100644 index 695f466..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/config/ErrorCodeConfiguration.java +++ /dev/null @@ -1,36 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.framework.errorcode.config; - -import cn.iocoder.dashboard.modules.tool.framework.errorcode.core.generator.ErrorCodeAutoGenerator; -import cn.iocoder.dashboard.modules.tool.framework.errorcode.core.loader.ErrorCodeLoader; -import cn.iocoder.dashboard.modules.tool.framework.errorcode.core.service.ErrorCodeFrameworkService; -import cn.iocoder.dashboard.modules.tool.framework.errorcode.core.loader.ErrorCodeLoaderImpl; -import cn.iocoder.dashboard.modules.tool.framework.errorcode.core.generator.ErrorCodeAutoGeneratorImpl; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.annotation.EnableScheduling; - -/** - * 错误码配置类 - */ -@Configuration -@EnableConfigurationProperties(ErrorCodeProperties.class) -@EnableScheduling // 开启调度任务的功能,因为 ErrorCodeRemoteLoader 通过定时刷新错误码 -public class ErrorCodeConfiguration { - - @Bean - public ErrorCodeAutoGenerator errorCodeAutoGenerator(@Value("${spring.application.name}") String applicationName, - ErrorCodeProperties errorCodeProperties, - ErrorCodeFrameworkService errorCodeFrameworkService) { - return new ErrorCodeAutoGeneratorImpl(applicationName, errorCodeProperties.getConstantsClassList(), - errorCodeFrameworkService); - } - - @Bean - public ErrorCodeLoader errorCodeLoader(@Value("${spring.application.name}") String applicationName, - ErrorCodeFrameworkService errorCodeFrameworkService) { - return new ErrorCodeLoaderImpl(applicationName, errorCodeFrameworkService); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/config/ErrorCodeProperties.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/config/ErrorCodeProperties.java deleted file mode 100644 index b3bf2cb..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/config/ErrorCodeProperties.java +++ /dev/null @@ -1,26 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.framework.errorcode.config; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.validation.annotation.Validated; - -import javax.validation.constraints.NotNull; -import java.util.List; - -/** - * 错误码的配置属性类 - * - * @author dlyan - */ -@ConfigurationProperties("yudao.error-code") -@Data -@Validated -public class ErrorCodeProperties { - - /** - * 错误码枚举类 - */ - @NotNull(message = "错误码枚举类不能为空") - private List constantsClassList; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/dto/ErrorCodeAutoGenerateReqDTO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/dto/ErrorCodeAutoGenerateReqDTO.java deleted file mode 100644 index 4ec2feb..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/dto/ErrorCodeAutoGenerateReqDTO.java +++ /dev/null @@ -1,34 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.framework.errorcode.core.dto; - -import lombok.Data; -import lombok.experimental.Accessors; - -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; - -/** - * 错误码自动生成 DTO - * - * @author dylan - */ -@Data -@Accessors(chain = true) -public class ErrorCodeAutoGenerateReqDTO { - - /** - * 应用名 - */ - @NotNull(message = "应用名不能为空") - private String applicationName; - /** - * 错误码编码 - */ - @NotNull(message = "错误码编码不能为空") - private Integer code; - /** - * 错误码错误提示 - */ - @NotEmpty(message = "错误码错误提示不能为空") - private String message; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/dto/ErrorCodeRespDTO.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/dto/ErrorCodeRespDTO.java deleted file mode 100644 index 78b0a6c..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/dto/ErrorCodeRespDTO.java +++ /dev/null @@ -1,28 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.framework.errorcode.core.dto; - -import lombok.Data; - -import java.util.Date; - -/** - * 错误码的 Response DTO - * - * @author 芋道源码 - */ -@Data -public class ErrorCodeRespDTO { - - /** - * 错误码编码 - */ - private Integer code; - /** - * 错误码错误提示 - */ - private String message; - /** - * 更新时间 - */ - private Date updateTime; - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGenerator.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGenerator.java deleted file mode 100644 index a152f1f..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGenerator.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.framework.errorcode.core.generator; - -/** - * 错误码的自动生成器 - * - * @author dylan - */ -public interface ErrorCodeAutoGenerator { - - /** - * 将配置类到错误码写入数据库 - */ - void execute(); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGeneratorImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGeneratorImpl.java deleted file mode 100644 index 0660de2..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGeneratorImpl.java +++ /dev/null @@ -1,98 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.framework.errorcode.core.generator; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ClassUtil; -import cn.hutool.core.util.ReflectUtil; -import cn.iocoder.yudao.framework.common.exception.ErrorCode; -import cn.iocoder.dashboard.modules.tool.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO; -import cn.iocoder.dashboard.modules.tool.framework.errorcode.core.service.ErrorCodeFrameworkService; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.event.EventListener; -import org.springframework.scheduling.annotation.Async; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * ErrorCodeAutoGenerator 的实现类 - * 目的是,扫描指定的 {@link #constantsClassList} 类,写入到 system 服务中 - * - * @author dylan - */ -@RequiredArgsConstructor -@Slf4j -public class ErrorCodeAutoGeneratorImpl implements ErrorCodeAutoGenerator { - - /** - * 应用分组 - */ - private final String applicationName; - /** - * 错误码枚举类 - */ - private final List constantsClassList; - /** - * 错误码 Service - */ - private final ErrorCodeFrameworkService errorCodeService; - - @Override - @EventListener(ApplicationReadyEvent.class) - @Async // 异步,保证项目的启动过程,毕竟非关键流程 - public void execute() { - // 第一步,解析错误码 - List autoGenerateDTOs = parseErrorCode(); - log.info("[execute][解析到错误码数量为 ({}) 个]", autoGenerateDTOs.size()); - - // 第二步,写入到 system 服务 - errorCodeService.autoGenerateErrorCodes(autoGenerateDTOs); - log.info("[execute][写入到 system 组件完成]"); - } - - /** - * 解析 constantsClassList 变量,转换成错误码数组 - * - * @return 错误码数组 - */ - private List parseErrorCode() { - // 校验 errorCodeConstantsClass 参数 - if (CollUtil.isEmpty(constantsClassList)) { - log.info("[execute][未配置 yudao.error-code.constants-class-list 配置项,不进行自动写入到 system 服务中]"); - return new ArrayList<>(); - } - - // 解析错误码 - List autoGenerateDTOs = new ArrayList<>(); - constantsClassList.forEach(constantsClass -> { - // 解析错误码枚举类 - Class errorCodeConstantsClazz = ClassUtil.loadClass(constantsClass); - // 解析错误码 - autoGenerateDTOs.addAll(parseErrorCode(errorCodeConstantsClazz)); - }); - return autoGenerateDTOs; - } - - /** - * 解析错误码类,获得错误码数组 - * - * @return 错误码数组 - */ - private List parseErrorCode(Class constantsClass) { - List autoGenerateDTOs = new ArrayList<>(); - Arrays.stream(constantsClass.getFields()).forEach(field -> { - if (field.getType() != ErrorCode.class) { - return; - } - // 转换成 ErrorCodeAutoGenerateReqDTO 对象 - ErrorCode errorCode = (ErrorCode) ReflectUtil.getFieldValue(constantsClass, field); - autoGenerateDTOs.add(new ErrorCodeAutoGenerateReqDTO().setApplicationName(applicationName) - .setCode(errorCode.getCode()).setMessage(errorCode.getMsg())); - }); - return autoGenerateDTOs; - } - -} - diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/loader/ErrorCodeLoader.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/loader/ErrorCodeLoader.java deleted file mode 100644 index aac3e89..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/loader/ErrorCodeLoader.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.framework.errorcode.core.loader; - -import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; - -/** - * 错误码加载器 - * - * 注意,错误码最终加载到 {@link ServiceExceptionUtil} 的 MESSAGES 变量中! - * - * @author dlyan - */ -public interface ErrorCodeLoader { - - /** - * 添加错误码 - * - * @param code 错误码的编号 - * @param msg 错误码的提示 - */ - default void putErrorCode(Integer code, String msg) { - ServiceExceptionUtil.put(code, msg); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/loader/ErrorCodeLoaderImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/loader/ErrorCodeLoaderImpl.java deleted file mode 100644 index 2a270d0..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/loader/ErrorCodeLoaderImpl.java +++ /dev/null @@ -1,73 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.framework.errorcode.core.loader; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.dashboard.modules.tool.framework.errorcode.core.dto.ErrorCodeRespDTO; -import cn.iocoder.dashboard.modules.tool.framework.errorcode.core.service.ErrorCodeFrameworkService; -import cn.iocoder.yudao.framework.common.util.date.DateUtils; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.event.EventListener; -import org.springframework.scheduling.annotation.Scheduled; - -import java.util.Date; -import java.util.List; - -/** - * ErrorCodeLoader 的实现类,从 infra 的数据库中,加载错误码。 - * - * 考虑到错误码会刷新,所以按照 {@link #REFRESH_ERROR_CODE_PERIOD} 频率,增量加载错误码。 - * - * @author dlyan - */ -@RequiredArgsConstructor -@Slf4j -public class ErrorCodeLoaderImpl implements ErrorCodeLoader { - - /** - * 刷新错误码的频率,单位:毫秒 - */ - private static final int REFRESH_ERROR_CODE_PERIOD = 60 * 1000; - - /** - * 应用分组 - */ - private final String applicationName; - /** - * 错误码 Service - */ - private final ErrorCodeFrameworkService errorCodeService; - - /** - * 缓存错误码的最大更新时间,用于后续的增量轮询,判断是否有更新 - */ - private Date maxUpdateTime; - - @EventListener(ApplicationReadyEvent.class) - public void loadErrorCodes() { - this.loadErrorCodes0(); - } - - @Scheduled(fixedDelay = REFRESH_ERROR_CODE_PERIOD, initialDelay = REFRESH_ERROR_CODE_PERIOD) - public void refreshErrorCodes() { - this.loadErrorCodes0(); - } - - private void loadErrorCodes0() { - // 加载错误码 - List errorCodeRespDTOs = errorCodeService.getErrorCodeList(applicationName, maxUpdateTime); - if (CollUtil.isEmpty(errorCodeRespDTOs)) { - return; - } - log.info("[loadErrorCodes0][加载到 ({}) 个错误码]", errorCodeRespDTOs.size()); - - // 刷新错误码的缓存 - errorCodeRespDTOs.forEach(errorCodeRespDTO -> { - // 写入到错误码的缓存 - putErrorCode(errorCodeRespDTO.getCode(), errorCodeRespDTO.getMessage()); - // 记录下更新时间,方便增量更新 - maxUpdateTime = DateUtils.max(maxUpdateTime, errorCodeRespDTO.getUpdateTime()); - }); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/service/ErrorCodeFrameworkService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/service/ErrorCodeFrameworkService.java deleted file mode 100644 index 30b707a..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/core/service/ErrorCodeFrameworkService.java +++ /dev/null @@ -1,35 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.framework.errorcode.core.service; - -import cn.iocoder.dashboard.modules.tool.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO; -import cn.iocoder.dashboard.modules.tool.framework.errorcode.core.dto.ErrorCodeRespDTO; - -import javax.validation.Valid; -import java.util.Date; -import java.util.List; - -/** - * 错误码 Framework Service 接口 - * - * @author 芋道源码 - */ -public interface ErrorCodeFrameworkService { - - /** - * 自动创建错误码 - * - * @param autoGenerateDTOs 错误码信息 - */ - void autoGenerateErrorCodes(@Valid List autoGenerateDTOs); - - /** - * 增量获得错误码数组 - * - * 如果 minUpdateTime 为空时,则获取所有错误码 - * - * @param applicationName 应用名 - * @param minUpdateTime 最小更新时间 - * @return 错误码数组 - */ - List getErrorCodeList(String applicationName, Date minUpdateTime); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/package-info.java deleted file mode 100644 index 7d75bc3..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/errorcode/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * 错误码组件 - * - * 将错误码缓存在内存中,同时通过定时器每 n 分钟更新 - */ -package cn.iocoder.dashboard.modules.tool.framework.errorcode; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/package-info.java deleted file mode 100644 index 3c4ce27..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/framework/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * 属于 tool 模块的 framework 封装 - * - * @author 芋道源码 - */ -package cn.iocoder.dashboard.modules.tool.framework; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/package-info.java deleted file mode 100644 index d161f55..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -/** - * tool 包下,我们放研发工具,提升研发效率与质量。 - * 例如说:代码生成器、接口文档等等 - * - * 缩写:tool - */ -package cn.iocoder.dashboard.modules.tool; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/ToolCodegenService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/ToolCodegenService.java deleted file mode 100644 index 4a548f0..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/ToolCodegenService.java +++ /dev/null @@ -1,121 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.service.codegen; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenUpdateReqVO; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO; - -import java.util.List; -import java.util.Map; - -/** - * 代码生成 Service 接口 - * - * @author 芋道源码 - */ -public interface ToolCodegenService { - - /** - * 基于 SQL 建表语句,创建代码生成器的表定义 - * - * @param sql SQL 建表语句 - * @return 创建的表定义的编号 - */ - Long createCodegenListFromSQL(String sql); - - /** - * 基于数据库的表结构,创建代码生成器的表定义 - * - * @param tableName 表名称 - * @return 创建的表定义的编号 - */ - Long createCodegen(String tableName); - - /** - * 基于 {@link #createCodegen(String)} 的批量创建 - * - * @param tableNames 表名称数组 - * @return 创建的表定义的编号数组 - */ - List createCodegenListFromDB(List tableNames); - - /** - * 更新数据库的表和字段定义 - * - * @param updateReqVO 更新信息 - */ - void updateCodegen(ToolCodegenUpdateReqVO updateReqVO); - - /** - * 基于数据库的表结构,同步数据库的表和字段定义 - * - * @param tableId 表编号 - */ - void syncCodegenFromDB(Long tableId); - - /** - * 基于 SQL 建表语句,同步数据库的表和字段定义 - * - * @param tableId 表编号 - * @param sql SQL 建表语句 - */ - void syncCodegenFromSQL(Long tableId, String sql); - - /** - * 删除数据库的表和字段定义 - * - * @param tableId 数据编号 - */ - void deleteCodegen(Long tableId); - - /** - * 获得表定义分页 - * - * @param pageReqVO 分页条件 - * @return 表定义分页 - */ - PageResult getCodegenTablePage(ToolCodegenTablePageReqVO pageReqVO); - - /** - * 获得表定义 - * - * @param id 表编号 - * @return 表定义 - */ - ToolCodegenTableDO getCodegenTablePage(Long id); - - /** - * 获得全部表定义 - * - * @return 表定义数组 - */ - List getCodeGenTableList(); - - /** - * 获得指定表的字段定义数组 - * - * @param tableId 表编号 - * @return 字段定义数组 - */ - List getCodegenColumnListByTableId(Long tableId); - - /** - * 执行指定表的代码生成 - * - * @param tableId 表编号 - * @return 生成结果。key 为文件路径,value 为对应的代码内容 - */ - Map generationCodes(Long tableId); - - /** - * 获得数据库自带的表定义列表 - * - * @param tableName 表名称 - * @param tableComment 表描述 - * @return 表定义列表 - */ - List getSchemaTableList(String tableName, String tableComment); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenSQLParser.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenSQLParser.java deleted file mode 100644 index d653ab6..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenSQLParser.java +++ /dev/null @@ -1,108 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.service.codegen.impl; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO; -import com.alibaba.druid.DbType; -import com.alibaba.druid.sql.ast.expr.SQLCharExpr; -import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition; -import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement; -import com.alibaba.druid.sql.ast.statement.SQLPrimaryKey; -import com.alibaba.druid.sql.ast.statement.SQLTableElement; -import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateTableStatement; -import com.alibaba.druid.sql.repository.SchemaRepository; -import org.apache.commons.collections4.KeyValue; -import org.apache.commons.collections4.keyvalue.DefaultKeyValue; - -import java.util.ArrayList; -import java.util.List; - -import static com.alibaba.druid.sql.SQLUtils.normalize; - -/** - * SQL 解析器,将创建表的 SQL,解析成 {@link ToolSchemaTableDO} 和 {@link ToolSchemaColumnDO} 对象, - * 后续可以基于它们,生成代码~ - * - * @author 芋道源码 - */ -public class ToolCodegenSQLParser { - - /** - * 解析建表 SQL 语句,返回 {@link ToolSchemaTableDO} 和 {@link ToolSchemaColumnDO} 对象 - * - * @param sql 建表 SQL 语句 - * @return 解析结果 - */ - public static KeyValue> parse(String sql) { - // 解析 SQL 成 Statement - SQLCreateTableStatement statement = parseCreateSQL(sql); - // 解析 Table 表 - ToolSchemaTableDO table = parseTable(statement); - // 解析 Column 字段 - List columns = parseColumns(statement); - columns.forEach(column -> column.setTableName(table.getTableName())); - // 返回 - return new DefaultKeyValue<>(table, columns); - } - - /** - * 使用 Druid 工具,建表 SQL 语句 - * - * @param sql 建表 SQL 语句 - * @return 创建 Statement - */ - private static SQLCreateTableStatement parseCreateSQL(String sql) { - // 解析 SQL - SchemaRepository repository = new SchemaRepository(DbType.mysql); - repository.console(sql); - // 获得该表对应的 MySqlCreateTableStatement 对象 - String tableName = CollUtil.getFirst(repository.getDefaultSchema().getObjects()).getName(); - return (MySqlCreateTableStatement) repository.findTable(tableName).getStatement(); - } - - private static ToolSchemaTableDO parseTable(SQLCreateTableStatement statement) { - return ToolSchemaTableDO.builder() - .tableName(statement.getTableSource().getTableName(true)) - .tableComment(((SQLCharExpr) statement.getComment()).getText()) - .build(); - } - - private static List parseColumns(SQLCreateTableStatement statement) { - List columns = new ArrayList<>(); - statement.getTableElementList().forEach(element -> parseColumn(columns, element)); - return columns; - } - - private static void parseColumn(List columns, SQLTableElement element) { - // 处理主键 - if (element instanceof SQLPrimaryKey) { - parsePrimaryKey(columns, (SQLPrimaryKey) element); - return; - } - // 处理字段定义 - if (element instanceof SQLColumnDefinition) { - parseColumnDefinition(columns, (SQLColumnDefinition) element); - } - } - - private static void parsePrimaryKey(List columns, SQLPrimaryKey primaryKey) { - String columnName = normalize(primaryKey.getColumns().get(0).toString()); // 暂时不考虑联合主键 - // 匹配 columns 主键字段,设置为 primary - columns.stream().filter(column -> column.getColumnName().equals(columnName)) - .forEach(column -> column.setPrimaryKey(true)); - } - - private static void parseColumnDefinition(List columns, SQLColumnDefinition definition) { - String text = definition.toString().toUpperCase(); - columns.add(ToolSchemaColumnDO.builder() - .columnName(normalize(definition.getColumnName())) - .columnType(definition.getDataType().toString()) - .columnComment(normalize(definition.getComment().toString())) - .nullable(!text.contains(" NOT NULL")) - .primaryKey(false) - .autoIncrement(text.contains("AUTO_INCREMENT")) - .ordinalPosition(columns.size() + 1) - .build()); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/test/ToolTestDemoService.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/test/ToolTestDemoService.java deleted file mode 100644 index b2a9b84..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/test/ToolTestDemoService.java +++ /dev/null @@ -1,75 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.service.test; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.tool.controller.test.vo.ToolTestDemoCreateReqVO; -import cn.iocoder.dashboard.modules.tool.controller.test.vo.ToolTestDemoExportReqVO; -import cn.iocoder.dashboard.modules.tool.controller.test.vo.ToolTestDemoPageReqVO; -import cn.iocoder.dashboard.modules.tool.controller.test.vo.ToolTestDemoUpdateReqVO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.test.ToolTestDemoDO; - -import javax.validation.Valid; -import java.util.Collection; -import java.util.List; - -/** - * 字典类型 Service 接口 - * - * @author 芋艿 - */ -public interface ToolTestDemoService { - - /** - * 创建字典类型 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createTestDemo(@Valid ToolTestDemoCreateReqVO createReqVO); - - /** - * 更新字典类型 - * - * @param updateReqVO 更新信息 - */ - void updateTestDemo(@Valid ToolTestDemoUpdateReqVO updateReqVO); - - /** - * 删除字典类型 - * - * @param id 编号 - */ - void deleteTestDemo(Long id); - - /** - * 获得字典类型 - * - * @param id 编号 - * @return 字典类型 - */ - ToolTestDemoDO getTestDemo(Long id); - - /** - * 获得字典类型列表 - * - * @param ids 编号 - * @return 字典类型列表 - */ - List getTestDemoList(Collection ids); - - /** - * 获得字典类型分页 - * - * @param pageReqVO 分页查询 - * @return 字典类型分页 - */ - PageResult getTestDemoPage(ToolTestDemoPageReqVO pageReqVO); - - /** - * 获得字典类型列表, 用于 Excel 导出 - * - * @param exportReqVO 查询条件 - * @return 字典类型分页 - */ - List getTestDemoList(ToolTestDemoExportReqVO exportReqVO); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/test/impl/ToolTestDemoServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/test/impl/ToolTestDemoServiceImpl.java deleted file mode 100644 index 64d3e62..0000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/test/impl/ToolTestDemoServiceImpl.java +++ /dev/null @@ -1,86 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.service.test.impl; - -import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.tool.controller.test.vo.ToolTestDemoCreateReqVO; -import cn.iocoder.dashboard.modules.tool.controller.test.vo.ToolTestDemoExportReqVO; -import cn.iocoder.dashboard.modules.tool.controller.test.vo.ToolTestDemoPageReqVO; -import cn.iocoder.dashboard.modules.tool.controller.test.vo.ToolTestDemoUpdateReqVO; -import cn.iocoder.dashboard.modules.tool.convert.test.ToolTestDemoConvert; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.test.ToolTestDemoDO; -import cn.iocoder.dashboard.modules.tool.dal.mysql.test.ToolTestDemoMapper; -import cn.iocoder.dashboard.modules.tool.service.test.ToolTestDemoService; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.Resource; -import java.util.Collection; -import java.util.List; - -import static cn.iocoder.dashboard.modules.tool.enums.ToolErrorCodeConstants.TEST_DEMO_NOT_EXISTS; - -/** - * 字典类型 Service 实现类 - * - * @author 芋艿 - */ -@Service -@Validated -public class ToolTestDemoServiceImpl implements ToolTestDemoService { - - @Resource - private ToolTestDemoMapper testDemoMapper; - - @Override - public Long createTestDemo(ToolTestDemoCreateReqVO createReqVO) { - // 插入 - ToolTestDemoDO testDemo = ToolTestDemoConvert.INSTANCE.convert(createReqVO); - testDemoMapper.insert(testDemo); - // 返回 - return testDemo.getId(); - } - - @Override - public void updateTestDemo(ToolTestDemoUpdateReqVO updateReqVO) { - // 校验存在 - this.validateTestDemoExists(updateReqVO.getId()); - // 更新 - ToolTestDemoDO updateObj = ToolTestDemoConvert.INSTANCE.convert(updateReqVO); - testDemoMapper.updateById(updateObj); - } - - @Override - public void deleteTestDemo(Long id) { - // 校验存在 - this.validateTestDemoExists(id); - // 更新 - testDemoMapper.deleteById(id); - } - - private void validateTestDemoExists(Long id) { - if (testDemoMapper.selectById(id) == null) { - throw ServiceExceptionUtil.exception(TEST_DEMO_NOT_EXISTS); - } - } - - @Override - public ToolTestDemoDO getTestDemo(Long id) { - return testDemoMapper.selectById(id); - } - - @Override - public List getTestDemoList(Collection ids) { - return testDemoMapper.selectBatchIds(ids); - } - - @Override - public PageResult getTestDemoPage(ToolTestDemoPageReqVO pageReqVO) { - return testDemoMapper.selectPage(pageReqVO); - } - - @Override - public List getTestDemoList(ToolTestDemoExportReqVO exportReqVO) { - return testDemoMapper.selectList(exportReqVO); - } - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/AdminServerApplication.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/AdminServerApplication.java index 60fd641..ba79187 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/AdminServerApplication.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/AdminServerApplication.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard; +package cn.iocoder.yudao.adminserver; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/framework/async/config/AsyncConfiguration.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/async/config/AsyncConfiguration.java index 58096d5..720fc5a 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/framework/async/config/AsyncConfiguration.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/async/config/AsyncConfiguration.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.framework.async.config; +package cn.iocoder.yudao.adminserver.framework.async.config; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableAsync; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/framework/async/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/async/package-info.java index 3753589..aac87cd 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/framework/async/package-info.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/async/package-info.java @@ -1,4 +1,4 @@ /** * 异步执行,基于 Spring @Async 实现 */ -package cn.iocoder.dashboard.framework.async; +package cn.iocoder.yudao.adminserver.framework.async; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/framework/async/《芋道 Spring Boot 异步任务入门》.md b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/async/《芋道 Spring Boot 异步任务入门》.md index 5822b83..5822b83 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/framework/async/《芋道 Spring Boot 异步任务入门》.md +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/async/《芋道 Spring Boot 异步任务入门》.md diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/framework/monitor/config/AdminServerConfiguration.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/monitor/config/AdminServerConfiguration.java index 77c166c..c961441 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/framework/monitor/config/AdminServerConfiguration.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/monitor/config/AdminServerConfiguration.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.framework.monitor.config; +package cn.iocoder.yudao.adminserver.framework.monitor.config; import de.codecentric.boot.admin.server.config.EnableAdminServer; import org.springframework.context.annotation.Configuration; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/framework/monitor/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/monitor/package-info.java index dec6e31..0d380cf 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/framework/monitor/package-info.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/monitor/package-info.java @@ -1,4 +1,4 @@ /** * 使用 Spring Boot Admin 实现简单的监控平台 */ -package cn.iocoder.dashboard.framework.monitor; +package cn.iocoder.yudao.adminserver.framework.monitor; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/framework/monitor/《芋道 Spring Boot 监控工具 Admin 入门》.md b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/monitor/《芋道 Spring Boot 监控工具 Admin 入门》.md index a1e3676..a1e3676 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/framework/monitor/《芋道 Spring Boot 监控工具 Admin 入门》.md +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/monitor/《芋道 Spring Boot 监控工具 Admin 入门》.md diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/framework/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/package-info.java index 991a69b..fcb2a09 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/framework/package-info.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/framework/package-info.java @@ -3,4 +3,4 @@ * * @author 芋道源码 */ -package cn.iocoder.dashboard.framework; +package cn.iocoder.yudao.adminserver.framework; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/InfConfigController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/InfConfigController.java index 4fa9c4b..b0ff2ca 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/InfConfigController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/InfConfigController.java @@ -1,13 +1,13 @@ -package cn.iocoder.dashboard.modules.infra.controller.config; +package cn.iocoder.yudao.adminserver.modules.infra.controller.config; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.*; -import cn.iocoder.dashboard.modules.infra.convert.config.InfConfigConvert; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.config.InfConfigDO; -import cn.iocoder.dashboard.modules.infra.service.config.InfConfigService; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.*; +import cn.iocoder.yudao.adminserver.modules.infra.convert.config.InfConfigConvert; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config.InfConfigDO; +import cn.iocoder.yudao.adminserver.modules.infra.service.config.InfConfigService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; @@ -24,7 +24,7 @@ import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; -import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.CONFIG_GET_VALUE_ERROR_IF_SENSITIVE; +import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.CONFIG_GET_VALUE_ERROR_IF_SENSITIVE; @Api(tags = "参数配置") @RestController diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/vo/InfConfigBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/vo/InfConfigBaseVO.java index c8034e4..82b0f48 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/vo/InfConfigBaseVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/vo/InfConfigBaseVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.config.vo; +package cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/vo/InfConfigCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/vo/InfConfigCreateReqVO.java index 7b0bcfb..ee2b90a 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/vo/InfConfigCreateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/vo/InfConfigCreateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.config.vo; +package cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/vo/InfConfigExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/vo/InfConfigExcelVO.java index 622034f..2a5c044 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/vo/InfConfigExcelVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/vo/InfConfigExcelVO.java @@ -1,8 +1,8 @@ -package cn.iocoder.dashboard.modules.infra.controller.config.vo; +package cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; +import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/vo/InfConfigExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/vo/InfConfigExportReqVO.java index 1e43758..550a5df 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/vo/InfConfigExportReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/vo/InfConfigExportReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.config.vo; +package cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/vo/InfConfigPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/vo/InfConfigPageReqVO.java index a862f35..3f031fa 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/vo/InfConfigPageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/vo/InfConfigPageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.config.vo; +package cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/vo/InfConfigRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/vo/InfConfigRespVO.java index 10673e2..84689b7 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/vo/InfConfigRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/vo/InfConfigRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.config.vo; +package cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/vo/InfConfigUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/vo/InfConfigUpdateReqVO.java index 478f308..7e9d49c 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/vo/InfConfigUpdateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/vo/InfConfigUpdateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.config.vo; +package cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/doc/InfDbDocController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/doc/InfDbDocController.java index 1271e1b..19f72e1 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/doc/InfDbDocController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/doc/InfDbDocController.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.doc; +package cn.iocoder.yudao.adminserver.modules.infra.controller.doc; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.IdUtil; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/file/InfFileController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/file/InfFileController.java index dbbfd7f..223aa90 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/file/InfFileController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/file/InfFileController.java @@ -1,13 +1,13 @@ -package cn.iocoder.dashboard.modules.infra.controller.file; +package cn.iocoder.yudao.adminserver.modules.infra.controller.file; import cn.hutool.core.io.IoUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.infra.controller.file.vo.InfFilePageReqVO; -import cn.iocoder.dashboard.modules.infra.controller.file.vo.InfFileRespVO; -import cn.iocoder.dashboard.modules.infra.convert.file.InfFileConvert; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.file.InfFileDO; -import cn.iocoder.dashboard.modules.infra.service.file.InfFileService; +import cn.iocoder.yudao.adminserver.modules.infra.controller.file.vo.InfFilePageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.file.vo.InfFileRespVO; +import cn.iocoder.yudao.adminserver.modules.infra.convert.file.InfFileConvert; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.file.InfFileDO; +import cn.iocoder.yudao.adminserver.modules.infra.service.file.InfFileService; import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/file/vo/InfFilePageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/file/vo/InfFilePageReqVO.java index 41f792d..152466a 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/file/vo/InfFilePageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/file/vo/InfFilePageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.file.vo; +package cn.iocoder.yudao.adminserver.modules.infra.controller.file.vo; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/file/vo/InfFileRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/file/vo/InfFileRespVO.java index e78074d..2388d7f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/file/vo/InfFileRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/file/vo/InfFileRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.file.vo; +package cn.iocoder.yudao.adminserver.modules.infra.controller.file.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/InfJobController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/InfJobController.java index 83af689..1cd3c8d 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/InfJobController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/InfJobController.java @@ -1,14 +1,14 @@ -package cn.iocoder.dashboard.modules.infra.controller.job; +package cn.iocoder.yudao.adminserver.modules.infra.controller.job; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.framework.quartz.core.util.CronUtils; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.*; -import cn.iocoder.dashboard.modules.infra.convert.job.InfJobConvert; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobDO; -import cn.iocoder.dashboard.modules.infra.service.job.InfJobService; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.*; +import cn.iocoder.yudao.adminserver.modules.infra.convert.job.InfJobConvert; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.job.InfJobDO; +import cn.iocoder.yudao.adminserver.modules.infra.service.job.InfJobService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/InfJobLogController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/InfJobLogController.java index 717ceb0..d6e2639 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/InfJobLogController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/InfJobLogController.java @@ -1,16 +1,16 @@ -package cn.iocoder.dashboard.modules.infra.controller.job; +package cn.iocoder.yudao.adminserver.modules.infra.controller.job; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.log.InfJobLogExcelVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.log.InfJobLogExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.log.InfJobLogPageReqVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.log.InfJobLogRespVO; -import cn.iocoder.dashboard.modules.infra.convert.job.InfJobLogConvert; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobLogDO; -import cn.iocoder.dashboard.modules.infra.service.job.InfJobLogService; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log.InfJobLogExcelVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log.InfJobLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log.InfJobLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log.InfJobLogRespVO; +import cn.iocoder.yudao.adminserver.modules.infra.convert.job.InfJobLogConvert; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.job.InfJobLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.service.job.InfJobLogService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/job/InfJobBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/job/InfJobBaseVO.java index 2df3ad8..2d7b51f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/job/InfJobBaseVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/job/InfJobBaseVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.job.vo.job; +package cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/job/InfJobCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/job/InfJobCreateReqVO.java index a8ba55d..b2325d7 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/job/InfJobCreateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/job/InfJobCreateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.job.vo.job; +package cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/job/InfJobExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/job/InfJobExcelVO.java index 1488642..0d9daf8 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/job/InfJobExcelVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/job/InfJobExcelVO.java @@ -1,8 +1,8 @@ -package cn.iocoder.dashboard.modules.infra.controller.job.vo.job; +package cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.dashboard.modules.infra.enums.InfDictTypeConstants; +import cn.iocoder.yudao.adminserver.modules.infra.enums.InfDictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/job/InfJobExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/job/InfJobExportReqVO.java index a0fe9f3..9c578e9 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/job/InfJobExportReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/job/InfJobExportReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.job.vo.job; +package cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/job/InfJobPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/job/InfJobPageReqVO.java index 6baf46e..eec31e9 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/job/InfJobPageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/job/InfJobPageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.job.vo.job; +package cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/job/InfJobRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/job/InfJobRespVO.java index c23eb8b..ffe3a69 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/job/InfJobRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/job/InfJobRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.job.vo.job; +package cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/job/InfJobUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/job/InfJobUpdateReqVO.java index 1316667..d741a98 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/job/InfJobUpdateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/job/InfJobUpdateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.job.vo.job; +package cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/log/InfJobLogBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/log/InfJobLogBaseVO.java index 5ae2795..0dbd67e 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/log/InfJobLogBaseVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/log/InfJobLogBaseVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.job.vo.log; +package cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/log/InfJobLogExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/log/InfJobLogExcelVO.java index 58a58d6..fd7078b 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/log/InfJobLogExcelVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/log/InfJobLogExcelVO.java @@ -1,8 +1,8 @@ -package cn.iocoder.dashboard.modules.infra.controller.job.vo.log; +package cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.dashboard.modules.infra.enums.InfDictTypeConstants; +import cn.iocoder.yudao.adminserver.modules.infra.enums.InfDictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/log/InfJobLogExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/log/InfJobLogExportReqVO.java index 4bbf562..3e3e85b 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/log/InfJobLogExportReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/log/InfJobLogExportReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.job.vo.log; +package cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/log/InfJobLogPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/log/InfJobLogPageReqVO.java index 4784cb6..0c5b558 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/log/InfJobLogPageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/log/InfJobLogPageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.job.vo.log; +package cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/log/InfJobLogRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/log/InfJobLogRespVO.java index 72587f5..497e691 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/log/InfJobLogRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/job/vo/log/InfJobLogRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.job.vo.log; +package cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/InfApiAccessLogController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/InfApiAccessLogController.java index 1ca75db..434fb1f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/InfApiAccessLogController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/InfApiAccessLogController.java @@ -1,16 +1,16 @@ -package cn.iocoder.dashboard.modules.infra.controller.logger; +package cn.iocoder.yudao.adminserver.modules.infra.controller.logger; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExcelVO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogRespVO; -import cn.iocoder.dashboard.modules.infra.convert.logger.InfApiAccessLogConvert; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.logger.InfApiAccessLogDO; -import cn.iocoder.dashboard.modules.infra.service.logger.InfApiAccessLogService; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExcelVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogRespVO; +import cn.iocoder.yudao.adminserver.modules.infra.convert.logger.InfApiAccessLogConvert; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiAccessLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.service.logger.InfApiAccessLogService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.security.access.prepost.PreAuthorize; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/InfApiErrorLogController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/InfApiErrorLogController.java index ff25f33..abc227f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/InfApiErrorLogController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/InfApiErrorLogController.java @@ -1,16 +1,16 @@ -package cn.iocoder.dashboard.modules.infra.controller.logger; +package cn.iocoder.yudao.adminserver.modules.infra.controller.logger; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExcelVO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogPageReqVO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogRespVO; -import cn.iocoder.dashboard.modules.infra.convert.logger.InfApiErrorLogConvert; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.logger.InfApiErrorLogDO; -import cn.iocoder.dashboard.modules.infra.service.logger.InfApiErrorLogService; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExcelVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogRespVO; +import cn.iocoder.yudao.adminserver.modules.infra.convert.logger.InfApiErrorLogConvert; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiErrorLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.service.logger.InfApiErrorLogService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogBaseVO.java index 5dcfbd9..d5e300f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogBaseVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogBaseVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog; +package cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogExcelVO.java index be9ec35..d026535 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogExcelVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogExcelVO.java @@ -1,8 +1,8 @@ -package cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog; +package cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; +import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogExportReqVO.java index 43f852e..8e9dc40 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogExportReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogExportReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog; +package cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogPageReqVO.java index 14973d8..c045205 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogPageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogPageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog; +package cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogRespVO.java index d3300c8..15dbed3 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog; +package cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogBaseVO.java index 5e521a5..87eb2dd 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogBaseVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogBaseVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog; +package cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogExcelVO.java index 858be0a..3224a30 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogExcelVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogExcelVO.java @@ -1,9 +1,9 @@ -package cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog; +package cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.dashboard.modules.infra.enums.InfDictTypeConstants; -import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; +import cn.iocoder.yudao.adminserver.modules.infra.enums.InfDictTypeConstants; +import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogExportReqVO.java index 1225e9d..a86288e 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogExportReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogExportReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog; +package cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogPageReqVO.java index b03fc22..cc47dd8 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogPageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogPageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog; +package cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogRespVO.java index 9ac3154..9e4521c 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog; +package cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/redis/RedisController.http b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/redis/RedisController.http index 1c474e9..1c474e9 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/redis/RedisController.http +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/redis/RedisController.http diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/redis/RedisController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/redis/RedisController.java index dcc49a7..f39a38b 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/redis/RedisController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/redis/RedisController.java @@ -1,11 +1,11 @@ -package cn.iocoder.dashboard.modules.infra.controller.redis; +package cn.iocoder.yudao.adminserver.modules.infra.controller.redis; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine; import cn.iocoder.yudao.framework.redis.core.RedisKeyRegistry; -import cn.iocoder.dashboard.modules.infra.controller.redis.vo.InfRedisKeyRespVO; -import cn.iocoder.dashboard.modules.infra.controller.redis.vo.InfRedisMonitorRespVO; -import cn.iocoder.dashboard.modules.infra.convert.redis.RedisConvert; +import cn.iocoder.yudao.adminserver.modules.infra.controller.redis.vo.InfRedisKeyRespVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.redis.vo.InfRedisMonitorRespVO; +import cn.iocoder.yudao.adminserver.modules.infra.convert.redis.RedisConvert; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.data.redis.connection.RedisServerCommands; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/redis/vo/InfRedisKeyRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/redis/vo/InfRedisKeyRespVO.java index 3ea923c..60a14cf 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/redis/vo/InfRedisKeyRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/redis/vo/InfRedisKeyRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.redis.vo; +package cn.iocoder.yudao.adminserver.modules.infra.controller.redis.vo; import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/redis/vo/InfRedisMonitorRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/redis/vo/InfRedisMonitorRespVO.java index 35389c7..8481fa9 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/controller/redis/vo/InfRedisMonitorRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/redis/vo/InfRedisMonitorRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.controller.redis.vo; +package cn.iocoder.yudao.adminserver.modules.infra.controller.redis.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/config/InfConfigConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/config/InfConfigConvert.java index 3ab729c..0b076b6 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/config/InfConfigConvert.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/config/InfConfigConvert.java @@ -1,11 +1,11 @@ -package cn.iocoder.dashboard.modules.infra.convert.config; +package cn.iocoder.yudao.adminserver.modules.infra.convert.config; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigCreateReqVO; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigExcelVO; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigRespVO; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigUpdateReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.config.InfConfigDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigExcelVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigRespVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config.InfConfigDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/file/InfFileConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/file/InfFileConvert.java index 6e22a5e..9d3e95c 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/file/InfFileConvert.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/file/InfFileConvert.java @@ -1,8 +1,8 @@ -package cn.iocoder.dashboard.modules.infra.convert.file; +package cn.iocoder.yudao.adminserver.modules.infra.convert.file; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.infra.controller.file.vo.InfFileRespVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.file.InfFileDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.file.vo.InfFileRespVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.file.InfFileDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/job/InfJobConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/job/InfJobConvert.java index 6e6f2d8..2b6fbc1 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/job/InfJobConvert.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/job/InfJobConvert.java @@ -1,11 +1,11 @@ -package cn.iocoder.dashboard.modules.infra.convert.job; +package cn.iocoder.yudao.adminserver.modules.infra.convert.job; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobCreateReqVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobExcelVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobRespVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobUpdateReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobExcelVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobRespVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.job.InfJobDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/job/InfJobLogConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/job/InfJobLogConvert.java index e6f60ff..146c7fb 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/job/InfJobLogConvert.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/job/InfJobLogConvert.java @@ -1,9 +1,9 @@ -package cn.iocoder.dashboard.modules.infra.convert.job; +package cn.iocoder.yudao.adminserver.modules.infra.convert.job; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.log.InfJobLogExcelVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.log.InfJobLogRespVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log.InfJobLogExcelVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log.InfJobLogRespVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.job.InfJobLogDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/logger/InfApiAccessLogConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/logger/InfApiAccessLogConvert.java index 54dce31..71b319c 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/logger/InfApiAccessLogConvert.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/logger/InfApiAccessLogConvert.java @@ -1,10 +1,10 @@ -package cn.iocoder.dashboard.modules.infra.convert.logger; +package cn.iocoder.yudao.adminserver.modules.infra.convert.logger; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateDTO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExcelVO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogRespVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.logger.InfApiAccessLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExcelVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogRespVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiAccessLogDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/logger/InfApiErrorLogConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/logger/InfApiErrorLogConvert.java index 91ecb45..359ffaf 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/logger/InfApiErrorLogConvert.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/logger/InfApiErrorLogConvert.java @@ -1,10 +1,10 @@ -package cn.iocoder.dashboard.modules.infra.convert.logger; +package cn.iocoder.yudao.adminserver.modules.infra.convert.logger; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateDTO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExcelVO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogRespVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.logger.InfApiErrorLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExcelVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogRespVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiErrorLogDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/package-info.java index 6be6252..3c74fe7 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/package-info.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/package-info.java @@ -3,4 +3,4 @@ * * 目前使用 MapStruct 框架 */ -package cn.iocoder.dashboard.modules.infra.convert; +package cn.iocoder.yudao.adminserver.modules.infra.convert; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/redis/RedisConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/redis/RedisConvert.java index c539e1a..3cfa92a 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/redis/RedisConvert.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/redis/RedisConvert.java @@ -1,9 +1,9 @@ -package cn.iocoder.dashboard.modules.infra.convert.redis; +package cn.iocoder.yudao.adminserver.modules.infra.convert.redis; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine; -import cn.iocoder.dashboard.modules.infra.controller.redis.vo.InfRedisKeyRespVO; -import cn.iocoder.dashboard.modules.infra.controller.redis.vo.InfRedisMonitorRespVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.redis.vo.InfRedisKeyRespVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.redis.vo.InfRedisMonitorRespVO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md index 8153487..8153487 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/dataobject/config/InfConfigDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/config/InfConfigDO.java index 770a778..119d069 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/dataobject/config/InfConfigDO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/config/InfConfigDO.java @@ -1,7 +1,7 @@ -package cn.iocoder.dashboard.modules.infra.dal.dataobject.config; +package cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.dashboard.modules.infra.enums.config.InfConfigTypeEnum; +import cn.iocoder.yudao.adminserver.modules.infra.enums.config.InfConfigTypeEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/dataobject/file/InfFileDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/file/InfFileDO.java index 7f517ce..594ae45 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/dataobject/file/InfFileDO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/file/InfFileDO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.dal.dataobject.file; +package cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.file; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/dataobject/job/InfJobDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/job/InfJobDO.java index 7fc0ef4..4eb95ca 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/dataobject/job/InfJobDO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/job/InfJobDO.java @@ -1,7 +1,7 @@ -package cn.iocoder.dashboard.modules.infra.dal.dataobject.job; +package cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.job; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.dashboard.modules.infra.enums.job.InfJobStatusEnum; +import cn.iocoder.yudao.adminserver.modules.infra.enums.job.InfJobStatusEnum; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/dataobject/job/InfJobLogDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/job/InfJobLogDO.java index 49d76e0..4991680 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/dataobject/job/InfJobLogDO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/job/InfJobLogDO.java @@ -1,8 +1,8 @@ -package cn.iocoder.dashboard.modules.infra.dal.dataobject.job; +package cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.job; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; -import cn.iocoder.dashboard.modules.infra.enums.job.InfJobLogStatusEnum; +import cn.iocoder.yudao.adminserver.modules.infra.enums.job.InfJobLogStatusEnum; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/dataobject/logger/InfApiAccessLogDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/logger/InfApiAccessLogDO.java index 957937e..229219e 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/dataobject/logger/InfApiAccessLogDO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/logger/InfApiAccessLogDO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.dal.dataobject.logger; +package cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.pojo.CommonResult; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/dataobject/logger/InfApiErrorLogDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/logger/InfApiErrorLogDO.java index 5ac169c..7f19def 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/dataobject/logger/InfApiErrorLogDO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/logger/InfApiErrorLogDO.java @@ -1,9 +1,9 @@ -package cn.iocoder.dashboard.modules.infra.dal.dataobject.logger; +package cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.dashboard.modules.infra.enums.logger.InfApiErrorLogProcessStatusEnum; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.adminserver.modules.infra.enums.logger.InfApiErrorLogProcessStatusEnum; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/mysql/config/InfConfigDAOImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/config/InfConfigDAOImpl.java index d6a5019..a2e7b6f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/mysql/config/InfConfigDAOImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/config/InfConfigDAOImpl.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.dal.mysql.config; +package cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.config; import cn.iocoder.yudao.framework.apollo.internals.ConfigFrameworkDAO; import cn.iocoder.yudao.framework.apollo.internals.dto.ConfigRespDTO; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/mysql/config/InfConfigMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/config/InfConfigMapper.java index ed78df1..546ef84 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/mysql/config/InfConfigMapper.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/config/InfConfigMapper.java @@ -1,11 +1,11 @@ -package cn.iocoder.dashboard.modules.infra.dal.mysql.config; +package cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.config; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigPageReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.config.InfConfigDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config.InfConfigDO; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.ibatis.annotations.Mapper; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/mysql/file/InfFileMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/file/InfFileMapper.java index 392d849..0a487e0 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/mysql/file/InfFileMapper.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/file/InfFileMapper.java @@ -1,10 +1,10 @@ -package cn.iocoder.dashboard.modules.infra.dal.mysql.file; +package cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.file; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.infra.controller.file.vo.InfFilePageReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.file.InfFileDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.file.vo.InfFilePageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.file.InfFileDO; import org.apache.ibatis.annotations.Mapper; @Mapper diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/mysql/job/InfJobLogMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/job/InfJobLogMapper.java index 322713c..4b1b920 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/mysql/job/InfJobLogMapper.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/job/InfJobLogMapper.java @@ -1,11 +1,11 @@ -package cn.iocoder.dashboard.modules.infra.dal.mysql.job; +package cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.job; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.log.InfJobLogExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.log.InfJobLogPageReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log.InfJobLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log.InfJobLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.job.InfJobLogDO; import org.apache.ibatis.annotations.Mapper; import java.util.List; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/mysql/job/InfJobMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/job/InfJobMapper.java index b7a1137..a57ba0f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/mysql/job/InfJobMapper.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/job/InfJobMapper.java @@ -1,11 +1,11 @@ -package cn.iocoder.dashboard.modules.infra.dal.mysql.job; +package cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.job; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobPageReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.job.InfJobDO; import org.apache.ibatis.annotations.Mapper; import java.util.List; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/mysql/logger/InfApiAccessLogMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/logger/InfApiAccessLogMapper.java index 568dffe..85d04a3 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/mysql/logger/InfApiAccessLogMapper.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/logger/InfApiAccessLogMapper.java @@ -1,11 +1,11 @@ -package cn.iocoder.dashboard.modules.infra.dal.mysql.logger; +package cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.logger; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.logger.InfApiAccessLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiAccessLogDO; import org.apache.ibatis.annotations.Mapper; import java.util.List; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/mysql/logger/InfApiErrorLogMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/logger/InfApiErrorLogMapper.java index 29550e6..4e7481d 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/dal/mysql/logger/InfApiErrorLogMapper.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/logger/InfApiErrorLogMapper.java @@ -1,11 +1,11 @@ -package cn.iocoder.dashboard.modules.infra.dal.mysql.logger; +package cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.logger; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogPageReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.logger.InfApiErrorLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiErrorLogDO; import org.apache.ibatis.annotations.Mapper; import java.util.List; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/enums/InfDictTypeConstants.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/enums/InfDictTypeConstants.java index d229ec9..aabbae4 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/enums/InfDictTypeConstants.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/enums/InfDictTypeConstants.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.enums; +package cn.iocoder.yudao.adminserver.modules.infra.enums; /** * Infra 字典类型的枚举类 diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/enums/InfErrorCodeConstants.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/enums/InfErrorCodeConstants.java index aa6b522..b53ff8c 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/enums/InfErrorCodeConstants.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/enums/InfErrorCodeConstants.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.enums; +package cn.iocoder.yudao.adminserver.modules.infra.enums; import cn.iocoder.yudao.framework.common.exception.ErrorCode; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/enums/config/InfConfigTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/enums/config/InfConfigTypeEnum.java index 315da6f..6e9fd4d 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/enums/config/InfConfigTypeEnum.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/enums/config/InfConfigTypeEnum.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.enums.config; +package cn.iocoder.yudao.adminserver.modules.infra.enums.config; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/enums/job/InfJobLogStatusEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/enums/job/InfJobLogStatusEnum.java index fe0339f..e904e67 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/enums/job/InfJobLogStatusEnum.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/enums/job/InfJobLogStatusEnum.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.enums.job; +package cn.iocoder.yudao.adminserver.modules.infra.enums.job; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/enums/job/InfJobStatusEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/enums/job/InfJobStatusEnum.java index 0fb1a39..1a7c984 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/enums/job/InfJobStatusEnum.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/enums/job/InfJobStatusEnum.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.enums.job; +package cn.iocoder.yudao.adminserver.modules.infra.enums.job; import com.google.common.collect.Sets; import lombok.AllArgsConstructor; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/enums/logger/InfApiErrorLogProcessStatusEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/enums/logger/InfApiErrorLogProcessStatusEnum.java index 4525874..106e162 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/enums/logger/InfApiErrorLogProcessStatusEnum.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/enums/logger/InfApiErrorLogProcessStatusEnum.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.enums.logger; +package cn.iocoder.yudao.adminserver.modules.infra.enums.logger; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/framework/file/config/FileConfiguration.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/framework/file/config/FileConfiguration.java index ef3532d..e71377e 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/framework/file/config/FileConfiguration.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/framework/file/config/FileConfiguration.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.framework.file.config; +package cn.iocoder.yudao.adminserver.modules.infra.framework.file.config; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Configuration; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/framework/file/config/FileProperties.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/framework/file/config/FileProperties.java index ad14835..db1a6b7 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/framework/file/config/FileProperties.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/framework/file/config/FileProperties.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.framework.file.config; +package cn.iocoder.yudao.adminserver.modules.infra.framework.file.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/framework/file/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/framework/file/package-info.java index 0816a33..a69b53e 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/framework/file/package-info.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/framework/file/package-info.java @@ -13,4 +13,4 @@ * 综合考虑,暂时使用方案 3 的方式,比较适合这样一个 all in one 的项目。 * 随着文件的量级大了之后,还是推荐采用云服务。 */ -package cn.iocoder.dashboard.modules.infra.framework.file; +package cn.iocoder.yudao.adminserver.modules.infra.framework.file; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/framework/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/framework/package-info.java index 9018262..c04bc96 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/framework/package-info.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/framework/package-info.java @@ -3,4 +3,4 @@ * * @author 芋道源码 */ -package cn.iocoder.dashboard.modules.infra.framework; +package cn.iocoder.yudao.adminserver.modules.infra.framework; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/mq/consumer/config/InfConfigRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/mq/consumer/config/InfConfigRefreshConsumer.java index a47493c..4ab2ba4 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/mq/consumer/config/InfConfigRefreshConsumer.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/mq/consumer/config/InfConfigRefreshConsumer.java @@ -1,8 +1,8 @@ -package cn.iocoder.dashboard.modules.infra.mq.consumer.config; +package cn.iocoder.yudao.adminserver.modules.infra.mq.consumer.config; import cn.iocoder.yudao.framework.apollo.internals.DBConfigRepository; import cn.iocoder.yudao.framework.redis.core.pubsub.AbstractChannelMessageListener; -import cn.iocoder.dashboard.modules.infra.mq.message.config.InfConfigRefreshMessage; +import cn.iocoder.yudao.adminserver.modules.infra.mq.message.config.InfConfigRefreshMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/mq/consumer/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/mq/consumer/package-info.java new file mode 100644 index 0000000..f73455a --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/mq/consumer/package-info.java @@ -0,0 +1 @@ +package cn.iocoder.yudao.adminserver.modules.infra.mq.consumer; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/mq/message/config/InfConfigRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/mq/message/config/InfConfigRefreshMessage.java index 729cbde..a4f6e01 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/mq/message/config/InfConfigRefreshMessage.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/mq/message/config/InfConfigRefreshMessage.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.infra.mq.message.config; +package cn.iocoder.yudao.adminserver.modules.infra.mq.message.config; import cn.iocoder.yudao.framework.redis.core.pubsub.ChannelMessage; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/mq/message/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/mq/message/package-info.java new file mode 100644 index 0000000..9db3856 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/mq/message/package-info.java @@ -0,0 +1 @@ +package cn.iocoder.yudao.adminserver.modules.infra.mq.message; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/mq/producer/config/InfConfigProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/mq/producer/config/InfConfigProducer.java index 6e54b04..44d52e6 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/mq/producer/config/InfConfigProducer.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/mq/producer/config/InfConfigProducer.java @@ -1,7 +1,7 @@ -package cn.iocoder.dashboard.modules.infra.mq.producer.config; +package cn.iocoder.yudao.adminserver.modules.infra.mq.producer.config; import cn.iocoder.yudao.framework.redis.core.util.RedisMessageUtils; -import cn.iocoder.dashboard.modules.infra.mq.message.config.InfConfigRefreshMessage; +import cn.iocoder.yudao.adminserver.modules.infra.mq.message.config.InfConfigRefreshMessage; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/mq/producer/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/mq/producer/package-info.java new file mode 100644 index 0000000..0112c34 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/mq/producer/package-info.java @@ -0,0 +1 @@ +package cn.iocoder.yudao.adminserver.modules.infra.mq.producer; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/package-info.java index 341d2be..b97607f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/package-info.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/package-info.java @@ -4,4 +4,4 @@ * * 缩写:inf */ -package cn.iocoder.dashboard.modules.infra; +package cn.iocoder.yudao.adminserver.modules.infra; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/config/InfConfigService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/InfConfigService.java index 2f23a69..2430c32 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/config/InfConfigService.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/InfConfigService.java @@ -1,11 +1,11 @@ -package cn.iocoder.dashboard.modules.infra.service.config; +package cn.iocoder.yudao.adminserver.modules.infra.service.config; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigCreateReqVO; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigPageReqVO; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigUpdateReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.config.InfConfigDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config.InfConfigDO; import javax.validation.Valid; import java.util.List; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/config/impl/InfConfigServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/impl/InfConfigServiceImpl.java index 13b3315..13bc2aa 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/config/impl/InfConfigServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/impl/InfConfigServiceImpl.java @@ -1,17 +1,17 @@ -package cn.iocoder.dashboard.modules.infra.service.config.impl; +package cn.iocoder.yudao.adminserver.modules.infra.service.config.impl; import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigCreateReqVO; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigPageReqVO; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigUpdateReqVO; -import cn.iocoder.dashboard.modules.infra.convert.config.InfConfigConvert; -import cn.iocoder.dashboard.modules.infra.dal.mysql.config.InfConfigMapper; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.config.InfConfigDO; -import cn.iocoder.dashboard.modules.infra.enums.config.InfConfigTypeEnum; -import cn.iocoder.dashboard.modules.infra.mq.producer.config.InfConfigProducer; -import cn.iocoder.dashboard.modules.infra.service.config.InfConfigService; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.convert.config.InfConfigConvert; +import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.config.InfConfigMapper; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config.InfConfigDO; +import cn.iocoder.yudao.adminserver.modules.infra.enums.config.InfConfigTypeEnum; +import cn.iocoder.yudao.adminserver.modules.infra.mq.producer.config.InfConfigProducer; +import cn.iocoder.yudao.adminserver.modules.infra.service.config.InfConfigService; import com.google.common.annotations.VisibleForTesting; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -21,7 +21,7 @@ import javax.annotation.Resource; import java.util.List; -import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.*; /** * 参数配置 Service 实现类 diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/file/InfFileService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/file/InfFileService.java index 67bfb5a..0a11933 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/file/InfFileService.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/file/InfFileService.java @@ -1,8 +1,8 @@ -package cn.iocoder.dashboard.modules.infra.service.file; +package cn.iocoder.yudao.adminserver.modules.infra.service.file; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.infra.controller.file.vo.InfFilePageReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.file.InfFileDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.file.vo.InfFilePageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.file.InfFileDO; /** * 文件 Service 接口 diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/file/impl/InfFileServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/file/impl/InfFileServiceImpl.java index 9b22733..a574147 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/file/impl/InfFileServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/file/impl/InfFileServiceImpl.java @@ -1,20 +1,20 @@ -package cn.iocoder.dashboard.modules.infra.service.file.impl; +package cn.iocoder.yudao.adminserver.modules.infra.service.file.impl; import cn.hutool.core.io.FileTypeUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.infra.framework.file.config.FileProperties; -import cn.iocoder.dashboard.modules.infra.controller.file.vo.InfFilePageReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.file.InfFileDO; -import cn.iocoder.dashboard.modules.infra.dal.mysql.file.InfFileMapper; -import cn.iocoder.dashboard.modules.infra.service.file.InfFileService; +import cn.iocoder.yudao.adminserver.modules.infra.framework.file.config.FileProperties; +import cn.iocoder.yudao.adminserver.modules.infra.controller.file.vo.InfFilePageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.file.InfFileDO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.file.InfFileMapper; +import cn.iocoder.yudao.adminserver.modules.infra.service.file.InfFileService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.ByteArrayInputStream; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.FILE_NOT_EXISTS; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.FILE_PATH_EXISTS; +import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.FILE_NOT_EXISTS; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.FILE_PATH_EXISTS; /** * 文件 Service 实现类 diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/job/InfJobLogService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/job/InfJobLogService.java index 97fb19a..e4b93d2 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/job/InfJobLogService.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/job/InfJobLogService.java @@ -1,10 +1,10 @@ -package cn.iocoder.dashboard.modules.infra.service.job; +package cn.iocoder.yudao.adminserver.modules.infra.service.job; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.quartz.core.service.JobLogFrameworkService; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.log.InfJobLogExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.log.InfJobLogPageReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log.InfJobLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log.InfJobLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.job.InfJobLogDO; import java.util.Collection; import java.util.List; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/job/InfJobService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/job/InfJobService.java index 45acad3..ba90a3b 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/job/InfJobService.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/job/InfJobService.java @@ -1,11 +1,11 @@ -package cn.iocoder.dashboard.modules.infra.service.job; +package cn.iocoder.yudao.adminserver.modules.infra.service.job; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobCreateReqVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobPageReqVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobUpdateReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.job.InfJobDO; import org.quartz.SchedulerException; import javax.validation.Valid; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/job/impl/InfJobLogServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/job/impl/InfJobLogServiceImpl.java index 1343e9d..e055c61 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/job/impl/InfJobLogServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/job/impl/InfJobLogServiceImpl.java @@ -1,12 +1,12 @@ -package cn.iocoder.dashboard.modules.infra.service.job.impl; +package cn.iocoder.yudao.adminserver.modules.infra.service.job.impl; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.log.InfJobLogExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.log.InfJobLogPageReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobLogDO; -import cn.iocoder.dashboard.modules.infra.dal.mysql.job.InfJobLogMapper; -import cn.iocoder.dashboard.modules.infra.enums.job.InfJobLogStatusEnum; -import cn.iocoder.dashboard.modules.infra.service.job.InfJobLogService; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log.InfJobLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log.InfJobLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.job.InfJobLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.job.InfJobLogMapper; +import cn.iocoder.yudao.adminserver.modules.infra.enums.job.InfJobLogStatusEnum; +import cn.iocoder.yudao.adminserver.modules.infra.service.job.InfJobLogService; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/job/impl/InfJobServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/job/impl/InfJobServiceImpl.java index 055d7ef..3597727 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/job/impl/InfJobServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/job/impl/InfJobServiceImpl.java @@ -1,17 +1,17 @@ -package cn.iocoder.dashboard.modules.infra.service.job.impl; +package cn.iocoder.yudao.adminserver.modules.infra.service.job.impl; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.quartz.core.scheduler.SchedulerManager; import cn.iocoder.yudao.framework.quartz.core.util.CronUtils; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobCreateReqVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobPageReqVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobUpdateReqVO; -import cn.iocoder.dashboard.modules.infra.convert.job.InfJobConvert; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobDO; -import cn.iocoder.dashboard.modules.infra.dal.mysql.job.InfJobMapper; -import cn.iocoder.dashboard.modules.infra.enums.job.InfJobStatusEnum; -import cn.iocoder.dashboard.modules.infra.service.job.InfJobService; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.convert.job.InfJobConvert; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.job.InfJobDO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.job.InfJobMapper; +import cn.iocoder.yudao.adminserver.modules.infra.enums.job.InfJobStatusEnum; +import cn.iocoder.yudao.adminserver.modules.infra.service.job.InfJobService; import org.quartz.SchedulerException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -22,7 +22,7 @@ import java.util.Collection; import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.*; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.containsAny; /** diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/logger/InfApiAccessLogService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiAccessLogService.java index d657ae7..f4eb6bd 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/logger/InfApiAccessLogService.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiAccessLogService.java @@ -1,10 +1,10 @@ -package cn.iocoder.dashboard.modules.infra.service.logger; +package cn.iocoder.yudao.adminserver.modules.infra.service.logger; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.apilog.core.service.ApiAccessLogFrameworkService; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.logger.InfApiAccessLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiAccessLogDO; import java.util.List; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/logger/InfApiErrorLogService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiErrorLogService.java index 2a6278c..f5e41a5 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/logger/InfApiErrorLogService.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiErrorLogService.java @@ -1,10 +1,10 @@ -package cn.iocoder.dashboard.modules.infra.service.logger; +package cn.iocoder.yudao.adminserver.modules.infra.service.logger; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.apilog.core.service.ApiErrorLogFrameworkService; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogPageReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.logger.InfApiErrorLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiErrorLogDO; import java.util.List; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/logger/impl/InfApiAccessLogServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/impl/InfApiAccessLogServiceImpl.java index 35f73b8..8fae484 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/logger/impl/InfApiAccessLogServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/impl/InfApiAccessLogServiceImpl.java @@ -1,13 +1,13 @@ -package cn.iocoder.dashboard.modules.infra.service.logger.impl; +package cn.iocoder.yudao.adminserver.modules.infra.service.logger.impl; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateDTO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO; -import cn.iocoder.dashboard.modules.infra.convert.logger.InfApiAccessLogConvert; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.logger.InfApiAccessLogDO; -import cn.iocoder.dashboard.modules.infra.dal.mysql.logger.InfApiAccessLogMapper; -import cn.iocoder.dashboard.modules.infra.service.logger.InfApiAccessLogService; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.convert.logger.InfApiAccessLogConvert; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiAccessLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.logger.InfApiAccessLogMapper; +import cn.iocoder.yudao.adminserver.modules.infra.service.logger.InfApiAccessLogService; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.AsyncResult; import org.springframework.stereotype.Service; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/logger/impl/InfApiErrorLogServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/impl/InfApiErrorLogServiceImpl.java index 7ce523c..aa0fe1f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/infra/service/logger/impl/InfApiErrorLogServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/impl/InfApiErrorLogServiceImpl.java @@ -1,14 +1,14 @@ -package cn.iocoder.dashboard.modules.infra.service.logger.impl; +package cn.iocoder.yudao.adminserver.modules.infra.service.logger.impl; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateDTO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogPageReqVO; -import cn.iocoder.dashboard.modules.infra.convert.logger.InfApiErrorLogConvert; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.logger.InfApiErrorLogDO; -import cn.iocoder.dashboard.modules.infra.dal.mysql.logger.InfApiErrorLogMapper; -import cn.iocoder.dashboard.modules.infra.enums.logger.InfApiErrorLogProcessStatusEnum; -import cn.iocoder.dashboard.modules.infra.service.logger.InfApiErrorLogService; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.convert.logger.InfApiErrorLogConvert; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiErrorLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.logger.InfApiErrorLogMapper; +import cn.iocoder.yudao.adminserver.modules.infra.enums.logger.InfApiErrorLogProcessStatusEnum; +import cn.iocoder.yudao.adminserver.modules.infra.service.logger.InfApiErrorLogService; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.AsyncResult; import org.springframework.stereotype.Service; @@ -20,8 +20,8 @@ import java.util.List; import java.util.concurrent.Future; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.API_ERROR_LOG_NOT_FOUND; -import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.API_ERROR_LOG_PROCESSED; +import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.API_ERROR_LOG_NOT_FOUND; +import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.API_ERROR_LOG_PROCESSED; /** * API 错误日志 Service 实现类 diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/SysAuthController.http b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.http index 125a368..125a368 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/SysAuthController.http +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.http diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/SysAuthController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java index 8aee702..059e37c 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/SysAuthController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java @@ -1,21 +1,21 @@ -package cn.iocoder.dashboard.modules.system.controller.auth; +package cn.iocoder.yudao.adminserver.modules.system.controller.auth; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthLoginReqVO; -import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthLoginRespVO; -import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthMenuRespVO; -import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthPermissionInfoRespVO; -import cn.iocoder.dashboard.modules.system.convert.auth.SysAuthConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysMenuDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.dashboard.modules.system.enums.permission.MenuTypeEnum; -import cn.iocoder.dashboard.modules.system.service.auth.SysAuthService; -import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; -import cn.iocoder.dashboard.modules.system.service.permission.SysRoleService; -import cn.iocoder.dashboard.modules.system.service.user.SysUserService; +import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthLoginReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthLoginRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthMenuRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthPermissionInfoRespVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.auth.SysAuthConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuTypeEnum; +import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysAuthService; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService; +import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; import cn.iocoder.yudao.framework.common.util.collection.SetUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/SysUserSessionController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysUserSessionController.java index 7439bec..253b251 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/SysUserSessionController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysUserSessionController.java @@ -1,16 +1,16 @@ -package cn.iocoder.dashboard.modules.system.controller.auth; +package cn.iocoder.yudao.adminserver.modules.system.controller.auth; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.auth.vo.session.SysUserSessionPageItemRespVO; -import cn.iocoder.dashboard.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO; -import cn.iocoder.dashboard.modules.system.convert.auth.SysUserSessionConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.auth.SysUserSessionDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.dashboard.modules.system.service.auth.SysUserSessionService; -import cn.iocoder.dashboard.modules.system.service.dept.SysDeptService; -import cn.iocoder.dashboard.modules.system.service.user.SysUserService; +import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageItemRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.auth.SysUserSessionConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.auth.SysUserSessionDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysUserSessionService; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService; +import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/auth/SysAuthLoginReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthLoginReqVO.java index e3842ac..43df52c 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/auth/SysAuthLoginReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthLoginReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.auth.vo.auth; +package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/auth/SysAuthLoginRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthLoginRespVO.java index 47e0872..c09bd03 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/auth/SysAuthLoginRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthLoginRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.auth.vo.auth; +package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/auth/SysAuthMenuRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthMenuRespVO.java index 28eadb4..3329c80 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/auth/SysAuthMenuRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthMenuRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.auth.vo.auth; +package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/auth/SysAuthPermissionInfoRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthPermissionInfoRespVO.java index c4cfa8b..102c3c9 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/auth/SysAuthPermissionInfoRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/auth/SysAuthPermissionInfoRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.auth.vo.auth; +package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/session/SysUserSessionPageItemRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/session/SysUserSessionPageItemRespVO.java index 7ff9e86..1cb9a5a 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/session/SysUserSessionPageItemRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/session/SysUserSessionPageItemRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.auth.vo.session; +package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/session/SysUserSessionPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/session/SysUserSessionPageReqVO.java index 66cc6c4..fb8f4f2 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/auth/vo/session/SysUserSessionPageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/vo/session/SysUserSessionPageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.auth.vo.session; +package cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/common/SysCaptchaController.http b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/common/SysCaptchaController.http index 0b1cf85..0b1cf85 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/common/SysCaptchaController.http +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/common/SysCaptchaController.http diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/common/SysCaptchaController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/common/SysCaptchaController.java index 95f27c7..94e3c9d 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/common/SysCaptchaController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/common/SysCaptchaController.java @@ -1,8 +1,8 @@ -package cn.iocoder.dashboard.modules.system.controller.common; +package cn.iocoder.yudao.adminserver.modules.system.controller.common; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.dashboard.modules.system.controller.common.vo.SysCaptchaImageRespVO; -import cn.iocoder.dashboard.modules.system.service.common.SysCaptchaService; +import cn.iocoder.yudao.adminserver.modules.system.controller.common.vo.SysCaptchaImageRespVO; +import cn.iocoder.yudao.adminserver.modules.system.service.common.SysCaptchaService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/common/vo/SysCaptchaImageRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/common/vo/SysCaptchaImageRespVO.java index 3af4e41..b3e9f2c 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/common/vo/SysCaptchaImageRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/common/vo/SysCaptchaImageRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.common.vo; +package cn.iocoder.yudao.adminserver.modules.system.controller.common.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/SysDeptController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/SysDeptController.java index 786997f..1bae57f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/SysDeptController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/SysDeptController.java @@ -1,11 +1,11 @@ -package cn.iocoder.dashboard.modules.system.controller.dept; +package cn.iocoder.yudao.adminserver.modules.system.controller.dept; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.dept.*; -import cn.iocoder.dashboard.modules.system.convert.dept.SysDeptConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; -import cn.iocoder.dashboard.modules.system.service.dept.SysDeptService; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.*; +import cn.iocoder.yudao.adminserver.modules.system.convert.dept.SysDeptConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/SysPostController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/SysPostController.java index c9b621d..c27dc1c 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/SysPostController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/SysPostController.java @@ -1,14 +1,14 @@ -package cn.iocoder.dashboard.modules.system.controller.dept; +package cn.iocoder.yudao.adminserver.modules.system.controller.dept; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.*; -import cn.iocoder.dashboard.modules.system.convert.dept.SysPostConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysPostDO; -import cn.iocoder.dashboard.modules.system.service.dept.SysPostService; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.*; +import cn.iocoder.yudao.adminserver.modules.system.convert.dept.SysPostConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/dept/SysDeptBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptBaseVO.java index 9c54c16..f3e667a 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/dept/SysDeptBaseVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptBaseVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dept.vo.dept; +package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/dept/SysDeptCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptCreateReqVO.java index 6ea550c..c5c5aac 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/dept/SysDeptCreateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptCreateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dept.vo.dept; +package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept; import io.swagger.annotations.ApiModel; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/dept/SysDeptListReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptListReqVO.java index c4d1b17..b47bc53 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/dept/SysDeptListReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptListReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dept.vo.dept; +package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/dept/SysDeptRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptRespVO.java index f5fa1b2..325cce6 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/dept/SysDeptRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dept.vo.dept; +package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/dept/SysDeptSimpleRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptSimpleRespVO.java index fb6f47f..bf9c8bd 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/dept/SysDeptSimpleRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptSimpleRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dept.vo.dept; +package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/dept/SysDeptUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptUpdateReqVO.java index e64b421..5838d1d 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/dept/SysDeptUpdateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/dept/SysDeptUpdateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dept.vo.dept; +package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostBaseVO.java index 2b90c10..c6ed5c8 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostBaseVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostBaseVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dept.vo.post; +package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostCreateReqVO.java index a4bd900..72be88d 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostCreateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostCreateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dept.vo.post; +package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post; import io.swagger.annotations.ApiModel; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostExcelVO.java index b77b1d2..acc23c3 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostExcelVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostExcelVO.java @@ -1,8 +1,8 @@ -package cn.iocoder.dashboard.modules.system.controller.dept.vo.post; +package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; +import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostExportReqVO.java index 8e66825..4656392 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostExportReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostExportReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dept.vo.post; +package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostListReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostListReqVO.java index 223fa20..0e700a9 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostListReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostListReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dept.vo.post; +package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostPageReqVO.java index b2d7ea6..432e160 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostPageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostPageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dept.vo.post; +package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostRespVO.java index fb18068..cfd42a2 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dept.vo.post; +package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostSimpleRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostSimpleRespVO.java index 312d1b9..244667f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostSimpleRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostSimpleRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dept.vo.post; +package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostUpdateReqVO.java index 50562ba..cc95c9c 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dept/vo/post/SysPostUpdateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dept/vo/post/SysPostUpdateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dept.vo.post; +package cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/SysDictDataController.http b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictDataController.http index f7890dc..f7890dc 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/SysDictDataController.http +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictDataController.http diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/SysDictDataController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictDataController.java index b09cf2a..6f45fc3 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/SysDictDataController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictDataController.java @@ -1,13 +1,13 @@ -package cn.iocoder.dashboard.modules.system.controller.dict; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.*; -import cn.iocoder.dashboard.modules.system.convert.dict.SysDictDataConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictDataDO; -import cn.iocoder.dashboard.modules.system.service.dict.SysDictDataService; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.*; +import cn.iocoder.yudao.adminserver.modules.system.convert.dict.SysDictDataConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictDataDO; +import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictDataService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/SysDictTypeController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictTypeController.java index 8aedd65..9ab3661 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/SysDictTypeController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictTypeController.java @@ -1,13 +1,13 @@ -package cn.iocoder.dashboard.modules.system.controller.dict; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.*; -import cn.iocoder.dashboard.modules.system.convert.dict.SysDictTypeConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictTypeDO; -import cn.iocoder.dashboard.modules.system.service.dict.SysDictTypeService; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.*; +import cn.iocoder.yudao.adminserver.modules.system.convert.dict.SysDictTypeConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO; +import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictTypeService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataBaseVO.java index b034d95..adb4bb2 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataBaseVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataBaseVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dict.vo.data; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataCreateReqVO.java index abae7dc..5c96499 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataCreateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataCreateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dict.vo.data; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data; import io.swagger.annotations.ApiModel; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataExcelVO.java index ef1d62a..23174a0 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataExcelVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataExcelVO.java @@ -1,8 +1,8 @@ -package cn.iocoder.dashboard.modules.system.controller.dict.vo.data; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; +import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataExportReqVO.java index f05c124..43e8884 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataExportReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataExportReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dict.vo.data; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataPageReqVO.java index bebcc32..0cd2a48 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataPageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataPageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dict.vo.data; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataRespVO.java index cb2595c..fa6f77f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dict.vo.data; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataSimpleRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataSimpleRespVO.java index a9e5aae..e4a09e6 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataSimpleRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataSimpleRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dict.vo.data; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataUpdateReqVO.java index 1d79f19..ccbd455 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/data/SysDictDataUpdateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/data/SysDictDataUpdateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dict.vo.data; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypeBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeBaseVO.java index 306ede7..c4458cd 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypeBaseVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeBaseVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dict.vo.type; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypeCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeCreateReqVO.java index 747ad19..6f84ecf 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypeCreateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeCreateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dict.vo.type; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypeExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeExcelVO.java index 391489f..fbb4da3 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypeExcelVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeExcelVO.java @@ -1,8 +1,8 @@ -package cn.iocoder.dashboard.modules.system.controller.dict.vo.type; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; +import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypeExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeExportReqVO.java index 5a3033c..cfe54e5 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypeExportReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeExportReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dict.vo.type; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypePageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypePageReqVO.java index 57b59c5..434ca27 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypePageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypePageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dict.vo.type; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypeRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeRespVO.java index d9a5f80..fd216bc 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypeRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dict.vo.type; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypeSimpleRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeSimpleRespVO.java index 382544b..7d0ef04 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypeSimpleRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeSimpleRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dict.vo.type; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypeUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeUpdateReqVO.java index d779952..9b887bd 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/dict/vo/type/SysDictTypeUpdateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/vo/type/SysDictTypeUpdateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.dict.vo.type; +package cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/SysErrorCodeController.http b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/SysErrorCodeController.http index 76226d1..76226d1 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/SysErrorCodeController.http +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/SysErrorCodeController.http diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/SysErrorCodeController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/SysErrorCodeController.java index 711c4ff..04c88eb 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/SysErrorCodeController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/SysErrorCodeController.java @@ -1,13 +1,13 @@ -package cn.iocoder.dashboard.modules.system.controller.errorcode; +package cn.iocoder.yudao.adminserver.modules.system.controller.errorcode; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.dashboard.modules.system.convert.errorcode.SysErrorCodeConvert; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.*; -import cn.iocoder.dashboard.modules.system.dal.dataobject.errorcode.SysErrorCodeDO; -import cn.iocoder.dashboard.modules.system.service.errorcode.SysErrorCodeService; +import cn.iocoder.yudao.adminserver.modules.system.convert.errorcode.SysErrorCodeConvert; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.*; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.errorcode.SysErrorCodeDO; +import cn.iocoder.yudao.adminserver.modules.system.service.errorcode.SysErrorCodeService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/vo/SysErrorCodeBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeBaseVO.java index 235ba88..118c38b 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/vo/SysErrorCodeBaseVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeBaseVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.errorcode.vo; +package cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/vo/SysErrorCodeCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeCreateReqVO.java index 7daedf7..15190ab 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/vo/SysErrorCodeCreateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeCreateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.errorcode.vo; +package cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo; import io.swagger.annotations.ApiModel; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/vo/SysErrorCodeExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeExcelVO.java index 8ba6d8d..8e20b6e 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/vo/SysErrorCodeExcelVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeExcelVO.java @@ -1,8 +1,8 @@ -package cn.iocoder.dashboard.modules.system.controller.errorcode.vo; +package cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.dashboard.modules.infra.enums.InfDictTypeConstants; +import cn.iocoder.yudao.adminserver.modules.infra.enums.InfDictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/vo/SysErrorCodeExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeExportReqVO.java index 6c8aa09..6047679 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/vo/SysErrorCodeExportReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeExportReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.errorcode.vo; +package cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/vo/SysErrorCodePageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodePageReqVO.java index 1bdbf98..baf781a 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/vo/SysErrorCodePageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodePageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.errorcode.vo; +package cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/vo/SysErrorCodeRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeRespVO.java index ef0e804..69798f3 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/vo/SysErrorCodeRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.errorcode.vo; +package cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/vo/SysErrorCodeUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeUpdateReqVO.java index 1659b47..11f124a 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/errorcode/vo/SysErrorCodeUpdateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/errorcode/vo/SysErrorCodeUpdateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.errorcode.vo; +package cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/SysLoginLogController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/SysLoginLogController.java index 8109460..7af2caf 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/SysLoginLogController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/SysLoginLogController.java @@ -1,16 +1,16 @@ -package cn.iocoder.dashboard.modules.system.controller.logger; +package cn.iocoder.yudao.adminserver.modules.system.controller.logger; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogExcelVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogRespVO; -import cn.iocoder.dashboard.modules.system.convert.logger.SysLoginLogConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysLoginLogDO; -import cn.iocoder.dashboard.modules.system.service.logger.SysLoginLogService; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExcelVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogRespVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.logger.SysLoginLogConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysLoginLogDO; +import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysLoginLogService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.security.access.prepost.PreAuthorize; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/SysOperateLogController.http b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/SysOperateLogController.http index 3b88719..3b88719 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/SysOperateLogController.http +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/SysOperateLogController.http diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/SysOperateLogController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/SysOperateLogController.java index bb2fa41..042bf93 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/SysOperateLogController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/SysOperateLogController.java @@ -1,18 +1,18 @@ -package cn.iocoder.dashboard.modules.system.controller.logger; +package cn.iocoder.yudao.adminserver.modules.system.controller.logger; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog.SysOperateLogExcelVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog.SysOperateLogRespVO; -import cn.iocoder.dashboard.modules.system.convert.logger.SysOperateLogConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysOperateLogDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.dashboard.modules.system.service.logger.SysOperateLogService; -import cn.iocoder.dashboard.modules.system.service.user.SysUserService; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExcelVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogRespVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.logger.SysOperateLogConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysOperateLogService; +import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import io.swagger.annotations.Api; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/loginlog/SysLoginLogBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogBaseVO.java index c5dd34e..080f8f9 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/loginlog/SysLoginLogBaseVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogBaseVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog; +package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/loginlog/SysLoginLogCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogCreateReqVO.java index 78a0c45..6f91554 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/loginlog/SysLoginLogCreateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogCreateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog; +package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog; import io.swagger.annotations.ApiModel; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/loginlog/SysLoginLogExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogExcelVO.java index bf23e3a..8857a6b 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/loginlog/SysLoginLogExcelVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogExcelVO.java @@ -1,8 +1,8 @@ -package cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog; +package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; +import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/loginlog/SysLoginLogExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogExportReqVO.java index 9390d41..1e706dd 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/loginlog/SysLoginLogExportReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogExportReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog; +package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/loginlog/SysLoginLogPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogPageReqVO.java index 4becbc9..5b9389b 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/loginlog/SysLoginLogPageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogPageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog; +package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/loginlog/SysLoginLogRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogRespVO.java index f9e2664..6d46f8c 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/loginlog/SysLoginLogRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog; +package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/operatelog/SysOperateLogBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogBaseVO.java index bcdce0f..d29a96c 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/operatelog/SysOperateLogBaseVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogBaseVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog; +package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -57,7 +57,7 @@ public class SysOperateLogBaseVO { @NotEmpty(message = "浏览器 UserAgent 不能为空") private String userAgent; - @ApiModelProperty(value = "Java 方法名", required = true, example = "cn.iocoder.dashboard.UserController.save(...)") + @ApiModelProperty(value = "Java 方法名", required = true, example = "cn.iocoder.yudao.adminserver.UserController.save(...)") @NotEmpty(message = "Java 方法名不能为空") private String javaMethod; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/operatelog/SysOperateLogExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogExcelVO.java index d24704f..71959d8 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/operatelog/SysOperateLogExcelVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogExcelVO.java @@ -1,8 +1,8 @@ -package cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog; +package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; +import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/operatelog/SysOperateLogExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogExportReqVO.java index ae03dee..2c500e1 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/operatelog/SysOperateLogExportReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogExportReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog; +package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/operatelog/SysOperateLogPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogPageReqVO.java index bd127c3..2a0378a 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/operatelog/SysOperateLogPageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogPageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog; +package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/operatelog/SysOperateLogRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogRespVO.java index 2ebdfef..1ac82a9 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/logger/vo/operatelog/SysOperateLogRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/operatelog/SysOperateLogRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog; +package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/SysNoticeController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/SysNoticeController.java index 59366b9..f004c95 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/SysNoticeController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/SysNoticeController.java @@ -1,13 +1,13 @@ -package cn.iocoder.dashboard.modules.system.controller.notice; +package cn.iocoder.yudao.adminserver.modules.system.controller.notice; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticePageReqVO; -import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeRespVO; -import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeUpdateReqVO; -import cn.iocoder.dashboard.modules.system.convert.notice.SysNoticeConvert; -import cn.iocoder.dashboard.modules.system.service.notice.SysNoticeService; +import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.notice.SysNoticeConvert; +import cn.iocoder.yudao.adminserver.modules.system.service.notice.SysNoticeService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/vo/SysNoticeBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticeBaseVO.java index 5fc4f90..9bd228e 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/vo/SysNoticeBaseVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticeBaseVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.notice.vo; +package cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/vo/SysNoticeCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticeCreateReqVO.java index 1a18114..cf86f21 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/vo/SysNoticeCreateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticeCreateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.notice.vo; +package cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo; import io.swagger.annotations.ApiModel; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/vo/SysNoticePageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticePageReqVO.java index 871f388..b347ab9 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/vo/SysNoticePageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticePageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.notice.vo; +package cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/vo/SysNoticeRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticeRespVO.java index afca87f..8145e85 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/vo/SysNoticeRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticeRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.notice.vo; +package cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/vo/SysNoticeUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticeUpdateReqVO.java index fffe4b8..2c02d5a 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/notice/vo/SysNoticeUpdateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/vo/SysNoticeUpdateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.notice.vo; +package cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/SysMenuController.http b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysMenuController.http index c073f7b..c073f7b 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/SysMenuController.http +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysMenuController.http diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/SysMenuController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysMenuController.java index 3a9d79e..ddf388d 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/SysMenuController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysMenuController.java @@ -1,11 +1,11 @@ -package cn.iocoder.dashboard.modules.system.controller.permission; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.menu.*; -import cn.iocoder.dashboard.modules.system.convert.permission.SysMenuConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysMenuDO; -import cn.iocoder.dashboard.modules.system.service.permission.SysMenuService; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.*; +import cn.iocoder.yudao.adminserver.modules.system.convert.permission.SysMenuConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysMenuService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/SysPermissionController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysPermissionController.java index f4ca7eb..ea04c89 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/SysPermissionController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysPermissionController.java @@ -1,10 +1,10 @@ -package cn.iocoder.dashboard.modules.system.controller.permission; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.permission.SysPermissionAssignRoleDataScopeReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.permission.SysPermissionAssignRoleMenuReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.permission.SysPermissionAssignUserRoleReqVO; -import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.permission.SysPermissionAssignRoleDataScopeReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.permission.SysPermissionAssignRoleMenuReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.permission.SysPermissionAssignUserRoleReqVO; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/SysRoleController.http b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysRoleController.http index 4e150ac..4e150ac 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/SysRoleController.http +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysRoleController.http diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/SysRoleController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysRoleController.java index bd4aa70..0fb7d45 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/SysRoleController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/SysRoleController.java @@ -1,14 +1,14 @@ -package cn.iocoder.dashboard.modules.system.controller.permission; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.*; -import cn.iocoder.dashboard.modules.system.convert.permission.SysRoleConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleDO; -import cn.iocoder.dashboard.modules.system.service.permission.SysRoleService; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.*; +import cn.iocoder.yudao.adminserver.modules.system.convert.permission.SysRoleConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/menu/SysMenuBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuBaseVO.java index c69cec5..66b62d0 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/menu/SysMenuBaseVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuBaseVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.menu; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/menu/SysMenuCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuCreateReqVO.java index 8fba89a..e50c73f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/menu/SysMenuCreateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuCreateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.menu; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu; import io.swagger.annotations.ApiModel; import lombok.*; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/menu/SysMenuListReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuListReqVO.java index 3990a9c..5600a13 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/menu/SysMenuListReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuListReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.menu; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/menu/SysMenuRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuRespVO.java index ef1e7ac..6175a8c 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/menu/SysMenuRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.menu; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/menu/SysMenuSimpleRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuSimpleRespVO.java index 121afe5..689d705 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/menu/SysMenuSimpleRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuSimpleRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.menu; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/menu/SysMenuUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuUpdateReqVO.java index 44f181e..736d580 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/menu/SysMenuUpdateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/menu/SysMenuUpdateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.menu; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/permission/SysPermissionAssignRoleDataScopeReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/permission/SysPermissionAssignRoleDataScopeReqVO.java index c713043..8050e81 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/permission/SysPermissionAssignRoleDataScopeReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/permission/SysPermissionAssignRoleDataScopeReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.permission; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.permission; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/permission/SysPermissionAssignRoleMenuReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/permission/SysPermissionAssignRoleMenuReqVO.java index 4d50572..47ffae9 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/permission/SysPermissionAssignRoleMenuReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/permission/SysPermissionAssignRoleMenuReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.permission; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.permission; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/permission/SysPermissionAssignUserRoleReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/permission/SysPermissionAssignUserRoleReqVO.java index 259336b..1a3e034 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/permission/SysPermissionAssignUserRoleReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/permission/SysPermissionAssignUserRoleReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.permission; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.permission; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleBaseVO.java index ade6991..a07e20c 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleBaseVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleBaseVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.role; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleCreateReqVO.java index 870dcce..f16c3ad 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleCreateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleCreateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.role; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role; import io.swagger.annotations.ApiModel; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleExcelVO.java index 8ef2a0b..c8c1305 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleExcelVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleExcelVO.java @@ -1,8 +1,8 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.role; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; -import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; +import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleExportReqVO.java index a08c6a6..656f136 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleExportReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleExportReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.role; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRolePageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRolePageReqVO.java index e5a6993..6983176 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRolePageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRolePageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.role; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleRespVO.java index bb5e3cc..f3a565d 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.role; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleSimpleRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleSimpleRespVO.java index 6ac990c..c1b973f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleSimpleRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleSimpleRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.role; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleUpdateReqVO.java index d35f930..dcf994f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleUpdateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleUpdateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.role; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleUpdateStatusReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleUpdateStatusReqVO.java index 8783015..1741881 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/permission/vo/role/SysRoleUpdateStatusReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/permission/vo/role/SysRoleUpdateStatusReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.permission.vo.role; +package cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/SmsCallbackController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SmsCallbackController.java index 3562621..ec3287f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/SmsCallbackController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SmsCallbackController.java @@ -1,11 +1,11 @@ -package cn.iocoder.dashboard.modules.system.controller.sms; +package cn.iocoder.yudao.adminserver.modules.system.controller.sms; import cn.hutool.core.util.URLUtil; import cn.hutool.extra.servlet.ServletUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.framework.sms.core.enums.SmsChannelEnum; -import cn.iocoder.dashboard.modules.system.service.sms.SysSmsService; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/SysSmsChannelController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsChannelController.java index e87da99..5a05a2e 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/SysSmsChannelController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsChannelController.java @@ -1,11 +1,11 @@ -package cn.iocoder.dashboard.modules.system.controller.sms; +package cn.iocoder.yudao.adminserver.modules.system.controller.sms; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.*; -import cn.iocoder.dashboard.modules.system.convert.sms.SysSmsChannelConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO; -import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.*; +import cn.iocoder.yudao.adminserver.modules.system.convert.sms.SysSmsChannelConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsChannelDO; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsChannelService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/SysSmsLogController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsLogController.java index f576396..a39f0a7 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/SysSmsLogController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsLogController.java @@ -1,16 +1,16 @@ -package cn.iocoder.dashboard.modules.system.controller.sms; +package cn.iocoder.yudao.adminserver.modules.system.controller.sms; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogExcelVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogRespVO; -import cn.iocoder.dashboard.modules.system.convert.sms.SysSmsLogConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsLogDO; -import cn.iocoder.dashboard.modules.system.service.sms.SysSmsLogService; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExcelVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogRespVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.sms.SysSmsLogConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsLogDO; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsLogService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.security.access.prepost.PreAuthorize; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/SysSmsTemplateController.http b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsTemplateController.http index d5441d0..d5441d0 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/SysSmsTemplateController.http +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsTemplateController.http diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/SysSmsTemplateController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsTemplateController.java index e53b747..b57beb2 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/SysSmsTemplateController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsTemplateController.java @@ -1,14 +1,14 @@ -package cn.iocoder.dashboard.modules.system.controller.sms; +package cn.iocoder.yudao.adminserver.modules.system.controller.sms; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.*; -import cn.iocoder.dashboard.modules.system.convert.sms.SysSmsTemplateConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; -import cn.iocoder.dashboard.modules.system.service.sms.SysSmsService; -import cn.iocoder.dashboard.modules.system.service.sms.SysSmsTemplateService; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.*; +import cn.iocoder.yudao.adminserver.modules.system.convert.sms.SysSmsTemplateConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsService; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsTemplateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/channel/SysSmsChannelBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelBaseVO.java index 9959b8a..fd475bd 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/channel/SysSmsChannelBaseVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelBaseVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.channel; +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/channel/SysSmsChannelCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelCreateReqVO.java index a21cbb7..e9466a7 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/channel/SysSmsChannelCreateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelCreateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.channel; +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/channel/SysSmsChannelPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelPageReqVO.java index 161d853..e30bc3d 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/channel/SysSmsChannelPageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelPageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.channel; +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/channel/SysSmsChannelRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelRespVO.java index 2077068..8e7d111 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/channel/SysSmsChannelRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.channel; +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/channel/SysSmsChannelSimpleRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelSimpleRespVO.java index b7d8416..451a943 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/channel/SysSmsChannelSimpleRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelSimpleRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.channel; +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/channel/SysSmsChannelUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelUpdateReqVO.java index 66ab794..816e5c2 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/channel/SysSmsChannelUpdateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/channel/SysSmsChannelUpdateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.channel; +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/log/SysSmsLogExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/log/SysSmsLogExcelVO.java index 3df7b8e..8376939 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/log/SysSmsLogExcelVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/log/SysSmsLogExcelVO.java @@ -1,9 +1,9 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.log; +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; import cn.iocoder.yudao.framework.excel.core.convert.JsonConvert; -import cn.iocoder.dashboard.modules.system.enums.SysDictTypeConstants; +import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/log/SysSmsLogExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/log/SysSmsLogExportReqVO.java index 15f1dd6..94be2d8 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/log/SysSmsLogExportReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/log/SysSmsLogExportReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.log; +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/log/SysSmsLogPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/log/SysSmsLogPageReqVO.java index ec080bc..1ea8a1f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/log/SysSmsLogPageReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/log/SysSmsLogPageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.log; +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/log/SysSmsLogRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/log/SysSmsLogRespVO.java index 423a579..10ff01a 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/log/SysSmsLogRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/log/SysSmsLogRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.log; +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateBaseVO.java new file mode 100644 index 0000000..cc58787 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateBaseVO.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** +* 短信模板 Base VO,提供给添加、修改、详细的子 VO 使用 +* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 +*/ +@Data +public class SysSmsTemplateBaseVO { + + @ApiModelProperty(value = "短信类型", required = true, example = "1", notes = "参见 SysSmsTemplateTypeEnum 枚举类") + @NotNull(message = "短信类型不能为空") + private Integer type; + + @ApiModelProperty(value = "开启状态", required = true, example = "1", notes = "参见 CommonStatusEnum 枚举类") + @NotNull(message = "开启状态不能为空") + private Integer status; + + @ApiModelProperty(value = "模板编码", required = true, example = "test_01") + @NotNull(message = "模板编码不能为空") + private String code; + + @ApiModelProperty(value = "模板名称", required = true, example = "yudao") + @NotNull(message = "模板名称不能为空") + private String name; + + @ApiModelProperty(value = "模板内容", required = true, example = "你好,{name}。你长的太{like}啦!") + @NotNull(message = "模板内容不能为空") + private String content; + + @ApiModelProperty(value = "备注", example = "哈哈哈") + private String remark; + + @ApiModelProperty(value = "短信 API 的模板编号", required = true, example = "4383920") + @NotNull(message = "短信 API 的模板编号不能为空") + private String apiTemplateId; + + @ApiModelProperty(value = "短信渠道编号", required = true, example = "10") + @NotNull(message = "短信渠道编号不能为空") + private Long channelId; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateCreateReqVO.java index 8f84755..6d59315 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateCreateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateCreateReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.template; +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template; import io.swagger.annotations.ApiModel; import lombok.Data; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateExcelVO.java new file mode 100644 index 0000000..a321541 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateExcelVO.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template; + +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; +import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * 短信模板 Excel VO + * + * @author 芋道源码 + */ +@Data +public class SysSmsTemplateExcelVO { + + @ExcelProperty("编号") + private Long id; + + @ExcelProperty(value = "短信签名", converter = DictConvert.class) + @DictFormat(SysDictTypeConstants.SMS_TEMPLATE_TYPE) + private Integer type; + + @ExcelProperty(value = "开启状态", converter = DictConvert.class) + @DictFormat(SysDictTypeConstants.COMMON_STATUS) + private Integer status; + + @ExcelProperty("模板编码") + private String code; + + @ExcelProperty("模板名称") + private String name; + + @ExcelProperty("模板内容") + private String content; + + @ExcelProperty("备注") + private String remark; + + @ExcelProperty("短信 API 的模板编号") + private String apiTemplateId; + + @ExcelProperty("短信渠道编号") + private Long channelId; + + @ExcelProperty(value = "短信渠道编码", converter = DictConvert.class) + @DictFormat(SysDictTypeConstants.SMS_CHANNEL_CODE) + private String channelCode; + + @ExcelProperty("创建时间") + private Date createTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateExportReqVO.java new file mode 100644 index 0000000..66efb4d --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateExportReqVO.java @@ -0,0 +1,42 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@ApiModel(value = "短信模板 Excel 导出 Request VO", description = "参数和 SysSmsTemplatePageReqVO 是一致的") +@Data +public class SysSmsTemplateExportReqVO { + + @ApiModelProperty(value = "短信签名", example = "1") + private Integer type; + + @ApiModelProperty(value = "开启状态", example = "1") + private Integer status; + + @ApiModelProperty(value = "模板编码", example = "test_01", notes = "模糊匹配") + private String code; + + @ApiModelProperty(value = "模板内容", example = "你好,{name}。你长的太{like}啦!", notes = "模糊匹配") + private String content; + + @ApiModelProperty(value = "短信 API 的模板编号", example = "4383920", notes = "模糊匹配") + private String apiTemplateId; + + @ApiModelProperty(value = "短信渠道编号", example = "10") + private Long channelId; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始创建时间") + private Date beginCreateTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束创建时间") + private Date endCreateTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplatePageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplatePageReqVO.java new file mode 100644 index 0000000..fc8bd80 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplatePageReqVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@ApiModel("短信模板分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SysSmsTemplatePageReqVO extends PageParam { + + @ApiModelProperty(value = "短信签名", example = "1") + private Integer type; + + @ApiModelProperty(value = "开启状态", example = "1") + private Integer status; + + @ApiModelProperty(value = "模板编码", example = "test_01", notes = "模糊匹配") + private String code; + + @ApiModelProperty(value = "模板内容", example = "你好,{name}。你长的太{like}啦!", notes = "模糊匹配") + private String content; + + @ApiModelProperty(value = "短信 API 的模板编号", example = "4383920", notes = "模糊匹配") + private String apiTemplateId; + + @ApiModelProperty(value = "短信渠道编号", example = "10") + private Long channelId; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始创建时间") + private Date beginCreateTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束创建时间") + private Date endCreateTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateRespVO.java new file mode 100644 index 0000000..c26d380 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateRespVO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.Date; +import java.util.List; + +@ApiModel("短信模板 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SysSmsTemplateRespVO extends SysSmsTemplateBaseVO { + + @ApiModelProperty(value = "编号", required = true, example = "1024") + private Long id; + + @ApiModelProperty(value = "短信渠道编码", required = true, example = "ALIYUN") + private String channelCode; + + @ApiModelProperty(value = "参数数组", example = "name,code") + private List params; + + @ApiModelProperty(value = "创建时间", required = true) + private Date createTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateSendReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateSendReqVO.java new file mode 100644 index 0000000..34a773e --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateSendReqVO.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.Map; + +@ApiModel("短信模板的发送 Request VO") +@Data +public class SysSmsTemplateSendReqVO { + + @ApiModelProperty(value = "手机号", required = true, example = "15601691300") + @NotNull(message = "手机号不能为空") + private String mobile; + + @ApiModelProperty(value = "模板编码", required = true, example = "test_01") + @NotNull(message = "模板编码不能为空") + private String templateCode; + + @ApiModelProperty(value = "模板参数") + private Map templateParams; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateUpdateReqVO.java new file mode 100644 index 0000000..223aa0c --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/vo/template/SysSmsTemplateUpdateReqVO.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.constraints.NotNull; + +@ApiModel("短信模板更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SysSmsTemplateUpdateReqVO extends SysSmsTemplateBaseVO { + + @ApiModelProperty(value = "编号", required = true, example = "1024") + @NotNull(message = "编号不能为空") + private Long id; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/SysUserController.http b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserController.http index 8728375..8728375 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/SysUserController.http +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserController.http diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/SysUserController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserController.java index 07ea900..df54e79 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/SysUserController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserController.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.controller.user; +package cn.iocoder.yudao.adminserver.modules.system.controller.user; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; @@ -6,13 +6,13 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.*; -import cn.iocoder.dashboard.modules.system.convert.user.SysUserConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.dashboard.modules.system.enums.common.SysSexEnum; -import cn.iocoder.dashboard.modules.system.service.dept.SysDeptService; -import cn.iocoder.dashboard.modules.system.service.user.SysUserService; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.*; +import cn.iocoder.yudao.adminserver.modules.system.convert.user.SysUserConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.adminserver.modules.system.enums.common.SysSexEnum; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService; +import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import io.swagger.annotations.Api; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/SysUserProfileController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.java index 60e51ee..8fb29bb 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/user/SysUserProfileController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.java @@ -1,21 +1,21 @@ -package cn.iocoder.dashboard.modules.system.controller.user; +package cn.iocoder.yudao.adminserver.modules.system.controller.user; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileRespVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO; -import cn.iocoder.dashboard.modules.system.convert.user.SysUserConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysPostDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.dashboard.modules.system.service.dept.SysDeptService; -import cn.iocoder.dashboard.modules.system.service.dept.SysPostService; -import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; -import cn.iocoder.dashboard.modules.system.service.permission.SysRoleService; -import cn.iocoder.dashboard.modules.system.service.user.SysUserService; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.user.SysUserConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService; +import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -30,7 +30,7 @@ import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.FILE_IS_EMPTY; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.FILE_IS_EMPTY; /** * @author niudehua diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/profile/SysUserProfileRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/profile/SysUserProfileRespVO.java new file mode 100644 index 0000000..fddc09b --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/profile/SysUserProfileRespVO.java @@ -0,0 +1,88 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile; + +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserBaseVO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; + + +@Data +@EqualsAndHashCode(callSuper = true) +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("用户个人中心信息 Response VO") +public class SysUserProfileRespVO extends SysUserBaseVO { + + @ApiModelProperty(value = "用户编号", required = true, example = "1") + private Long id; + + @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 SysCommonStatusEnum 枚举类") + private Integer status; + + @ApiModelProperty(value = "最后登陆 IP", required = true, example = "192.168.1.1") + private String loginIp; + + @ApiModelProperty(value = "最后登录时间", required = true, example = "时间戳格式") + private Date loginDate; + + @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式") + private Date createTime; + + /** + * 所属角色 + */ + private List roles; + + /** + * 所在部门 + */ + private Dept dept; + + /** + * 所属岗位数组 + */ + private List posts; + + @ApiModel("角色") + @Data + public static class Role { + + @ApiModelProperty(value = "角色编号", required = true, example = "1") + private Long id; + + @ApiModelProperty(value = "角色名称", required = true, example = "普通角色") + private String name; + + } + + @ApiModel("部门") + @Data + public static class Dept { + + @ApiModelProperty(value = "部门编号", required = true, example = "1") + private Long id; + + @ApiModelProperty(value = "部门名称", required = true, example = "研发部") + private String name; + + } + + @ApiModel("岗位") + @Data + public static class Post { + + @ApiModelProperty(value = "岗位编号", required = true, example = "1") + private Long id; + + @ApiModelProperty(value = "岗位名称", required = true, example = "开发") + private String name; + + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/profile/SysUserProfileUpdatePasswordReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/profile/SysUserProfileUpdatePasswordReqVO.java new file mode 100644 index 0000000..340d2e4 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/profile/SysUserProfileUpdatePasswordReqVO.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotEmpty; + +@ApiModel("用户个人中心更新密码 Request VO") +@Data +public class SysUserProfileUpdatePasswordReqVO { + + @ApiModelProperty(value = "旧密码", required = true, example = "123456") + @NotEmpty(message = "旧密码不能为空") + @Length(min = 4, max = 16, message = "密码长度为 4-16 位") + private String oldPassword; + + @ApiModelProperty(value = "新密码", required = true, example = "654321") + @NotEmpty(message = "新密码不能为空") + @Length(min = 4, max = 16, message = "密码长度为 4-16 位") + private String newPassword; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/profile/SysUserProfileUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/profile/SysUserProfileUpdateReqVO.java new file mode 100644 index 0000000..e77bcd7 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/profile/SysUserProfileUpdateReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.Email; +import javax.validation.constraints.Size; + +@ApiModel("用户个人信息更新 Request VO") +@Data +public class SysUserProfileUpdateReqVO { + + @ApiModelProperty(value = "用户昵称", required = true, example = "芋艿") + @Size(max = 30, message = "用户昵称长度不能超过30个字符") + private String nickname; + + @ApiModelProperty(value = "用户邮箱", example = "yudao@iocoder.cn") + @Email(message = "邮箱格式不正确") + @Size(max = 50, message = "邮箱长度不能超过 50 个字符") + private String email; + + @ApiModelProperty(value = "手机号码", example = "15601691300") + @Length(min = 11, max = 11, message = "手机号长度必须 11 位") + private String mobile; + + @ApiModelProperty(value = "用户性别", example = "1", notes = "参见 SysSexEnum 枚举类") + private Integer sex; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserBaseVO.java new file mode 100644 index 0000000..1f41be3 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserBaseVO.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.Email; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import java.util.Set; + +/** + * 用户 Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + */ +@Data +public class SysUserBaseVO { + + @ApiModelProperty(value = "用户账号", required = true, example = "yudao") + @NotBlank(message = "用户账号不能为空") + @Size(min = 4, max = 30, message = "用户账号长度为 4-30 个字符") + private String username; + + @ApiModelProperty(value = "用户昵称", required = true, example = "芋艿") + @Size(max = 30, message = "用户昵称长度不能超过30个字符") + private String nickname; + + @ApiModelProperty(value = "备注", example = "我是一个用户") + private String remark; + + @ApiModelProperty(value = "部门ID", example = "我是一个用户") + private Long deptId; + + @ApiModelProperty(value = "岗位编号数组", example = "1") + private Set postIds; + + @ApiModelProperty(value = "用户邮箱", example = "yudao@iocoder.cn") + @Email(message = "邮箱格式不正确") + @Size(max = 50, message = "邮箱长度不能超过 50 个字符") + private String email; + + @ApiModelProperty(value = "手机号码", example = "15601691300") + @Length(min = 11, max = 11, message = "手机号长度必须 11 位") + private String mobile; + + @ApiModelProperty(value = "用户性别", example = "1", notes = "参见 SysSexEnum 枚举类") + private Integer sex; + + @ApiModelProperty(value = "用户头像", example = "http://www.iocoder.cn/xxx.png") + private String avatar; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserCreateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserCreateReqVO.java new file mode 100644 index 0000000..89f2e17 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserCreateReqVO.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotEmpty; + +@ApiModel("用户创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +public class SysUserCreateReqVO extends SysUserBaseVO { + + @ApiModelProperty(value = "密码", required = true, example = "123456") + @NotEmpty(message = "密码不能为空") + @Length(min = 4, max = 16, message = "密码长度为 4-16 位") + private String password; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserExcelVO.java new file mode 100644 index 0000000..d7013fa --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserExcelVO.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user; + +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; +import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * 用户 Excel 导出 VO + */ +@Data +public class SysUserExcelVO { + + @ExcelProperty("用户编号") + private Long id; + + @ExcelProperty("用户名称") + private String username; + + @ExcelProperty("用户昵称") + private String nickname; + + @ExcelProperty("用户邮箱") + private String email; + + @ExcelProperty("手机号码") + private String mobile; + + @ExcelProperty(value = "用户性别", converter = DictConvert.class) + @DictFormat(SysDictTypeConstants.USER_SEX) + private Integer sex; + + @ExcelProperty(value = "帐号状态", converter = DictConvert.class) + @DictFormat(SysDictTypeConstants.COMMON_STATUS) + private Integer status; + + @ExcelProperty("最后登录IP") + private String loginIp; + + @ExcelProperty("最后登录时间") + private Date loginDate; + + @ExcelProperty("部门名称") + private String deptName; + + @ExcelProperty("部门负责人") + private String deptLeader; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserExportReqVO.java new file mode 100644 index 0000000..24d8d00 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserExportReqVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@ApiModel(value = "用户导出 Request VO", description = "参数和 SysUserPageReqVO 是一致的") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class SysUserExportReqVO { + + @ApiModelProperty(value = "用户账号", example = "yudao", notes = "模糊匹配") + private String username; + + @ApiModelProperty(value = "手机号码", example = "yudao", notes = "模糊匹配") + private String mobile; + + @ApiModelProperty(value = "展示状态", example = "1", notes = "参见 SysCommonStatusEnum 枚举类") + private Integer status; + + @ApiModelProperty(value = "开始时间", example = "2020-10-24") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private Date beginTime; + + @ApiModelProperty(value = "结束时间", example = "2020-10-24") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private Date endTime; + + @ApiModelProperty(value = "部门编号", example = "1024", notes = "同时筛选子部门") + private Long deptId; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserImportExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserImportExcelVO.java new file mode 100644 index 0000000..bef5451 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserImportExcelVO.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user; + +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; +import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 用户 Excel 导入 VO + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class SysUserImportExcelVO { + + @ExcelProperty("登录名称") + private String username; + + @ExcelProperty("用户名称") + private String nickname; + + @ExcelProperty("部门编号") + private Long deptId; + + @ExcelProperty("用户邮箱") + private String email; + + @ExcelProperty("手机号码") + private String mobile; + + @ExcelProperty(value = "用户性别", converter = DictConvert.class) + @DictFormat(SysDictTypeConstants.USER_SEX) + private Integer sex; + + @ExcelProperty(value = "账号状态", converter = DictConvert.class) + @DictFormat(SysDictTypeConstants.COMMON_STATUS) + private Integer status; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserImportRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserImportRespVO.java new file mode 100644 index 0000000..bb4359e --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserImportRespVO.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@ApiModel("用户导入 Response VO") +@Data +@Builder +public class SysUserImportRespVO { + + @ApiModelProperty(value = "创建成功的用户名数组", required = true) + private List createUsernames; + + @ApiModelProperty(value = "更新成功的用户名数组", required = true) + private List updateUsernames; + + @ApiModelProperty(value = "导入失败的用户集合", required = true, notes = "key 为用户名,value 为失败原因") + private Map failureUsernames; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserPageItemRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserPageItemRespVO.java new file mode 100644 index 0000000..58959a5 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserPageItemRespVO.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@ApiModel(value = "用户分页时的信息 Response VO", description = "相比用户基本信息来说,会多部门信息") +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SysUserPageItemRespVO extends SysUserRespVO { + + /** + * 所在部门 + */ + private Dept dept; + + @ApiModel("部门") + @Data + public static class Dept { + + @ApiModelProperty(value = "部门编号", required = true, example = "1") + private Long id; + + @ApiModelProperty(value = "部门名称", required = true, example = "研发部") + private String name; + + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserPageReqVO.java new file mode 100644 index 0000000..ca1e597 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserPageReqVO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@ApiModel("用户分页 Request VO") +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SysUserPageReqVO extends PageParam { + + @ApiModelProperty(value = "用户账号", example = "yudao", notes = "模糊匹配") + private String username; + + @ApiModelProperty(value = "手机号码", example = "yudao", notes = "模糊匹配") + private String mobile; + + @ApiModelProperty(value = "展示状态", example = "1", notes = "参见 SysCommonStatusEnum 枚举类") + private Integer status; + + @ApiModelProperty(value = "开始时间", example = "2020-10-24") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private Date beginTime; + + @ApiModelProperty(value = "结束时间", example = "2020-10-24") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private Date endTime; + + @ApiModelProperty(value = "部门编号", example = "1024", notes = "同时筛选子部门") + private Long deptId; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserRespVO.java new file mode 100644 index 0000000..8b68dbc --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserRespVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import java.util.Date; + +@ApiModel("用户信息 Response VO") +@Data +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SysUserRespVO extends SysUserBaseVO { + + @ApiModelProperty(value = "用户编号", required = true, example = "1") + private Long id; + + @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 SysCommonStatusEnum 枚举类") + private Integer status; + + @ApiModelProperty(value = "最后登陆 IP", required = true, example = "192.168.1.1") + private String loginIp; + + @ApiModelProperty(value = "最后登录时间", required = true, example = "时间戳格式") + private Date loginDate; + + @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式") + private Date createTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserUpdatePasswordReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserUpdatePasswordReqVO.java new file mode 100644 index 0000000..9364c57 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserUpdatePasswordReqVO.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@ApiModel("用户更新密码 Request VO") +@Data +public class SysUserUpdatePasswordReqVO { + + @ApiModelProperty(value = "用户编号", required = true, example = "1024") + @NotNull(message = "用户编号不能为空") + private Long id; + + @ApiModelProperty(value = "密码", required = true, example = "123456") + @NotEmpty(message = "密码不能为空") + @Length(min = 4, max = 16, message = "密码长度为 4-16 位") + private String password; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserUpdateReqVO.java new file mode 100644 index 0000000..7fc8ffb --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserUpdateReqVO.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotNull; + +@ApiModel("用户更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +public class SysUserUpdateReqVO extends SysUserBaseVO { + + @ApiModelProperty(value = "用户编号", required = true, example = "1024") + @NotNull(message = "用户编号不能为空") + private Long id; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserUpdateStatusReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserUpdateStatusReqVO.java new file mode 100644 index 0000000..dd1baa4 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserUpdateStatusReqVO.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@ApiModel("用户更新状态 Request VO") +@Data +public class SysUserUpdateStatusReqVO { + + @ApiModelProperty(value = "用户编号", required = true, example = "1024") + @NotNull(message = "角色编号不能为空") + private Long id; + + @ApiModelProperty(value = "状态", required = true, example = "1", notes = "见 SysCommonStatusEnum 枚举") + @NotNull(message = "状态不能为空") +// @InEnum(value = SysCommonStatusEnum.class, message = "修改状态必须是 {value}") + private Integer status; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/auth/SysAuthConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/auth/SysAuthConvert.java new file mode 100644 index 0000000..84a56ac --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/auth/SysAuthConvert.java @@ -0,0 +1,79 @@ +package cn.iocoder.yudao.adminserver.modules.system.convert.auth; + +import cn.iocoder.yudao.framework.security.core.LoginUser; +import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthMenuRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthPermissionInfoRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuIdEnum; +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +@Mapper +public interface SysAuthConvert { + + SysAuthConvert INSTANCE = Mappers.getMapper(SysAuthConvert.class); + + @Mapping(source = "updateTime", target = "updateTime", ignore = true) + // 字段相同,但是含义不同,忽略 + LoginUser convert(SysUserDO bean); + + default SysAuthPermissionInfoRespVO convert(SysUserDO user, List roleList, List menuList) { + return SysAuthPermissionInfoRespVO.builder() + .user(SysAuthPermissionInfoRespVO.UserVO.builder().nickname(user.getNickname()).avatar(user.getAvatar()).build()) + .roles(CollectionUtils.convertSet(roleList, SysRoleDO::getCode)) + .permissions(CollectionUtils.convertSet(menuList, SysMenuDO::getPermission)) + .build(); + } + + SysAuthMenuRespVO convertTreeNode(SysMenuDO menu); + + LoginUser convert(SysUserProfileUpdateReqVO reqVO); + + LoginUser convert(SysUserProfileUpdatePasswordReqVO reqVO); + + /** + * 将菜单列表,构建成菜单树 + * + * @param menuList 菜单列表 + * @return 菜单树 + */ + default List buildMenuTree(List menuList) { + // 排序,保证菜单的有序性 + menuList.sort(Comparator.comparing(SysMenuDO::getSort)); + // 构建菜单树 + // 使用 LinkedHashMap 的原因,是为了排序 。实际也可以用 Stream API ,就是太丑了。 + Map treeNodeMap = new LinkedHashMap<>(); + menuList.forEach(menu -> treeNodeMap.put(menu.getId(), SysAuthConvert.INSTANCE.convertTreeNode(menu))); + // 处理父子关系 + treeNodeMap.values().stream().filter(node -> !node.getParentId().equals(MenuIdEnum.ROOT.getId())).forEach(childNode -> { + // 获得父节点 + SysAuthMenuRespVO parentNode = treeNodeMap.get(childNode.getParentId()); + if (parentNode == null) { + LoggerFactory.getLogger(getClass()).error("[buildRouterTree][resource({}) 找不到父资源({})]", + childNode.getId(), childNode.getParentId()); + return; + } + // 将自己添加到父节点中 + if (parentNode.getChildren() == null) { + parentNode.setChildren(new ArrayList<>()); + } + parentNode.getChildren().add(childNode); + }); + // 获得到所有的根节点 + return CollectionUtils.filterList(treeNodeMap.values(), node -> MenuIdEnum.ROOT.getId().equals(node.getParentId())); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/auth/SysUserSessionConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/auth/SysUserSessionConvert.java new file mode 100644 index 0000000..473fa91 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/auth/SysUserSessionConvert.java @@ -0,0 +1,15 @@ +package cn.iocoder.yudao.adminserver.modules.system.convert.auth; + +import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageItemRespVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.auth.SysUserSessionDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface SysUserSessionConvert { + + SysUserSessionConvert INSTANCE = Mappers.getMapper(SysUserSessionConvert.class); + + SysUserSessionPageItemRespVO convert(SysUserSessionDO session); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/common/SysCaptchaConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/common/SysCaptchaConvert.java new file mode 100644 index 0000000..0931a54 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/common/SysCaptchaConvert.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.adminserver.modules.system.convert.common; + +import cn.hutool.captcha.AbstractCaptcha; +import cn.hutool.captcha.ICaptcha; +import cn.iocoder.yudao.adminserver.modules.system.controller.common.vo.SysCaptchaImageRespVO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface SysCaptchaConvert { + + SysCaptchaConvert INSTANCE = Mappers.getMapper(SysCaptchaConvert.class); + + default SysCaptchaImageRespVO convert(String uuid, AbstractCaptcha captcha) { + return SysCaptchaImageRespVO.builder().uuid(uuid).img(captcha.getImageBase64()).build(); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dept/SysDeptConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dept/SysDeptConvert.java new file mode 100644 index 0000000..364b034 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dept/SysDeptConvert.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.adminserver.modules.system.convert.dept; + +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptSimpleRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface SysDeptConvert { + + SysDeptConvert INSTANCE = Mappers.getMapper(SysDeptConvert.class); + + List convertList(List list); + + List convertList02(List list); + + SysDeptRespVO convert(SysDeptDO bean); + + SysDeptDO convert(SysDeptCreateReqVO bean); + + SysDeptDO convert(SysDeptUpdateReqVO bean); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dept/SysPostConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dept/SysPostConvert.java new file mode 100644 index 0000000..934a31d --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dept/SysPostConvert.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.adminserver.modules.system.convert.dept; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.*; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface SysPostConvert { + + SysPostConvert INSTANCE = Mappers.getMapper(SysPostConvert.class); + + List convertList02(List list); + + PageResult convertPage(PageResult page); + + SysPostRespVO convert(SysPostDO id); + + SysPostDO convert(SysPostCreateReqVO bean); + + SysPostDO convert(SysPostUpdateReqVO reqVO); + + List convertList03(List list); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dict/SysDictDataConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dict/SysDictDataConvert.java new file mode 100644 index 0000000..d8e54bc --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dict/SysDictDataConvert.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.adminserver.modules.system.convert.dict; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.dict.core.dto.DictDataRespDTO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.*; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictDataDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.Collection; +import java.util.List; + +@Mapper +public interface SysDictDataConvert { + + SysDictDataConvert INSTANCE = Mappers.getMapper(SysDictDataConvert.class); + + List convertList(List list); + + SysDictDataRespVO convert(SysDictDataDO bean); + + PageResult convertPage(PageResult page); + + SysDictDataDO convert(SysDictDataUpdateReqVO bean); + + SysDictDataDO convert(SysDictDataCreateReqVO bean); + + List convertList02(List bean); + + DictDataRespDTO convert02(SysDictDataDO bean); + + List convertList03(Collection list); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dict/SysDictTypeConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dict/SysDictTypeConvert.java new file mode 100644 index 0000000..e20451c --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dict/SysDictTypeConvert.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.adminserver.modules.system.convert.dict; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.*; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface SysDictTypeConvert { + + SysDictTypeConvert INSTANCE = Mappers.getMapper(SysDictTypeConvert.class); + + PageResult convertPage(PageResult bean); + + SysDictTypeRespVO convert(SysDictTypeDO bean); + + SysDictTypeDO convert(SysDictTypeCreateReqVO bean); + + SysDictTypeDO convert(SysDictTypeUpdateReqVO bean); + + List convertList(List list); + + List convertList02(List list); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/errorcode/SysErrorCodeConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/errorcode/SysErrorCodeConvert.java new file mode 100644 index 0000000..a7b8ead --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/errorcode/SysErrorCodeConvert.java @@ -0,0 +1,42 @@ +package cn.iocoder.yudao.adminserver.modules.system.convert.errorcode; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO; +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeRespDTO; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeExcelVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.errorcode.SysErrorCodeDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 错误码 Convert + * + * @author 芋道源码 + */ +@Mapper +public interface SysErrorCodeConvert { + + SysErrorCodeConvert INSTANCE = Mappers.getMapper(SysErrorCodeConvert.class); + + SysErrorCodeDO convert(SysErrorCodeCreateReqVO bean); + + SysErrorCodeDO convert(SysErrorCodeUpdateReqVO bean); + + SysErrorCodeRespVO convert(SysErrorCodeDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + + SysErrorCodeDO convert(ErrorCodeAutoGenerateReqDTO bean); + + List convertList03(List list); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/logger/SysLoginLogConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/logger/SysLoginLogConvert.java new file mode 100644 index 0000000..7c31fe3 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/logger/SysLoginLogConvert.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.adminserver.modules.system.convert.logger; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExcelVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogRespVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysLoginLogDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface SysLoginLogConvert { + + SysLoginLogConvert INSTANCE = Mappers.getMapper(SysLoginLogConvert.class); + + SysLoginLogDO convert(SysLoginLogCreateReqVO bean); + + PageResult convertPage(PageResult page); + + List convertList(List list); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/logger/SysOperateLogConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/logger/SysOperateLogConvert.java new file mode 100644 index 0000000..dc31e07 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/logger/SysOperateLogConvert.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.adminserver.modules.system.convert.logger; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExcelVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogRespVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.SUCCESS; + +@Mapper +public interface SysOperateLogConvert { + + SysOperateLogConvert INSTANCE = Mappers.getMapper(SysOperateLogConvert.class); + + SysOperateLogDO convert(OperateLogCreateReqDTO bean); + + PageResult convertPage(PageResult page); + + SysOperateLogRespVO convert(SysOperateLogDO bean); + + default List convertList(List list, Map userMap) { + return list.stream().map(operateLog -> { + SysOperateLogExcelVO excelVO = convert02(operateLog); + MapUtils.findAndThen(userMap, operateLog.getId(), user -> excelVO.setUserNickname(user.getNickname())); + excelVO.setSuccessStr(SUCCESS.getCode().equals(operateLog.getResultCode()) ? "成功" : "失败"); + return excelVO; + }).collect(Collectors.toList()); + } + + SysOperateLogExcelVO convert02(SysOperateLogDO bean); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/notice/SysNoticeConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/notice/SysNoticeConvert.java new file mode 100644 index 0000000..ccba20e --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/notice/SysNoticeConvert.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.adminserver.modules.system.convert.notice; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.notice.SysNoticeDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface SysNoticeConvert { + + SysNoticeConvert INSTANCE = Mappers.getMapper(SysNoticeConvert.class); + + PageResult convertPage(PageResult page); + + SysNoticeRespVO convert(SysNoticeDO bean); + + SysNoticeDO convert(SysNoticeUpdateReqVO bean); + + SysNoticeDO convert(SysNoticeCreateReqVO bean); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/package-info.java index 89deac9..d4052eb 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/package-info.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/package-info.java @@ -3,4 +3,4 @@ * * 目前使用 MapStruct 框架 */ -package cn.iocoder.dashboard.modules.system.convert; +package cn.iocoder.yudao.adminserver.modules.system.convert; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/permission/SysMenuConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/permission/SysMenuConvert.java new file mode 100644 index 0000000..c8ef149 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/permission/SysMenuConvert.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.adminserver.modules.system.convert.permission; + +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuSimpleRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface SysMenuConvert { + + SysMenuConvert INSTANCE = Mappers.getMapper(SysMenuConvert.class); + + List convertList(List list); + + SysMenuDO convert(SysMenuCreateReqVO bean); + + SysMenuDO convert(SysMenuUpdateReqVO bean); + + SysMenuRespVO convert(SysMenuDO bean); + + List convertList02(List list); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/permission/SysRoleConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/permission/SysRoleConvert.java new file mode 100644 index 0000000..59e4d59 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/permission/SysRoleConvert.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.adminserver.modules.system.convert.permission; + +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.*; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface SysRoleConvert { + + SysRoleConvert INSTANCE = Mappers.getMapper(SysRoleConvert.class); + + SysRoleDO convert(SysRoleUpdateReqVO bean); + + SysRoleRespVO convert(SysRoleDO bean); + + SysRoleDO convert(SysRoleCreateReqVO bean); + + List convertList02(List list); + + List convertList03(List list); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsChannelConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsChannelConvert.java new file mode 100644 index 0000000..8d8304d --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsChannelConvert.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.adminserver.modules.system.convert.sms; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelSimpleRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsChannelDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 短信渠道 Convert + * + * @author 芋道源码 + */ +@Mapper +public interface SysSmsChannelConvert { + + SysSmsChannelConvert INSTANCE = Mappers.getMapper(SysSmsChannelConvert.class); + + SysSmsChannelDO convert(SysSmsChannelCreateReqVO bean); + + SysSmsChannelDO convert(SysSmsChannelUpdateReqVO bean); + + SysSmsChannelRespVO convert(SysSmsChannelDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + + List convertList03(List list); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsLogConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsLogConvert.java new file mode 100644 index 0000000..792d329 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsLogConvert.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.adminserver.modules.system.convert.sms; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExcelVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogRespVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsLogDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 短信日志 Convert + * + * @author 芋道源码 + */ +@Mapper +public interface SysSmsLogConvert { + + SysSmsLogConvert INSTANCE = Mappers.getMapper(SysSmsLogConvert.class); + + SysSmsLogRespVO convert(SysSmsLogDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsTemplateConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsTemplateConvert.java new file mode 100644 index 0000000..f7ffeb6 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsTemplateConvert.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.adminserver.modules.system.convert.sms; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateExcelVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface SysSmsTemplateConvert { + + SysSmsTemplateConvert INSTANCE = Mappers.getMapper(SysSmsTemplateConvert.class); + + SysSmsTemplateDO convert(SysSmsTemplateCreateReqVO bean); + + SysSmsTemplateDO convert(SysSmsTemplateUpdateReqVO bean); + + SysSmsTemplateRespVO convert(SysSmsTemplateDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/user/SysUserConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/user/SysUserConvert.java new file mode 100644 index 0000000..7fddda8 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/user/SysUserConvert.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.adminserver.modules.system.convert.user; + +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.*; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface SysUserConvert { + + SysUserConvert INSTANCE = Mappers.getMapper(SysUserConvert.class); + + SysUserPageItemRespVO convert(SysUserDO bean); + + SysUserPageItemRespVO.Dept convert(SysDeptDO bean); + + SysUserDO convert(SysUserCreateReqVO bean); + + SysUserDO convert(SysUserUpdateReqVO bean); + + SysUserExcelVO convert02(SysUserDO bean); + + SysUserDO convert(SysUserImportExcelVO bean); + + SysUserProfileRespVO convert03(SysUserDO bean); + + List convertList(List list); + + SysUserProfileRespVO.Dept convert02(SysDeptDO bean); + + SysUserDO convert(SysUserProfileUpdateReqVO bean); + + SysUserDO convert(SysUserProfileUpdatePasswordReqVO bean); + + List convertList02(List list); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md index 8153487..8153487 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/auth/SysUserSessionDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/auth/SysUserSessionDO.java new file mode 100644 index 0000000..8aa25a5 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/auth/SysUserSessionDO.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.auth; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.framework.security.core.LoginUser; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 在线用户表 + * + * 我们已经将 {@link LoginUser} 缓存在 Redis 当中。 + * 这里额外存储在线用户到 MySQL 中,目的是为了方便管理界面可以灵活查询。 + * 同时,通过定时轮询 SysUserSessionDO 表,可以主动删除 Redis 的缓存,因为 Redis 的过期删除是延迟的。 + * + * @author 芋道源码 + */ +@TableName(value = "sys_user_session", autoResultMap = true) +@Data +@Builder +@EqualsAndHashCode(callSuper = true) +public class SysUserSessionDO extends BaseDO { + + /** + * 会话编号, 即 sessionId + */ + @TableId(type = IdType.INPUT) + private String id; + /** + * 用户编号 + * + * 关联 {@link SysUserDO#getId()} + */ + private Long userId; + + /** + * 用户账号 + * + * 冗余,因为账号可以变更 + */ + private String username; + + /** + * 用户 IP + */ + private String userIp; + /** + * 浏览器 UA + */ + private String userAgent; + /** + * 会话超时时间 + */ + private Date sessionTimeout; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/dept/SysDeptDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/dept/SysDeptDO.java new file mode 100644 index 0000000..46d7b98 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/dept/SysDeptDO.java @@ -0,0 +1,58 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 部门表 + * + * @author ruoyi + */ +@TableName("sys_dept") +@Data +@EqualsAndHashCode(callSuper = true) +public class SysDeptDO extends BaseDO { + + /** + * 部门ID + */ + @TableId + private Long id; + /** + * 部门名称 + */ + private String name; + /** + * 父部门ID + * + * 关联 {@link #id} + */ + private Long parentId; + /** + * 显示顺序 + */ + private Integer sort; + /** + * 负责人 + */ + private String leader; + /** + * 联系电话 + */ + private String phone; + /** + * 邮箱 + */ + private String email; + /** + * 部门状态 + * + * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/dept/SysPostDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/dept/SysPostDO.java new file mode 100644 index 0000000..52b19c7 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/dept/SysPostDO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 岗位表 + * + * @author ruoyi + */ +@TableName("sys_post") +@Data +@EqualsAndHashCode(callSuper = true) +public class SysPostDO extends BaseDO { + + /** + * 岗位序号 + */ + @TableId + private Long id; + + /** + * 岗位名称 + */ + private String name; + /** + * 岗位编码 + */ + private String code; + /** + * 岗位排序 + */ + private Integer sort; + /** + * 状态 + * + * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + /** + * 备注 + */ + private String remark; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/dict/SysDictDataDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/dict/SysDictDataDO.java new file mode 100644 index 0000000..22b0722 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/dict/SysDictDataDO.java @@ -0,0 +1,54 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 字典数据表 + * + * @author ruoyi + */ +@TableName("sys_dict_data") +@Data +@EqualsAndHashCode(callSuper = true) +public class SysDictDataDO extends BaseDO { + + /** + * 字典数据编号 + */ + @TableId + private Long id; + /** + * 字典排序 + */ + private Integer sort; + /** + * 字典标签 + */ + private String label; + /** + * 字典值 + */ + private String value; + /** + * 字典类型 + * + * 冗余 {@link SysDictDataDO#getDictType()} + */ + private String dictType; + /** + * 状态 + * + * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + /** + * 备注 + */ + private String remark; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/dict/SysDictTypeDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/dict/SysDictTypeDO.java new file mode 100644 index 0000000..548ee6f --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/dict/SysDictTypeDO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +/** + * 字典类型表 + * + * @author ruoyi + */ +@TableName("sys_dict_type") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SysDictTypeDO extends BaseDO { + + /** + * 字典主键 + */ + @TableId + private Long id; + /** + * 字典名称 + */ + private String name; + /** + * 字典类型 + */ + @TableField("`type`") + private String type; + /** + * 状态 + * + * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + /** + * 备注 + */ + private String remark; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/errorcode/SysErrorCodeDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/errorcode/SysErrorCodeDO.java new file mode 100644 index 0000000..d2fdb18 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/errorcode/SysErrorCodeDO.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.errorcode; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.adminserver.modules.system.enums.errorcode.SysErrorCodeTypeEnum; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * 错误码表 + * + * @author 芋道源码 + */ +@TableName(value = "sys_error_code") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SysErrorCodeDO extends BaseDO { + + /** + * 错误码编号,自增 + */ + @TableId + private Long id; + /** + * 错误码类型 + * + * 枚举 {@link SysErrorCodeTypeEnum} + */ + private Integer type; + /** + * 应用名 + */ + private String applicationName; + /** + * 错误码编码 + */ + private Integer code; + /** + * 错误码错误提示 + */ + private String message; + /** + * 错误码备注 + */ + private String memo; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/logger/SysLoginLogDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/logger/SysLoginLogDO.java new file mode 100644 index 0000000..c61ee7c --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/logger/SysLoginLogDO.java @@ -0,0 +1,59 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeEnum; +import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * 登陆日志表 + * + * 注意,包括登陆和登出两种行为 + * + * @author ruoyi + */ +@TableName("sys_login_log") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SysLoginLogDO extends BaseDO { + + /** + * 日志主键 + */ + private Long id; + /** + * 日志类型 + * + * 枚举 {@link SysLoginLogTypeEnum} + */ + private Integer logType; + /** + * 链路追踪编号 + */ + private String traceId; + /** + * 用户账号 + * + * 冗余,因为账号可以变更 + */ + private String username; + /** + * 登陆结果 + * + * 枚举 {@link SysLoginResultEnum} + */ + private Integer result; + /** + * 用户 IP + */ + private String userIp; + /** + * 浏览器 UA + */ + private String userAgent; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/logger/SysOperateLogDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/logger/SysOperateLogDO.java new file mode 100644 index 0000000..1983518 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/logger/SysOperateLogDO.java @@ -0,0 +1,137 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; +import java.util.Map; + +/** + * 操作日志表 + * + * @author 芋道源码 + */ +@TableName(value = "sys_operate_log", autoResultMap = true) +@Data +@EqualsAndHashCode(callSuper = true) +public class SysOperateLogDO extends BaseDO { + + /** + * {@link #javaMethodArgs} 的最大长度 + */ + public static final Integer JAVA_METHOD_ARGS_MAX_LENGTH = 8000; + + /** + * {@link #resultData} 的最大长度 + */ + public static final Integer RESULT_MAX_LENGTH = 4000; + + /** + * 日志主键 + */ + @TableId + private Long id; + /** + * 链路追踪编号 + * + * 一般来说,通过链路追踪编号,可以将访问日志,错误日志,链路追踪日志,logger 打印日志等,结合在一起,从而进行排错。 + */ + private String traceId; + /** + * 用户编号 + * + * {@link SysUserDO#getId()} + */ + private Long userId; + /** + * 操作模块 + */ + private String module; + /** + * 操作名 + */ + private String name; + /** + * 操作分类 + * + * 枚举 {@link OperateTypeEnum} + */ + @TableField("operate_type") + private Integer type; + /** + * 操作内容,记录整个操作的明细 + * 例如说,修改编号为 1 的用户信息,将性别从男改成女,将姓名从芋道改成源码。 + */ + private String content; + /** + * 拓展字段,有些复杂的业务,需要记录一些字段 + * 例如说,记录订单编号,则可以添加 key 为 "orderId",value 为订单编号 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private Map exts; + + /** + * 请求方法名 + */ + private String requestMethod; + /** + * 请求地址 + */ + private String requestUrl; + /** + * 用户 IP + */ + private String userIp; + /** + * 浏览器 UA + */ + private String userAgent; + + /** + * Java 方法名 + */ + private String javaMethod; + /** + * Java 方法的参数 + * + * 实际格式为 Map + * 不使用 @TableField(typeHandler = FastjsonTypeHandler.class) 注解的原因是,数据库存储有长度限制,会进行裁剪,会导致 JSON 反序列化失败 + * 其中,key 为参数名,value 为参数值 + */ + private String javaMethodArgs; + /** + * 开始时间 + */ + private Date startTime; + /** + * 执行时长,单位:毫秒 + */ + private Integer duration; + /** + * 结果码 + * + * 目前使用的 {@link CommonResult#getCode()} 属性 + */ + private Integer resultCode; + /** + * 结果提示 + * + * 目前使用的 {@link CommonResult#getMsg()} 属性 + */ + private String resultMsg; + /** + * 结果数据 + * + * 如果是对象,则使用 JSON 格式化 + */ + private String resultData; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/notice/SysNoticeDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/notice/SysNoticeDO.java new file mode 100644 index 0000000..1ddff65 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/notice/SysNoticeDO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.notice; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.adminserver.modules.system.enums.notice.SysNoticeTypeEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 通知公告表 + * + * @author ruoyi + */ +@TableName("sys_notice") +@Data +@EqualsAndHashCode(callSuper = true) +public class SysNoticeDO extends BaseDO { + + /** + * 公告ID + */ + private Long id; + /** + * 公告标题 + */ + private String title; + /** + * 公告类型 + * + * 枚举 {@link SysNoticeTypeEnum} + */ + @TableField("notice_type") + private Integer type; + /** + * 公告内容 + */ + private String content; + /** + * 公告状态 + * + * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/permission/SysMenuDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/permission/SysMenuDO.java new file mode 100644 index 0000000..043f2e9 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/permission/SysMenuDO.java @@ -0,0 +1,76 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuTypeEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 菜单 DO + * + * @author ruoyi + */ +@TableName("sys_menu") +@Data +@EqualsAndHashCode(callSuper = true) +public class SysMenuDO extends BaseDO { + + /** + * 菜单ID + */ + @TableId + private Long id; + /** + * 菜单名称 + */ + private String name; + /** + * 权限标识 + * + * 一般格式为:${系统}:${模块}:${操作} + * 例如说:system:admin:add,即 system 服务的添加管理员。 + * + * 当我们把该 SysMenuDO 赋予给角色后,意味着该角色有该资源: + * - 对于后端,配合 @PreAuthorize 注解,配置 API 接口需要该权限,从而对 API 接口进行权限控制。 + * - 对于前端,配合前端标签,配置按钮是否展示,避免用户没有该权限时,结果可以看到该操作。 + */ + private String permission; + /** + * 菜单类型 + * + * 枚举 {@link MenuTypeEnum} + */ + @TableField("menu_type") + private Integer type; + /** + * 显示顺序 + */ + private Integer sort; + /** + * 父菜单ID + */ + private Long parentId; + /** + * 路由地址 + */ + private String path; + /** + * 菜单图标 + */ + private String icon; + /** + * 组件路径 + */ + private String component; + /** + * 状态 + * + * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/permission/SysRoleDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/permission/SysRoleDO.java new file mode 100644 index 0000000..72ebedb --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/permission/SysRoleDO.java @@ -0,0 +1,77 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.framework.mybatis.core.type.JsonLongSetTypeHandler; +import cn.iocoder.yudao.framework.security.core.enums.DataScopeEnum; +import cn.iocoder.yudao.adminserver.modules.system.enums.permission.RoleCodeEnum; +import cn.iocoder.yudao.adminserver.modules.system.enums.permission.SysRoleTypeEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Set; + +/** + * 角色 DO + * + * @author ruoyi + */ +@TableName(value = "sys_role", autoResultMap = true) +@Data +@EqualsAndHashCode(callSuper = true) +public class SysRoleDO extends BaseDO { + + /** + * 角色ID + */ + @TableId + private Long id; + /** + * 角色名称 + */ + private String name; + /** + * 角色标识 + * + * 枚举 {@link RoleCodeEnum} + */ + private String code; + /** + * 角色排序 + */ + private Integer sort; + /** + * 角色状态 + * + * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + /** + * 角色类型 + * + * 枚举 {@link SysRoleTypeEnum} + */ + private Integer type; + /** + * 备注 + */ + private String remark; + + /** + * 数据范围 + * + * 枚举 {@link DataScopeEnum} + */ + private Integer dataScope; + /** + * 数据范围(指定部门数组) + * + * 适用于 {@link #dataScope} 的值为 {@link DataScopeEnum#DEPT_CUSTOM} 时 + */ + @TableField(typeHandler = JsonLongSetTypeHandler.class) + private Set dataScopeDeptIds; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/permission/SysRoleMenuDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/permission/SysRoleMenuDO.java new file mode 100644 index 0000000..5cb6c1a --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/permission/SysRoleMenuDO.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 角色和菜单关联 + * + * @author ruoyi + */ +@TableName("sys_role_menu") +@Data +@EqualsAndHashCode(callSuper = true) +public class SysRoleMenuDO extends BaseDO { + + /** + * 自增主键 + */ + @TableId + private Long id; + /** + * 角色ID + */ + private Long roleId; + /** + * 菜单ID + */ + private Long menuId; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/permission/SysUserRoleDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/permission/SysUserRoleDO.java new file mode 100644 index 0000000..6792f56 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/permission/SysUserRoleDO.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用户和角色关联 + * + * @author ruoyi + */ +@TableName("sys_user_role") +@Data +@EqualsAndHashCode(callSuper = true) +public class SysUserRoleDO extends BaseDO { + + /** + * 自增主键 + */ + @TableId + private Long id; + /** + * 用户 ID + */ + private Long userId; + /** + * 角色 ID + */ + private Long roleId; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/sms/SysSmsChannelDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/sms/SysSmsChannelDO.java new file mode 100644 index 0000000..3a3b879 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/sms/SysSmsChannelDO.java @@ -0,0 +1,60 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.framework.sms.core.enums.SmsChannelEnum; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * 短信渠道 DO + * + * @author zzf + * @since 2021-01-25 + */ +@TableName(value = "sys_sms_channel", autoResultMap = true) +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SysSmsChannelDO extends BaseDO { + + /** + * 渠道编号 + */ + private Long id; + /** + * 短信签名 + */ + private String signature; + /** + * 渠道编码 + * + * 枚举 {@link SmsChannelEnum} + */ + private String code; + /** + * 启用状态 + * + * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + /** + * 备注 + */ + private String remark; + /** + * 短信 API 的账号 + */ + private String apiKey; + /** + * 短信 API 的秘钥 + */ + private String apiSecret; + /** + * 短信发送回调 URL + */ + private String callbackUrl; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/sms/SysSmsLogDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/sms/SysSmsLogDO.java new file mode 100644 index 0000000..3ac39b0 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/sms/SysSmsLogDO.java @@ -0,0 +1,173 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms; + +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.framework.sms.core.enums.SmsFrameworkErrorCodeConstants; +import cn.iocoder.yudao.adminserver.modules.system.enums.sms.SysSmsReceiveStatusEnum; +import cn.iocoder.yudao.adminserver.modules.system.enums.sms.SysSmsSendStatusEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import lombok.*; + +import java.util.Date; +import java.util.Map; + +/** + * 短信日志 DO + * + * @author zzf + * @since 2021-01-25 + */ +@TableName(value = "sys_sms_log", autoResultMap = true) +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class SysSmsLogDO extends BaseDO { + + /** + * 自增编号 + */ + private Long id; + + // ========= 渠道相关字段 ========= + + /** + * 短信渠道编号 + * + * 关联 {@link SysSmsChannelDO#getId()} + */ + private Long channelId; + /** + * 短信渠道编码 + * + * 冗余 {@link SysSmsChannelDO#getCode()} + */ + private String channelCode; + + // ========= 模板相关字段 ========= + + /** + * 模板编号 + * + * 关联 {@link SysSmsTemplateDO#getId()} + */ + private Long templateId; + /** + * 模板编码 + * + * 冗余 {@link SysSmsTemplateDO#getCode()} + */ + private String templateCode; + /** + * 短信类型 + * + * 冗余 {@link SysSmsTemplateDO#getType()} + */ + private Integer templateType; + /** + * 基于 {@link SysSmsTemplateDO#getContent()} 格式化后的内容 + */ + private String templateContent; + /** + * 基于 {@link SysSmsTemplateDO#getParams()} 输入后的参数 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private Map templateParams; + /** + * 短信 API 的模板编号 + * + * 冗余 {@link SysSmsTemplateDO#getApiTemplateId()} + */ + private String apiTemplateId; + + // ========= 手机相关字段 ========= + + /** + * 手机号 + */ + private String mobile; + /** + * 用户编号 + */ + private Long userId; + /** + * 用户类型 + * + * 枚举 {@link UserTypeEnum} + */ + private Integer userType; + + // ========= 发送相关字段 ========= + + /** + * 发送状态 + * + * 枚举 {@link SysSmsSendStatusEnum} + */ + private Integer sendStatus; + /** + * 发送时间 + */ + private Date sendTime; + /** + * 发送结果的编码 + * + * 枚举 {@link SmsFrameworkErrorCodeConstants} + */ + private Integer sendCode; + /** + * 发送结果的提示 + * + * 一般情况下,使用 {@link SmsFrameworkErrorCodeConstants} + * 异常情况下,通过格式化 Exception 的提示存储 + */ + private String sendMsg; + /** + * 短信 API 发送结果的编码 + * + * 由于第三方的错误码可能是字符串,所以使用 String 类型 + */ + private String apiSendCode; + /** + * 短信 API 发送失败的提示 + */ + private String apiSendMsg; + /** + * 短信 API 发送返回的唯一请求 ID + * + * 用于和短信 API 进行定位于排错 + */ + private String apiRequestId; + /** + * 短信 API 发送返回的序号 + * + * 用于和短信 API 平台的发送记录关联 + */ + private String apiSerialNo; + + // ========= 接收相关字段 ========= + + /** + * 接收状态 + * + * 枚举 {@link SysSmsReceiveStatusEnum} + */ + private Integer receiveStatus; + /** + * 接收时间 + */ + private Date receiveTime; + /** + * 短信 API 接收结果的编码 + */ + private String apiReceiveCode; + /** + * 短信 API 接收结果的提示 + */ + private String apiReceiveMsg; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/sms/SysSmsTemplateDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/sms/SysSmsTemplateDO.java new file mode 100644 index 0000000..e409760 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/sms/SysSmsTemplateDO.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.adminserver.modules.system.enums.sms.SysSmsTemplateTypeEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.List; + +/** + * 短信模板 DO + * + * @author zzf + * @since 2021-01-25 + */ +@TableName(value = "sys_sms_template", autoResultMap = true) +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SysSmsTemplateDO extends BaseDO { + + /** + * 自增编号 + */ + private Long id; + + // ========= 模板相关字段 ========= + + /** + * 短信类型 + * + * 枚举 {@link SysSmsTemplateTypeEnum} + */ + private Integer type; + /** + * 启用状态 + * + * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + /** + * 模板编码,保证唯一 + */ + private String code; + /** + * 模板名称 + */ + private String name; + /** + * 模板内容 + * + * 内容的参数,使用 {} 包括,例如说 {name} + */ + private String content; + /** + * 参数数组(自动根据内容生成) + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List params; + /** + * 备注 + */ + private String remark; + /** + * 短信 API 的模板编号 + */ + private String apiTemplateId; + + // ========= 渠道相关字段 ========= + + /** + * 短信渠道编号 + * + * 关联 {@link SysSmsChannelDO#getId()} + */ + private Long channelId; + /** + * 短信渠道编码 + * + * 冗余 {@link SysSmsChannelDO#getCode()} + */ + private String channelCode; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/user/SysUserDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/user/SysUserDO.java new file mode 100644 index 0000000..2346ee9 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/user/SysUserDO.java @@ -0,0 +1,94 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.framework.mybatis.core.type.JsonLongSetTypeHandler; +import cn.iocoder.yudao.adminserver.modules.system.enums.common.SysSexEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +import java.util.Date; +import java.util.Set; + +/** + * 用户 DO + * + * @author ruoyi + */ +@TableName(value = "sys_user", autoResultMap = true) +@Data +@EqualsAndHashCode(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SysUserDO extends BaseDO { + + /** + * 用户ID + */ + @TableId + private Long id; + /** + * 用户账号 + */ + private String username; + /** + * 加密后的密码 + * + * 因为目前使用 {@link BCryptPasswordEncoder} 加密器,所以无需自己处理 salt 盐 + */ + private String password; + /** + * 用户昵称 + */ + private String nickname; + /** + * 备注 + */ + private String remark; + /** + * 部门ID + */ + private Long deptId; + /** + * 岗位编号数组 + */ + @TableField(typeHandler = JsonLongSetTypeHandler.class) + private Set postIds; + /** + * 用户邮箱 + */ + private String email; + /** + * 手机号码 + */ + private String mobile; + /** + * 用户性别 + * + * 枚举类 {@link SysSexEnum} + */ + private Integer sex; + /** + * 用户头像 + */ + private String avatar; + /** + * 帐号状态 + * + * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + /** + * 最后登录IP + */ + private String loginIp; + /** + * 最后登录时间 + */ + private Date loginDate; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/auth/SysUserSessionMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/auth/SysUserSessionMapper.java new file mode 100644 index 0000000..bc6e31c --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/auth/SysUserSessionMapper.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.auth; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.auth.SysUserSessionDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.Collection; +import java.util.Date; +import java.util.List; + +@Mapper +public interface SysUserSessionMapper extends BaseMapperX { + + default PageResult selectPage(SysUserSessionPageReqVO reqVO, Collection userIds) { + return selectPage(reqVO, new QueryWrapperX() + .inIfPresent("user_id", userIds) + .likeIfPresent("user_ip", reqVO.getUserIp())); + } + + default List selectListBySessionTimoutLt() { + return selectList(new QueryWrapperX().lt("session_timeout",new Date())); + } +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dept/SysDeptMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dept/SysDeptMapper.java new file mode 100644 index 0000000..9b3cb17 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dept/SysDeptMapper.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptListReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.Date; +import java.util.List; + +@Mapper +public interface SysDeptMapper extends BaseMapperX { + + default List selectList(SysDeptListReqVO reqVO) { + return selectList(new QueryWrapperX().likeIfPresent("name", reqVO.getName()) + .eqIfPresent("status", reqVO.getStatus())); + } + + default SysDeptDO selectByParentIdAndName(Long parentId, String name) { + return selectOne(new QueryWrapper().eq("parent_id", parentId) + .eq("name", name)); + } + + default Integer selectCountByParentId(Long parentId) { + return selectCount(new QueryWrapper().eq("parent_id", parentId)); + } + + default boolean selectExistsByUpdateTimeAfter(Date maxUpdateTime) { + return selectOne(new QueryWrapper().select("id") + .gt("update_time", maxUpdateTime).last("LIMIT 1")) != null; + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dept/SysPostMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dept/SysPostMapper.java new file mode 100644 index 0000000..457b4a9 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dept/SysPostMapper.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.Collection; +import java.util.List; + +@Mapper +public interface SysPostMapper extends BaseMapperX { + + default List selectList(Collection ids, Collection statuses) { + return selectList(new QueryWrapperX().inIfPresent("id", ids) + .inIfPresent("status", statuses)); + } + + default PageResult selectPage(SysPostPageReqVO reqVO) { + return selectPage(reqVO, new QueryWrapperX() + .likeIfPresent("code", reqVO.getCode()) + .likeIfPresent("name", reqVO.getName()) + .eqIfPresent("status", reqVO.getStatus())); + } + + default List selectList(SysPostExportReqVO reqVO) { + return selectList(new QueryWrapperX() + .likeIfPresent("code", reqVO.getCode()) + .likeIfPresent("name", reqVO.getName()) + .eqIfPresent("status", reqVO.getStatus())); + } + + default SysPostDO selectByName(String name) { + return selectOne(new QueryWrapper().eq("name", name)); + } + + default SysPostDO selectByCode(String code) { + return selectOne(new QueryWrapper().eq("code", code)); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dict/SysDictDataMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dict/SysDictDataMapper.java new file mode 100644 index 0000000..dba4b55 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dict/SysDictDataMapper.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dict; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictDataDO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.Date; +import java.util.List; + +@Mapper +public interface SysDictDataMapper extends BaseMapperX { + + default SysDictDataDO selectByDictTypeAndValue(String dictType, String value) { + return selectOne(new QueryWrapper().eq("dict_type", dictType) + .eq("value", value)); + } + + default int selectCountByDictType(String dictType) { + return selectCount("dict_type", dictType); + } + + default PageResult selectPage(SysDictDataPageReqVO reqVO) { + return selectPage(reqVO, new QueryWrapperX() + .likeIfPresent("label", reqVO.getLabel()) + .likeIfPresent("dict_type", reqVO.getDictType()) + .eqIfPresent("status", reqVO.getStatus()) + .orderByAsc("dict_type", "sort")); + } + + default List selectList(SysDictDataExportReqVO reqVO) { + return selectList(new QueryWrapperX().likeIfPresent("label", reqVO.getLabel()) + .likeIfPresent("dict_type", reqVO.getDictType()) + .eqIfPresent("status", reqVO.getStatus())); + } + + default boolean selectExistsByUpdateTimeAfter(Date maxUpdateTime) { + return selectOne(new QueryWrapper().select("id") + .gt("update_time", maxUpdateTime).last("LIMIT 1")) != null; + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dict/SysDictTypeMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dict/SysDictTypeMapper.java new file mode 100644 index 0000000..90b1256 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dict/SysDictTypeMapper.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dict; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface SysDictTypeMapper extends BaseMapperX { + + default PageResult selectPage(SysDictTypePageReqVO reqVO) { + return selectPage(reqVO, new QueryWrapperX() + .likeIfPresent("name", reqVO.getName()) + .likeIfPresent("`type`", reqVO.getType()) + .eqIfPresent("status", reqVO.getStatus()) + .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())); + } + + default List selectList(SysDictTypeExportReqVO reqVO) { + return selectList(new QueryWrapperX() + .likeIfPresent("name", reqVO.getName()) + .likeIfPresent("`type`", reqVO.getType()) + .eqIfPresent("status", reqVO.getStatus()) + .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())); + } + + default SysDictTypeDO selectByType(String type) { + return selectOne(new QueryWrapperX().eq("`type`", type)); + } + + default SysDictTypeDO selectByName(String name) { + return selectOne(new QueryWrapperX().eq("name", name)); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/errorcode/SysErrorCodeMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/errorcode/SysErrorCodeMapper.java new file mode 100644 index 0000000..7760f80 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/errorcode/SysErrorCodeMapper.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.errorcode; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.errorcode.SysErrorCodeDO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.Collection; +import java.util.Date; +import java.util.List; + +@Mapper +public interface SysErrorCodeMapper extends BaseMapperX { + + default PageResult selectPage(SysErrorCodePageReqVO reqVO) { + return selectPage(reqVO, new QueryWrapperX() + .eqIfPresent("type", reqVO.getType()) + .likeIfPresent("application_name", reqVO.getApplicationName()) + .eqIfPresent("code", reqVO.getCode()) + .likeIfPresent("message", reqVO.getMessage()) + .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) + .orderByAsc("application_name", "code")); + } + + default List selectList(SysErrorCodeExportReqVO reqVO) { + return selectList(new QueryWrapperX() + .eqIfPresent("type", reqVO.getType()) + .likeIfPresent("application_name", reqVO.getApplicationName()) + .eqIfPresent("code", reqVO.getCode()) + .likeIfPresent("message", reqVO.getMessage()) + .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) + .orderByAsc("application_name", "code")); + } + + default List selectListByCodes(Collection codes) { + return selectList(new QueryWrapper().in("code", codes)); + } + + default SysErrorCodeDO selectByCode(Integer code) { + return selectOne(new QueryWrapper().eq("code", code)); + } + + default List selectListByApplicationNameAndUpdateTimeGt(String applicationName, Date minUpdateTime) { + return selectList(new QueryWrapperX().eq("application_name", applicationName) + .gtIfPresent("update_time", minUpdateTime)); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/logger/SysLoginLogMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/logger/SysLoginLogMapper.java new file mode 100644 index 0000000..62a70f0 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/logger/SysLoginLogMapper.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysLoginLogDO; +import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface SysLoginLogMapper extends BaseMapperX { + + default PageResult selectPage(SysLoginLogPageReqVO reqVO) { + QueryWrapperX query = new QueryWrapperX() + .likeIfPresent("user_ip", reqVO.getUserIp()) + .likeIfPresent("username", reqVO.getUsername()) + .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime()); + if (Boolean.TRUE.equals(reqVO.getStatus())) { + query.eq("result", SysLoginResultEnum.SUCCESS.getResult()); + } else if (Boolean.FALSE.equals(reqVO.getStatus())) { + query.gt("result", SysLoginResultEnum.SUCCESS.getResult()); + } + query.orderByDesc("id"); // 降序 + return selectPage(reqVO, query); + } + + default List selectList(SysLoginLogExportReqVO reqVO) { + QueryWrapperX query = new QueryWrapperX() + .likeIfPresent("user_ip", reqVO.getUserIp()) + .likeIfPresent("username", reqVO.getUsername()) + .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime()); + if (Boolean.TRUE.equals(reqVO.getStatus())) { + query.eq("result", SysLoginResultEnum.SUCCESS.getResult()); + } else if (Boolean.FALSE.equals(reqVO.getStatus())) { + query.gt("result", SysLoginResultEnum.SUCCESS.getResult()); + } + query.orderByDesc("id"); // 降序 + return selectList(query); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/logger/SysOperateLogMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/logger/SysOperateLogMapper.java new file mode 100644 index 0000000..c588867 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/logger/SysOperateLogMapper.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger; + +import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.Collection; +import java.util.List; + +@Mapper +public interface SysOperateLogMapper extends BaseMapperX { + + default PageResult selectPage(SysOperateLogPageReqVO reqVO, Collection userIds) { + QueryWrapperX query = new QueryWrapperX() + .likeIfPresent("module", reqVO.getModule()) + .inIfPresent("user_id", userIds) + .eqIfPresent("operate_type", reqVO.getType()) + .betweenIfPresent("start_time", reqVO.getBeginTime(), reqVO.getEndTime()); + if (Boolean.TRUE.equals(reqVO.getSuccess())) { + query.eq("result_code", GlobalErrorCodeConstants.SUCCESS.getCode()); + } else if (Boolean.FALSE.equals(reqVO.getSuccess())) { + query.gt("result_code", GlobalErrorCodeConstants.SUCCESS.getCode()); + } + query.orderByDesc("id"); // 降序 + return selectPage(reqVO, query); + } + + default List selectList(SysOperateLogExportReqVO reqVO, Collection userIds) { + QueryWrapperX query = new QueryWrapperX() + .likeIfPresent("module", reqVO.getModule()) + .inIfPresent("user_id", userIds) + .eqIfPresent("operate_type", reqVO.getType()) + .betweenIfPresent("start_time", reqVO.getBeginTime(), reqVO.getEndTime()); + if (Boolean.TRUE.equals(reqVO.getSuccess())) { + query.eq("result_code", GlobalErrorCodeConstants.SUCCESS.getCode()); + } else if (Boolean.FALSE.equals(reqVO.getSuccess())) { + query.gt("result_code", GlobalErrorCodeConstants.SUCCESS.getCode()); + } + query.orderByDesc("id"); // 降序 + return selectList(query); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/notice/SysNoticeMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/notice/SysNoticeMapper.java new file mode 100644 index 0000000..52a484a --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/notice/SysNoticeMapper.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.notice; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.notice.SysNoticeDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SysNoticeMapper extends BaseMapperX { + + default PageResult selectPage(SysNoticePageReqVO reqVO) { + return selectPage(reqVO, new QueryWrapperX() + .likeIfPresent("title", reqVO.getTitle()) + .eqIfPresent("status", reqVO.getStatus())); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysMenuMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysMenuMapper.java new file mode 100644 index 0000000..58913f4 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysMenuMapper.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuListReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.Date; +import java.util.List; + +@Mapper +public interface SysMenuMapper extends BaseMapperX { + + default SysMenuDO selectByParentIdAndName(Long parentId, String name) { + return selectOne(new QueryWrapper().eq("parent_id", parentId) + .eq("name", name)); + } + + default Integer selectCountByParentId(Long parentId) { + return selectCount(new QueryWrapper().eq("parent_id", parentId)); + } + + default List selectList(SysMenuListReqVO reqVO) { + return selectList(new QueryWrapperX().likeIfPresent("name", reqVO.getName()) + .eqIfPresent("status", reqVO.getStatus())); + } + + default boolean selectExistsByUpdateTimeAfter(Date maxUpdateTime) { + return selectOne(new QueryWrapper().select("id") + .gt("update_time", maxUpdateTime).last("LIMIT 1")) != null; + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysRoleMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysRoleMapper.java new file mode 100644 index 0000000..7d3ab59 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysRoleMapper.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRolePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.lang.Nullable; + +import java.util.Collection; +import java.util.Date; +import java.util.List; + +@Mapper +public interface SysRoleMapper extends BaseMapperX { + + default PageResult selectPage(SysRolePageReqVO reqVO) { + return selectPage(reqVO, new QueryWrapperX().likeIfPresent("name", reqVO.getName()) + .likeIfPresent("code", reqVO.getCode()) + .eqIfPresent("status", reqVO.getStatus()) + .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime())); + } + + default List listRoles(SysRoleExportReqVO reqVO) { + return selectList(new QueryWrapperX().likeIfPresent("name", reqVO.getName()) + .likeIfPresent("code", reqVO.getCode()) + .eqIfPresent("status", reqVO.getStatus()) + .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime())); + } + + default SysRoleDO selectByName(String name) { + return selectOne(new QueryWrapperX().eq("name", name)); + } + + default SysRoleDO selectByCode(String code) { + return selectOne(new QueryWrapperX().eq("code", code)); + } + + default List selectListByStatus(@Nullable Collection statuses) { + return selectList(new QueryWrapperX().in("status", statuses)); + } + + default boolean selectExistsByUpdateTimeAfter(Date maxUpdateTime) { + return selectOne(new QueryWrapper().select("id") + .gt("update_time", maxUpdateTime).last("LIMIT 1")) != null; + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysRoleMenuMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysRoleMenuMapper.java new file mode 100644 index 0000000..698ca73 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysRoleMenuMapper.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleMenuDO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +@Mapper +public interface SysRoleMenuMapper extends BaseMapperX { + + default List selectListByRoleId(Long roleId) { + return selectList(new QueryWrapper().eq("role_id", roleId)); + } + + default void insertList(Long roleId, Collection menuIds) { + List list = menuIds.stream().map(menuId -> { + SysRoleMenuDO entity = new SysRoleMenuDO(); + entity.setRoleId(roleId); + entity.setMenuId(menuId); + return entity; + }).collect(Collectors.toList()); + // TODO 芋艿,mybatis plus 增加批量插入的功能 + list.forEach(this::insert); + } + + default void deleteListByRoleIdAndMenuIds(Long roleId, Collection menuIds) { + delete(new QueryWrapper().eq("role_id", roleId) + .in("menu_id", menuIds)); + } + + default void deleteListByMenuId(Long menuId) { + delete(new QueryWrapper().eq("menu_id", menuId)); + } + + default void deleteListByRoleId(Long roleId) { + delete(new QueryWrapper().eq("role_id", roleId)); + } + + @Select("SELECT id FROM sys_role_menu WHERE update_time > #{maxUpdateTime} LIMIT 1") + Long selectExistsByUpdateTimeAfter(Date maxUpdateTime); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysUserRoleMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysUserRoleMapper.java new file mode 100644 index 0000000..f6f5f38 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/permission/SysUserRoleMapper.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysUserRoleDO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +@Mapper +public interface SysUserRoleMapper extends BaseMapperX { + + default List selectListByUserId(Long userId) { + return selectList(new QueryWrapper().eq("user_id", userId)); + } + + default void insertList(Long userId, Collection roleIds) { + List list = roleIds.stream().map(roleId -> { + SysUserRoleDO entity = new SysUserRoleDO(); + entity.setUserId(userId); + entity.setRoleId(roleId); + return entity; + }).collect(Collectors.toList()); + // TODO 芋艿,mybatis plus 增加批量插入的功能 + list.forEach(this::insert); + } + + default void deleteListByUserIdAndRoleIdIds(Long userId, Collection roleIds) { + delete(new QueryWrapper().eq("user_id", userId) + .in("role_id", roleIds)); + } + + default void deleteListByUserId(Long userId) { + delete(new QueryWrapper().eq("user_id", userId)); + } + + default void deleteListByRoleId(Long roleId) { + delete(new QueryWrapper().eq("role_id", roleId)); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsChannelMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsChannelMapper.java new file mode 100644 index 0000000..bc48f2b --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsChannelMapper.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsChannelDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.Date; + +@Mapper +public interface SysSmsChannelMapper extends BaseMapperX { + + default PageResult selectPage(SysSmsChannelPageReqVO reqVO) { + return selectPage(reqVO, new QueryWrapperX() + .likeIfPresent("signature", reqVO.getSignature()) + .eqIfPresent("status", reqVO.getStatus()) + .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) + .orderByDesc("id")); + } + + @Select("SELECT id FROM sys_sms_channel WHERE update_time > #{maxUpdateTime} LIMIT 1") + Long selectExistsByUpdateTimeAfter(Date maxUpdateTime); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsLogMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsLogMapper.java new file mode 100644 index 0000000..663b00a --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsLogMapper.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsLogDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface SysSmsLogMapper extends BaseMapperX { + + default PageResult selectPage(SysSmsLogPageReqVO reqVO) { + return selectPage(reqVO, new QueryWrapperX() + .eqIfPresent("channel_id", reqVO.getChannelId()) + .eqIfPresent("template_id", reqVO.getTemplateId()) + .likeIfPresent("mobile", reqVO.getMobile()) + .eqIfPresent("send_status", reqVO.getSendStatus()) + .betweenIfPresent("send_time", reqVO.getBeginSendTime(), reqVO.getEndSendTime()) + .eqIfPresent("receive_status", reqVO.getReceiveStatus()) + .betweenIfPresent("receive_time", reqVO.getBeginReceiveTime(), reqVO.getEndReceiveTime()) + .orderByDesc("id")); + } + + default List selectList(SysSmsLogExportReqVO reqVO) { + return selectList(new QueryWrapperX() + .eqIfPresent("channel_id", reqVO.getChannelId()) + .eqIfPresent("template_id", reqVO.getTemplateId()) + .likeIfPresent("mobile", reqVO.getMobile()) + .eqIfPresent("send_status", reqVO.getSendStatus()) + .betweenIfPresent("send_time", reqVO.getBeginSendTime(), reqVO.getEndSendTime()) + .eqIfPresent("receive_status", reqVO.getReceiveStatus()) + .betweenIfPresent("receive_time", reqVO.getBeginReceiveTime(), reqVO.getEndReceiveTime()) + .orderByDesc("id")); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsTemplateMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsTemplateMapper.java new file mode 100644 index 0000000..04465fe --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsTemplateMapper.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.Date; +import java.util.List; + +@Mapper +public interface SysSmsTemplateMapper extends BaseMapperX { + + default SysSmsTemplateDO selectByCode(String code) { + return selectOne("code", code); + } + + default PageResult selectPage(SysSmsTemplatePageReqVO reqVO) { + return selectPage(reqVO, new QueryWrapperX() + .eqIfPresent("type", reqVO.getType()) + .eqIfPresent("status", reqVO.getStatus()) + .likeIfPresent("code", reqVO.getCode()) + .likeIfPresent("content", reqVO.getContent()) + .likeIfPresent("api_template_id", reqVO.getApiTemplateId()) + .eqIfPresent("channel_id", reqVO.getChannelId()) + .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) + .orderByDesc("id")); + } + + default List selectList(SysSmsTemplateExportReqVO reqVO) { + return selectList(new QueryWrapperX() + .eqIfPresent("type", reqVO.getType()) + .eqIfPresent("status", reqVO.getStatus()) + .likeIfPresent("code", reqVO.getCode()) + .likeIfPresent("content", reqVO.getContent()) + .likeIfPresent("api_template_id", reqVO.getApiTemplateId()) + .eqIfPresent("channel_id", reqVO.getChannelId()) + .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) + .orderByDesc("id")); + } + + default Integer selectCountByChannelId(Long channelId) { + return selectCount("channel_id", channelId); + } + + @Select("SELECT id FROM sys_sms_template WHERE update_time > #{maxUpdateTime} LIMIT 1") + Long selectExistsByUpdateTimeAfter(Date maxUpdateTime); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/user/SysUserMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/user/SysUserMapper.java new file mode 100644 index 0000000..e36727e --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/user/SysUserMapper.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.user; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.Collection; +import java.util.List; + +@Mapper +public interface SysUserMapper extends BaseMapperX { + + default SysUserDO selectByUsername(String username) { + return selectOne(new QueryWrapper().eq("username", username)); + } + + default SysUserDO selectByMobile(String mobile) { + return selectOne(new QueryWrapper().eq("mobile", mobile)); + } + + default SysUserDO selectByEmail(String email) { + return selectOne(new QueryWrapper().eq("email", email)); + } + + default PageResult selectPage(SysUserPageReqVO reqVO, Collection deptIds) { + return selectPage(reqVO, new QueryWrapperX() + .likeIfPresent("username", reqVO.getUsername()) + .likeIfPresent("mobile", reqVO.getMobile()) + .eqIfPresent("status", reqVO.getStatus()) + .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime()) + .inIfPresent("dept_id", deptIds)); + } + + default List selectList(SysUserExportReqVO reqVO, Collection deptIds) { + return selectList(new QueryWrapperX().likeIfPresent("username", reqVO.getUsername()) + .likeIfPresent("mobile", reqVO.getMobile()) + .eqIfPresent("status", reqVO.getStatus()) + .betweenIfPresent("create_time", reqVO.getBeginTime(), reqVO.getEndTime()) + .inIfPresent("dept_id", deptIds)); + } + + default List selectListByNickname(String nickname) { + return selectList(new QueryWrapperX().like("nickname", nickname)); + } + + default List selectListByUsername(String username) { + return selectList(new QueryWrapperX().like("username", username)); + } + +} + diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/redis/RedisKeyConstants.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/RedisKeyConstants.java index e69de29..e69de29 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/dal/redis/RedisKeyConstants.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/RedisKeyConstants.java diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/SysRedisKeyConstants.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/SysRedisKeyConstants.java new file mode 100644 index 0000000..525b084 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/SysRedisKeyConstants.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.redis; + +import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine; +import cn.iocoder.yudao.framework.security.core.LoginUser; + +import static cn.iocoder.yudao.framework.redis.core.RedisKeyDefine.KeyTypeEnum.STRING; + +/** + * System Redis Key 枚举类 + * + * @author 芋道源码 + */ +public interface SysRedisKeyConstants { + + RedisKeyDefine LOGIN_USER = new RedisKeyDefine("登陆用户的缓存", + "login_user:%s", // 参数为 sessionId + STRING, LoginUser.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); + + RedisKeyDefine CAPTCHA_CODE = new RedisKeyDefine("验证码的缓存", + "captcha_code:%s", // 参数为 uuid + STRING, String.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/auth/SysLoginUserRedisDAO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/auth/SysLoginUserRedisDAO.java new file mode 100644 index 0000000..d62bbb0 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/auth/SysLoginUserRedisDAO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.redis.auth; + +import cn.iocoder.yudao.framework.security.core.LoginUser; +import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysUserSessionService; +import cn.iocoder.yudao.framework.common.util.json.JsonUtils; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.time.Duration; + +import static cn.iocoder.yudao.adminserver.modules.system.dal.redis.SysRedisKeyConstants.LOGIN_USER; + +/** + * {@link LoginUser} 的 RedisDAO + * + * @author 芋道源码 + */ +@Repository +public class SysLoginUserRedisDAO { + + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource + private SysUserSessionService sysUserSessionService; + + public LoginUser get(String sessionId) { + String redisKey = formatKey(sessionId); + return JsonUtils.parseObject(stringRedisTemplate.opsForValue().get(redisKey), LoginUser.class); + } + + public void set(String sessionId, LoginUser loginUser) { + String redisKey = formatKey(sessionId); + stringRedisTemplate.opsForValue().set(redisKey, JsonUtils.toJsonString(loginUser), + Duration.ofMillis(sysUserSessionService.getSessionTimeoutMillis())); + } + + public void delete(String sessionId) { + String redisKey = formatKey(sessionId); + stringRedisTemplate.delete(redisKey); + } + + private static String formatKey(String sessionId) { + return String.format(LOGIN_USER.getKeyTemplate(), sessionId); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/common/SysCaptchaRedisDAO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/common/SysCaptchaRedisDAO.java new file mode 100644 index 0000000..701501c --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/common/SysCaptchaRedisDAO.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.adminserver.modules.system.dal.redis.common; + +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.time.Duration; + +import static cn.iocoder.yudao.adminserver.modules.system.dal.redis.SysRedisKeyConstants.CAPTCHA_CODE; + +/** + * 验证码的 Redis DAO + * + * @author 芋道源码 + */ +@Repository +public class SysCaptchaRedisDAO { + + @Resource + private StringRedisTemplate stringRedisTemplate; + + public String get(String uuid) { + String redisKey = formatKey(uuid); + return stringRedisTemplate.opsForValue().get(redisKey); + } + + public void set(String uuid, String code, Duration timeout) { + String redisKey = formatKey(uuid); + stringRedisTemplate.opsForValue().set(redisKey, code, timeout); + } + + public void delete(String uuid) { + String redisKey = formatKey(uuid); + stringRedisTemplate.delete(redisKey); + } + + private static String formatKey(String uuid) { + return String.format(CAPTCHA_CODE.getKeyTemplate(), uuid); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/SysDictTypeConstants.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/SysDictTypeConstants.java new file mode 100644 index 0000000..cd480fc --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/SysDictTypeConstants.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.adminserver.modules.system.enums; + +/** + * System 字典类型的枚举类 + * + * @author 芋道源码 + */ +public interface SysDictTypeConstants { + + String USER_TYPE = "user_type"; // 用户类型 + String COMMON_STATUS = "sys_common_status"; // 系统状态 + + String USER_SEX = "sys_user_sex"; // 用户性别 + String OPERATE_TYPE = "sys_operate_type"; // 操作类型 + String LOGIN_RESULT = "sys_login_result"; // 登陆结果 + String CONFIG_TYPE = "sys_config_type"; // 参数配置类型 + String BOOLEAN_STRING = "sys_boolean_string"; // Boolean 是否类型 + + String SMS_CHANNEL_CODE = "sys_sms_channel_code"; // 短信渠道编码 + String SMS_TEMPLATE_TYPE = "sys_sms_template_type"; // 短信模板类型 + String SMS_SEND_STATUS = "sys_sms_send_status"; // 短信发送状态 + String SMS_RECEIVE_STATUS = "sys_sms_receive_status"; // 短信接收状态 + + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/SysErrorCodeConstants.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/SysErrorCodeConstants.java index 5cf7ee2..378cc55 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/enums/SysErrorCodeConstants.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/SysErrorCodeConstants.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.enums; +package cn.iocoder.yudao.adminserver.modules.system.enums; import cn.iocoder.yudao.framework.common.exception.ErrorCode; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/common/SysSexEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/common/SysSexEnum.java new file mode 100644 index 0000000..c764a0f --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/common/SysSexEnum.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.adminserver.modules.system.enums.common; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 性别的枚举值 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum SysSexEnum { + + MALE(1), // 男 + FEMALE(2); // 女 + + /** + * 性别 + */ + private final Integer sex; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/dept/DeptIdEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/dept/DeptIdEnum.java new file mode 100644 index 0000000..d228a9b --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/dept/DeptIdEnum.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.adminserver.modules.system.enums.dept; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 部门编号枚举 + */ +@Getter +@AllArgsConstructor +public enum DeptIdEnum { + + /** + * 根节点 + */ + ROOT(0L); + + private final Long id; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/errorcode/SysErrorCodeTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/errorcode/SysErrorCodeTypeEnum.java new file mode 100644 index 0000000..8c0b4c7 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/errorcode/SysErrorCodeTypeEnum.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.adminserver.modules.system.enums.errorcode; + +import cn.iocoder.yudao.framework.common.core.IntArrayValuable; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * 错误码的类型枚举 + * + * @author dylan + */ +@AllArgsConstructor +@Getter +public enum SysErrorCodeTypeEnum implements IntArrayValuable { + + /** + * 自动生成 + */ + AUTO_GENERATION(1), + /** + * 手动编辑 + */ + MANUAL_OPERATION(2); + + public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(SysErrorCodeTypeEnum::getType).toArray(); + + /** + * 类型 + */ + private final Integer type; + + @Override + public int[] array() { + return ARRAYS; + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/logger/SysLoginLogTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/logger/SysLoginLogTypeEnum.java new file mode 100644 index 0000000..d9aa2eb --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/logger/SysLoginLogTypeEnum.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.adminserver.modules.system.enums.logger; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 登陆日志的类型枚举 + */ +@Getter +@AllArgsConstructor +public enum SysLoginLogTypeEnum { + + LOGIN_USERNAME(100), // 使用账号登录 + + LOGOUT_SELF(200), // 自己主动登出 + LOGOUT_TIMEOUT(201), // 超时登出 + LOGOUT_DELETE(202), // 强制退出 + ; + + /** + * 日志类型 + */ + private final Integer type; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/logger/SysLoginResultEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/logger/SysLoginResultEnum.java new file mode 100644 index 0000000..b34a9fe --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/logger/SysLoginResultEnum.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.adminserver.modules.system.enums.logger; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 登陆结果的枚举类 + */ +@Getter +@AllArgsConstructor +public enum SysLoginResultEnum { + + SUCCESS(0), // 成功 + BAD_CREDENTIALS(10), // 账号或密码不正确 + USER_DISABLED(20), // 用户被禁用 + CAPTCHA_NOT_FOUND(30), // 验证码不存在 + CAPTCHA_CODE_ERROR(31), // 验证码不正确 + + UNKNOWN_ERROR(100), // 未知异常 + ; + + /** + * 结果 + */ + private final Integer result; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/notice/SysNoticeTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/notice/SysNoticeTypeEnum.java new file mode 100644 index 0000000..0c8bff3 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/notice/SysNoticeTypeEnum.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.adminserver.modules.system.enums.notice; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 通知类型 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum SysNoticeTypeEnum { + + NOTICE(1), + ANNOUNCEMENT(2); + + /** + * 类型 + */ + private final Integer type; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/MenuIdEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/MenuIdEnum.java new file mode 100644 index 0000000..a82ab25 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/MenuIdEnum.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.adminserver.modules.system.enums.permission; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * Menu 编号枚举 + */ +@Getter +@AllArgsConstructor +public enum MenuIdEnum { + + /** + * 根节点 + */ + ROOT(0L); + + private final Long id; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/MenuTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/MenuTypeEnum.java new file mode 100644 index 0000000..213f799 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/MenuTypeEnum.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.adminserver.modules.system.enums.permission; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 菜单类型枚举类 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum MenuTypeEnum { + + DIR(1), // 目录 + MENU(2), // 菜单 + BUTTON(3) // 按钮 + ; + + /** + * 类型 + */ + private final Integer type; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/RoleCodeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/RoleCodeEnum.java new file mode 100644 index 0000000..ddfdd05 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/RoleCodeEnum.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.adminserver.modules.system.enums.permission; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 角色标识枚举 + */ +@Getter +@AllArgsConstructor +public enum RoleCodeEnum { + + ADMIN("admin"), // 超级管理员 + ; + + /** + * 角色编码 + */ + private final String key; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/SysRoleTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/SysRoleTypeEnum.java new file mode 100644 index 0000000..61b15b0 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/permission/SysRoleTypeEnum.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.adminserver.modules.system.enums.permission; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum SysRoleTypeEnum { + + /** + * 内置角色 + */ + SYSTEM(1), + /** + * 自定义角色 + */ + CUSTOM(2); + + private final Integer type; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/sms/SysSmsReceiveStatusEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/sms/SysSmsReceiveStatusEnum.java new file mode 100644 index 0000000..54b6d4d --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/sms/SysSmsReceiveStatusEnum.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.adminserver.modules.system.enums.sms; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 短信的接收状态枚举 + * + * @author 芋道源码 + * @date 2021/2/1 13:39 + */ +@Getter +@AllArgsConstructor +public enum SysSmsReceiveStatusEnum { + + INIT(0), // 初始化 + SUCCESS(10), // 接收成功 + FAILURE(20), // 接收失败 + ; + + private final int status; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/sms/SysSmsSendStatusEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/sms/SysSmsSendStatusEnum.java new file mode 100644 index 0000000..de8ed50 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/sms/SysSmsSendStatusEnum.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.adminserver.modules.system.enums.sms; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 短信的发送状态枚举 + * + * @author zzf + * @date 2021/2/1 13:39 + */ +@Getter +@AllArgsConstructor +public enum SysSmsSendStatusEnum { + + INIT(0), // 初始化 + SUCCESS(10), // 发送成功 + FAILURE(20), // 发送失败 + IGNORE(30), // 忽略,即不发送 + ; + + private final int status; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/sms/SysSmsTemplateTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/sms/SysSmsTemplateTypeEnum.java new file mode 100644 index 0000000..779e799 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/sms/SysSmsTemplateTypeEnum.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.adminserver.modules.system.enums.sms; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 短信的模板类型枚举 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum SysSmsTemplateTypeEnum { + + VERIFICATION_CODE(1), // 验证码 + NOTICE(2), // 通知 + PROMOTION(3), // 营销 + ; + + /** + * 类型 + */ + private final int type; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/captcha/config/CaptchaConfig.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/captcha/config/CaptchaConfig.java new file mode 100644 index 0000000..174efe4 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/captcha/config/CaptchaConfig.java @@ -0,0 +1,9 @@ +package cn.iocoder.yudao.adminserver.modules.system.framework.captcha.config; + +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Configuration +@EnableConfigurationProperties(CaptchaProperties.class) +public class CaptchaConfig { +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/captcha/config/CaptchaProperties.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/captcha/config/CaptchaProperties.java new file mode 100644 index 0000000..6eadd4d --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/captcha/config/CaptchaProperties.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.adminserver.modules.system.framework.captcha.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.NotNull; +import java.time.Duration; + +@ConfigurationProperties(prefix = "yudao.captcha") +@Validated +@Data +public class CaptchaProperties { + + /** + * 验证码的过期时间 + */ + @NotNull(message = "验证码的过期时间不为空") + private Duration timeout; + /** + * 验证码的高度 + */ + @NotNull(message = "验证码的高度不能为空") + private Integer height; + /** + * 验证码的宽度 + */ + @NotNull(message = "验证码的宽度不能为空") + private Integer width; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/captcha/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/captcha/package-info.java index 9c4e944..039431d 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/captcha/package-info.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/captcha/package-info.java @@ -1,4 +1,4 @@ /** * 基于 Hutool captcha 库,实现验证码功能 */ -package cn.iocoder.dashboard.modules.system.framework.captcha; +package cn.iocoder.yudao.adminserver.modules.system.framework.captcha; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/codegen/config/CodegenConfiguration.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/codegen/config/CodegenConfiguration.java new file mode 100644 index 0000000..9f514ee --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/codegen/config/CodegenConfiguration.java @@ -0,0 +1,9 @@ +package cn.iocoder.yudao.adminserver.modules.system.framework.codegen.config; + +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Configuration +@EnableConfigurationProperties(CodegenProperties.class) +public class CodegenConfiguration { +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/codegen/config/CodegenProperties.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/codegen/config/CodegenProperties.java new file mode 100644 index 0000000..b0f0846 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/codegen/config/CodegenProperties.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.adminserver.modules.system.framework.codegen.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Collection; + +@ConfigurationProperties(prefix = "yudao.codegen") +@Validated +@Data +public class CodegenProperties { + + /** + * 生成的 Java 代码的基础包 + */ + @NotNull(message = "Java 代码的基础包不能为空") + private String basePackage; + + /** + * 数据库名数组 + */ + @NotEmpty(message = "数据库不能为空") + private Collection dbSchemas; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/codegen/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/codegen/package-info.java new file mode 100644 index 0000000..e700260 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/codegen/package-info.java @@ -0,0 +1,4 @@ +/** + * 代码生成器 + */ +package cn.iocoder.yudao.adminserver.modules.system.framework.codegen; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/package-info.java index 3d233e1..b745ae8 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/framework/package-info.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/framework/package-info.java @@ -3,4 +3,4 @@ * * @author 芋道源码 */ -package cn.iocoder.dashboard.modules.system.framework; +package cn.iocoder.yudao.adminserver.modules.system.framework; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/job/auth/SysUserSessionTimeoutJob.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/job/auth/SysUserSessionTimeoutJob.java new file mode 100644 index 0000000..4614ac6 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/job/auth/SysUserSessionTimeoutJob.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.adminserver.modules.system.job.auth; + +import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; +import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysUserSessionService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 用户 Session 超时 Job + * + * @author 願 + */ +@Component +@Slf4j +public class SysUserSessionTimeoutJob implements JobHandler { + + @Resource + private SysUserSessionService sysUserSessionService; + + @Override + public String execute(String param) throws Exception { + // 执行过期 + Long timeoutCount = sysUserSessionService.clearSessionTimeout(); + // 返回结果,记录每次的超时数量 + return String.format("移除在线会话数量为 %s 个", timeoutCount); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/job/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/job/package-info.java new file mode 100644 index 0000000..b5c66a5 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/job/package-info.java @@ -0,0 +1 @@ +package cn.iocoder.yudao.adminserver.modules.system.job; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/dept/SysDeptRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/dept/SysDeptRefreshConsumer.java new file mode 100644 index 0000000..6673826 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/dept/SysDeptRefreshConsumer.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.dept; + +import cn.iocoder.yudao.framework.redis.core.pubsub.AbstractChannelMessageListener; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.dept.SysDeptRefreshMessage; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 针对 {@link SysDeptRefreshMessage} 的消费者 + * + * @author 芋道源码 + */ +@Component +@Slf4j +public class SysDeptRefreshConsumer extends AbstractChannelMessageListener { + + @Resource + private SysDeptService deptService; + + @Override + public void onMessage(SysDeptRefreshMessage message) { + log.info("[onMessage][收到 Dept 刷新消息]"); + deptService.initLocalCache(); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/dict/SysDictDataRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/dict/SysDictDataRefreshConsumer.java new file mode 100644 index 0000000..d7ff74d --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/dict/SysDictDataRefreshConsumer.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.dict; + +import cn.iocoder.yudao.framework.redis.core.pubsub.AbstractChannelMessageListener; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.dict.SysDictDataRefreshMessage; +import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictDataService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 针对 {@link SysDictDataRefreshMessage} 的消费者 + * + * @author 芋道源码 + */ +@Component +@Slf4j +public class SysDictDataRefreshConsumer extends AbstractChannelMessageListener { + + @Resource + private SysDictDataService dictDataService; + + @Override + public void onMessage(SysDictDataRefreshMessage message) { + log.info("[onMessage][收到 DictData 刷新消息]"); + dictDataService.initLocalCache(); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/mail/SysMailSendConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/mail/SysMailSendConsumer.java new file mode 100644 index 0000000..3862987 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/mail/SysMailSendConsumer.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.mail; + +import cn.iocoder.yudao.framework.redis.core.stream.AbstractStreamMessageListener; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.mail.SysMailSendMessage; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +public class SysMailSendConsumer extends AbstractStreamMessageListener { + + @Override + public void onMessage(SysMailSendMessage message) { + log.info("[onMessage][消息内容({})]", message); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysMenuRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysMenuRefreshConsumer.java new file mode 100644 index 0000000..3d25416 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysMenuRefreshConsumer.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.permission; + +import cn.iocoder.yudao.framework.redis.core.pubsub.AbstractChannelMessageListener; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysMenuRefreshMessage; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysMenuService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 针对 {@link SysMenuRefreshMessage} 的消费者 + * + * @author 芋道源码 + */ +@Component +@Slf4j +public class SysMenuRefreshConsumer extends AbstractChannelMessageListener { + + @Resource + private SysMenuService menuService; + + @Override + public void onMessage(SysMenuRefreshMessage message) { + log.info("[onMessage][收到 Menu 刷新消息]"); + menuService.initLocalCache(); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysRoleMenuRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysRoleMenuRefreshConsumer.java new file mode 100644 index 0000000..fc82706 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysRoleMenuRefreshConsumer.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.permission; + +import cn.iocoder.yudao.framework.redis.core.pubsub.AbstractChannelMessageListener; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysRoleMenuRefreshMessage; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 针对 {@link SysRoleMenuRefreshMessage} 的消费者 + * + * @author 芋道源码 + */ +@Component +@Slf4j +public class SysRoleMenuRefreshConsumer extends AbstractChannelMessageListener { + + @Resource + private SysPermissionService permissionService; + + @Override + public void onMessage(SysRoleMenuRefreshMessage message) { + log.info("[onMessage][收到 Role 与 Menu 的关联刷新消息]"); + permissionService.initLocalCache(); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysRoleRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysRoleRefreshConsumer.java new file mode 100644 index 0000000..8bb2dee --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/permission/SysRoleRefreshConsumer.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.permission; + +import cn.iocoder.yudao.framework.redis.core.pubsub.AbstractChannelMessageListener; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysRoleRefreshMessage; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 针对 {@link SysRoleRefreshMessage} 的消费者 + * + * @author 芋道源码 + */ +@Component +@Slf4j +public class SysRoleRefreshConsumer extends AbstractChannelMessageListener { + + @Resource + private SysRoleService roleService; + + @Override + public void onMessage(SysRoleRefreshMessage message) { + log.info("[onMessage][收到 Role 刷新消息]"); + roleService.initLocalCache(); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsChannelRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsChannelRefreshConsumer.java new file mode 100644 index 0000000..21c1874 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsChannelRefreshConsumer.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.sms; + +import cn.iocoder.yudao.framework.redis.core.pubsub.AbstractChannelMessageListener; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsChannelRefreshMessage; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsChannelService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 针对 {@link SysSmsChannelRefreshMessage} 的消费者 + * + * @author 芋道源码 + */ +@Component +@Slf4j +public class SysSmsChannelRefreshConsumer extends AbstractChannelMessageListener { + + @Resource + private SysSmsChannelService smsChannelService; + + @Override + public void onMessage(SysSmsChannelRefreshMessage message) { + log.info("[onMessage][收到 SmsChannel 刷新消息]"); + smsChannelService.initSmsClients(); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsSendConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsSendConsumer.java new file mode 100644 index 0000000..68fa315 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsSendConsumer.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.sms; + +import cn.iocoder.yudao.framework.redis.core.stream.AbstractStreamMessageListener; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsSendMessage; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 针对 {@link SysSmsSendMessage} 的消费者 + * + * @author zzf + * @date 2021/3/9 16:35 + */ +@Component +@Slf4j +public class SysSmsSendConsumer extends AbstractStreamMessageListener { + + @Resource + private SysSmsService smsService; + + @Override + public void onMessage(SysSmsSendMessage message) { + log.info("[onMessage][消息内容({})]", message); + smsService.doSendSms(message); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsTemplateRefreshConsumer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsTemplateRefreshConsumer.java new file mode 100644 index 0000000..b083243 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsTemplateRefreshConsumer.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.sms; + +import cn.iocoder.yudao.framework.redis.core.pubsub.AbstractChannelMessageListener; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsTemplateRefreshMessage; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsTemplateService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 针对 {@link SysSmsTemplateRefreshMessage} 的消费者 + * + * @author 芋道源码 + */ +@Component +@Slf4j +public class SysSmsTemplateRefreshConsumer extends AbstractChannelMessageListener { + + @Resource + private SysSmsTemplateService smsTemplateService; + + @Override + public void onMessage(SysSmsTemplateRefreshMessage message) { + log.info("[onMessage][收到 SmsTemplate 刷新消息]"); + smsTemplateService.initLocalCache(); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/dept/SysDeptRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/dept/SysDeptRefreshMessage.java new file mode 100644 index 0000000..2aa5332 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/dept/SysDeptRefreshMessage.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.message.dept; + +import cn.iocoder.yudao.framework.redis.core.pubsub.ChannelMessage; +import lombok.Data; + +/** + * 部门数据刷新 Message + */ +@Data +public class SysDeptRefreshMessage implements ChannelMessage { + + @Override + public String getChannel() { + return "system.dept.refresh"; + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/dict/SysDictDataRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/dict/SysDictDataRefreshMessage.java new file mode 100644 index 0000000..b4520fb --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/dict/SysDictDataRefreshMessage.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.message.dict; + +import cn.iocoder.yudao.framework.redis.core.pubsub.ChannelMessage; +import lombok.Data; + +/** + * 字典数据数据刷新 Message + */ +@Data +public class SysDictDataRefreshMessage implements ChannelMessage { + + @Override + public String getChannel() { + return "system.dict-data.refresh"; + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/mail/SysMailSendMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/mail/SysMailSendMessage.java new file mode 100644 index 0000000..cfea76b --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/mail/SysMailSendMessage.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.message.mail; + +import cn.iocoder.yudao.framework.redis.core.stream.StreamMessage; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.Map; + +/** + * 邮箱发送消息 + * + * @author 芋道源码 + */ +@Data +public class SysMailSendMessage implements StreamMessage { + + /** + * 邮箱地址 + */ + @NotNull(message = "邮箱地址不能为空") + private String address; + /** + * 短信模板编号 + */ + @NotNull(message = "短信模板编号不能为空") + private String templateCode; + /** + * 短信模板参数 + */ + private Map templateParams; + + /** + * 用户编号,允许空 + */ + private Integer userId; + /** + * 用户类型,允许空 + */ + private Integer userType; + + @Override + public String getStreamKey() { + return "system.mail.send"; + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysMenuRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysMenuRefreshMessage.java new file mode 100644 index 0000000..73d611f --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysMenuRefreshMessage.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.message.permission; + +import cn.iocoder.yudao.framework.redis.core.pubsub.ChannelMessage; +import lombok.Data; + +/** + * 菜单数据刷新 Message + */ +@Data +public class SysMenuRefreshMessage implements ChannelMessage { + + @Override + public String getChannel() { + return "system.menu.refresh"; + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysRoleMenuRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysRoleMenuRefreshMessage.java new file mode 100644 index 0000000..03e321c --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysRoleMenuRefreshMessage.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.message.permission; + +import cn.iocoder.yudao.framework.redis.core.pubsub.ChannelMessage; +import lombok.Data; + +/** + * 角色与菜单数据刷新 Message + */ +@Data +public class SysRoleMenuRefreshMessage implements ChannelMessage { + + @Override + public String getChannel() { + return "system.role-menu.refresh"; + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysRoleRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysRoleRefreshMessage.java new file mode 100644 index 0000000..9ae1d94 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysRoleRefreshMessage.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.message.permission; + +import cn.iocoder.yudao.framework.redis.core.pubsub.ChannelMessage; +import lombok.Data; + +/** + * 角色数据刷新 Message + */ +@Data +public class SysRoleRefreshMessage implements ChannelMessage { + + @Override + public String getChannel() { + return "system.role.refresh"; + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/sms/SysSmsChannelRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/sms/SysSmsChannelRefreshMessage.java new file mode 100644 index 0000000..7379188 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/sms/SysSmsChannelRefreshMessage.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.message.sms; + +import cn.iocoder.yudao.framework.redis.core.pubsub.ChannelMessage; +import lombok.Data; + +/** + * 短信渠道的数据刷新 Message + */ +@Data +public class SysSmsChannelRefreshMessage implements ChannelMessage { + + @Override + public String getChannel() { + return "system.sms-channel.refresh"; + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/sms/SysSmsSendMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/sms/SysSmsSendMessage.java new file mode 100644 index 0000000..f073640 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/sms/SysSmsSendMessage.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.message.sms; + +import cn.iocoder.yudao.framework.common.core.KeyValue; +import cn.iocoder.yudao.framework.redis.core.stream.StreamMessage; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 短信发送消息 + * + * @author 芋道源码 + */ +@Data +public class SysSmsSendMessage implements StreamMessage { + + /** + * 短信日志编号 + */ + @NotNull(message = "短信日志编号不能为空") + private Long logId; + /** + * 手机号 + */ + @NotNull(message = "手机号不能为空") + private String mobile; + /** + * 短信渠道编号 + */ + @NotNull(message = "短信渠道编号不能为空") + private Long channelId; + /** + * 短信 API 的模板编号 + */ + @NotNull(message = "短信 API 的模板编号不能为空") + private String apiTemplateId; + /** + * 短信模板参数 + */ + private List> templateParams; + + @Override + public String getStreamKey() { + return "system.sms.send"; + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/sms/SysSmsTemplateRefreshMessage.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/sms/SysSmsTemplateRefreshMessage.java new file mode 100644 index 0000000..9472f8b --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/sms/SysSmsTemplateRefreshMessage.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.message.sms; + +import cn.iocoder.yudao.framework.redis.core.pubsub.ChannelMessage; +import lombok.Data; + +/** + * 短信模板的数据刷新 Message + */ +@Data +public class SysSmsTemplateRefreshMessage implements ChannelMessage { + + @Override + public String getChannel() { + return "system.sms-template.refresh"; + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/dept/SysDeptProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/dept/SysDeptProducer.java new file mode 100644 index 0000000..b4c974a --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/dept/SysDeptProducer.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.producer.dept; + +import cn.iocoder.yudao.framework.redis.core.util.RedisMessageUtils; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.dept.SysDeptRefreshMessage; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * Dept 部门相关消息的 Producer + */ +@Component +public class SysDeptProducer { + + @Resource + private StringRedisTemplate stringRedisTemplate; + + /** + * 发送 {@link SysDeptRefreshMessage} 消息 + */ + public void sendDeptRefreshMessage() { + SysDeptRefreshMessage message = new SysDeptRefreshMessage(); + RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/dict/SysDictDataProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/dict/SysDictDataProducer.java new file mode 100644 index 0000000..5eb29eb --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/dict/SysDictDataProducer.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.producer.dict; + +import cn.iocoder.yudao.framework.redis.core.util.RedisMessageUtils; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.dict.SysDictDataRefreshMessage; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * DictData 字典数据相关消息的 Producer + */ +@Component +public class SysDictDataProducer { + + @Resource + private StringRedisTemplate stringRedisTemplate; + + /** + * 发送 {@link SysDictDataRefreshMessage} 消息 + */ + public void sendDictDataRefreshMessage() { + SysDictDataRefreshMessage message = new SysDictDataRefreshMessage(); + RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysMenuProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysMenuProducer.java new file mode 100644 index 0000000..4e1e6a6 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysMenuProducer.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission; + +import cn.iocoder.yudao.framework.redis.core.util.RedisMessageUtils; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysMenuRefreshMessage; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * Menu 菜单相关消息的 Producer + */ +@Component +public class SysMenuProducer { + + @Resource + private StringRedisTemplate stringRedisTemplate; + + /** + * 发送 {@link SysMenuRefreshMessage} 消息 + */ + public void sendMenuRefreshMessage() { + SysMenuRefreshMessage message = new SysMenuRefreshMessage(); + RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysPermissionProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysPermissionProducer.java new file mode 100644 index 0000000..310fefd --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysPermissionProducer.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission; + +import cn.iocoder.yudao.framework.redis.core.util.RedisMessageUtils; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysRoleMenuRefreshMessage; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * Permission 权限相关消息的 Producer + */ +@Component +public class SysPermissionProducer { + + @Resource + private StringRedisTemplate stringRedisTemplate; + + /** + * 发送 {@link SysRoleMenuRefreshMessage} 消息 + */ + public void sendRoleMenuRefreshMessage() { + SysRoleMenuRefreshMessage message = new SysRoleMenuRefreshMessage(); + RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysRoleProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysRoleProducer.java new file mode 100644 index 0000000..09579e7 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysRoleProducer.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission; + +import cn.iocoder.yudao.framework.redis.core.util.RedisMessageUtils; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysRoleRefreshMessage; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * Role 角色相关消息的 Producer + * + * @author 芋道源码 + */ +@Component +public class SysRoleProducer { + + @Resource + private StringRedisTemplate stringRedisTemplate; + + /** + * 发送 {@link SysRoleRefreshMessage} 消息 + */ + public void sendRoleRefreshMessage() { + SysRoleRefreshMessage message = new SysRoleRefreshMessage(); + RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/sms/SysSmsProducer.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/sms/SysSmsProducer.java new file mode 100644 index 0000000..53aa973 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/sms/SysSmsProducer.java @@ -0,0 +1,60 @@ +package cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms; + +import cn.iocoder.yudao.framework.common.core.KeyValue; +import cn.iocoder.yudao.framework.redis.core.util.RedisMessageUtils; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsChannelRefreshMessage; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsSendMessage; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsTemplateRefreshMessage; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; + +/** + * Sms 短信相关消息的 Producer + * + * @author zzf + * @date 2021/3/9 16:35 + */ +@Slf4j +@Component +public class SysSmsProducer { + + @Resource + private StringRedisTemplate stringRedisTemplate; + + /** + * 发送 {@link SysSmsSendMessage} 消息 + * + * @param logId 短信日志编号 + * @param mobile 手机号 + * @param channelId 渠道编号 + * @param apiTemplateId 短信模板编号 + * @param templateParams 短信模板参数 + */ + public void sendSmsSendMessage(Long logId, String mobile, + Long channelId, String apiTemplateId, List> templateParams) { + SysSmsSendMessage message = new SysSmsSendMessage().setLogId(logId).setMobile(mobile); + message.setChannelId(channelId).setApiTemplateId(apiTemplateId).setTemplateParams(templateParams); + RedisMessageUtils.sendStreamMessage(stringRedisTemplate, message); + } + + /** + * 发送 {@link SysSmsChannelRefreshMessage} 消息 + */ + public void sendSmsChannelRefreshMessage() { + SysSmsChannelRefreshMessage message = new SysSmsChannelRefreshMessage(); + RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); + } + + /** + * 发送 {@link SysSmsTemplateRefreshMessage} 消息 + */ + public void sendSmsTemplateRefreshMessage() { + SysSmsTemplateRefreshMessage message = new SysSmsTemplateRefreshMessage(); + RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/package-info.java new file mode 100644 index 0000000..f043c0f --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/package-info.java @@ -0,0 +1,7 @@ +/** + * system 包下,我们放通用业务,支撑上层的核心业务。 + * 例如说:用户、部门、权限、数据字典等等 + * + * 缩写:sys + */ +package cn.iocoder.yudao.adminserver.modules.system; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthService.java new file mode 100644 index 0000000..1ef1bdf --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthService.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.auth; + +import cn.iocoder.yudao.framework.security.core.service.SecurityAuthFrameworkService; +import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthLoginReqVO; + +/** + * 认证 Service 接口 + * + * 提供用户的账号密码登陆、token 的校验等认证相关的功能 + * + * @author 芋道源码 + */ +public interface SysAuthService extends SecurityAuthFrameworkService { + + /** + * 登陆用户 + * + * @param reqVO 登陆信息 + * @param userIp 用户 IP + * @param userAgent 用户 UA + * @return 身份令牌,使用 JWT 方式 + */ + String login(SysAuthLoginReqVO reqVO, String userIp, String userAgent); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysUserSessionService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysUserSessionService.java new file mode 100644 index 0000000..11558e9 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysUserSessionService.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.auth; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.security.core.LoginUser; +import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.auth.SysUserSessionDO; + +/** + * 在线用户 Session Service 接口 + * + * @author 芋道源码 + */ +public interface SysUserSessionService { + + /** + * 创建在线用户 Session + * + * @param loginUser 登陆用户 + * @param userIp 用户 IP + * @param userAgent 用户 UA + * @return Session 编号 + */ + String createUserSession(LoginUser loginUser, String userIp, String userAgent); + + /** + * 刷新在线用户 Session 的更新时间 + * + * @param sessionId Session 编号 + * @param loginUser 登陆用户 + */ + void refreshUserSession(String sessionId, LoginUser loginUser); + + /** + * 删除在线用户 Session + * + * @param sessionId Session 编号 + */ + void deleteUserSession(String sessionId); + + /** + * 获得 Session 编号对应的在线用户 + * + * @param sessionId Session 编号 + * @return 在线用户 + */ + LoginUser getLoginUser(String sessionId); + + /** + * 获得 Session 超时时间,单位:毫秒 + * + * @return 超时时间 + */ + Long getSessionTimeoutMillis(); + + /** + * 获得在线用户分页列表 + * + * @param reqVO 分页条件 + * @return 份额与列表 + */ + PageResult getUserSessionPage(SysUserSessionPageReqVO reqVO); + + /** + * 移除超时的在线用户 + * + * @return {@link Long } 移出的超时用户数量 + **/ + long clearSessionTimeout(); +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/auth/impl/SysAuthServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java index 11d6f5f..f69c967 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/auth/impl/SysAuthServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java @@ -1,21 +1,21 @@ -package cn.iocoder.dashboard.modules.system.service.auth.impl; +package cn.iocoder.yudao.adminserver.modules.system.service.auth.impl; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; -import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthLoginReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO; -import cn.iocoder.dashboard.modules.system.convert.auth.SysAuthConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.dashboard.modules.system.enums.logger.SysLoginLogTypeEnum; -import cn.iocoder.dashboard.modules.system.enums.logger.SysLoginResultEnum; -import cn.iocoder.dashboard.modules.system.service.auth.SysAuthService; -import cn.iocoder.dashboard.modules.system.service.auth.SysUserSessionService; -import cn.iocoder.dashboard.modules.system.service.common.SysCaptchaService; -import cn.iocoder.dashboard.modules.system.service.logger.SysLoginLogService; -import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; -import cn.iocoder.dashboard.modules.system.service.user.SysUserService; +import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthLoginReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.auth.SysAuthConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeEnum; +import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum; +import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysAuthService; +import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysUserSessionService; +import cn.iocoder.yudao.adminserver.modules.system.service.common.SysCaptchaService; +import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysLoginLogService; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; +import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Lazy; @@ -34,7 +34,7 @@ import javax.annotation.Resource; import java.util.Set; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; import static java.util.Collections.singleton; /** diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysUserSessionServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysUserSessionServiceImpl.java new file mode 100644 index 0000000..ca95fe0 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysUserSessionServiceImpl.java @@ -0,0 +1,151 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.auth.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.security.config.SecurityProperties; +import cn.iocoder.yudao.framework.security.core.LoginUser; +import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; +import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.auth.SysUserSessionDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.auth.SysUserSessionMapper; +import cn.iocoder.yudao.adminserver.modules.system.dal.redis.auth.SysLoginUserRedisDAO; +import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeEnum; +import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum; +import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysUserSessionService; +import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysLoginLogService; +import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; +import com.google.common.collect.Lists; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.time.Duration; +import java.util.*; +import java.util.stream.Collectors; + +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime; + +/** + * 在线用户 Session Service 实现类 + * + * @author 芋道源码 + */ +@Service +public class SysUserSessionServiceImpl implements SysUserSessionService { + + @Resource + private SecurityProperties securityProperties; + @Resource + private SysLoginUserRedisDAO loginUserRedisDAO; + @Resource + private SysUserSessionMapper userSessionMapper; + @Resource + private SysUserService userService; + @Resource + private SysLoginLogService loginLogService; + + @Override + public String createUserSession(LoginUser loginUser, String userIp, String userAgent) { + // 生成 Session 编号 + String sessionId = generateSessionId(); + // 写入 Redis 缓存 + loginUser.setUpdateTime(new Date()); + loginUserRedisDAO.set(sessionId, loginUser); + // 写入 DB 中 + SysUserSessionDO userSession = SysUserSessionDO.builder().id(sessionId) + .userId(loginUser.getId()).userIp(userIp).userAgent(userAgent).username(loginUser.getUsername()) + .sessionTimeout(addTime(Duration.ofMillis(getSessionTimeoutMillis()))) + .build(); + userSessionMapper.insert(userSession); + // 返回 Session 编号 + return sessionId; + } + + @Override + public void refreshUserSession(String sessionId, LoginUser loginUser) { + // 写入 Redis 缓存 + loginUser.setUpdateTime(new Date()); + loginUserRedisDAO.set(sessionId, loginUser); + // 更新 DB 中 + SysUserSessionDO updateObj = SysUserSessionDO.builder().id(sessionId).build(); + updateObj.setUsername(loginUser.getUsername()); + updateObj.setUpdateTime(new Date()); + updateObj.setSessionTimeout(addTime(Duration.ofMillis(getSessionTimeoutMillis()))); + userSessionMapper.updateById(updateObj); + } + + @Override + public void deleteUserSession(String sessionId) { + // 删除 Redis 缓存 + loginUserRedisDAO.delete(sessionId); + // 删除 DB 记录 + userSessionMapper.deleteById(sessionId); + } + + @Override + public LoginUser getLoginUser(String sessionId) { + return loginUserRedisDAO.get(sessionId); + } + + @Override + public Long getSessionTimeoutMillis() { + return securityProperties.getSessionTimeout().toMillis(); + } + + @Override + public PageResult getUserSessionPage(SysUserSessionPageReqVO reqVO) { + // 处理基于用户昵称的查询 + Collection userIds = null; + if (StrUtil.isNotEmpty(reqVO.getUsername())) { + userIds = convertSet(userService.getUsersByUsername(reqVO.getUsername()), SysUserDO::getId); + if (CollUtil.isEmpty(userIds)) { + return PageResult.empty(); + } + } + return userSessionMapper.selectPage(reqVO, userIds); + } + + @Override + public long clearSessionTimeout() { + // 获取db里已经超时的用户列表 + List sessionTimeoutDOS = userSessionMapper.selectListBySessionTimoutLt(); + Map timeoutSessionDOMap = sessionTimeoutDOS + .stream() + .filter(sessionDO -> loginUserRedisDAO.get(sessionDO.getId()) == null) + .collect(Collectors.toMap(SysUserSessionDO::getId, o -> o)); + // 确认已经超时,按批次移出在线用户列表 + if (CollUtil.isNotEmpty(timeoutSessionDOMap)) { + Lists.partition(new ArrayList<>(timeoutSessionDOMap.keySet()), 100).forEach(userSessionMapper::deleteBatchIds); + //记录用户超时退出日志 + createTimeoutLogoutLog(timeoutSessionDOMap.values()); + } + return timeoutSessionDOMap.size(); + } + + private void createTimeoutLogoutLog(Collection timeoutSessionDOS) { + for (SysUserSessionDO timeoutSessionDO : timeoutSessionDOS) { + SysLoginLogCreateReqVO reqVO = new SysLoginLogCreateReqVO(); + reqVO.setLogType(SysLoginLogTypeEnum.LOGOUT_TIMEOUT.getType()); + reqVO.setTraceId(TracerUtils.getTraceId()); + reqVO.setUsername(timeoutSessionDO.getUsername()); + reqVO.setUserAgent(timeoutSessionDO.getUserAgent()); + reqVO.setUserIp(timeoutSessionDO.getUserIp()); + reqVO.setResult(SysLoginResultEnum.SUCCESS.getResult()); + loginLogService.createLoginLog(reqVO); + } + } + + /** + * 生成 Session 编号,目前采用 UUID 算法 + * + * @return Session 编号 + */ + private static String generateSessionId() { + return IdUtil.fastSimpleUUID(); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/common/SysCaptchaService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/common/SysCaptchaService.java new file mode 100644 index 0000000..286a5ef --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/common/SysCaptchaService.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.common; + +import cn.iocoder.yudao.adminserver.modules.system.controller.common.vo.SysCaptchaImageRespVO; + +/** + * 验证码 Service 接口 + */ +public interface SysCaptchaService { + + /** + * 获得验证码图片 + * + * @return 验证码图片 + */ + SysCaptchaImageRespVO getCaptchaImage(); + + /** + * 获得 uuid 对应的验证码 + * + * @param uuid 验证码编号 + * @return 验证码 + */ + String getCaptchaCode(String uuid); + + /** + * 删除 uuid 对应的验证码 + * + * @param uuid 验证码编号 + */ + void deleteCaptchaCode(String uuid); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/common/impl/SysCaptchaServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/common/impl/SysCaptchaServiceImpl.java new file mode 100644 index 0000000..44d291f --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/common/impl/SysCaptchaServiceImpl.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.common.impl; + +import cn.hutool.captcha.CaptchaUtil; +import cn.hutool.captcha.CircleCaptcha; +import cn.hutool.core.util.IdUtil; +import cn.iocoder.yudao.adminserver.modules.system.framework.captcha.config.CaptchaProperties; +import cn.iocoder.yudao.adminserver.modules.system.controller.common.vo.SysCaptchaImageRespVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.common.SysCaptchaConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.redis.common.SysCaptchaRedisDAO; +import cn.iocoder.yudao.adminserver.modules.system.service.common.SysCaptchaService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * 验证码 Service 实现类 + */ +@Service +public class SysCaptchaServiceImpl implements SysCaptchaService { + + @Resource + private CaptchaProperties captchaProperties; + + @Resource + private SysCaptchaRedisDAO captchaRedisDAO; + + @Override + public SysCaptchaImageRespVO getCaptchaImage() { + // 生成验证码 + CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(captchaProperties.getWidth(), captchaProperties.getHeight()); + // 缓存到 Redis 中 + String uuid = IdUtil.fastSimpleUUID(); + captchaRedisDAO.set(uuid, captcha.getCode(), captchaProperties.getTimeout()); + // 返回 + return SysCaptchaConvert.INSTANCE.convert(uuid, captcha); + } + + @Override + public String getCaptchaCode(String uuid) { + return captchaRedisDAO.get(uuid); + } + + @Override + public void deleteCaptchaCode(String uuid) { + captchaRedisDAO.delete(uuid); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysDeptService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysDeptService.java new file mode 100644 index 0000000..ad57b73 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysDeptService.java @@ -0,0 +1,96 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.dept; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptListReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO; +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + * 部门 Service 接口 + * + * @author 芋道源码 + */ +public interface SysDeptService { + + /** + * 初始化部门的本地缓存 + */ + void initLocalCache(); + + /** + * 创建部门 + * + * @param reqVO 部门信息 + * @return 部门编号 + */ + Long createDept(SysDeptCreateReqVO reqVO); + + /** + * 更新部门 + * + * @param reqVO 部门信息 + */ + void updateDept(SysDeptUpdateReqVO reqVO); + + /** + * 删除部门 + * + * @param id 部门编号 + */ + void deleteDept(Long id); + + /** + * 获得指定编号的部门列表 + * + * @param ids 部门编号数组 + * @return 部门列表 + */ + List getSimpleDepts(Collection ids); + + /** + * 获得指定编号的部门 Map + * + * @param ids 部门编号数组 + * @return 部门 Map + */ + default Map getDeptMap(Collection ids) { + if (CollUtil.isEmpty(ids)) { + return Collections.emptyMap(); + } + List list = getSimpleDepts(ids); + return CollectionUtils.convertMap(list, SysDeptDO::getId); + } + + /** + * 筛选部门列表 + * + * @param reqVO 筛选条件请求 VO + * @return 部门列表 + */ + List getSimpleDepts(SysDeptListReqVO reqVO); + + /** + * 获得部门信息 + * + * @param id 部门编号 + * @return 部门信息 + */ + SysDeptDO getDept(Long id); + + /** + * 获得所有子部门,从缓存中 + * + * @param parentId 部门编号 + * @param recursive 是否递归获取所有 + * @return 子部门列表 + */ + List getDeptsByParentIdFromCache(Long parentId, boolean recursive); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysPostService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysPostService.java new file mode 100644 index 0000000..d9a0db7 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysPostService.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.dept; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO; +import org.springframework.lang.Nullable; + +import java.util.Collection; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet; + +/** + * 岗位 Service 接口 + * + * @author 芋道源码 + */ +public interface SysPostService { + + /** + * 创建岗位 + * + * @param reqVO 岗位信息 + * @return 岗位编号 + */ + Long createPost(SysPostCreateReqVO reqVO); + + /** + * 更新岗位 + * + * @param reqVO 岗位信息 + */ + void updatePost(SysPostUpdateReqVO reqVO); + + /** + * 删除岗位信息 + * + * @param id 岗位编号 + */ + void deletePost(Long id); + + /** + * 获得岗位列表 + * + * @param ids 岗位编号数组。如果为空,不进行筛选 + * @return 部门列表 + */ + default List getPosts(@Nullable Collection ids) { + return getPosts(ids, asSet(CommonStatusEnum.ENABLE.getStatus(), CommonStatusEnum.DISABLE.getStatus())); + } + + /** + * 获得符合条件的岗位列表 + * + * @param ids 岗位编号数组。如果为空,不进行筛选 + * @param statuses 状态数组。如果为空,不进行筛选 + * @return 部门列表 + */ + List getPosts(@Nullable Collection ids, @Nullable Collection statuses); + + /** + * 获得岗位分页列表 + * + * @param reqVO 分页条件 + * @return 部门分页列表 + */ + PageResult getPostPage(SysPostPageReqVO reqVO); + + /** + * 获得岗位列表 + * + * @param reqVO 查询条件 + * @return 部门列表 + */ + List getPosts(SysPostExportReqVO reqVO); + + /** + * 获得岗位信息 + * + * @param id 岗位编号 + * @return 岗位信息 + */ + SysPostDO getPost(Long id); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dept/impl/SysDeptServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/impl/SysDeptServiceImpl.java index 7ddeb2a..cac9bf5 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dept/impl/SysDeptServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/impl/SysDeptServiceImpl.java @@ -1,18 +1,18 @@ -package cn.iocoder.dashboard.modules.system.service.dept.impl; +package cn.iocoder.yudao.adminserver.modules.system.service.dept.impl; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.dept.SysDeptCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.dept.SysDeptListReqVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.dept.SysDeptUpdateReqVO; -import cn.iocoder.dashboard.modules.system.convert.dept.SysDeptConvert; -import cn.iocoder.dashboard.modules.system.dal.mysql.dept.SysDeptMapper; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; -import cn.iocoder.dashboard.modules.system.enums.dept.DeptIdEnum; -import cn.iocoder.dashboard.modules.system.mq.producer.dept.SysDeptProducer; -import cn.iocoder.dashboard.modules.system.service.dept.SysDeptService; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptListReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.dept.SysDeptConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept.SysDeptMapper; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO; +import cn.iocoder.yudao.adminserver.modules.system.enums.dept.DeptIdEnum; +import cn.iocoder.yudao.adminserver.modules.system.mq.producer.dept.SysDeptProducer; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.Multimap; @@ -25,7 +25,7 @@ import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.util.*; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; /** * 部门 Service 实现类 diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/impl/SysPostServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/impl/SysPostServiceImpl.java new file mode 100644 index 0000000..032e59a --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/impl/SysPostServiceImpl.java @@ -0,0 +1,128 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.dept.impl; + +import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.dept.SysPostConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept.SysPostMapper; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.Collection; +import java.util.List; + +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; + +/** + * 岗位 Service 实现类 + * + * @author 芋道源码 + */ +@Service +@Validated +public class SysPostServiceImpl implements SysPostService { + + @Resource + private SysPostMapper postMapper; + + @Override + public Long createPost(SysPostCreateReqVO reqVO) { + // 校验正确性 + this.checkCreateOrUpdate(null, reqVO.getName(), reqVO.getCode()); + // 插入岗位 + SysPostDO post = SysPostConvert.INSTANCE.convert(reqVO); + postMapper.insert(post); + return post.getId(); + } + + @Override + public void updatePost(SysPostUpdateReqVO reqVO) { + // 校验正确性 + this.checkCreateOrUpdate(reqVO.getId(), reqVO.getName(), reqVO.getCode()); + // 更新岗位 + SysPostDO updateObj = SysPostConvert.INSTANCE.convert(reqVO); + postMapper.updateById(updateObj); + } + + @Override + public void deletePost(Long id) { + // 校验是否存在 + this.checkPostExists(id); + // 删除部门 + postMapper.deleteById(id); + } + + @Override + public List getPosts(Collection ids, Collection statuses) { + return postMapper.selectList(ids, statuses); + } + + @Override + public PageResult getPostPage(SysPostPageReqVO reqVO) { + return postMapper.selectPage(reqVO); + } + + @Override + public List getPosts(SysPostExportReqVO reqVO) { + return postMapper.selectList(reqVO); + } + + @Override + public SysPostDO getPost(Long id) { + return postMapper.selectById(id); + } + + private void checkCreateOrUpdate(Long id, String name, String code) { + // 校验自己存在 + checkPostExists(id); + // 校验岗位名的唯一性 + checkPostNameUnique(id, name); + // 校验岗位编码的唯一性 + checkPostCodeUnique(id, code); + } + + private void checkPostNameUnique(Long id, String name) { + SysPostDO post = postMapper.selectByName(name); + if (post == null) { + return; + } + // 如果 id 为空,说明不用比较是否为相同 id 的岗位 + if (id == null) { + throw ServiceExceptionUtil.exception(POST_NAME_DUPLICATE); + } + if (!post.getId().equals(id)) { + throw ServiceExceptionUtil.exception(POST_NAME_DUPLICATE); + } + } + + private void checkPostCodeUnique(Long id, String code) { + SysPostDO post = postMapper.selectByCode(code); + if (post == null) { + return; + } + // 如果 id 为空,说明不用比较是否为相同 id 的岗位 + if (id == null) { + throw ServiceExceptionUtil.exception(POST_CODE_DUPLICATE); + } + if (!post.getId().equals(id)) { + throw ServiceExceptionUtil.exception(POST_CODE_DUPLICATE); + } + } + + private void checkPostExists(Long id) { + if (id == null) { + return; + } + SysPostDO post = postMapper.selectById(id); + if (post == null) { + throw ServiceExceptionUtil.exception(POST_NOT_FOUND); + } + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictDataService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictDataService.java new file mode 100644 index 0000000..2045720 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictDataService.java @@ -0,0 +1,86 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.dict; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.dict.core.service.DictDataFrameworkService; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictDataDO; + +import java.util.List; + +/** + * 字典数据 Service 接口 + * + * @author ruoyi + */ +public interface SysDictDataService extends DictDataFrameworkService { + + /** + * 初始化字典数据的本地缓存 + */ + void initLocalCache(); + + /** + * 创建字典数据 + * + * @param reqVO 字典数据信息 + * @return 字典数据编号 + */ + Long createDictData(SysDictDataCreateReqVO reqVO); + + /** + * 更新字典数据 + * + * @param reqVO 字典数据信息 + */ + void updateDictData(SysDictDataUpdateReqVO reqVO); + + /** + * 删除字典数据 + * + * @param id 字典数据编号 + */ + void deleteDictData(Long id); + + /** + * 获得字典数据列表 + * + * @return 字典数据全列表 + */ + List getDictDatas(); + + /** + * 获得字典数据分页列表 + * + * @param reqVO 分页请求 + * @return 字典数据分页列表 + */ + PageResult getDictDataPage(SysDictDataPageReqVO reqVO); + + /** + * 获得字典数据列表 + * + * @param reqVO 列表请求 + * @return 字典数据列表 + */ + List getDictDatas(SysDictDataExportReqVO reqVO); + + /** + * 获得字典数据详情 + * + * @param id 字典数据编号 + * @return 字典数据 + */ + SysDictDataDO getDictData(Long id); + + /** + * 获得指定字典类型的数据数量 + * + * @param dictType 字典类型 + * @return 数据数量 + */ + int countByDictType(String dictType); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictTypeService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictTypeService.java new file mode 100644 index 0000000..6c3324f --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictTypeService.java @@ -0,0 +1,80 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.dict; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO; + +import java.util.List; + +/** + * 字典类型 Service 接口 + * + * @author 芋道源码 + */ +public interface SysDictTypeService { + + /** + * 创建字典类型 + * + * @param reqVO 字典类型信息 + * @return 字典类型编号 + */ + Long createDictType(SysDictTypeCreateReqVO reqVO); + + /** + * 更新字典类型 + * + * @param reqVO 字典类型信息 + */ + void updateDictType(SysDictTypeUpdateReqVO reqVO); + + /** + * 删除字典类型 + * + * @param id 字典类型编号 + */ + void deleteDictType(Long id); + + /** + * 获得字典类型分页列表 + * + * @param reqVO 分页请求 + * @return 字典类型分页列表 + */ + PageResult getDictTypePage(SysDictTypePageReqVO reqVO); + + /** + * 获得字典类型列表 + * + * @param reqVO 列表请求 + * @return 字典类型列表 + */ + List getDictTypeList(SysDictTypeExportReqVO reqVO); + + /** + * 获得字典类型详情 + * + * @param id 字典类型编号 + * @return 字典类型 + */ + SysDictTypeDO getDictType(Long id); + + /** + * 获得字典类型详情 + * + * @param type 字典类型 + * @return 字典类型详情 + */ + SysDictTypeDO getDictType(String type); + + /** + * 获得全部字典类型列表 + * + * @return 字典类型列表 + */ + List getDictTypeList(); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dict/impl/SysDictDataServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/impl/SysDictDataServiceImpl.java index 58eb32e..4f23dac 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dict/impl/SysDictDataServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/impl/SysDictDataServiceImpl.java @@ -1,21 +1,21 @@ -package cn.iocoder.dashboard.modules.system.service.dict.impl; +package cn.iocoder.yudao.adminserver.modules.system.service.dict.impl; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.dict.core.dto.DictDataRespDTO; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataPageReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO; -import cn.iocoder.dashboard.modules.system.convert.dict.SysDictDataConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictDataDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictTypeDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.dict.SysDictDataMapper; -import cn.iocoder.dashboard.modules.system.mq.producer.dict.SysDictDataProducer; -import cn.iocoder.dashboard.modules.system.service.dict.SysDictDataService; -import cn.iocoder.dashboard.modules.system.service.dict.SysDictTypeService; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.dict.SysDictDataConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictDataDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dict.SysDictDataMapper; +import cn.iocoder.yudao.adminserver.modules.system.mq.producer.dict.SysDictDataProducer; +import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictDataService; +import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictTypeService; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableTable; import lombok.extern.slf4j.Slf4j; @@ -29,7 +29,7 @@ import java.util.Date; import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; /** * 字典数据 Service 实现类 diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/impl/SysDictTypeServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/impl/SysDictTypeServiceImpl.java new file mode 100644 index 0000000..b054764 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/impl/SysDictTypeServiceImpl.java @@ -0,0 +1,143 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.dict.impl; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.dict.SysDictTypeConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dict.SysDictTypeMapper; +import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictDataService; +import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictTypeService; +import com.google.common.annotations.VisibleForTesting; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; + +/** + * 字典类型 Service 实现类 + * + * @author 芋道源码 + */ +@Service +public class SysDictTypeServiceImpl implements SysDictTypeService { + + @Resource + private SysDictDataService dictDataService; + + @Resource + private SysDictTypeMapper dictTypeMapper; + + @Override + public PageResult getDictTypePage(SysDictTypePageReqVO reqVO) { + return dictTypeMapper.selectPage(reqVO); + } + + @Override + public List getDictTypeList(SysDictTypeExportReqVO reqVO) { + return dictTypeMapper.selectList(reqVO); + } + + @Override + public SysDictTypeDO getDictType(Long id) { + return dictTypeMapper.selectById(id); + } + + @Override + public SysDictTypeDO getDictType(String type) { + return dictTypeMapper.selectByType(type); + } + + @Override + public Long createDictType(SysDictTypeCreateReqVO reqVO) { + // 校验正确性 + this.checkCreateOrUpdate(null, reqVO.getName(), reqVO.getType()); + // 插入字典类型 + SysDictTypeDO dictType = SysDictTypeConvert.INSTANCE.convert(reqVO); + dictTypeMapper.insert(dictType); + return dictType.getId(); + } + + @Override + public void updateDictType(SysDictTypeUpdateReqVO reqVO) { + // 校验正确性 + this.checkCreateOrUpdate(reqVO.getId(), reqVO.getName(), null); + // 更新字典类型 + SysDictTypeDO updateObj = SysDictTypeConvert.INSTANCE.convert(reqVO); + dictTypeMapper.updateById(updateObj); + } + + @Override + public void deleteDictType(Long id) { + // 校验是否存在 + SysDictTypeDO dictType = this.checkDictTypeExists(id); + // 校验是否有字典数据 + if (dictDataService.countByDictType(dictType.getType()) > 0) { + throw exception(DICT_TYPE_HAS_CHILDREN); + } + // 删除字典类型 + dictTypeMapper.deleteById(id); + } + + @Override + public List getDictTypeList() { + return dictTypeMapper.selectList(); + } + + private void checkCreateOrUpdate(Long id, String name, String type) { + // 校验自己存在 + checkDictTypeExists(id); + // 校验字典类型的名字的唯一性 + checkDictTypeNameUnique(id, name); + // 校验字典类型的类型的唯一性 + checkDictTypeUnique(id, type); + } + + @VisibleForTesting + public void checkDictTypeNameUnique(Long id, String name) { + SysDictTypeDO dictType = dictTypeMapper.selectByName(name); + if (dictType == null) { + return; + } + // 如果 id 为空,说明不用比较是否为相同 id 的字典类型 + if (id == null) { + throw exception(DICT_TYPE_NAME_DUPLICATE); + } + if (!dictType.getId().equals(id)) { + throw exception(DICT_TYPE_NAME_DUPLICATE); + } + } + + @VisibleForTesting + public void checkDictTypeUnique(Long id, String type) { + SysDictTypeDO dictType = dictTypeMapper.selectByType(type); + if (dictType == null) { + return; + } + // 如果 id 为空,说明不用比较是否为相同 id 的字典类型 + if (id == null) { + throw exception(DICT_TYPE_TYPE_DUPLICATE); + } + if (!dictType.getId().equals(id)) { + throw exception(DICT_TYPE_TYPE_DUPLICATE); + } + } + + @VisibleForTesting + public SysDictTypeDO checkDictTypeExists(Long id) { + if (id == null) { + return null; + } + SysDictTypeDO dictType = dictTypeMapper.selectById(id); + if (dictType == null) { + throw exception(DICT_TYPE_NOT_EXISTS); + } + return dictType; + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/SysErrorCodeService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/SysErrorCodeService.java new file mode 100644 index 0000000..4bcfb97 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/SysErrorCodeService.java @@ -0,0 +1,67 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.errorcode; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.service.ErrorCodeFrameworkService; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.errorcode.SysErrorCodeDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 错误码 Service 接口 + * + * @author 芋道源码 + */ +public interface SysErrorCodeService extends ErrorCodeFrameworkService { + + /** + * 创建错误码 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createErrorCode(@Valid SysErrorCodeCreateReqVO createReqVO); + + /** + * 更新错误码 + * + * @param updateReqVO 更新信息 + */ + void updateErrorCode(@Valid SysErrorCodeUpdateReqVO updateReqVO); + + /** + * 删除错误码 + * + * @param id 编号 + */ + void deleteErrorCode(Long id); + + /** + * 获得错误码 + * + * @param id 编号 + * @return 错误码 + */ + SysErrorCodeDO getErrorCode(Long id); + + /** + * 获得错误码分页 + * + * @param pageReqVO 分页查询 + * @return 错误码分页 + */ + PageResult getErrorCodePage(SysErrorCodePageReqVO pageReqVO); + + /** + * 获得错误码列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 错误码列表 + */ + List getErrorCodeList(SysErrorCodeExportReqVO exportReqVO); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/errorcode/impl/SysErrorCodeServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/impl/SysErrorCodeServiceImpl.java index bff201e..178e071 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/errorcode/impl/SysErrorCodeServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/impl/SysErrorCodeServiceImpl.java @@ -1,18 +1,18 @@ -package cn.iocoder.dashboard.modules.system.service.errorcode.impl; +package cn.iocoder.yudao.adminserver.modules.system.service.errorcode.impl; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.tool.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO; -import cn.iocoder.dashboard.modules.tool.framework.errorcode.core.dto.ErrorCodeRespDTO; -import cn.iocoder.dashboard.modules.system.convert.errorcode.SysErrorCodeConvert; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodeCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodeExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodePageReqVO; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodeUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.errorcode.SysErrorCodeDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.errorcode.SysErrorCodeMapper; -import cn.iocoder.dashboard.modules.system.enums.errorcode.SysErrorCodeTypeEnum; -import cn.iocoder.dashboard.modules.system.service.errorcode.SysErrorCodeService; +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO; +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeRespDTO; +import cn.iocoder.yudao.adminserver.modules.system.convert.errorcode.SysErrorCodeConvert; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.errorcode.SysErrorCodeDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.errorcode.SysErrorCodeMapper; +import cn.iocoder.yudao.adminserver.modules.system.enums.errorcode.SysErrorCodeTypeEnum; +import cn.iocoder.yudao.adminserver.modules.system.service.errorcode.SysErrorCodeService; import com.google.common.annotations.VisibleForTesting; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -25,7 +25,7 @@ import java.util.List; import java.util.Map; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysLoginLogService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysLoginLogService.java new file mode 100644 index 0000000..9da2570 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysLoginLogService.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.logger; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysLoginLogDO; + +import java.util.List; + +/** + * 登陆日志 Service 接口 + */ +public interface SysLoginLogService { + + /** + * 创建登陆日志 + * + * @param reqVO 日志信息 + */ + void createLoginLog(SysLoginLogCreateReqVO reqVO); + + /** + * 获得登陆日志分页 + * + * @param reqVO 分页条件 + * @return 登陆日志分页 + */ + PageResult getLoginLogPage(SysLoginLogPageReqVO reqVO); + + /** + * 获得登陆日志列表 + * + * @param reqVO 列表条件 + * @return 登陆日志列表 + */ + List getLoginLogList(SysLoginLogExportReqVO reqVO); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysOperateLogService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysOperateLogService.java new file mode 100644 index 0000000..cf3379b --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysOperateLogService.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.logger; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.operatelog.core.service.OperateLogFrameworkService; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO; + +import java.util.List; + +/** + * 操作日志 Service 接口 + */ +public interface SysOperateLogService extends OperateLogFrameworkService { + + /** + * 获得操作日志分页列表 + * + * @param reqVO 分页条件 + * @return 操作日志分页列表 + */ + PageResult getOperateLogPage(SysOperateLogPageReqVO reqVO); + + /** + * 获得操作日志列表 + * + * @param reqVO 列表条件 + * @return 日志列表 + */ + List getOperateLogs(SysOperateLogExportReqVO reqVO); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/impl/SysLoginLogServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/impl/SysLoginLogServiceImpl.java new file mode 100644 index 0000000..8b28249 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/impl/SysLoginLogServiceImpl.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.logger.impl; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.logger.SysLoginLogConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysLoginLogDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger.SysLoginLogMapper; +import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysLoginLogService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 登陆日志 Service 实现 + */ +@Service +public class SysLoginLogServiceImpl implements SysLoginLogService { + + @Resource + private SysLoginLogMapper loginLogMapper; + + @Override + public void createLoginLog(SysLoginLogCreateReqVO reqVO) { + SysLoginLogDO loginLog = SysLoginLogConvert.INSTANCE.convert(reqVO); + loginLogMapper.insert(loginLog); + } + + @Override + public PageResult getLoginLogPage(SysLoginLogPageReqVO reqVO) { + return loginLogMapper.selectPage(reqVO); + } + + @Override + public List getLoginLogList(SysLoginLogExportReqVO reqVO) { + return loginLogMapper.selectList(reqVO); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/impl/SysOperateLogServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/impl/SysOperateLogServiceImpl.java new file mode 100644 index 0000000..69c684e --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/impl/SysOperateLogServiceImpl.java @@ -0,0 +1,85 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.logger.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.logger.SysOperateLogConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger.SysOperateLogMapper; +import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysOperateLogService; +import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; +import cn.iocoder.yudao.framework.common.util.string.StrUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.AsyncResult; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.Future; + +import static cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO.JAVA_METHOD_ARGS_MAX_LENGTH; +import static cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO.RESULT_MAX_LENGTH; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; + +@Service +@Slf4j +public class SysOperateLogServiceImpl implements SysOperateLogService { + + @Resource + private SysOperateLogMapper operateLogMapper; + + @Resource + private SysUserService userService; + + @Override + @Async + public Future createOperateLogAsync(OperateLogCreateReqDTO reqVO) { + boolean success = false; + try { + SysOperateLogDO logDO = SysOperateLogConvert.INSTANCE.convert(reqVO); + logDO.setJavaMethodArgs(StrUtils.maxLength(logDO.getJavaMethodArgs(), JAVA_METHOD_ARGS_MAX_LENGTH)); + logDO.setResultData(StrUtils.maxLength(logDO.getResultData(), RESULT_MAX_LENGTH)); + success = operateLogMapper.insert(logDO) == 1; + } catch (Throwable throwable) { + // 仅仅打印日志,不对外抛出。原因是,还是要保留现场数据。 + log.error("[createOperateLogAsync][记录操作日志异常,日志为 ({})]", reqVO, throwable); + } + return new AsyncResult<>(success); + } + + @Override + public PageResult getOperateLogPage(SysOperateLogPageReqVO reqVO) { + // 处理基于用户昵称的查询 + Collection userIds = null; + if (StrUtil.isNotEmpty(reqVO.getUserNickname())) { + userIds = convertSet(userService.getUsersByNickname(reqVO.getUserNickname()), SysUserDO::getId); + if (CollUtil.isEmpty(userIds)) { + return PageResult.empty(); + } + } + // 查询分页 + return operateLogMapper.selectPage(reqVO, userIds); + } + + @Override + public List getOperateLogs(SysOperateLogExportReqVO reqVO) { + // 处理基于用户昵称的查询 + Collection userIds = null; + if (StrUtil.isNotEmpty(reqVO.getUserNickname())) { + userIds = convertSet(userService.getUsersByNickname(reqVO.getUserNickname()), SysUserDO::getId); + if (CollUtil.isEmpty(userIds)) { + return Collections.emptyList(); + } + } + // 查询列表 + return operateLogMapper.selectList(reqVO, userIds); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/SysNoticeService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/SysNoticeService.java new file mode 100644 index 0000000..ee4ecdd --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/SysNoticeService.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.notice; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.notice.SysNoticeDO; + +/** + * 通知公告 Service 接口 + */ +public interface SysNoticeService { + + /** + * 创建岗位公告公告 + * + * @param reqVO 岗位公告公告信息 + * @return 岗位公告公告编号 + */ + Long createNotice(SysNoticeCreateReqVO reqVO); + + /** + * 更新岗位公告公告 + * + * @param reqVO 岗位公告公告信息 + */ + void updateNotice(SysNoticeUpdateReqVO reqVO); + + /** + * 删除岗位公告公告信息 + * + * @param id 岗位公告公告编号 + */ + void deleteNotice(Long id); + + /** + * 获得岗位公告公告分页列表 + * + * @param reqVO 分页条件 + * @return 部门分页列表 + */ + PageResult pageNotices(SysNoticePageReqVO reqVO); + + /** + * 获得岗位公告公告信息 + * + * @param id 岗位公告公告编号 + * @return 岗位公告公告信息 + */ + SysNoticeDO getNotice(Long id); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/impl/SysNoticeServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/impl/SysNoticeServiceImpl.java new file mode 100644 index 0000000..2cb770b --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/impl/SysNoticeServiceImpl.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.notice.impl; + +import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.notice.SysNoticeConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.notice.SysNoticeMapper; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.notice.SysNoticeDO; +import cn.iocoder.yudao.adminserver.modules.system.service.notice.SysNoticeService; +import com.google.common.annotations.VisibleForTesting; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.NOTICE_NOT_FOUND; + +/** + * 通知公告 Service 实现类 + * + * @author 芋道源码 + */ +@Service +public class SysNoticeServiceImpl implements SysNoticeService { + + @Resource + private SysNoticeMapper noticeMapper; + + @Override + public Long createNotice(SysNoticeCreateReqVO reqVO) { + SysNoticeDO notice = SysNoticeConvert.INSTANCE.convert(reqVO); + noticeMapper.insert(notice); + return notice.getId(); + } + + @Override + public void updateNotice(SysNoticeUpdateReqVO reqVO) { + // 校验是否存在 + this.checkNoticeExists(reqVO.getId()); + // 更新通知公告 + SysNoticeDO updateObj = SysNoticeConvert.INSTANCE.convert(reqVO); + noticeMapper.updateById(updateObj); + } + + @Override + public void deleteNotice(Long id) { + // 校验是否存在 + this.checkNoticeExists(id); + // 删除通知公告 + noticeMapper.deleteById(id); + } + + @Override + public PageResult pageNotices(SysNoticePageReqVO reqVO) { + return noticeMapper.selectPage(reqVO); + } + + @Override + public SysNoticeDO getNotice(Long id) { + return noticeMapper.selectById(id); + } + + @VisibleForTesting + public void checkNoticeExists(Long id) { + if (id == null) { + return; + } + SysNoticeDO notice = noticeMapper.selectById(id); + if (notice == null) { + throw ServiceExceptionUtil.exception(NOTICE_NOT_FOUND); + } + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysMenuService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysMenuService.java new file mode 100644 index 0000000..5979f16 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysMenuService.java @@ -0,0 +1,100 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.permission; + +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuListReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO; + +import java.util.Collection; +import java.util.List; + +/** + * 菜单 Service 接口 + * + * @author 芋道源码 + */ +public interface SysMenuService { + + /** + * 初始化菜单的本地缓存 + */ + void initLocalCache(); + + /** + * 创建菜单 + * + * @param reqVO 菜单信息 + * @return 创建出来的菜单编号 + */ + Long createMenu(SysMenuCreateReqVO reqVO); + + /** + * 更新菜单 + * + * @param reqVO 菜单信息 + */ + void updateMenu(SysMenuUpdateReqVO reqVO); + + /** + * 删除菜单 + * + * @param id 菜单编号 + */ + void deleteMenu(Long id); + + /** + * 获得所有菜单列表 + * + * @return 菜单列表 + */ + List getMenus(); + + /** + * 筛选菜单列表 + * + * @param reqVO 筛选条件请求 VO + * @return 菜单列表 + */ + List getMenus(SysMenuListReqVO reqVO); + + /** + * 获得所有菜单,从缓存中 + * + * 任一参数为空时,则返回为空 + * + * @param menuTypes 菜单类型数组 + * @param menusStatuses 菜单状态数组 + * @return 菜单列表 + */ + List listMenusFromCache(Collection menuTypes, Collection menusStatuses); + + /** + * 获得指定编号的菜单数组,从缓存中 + * + * 任一参数为空时,则返回为空 + * + * @param menuIds 菜单编号数组 + * @param menuTypes 菜单类型数组 + * @param menusStatuses 菜单状态数组 + * @return 菜单数组 + */ + List listMenusFromCache(Collection menuIds, Collection menuTypes, + Collection menusStatuses); + + /** + * 获得权限对应的菜单数组 + * + * @param permission 权限标识 + * @return 数组 + */ + List getMenuListByPermissionFromCache(String permission); + + /** + * 获得菜单 + * + * @param id 菜单编号 + * @return 菜单 + */ + SysMenuDO getMenu(Long id); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysPermissionService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysPermissionService.java new file mode 100644 index 0000000..e159f95 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysPermissionService.java @@ -0,0 +1,109 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.permission; + +import cn.iocoder.yudao.framework.security.core.service.SecurityPermissionFrameworkService; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO; +import org.springframework.lang.Nullable; + +import java.util.Collection; +import java.util.List; +import java.util.Set; + +/** + * 权限 Service 接口 + * + * 提供用户-角色、角色-菜单、角色-部门的关联权限处理 + * + * @author 芋道源码 + */ +public interface SysPermissionService extends SecurityPermissionFrameworkService { + + /** + * 初始化权限的本地缓存 + */ + void initLocalCache(); + + /** + * 获得角色们拥有的菜单列表,从缓存中获取 + * + * 任一参数为空时,则返回为空 + * + * @param roleIds 角色编号数组 + * @param menuTypes 菜单类型数组 + * @param menusStatuses 菜单状态数组 + * @return 菜单列表 + */ + List getRoleMenusFromCache(Collection roleIds, Collection menuTypes, + Collection menusStatuses); + + /** + * 获得用户拥有的角色编号集合 + * + * @param userId 用户编号 + * @param roleStatuses 角色状态集合. 允许为空,为空时不过滤 + * @return 角色编号集合 + */ + Set getUserRoleIds(Long userId, @Nullable Collection roleStatuses); + + /** + * 获得角色拥有的菜单编号集合 + * + * @param roleId 角色编号 + * @return 菜单编号集合 + */ + Set listRoleMenuIds(Long roleId); + + /** + * 设置角色菜单 + * + * @param roleId 角色编号 + * @param menuIds 菜单编号集合 + */ + void assignRoleMenu(Long roleId, Set menuIds); + + /** + * 获得用户拥有的角色编号集合 + * + * @param userId 用户编号 + * @return 角色编号集合 + */ + Set listUserRoleIs(Long userId); + + /** + * 设置用户角色 + * + * @param userId 角色编号 + * @param roleIds 角色编号集合 + */ + void assignUserRole(Long userId, Set roleIds); + + /** + * 设置角色的数据权限 + * + * @param roleId 角色编号 + * @param dataScope 数据范围 + * @param dataScopeDeptIds 部门编号数组 + */ + void assignRoleDataScope(Long roleId, Integer dataScope, Set dataScopeDeptIds); + + /** + * 处理角色删除时,删除关联授权数据 + * + * @param roleId 角色编号 + */ + void processRoleDeleted(Long roleId); + + /** + * 处理菜单删除时,删除关联授权数据 + * + * @param menuId 菜单编号 + */ + void processMenuDeleted(Long menuId); + + /** + * 处理用户删除是,删除关联授权数据 + * + * @param userId 用户编号 + */ + void processUserDeleted(Long userId); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysRoleService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysRoleService.java new file mode 100644 index 0000000..4f26721 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysRoleService.java @@ -0,0 +1,132 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.permission; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRolePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO; +import org.springframework.lang.Nullable; + +import java.util.Collection; +import java.util.List; +import java.util.Set; + +/** + * 角色 Service 接口 + * + * @author 芋道源码 + */ +public interface SysRoleService { + + /** + * 初始化角色的本地缓存 + */ + void initLocalCache(); + + /** + * 创建角色 + * + * @param reqVO 创建角色信息 + * @return 角色编号 + */ + Long createRole(SysRoleCreateReqVO reqVO); + + /** + * 更新角色 + * + * @param reqVO 更新角色信息 + */ + void updateRole(SysRoleUpdateReqVO reqVO); + + /** + * 删除角色 + * + * @param id 角色编号 + */ + void deleteRole(Long id); + + /** + * 更新角色状态 + * + * @param id 角色编号 + * @param status 状态 + */ + void updateRoleStatus(Long id, Integer status); + + /** + * 设置角色的数据权限 + * + * @param id 角色编号 + * @param dataScope 数据范围 + * @param dataScopeDeptIds 部门编号数组 + */ + void updateRoleDataScope(Long id, Integer dataScope, Set dataScopeDeptIds); + + /** + * 获得角色,从缓存中 + * + * @param id 角色编号 + * @return 角色 + */ + SysRoleDO getRoleFromCache(Long id); + + /** + * 获得角色列表 + * + * @param statuses 筛选的状态。允许空,空时不筛选 + * @return 角色列表 + */ + List getRoles(@Nullable Collection statuses); + + /** + * 获得角色数组,从缓存中 + * + * @param ids 角色编号数组 + * @return 角色数组 + */ + List getRolesFromCache(Collection ids); + + /** + * 判断角色数组中,是否有管理员 + * + * @param roleList 角色数组 + * @return 是否有管理员 + */ + boolean hasAnyAdmin(Collection roleList); + + /** + * 判断角色编号数组中,是否有管理员 + * + * @param ids 角色编号数组 + * @return 是否有管理员 + */ + default boolean hasAnyAdmin(Set ids) { + return hasAnyAdmin(getRolesFromCache(ids)); + } + + /** + * 获得角色 + * + * @param id 角色编号 + * @return 角色 + */ + SysRoleDO getRole(Long id); + + /** + * 获得角色分页 + * + * @param reqVO 角色分页查询 + * @return 角色分页结果 + */ + PageResult getRolePage(SysRolePageReqVO reqVO); + + /** + * 获得角色列表 + * + * @param reqVO 列表查询 + * @return 角色列表 + */ + List getRoles(SysRoleExportReqVO reqVO); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/permission/impl/SysMenuServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/impl/SysMenuServiceImpl.java index 37fc180..3920022 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/permission/impl/SysMenuServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/impl/SysMenuServiceImpl.java @@ -1,19 +1,19 @@ -package cn.iocoder.dashboard.modules.system.service.permission.impl; +package cn.iocoder.yudao.adminserver.modules.system.service.permission.impl; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.menu.SysMenuCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.menu.SysMenuListReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.menu.SysMenuUpdateReqVO; -import cn.iocoder.dashboard.modules.system.convert.permission.SysMenuConvert; -import cn.iocoder.dashboard.modules.system.dal.mysql.permission.SysMenuMapper; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysMenuDO; -import cn.iocoder.dashboard.modules.system.enums.permission.MenuIdEnum; -import cn.iocoder.dashboard.modules.system.enums.permission.MenuTypeEnum; -import cn.iocoder.dashboard.modules.system.mq.producer.permission.SysMenuProducer; -import cn.iocoder.dashboard.modules.system.service.permission.SysMenuService; -import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuListReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.permission.SysMenuConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysMenuMapper; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO; +import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuIdEnum; +import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuTypeEnum; +import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysMenuProducer; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysMenuService; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableMap; @@ -31,7 +31,7 @@ import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; /** * 菜单 Service 实现 diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/permission/impl/SysPermissionServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/impl/SysPermissionServiceImpl.java index 87d6d9d..64bf04f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/permission/impl/SysPermissionServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/impl/SysPermissionServiceImpl.java @@ -1,19 +1,19 @@ -package cn.iocoder.dashboard.modules.system.service.permission.impl; +package cn.iocoder.yudao.adminserver.modules.system.service.permission.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ArrayUtil; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; -import cn.iocoder.dashboard.modules.system.dal.mysql.permission.SysRoleMenuMapper; -import cn.iocoder.dashboard.modules.system.dal.mysql.permission.SysUserRoleMapper; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysMenuDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleMenuDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysUserRoleDO; -import cn.iocoder.dashboard.modules.system.mq.producer.permission.SysPermissionProducer; -import cn.iocoder.dashboard.modules.system.service.permission.SysMenuService; -import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; -import cn.iocoder.dashboard.modules.system.service.permission.SysRoleService; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysRoleMenuMapper; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysUserRoleMapper; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleMenuDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysUserRoleDO; +import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysPermissionProducer; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysMenuService; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import com.google.common.collect.ImmutableMultimap; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/permission/impl/SysRoleServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/impl/SysRoleServiceImpl.java index 3ac81b0..c233f4f 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/permission/impl/SysRoleServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/impl/SysRoleServiceImpl.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.service.permission.impl; +package cn.iocoder.yudao.adminserver.modules.system.service.permission.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; @@ -6,18 +6,18 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRolePageReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO; -import cn.iocoder.dashboard.modules.system.convert.permission.SysRoleConvert; -import cn.iocoder.dashboard.modules.system.dal.mysql.permission.SysRoleMapper; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleDO; -import cn.iocoder.dashboard.modules.system.enums.permission.RoleCodeEnum; -import cn.iocoder.dashboard.modules.system.enums.permission.SysRoleTypeEnum; -import cn.iocoder.dashboard.modules.system.mq.producer.permission.SysRoleProducer; -import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; -import cn.iocoder.dashboard.modules.system.service.permission.SysRoleService; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRolePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.permission.SysRoleConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysRoleMapper; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO; +import cn.iocoder.yudao.adminserver.modules.system.enums.permission.RoleCodeEnum; +import cn.iocoder.yudao.adminserver.modules.system.enums.permission.SysRoleTypeEnum; +import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysRoleProducer; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableMap; import lombok.extern.slf4j.Slf4j; @@ -34,7 +34,7 @@ import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; /** * 角色 Service 实现类 diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsChannelService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsChannelService.java new file mode 100644 index 0000000..cd64514 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsChannelService.java @@ -0,0 +1,79 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.sms; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsChannelDO; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; + +/** + * 短信渠道Service接口 + * + * @author zzf + * @date 2021/1/25 9:24 + */ +public interface SysSmsChannelService { + + /** + * 初始化短信客户端 + */ + void initSmsClients(); + + /** + * 创建短信渠道 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createSmsChannel(@Valid SysSmsChannelCreateReqVO createReqVO); + + /** + * 更新短信渠道 + * + * @param updateReqVO 更新信息 + */ + void updateSmsChannel(@Valid SysSmsChannelUpdateReqVO updateReqVO); + + /** + * 删除短信渠道 + * + * @param id 编号 + */ + void deleteSmsChannel(Long id); + + /** + * 获得短信渠道 + * + * @param id 编号 + * @return 短信渠道 + */ + SysSmsChannelDO getSmsChannel(Long id); + + /** + * 获得短信渠道列表 + * + * @param ids 编号 + * @return 短信渠道列表 + */ + List getSmsChannelList(Collection ids); + + /** + * 获得所有短信渠道列表 + * + * @return 短信渠道列表 + */ + List getSmsChannelList(); + + /** + * 获得短信渠道分页 + * + * @param pageReqVO 分页查询 + * @return 短信渠道分页 + */ + PageResult getSmsChannelPage(SysSmsChannelPageReqVO pageReqVO); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsLogService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsLogService.java new file mode 100644 index 0000000..980cf28 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsLogService.java @@ -0,0 +1,77 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.sms; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsLogDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 短信日志 Service 实现类 + * + * @author zzf + * @date 13:48 2021/3/2 + */ +public interface SysSmsLogService { + + /** + * 创建短信日志 + * + * @param mobile 手机号 + * @param userId 用户编号 + * @param userType 用户类型 + * @param isSend 是否发送 + * @param template 短信模板 + * @param templateContent 短信内容 + * @param templateParams 短信参数 + * @return 发送日志编号 + */ + Long createSmsLog(String mobile, Long userId, Integer userType, Boolean isSend, + SysSmsTemplateDO template, String templateContent, Map templateParams); + + /** + * 更新日志的发送结果 + * + * @param id 日志编号 + * @param sendCode 发送结果的编码 + * @param sendMsg 发送结果的提示 + * @param apiSendCode 短信 API 发送结果的编码 + * @param apiSendMsg 短信 API 发送失败的提示 + * @param apiRequestId 短信 API 发送返回的唯一请求 ID + * @param apiSerialNo 短信 API 发送返回的序号 + */ + void updateSmsSendResult(Long id, Integer sendCode, String sendMsg, + String apiSendCode, String apiSendMsg, String apiRequestId, String apiSerialNo); + + /** + * 更新日志的接收结果 + * + * @param id 日志编号 + * @param success 是否接收成功 + * @param receiveTime 用户接收时间 + * @param apiReceiveCode API 接收结果的编码 + * @param apiReceiveMsg API 接收结果的说明 + */ + void updateSmsReceiveResult(Long id, Boolean success, Date receiveTime, String apiReceiveCode, String apiReceiveMsg); + + /** + * 获得短信日志分页 + * + * @param pageReqVO 分页查询 + * @return 短信日志分页 + */ + PageResult getSmsLogPage(SysSmsLogPageReqVO pageReqVO); + + /** + * 获得短信日志列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 短信日志列表 + */ + List getSmsLogList(SysSmsLogExportReqVO exportReqVO); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsService.java new file mode 100644 index 0000000..70d32c1 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsService.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.sms; + +import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsSendMessage; + +import java.util.List; +import java.util.Map; + +/** + * 短信Service接口 + * 只支持异步,因此没有返回值 + * + * @author zzf + * @date 2021/1/25 9:24 + */ +public interface SysSmsService { + + /** + * 发送单条短信给用户(管理员) + * + * 在 mobile 为空时,使用 userId 加载对应管理员的手机号 + * + * @param mobile 手机号 + * @param userId 用户编号 + * @param templateCode 短信模板编号 + * @param templateParams 短信模板参数 + * @return 发送日志编号 + */ + Long sendSingleSmsToAdmin(String mobile, Long userId, + String templateCode, Map templateParams); + + /** + * 发送单条短信给用户(会员) + * + * 在 mobile 为空时,使用 userId 加载对应会员的手机号 + * + * @param mobile 手机号 + * @param userId 用户编号 + * @param templateCode 短信模板编号 + * @param templateParams 短信模板参数 + * @return 发送日志编号 + */ + Long sendSingleSmsToMember(String mobile, Long userId, + String templateCode, Map templateParams); + + Long sendSingleSms(String mobile, Long userId, Integer userType, + String templateCode, Map templateParams); + + void sendBatchSms(List mobiles, List userIds, Integer userType, + String templateCode, Map templateParams); + + void doSendSms(SysSmsSendMessage message); + + /** + * 接收短信的接收结果 + * + * @param channelCode 渠道编码 + * @param text 结果内容 + * @throws Throwable 处理失败时,抛出异常 + */ + void receiveSmsStatus(String channelCode, String text) throws Throwable; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsTemplateService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsTemplateService.java new file mode 100644 index 0000000..40207cf --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsTemplateService.java @@ -0,0 +1,115 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.sms; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 短信模板 Service 接口 + * + * @author zzf + * @date 2021/1/25 9:24 + */ +public interface SysSmsTemplateService { + + /** + * 初始化短信模板的本地缓存 + */ + void initLocalCache(); + + /** + * 获得短信模板 + * + * @param code 模板编码 + * @return 短信模板 + */ + SysSmsTemplateDO getSmsTemplateByCode(String code); + + /** + * 获得短信模板,从缓存中 + * + * @param code 模板编码 + * @return 短信模板 + */ + SysSmsTemplateDO getSmsTemplateByCodeFromCache(String code); + + /** + * 格式化短信内容 + * + * @param content 短信模板的内容 + * @param params 内容的参数 + * @return 格式化后的内容 + */ + String formatSmsTemplateContent(String content, Map params); + + /** + * 创建短信模板 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createSmsTemplate(@Valid SysSmsTemplateCreateReqVO createReqVO); + + /** + * 更新短信模板 + * + * @param updateReqVO 更新信息 + */ + void updateSmsTemplate(@Valid SysSmsTemplateUpdateReqVO updateReqVO); + + /** + * 删除短信模板 + * + * @param id 编号 + */ + void deleteSmsTemplate(Long id); + + /** + * 获得短信模板 + * + * @param id 编号 + * @return 短信模板 + */ + SysSmsTemplateDO getSmsTemplate(Long id); + + /** + * 获得短信模板列表 + * + * @param ids 编号 + * @return 短信模板列表 + */ + List getSmsTemplateList(Collection ids); + + /** + * 获得短信模板分页 + * + * @param pageReqVO 分页查询 + * @return 短信模板分页 + */ + PageResult getSmsTemplatePage(SysSmsTemplatePageReqVO pageReqVO); + + /** + * 获得短信模板列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 短信模板分页 + */ + List getSmsTemplateList(SysSmsTemplateExportReqVO exportReqVO); + + /** + * 获得指定短信渠道下的短信模板数量 + * + * @param channelId 短信渠道编号 + * @return 数量 + */ + Integer countByChannelId(Long channelId); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsChannelServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsChannelServiceImpl.java new file mode 100644 index 0000000..444cae6 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsChannelServiceImpl.java @@ -0,0 +1,172 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.sms.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; +import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.sms.SysSmsChannelConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsChannelDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms.SysSmsChannelMapper; +import cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms.SysSmsProducer; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsChannelService; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsTemplateService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.util.Collection; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.SMS_CHANNEL_HAS_CHILDREN; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.SMS_CHANNEL_NOT_EXISTS; + +/** + * 短信渠道Service实现类 + * + * @author zzf + * @date 2021/1/25 9:25 + */ +@Service +@Slf4j +public class SysSmsChannelServiceImpl implements SysSmsChannelService { + + /** + * 定时执行 {@link #schedulePeriodicRefresh()} 的周期 + * 因为已经通过 Redis Pub/Sub 机制,所以频率不需要高 + */ + private static final long SCHEDULER_PERIOD = 5 * 60 * 1000L; + + /** + * 缓存菜单的最大更新时间,用于后续的增量轮询,判断是否有更新 + */ + private volatile Date maxUpdateTime; + + @Resource + private SmsClientFactory smsClientFactory; + + @Resource + private SysSmsChannelMapper smsChannelMapper; + + @Resource + private SysSmsTemplateService smsTemplateService; + + @Resource + private SysSmsProducer smsProducer; + + @Override + @PostConstruct + public void initSmsClients() { + // 获取短信渠道,如果有更新 + List smsChannels = this.loadSmsChannelIfUpdate(maxUpdateTime); + if (CollUtil.isEmpty(smsChannels)) { + return; + } + + // 创建或更新短信 Client + List propertiesList = SysSmsChannelConvert.INSTANCE.convertList02(smsChannels); + propertiesList.forEach(properties -> smsClientFactory.createOrUpdateSmsClient(properties)); + + // 写入缓存 + assert smsChannels.size() > 0; // 断言,避免告警 + maxUpdateTime = smsChannels.stream().max(Comparator.comparing(BaseDO::getUpdateTime)).get().getUpdateTime(); + log.info("[initSmsClients][初始化 SmsChannel 数量为 {}]", smsChannels.size()); + } + + @Scheduled(fixedDelay = SCHEDULER_PERIOD, initialDelay = SCHEDULER_PERIOD) + public void schedulePeriodicRefresh() { + initSmsClients(); + } + + /** + * 如果短信渠道发生变化,从数据库中获取最新的全量短信渠道。 + * 如果未发生变化,则返回空 + * + * @param maxUpdateTime 当前短信渠道的最大更新时间 + * @return 短信渠道列表 + */ + private List loadSmsChannelIfUpdate(Date maxUpdateTime) { + // 第一步,判断是否要更新。 + if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据 + log.info("[loadSmsChannelIfUpdate][首次加载全量短信渠道]"); + } else { // 判断数据库中是否有更新的短信渠道 + if (smsChannelMapper.selectExistsByUpdateTimeAfter(maxUpdateTime) == null) { + return null; + } + log.info("[loadSmsChannelIfUpdate][增量加载全量短信渠道]"); + } + // 第二步,如果有更新,则从数据库加载所有短信渠道 + return smsChannelMapper.selectList(); + } + + @Override + public Long createSmsChannel(SysSmsChannelCreateReqVO createReqVO) { + // 插入 + SysSmsChannelDO smsChannel = SysSmsChannelConvert.INSTANCE.convert(createReqVO); + smsChannelMapper.insert(smsChannel); + // 发送刷新消息 + smsProducer.sendSmsChannelRefreshMessage(); + // 返回 + return smsChannel.getId(); + } + + @Override + public void updateSmsChannel(SysSmsChannelUpdateReqVO updateReqVO) { + // 校验存在 + this.validateSmsChannelExists(updateReqVO.getId()); + // 更新 + SysSmsChannelDO updateObj = SysSmsChannelConvert.INSTANCE.convert(updateReqVO); + smsChannelMapper.updateById(updateObj); + // 发送刷新消息 + smsProducer.sendSmsChannelRefreshMessage(); + } + + @Override + public void deleteSmsChannel(Long id) { + // 校验存在 + this.validateSmsChannelExists(id); + // 校验是否有字典数据 + if (smsTemplateService.countByChannelId(id) > 0) { + throw exception(SMS_CHANNEL_HAS_CHILDREN); + } + // 删除 + smsChannelMapper.deleteById(id); + // 发送刷新消息 + smsProducer.sendSmsChannelRefreshMessage(); + } + + private void validateSmsChannelExists(Long id) { + if (smsChannelMapper.selectById(id) == null) { + throw exception(SMS_CHANNEL_NOT_EXISTS); + } + } + + @Override + public SysSmsChannelDO getSmsChannel(Long id) { + return smsChannelMapper.selectById(id); + } + + @Override + public List getSmsChannelList(Collection ids) { + return smsChannelMapper.selectBatchIds(ids); + } + + @Override + public List getSmsChannelList() { + return smsChannelMapper.selectList(); + } + + @Override + public PageResult getSmsChannelPage(SysSmsChannelPageReqVO pageReqVO) { + return smsChannelMapper.selectPage(pageReqVO); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsLogServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsLogServiceImpl.java new file mode 100644 index 0000000..4b291d9 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsLogServiceImpl.java @@ -0,0 +1,86 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.sms.impl; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsLogDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms.SysSmsLogMapper; +import cn.iocoder.yudao.adminserver.modules.system.enums.sms.SysSmsReceiveStatusEnum; +import cn.iocoder.yudao.adminserver.modules.system.enums.sms.SysSmsSendStatusEnum; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsLogService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * 短信日志 Service 实现类 + * + * @author zzf + * @date 2021/1/25 9:25 + */ +@Slf4j +@Service +public class SysSmsLogServiceImpl implements SysSmsLogService { + + @Resource + private SysSmsLogMapper smsLogMapper; + + @Override + public Long createSmsLog(String mobile, Long userId, Integer userType, Boolean isSend, + SysSmsTemplateDO template, String templateContent, Map templateParams) { + SysSmsLogDO.SysSmsLogDOBuilder logBuilder = SysSmsLogDO.builder(); + // 根据是否要发送,设置状态 + logBuilder.sendStatus(Objects.equals(isSend, true) ? SysSmsSendStatusEnum.INIT.getStatus() + : SysSmsSendStatusEnum.IGNORE.getStatus()); + // 设置手机相关字段 + logBuilder.mobile(mobile).userId(userId).userType(userType); + // 设置模板相关字段 + logBuilder.templateId(template.getId()).templateCode(template.getCode()).templateType(template.getType()); + logBuilder.templateContent(templateContent).templateParams(templateParams).apiTemplateId(template.getApiTemplateId()); + // 设置渠道相关字段 + logBuilder.channelId(template.getChannelId()).channelCode(template.getChannelCode()); + // 设置接收相关字段 + logBuilder.receiveStatus(SysSmsReceiveStatusEnum.INIT.getStatus()); + + // 插入数据库 + SysSmsLogDO logDO = logBuilder.build(); + smsLogMapper.insert(logDO); + return logDO.getId(); + } + + @Override + public void updateSmsSendResult(Long id, Integer sendCode, String sendMsg, + String apiSendCode, String apiSendMsg, String apiRequestId, String apiSerialNo) { + SysSmsSendStatusEnum sendStatus = CommonResult.isSuccess(sendCode) ? SysSmsSendStatusEnum.SUCCESS + : SysSmsSendStatusEnum.FAILURE; + smsLogMapper.updateById(SysSmsLogDO.builder().id(id).sendStatus(sendStatus.getStatus()).sendTime(new Date()) + .sendCode(sendCode).sendMsg(sendMsg).apiSendCode(apiSendCode).apiSendMsg(apiSendMsg) + .apiRequestId(apiRequestId).apiSerialNo(apiSerialNo).build()); + } + + @Override + public void updateSmsReceiveResult(Long id, Boolean success, Date receiveTime, String apiReceiveCode, String apiReceiveMsg) { + SysSmsReceiveStatusEnum receiveStatus = Objects.equals(success, true) ? SysSmsReceiveStatusEnum.SUCCESS + : SysSmsReceiveStatusEnum.FAILURE; + smsLogMapper.updateById(SysSmsLogDO.builder().id(id).receiveStatus(receiveStatus.getStatus()).receiveTime(receiveTime) + .apiReceiveCode(apiReceiveCode).apiReceiveMsg(apiReceiveMsg).build()); + } + + @Override + public PageResult getSmsLogPage(SysSmsLogPageReqVO pageReqVO) { + return smsLogMapper.selectPage(pageReqVO); + } + + @Override + public List getSmsLogList(SysSmsLogExportReqVO exportReqVO) { + return smsLogMapper.selectList(exportReqVO); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsServiceImpl.java new file mode 100644 index 0000000..9fced9b --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsServiceImpl.java @@ -0,0 +1,171 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.sms.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.common.core.KeyValue; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.sms.core.client.SmsClient; +import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; +import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult; +import cn.iocoder.yudao.framework.sms.core.client.dto.SmsReceiveRespDTO; +import cn.iocoder.yudao.framework.sms.core.client.dto.SmsSendRespDTO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsSendMessage; +import cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms.SysSmsProducer; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsLogService; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsService; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsTemplateService; +import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; +import com.google.common.annotations.VisibleForTesting; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; + +/** + * 短信日志Service实现类 + * + * @author zzf + * @date 2021/1/25 9:25 + */ +@Service +@Slf4j +public class SysSmsServiceImpl implements SysSmsService { + + @Resource + private SysSmsTemplateService smsTemplateService; + @Resource + private SysSmsLogService smsLogService; + @Resource + private SysSmsProducer smsProducer; + @Resource + private SmsClientFactory smsClientFactory; + + @Resource + private SysUserService userService; + + @Override + public Long sendSingleSmsToAdmin(String mobile, Long userId, String templateCode, Map templateParams) { + // 如果 mobile 为空,则加载用户编号对应的手机号 + if (StrUtil.isEmpty(mobile)) { + SysUserDO user = userService.getUser(userId); + if (user != null) { + mobile = user.getMobile(); + } + } + // 执行发送 + return this.sendSingleSms(mobile, userId, UserTypeEnum.ADMIN.getValue(), templateCode, templateParams); + } + + @Override + public Long sendSingleSmsToMember(String mobile, Long userId, String templateCode, Map templateParams) { + throw new UnsupportedOperationException("暂时不支持该操作,感兴趣可以实现该功能哟!"); + } + + @Override + public Long sendSingleSms(String mobile, Long userId, Integer userType, + String templateCode, Map templateParams) { + // 校验短信模板是否合法 + SysSmsTemplateDO template = this.checkSmsTemplateValid(templateCode); + // 校验手机号码是否存在 + mobile = this.checkMobile(mobile); + // 构建有序的模板参数。为什么放在这个位置,是提前保证模板参数的正确性,而不是到了插入发送日志 + List> newTemplateParams = this.buildTemplateParams(template, templateParams); + + // 创建发送日志 + Boolean isSend = CommonStatusEnum.ENABLE.getStatus().equals(template.getStatus()); // 如果模板被禁用,则不发送短信,只记录日志 + String content = smsTemplateService.formatSmsTemplateContent(template.getContent(), templateParams); + Long sendLogId = smsLogService.createSmsLog(mobile, userId, userType, isSend, template, content, templateParams); + + // 发送 MQ 消息,异步执行发送短信 + if (isSend) { + smsProducer.sendSmsSendMessage(sendLogId, mobile, template.getChannelId(), template.getApiTemplateId(), newTemplateParams); + } + return sendLogId; + } + + @Override + public void sendBatchSms(List mobiles, List userIds, Integer userType, + String templateCode, Map templateParams) { + throw new UnsupportedOperationException("暂时不支持该操作,感兴趣可以实现该功能哟!"); + } + + @VisibleForTesting + public SysSmsTemplateDO checkSmsTemplateValid(String templateCode) { + // 获得短信模板。考虑到效率,从缓存中获取 + SysSmsTemplateDO template = smsTemplateService.getSmsTemplateByCodeFromCache(templateCode); + // 短信模板不存在 + if (template == null) { + throw exception(SMS_TEMPLATE_NOT_EXISTS); + } + return template; + } + + /** + * 将参数模板,处理成有序的 KeyValue 数组 + * + * 原因是,部分短信平台并不是使用 key 作为参数,而是数组下标,例如说腾讯云 https://cloud.tencent.com/document/product/382/39023 + * + * @param template 短信模板 + * @param templateParams 原始参数 + * @return 处理后的参数 + */ + @VisibleForTesting + public List> buildTemplateParams(SysSmsTemplateDO template, Map templateParams) { + return template.getParams().stream().map(key -> { + Object value = templateParams.get(key); + if (value == null) { + throw exception(SMS_SEND_MOBILE_TEMPLATE_PARAM_MISS, key); + } + return new KeyValue<>(key, value); + }).collect(Collectors.toList()); + } + + @VisibleForTesting + public String checkMobile(String mobile) { + if (StrUtil.isEmpty(mobile)) { + throw exception(SMS_SEND_MOBILE_NOT_EXISTS); + } + return mobile; + } + + @Override + public void doSendSms(SysSmsSendMessage message) { + // 获得渠道对应的 SmsClient 客户端 + SmsClient smsClient = smsClientFactory.getSmsClient(message.getChannelId()); + Assert.notNull(smsClient, String.format("短信客户端(%d) 不存在", message.getChannelId())); + // 发送短信 + SmsCommonResult sendResult = smsClient.sendSms(message.getLogId(), message.getMobile(), + message.getApiTemplateId(), message.getTemplateParams()); + smsLogService.updateSmsSendResult(message.getLogId(), sendResult.getCode(), sendResult.getMsg(), + sendResult.getApiCode(), sendResult.getApiMsg(), sendResult.getApiRequestId(), + sendResult.getData() != null ? sendResult.getData().getSerialNo() : null); + } + + @Override + public void receiveSmsStatus(String channelCode, String text) throws Throwable { + // 获得渠道对应的 SmsClient 客户端 + SmsClient smsClient = smsClientFactory.getSmsClient(channelCode); + Assert.notNull(smsClient, String.format("短信客户端(%s) 不存在", channelCode)); + // 解析内容 + List receiveResults = smsClient.parseSmsReceiveStatus(text); + if (CollUtil.isEmpty(receiveResults)) { + return; + } + // 更新短信日志的接收结果. 因为量一般不打,所以先使用 for 循环更新 + receiveResults.forEach(result -> { + smsLogService.updateSmsReceiveResult(result.getLogId(), result.getSuccess(), result.getReceiveTime(), + result.getErrorCode(), result.getErrorCode()); + }); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsTemplateServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsTemplateServiceImpl.java index 2e04693..9df2592 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsTemplateServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsTemplateServiceImpl.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.service.sms.impl; +package cn.iocoder.yudao.adminserver.modules.system.service.sms.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ReUtil; @@ -10,17 +10,17 @@ import cn.iocoder.yudao.framework.sms.core.client.SmsClient; import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult; import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO; -import cn.iocoder.dashboard.modules.system.convert.sms.SysSmsTemplateConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsTemplateMapper; -import cn.iocoder.dashboard.modules.system.mq.producer.sms.SysSmsProducer; -import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService; -import cn.iocoder.dashboard.modules.system.service.sms.SysSmsTemplateService; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.convert.sms.SysSmsTemplateConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsChannelDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms.SysSmsTemplateMapper; +import cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms.SysSmsProducer; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsChannelService; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsTemplateService; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableMap; import lombok.extern.slf4j.Slf4j; @@ -34,7 +34,7 @@ import java.util.*; import java.util.regex.Pattern; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; /** * 短信模板Service实现类 diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/user/SysUserService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/user/SysUserService.java new file mode 100644 index 0000000..16c815a --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/user/SysUserService.java @@ -0,0 +1,169 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.user; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserImportExcelVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserImportRespVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; + +import java.io.InputStream; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 用户 Service 接口 + * + * @author 芋道源码 + */ +public interface SysUserService { + + /** + * 创建用户 + * + * @param reqVO 用户信息 + * @return 用户编号 + */ + Long createUser(SysUserCreateReqVO reqVO); + + /** + * 修改用户 + * + * @param reqVO 用户信息 + */ + void updateUser(SysUserUpdateReqVO reqVO); + + /** + * 修改用户个人信息 + * + * @param id 用户编号 + * @param reqVO 用户个人信息 + */ + void updateUserProfile(Long id, SysUserProfileUpdateReqVO reqVO); + + /** + * 修改用户个人密码 + * + * @param id 用户编号 + * @param reqVO 更新用户个人密码 + */ + void updateUserPassword(Long id, SysUserProfileUpdatePasswordReqVO reqVO); + + /** + * 更新用户头像 + * + * @param id 用户 id + * @param avatarFile 头像文件 + */ + void updateUserAvatar(Long id, InputStream avatarFile); + + /** + * 修改密码 + * + * @param id 用户编号 + * @param password 密码 + */ + void updateUserPassword(Long id, String password); + + /** + * 修改密码 + * + * @param id 用户编号 + * @param status 状态 + */ + void updateUserStatus(Long id, Integer status); + + /** + * 删除用户 + * + * @param id 用户编号 + */ + void deleteUser(Long id); + + /** + * 通过用户名查询用户 + * + * @param username 用户名 + * @return 用户对象信息 + */ + SysUserDO getUserByUsername(String username); + + /** + * 通过用户 ID 查询用户 + * + * @param id 用户ID + * @return 用户对象信息 + */ + SysUserDO getUser(Long id); + + /** + * 获得用户分页列表 + * + * @param reqVO 分页条件 + * @return 分页列表 + */ + PageResult getUserPage(SysUserPageReqVO reqVO); + + /** + * 获得用户列表 + * + * @param reqVO 列表请求 + * @return 用户列表 + */ + List getUsers(SysUserExportReqVO reqVO); + + /** + * 获得用户列表 + * + * @param ids 用户编号数组 + * @return 用户列表 + */ + List getUsers(Collection ids); + + /** + * 获得用户 Map + * + * @param ids 用户编号数组 + * @return 用户 Map + */ + default Map getUserMap(Collection ids) { + if (CollUtil.isEmpty(ids)) { + return new HashMap<>(); + } + return CollectionUtils.convertMap(getUsers(ids), SysUserDO::getId); + } + + /** + * 获得用户列表,基于昵称模糊匹配 + * + * @param nickname 昵称 + * @return 用户列表 + */ + List getUsersByNickname(String nickname); + + /** + * 获得用户列表,基于用户账号模糊匹配 + * + * @param username 用户账号 + * @return 用户列表 + */ + List getUsersByUsername(String username); + + /** + * 批量导入用户 + * + * @param importUsers 导入用户列表 + * @param isUpdateSupport 是否支持更新 + * @return 导入结果 + */ + SysUserImportRespVO importUsers(List importUsers, boolean isUpdateSupport); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/user/SysUserServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/user/SysUserServiceImpl.java index a36b513..9c344e9 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/user/SysUserServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/user/SysUserServiceImpl.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.service.user; +package cn.iocoder.yudao.adminserver.modules.system.service.user; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.IoUtil; @@ -7,18 +7,18 @@ import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.exception.ServiceException; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.infra.service.file.InfFileService; -import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.*; -import cn.iocoder.dashboard.modules.system.convert.user.SysUserConvert; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysPostDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.user.SysUserMapper; -import cn.iocoder.dashboard.modules.system.service.dept.SysDeptService; -import cn.iocoder.dashboard.modules.system.service.dept.SysPostService; -import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; +import cn.iocoder.yudao.adminserver.modules.infra.service.file.InfFileService; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.*; +import cn.iocoder.yudao.adminserver.modules.system.convert.user.SysUserConvert; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.user.SysUserMapper; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import com.google.common.annotations.VisibleForTesting; import lombok.extern.slf4j.Slf4j; @@ -32,7 +32,7 @@ import java.io.InputStream; import java.util.*; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; /** diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/ToolCodegenController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/ToolCodegenController.java index 1bfdb96..a6bd6a6 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/controller/codegen/ToolCodegenController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/ToolCodegenController.java @@ -1,20 +1,20 @@ -package cn.iocoder.dashboard.modules.tool.controller.codegen; +package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.ZipUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenDetailRespVO; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenPreviewRespVO; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenUpdateReqVO; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTableRespVO; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolSchemaTableRespVO; -import cn.iocoder.dashboard.modules.tool.convert.codegen.ToolCodegenConvert; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO; -import cn.iocoder.dashboard.modules.tool.service.codegen.ToolCodegenService; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.ToolCodegenDetailRespVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.ToolCodegenPreviewRespVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.ToolCodegenUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolCodegenTableRespVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolSchemaTableRespVO; +import cn.iocoder.yudao.adminserver.modules.tool.convert.codegen.ToolCodegenConvert; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO; +import cn.iocoder.yudao.adminserver.modules.tool.service.codegen.ToolCodegenService; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; import io.swagger.annotations.Api; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/ToolCodegenDetailRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/ToolCodegenDetailRespVO.java new file mode 100644 index 0000000..4a1b10c --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/ToolCodegenDetailRespVO.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo; + +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.column.ToolCodegenColumnRespVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolCodegenTableRespVO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@ApiModel("代码生成表和字段的明细 Response VO") +@Data +public class ToolCodegenDetailRespVO { + + @ApiModelProperty("表定义") + private ToolCodegenTableRespVO table; + + @ApiModelProperty("字段定义") + private List columns; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/ToolCodegenPreviewRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/ToolCodegenPreviewRespVO.java new file mode 100644 index 0000000..3a53270 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/ToolCodegenPreviewRespVO.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "代码生成预览 Response VO", description ="注意,每个文件都是一个该对象") +@Data +public class ToolCodegenPreviewRespVO { + + @ApiModelProperty(value = "文件路径", required = true, example = "java/cn/iocoder/yudao/adminserver/modules/system/controller/test/SysTestDemoController.java") + private String filePath; + + @ApiModelProperty(value = "代码", required = true, example = "Hello World") + private String code; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/ToolCodegenUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/ToolCodegenUpdateReqVO.java new file mode 100644 index 0000000..b82064e --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/ToolCodegenUpdateReqVO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo; + +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.column.ToolCodegenColumnBaseVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolCodegenTableBaseVO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.util.List; + +@ApiModel("代码生成表和字段的修改 Request VO") +@Data +public class ToolCodegenUpdateReqVO { + + @Valid // 校验内嵌的字段 + @NotNull(message = "表定义不能为空") + private Table table; + + @Valid // 校验内嵌的字段 + @NotNull(message = "字段定义不能为空") + private List columns; + + @ApiModel("更新表定义") + @Data + @EqualsAndHashCode(callSuper = true) + @ToString(callSuper = true) + public static class Table extends ToolCodegenTableBaseVO { + + @ApiModelProperty(value = "编号", required = true, example = "1") + private Long id; + + } + + @ApiModel("更新表定义") + @Data + @EqualsAndHashCode(callSuper = true) + @ToString(callSuper = true) + public static class Column extends ToolCodegenColumnBaseVO { + + @ApiModelProperty(value = "编号", required = true, example = "1") + private Long id; + + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/column/ToolCodegenColumnBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/column/ToolCodegenColumnBaseVO.java new file mode 100644 index 0000000..bd89971 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/column/ToolCodegenColumnBaseVO.java @@ -0,0 +1,85 @@ +package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.column; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** +* 代码生成字段定义 Base VO,提供给添加、修改、详细的子 VO 使用 +* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 +*/ +@Data +public class ToolCodegenColumnBaseVO { + + @ApiModelProperty(value = "表编号", required = true, example = "1") + @NotNull(message = "表编号不能为空") + private Long tableId; + + @ApiModelProperty(value = "字段名", required = true, example = "user_age") + @NotNull(message = "字段名不能为空") + private String columnName; + + @ApiModelProperty(value = "字段类型", required = true, example = "int(11)") + @NotNull(message = "字段类型不能为空") + private String columnType; + + @ApiModelProperty(value = "字段描述", required = true, example = "年龄") + @NotNull(message = "字段描述不能为空") + private String columnComment; + + @ApiModelProperty(value = "是否允许为空", required = true, example = "true") + @NotNull(message = "是否允许为空不能为空") + private Boolean nullable; + + @ApiModelProperty(value = "是否主键", required = true, example = "false") + @NotNull(message = "是否主键不能为空") + private Boolean primaryKey; + + @ApiModelProperty(value = "是否自增", required = true, example = "true") + @NotNull(message = "是否自增不能为空") + private String autoIncrement; + + @ApiModelProperty(value = "排序", required = true, example = "10") + @NotNull(message = "排序不能为空") + private Integer ordinalPosition; + + @ApiModelProperty(value = "Java 属性类型", required = true, example = "userAge") + @NotNull(message = "Java 属性类型不能为空") + private String javaType; + + @ApiModelProperty(value = "Java 属性名", required = true, example = "Integer") + @NotNull(message = "Java 属性名不能为空") + private String javaField; + + @ApiModelProperty(value = "字典类型", example = "sys_gender") + private String dictType; + + @ApiModelProperty(value = "数据示例", example = "1024") + private String example; + + @ApiModelProperty(value = "是否为 Create 创建操作的字段", required = true, example = "true") + @NotNull(message = "是否为 Create 创建操作的字段不能为空") + private Boolean createOperation; + + @ApiModelProperty(value = "是否为 Update 更新操作的字段", required = true, example = "false") + @NotNull(message = "是否为 Update 更新操作的字段不能为空") + private Boolean updateOperation; + + @ApiModelProperty(value = "是否为 List 查询操作的字段", required = true, example = "true") + @NotNull(message = "是否为 List 查询操作的字段不能为空") + private Boolean listOperation; + + @ApiModelProperty(value = "List 查询操作的条件类型", required = true, example = "LIKE", notes = "参见 ToolCodegenColumnListConditionEnum 枚举") + @NotNull(message = "List 查询操作的条件类型不能为空") + private String listOperationCondition; + + @ApiModelProperty(value = "是否为 List 查询操作的返回字段", required = true, example = "true") + @NotNull(message = "是否为 List 查询操作的返回字段不能为空") + private Boolean listOperationResult; + + @ApiModelProperty(value = "显示类型", required = true, example = "input") + @NotNull(message = "显示类型不能为空") + private String htmlType; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/column/ToolCodegenColumnRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/column/ToolCodegenColumnRespVO.java new file mode 100644 index 0000000..c7d5564 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/column/ToolCodegenColumnRespVO.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.column; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.Date; + +@ApiModel("代码生成字段定义 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ToolCodegenColumnRespVO extends ToolCodegenColumnBaseVO { + + @ApiModelProperty(value = "编号", required = true, example = "1") + private Long id; + + @ApiModelProperty(value = "创建时间", required = true) + private Date createTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/table/ToolCodegenTableBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/table/ToolCodegenTableBaseVO.java new file mode 100644 index 0000000..e4fa2ab --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/table/ToolCodegenTableBaseVO.java @@ -0,0 +1,57 @@ +package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** +* 代码生成 Base VO,提供给添加、修改、详细的子 VO 使用 +* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 +*/ +@Data +public class ToolCodegenTableBaseVO { + + @ApiModelProperty(value = "导入类型", required = true, example = "1", notes = "参见 ToolCodegenImportTypeEnum 枚举") + @NotNull(message = "导入类型不能为空") + private Integer importType; + + @ApiModelProperty(value = "表名称", required = true, example = "yudao") + @NotNull(message = "表名称不能为空") + private String tableName; + + @ApiModelProperty(value = "表描述", required = true, example = "芋道") + @NotNull(message = "表描述不能为空") + private String tableComment; + + @ApiModelProperty(value = "备注", example = "我是备注") + private String remark; + + @ApiModelProperty(value = "模块名", required = true, example = "system") + @NotNull(message = "模块名不能为空") + private String moduleName; + + @ApiModelProperty(value = "业务名", required = true, example = "codegen") + @NotNull(message = "业务名不能为空") + private String businessName; + + @ApiModelProperty(value = "类名称", required = true, example = "ToolCodegenTable") + @NotNull(message = "类名称不能为空") + private String className; + + @ApiModelProperty(value = "类描述", required = true, example = "代码生成器的表定义") + @NotNull(message = "类描述不能为空") + private String classComment; + + @ApiModelProperty(value = "作者", required = true, example = "芋道源码") + @NotNull(message = "作者不能为空") + private String author; + + @ApiModelProperty(value = "模板类型", required = true, example = "1", notes = "参见 ToolCodegenTemplateTypeEnum 枚举") + @NotNull(message = "模板类型不能为空") + private Integer templateType; + + @ApiModelProperty(value = "父菜单编号", example = "1024") + private Long parentMenuId; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/table/ToolCodegenTablePageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/table/ToolCodegenTablePageReqVO.java new file mode 100644 index 0000000..b09238b --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/table/ToolCodegenTablePageReqVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@ApiModel("表定义分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ToolCodegenTablePageReqVO extends PageParam { + + @ApiModelProperty(value = "表名称", example = "yudao", notes = "模糊匹配") + private String tableName; + + @ApiModelProperty(value = "表描述", example = "芋道", notes = "模糊匹配") + private String tableComment; + + @ApiModelProperty(value = "开始创建时间", example = "2020-10-24 00:00:00") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private Date beginCreateTime; + + @ApiModelProperty(value = "结束创建时间", example = "2020-10-24 23:59:59") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private Date endCreateTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/table/ToolCodegenTableRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/table/ToolCodegenTableRespVO.java new file mode 100644 index 0000000..73ec3f8 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/table/ToolCodegenTableRespVO.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.Date; + +@ApiModel("代码生成表定义 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ToolCodegenTableRespVO extends ToolCodegenTableBaseVO { + + @ApiModelProperty(value = "编号", required = true, example = "1") + private Long id; + + @ApiModelProperty(value = "创建时间", required = true) + private Date createTime; + + @ApiModelProperty(value = "更新时间", required = true) + private Date updateTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/table/ToolSchemaTableRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/table/ToolSchemaTableRespVO.java new file mode 100644 index 0000000..284856f --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/table/ToolSchemaTableRespVO.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@ApiModel("数据字典的表定义 Response VO") +@Data +public class ToolSchemaTableRespVO { + + @ApiModelProperty(value = "数据库", required = true, example = "yudao") + private String tableSchema; + + @ApiModelProperty(value = "表名称", required = true, example = "yuanma") + private String tableName; + + @ApiModelProperty(value = "表描述", required = true, example = "芋道源码") + private String tableComment; + + @ApiModelProperty(value = "创建时间", required = true) + private Date createTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/ToolTestDemoController.http b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/ToolTestDemoController.http new file mode 100644 index 0000000..b10a3d2 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/ToolTestDemoController.http @@ -0,0 +1,7 @@ +### 请求 /tool/test-demo/get 接口 => 成功 +GET {{baseUrl}}/tool/test-demo/get?id=1 +Authorization: Bearer {{token}} + +### 请求 /tool/test-demo/list 接口 => 成功 +GET {{baseUrl}}/tool/test-demo/list?ids=1 +Authorization: Bearer {{token}} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/ToolTestDemoController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/ToolTestDemoController.java new file mode 100644 index 0000000..2249af5 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/ToolTestDemoController.java @@ -0,0 +1,108 @@ +package cn.iocoder.yudao.adminserver.modules.tool.controller.test; + +import cn.hutool.core.thread.ThreadUtil; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import cn.iocoder.yudao.framework.tracer.core.annotation.BizTrace; +import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.*; +import cn.iocoder.yudao.adminserver.modules.tool.convert.test.ToolTestDemoConvert; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.test.ToolTestDemoDO; +import cn.iocoder.yudao.adminserver.modules.tool.service.test.ToolTestDemoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.TimeUnit; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; + +@Api(tags = "测试示例") +@RestController +@RequestMapping("/tool/test-demo") +@Validated +public class ToolTestDemoController { + + @Resource + private ToolTestDemoService testDemoService; + + @PostMapping("/create") + @ApiOperation("创建测试示例") + @PreAuthorize("@ss.hasPermission('tool:test-demo:create')") + public CommonResult createTestDemo(@Valid @RequestBody ToolTestDemoCreateReqVO createReqVO) { + return success(testDemoService.createTestDemo(createReqVO)); + } + + @PutMapping("/update") + @ApiOperation("更新测试示例") + @PreAuthorize("@ss.hasPermission('tool:test-demo:update')") + public CommonResult updateTestDemo(@Valid @RequestBody ToolTestDemoUpdateReqVO updateReqVO) { + testDemoService.updateTestDemo(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @ApiOperation("删除测试示例") + @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class) + @PreAuthorize("@ss.hasPermission('tool:test-demo:delete')") + public CommonResult deleteTestDemo(@RequestParam("id") Long id) { + testDemoService.deleteTestDemo(id); + return success(true); + } + + @GetMapping("/get") + @ApiOperation("获得测试示例") + @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class) + @PreAuthorize("@ss.hasPermission('tool:test-demo:query')") +// @Lock4j // 分布式锁 + public CommonResult getTestDemo(@RequestParam("id") Long id) { + if (true) { // 测试分布式锁 + ThreadUtil.sleep(5, TimeUnit.SECONDS); + } + ToolTestDemoDO testDemo = testDemoService.getTestDemo(id); + return success(ToolTestDemoConvert.INSTANCE.convert(testDemo)); + } + + @GetMapping("/list") + @ApiOperation("获得测试示例列表") + @ApiImplicitParam(name = "ids", value = "编号列表", required = true, dataTypeClass = List.class) + @PreAuthorize("@ss.hasPermission('tool:test-demo:query')") +// @RateLimiter(name = "backendA") + @BizTrace(id = "#ids", type = "'user'") + public CommonResult> getTestDemoList(@RequestParam("ids") Collection ids) { + List list = testDemoService.getTestDemoList(ids); + return success(ToolTestDemoConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @ApiOperation("获得测试示例分页") + @PreAuthorize("@ss.hasPermission('tool:test-demo:query')") + public CommonResult> getTestDemoPage(@Valid ToolTestDemoPageReqVO pageVO) { + PageResult pageResult = testDemoService.getTestDemoPage(pageVO); + return success(ToolTestDemoConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @ApiOperation("导出测试示例 Excel") + @PreAuthorize("@ss.hasPermission('tool:test-demo:export')") + @OperateLog(type = EXPORT) + public void exportTestDemoExcel(@Valid ToolTestDemoExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = testDemoService.getTestDemoList(exportReqVO); + // 导出 Excel + List datas = ToolTestDemoConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "测试示例.xls", "数据", ToolTestDemoExcelVO.class, datas); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoBaseVO.java new file mode 100644 index 0000000..0e1af3c --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoBaseVO.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** +* 字典类型 Base VO,提供给添加、修改、详细的子 VO 使用 +* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 +*/ +@Data +public class ToolTestDemoBaseVO { + + @ApiModelProperty(value = "名字", required = true, example = "芋道") + @NotNull(message = "名字不能为空") + private String name; + + @ApiModelProperty(value = "状态", required = true, example = "1") + @NotNull(message = "状态不能为空") + private Integer status; + + @ApiModelProperty(value = "类型", required = true, example = "2") + @NotNull(message = "类型不能为空") + private Integer type; + + @ApiModelProperty(value = "分类", required = true, example = "3") + @NotNull(message = "分类不能为空") + private Integer category; + + @ApiModelProperty(value = "备注", example = "我是备注") + private String remark; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoCreateReqVO.java index 9b3aba8..b1866f7 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/controller/sms/vo/template/SysSmsTemplateUpdateReqVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoCreateReqVO.java @@ -1,21 +1,14 @@ -package cn.iocoder.dashboard.modules.system.controller.sms.vo.template; +package cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo; import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; -import javax.validation.constraints.NotNull; - -@ApiModel("短信模板更新 Request VO") +@ApiModel("字典类型创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public class SysSmsTemplateUpdateReqVO extends SysSmsTemplateBaseVO { - - @ApiModelProperty(value = "编号", required = true, example = "1024") - @NotNull(message = "编号不能为空") - private Long id; +public class ToolTestDemoCreateReqVO extends ToolTestDemoBaseVO { } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoExcelVO.java new file mode 100644 index 0000000..bfb9170 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoExcelVO.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo; + +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; +import cn.iocoder.yudao.adminserver.modules.infra.enums.InfDictTypeConstants; +import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * 测试示例 Excel VO + * + * @author 芋艿 + */ +@Data +public class ToolTestDemoExcelVO { + + @ExcelProperty("编号") + private Long id; + + @ExcelProperty("名字") + private String name; + + @ExcelProperty(value = "状态", converter = DictConvert.class) + @DictFormat(SysDictTypeConstants.COMMON_STATUS) + private Integer status; + + @ExcelProperty(value = "类型", converter = DictConvert.class) + @DictFormat(SysDictTypeConstants.OPERATE_TYPE) + private Integer type; + + @ExcelProperty(value = "分类", converter = DictConvert.class) + @DictFormat(InfDictTypeConstants.REDIS_TIMEOUT_TYPE) + private Integer category; + + @ExcelProperty("备注") + private String remark; + + @ExcelProperty("创建时间") + private Date createTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoExportReqVO.java new file mode 100644 index 0000000..84bce9e --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoExportReqVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@ApiModel(value = "字典类型 Excel 导出 Request VO", description = "参数和 ToolTestDemoPageReqVO 是一致的") +@Data +public class ToolTestDemoExportReqVO { + + @ApiModelProperty(value = "名字", example = "芋道") + private String name; + + @ApiModelProperty(value = "状态", example = "1") + private Integer status; + + @ApiModelProperty(value = "类型", example = "2") + private Integer type; + + @ApiModelProperty(value = "分类", example = "3") + private Integer category; + + @ApiModelProperty(value = "备注", example = "我是备注") + private String remark; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始创建时间") + private Date beginCreateTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束创建时间") + private Date endCreateTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoPageReqVO.java new file mode 100644 index 0000000..05fa157 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoPageReqVO.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@ApiModel("字典类型分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ToolTestDemoPageReqVO extends PageParam { + + @ApiModelProperty(value = "名字", example = "芋道") + private String name; + + @ApiModelProperty(value = "状态", example = "1") + private Integer status; + + @ApiModelProperty(value = "类型", example = "2") + private Integer type; + + @ApiModelProperty(value = "分类", example = "3") + private Integer category; + + @ApiModelProperty(value = "备注", example = "我是备注") + private String remark; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始创建时间") + private Date beginCreateTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束创建时间") + private Date endCreateTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoRespVO.java new file mode 100644 index 0000000..e679fd4 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoRespVO.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.Date; + +@ApiModel("字典类型 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ToolTestDemoRespVO extends ToolTestDemoBaseVO { + + @ApiModelProperty(value = "编号", required = true, example = "1") + private Long id; + + @ApiModelProperty(value = "创建时间", required = true) + private Date createTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoUpdateReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoUpdateReqVO.java new file mode 100644 index 0000000..ef05d44 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoUpdateReqVO.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.constraints.NotNull; + +@ApiModel("字典类型更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ToolTestDemoUpdateReqVO extends ToolTestDemoBaseVO { + + @ApiModelProperty(value = "编号", required = true, example = "1") + @NotNull(message = "编号不能为空") + private Long id; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/convert/codegen/ToolCodegenConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/convert/codegen/ToolCodegenConvert.java new file mode 100644 index 0000000..65bf461 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/convert/codegen/ToolCodegenConvert.java @@ -0,0 +1,70 @@ +package cn.iocoder.yudao.adminserver.modules.tool.convert.codegen; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.ToolCodegenDetailRespVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.ToolCodegenPreviewRespVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.ToolCodegenUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.column.ToolCodegenColumnRespVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolCodegenTableRespVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolSchemaTableRespVO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Mapper +public interface ToolCodegenConvert { + + ToolCodegenConvert INSTANCE = Mappers.getMapper(ToolCodegenConvert.class); + + // ========== ToolInformationSchemaTableDO 和 ToolInformationSchemaColumnDO 相关 ========== + + ToolCodegenTableDO convert(ToolSchemaTableDO bean); + + List convertList(List list); + + ToolCodegenTableRespVO convert(ToolSchemaColumnDO bean); + + // ========== ToolCodegenTableDO 相关 ========== + +// List convertList02(List list); + + ToolCodegenTableRespVO convert(ToolCodegenTableDO bean); + + PageResult convertPage(PageResult page); + + // ========== ToolCodegenTableDO 相关 ========== + + List convertList02(List list); + + ToolCodegenTableDO convert(ToolCodegenUpdateReqVO.Table bean); + + List convertList03(List columns); + + List convertList04(List list); + + // ========== 其它 ========== + + default ToolCodegenDetailRespVO convert(ToolCodegenTableDO table, List columns) { + ToolCodegenDetailRespVO respVO = new ToolCodegenDetailRespVO(); + respVO.setTable(convert(table)); + respVO.setColumns(convertList02(columns)); + return respVO; + } + + default List convert(Map codes) { + return codes.entrySet().stream().map(entry -> { + ToolCodegenPreviewRespVO respVO = new ToolCodegenPreviewRespVO(); + respVO.setFilePath(entry.getKey()); + respVO.setCode(entry.getValue()); + return respVO; + }).collect(Collectors.toList()); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/convert/test/ToolTestDemoConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/convert/test/ToolTestDemoConvert.java new file mode 100644 index 0000000..25f41fa --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/convert/test/ToolTestDemoConvert.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.adminserver.modules.tool.convert.test; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.ToolTestDemoCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.ToolTestDemoExcelVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.ToolTestDemoRespVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.ToolTestDemoUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.test.ToolTestDemoDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** +* 字典类型 Convert +* +* @author 芋艿 +*/ +@Mapper +public interface ToolTestDemoConvert { + + ToolTestDemoConvert INSTANCE = Mappers.getMapper(ToolTestDemoConvert.class); + + ToolTestDemoDO convert(ToolTestDemoCreateReqVO bean); + + ToolTestDemoDO convert(ToolTestDemoUpdateReqVO bean); + + ToolTestDemoRespVO convert(ToolTestDemoDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolCodegenColumnDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolCodegenColumnDO.java new file mode 100644 index 0000000..7d0d950 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolCodegenColumnDO.java @@ -0,0 +1,125 @@ +package cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO; +import cn.iocoder.yudao.adminserver.modules.tool.enums.codegen.ToolCodegenColumnHtmlTypeEnum; +import cn.iocoder.yudao.adminserver.modules.tool.enums.codegen.ToolCodegenColumnListConditionEnum; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 代码生成 column 字段定义 + * + * @author 芋道源码 + */ +@TableName(value = "tool_codegen_column", autoResultMap = true) +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = true) +public class ToolCodegenColumnDO extends BaseDO { + + /** + * ID 编号 + */ + @TableId + private Long id; + /** + * 表编号 + * + * 关联 {@link ToolCodegenTableDO#getId()} + */ + private Long tableId; + + // ========== 表相关字段 ========== + + /** + * 字段名 + */ + private String columnName; + /** + * 字段类型 + */ + private String columnType; + /** + * 字段描述 + */ + private String columnComment; + /** + * 是否允许为空 + */ + private Boolean nullable; + /** + * 是否主键 + */ + private Boolean primaryKey; + /** + * 是否自增 + */ + private Boolean autoIncrement; + /** + * 排序 + */ + private Integer ordinalPosition; + + // ========== Java 相关字段 ========== + + /** + * Java 属性类型 + * + * 例如说 String、Boolean 等等 + */ + private String javaType; + /** + * Java 属性名 + */ +// @NotBlank(message = "Java属性不能为空") + private String javaField; + /** + * 字典类型 + * + * 关联 {@link SysDictTypeDO#getType()} + */ + private String dictType; + /** + * 数据示例,主要用于生成 Swagger 注解的 example 字段 + */ + private String example; + + // ========== CRUD 相关字段 ========== + + /** + * 是否为 Create 创建操作的字段 + */ + private Boolean createOperation; + /** + * 是否为 Update 更新操作的字段 + */ + private Boolean updateOperation; + /** + * 是否为 List 查询操作的字段 + */ + private Boolean listOperation; + /** + * List 查询操作的条件类型 + * + * 枚举 {@link ToolCodegenColumnListConditionEnum} + */ + private String listOperationCondition; + /** + * 是否为 List 查询操作的返回字段 + */ + private Boolean listOperationResult; + + // ========== UI 相关字段 ========== + + /** + * 显示类型 + * + * 枚举 {@link ToolCodegenColumnHtmlTypeEnum} + */ + private String htmlType; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolCodegenTableDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolCodegenTableDO.java new file mode 100644 index 0000000..4ed11b2 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolCodegenTableDO.java @@ -0,0 +1,96 @@ +package cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO; +import cn.iocoder.yudao.adminserver.modules.tool.enums.codegen.ToolCodegenTemplateTypeEnum; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 代码生成 table 表定义 + * + * @author 芋道源码 + */ +@TableName(value = "tool_codegen_table", autoResultMap = true) +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = true) +public class ToolCodegenTableDO extends BaseDO { + + /** + * ID 编号 + */ + private Long id; + + /** + * 导入类型 + * + * 枚举 {@link ToolCodegenTemplateTypeEnum} + */ + private Integer importType; + + // ========== 表相关字段 ========== + + /** + * 表名称 + */ + private String tableName; + /** + * 表描述 + */ + private String tableComment; + /** + * 备注 + */ + private String remark; + + // ========== 类相关字段 ========== + + /** + * 模块名,即一级目录 + * + * 例如说,system、infra、tool 等等 + */ + private String moduleName; + /** + * 业务名,即二级目录 + * + * 例如说,user、permission、dict 等等 + */ + private String businessName; + /** + * 类名称(首字母大写) + * + * 例如说,SysUser、SysMenu、SysDictData 等等 + */ + private String className; + /** + * 类描述 + */ + private String classComment; + /** + * 作者 + */ + private String author; + + // ========== 生成相关字段 ========== + + /** + * 模板类型 + * + * 枚举 {@link ToolCodegenTemplateTypeEnum} + */ + private Integer templateType; + + // ========== 菜单相关字段 ========== + + /** + * 父菜单编号 + * + * 关联 {@link SysMenuDO#getId()} + */ + private Long parentMenuId; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolSchemaColumnDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolSchemaColumnDO.java new file mode 100644 index 0000000..e78e16f --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolSchemaColumnDO.java @@ -0,0 +1,54 @@ +package cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Builder; +import lombok.Data; + +/** + * MySQL 数据库中的 column 字段定义 + * + * @author 芋道源码 + */ +@TableName(value = "information_schema.columns", autoResultMap = true) +@Data +@Builder +public class ToolSchemaColumnDO { + + /** + * 表名称 + */ + private String tableName; + /** + * 字段名 + */ + private String columnName; + /** + * 字段类型 + */ + private String columnType; + /** + * 字段描述 + */ + private String columnComment; + /** + * 是否允许为空 + */ + @TableField("case when is_nullable = 'yes' then '1' else '0' end") + private Boolean nullable; + /** + * 是否主键 + */ + @TableField("case when column_key = 'PRI' then '1' else '0' end") + private Boolean primaryKey; + /** + * 是否自增 + */ + @TableField("case when extra = 'auto_increment' then '1' else '0' end") + private Boolean autoIncrement; + /** + * 排序字段 + */ + private Integer ordinalPosition; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolSchemaTableDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolSchemaTableDO.java new file mode 100644 index 0000000..e3e7035 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolSchemaTableDO.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Builder; +import lombok.Data; + +import java.util.Date; + +/** + * MySQL 数据库中的 table 表定义 + * + * @author 芋道源码 + */ +@TableName(value = "information_schema.tables", autoResultMap = true) +@Data +@Builder +public class ToolSchemaTableDO { + + /** + * 数据库 + */ + private String tableSchema; + /** + * 表名称 + */ + private String tableName; + /** + * 表描述 + */ + private String tableComment; + /** + * 创建时间 + */ + private Date createTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/test/ToolTestDemoDO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/test/ToolTestDemoDO.java new file mode 100644 index 0000000..d77ec22 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/test/ToolTestDemoDO.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.test; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +/** +* 字典类型 DO +* +* @author 芋艿 +*/ +@TableName("tool_test_demo") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ToolTestDemoDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 名字 + */ + private String name; + /** + * 状态 + * + * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + /** + * 类型 + * + * 枚举 {@link cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum} + */ + private Integer type; + /** + * 分类 + * + * 枚举 {@link cn.iocoder.yudao.framework.redis.core.RedisKeyDefine.TimeoutTypeEnum} + */ + private Integer category; + /** + * 备注 + */ + private String remark; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolCodegenColumnMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolCodegenColumnMapper.java new file mode 100644 index 0000000..2fae426 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolCodegenColumnMapper.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface ToolCodegenColumnMapper extends BaseMapperX { + + default List selectListByTableId(Long tableId) { + return selectList(new QueryWrapper().eq("table_id", tableId) + .orderByAsc("ordinal_position")); + } + + default void deleteListByTableId(Long tableId) { + delete(new QueryWrapper().eq("table_id", tableId)); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolCodegenTableMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolCodegenTableMapper.java new file mode 100644 index 0000000..31ce16f --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolCodegenTableMapper.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ToolCodegenTableMapper extends BaseMapperX { + + default ToolCodegenTableDO selectByTableName(String tableName) { + return selectOne(new QueryWrapper().eq("table_name", tableName)); + } + + default PageResult selectPage(ToolCodegenTablePageReqVO pageReqVO) { + return selectPage(pageReqVO, new QueryWrapperX() + .likeIfPresent("table_name", pageReqVO.getTableName()) + .likeIfPresent("table_comment", pageReqVO.getTableComment()) + .betweenIfPresent("create_time", pageReqVO.getBeginCreateTime(), pageReqVO.getEndCreateTime())); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolSchemaColumnMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolSchemaColumnMapper.java new file mode 100644 index 0000000..4778da0 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolSchemaColumnMapper.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface ToolSchemaColumnMapper extends BaseMapperX { + + default List selectListByTableName(String tableSchema, String tableName) { + return selectList(new QueryWrapper().eq("table_name", tableName) + .eq("table_schema", tableSchema) + .orderByAsc("ordinal_position")); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolSchemaTableMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolSchemaTableMapper.java new file mode 100644 index 0000000..7430ef6 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolSchemaTableMapper.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.Collection; +import java.util.List; + +@Mapper +public interface ToolSchemaTableMapper extends BaseMapperX { + + default List selectList(Collection tableSchemas, String tableName, String tableComment) { + return selectList(new QueryWrapperX().in("table_schema", tableSchemas) + .likeIfPresent("table_name", tableName) + .likeIfPresent("table_comment", tableComment)); + } + + default ToolSchemaTableDO selectByTableSchemaAndTableName(String tableSchema, String tableName) { + return selectOne(new QueryWrapper().eq("table_schema",tableSchema) + .eq("table_name", tableName)); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/test/ToolTestDemoMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/test/ToolTestDemoMapper.java new file mode 100644 index 0000000..937ba07 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/test/ToolTestDemoMapper.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.test; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.ToolTestDemoExportReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.ToolTestDemoPageReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.test.ToolTestDemoDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 字典类型 Mapper + * + * @author 芋艿 + */ +@Mapper +public interface ToolTestDemoMapper extends BaseMapperX { + + default PageResult selectPage(ToolTestDemoPageReqVO reqVO) { + return selectPage(reqVO, new QueryWrapperX() + .likeIfPresent("name", reqVO.getName()) + .eqIfPresent("status", reqVO.getStatus()) + .eqIfPresent("type", reqVO.getType()) + .eqIfPresent("category", reqVO.getCategory()) + .eqIfPresent("remark", reqVO.getRemark()) + .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) + ); + } + + default List selectList(ToolTestDemoExportReqVO reqVO) { + return selectList(new QueryWrapperX() + .likeIfPresent("name", reqVO.getName()) + .eqIfPresent("status", reqVO.getStatus()) + .eqIfPresent("type", reqVO.getType()) + .eqIfPresent("category", reqVO.getCategory()) + .eqIfPresent("remark", reqVO.getRemark()) + .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) + ); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/ToolErrorCodeConstants.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/ToolErrorCodeConstants.java new file mode 100644 index 0000000..cdf341d --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/ToolErrorCodeConstants.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.adminserver.modules.tool.enums; + +import cn.iocoder.yudao.framework.common.exception.ErrorCode; + +/** + * Tool 错误码枚举类 + * + * tool 系统,使用 1-003-000-000 段 + */ +public interface ToolErrorCodeConstants { + + // ========== 字典类型(测试) 1003000000 ========== + ErrorCode TEST_DEMO_NOT_EXISTS = new ErrorCode(1003000000, "测试示例不存在"); + + // ========== 代码生成器 1003001000 ========== + ErrorCode CODEGEN_TABLE_EXISTS = new ErrorCode(1003001000, "表定义已经存在"); + ErrorCode CODEGEN_IMPORT_TABLE_NULL = new ErrorCode(1003001001, "导入的表不存在"); + ErrorCode CODEGEN_IMPORT_COLUMNS_NULL = new ErrorCode(1003001002, "导入的字段不存在"); + ErrorCode CODEGEN_PARSE_SQL_ERROR = new ErrorCode(1003001003, "解析 SQL 失败,请检查"); + ErrorCode CODEGEN_TABLE_NOT_EXISTS = new ErrorCode(1003001004, "表定义不存在"); + ErrorCode CODEGEN_COLUMN_NOT_EXISTS = new ErrorCode(1003001005, "字段义不存在"); + ErrorCode CODEGEN_SYNC_COLUMNS_NULL = new ErrorCode(1003001006, "同步的字段不存在"); + ErrorCode CODEGEN_SYNC_NONE_CHANGE = new ErrorCode(1003001007, "同步失败,不存在改变"); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/codegen/ToolCodegenColumnHtmlTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/codegen/ToolCodegenColumnHtmlTypeEnum.java new file mode 100644 index 0000000..22dbdd2 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/codegen/ToolCodegenColumnHtmlTypeEnum.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.adminserver.modules.tool.enums.codegen; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 代码生成器的字段 HTML 展示枚举 + */ +@AllArgsConstructor +@Getter +public enum ToolCodegenColumnHtmlTypeEnum { + + INPUT("input"), // 文本框 + TEXTAREA("textarea"), // 文本域 + SELECT("select"), // 下拉框 + RADIO("radio"), // 单选框 + CHECKBOX("checkbox"), // 复选框 + DATETIME("datetime"), // 日期控件 + UPLOAD_IMAGE("upload_image"), // 上传图片 + UPLOAD_FILE("upload_file"), // 上传文件 + EDITOR("editor"), // 富文本控件 + ; + + /** + * 条件 + */ + private final String type; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/codegen/ToolCodegenColumnListConditionEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/codegen/ToolCodegenColumnListConditionEnum.java new file mode 100644 index 0000000..0783c98 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/codegen/ToolCodegenColumnListConditionEnum.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.adminserver.modules.tool.enums.codegen; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 代码生成器的字段过滤条件枚举 + */ +@AllArgsConstructor +@Getter +public enum ToolCodegenColumnListConditionEnum { + + EQ("="), + NE("!="), + GT(">"), + GTE(">="), + LT("<"), + LTE("<="), + LIKE("LIKE"), + BETWEEN("BETWEEN"); + + /** + * 条件 + */ + private final String condition; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/codegen/ToolCodegenImportTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/codegen/ToolCodegenImportTypeEnum.java new file mode 100644 index 0000000..746cb71 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/codegen/ToolCodegenImportTypeEnum.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.adminserver.modules.tool.enums.codegen; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 代码生成的导入类型 + * + * @author 芋道源码 + */ +@AllArgsConstructor +@Getter +public enum ToolCodegenImportTypeEnum { + + DB(1), // 从 information_schema 的 table 和 columns 表导入 + SQL(2); // 基于建表 SQL 语句导入 + + /** + * 类型 + */ + private final Integer type; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/codegen/ToolCodegenTemplateTypeEnum.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/codegen/ToolCodegenTemplateTypeEnum.java new file mode 100644 index 0000000..b192c31 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/codegen/ToolCodegenTemplateTypeEnum.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.adminserver.modules.tool.enums.codegen; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 代码生成模板类型 + * + * @author 芋道源码 + */ +@AllArgsConstructor +@Getter +public enum ToolCodegenTemplateTypeEnum { + + CRUD(1), // 单表(增删改查) + TREE(2), // 树表(增删改查) + ; + + /** + * 类型 + */ + private final Integer type; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/config/ErrorCodeConfiguration.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/config/ErrorCodeConfiguration.java new file mode 100644 index 0000000..9a2789e --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/config/ErrorCodeConfiguration.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.config; + +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.generator.ErrorCodeAutoGenerator; +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.loader.ErrorCodeLoader; +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.service.ErrorCodeFrameworkService; +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.loader.ErrorCodeLoaderImpl; +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.generator.ErrorCodeAutoGeneratorImpl; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; + +/** + * 错误码配置类 + */ +@Configuration +@EnableConfigurationProperties(ErrorCodeProperties.class) +@EnableScheduling // 开启调度任务的功能,因为 ErrorCodeRemoteLoader 通过定时刷新错误码 +public class ErrorCodeConfiguration { + + @Bean + public ErrorCodeAutoGenerator errorCodeAutoGenerator(@Value("${spring.application.name}") String applicationName, + ErrorCodeProperties errorCodeProperties, + ErrorCodeFrameworkService errorCodeFrameworkService) { + return new ErrorCodeAutoGeneratorImpl(applicationName, errorCodeProperties.getConstantsClassList(), + errorCodeFrameworkService); + } + + @Bean + public ErrorCodeLoader errorCodeLoader(@Value("${spring.application.name}") String applicationName, + ErrorCodeFrameworkService errorCodeFrameworkService) { + return new ErrorCodeLoaderImpl(applicationName, errorCodeFrameworkService); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/config/ErrorCodeProperties.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/config/ErrorCodeProperties.java new file mode 100644 index 0000000..f652a6a --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/config/ErrorCodeProperties.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 错误码的配置属性类 + * + * @author dlyan + */ +@ConfigurationProperties("yudao.error-code") +@Data +@Validated +public class ErrorCodeProperties { + + /** + * 错误码枚举类 + */ + @NotNull(message = "错误码枚举类不能为空") + private List constantsClassList; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/dto/ErrorCodeAutoGenerateReqDTO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/dto/ErrorCodeAutoGenerateReqDTO.java new file mode 100644 index 0000000..098f043 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/dto/ErrorCodeAutoGenerateReqDTO.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto; + +import lombok.Data; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +/** + * 错误码自动生成 DTO + * + * @author dylan + */ +@Data +@Accessors(chain = true) +public class ErrorCodeAutoGenerateReqDTO { + + /** + * 应用名 + */ + @NotNull(message = "应用名不能为空") + private String applicationName; + /** + * 错误码编码 + */ + @NotNull(message = "错误码编码不能为空") + private Integer code; + /** + * 错误码错误提示 + */ + @NotEmpty(message = "错误码错误提示不能为空") + private String message; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/dto/ErrorCodeRespDTO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/dto/ErrorCodeRespDTO.java new file mode 100644 index 0000000..7e2bb2a --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/dto/ErrorCodeRespDTO.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto; + +import lombok.Data; + +import java.util.Date; + +/** + * 错误码的 Response DTO + * + * @author 芋道源码 + */ +@Data +public class ErrorCodeRespDTO { + + /** + * 错误码编码 + */ + private Integer code; + /** + * 错误码错误提示 + */ + private String message; + /** + * 更新时间 + */ + private Date updateTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGenerator.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGenerator.java new file mode 100644 index 0000000..60689af --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGenerator.java @@ -0,0 +1,15 @@ +package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.generator; + +/** + * 错误码的自动生成器 + * + * @author dylan + */ +public interface ErrorCodeAutoGenerator { + + /** + * 将配置类到错误码写入数据库 + */ + void execute(); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGeneratorImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGeneratorImpl.java new file mode 100644 index 0000000..bedbcdc --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/generator/ErrorCodeAutoGeneratorImpl.java @@ -0,0 +1,98 @@ +package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.generator; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ClassUtil; +import cn.hutool.core.util.ReflectUtil; +import cn.iocoder.yudao.framework.common.exception.ErrorCode; +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO; +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.service.ErrorCodeFrameworkService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Async; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * ErrorCodeAutoGenerator 的实现类 + * 目的是,扫描指定的 {@link #constantsClassList} 类,写入到 system 服务中 + * + * @author dylan + */ +@RequiredArgsConstructor +@Slf4j +public class ErrorCodeAutoGeneratorImpl implements ErrorCodeAutoGenerator { + + /** + * 应用分组 + */ + private final String applicationName; + /** + * 错误码枚举类 + */ + private final List constantsClassList; + /** + * 错误码 Service + */ + private final ErrorCodeFrameworkService errorCodeService; + + @Override + @EventListener(ApplicationReadyEvent.class) + @Async // 异步,保证项目的启动过程,毕竟非关键流程 + public void execute() { + // 第一步,解析错误码 + List autoGenerateDTOs = parseErrorCode(); + log.info("[execute][解析到错误码数量为 ({}) 个]", autoGenerateDTOs.size()); + + // 第二步,写入到 system 服务 + errorCodeService.autoGenerateErrorCodes(autoGenerateDTOs); + log.info("[execute][写入到 system 组件完成]"); + } + + /** + * 解析 constantsClassList 变量,转换成错误码数组 + * + * @return 错误码数组 + */ + private List parseErrorCode() { + // 校验 errorCodeConstantsClass 参数 + if (CollUtil.isEmpty(constantsClassList)) { + log.info("[execute][未配置 yudao.error-code.constants-class-list 配置项,不进行自动写入到 system 服务中]"); + return new ArrayList<>(); + } + + // 解析错误码 + List autoGenerateDTOs = new ArrayList<>(); + constantsClassList.forEach(constantsClass -> { + // 解析错误码枚举类 + Class errorCodeConstantsClazz = ClassUtil.loadClass(constantsClass); + // 解析错误码 + autoGenerateDTOs.addAll(parseErrorCode(errorCodeConstantsClazz)); + }); + return autoGenerateDTOs; + } + + /** + * 解析错误码类,获得错误码数组 + * + * @return 错误码数组 + */ + private List parseErrorCode(Class constantsClass) { + List autoGenerateDTOs = new ArrayList<>(); + Arrays.stream(constantsClass.getFields()).forEach(field -> { + if (field.getType() != ErrorCode.class) { + return; + } + // 转换成 ErrorCodeAutoGenerateReqDTO 对象 + ErrorCode errorCode = (ErrorCode) ReflectUtil.getFieldValue(constantsClass, field); + autoGenerateDTOs.add(new ErrorCodeAutoGenerateReqDTO().setApplicationName(applicationName) + .setCode(errorCode.getCode()).setMessage(errorCode.getMsg())); + }); + return autoGenerateDTOs; + } + +} + diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/loader/ErrorCodeLoader.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/loader/ErrorCodeLoader.java new file mode 100644 index 0000000..d35767f --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/loader/ErrorCodeLoader.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.loader; + +import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; + +/** + * 错误码加载器 + * + * 注意,错误码最终加载到 {@link ServiceExceptionUtil} 的 MESSAGES 变量中! + * + * @author dlyan + */ +public interface ErrorCodeLoader { + + /** + * 添加错误码 + * + * @param code 错误码的编号 + * @param msg 错误码的提示 + */ + default void putErrorCode(Integer code, String msg) { + ServiceExceptionUtil.put(code, msg); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/loader/ErrorCodeLoaderImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/loader/ErrorCodeLoaderImpl.java new file mode 100644 index 0000000..234d30d --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/loader/ErrorCodeLoaderImpl.java @@ -0,0 +1,73 @@ +package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.loader; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeRespDTO; +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.service.ErrorCodeFrameworkService; +import cn.iocoder.yudao.framework.common.util.date.DateUtils; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Scheduled; + +import java.util.Date; +import java.util.List; + +/** + * ErrorCodeLoader 的实现类,从 infra 的数据库中,加载错误码。 + * + * 考虑到错误码会刷新,所以按照 {@link #REFRESH_ERROR_CODE_PERIOD} 频率,增量加载错误码。 + * + * @author dlyan + */ +@RequiredArgsConstructor +@Slf4j +public class ErrorCodeLoaderImpl implements ErrorCodeLoader { + + /** + * 刷新错误码的频率,单位:毫秒 + */ + private static final int REFRESH_ERROR_CODE_PERIOD = 60 * 1000; + + /** + * 应用分组 + */ + private final String applicationName; + /** + * 错误码 Service + */ + private final ErrorCodeFrameworkService errorCodeService; + + /** + * 缓存错误码的最大更新时间,用于后续的增量轮询,判断是否有更新 + */ + private Date maxUpdateTime; + + @EventListener(ApplicationReadyEvent.class) + public void loadErrorCodes() { + this.loadErrorCodes0(); + } + + @Scheduled(fixedDelay = REFRESH_ERROR_CODE_PERIOD, initialDelay = REFRESH_ERROR_CODE_PERIOD) + public void refreshErrorCodes() { + this.loadErrorCodes0(); + } + + private void loadErrorCodes0() { + // 加载错误码 + List errorCodeRespDTOs = errorCodeService.getErrorCodeList(applicationName, maxUpdateTime); + if (CollUtil.isEmpty(errorCodeRespDTOs)) { + return; + } + log.info("[loadErrorCodes0][加载到 ({}) 个错误码]", errorCodeRespDTOs.size()); + + // 刷新错误码的缓存 + errorCodeRespDTOs.forEach(errorCodeRespDTO -> { + // 写入到错误码的缓存 + putErrorCode(errorCodeRespDTO.getCode(), errorCodeRespDTO.getMessage()); + // 记录下更新时间,方便增量更新 + maxUpdateTime = DateUtils.max(maxUpdateTime, errorCodeRespDTO.getUpdateTime()); + }); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/service/ErrorCodeFrameworkService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/service/ErrorCodeFrameworkService.java new file mode 100644 index 0000000..e3f5e91 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/core/service/ErrorCodeFrameworkService.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.service; + +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO; +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeRespDTO; + +import javax.validation.Valid; +import java.util.Date; +import java.util.List; + +/** + * 错误码 Framework Service 接口 + * + * @author 芋道源码 + */ +public interface ErrorCodeFrameworkService { + + /** + * 自动创建错误码 + * + * @param autoGenerateDTOs 错误码信息 + */ + void autoGenerateErrorCodes(@Valid List autoGenerateDTOs); + + /** + * 增量获得错误码数组 + * + * 如果 minUpdateTime 为空时,则获取所有错误码 + * + * @param applicationName 应用名 + * @param minUpdateTime 最小更新时间 + * @return 错误码数组 + */ + List getErrorCodeList(String applicationName, Date minUpdateTime); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/package-info.java new file mode 100644 index 0000000..343ccae --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/errorcode/package-info.java @@ -0,0 +1,6 @@ +/** + * 错误码组件 + * + * 将错误码缓存在内存中,同时通过定时器每 n 分钟更新 + */ +package cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/package-info.java new file mode 100644 index 0000000..f9a66d3 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/package-info.java @@ -0,0 +1,6 @@ +/** + * 属于 tool 模块的 framework 封装 + * + * @author 芋道源码 + */ +package cn.iocoder.yudao.adminserver.modules.tool.framework; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/package-info.java new file mode 100644 index 0000000..f1e361d --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/package-info.java @@ -0,0 +1,7 @@ +/** + * tool 包下,我们放研发工具,提升研发效率与质量。 + * 例如说:代码生成器、接口文档等等 + * + * 缩写:tool + */ +package cn.iocoder.yudao.adminserver.modules.tool; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenService.java new file mode 100644 index 0000000..fbe61c4 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenService.java @@ -0,0 +1,121 @@ +package cn.iocoder.yudao.adminserver.modules.tool.service.codegen; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.ToolCodegenUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO; + +import java.util.List; +import java.util.Map; + +/** + * 代码生成 Service 接口 + * + * @author 芋道源码 + */ +public interface ToolCodegenService { + + /** + * 基于 SQL 建表语句,创建代码生成器的表定义 + * + * @param sql SQL 建表语句 + * @return 创建的表定义的编号 + */ + Long createCodegenListFromSQL(String sql); + + /** + * 基于数据库的表结构,创建代码生成器的表定义 + * + * @param tableName 表名称 + * @return 创建的表定义的编号 + */ + Long createCodegen(String tableName); + + /** + * 基于 {@link #createCodegen(String)} 的批量创建 + * + * @param tableNames 表名称数组 + * @return 创建的表定义的编号数组 + */ + List createCodegenListFromDB(List tableNames); + + /** + * 更新数据库的表和字段定义 + * + * @param updateReqVO 更新信息 + */ + void updateCodegen(ToolCodegenUpdateReqVO updateReqVO); + + /** + * 基于数据库的表结构,同步数据库的表和字段定义 + * + * @param tableId 表编号 + */ + void syncCodegenFromDB(Long tableId); + + /** + * 基于 SQL 建表语句,同步数据库的表和字段定义 + * + * @param tableId 表编号 + * @param sql SQL 建表语句 + */ + void syncCodegenFromSQL(Long tableId, String sql); + + /** + * 删除数据库的表和字段定义 + * + * @param tableId 数据编号 + */ + void deleteCodegen(Long tableId); + + /** + * 获得表定义分页 + * + * @param pageReqVO 分页条件 + * @return 表定义分页 + */ + PageResult getCodegenTablePage(ToolCodegenTablePageReqVO pageReqVO); + + /** + * 获得表定义 + * + * @param id 表编号 + * @return 表定义 + */ + ToolCodegenTableDO getCodegenTablePage(Long id); + + /** + * 获得全部表定义 + * + * @return 表定义数组 + */ + List getCodeGenTableList(); + + /** + * 获得指定表的字段定义数组 + * + * @param tableId 表编号 + * @return 字段定义数组 + */ + List getCodegenColumnListByTableId(Long tableId); + + /** + * 执行指定表的代码生成 + * + * @param tableId 表编号 + * @return 生成结果。key 为文件路径,value 为对应的代码内容 + */ + Map generationCodes(Long tableId); + + /** + * 获得数据库自带的表定义列表 + * + * @param tableName 表名称 + * @param tableComment 表描述 + * @return 表定义列表 + */ + List getSchemaTableList(String tableName, String tableComment); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenBuilder.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenBuilder.java index 123b1fd..87e6ab6 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenBuilder.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenBuilder.java @@ -1,16 +1,16 @@ -package cn.iocoder.dashboard.modules.tool.service.codegen.impl; +package cn.iocoder.yudao.adminserver.modules.tool.service.codegen.impl; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.dashboard.modules.tool.convert.codegen.ToolCodegenConvert; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO; -import cn.iocoder.dashboard.modules.tool.enums.codegen.ToolCodegenColumnHtmlTypeEnum; -import cn.iocoder.dashboard.modules.tool.enums.codegen.ToolCodegenColumnListConditionEnum; -import cn.iocoder.dashboard.modules.tool.enums.codegen.ToolCodegenTemplateTypeEnum; +import cn.iocoder.yudao.adminserver.modules.tool.convert.codegen.ToolCodegenConvert; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO; +import cn.iocoder.yudao.adminserver.modules.tool.enums.codegen.ToolCodegenColumnHtmlTypeEnum; +import cn.iocoder.yudao.adminserver.modules.tool.enums.codegen.ToolCodegenColumnListConditionEnum; +import cn.iocoder.yudao.adminserver.modules.tool.enums.codegen.ToolCodegenTemplateTypeEnum; import com.google.common.collect.Sets; import org.springframework.stereotype.Component; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenEngine.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenEngine.java index e959c14..5560c56 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenEngine.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenEngine.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.tool.service.codegen.impl; +package cn.iocoder.yudao.adminserver.modules.tool.service.codegen.impl; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.StrUtil; @@ -9,7 +9,7 @@ import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.framework.codegen.config.CodegenProperties; +import cn.iocoder.yudao.adminserver.modules.system.framework.codegen.config.CodegenProperties; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; @@ -18,8 +18,8 @@ import cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.date.DateUtils; import com.google.common.collect.Maps; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenSQLParser.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenSQLParser.java new file mode 100644 index 0000000..7a79f05 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenSQLParser.java @@ -0,0 +1,108 @@ +package cn.iocoder.yudao.adminserver.modules.tool.service.codegen.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO; +import com.alibaba.druid.DbType; +import com.alibaba.druid.sql.ast.expr.SQLCharExpr; +import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition; +import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement; +import com.alibaba.druid.sql.ast.statement.SQLPrimaryKey; +import com.alibaba.druid.sql.ast.statement.SQLTableElement; +import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateTableStatement; +import com.alibaba.druid.sql.repository.SchemaRepository; +import org.apache.commons.collections4.KeyValue; +import org.apache.commons.collections4.keyvalue.DefaultKeyValue; + +import java.util.ArrayList; +import java.util.List; + +import static com.alibaba.druid.sql.SQLUtils.normalize; + +/** + * SQL 解析器,将创建表的 SQL,解析成 {@link ToolSchemaTableDO} 和 {@link ToolSchemaColumnDO} 对象, + * 后续可以基于它们,生成代码~ + * + * @author 芋道源码 + */ +public class ToolCodegenSQLParser { + + /** + * 解析建表 SQL 语句,返回 {@link ToolSchemaTableDO} 和 {@link ToolSchemaColumnDO} 对象 + * + * @param sql 建表 SQL 语句 + * @return 解析结果 + */ + public static KeyValue> parse(String sql) { + // 解析 SQL 成 Statement + SQLCreateTableStatement statement = parseCreateSQL(sql); + // 解析 Table 表 + ToolSchemaTableDO table = parseTable(statement); + // 解析 Column 字段 + List columns = parseColumns(statement); + columns.forEach(column -> column.setTableName(table.getTableName())); + // 返回 + return new DefaultKeyValue<>(table, columns); + } + + /** + * 使用 Druid 工具,建表 SQL 语句 + * + * @param sql 建表 SQL 语句 + * @return 创建 Statement + */ + private static SQLCreateTableStatement parseCreateSQL(String sql) { + // 解析 SQL + SchemaRepository repository = new SchemaRepository(DbType.mysql); + repository.console(sql); + // 获得该表对应的 MySqlCreateTableStatement 对象 + String tableName = CollUtil.getFirst(repository.getDefaultSchema().getObjects()).getName(); + return (MySqlCreateTableStatement) repository.findTable(tableName).getStatement(); + } + + private static ToolSchemaTableDO parseTable(SQLCreateTableStatement statement) { + return ToolSchemaTableDO.builder() + .tableName(statement.getTableSource().getTableName(true)) + .tableComment(((SQLCharExpr) statement.getComment()).getText()) + .build(); + } + + private static List parseColumns(SQLCreateTableStatement statement) { + List columns = new ArrayList<>(); + statement.getTableElementList().forEach(element -> parseColumn(columns, element)); + return columns; + } + + private static void parseColumn(List columns, SQLTableElement element) { + // 处理主键 + if (element instanceof SQLPrimaryKey) { + parsePrimaryKey(columns, (SQLPrimaryKey) element); + return; + } + // 处理字段定义 + if (element instanceof SQLColumnDefinition) { + parseColumnDefinition(columns, (SQLColumnDefinition) element); + } + } + + private static void parsePrimaryKey(List columns, SQLPrimaryKey primaryKey) { + String columnName = normalize(primaryKey.getColumns().get(0).toString()); // 暂时不考虑联合主键 + // 匹配 columns 主键字段,设置为 primary + columns.stream().filter(column -> column.getColumnName().equals(columnName)) + .forEach(column -> column.setPrimaryKey(true)); + } + + private static void parseColumnDefinition(List columns, SQLColumnDefinition definition) { + String text = definition.toString().toUpperCase(); + columns.add(ToolSchemaColumnDO.builder() + .columnName(normalize(definition.getColumnName())) + .columnType(definition.getDataType().toString()) + .columnComment(normalize(definition.getComment().toString())) + .nullable(!text.contains(" NOT NULL")) + .primaryKey(false) + .autoIncrement(text.contains("AUTO_INCREMENT")) + .ordinalPosition(columns.size() + 1) + .build()); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenServiceImpl.java index 33d6962..f897b66 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenServiceImpl.java @@ -1,21 +1,21 @@ -package cn.iocoder.dashboard.modules.tool.service.codegen.impl; +package cn.iocoder.yudao.adminserver.modules.tool.service.codegen.impl; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.framework.codegen.config.CodegenProperties; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenUpdateReqVO; -import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO; -import cn.iocoder.dashboard.modules.tool.convert.codegen.ToolCodegenConvert; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO; -import cn.iocoder.dashboard.modules.tool.dal.mysql.codegen.ToolCodegenColumnMapper; -import cn.iocoder.dashboard.modules.tool.dal.mysql.codegen.ToolCodegenTableMapper; -import cn.iocoder.dashboard.modules.tool.dal.mysql.codegen.ToolSchemaColumnMapper; -import cn.iocoder.dashboard.modules.tool.dal.mysql.codegen.ToolSchemaTableMapper; -import cn.iocoder.dashboard.modules.tool.enums.codegen.ToolCodegenImportTypeEnum; -import cn.iocoder.dashboard.modules.tool.service.codegen.ToolCodegenService; +import cn.iocoder.yudao.adminserver.modules.system.framework.codegen.config.CodegenProperties; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.ToolCodegenUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.convert.codegen.ToolCodegenConvert; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen.ToolCodegenColumnMapper; +import cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen.ToolCodegenTableMapper; +import cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen.ToolSchemaColumnMapper; +import cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen.ToolSchemaTableMapper; +import cn.iocoder.yudao.adminserver.modules.tool.enums.codegen.ToolCodegenImportTypeEnum; +import cn.iocoder.yudao.adminserver.modules.tool.service.codegen.ToolCodegenService; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import org.apache.commons.collections4.KeyValue; import org.springframework.stereotype.Service; @@ -29,7 +29,7 @@ import java.util.Set; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.dashboard.modules.tool.enums.ToolErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.tool.enums.ToolErrorCodeConstants.*; /** * 代码生成 Service 实现类 diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/test/ToolTestDemoService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/test/ToolTestDemoService.java new file mode 100644 index 0000000..6ad63b7 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/test/ToolTestDemoService.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.adminserver.modules.tool.service.test; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.ToolTestDemoCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.ToolTestDemoExportReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.ToolTestDemoPageReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.ToolTestDemoUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.test.ToolTestDemoDO; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; + +/** + * 字典类型 Service 接口 + * + * @author 芋艿 + */ +public interface ToolTestDemoService { + + /** + * 创建字典类型 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createTestDemo(@Valid ToolTestDemoCreateReqVO createReqVO); + + /** + * 更新字典类型 + * + * @param updateReqVO 更新信息 + */ + void updateTestDemo(@Valid ToolTestDemoUpdateReqVO updateReqVO); + + /** + * 删除字典类型 + * + * @param id 编号 + */ + void deleteTestDemo(Long id); + + /** + * 获得字典类型 + * + * @param id 编号 + * @return 字典类型 + */ + ToolTestDemoDO getTestDemo(Long id); + + /** + * 获得字典类型列表 + * + * @param ids 编号 + * @return 字典类型列表 + */ + List getTestDemoList(Collection ids); + + /** + * 获得字典类型分页 + * + * @param pageReqVO 分页查询 + * @return 字典类型分页 + */ + PageResult getTestDemoPage(ToolTestDemoPageReqVO pageReqVO); + + /** + * 获得字典类型列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 字典类型分页 + */ + List getTestDemoList(ToolTestDemoExportReqVO exportReqVO); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/test/impl/ToolTestDemoServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/test/impl/ToolTestDemoServiceImpl.java new file mode 100644 index 0000000..b894b5f --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/test/impl/ToolTestDemoServiceImpl.java @@ -0,0 +1,86 @@ +package cn.iocoder.yudao.adminserver.modules.tool.service.test.impl; + +import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.ToolTestDemoCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.ToolTestDemoExportReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.ToolTestDemoPageReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.ToolTestDemoUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.tool.convert.test.ToolTestDemoConvert; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.test.ToolTestDemoDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.test.ToolTestDemoMapper; +import cn.iocoder.yudao.adminserver.modules.tool.service.test.ToolTestDemoService; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.Collection; +import java.util.List; + +import static cn.iocoder.yudao.adminserver.modules.tool.enums.ToolErrorCodeConstants.TEST_DEMO_NOT_EXISTS; + +/** + * 字典类型 Service 实现类 + * + * @author 芋艿 + */ +@Service +@Validated +public class ToolTestDemoServiceImpl implements ToolTestDemoService { + + @Resource + private ToolTestDemoMapper testDemoMapper; + + @Override + public Long createTestDemo(ToolTestDemoCreateReqVO createReqVO) { + // 插入 + ToolTestDemoDO testDemo = ToolTestDemoConvert.INSTANCE.convert(createReqVO); + testDemoMapper.insert(testDemo); + // 返回 + return testDemo.getId(); + } + + @Override + public void updateTestDemo(ToolTestDemoUpdateReqVO updateReqVO) { + // 校验存在 + this.validateTestDemoExists(updateReqVO.getId()); + // 更新 + ToolTestDemoDO updateObj = ToolTestDemoConvert.INSTANCE.convert(updateReqVO); + testDemoMapper.updateById(updateObj); + } + + @Override + public void deleteTestDemo(Long id) { + // 校验存在 + this.validateTestDemoExists(id); + // 更新 + testDemoMapper.deleteById(id); + } + + private void validateTestDemoExists(Long id) { + if (testDemoMapper.selectById(id) == null) { + throw ServiceExceptionUtil.exception(TEST_DEMO_NOT_EXISTS); + } + } + + @Override + public ToolTestDemoDO getTestDemo(Long id) { + return testDemoMapper.selectById(id); + } + + @Override + public List getTestDemoList(Collection ids) { + return testDemoMapper.selectBatchIds(ids); + } + + @Override + public PageResult getTestDemoPage(ToolTestDemoPageReqVO pageReqVO) { + return testDemoMapper.selectPage(pageReqVO); + } + + @Override + public List getTestDemoList(ToolTestDemoExportReqVO exportReqVO) { + return testDemoMapper.selectList(exportReqVO); + } + +} diff --git a/yudao-admin-server/src/main/resources/application-dev.yaml b/yudao-admin-server/src/main/resources/application-dev.yaml index 9963de7..5e71e23 100644 --- a/yudao-admin-server/src/main/resources/application-dev.yaml +++ b/yudao-admin-server/src/main/resources/application-dev.yaml @@ -99,7 +99,7 @@ apollo: eagerLoad: enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置 jdbc: # 自定义的 JDBC 配置项,用于数据库的地址 - dao: cn.iocoder.dashboard.modules.infra.dal.mysql.config.InfConfigDAOImpl + dao: cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.config.InfConfigDAOImpl url: ${spring.datasource.dynamic.datasource.master.url} username: ${spring.datasource.dynamic.datasource.master.username} password: ${spring.datasource.dynamic.datasource.master.password} @@ -152,12 +152,6 @@ logging: # 芋道配置项,设置当前项目所有自定义的配置 yudao: - info: - version: 1.0.0 - base-package: cn.iocoder.dashboard - web: - api-prefix: /api - controller-package: ${yudao.info.base-package} security: token-header: Authorization token-secret: abcdefghijklmnopqrstuvwxyz @@ -165,20 +159,8 @@ yudao: session-timeout: 30m mock-enable: true mock-secret: test - swagger: - title: 管理后台 - description: 提供管理员管理的所有功能 - version: ${yudao.info.version} - base-package: ${yudao.info.base-package}.modules - captcha: - timeout: 5m - width: 160 - height: 60 file: base-path: http://127.0.0.1:${server.port}${yudao.web.api-prefix}/system/file/get/ - codegen: - base-package: ${yudao.info.base-package} - db-schemas: ${spring.datasource.dynamic.datasource.master.name} xss: enable: false exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系 diff --git a/yudao-admin-server/src/main/resources/application-local.yaml b/yudao-admin-server/src/main/resources/application-local.yaml index 6e56f50..da750e7 100644 --- a/yudao-admin-server/src/main/resources/application-local.yaml +++ b/yudao-admin-server/src/main/resources/application-local.yaml @@ -99,7 +99,7 @@ apollo: eagerLoad: enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置 jdbc: # 自定义的 JDBC 配置项,用于数据库的地址 - dao: cn.iocoder.dashboard.modules.infra.dal.mysql.config.InfConfigDAOImpl + dao: cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.config.InfConfigDAOImpl url: ${spring.datasource.dynamic.datasource.master.url} username: ${spring.datasource.dynamic.datasource.master.username} password: ${spring.datasource.dynamic.datasource.master.password} @@ -152,12 +152,6 @@ logging: # 芋道配置项,设置当前项目所有自定义的配置 yudao: - info: - version: 1.0.0 - base-package: cn.iocoder.dashboard - web: - api-prefix: /api - controller-package: ${yudao.info.base-package} security: token-header: Authorization token-secret: abcdefghijklmnopqrstuvwxyz @@ -165,20 +159,8 @@ yudao: session-timeout: 30m mock-enable: true mock-secret: test - swagger: - title: 管理后台 - description: 提供管理员管理的所有功能 - version: ${yudao.info.version} - base-package: ${yudao.info.base-package}.modules - captcha: - timeout: 5m - width: 160 - height: 60 file: base-path: http://127.0.0.1:${server.port}${yudao.web.api-prefix}/system/file/get/ - codegen: - base-package: ${yudao.info.base-package} - db-schemas: ${spring.datasource.dynamic.datasource.master.name} xss: enable: false exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系 diff --git a/yudao-admin-server/src/main/resources/application.yaml b/yudao-admin-server/src/main/resources/application.yaml index ff50a89..21227d5 100644 --- a/yudao-admin-server/src/main/resources/application.yaml +++ b/yudao-admin-server/src/main/resources/application.yaml @@ -1,6 +1,6 @@ spring: application: - name: dashboard + name: yudao-admin-server profiles: active: local @@ -36,6 +36,24 @@ mybatis-plus: --- #################### 芋道相关配置 #################### yudao: + info: + version: 1.0.0 + base-package: cn.iocoder.yudao.adminserver + web: + api-prefix: /api + controller-package: ${yudao.info.base-package} + swagger: + title: 管理后台 + description: 提供管理员管理的所有功能 + version: ${yudao.info.version} + base-package: ${yudao.info.base-package}.modules + captcha: + timeout: 5m + width: 160 + height: 60 + codegen: + base-package: ${yudao.info.base-package} + db-schemas: ${spring.datasource.dynamic.datasource.master.name} error-code: # 错误码相关配置项 constants-class-list: - cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/BaseDbAndRedisIntegrationTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/BaseDbAndRedisIntegrationTest.java deleted file mode 100644 index 6694db7..0000000 --- a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/BaseDbAndRedisIntegrationTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package cn.iocoder.dashboard; - -import cn.iocoder.yudao.framework.datasource.config.DataSourceConfiguration; -import cn.iocoder.yudao.framework.mybatis.config.MybatisConfiguration; -import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; -import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration; -import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; -import org.redisson.spring.starter.RedissonAutoConfiguration; -import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.context.ActiveProfiles; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbAndRedisIntegrationTest.Application.class) -@ActiveProfiles("integration-test") // 设置使用 application-integration-test 配置文件 -public class BaseDbAndRedisIntegrationTest { - - @Import({ - // DB 配置类 - DynamicDataSourceAutoConfiguration.class, // Dynamic Datasource 配置类 - DataSourceConfiguration.class, // 自己的 DB 配置类 - DataSourceAutoConfiguration.class, // Spring DB 自动配置类 - DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类 - // MyBatis 配置类 - MybatisConfiguration.class, // 自己的 MyBatis 配置类 - MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类 - - // Redis 配置类 - RedisAutoConfiguration.class, // Spring Redis 自动配置类 - RedisConfig.class, // 自己的 Redis 配置类 - RedissonAutoConfiguration.class, // Redisson 自动高配置类 - }) - public static class Application { - } - -} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/BaseRedisIntegrationTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/BaseRedisIntegrationTest.java deleted file mode 100644 index 469efa5..0000000 --- a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/BaseRedisIntegrationTest.java +++ /dev/null @@ -1,23 +0,0 @@ -package cn.iocoder.dashboard; - -import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; -import org.redisson.spring.starter.RedissonAutoConfiguration; -import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.context.ActiveProfiles; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseRedisIntegrationTest.Application.class) -@ActiveProfiles("integration-test") // 设置使用 application-integration-test 配置文件 -public class BaseRedisIntegrationTest { - - @Import({ - // Redis 配置类 - RedisAutoConfiguration.class, // Spring Redis 自动配置类 - RedisConfig.class, // 自己的 Redis 配置类 - RedissonAutoConfiguration.class, // Redisson 自动高配置类 - }) - public static class Application { - } - -} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/quartz/core/SchedulerManagerTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/quartz/core/SchedulerManagerTest.java deleted file mode 100644 index 296383a..0000000 --- a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/quartz/core/SchedulerManagerTest.java +++ /dev/null @@ -1,53 +0,0 @@ -package cn.iocoder.dashboard.framework.quartz.core; - -import cn.hutool.core.util.StrUtil; -import cn.iocoder.dashboard.BaseDbUnitTest; -import cn.iocoder.dashboard.framework.quartz.core.scheduler.SchedulerManager; -import cn.iocoder.dashboard.modules.system.job.auth.SysUserSessionTimeoutJob; -import org.junit.jupiter.api.Test; -import org.quartz.SchedulerException; - -import javax.annotation.Resource; - -class SchedulerManagerTest extends BaseDbUnitTest { - - @Resource - private SchedulerManager schedulerManager; - - @Test - public void testAddJob() throws SchedulerException { - String jobHandlerName = StrUtil.lowerFirst(SysUserSessionTimeoutJob.class.getSimpleName()); - schedulerManager.addJob(1L, jobHandlerName, "test", "0/10 * * * * ? *", 0, 0); - } - - @Test - public void testUpdateJob() throws SchedulerException { - String jobHandlerName = StrUtil.lowerFirst(SysUserSessionTimeoutJob.class.getSimpleName()); - schedulerManager.updateJob(jobHandlerName, "hahaha", "0/20 * * * * ? *", 0, 0); - } - - @Test - public void testDeleteJob() throws SchedulerException { - String jobHandlerName = StrUtil.lowerFirst(SysUserSessionTimeoutJob.class.getSimpleName()); - schedulerManager.deleteJob(jobHandlerName); - } - - @Test - public void testPauseJob() throws SchedulerException { - String jobHandlerName = StrUtil.lowerFirst(SysUserSessionTimeoutJob.class.getSimpleName()); - schedulerManager.pauseJob(jobHandlerName); - } - - @Test - public void testResumeJob() throws SchedulerException { - String jobHandlerName = StrUtil.lowerFirst(SysUserSessionTimeoutJob.class.getSimpleName()); - schedulerManager.resumeJob(jobHandlerName); - } - - @Test - public void testTriggerJob() throws SchedulerException { - String jobHandlerName = StrUtil.lowerFirst(SysUserSessionTimeoutJob.class.getSimpleName()); - schedulerManager.triggerJob(1L, jobHandlerName, "niubi!!!"); - } - -} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/redis/core/stream/RedisStreamTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/redis/core/stream/RedisStreamTest.java deleted file mode 100644 index da82a2c..0000000 --- a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/redis/core/stream/RedisStreamTest.java +++ /dev/null @@ -1,63 +0,0 @@ -package cn.iocoder.yudao.framework.redis.core.stream; - -import cn.hutool.core.thread.ThreadUtil; -import cn.iocoder.dashboard.BaseRedisIntegrationTest; -import cn.iocoder.yudao.framework.redis.core.util.RedisMessageUtils; -import cn.iocoder.dashboard.modules.system.mq.consumer.mail.SysMailSendConsumer; -import cn.iocoder.dashboard.modules.system.mq.consumer.sms.SysSmsSendConsumer; -import cn.iocoder.dashboard.modules.system.mq.message.mail.SysMailSendMessage; -import cn.iocoder.dashboard.modules.system.mq.message.sms.SysSmsSendMessage; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.core.StringRedisTemplate; - -import javax.annotation.Resource; -import java.util.concurrent.TimeUnit; - -public class RedisStreamTest { - - @Import({SysSmsSendConsumer.class, SysMailSendConsumer.class}) - @Disabled - public static class ConsumerTest extends BaseRedisIntegrationTest { - - @Test - public void testConsumer() { - ThreadUtil.sleep(1, TimeUnit.DAYS); - } - - } - - @Disabled - public static class ProducerTest extends BaseRedisIntegrationTest { - - @Resource - private StringRedisTemplate stringRedisTemplate; - - @Resource - private RedisTemplate redisTemplate; - - @Test - public void testProducer01() { - for (int i = 0; i < 100; i++) { - // 创建消息 - SysSmsSendMessage message = new SysSmsSendMessage(); - message.setMobile("15601691300").setApiTemplateId("test:" + i); - // 发送消息 - RedisMessageUtils.sendStreamMessage(stringRedisTemplate, message); - } - } - - @Test - public void testProducer02() { - // 创建消息 - SysMailSendMessage message = new SysMailSendMessage(); - message.setAddress("fangfang@mihayou.com").setTemplateCode("test"); - // 发送消息 - RedisMessageUtils.sendStreamMessage(stringRedisTemplate, message); - } - - } - -} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/sms/core/client/impl/aliyun/AliyunSmsClientIntegrationTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/sms/core/client/impl/aliyun/AliyunSmsClientIntegrationTest.java deleted file mode 100644 index ef38552..0000000 --- a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/sms/core/client/impl/aliyun/AliyunSmsClientIntegrationTest.java +++ /dev/null @@ -1,54 +0,0 @@ -package cn.iocoder.dashboard.framework.sms.core.client.impl.aliyun; - -import cn.iocoder.yudao.common.core.KeyValue; -import cn.iocoder.dashboard.framework.sms.core.client.SmsCommonResult; -import cn.iocoder.dashboard.framework.sms.core.client.dto.SmsSendRespDTO; -import cn.iocoder.dashboard.framework.sms.core.client.dto.SmsTemplateRespDTO; -import cn.iocoder.dashboard.framework.sms.core.enums.SmsChannelEnum; -import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperties; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; - -import java.util.ArrayList; -import java.util.List; - -/** - * {@link AliyunSmsClient} 的集成测试 - */ -public class AliyunSmsClientIntegrationTest { - - private static AliyunSmsClient smsClient; - - @BeforeAll - public static void before() { - // 创建配置类 - SmsChannelProperties properties = new SmsChannelProperties(); - properties.setId(1L); - properties.setSignature("Ballcat"); - properties.setCode(SmsChannelEnum.ALIYUN.getCode()); - properties.setApiKey(System.getenv("ALIYUN_ACCESS_KEY")); - properties.setApiSecret(System.getenv("ALIYUN_SECRET_KEY")); - // 创建客户端 - smsClient = new AliyunSmsClient(properties); - smsClient.init(); - } - - @Test - public void testSendSms() { - List> templateParams = new ArrayList<>(); - templateParams.add(new KeyValue<>("code", "1024")); -// templateParams.put("operation", "嘿嘿"); -// SmsResult result = smsClient.send(1L, "15601691399", "4372216", templateParams); - SmsCommonResult result = smsClient.sendSms(1L, "15601691399", - "SMS_207945135", templateParams); - System.out.println(result); - } - - @Test - public void testGetSmsTemplate() { - String apiTemplateId = "SMS_2079451351"; - SmsCommonResult result = smsClient.getSmsTemplate(apiTemplateId); - System.out.println(result); - } - -} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/sms/core/client/impl/debug/DebugDingTalkSmsClientIntegrationTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/sms/core/client/impl/debug/DebugDingTalkSmsClientIntegrationTest.java deleted file mode 100644 index 825eb09..0000000 --- a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/sms/core/client/impl/debug/DebugDingTalkSmsClientIntegrationTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package cn.iocoder.dashboard.framework.sms.core.client.impl.debug; - -import cn.iocoder.yudao.common.core.KeyValue; -import cn.iocoder.dashboard.framework.sms.core.client.SmsCommonResult; -import cn.iocoder.dashboard.framework.sms.core.client.dto.SmsSendRespDTO; -import cn.iocoder.dashboard.framework.sms.core.enums.SmsChannelEnum; -import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperties; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; - -import java.util.ArrayList; -import java.util.List; - -/** - * {@link DebugDingTalkSmsClient} 的集成测试 - */ -public class DebugDingTalkSmsClientIntegrationTest { - - private static DebugDingTalkSmsClient smsClient; - - @BeforeAll - public static void init() { - // 创建配置类 - SmsChannelProperties properties = new SmsChannelProperties(); - properties.setId(1L); - properties.setSignature("芋道"); - properties.setCode(SmsChannelEnum.DEBUG_DING_TALK.getCode()); - properties.setApiKey("696b5d8ead48071237e4aa5861ff08dbadb2b4ded1c688a7b7c9afc615579859"); - properties.setApiSecret("SEC5c4e5ff888bc8a9923ae47f59e7ccd30af1f14d93c55b4e2c9cb094e35aeed67"); - // 创建客户端 - smsClient = new DebugDingTalkSmsClient(properties); - smsClient.init(); - } - - @Test - public void testSendSms() { - List> templateParams = new ArrayList<>(); - templateParams.add(new KeyValue<>("code", "1024")); - templateParams.add(new KeyValue<>("operation", "嘿嘿")); -// SmsResult result = smsClient.send(1L, "15601691399", "4372216", templateParams); - SmsCommonResult result = smsClient.sendSms(1L, "15601691399", "4383920", templateParams); - System.out.println(result); - } - -} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/sms/core/client/impl/yunpian/YunpianSmsClientIntegrationTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/sms/core/client/impl/yunpian/YunpianSmsClientIntegrationTest.java deleted file mode 100644 index 3099cdf..0000000 --- a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/sms/core/client/impl/yunpian/YunpianSmsClientIntegrationTest.java +++ /dev/null @@ -1,52 +0,0 @@ -package cn.iocoder.dashboard.framework.sms.core.client.impl.yunpian; - -import cn.iocoder.yudao.common.core.KeyValue; -import cn.iocoder.dashboard.framework.sms.core.client.SmsCommonResult; -import cn.iocoder.dashboard.framework.sms.core.client.dto.SmsSendRespDTO; -import cn.iocoder.dashboard.framework.sms.core.client.dto.SmsTemplateRespDTO; -import cn.iocoder.dashboard.framework.sms.core.enums.SmsChannelEnum; -import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperties; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; - -import java.util.ArrayList; -import java.util.List; - -/** - * {@link YunpianSmsClient} 的集成测试 - */ -public class YunpianSmsClientIntegrationTest { - - private static YunpianSmsClient smsClient; - - @BeforeAll - public static void init() { - // 创建配置类 - SmsChannelProperties properties = new SmsChannelProperties(); - properties.setId(1L); - properties.setSignature("芋道"); - properties.setCode(SmsChannelEnum.YUN_PIAN.getCode()); - properties.setApiKey("1555a14277cb8a608cf45a9e6a80d510"); - // 创建客户端 - smsClient = new YunpianSmsClient(properties); - smsClient.init(); - } - - @Test - public void testSendSms() { - List> templateParams = new ArrayList<>(); - templateParams.add(new KeyValue<>("code", "1024")); - templateParams.add(new KeyValue<>("operation", "嘿嘿")); -// SmsResult result = smsClient.send(1L, "15601691399", "4372216", templateParams); - SmsCommonResult result = smsClient.sendSms(1L, "15601691399", "4383920", templateParams); - System.out.println(result); - } - - @Test - public void testGetSmsTemplate() { - String apiTemplateId = "4383920"; - SmsCommonResult result = smsClient.getSmsTemplate(apiTemplateId); - System.out.println(result); - } - -} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/sms/core/client/package-info.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/sms/core/client/package-info.java deleted file mode 100644 index 037ce8c..0000000 --- a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/framework/sms/core/client/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package cn.iocoder.dashboard.framework.sms.core.client; diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/system/service/package-info.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/system/service/package-info.java deleted file mode 100644 index 09c1d9d..0000000 --- a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/system/service/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service; diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsServiceIntegrationTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsServiceIntegrationTest.java deleted file mode 100644 index 4504863..0000000 --- a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsServiceIntegrationTest.java +++ /dev/null @@ -1,74 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.sms; - -import cn.hutool.core.map.MapUtil; -import cn.hutool.core.thread.ThreadUtil; -import cn.iocoder.dashboard.BaseDbAndRedisIntegrationTest; -import cn.iocoder.yudao.common.enums.UserTypeEnum; -import cn.iocoder.dashboard.framework.sms.config.SmsConfiguration; -import cn.iocoder.dashboard.modules.system.mq.consumer.sms.SysSmsSendConsumer; -import cn.iocoder.dashboard.modules.system.mq.producer.sms.SysSmsProducer; -import cn.iocoder.dashboard.modules.system.service.sms.impl.SysSmsChannelServiceImpl; -import cn.iocoder.dashboard.modules.system.service.sms.impl.SysSmsLogServiceImpl; -import cn.iocoder.dashboard.modules.system.service.sms.impl.SysSmsServiceImpl; -import cn.iocoder.dashboard.modules.system.service.sms.impl.SysSmsTemplateServiceImpl; -import cn.iocoder.dashboard.modules.system.service.user.SysUserService; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -@Import({SmsConfiguration.class, - SysSmsChannelServiceImpl.class, SysSmsServiceImpl.class, SysSmsTemplateServiceImpl.class, SysSmsLogServiceImpl.class, - SysSmsProducer.class, SysSmsSendConsumer.class}) -public class SysSmsServiceIntegrationTest extends BaseDbAndRedisIntegrationTest { - - @Resource - private SysSmsServiceImpl smsService; - @Resource - private SysSmsChannelServiceImpl smsChannelService; - - @MockBean - private SysUserService userService; - - @Test - public void testSendSingleSms_yunpianSuccess() { - // 参数准备 - String mobile = "15601691399"; - Long userId = 1L; - Integer userType = UserTypeEnum.ADMIN.getValue(); - String templateCode = "test_01"; - Map templateParams = MapUtil.builder() - .put("operation", "登陆").put("code", "1234").build(); - // 调用 - smsService.sendSingleSms(mobile, userId, userType, templateCode, templateParams); - - // 等待 MQ 消费 - ThreadUtil.sleep(1, TimeUnit.HOURS); - } - - @Test - public void testSendSingleSms_aliyunSuccess() { - // 参数准备 - String mobile = "15601691399"; - Long userId = 1L; - Integer userType = UserTypeEnum.ADMIN.getValue(); - String templateCode = "test_02"; - Map templateParams = MapUtil.builder() - .put("code", "1234").build(); - // 调用 - smsService.sendSingleSms(mobile, userId, userType, templateCode, templateParams); - - // 等待 MQ 消费 - ThreadUtil.sleep(1, TimeUnit.HOURS); - } - -// @Test -// public void testDoSendSms() { -// // 等待 MQ 消费 -// ThreadUtil.sleep(1, TimeUnit.HOURS); -// } - -} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolInformationSchemaColumnMapperTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolInformationSchemaColumnMapperTest.java deleted file mode 100644 index af2fc68..0000000 --- a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolInformationSchemaColumnMapperTest.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.dal.mysql.codegen; - -import cn.iocoder.dashboard.BaseDbUnitTest; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO; -import org.junit.jupiter.api.Test; - -import javax.annotation.Resource; -import java.util.List; - -import static org.junit.jupiter.api.Assertions.assertTrue; - -public class ToolInformationSchemaColumnMapperTest extends BaseDbUnitTest { - - @Resource - private ToolSchemaColumnMapper toolInformationSchemaColumnMapper; - - @Test - public void testSelectListByTableName() { - List columns = toolInformationSchemaColumnMapper - .selectListByTableName("", "inf_config"); - assertTrue(columns.size() > 0); - } - -} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolInformationSchemaTableMapperTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolInformationSchemaTableMapperTest.java deleted file mode 100644 index a0004f3..0000000 --- a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolInformationSchemaTableMapperTest.java +++ /dev/null @@ -1,12 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.dal.mysql.codegen; - -import cn.iocoder.dashboard.BaseDbUnitTest; - -import javax.annotation.Resource; - -class ToolInformationSchemaTableMapperTest extends BaseDbUnitTest { - - @Resource - private ToolSchemaTableMapper toolInformationSchemaTableMapper; - -} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/tool/service/codegen/ToolCodegenEngineTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/tool/service/codegen/ToolCodegenEngineTest.java deleted file mode 100644 index e3cf739..0000000 --- a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/tool/service/codegen/ToolCodegenEngineTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.service.codegen; - -import cn.iocoder.dashboard.BaseDbUnitTest; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; -import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; -import cn.iocoder.dashboard.modules.tool.dal.mysql.codegen.ToolCodegenColumnMapper; -import cn.iocoder.dashboard.modules.tool.dal.mysql.codegen.ToolCodegenTableMapper; -import cn.iocoder.dashboard.modules.tool.service.codegen.impl.ToolCodegenEngine; -import org.junit.jupiter.api.Test; - -import javax.annotation.Resource; -import java.util.List; -import java.util.Map; - -public class ToolCodegenEngineTest extends BaseDbUnitTest { - - @Resource - private ToolCodegenTableMapper codegenTableMapper; - @Resource - private ToolCodegenColumnMapper codegenColumnMapper; - - @Resource - private ToolCodegenEngine codegenEngine; - - @Test - public void testExecute() { - ToolCodegenTableDO table = codegenTableMapper.selectById(20); - List columns = codegenColumnMapper.selectListByTableId(table.getId()); - Map result = codegenEngine.execute(table, columns); - result.forEach((s, s2) -> System.out.println(s2)); -// System.out.println(result.get("vue/views/system/test/index.vue")); - } - -} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/tool/service/codegen/ToolCodegenSQLParserTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/tool/service/codegen/ToolCodegenSQLParserTest.java deleted file mode 100644 index 45c4238..0000000 --- a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/tool/service/codegen/ToolCodegenSQLParserTest.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.service.codegen; - -import cn.iocoder.dashboard.BaseDbUnitTest; -import cn.iocoder.dashboard.modules.tool.service.codegen.impl.ToolCodegenSQLParser; -import org.junit.jupiter.api.Test; - -public class ToolCodegenSQLParserTest extends BaseDbUnitTest { - - @Test - public void testParse() { - String sql = "CREATE TABLE `tool_test_demo` (\n" + - " `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',\n" + - " `name` varchar(100) NOT NULL DEFAULT '' COMMENT '名字',\n" + - " `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态',\n" + - " `type` tinyint(4) NOT NULL COMMENT '类型',\n" + - " `category` tinyint(4) NOT NULL COMMENT '分类',\n" + - " `remark` varchar(500) DEFAULT NULL COMMENT '备注',\n" + - " `create_by` varchar(64) DEFAULT '' COMMENT '创建者',\n" + - " `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',\n" + - " `update_by` varchar(64) DEFAULT '' COMMENT '更新者',\n" + - " `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',\n" + - " `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',\n" + - " PRIMARY KEY (`id`) USING BTREE\n" + - ") ENGINE=InnoDB AUTO_INCREMENT=108 DEFAULT CHARSET=utf8mb4 COMMENT='字典类型表';"; - ToolCodegenSQLParser.parse(sql); - // TODO 芋艿:后续完善断言 - } - -} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/tool/service/codegen/ToolCodegenServiceImplTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/tool/service/codegen/ToolCodegenServiceImplTest.java deleted file mode 100644 index 4bb2cc6..0000000 --- a/yudao-admin-server/src/test-integration/java/cn/iocoder/dashboard/modules/tool/service/codegen/ToolCodegenServiceImplTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package cn.iocoder.dashboard.modules.tool.service.codegen; - -import cn.iocoder.dashboard.BaseDbUnitTest; -import cn.iocoder.dashboard.modules.tool.service.codegen.impl.ToolCodegenServiceImpl; -import org.junit.jupiter.api.Test; - -import javax.annotation.Resource; - -class ToolCodegenServiceImplTest extends BaseDbUnitTest { - - @Resource - private ToolCodegenServiceImpl toolCodegenService; - - @Test - public void tetCreateCodegenTable() { - toolCodegenService.createCodegen("tool_test_demo"); -// toolCodegenService.createCodegenTable("tool_codegen_table"); -// toolCodegenService.createCodegen("tool_codegen_column"); - } - -} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/BaseDbAndRedisIntegrationTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/BaseDbAndRedisIntegrationTest.java new file mode 100644 index 0000000..915715c --- /dev/null +++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/BaseDbAndRedisIntegrationTest.java @@ -0,0 +1,38 @@ +package cn.iocoder.yudao.adminserver; + +import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration; +import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration; +import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; +import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration; +import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; +import org.redisson.spring.starter.RedissonAutoConfiguration; +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; +import org.springframework.test.context.ActiveProfiles; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbAndRedisIntegrationTest.Application.class) +@ActiveProfiles("integration-test") // 设置使用 application-integration-test 配置文件 +public class BaseDbAndRedisIntegrationTest { + + @Import({ + // DB 配置类 + DynamicDataSourceAutoConfiguration.class, // Dynamic Datasource 配置类 + YudaoDataSourceAutoConfiguration.class, // 自己的 DB 配置类 + DataSourceAutoConfiguration.class, // Spring DB 自动配置类 + DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类 + // MyBatis 配置类 + YudaoMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类 + MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类 + + // Redis 配置类 + RedisAutoConfiguration.class, // Spring Redis 自动配置类 + YudaoRedisAutoConfiguration.class, // 自己的 Redis 配置类 + RedissonAutoConfiguration.class, // Redisson 自动高配置类 + }) + public static class Application { + } + +} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/BaseRedisIntegrationTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/BaseRedisIntegrationTest.java new file mode 100644 index 0000000..78857e0 --- /dev/null +++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/BaseRedisIntegrationTest.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.adminserver; + +import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; +import org.redisson.spring.starter.RedissonAutoConfiguration; +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; +import org.springframework.test.context.ActiveProfiles; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseRedisIntegrationTest.Application.class) +@ActiveProfiles("integration-test") // 设置使用 application-integration-test 配置文件 +public class BaseRedisIntegrationTest { + + @Import({ + // Redis 配置类 + RedisAutoConfiguration.class, // Spring Redis 自动配置类 + YudaoRedisAutoConfiguration.class, // 自己的 Redis 配置类 + RedissonAutoConfiguration.class, // Redisson 自动高配置类 + }) + public static class Application { + } + +} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/quartz/core/SchedulerManagerTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/quartz/core/SchedulerManagerTest.java new file mode 100644 index 0000000..efa9592 --- /dev/null +++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/quartz/core/SchedulerManagerTest.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.adminserver.framework.quartz.core; + +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.modules.system.job.auth.SysUserSessionTimeoutJob; +import cn.iocoder.yudao.framework.quartz.core.scheduler.SchedulerManager; +import org.junit.jupiter.api.Test; +import org.quartz.SchedulerException; + +import javax.annotation.Resource; + +class SchedulerManagerTest extends BaseDbUnitTest { + + @Resource + private SchedulerManager schedulerManager; + + @Test + public void testAddJob() throws SchedulerException { + String jobHandlerName = StrUtil.lowerFirst(SysUserSessionTimeoutJob.class.getSimpleName()); + schedulerManager.addJob(1L, jobHandlerName, "test", "0/10 * * * * ? *", 0, 0); + } + + @Test + public void testUpdateJob() throws SchedulerException { + String jobHandlerName = StrUtil.lowerFirst(SysUserSessionTimeoutJob.class.getSimpleName()); + schedulerManager.updateJob(jobHandlerName, "hahaha", "0/20 * * * * ? *", 0, 0); + } + + @Test + public void testDeleteJob() throws SchedulerException { + String jobHandlerName = StrUtil.lowerFirst(SysUserSessionTimeoutJob.class.getSimpleName()); + schedulerManager.deleteJob(jobHandlerName); + } + + @Test + public void testPauseJob() throws SchedulerException { + String jobHandlerName = StrUtil.lowerFirst(SysUserSessionTimeoutJob.class.getSimpleName()); + schedulerManager.pauseJob(jobHandlerName); + } + + @Test + public void testResumeJob() throws SchedulerException { + String jobHandlerName = StrUtil.lowerFirst(SysUserSessionTimeoutJob.class.getSimpleName()); + schedulerManager.resumeJob(jobHandlerName); + } + + @Test + public void testTriggerJob() throws SchedulerException { + String jobHandlerName = StrUtil.lowerFirst(SysUserSessionTimeoutJob.class.getSimpleName()); + schedulerManager.triggerJob(1L, jobHandlerName, "niubi!!!"); + } + +} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/redis/core/stream/RedisStreamTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/redis/core/stream/RedisStreamTest.java new file mode 100644 index 0000000..eea5c00 --- /dev/null +++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/redis/core/stream/RedisStreamTest.java @@ -0,0 +1,63 @@ +package cn.iocoder.yudao.adminserver.framework.redis.core.stream; + +import cn.hutool.core.thread.ThreadUtil; +import cn.iocoder.yudao.adminserver.BaseRedisIntegrationTest; +import cn.iocoder.yudao.adminserver.modules.system.mq.consumer.mail.SysMailSendConsumer; +import cn.iocoder.yudao.adminserver.modules.system.mq.consumer.sms.SysSmsSendConsumer; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.mail.SysMailSendMessage; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsSendMessage; +import cn.iocoder.yudao.framework.redis.core.util.RedisMessageUtils; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.context.annotation.Import; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; + +import javax.annotation.Resource; +import java.util.concurrent.TimeUnit; + +public class RedisStreamTest { + + @Import({SysSmsSendConsumer.class, SysMailSendConsumer.class}) + @Disabled + public static class ConsumerTest extends BaseRedisIntegrationTest { + + @Test + public void testConsumer() { + ThreadUtil.sleep(1, TimeUnit.DAYS); + } + + } + + @Disabled + public static class ProducerTest extends BaseRedisIntegrationTest { + + @Resource + private StringRedisTemplate stringRedisTemplate; + + @Resource + private RedisTemplate redisTemplate; + + @Test + public void testProducer01() { + for (int i = 0; i < 100; i++) { + // 创建消息 + SysSmsSendMessage message = new SysSmsSendMessage(); + message.setMobile("15601691300").setApiTemplateId("test:" + i); + // 发送消息 + RedisMessageUtils.sendStreamMessage(stringRedisTemplate, message); + } + } + + @Test + public void testProducer02() { + // 创建消息 + SysMailSendMessage message = new SysMailSendMessage(); + message.setAddress("fangfang@mihayou.com").setTemplateCode("test"); + // 发送消息 + RedisMessageUtils.sendStreamMessage(stringRedisTemplate, message); + } + + } + +} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/sms/core/client/impl/aliyun/AliyunSmsClientIntegrationTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/sms/core/client/impl/aliyun/AliyunSmsClientIntegrationTest.java new file mode 100644 index 0000000..ef1c363 --- /dev/null +++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/sms/core/client/impl/aliyun/AliyunSmsClientIntegrationTest.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.adminserver.framework.sms.core.client.impl.aliyun; + +import cn.iocoder.yudao.framework.common.core.KeyValue; +import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult; +import cn.iocoder.yudao.framework.sms.core.client.dto.SmsSendRespDTO; +import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO; +import cn.iocoder.yudao.framework.sms.core.client.impl.aliyun.AliyunSmsClient; +import cn.iocoder.yudao.framework.sms.core.enums.SmsChannelEnum; +import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +/** + * {@link AliyunSmsClient} 的集成测试 + */ +public class AliyunSmsClientIntegrationTest { + + private static AliyunSmsClient smsClient; + + @BeforeAll + public static void before() { + // 创建配置类 + SmsChannelProperties properties = new SmsChannelProperties(); + properties.setId(1L); + properties.setSignature("Ballcat"); + properties.setCode(SmsChannelEnum.ALIYUN.getCode()); + properties.setApiKey(System.getenv("ALIYUN_ACCESS_KEY")); + properties.setApiSecret(System.getenv("ALIYUN_SECRET_KEY")); + // 创建客户端 + smsClient = new AliyunSmsClient(properties); + smsClient.init(); + } + + @Test + public void testSendSms() { + List> templateParams = new ArrayList<>(); + templateParams.add(new KeyValue<>("code", "1024")); +// templateParams.put("operation", "嘿嘿"); +// SmsResult result = smsClient.send(1L, "15601691399", "4372216", templateParams); + SmsCommonResult result = smsClient.sendSms(1L, "15601691399", + "SMS_207945135", templateParams); + System.out.println(result); + } + + @Test + public void testGetSmsTemplate() { + String apiTemplateId = "SMS_2079451351"; + SmsCommonResult result = smsClient.getSmsTemplate(apiTemplateId); + System.out.println(result); + } + +} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/sms/core/client/impl/debug/DebugDingTalkSmsClientIntegrationTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/sms/core/client/impl/debug/DebugDingTalkSmsClientIntegrationTest.java new file mode 100644 index 0000000..52b4d67 --- /dev/null +++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/sms/core/client/impl/debug/DebugDingTalkSmsClientIntegrationTest.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.adminserver.framework.sms.core.client.impl.debug; + +import cn.iocoder.yudao.framework.common.core.KeyValue; +import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult; +import cn.iocoder.yudao.framework.sms.core.client.dto.SmsSendRespDTO; +import cn.iocoder.yudao.framework.sms.core.client.impl.debug.DebugDingTalkSmsClient; +import cn.iocoder.yudao.framework.sms.core.enums.SmsChannelEnum; +import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +/** + * {@link DebugDingTalkSmsClient} 的集成测试 + */ +public class DebugDingTalkSmsClientIntegrationTest { + + private static DebugDingTalkSmsClient smsClient; + + @BeforeAll + public static void init() { + // 创建配置类 + SmsChannelProperties properties = new SmsChannelProperties(); + properties.setId(1L); + properties.setSignature("芋道"); + properties.setCode(SmsChannelEnum.DEBUG_DING_TALK.getCode()); + properties.setApiKey("696b5d8ead48071237e4aa5861ff08dbadb2b4ded1c688a7b7c9afc615579859"); + properties.setApiSecret("SEC5c4e5ff888bc8a9923ae47f59e7ccd30af1f14d93c55b4e2c9cb094e35aeed67"); + // 创建客户端 + smsClient = new DebugDingTalkSmsClient(properties); + smsClient.init(); + } + + @Test + public void testSendSms() { + List> templateParams = new ArrayList<>(); + templateParams.add(new KeyValue<>("code", "1024")); + templateParams.add(new KeyValue<>("operation", "嘿嘿")); +// SmsResult result = smsClient.send(1L, "15601691399", "4372216", templateParams); + SmsCommonResult result = smsClient.sendSms(1L, "15601691399", "4383920", templateParams); + System.out.println(result); + } + +} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/sms/core/client/impl/yunpian/YunpianSmsClientIntegrationTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/sms/core/client/impl/yunpian/YunpianSmsClientIntegrationTest.java new file mode 100644 index 0000000..ed73f9e --- /dev/null +++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/sms/core/client/impl/yunpian/YunpianSmsClientIntegrationTest.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.adminserver.framework.sms.core.client.impl.yunpian; + +import cn.iocoder.yudao.framework.common.core.KeyValue; +import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult; +import cn.iocoder.yudao.framework.sms.core.client.dto.SmsSendRespDTO; +import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO; +import cn.iocoder.yudao.framework.sms.core.client.impl.yunpian.YunpianSmsClient; +import cn.iocoder.yudao.framework.sms.core.enums.SmsChannelEnum; +import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +/** + * {@link YunpianSmsClient} 的集成测试 + */ +public class YunpianSmsClientIntegrationTest { + + private static YunpianSmsClient smsClient; + + @BeforeAll + public static void init() { + // 创建配置类 + SmsChannelProperties properties = new SmsChannelProperties(); + properties.setId(1L); + properties.setSignature("芋道"); + properties.setCode(SmsChannelEnum.YUN_PIAN.getCode()); + properties.setApiKey("1555a14277cb8a608cf45a9e6a80d510"); + // 创建客户端 + smsClient = new YunpianSmsClient(properties); + smsClient.init(); + } + + @Test + public void testSendSms() { + List> templateParams = new ArrayList<>(); + templateParams.add(new KeyValue<>("code", "1024")); + templateParams.add(new KeyValue<>("operation", "嘿嘿")); +// SmsResult result = smsClient.send(1L, "15601691399", "4372216", templateParams); + SmsCommonResult result = smsClient.sendSms(1L, "15601691399", "4383920", templateParams); + System.out.println(result); + } + + @Test + public void testGetSmsTemplate() { + String apiTemplateId = "4383920"; + SmsCommonResult result = smsClient.getSmsTemplate(apiTemplateId); + System.out.println(result); + } + +} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/sms/core/client/package-info.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/sms/core/client/package-info.java new file mode 100644 index 0000000..2fc6be2 --- /dev/null +++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/sms/core/client/package-info.java @@ -0,0 +1 @@ +package cn.iocoder.yudao.adminserver.framework.sms.core.client; diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/system/service/package-info.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/system/service/package-info.java new file mode 100644 index 0000000..b6bd214 --- /dev/null +++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/system/service/package-info.java @@ -0,0 +1 @@ +package cn.iocoder.yudao.adminserver.modules.system.service; diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsServiceIntegrationTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsServiceIntegrationTest.java new file mode 100644 index 0000000..bb43560 --- /dev/null +++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsServiceIntegrationTest.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.sms; + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.thread.ThreadUtil; +import cn.iocoder.yudao.adminserver.BaseDbAndRedisIntegrationTest; +import cn.iocoder.yudao.adminserver.modules.system.mq.consumer.sms.SysSmsSendConsumer; +import cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms.SysSmsProducer; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsChannelServiceImpl; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsLogServiceImpl; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsServiceImpl; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsTemplateServiceImpl; +import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.sms.config.YudaoSmsAutoConfiguration; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +@Import({YudaoSmsAutoConfiguration.class, + SysSmsChannelServiceImpl.class, SysSmsServiceImpl.class, SysSmsTemplateServiceImpl.class, SysSmsLogServiceImpl.class, + SysSmsProducer.class, SysSmsSendConsumer.class}) +public class SysSmsServiceIntegrationTest extends BaseDbAndRedisIntegrationTest { + + @Resource + private SysSmsServiceImpl smsService; + @Resource + private SysSmsChannelServiceImpl smsChannelService; + + @MockBean + private SysUserService userService; + + @Test + public void testSendSingleSms_yunpianSuccess() { + // 参数准备 + String mobile = "15601691399"; + Long userId = 1L; + Integer userType = UserTypeEnum.ADMIN.getValue(); + String templateCode = "test_01"; + Map templateParams = MapUtil.builder() + .put("operation", "登陆").put("code", "1234").build(); + // 调用 + smsService.sendSingleSms(mobile, userId, userType, templateCode, templateParams); + + // 等待 MQ 消费 + ThreadUtil.sleep(1, TimeUnit.HOURS); + } + + @Test + public void testSendSingleSms_aliyunSuccess() { + // 参数准备 + String mobile = "15601691399"; + Long userId = 1L; + Integer userType = UserTypeEnum.ADMIN.getValue(); + String templateCode = "test_02"; + Map templateParams = MapUtil.builder() + .put("code", "1234").build(); + // 调用 + smsService.sendSingleSms(mobile, userId, userType, templateCode, templateParams); + + // 等待 MQ 消费 + ThreadUtil.sleep(1, TimeUnit.HOURS); + } + +// @Test +// public void testDoSendSms() { +// // 等待 MQ 消费 +// ThreadUtil.sleep(1, TimeUnit.HOURS); +// } + +} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolInformationSchemaColumnMapperTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolInformationSchemaColumnMapperTest.java new file mode 100644 index 0000000..1e86eb5 --- /dev/null +++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolInformationSchemaColumnMapperTest.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen; + +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO; +import org.junit.jupiter.api.Test; + +import javax.annotation.Resource; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class ToolInformationSchemaColumnMapperTest extends BaseDbUnitTest { + + @Resource + private ToolSchemaColumnMapper toolInformationSchemaColumnMapper; + + @Test + public void testSelectListByTableName() { + List columns = toolInformationSchemaColumnMapper + .selectListByTableName("", "inf_config"); + assertTrue(columns.size() > 0); + } + +} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolInformationSchemaTableMapperTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolInformationSchemaTableMapperTest.java new file mode 100644 index 0000000..35d91b8 --- /dev/null +++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolInformationSchemaTableMapperTest.java @@ -0,0 +1,12 @@ +package cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen; + +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; + +import javax.annotation.Resource; + +class ToolInformationSchemaTableMapperTest extends BaseDbUnitTest { + + @Resource + private ToolSchemaTableMapper toolInformationSchemaTableMapper; + +} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenEngineTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenEngineTest.java new file mode 100644 index 0000000..a8a7857 --- /dev/null +++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenEngineTest.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.adminserver.modules.tool.service.codegen; + +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; +import cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen.ToolCodegenColumnMapper; +import cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen.ToolCodegenTableMapper; +import cn.iocoder.yudao.adminserver.modules.tool.service.codegen.impl.ToolCodegenEngine; +import org.junit.jupiter.api.Test; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +public class ToolCodegenEngineTest extends BaseDbUnitTest { + + @Resource + private ToolCodegenTableMapper codegenTableMapper; + @Resource + private ToolCodegenColumnMapper codegenColumnMapper; + + @Resource + private ToolCodegenEngine codegenEngine; + + @Test + public void testExecute() { + ToolCodegenTableDO table = codegenTableMapper.selectById(20); + List columns = codegenColumnMapper.selectListByTableId(table.getId()); + Map result = codegenEngine.execute(table, columns); + result.forEach((s, s2) -> System.out.println(s2)); +// System.out.println(result.get("vue/views/system/test/index.vue")); + } + +} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenSQLParserTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenSQLParserTest.java new file mode 100644 index 0000000..44c9091 --- /dev/null +++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenSQLParserTest.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.adminserver.modules.tool.service.codegen; + +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.modules.tool.service.codegen.impl.ToolCodegenSQLParser; +import org.junit.jupiter.api.Test; + +public class ToolCodegenSQLParserTest extends BaseDbUnitTest { + + @Test + public void testParse() { + String sql = "CREATE TABLE `tool_test_demo` (\n" + + " `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',\n" + + " `name` varchar(100) NOT NULL DEFAULT '' COMMENT '名字',\n" + + " `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态',\n" + + " `type` tinyint(4) NOT NULL COMMENT '类型',\n" + + " `category` tinyint(4) NOT NULL COMMENT '分类',\n" + + " `remark` varchar(500) DEFAULT NULL COMMENT '备注',\n" + + " `create_by` varchar(64) DEFAULT '' COMMENT '创建者',\n" + + " `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',\n" + + " `update_by` varchar(64) DEFAULT '' COMMENT '更新者',\n" + + " `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',\n" + + " `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',\n" + + " PRIMARY KEY (`id`) USING BTREE\n" + + ") ENGINE=InnoDB AUTO_INCREMENT=108 DEFAULT CHARSET=utf8mb4 COMMENT='字典类型表';"; + ToolCodegenSQLParser.parse(sql); + // TODO 芋艿:后续完善断言 + } + +} diff --git a/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenServiceImplTest.java b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenServiceImplTest.java new file mode 100644 index 0000000..87661a3 --- /dev/null +++ b/yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenServiceImplTest.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.adminserver.modules.tool.service.codegen; + +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.modules.tool.service.codegen.impl.ToolCodegenServiceImpl; +import org.junit.jupiter.api.Test; + +import javax.annotation.Resource; + +class ToolCodegenServiceImplTest extends BaseDbUnitTest { + + @Resource + private ToolCodegenServiceImpl toolCodegenService; + + @Test + public void tetCreateCodegenTable() { + toolCodegenService.createCodegen("tool_test_demo"); +// toolCodegenService.createCodegenTable("tool_codegen_table"); +// toolCodegenService.createCodegen("tool_codegen_column"); + } + +} diff --git a/yudao-admin-server/src/test-integration/resources/application-integration-test.yaml b/yudao-admin-server/src/test-integration/resources/application-integration-test.yaml index a248134..d9612ee 100644 --- a/yudao-admin-server/src/test-integration/resources/application-integration-test.yaml +++ b/yudao-admin-server/src/test-integration/resources/application-integration-test.yaml @@ -90,12 +90,6 @@ resilience4j: # 芋道配置项,设置当前项目所有自定义的配置 yudao: - info: - version: 1.0.0 - base-package: cn.iocoder.dashboard - web: - api-prefix: /api - controller-package: ${yudao.info.base-package} security: token-header: Authorization token-secret: abcdefghijklmnopqrstuvwxyz @@ -105,15 +99,8 @@ yudao: mock-secret: test swagger: enable: false # 单元测试,禁用 Swagger - captcha: - timeout: 5m - width: 160 - height: 60 file: base-path: http://127.0.0.1:${server.port}/${yudao.web.api-prefix}/file/get/ - codegen: - base-package: ${yudao.info.base-package}.modules - db-schemas: ${spring.datasource.dynamic.datasource.master.name} xss: enable: false exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系 diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/BaseDbAndRedisUnitTest.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/BaseDbAndRedisUnitTest.java deleted file mode 100644 index 1a3b854..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/BaseDbAndRedisUnitTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package cn.iocoder.dashboard; - -import cn.iocoder.dashboard.config.RedisTestConfiguration; -import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; -import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration; -import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration; -import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; -import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; -import org.redisson.spring.starter.RedissonAutoConfiguration; -import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.jdbc.Sql; - -/** - * 依赖内存 DB + Redis 的单元测试 - * - * 相比 {@link BaseDbUnitTest} 来说,额外增加了内存 Redis - * - * @author 芋道源码 - */ -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbAndRedisUnitTest.Application.class) -@ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件 -@Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) // 每个单元测试结束后,清理 DB -public class BaseDbAndRedisUnitTest { - - @Import({ - // DB 配置类 - YudaoDataSourceAutoConfiguration.class, // 自己的 DB 配置类 - DataSourceAutoConfiguration.class, // Spring DB 自动配置类 - DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类 - DruidDataSourceAutoConfigure.class, // Druid 自动配置类 - // MyBatis 配置类 - YudaoMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类 - MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类 - // Redis 配置类 - RedisTestConfiguration.class, // Redis 测试配置类,用于启动 RedisServer - RedisAutoConfiguration.class, // Spring Redis 自动配置类 - YudaoRedisAutoConfiguration.class, // 自己的 Redis 配置类 - RedissonAutoConfiguration.class, // Redisson 自动高配置类 - }) - public static class Application { - } - -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/BaseDbUnitTest.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/BaseDbUnitTest.java deleted file mode 100644 index 00579e3..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/BaseDbUnitTest.java +++ /dev/null @@ -1,39 +0,0 @@ -package cn.iocoder.dashboard; - -import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration; -import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration; -import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; -import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.jdbc.Sql; - -/** - * 依赖内存 DB 的单元测试 - * - * 注意,Service 层同样适用。对于 Service 层的单元测试,我们针对自己模块的 Mapper 走的是 H2 内存数据库,针对别的模块的 Service 走的是 Mock 方法 - * - * @author 芋道源码 - */ -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbUnitTest.Application.class) -@ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件 -@Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) // 每个单元测试结束后,清理 DB -public class BaseDbUnitTest { - - @Import({ - // DB 配置类 - YudaoDataSourceAutoConfiguration.class, // 自己的 DB 配置类 - DataSourceAutoConfiguration.class, // Spring DB 自动配置类 - DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类 - DruidDataSourceAutoConfigure.class, // Druid 自动配置类 - // MyBatis 配置类 - YudaoMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类 - MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类 - }) - public static class Application { - } - -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/BaseMockitoUnitTest.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/BaseMockitoUnitTest.java deleted file mode 100644 index 4a595b2..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/BaseMockitoUnitTest.java +++ /dev/null @@ -1,13 +0,0 @@ -package cn.iocoder.dashboard; - -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.junit.jupiter.MockitoExtension; - -/** - * 纯 Mockito 的单元测试 - * - * @author 芋道源码 - */ -@ExtendWith(MockitoExtension.class) -public class BaseMockitoUnitTest { -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/BaseRedisUnitTest.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/BaseRedisUnitTest.java deleted file mode 100644 index ce9ac1b..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/BaseRedisUnitTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package cn.iocoder.dashboard; - -import cn.iocoder.dashboard.config.RedisTestConfiguration; -import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; -import cn.iocoder.yudao.framework.tracer.config.YudaoTracerAutoConfiguration; -import org.redisson.spring.starter.RedissonAutoConfiguration; -import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Import; -import org.springframework.test.context.ActiveProfiles; - -/** - * 依赖内存 Redis 的单元测试 - * - * 相比 {@link BaseDbUnitTest} 来说,从内存 DB 改成了内存 Redis - * - * @author 芋道源码 - */ -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseRedisUnitTest.Application.class) -@ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件 -public class BaseRedisUnitTest { - - @Import({ - // Redis 配置类 - RedisTestConfiguration.class, // Redis 测试配置类,用于启动 RedisServer - RedisAutoConfiguration.class, // Spring Redis 自动配置类 - YudaoTracerAutoConfiguration.class, // 自己的 Redis 配置类 - RedissonAutoConfiguration.class, // Redisson 自动高配置类 - }) - public static class Application { - } - -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/config/QuartzTestConfiguration.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/config/QuartzTestConfiguration.java deleted file mode 100644 index 124aaea..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/config/QuartzTestConfiguration.java +++ /dev/null @@ -1,16 +0,0 @@ -package cn.iocoder.dashboard.config; - -import org.mockito.Mockito; -import org.quartz.Scheduler; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -public class QuartzTestConfiguration { - - @Bean - public Scheduler scheduler() { - return Mockito.mock(Scheduler.class); - } - -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/config/RedisTestConfiguration.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/config/RedisTestConfiguration.java deleted file mode 100644 index 299d9f4..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/config/RedisTestConfiguration.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.iocoder.dashboard.config; - -import com.github.fppt.jedismock.RedisServer; -import org.springframework.boot.autoconfigure.data.redis.RedisProperties; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Lazy; - -import java.io.IOException; - -@Configuration(proxyBeanMethods = false) -@Lazy(false) // 禁止延迟加载 -@EnableConfigurationProperties(RedisProperties.class) -public class RedisTestConfiguration { - - /** - * 创建模拟的 Redis Server 服务器 - */ - @Bean - public RedisServer redisServer(RedisProperties properties) throws IOException { - RedisServer redisServer = new RedisServer(properties.getPort()); - // TODO 芋艿:一次执行多个单元测试时,貌似创建多个 spring 容器,导致不进行 stop。这样,就导致端口被占用,无法启动。。。 - try { - redisServer.start(); - } catch (Exception ignore) {} - return redisServer; - } - -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/infra/service/file/InfFileServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/infra/service/file/InfFileServiceTest.java deleted file mode 100644 index 9a1b565..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/infra/service/file/InfFileServiceTest.java +++ /dev/null @@ -1,126 +0,0 @@ -package cn.iocoder.dashboard.modules.infra.service.file; - -import cn.hutool.core.io.resource.ResourceUtil; -import cn.iocoder.dashboard.BaseDbUnitTest; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.infra.framework.file.config.FileProperties; -import cn.iocoder.dashboard.modules.infra.controller.file.vo.InfFilePageReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.file.InfFileDO; -import cn.iocoder.dashboard.modules.infra.dal.mysql.file.InfFileMapper; -import cn.iocoder.dashboard.modules.infra.service.file.impl.InfFileServiceImpl; -import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; - -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; -import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.FILE_NOT_EXISTS; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.FILE_PATH_EXISTS; -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString; -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; -import static org.junit.jupiter.api.Assertions.*; - -@Import({InfFileServiceImpl.class, FileProperties.class}) -public class InfFileServiceTest extends BaseDbUnitTest { - - @Resource - private InfFileServiceImpl fileService; - - @Resource - private FileProperties fileProperties; - @Resource - private InfFileMapper fileMapper; - - @Test - public void testCreateFile_success() { - // 准备参数 - String path = randomString(); - byte[] content = ResourceUtil.readBytes("file/erweima.jpg"); - - // 调用 - String url = fileService.createFile(path, content); - // 断言 - assertEquals(fileProperties.getBasePath() + path, url); - // 校验数据 - InfFileDO file = fileMapper.selectById(path); - assertEquals(path, file.getId()); - assertEquals("jpg", file.getType()); - assertArrayEquals(content, file.getContent()); - } - - @Test - public void testCreateFile_exists() { - // mock 数据 - InfFileDO dbFile = randomPojo(InfFileDO.class); - fileMapper.insert(dbFile); - // 准备参数 - String path = dbFile.getId(); // 模拟已存在 - byte[] content = ResourceUtil.readBytes("file/erweima.jpg"); - - // 调用,并断言异常 - assertServiceException(() -> fileService.createFile(path, content), FILE_PATH_EXISTS); - } - - @Test - public void testDeleteFile_success() { - // mock 数据 - InfFileDO dbFile = randomPojo(InfFileDO.class); - fileMapper.insert(dbFile);// @Sql: 先插入出一条存在的数据 - // 准备参数 - String id = dbFile.getId(); - - // 调用 - fileService.deleteFile(id); - // 校验数据不存在了 - assertNull(fileMapper.selectById(id)); - } - - @Test - public void testDeleteFile_notExists() { - // 准备参数 - String id = randomString(); - - // 调用, 并断言异常 - assertServiceException(() -> fileService.deleteFile(id), FILE_NOT_EXISTS); - } - - @Test - public void testGetFilePage() { - // mock 数据 - InfFileDO dbFile = randomPojo(InfFileDO.class, o -> { // 等会查询到 - o.setId("yudao"); - o.setType("jpg"); - o.setCreateTime(buildTime(2021, 1, 15)); - }); - fileMapper.insert(dbFile); - // 测试 id 不匹配 - fileMapper.insert(ObjectUtils.clone(dbFile, o -> o.setId("tudou"))); - // 测试 type 不匹配 - fileMapper.insert(ObjectUtils.clone(dbFile, o -> { - o.setId("yudao02"); - o.setType("png"); - })); - // 测试 createTime 不匹配 - fileMapper.insert(ObjectUtils.clone(dbFile, o -> { - o.setId("yudao03"); - o.setCreateTime(buildTime(2020, 1, 15)); - })); - // 准备参数 - InfFilePageReqVO reqVO = new InfFilePageReqVO(); - reqVO.setId("yudao"); - reqVO.setType("jp"); - reqVO.setBeginCreateTime(buildTime(2021, 1, 10)); - reqVO.setEndCreateTime(buildTime(2021, 1, 20)); - - // 调用 - PageResult pageResult = fileService.getFilePage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbFile, pageResult.getList().get(0), "content"); - } - -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/infra/service/job/InfJobLogServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/infra/service/job/InfJobLogServiceTest.java deleted file mode 100644 index f028825..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/infra/service/job/InfJobLogServiceTest.java +++ /dev/null @@ -1,173 +0,0 @@ -package cn.iocoder.dashboard.modules.infra.service.job; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString; -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -import java.util.ArrayList; -import java.util.List; - -import javax.annotation.Resource; - -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import cn.iocoder.dashboard.BaseDbUnitTest; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.log.InfJobLogExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.log.InfJobLogPageReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobLogDO; -import cn.iocoder.dashboard.modules.infra.dal.mysql.job.InfJobLogMapper; -import cn.iocoder.dashboard.modules.infra.enums.job.InfJobLogStatusEnum; -import cn.iocoder.dashboard.modules.infra.service.job.impl.InfJobLogServiceImpl; -import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; - -/** - * {@link InfJobLogServiceImpl} 的单元测试 - * - * @author neilz - */ -@Import(InfJobLogServiceImpl.class) -public class InfJobLogServiceTest extends BaseDbUnitTest { - - @Resource - private InfJobLogServiceImpl jobLogService; - @Resource - private InfJobLogMapper jobLogMapper; - - @Test - public void testCreateJobLog_success() { - // 准备参数 - InfJobLogDO reqVO = randomPojo(InfJobLogDO.class, o -> { - o.setExecuteIndex(1); - }); - // 调用 - Long jobLogId = jobLogService.createJobLog(reqVO.getJobId(), reqVO.getBeginTime(), reqVO.getHandlerName(), reqVO.getHandlerParam(), reqVO.getExecuteIndex()); - // 断言 - assertNotNull(jobLogId); - // 校验记录的属性是否正确 - InfJobLogDO job = jobLogMapper.selectById(jobLogId); - assertEquals(InfJobLogStatusEnum.RUNNING.getStatus(), job.getStatus()); - } - - @Test - public void testUpdateJobLogResultAsync_success() { - // 准备参数 - InfJobLogDO reqVO = randomPojo(InfJobLogDO.class, o -> { - o.setExecuteIndex(1); - }); - InfJobLogDO log = InfJobLogDO.builder().jobId(reqVO.getJobId()).handlerName(reqVO.getHandlerName()).handlerParam(reqVO.getHandlerParam()).executeIndex(reqVO.getExecuteIndex()) - .beginTime(reqVO.getBeginTime()).status(InfJobLogStatusEnum.RUNNING.getStatus()).build(); - jobLogMapper.insert(log); - // 调用 - jobLogService.updateJobLogResultAsync(log.getId(), reqVO.getBeginTime(), reqVO.getDuration(), true,reqVO.getResult()); - // 校验记录的属性是否正确 - InfJobLogDO job = jobLogMapper.selectById(log.getId()); - assertEquals(InfJobLogStatusEnum.SUCCESS.getStatus(), job.getStatus()); - - // 调用 - jobLogService.updateJobLogResultAsync(log.getId(), reqVO.getBeginTime(), reqVO.getDuration(), false,reqVO.getResult()); - // 校验记录的属性是否正确 - InfJobLogDO job2 = jobLogMapper.selectById(log.getId()); - assertEquals(InfJobLogStatusEnum.FAILURE.getStatus(), job2.getStatus()); - } - - @Test - public void testGetJobLogListByIds_success() { - // mock 数据 - InfJobLogDO dbJobLog = randomPojo(InfJobLogDO.class, o -> { - o.setExecuteIndex(1); - o.setStatus(randomEle(InfJobLogStatusEnum.values()).getStatus()); // 保证 status 的范围 - }); - InfJobLogDO cloneJobLog = ObjectUtils.clone(dbJobLog, o -> o.setHandlerName(randomString())); - jobLogMapper.insert(dbJobLog); - // 测试 handlerName 不匹配 - jobLogMapper.insert(cloneJobLog); - // 准备参数 - ArrayList ids = new ArrayList<>(); - ids.add(dbJobLog.getId()); - ids.add(cloneJobLog.getId()); - // 调用 - List list = jobLogService.getJobLogList(ids); - // 断言 - assertEquals(2, list.size()); - assertPojoEquals(dbJobLog, list.get(0)); - } - - @Test - public void testGetJobPage_success() { - // mock 数据 - InfJobLogDO dbJobLog = randomPojo(InfJobLogDO.class, o -> { - o.setExecuteIndex(1); - o.setHandlerName("handlerName 单元测试"); - o.setStatus(InfJobLogStatusEnum.SUCCESS.getStatus()); - o.setBeginTime(buildTime(2021, 1, 8)); - o.setEndTime(buildTime(2021, 1, 8)); - }); - jobLogMapper.insert(dbJobLog); - // 测试 jobId 不匹配 - jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setJobId(randomLongId()))); - // 测试 handlerName 不匹配 - jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setHandlerName(randomString()))); - // 测试 beginTime 不匹配 - jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setBeginTime(buildTime(2021, 1, 7)))); - // 测试 endTime 不匹配 - jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setEndTime(buildTime(2021, 1, 9)))); - // 测试 status 不匹配 - jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setStatus(InfJobLogStatusEnum.FAILURE.getStatus()))); - // 准备参数 - InfJobLogPageReqVO reqVo = new InfJobLogPageReqVO(); - reqVo.setJobId(dbJobLog.getJobId()); - reqVo.setHandlerName("单元"); - reqVo.setBeginTime(dbJobLog.getBeginTime()); - reqVo.setEndTime(dbJobLog.getEndTime()); - reqVo.setStatus(InfJobLogStatusEnum.SUCCESS.getStatus()); - // 调用 - PageResult pageResult = jobLogService.getJobLogPage(reqVo); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbJobLog, pageResult.getList().get(0)); - } - - @Test - public void testGetJobListForExport_success() { - // mock 数据 - InfJobLogDO dbJobLog = randomPojo(InfJobLogDO.class, o -> { - o.setExecuteIndex(1); - o.setHandlerName("handlerName 单元测试"); - o.setStatus(InfJobLogStatusEnum.SUCCESS.getStatus()); - o.setBeginTime(buildTime(2021, 1, 8)); - o.setEndTime(buildTime(2021, 1, 8)); - }); - jobLogMapper.insert(dbJobLog); - // 测试 jobId 不匹配 - jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setJobId(randomLongId()))); - // 测试 handlerName 不匹配 - jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setHandlerName(randomString()))); - // 测试 beginTime 不匹配 - jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setBeginTime(buildTime(2021, 1, 7)))); - // 测试 endTime 不匹配 - jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setEndTime(buildTime(2021, 1, 9)))); - // 测试 status 不匹配 - jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setStatus(InfJobLogStatusEnum.FAILURE.getStatus()))); - // 准备参数 - InfJobLogExportReqVO reqVo = new InfJobLogExportReqVO(); - reqVo.setJobId(dbJobLog.getJobId()); - reqVo.setHandlerName("单元"); - reqVo.setBeginTime(dbJobLog.getBeginTime()); - reqVo.setEndTime(dbJobLog.getEndTime()); - reqVo.setStatus(InfJobLogStatusEnum.SUCCESS.getStatus()); - // 调用 - List list = jobLogService.getJobLogList(reqVo); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbJobLog, list.get(0)); - } - -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/infra/service/logger/InfApiAccessLogServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/infra/service/logger/InfApiAccessLogServiceImplTest.java deleted file mode 100644 index 11a00cd..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/infra/service/logger/InfApiAccessLogServiceImplTest.java +++ /dev/null @@ -1,176 +0,0 @@ -package cn.iocoder.dashboard.modules.infra.service.logger; - -import cn.hutool.core.util.RandomUtil; -import cn.iocoder.dashboard.BaseDbUnitTest; -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; -import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateDTO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.logger.InfApiAccessLogDO; -import cn.iocoder.dashboard.modules.infra.dal.mysql.logger.InfApiAccessLogMapper; -import cn.iocoder.dashboard.modules.infra.service.logger.impl.InfApiAccessLogServiceImpl; -import cn.iocoder.yudao.framework.test.core.util.RandomUtils; -import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.Date; -import java.util.List; -import java.util.concurrent.Future; - -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -/** - * {@link InfApiAccessLogServiceImpl} 单元测试 - */ -@Import(InfApiAccessLogServiceImpl.class) -public class InfApiAccessLogServiceImplTest extends BaseDbUnitTest { - - @Resource - private InfApiAccessLogService infApiAccessLogServiceImpl; - - @Resource - private InfApiAccessLogMapper infApiAccessLogMapper; - - @Test - public void testCreateApiAccessLogAsync() throws Exception { - ApiAccessLogCreateDTO createDTO = RandomUtils.randomPojo( - ApiAccessLogCreateDTO.class, - dto -> dto.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue()) - ); - - // 执行service方法 - Future future = infApiAccessLogServiceImpl.createApiAccessLogAsync(createDTO); - - // 等异步执行完 - future.get(); - - InfApiAccessLogDO infApiAccessLogDO = infApiAccessLogMapper.selectOne(null); - // 断言 - assertNotNull(infApiAccessLogDO); - // 断言,忽略基本字段 - assertPojoEquals(createDTO, infApiAccessLogDO); - } - - @Test - public void testGetApiAccessLogPage() { - // 构造测试数据 - long userId = 2233L; - int userType = UserTypeEnum.ADMIN.getValue(); - String applicationName = "yudao-test"; - String requestUrl = "foo"; - Date beginTime = buildTime(2021, 3, 13); - int duration = 1000; - int resultCode = GlobalErrorCodeConstants.SUCCESS.getCode(); - - InfApiAccessLogDO infApiAccessLogDO = RandomUtils.randomPojo(InfApiAccessLogDO.class, dto -> { - dto.setUserId(userId); - dto.setUserType(userType); - dto.setApplicationName(applicationName); - dto.setRequestUrl(requestUrl); - dto.setBeginTime(beginTime); - dto.setDuration(duration); - dto.setResultCode(resultCode); - }); - infApiAccessLogMapper.insert(infApiAccessLogDO); - - // 下面几个都是不匹配的数据 - // userId 不同的 - infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setUserId(3344L))); - // userType - infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setUserType(UserTypeEnum.MEMBER.getValue()))); - // applicationName 不同的 - infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setApplicationName("test"))); - // requestUrl 不同的 - infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setRequestUrl("bar"))); - // 构造一个早期时间 2021-02-06 00:00:00 - infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setBeginTime(buildTime(2021, 2, 6)))); - // duration 不同的 - infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setDuration(100))); - // resultCode 不同的 - infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setResultCode(2))); - - // 构造调用参数 - InfApiAccessLogPageReqVO reqVO = new InfApiAccessLogPageReqVO(); - reqVO.setUserId(userId); - reqVO.setUserType(userType); - reqVO.setApplicationName(applicationName); - reqVO.setRequestUrl(requestUrl); - reqVO.setBeginBeginTime(buildTime(2021, 3, 12)); - reqVO.setEndBeginTime(buildTime(2021, 3, 14)); - reqVO.setDuration(duration); - reqVO.setResultCode(resultCode); - - // 调用service方法 - PageResult pageResult = infApiAccessLogServiceImpl.getApiAccessLogPage(reqVO); - - // 断言,只查到了一条符合条件的 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(infApiAccessLogDO, pageResult.getList().get(0)); - } - - @Test - public void testGetApiAccessLogList() { - // 构造测试数据 - long userId = 2233L; - int userType = UserTypeEnum.ADMIN.getValue(); - String applicationName = "yudao-test"; - String requestUrl = "foo"; - Date beginTime = buildTime(2021, 3, 13); - int duration = 1000; - int resultCode = GlobalErrorCodeConstants.SUCCESS.getCode(); - - InfApiAccessLogDO infApiAccessLogDO = RandomUtils.randomPojo(InfApiAccessLogDO.class, dto -> { - dto.setUserId(userId); - dto.setUserType(userType); - dto.setApplicationName(applicationName); - dto.setRequestUrl(requestUrl); - dto.setBeginTime(beginTime); - dto.setDuration(duration); - dto.setResultCode(resultCode); - }); - infApiAccessLogMapper.insert(infApiAccessLogDO); - - // 下面几个都是不匹配的数据 - // userId 不同的 - infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setUserId(3344L))); - // userType - infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setUserType(UserTypeEnum.MEMBER.getValue()))); - // applicationName 不同的 - infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setApplicationName("test"))); - // requestUrl 不同的 - infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setRequestUrl("bar"))); - // 构造一个早期时间 2021-02-06 00:00:00 - infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setBeginTime(buildTime(2021, 2, 6)))); - // duration 不同的 - infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setDuration(100))); - // resultCode 不同的 - infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setResultCode(2))); - - // 构造调用参数 - InfApiAccessLogExportReqVO reqVO = new InfApiAccessLogExportReqVO(); - reqVO.setUserId(userId); - reqVO.setUserType(userType); - reqVO.setApplicationName(applicationName); - reqVO.setRequestUrl(requestUrl); - reqVO.setBeginBeginTime(buildTime(2021, 3, 12)); - reqVO.setEndBeginTime(buildTime(2021, 3, 14)); - reqVO.setDuration(duration); - reqVO.setResultCode(resultCode); - - // 调用service方法 - List list = infApiAccessLogServiceImpl.getApiAccessLogList(reqVO); - - // 断言,只查到了一条符合条件的 - assertEquals(1, list.size()); - assertPojoEquals(infApiAccessLogDO, list.get(0)); - } - -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/infra/service/logger/InfApiErrorLogServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/infra/service/logger/InfApiErrorLogServiceImplTest.java deleted file mode 100644 index d82afad..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/infra/service/logger/InfApiErrorLogServiceImplTest.java +++ /dev/null @@ -1,207 +0,0 @@ -package cn.iocoder.dashboard.modules.infra.service.logger; - -import cn.hutool.core.util.RandomUtil; -import cn.iocoder.dashboard.BaseDbUnitTest; -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateDTO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogPageReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.logger.InfApiErrorLogDO; -import cn.iocoder.dashboard.modules.infra.dal.mysql.logger.InfApiErrorLogMapper; -import cn.iocoder.dashboard.modules.infra.enums.logger.InfApiErrorLogProcessStatusEnum; -import cn.iocoder.dashboard.modules.infra.service.logger.impl.InfApiErrorLogServiceImpl; -import cn.iocoder.yudao.framework.test.core.util.RandomUtils; -import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.Date; -import java.util.List; -import java.util.concurrent.Future; - -import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.API_ERROR_LOG_NOT_FOUND; -import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.API_ERROR_LOG_PROCESSED; -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -/** - * {@link InfApiErrorLogServiceImpl} 单元测试 - */ -@Import(InfApiErrorLogServiceImpl.class) -public class InfApiErrorLogServiceImplTest extends BaseDbUnitTest { - - @Resource - private InfApiErrorLogService infApiErrorLogServiceImpl; - - @Resource - private InfApiErrorLogMapper infApiErrorLogMapper; - - - @Test - public void testCreateApiErrorLogAsync() throws Exception { - ApiErrorLogCreateDTO createDTO = RandomUtils.randomPojo( - ApiErrorLogCreateDTO.class, - dto -> dto.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue()) - ); - - // 执行service方法 - Future future = infApiErrorLogServiceImpl.createApiErrorLogAsync(createDTO); - - // 等异步执行完 - future.get(); - - InfApiErrorLogDO infApiErrorLogDO = infApiErrorLogMapper.selectOne(null); - // 断言 - assertNotNull(infApiErrorLogDO); - // 断言,忽略基本字段 - assertPojoEquals(createDTO, infApiErrorLogDO); - } - - - @Test - public void testGetApiErrorLogPage() { - // 构造测试数据 - long userId = 2233L; - int userType = UserTypeEnum.ADMIN.getValue(); - String applicationName = "yudao-test"; - String requestUrl = "foo"; - Date beginTime = buildTime(2021, 3, 13); - int progressStatus = InfApiErrorLogProcessStatusEnum.INIT.getStatus(); - - InfApiErrorLogDO infApiErrorLogDO = RandomUtils.randomPojo(InfApiErrorLogDO.class, logDO -> { - logDO.setUserId(userId); - logDO.setUserType(userType); - logDO.setApplicationName(applicationName); - logDO.setRequestUrl(requestUrl); - logDO.setExceptionTime(beginTime); - logDO.setProcessStatus(progressStatus); - }); - infApiErrorLogMapper.insert(infApiErrorLogDO); - - // 下面几个都是不匹配的数据 - // userId 不同的 - infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setUserId(3344L))); - // userType - infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setUserType(UserTypeEnum.MEMBER.getValue()))); - // applicationName 不同的 - infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setApplicationName("test"))); - // requestUrl 不同的 - infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setRequestUrl("bar"))); - // 构造一个早期时间 2021-02-06 00:00:00 - infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setExceptionTime(buildTime(2021, 2, 6)))); - // progressStatus 不同的 - infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setProcessStatus(InfApiErrorLogProcessStatusEnum.DONE.getStatus()))); - - // 构造调用参数 - InfApiErrorLogPageReqVO reqVO = new InfApiErrorLogPageReqVO(); - reqVO.setUserId(userId); - reqVO.setUserType(userType); - reqVO.setApplicationName(applicationName); - reqVO.setRequestUrl(requestUrl); - reqVO.setBeginExceptionTime(buildTime(2021, 3, 12)); - reqVO.setEndExceptionTime(buildTime(2021, 3, 14)); - reqVO.setProcessStatus(progressStatus); - - // 调用service方法 - PageResult pageResult = infApiErrorLogServiceImpl.getApiErrorLogPage(reqVO); - - // 断言,只查到了一条符合条件的 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(infApiErrorLogDO, pageResult.getList().get(0)); - } - - @Test - public void testGetApiErrorLogList() { - // 构造测试数据 - long userId = 2233L; - int userType = UserTypeEnum.ADMIN.getValue(); - String applicationName = "yudao-test"; - String requestUrl = "foo"; - Date beginTime = buildTime(2021, 3, 13); - int progressStatus = InfApiErrorLogProcessStatusEnum.INIT.getStatus(); - - InfApiErrorLogDO infApiErrorLogDO = RandomUtils.randomPojo(InfApiErrorLogDO.class, logDO -> { - logDO.setUserId(userId); - logDO.setUserType(userType); - logDO.setApplicationName(applicationName); - logDO.setRequestUrl(requestUrl); - logDO.setExceptionTime(beginTime); - logDO.setProcessStatus(progressStatus); - }); - infApiErrorLogMapper.insert(infApiErrorLogDO); - - // 下面几个都是不匹配的数据 - // userId 不同的 - infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setUserId(3344L))); - // userType - infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setUserType(UserTypeEnum.MEMBER.getValue()))); - // applicationName 不同的 - infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setApplicationName("test"))); - // requestUrl 不同的 - infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setRequestUrl("bar"))); - // 构造一个早期时间 2021-02-06 00:00:00 - infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setExceptionTime(buildTime(2021, 2, 6)))); - // progressStatus 不同的 - infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setProcessStatus(InfApiErrorLogProcessStatusEnum.DONE.getStatus()))); - - // 构造调用参数 - InfApiErrorLogExportReqVO reqVO = new InfApiErrorLogExportReqVO(); - reqVO.setUserId(userId); - reqVO.setUserType(userType); - reqVO.setApplicationName(applicationName); - reqVO.setRequestUrl(requestUrl); - reqVO.setBeginExceptionTime(buildTime(2021, 3, 12)); - reqVO.setEndExceptionTime(buildTime(2021, 3, 14)); - reqVO.setProcessStatus(progressStatus); - - // 调用service方法 - List list = infApiErrorLogServiceImpl.getApiErrorLogList(reqVO); - - // 断言,只查到了一条符合条件的 - assertEquals(1, list.size()); - assertPojoEquals(infApiErrorLogDO, list.get(0)); - } - - - @Test - public void testUpdateApiErrorLogProcess() { - // 先构造两条数据,第一条用于抛出异常,第二条用于正常的执行update操作 - Long processUserId = 2233L; - - InfApiErrorLogDO first = RandomUtils.randomPojo(InfApiErrorLogDO.class, logDO -> { - logDO.setProcessUserId(processUserId); - logDO.setUserType(UserTypeEnum.ADMIN.getValue()); - logDO.setProcessStatus(InfApiErrorLogProcessStatusEnum.DONE.getStatus()); - }); - infApiErrorLogMapper.insert(first); - - InfApiErrorLogDO second = RandomUtils.randomPojo(InfApiErrorLogDO.class, logDO -> { - logDO.setProcessUserId(1122L); - logDO.setUserType(UserTypeEnum.ADMIN.getValue()); - logDO.setProcessStatus(InfApiErrorLogProcessStatusEnum.INIT.getStatus()); - }); - infApiErrorLogMapper.insert(second); - - Long firstId = first.getId(); - Long secondId = second.getId(); - - // 执行正常的 update 操作 - infApiErrorLogServiceImpl.updateApiErrorLogProcess(secondId, InfApiErrorLogProcessStatusEnum.DONE.getStatus(), processUserId); - InfApiErrorLogDO secondSelect = infApiErrorLogMapper.selectOne("id", secondId); - - // id 为 0 查询不到,应该抛出异常 API_ERROR_LOG_NOT_FOUND - assertServiceException(() -> infApiErrorLogServiceImpl.updateApiErrorLogProcess(0L, InfApiErrorLogProcessStatusEnum.DONE.getStatus(), processUserId), API_ERROR_LOG_NOT_FOUND); - // id 为 first 的 progressStatus 为 DONE ,应该抛出 API_ERROR_LOG_PROCESSED - assertServiceException(() -> infApiErrorLogServiceImpl.updateApiErrorLogProcess(firstId, InfApiErrorLogProcessStatusEnum.DONE.getStatus(), processUserId), API_ERROR_LOG_PROCESSED); - // 验证 progressStatus 是否修改成功 - assertEquals(InfApiErrorLogProcessStatusEnum.DONE.getStatus(), secondSelect.getProcessStatus()); - // 验证 progressUserId 是否修改成功 - assertEquals(processUserId, secondSelect.getProcessUserId()); - } -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/common/SysCaptchaServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/common/SysCaptchaServiceTest.java deleted file mode 100644 index dadd68a..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/common/SysCaptchaServiceTest.java +++ /dev/null @@ -1,66 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.common; - -import cn.iocoder.dashboard.BaseRedisUnitTest; -import cn.iocoder.dashboard.modules.system.framework.captcha.config.CaptchaProperties; -import cn.iocoder.dashboard.modules.system.controller.common.vo.SysCaptchaImageRespVO; -import cn.iocoder.dashboard.modules.system.dal.redis.common.SysCaptchaRedisDAO; -import cn.iocoder.dashboard.modules.system.service.common.impl.SysCaptchaServiceImpl; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; - -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString; -import static org.junit.jupiter.api.Assertions.*; - -@Import({SysCaptchaServiceImpl.class, CaptchaProperties.class, SysCaptchaRedisDAO.class}) -public class SysCaptchaServiceTest extends BaseRedisUnitTest { - - @Resource - private SysCaptchaServiceImpl captchaService; - - @Resource - private SysCaptchaRedisDAO captchaRedisDAO; - @Resource - private CaptchaProperties captchaProperties; - - @Test - public void testGetCaptchaImage() { - // 调用 - SysCaptchaImageRespVO respVO = captchaService.getCaptchaImage(); - // 断言 - assertNotNull(respVO.getUuid()); - assertNotNull(respVO.getImg()); - String captchaCode = captchaRedisDAO.get(respVO.getUuid()); - assertNotNull(captchaCode); - } - - @Test - public void testGetCaptchaCode() { - // 准备参数 - String uuid = randomString(); - String code = randomString(); - // mock 数据 - captchaRedisDAO.set(uuid, code, captchaProperties.getTimeout()); - - // 调用 - String resultCode = captchaService.getCaptchaCode(uuid); - // 断言 - assertEquals(code, resultCode); - } - - @Test - public void testDeleteCaptchaCode() { - // 准备参数 - String uuid = randomString(); - String code = randomString(); - // mock 数据 - captchaRedisDAO.set(uuid, code, captchaProperties.getTimeout()); - - // 调用 - captchaService.deleteCaptchaCode(uuid); - // 断言 - assertNull(captchaRedisDAO.get(uuid)); - } - -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/dept/SysPostServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/dept/SysPostServiceTest.java deleted file mode 100644 index 97fe199..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/dept/SysPostServiceTest.java +++ /dev/null @@ -1,200 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.dept; - -import cn.iocoder.dashboard.BaseDbUnitTest; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostPageReqVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.SysPostUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysPostDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.dept.SysPostMapper; -import cn.iocoder.dashboard.modules.system.service.dept.impl.SysPostServiceImpl; -import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; -import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; -import java.util.function.Consumer; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; -import static org.junit.jupiter.api.Assertions.*; - -/** - * {@link SysPostServiceImpl} 的单元测试类 - * - * @author niudehua - */ -@Import(SysPostServiceImpl.class) -class SysPostServiceTest extends BaseDbUnitTest { - - @Resource - private SysPostServiceImpl postService; - @Resource - private SysPostMapper postMapper; - - @Test - void testPagePosts() { - // mock 数据 - SysPostDO postDO = randomPojo(SysPostDO.class, o -> { - o.setName("码仔"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - postMapper.insert(postDO); - // 测试 name 不匹配 - postMapper.insert(ObjectUtils.clone(postDO, o -> o.setName("程序员"))); - // 测试 status 不匹配 - postMapper.insert(ObjectUtils.clone(postDO, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - - // 准备参数 - SysPostPageReqVO reqVO = new SysPostPageReqVO(); - reqVO.setName("码"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - - // 调用 - PageResult pageResult = postService.getPostPage(reqVO); - - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(postDO, pageResult.getList().get(0)); - } - - @Test - void testListPosts() { - // mock 数据 - SysPostDO postDO = randomPojo(SysPostDO.class, o -> { - o.setName("码仔"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - postMapper.insert(postDO); - // 测试 name 不匹配 - postMapper.insert(ObjectUtils.clone(postDO, o -> o.setName("程序员"))); - // 测试 status 不匹配 - postMapper.insert(ObjectUtils.clone(postDO, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 准备参数 - SysPostExportReqVO reqVO = new SysPostExportReqVO(); - reqVO.setName("码"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - - // 调用 - List list = postService.getPosts(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(postDO, list.get(0)); - } - - @Test - void testGetPost() { - // mock 数据 - SysPostDO dbPostDO = randomPostDO(); - postMapper.insert(dbPostDO); - // 准备参数 - Long id = dbPostDO.getId(); - // 调用 - SysPostDO post = postService.getPost(id); - // 断言 - assertNotNull(post); - assertPojoEquals(dbPostDO, post); - } - - @Test - void testCreatePost_success() { - // 准备参数 - SysPostCreateReqVO reqVO = randomPojo(SysPostCreateReqVO.class, - o -> o.setStatus(randomEle(CommonStatusEnum.values()).getStatus())); - // 调用 - Long postId = postService.createPost(reqVO); - // 断言 - assertNotNull(postId); - // 校验记录的属性是否正确 - SysPostDO post = postMapper.selectById(postId); - assertPojoEquals(reqVO, post); - } - - @Test - void testUpdatePost_success() { - // mock 数据 - SysPostDO postDO = randomPostDO(); - postMapper.insert(postDO);// @Sql: 先插入出一条存在的数据 - // 准备参数 - SysPostUpdateReqVO reqVO = randomPojo(SysPostUpdateReqVO.class, - o -> { - // 设置更新的 ID - o.setId(postDO.getId()); - o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); - }); - // 调用 - postService.updatePost(reqVO); - // 校验是否更新正确 - SysPostDO post = postMapper.selectById(reqVO.getId());// 获取最新的 - assertPojoEquals(reqVO, post); - } - - @Test - void testDeletePost_success() { - // mock 数据 - SysPostDO postDO = randomPostDO(); - postMapper.insert(postDO); - // 准备参数 - Long id = postDO.getId(); - // 调用 - postService.deletePost(id); - assertNull(postMapper.selectById(id)); - } - - @Test - void testCheckPost_notFoundForDelete() { - // 准备参数 - Long id = randomLongId(); - // 调用, 并断言异常 - assertServiceException(() -> postService.deletePost(id), POST_NOT_FOUND); - } - - @Test - void testCheckPost_nameDuplicateForCreate() { - // mock 数据 - SysPostDO postDO = randomPostDO(); - postMapper.insert(postDO);// @Sql: 先插入出一条存在的数据 - // 准备参数 - SysPostCreateReqVO reqVO = randomPojo(SysPostCreateReqVO.class, - // 模拟 name 重复 - o -> o.setName(postDO.getName())); - assertServiceException(() -> postService.createPost(reqVO), POST_NAME_DUPLICATE); - } - - @Test - void testCheckPost_codeDuplicateForUpdate() { - // mock 数据 - SysPostDO postDO = randomPostDO(); - postMapper.insert(postDO); - // mock 数据 稍后模拟重复它的 code - SysPostDO codePostDO = randomPostDO(); - postMapper.insert(codePostDO); - // 准备参数 - SysPostUpdateReqVO reqVO = randomPojo(SysPostUpdateReqVO.class, - o -> { - // 设置更新的 ID - o.setId(postDO.getId()); - // 模拟 code 重复 - o.setCode(codePostDO.getCode()); - }); - // 调用, 并断言异常 - assertServiceException(() -> postService.updatePost(reqVO), POST_CODE_DUPLICATE); - } - - @SafeVarargs - private static SysPostDO randomPostDO(Consumer... consumers) { - Consumer consumer = (o) -> { - o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 - }; - return randomPojo(SysPostDO.class, ArrayUtils.append(consumer, consumers)); - } -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/logger/SysLoginLogServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/logger/SysLoginLogServiceImplTest.java deleted file mode 100644 index 715e99e..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/logger/SysLoginLogServiceImplTest.java +++ /dev/null @@ -1,145 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.logger; - -import cn.hutool.core.util.RandomUtil; -import cn.iocoder.dashboard.BaseDbUnitTest; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysLoginLogDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.logger.SysLoginLogMapper; -import cn.iocoder.dashboard.modules.system.enums.logger.SysLoginLogTypeEnum; -import cn.iocoder.dashboard.modules.system.enums.logger.SysLoginResultEnum; -import cn.iocoder.dashboard.modules.system.service.logger.impl.SysLoginLogServiceImpl; -import cn.iocoder.yudao.framework.test.core.util.RandomUtils; -import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; - -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; -import static org.junit.jupiter.api.Assertions.assertEquals; - -@Import(SysLoginLogServiceImpl.class) -public class SysLoginLogServiceImplTest extends BaseDbUnitTest { - - @Resource - private SysLoginLogServiceImpl sysLoginLogService; - - @Resource - private SysLoginLogMapper loginLogMapper; - - @Test - public void testCreateLoginLog() { - String traceId = TracerUtils.getTraceId(); - SysLoginLogCreateReqVO reqVO = RandomUtils.randomPojo(SysLoginLogCreateReqVO.class, vo -> { - // 指定随机的范围,避免超出范围入库失败 - vo.setLogType(RandomUtil.randomEle(SysLoginLogTypeEnum.values()).getType()); - vo.setResult(RandomUtil.randomEle(SysLoginResultEnum.values()).getResult()); - // 使用TracerUtils生成的TraceId - vo.setTraceId(traceId); - }); - - // 执行service方法 - sysLoginLogService.createLoginLog(reqVO); - - // 断言,忽略基本字段 - SysLoginLogDO sysLoginLogDO = loginLogMapper.selectOne(null); - assertPojoEquals(reqVO, sysLoginLogDO); - } - - - @Test - public void testGetLoginLogPage() { - - // 构造测试数据 - - // 登录成功的 - SysLoginLogDO loginLogDO = RandomUtils.randomPojo(SysLoginLogDO.class, logDO -> { - logDO.setLogType(RandomUtil.randomEle(SysLoginLogTypeEnum.values()).getType()); - logDO.setTraceId(TracerUtils.getTraceId()); - - logDO.setUserIp("192.168.199.16"); - logDO.setUsername("wangkai"); - logDO.setCreateTime(buildTime(2021, 3, 6)); - logDO.setResult(SysLoginResultEnum.SUCCESS.getResult()); - }); - loginLogMapper.insert(loginLogDO); - - // 下面几个都是不匹配的数据 - // 登录失败的 - loginLogMapper.insert(ObjectUtils.clone(loginLogDO, logDO -> logDO.setResult(SysLoginResultEnum.CAPTCHA_CODE_ERROR.getResult()))); - // 不同ip段的 - loginLogMapper.insert(ObjectUtils.clone(loginLogDO, logDO -> logDO.setUserIp("192.168.128.18"))); - // 不同username - loginLogMapper.insert(ObjectUtils.clone(loginLogDO, logDO -> logDO.setUsername("yunai"))); - // 构造一个早期时间 2021-02-06 00:00:00 - loginLogMapper.insert(ObjectUtils.clone(loginLogDO, logDO -> logDO.setCreateTime(buildTime(2021, 2, 6)))); - - - // 构造调用参数 - SysLoginLogPageReqVO reqVO = new SysLoginLogPageReqVO(); - reqVO.setUsername("wangkai"); - reqVO.setUserIp("192.168.199"); - reqVO.setStatus(true); - reqVO.setBeginTime(buildTime(2021, 3, 5)); - reqVO.setEndTime(buildTime(2021, 3, 7)); - - // 调用service方法 - PageResult pageResult = sysLoginLogService.getLoginLogPage(reqVO); - - // 断言,只查到了一条符合条件的 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(loginLogDO, pageResult.getList().get(0)); - } - - @Test - public void testGetLoginLogList() { - - // 构造测试数据 - - // 登录成功的 - SysLoginLogDO loginLogDO = RandomUtils.randomPojo(SysLoginLogDO.class, logDO -> { - logDO.setLogType(RandomUtil.randomEle(SysLoginLogTypeEnum.values()).getType()); - logDO.setTraceId(TracerUtils.getTraceId()); - - logDO.setUserIp("192.168.111.16"); - logDO.setUsername("wangxiaokai"); - logDO.setCreateTime(buildTime(2021, 3, 6)); - logDO.setResult(SysLoginResultEnum.SUCCESS.getResult()); - }); - loginLogMapper.insert(loginLogDO); - - // 下面几个都是不匹配的数据 - // 登录失败的 - loginLogMapper.insert(ObjectUtils.clone(loginLogDO, logDO -> logDO.setResult(SysLoginResultEnum.CAPTCHA_CODE_ERROR.getResult()))); - // 不同ip段的 - loginLogMapper.insert(ObjectUtils.clone(loginLogDO, logDO -> logDO.setUserIp("192.168.128.18"))); - // 不同username - loginLogMapper.insert(ObjectUtils.clone(loginLogDO, logDO -> logDO.setUsername("yunai"))); - // 构造一个早期时间 2021-02-06 00:00:00 - loginLogMapper.insert(ObjectUtils.clone(loginLogDO, logDO -> logDO.setCreateTime(buildTime(2021, 2, 6)))); - - - // 构造调用参数 - SysLoginLogExportReqVO reqVO = new SysLoginLogExportReqVO(); - reqVO.setUsername("wangxiaokai"); - reqVO.setUserIp("192.168.111"); - reqVO.setStatus(true); - reqVO.setBeginTime(buildTime(2021, 3, 5)); - reqVO.setEndTime(buildTime(2021, 3, 7)); - - - // 调用service方法 - List loginLogList = sysLoginLogService.getLoginLogList(reqVO); - - // 断言 - assertEquals(1, loginLogList.size()); - assertPojoEquals(loginLogDO, loginLogList.get(0)); - } -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/logger/SysOperateLogServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/logger/SysOperateLogServiceImplTest.java deleted file mode 100644 index 3407caf..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/logger/SysOperateLogServiceImplTest.java +++ /dev/null @@ -1,166 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.logger; - -import cn.hutool.core.map.MapUtil; -import cn.iocoder.dashboard.BaseDbUnitTest; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum; -import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; -import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.logger.SysOperateLogDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.logger.SysOperateLogMapper; -import cn.iocoder.dashboard.modules.system.enums.common.SysSexEnum; -import cn.iocoder.dashboard.modules.system.service.logger.impl.SysOperateLogServiceImpl; -import cn.iocoder.dashboard.modules.system.service.user.SysUserService; -import cn.iocoder.yudao.framework.test.core.util.RandomUtils; -import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.*; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; - -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.Mockito.when; - -@Import({SysOperateLogServiceImpl.class}) -public class SysOperateLogServiceImplTest extends BaseDbUnitTest { - - @Resource - private SysOperateLogService operateLogServiceImpl; - - @Resource - private SysOperateLogMapper operateLogMapper; - - @MockBean - private SysUserService userService; - - @Test - public void testCreateOperateLogAsync() throws InterruptedException, ExecutionException { - String traceId = TracerUtils.getTraceId(); - OperateLogCreateReqDTO reqVO = RandomUtils.randomPojo(OperateLogCreateReqDTO.class, o -> { - o.setTraceId(traceId); - o.setUserId(randomLongId()); - o.setExts(MapUtil.builder("orderId", randomLongId()).build()); - }); - - // 执行service方法 - Future future = operateLogServiceImpl.createOperateLogAsync(reqVO); - future.get(); - // 断言插入是否正确 - SysOperateLogDO sysOperateLogDO = operateLogMapper.selectOne("trace_id", traceId); - assertPojoEquals(reqVO, sysOperateLogDO); - } - - @Test - public void testGetOperateLogPage() { - // 构造测试数据 - // 先构造用户 - SysUserDO user = RandomUtils.randomPojo(SysUserDO.class, o -> { - o.setNickname("wangkai"); - o.setSex(SysSexEnum.MALE.getSex()); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - when(userService.getUsersByNickname("wangkai")).thenReturn(Collections.singletonList(user)); - Long userId = user.getId(); - // 构造操作日志 - SysOperateLogDO sysOperateLogDO = RandomUtils.randomPojo(SysOperateLogDO.class, o -> { - o.setUserId(userId); - o.setModule("order"); - o.setType(OperateTypeEnum.CREATE.getType()); - o.setStartTime(buildTime(2021, 3, 6)); - o.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode()); - o.setExts(MapUtil.builder("orderId", randomLongId()).build()); - }); - operateLogMapper.insert(sysOperateLogDO); - - // 下面几个是不匹配的数据 - // 随机 userId - operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setUserId(userId + 1))); - // module 不同 - operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setModule("user"))); - // type 不同 - operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setType(OperateTypeEnum.IMPORT.getType()))); - // createTime 不同 - operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setStartTime(buildTime(2021, 2, 6)))); - // resultCode 不同 - operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setResultCode(GlobalErrorCodeConstants.BAD_REQUEST.getCode()))); - - // 构造调用参数 - SysOperateLogPageReqVO reqVO = new SysOperateLogPageReqVO(); - reqVO.setUserNickname("wangkai"); - reqVO.setModule("order"); - reqVO.setType(OperateTypeEnum.CREATE.getType()); - reqVO.setBeginTime(buildTime(2021, 3, 5)); - reqVO.setEndTime(buildTime(2021, 3, 7)); - reqVO.setSuccess(true); - - // 调用service方法 - PageResult pageResult = operateLogServiceImpl.getOperateLogPage(reqVO); - // 断言,只查到了一条符合条件的 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(sysOperateLogDO, pageResult.getList().get(0)); - } - - @Test - public void testGetOperateLogs() { - // 构造测试数据 - // 先构造用户 - SysUserDO user = RandomUtils.randomPojo(SysUserDO.class, o -> { - o.setNickname("wangkai"); - o.setSex(SysSexEnum.MALE.getSex()); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - when(userService.getUsersByNickname("wangkai")).thenReturn(Collections.singletonList(user)); - Long userId = user.getId(); - // 构造操作日志 - SysOperateLogDO sysOperateLogDO = RandomUtils.randomPojo(SysOperateLogDO.class, o -> { - o.setUserId(userId); - o.setModule("order"); - o.setType(OperateTypeEnum.CREATE.getType()); - o.setStartTime(buildTime(2021, 3, 6)); - o.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode()); - o.setExts(MapUtil.builder("orderId", randomLongId()).build()); - }); - operateLogMapper.insert(sysOperateLogDO); - - // 下面几个是不匹配的数据 - // 随机 userId - operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setUserId(userId + 1))); - // module 不同 - operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setModule("user"))); - // type 不同 - operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setType(OperateTypeEnum.IMPORT.getType()))); - // createTime 不同 - operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setStartTime(buildTime(2021, 2, 6)))); - // resultCode 不同 - operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setResultCode(GlobalErrorCodeConstants.BAD_REQUEST.getCode()))); - - // 构造调用参数 - SysOperateLogExportReqVO reqVO = new SysOperateLogExportReqVO(); - reqVO.setUserNickname("wangkai"); - reqVO.setModule("order"); - reqVO.setType(OperateTypeEnum.CREATE.getType()); - reqVO.setBeginTime(buildTime(2021, 3, 5)); - reqVO.setEndTime(buildTime(2021, 3, 7)); - reqVO.setSuccess(true); - - // 调用 service 方法 - List list = operateLogServiceImpl.getOperateLogs(reqVO); - // 断言,只查到了一条符合条件的 - assertEquals(1, list.size()); - assertPojoEquals(sysOperateLogDO, list.get(0)); - } - -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/notice/SysNoticeServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/notice/SysNoticeServiceImplTest.java deleted file mode 100644 index b680eca..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/notice/SysNoticeServiceImplTest.java +++ /dev/null @@ -1,164 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.notice; - -import cn.iocoder.dashboard.BaseDbUnitTest; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticePageReqVO; -import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.notice.SysNoticeDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.notice.SysNoticeMapper; -import cn.iocoder.dashboard.modules.system.enums.notice.SysNoticeTypeEnum; -import cn.iocoder.dashboard.modules.system.service.notice.impl.SysNoticeServiceImpl; -import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; - -import java.util.function.Consumer; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.NOTICE_NOT_FOUND; -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; -import static org.junit.jupiter.api.Assertions.*; - -@Import(SysNoticeServiceImpl.class) -class SysNoticeServiceImplTest extends BaseDbUnitTest { - - @Resource - private SysNoticeServiceImpl sysNoticeService; - - @Resource - private SysNoticeMapper sysNoticeMapper; - - @Test - public void testPageNotices_success() { - // 插入前置数据 - SysNoticeDO dbNotice = randomPojo(SysNoticeDO.class, o -> { - o.setTitle("尼古拉斯赵四来啦!"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setType(randomEle(SysNoticeTypeEnum.values()).getType()); - }); - sysNoticeMapper.insert(dbNotice); - - // 测试 title 不匹配 - sysNoticeMapper.insert(ObjectUtils.clone(dbNotice, o -> o.setTitle("尼古拉斯凯奇也来啦!"))); - // 测试 status 不匹配 - sysNoticeMapper.insert(ObjectUtils.clone(dbNotice, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - - - // 查询 - SysNoticePageReqVO reqVO = new SysNoticePageReqVO(); - reqVO.setTitle("尼古拉斯赵四来啦!"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - PageResult pageResult = sysNoticeService.pageNotices(reqVO); - - // 验证查询结果经过筛选 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbNotice, pageResult.getList().get(0)); - - } - - @Test - public void testGetNotice_success() { - // 插入前置数据 - SysNoticeDO dbNotice = randomSysNoticeDO(); - sysNoticeMapper.insert(dbNotice); - - // 查询 - SysNoticeDO notice = sysNoticeService.getNotice(dbNotice.getId()); - - // 验证插入与读取对象是否一致 - assertNotNull(notice); - assertPojoEquals(dbNotice, notice); - } - - @Test - public void testCreateNotice_success() { - // 准备参数 - SysNoticeCreateReqVO reqVO = randomSysNoticeCreateReqVO(); - - // 校验插入是否成功 - Long noticeId = sysNoticeService.createNotice(reqVO); - assertNotNull(noticeId); - - // 校验插入属性是否正确 - SysNoticeDO notice = sysNoticeMapper.selectById(noticeId); - assertPojoEquals(reqVO, notice); - } - - @Test - public void testUpdateNotice_success() { - // 插入前置数据 - SysNoticeDO dbNoticeDO = randomSysNoticeDO(); - sysNoticeMapper.insert(dbNoticeDO); - - // 准备更新参数 - SysNoticeUpdateReqVO reqVO = randomSysNoticeUpdateReqVO(o -> o.setId(dbNoticeDO.getId())); - - // 更新 - sysNoticeService.updateNotice(reqVO); - - // 检验是否更新成功 - SysNoticeDO notice = sysNoticeMapper.selectById(reqVO.getId()); - assertPojoEquals(reqVO, notice); - } - - @Test - public void testDeleteNotice_success() { - // 插入前置数据 - SysNoticeDO dbNotice = randomSysNoticeDO(); - sysNoticeMapper.insert(dbNotice); - - // 删除 - sysNoticeService.deleteNotice(dbNotice.getId()); - - // 检查是否删除成功 - assertNull(sysNoticeMapper.selectById(dbNotice.getId())); - } - - @Test - public void checkNoticeExists_success() { - // 插入前置数据 - SysNoticeDO dbNotice = randomSysNoticeDO(); - sysNoticeMapper.insert(dbNotice); - - // 成功调用 - sysNoticeService.checkNoticeExists(dbNotice.getId()); - } - - @Test - public void checkNoticeExists_noExists() { - assertServiceException(() -> sysNoticeService.checkNoticeExists(randomLongId()), NOTICE_NOT_FOUND); - } - - @SafeVarargs - private static SysNoticeDO randomSysNoticeDO(Consumer... consumers) { - SysNoticeDO notice = randomPojo(SysNoticeDO.class, consumers); - notice.setType(randomEle(SysNoticeTypeEnum.values()).getType()); - notice.setStatus(CommonStatusEnum.ENABLE.getStatus()); - return notice; - } - - @SafeVarargs - private static SysNoticeUpdateReqVO randomSysNoticeUpdateReqVO(Consumer... consumers) { - SysNoticeUpdateReqVO reqVO = randomPojo(SysNoticeUpdateReqVO.class, consumers); - reqVO.setType(randomEle(SysNoticeTypeEnum.values()).getType()); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - return reqVO; - } - - private static SysNoticeCreateReqVO randomSysNoticeCreateReqVO() { - SysNoticeCreateReqVO reqVO = randomPojo(SysNoticeCreateReqVO.class); - reqVO.setType(randomEle(SysNoticeTypeEnum.values()).getType()); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - return reqVO; - } - - -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/permission/SysPermissionServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/permission/SysPermissionServiceTest.java deleted file mode 100644 index 1091d58..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/permission/SysPermissionServiceTest.java +++ /dev/null @@ -1,109 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.permission; - -import cn.iocoder.dashboard.BaseDbUnitTest; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleMenuDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysUserRoleDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.permission.SysRoleMenuMapper; -import cn.iocoder.dashboard.modules.system.dal.mysql.permission.SysUserRoleMapper; -import cn.iocoder.dashboard.modules.system.mq.producer.permission.SysPermissionProducer; -import cn.iocoder.dashboard.modules.system.service.permission.impl.SysPermissionServiceImpl; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; - -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.Mockito.verify; - -@Import(SysPermissionServiceImpl.class) -public class SysPermissionServiceTest extends BaseDbUnitTest { - - @Resource - private SysPermissionServiceImpl permissionService; - - @Resource - private SysRoleMenuMapper roleMenuMapper; - @Resource - private SysUserRoleMapper userRoleMapper; - - @MockBean - private SysRoleService roleService; - @MockBean - private SysMenuService menuService; - - @MockBean - private SysPermissionProducer permissionProducer; - - @Test - public void testProcessRoleDeleted() { - // 准备参数 - Long roleId = randomLongId(); - // mock 数据 UserRole - SysUserRoleDO userRoleDO01 = randomPojo(SysUserRoleDO.class, o -> o.setRoleId(roleId)); // 被删除 - userRoleMapper.insert(userRoleDO01); - SysUserRoleDO userRoleDO02 = randomPojo(SysUserRoleDO.class); // 不被删除 - userRoleMapper.insert(userRoleDO02); - // mock 数据 RoleMenu - SysRoleMenuDO roleMenuDO01 = randomPojo(SysRoleMenuDO.class, o -> o.setRoleId(roleId)); // 被删除 - roleMenuMapper.insert(roleMenuDO01); - SysRoleMenuDO roleMenuDO02 = randomPojo(SysRoleMenuDO.class); // 不被删除 - roleMenuMapper.insert(roleMenuDO02); - - // 调用 - permissionService.processRoleDeleted(roleId); - // 断言数据 RoleMenuDO - List dbRoleMenus = roleMenuMapper.selectList(); - assertEquals(1, dbRoleMenus.size()); - assertPojoEquals(dbRoleMenus.get(0), roleMenuDO02); - // 断言数据 UserRoleDO - List dbUserRoles = userRoleMapper.selectList(); - assertEquals(1, dbUserRoles.size()); - assertPojoEquals(dbUserRoles.get(0), userRoleDO02); - // 断言调用 - verify(permissionProducer).sendRoleMenuRefreshMessage(); - } - - @Test - public void testProcessMenuDeleted() { - // 准备参数 - Long menuId = randomLongId(); - // mock 数据 - SysRoleMenuDO roleMenuDO01 = randomPojo(SysRoleMenuDO.class, o -> o.setMenuId(menuId)); // 被删除 - roleMenuMapper.insert(roleMenuDO01); - SysRoleMenuDO roleMenuDO02 = randomPojo(SysRoleMenuDO.class); // 不被删除 - roleMenuMapper.insert(roleMenuDO02); - - // 调用 - permissionService.processMenuDeleted(menuId); - // 断言数据 - List dbRoleMenus = roleMenuMapper.selectList(); - assertEquals(1, dbRoleMenus.size()); - assertPojoEquals(dbRoleMenus.get(0), roleMenuDO02); - // 断言调用 - verify(permissionProducer).sendRoleMenuRefreshMessage(); - } - - @Test - public void testProcessUserDeleted() { - // 准备参数 - Long userId = randomLongId(); - // mock 数据 - SysUserRoleDO userRoleDO01 = randomPojo(SysUserRoleDO.class, o -> o.setUserId(userId)); // 被删除 - userRoleMapper.insert(userRoleDO01); - SysUserRoleDO userRoleDO02 = randomPojo(SysUserRoleDO.class); // 不被删除 - userRoleMapper.insert(userRoleDO02); - - // 调用 - permissionService.processUserDeleted(userId); - // 断言数据 - List dbUserRoles = userRoleMapper.selectList(); - assertEquals(1, dbUserRoles.size()); - assertPojoEquals(dbUserRoles.get(0), userRoleDO02); - } - -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsChannelServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsChannelServiceTest.java deleted file mode 100644 index 252c31d..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsChannelServiceTest.java +++ /dev/null @@ -1,202 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.sms; - -import cn.hutool.core.bean.BeanUtil; -import cn.iocoder.dashboard.BaseDbUnitTest; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsChannelMapper; -import cn.iocoder.dashboard.modules.system.mq.producer.sms.SysSmsProducer; -import cn.iocoder.dashboard.modules.system.service.sms.impl.SysSmsChannelServiceImpl; -import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; -import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.Date; -import java.util.function.Consumer; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.SMS_CHANNEL_HAS_CHILDREN; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.SMS_CHANNEL_NOT_EXISTS; -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; -import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.max; -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.*; - -/** -* {@link SysSmsChannelServiceImpl} 的单元测试类 -* -* @author 芋道源码 -*/ -@Import(SysSmsChannelServiceImpl.class) -public class SysSmsChannelServiceTest extends BaseDbUnitTest { - - @Resource - private SysSmsChannelServiceImpl smsChannelService; - - @Resource - private SysSmsChannelMapper smsChannelMapper; - - @MockBean - private SmsClientFactory smsClientFactory; - @MockBean - private SysSmsTemplateService smsTemplateService; - @MockBean - private SysSmsProducer smsProducer; - - @Test - public void testInitLocalCache_success() { - // mock 数据 - SysSmsChannelDO smsChannelDO01 = randomSmsChannelDO(); - smsChannelMapper.insert(smsChannelDO01); - SysSmsChannelDO smsChannelDO02 = randomSmsChannelDO(); - smsChannelMapper.insert(smsChannelDO02); - - // 调用 - smsChannelService.initSmsClients(); - // 校验 maxUpdateTime 属性 - Date maxUpdateTime = (Date) BeanUtil.getFieldValue(smsChannelService, "maxUpdateTime"); - assertEquals(max(smsChannelDO01.getUpdateTime(), smsChannelDO02.getUpdateTime()), maxUpdateTime); - // 校验调用 - verify(smsClientFactory, times(1)).createOrUpdateSmsClient( - argThat(properties -> isPojoEquals(smsChannelDO01, properties))); - verify(smsClientFactory, times(1)).createOrUpdateSmsClient( - argThat(properties -> isPojoEquals(smsChannelDO02, properties))); - } - - @Test - public void testCreateSmsChannel_success() { - // 准备参数 - SysSmsChannelCreateReqVO reqVO = randomPojo(SysSmsChannelCreateReqVO.class, o -> o.setStatus(randomCommonStatus())); - - // 调用 - Long smsChannelId = smsChannelService.createSmsChannel(reqVO); - // 断言 - assertNotNull(smsChannelId); - // 校验记录的属性是否正确 - SysSmsChannelDO smsChannel = smsChannelMapper.selectById(smsChannelId); - assertPojoEquals(reqVO, smsChannel); - // 校验调用 - verify(smsProducer, times(1)).sendSmsChannelRefreshMessage(); - } - - @Test - public void testUpdateSmsChannel_success() { - // mock 数据 - SysSmsChannelDO dbSmsChannel = randomSmsChannelDO(); - smsChannelMapper.insert(dbSmsChannel);// @Sql: 先插入出一条存在的数据 - // 准备参数 - SysSmsChannelUpdateReqVO reqVO = randomPojo(SysSmsChannelUpdateReqVO.class, o -> { - o.setId(dbSmsChannel.getId()); // 设置更新的 ID - o.setStatus(randomCommonStatus()); - o.setCallbackUrl(randomString()); - }); - - // 调用 - smsChannelService.updateSmsChannel(reqVO); - // 校验是否更新正确 - SysSmsChannelDO smsChannel = smsChannelMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, smsChannel); - // 校验调用 - verify(smsProducer, times(1)).sendSmsChannelRefreshMessage(); - } - - @Test - public void testUpdateSmsChannel_notExists() { - // 准备参数 - SysSmsChannelUpdateReqVO reqVO = randomPojo(SysSmsChannelUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> smsChannelService.updateSmsChannel(reqVO), SMS_CHANNEL_NOT_EXISTS); - } - - @Test - public void testDeleteSmsChannel_success() { - // mock 数据 - SysSmsChannelDO dbSmsChannel = randomSmsChannelDO(); - smsChannelMapper.insert(dbSmsChannel);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbSmsChannel.getId(); - - // 调用 - smsChannelService.deleteSmsChannel(id); - // 校验数据不存在了 - assertNull(smsChannelMapper.selectById(id)); - // 校验调用 - verify(smsProducer, times(1)).sendSmsChannelRefreshMessage(); - } - - @Test - public void testDeleteSmsChannel_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> smsChannelService.deleteSmsChannel(id), SMS_CHANNEL_NOT_EXISTS); - } - - @Test - public void testDeleteSmsChannel_hasChildren() { - // mock 数据 - SysSmsChannelDO dbSmsChannel = randomSmsChannelDO(); - smsChannelMapper.insert(dbSmsChannel);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbSmsChannel.getId(); - // mock 方法 - when(smsTemplateService.countByChannelId(eq(id))).thenReturn(10); - - // 调用, 并断言异常 - assertServiceException(() -> smsChannelService.deleteSmsChannel(id), SMS_CHANNEL_HAS_CHILDREN); - } - - @Test - public void testGetSmsChannelPage() { - // mock 数据 - SysSmsChannelDO dbSmsChannel = randomPojo(SysSmsChannelDO.class, o -> { // 等会查询到 - o.setSignature("芋道源码"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setCreateTime(buildTime(2020, 12, 12)); - }); - smsChannelMapper.insert(dbSmsChannel); - // 测试 signature 不匹配 - smsChannelMapper.insert(ObjectUtils.clone(dbSmsChannel, o -> o.setSignature("源码"))); - // 测试 status 不匹配 - smsChannelMapper.insert(ObjectUtils.clone(dbSmsChannel, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 createTime 不匹配 - smsChannelMapper.insert(ObjectUtils.clone(dbSmsChannel, o -> o.setCreateTime(buildTime(2020, 11, 11)))); - // 准备参数 - SysSmsChannelPageReqVO reqVO = new SysSmsChannelPageReqVO(); - reqVO.setSignature("芋道"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setBeginCreateTime(buildTime(2020, 12, 1)); - reqVO.setEndCreateTime(buildTime(2020, 12, 24)); - - // 调用 - PageResult pageResult = smsChannelService.getSmsChannelPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbSmsChannel, pageResult.getList().get(0)); - } - - // ========== 随机对象 ========== - - @SafeVarargs - private static SysSmsChannelDO randomSmsChannelDO(Consumer... consumers) { - Consumer consumer = (o) -> { - o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 - }; - return randomPojo(SysSmsChannelDO.class, ArrayUtils.append(consumer, consumers)); - } - -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsServiceTest.java deleted file mode 100644 index c07f08b..0000000 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsServiceTest.java +++ /dev/null @@ -1,201 +0,0 @@ -package cn.iocoder.dashboard.modules.system.service.sms; - -import cn.hutool.core.map.MapUtil; -import cn.iocoder.dashboard.BaseMockitoUnitTest; -import cn.iocoder.yudao.framework.common.core.KeyValue; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; -import cn.iocoder.yudao.framework.sms.core.client.SmsClient; -import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; -import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult; -import cn.iocoder.yudao.framework.sms.core.client.dto.SmsReceiveRespDTO; -import cn.iocoder.yudao.framework.sms.core.client.dto.SmsSendRespDTO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; -import cn.iocoder.dashboard.modules.system.mq.message.sms.SysSmsSendMessage; -import cn.iocoder.dashboard.modules.system.mq.producer.sms.SysSmsProducer; -import cn.iocoder.dashboard.modules.system.service.sms.impl.SysSmsServiceImpl; -import org.assertj.core.util.Lists; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.*; - -/** - * {@link SysSmsServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -public class SysSmsServiceTest extends BaseMockitoUnitTest { - - @InjectMocks - private SysSmsServiceImpl smsService; - - @Mock - private SysSmsTemplateService smsTemplateService; - @Mock - private SysSmsLogService smsLogService; - @Mock - private SysSmsProducer smsProducer; - @Mock - private SmsClientFactory smsClientFactory; - - /** - * 发送成功,当短信模板开启时 - */ - @Test - public void testSendSingleSms_successWhenSmsTemplateEnable() { - // 准备参数 - String mobile = randomString(); - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String templateCode = randomString(); - Map templateParams = MapUtil.builder().put("code", "1234") - .put("op", "login").build(); - // mock SmsTemplateService 的方法 - SysSmsTemplateDO template = randomPojo(SysSmsTemplateDO.class, o -> { - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setContent("验证码为{code}, 操作为{op}"); - o.setParams(Lists.newArrayList("code", "op")); - }); - when(smsTemplateService.getSmsTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); - String content = randomString(); - when(smsTemplateService.formatSmsTemplateContent(eq(template.getContent()), eq(templateParams))) - .thenReturn(content); - // mock SmsLogService 的方法 - Long smsLogId = randomLongId(); - when(smsLogService.createSmsLog(eq(mobile), eq(userId), eq(userType), eq(Boolean.TRUE), eq(template), - eq(content), eq(templateParams))).thenReturn(smsLogId); - - // 调用 - Long resultSmsLogId = smsService.sendSingleSms(mobile, userId, userType, templateCode, templateParams); - // 断言 - assertEquals(smsLogId, resultSmsLogId); - // 断言调用 - verify(smsProducer, times(1)).sendSmsSendMessage(eq(smsLogId), eq(mobile), - eq(template.getChannelId()), eq(template.getApiTemplateId()), - eq(Lists.newArrayList(new KeyValue<>("code", "1234"), new KeyValue<>("op", "login")))); - } - - /** - * 发送成功,当短信模板关闭时 - */ - @Test - public void testSendSingleSms_successWhenSmsTemplateDisable() { - // 准备参数 - String mobile = randomString(); - Long userId = randomLongId(); - Integer userType = randomEle(UserTypeEnum.values()).getValue(); - String templateCode = randomString(); - Map templateParams = MapUtil.builder().put("code", "1234") - .put("op", "login").build(); - // mock SmsTemplateService 的方法 - SysSmsTemplateDO template = randomPojo(SysSmsTemplateDO.class, o -> { - o.setStatus(CommonStatusEnum.DISABLE.getStatus()); - o.setContent("验证码为{code}, 操作为{op}"); - o.setParams(Lists.newArrayList("code", "op")); - }); - when(smsTemplateService.getSmsTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); - String content = randomString(); - when(smsTemplateService.formatSmsTemplateContent(eq(template.getContent()), eq(templateParams))) - .thenReturn(content); - // mock SmsLogService 的方法 - Long smsLogId = randomLongId(); - when(smsLogService.createSmsLog(eq(mobile), eq(userId), eq(userType), eq(Boolean.FALSE), eq(template), - eq(content), eq(templateParams))).thenReturn(smsLogId); - - // 调用 - Long resultSmsLogId = smsService.sendSingleSms(mobile, userId, userType, templateCode, templateParams); - // 断言 - assertEquals(smsLogId, resultSmsLogId); - // 断言调用 - verify(smsProducer, times(0)).sendSmsSendMessage(anyLong(), anyString(), - anyLong(), any(), anyList()); - } - - @Test - public void testCheckSmsTemplateValid_notExists() { - // 准备参数 - String templateCode = randomString(); - // mock 方法 - - // 调用,并断言异常 - assertServiceException(() -> smsService.checkSmsTemplateValid(templateCode), - SMS_TEMPLATE_NOT_EXISTS); - } - - @Test - public void testBuildTemplateParams_paramMiss() { - // 准备参数 - SysSmsTemplateDO template = randomPojo(SysSmsTemplateDO.class, - o -> o.setParams(Lists.newArrayList("code"))); - Map templateParams = new HashMap<>(); - // mock 方法 - - // 调用,并断言异常 - assertServiceException(() -> smsService.buildTemplateParams(template, templateParams), - SMS_SEND_MOBILE_TEMPLATE_PARAM_MISS, "code"); - } - - @Test - public void testCheckMobile_notExists() { - // 准备参数 - // mock 方法 - - // 调用,并断言异常 - assertServiceException(() -> smsService.checkMobile(null), - SMS_SEND_MOBILE_NOT_EXISTS); - } - - @Test - @SuppressWarnings("unchecked") - public void testDoSendSms() { - // 准备参数 - SysSmsSendMessage message = randomPojo(SysSmsSendMessage.class); - // mock SmsClientFactory 的方法 - SmsClient smsClient = spy(SmsClient.class); - when(smsClientFactory.getSmsClient(eq(message.getChannelId()))).thenReturn(smsClient); - // mock SmsClient 的方法 - SmsCommonResult sendResult = randomPojo(SmsCommonResult.class, SmsSendRespDTO.class); - when(smsClient.sendSms(eq(message.getLogId()), eq(message.getMobile()), eq(message.getApiTemplateId()), - eq(message.getTemplateParams()))).thenReturn(sendResult); - - // 调用 - smsService.doSendSms(message); - // 断言 - verify(smsLogService, times(1)).updateSmsSendResult(eq(message.getLogId()), - eq(sendResult.getCode()), eq(sendResult.getMsg()), eq(sendResult.getApiCode()), - eq(sendResult.getApiMsg()), eq(sendResult.getApiRequestId()), eq(sendResult.getData().getSerialNo())); - } - - @Test - public void testReceiveSmsStatus() throws Throwable { - // 准备参数 - String channelCode = randomString(); - String text = randomString(); - // mock SmsClientFactory 的方法 - SmsClient smsClient = spy(SmsClient.class); - when(smsClientFactory.getSmsClient(eq(channelCode))).thenReturn(smsClient); - // mock SmsClient 的方法 - List receiveResults = randomPojoList(SmsReceiveRespDTO.class); - - // 调用 - smsService.receiveSmsStatus(channelCode, text); - // 断言 - receiveResults.forEach(result -> { - smsLogService.updateSmsReceiveResult(eq(result.getLogId()), eq(result.getSuccess()), - eq(result.getReceiveTime()), eq(result.getErrorCode()), eq(result.getErrorCode())); - }); - } - -} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/BaseDbAndRedisUnitTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/BaseDbAndRedisUnitTest.java new file mode 100644 index 0000000..2cc60cc --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/BaseDbAndRedisUnitTest.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.adminserver; + +import cn.iocoder.yudao.adminserver.config.RedisTestConfiguration; +import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; +import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration; +import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration; +import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; +import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; +import org.redisson.spring.starter.RedissonAutoConfiguration; +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.jdbc.Sql; + +/** + * 依赖内存 DB + Redis 的单元测试 + * + * 相比 {@link BaseDbUnitTest} 来说,额外增加了内存 Redis + * + * @author 芋道源码 + */ +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbAndRedisUnitTest.Application.class) +@ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件 +@Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) // 每个单元测试结束后,清理 DB +public class BaseDbAndRedisUnitTest { + + @Import({ + // DB 配置类 + YudaoDataSourceAutoConfiguration.class, // 自己的 DB 配置类 + DataSourceAutoConfiguration.class, // Spring DB 自动配置类 + DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类 + DruidDataSourceAutoConfigure.class, // Druid 自动配置类 + // MyBatis 配置类 + YudaoMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类 + MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类 + // Redis 配置类 + RedisTestConfiguration.class, // Redis 测试配置类,用于启动 RedisServer + RedisAutoConfiguration.class, // Spring Redis 自动配置类 + YudaoRedisAutoConfiguration.class, // 自己的 Redis 配置类 + RedissonAutoConfiguration.class, // Redisson 自动高配置类 + }) + public static class Application { + } + +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/BaseDbUnitTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/BaseDbUnitTest.java new file mode 100644 index 0000000..5f7daed --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/BaseDbUnitTest.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.adminserver; + +import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration; +import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration; +import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; +import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.jdbc.Sql; + +/** + * 依赖内存 DB 的单元测试 + * + * 注意,Service 层同样适用。对于 Service 层的单元测试,我们针对自己模块的 Mapper 走的是 H2 内存数据库,针对别的模块的 Service 走的是 Mock 方法 + * + * @author 芋道源码 + */ +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbUnitTest.Application.class) +@ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件 +@Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) // 每个单元测试结束后,清理 DB +public class BaseDbUnitTest { + + @Import({ + // DB 配置类 + YudaoDataSourceAutoConfiguration.class, // 自己的 DB 配置类 + DataSourceAutoConfiguration.class, // Spring DB 自动配置类 + DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类 + DruidDataSourceAutoConfigure.class, // Druid 自动配置类 + // MyBatis 配置类 + YudaoMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类 + MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类 + }) + public static class Application { + } + +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/BaseMockitoUnitTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/BaseMockitoUnitTest.java new file mode 100644 index 0000000..74e9d7f --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/BaseMockitoUnitTest.java @@ -0,0 +1,13 @@ +package cn.iocoder.yudao.adminserver; + +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; + +/** + * 纯 Mockito 的单元测试 + * + * @author 芋道源码 + */ +@ExtendWith(MockitoExtension.class) +public class BaseMockitoUnitTest { +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/BaseRedisUnitTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/BaseRedisUnitTest.java new file mode 100644 index 0000000..fa6bd63 --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/BaseRedisUnitTest.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.adminserver; + +import cn.iocoder.yudao.adminserver.config.RedisTestConfiguration; +import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; +import cn.iocoder.yudao.framework.tracer.config.YudaoTracerAutoConfiguration; +import org.redisson.spring.starter.RedissonAutoConfiguration; +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; +import org.springframework.test.context.ActiveProfiles; + +/** + * 依赖内存 Redis 的单元测试 + * + * 相比 {@link BaseDbUnitTest} 来说,从内存 DB 改成了内存 Redis + * + * @author 芋道源码 + */ +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseRedisUnitTest.Application.class) +@ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件 +public class BaseRedisUnitTest { + + @Import({ + // Redis 配置类 + RedisTestConfiguration.class, // Redis 测试配置类,用于启动 RedisServer + RedisAutoConfiguration.class, // Spring Redis 自动配置类 + YudaoTracerAutoConfiguration.class, // 自己的 Redis 配置类 + RedissonAutoConfiguration.class, // Redisson 自动高配置类 + }) + public static class Application { + } + +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/config/QuartzTestConfiguration.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/config/QuartzTestConfiguration.java new file mode 100644 index 0000000..0bbce19 --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/config/QuartzTestConfiguration.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.adminserver.config; + +import org.mockito.Mockito; +import org.quartz.Scheduler; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class QuartzTestConfiguration { + + @Bean + public Scheduler scheduler() { + return Mockito.mock(Scheduler.class); + } + +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/config/RedisTestConfiguration.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/config/RedisTestConfiguration.java new file mode 100644 index 0000000..15a39f7 --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/config/RedisTestConfiguration.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.adminserver.config; + +import com.github.fppt.jedismock.RedisServer; +import org.springframework.boot.autoconfigure.data.redis.RedisProperties; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; + +import java.io.IOException; + +@Configuration(proxyBeanMethods = false) +@Lazy(false) // 禁止延迟加载 +@EnableConfigurationProperties(RedisProperties.class) +public class RedisTestConfiguration { + + /** + * 创建模拟的 Redis Server 服务器 + */ + @Bean + public RedisServer redisServer(RedisProperties properties) throws IOException { + RedisServer redisServer = new RedisServer(properties.getPort()); + // TODO 芋艿:一次执行多个单元测试时,貌似创建多个 spring 容器,导致不进行 stop。这样,就导致端口被占用,无法启动。。。 + try { + redisServer.start(); + } catch (Exception ignore) {} + return redisServer; + } + +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/infra/service/config/InfConfigServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/InfConfigServiceTest.java index f6cc3d9..4ef105d 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/infra/service/config/InfConfigServiceTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/InfConfigServiceTest.java @@ -1,16 +1,16 @@ -package cn.iocoder.dashboard.modules.infra.service.config; +package cn.iocoder.yudao.adminserver.modules.infra.service.config; -import cn.iocoder.dashboard.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigCreateReqVO; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigPageReqVO; -import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigUpdateReqVO; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.config.InfConfigDO; -import cn.iocoder.dashboard.modules.infra.dal.mysql.config.InfConfigMapper; -import cn.iocoder.dashboard.modules.infra.enums.config.InfConfigTypeEnum; -import cn.iocoder.dashboard.modules.infra.mq.producer.config.InfConfigProducer; -import cn.iocoder.dashboard.modules.infra.service.config.impl.InfConfigServiceImpl; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config.InfConfigDO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.config.InfConfigMapper; +import cn.iocoder.yudao.adminserver.modules.infra.enums.config.InfConfigTypeEnum; +import cn.iocoder.yudao.adminserver.modules.infra.mq.producer.config.InfConfigProducer; +import cn.iocoder.yudao.adminserver.modules.infra.service.config.impl.InfConfigServiceImpl; import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; import org.junit.jupiter.api.Test; @@ -22,7 +22,7 @@ import java.util.List; import java.util.function.Consumer; import static cn.hutool.core.util.RandomUtil.randomEle; -import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.*; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/file/InfFileServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/file/InfFileServiceTest.java new file mode 100644 index 0000000..260ae7c --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/file/InfFileServiceTest.java @@ -0,0 +1,126 @@ +package cn.iocoder.yudao.adminserver.modules.infra.service.file; + +import cn.hutool.core.io.resource.ResourceUtil; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.infra.framework.file.config.FileProperties; +import cn.iocoder.yudao.adminserver.modules.infra.controller.file.vo.InfFilePageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.file.InfFileDO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.file.InfFileMapper; +import cn.iocoder.yudao.adminserver.modules.infra.service.file.impl.InfFileServiceImpl; +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; +import org.junit.jupiter.api.Test; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.FILE_NOT_EXISTS; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.FILE_PATH_EXISTS; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; +import static org.junit.jupiter.api.Assertions.*; + +@Import({InfFileServiceImpl.class, FileProperties.class}) +public class InfFileServiceTest extends BaseDbUnitTest { + + @Resource + private InfFileServiceImpl fileService; + + @Resource + private FileProperties fileProperties; + @Resource + private InfFileMapper fileMapper; + + @Test + public void testCreateFile_success() { + // 准备参数 + String path = randomString(); + byte[] content = ResourceUtil.readBytes("file/erweima.jpg"); + + // 调用 + String url = fileService.createFile(path, content); + // 断言 + assertEquals(fileProperties.getBasePath() + path, url); + // 校验数据 + InfFileDO file = fileMapper.selectById(path); + assertEquals(path, file.getId()); + assertEquals("jpg", file.getType()); + assertArrayEquals(content, file.getContent()); + } + + @Test + public void testCreateFile_exists() { + // mock 数据 + InfFileDO dbFile = randomPojo(InfFileDO.class); + fileMapper.insert(dbFile); + // 准备参数 + String path = dbFile.getId(); // 模拟已存在 + byte[] content = ResourceUtil.readBytes("file/erweima.jpg"); + + // 调用,并断言异常 + assertServiceException(() -> fileService.createFile(path, content), FILE_PATH_EXISTS); + } + + @Test + public void testDeleteFile_success() { + // mock 数据 + InfFileDO dbFile = randomPojo(InfFileDO.class); + fileMapper.insert(dbFile);// @Sql: 先插入出一条存在的数据 + // 准备参数 + String id = dbFile.getId(); + + // 调用 + fileService.deleteFile(id); + // 校验数据不存在了 + assertNull(fileMapper.selectById(id)); + } + + @Test + public void testDeleteFile_notExists() { + // 准备参数 + String id = randomString(); + + // 调用, 并断言异常 + assertServiceException(() -> fileService.deleteFile(id), FILE_NOT_EXISTS); + } + + @Test + public void testGetFilePage() { + // mock 数据 + InfFileDO dbFile = randomPojo(InfFileDO.class, o -> { // 等会查询到 + o.setId("yudao"); + o.setType("jpg"); + o.setCreateTime(buildTime(2021, 1, 15)); + }); + fileMapper.insert(dbFile); + // 测试 id 不匹配 + fileMapper.insert(ObjectUtils.clone(dbFile, o -> o.setId("tudou"))); + // 测试 type 不匹配 + fileMapper.insert(ObjectUtils.clone(dbFile, o -> { + o.setId("yudao02"); + o.setType("png"); + })); + // 测试 createTime 不匹配 + fileMapper.insert(ObjectUtils.clone(dbFile, o -> { + o.setId("yudao03"); + o.setCreateTime(buildTime(2020, 1, 15)); + })); + // 准备参数 + InfFilePageReqVO reqVO = new InfFilePageReqVO(); + reqVO.setId("yudao"); + reqVO.setType("jp"); + reqVO.setBeginCreateTime(buildTime(2021, 1, 10)); + reqVO.setEndCreateTime(buildTime(2021, 1, 20)); + + // 调用 + PageResult pageResult = fileService.getFilePage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbFile, pageResult.getList().get(0), "content"); + } + +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/job/InfJobLogServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/job/InfJobLogServiceTest.java new file mode 100644 index 0000000..4e4f172 --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/job/InfJobLogServiceTest.java @@ -0,0 +1,173 @@ +package cn.iocoder.yudao.adminserver.modules.infra.service.job; + +import static cn.hutool.core.util.RandomUtil.randomEle; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.Resource; + +import org.junit.jupiter.api.Test; +import org.springframework.context.annotation.Import; + +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log.InfJobLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.log.InfJobLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.job.InfJobLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.job.InfJobLogMapper; +import cn.iocoder.yudao.adminserver.modules.infra.enums.job.InfJobLogStatusEnum; +import cn.iocoder.yudao.adminserver.modules.infra.service.job.impl.InfJobLogServiceImpl; +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; + +/** + * {@link InfJobLogServiceImpl} 的单元测试 + * + * @author neilz + */ +@Import(InfJobLogServiceImpl.class) +public class InfJobLogServiceTest extends BaseDbUnitTest { + + @Resource + private InfJobLogServiceImpl jobLogService; + @Resource + private InfJobLogMapper jobLogMapper; + + @Test + public void testCreateJobLog_success() { + // 准备参数 + InfJobLogDO reqVO = randomPojo(InfJobLogDO.class, o -> { + o.setExecuteIndex(1); + }); + // 调用 + Long jobLogId = jobLogService.createJobLog(reqVO.getJobId(), reqVO.getBeginTime(), reqVO.getHandlerName(), reqVO.getHandlerParam(), reqVO.getExecuteIndex()); + // 断言 + assertNotNull(jobLogId); + // 校验记录的属性是否正确 + InfJobLogDO job = jobLogMapper.selectById(jobLogId); + assertEquals(InfJobLogStatusEnum.RUNNING.getStatus(), job.getStatus()); + } + + @Test + public void testUpdateJobLogResultAsync_success() { + // 准备参数 + InfJobLogDO reqVO = randomPojo(InfJobLogDO.class, o -> { + o.setExecuteIndex(1); + }); + InfJobLogDO log = InfJobLogDO.builder().jobId(reqVO.getJobId()).handlerName(reqVO.getHandlerName()).handlerParam(reqVO.getHandlerParam()).executeIndex(reqVO.getExecuteIndex()) + .beginTime(reqVO.getBeginTime()).status(InfJobLogStatusEnum.RUNNING.getStatus()).build(); + jobLogMapper.insert(log); + // 调用 + jobLogService.updateJobLogResultAsync(log.getId(), reqVO.getBeginTime(), reqVO.getDuration(), true,reqVO.getResult()); + // 校验记录的属性是否正确 + InfJobLogDO job = jobLogMapper.selectById(log.getId()); + assertEquals(InfJobLogStatusEnum.SUCCESS.getStatus(), job.getStatus()); + + // 调用 + jobLogService.updateJobLogResultAsync(log.getId(), reqVO.getBeginTime(), reqVO.getDuration(), false,reqVO.getResult()); + // 校验记录的属性是否正确 + InfJobLogDO job2 = jobLogMapper.selectById(log.getId()); + assertEquals(InfJobLogStatusEnum.FAILURE.getStatus(), job2.getStatus()); + } + + @Test + public void testGetJobLogListByIds_success() { + // mock 数据 + InfJobLogDO dbJobLog = randomPojo(InfJobLogDO.class, o -> { + o.setExecuteIndex(1); + o.setStatus(randomEle(InfJobLogStatusEnum.values()).getStatus()); // 保证 status 的范围 + }); + InfJobLogDO cloneJobLog = ObjectUtils.clone(dbJobLog, o -> o.setHandlerName(randomString())); + jobLogMapper.insert(dbJobLog); + // 测试 handlerName 不匹配 + jobLogMapper.insert(cloneJobLog); + // 准备参数 + ArrayList ids = new ArrayList<>(); + ids.add(dbJobLog.getId()); + ids.add(cloneJobLog.getId()); + // 调用 + List list = jobLogService.getJobLogList(ids); + // 断言 + assertEquals(2, list.size()); + assertPojoEquals(dbJobLog, list.get(0)); + } + + @Test + public void testGetJobPage_success() { + // mock 数据 + InfJobLogDO dbJobLog = randomPojo(InfJobLogDO.class, o -> { + o.setExecuteIndex(1); + o.setHandlerName("handlerName 单元测试"); + o.setStatus(InfJobLogStatusEnum.SUCCESS.getStatus()); + o.setBeginTime(buildTime(2021, 1, 8)); + o.setEndTime(buildTime(2021, 1, 8)); + }); + jobLogMapper.insert(dbJobLog); + // 测试 jobId 不匹配 + jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setJobId(randomLongId()))); + // 测试 handlerName 不匹配 + jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setHandlerName(randomString()))); + // 测试 beginTime 不匹配 + jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setBeginTime(buildTime(2021, 1, 7)))); + // 测试 endTime 不匹配 + jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setEndTime(buildTime(2021, 1, 9)))); + // 测试 status 不匹配 + jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setStatus(InfJobLogStatusEnum.FAILURE.getStatus()))); + // 准备参数 + InfJobLogPageReqVO reqVo = new InfJobLogPageReqVO(); + reqVo.setJobId(dbJobLog.getJobId()); + reqVo.setHandlerName("单元"); + reqVo.setBeginTime(dbJobLog.getBeginTime()); + reqVo.setEndTime(dbJobLog.getEndTime()); + reqVo.setStatus(InfJobLogStatusEnum.SUCCESS.getStatus()); + // 调用 + PageResult pageResult = jobLogService.getJobLogPage(reqVo); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbJobLog, pageResult.getList().get(0)); + } + + @Test + public void testGetJobListForExport_success() { + // mock 数据 + InfJobLogDO dbJobLog = randomPojo(InfJobLogDO.class, o -> { + o.setExecuteIndex(1); + o.setHandlerName("handlerName 单元测试"); + o.setStatus(InfJobLogStatusEnum.SUCCESS.getStatus()); + o.setBeginTime(buildTime(2021, 1, 8)); + o.setEndTime(buildTime(2021, 1, 8)); + }); + jobLogMapper.insert(dbJobLog); + // 测试 jobId 不匹配 + jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setJobId(randomLongId()))); + // 测试 handlerName 不匹配 + jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setHandlerName(randomString()))); + // 测试 beginTime 不匹配 + jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setBeginTime(buildTime(2021, 1, 7)))); + // 测试 endTime 不匹配 + jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setEndTime(buildTime(2021, 1, 9)))); + // 测试 status 不匹配 + jobLogMapper.insert(ObjectUtils.clone(dbJobLog, o -> o.setStatus(InfJobLogStatusEnum.FAILURE.getStatus()))); + // 准备参数 + InfJobLogExportReqVO reqVo = new InfJobLogExportReqVO(); + reqVo.setJobId(dbJobLog.getJobId()); + reqVo.setHandlerName("单元"); + reqVo.setBeginTime(dbJobLog.getBeginTime()); + reqVo.setEndTime(dbJobLog.getEndTime()); + reqVo.setStatus(InfJobLogStatusEnum.SUCCESS.getStatus()); + // 调用 + List list = jobLogService.getJobLogList(reqVo); + // 断言 + assertEquals(1, list.size()); + assertPojoEquals(dbJobLog, list.get(0)); + } + +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/infra/service/job/InfJobServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/job/InfJobServiceTest.java index dde3600..a767519 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/infra/service/job/InfJobServiceTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/job/InfJobServiceTest.java @@ -1,12 +1,12 @@ -package cn.iocoder.dashboard.modules.infra.service.job; +package cn.iocoder.yudao.adminserver.modules.infra.service.job; import static cn.hutool.core.util.RandomUtil.randomEle; -import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.JOB_CHANGE_STATUS_EQUALS; -import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.JOB_CHANGE_STATUS_INVALID; -import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.JOB_CRON_EXPRESSION_VALID; -import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.JOB_HANDLER_EXISTS; -import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.JOB_NOT_EXISTS; -import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.JOB_UPDATE_ONLY_NORMAL_STATUS; +import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.JOB_CHANGE_STATUS_EQUALS; +import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.JOB_CHANGE_STATUS_INVALID; +import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.JOB_CRON_EXPRESSION_VALID; +import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.JOB_HANDLER_EXISTS; +import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.JOB_NOT_EXISTS; +import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.JOB_UPDATE_ONLY_NORMAL_STATUS; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; @@ -28,18 +28,18 @@ import org.quartz.SchedulerException; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; -import cn.iocoder.dashboard.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.quartz.core.scheduler.SchedulerManager; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobCreateReqVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobExportReqVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobPageReqVO; -import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobUpdateReqVO; -import cn.iocoder.dashboard.modules.infra.convert.job.InfJobConvert; -import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobDO; -import cn.iocoder.dashboard.modules.infra.dal.mysql.job.InfJobMapper; -import cn.iocoder.dashboard.modules.infra.enums.job.InfJobStatusEnum; -import cn.iocoder.dashboard.modules.infra.service.job.impl.InfJobServiceImpl; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.job.vo.job.InfJobUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.convert.job.InfJobConvert; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.job.InfJobDO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.job.InfJobMapper; +import cn.iocoder.yudao.adminserver.modules.infra.enums.job.InfJobStatusEnum; +import cn.iocoder.yudao.adminserver.modules.infra.service.job.impl.InfJobServiceImpl; import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; /** diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiAccessLogServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiAccessLogServiceImplTest.java new file mode 100644 index 0000000..689b88e --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiAccessLogServiceImplTest.java @@ -0,0 +1,176 @@ +package cn.iocoder.yudao.adminserver.modules.infra.service.logger; + +import cn.hutool.core.util.RandomUtil; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateDTO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiAccessLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.logger.InfApiAccessLogMapper; +import cn.iocoder.yudao.adminserver.modules.infra.service.logger.impl.InfApiAccessLogServiceImpl; +import cn.iocoder.yudao.framework.test.core.util.RandomUtils; +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; +import org.junit.jupiter.api.Test; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; +import java.util.concurrent.Future; + +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +/** + * {@link InfApiAccessLogServiceImpl} 单元测试 + */ +@Import(InfApiAccessLogServiceImpl.class) +public class InfApiAccessLogServiceImplTest extends BaseDbUnitTest { + + @Resource + private InfApiAccessLogService infApiAccessLogServiceImpl; + + @Resource + private InfApiAccessLogMapper infApiAccessLogMapper; + + @Test + public void testCreateApiAccessLogAsync() throws Exception { + ApiAccessLogCreateDTO createDTO = RandomUtils.randomPojo( + ApiAccessLogCreateDTO.class, + dto -> dto.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue()) + ); + + // 执行service方法 + Future future = infApiAccessLogServiceImpl.createApiAccessLogAsync(createDTO); + + // 等异步执行完 + future.get(); + + InfApiAccessLogDO infApiAccessLogDO = infApiAccessLogMapper.selectOne(null); + // 断言 + assertNotNull(infApiAccessLogDO); + // 断言,忽略基本字段 + assertPojoEquals(createDTO, infApiAccessLogDO); + } + + @Test + public void testGetApiAccessLogPage() { + // 构造测试数据 + long userId = 2233L; + int userType = UserTypeEnum.ADMIN.getValue(); + String applicationName = "yudao-test"; + String requestUrl = "foo"; + Date beginTime = buildTime(2021, 3, 13); + int duration = 1000; + int resultCode = GlobalErrorCodeConstants.SUCCESS.getCode(); + + InfApiAccessLogDO infApiAccessLogDO = RandomUtils.randomPojo(InfApiAccessLogDO.class, dto -> { + dto.setUserId(userId); + dto.setUserType(userType); + dto.setApplicationName(applicationName); + dto.setRequestUrl(requestUrl); + dto.setBeginTime(beginTime); + dto.setDuration(duration); + dto.setResultCode(resultCode); + }); + infApiAccessLogMapper.insert(infApiAccessLogDO); + + // 下面几个都是不匹配的数据 + // userId 不同的 + infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setUserId(3344L))); + // userType + infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setUserType(UserTypeEnum.MEMBER.getValue()))); + // applicationName 不同的 + infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setApplicationName("test"))); + // requestUrl 不同的 + infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setRequestUrl("bar"))); + // 构造一个早期时间 2021-02-06 00:00:00 + infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setBeginTime(buildTime(2021, 2, 6)))); + // duration 不同的 + infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setDuration(100))); + // resultCode 不同的 + infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setResultCode(2))); + + // 构造调用参数 + InfApiAccessLogPageReqVO reqVO = new InfApiAccessLogPageReqVO(); + reqVO.setUserId(userId); + reqVO.setUserType(userType); + reqVO.setApplicationName(applicationName); + reqVO.setRequestUrl(requestUrl); + reqVO.setBeginBeginTime(buildTime(2021, 3, 12)); + reqVO.setEndBeginTime(buildTime(2021, 3, 14)); + reqVO.setDuration(duration); + reqVO.setResultCode(resultCode); + + // 调用service方法 + PageResult pageResult = infApiAccessLogServiceImpl.getApiAccessLogPage(reqVO); + + // 断言,只查到了一条符合条件的 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(infApiAccessLogDO, pageResult.getList().get(0)); + } + + @Test + public void testGetApiAccessLogList() { + // 构造测试数据 + long userId = 2233L; + int userType = UserTypeEnum.ADMIN.getValue(); + String applicationName = "yudao-test"; + String requestUrl = "foo"; + Date beginTime = buildTime(2021, 3, 13); + int duration = 1000; + int resultCode = GlobalErrorCodeConstants.SUCCESS.getCode(); + + InfApiAccessLogDO infApiAccessLogDO = RandomUtils.randomPojo(InfApiAccessLogDO.class, dto -> { + dto.setUserId(userId); + dto.setUserType(userType); + dto.setApplicationName(applicationName); + dto.setRequestUrl(requestUrl); + dto.setBeginTime(beginTime); + dto.setDuration(duration); + dto.setResultCode(resultCode); + }); + infApiAccessLogMapper.insert(infApiAccessLogDO); + + // 下面几个都是不匹配的数据 + // userId 不同的 + infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setUserId(3344L))); + // userType + infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setUserType(UserTypeEnum.MEMBER.getValue()))); + // applicationName 不同的 + infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setApplicationName("test"))); + // requestUrl 不同的 + infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setRequestUrl("bar"))); + // 构造一个早期时间 2021-02-06 00:00:00 + infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setBeginTime(buildTime(2021, 2, 6)))); + // duration 不同的 + infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setDuration(100))); + // resultCode 不同的 + infApiAccessLogMapper.insert(ObjectUtils.clone(infApiAccessLogDO, logDO -> logDO.setResultCode(2))); + + // 构造调用参数 + InfApiAccessLogExportReqVO reqVO = new InfApiAccessLogExportReqVO(); + reqVO.setUserId(userId); + reqVO.setUserType(userType); + reqVO.setApplicationName(applicationName); + reqVO.setRequestUrl(requestUrl); + reqVO.setBeginBeginTime(buildTime(2021, 3, 12)); + reqVO.setEndBeginTime(buildTime(2021, 3, 14)); + reqVO.setDuration(duration); + reqVO.setResultCode(resultCode); + + // 调用service方法 + List list = infApiAccessLogServiceImpl.getApiAccessLogList(reqVO); + + // 断言,只查到了一条符合条件的 + assertEquals(1, list.size()); + assertPojoEquals(infApiAccessLogDO, list.get(0)); + } + +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiErrorLogServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiErrorLogServiceImplTest.java new file mode 100644 index 0000000..0a0c26c --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiErrorLogServiceImplTest.java @@ -0,0 +1,207 @@ +package cn.iocoder.yudao.adminserver.modules.infra.service.logger; + +import cn.hutool.core.util.RandomUtil; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateDTO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiErrorLogDO; +import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.logger.InfApiErrorLogMapper; +import cn.iocoder.yudao.adminserver.modules.infra.enums.logger.InfApiErrorLogProcessStatusEnum; +import cn.iocoder.yudao.adminserver.modules.infra.service.logger.impl.InfApiErrorLogServiceImpl; +import cn.iocoder.yudao.framework.test.core.util.RandomUtils; +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; +import org.junit.jupiter.api.Test; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; +import java.util.concurrent.Future; + +import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.API_ERROR_LOG_NOT_FOUND; +import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.API_ERROR_LOG_PROCESSED; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +/** + * {@link InfApiErrorLogServiceImpl} 单元测试 + */ +@Import(InfApiErrorLogServiceImpl.class) +public class InfApiErrorLogServiceImplTest extends BaseDbUnitTest { + + @Resource + private InfApiErrorLogService infApiErrorLogServiceImpl; + + @Resource + private InfApiErrorLogMapper infApiErrorLogMapper; + + + @Test + public void testCreateApiErrorLogAsync() throws Exception { + ApiErrorLogCreateDTO createDTO = RandomUtils.randomPojo( + ApiErrorLogCreateDTO.class, + dto -> dto.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue()) + ); + + // 执行service方法 + Future future = infApiErrorLogServiceImpl.createApiErrorLogAsync(createDTO); + + // 等异步执行完 + future.get(); + + InfApiErrorLogDO infApiErrorLogDO = infApiErrorLogMapper.selectOne(null); + // 断言 + assertNotNull(infApiErrorLogDO); + // 断言,忽略基本字段 + assertPojoEquals(createDTO, infApiErrorLogDO); + } + + + @Test + public void testGetApiErrorLogPage() { + // 构造测试数据 + long userId = 2233L; + int userType = UserTypeEnum.ADMIN.getValue(); + String applicationName = "yudao-test"; + String requestUrl = "foo"; + Date beginTime = buildTime(2021, 3, 13); + int progressStatus = InfApiErrorLogProcessStatusEnum.INIT.getStatus(); + + InfApiErrorLogDO infApiErrorLogDO = RandomUtils.randomPojo(InfApiErrorLogDO.class, logDO -> { + logDO.setUserId(userId); + logDO.setUserType(userType); + logDO.setApplicationName(applicationName); + logDO.setRequestUrl(requestUrl); + logDO.setExceptionTime(beginTime); + logDO.setProcessStatus(progressStatus); + }); + infApiErrorLogMapper.insert(infApiErrorLogDO); + + // 下面几个都是不匹配的数据 + // userId 不同的 + infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setUserId(3344L))); + // userType + infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setUserType(UserTypeEnum.MEMBER.getValue()))); + // applicationName 不同的 + infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setApplicationName("test"))); + // requestUrl 不同的 + infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setRequestUrl("bar"))); + // 构造一个早期时间 2021-02-06 00:00:00 + infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setExceptionTime(buildTime(2021, 2, 6)))); + // progressStatus 不同的 + infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setProcessStatus(InfApiErrorLogProcessStatusEnum.DONE.getStatus()))); + + // 构造调用参数 + InfApiErrorLogPageReqVO reqVO = new InfApiErrorLogPageReqVO(); + reqVO.setUserId(userId); + reqVO.setUserType(userType); + reqVO.setApplicationName(applicationName); + reqVO.setRequestUrl(requestUrl); + reqVO.setBeginExceptionTime(buildTime(2021, 3, 12)); + reqVO.setEndExceptionTime(buildTime(2021, 3, 14)); + reqVO.setProcessStatus(progressStatus); + + // 调用service方法 + PageResult pageResult = infApiErrorLogServiceImpl.getApiErrorLogPage(reqVO); + + // 断言,只查到了一条符合条件的 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(infApiErrorLogDO, pageResult.getList().get(0)); + } + + @Test + public void testGetApiErrorLogList() { + // 构造测试数据 + long userId = 2233L; + int userType = UserTypeEnum.ADMIN.getValue(); + String applicationName = "yudao-test"; + String requestUrl = "foo"; + Date beginTime = buildTime(2021, 3, 13); + int progressStatus = InfApiErrorLogProcessStatusEnum.INIT.getStatus(); + + InfApiErrorLogDO infApiErrorLogDO = RandomUtils.randomPojo(InfApiErrorLogDO.class, logDO -> { + logDO.setUserId(userId); + logDO.setUserType(userType); + logDO.setApplicationName(applicationName); + logDO.setRequestUrl(requestUrl); + logDO.setExceptionTime(beginTime); + logDO.setProcessStatus(progressStatus); + }); + infApiErrorLogMapper.insert(infApiErrorLogDO); + + // 下面几个都是不匹配的数据 + // userId 不同的 + infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setUserId(3344L))); + // userType + infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setUserType(UserTypeEnum.MEMBER.getValue()))); + // applicationName 不同的 + infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setApplicationName("test"))); + // requestUrl 不同的 + infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setRequestUrl("bar"))); + // 构造一个早期时间 2021-02-06 00:00:00 + infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setExceptionTime(buildTime(2021, 2, 6)))); + // progressStatus 不同的 + infApiErrorLogMapper.insert(ObjectUtils.clone(infApiErrorLogDO, logDO -> logDO.setProcessStatus(InfApiErrorLogProcessStatusEnum.DONE.getStatus()))); + + // 构造调用参数 + InfApiErrorLogExportReqVO reqVO = new InfApiErrorLogExportReqVO(); + reqVO.setUserId(userId); + reqVO.setUserType(userType); + reqVO.setApplicationName(applicationName); + reqVO.setRequestUrl(requestUrl); + reqVO.setBeginExceptionTime(buildTime(2021, 3, 12)); + reqVO.setEndExceptionTime(buildTime(2021, 3, 14)); + reqVO.setProcessStatus(progressStatus); + + // 调用service方法 + List list = infApiErrorLogServiceImpl.getApiErrorLogList(reqVO); + + // 断言,只查到了一条符合条件的 + assertEquals(1, list.size()); + assertPojoEquals(infApiErrorLogDO, list.get(0)); + } + + + @Test + public void testUpdateApiErrorLogProcess() { + // 先构造两条数据,第一条用于抛出异常,第二条用于正常的执行update操作 + Long processUserId = 2233L; + + InfApiErrorLogDO first = RandomUtils.randomPojo(InfApiErrorLogDO.class, logDO -> { + logDO.setProcessUserId(processUserId); + logDO.setUserType(UserTypeEnum.ADMIN.getValue()); + logDO.setProcessStatus(InfApiErrorLogProcessStatusEnum.DONE.getStatus()); + }); + infApiErrorLogMapper.insert(first); + + InfApiErrorLogDO second = RandomUtils.randomPojo(InfApiErrorLogDO.class, logDO -> { + logDO.setProcessUserId(1122L); + logDO.setUserType(UserTypeEnum.ADMIN.getValue()); + logDO.setProcessStatus(InfApiErrorLogProcessStatusEnum.INIT.getStatus()); + }); + infApiErrorLogMapper.insert(second); + + Long firstId = first.getId(); + Long secondId = second.getId(); + + // 执行正常的 update 操作 + infApiErrorLogServiceImpl.updateApiErrorLogProcess(secondId, InfApiErrorLogProcessStatusEnum.DONE.getStatus(), processUserId); + InfApiErrorLogDO secondSelect = infApiErrorLogMapper.selectOne("id", secondId); + + // id 为 0 查询不到,应该抛出异常 API_ERROR_LOG_NOT_FOUND + assertServiceException(() -> infApiErrorLogServiceImpl.updateApiErrorLogProcess(0L, InfApiErrorLogProcessStatusEnum.DONE.getStatus(), processUserId), API_ERROR_LOG_NOT_FOUND); + // id 为 first 的 progressStatus 为 DONE ,应该抛出 API_ERROR_LOG_PROCESSED + assertServiceException(() -> infApiErrorLogServiceImpl.updateApiErrorLogProcess(firstId, InfApiErrorLogProcessStatusEnum.DONE.getStatus(), processUserId), API_ERROR_LOG_PROCESSED); + // 验证 progressStatus 是否修改成功 + assertEquals(InfApiErrorLogProcessStatusEnum.DONE.getStatus(), secondSelect.getProcessStatus()); + // 验证 progressUserId 是否修改成功 + assertEquals(processUserId, secondSelect.getProcessUserId()); + } +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/auth/SysAuthServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java index 5e621d0..092d72f 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/auth/SysAuthServiceImplTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java @@ -1,17 +1,17 @@ -package cn.iocoder.dashboard.modules.system.service.auth; +package cn.iocoder.yudao.adminserver.modules.system.service.auth; -import cn.iocoder.dashboard.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.dashboard.modules.system.controller.auth.vo.auth.SysAuthLoginReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.dashboard.modules.system.enums.logger.SysLoginLogTypeEnum; -import cn.iocoder.dashboard.modules.system.enums.logger.SysLoginResultEnum; -import cn.iocoder.dashboard.modules.system.service.auth.impl.SysAuthServiceImpl; -import cn.iocoder.dashboard.modules.system.service.common.SysCaptchaService; -import cn.iocoder.dashboard.modules.system.service.logger.SysLoginLogService; -import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; -import cn.iocoder.dashboard.modules.system.service.user.SysUserService; +import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthLoginReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeEnum; +import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum; +import cn.iocoder.yudao.adminserver.modules.system.service.auth.impl.SysAuthServiceImpl; +import cn.iocoder.yudao.adminserver.modules.system.service.common.SysCaptchaService; +import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysLoginLogService; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; +import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; import cn.iocoder.yudao.framework.test.core.util.AssertUtils; import org.junit.jupiter.api.Test; import org.springframework.boot.test.mock.mockito.MockBean; @@ -27,7 +27,7 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException; import javax.annotation.Resource; import java.util.Set; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; import static java.util.Collections.singleton; diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/auth/SysUserSessionServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysUserSessionServiceImplTest.java index aa782d9..026b23d 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/auth/SysUserSessionServiceImplTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysUserSessionServiceImplTest.java @@ -1,4 +1,4 @@ -package cn.iocoder.dashboard.modules.system.service.auth; +package cn.iocoder.yudao.adminserver.modules.system.service.auth; import static cn.hutool.core.util.RandomUtil.randomEle; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; @@ -26,22 +26,22 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; import cn.hutool.core.date.DateUtil; -import cn.iocoder.dashboard.BaseDbAndRedisUnitTest; +import cn.iocoder.yudao.adminserver.BaseDbAndRedisUnitTest; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.security.config.SecurityProperties; import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.dashboard.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.auth.SysUserSessionDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.auth.SysUserSessionMapper; -import cn.iocoder.dashboard.modules.system.dal.mysql.user.SysUserMapper; -import cn.iocoder.dashboard.modules.system.dal.redis.auth.SysLoginUserRedisDAO; -import cn.iocoder.dashboard.modules.system.enums.common.SysSexEnum; -import cn.iocoder.dashboard.modules.system.service.auth.impl.SysUserSessionServiceImpl; -import cn.iocoder.dashboard.modules.system.service.dept.impl.SysDeptServiceImpl; -import cn.iocoder.dashboard.modules.system.service.logger.impl.SysLoginLogServiceImpl; -import cn.iocoder.dashboard.modules.system.service.user.SysUserServiceImpl; +import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.auth.SysUserSessionDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.auth.SysUserSessionMapper; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.user.SysUserMapper; +import cn.iocoder.yudao.adminserver.modules.system.dal.redis.auth.SysLoginUserRedisDAO; +import cn.iocoder.yudao.adminserver.modules.system.enums.common.SysSexEnum; +import cn.iocoder.yudao.adminserver.modules.system.service.auth.impl.SysUserSessionServiceImpl; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.impl.SysDeptServiceImpl; +import cn.iocoder.yudao.adminserver.modules.system.service.logger.impl.SysLoginLogServiceImpl; +import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserServiceImpl; import cn.iocoder.yudao.framework.test.core.util.AssertUtils; import cn.iocoder.yudao.framework.test.core.util.RandomUtils; import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/common/SysCaptchaServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/common/SysCaptchaServiceTest.java new file mode 100644 index 0000000..c45ed4c --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/common/SysCaptchaServiceTest.java @@ -0,0 +1,66 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.common; + +import cn.iocoder.yudao.adminserver.BaseRedisUnitTest; +import cn.iocoder.yudao.adminserver.modules.system.framework.captcha.config.CaptchaProperties; +import cn.iocoder.yudao.adminserver.modules.system.controller.common.vo.SysCaptchaImageRespVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.redis.common.SysCaptchaRedisDAO; +import cn.iocoder.yudao.adminserver.modules.system.service.common.impl.SysCaptchaServiceImpl; +import org.junit.jupiter.api.Test; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString; +import static org.junit.jupiter.api.Assertions.*; + +@Import({SysCaptchaServiceImpl.class, CaptchaProperties.class, SysCaptchaRedisDAO.class}) +public class SysCaptchaServiceTest extends BaseRedisUnitTest { + + @Resource + private SysCaptchaServiceImpl captchaService; + + @Resource + private SysCaptchaRedisDAO captchaRedisDAO; + @Resource + private CaptchaProperties captchaProperties; + + @Test + public void testGetCaptchaImage() { + // 调用 + SysCaptchaImageRespVO respVO = captchaService.getCaptchaImage(); + // 断言 + assertNotNull(respVO.getUuid()); + assertNotNull(respVO.getImg()); + String captchaCode = captchaRedisDAO.get(respVO.getUuid()); + assertNotNull(captchaCode); + } + + @Test + public void testGetCaptchaCode() { + // 准备参数 + String uuid = randomString(); + String code = randomString(); + // mock 数据 + captchaRedisDAO.set(uuid, code, captchaProperties.getTimeout()); + + // 调用 + String resultCode = captchaService.getCaptchaCode(uuid); + // 断言 + assertEquals(code, resultCode); + } + + @Test + public void testDeleteCaptchaCode() { + // 准备参数 + String uuid = randomString(); + String code = randomString(); + // mock 数据 + captchaRedisDAO.set(uuid, code, captchaProperties.getTimeout()); + + // 调用 + captchaService.deleteCaptchaCode(uuid); + // 断言 + assertNull(captchaRedisDAO.get(uuid)); + } + +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/dept/SysDeptServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysDeptServiceTest.java index 4913f6a..076a5aa 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/dept/SysDeptServiceTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysDeptServiceTest.java @@ -1,15 +1,15 @@ -package cn.iocoder.dashboard.modules.system.service.dept; +package cn.iocoder.yudao.adminserver.modules.system.service.dept; -import cn.iocoder.dashboard.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.dept.SysDeptCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.dept.SysDeptListReqVO; -import cn.iocoder.dashboard.modules.system.controller.dept.vo.dept.SysDeptUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.dept.SysDeptMapper; -import cn.iocoder.dashboard.modules.system.enums.dept.DeptIdEnum; -import cn.iocoder.dashboard.modules.system.mq.producer.dept.SysDeptProducer; -import cn.iocoder.dashboard.modules.system.service.dept.impl.SysDeptServiceImpl; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptListReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.dept.SysDeptUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept.SysDeptMapper; +import cn.iocoder.yudao.adminserver.modules.system.enums.dept.DeptIdEnum; +import cn.iocoder.yudao.adminserver.modules.system.mq.producer.dept.SysDeptProducer; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.impl.SysDeptServiceImpl; import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; import com.google.common.collect.Multimap; @@ -25,7 +25,7 @@ import java.util.function.Consumer; import static cn.hutool.core.bean.BeanUtil.getFieldValue; import static cn.hutool.core.util.RandomUtil.randomEle; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysPostServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysPostServiceTest.java new file mode 100644 index 0000000..c036a7e --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dept/SysPostServiceTest.java @@ -0,0 +1,200 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.dept; + +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dept.vo.post.SysPostUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dept.SysPostMapper; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.impl.SysPostServiceImpl; +import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; +import org.junit.jupiter.api.Test; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; +import java.util.List; +import java.util.function.Consumer; + +import static cn.hutool.core.util.RandomUtil.randomEle; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; +import static org.junit.jupiter.api.Assertions.*; + +/** + * {@link SysPostServiceImpl} 的单元测试类 + * + * @author niudehua + */ +@Import(SysPostServiceImpl.class) +class SysPostServiceTest extends BaseDbUnitTest { + + @Resource + private SysPostServiceImpl postService; + @Resource + private SysPostMapper postMapper; + + @Test + void testPagePosts() { + // mock 数据 + SysPostDO postDO = randomPojo(SysPostDO.class, o -> { + o.setName("码仔"); + o.setStatus(CommonStatusEnum.ENABLE.getStatus()); + }); + postMapper.insert(postDO); + // 测试 name 不匹配 + postMapper.insert(ObjectUtils.clone(postDO, o -> o.setName("程序员"))); + // 测试 status 不匹配 + postMapper.insert(ObjectUtils.clone(postDO, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); + + // 准备参数 + SysPostPageReqVO reqVO = new SysPostPageReqVO(); + reqVO.setName("码"); + reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); + + // 调用 + PageResult pageResult = postService.getPostPage(reqVO); + + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(postDO, pageResult.getList().get(0)); + } + + @Test + void testListPosts() { + // mock 数据 + SysPostDO postDO = randomPojo(SysPostDO.class, o -> { + o.setName("码仔"); + o.setStatus(CommonStatusEnum.ENABLE.getStatus()); + }); + postMapper.insert(postDO); + // 测试 name 不匹配 + postMapper.insert(ObjectUtils.clone(postDO, o -> o.setName("程序员"))); + // 测试 status 不匹配 + postMapper.insert(ObjectUtils.clone(postDO, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); + // 准备参数 + SysPostExportReqVO reqVO = new SysPostExportReqVO(); + reqVO.setName("码"); + reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); + + // 调用 + List list = postService.getPosts(reqVO); + // 断言 + assertEquals(1, list.size()); + assertPojoEquals(postDO, list.get(0)); + } + + @Test + void testGetPost() { + // mock 数据 + SysPostDO dbPostDO = randomPostDO(); + postMapper.insert(dbPostDO); + // 准备参数 + Long id = dbPostDO.getId(); + // 调用 + SysPostDO post = postService.getPost(id); + // 断言 + assertNotNull(post); + assertPojoEquals(dbPostDO, post); + } + + @Test + void testCreatePost_success() { + // 准备参数 + SysPostCreateReqVO reqVO = randomPojo(SysPostCreateReqVO.class, + o -> o.setStatus(randomEle(CommonStatusEnum.values()).getStatus())); + // 调用 + Long postId = postService.createPost(reqVO); + // 断言 + assertNotNull(postId); + // 校验记录的属性是否正确 + SysPostDO post = postMapper.selectById(postId); + assertPojoEquals(reqVO, post); + } + + @Test + void testUpdatePost_success() { + // mock 数据 + SysPostDO postDO = randomPostDO(); + postMapper.insert(postDO);// @Sql: 先插入出一条存在的数据 + // 准备参数 + SysPostUpdateReqVO reqVO = randomPojo(SysPostUpdateReqVO.class, + o -> { + // 设置更新的 ID + o.setId(postDO.getId()); + o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); + }); + // 调用 + postService.updatePost(reqVO); + // 校验是否更新正确 + SysPostDO post = postMapper.selectById(reqVO.getId());// 获取最新的 + assertPojoEquals(reqVO, post); + } + + @Test + void testDeletePost_success() { + // mock 数据 + SysPostDO postDO = randomPostDO(); + postMapper.insert(postDO); + // 准备参数 + Long id = postDO.getId(); + // 调用 + postService.deletePost(id); + assertNull(postMapper.selectById(id)); + } + + @Test + void testCheckPost_notFoundForDelete() { + // 准备参数 + Long id = randomLongId(); + // 调用, 并断言异常 + assertServiceException(() -> postService.deletePost(id), POST_NOT_FOUND); + } + + @Test + void testCheckPost_nameDuplicateForCreate() { + // mock 数据 + SysPostDO postDO = randomPostDO(); + postMapper.insert(postDO);// @Sql: 先插入出一条存在的数据 + // 准备参数 + SysPostCreateReqVO reqVO = randomPojo(SysPostCreateReqVO.class, + // 模拟 name 重复 + o -> o.setName(postDO.getName())); + assertServiceException(() -> postService.createPost(reqVO), POST_NAME_DUPLICATE); + } + + @Test + void testCheckPost_codeDuplicateForUpdate() { + // mock 数据 + SysPostDO postDO = randomPostDO(); + postMapper.insert(postDO); + // mock 数据 稍后模拟重复它的 code + SysPostDO codePostDO = randomPostDO(); + postMapper.insert(codePostDO); + // 准备参数 + SysPostUpdateReqVO reqVO = randomPojo(SysPostUpdateReqVO.class, + o -> { + // 设置更新的 ID + o.setId(postDO.getId()); + // 模拟 code 重复 + o.setCode(codePostDO.getCode()); + }); + // 调用, 并断言异常 + assertServiceException(() -> postService.updatePost(reqVO), POST_CODE_DUPLICATE); + } + + @SafeVarargs + private static SysPostDO randomPostDO(Consumer... consumers) { + Consumer consumer = (o) -> { + o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 + }; + return randomPojo(SysPostDO.class, ArrayUtils.append(consumer, consumers)); + } +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/dict/SysDictDataServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictDataServiceTest.java index 1ed2bb2..ecb0093 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/dict/SysDictDataServiceTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictDataServiceTest.java @@ -1,17 +1,17 @@ -package cn.iocoder.dashboard.modules.system.service.dict; +package cn.iocoder.yudao.adminserver.modules.system.service.dict; -import cn.iocoder.dashboard.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataPageReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictDataDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictTypeDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.dict.SysDictDataMapper; -import cn.iocoder.dashboard.modules.system.mq.producer.dict.SysDictDataProducer; -import cn.iocoder.dashboard.modules.system.service.dict.impl.SysDictDataServiceImpl; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictDataDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dict.SysDictDataMapper; +import cn.iocoder.yudao.adminserver.modules.system.mq.producer.dict.SysDictDataProducer; +import cn.iocoder.yudao.adminserver.modules.system.service.dict.impl.SysDictDataServiceImpl; import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; import com.google.common.collect.ImmutableTable; @@ -25,7 +25,7 @@ import java.util.List; import java.util.function.Consumer; import static cn.hutool.core.bean.BeanUtil.getFieldValue; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/dict/SysDictTypeServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictTypeServiceTest.java index 5e9de95..212701d 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/dict/SysDictTypeServiceTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictTypeServiceTest.java @@ -1,15 +1,15 @@ -package cn.iocoder.dashboard.modules.system.service.dict; +package cn.iocoder.yudao.adminserver.modules.system.service.dict; -import cn.iocoder.dashboard.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypePageReqVO; -import cn.iocoder.dashboard.modules.system.controller.dict.vo.type.SysDictTypeUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dict.SysDictTypeDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.dict.SysDictTypeMapper; -import cn.iocoder.dashboard.modules.system.service.dict.impl.SysDictTypeServiceImpl; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.type.SysDictTypeUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dict.SysDictTypeMapper; +import cn.iocoder.yudao.adminserver.modules.system.service.dict.impl.SysDictTypeServiceImpl; import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; import org.junit.jupiter.api.Test; @@ -21,7 +21,7 @@ import java.util.List; import java.util.function.Consumer; import static cn.hutool.core.util.RandomUtil.randomEle; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/errorcode/SysErrorCodeServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/SysErrorCodeServiceTest.java index ee55185..f5dbc71 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/errorcode/SysErrorCodeServiceTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/errorcode/SysErrorCodeServiceTest.java @@ -1,17 +1,17 @@ -package cn.iocoder.dashboard.modules.system.service.errorcode; +package cn.iocoder.yudao.adminserver.modules.system.service.errorcode; -import cn.iocoder.dashboard.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.tool.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO; -import cn.iocoder.dashboard.modules.infra.enums.config.InfConfigTypeEnum; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodeCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodeExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodePageReqVO; -import cn.iocoder.dashboard.modules.system.controller.errorcode.vo.SysErrorCodeUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.errorcode.SysErrorCodeDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.errorcode.SysErrorCodeMapper; -import cn.iocoder.dashboard.modules.system.enums.errorcode.SysErrorCodeTypeEnum; -import cn.iocoder.dashboard.modules.system.service.errorcode.impl.SysErrorCodeServiceImpl; +import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.core.dto.ErrorCodeAutoGenerateReqDTO; +import cn.iocoder.yudao.adminserver.modules.infra.enums.config.InfConfigTypeEnum; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.errorcode.vo.SysErrorCodeUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.errorcode.SysErrorCodeDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.errorcode.SysErrorCodeMapper; +import cn.iocoder.yudao.adminserver.modules.system.enums.errorcode.SysErrorCodeTypeEnum; +import cn.iocoder.yudao.adminserver.modules.system.service.errorcode.impl.SysErrorCodeServiceImpl; import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; import org.assertj.core.util.Lists; @@ -25,8 +25,8 @@ import java.util.List; import java.util.function.Consumer; import static cn.hutool.core.util.RandomUtil.randomEle; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.ERROR_CODE_DUPLICATE; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.ERROR_CODE_NOT_EXISTS; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.ERROR_CODE_DUPLICATE; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.ERROR_CODE_NOT_EXISTS; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysLoginLogServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysLoginLogServiceImplTest.java new file mode 100644 index 0000000..d6a921f --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysLoginLogServiceImplTest.java @@ -0,0 +1,145 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.logger; + +import cn.hutool.core.util.RandomUtil; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysLoginLogDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger.SysLoginLogMapper; +import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeEnum; +import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum; +import cn.iocoder.yudao.adminserver.modules.system.service.logger.impl.SysLoginLogServiceImpl; +import cn.iocoder.yudao.framework.test.core.util.RandomUtils; +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; +import org.junit.jupiter.api.Test; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; +import java.util.List; + +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; +import static org.junit.jupiter.api.Assertions.assertEquals; + +@Import(SysLoginLogServiceImpl.class) +public class SysLoginLogServiceImplTest extends BaseDbUnitTest { + + @Resource + private SysLoginLogServiceImpl sysLoginLogService; + + @Resource + private SysLoginLogMapper loginLogMapper; + + @Test + public void testCreateLoginLog() { + String traceId = TracerUtils.getTraceId(); + SysLoginLogCreateReqVO reqVO = RandomUtils.randomPojo(SysLoginLogCreateReqVO.class, vo -> { + // 指定随机的范围,避免超出范围入库失败 + vo.setLogType(RandomUtil.randomEle(SysLoginLogTypeEnum.values()).getType()); + vo.setResult(RandomUtil.randomEle(SysLoginResultEnum.values()).getResult()); + // 使用TracerUtils生成的TraceId + vo.setTraceId(traceId); + }); + + // 执行service方法 + sysLoginLogService.createLoginLog(reqVO); + + // 断言,忽略基本字段 + SysLoginLogDO sysLoginLogDO = loginLogMapper.selectOne(null); + assertPojoEquals(reqVO, sysLoginLogDO); + } + + + @Test + public void testGetLoginLogPage() { + + // 构造测试数据 + + // 登录成功的 + SysLoginLogDO loginLogDO = RandomUtils.randomPojo(SysLoginLogDO.class, logDO -> { + logDO.setLogType(RandomUtil.randomEle(SysLoginLogTypeEnum.values()).getType()); + logDO.setTraceId(TracerUtils.getTraceId()); + + logDO.setUserIp("192.168.199.16"); + logDO.setUsername("wangkai"); + logDO.setCreateTime(buildTime(2021, 3, 6)); + logDO.setResult(SysLoginResultEnum.SUCCESS.getResult()); + }); + loginLogMapper.insert(loginLogDO); + + // 下面几个都是不匹配的数据 + // 登录失败的 + loginLogMapper.insert(ObjectUtils.clone(loginLogDO, logDO -> logDO.setResult(SysLoginResultEnum.CAPTCHA_CODE_ERROR.getResult()))); + // 不同ip段的 + loginLogMapper.insert(ObjectUtils.clone(loginLogDO, logDO -> logDO.setUserIp("192.168.128.18"))); + // 不同username + loginLogMapper.insert(ObjectUtils.clone(loginLogDO, logDO -> logDO.setUsername("yunai"))); + // 构造一个早期时间 2021-02-06 00:00:00 + loginLogMapper.insert(ObjectUtils.clone(loginLogDO, logDO -> logDO.setCreateTime(buildTime(2021, 2, 6)))); + + + // 构造调用参数 + SysLoginLogPageReqVO reqVO = new SysLoginLogPageReqVO(); + reqVO.setUsername("wangkai"); + reqVO.setUserIp("192.168.199"); + reqVO.setStatus(true); + reqVO.setBeginTime(buildTime(2021, 3, 5)); + reqVO.setEndTime(buildTime(2021, 3, 7)); + + // 调用service方法 + PageResult pageResult = sysLoginLogService.getLoginLogPage(reqVO); + + // 断言,只查到了一条符合条件的 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(loginLogDO, pageResult.getList().get(0)); + } + + @Test + public void testGetLoginLogList() { + + // 构造测试数据 + + // 登录成功的 + SysLoginLogDO loginLogDO = RandomUtils.randomPojo(SysLoginLogDO.class, logDO -> { + logDO.setLogType(RandomUtil.randomEle(SysLoginLogTypeEnum.values()).getType()); + logDO.setTraceId(TracerUtils.getTraceId()); + + logDO.setUserIp("192.168.111.16"); + logDO.setUsername("wangxiaokai"); + logDO.setCreateTime(buildTime(2021, 3, 6)); + logDO.setResult(SysLoginResultEnum.SUCCESS.getResult()); + }); + loginLogMapper.insert(loginLogDO); + + // 下面几个都是不匹配的数据 + // 登录失败的 + loginLogMapper.insert(ObjectUtils.clone(loginLogDO, logDO -> logDO.setResult(SysLoginResultEnum.CAPTCHA_CODE_ERROR.getResult()))); + // 不同ip段的 + loginLogMapper.insert(ObjectUtils.clone(loginLogDO, logDO -> logDO.setUserIp("192.168.128.18"))); + // 不同username + loginLogMapper.insert(ObjectUtils.clone(loginLogDO, logDO -> logDO.setUsername("yunai"))); + // 构造一个早期时间 2021-02-06 00:00:00 + loginLogMapper.insert(ObjectUtils.clone(loginLogDO, logDO -> logDO.setCreateTime(buildTime(2021, 2, 6)))); + + + // 构造调用参数 + SysLoginLogExportReqVO reqVO = new SysLoginLogExportReqVO(); + reqVO.setUsername("wangxiaokai"); + reqVO.setUserIp("192.168.111"); + reqVO.setStatus(true); + reqVO.setBeginTime(buildTime(2021, 3, 5)); + reqVO.setEndTime(buildTime(2021, 3, 7)); + + + // 调用service方法 + List loginLogList = sysLoginLogService.getLoginLogList(reqVO); + + // 断言 + assertEquals(1, loginLogList.size()); + assertPojoEquals(loginLogDO, loginLogList.get(0)); + } +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysOperateLogServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysOperateLogServiceImplTest.java new file mode 100644 index 0000000..48cc4c5 --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysOperateLogServiceImplTest.java @@ -0,0 +1,166 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.logger; + +import cn.hutool.core.map.MapUtil; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum; +import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; +import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger.SysOperateLogMapper; +import cn.iocoder.yudao.adminserver.modules.system.enums.common.SysSexEnum; +import cn.iocoder.yudao.adminserver.modules.system.service.logger.impl.SysOperateLogServiceImpl; +import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService; +import cn.iocoder.yudao.framework.test.core.util.RandomUtils; +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; +import java.util.*; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; + +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.when; + +@Import({SysOperateLogServiceImpl.class}) +public class SysOperateLogServiceImplTest extends BaseDbUnitTest { + + @Resource + private SysOperateLogService operateLogServiceImpl; + + @Resource + private SysOperateLogMapper operateLogMapper; + + @MockBean + private SysUserService userService; + + @Test + public void testCreateOperateLogAsync() throws InterruptedException, ExecutionException { + String traceId = TracerUtils.getTraceId(); + OperateLogCreateReqDTO reqVO = RandomUtils.randomPojo(OperateLogCreateReqDTO.class, o -> { + o.setTraceId(traceId); + o.setUserId(randomLongId()); + o.setExts(MapUtil.builder("orderId", randomLongId()).build()); + }); + + // 执行service方法 + Future future = operateLogServiceImpl.createOperateLogAsync(reqVO); + future.get(); + // 断言插入是否正确 + SysOperateLogDO sysOperateLogDO = operateLogMapper.selectOne("trace_id", traceId); + assertPojoEquals(reqVO, sysOperateLogDO); + } + + @Test + public void testGetOperateLogPage() { + // 构造测试数据 + // 先构造用户 + SysUserDO user = RandomUtils.randomPojo(SysUserDO.class, o -> { + o.setNickname("wangkai"); + o.setSex(SysSexEnum.MALE.getSex()); + o.setStatus(CommonStatusEnum.ENABLE.getStatus()); + }); + when(userService.getUsersByNickname("wangkai")).thenReturn(Collections.singletonList(user)); + Long userId = user.getId(); + // 构造操作日志 + SysOperateLogDO sysOperateLogDO = RandomUtils.randomPojo(SysOperateLogDO.class, o -> { + o.setUserId(userId); + o.setModule("order"); + o.setType(OperateTypeEnum.CREATE.getType()); + o.setStartTime(buildTime(2021, 3, 6)); + o.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode()); + o.setExts(MapUtil.builder("orderId", randomLongId()).build()); + }); + operateLogMapper.insert(sysOperateLogDO); + + // 下面几个是不匹配的数据 + // 随机 userId + operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setUserId(userId + 1))); + // module 不同 + operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setModule("user"))); + // type 不同 + operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setType(OperateTypeEnum.IMPORT.getType()))); + // createTime 不同 + operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setStartTime(buildTime(2021, 2, 6)))); + // resultCode 不同 + operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setResultCode(GlobalErrorCodeConstants.BAD_REQUEST.getCode()))); + + // 构造调用参数 + SysOperateLogPageReqVO reqVO = new SysOperateLogPageReqVO(); + reqVO.setUserNickname("wangkai"); + reqVO.setModule("order"); + reqVO.setType(OperateTypeEnum.CREATE.getType()); + reqVO.setBeginTime(buildTime(2021, 3, 5)); + reqVO.setEndTime(buildTime(2021, 3, 7)); + reqVO.setSuccess(true); + + // 调用service方法 + PageResult pageResult = operateLogServiceImpl.getOperateLogPage(reqVO); + // 断言,只查到了一条符合条件的 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(sysOperateLogDO, pageResult.getList().get(0)); + } + + @Test + public void testGetOperateLogs() { + // 构造测试数据 + // 先构造用户 + SysUserDO user = RandomUtils.randomPojo(SysUserDO.class, o -> { + o.setNickname("wangkai"); + o.setSex(SysSexEnum.MALE.getSex()); + o.setStatus(CommonStatusEnum.ENABLE.getStatus()); + }); + when(userService.getUsersByNickname("wangkai")).thenReturn(Collections.singletonList(user)); + Long userId = user.getId(); + // 构造操作日志 + SysOperateLogDO sysOperateLogDO = RandomUtils.randomPojo(SysOperateLogDO.class, o -> { + o.setUserId(userId); + o.setModule("order"); + o.setType(OperateTypeEnum.CREATE.getType()); + o.setStartTime(buildTime(2021, 3, 6)); + o.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode()); + o.setExts(MapUtil.builder("orderId", randomLongId()).build()); + }); + operateLogMapper.insert(sysOperateLogDO); + + // 下面几个是不匹配的数据 + // 随机 userId + operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setUserId(userId + 1))); + // module 不同 + operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setModule("user"))); + // type 不同 + operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setType(OperateTypeEnum.IMPORT.getType()))); + // createTime 不同 + operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setStartTime(buildTime(2021, 2, 6)))); + // resultCode 不同 + operateLogMapper.insert(ObjectUtils.clone(sysOperateLogDO, logDO -> logDO.setResultCode(GlobalErrorCodeConstants.BAD_REQUEST.getCode()))); + + // 构造调用参数 + SysOperateLogExportReqVO reqVO = new SysOperateLogExportReqVO(); + reqVO.setUserNickname("wangkai"); + reqVO.setModule("order"); + reqVO.setType(OperateTypeEnum.CREATE.getType()); + reqVO.setBeginTime(buildTime(2021, 3, 5)); + reqVO.setEndTime(buildTime(2021, 3, 7)); + reqVO.setSuccess(true); + + // 调用 service 方法 + List list = operateLogServiceImpl.getOperateLogs(reqVO); + // 断言,只查到了一条符合条件的 + assertEquals(1, list.size()); + assertPojoEquals(sysOperateLogDO, list.get(0)); + } + +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/SysNoticeServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/SysNoticeServiceImplTest.java new file mode 100644 index 0000000..9b66262 --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/notice/SysNoticeServiceImplTest.java @@ -0,0 +1,164 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.notice; + +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.notice.vo.SysNoticeUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.notice.SysNoticeDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.notice.SysNoticeMapper; +import cn.iocoder.yudao.adminserver.modules.system.enums.notice.SysNoticeTypeEnum; +import cn.iocoder.yudao.adminserver.modules.system.service.notice.impl.SysNoticeServiceImpl; +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; +import org.junit.jupiter.api.Test; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; + +import java.util.function.Consumer; + +import static cn.hutool.core.util.RandomUtil.randomEle; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.NOTICE_NOT_FOUND; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; +import static org.junit.jupiter.api.Assertions.*; + +@Import(SysNoticeServiceImpl.class) +class SysNoticeServiceImplTest extends BaseDbUnitTest { + + @Resource + private SysNoticeServiceImpl sysNoticeService; + + @Resource + private SysNoticeMapper sysNoticeMapper; + + @Test + public void testPageNotices_success() { + // 插入前置数据 + SysNoticeDO dbNotice = randomPojo(SysNoticeDO.class, o -> { + o.setTitle("尼古拉斯赵四来啦!"); + o.setStatus(CommonStatusEnum.ENABLE.getStatus()); + o.setType(randomEle(SysNoticeTypeEnum.values()).getType()); + }); + sysNoticeMapper.insert(dbNotice); + + // 测试 title 不匹配 + sysNoticeMapper.insert(ObjectUtils.clone(dbNotice, o -> o.setTitle("尼古拉斯凯奇也来啦!"))); + // 测试 status 不匹配 + sysNoticeMapper.insert(ObjectUtils.clone(dbNotice, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); + + + // 查询 + SysNoticePageReqVO reqVO = new SysNoticePageReqVO(); + reqVO.setTitle("尼古拉斯赵四来啦!"); + reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); + PageResult pageResult = sysNoticeService.pageNotices(reqVO); + + // 验证查询结果经过筛选 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbNotice, pageResult.getList().get(0)); + + } + + @Test + public void testGetNotice_success() { + // 插入前置数据 + SysNoticeDO dbNotice = randomSysNoticeDO(); + sysNoticeMapper.insert(dbNotice); + + // 查询 + SysNoticeDO notice = sysNoticeService.getNotice(dbNotice.getId()); + + // 验证插入与读取对象是否一致 + assertNotNull(notice); + assertPojoEquals(dbNotice, notice); + } + + @Test + public void testCreateNotice_success() { + // 准备参数 + SysNoticeCreateReqVO reqVO = randomSysNoticeCreateReqVO(); + + // 校验插入是否成功 + Long noticeId = sysNoticeService.createNotice(reqVO); + assertNotNull(noticeId); + + // 校验插入属性是否正确 + SysNoticeDO notice = sysNoticeMapper.selectById(noticeId); + assertPojoEquals(reqVO, notice); + } + + @Test + public void testUpdateNotice_success() { + // 插入前置数据 + SysNoticeDO dbNoticeDO = randomSysNoticeDO(); + sysNoticeMapper.insert(dbNoticeDO); + + // 准备更新参数 + SysNoticeUpdateReqVO reqVO = randomSysNoticeUpdateReqVO(o -> o.setId(dbNoticeDO.getId())); + + // 更新 + sysNoticeService.updateNotice(reqVO); + + // 检验是否更新成功 + SysNoticeDO notice = sysNoticeMapper.selectById(reqVO.getId()); + assertPojoEquals(reqVO, notice); + } + + @Test + public void testDeleteNotice_success() { + // 插入前置数据 + SysNoticeDO dbNotice = randomSysNoticeDO(); + sysNoticeMapper.insert(dbNotice); + + // 删除 + sysNoticeService.deleteNotice(dbNotice.getId()); + + // 检查是否删除成功 + assertNull(sysNoticeMapper.selectById(dbNotice.getId())); + } + + @Test + public void checkNoticeExists_success() { + // 插入前置数据 + SysNoticeDO dbNotice = randomSysNoticeDO(); + sysNoticeMapper.insert(dbNotice); + + // 成功调用 + sysNoticeService.checkNoticeExists(dbNotice.getId()); + } + + @Test + public void checkNoticeExists_noExists() { + assertServiceException(() -> sysNoticeService.checkNoticeExists(randomLongId()), NOTICE_NOT_FOUND); + } + + @SafeVarargs + private static SysNoticeDO randomSysNoticeDO(Consumer... consumers) { + SysNoticeDO notice = randomPojo(SysNoticeDO.class, consumers); + notice.setType(randomEle(SysNoticeTypeEnum.values()).getType()); + notice.setStatus(CommonStatusEnum.ENABLE.getStatus()); + return notice; + } + + @SafeVarargs + private static SysNoticeUpdateReqVO randomSysNoticeUpdateReqVO(Consumer... consumers) { + SysNoticeUpdateReqVO reqVO = randomPojo(SysNoticeUpdateReqVO.class, consumers); + reqVO.setType(randomEle(SysNoticeTypeEnum.values()).getType()); + reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); + return reqVO; + } + + private static SysNoticeCreateReqVO randomSysNoticeCreateReqVO() { + SysNoticeCreateReqVO reqVO = randomPojo(SysNoticeCreateReqVO.class); + reqVO.setType(randomEle(SysNoticeTypeEnum.values()).getType()); + reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); + return reqVO; + } + + +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/permission/SysMenuServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysMenuServiceTest.java index deda173..81dcfd7 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/permission/SysMenuServiceTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysMenuServiceTest.java @@ -1,17 +1,17 @@ -package cn.iocoder.dashboard.modules.system.service.permission; +package cn.iocoder.yudao.adminserver.modules.system.service.permission; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.lang.Assert; -import cn.iocoder.dashboard.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.menu.SysMenuCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.menu.SysMenuListReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.menu.SysMenuUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysMenuDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.permission.SysMenuMapper; -import cn.iocoder.dashboard.modules.system.enums.permission.MenuTypeEnum; -import cn.iocoder.dashboard.modules.system.mq.producer.permission.SysMenuProducer; -import cn.iocoder.dashboard.modules.system.service.permission.impl.SysMenuServiceImpl; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuListReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.menu.SysMenuUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysMenuMapper; +import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuTypeEnum; +import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysMenuProducer; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.impl.SysMenuServiceImpl; import cn.iocoder.yudao.framework.common.util.sping.SpringAopUtils; import cn.iocoder.yudao.framework.test.core.util.RandomUtils; import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; @@ -24,7 +24,7 @@ import org.springframework.context.annotation.Import; import javax.annotation.Resource; import java.util.*; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysPermissionServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysPermissionServiceTest.java new file mode 100644 index 0000000..f00e162 --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysPermissionServiceTest.java @@ -0,0 +1,109 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.permission; + +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleMenuDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysUserRoleDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysRoleMenuMapper; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysUserRoleMapper; +import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysPermissionProducer; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.impl.SysPermissionServiceImpl; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; +import java.util.List; + +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.verify; + +@Import(SysPermissionServiceImpl.class) +public class SysPermissionServiceTest extends BaseDbUnitTest { + + @Resource + private SysPermissionServiceImpl permissionService; + + @Resource + private SysRoleMenuMapper roleMenuMapper; + @Resource + private SysUserRoleMapper userRoleMapper; + + @MockBean + private SysRoleService roleService; + @MockBean + private SysMenuService menuService; + + @MockBean + private SysPermissionProducer permissionProducer; + + @Test + public void testProcessRoleDeleted() { + // 准备参数 + Long roleId = randomLongId(); + // mock 数据 UserRole + SysUserRoleDO userRoleDO01 = randomPojo(SysUserRoleDO.class, o -> o.setRoleId(roleId)); // 被删除 + userRoleMapper.insert(userRoleDO01); + SysUserRoleDO userRoleDO02 = randomPojo(SysUserRoleDO.class); // 不被删除 + userRoleMapper.insert(userRoleDO02); + // mock 数据 RoleMenu + SysRoleMenuDO roleMenuDO01 = randomPojo(SysRoleMenuDO.class, o -> o.setRoleId(roleId)); // 被删除 + roleMenuMapper.insert(roleMenuDO01); + SysRoleMenuDO roleMenuDO02 = randomPojo(SysRoleMenuDO.class); // 不被删除 + roleMenuMapper.insert(roleMenuDO02); + + // 调用 + permissionService.processRoleDeleted(roleId); + // 断言数据 RoleMenuDO + List dbRoleMenus = roleMenuMapper.selectList(); + assertEquals(1, dbRoleMenus.size()); + assertPojoEquals(dbRoleMenus.get(0), roleMenuDO02); + // 断言数据 UserRoleDO + List dbUserRoles = userRoleMapper.selectList(); + assertEquals(1, dbUserRoles.size()); + assertPojoEquals(dbUserRoles.get(0), userRoleDO02); + // 断言调用 + verify(permissionProducer).sendRoleMenuRefreshMessage(); + } + + @Test + public void testProcessMenuDeleted() { + // 准备参数 + Long menuId = randomLongId(); + // mock 数据 + SysRoleMenuDO roleMenuDO01 = randomPojo(SysRoleMenuDO.class, o -> o.setMenuId(menuId)); // 被删除 + roleMenuMapper.insert(roleMenuDO01); + SysRoleMenuDO roleMenuDO02 = randomPojo(SysRoleMenuDO.class); // 不被删除 + roleMenuMapper.insert(roleMenuDO02); + + // 调用 + permissionService.processMenuDeleted(menuId); + // 断言数据 + List dbRoleMenus = roleMenuMapper.selectList(); + assertEquals(1, dbRoleMenus.size()); + assertPojoEquals(dbRoleMenus.get(0), roleMenuDO02); + // 断言调用 + verify(permissionProducer).sendRoleMenuRefreshMessage(); + } + + @Test + public void testProcessUserDeleted() { + // 准备参数 + Long userId = randomLongId(); + // mock 数据 + SysUserRoleDO userRoleDO01 = randomPojo(SysUserRoleDO.class, o -> o.setUserId(userId)); // 被删除 + userRoleMapper.insert(userRoleDO01); + SysUserRoleDO userRoleDO02 = randomPojo(SysUserRoleDO.class); // 不被删除 + userRoleMapper.insert(userRoleDO02); + + // 调用 + permissionService.processUserDeleted(userId); + // 断言数据 + List dbUserRoles = userRoleMapper.selectList(); + assertEquals(1, dbUserRoles.size()); + assertPojoEquals(dbUserRoles.get(0), userRoleDO02); + } + +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/permission/SysRoleServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysRoleServiceTest.java index 41696df..3943268 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/permission/SysRoleServiceTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/permission/SysRoleServiceTest.java @@ -1,18 +1,18 @@ -package cn.iocoder.dashboard.modules.system.service.permission; +package cn.iocoder.yudao.adminserver.modules.system.service.permission; import cn.hutool.core.bean.BeanUtil; -import cn.iocoder.dashboard.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.security.core.enums.DataScopeEnum; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRolePageReqVO; -import cn.iocoder.dashboard.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysRoleDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.permission.SysRoleMapper; -import cn.iocoder.dashboard.modules.system.enums.permission.SysRoleTypeEnum; -import cn.iocoder.dashboard.modules.system.mq.producer.permission.SysRoleProducer; -import cn.iocoder.dashboard.modules.system.service.permission.impl.SysRoleServiceImpl; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRolePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.permission.vo.role.SysRoleUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.permission.SysRoleMapper; +import cn.iocoder.yudao.adminserver.modules.system.enums.permission.SysRoleTypeEnum; +import cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission.SysRoleProducer; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.impl.SysRoleServiceImpl; import cn.iocoder.yudao.framework.common.util.sping.SpringAopUtils; import org.junit.jupiter.api.Test; import org.springframework.boot.test.mock.mockito.MockBean; @@ -22,7 +22,7 @@ import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.max; diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsChannelServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsChannelServiceTest.java new file mode 100644 index 0000000..76337aa --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsChannelServiceTest.java @@ -0,0 +1,202 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.sms; + +import cn.hutool.core.bean.BeanUtil; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsChannelDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms.SysSmsChannelMapper; +import cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms.SysSmsProducer; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsChannelServiceImpl; +import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.function.Consumer; + +import static cn.hutool.core.util.RandomUtil.randomEle; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.SMS_CHANNEL_HAS_CHILDREN; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.SMS_CHANNEL_NOT_EXISTS; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.max; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.*; + +/** +* {@link SysSmsChannelServiceImpl} 的单元测试类 +* +* @author 芋道源码 +*/ +@Import(SysSmsChannelServiceImpl.class) +public class SysSmsChannelServiceTest extends BaseDbUnitTest { + + @Resource + private SysSmsChannelServiceImpl smsChannelService; + + @Resource + private SysSmsChannelMapper smsChannelMapper; + + @MockBean + private SmsClientFactory smsClientFactory; + @MockBean + private SysSmsTemplateService smsTemplateService; + @MockBean + private SysSmsProducer smsProducer; + + @Test + public void testInitLocalCache_success() { + // mock 数据 + SysSmsChannelDO smsChannelDO01 = randomSmsChannelDO(); + smsChannelMapper.insert(smsChannelDO01); + SysSmsChannelDO smsChannelDO02 = randomSmsChannelDO(); + smsChannelMapper.insert(smsChannelDO02); + + // 调用 + smsChannelService.initSmsClients(); + // 校验 maxUpdateTime 属性 + Date maxUpdateTime = (Date) BeanUtil.getFieldValue(smsChannelService, "maxUpdateTime"); + assertEquals(max(smsChannelDO01.getUpdateTime(), smsChannelDO02.getUpdateTime()), maxUpdateTime); + // 校验调用 + verify(smsClientFactory, times(1)).createOrUpdateSmsClient( + argThat(properties -> isPojoEquals(smsChannelDO01, properties))); + verify(smsClientFactory, times(1)).createOrUpdateSmsClient( + argThat(properties -> isPojoEquals(smsChannelDO02, properties))); + } + + @Test + public void testCreateSmsChannel_success() { + // 准备参数 + SysSmsChannelCreateReqVO reqVO = randomPojo(SysSmsChannelCreateReqVO.class, o -> o.setStatus(randomCommonStatus())); + + // 调用 + Long smsChannelId = smsChannelService.createSmsChannel(reqVO); + // 断言 + assertNotNull(smsChannelId); + // 校验记录的属性是否正确 + SysSmsChannelDO smsChannel = smsChannelMapper.selectById(smsChannelId); + assertPojoEquals(reqVO, smsChannel); + // 校验调用 + verify(smsProducer, times(1)).sendSmsChannelRefreshMessage(); + } + + @Test + public void testUpdateSmsChannel_success() { + // mock 数据 + SysSmsChannelDO dbSmsChannel = randomSmsChannelDO(); + smsChannelMapper.insert(dbSmsChannel);// @Sql: 先插入出一条存在的数据 + // 准备参数 + SysSmsChannelUpdateReqVO reqVO = randomPojo(SysSmsChannelUpdateReqVO.class, o -> { + o.setId(dbSmsChannel.getId()); // 设置更新的 ID + o.setStatus(randomCommonStatus()); + o.setCallbackUrl(randomString()); + }); + + // 调用 + smsChannelService.updateSmsChannel(reqVO); + // 校验是否更新正确 + SysSmsChannelDO smsChannel = smsChannelMapper.selectById(reqVO.getId()); // 获取最新的 + assertPojoEquals(reqVO, smsChannel); + // 校验调用 + verify(smsProducer, times(1)).sendSmsChannelRefreshMessage(); + } + + @Test + public void testUpdateSmsChannel_notExists() { + // 准备参数 + SysSmsChannelUpdateReqVO reqVO = randomPojo(SysSmsChannelUpdateReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> smsChannelService.updateSmsChannel(reqVO), SMS_CHANNEL_NOT_EXISTS); + } + + @Test + public void testDeleteSmsChannel_success() { + // mock 数据 + SysSmsChannelDO dbSmsChannel = randomSmsChannelDO(); + smsChannelMapper.insert(dbSmsChannel);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbSmsChannel.getId(); + + // 调用 + smsChannelService.deleteSmsChannel(id); + // 校验数据不存在了 + assertNull(smsChannelMapper.selectById(id)); + // 校验调用 + verify(smsProducer, times(1)).sendSmsChannelRefreshMessage(); + } + + @Test + public void testDeleteSmsChannel_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> smsChannelService.deleteSmsChannel(id), SMS_CHANNEL_NOT_EXISTS); + } + + @Test + public void testDeleteSmsChannel_hasChildren() { + // mock 数据 + SysSmsChannelDO dbSmsChannel = randomSmsChannelDO(); + smsChannelMapper.insert(dbSmsChannel);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbSmsChannel.getId(); + // mock 方法 + when(smsTemplateService.countByChannelId(eq(id))).thenReturn(10); + + // 调用, 并断言异常 + assertServiceException(() -> smsChannelService.deleteSmsChannel(id), SMS_CHANNEL_HAS_CHILDREN); + } + + @Test + public void testGetSmsChannelPage() { + // mock 数据 + SysSmsChannelDO dbSmsChannel = randomPojo(SysSmsChannelDO.class, o -> { // 等会查询到 + o.setSignature("芋道源码"); + o.setStatus(CommonStatusEnum.ENABLE.getStatus()); + o.setCreateTime(buildTime(2020, 12, 12)); + }); + smsChannelMapper.insert(dbSmsChannel); + // 测试 signature 不匹配 + smsChannelMapper.insert(ObjectUtils.clone(dbSmsChannel, o -> o.setSignature("源码"))); + // 测试 status 不匹配 + smsChannelMapper.insert(ObjectUtils.clone(dbSmsChannel, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); + // 测试 createTime 不匹配 + smsChannelMapper.insert(ObjectUtils.clone(dbSmsChannel, o -> o.setCreateTime(buildTime(2020, 11, 11)))); + // 准备参数 + SysSmsChannelPageReqVO reqVO = new SysSmsChannelPageReqVO(); + reqVO.setSignature("芋道"); + reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); + reqVO.setBeginCreateTime(buildTime(2020, 12, 1)); + reqVO.setEndCreateTime(buildTime(2020, 12, 24)); + + // 调用 + PageResult pageResult = smsChannelService.getSmsChannelPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbSmsChannel, pageResult.getList().get(0)); + } + + // ========== 随机对象 ========== + + @SafeVarargs + private static SysSmsChannelDO randomSmsChannelDO(Consumer... consumers) { + Consumer consumer = (o) -> { + o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 + }; + return randomPojo(SysSmsChannelDO.class, ArrayUtils.append(consumer, consumers)); + } + +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsLogServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsLogServiceTest.java index aa59bf5..4ea3745 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsLogServiceTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsLogServiceTest.java @@ -1,19 +1,19 @@ -package cn.iocoder.dashboard.modules.system.service.sms; +package cn.iocoder.yudao.adminserver.modules.system.service.sms; import cn.hutool.core.map.MapUtil; -import cn.iocoder.dashboard.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsLogDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsLogMapper; -import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsReceiveStatusEnum; -import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsSendStatusEnum; -import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsTemplateTypeEnum; -import cn.iocoder.dashboard.modules.system.service.sms.impl.SysSmsLogServiceImpl; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsLogDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms.SysSmsLogMapper; +import cn.iocoder.yudao.adminserver.modules.system.enums.sms.SysSmsReceiveStatusEnum; +import cn.iocoder.yudao.adminserver.modules.system.enums.sms.SysSmsSendStatusEnum; +import cn.iocoder.yudao.adminserver.modules.system.enums.sms.SysSmsTemplateTypeEnum; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsLogServiceImpl; import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; import org.junit.jupiter.api.Test; diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsServiceTest.java new file mode 100644 index 0000000..2a25125 --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsServiceTest.java @@ -0,0 +1,201 @@ +package cn.iocoder.yudao.adminserver.modules.system.service.sms; + +import cn.hutool.core.map.MapUtil; +import cn.iocoder.yudao.adminserver.BaseMockitoUnitTest; +import cn.iocoder.yudao.framework.common.core.KeyValue; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.sms.core.client.SmsClient; +import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; +import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult; +import cn.iocoder.yudao.framework.sms.core.client.dto.SmsReceiveRespDTO; +import cn.iocoder.yudao.framework.sms.core.client.dto.SmsSendRespDTO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO; +import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsSendMessage; +import cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms.SysSmsProducer; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsServiceImpl; +import org.assertj.core.util.Lists; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static cn.hutool.core.util.RandomUtil.randomEle; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.*; + +/** + * {@link SysSmsServiceImpl} 的单元测试类 + * + * @author 芋道源码 + */ +public class SysSmsServiceTest extends BaseMockitoUnitTest { + + @InjectMocks + private SysSmsServiceImpl smsService; + + @Mock + private SysSmsTemplateService smsTemplateService; + @Mock + private SysSmsLogService smsLogService; + @Mock + private SysSmsProducer smsProducer; + @Mock + private SmsClientFactory smsClientFactory; + + /** + * 发送成功,当短信模板开启时 + */ + @Test + public void testSendSingleSms_successWhenSmsTemplateEnable() { + // 准备参数 + String mobile = randomString(); + Long userId = randomLongId(); + Integer userType = randomEle(UserTypeEnum.values()).getValue(); + String templateCode = randomString(); + Map templateParams = MapUtil.builder().put("code", "1234") + .put("op", "login").build(); + // mock SmsTemplateService 的方法 + SysSmsTemplateDO template = randomPojo(SysSmsTemplateDO.class, o -> { + o.setStatus(CommonStatusEnum.ENABLE.getStatus()); + o.setContent("验证码为{code}, 操作为{op}"); + o.setParams(Lists.newArrayList("code", "op")); + }); + when(smsTemplateService.getSmsTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); + String content = randomString(); + when(smsTemplateService.formatSmsTemplateContent(eq(template.getContent()), eq(templateParams))) + .thenReturn(content); + // mock SmsLogService 的方法 + Long smsLogId = randomLongId(); + when(smsLogService.createSmsLog(eq(mobile), eq(userId), eq(userType), eq(Boolean.TRUE), eq(template), + eq(content), eq(templateParams))).thenReturn(smsLogId); + + // 调用 + Long resultSmsLogId = smsService.sendSingleSms(mobile, userId, userType, templateCode, templateParams); + // 断言 + assertEquals(smsLogId, resultSmsLogId); + // 断言调用 + verify(smsProducer, times(1)).sendSmsSendMessage(eq(smsLogId), eq(mobile), + eq(template.getChannelId()), eq(template.getApiTemplateId()), + eq(Lists.newArrayList(new KeyValue<>("code", "1234"), new KeyValue<>("op", "login")))); + } + + /** + * 发送成功,当短信模板关闭时 + */ + @Test + public void testSendSingleSms_successWhenSmsTemplateDisable() { + // 准备参数 + String mobile = randomString(); + Long userId = randomLongId(); + Integer userType = randomEle(UserTypeEnum.values()).getValue(); + String templateCode = randomString(); + Map templateParams = MapUtil.builder().put("code", "1234") + .put("op", "login").build(); + // mock SmsTemplateService 的方法 + SysSmsTemplateDO template = randomPojo(SysSmsTemplateDO.class, o -> { + o.setStatus(CommonStatusEnum.DISABLE.getStatus()); + o.setContent("验证码为{code}, 操作为{op}"); + o.setParams(Lists.newArrayList("code", "op")); + }); + when(smsTemplateService.getSmsTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); + String content = randomString(); + when(smsTemplateService.formatSmsTemplateContent(eq(template.getContent()), eq(templateParams))) + .thenReturn(content); + // mock SmsLogService 的方法 + Long smsLogId = randomLongId(); + when(smsLogService.createSmsLog(eq(mobile), eq(userId), eq(userType), eq(Boolean.FALSE), eq(template), + eq(content), eq(templateParams))).thenReturn(smsLogId); + + // 调用 + Long resultSmsLogId = smsService.sendSingleSms(mobile, userId, userType, templateCode, templateParams); + // 断言 + assertEquals(smsLogId, resultSmsLogId); + // 断言调用 + verify(smsProducer, times(0)).sendSmsSendMessage(anyLong(), anyString(), + anyLong(), any(), anyList()); + } + + @Test + public void testCheckSmsTemplateValid_notExists() { + // 准备参数 + String templateCode = randomString(); + // mock 方法 + + // 调用,并断言异常 + assertServiceException(() -> smsService.checkSmsTemplateValid(templateCode), + SMS_TEMPLATE_NOT_EXISTS); + } + + @Test + public void testBuildTemplateParams_paramMiss() { + // 准备参数 + SysSmsTemplateDO template = randomPojo(SysSmsTemplateDO.class, + o -> o.setParams(Lists.newArrayList("code"))); + Map templateParams = new HashMap<>(); + // mock 方法 + + // 调用,并断言异常 + assertServiceException(() -> smsService.buildTemplateParams(template, templateParams), + SMS_SEND_MOBILE_TEMPLATE_PARAM_MISS, "code"); + } + + @Test + public void testCheckMobile_notExists() { + // 准备参数 + // mock 方法 + + // 调用,并断言异常 + assertServiceException(() -> smsService.checkMobile(null), + SMS_SEND_MOBILE_NOT_EXISTS); + } + + @Test + @SuppressWarnings("unchecked") + public void testDoSendSms() { + // 准备参数 + SysSmsSendMessage message = randomPojo(SysSmsSendMessage.class); + // mock SmsClientFactory 的方法 + SmsClient smsClient = spy(SmsClient.class); + when(smsClientFactory.getSmsClient(eq(message.getChannelId()))).thenReturn(smsClient); + // mock SmsClient 的方法 + SmsCommonResult sendResult = randomPojo(SmsCommonResult.class, SmsSendRespDTO.class); + when(smsClient.sendSms(eq(message.getLogId()), eq(message.getMobile()), eq(message.getApiTemplateId()), + eq(message.getTemplateParams()))).thenReturn(sendResult); + + // 调用 + smsService.doSendSms(message); + // 断言 + verify(smsLogService, times(1)).updateSmsSendResult(eq(message.getLogId()), + eq(sendResult.getCode()), eq(sendResult.getMsg()), eq(sendResult.getApiCode()), + eq(sendResult.getApiMsg()), eq(sendResult.getApiRequestId()), eq(sendResult.getData().getSerialNo())); + } + + @Test + public void testReceiveSmsStatus() throws Throwable { + // 准备参数 + String channelCode = randomString(); + String text = randomString(); + // mock SmsClientFactory 的方法 + SmsClient smsClient = spy(SmsClient.class); + when(smsClientFactory.getSmsClient(eq(channelCode))).thenReturn(smsClient); + // mock SmsClient 的方法 + List receiveResults = randomPojoList(SmsReceiveRespDTO.class); + + // 调用 + smsService.receiveSmsStatus(channelCode, text); + // 断言 + receiveResults.forEach(result -> { + smsLogService.updateSmsReceiveResult(eq(result.getLogId()), eq(result.getSuccess()), + eq(result.getReceiveTime()), eq(result.getErrorCode()), eq(result.getErrorCode())); + }); + } + +} diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsTemplateServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsTemplateServiceTest.java index 295e9de..4707b91 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsTemplateServiceTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsTemplateServiceTest.java @@ -1,6 +1,6 @@ -package cn.iocoder.dashboard.modules.system.service.sms; +package cn.iocoder.yudao.adminserver.modules.system.service.sms; -import cn.iocoder.dashboard.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -8,16 +8,16 @@ import cn.iocoder.yudao.framework.sms.core.client.SmsClient; import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult; import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO; -import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsTemplateMapper; -import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsTemplateTypeEnum; -import cn.iocoder.dashboard.modules.system.mq.producer.sms.SysSmsProducer; -import cn.iocoder.dashboard.modules.system.service.sms.impl.SysSmsTemplateServiceImpl; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsChannelDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms.SysSmsTemplateMapper; +import cn.iocoder.yudao.adminserver.modules.system.enums.sms.SysSmsTemplateTypeEnum; +import cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms.SysSmsProducer; +import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsTemplateServiceImpl; import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; import com.google.common.collect.Lists; @@ -33,7 +33,7 @@ import java.util.function.Consumer; import static cn.hutool.core.bean.BeanUtil.getFieldValue; import static cn.hutool.core.util.RandomUtil.randomEle; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; diff --git a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/user/SysUserServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/user/SysUserServiceImplTest.java index 9d55050..95833e0 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/user/SysUserServiceImplTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/user/SysUserServiceImplTest.java @@ -1,22 +1,22 @@ -package cn.iocoder.dashboard.modules.system.service.user; +package cn.iocoder.yudao.adminserver.modules.system.service.user; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.RandomUtil; -import cn.iocoder.dashboard.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.dashboard.modules.infra.service.file.InfFileService; -import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO; -import cn.iocoder.dashboard.modules.system.controller.user.vo.user.*; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysPostDO; -import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO; -import cn.iocoder.dashboard.modules.system.dal.mysql.user.SysUserMapper; -import cn.iocoder.dashboard.modules.system.enums.common.SysSexEnum; -import cn.iocoder.dashboard.modules.system.service.dept.SysDeptService; -import cn.iocoder.dashboard.modules.system.service.dept.SysPostService; -import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService; +import cn.iocoder.yudao.adminserver.modules.infra.service.file.InfFileService; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO; +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.*; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO; +import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.user.SysUserMapper; +import cn.iocoder.yudao.adminserver.modules.system.enums.common.SysSexEnum; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService; +import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService; +import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService; import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; @@ -34,7 +34,7 @@ import java.util.function.Consumer; import static cn.hutool.core.util.RandomUtil.randomBytes; import static cn.hutool.core.util.RandomUtil.randomEle; -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*; +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; diff --git a/yudao-admin-server/src/test/resources/application-unit-test.yaml b/yudao-admin-server/src/test/resources/application-unit-test.yaml index 70cecc4..5b14614 100644 --- a/yudao-admin-server/src/test/resources/application-unit-test.yaml +++ b/yudao-admin-server/src/test/resources/application-unit-test.yaml @@ -51,12 +51,6 @@ resilience4j: # 芋道配置项,设置当前项目所有自定义的配置 yudao: - info: - version: 1.0.0 - base-package: cn.iocoder.dashboard - web: - api-prefix: /api - controller-package: ${yudao.info.base-package} security: token-header: Authorization token-secret: abcdefghijklmnopqrstuvwxyz @@ -66,15 +60,8 @@ yudao: mock-secret: test swagger: enable: false # 单元测试,禁用 Swagger - captcha: - timeout: 5m - width: 160 - height: 60 file: base-path: http://127.0.0.1:${server.port}/${yudao.web.api-prefix}/file/get/ - codegen: - base-package: ${yudao.info.base-package}.modules - db-schemas: ${spring.datasource.name} xss: enable: false exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系