Commit 468dbc663afb50e105715eb125420bc368775d65

Authored by 芋道源码
Committed by Gitee
2 parents 53bda604 043c05a0

!46 前台用户,增加登录、注册、退出等功能

Merge pull request !46 from 芋道源码/feature/user-register
Showing 267 changed files with 3571 additions and 2130 deletions

Too many changes.

To preserve performance only 100 of 267 files are displayed.

README.md
... ... @@ -88,6 +88,9 @@
88 88 | `yudao-admin-ui` | 管理后台的 UI 界面 |
89 89 | `yudao-user-server` | 用户前台的服务端 |
90 90 | `yudao-user-ui` | 用户前台的 UI 界面 |
  91 +| `yudao-core-service` | 公共服务,提供共享逻辑 |
  92 +
  93 +> 友情提示:`yudao-admin-server` 和 `yudao-user-server` 会存在需要复用的逻辑,通过 `yudao-core-service` 实现。
91 94  
92 95 ### 后端
93 96  
... ...
http-client.env.json
1 1 {
2 2 "local": {
3 3 "baseUrl": "http://127.0.0.1:48080/api",
  4 + "userServerUrl": "http://127.0.0.1:28080/api",
4 5 "token": "test1"
5 6 }
6 7 }
... ...
... ... @@ -12,6 +12,7 @@
12 12 <module>yudao-framework</module>
13 13 <module>yudao-admin-server</module>
14 14 <module>yudao-user-server</module>
  15 + <module>yudao-core-service</module>
15 16 </modules>
16 17  
17 18 <name>${artifactId}</name>
... ...
yudao-admin-server/pom.xml
... ... @@ -20,6 +20,11 @@
20 20 <!-- 业务组件 -->
21 21 <dependency>
22 22 <groupId>cn.iocoder.boot</groupId>
  23 + <artifactId>yudao-core-service</artifactId>
  24 + </dependency>
  25 +
  26 + <dependency>
  27 + <groupId>cn.iocoder.boot</groupId>
23 28 <artifactId>yudao-spring-boot-starter-biz-operatelog</artifactId>
24 29 </dependency>
25 30 <dependency>
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/AdminServerApplication.java
... ... @@ -3,7 +3,8 @@ package cn.iocoder.yudao.adminserver;
3 3 import org.springframework.boot.SpringApplication;
4 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
5 5  
6   -@SpringBootApplication
  6 +@SuppressWarnings("SpringComponentScan") // 忽略 IDEA 无法识别 ${yudao.info.base-package} 和 ${yudao.core-service.base-package}
  7 +@SpringBootApplication(scanBasePackages = {"${yudao.info.base-package}", "${yudao.core-service.base-package}"})
7 8 public class AdminServerApplication {
8 9  
9 10 public static void main(String[] args) {
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/InfConfigController.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.controller.config;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.config.InfConfigDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 6 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
6 7 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
7 8 import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.*;
8 9 import cn.iocoder.yudao.adminserver.modules.infra.convert.config.InfConfigConvert;
9   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config.InfConfigDO;
10 10 import cn.iocoder.yudao.adminserver.modules.infra.service.config.InfConfigService;
11 11 import io.swagger.annotations.Api;
12 12 import io.swagger.annotations.ApiImplicitParam;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/file/InfFileController.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.controller.file;
2 2  
3 3 import cn.hutool.core.io.IoUtil;
  4 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.file.InfFileDO;
4 5 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
5 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 7 import cn.iocoder.yudao.adminserver.modules.infra.controller.file.vo.InfFilePageReqVO;
7 8 import cn.iocoder.yudao.adminserver.modules.infra.controller.file.vo.InfFileRespVO;
8 9 import cn.iocoder.yudao.adminserver.modules.infra.convert.file.InfFileConvert;
9   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.file.InfFileDO;
10 10 import cn.iocoder.yudao.adminserver.modules.infra.service.file.InfFileService;
11 11 import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
12 12 import io.swagger.annotations.Api;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/InfApiAccessLogController.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.controller.logger;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiAccessLogDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 6 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
... ... @@ -9,7 +10,6 @@ import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccess
9 10 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO;
10 11 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogRespVO;
11 12 import cn.iocoder.yudao.adminserver.modules.infra.convert.logger.InfApiAccessLogConvert;
12   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiAccessLogDO;
13 13 import cn.iocoder.yudao.adminserver.modules.infra.service.logger.InfApiAccessLogService;
14 14 import io.swagger.annotations.Api;
15 15 import io.swagger.annotations.ApiOperation;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/InfApiErrorLogController.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.controller.logger;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiErrorLogDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 6 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
... ... @@ -9,7 +10,6 @@ import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorl
9 10 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogPageReqVO;
10 11 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogRespVO;
11 12 import cn.iocoder.yudao.adminserver.modules.infra.convert.logger.InfApiErrorLogConvert;
12   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiErrorLogDO;
13 13 import cn.iocoder.yudao.adminserver.modules.infra.service.logger.InfApiErrorLogService;
14 14 import io.swagger.annotations.Api;
15 15 import io.swagger.annotations.ApiImplicitParam;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/config/InfConfigConvert.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.convert.config;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.config.InfConfigDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 5 import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigCreateReqVO;
5 6 import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigExcelVO;
6 7 import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigRespVO;
7 8 import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigUpdateReqVO;
8   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config.InfConfigDO;
9 9 import org.mapstruct.Mapper;
10 10 import org.mapstruct.factory.Mappers;
11 11  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/file/InfFileConvert.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.convert.file;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.file.InfFileDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 5 import cn.iocoder.yudao.adminserver.modules.infra.controller.file.vo.InfFileRespVO;
5   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.file.InfFileDO;
6 6 import org.mapstruct.Mapper;
7 7 import org.mapstruct.factory.Mappers;
8 8  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/logger/InfApiAccessLogConvert.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.convert.logger;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiAccessLogDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 5 import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateDTO;
5 6 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExcelVO;
6 7 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogRespVO;
7   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiAccessLogDO;
8 8 import org.mapstruct.Mapper;
9 9 import org.mapstruct.factory.Mappers;
10 10  
... ... @@ -20,8 +20,6 @@ public interface InfApiAccessLogConvert {
20 20  
21 21 InfApiAccessLogConvert INSTANCE = Mappers.getMapper(InfApiAccessLogConvert.class);
22 22  
23   - InfApiAccessLogDO convert(ApiAccessLogCreateDTO bean);
24   -
25 23 InfApiAccessLogRespVO convert(InfApiAccessLogDO bean);
26 24  
27 25 List<InfApiAccessLogRespVO> convertList(List<InfApiAccessLogDO> list);
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/logger/InfApiErrorLogConvert.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.convert.logger;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiErrorLogDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateDTO;
5 5 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExcelVO;
6 6 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogRespVO;
7   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiErrorLogDO;
8 7 import org.mapstruct.Mapper;
9 8 import org.mapstruct.factory.Mappers;
10 9  
... ... @@ -20,8 +19,6 @@ public interface InfApiErrorLogConvert {
20 19  
21 20 InfApiErrorLogConvert INSTANCE = Mappers.getMapper(InfApiErrorLogConvert.class);
22 21  
23   - InfApiErrorLogDO convert(ApiErrorLogCreateDTO bean);
24   -
25 22 InfApiErrorLogRespVO convert(InfApiErrorLogDO bean);
26 23  
27 24 PageResult<InfApiErrorLogRespVO> convertPage(PageResult<InfApiErrorLogDO> page);
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/config/InfConfigDO.java deleted
1   -package cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config;
2   -
3   -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
4   -import cn.iocoder.yudao.adminserver.modules.infra.enums.config.InfConfigTypeEnum;
5   -import com.baomidou.mybatisplus.annotation.TableField;
6   -import com.baomidou.mybatisplus.annotation.TableId;
7   -import com.baomidou.mybatisplus.annotation.TableName;
8   -import lombok.Data;
9   -import lombok.EqualsAndHashCode;
10   -import lombok.ToString;
11   -
12   -/**
13   - * 参数配置表
14   - *
15   - * @author ruoyi
16   - */
17   -@TableName("inf_config")
18   -@Data
19   -@EqualsAndHashCode(callSuper = true)
20   -@ToString(callSuper = true)
21   -public class InfConfigDO extends BaseDO {
22   -
23   - /**
24   - * 参数主键
25   - */
26   - @TableId
27   - private Long id;
28   - /**
29   - * 参数分组
30   - */
31   - @TableField("`group`")
32   - private String group;
33   - /**
34   - * 参数名称
35   - */
36   - private String name;
37   - /**
38   - * 参数键名
39   - */
40   - @TableField("`key`")
41   - private String key;
42   - /**
43   - * 参数键值
44   - */
45   - private String value;
46   - /**
47   - * 参数类型
48   - *
49   - * 枚举 {@link InfConfigTypeEnum}
50   - */
51   - @TableField("`type`")
52   - private Integer type;
53   - /**
54   - * 是否敏感
55   - *
56   - * 对于敏感配置,需要管理权限才能查看
57   - */
58   - @TableField("`sensitive`")
59   - private Boolean sensitive;
60   - /**
61   - * 备注
62   - */
63   - private String remark;
64   -
65   -}
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/dataobject/logger/InfApiErrorLogDO.java deleted
1   -package cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger;
2   -
3   -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
4   -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
5   -import cn.iocoder.yudao.adminserver.modules.infra.enums.logger.InfApiErrorLogProcessStatusEnum;
6   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
7   -import com.baomidou.mybatisplus.annotation.TableName;
8   -import lombok.*;
9   -
10   -import java.util.Date;
11   -
12   -/**
13   - * API 异常数据
14   - *
15   - * @author 芋道源码
16   - */
17   -@TableName("inf_api_error_log")
18   -@Data
19   -@EqualsAndHashCode(callSuper = true)
20   -@ToString(callSuper = true)
21   -@Builder
22   -@NoArgsConstructor
23   -@AllArgsConstructor
24   -public class InfApiErrorLogDO extends BaseDO {
25   -
26   - /**
27   - * 编号
28   - */
29   - private Long id;
30   - /**
31   - * 用户编号
32   - */
33   - private Long userId;
34   - /**
35   - * 链路追踪编号
36   - *
37   - * 一般来说,通过链路追踪编号,可以将访问日志,错误日志,链路追踪日志,logger 打印日志等,结合在一起,从而进行排错。
38   - */
39   - private String traceId;
40   - /**
41   - * 用户类型
42   - *
43   - * 枚举 {@link UserTypeEnum}
44   - */
45   - private Integer userType;
46   - /**
47   - * 应用名
48   - *
49   - * 目前读取 spring.application.name
50   - */
51   - private String applicationName;
52   -
53   - // ========== 请求相关字段 ==========
54   -
55   - /**
56   - * 请求方法名
57   - */
58   - private String requestMethod;
59   - /**
60   - * 访问地址
61   - */
62   - private String requestUrl;
63   - /**
64   - * 请求参数
65   - *
66   - * query: Query String
67   - * body: Quest Body
68   - */
69   - private String requestParams;
70   - /**
71   - * 用户 IP
72   - */
73   - private String userIp;
74   - /**
75   - * 浏览器 UA
76   - */
77   - private String userAgent;
78   -
79   - // ========== 异常相关字段 ==========
80   -
81   - /**
82   - * 异常发生时间
83   - */
84   - private Date exceptionTime;
85   - /**
86   - * 异常名
87   - *
88   - * {@link Throwable#getClass()} 的类全名
89   - */
90   - private String exceptionName;
91   - /**
92   - * 异常导致的消息
93   - *
94   - * {@link cn.hutool.core.exceptions.ExceptionUtil#getMessage(Throwable)}
95   - */
96   - private String exceptionMessage;
97   - /**
98   - * 异常导致的根消息
99   - *
100   - * {@link cn.hutool.core.exceptions.ExceptionUtil#getRootCauseMessage(Throwable)}
101   - */
102   - private String exceptionRootCauseMessage;
103   - /**
104   - * 异常的栈轨迹
105   - *
106   - * {@link org.apache.commons.lang3.exception.ExceptionUtils#getStackTrace(Throwable)}
107   - */
108   - private String exceptionStackTrace;
109   - /**
110   - * 异常发生的类全名
111   - *
112   - * {@link StackTraceElement#getClassName()}
113   - */
114   - private String exceptionClassName;
115   - /**
116   - * 异常发生的类文件
117   - *
118   - * {@link StackTraceElement#getFileName()}
119   - */
120   - private String exceptionFileName;
121   - /**
122   - * 异常发生的方法名
123   - *
124   - * {@link StackTraceElement#getMethodName()}
125   - */
126   - private String exceptionMethodName;
127   - /**
128   - * 异常发生的方法所在行
129   - *
130   - * {@link StackTraceElement#getLineNumber()}
131   - */
132   - private Integer exceptionLineNumber;
133   -
134   - // ========== 处理相关字段 ==========
135   -
136   - /**
137   - * 处理状态
138   - *
139   - * 枚举 {@link InfApiErrorLogProcessStatusEnum}
140   - */
141   - private Integer processStatus;
142   - /**
143   - * 处理时间
144   - */
145   - private Date processTime;
146   - /**
147   - * 处理用户编号
148   - *
149   - * 关联 {@link SysUserDO#getId()}
150   - */
151   - private Long processUserId;
152   -
153   -}
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/config/InfConfigMapper.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.config;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.config.InfConfigDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 5 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 6 import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
6 7 import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigExportReqVO;
7 8 import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigPageReqVO;
8   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config.InfConfigDO;
9 9 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
10 10 import org.apache.ibatis.annotations.Mapper;
11 11  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/file/InfFileMapper.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.file;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.file.InfFileDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 5 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 6 import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
6 7 import cn.iocoder.yudao.adminserver.modules.infra.controller.file.vo.InfFilePageReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.file.InfFileDO;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9  
10 10 @Mapper
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/logger/InfApiAccessLogMapper.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.logger;
2 2  
  3 +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO;
  4 +import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO;
  5 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiAccessLogDO;
3 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 7 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 8 import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
6   -import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO;
8   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiAccessLogDO;
9 9 import org.apache.ibatis.annotations.Mapper;
10 10  
11 11 import java.util.List;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/dal/mysql/logger/InfApiErrorLogMapper.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.logger;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiErrorLogDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 5 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 6 import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
6 7 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExportReqVO;
7 8 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogPageReqVO;
8   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiErrorLogDO;
9 9 import org.apache.ibatis.annotations.Mapper;
10 10  
11 11 import java.util.List;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/InfConfigService.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.service.config;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.config.InfConfigDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 5 import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigCreateReqVO;
5 6 import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigExportReqVO;
6 7 import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigPageReqVO;
7 8 import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigUpdateReqVO;
8   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config.InfConfigDO;
9 9  
10 10 import javax.validation.Valid;
11 11 import java.util.List;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/impl/InfConfigServiceImpl.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.service.config.impl;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.config.InfConfigDO;
3 4 import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 6 import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigCreateReqVO;
... ... @@ -8,7 +9,6 @@ import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfig
8 9 import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigUpdateReqVO;
9 10 import cn.iocoder.yudao.adminserver.modules.infra.convert.config.InfConfigConvert;
10 11 import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.config.InfConfigMapper;
11   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config.InfConfigDO;
12 12 import cn.iocoder.yudao.adminserver.modules.infra.enums.config.InfConfigTypeEnum;
13 13 import cn.iocoder.yudao.adminserver.modules.infra.mq.producer.config.InfConfigProducer;
14 14 import cn.iocoder.yudao.adminserver.modules.infra.service.config.InfConfigService;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/file/InfFileService.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.service.file;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.file.InfFileDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 5 import cn.iocoder.yudao.adminserver.modules.infra.controller.file.vo.InfFilePageReqVO;
5   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.file.InfFileDO;
6 6  
7 7 /**
8 8 * 文件 Service 接口
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/file/impl/InfFileServiceImpl.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.service.file.impl;
2 2  
3 3 import cn.hutool.core.io.FileTypeUtil;
  4 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.file.InfFileDO;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 6 import cn.iocoder.yudao.adminserver.modules.infra.framework.file.config.FileProperties;
6 7 import cn.iocoder.yudao.adminserver.modules.infra.controller.file.vo.InfFilePageReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.file.InfFileDO;
8 8 import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.file.InfFileMapper;
9 9 import cn.iocoder.yudao.adminserver.modules.infra.service.file.InfFileService;
10 10 import org.springframework.stereotype.Service;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiAccessLogService.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.service.logger;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.framework.apilog.core.service.ApiAccessLogFrameworkService;
5 3 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO;
6 4 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiAccessLogDO;
  5 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiAccessLogDO;
  6 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 7  
9 8 import java.util.List;
10 9  
... ... @@ -13,7 +12,7 @@ import java.util.List;
13 12 *
14 13 * @author 芋道源码
15 14 */
16   -public interface InfApiAccessLogService extends ApiAccessLogFrameworkService {
  15 +public interface InfApiAccessLogService {
17 16  
18 17 /**
19 18 * 获得 API 访问日志分页
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiErrorLogService.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.service.logger;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.framework.apilog.core.service.ApiErrorLogFrameworkService;
5 3 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExportReqVO;
6 4 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogPageReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiErrorLogDO;
  5 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiErrorLogDO;
  6 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 7  
9 8 import java.util.List;
10 9  
... ... @@ -13,7 +12,7 @@ import java.util.List;
13 12 *
14 13 * @author 芋道源码
15 14 */
16   -public interface InfApiErrorLogService extends ApiErrorLogFrameworkService {
  15 +public interface InfApiErrorLogService {
17 16  
18 17 /**
19 18 * 获得 API 错误日志分页
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/impl/InfApiAccessLogServiceImpl.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.service.logger.impl;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateDTO;
5 3 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO;
6 4 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.infra.convert.logger.InfApiAccessLogConvert;
8   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiAccessLogDO;
9 5 import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.logger.InfApiAccessLogMapper;
10 6 import cn.iocoder.yudao.adminserver.modules.infra.service.logger.InfApiAccessLogService;
11   -import org.springframework.scheduling.annotation.Async;
12   -import org.springframework.scheduling.annotation.AsyncResult;
  7 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiAccessLogDO;
  8 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
13 9 import org.springframework.stereotype.Service;
14 10 import org.springframework.validation.annotation.Validated;
15 11  
16 12 import javax.annotation.Resource;
17 13 import java.util.List;
18   -import java.util.concurrent.Future;
19 14  
20 15 /**
21 16 * API 访问日志 Service 实现类
... ... @@ -30,14 +25,6 @@ public class InfApiAccessLogServiceImpl implements InfApiAccessLogService {
30 25 private InfApiAccessLogMapper apiAccessLogMapper;
31 26  
32 27 @Override
33   - @Async
34   - public Future<Boolean> createApiAccessLogAsync(ApiAccessLogCreateDTO createDTO) {
35   - InfApiAccessLogDO apiAccessLog = InfApiAccessLogConvert.INSTANCE.convert(createDTO);
36   - int insert = apiAccessLogMapper.insert(apiAccessLog);
37   - return new AsyncResult<>(insert > 1);
38   - }
39   -
40   - @Override
41 28 public PageResult<InfApiAccessLogDO> getApiAccessLogPage(InfApiAccessLogPageReqVO pageReqVO) {
42 29 return apiAccessLogMapper.selectPage(pageReqVO);
43 30 }
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/impl/InfApiErrorLogServiceImpl.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.service.logger.impl;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateDTO;
5 3 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExportReqVO;
6 4 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogPageReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.infra.convert.logger.InfApiErrorLogConvert;
8   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiErrorLogDO;
9 5 import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.logger.InfApiErrorLogMapper;
10 6 import cn.iocoder.yudao.adminserver.modules.infra.enums.logger.InfApiErrorLogProcessStatusEnum;
11 7 import cn.iocoder.yudao.adminserver.modules.infra.service.logger.InfApiErrorLogService;
12   -import org.springframework.scheduling.annotation.Async;
13   -import org.springframework.scheduling.annotation.AsyncResult;
  8 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiErrorLogDO;
  9 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
14 10 import org.springframework.stereotype.Service;
15 11 import org.springframework.validation.annotation.Validated;
16 12  
17 13 import javax.annotation.Resource;
18 14 import java.util.Date;
19 15 import java.util.List;
20   -import java.util.concurrent.Future;
21 16  
22   -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
23 17 import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.API_ERROR_LOG_NOT_FOUND;
24 18 import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.API_ERROR_LOG_PROCESSED;
  19 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
25 20  
26 21 /**
27 22 * API 错误日志 Service 实现类
... ... @@ -36,15 +31,6 @@ public class InfApiErrorLogServiceImpl implements InfApiErrorLogService {
36 31 private InfApiErrorLogMapper apiErrorLogMapper;
37 32  
38 33 @Override
39   - @Async
40   - public Future<Boolean> createApiErrorLogAsync(ApiErrorLogCreateDTO createDTO) {
41   - InfApiErrorLogDO apiErrorLog = InfApiErrorLogConvert.INSTANCE.convert(createDTO);
42   - apiErrorLog.setProcessStatus(InfApiErrorLogProcessStatusEnum.INIT.getStatus());
43   - int insert = apiErrorLogMapper.insert(apiErrorLog);
44   - return new AsyncResult<>(insert == 1);
45   - }
46   -
47   - @Override
48 34 public PageResult<InfApiErrorLogDO> getApiErrorLogPage(InfApiErrorLogPageReqVO pageReqVO) {
49 35 return apiErrorLogMapper.selectPage(pageReqVO);
50 36 }
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysAuthController.java
... ... @@ -4,13 +4,13 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.*;
4 4 import cn.iocoder.yudao.adminserver.modules.system.convert.auth.SysAuthConvert;
5 5 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO;
6 6 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO;
7   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
8 7 import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuTypeEnum;
9 8 import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysAuthService;
10 9 import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
11 10 import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService;
12 11 import cn.iocoder.yudao.adminserver.modules.system.service.social.SysSocialService;
13   -import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
  12 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
  13 +import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService;
14 14 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
15 15 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
16 16 import cn.iocoder.yudao.framework.common.util.collection.SetUtils;
... ... @@ -43,7 +43,7 @@ public class SysAuthController {
43 43 @Resource
44 44 private SysAuthService authService;
45 45 @Resource
46   - private SysUserService userService;
  46 + private SysUserCoreService userCoreService;
47 47 @Resource
48 48 private SysRoleService roleService;
49 49 @Resource
... ... @@ -64,7 +64,7 @@ public class SysAuthController {
64 64 @ApiOperation("获取登录用户的权限信息")
65 65 public CommonResult<SysAuthPermissionInfoRespVO> getPermissionInfo() {
66 66 // 获得用户信息
67   - SysUserDO user = userService.getUser(getLoginUserId());
  67 + SysUserDO user = userCoreService.getUser(getLoginUserId());
68 68 if (user == null) {
69 69 return null;
70 70 }
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/auth/SysUserSessionController.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.controller.auth;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 3 import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageItemRespVO;
6 4 import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO;
7 5 import cn.iocoder.yudao.adminserver.modules.system.convert.auth.SysUserSessionConvert;
8   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.auth.SysUserSessionDO;
9 6 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
10   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
11 7 import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysUserSessionService;
12 8 import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
13 9 import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
  10 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO;
  11 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
  12 +import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService;
  13 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  14 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
14 15 import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
15 16 import io.swagger.annotations.Api;
16 17 import io.swagger.annotations.ApiImplicitParam;
... ... @@ -35,6 +36,8 @@ public class SysUserSessionController {
35 36 @Resource
36 37 private SysUserSessionService userSessionService;
37 38 @Resource
  39 + private SysUserSessionCoreService userSessionCoreService;
  40 + @Resource
38 41 private SysUserService userService;
39 42 @Resource
40 43 private SysDeptService deptService;
... ... @@ -72,7 +75,7 @@ public class SysUserSessionController {
72 75 example = "fe50b9f6-d177-44b1-8da9-72ea34f63db7")
73 76 @PreAuthorize("@ss.hasPermission('system:user-session:delete')")
74 77 public CommonResult<Boolean> deleteUserSession(@RequestParam("id") String id) {
75   - userSessionService.deleteUserSession(id);
  78 + userSessionCoreService.deleteUserSession(id);
76 79 return success(true);
77 80 }
78 81  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictDataController.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.controller.dict;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 6 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
6 7 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
7 8 import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.*;
8 9 import cn.iocoder.yudao.adminserver.modules.system.convert.dict.SysDictDataConvert;
9   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictDataDO;
10 10 import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictDataService;
11 11 import io.swagger.annotations.Api;
12 12 import io.swagger.annotations.ApiImplicitParam;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/SysLoginLogController.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.controller.logger;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 6 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
... ... @@ -9,7 +10,6 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog
9 10 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO;
10 11 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogRespVO;
11 12 import cn.iocoder.yudao.adminserver.modules.system.convert.logger.SysLoginLogConvert;
12   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysLoginLogDO;
13 13 import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysLoginLogService;
14 14 import io.swagger.annotations.Api;
15 15 import io.swagger.annotations.ApiOperation;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/SysOperateLogController.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.controller.logger;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
5   -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
6   -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
7 3 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExcelVO;
8 4 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO;
9 5 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO;
10 6 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogRespVO;
11 7 import cn.iocoder.yudao.adminserver.modules.system.convert.logger.SysOperateLogConvert;
12 8 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO;
13   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
14 9 import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysOperateLogService;
15 10 import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
  11 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
  12 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  13 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
16 14 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
17 15 import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
  16 +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
  17 +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
18 18 import io.swagger.annotations.Api;
19 19 import io.swagger.annotations.ApiOperation;
20 20 import org.springframework.security.access.prepost.PreAuthorize;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/logger/vo/loginlog/SysLoginLogCreateReqVO.java deleted
1   -package cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog;
2   -
3   -import io.swagger.annotations.ApiModel;
4   -import lombok.Data;
5   -import lombok.EqualsAndHashCode;
6   -import lombok.ToString;
7   -
8   -@ApiModel(value = "登录日志创建 Request VO",
9   - description = "暂时提供给前端,仅仅后端记录登录日志时,进行使用")
10   -@Data
11   -@EqualsAndHashCode(callSuper = true)
12   -@ToString(callSuper = true)
13   -public class SysLoginLogCreateReqVO extends SysLoginLogBaseVO {
14   -}
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SmsCallbackController.java
... ... @@ -2,10 +2,10 @@ package cn.iocoder.yudao.adminserver.modules.system.controller.sms;
2 2  
3 3 import cn.hutool.core.util.URLUtil;
4 4 import cn.hutool.extra.servlet.ServletUtil;
  5 +import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService;
5 6 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
6 7 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
7 8 import cn.iocoder.yudao.framework.sms.core.enums.SmsChannelEnum;
8   -import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsService;
9 9 import io.swagger.annotations.Api;
10 10 import io.swagger.annotations.ApiImplicitParam;
11 11 import io.swagger.annotations.ApiOperation;
... ... @@ -25,7 +25,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
25 25 public class SmsCallbackController {
26 26  
27 27 @Resource
28   - private SysSmsService smsService;
  28 + private SysSmsCoreService smsCoreService;
29 29  
30 30 @PostMapping("/sms/yunpian")
31 31 @ApiOperation(value = "云片短信的回调", notes = "参见 https://www.yunpian.com/official/document/sms/zh_cn/domestic_push_report 文档")
... ... @@ -33,7 +33,7 @@ public class SmsCallbackController {
33 33 @OperateLog(enable = false)
34 34 public String receiveYunpianSmsStatus(@RequestParam("sms_status") String smsStatus) throws Throwable {
35 35 String text = URLUtil.decode(smsStatus); // decode 解码参数,因为它被 encode
36   - smsService.receiveSmsStatus(SmsChannelEnum.YUN_PIAN.getCode(), text);
  36 + smsCoreService.receiveSmsStatus(SmsChannelEnum.YUN_PIAN.getCode(), text);
37 37 return "SUCCESS"; // 约定返回 SUCCESS 为成功
38 38 }
39 39  
... ... @@ -42,7 +42,7 @@ public class SmsCallbackController {
42 42 @OperateLog(enable = false)
43 43 public CommonResult<Boolean> receiveAliyunSmsStatus(HttpServletRequest request) throws Throwable {
44 44 String text = ServletUtil.getBody(request);
45   - smsService.receiveSmsStatus(SmsChannelEnum.ALIYUN.getCode(), text);
  45 + smsCoreService.receiveSmsStatus(SmsChannelEnum.ALIYUN.getCode(), text);
46 46 return success(true);
47 47 }
48 48  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsChannelController.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.controller.sms;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 3 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.*;
6 4 import cn.iocoder.yudao.adminserver.modules.system.convert.sms.SysSmsChannelConvert;
7   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsChannelDO;
8 5 import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsChannelService;
  6 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO;
  7 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  8 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
9 9 import io.swagger.annotations.Api;
10 10 import io.swagger.annotations.ApiImplicitParam;
11 11 import io.swagger.annotations.ApiOperation;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsLogController.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.controller.sms;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
5   -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
6   -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
7 3 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExcelVO;
8 4 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO;
9 5 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO;
10 6 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogRespVO;
11 7 import cn.iocoder.yudao.adminserver.modules.system.convert.sms.SysSmsLogConvert;
12   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsLogDO;
13 8 import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsLogService;
  9 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO;
  10 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  11 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  12 +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
  13 +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
14 14 import io.swagger.annotations.Api;
15 15 import io.swagger.annotations.ApiOperation;
16 16 import org.springframework.security.access.prepost.PreAuthorize;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/sms/SysSmsTemplateController.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.controller.sms;
2 2  
  3 +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.*;
  4 +import cn.iocoder.yudao.adminserver.modules.system.convert.sms.SysSmsTemplateConvert;
  5 +import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsTemplateService;
  6 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
  7 +import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService;
3 8 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 9 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 10 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
6 11 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
7   -import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.*;
8   -import cn.iocoder.yudao.adminserver.modules.system.convert.sms.SysSmsTemplateConvert;
9   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
10   -import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsService;
11   -import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsTemplateService;
12 12 import io.swagger.annotations.Api;
13 13 import io.swagger.annotations.ApiImplicitParam;
14 14 import io.swagger.annotations.ApiOperation;
... ... @@ -32,7 +32,7 @@ public class SysSmsTemplateController {
32 32 @Resource
33 33 private SysSmsTemplateService smsTemplateService;
34 34 @Resource
35   - private SysSmsService smsService;
  35 + private SysSmsCoreService smsCoreService;
36 36  
37 37 @PostMapping("/create")
38 38 @ApiOperation("创建短信模板")
... ... @@ -91,7 +91,7 @@ public class SysSmsTemplateController {
91 91 @ApiOperation("发送短信")
92 92 @PreAuthorize("@ss.hasPermission('system:sms-template:send-sms')")
93 93 public CommonResult<Long> sendSms(@Valid @RequestBody SysSmsTemplateSendReqVO sendReqVO) {
94   - return success(smsService.sendSingleSms(sendReqVO.getMobile(), null, null,
  94 + return success(smsCoreService.sendSingleSms(sendReqVO.getMobile(), null, null,
95 95 sendReqVO.getTemplateCode(), sendReqVO.getTemplateParams()));
96 96 }
97 97  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserController.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.controller.user;
2 2  
3 3 import cn.hutool.core.collection.CollUtil;
4   -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
5   -import cn.iocoder.yudao.framework.common.pojo.CommonResult;
6   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
7   -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
8   -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
9 4 import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.*;
10 5 import cn.iocoder.yudao.adminserver.modules.system.convert.user.SysUserConvert;
11 6 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
12   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
13   -import cn.iocoder.yudao.adminserver.modules.system.enums.common.SysSexEnum;
14 7 import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
15 8 import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
  9 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
  10 +import cn.iocoder.yudao.coreservice.modules.system.enums.common.SysSexEnum;
  11 +import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService;
  12 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  13 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  14 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
16 15 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
17 16 import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
  17 +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
  18 +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
18 19 import io.swagger.annotations.Api;
19 20 import io.swagger.annotations.ApiImplicitParam;
20 21 import io.swagger.annotations.ApiImplicitParams;
... ... @@ -42,6 +43,8 @@ public class SysUserController {
42 43 @Resource
43 44 private SysUserService userService;
44 45 @Resource
  46 + private SysUserCoreService userCoreService;
  47 + @Resource
45 48 private SysDeptService deptService;
46 49  
47 50 @PostMapping("/create")
... ... @@ -113,7 +116,7 @@ public class SysUserController {
113 116 @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
114 117 @PreAuthorize("@ss.hasPermission('system:user:query')")
115 118 public CommonResult<SysUserRespVO> getInfo(@RequestParam("id") Long id) {
116   - return success(SysUserConvert.INSTANCE.convert(userService.getUser(id)));
  119 + return success(SysUserConvert.INSTANCE.convert(userCoreService.getUser(id)));
117 120 }
118 121  
119 122 @GetMapping("/export")
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/SysUserProfileController.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.controller.user;
2 2  
3 3 import cn.hutool.core.collection.CollUtil;
4   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.social.SysSocialUserDO;
5   -import cn.iocoder.yudao.adminserver.modules.system.service.social.SysSocialService;
6   -import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
7   -import cn.iocoder.yudao.framework.common.pojo.CommonResult;
8 4 import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileRespVO;
9 5 import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
10 6 import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
... ... @@ -12,12 +8,17 @@ import cn.iocoder.yudao.adminserver.modules.system.convert.user.SysUserConvert;
12 8 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
13 9 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO;
14 10 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO;
15   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
  11 +import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.social.SysSocialUserDO;
16 12 import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
17 13 import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService;
18 14 import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
19 15 import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysRoleService;
  16 +import cn.iocoder.yudao.adminserver.modules.system.service.social.SysSocialService;
20 17 import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
  18 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
  19 +import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService;
  20 +import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
  21 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
21 22 import io.swagger.annotations.Api;
22 23 import io.swagger.annotations.ApiOperation;
23 24 import lombok.extern.slf4j.Slf4j;
... ... @@ -30,13 +31,10 @@ import javax.validation.Valid;
30 31 import java.io.IOException;
31 32 import java.util.List;
32 33  
  34 +import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.FILE_IS_EMPTY;
33 35 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
34 36 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
35   -import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.FILE_IS_EMPTY;
36 37  
37   -/**
38   - * @author niudehua
39   - */
40 38 @Api(tags = "用户个人中心")
41 39 @RestController
42 40 @RequestMapping("/system/user/profile")
... ... @@ -47,6 +45,8 @@ public class SysUserProfileController {
47 45 @Resource
48 46 private SysUserService userService;
49 47 @Resource
  48 + private SysUserCoreService userCoreService;
  49 + @Resource
50 50 private SysDeptService deptService;
51 51 @Resource
52 52 private SysPostService postService;
... ... @@ -61,7 +61,7 @@ public class SysUserProfileController {
61 61 @ApiOperation("获得登录用户信息")
62 62 public CommonResult<SysUserProfileRespVO> profile() {
63 63 // 获得用户基本信息
64   - SysUserDO user = userService.getUser(getLoginUserId());
  64 + SysUserDO user = userCoreService.getUser(getLoginUserId());
65 65 SysUserProfileRespVO resp = SysUserConvert.INSTANCE.convert03(user);
66 66 // 获得用户角色
67 67 List<SysRoleDO> userRoles = roleService.getRolesFromCache(permissionService.listUserRoleIs(user.getId()));
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/user/vo/user/SysUserImportExcelVO.java
... ... @@ -8,6 +8,7 @@ import lombok.AllArgsConstructor;
8 8 import lombok.Builder;
9 9 import lombok.Data;
10 10 import lombok.NoArgsConstructor;
  11 +import lombok.experimental.Accessors;
11 12  
12 13 /**
13 14 * 用户 Excel 导入 VO
... ... @@ -16,6 +17,7 @@ import lombok.NoArgsConstructor;
16 17 @Builder
17 18 @AllArgsConstructor
18 19 @NoArgsConstructor
  20 +@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
19 21 public class SysUserImportExcelVO {
20 22  
21 23 @ExcelProperty("登录名称")
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/auth/SysAuthConvert.java
... ... @@ -2,17 +2,13 @@ package cn.iocoder.yudao.adminserver.modules.system.convert.auth;
2 2  
3 3 import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthMenuRespVO;
4 4 import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthPermissionInfoRespVO;
5   -import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialLogin2ReqVO;
6   -import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialLoginReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
8   -import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
9 5 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysMenuDO;
10 6 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO;
11   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
12 7 import cn.iocoder.yudao.adminserver.modules.system.enums.permission.MenuIdEnum;
  8 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
  9 +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
13 10 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
14 11 import cn.iocoder.yudao.framework.security.core.LoginUser;
15   -import me.zhyd.oauth.model.AuthCallback;
16 12 import org.mapstruct.Mapper;
17 13 import org.mapstruct.Mapping;
18 14 import org.mapstruct.factory.Mappers;
... ... @@ -25,9 +21,13 @@ public interface SysAuthConvert {
25 21  
26 22 SysAuthConvert INSTANCE = Mappers.getMapper(SysAuthConvert.class);
27 23  
28   - @Mapping(source = "updateTime", target = "updateTime", ignore = true)
29   - // 字段相同,但是含义不同,忽略
30   - LoginUser convert(SysUserDO bean);
  24 + @Mapping(source = "updateTime", target = "updateTime", ignore = true) // 字段相同,但是含义不同,忽略
  25 + LoginUser convert0(SysUserDO bean);
  26 +
  27 + default LoginUser convert(SysUserDO bean) {
  28 + // 目的,为了设置 UserTypeEnum.ADMIN.getValue()
  29 + return convert0(bean).setUserType(UserTypeEnum.ADMIN.getValue());
  30 + }
31 31  
32 32 default SysAuthPermissionInfoRespVO convert(SysUserDO user, List<SysRoleDO> roleList, List<SysMenuDO> menuList) {
33 33 return SysAuthPermissionInfoRespVO.builder()
... ... @@ -39,10 +39,6 @@ public interface SysAuthConvert {
39 39  
40 40 SysAuthMenuRespVO convertTreeNode(SysMenuDO menu);
41 41  
42   - LoginUser convert(SysUserProfileUpdateReqVO reqVO);
43   -
44   - LoginUser convert(SysUserProfileUpdatePasswordReqVO reqVO);
45   -
46 42 /**
47 43 * 将菜单列表,构建成菜单树
48 44 *
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/auth/SysUserSessionConvert.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.convert.auth;
2 2  
3 3 import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageItemRespVO;
4   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.auth.SysUserSessionDO;
  4 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO;
5 5 import org.mapstruct.Mapper;
6 6 import org.mapstruct.factory.Mappers;
7 7  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/dict/SysDictDataConvert.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.convert.dict;
2 2  
  3 +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.*;
  4 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO;
3 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 6 import cn.iocoder.yudao.framework.dict.core.dto.DictDataRespDTO;
5   -import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.*;
6   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictDataDO;
7 7 import org.mapstruct.Mapper;
8 8 import org.mapstruct.factory.Mappers;
9 9  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/logger/SysLoginLogConvert.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.convert.logger;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO;
5 3 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExcelVO;
6 4 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogRespVO;
7   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysLoginLogDO;
  5 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
  6 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 7 import org.mapstruct.Mapper;
9 8 import org.mapstruct.factory.Mappers;
10 9  
... ... @@ -15,8 +14,6 @@ public interface SysLoginLogConvert {
15 14  
16 15 SysLoginLogConvert INSTANCE = Mappers.getMapper(SysLoginLogConvert.class);
17 16  
18   - SysLoginLogDO convert(SysLoginLogCreateReqVO bean);
19   -
20 17 PageResult<SysLoginLogRespVO> convertPage(PageResult<SysLoginLogDO> page);
21 18  
22 19 List<SysLoginLogExcelVO> convertList(List<SysLoginLogDO> list);
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/logger/SysOperateLogConvert.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.convert.logger;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO;
5 3 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExcelVO;
6 4 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogRespVO;
7 5 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO;
8   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
  6 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
  7 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
9 8 import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
  9 +import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO;
10 10 import org.mapstruct.Mapper;
11 11 import org.mapstruct.factory.Mappers;
12 12  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsChannelConvert.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.convert.sms;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties;
5 3 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO;
6 4 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelRespVO;
7 5 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelSimpleRespVO;
8 6 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO;
9   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsChannelDO;
  7 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO;
  8 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  9 +import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties;
10 10 import org.mapstruct.Mapper;
11 11 import org.mapstruct.factory.Mappers;
12 12  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsLogConvert.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.convert.sms;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 3 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExcelVO;
5 4 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogRespVO;
6   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsLogDO;
  5 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO;
  6 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
7 7 import org.mapstruct.Mapper;
8 8 import org.mapstruct.factory.Mappers;
9 9  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/sms/SysSmsTemplateConvert.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.convert.sms;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 3 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO;
5 4 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateExcelVO;
6 5 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateRespVO;
7 6 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO;
8   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
  7 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
  8 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
9 9 import org.mapstruct.Mapper;
10 10 import org.mapstruct.factory.Mappers;
11 11  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/convert/user/SysUserConvert.java
... ... @@ -8,7 +8,7 @@ import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO
8 8 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO;
9 9 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.permission.SysRoleDO;
10 10 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.social.SysSocialUserDO;
11   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
  11 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
12 12 import org.mapstruct.Mapper;
13 13 import org.mapstruct.factory.Mappers;
14 14  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/logger/SysOperateLogDO.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 5 import cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum;
5 6 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
6   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
7 7 import com.baomidou.mybatisplus.annotation.TableField;
8 8 import com.baomidou.mybatisplus.annotation.TableId;
9 9 import com.baomidou.mybatisplus.annotation.TableName;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/dataobject/social/SysSocialUserDO.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.social;
2 2  
3   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
  3 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
4 4 import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
5 5 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
6 6 import com.baomidou.mybatisplus.annotation.TableId;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/auth/SysUserSessionMapper.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.auth;
2 2  
  3 +import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO;
  4 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO;
3 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 6 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 7 import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
6   -import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.auth.SysUserSessionDO;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9  
10 10 import java.util.Collection;
... ... @@ -23,4 +23,5 @@ public interface SysUserSessionMapper extends BaseMapperX&lt;SysUserSessionDO&gt; {
23 23 default List<SysUserSessionDO> selectListBySessionTimoutLt() {
24 24 return selectList(new QueryWrapperX<SysUserSessionDO>().lt("session_timeout",new Date()));
25 25 }
  26 +
26 27 }
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/dict/SysDictDataMapper.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dict;
2 2  
  3 +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataExportReqVO;
  4 +import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataPageReqVO;
  5 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO;
3 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 7 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 8 import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
6   -import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataExportReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataPageReqVO;
8   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictDataDO;
9 9 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
10 10 import org.apache.ibatis.annotations.Mapper;
11 11  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/logger/SysLoginLogMapper.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 5 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 6 import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
6 7 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO;
7 8 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO;
8   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysLoginLogDO;
9 9 import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum;
10 10 import org.apache.ibatis.annotations.Mapper;
11 11  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsChannelMapper.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms;
2 2  
  3 +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO;
  4 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO;
3 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 6 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 7 import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
6   -import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsChannelDO;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9 import org.apache.ibatis.annotations.Select;
10 10  
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsLogMapper.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms;
2 2  
  3 +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO;
  4 +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO;
  5 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO;
3 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 7 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 8 import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
6   -import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO;
8   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsLogDO;
9 9 import org.apache.ibatis.annotations.Mapper;
10 10  
11 11 import java.util.List;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/sms/SysSmsTemplateMapper.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms;
2 2  
  3 +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO;
  4 +import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO;
  5 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
3 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 7 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 8 import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
6   -import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO;
8   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
9 9 import org.apache.ibatis.annotations.Mapper;
10   -import org.apache.ibatis.annotations.Select;
11 10  
12   -import java.util.Date;
13 11 import java.util.List;
14 12  
15 13 @Mapper
... ... @@ -47,7 +45,4 @@ public interface SysSmsTemplateMapper extends BaseMapperX&lt;SysSmsTemplateDO&gt; {
47 45 return selectCount("channel_id", channelId);
48 46 }
49 47  
50   - @Select("SELECT id FROM sys_sms_template WHERE update_time > #{maxUpdateTime} LIMIT 1")
51   - Long selectExistsByUpdateTimeAfter(Date maxUpdateTime);
52   -
53 48 }
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/mysql/user/SysUserMapper.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.dal.mysql.user;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 5 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 6 import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
6 7 import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserExportReqVO;
7 8 import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserPageReqVO;
8   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
9 9 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
10 10 import org.apache.ibatis.annotations.Mapper;
11 11  
... ... @@ -19,14 +19,14 @@ public interface SysUserMapper extends BaseMapperX&lt;SysUserDO&gt; {
19 19 return selectOne(new QueryWrapper<SysUserDO>().eq("username", username));
20 20 }
21 21  
22   - default SysUserDO selectByMobile(String mobile) {
23   - return selectOne(new QueryWrapper<SysUserDO>().eq("mobile", mobile));
24   - }
25   -
26 22 default SysUserDO selectByEmail(String email) {
27 23 return selectOne(new QueryWrapper<SysUserDO>().eq("email", email));
28 24 }
29 25  
  26 + default SysUserDO selectByMobile(String mobile) {
  27 + return selectOne(new QueryWrapper<SysUserDO>().eq("mobile", mobile));
  28 + }
  29 +
30 30 default PageResult<SysUserDO> selectPage(SysUserPageReqVO reqVO, Collection<Long> deptIds) {
31 31 return selectPage(reqVO, new QueryWrapperX<SysUserDO>()
32 32 .likeIfPresent("username", reqVO.getUsername())
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/RedisKeyConstants.java deleted
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/dal/redis/SysRedisKeyConstants.java
... ... @@ -15,10 +15,6 @@ import static cn.iocoder.yudao.framework.redis.core.RedisKeyDefine.KeyTypeEnum.S
15 15 */
16 16 public interface SysRedisKeyConstants {
17 17  
18   - RedisKeyDefine LOGIN_USER = new RedisKeyDefine("登录用户的缓存",
19   - "login_user:%s", // 参数为 sessionId
20   - STRING, LoginUser.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC);
21   -
22 18 RedisKeyDefine CAPTCHA_CODE = new RedisKeyDefine("验证码的缓存",
23 19 "captcha_code:%s", // 参数为 uuid
24 20 STRING, String.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC);
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/SysErrorCodeConstants.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.enums;
2 2  
3   -import cn.iocoder.yudao.adminserver.modules.tool.framework.errorcode.config.ErrorCodeConfiguration;
4 3 import cn.iocoder.yudao.framework.common.exception.ErrorCode;
5   -import org.springframework.validation.Errors;
  4 +import javafx.beans.binding.MapExpression;
6 5  
7 6 /**
8 7 * System 错误码枚举类
... ... @@ -14,14 +13,11 @@ public interface SysErrorCodeConstants {
14 13 // ========== AUTH 模块 1002000000 ==========
15 14 ErrorCode AUTH_LOGIN_BAD_CREDENTIALS = new ErrorCode(1002000000, "登录失败,账号密码不正确");
16 15 ErrorCode AUTH_LOGIN_USER_DISABLED = new ErrorCode(1002000001, "登录失败,账号被禁用");
17   - ErrorCode AUTH_LOGIN_FAIL_UNKNOWN = new ErrorCode(1002000002, "登录失败"); // 登录失败的兜底,位置原因
  16 + ErrorCode AUTH_LOGIN_FAIL_UNKNOWN = new ErrorCode(1002000002, "登录失败"); // 登录失败的兜底,未知原因
18 17 ErrorCode AUTH_LOGIN_CAPTCHA_NOT_FOUND = new ErrorCode(1002000003, "验证码不存在");
19 18 ErrorCode AUTH_LOGIN_CAPTCHA_CODE_ERROR = new ErrorCode(1002000004, "验证码不正确");
20 19 ErrorCode AUTH_THIRD_LOGIN_NOT_BIND = new ErrorCode(1002000005, "未绑定账号,需要进行绑定");
21   -
22   - // ========== TOKEN 模块 1002001000 ==========
23   - ErrorCode TOKEN_EXPIRED = new ErrorCode(1002001000, "Token 已经过期");
24   - ErrorCode TOKEN_PARSE_FAIL = new ErrorCode(1002001001, "Token 解析失败");
  20 + ErrorCode AUTH_TOKEN_EXPIRED = new ErrorCode(1002000006, "Token 已经过期");
25 21  
26 22 // ========== 菜单模块 1002002000 ==========
27 23 ErrorCode MENU_NAME_DUPLICATE = new ErrorCode(1002002000, "已经存在该名字的菜单");
... ... @@ -90,10 +86,6 @@ public interface SysErrorCodeConstants {
90 86 ErrorCode SMS_TEMPLATE_NOT_EXISTS = new ErrorCode(1002011000, "短信模板不存在");
91 87 ErrorCode SMS_TEMPLATE_CODE_DUPLICATE = new ErrorCode(1002011001, "已经存在编码为【{}】的短信模板");
92 88  
93   - // ========== 短信发送 1002012000 ==========
94   - ErrorCode SMS_SEND_MOBILE_NOT_EXISTS = new ErrorCode(1002012000, "手机号不存在");
95   - ErrorCode SMS_SEND_MOBILE_TEMPLATE_PARAM_MISS = new ErrorCode(1002012001, "模板参数({})缺失");
96   -
97 89 // ========== 错误码模块 1002013000 ==========
98 90 ErrorCode ERROR_CODE_NOT_EXISTS = new ErrorCode(1002013000, "错误码不存在");
99 91 ErrorCode ERROR_CODE_DUPLICATE = new ErrorCode(1002013001, "已经存在编码为【{}】的错误码");
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/logger/SysLoginLogTypeEnum.java
... ... @@ -13,6 +13,8 @@ public enum SysLoginLogTypeEnum {
13 13 LOGIN_USERNAME(100), // 使用账号登录
14 14 LOGIN_SOCIAL(101), // 使用社交登录
15 15 LOGIN_MOCK(102), // 使用 Mock 登录
  16 + LOGIN_MOBILE(103), // 使用手机登陆
  17 + LOGIN_SMS(104), // 使用短信登陆
16 18  
17 19 LOGOUT_SELF(200), // 自己主动登出
18 20 LOGOUT_TIMEOUT(201), // 超时登出
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/logger/SysLoginResultEnum.java
... ... @@ -13,8 +13,8 @@ public enum SysLoginResultEnum {
13 13 SUCCESS(0), // 成功
14 14 BAD_CREDENTIALS(10), // 账号或密码不正确
15 15 USER_DISABLED(20), // 用户被禁用
16   - CAPTCHA_NOT_FOUND(30), // 验证码不存在
17   - CAPTCHA_CODE_ERROR(31), // 验证码不正确
  16 + CAPTCHA_NOT_FOUND(30), // 图片验证码不存在
  17 + CAPTCHA_CODE_ERROR(31), // 图片验证码不正确
18 18  
19 19 UNKNOWN_ERROR(100), // 未知异常
20 20 ;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/dict/SysDictDataRefreshConsumer.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.dict;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.system.service.dict.SysDictDataCoreService;
3 4 import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
4 5 import cn.iocoder.yudao.adminserver.modules.system.mq.message.dict.SysDictDataRefreshMessage;
5 6 import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictDataService;
... ... @@ -18,12 +19,12 @@ import javax.annotation.Resource;
18 19 public class SysDictDataRefreshConsumer extends AbstractChannelMessageListener<SysDictDataRefreshMessage> {
19 20  
20 21 @Resource
21   - private SysDictDataService dictDataService;
  22 + private SysDictDataCoreService dictDataCoreService;
22 23  
23 24 @Override
24 25 public void onMessage(SysDictDataRefreshMessage message) {
25 26 log.info("[onMessage][收到 DictData 刷新消息]");
26   - dictDataService.initLocalCache();
  27 + dictDataCoreService.initLocalCache();
27 28 }
28 29  
29 30 }
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsSendConsumer.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.sms;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.system.mq.message.sms.SysSmsSendMessage;
  4 +import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService;
3 5 import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessageListener;
4   -import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsSendMessage;
5   -import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsService;
6 6 import lombok.extern.slf4j.Slf4j;
7 7 import org.springframework.stereotype.Component;
8 8  
... ... @@ -19,12 +19,12 @@ import javax.annotation.Resource;
19 19 public class SysSmsSendConsumer extends AbstractStreamMessageListener<SysSmsSendMessage> {
20 20  
21 21 @Resource
22   - private SysSmsService smsService;
  22 + private SysSmsCoreService smsCoreService;
23 23  
24 24 @Override
25 25 public void onMessage(SysSmsSendMessage message) {
26 26 log.info("[onMessage][消息内容({})]", message);
27   - smsService.doSendSms(message);
  27 + smsCoreService.doSendSms(message);
28 28 }
29 29  
30 30 }
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/consumer/sms/SysSmsTemplateRefreshConsumer.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.mq.consumer.sms;
2 2  
3   -import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
4 3 import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsTemplateRefreshMessage;
5   -import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsTemplateService;
  4 +import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsTemplateCoreService;
  5 +import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener;
6 6 import lombok.extern.slf4j.Slf4j;
7 7 import org.springframework.stereotype.Component;
8 8  
... ... @@ -18,12 +18,12 @@ import javax.annotation.Resource;
18 18 public class SysSmsTemplateRefreshConsumer extends AbstractChannelMessageListener<SysSmsTemplateRefreshMessage> {
19 19  
20 20 @Resource
21   - private SysSmsTemplateService smsTemplateService;
  21 + private SysSmsTemplateCoreService smsTemplateCoreService;
22 22  
23 23 @Override
24 24 public void onMessage(SysSmsTemplateRefreshMessage message) {
25 25 log.info("[onMessage][收到 SmsTemplate 刷新消息]");
26   - smsTemplateService.initLocalCache();
  26 + smsTemplateCoreService.initLocalCache();
27 27 }
28 28  
29 29 }
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/sms/SysSmsProducer.java
... ... @@ -3,7 +3,6 @@ package cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms;
3 3 import cn.iocoder.yudao.framework.common.core.KeyValue;
4 4 import cn.iocoder.yudao.framework.mq.core.util.RedisMessageUtils;
5 5 import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsChannelRefreshMessage;
6   -import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsSendMessage;
7 6 import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsTemplateRefreshMessage;
8 7 import lombok.extern.slf4j.Slf4j;
9 8 import org.springframework.data.redis.core.StringRedisTemplate;
... ... @@ -26,22 +25,6 @@ public class SysSmsProducer {
26 25 private StringRedisTemplate stringRedisTemplate;
27 26  
28 27 /**
29   - * 发送 {@link SysSmsSendMessage} 消息
30   - *
31   - * @param logId 短信日志编号
32   - * @param mobile 手机号
33   - * @param channelId 渠道编号
34   - * @param apiTemplateId 短信模板编号
35   - * @param templateParams 短信模板参数
36   - */
37   - public void sendSmsSendMessage(Long logId, String mobile,
38   - Long channelId, String apiTemplateId, List<KeyValue<String, Object>> templateParams) {
39   - SysSmsSendMessage message = new SysSmsSendMessage().setLogId(logId).setMobile(mobile);
40   - message.setChannelId(channelId).setApiTemplateId(apiTemplateId).setTemplateParams(templateParams);
41   - RedisMessageUtils.sendStreamMessage(stringRedisTemplate, message);
42   - }
43   -
44   - /**
45 28 * 发送 {@link SysSmsChannelRefreshMessage} 消息
46 29 */
47 30 public void sendSmsChannelRefreshMessage() {
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthService.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.framework.security.core.service.SecurityAuthFrameworkSer
6 6 import javax.validation.Valid;
7 7  
8 8 /**
9   - * 认证 Service 接口
  9 + * 管理后台的认证 Service 接口
10 10 *
11 11 * 提供用户的账号密码登录、token 的校验等认证相关的功能
12 12 *
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysUserSessionService.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.service.auth;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.framework.security.core.LoginUser;
5 3 import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO;
6   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.auth.SysUserSessionDO;
  4 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO;
  5 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
7 6  
8 7 /**
9 8 * 在线用户 Session Service 接口
... ... @@ -13,53 +12,6 @@ import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.auth.SysUserSe
13 12 public interface SysUserSessionService {
14 13  
15 14 /**
16   - * 创建在线用户 Session
17   - *
18   - * @param loginUser 登录用户
19   - * @param userIp 用户 IP
20   - * @param userAgent 用户 UA
21   - * @return Session 编号
22   - */
23   - String createUserSession(LoginUser loginUser, String userIp, String userAgent);
24   -
25   - /**
26   - * 刷新在线用户 Session 的更新时间
27   - *
28   - * @param sessionId Session 编号
29   - * @param loginUser 登录用户
30   - */
31   - void refreshUserSession(String sessionId, LoginUser loginUser);
32   -
33   - /**
34   - * 删除在线用户 Session
35   - *
36   - * @param sessionId Session 编号
37   - */
38   - void deleteUserSession(String sessionId);
39   -
40   - /**
41   - * 获得 Session 编号对应的在线用户
42   - *
43   - * @param sessionId Session 编号
44   - * @return 在线用户
45   - */
46   - LoginUser getLoginUser(String sessionId);
47   -
48   - /**
49   - * 获取当前登录用户信息
50   - * @param username 用户名称
51   - * @return 在线用户
52   - */
53   - String getSessionId(String username);
54   -
55   - /**
56   - * 获得 Session 超时时间,单位:毫秒
57   - *
58   - * @return 超时时间
59   - */
60   - Long getSessionTimeoutMillis();
61   -
62   - /**
63 15 * 获得在线用户分页列表
64 16 *
65 17 * @param reqVO 分页条件
... ... @@ -73,4 +25,5 @@ public interface SysUserSessionService {
73 25 * @return {@link Long } 移出的超时用户数量
74 26 **/
75 27 long clearSessionTimeout();
  28 +
76 29 }
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysAuthServiceImpl.java
... ... @@ -5,20 +5,22 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAu
5 5 import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialBindReqVO;
6 6 import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialLogin2ReqVO;
7 7 import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthSocialLoginReqVO;
8   -import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO;
9 8 import cn.iocoder.yudao.adminserver.modules.system.convert.auth.SysAuthConvert;
10 9 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.social.SysSocialUserDO;
11   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
12 10 import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeEnum;
13 11 import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum;
14 12 import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysAuthService;
15   -import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysUserSessionService;
16 13 import cn.iocoder.yudao.adminserver.modules.system.service.common.SysCaptchaService;
17   -import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysLoginLogService;
18 14 import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
19 15 import cn.iocoder.yudao.adminserver.modules.system.service.social.SysSocialService;
20 16 import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
  17 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
  18 +import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService;
  19 +import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService;
  20 +import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO;
  21 +import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService;
21 22 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  23 +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
22 24 import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
23 25 import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
24 26 import cn.iocoder.yudao.framework.security.core.LoginUser;
... ... @@ -38,6 +40,7 @@ import org.springframework.util.Assert;
38 40  
39 41 import javax.annotation.Resource;
40 42 import java.util.List;
  43 +import java.util.Objects;
41 44 import java.util.Set;
42 45  
43 46 import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
... ... @@ -60,13 +63,15 @@ public class SysAuthServiceImpl implements SysAuthService {
60 63 @Resource
61 64 private SysUserService userService;
62 65 @Resource
  66 + private SysUserCoreService userCoreService;
  67 + @Resource
63 68 private SysPermissionService permissionService;
64 69 @Resource
65 70 private SysCaptchaService captchaService;
66 71 @Resource
67   - private SysLoginLogService loginLogService;
  72 + private SysLoginLogCoreService loginLogCoreService;
68 73 @Resource
69   - private SysUserSessionService userSessionService;
  74 + private SysUserSessionCoreService userSessionCoreService;
70 75 @Resource
71 76 private SysSocialService socialService;
72 77  
... ... @@ -84,7 +89,7 @@ public class SysAuthServiceImpl implements SysAuthService {
84 89 @Override
85 90 public LoginUser mockLogin(Long userId) {
86 91 // 获取用户编号对应的 SysUserDO
87   - SysUserDO user = userService.getUser(userId);
  92 + SysUserDO user = userCoreService.getUser(userId);
88 93 if (user == null) {
89 94 throw new UsernameNotFoundException(String.valueOf(userId));
90 95 }
... ... @@ -106,7 +111,7 @@ public class SysAuthServiceImpl implements SysAuthService {
106 111 loginUser.setRoleIds(this.getUserRoleIds(loginUser.getId())); // 获取用户角色列表
107 112  
108 113 // 缓存登录用户到 Redis 中,返回 sessionId 编号
109   - return userSessionService.createUserSession(loginUser, userIp, userAgent);
  114 + return userSessionCoreService.createUserSession(loginUser, userIp, userAgent);
110 115 }
111 116  
112 117 private void verifyCaptcha(String username, String captchaUUID, String captchaCode) {
... ... @@ -154,14 +159,25 @@ public class SysAuthServiceImpl implements SysAuthService {
154 159 }
155 160  
156 161 private void createLoginLog(String username, SysLoginLogTypeEnum logTypeEnum, SysLoginResultEnum loginResult) {
157   - SysLoginLogCreateReqVO reqVO = new SysLoginLogCreateReqVO();
158   - reqVO.setLogType(logTypeEnum.getType());
159   - reqVO.setTraceId(TracerUtils.getTraceId());
160   - reqVO.setUsername(username);
161   - reqVO.setUserAgent(ServletUtils.getUserAgent());
162   - reqVO.setUserIp(ServletUtils.getClientIP());
163   - reqVO.setResult(loginResult.getResult());
164   - loginLogService.createLoginLog(reqVO);
  162 + // 获得用户
  163 + SysUserDO user = userService.getUserByUsername(username);
  164 + // 插入登录日志
  165 + SysLoginLogCreateReqDTO reqDTO = new SysLoginLogCreateReqDTO();
  166 + reqDTO.setLogType(logTypeEnum.getType());
  167 + reqDTO.setTraceId(TracerUtils.getTraceId());
  168 + if (user != null) {
  169 + reqDTO.setUserId(user.getId());
  170 + }
  171 + reqDTO.setUserType(UserTypeEnum.ADMIN.getValue());
  172 + reqDTO.setUsername(username);
  173 + reqDTO.setUserAgent(ServletUtils.getUserAgent());
  174 + reqDTO.setUserIp(ServletUtils.getClientIP());
  175 + reqDTO.setResult(loginResult.getResult());
  176 + loginLogCoreService.createLoginLog(reqDTO);
  177 + // 更新最后登录时间
  178 + if (user != null && Objects.equals(SysLoginResultEnum.SUCCESS.getResult(), loginResult.getResult())) {
  179 + userService.updateUserLogin(user.getId(), ServletUtils.getClientIP());
  180 + }
165 181 }
166 182  
167 183 /**
... ... @@ -188,7 +204,7 @@ public class SysAuthServiceImpl implements SysAuthService {
188 204 }
189 205  
190 206 // 自动登录
191   - SysUserDO user = userService.getUser(socialUsers.get(0).getUserId());
  207 + SysUserDO user = userCoreService.getUser(socialUsers.get(0).getUserId());
192 208 if (user == null) {
193 209 throw exception(USER_NOT_EXISTS);
194 210 }
... ... @@ -203,7 +219,7 @@ public class SysAuthServiceImpl implements SysAuthService {
203 219 socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser);
204 220  
205 221 // 缓存登录用户到 Redis 中,返回 sessionId 编号
206   - return userSessionService.createUserSession(loginUser, userIp, userAgent);
  222 + return userSessionCoreService.createUserSession(loginUser, userIp, userAgent);
207 223 }
208 224  
209 225 @Override
... ... @@ -220,7 +236,7 @@ public class SysAuthServiceImpl implements SysAuthService {
220 236 socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser);
221 237  
222 238 // 缓存登录用户到 Redis 中,返回 sessionId 编号
223   - return userSessionService.createUserSession(loginUser, userIp, userAgent);
  239 + return userSessionCoreService.createUserSession(loginUser, userIp, userAgent);
224 240 }
225 241  
226 242 @Override
... ... @@ -236,31 +252,33 @@ public class SysAuthServiceImpl implements SysAuthService {
236 252 @Override
237 253 public void logout(String token) {
238 254 // 查询用户信息
239   - LoginUser loginUser = userSessionService.getLoginUser(token);
  255 + LoginUser loginUser = userSessionCoreService.getLoginUser(token);
240 256 if (loginUser == null) {
241 257 return;
242 258 }
243 259 // 删除 session
244   - userSessionService.deleteUserSession(token);
245   - // 记录登出日子和
246   - this.createLogoutLog(loginUser.getUsername());
  260 + userSessionCoreService.deleteUserSession(token);
  261 + // 记录登出日志
  262 + this.createLogoutLog(loginUser.getId(), loginUser.getUsername());
247 263 }
248 264  
249   - private void createLogoutLog(String username) {
250   - SysLoginLogCreateReqVO reqVO = new SysLoginLogCreateReqVO();
251   - reqVO.setLogType(SysLoginLogTypeEnum.LOGOUT_SELF.getType());
252   - reqVO.setTraceId(TracerUtils.getTraceId());
253   - reqVO.setUsername(username);
254   - reqVO.setUserAgent(ServletUtils.getUserAgent());
255   - reqVO.setUserIp(ServletUtils.getClientIP());
256   - reqVO.setResult(SysLoginResultEnum.SUCCESS.getResult());
257   - loginLogService.createLoginLog(reqVO);
  265 + private void createLogoutLog(Long userId, String username) {
  266 + SysLoginLogCreateReqDTO reqDTO = new SysLoginLogCreateReqDTO();
  267 + reqDTO.setLogType(SysLoginLogTypeEnum.LOGOUT_SELF.getType());
  268 + reqDTO.setTraceId(TracerUtils.getTraceId());
  269 + reqDTO.setUserId(userId);
  270 + reqDTO.setUserType(UserTypeEnum.ADMIN.getValue());
  271 + reqDTO.setUsername(username);
  272 + reqDTO.setUserAgent(ServletUtils.getUserAgent());
  273 + reqDTO.setUserIp(ServletUtils.getClientIP());
  274 + reqDTO.setResult(SysLoginResultEnum.SUCCESS.getResult());
  275 + loginLogCoreService.createLoginLog(reqDTO);
258 276 }
259 277  
260 278 @Override
261 279 public LoginUser verifyTokenAndRefresh(String token) {
262 280 // 获得 LoginUser
263   - LoginUser loginUser = userSessionService.getLoginUser(token);
  281 + LoginUser loginUser = userSessionCoreService.getLoginUser(token);
264 282 if (loginUser == null) {
265 283 return null;
266 284 }
... ... @@ -272,20 +290,20 @@ public class SysAuthServiceImpl implements SysAuthService {
272 290 private void refreshLoginUserCache(String token, LoginUser loginUser) {
273 291 // 每 1/3 的 Session 超时时间,刷新 LoginUser 缓存
274 292 if (System.currentTimeMillis() - loginUser.getUpdateTime().getTime() <
275   - userSessionService.getSessionTimeoutMillis() / 3) {
  293 + userSessionCoreService.getSessionTimeoutMillis() / 3) {
276 294 return;
277 295 }
278 296  
279 297 // 重新加载 SysUserDO 信息
280   - SysUserDO user = userService.getUser(loginUser.getId());
  298 + SysUserDO user = userCoreService.getUser(loginUser.getId());
281 299 if (user == null || CommonStatusEnum.DISABLE.getStatus().equals(user.getStatus())) {
282   - throw exception(TOKEN_EXPIRED); // 校验 token 时,用户被禁用的情况下,也认为 token 过期,方便前端跳转到登录界面
  300 + throw exception(AUTH_TOKEN_EXPIRED); // 校验 token 时,用户被禁用的情况下,也认为 token 过期,方便前端跳转到登录界面
283 301 }
284 302  
285 303 // 刷新 LoginUser 缓存
286 304 loginUser.setDeptId(user.getDeptId());
287 305 loginUser.setRoleIds(this.getUserRoleIds(loginUser.getId()));
288   - userSessionService.refreshUserSession(token, loginUser);
  306 + userSessionCoreService.refreshUserSession(token, loginUser);
289 307 }
290 308  
291 309 }
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/impl/SysUserSessionServiceImpl.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.service.auth.impl;
2 2  
3 3 import cn.hutool.core.collection.CollUtil;
4   -import cn.hutool.core.util.IdUtil;
5 4 import cn.hutool.core.util.StrUtil;
6   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
7   -import cn.iocoder.yudao.framework.security.config.SecurityProperties;
8   -import cn.iocoder.yudao.framework.security.core.LoginUser;
9   -import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
10 5 import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO;
11   -import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO;
12   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.auth.SysUserSessionDO;
13   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
14 6 import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.auth.SysUserSessionMapper;
15   -import cn.iocoder.yudao.adminserver.modules.system.dal.redis.auth.SysLoginUserRedisDAO;
16 7 import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeEnum;
17 8 import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum;
18 9 import cn.iocoder.yudao.adminserver.modules.system.service.auth.SysUserSessionService;
19   -import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysLoginLogService;
20 10 import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
21   -import com.baomidou.mybatisplus.core.conditions.Wrapper;
22   -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
23   -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  11 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO;
  12 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
  13 +import cn.iocoder.yudao.coreservice.modules.system.dal.redis.auth.SysLoginUserCoreRedisDAO;
  14 +import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService;
  15 +import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO;
  16 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  17 +import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
24 18 import com.google.common.collect.Lists;
25 19 import lombok.extern.slf4j.Slf4j;
26 20 import org.springframework.stereotype.Service;
27 21  
28 22 import javax.annotation.Resource;
29   -import java.time.Duration;
30   -import java.util.*;
  23 +import java.util.ArrayList;
  24 +import java.util.Collection;
  25 +import java.util.List;
  26 +import java.util.Map;
31 27 import java.util.stream.Collectors;
32 28  
33 29 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
34   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime;
35 30  
36 31 /**
37 32 * 在线用户 Session Service 实现类
... ... @@ -43,72 +38,14 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime;
43 38 public class SysUserSessionServiceImpl implements SysUserSessionService {
44 39  
45 40 @Resource
46   - private SecurityProperties securityProperties;
47   - @Resource
48   - private SysLoginUserRedisDAO loginUserRedisDAO;
49   - @Resource
50 41 private SysUserSessionMapper userSessionMapper;
51 42 @Resource
52 43 private SysUserService userService;
53 44 @Resource
54   - private SysLoginLogService loginLogService;
55   -
56   - @Override
57   - public String createUserSession(LoginUser loginUser, String userIp, String userAgent) {
58   - // 生成 Session 编号
59   - String sessionId = generateSessionId();
60   - // 写入 Redis 缓存
61   - loginUser.setUpdateTime(new Date());
62   - loginUserRedisDAO.set(sessionId, loginUser);
63   - // 写入 DB 中
64   - SysUserSessionDO userSession = SysUserSessionDO.builder().id(sessionId)
65   - .userId(loginUser.getId()).userIp(userIp).userAgent(userAgent).username(loginUser.getUsername())
66   - .sessionTimeout(addTime(Duration.ofMillis(getSessionTimeoutMillis())))
67   - .build();
68   - userSessionMapper.insert(userSession);
69   - // 返回 Session 编号
70   - return sessionId;
71   - }
72   -
73   - @Override
74   - public void refreshUserSession(String sessionId, LoginUser loginUser) {
75   - // 写入 Redis 缓存
76   - loginUser.setUpdateTime(new Date());
77   - loginUserRedisDAO.set(sessionId, loginUser);
78   - // 更新 DB 中
79   - SysUserSessionDO updateObj = SysUserSessionDO.builder().id(sessionId).build();
80   - updateObj.setUsername(loginUser.getUsername());
81   - updateObj.setUpdateTime(new Date());
82   - updateObj.setSessionTimeout(addTime(Duration.ofMillis(getSessionTimeoutMillis())));
83   - userSessionMapper.updateById(updateObj);
84   - }
85   -
86   - @Override
87   - public void deleteUserSession(String sessionId) {
88   - // 删除 Redis 缓存
89   - loginUserRedisDAO.delete(sessionId);
90   - // 删除 DB 记录
91   - userSessionMapper.deleteById(sessionId);
92   - }
  45 + private SysLoginLogCoreService loginLogCoreService;
93 46  
94   - @Override
95   - public LoginUser getLoginUser(String sessionId) {
96   - return loginUserRedisDAO.get(sessionId);
97   - }
98   -
99   - @Override
100   - public String getSessionId(String username) {
101   - QueryWrapper<SysUserSessionDO> wrapper = new QueryWrapper<>();
102   - wrapper.eq("username", username);
103   - wrapper.orderByDesc("create_time");
104   - SysUserSessionDO sysUserSessionDO = userSessionMapper.selectOne(wrapper);
105   - return sysUserSessionDO.getId();
106   - }
107   -
108   - @Override
109   - public Long getSessionTimeoutMillis() {
110   - return securityProperties.getSessionTimeout().toMillis();
111   - }
  47 + @Resource
  48 + private SysLoginUserCoreRedisDAO loginUserCoreRedisDAO;
112 49  
113 50 @Override
114 51 public PageResult<SysUserSessionDO> getUserSessionPage(SysUserSessionPageReqVO reqVO) {
... ... @@ -123,18 +60,20 @@ public class SysUserSessionServiceImpl implements SysUserSessionService {
123 60 return userSessionMapper.selectPage(reqVO, userIds);
124 61 }
125 62  
  63 + // TODO @芋艿:优化下该方法
126 64 @Override
127 65 public long clearSessionTimeout() {
128 66 // 获取db里已经超时的用户列表
129 67 List<SysUserSessionDO> sessionTimeoutDOS = userSessionMapper.selectListBySessionTimoutLt();
130 68 Map<String, SysUserSessionDO> timeoutSessionDOMap = sessionTimeoutDOS
131 69 .stream()
132   - .filter(sessionDO -> loginUserRedisDAO.get(sessionDO.getId()) == null)
  70 + .filter(sessionDO -> loginUserCoreRedisDAO.get(sessionDO.getId()) == null)
133 71 .collect(Collectors.toMap(SysUserSessionDO::getId, o -> o));
134 72 // 确认已经超时,按批次移出在线用户列表
135 73 if (CollUtil.isNotEmpty(timeoutSessionDOMap)) {
136   - Lists.partition(new ArrayList<>(timeoutSessionDOMap.keySet()), 100).forEach(userSessionMapper::deleteBatchIds);
137   - //记录用户超时退出日志
  74 + Lists.partition(new ArrayList<>(timeoutSessionDOMap.keySet()), 100)
  75 + .forEach(userSessionMapper::deleteBatchIds);
  76 + // 记录用户超时退出日志
138 77 createTimeoutLogoutLog(timeoutSessionDOMap.values());
139 78 }
140 79 return timeoutSessionDOMap.size();
... ... @@ -142,24 +81,17 @@ public class SysUserSessionServiceImpl implements SysUserSessionService {
142 81  
143 82 private void createTimeoutLogoutLog(Collection<SysUserSessionDO> timeoutSessionDOS) {
144 83 for (SysUserSessionDO timeoutSessionDO : timeoutSessionDOS) {
145   - SysLoginLogCreateReqVO reqVO = new SysLoginLogCreateReqVO();
146   - reqVO.setLogType(SysLoginLogTypeEnum.LOGOUT_TIMEOUT.getType());
147   - reqVO.setTraceId(TracerUtils.getTraceId());
148   - reqVO.setUsername(timeoutSessionDO.getUsername());
149   - reqVO.setUserAgent(timeoutSessionDO.getUserAgent());
150   - reqVO.setUserIp(timeoutSessionDO.getUserIp());
151   - reqVO.setResult(SysLoginResultEnum.SUCCESS.getResult());
152   - loginLogService.createLoginLog(reqVO);
  84 + SysLoginLogCreateReqDTO reqDTO = new SysLoginLogCreateReqDTO();
  85 + reqDTO.setLogType(SysLoginLogTypeEnum.LOGOUT_TIMEOUT.getType());
  86 + reqDTO.setTraceId(TracerUtils.getTraceId());
  87 + reqDTO.setUserId(timeoutSessionDO.getUserId());
  88 + reqDTO.setUserType(timeoutSessionDO.getUserType());
  89 + reqDTO.setUsername(timeoutSessionDO.getUsername());
  90 + reqDTO.setUserAgent(timeoutSessionDO.getUserAgent());
  91 + reqDTO.setUserIp(timeoutSessionDO.getUserIp());
  92 + reqDTO.setResult(SysLoginResultEnum.SUCCESS.getResult());
  93 + loginLogCoreService.createLoginLog(reqDTO);
153 94 }
154 95 }
155 96  
156   - /**
157   - * 生成 Session 编号,目前采用 UUID 算法
158   - *
159   - * @return Session 编号
160   - */
161   - private static String generateSessionId() {
162   - return IdUtil.fastSimpleUUID();
163   - }
164   -
165 97 }
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictDataService.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.service.dict;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 5 import cn.iocoder.yudao.framework.dict.core.service.DictDataFrameworkService;
5 6 import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO;
6 7 import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataExportReqVO;
7 8 import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataPageReqVO;
8 9 import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO;
9   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictDataDO;
10 10  
11 11 import java.util.List;
12 12  
... ... @@ -15,12 +15,7 @@ import java.util.List;
15 15 *
16 16 * @author ruoyi
17 17 */
18   -public interface SysDictDataService extends DictDataFrameworkService {
19   -
20   - /**
21   - * 初始化字典数据的本地缓存
22   - */
23   - void initLocalCache();
  18 +public interface SysDictDataService {
24 19  
25 20 /**
26 21 * 创建字典数据
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/impl/SysDictDataServiceImpl.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.service.dict.impl;
2 2  
3   -import cn.hutool.core.collection.CollUtil;
4   -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
5   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
6   -import cn.iocoder.yudao.framework.dict.core.dto.DictDataRespDTO;
7   -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
8 3 import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO;
9 4 import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataExportReqVO;
10 5 import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataPageReqVO;
11 6 import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO;
12 7 import cn.iocoder.yudao.adminserver.modules.system.convert.dict.SysDictDataConvert;
13   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictDataDO;
14 8 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO;
15 9 import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dict.SysDictDataMapper;
16 10 import cn.iocoder.yudao.adminserver.modules.system.mq.producer.dict.SysDictDataProducer;
17 11 import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictDataService;
18 12 import cn.iocoder.yudao.adminserver.modules.system.service.dict.SysDictTypeService;
  13 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO;
  14 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  15 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
19 16 import com.google.common.annotations.VisibleForTesting;
20   -import com.google.common.collect.ImmutableTable;
21 17 import lombok.extern.slf4j.Slf4j;
22   -import org.springframework.scheduling.annotation.Scheduled;
23 18 import org.springframework.stereotype.Service;
24 19  
25   -import javax.annotation.PostConstruct;
26 20 import javax.annotation.Resource;
27 21 import java.util.Comparator;
28 22 import java.util.Date;
29 23 import java.util.List;
30 24  
31   -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
32 25 import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
  26 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
33 27  
34 28 /**
35 29 * 字典数据 Service 实现类
... ... @@ -47,31 +41,6 @@ public class SysDictDataServiceImpl implements SysDictDataService {
47 41 .comparing(SysDictDataDO::getDictType)
48 42 .thenComparingInt(SysDictDataDO::getSort);
49 43  
50   - /**
51   - * 定时执行 {@link #schedulePeriodicRefresh()} 的周期
52   - * 因为已经通过 Redis Pub/Sub 机制,所以频率不需要高
53   - */
54   - private static final long SCHEDULER_PERIOD = 5 * 60 * 1000L;
55   -
56   - /**
57   - * 字典数据缓存,第二个 key 使用 label
58   - *
59   - * key1:字典类型 dictType
60   - * key2:字典标签 label
61   - */
62   - private ImmutableTable<String, String, SysDictDataDO> labelDictDataCache;
63   - /**
64   - * 字典数据缓存,第二个 key 使用 value
65   - *
66   - * key1:字典类型 dictType
67   - * key2:字典值 value
68   - */
69   - private ImmutableTable<String, String, SysDictDataDO> valueDictDataCache;
70   - /**
71   - * 缓存字典数据的最大更新时间,用于后续的增量轮询,判断是否有更新
72   - */
73   - private volatile Date maxUpdateTime;
74   -
75 44 @Resource
76 45 private SysDictTypeService dictTypeService;
77 46  
... ... @@ -81,34 +50,6 @@ public class SysDictDataServiceImpl implements SysDictDataService {
81 50 @Resource
82 51 private SysDictDataProducer dictDataProducer;
83 52  
84   - @Override
85   - @PostConstruct
86   - public synchronized void initLocalCache() {
87   - // 获取字典数据列表,如果有更新
88   - List<SysDictDataDO> dataList = this.loadDictDataIfUpdate(maxUpdateTime);
89   - if (CollUtil.isEmpty(dataList)) {
90   - return;
91   - }
92   -
93   - // 构建缓存
94   - ImmutableTable.Builder<String, String, SysDictDataDO> labelDictDataBuilder = ImmutableTable.builder();
95   - ImmutableTable.Builder<String, String, SysDictDataDO> valueDictDataBuilder = ImmutableTable.builder();
96   - dataList.forEach(dictData -> {
97   - labelDictDataBuilder.put(dictData.getDictType(), dictData.getLabel(), dictData);
98   - valueDictDataBuilder.put(dictData.getDictType(), dictData.getValue(), dictData);
99   - });
100   - labelDictDataCache = labelDictDataBuilder.build();
101   - valueDictDataCache = valueDictDataBuilder.build();
102   - assert dataList.size() > 0; // 断言,避免告警
103   - maxUpdateTime = dataList.stream().max(Comparator.comparing(BaseDO::getUpdateTime)).get().getUpdateTime();
104   - log.info("[initLocalCache][缓存字典数据,数量为:{}]", dataList.size());
105   - }
106   -
107   - @Scheduled(fixedDelay = SCHEDULER_PERIOD, initialDelay = SCHEDULER_PERIOD)
108   - public void schedulePeriodicRefresh() {
109   - initLocalCache();
110   - }
111   -
112 53 /**
113 54 * 如果字典数据发生变化,从数据库中获取最新的全量字典数据。
114 55 * 如果未发生变化,则返回空
... ... @@ -238,19 +179,4 @@ public class SysDictDataServiceImpl implements SysDictDataService {
238 179 }
239 180 }
240 181  
241   - @Override
242   - public DictDataRespDTO getDictDataFromCache(String type, String value) {
243   - return SysDictDataConvert.INSTANCE.convert02(valueDictDataCache.get(type, value));
244   - }
245   -
246   - @Override
247   - public DictDataRespDTO parseDictDataFromCache(String type, String label) {
248   - return SysDictDataConvert.INSTANCE.convert02(labelDictDataCache.get(type, label));
249   - }
250   -
251   - @Override
252   - public List<DictDataRespDTO> listDictDatasFromCache(String type) {
253   - return SysDictDataConvert.INSTANCE.convertList03(labelDictDataCache.row(type).values());
254   - }
255   -
256 182 }
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysLoginLogService.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.service.logger;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO;
5 3 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO;
6 4 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysLoginLogDO;
  5 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
  6 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 7  
9 8 import java.util.List;
10 9  
... ... @@ -14,13 +13,6 @@ import java.util.List;
14 13 public interface SysLoginLogService {
15 14  
16 15 /**
17   - * 创建登录日志
18   - *
19   - * @param reqVO 日志信息
20   - */
21   - void createLoginLog(SysLoginLogCreateReqVO reqVO);
22   -
23   - /**
24 16 * 获得登录日志分页
25 17 *
26 18 * @param reqVO 分页条件
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/impl/SysLoginLogServiceImpl.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.service.logger.impl;
2 2  
3   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
4   -import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
5   -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
6   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
7   -import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO;
8 3 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO;
9 4 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO;
10   -import cn.iocoder.yudao.adminserver.modules.system.convert.logger.SysLoginLogConvert;
11   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysLoginLogDO;
12 5 import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger.SysLoginLogMapper;
13 6 import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysLoginLogService;
  7 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
  8 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
14 9 import org.springframework.stereotype.Service;
15 10  
16 11 import javax.annotation.Resource;
... ... @@ -24,21 +19,6 @@ public class SysLoginLogServiceImpl implements SysLoginLogService {
24 19  
25 20 @Resource
26 21 private SysLoginLogMapper loginLogMapper;
27   - @Resource
28   - private SysUserService userService;
29   -
30   - @Override
31   - public void createLoginLog(SysLoginLogCreateReqVO reqVO) {
32   - SysLoginLogDO loginLog = SysLoginLogConvert.INSTANCE.convert(reqVO);
33   - // 获得用户
34   - SysUserDO user = userService.getUserByUsername(reqVO.getUsername());
35   - if (user != null) {
36   - loginLog.setUserId(user.getId());
37   - }
38   - loginLog.setUserType(UserTypeEnum.ADMIN.getValue());
39   - // 插入
40   - loginLogMapper.insert(loginLog);
41   - }
42 22  
43 23 @Override
44 24 public PageResult<SysLoginLogDO> getLoginLogPage(SysLoginLogPageReqVO reqVO) {
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/impl/SysOperateLogServiceImpl.java
... ... @@ -2,17 +2,17 @@ package cn.iocoder.yudao.adminserver.modules.system.service.logger.impl;
2 2  
3 3 import cn.hutool.core.collection.CollUtil;
4 4 import cn.hutool.core.util.StrUtil;
5   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
6   -import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO;
7 5 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO;
8 6 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO;
9 7 import cn.iocoder.yudao.adminserver.modules.system.convert.logger.SysOperateLogConvert;
10 8 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO;
11   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
12 9 import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger.SysOperateLogMapper;
13 10 import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysOperateLogService;
14 11 import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
  12 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
  13 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
15 14 import cn.iocoder.yudao.framework.common.util.string.StrUtils;
  15 +import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO;
16 16 import lombok.extern.slf4j.Slf4j;
17 17 import org.springframework.scheduling.annotation.Async;
18 18 import org.springframework.scheduling.annotation.AsyncResult;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsChannelService.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.service.sms;
2 2  
  3 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO;
3 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 5 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO;
5 6 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO;
6 7 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsChannelDO;
8 8  
9 9 import javax.validation.Valid;
10 10 import java.util.Collection;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsLogService.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.service.sms;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 3 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO;
5 4 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO;
6   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsLogDO;
7   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
  5 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO;
  6 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 7  
9   -import java.util.Date;
10 8 import java.util.List;
11   -import java.util.Map;
12 9  
13 10 /**
14   - * 短信日志 Service 实现类
  11 + * 短信日志 Service 接口
15 12 *
16 13 * @author zzf
17 14 * @date 13:48 2021/3/2
... ... @@ -19,46 +16,6 @@ import java.util.Map;
19 16 public interface SysSmsLogService {
20 17  
21 18 /**
22   - * 创建短信日志
23   - *
24   - * @param mobile 手机号
25   - * @param userId 用户编号
26   - * @param userType 用户类型
27   - * @param isSend 是否发送
28   - * @param template 短信模板
29   - * @param templateContent 短信内容
30   - * @param templateParams 短信参数
31   - * @return 发送日志编号
32   - */
33   - Long createSmsLog(String mobile, Long userId, Integer userType, Boolean isSend,
34   - SysSmsTemplateDO template, String templateContent, Map<String, Object> templateParams);
35   -
36   - /**
37   - * 更新日志的发送结果
38   - *
39   - * @param id 日志编号
40   - * @param sendCode 发送结果的编码
41   - * @param sendMsg 发送结果的提示
42   - * @param apiSendCode 短信 API 发送结果的编码
43   - * @param apiSendMsg 短信 API 发送失败的提示
44   - * @param apiRequestId 短信 API 发送返回的唯一请求 ID
45   - * @param apiSerialNo 短信 API 发送返回的序号
46   - */
47   - void updateSmsSendResult(Long id, Integer sendCode, String sendMsg,
48   - String apiSendCode, String apiSendMsg, String apiRequestId, String apiSerialNo);
49   -
50   - /**
51   - * 更新日志的接收结果
52   - *
53   - * @param id 日志编号
54   - * @param success 是否接收成功
55   - * @param receiveTime 用户接收时间
56   - * @param apiReceiveCode API 接收结果的编码
57   - * @param apiReceiveMsg API 接收结果的说明
58   - */
59   - void updateSmsReceiveResult(Long id, Boolean success, Date receiveTime, String apiReceiveCode, String apiReceiveMsg);
60   -
61   - /**
62 19 * 获得短信日志分页
63 20 *
64 21 * @param pageReqVO 分页查询
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsTemplateService.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.service.sms;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 3 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO;
5 4 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO;
6 5 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO;
7 6 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO;
8   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
  7 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
  8 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
9 9  
10 10 import javax.validation.Valid;
11 11 import java.util.Collection;
12 12 import java.util.List;
13   -import java.util.Map;
14 13  
15 14 /**
16 15 * 短信模板 Service 接口
... ... @@ -21,11 +20,6 @@ import java.util.Map;
21 20 public interface SysSmsTemplateService {
22 21  
23 22 /**
24   - * 初始化短信模板的本地缓存
25   - */
26   - void initLocalCache();
27   -
28   - /**
29 23 * 获得短信模板
30 24 *
31 25 * @param code 模板编码
... ... @@ -34,23 +28,6 @@ public interface SysSmsTemplateService {
34 28 SysSmsTemplateDO getSmsTemplateByCode(String code);
35 29  
36 30 /**
37   - * 获得短信模板,从缓存中
38   - *
39   - * @param code 模板编码
40   - * @return 短信模板
41   - */
42   - SysSmsTemplateDO getSmsTemplateByCodeFromCache(String code);
43   -
44   - /**
45   - * 格式化短信内容
46   - *
47   - * @param content 短信模板的内容
48   - * @param params 内容的参数
49   - * @return 格式化后的内容
50   - */
51   - String formatSmsTemplateContent(String content, Map<String, Object> params);
52   -
53   - /**
54 31 * 创建短信模板
55 32 *
56 33 * @param createReqVO 创建信息
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsChannelServiceImpl.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.service.sms.impl;
2 2  
3 3 import cn.hutool.core.collection.CollUtil;
4   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
5   -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
6   -import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory;
7   -import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties;
8 4 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO;
9 5 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO;
10 6 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO;
11 7 import cn.iocoder.yudao.adminserver.modules.system.convert.sms.SysSmsChannelConvert;
12   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsChannelDO;
13 8 import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms.SysSmsChannelMapper;
14 9 import cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms.SysSmsProducer;
15 10 import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsChannelService;
16 11 import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsTemplateService;
  12 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO;
  13 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  14 +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  15 +import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory;
  16 +import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties;
17 17 import lombok.extern.slf4j.Slf4j;
18 18 import org.springframework.scheduling.annotation.Scheduled;
19 19 import org.springframework.stereotype.Service;
... ... @@ -25,9 +25,9 @@ import java.util.Comparator;
25 25 import java.util.Date;
26 26 import java.util.List;
27 27  
28   -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
29 28 import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.SMS_CHANNEL_HAS_CHILDREN;
30 29 import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.SMS_CHANNEL_NOT_EXISTS;
  30 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
31 31  
32 32 /**
33 33 * 短信渠道Service实现类
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsLogServiceImpl.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.service.sms.impl;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 3 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogExportReqVO;
6 4 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.log.SysSmsLogPageReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsLogDO;
8   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
9 5 import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms.SysSmsLogMapper;
10   -import cn.iocoder.yudao.adminserver.modules.system.enums.sms.SysSmsReceiveStatusEnum;
11   -import cn.iocoder.yudao.adminserver.modules.system.enums.sms.SysSmsSendStatusEnum;
12 6 import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsLogService;
  7 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO;
  8 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
13 9 import lombok.extern.slf4j.Slf4j;
14 10 import org.springframework.stereotype.Service;
15 11  
16 12 import javax.annotation.Resource;
17   -import java.util.Date;
18 13 import java.util.List;
19   -import java.util.Map;
20   -import java.util.Objects;
21 14  
22 15 /**
23 16 * 短信日志 Service 实现类
... ... @@ -33,47 +26,6 @@ public class SysSmsLogServiceImpl implements SysSmsLogService {
33 26 private SysSmsLogMapper smsLogMapper;
34 27  
35 28 @Override
36   - public Long createSmsLog(String mobile, Long userId, Integer userType, Boolean isSend,
37   - SysSmsTemplateDO template, String templateContent, Map<String, Object> templateParams) {
38   - SysSmsLogDO.SysSmsLogDOBuilder logBuilder = SysSmsLogDO.builder();
39   - // 根据是否要发送,设置状态
40   - logBuilder.sendStatus(Objects.equals(isSend, true) ? SysSmsSendStatusEnum.INIT.getStatus()
41   - : SysSmsSendStatusEnum.IGNORE.getStatus());
42   - // 设置手机相关字段
43   - logBuilder.mobile(mobile).userId(userId).userType(userType);
44   - // 设置模板相关字段
45   - logBuilder.templateId(template.getId()).templateCode(template.getCode()).templateType(template.getType());
46   - logBuilder.templateContent(templateContent).templateParams(templateParams).apiTemplateId(template.getApiTemplateId());
47   - // 设置渠道相关字段
48   - logBuilder.channelId(template.getChannelId()).channelCode(template.getChannelCode());
49   - // 设置接收相关字段
50   - logBuilder.receiveStatus(SysSmsReceiveStatusEnum.INIT.getStatus());
51   -
52   - // 插入数据库
53   - SysSmsLogDO logDO = logBuilder.build();
54   - smsLogMapper.insert(logDO);
55   - return logDO.getId();
56   - }
57   -
58   - @Override
59   - public void updateSmsSendResult(Long id, Integer sendCode, String sendMsg,
60   - String apiSendCode, String apiSendMsg, String apiRequestId, String apiSerialNo) {
61   - SysSmsSendStatusEnum sendStatus = CommonResult.isSuccess(sendCode) ? SysSmsSendStatusEnum.SUCCESS
62   - : SysSmsSendStatusEnum.FAILURE;
63   - smsLogMapper.updateById(SysSmsLogDO.builder().id(id).sendStatus(sendStatus.getStatus()).sendTime(new Date())
64   - .sendCode(sendCode).sendMsg(sendMsg).apiSendCode(apiSendCode).apiSendMsg(apiSendMsg)
65   - .apiRequestId(apiRequestId).apiSerialNo(apiSerialNo).build());
66   - }
67   -
68   - @Override
69   - public void updateSmsReceiveResult(Long id, Boolean success, Date receiveTime, String apiReceiveCode, String apiReceiveMsg) {
70   - SysSmsReceiveStatusEnum receiveStatus = Objects.equals(success, true) ? SysSmsReceiveStatusEnum.SUCCESS
71   - : SysSmsReceiveStatusEnum.FAILURE;
72   - smsLogMapper.updateById(SysSmsLogDO.builder().id(id).receiveStatus(receiveStatus.getStatus()).receiveTime(receiveTime)
73   - .apiReceiveCode(apiReceiveCode).apiReceiveMsg(apiReceiveMsg).build());
74   - }
75   -
76   - @Override
77 29 public PageResult<SysSmsLogDO> getSmsLogPage(SysSmsLogPageReqVO pageReqVO) {
78 30 return smsLogMapper.selectPage(pageReqVO);
79 31 }
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsTemplateServiceImpl.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.service.sms.impl;
2 2  
3   -import cn.hutool.core.collection.CollUtil;
4 3 import cn.hutool.core.util.ReUtil;
5   -import cn.hutool.core.util.StrUtil;
6   -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
7   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
8   -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
9   -import cn.iocoder.yudao.framework.sms.core.client.SmsClient;
10   -import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory;
11   -import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult;
12   -import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO;
13 4 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO;
14 5 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO;
15 6 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO;
16 7 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO;
17 8 import cn.iocoder.yudao.adminserver.modules.system.convert.sms.SysSmsTemplateConvert;
18   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsChannelDO;
19   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
20 9 import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms.SysSmsTemplateMapper;
21 10 import cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms.SysSmsProducer;
22 11 import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsChannelService;
23 12 import cn.iocoder.yudao.adminserver.modules.system.service.sms.SysSmsTemplateService;
  13 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO;
  14 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
  15 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  16 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  17 +import cn.iocoder.yudao.framework.sms.core.client.SmsClient;
  18 +import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory;
  19 +import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult;
  20 +import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO;
24 21 import com.google.common.annotations.VisibleForTesting;
25   -import com.google.common.collect.ImmutableMap;
26 22 import lombok.extern.slf4j.Slf4j;
27   -import org.springframework.scheduling.annotation.Scheduled;
28 23 import org.springframework.stereotype.Service;
29 24 import org.springframework.util.Assert;
30 25  
31   -import javax.annotation.PostConstruct;
32 26 import javax.annotation.Resource;
33   -import java.util.*;
  27 +import java.util.Collection;
  28 +import java.util.List;
  29 +import java.util.Objects;
34 30 import java.util.regex.Pattern;
35 31  
36   -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
37 32 import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.*;
  33 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
38 34  
39 35 /**
40 36 * 短信模板Service实现类
... ... @@ -51,24 +47,6 @@ public class SysSmsTemplateServiceImpl implements SysSmsTemplateService {
51 47 */
52 48 private static final Pattern PATTERN_PARAMS = Pattern.compile("\\{(.*?)}");
53 49  
54   - /**
55   - * 定时执行 {@link #schedulePeriodicRefresh()} 的周期
56   - * 因为已经通过 Redis Pub/Sub 机制,所以频率不需要高
57   - */
58   - private static final long SCHEDULER_PERIOD = 5 * 60 * 1000L;
59   -
60   - /**
61   - * 短信模板缓存
62   - * key:短信模板编码 {@link SysSmsTemplateDO#getCode()}
63   - *
64   - * 这里声明 volatile 修饰的原因是,每次刷新时,直接修改指向
65   - */
66   - private volatile Map<String, SysSmsTemplateDO> smsTemplateCache;
67   - /**
68   - * 缓存短信模板的最大更新时间,用于后续的增量轮询,判断是否有更新
69   - */
70   - private volatile Date maxUpdateTime;
71   -
72 50 @Resource
73 51 private SysSmsTemplateMapper smsTemplateMapper;
74 52  
... ... @@ -81,68 +59,11 @@ public class SysSmsTemplateServiceImpl implements SysSmsTemplateService {
81 59 @Resource
82 60 private SysSmsProducer smsProducer;
83 61  
84   - /**
85   - * 初始化 {@link #smsTemplateCache} 缓存
86   - */
87   - @Override
88   - @PostConstruct
89   - public void initLocalCache() {
90   - // 获取短信模板列表,如果有更新
91   - List<SysSmsTemplateDO> smsTemplateList = this.loadSmsTemplateIfUpdate(maxUpdateTime);
92   - if (CollUtil.isEmpty(smsTemplateList)) {
93   - return;
94   - }
95   -
96   - // 写入缓存
97   - ImmutableMap.Builder<String, SysSmsTemplateDO> builder = ImmutableMap.builder();
98   - smsTemplateList.forEach(sysSmsTemplateDO -> builder.put(sysSmsTemplateDO.getCode(), sysSmsTemplateDO));
99   - smsTemplateCache = builder.build();
100   - assert smsTemplateList.size() > 0; // 断言,避免告警
101   - maxUpdateTime = smsTemplateList.stream().max(Comparator.comparing(BaseDO::getUpdateTime)).get().getUpdateTime();
102   - log.info("[initLocalCache][初始化 SmsTemplate 数量为 {}]", smsTemplateList.size());
103   - }
104   -
105   - @Scheduled(fixedDelay = SCHEDULER_PERIOD, initialDelay = SCHEDULER_PERIOD)
106   - public void schedulePeriodicRefresh() {
107   - initLocalCache();
108   - }
109   -
110   - /**
111   - * 如果短信模板发生变化,从数据库中获取最新的全量短信模板。
112   - * 如果未发生变化,则返回空
113   - *
114   - * @param maxUpdateTime 当前短信模板的最大更新时间
115   - * @return 短信模板列表
116   - */
117   - private List<SysSmsTemplateDO> loadSmsTemplateIfUpdate(Date maxUpdateTime) {
118   - // 第一步,判断是否要更新。
119   - if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据
120   - log.info("[loadSmsTemplateIfUpdate][首次加载全量短信模板]");
121   - } else { // 判断数据库中是否有更新的短信模板
122   - if (smsTemplateMapper.selectExistsByUpdateTimeAfter(maxUpdateTime) == null) {
123   - return null;
124   - }
125   - log.info("[loadSmsTemplateIfUpdate][增量加载全量短信模板]");
126   - }
127   - // 第二步,如果有更新,则从数据库加载所有短信模板
128   - return smsTemplateMapper.selectList();
129   - }
130   -
131 62 @Override
132 63 public SysSmsTemplateDO getSmsTemplateByCode(String code) {
133 64 return smsTemplateMapper.selectByCode(code);
134 65 }
135 66  
136   - @Override
137   - public SysSmsTemplateDO getSmsTemplateByCodeFromCache(String code) {
138   - return smsTemplateCache.get(code);
139   - }
140   -
141   - @Override
142   - public String formatSmsTemplateContent(String content, Map<String, Object> params) {
143   - return StrUtil.format(content, params);
144   - }
145   -
146 67 @VisibleForTesting
147 68 public List<String> parseTemplateContentParams(String content) {
148 69 return ReUtil.findAllGroup1(PATTERN_PARAMS, content);
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/user/SysUserService.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.service.user;
2 2  
3 3 import cn.hutool.core.collection.CollUtil;
4   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 4 import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
6 5 import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserCreateReqVO;
8   -import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserExportReqVO;
9   -import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserImportExcelVO;
10   -import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserImportRespVO;
11   -import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserPageReqVO;
12   -import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.SysUserUpdateReqVO;
13   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
  6 +import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.*;
  7 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
  8 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
14 9 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
15 10  
16 11 import java.io.InputStream;
... ... @@ -20,7 +15,7 @@ import java.util.List;
20 15 import java.util.Map;
21 16  
22 17 /**
23   - * 用户 Service 接口
  18 + * 后台用户 Service 接口
24 19 *
25 20 * @author 芋道源码
26 21 */
... ... @@ -42,6 +37,14 @@ public interface SysUserService {
42 37 void updateUser(SysUserUpdateReqVO reqVO);
43 38  
44 39 /**
  40 + * 更新用户的最后登陆信息
  41 + *
  42 + * @param id 用户编号
  43 + * @param loginIp 登陆 IP
  44 + */
  45 + void updateUserLogin(Long id, String loginIp);
  46 +
  47 + /**
45 48 * 修改用户个人信息
46 49 *
47 50 * @param id 用户编号
... ... @@ -97,14 +100,6 @@ public interface SysUserService {
97 100 SysUserDO getUserByUsername(String username);
98 101  
99 102 /**
100   - * 通过用户 ID 查询用户
101   - *
102   - * @param id 用户ID
103   - * @return 用户对象信息
104   - */
105   - SysUserDO getUser(Long id);
106   -
107   - /**
108 103 * 获得用户分页列表
109 104 *
110 105 * @param reqVO 分页条件
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/user/impl/SysUserServiceImpl.java
... ... @@ -11,12 +11,12 @@ import cn.iocoder.yudao.adminserver.modules.system.controller.user.vo.user.*;
11 11 import cn.iocoder.yudao.adminserver.modules.system.convert.user.SysUserConvert;
12 12 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO;
13 13 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysPostDO;
14   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
15 14 import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.user.SysUserMapper;
16 15 import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysDeptService;
17 16 import cn.iocoder.yudao.adminserver.modules.system.service.dept.SysPostService;
18 17 import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
19 18 import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
  19 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
20 20 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
21 21 import cn.iocoder.yudao.framework.common.exception.ServiceException;
22 22 import cn.iocoder.yudao.framework.common.pojo.PageResult;
... ... @@ -85,6 +85,11 @@ public class SysUserServiceImpl implements SysUserService {
85 85 }
86 86  
87 87 @Override
  88 + public void updateUserLogin(Long id, String loginIp) {
  89 + userMapper.updateById(new SysUserDO().setId(id).setLoginIp(loginIp).setLoginDate(new Date()));
  90 + }
  91 +
  92 + @Override
88 93 public void updateUserProfile(Long id, SysUserProfileUpdateReqVO reqVO) {
89 94 // 校验正确性
90 95 this.checkUserExists(id);
... ... @@ -155,11 +160,6 @@ public class SysUserServiceImpl implements SysUserService {
155 160 }
156 161  
157 162 @Override
158   - public SysUserDO getUser(Long id) {
159   - return userMapper.selectById(id);
160   - }
161   -
162   - @Override
163 163 public PageResult<SysUserDO> getUserPage(SysUserPageReqVO reqVO) {
164 164 return userMapper.selectPage(reqVO, this.getDeptCondition(reqVO.getDeptId()));
165 165 }
... ...
yudao-admin-server/src/main/resources/application-dev.yaml
... ... @@ -99,7 +99,7 @@ apollo:
99 99 eagerLoad:
100 100 enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置
101 101 jdbc: # 自定义的 JDBC 配置项,用于数据库的地址
102   - dao: cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.config.InfConfigDAOImpl
  102 + dao: cn.iocoder.yudao.coreservice.modules.infra.dal.mysql.config.InfConfigCoreDAOImpl
103 103 url: ${spring.datasource.dynamic.datasource.master.url}
104 104 username: ${spring.datasource.dynamic.datasource.master.username}
105 105 password: ${spring.datasource.dynamic.datasource.master.password}
... ...
yudao-admin-server/src/main/resources/application-local.yaml
... ... @@ -99,7 +99,7 @@ apollo:
99 99 eagerLoad:
100 100 enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置
101 101 jdbc: # 自定义的 JDBC 配置项,用于数据库的地址
102   - dao: cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.config.InfConfigDAOImpl
  102 + dao: cn.iocoder.yudao.coreservice.modules.infra.dal.mysql.config.InfConfigCoreDAOImpl
103 103 url: ${spring.datasource.dynamic.datasource.master.url}
104 104 username: ${spring.datasource.dynamic.datasource.master.username}
105 105 password: ${spring.datasource.dynamic.datasource.master.password}
... ...
yudao-admin-server/src/main/resources/application.yaml
... ... @@ -31,7 +31,7 @@ mybatis-plus:
31 31 logic-delete-value: 1 # 逻辑已删除值(默认为 1)
32 32 logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
33 33 mapper-locations: classpath*:mapper/*.xml
34   - type-aliases-package: ${yudao.info.base-package}.modules.*.dal.dataobject
  34 + type-aliases-package: ${yudao.info.base-package}.modules.*.dal.dataobject, ${yudao.core-service.base-package}.modules.*.dal.dataobject
35 35  
36 36 --- #################### 芋道相关配置 ####################
37 37  
... ... @@ -39,6 +39,8 @@ yudao:
39 39 info:
40 40 version: 1.0.0
41 41 base-package: cn.iocoder.yudao.adminserver
  42 + core-service:
  43 + base-package: cn.iocoder.yudao.coreservice
42 44 web:
43 45 api-prefix: /api
44 46 controller-package: ${yudao.info.base-package}
... ...
yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/framework/redis/core/stream/RedisStreamTest.java
... ... @@ -5,7 +5,7 @@ import cn.iocoder.yudao.adminserver.BaseRedisIntegrationTest;
5 5 import cn.iocoder.yudao.adminserver.modules.system.mq.consumer.mail.SysMailSendConsumer;
6 6 import cn.iocoder.yudao.adminserver.modules.system.mq.consumer.sms.SysSmsSendConsumer;
7 7 import cn.iocoder.yudao.adminserver.modules.system.mq.message.mail.SysMailSendMessage;
8   -import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsSendMessage;
  8 +import cn.iocoder.yudao.coreservice.modules.system.mq.message.sms.SysSmsSendMessage;
9 9 import cn.iocoder.yudao.framework.mq.core.util.RedisMessageUtils;
10 10 import org.junit.jupiter.api.Disabled;
11 11 import org.junit.jupiter.api.Test;
... ...
yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsServiceIntegrationTest.java
... ... @@ -7,9 +7,9 @@ import cn.iocoder.yudao.adminserver.modules.system.mq.consumer.sms.SysSmsSendCon
7 7 import cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms.SysSmsProducer;
8 8 import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsChannelServiceImpl;
9 9 import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsLogServiceImpl;
10   -import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsServiceImpl;
11 10 import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsTemplateServiceImpl;
12 11 import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
  12 +import cn.iocoder.yudao.coreservice.modules.system.service.sms.impl.SysSmsCoreServiceImpl;
13 13 import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
14 14 import cn.iocoder.yudao.framework.sms.config.YudaoSmsAutoConfiguration;
15 15 import org.junit.jupiter.api.Test;
... ... @@ -20,13 +20,14 @@ import javax.annotation.Resource;
20 20 import java.util.Map;
21 21 import java.util.concurrent.TimeUnit;
22 22  
  23 +// TODO @芋艿:需要迁移
23 24 @Import({YudaoSmsAutoConfiguration.class,
24   - SysSmsChannelServiceImpl.class, SysSmsServiceImpl.class, SysSmsTemplateServiceImpl.class, SysSmsLogServiceImpl.class,
  25 + SysSmsChannelServiceImpl.class, SysSmsCoreServiceImpl.class, SysSmsTemplateServiceImpl.class, SysSmsLogServiceImpl.class,
25 26 SysSmsProducer.class, SysSmsSendConsumer.class})
26 27 public class SysSmsServiceIntegrationTest extends BaseDbAndRedisIntegrationTest {
27 28  
28 29 @Resource
29   - private SysSmsServiceImpl smsService;
  30 + private SysSmsCoreServiceImpl smsService;
30 31 @Resource
31 32 private SysSmsChannelServiceImpl smsChannelService;
32 33  
... ...
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/BaseRedisUnitTest.java
... ... @@ -24,7 +24,7 @@ public class BaseRedisUnitTest {
24 24 // Redis 配置类
25 25 RedisTestConfiguration.class, // Redis 测试配置类,用于启动 RedisServer
26 26 RedisAutoConfiguration.class, // Spring Redis 自动配置类
27   - YudaoTracerAutoConfiguration.class, // 自己的 Redis 配置类
  27 + YudaoRedisAutoConfiguration.class, // 自己的 Redis 配置类
28 28 RedissonAutoConfiguration.class, // Redisson 自动高配置类
29 29 })
30 30 public static class Application {
... ...
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/config/InfConfigServiceTest.java
1 1 package cn.iocoder.yudao.adminserver.modules.infra.service.config;
2 2  
3 3 import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
  4 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.config.InfConfigDO;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 6 import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigCreateReqVO;
6 7 import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigExportReqVO;
7 8 import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigPageReqVO;
8 9 import cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo.InfConfigUpdateReqVO;
9   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.config.InfConfigDO;
10 10 import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.config.InfConfigMapper;
11 11 import cn.iocoder.yudao.adminserver.modules.infra.enums.config.InfConfigTypeEnum;
12 12 import cn.iocoder.yudao.adminserver.modules.infra.mq.producer.config.InfConfigProducer;
... ...
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/file/InfFileServiceTest.java
... ... @@ -2,14 +2,15 @@ package cn.iocoder.yudao.adminserver.modules.infra.service.file;
2 2  
3 3 import cn.hutool.core.io.resource.ResourceUtil;
4 4 import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
  5 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.file.InfFileDO;
5 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 7 import cn.iocoder.yudao.adminserver.modules.infra.framework.file.config.FileProperties;
7 8 import cn.iocoder.yudao.adminserver.modules.infra.controller.file.vo.InfFilePageReqVO;
8   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.file.InfFileDO;
9 9 import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.file.InfFileMapper;
10 10 import cn.iocoder.yudao.adminserver.modules.infra.service.file.impl.InfFileServiceImpl;
11 11 import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
12 12 import org.junit.jupiter.api.Test;
  13 +import org.springframework.boot.test.mock.mockito.MockBean;
13 14 import org.springframework.context.annotation.Import;
14 15  
15 16 import javax.annotation.Resource;
... ... @@ -29,8 +30,9 @@ public class InfFileServiceTest extends BaseDbUnitTest {
29 30 @Resource
30 31 private InfFileServiceImpl fileService;
31 32  
32   - @Resource
  33 + @MockBean
33 34 private FileProperties fileProperties;
  35 +
34 36 @Resource
35 37 private InfFileMapper fileMapper;
36 38  
... ...
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiAccessLogServiceImplTest.java
... ... @@ -2,13 +2,13 @@ package cn.iocoder.yudao.adminserver.modules.infra.service.logger;
2 2  
3 3 import cn.hutool.core.util.RandomUtil;
4 4 import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
  5 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiAccessLogDO;
5 6 import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
6 7 import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants;
7 8 import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 9 import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateDTO;
9 10 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO;
10 11 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO;
11   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiAccessLogDO;
12 12 import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.logger.InfApiAccessLogMapper;
13 13 import cn.iocoder.yudao.adminserver.modules.infra.service.logger.impl.InfApiAccessLogServiceImpl;
14 14 import cn.iocoder.yudao.framework.test.core.util.RandomUtils;
... ... @@ -39,26 +39,6 @@ public class InfApiAccessLogServiceImplTest extends BaseDbUnitTest {
39 39 private InfApiAccessLogMapper infApiAccessLogMapper;
40 40  
41 41 @Test
42   - public void testCreateApiAccessLogAsync() throws Exception {
43   - ApiAccessLogCreateDTO createDTO = RandomUtils.randomPojo(
44   - ApiAccessLogCreateDTO.class,
45   - dto -> dto.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue())
46   - );
47   -
48   - // 执行service方法
49   - Future<Boolean> future = infApiAccessLogServiceImpl.createApiAccessLogAsync(createDTO);
50   -
51   - // 等异步执行完
52   - future.get();
53   -
54   - InfApiAccessLogDO infApiAccessLogDO = infApiAccessLogMapper.selectOne(null);
55   - // 断言
56   - assertNotNull(infApiAccessLogDO);
57   - // 断言,忽略基本字段
58   - assertPojoEquals(createDTO, infApiAccessLogDO);
59   - }
60   -
61   - @Test
62 42 public void testGetApiAccessLogPage() {
63 43 // 构造测试数据
64 44 long userId = 2233L;
... ...
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiErrorLogServiceImplTest.java
... ... @@ -2,12 +2,12 @@ package cn.iocoder.yudao.adminserver.modules.infra.service.logger;
2 2  
3 3 import cn.hutool.core.util.RandomUtil;
4 4 import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
  5 +import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiErrorLogDO;
5 6 import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
6 7 import cn.iocoder.yudao.framework.common.pojo.PageResult;
7 8 import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateDTO;
8 9 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExportReqVO;
9 10 import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogPageReqVO;
10   -import cn.iocoder.yudao.adminserver.modules.infra.dal.dataobject.logger.InfApiErrorLogDO;
11 11 import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.logger.InfApiErrorLogMapper;
12 12 import cn.iocoder.yudao.adminserver.modules.infra.enums.logger.InfApiErrorLogProcessStatusEnum;
13 13 import cn.iocoder.yudao.adminserver.modules.infra.service.logger.impl.InfApiErrorLogServiceImpl;
... ... @@ -41,28 +41,6 @@ public class InfApiErrorLogServiceImplTest extends BaseDbUnitTest {
41 41 @Resource
42 42 private InfApiErrorLogMapper infApiErrorLogMapper;
43 43  
44   -
45   - @Test
46   - public void testCreateApiErrorLogAsync() throws Exception {
47   - ApiErrorLogCreateDTO createDTO = RandomUtils.randomPojo(
48   - ApiErrorLogCreateDTO.class,
49   - dto -> dto.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue())
50   - );
51   -
52   - // 执行service方法
53   - Future<Boolean> future = infApiErrorLogServiceImpl.createApiErrorLogAsync(createDTO);
54   -
55   - // 等异步执行完
56   - future.get();
57   -
58   - InfApiErrorLogDO infApiErrorLogDO = infApiErrorLogMapper.selectOne(null);
59   - // 断言
60   - assertNotNull(infApiErrorLogDO);
61   - // 断言,忽略基本字段
62   - assertPojoEquals(createDTO, infApiErrorLogDO);
63   - }
64   -
65   -
66 44 @Test
67 45 public void testGetApiErrorLogPage() {
68 46 // 构造测试数据
... ... @@ -204,4 +182,5 @@ public class InfApiErrorLogServiceImplTest extends BaseDbUnitTest {
204 182 // 验证 progressUserId 是否修改成功
205 183 assertEquals(processUserId, secondSelect.getProcessUserId());
206 184 }
  185 +
207 186 }
... ...
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysAuthServiceImplTest.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.service.auth;
2 2  
3 3 import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
4   -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
5   -import cn.iocoder.yudao.framework.security.core.LoginUser;
6 4 import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.auth.SysAuthLoginReqVO;
7   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
8 5 import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeEnum;
9 6 import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum;
10 7 import cn.iocoder.yudao.adminserver.modules.system.service.auth.impl.SysAuthServiceImpl;
11 8 import cn.iocoder.yudao.adminserver.modules.system.service.common.SysCaptchaService;
12   -import cn.iocoder.yudao.adminserver.modules.system.service.logger.SysLoginLogService;
13 9 import cn.iocoder.yudao.adminserver.modules.system.service.permission.SysPermissionService;
  10 +import cn.iocoder.yudao.adminserver.modules.system.service.social.SysSocialService;
14 11 import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
  12 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
  13 +import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService;
  14 +import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService;
  15 +import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService;
  16 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  17 +import cn.iocoder.yudao.framework.security.core.LoginUser;
15 18 import cn.iocoder.yudao.framework.test.core.util.AssertUtils;
16 19 import org.junit.jupiter.api.Test;
17 20 import org.springframework.boot.test.mock.mockito.MockBean;
... ... @@ -49,6 +52,8 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest {
49 52 @MockBean
50 53 private SysUserService userService;
51 54 @MockBean
  55 + private SysUserCoreService userCoreService;
  56 + @MockBean
52 57 private SysPermissionService permissionService;
53 58 @MockBean
54 59 private AuthenticationManager authenticationManager;
... ... @@ -57,9 +62,11 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest {
57 62 @MockBean
58 63 private SysCaptchaService captchaService;
59 64 @MockBean
60   - private SysLoginLogService loginLogService;
  65 + private SysLoginLogCoreService loginLogCoreService;
  66 + @MockBean
  67 + private SysUserSessionCoreService userSessionCoreService;
61 68 @MockBean
62   - private SysUserSessionService userSessionService;
  69 + private SysSocialService socialService;
63 70  
64 71 @Test
65 72 public void testLoadUserByUsername_success() {
... ... @@ -94,7 +101,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest {
94 101 Long userId = randomLongId();
95 102 // mock 方法 01
96 103 SysUserDO user = randomPojo(SysUserDO.class, o -> o.setId(userId));
97   - when(userService.getUser(eq(userId))).thenReturn(user);
  104 + when(userCoreService.getUser(eq(userId))).thenReturn(user);
98 105 // mock 方法 02
99 106 Set<Long> roleIds = randomSet(Long.class);
100 107 when(permissionService.getUserRoleIds(eq(userId), eq(singleton(CommonStatusEnum.ENABLE.getStatus()))))
... ... @@ -128,7 +135,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest {
128 135 // 调用, 并断言异常
129 136 assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_CAPTCHA_NOT_FOUND);
130 137 // 校验调用参数
131   - verify(loginLogService, times(1)).createLoginLog(
  138 + verify(loginLogCoreService, times(1)).createLoginLog(
132 139 argThat(o -> o.getLogType().equals(SysLoginLogTypeEnum.LOGIN_USERNAME.getType())
133 140 && o.getResult().equals(SysLoginResultEnum.CAPTCHA_NOT_FOUND.getResult()))
134 141 );
... ... @@ -146,7 +153,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest {
146 153 // 调用, 并断言异常
147 154 assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_CAPTCHA_CODE_ERROR);
148 155 // 校验调用参数
149   - verify(loginLogService, times(1)).createLoginLog(
  156 + verify(loginLogCoreService, times(1)).createLoginLog(
150 157 argThat(o -> o.getLogType().equals(SysLoginLogTypeEnum.LOGIN_USERNAME.getType())
151 158 && o.getResult().equals(SysLoginResultEnum.CAPTCHA_CODE_ERROR.getResult()))
152 159 );
... ... @@ -167,7 +174,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest {
167 174 assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_BAD_CREDENTIALS);
168 175 // 校验调用参数
169 176 verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid());
170   - verify(loginLogService, times(1)).createLoginLog(
  177 + verify(loginLogCoreService, times(1)).createLoginLog(
171 178 argThat(o -> o.getLogType().equals(SysLoginLogTypeEnum.LOGIN_USERNAME.getType())
172 179 && o.getResult().equals(SysLoginResultEnum.BAD_CREDENTIALS.getResult()))
173 180 );
... ... @@ -188,7 +195,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest {
188 195 assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_USER_DISABLED);
189 196 // 校验调用参数
190 197 verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid());
191   - verify(loginLogService, times(1)).createLoginLog(
  198 + verify(loginLogCoreService, times(1)).createLoginLog(
192 199 argThat(o -> o.getLogType().equals(SysLoginLogTypeEnum.LOGIN_USERNAME.getType())
193 200 && o.getResult().equals(SysLoginResultEnum.USER_DISABLED.getResult()))
194 201 );
... ... @@ -209,7 +216,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest {
209 216 assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_FAIL_UNKNOWN);
210 217 // 校验调用参数
211 218 verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid());
212   - verify(loginLogService, times(1)).createLoginLog(
  219 + verify(loginLogCoreService, times(1)).createLoginLog(
213 220 argThat(o -> o.getLogType().equals(SysLoginLogTypeEnum.LOGIN_USERNAME.getType())
214 221 && o.getResult().equals(SysLoginResultEnum.UNKNOWN_ERROR.getResult()))
215 222 );
... ... @@ -237,13 +244,13 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest {
237 244 // mock 获得 User 拥有的角色编号数组
238 245 when(permissionService.getUserRoleIds(userId, singleton(CommonStatusEnum.ENABLE.getStatus()))).thenReturn(userRoleIds);
239 246 // mock 缓存登录用户到 Redis
240   - when(userSessionService.createUserSession(loginUser, userIp, userAgent)).thenReturn(sessionId);
  247 + when(userSessionCoreService.createUserSession(loginUser, userIp, userAgent)).thenReturn(sessionId);
241 248 // 调用, 并断言异常
242 249 String login = authService.login(reqVO, userIp, userAgent);
243 250 assertEquals(sessionId, login);
244 251 // 校验调用参数
245 252 verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid());
246   - verify(loginLogService, times(1)).createLoginLog(
  253 + verify(loginLogCoreService, times(1)).createLoginLog(
247 254 argThat(o -> o.getLogType().equals(SysLoginLogTypeEnum.LOGIN_USERNAME.getType())
248 255 && o.getResult().equals(SysLoginResultEnum.SUCCESS.getResult()))
249 256 );
... ... @@ -255,12 +262,12 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest {
255 262 String token = randomString();
256 263 LoginUser loginUser = randomPojo(LoginUser.class);
257 264 // mock
258   - when(userSessionService.getLoginUser(token)).thenReturn(loginUser);
  265 + when(userSessionCoreService.getLoginUser(token)).thenReturn(loginUser);
259 266 // 调用
260 267 authService.logout(token);
261 268 // 校验调用参数
262   - verify(userSessionService, times(1)).deleteUserSession(token);
263   - verify(loginLogService, times(1)).createLoginLog(
  269 + verify(userSessionCoreService, times(1)).deleteUserSession(token);
  270 + verify(loginLogCoreService, times(1)).createLoginLog(
264 271 argThat(o -> o.getLogType().equals(SysLoginLogTypeEnum.LOGOUT_SELF.getType())
265 272 && o.getResult().equals(SysLoginResultEnum.SUCCESS.getResult()))
266 273 );
... ...
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/auth/SysUserSessionServiceImplTest.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.service.auth;
2 2  
3   -import static cn.hutool.core.util.RandomUtil.randomEle;
4   -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
5   -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomDate;
6   -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
7   -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
8   -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString;
9   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime;
10   -import static org.junit.jupiter.api.Assertions.assertEquals;
11   -import static org.junit.jupiter.api.Assertions.assertNotEquals;
12   -import static org.junit.jupiter.api.Assertions.assertNotNull;
13   -import static org.junit.jupiter.api.Assertions.assertNull;
14   -import static org.mockito.Mockito.when;
15   -
16   -import java.time.Duration;
17   -import java.util.Date;
18   -import java.util.List;
19   -import java.util.stream.Collectors;
20   -import java.util.stream.Stream;
21   -
22   -import javax.annotation.Resource;
23   -
24   -import org.junit.jupiter.api.Test;
25   -import org.springframework.boot.test.mock.mockito.MockBean;
26   -import org.springframework.context.annotation.Import;
27   -
28 3 import cn.hutool.core.date.DateUtil;
29 4 import cn.iocoder.yudao.adminserver.BaseDbAndRedisUnitTest;
30   -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
31   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
32   -import cn.iocoder.yudao.framework.security.config.SecurityProperties;
33   -import cn.iocoder.yudao.framework.security.core.LoginUser;
34 5 import cn.iocoder.yudao.adminserver.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO;
35   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.auth.SysUserSessionDO;
36   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
37 6 import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.auth.SysUserSessionMapper;
38   -import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.user.SysUserMapper;
39   -import cn.iocoder.yudao.adminserver.modules.system.dal.redis.auth.SysLoginUserRedisDAO;
40   -import cn.iocoder.yudao.adminserver.modules.system.enums.common.SysSexEnum;
41 7 import cn.iocoder.yudao.adminserver.modules.system.service.auth.impl.SysUserSessionServiceImpl;
42   -import cn.iocoder.yudao.adminserver.modules.system.service.dept.impl.SysDeptServiceImpl;
43   -import cn.iocoder.yudao.adminserver.modules.system.service.logger.impl.SysLoginLogServiceImpl;
44   -import cn.iocoder.yudao.adminserver.modules.system.service.user.impl.SysUserServiceImpl;
45   -import cn.iocoder.yudao.framework.test.core.util.AssertUtils;
46   -import cn.iocoder.yudao.framework.test.core.util.RandomUtils;
  8 +import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
  9 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO;
  10 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
  11 +import cn.iocoder.yudao.coreservice.modules.system.dal.redis.auth.SysLoginUserCoreRedisDAO;
  12 +import cn.iocoder.yudao.coreservice.modules.system.enums.common.SysSexEnum;
  13 +import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService;
  14 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  15 +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
  16 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
47 17 import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
  18 +import cn.iocoder.yudao.framework.test.core.util.AssertUtils;
  19 +import org.junit.jupiter.api.Test;
  20 +import org.springframework.boot.test.mock.mockito.MockBean;
  21 +import org.springframework.context.annotation.Import;
  22 +
  23 +import javax.annotation.Resource;
  24 +import java.util.Date;
  25 +import java.util.List;
  26 +import java.util.stream.Collectors;
  27 +import java.util.stream.Stream;
  28 +
  29 +import static cn.hutool.core.util.RandomUtil.randomEle;
  30 +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
  31 +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
  32 +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString;
  33 +import static java.util.Collections.singletonList;
  34 +import static org.junit.jupiter.api.Assertions.assertEquals;
  35 +import static org.mockito.ArgumentMatchers.eq;
  36 +import static org.mockito.Mockito.when;
48 37  
49 38 /**
50   - * SysUserSessionServiceImpl Tester.
  39 + * {@link SysUserSessionServiceImpl} 的单元测试
51 40 *
52 41 * @author Lyon
53   - * @version 1.0
54   - * @since <pre>3月 8, 2021</pre>
55 42 */
56   -@Import({SysUserSessionServiceImpl.class, SysLoginUserRedisDAO.class})
  43 +@Import({SysUserSessionServiceImpl.class})
57 44 public class SysUserSessionServiceImplTest extends BaseDbAndRedisUnitTest {
58 45  
59 46 @Resource
60   - private SysUserSessionServiceImpl sysUserSessionService;
61   - @Resource
62   - private SysUserSessionMapper sysUserSessionMapper;
63   - @Resource
64   - private SysLoginUserRedisDAO sysLoginUserRedisDAO;
  47 + private SysUserSessionServiceImpl userSessionService;
  48 +
65 49 @Resource
66   - private SysUserMapper sysUserMapper;
  50 + private SysUserSessionMapper userSessionMapper;
67 51  
68 52 @MockBean
69   - private SecurityProperties securityProperties;
  53 + private SysUserService userService;
70 54 @MockBean
71   - private SysDeptServiceImpl sysDeptService;
  55 + private SysLoginLogCoreService loginLogCoreService;
72 56 @MockBean
73   - private SysUserServiceImpl sysUserService;
74   - @MockBean
75   - private SysLoginLogServiceImpl sysLoginLogService;
76   -
77   - @Test
78   - public void testCreateUserSession_success() {
79   - // 准备参数
80   - String userIp = randomString();
81   - String userAgent = randomString();
82   - LoginUser loginUser = randomPojo(LoginUser.class);
83   - // mock
84   - when(securityProperties.getSessionTimeout()).thenReturn(Duration.ofDays(1));
85   - // 调用
86   - String sessionId = sysUserSessionService.createUserSession(loginUser, userIp, userAgent);
87   - // 校验记录的属性是否正确
88   - SysUserSessionDO sysUserSessionDO = sysUserSessionMapper.selectById(sessionId);
89   - assertEquals(sysUserSessionDO.getId(), sessionId);
90   - assertEquals(sysUserSessionDO.getUserId(), loginUser.getId());
91   - assertEquals(sysUserSessionDO.getUserIp(), userIp);
92   - assertEquals(sysUserSessionDO.getUserAgent(), userAgent);
93   - assertEquals(sysUserSessionDO.getUsername(), loginUser.getUsername());
94   - LoginUser redisLoginUser = sysLoginUserRedisDAO.get(sessionId);
95   - AssertUtils.assertPojoEquals(redisLoginUser, loginUser, "username","password");
96   - }
97   -
98   - @Test
99   - public void testCreateRefreshUserSession_success() {
100   - // 准备参数
101   - String sessionId = randomString();
102   - String userIp = randomString();
103   - String userAgent = randomString();
104   - Long timeLong = randomLongId();
105   - String userName = randomString();
106   - Date date = randomDate();
107   - LoginUser loginUser = randomPojo(LoginUser.class);
108   - // mock
109   - when(securityProperties.getSessionTimeout()).thenReturn(Duration.ofDays(1));
110   - loginUser.setUpdateTime(date);
111   - sysLoginUserRedisDAO.set(sessionId, loginUser);
112   - SysUserSessionDO userSession = SysUserSessionDO.builder().id(sessionId)
113   - .userId(loginUser.getId()).userIp(userIp).userAgent(userAgent).username(userName)
114   - .sessionTimeout(addTime(Duration.ofMillis(timeLong)))
115   - .build();
116   - sysUserSessionMapper.insert(userSession);
117   - SysUserSessionDO insertDO = sysUserSessionMapper.selectById(sessionId);
118   - // 调用
119   - sysUserSessionService.refreshUserSession(sessionId, loginUser);
120   - // 校验记录 redis
121   - LoginUser redisLoginUser = sysLoginUserRedisDAO.get(sessionId);
122   - assertNotEquals(redisLoginUser.getUpdateTime(), date);
123   - // 校验记录 SysUserSessionDO
124   - SysUserSessionDO updateDO = sysUserSessionMapper.selectById(sessionId);
125   - assertEquals(updateDO.getUsername(), loginUser.getUsername());
126   - assertNotEquals(updateDO.getUpdateTime(), insertDO.getUpdateTime());
127   - assertNotEquals(updateDO.getSessionTimeout(), addTime(Duration.ofMillis(timeLong)));
128   - }
129   -
130   - @Test
131   - public void testDeleteUserSession_success() {
132   - // 准备参数
133   - String sessionId = randomString();
134   - String userIp = randomString();
135   - String userAgent = randomString();
136   - Long timeLong = randomLongId();
137   - LoginUser loginUser = randomPojo(LoginUser.class);
138   - // mock 存入 Redis
139   - when(securityProperties.getSessionTimeout()).thenReturn(Duration.ofDays(1));
140   - sysLoginUserRedisDAO.set(sessionId, loginUser);
141   - // mock 存入 db
142   - SysUserSessionDO userSession = SysUserSessionDO.builder().id(sessionId)
143   - .userId(loginUser.getId()).userIp(userIp).userAgent(userAgent).username(loginUser.getUsername())
144   - .sessionTimeout(addTime(Duration.ofMillis(timeLong)))
145   - .build();
146   - sysUserSessionMapper.insert(userSession);
147   - // 校验数据存在
148   - assertNotNull(sysLoginUserRedisDAO.get(sessionId));
149   - assertNotNull(sysUserSessionMapper.selectById(sessionId));
150   - // 调用
151   - sysUserSessionService.deleteUserSession(sessionId);
152   - // 校验数据不存在了
153   - assertNull(sysLoginUserRedisDAO.get(sessionId));
154   - assertNull(sysUserSessionMapper.selectById(sessionId));
155   - }
  57 + private SysLoginUserCoreRedisDAO loginUserCoreRedisDAO;
156 58  
157 59 @Test
158 60 public void testGetUserSessionPage_success() {
159 61 // mock 数据
160   - String userIp = randomString();
161   - SysUserDO dbUser1 = randomPojo(SysUserDO.class, o -> {
162   - o.setUsername("testUsername1");
163   - o.setSex(randomEle(SysSexEnum.values()).getSex());
164   - o.setStatus(CommonStatusEnum.ENABLE.getStatus());
165   - });
166   - SysUserDO dbUser2 = randomPojo(SysUserDO.class, o -> {
167   - o.setUsername("testUsername2");
  62 + SysUserDO dbUser = randomPojo(SysUserDO.class, o -> {
168 63 o.setSex(randomEle(SysSexEnum.values()).getSex());
169 64 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
170 65 });
  66 + when(userService.getUsersByUsername(eq(dbUser.getUsername()))).thenReturn(singletonList(dbUser));
  67 + // 插入可被查询到的数据
  68 + String userIp = randomString();
171 69 SysUserSessionDO dbSession = randomPojo(SysUserSessionDO.class, o -> {
172   - o.setUserId(dbUser1.getId());
  70 + o.setUserId(dbUser.getId());
  71 + o.setUserType(randomEle(UserTypeEnum.values()).getValue());
173 72 o.setUserIp(userIp);
174 73 });
175   - sysUserMapper.insert(dbUser1);
176   - sysUserMapper.insert(dbUser2);
177   - sysUserSessionMapper.insert(dbSession);
178   - sysUserSessionMapper.insert(ObjectUtils.clone(dbSession, o -> {
  74 + userSessionMapper.insert(dbSession);
  75 + // 测试 username 不匹配
  76 + userSessionMapper.insert(ObjectUtils.clone(dbSession, o -> {
179 77 o.setId(randomString());
180   - o.setUserId(dbUser2.getId());
181   - }));
182   - // 测试 userId 不匹配
183   - sysUserSessionMapper.insert(ObjectUtils.clone(dbSession, o -> {
184   - o.setId(randomString());
185   - o.setUserId(123456l);
  78 + o.setUserId(123456L);
186 79 }));
187 80 // 测试 userIp 不匹配
188   - sysUserSessionMapper.insert(ObjectUtils.clone(dbSession, o -> {
  81 + userSessionMapper.insert(ObjectUtils.clone(dbSession, o -> {
189 82 o.setId(randomString());
190 83 o.setUserIp("testUserIp");
191 84 }));
192 85 // 准备参数
193   - SysUserSessionPageReqVO reqVo = new SysUserSessionPageReqVO();
194   - reqVo.setUserIp(userIp);
  86 + SysUserSessionPageReqVO reqVO = new SysUserSessionPageReqVO();
  87 + reqVO.setUsername(dbUser.getUsername());
  88 + reqVO.setUserIp(userIp);
  89 +
195 90 // 调用
196   - PageResult<SysUserSessionDO> pageResult = sysUserSessionService.getUserSessionPage(reqVo);
  91 + PageResult<SysUserSessionDO> pageResult = userSessionService.getUserSessionPage(reqVO);
197 92 // 断言
198   - assertEquals(3, pageResult.getTotal());
199   - assertEquals(3, pageResult.getList().size());
  93 + assertEquals(1, pageResult.getTotal());
  94 + assertEquals(1, pageResult.getList().size());
200 95 assertPojoEquals(dbSession, pageResult.getList().get(0));
201 96 }
202 97  
  98 + // TODO 芋艿:单测写的有问题
203 99 @Test
204   - public void testClearSessionTimeout_success() throws Exception {
  100 + public void testClearSessionTimeout_success() {
205 101 // 准备超时数据 120 条, 在线用户 1 条
206 102 int expectedTimeoutCount = 120, expectedTotal = 1;
207 103  
... ... @@ -209,17 +105,23 @@ public class SysUserSessionServiceImplTest extends BaseDbAndRedisUnitTest {
209 105 List<SysUserSessionDO> prepareData = Stream
210 106 .iterate(0, i -> i)
211 107 .limit(expectedTimeoutCount)
212   - .map(i -> RandomUtils.randomPojo(SysUserSessionDO.class, o -> o.setSessionTimeout(DateUtil.offsetSecond(new Date(), -1))))
  108 + .map(i -> randomPojo(SysUserSessionDO.class, o -> {
  109 + o.setUserType(randomEle(UserTypeEnum.values()).getValue());
  110 + o.setSessionTimeout(DateUtil.offsetSecond(new Date(), -1));
  111 + }))
213 112 .collect(Collectors.toList());
214   - SysUserSessionDO sessionDO = RandomUtils.randomPojo(SysUserSessionDO.class, o -> o.setSessionTimeout(DateUtil.offsetMinute(new Date(), 30)));
  113 + SysUserSessionDO sessionDO = randomPojo(SysUserSessionDO.class, o -> {
  114 + o.setUserType(randomEle(UserTypeEnum.values()).getValue());
  115 + o.setSessionTimeout(DateUtil.offsetMinute(new Date(), 30));
  116 + });
215 117 prepareData.add(sessionDO);
216   - prepareData.forEach(sysUserSessionMapper::insert);
  118 + prepareData.forEach(userSessionMapper::insert);
217 119  
218   - //清空超时数据
219   - long actualTimeoutCount = sysUserSessionService.clearSessionTimeout();
220   - //校验
  120 + // 清空超时数据
  121 + long actualTimeoutCount = userSessionService.clearSessionTimeout();
  122 + // 校验
221 123 assertEquals(expectedTimeoutCount, actualTimeoutCount);
222   - List<SysUserSessionDO> userSessionDOS = sysUserSessionMapper.selectList();
  124 + List<SysUserSessionDO> userSessionDOS = userSessionMapper.selectList();
223 125 assertEquals(expectedTotal, userSessionDOS.size());
224 126 AssertUtils.assertPojoEquals(sessionDO, userSessionDOS.get(0), "updateTime");
225 127 }
... ...
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/dict/SysDictDataServiceTest.java
1 1 package cn.iocoder.yudao.adminserver.modules.system.service.dict;
2 2  
3 3 import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
  4 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO;
4 5 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
5 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 7 import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO;
7 8 import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataExportReqVO;
8 9 import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataPageReqVO;
9 10 import cn.iocoder.yudao.adminserver.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO;
10   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictDataDO;
11 11 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict.SysDictTypeDO;
12 12 import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.dict.SysDictDataMapper;
13 13 import cn.iocoder.yudao.adminserver.modules.system.mq.producer.dict.SysDictDataProducer;
... ... @@ -51,37 +51,6 @@ public class SysDictDataServiceTest extends BaseDbUnitTest {
51 51 @MockBean
52 52 private SysDictDataProducer dictDataProducer;
53 53  
54   - /**
55   - * 测试加载到新的字典数据的情况
56   - */
57   - @Test
58   - @SuppressWarnings("unchecked")
59   - public void testInitLocalCache() {
60   - // mock 数据
61   - SysDictDataDO dictData01 = randomDictDataDO();
62   - dictDataMapper.insert(dictData01);
63   - SysDictDataDO dictData02 = randomDictDataDO();
64   - dictDataMapper.insert(dictData02);
65   -
66   - // 调用
67   - dictDataService.initLocalCache();
68   - // 断言 labelDictDataCache 缓存
69   - ImmutableTable<String, String, SysDictDataDO> labelDictDataCache =
70   - (ImmutableTable<String, String, SysDictDataDO>) getFieldValue(dictDataService, "labelDictDataCache");
71   - assertEquals(2, labelDictDataCache.size());
72   - assertPojoEquals(dictData01, labelDictDataCache.get(dictData01.getDictType(), dictData01.getLabel()));
73   - assertPojoEquals(dictData02, labelDictDataCache.get(dictData02.getDictType(), dictData02.getLabel()));
74   - // 断言 valueDictDataCache 缓存
75   - ImmutableTable<String, String, SysDictDataDO> valueDictDataCache =
76   - (ImmutableTable<String, String, SysDictDataDO>) getFieldValue(dictDataService, "valueDictDataCache");
77   - assertEquals(2, valueDictDataCache.size());
78   - assertPojoEquals(dictData01, valueDictDataCache.get(dictData01.getDictType(), dictData01.getValue()));
79   - assertPojoEquals(dictData02, valueDictDataCache.get(dictData02.getDictType(), dictData02.getValue()));
80   - // 断言 maxUpdateTime 缓存
81   - Date maxUpdateTime = (Date) getFieldValue(dictDataService, "maxUpdateTime");
82   - assertEquals(ObjectUtils.max(dictData01.getUpdateTime(), dictData02.getUpdateTime()), maxUpdateTime);
83   - }
84   -
85 54 @Test
86 55 public void testGetDictDataPage() {
87 56 // mock 数据
... ...
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysLoginLogServiceImplTest.java
... ... @@ -2,12 +2,12 @@ package cn.iocoder.yudao.adminserver.modules.system.service.logger;
2 2  
3 3 import cn.hutool.core.util.RandomUtil;
4 4 import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
  5 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
  6 +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
5 7 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 8 import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
7   -import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogCreateReqVO;
8 9 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogExportReqVO;
9 10 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.loginlog.SysLoginLogPageReqVO;
10   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysLoginLogDO;
11 11 import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger.SysLoginLogMapper;
12 12 import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeEnum;
13 13 import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum;
... ... @@ -34,34 +34,13 @@ public class SysLoginLogServiceImplTest extends BaseDbUnitTest {
34 34 private SysLoginLogMapper loginLogMapper;
35 35  
36 36 @Test
37   - public void testCreateLoginLog() {
38   - String traceId = TracerUtils.getTraceId();
39   - SysLoginLogCreateReqVO reqVO = RandomUtils.randomPojo(SysLoginLogCreateReqVO.class, vo -> {
40   - // 指定随机的范围,避免超出范围入库失败
41   - vo.setLogType(RandomUtil.randomEle(SysLoginLogTypeEnum.values()).getType());
42   - vo.setResult(RandomUtil.randomEle(SysLoginResultEnum.values()).getResult());
43   - // 使用TracerUtils生成的TraceId
44   - vo.setTraceId(traceId);
45   - });
46   -
47   - // 执行service方法
48   - sysLoginLogService.createLoginLog(reqVO);
49   -
50   - // 断言,忽略基本字段
51   - SysLoginLogDO sysLoginLogDO = loginLogMapper.selectOne(null);
52   - assertPojoEquals(reqVO, sysLoginLogDO);
53   - }
54   -
55   -
56   - @Test
57 37 public void testGetLoginLogPage() {
58   -
59 38 // 构造测试数据
60   -
61 39 // 登录成功的
62 40 SysLoginLogDO loginLogDO = RandomUtils.randomPojo(SysLoginLogDO.class, logDO -> {
63 41 logDO.setLogType(RandomUtil.randomEle(SysLoginLogTypeEnum.values()).getType());
64 42 logDO.setTraceId(TracerUtils.getTraceId());
  43 + logDO.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue());
65 44  
66 45 logDO.setUserIp("192.168.199.16");
67 46 logDO.setUsername("wangkai");
... ... @@ -100,13 +79,13 @@ public class SysLoginLogServiceImplTest extends BaseDbUnitTest {
100 79  
101 80 @Test
102 81 public void testGetLoginLogList() {
103   -
104 82 // 构造测试数据
105 83  
106 84 // 登录成功的
107 85 SysLoginLogDO loginLogDO = RandomUtils.randomPojo(SysLoginLogDO.class, logDO -> {
108 86 logDO.setLogType(RandomUtil.randomEle(SysLoginLogTypeEnum.values()).getType());
109 87 logDO.setTraceId(TracerUtils.getTraceId());
  88 + logDO.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue());
110 89  
111 90 logDO.setUserIp("192.168.111.16");
112 91 logDO.setUsername("wangxiaokai");
... ...
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/logger/SysOperateLogServiceImplTest.java
... ... @@ -2,34 +2,35 @@ package cn.iocoder.yudao.adminserver.modules.system.service.logger;
2 2  
3 3 import cn.hutool.core.map.MapUtil;
4 4 import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
5   -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
6   -import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants;
7   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
8   -import cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum;
9   -import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
10   -import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO;
11 5 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogExportReqVO;
12 6 import cn.iocoder.yudao.adminserver.modules.system.controller.logger.vo.operatelog.SysOperateLogPageReqVO;
13 7 import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger.SysOperateLogDO;
14   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.user.SysUserDO;
15 8 import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.logger.SysOperateLogMapper;
16   -import cn.iocoder.yudao.adminserver.modules.system.enums.common.SysSexEnum;
17 9 import cn.iocoder.yudao.adminserver.modules.system.service.logger.impl.SysOperateLogServiceImpl;
18 10 import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
19   -import cn.iocoder.yudao.framework.test.core.util.RandomUtils;
  11 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
  12 +import cn.iocoder.yudao.coreservice.modules.system.enums.common.SysSexEnum;
  13 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  14 +import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants;
  15 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  16 +import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
20 17 import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
  18 +import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO;
  19 +import cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum;
  20 +import cn.iocoder.yudao.framework.test.core.util.RandomUtils;
21 21 import org.junit.jupiter.api.Test;
22 22 import org.springframework.boot.test.mock.mockito.MockBean;
23 23 import org.springframework.context.annotation.Import;
24 24  
25 25 import javax.annotation.Resource;
26   -import java.util.*;
  26 +import java.util.Collections;
  27 +import java.util.List;
27 28 import java.util.concurrent.ExecutionException;
28 29 import java.util.concurrent.Future;
29 30  
  31 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
30 32 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
31 33 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
32   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime;
33 34 import static org.junit.jupiter.api.Assertions.assertEquals;
34 35 import static org.mockito.Mockito.when;
35 36  
... ...
yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsChannelServiceTest.java
... ... @@ -2,18 +2,18 @@ package cn.iocoder.yudao.adminserver.modules.system.service.sms;
2 2  
3 3 import cn.hutool.core.bean.BeanUtil;
4 4 import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
5   -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
6   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
7   -import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory;
8 5 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelCreateReqVO;
9 6 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelPageReqVO;
10 7 import cn.iocoder.yudao.adminserver.modules.system.controller.sms.vo.channel.SysSmsChannelUpdateReqVO;
11   -import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.sms.SysSmsChannelDO;
12 8 import cn.iocoder.yudao.adminserver.modules.system.dal.mysql.sms.SysSmsChannelMapper;
13 9 import cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms.SysSmsProducer;
14 10 import cn.iocoder.yudao.adminserver.modules.system.service.sms.impl.SysSmsChannelServiceImpl;
  11 +import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO;
  12 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  13 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
15 14 import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
16 15 import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
  16 +import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory;
17 17 import org.junit.jupiter.api.Test;
18 18 import org.springframework.boot.test.mock.mockito.MockBean;
19 19 import org.springframework.context.annotation.Import;
... ...