Commit ab6ec2f0edaf13c1338ec3235b26ad4516db8508
1 parent
117914d9
多模块重构 4:system 模块的创建,去除 Sys
Showing
224 changed files
with
1612 additions
and
2215 deletions
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/config/vo/InfConfigExcelVO.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.infra.controller.config.vo; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants; | 5 | +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; |
| 6 | import com.alibaba.excel.annotation.ExcelProperty; | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | import lombok.Data; | 7 | import lombok.Data; |
| 8 | 8 | ||
| @@ -30,11 +30,11 @@ public class InfConfigExcelVO { | @@ -30,11 +30,11 @@ public class InfConfigExcelVO { | ||
| 30 | private String value; | 30 | private String value; |
| 31 | 31 | ||
| 32 | @ExcelProperty(value = "参数类型", converter = DictConvert.class) | 32 | @ExcelProperty(value = "参数类型", converter = DictConvert.class) |
| 33 | - @DictFormat(SysDictTypeConstants.CONFIG_TYPE) | 33 | + @DictFormat(DictTypeConstants.CONFIG_TYPE) |
| 34 | private Integer type; | 34 | private Integer type; |
| 35 | 35 | ||
| 36 | @ExcelProperty(value = "是否敏感", converter = DictConvert.class) | 36 | @ExcelProperty(value = "是否敏感", converter = DictConvert.class) |
| 37 | - @DictFormat(SysDictTypeConstants.BOOLEAN_STRING) | 37 | + @DictFormat(DictTypeConstants.BOOLEAN_STRING) |
| 38 | private Boolean sensitive; | 38 | private Boolean sensitive; |
| 39 | 39 | ||
| 40 | @ExcelProperty("备注") | 40 | @ExcelProperty("备注") |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apiaccesslog/InfApiAccessLogExcelVO.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiacces | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiacces | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants; | 5 | +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; |
| 6 | import com.alibaba.excel.annotation.ExcelProperty; | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | import lombok.Data; | 7 | import lombok.Data; |
| 8 | 8 | ||
| @@ -26,7 +26,7 @@ public class InfApiAccessLogExcelVO { | @@ -26,7 +26,7 @@ public class InfApiAccessLogExcelVO { | ||
| 26 | private Long userId; | 26 | private Long userId; |
| 27 | 27 | ||
| 28 | @ExcelProperty(value = "用户类型", converter = DictConvert.class) | 28 | @ExcelProperty(value = "用户类型", converter = DictConvert.class) |
| 29 | - @DictFormat(SysDictTypeConstants.USER_TYPE) | 29 | + @DictFormat(DictTypeConstants.USER_TYPE) |
| 30 | private Integer userType; | 30 | private Integer userType; |
| 31 | 31 | ||
| 32 | @ExcelProperty("应用名") | 32 | @ExcelProperty("应用名") |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/controller/logger/vo/apierrorlog/InfApiErrorLogExcelVO.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierror | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierror | ||
| 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 5 | import cn.iocoder.yudao.adminserver.modules.infra.enums.InfDictTypeConstants; | 5 | import cn.iocoder.yudao.adminserver.modules.infra.enums.InfDictTypeConstants; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants; | 6 | +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; |
| 7 | import com.alibaba.excel.annotation.ExcelProperty; | 7 | import com.alibaba.excel.annotation.ExcelProperty; |
| 8 | import lombok.Data; | 8 | import lombok.Data; |
| 9 | 9 | ||
| @@ -27,7 +27,7 @@ public class InfApiErrorLogExcelVO { | @@ -27,7 +27,7 @@ public class InfApiErrorLogExcelVO { | ||
| 27 | private Integer userId; | 27 | private Integer userId; |
| 28 | 28 | ||
| 29 | @ExcelProperty(value = "用户类型", converter = DictConvert.class) | 29 | @ExcelProperty(value = "用户类型", converter = DictConvert.class) |
| 30 | - @DictFormat(SysDictTypeConstants.USER_TYPE) | 30 | + @DictFormat(DictTypeConstants.USER_TYPE) |
| 31 | private Integer userType; | 31 | private Integer userType; |
| 32 | 32 | ||
| 33 | @ExcelProperty("应用名") | 33 | @ExcelProperty("应用名") |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/order/PayOrderExcelVO.java
| 1 | package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.order; | 1 | package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.order; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants; | 3 | +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; |
| 4 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 4 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 5 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | 5 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 6 | import com.alibaba.excel.annotation.ExcelProperty; | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| @@ -46,11 +46,11 @@ public class PayOrderExcelVO { | @@ -46,11 +46,11 @@ public class PayOrderExcelVO { | ||
| 46 | @ExcelProperty("渠道手续费,单位:百分比") | 46 | @ExcelProperty("渠道手续费,单位:百分比") |
| 47 | private String channelFeeRate; | 47 | private String channelFeeRate; |
| 48 | 48 | ||
| 49 | - @DictFormat(SysDictTypeConstants.PAY_ORDER_STATUS) | 49 | + @DictFormat(DictTypeConstants.PAY_ORDER_STATUS) |
| 50 | @ExcelProperty(value = "支付状态", converter = DictConvert.class) | 50 | @ExcelProperty(value = "支付状态", converter = DictConvert.class) |
| 51 | private Integer status; | 51 | private Integer status; |
| 52 | 52 | ||
| 53 | - @DictFormat(SysDictTypeConstants.PAY_ORDER_NOTIFY_STATUS) | 53 | + @DictFormat(DictTypeConstants.PAY_ORDER_NOTIFY_STATUS) |
| 54 | @ExcelProperty(value = "通知商户支付结果的回调状态", converter = DictConvert.class) | 54 | @ExcelProperty(value = "通知商户支付结果的回调状态", converter = DictConvert.class) |
| 55 | private Integer notifyStatus; | 55 | private Integer notifyStatus; |
| 56 | 56 | ||
| @@ -75,7 +75,7 @@ public class PayOrderExcelVO { | @@ -75,7 +75,7 @@ public class PayOrderExcelVO { | ||
| 75 | @ExcelProperty("用户 IP") | 75 | @ExcelProperty("用户 IP") |
| 76 | private String userIp; | 76 | private String userIp; |
| 77 | 77 | ||
| 78 | - @DictFormat(SysDictTypeConstants.PAY_ORDER_REFUND_STATUS) | 78 | + @DictFormat(DictTypeConstants.PAY_ORDER_REFUND_STATUS) |
| 79 | @ExcelProperty(value = "退款状态", converter = DictConvert.class) | 79 | @ExcelProperty(value = "退款状态", converter = DictConvert.class) |
| 80 | private Integer refundStatus; | 80 | private Integer refundStatus; |
| 81 | 81 |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/refund/vo/PayRefundExcelVO.java
| 1 | package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.refund.vo; | 1 | package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.refund.vo; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants; | 3 | +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; |
| 4 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 4 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 5 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | 5 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 6 | import com.alibaba.excel.annotation.ExcelProperty; | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| @@ -43,15 +43,15 @@ public class PayRefundExcelVO { | @@ -43,15 +43,15 @@ public class PayRefundExcelVO { | ||
| 43 | @ExcelProperty("异步通知商户地址") | 43 | @ExcelProperty("异步通知商户地址") |
| 44 | private String notifyUrl; | 44 | private String notifyUrl; |
| 45 | 45 | ||
| 46 | - @DictFormat(SysDictTypeConstants.PAY_ORDER_NOTIFY_STATUS) | 46 | + @DictFormat(DictTypeConstants.PAY_ORDER_NOTIFY_STATUS) |
| 47 | @ExcelProperty(value = "商户退款结果回调状态", converter = DictConvert.class) | 47 | @ExcelProperty(value = "商户退款结果回调状态", converter = DictConvert.class) |
| 48 | private Integer notifyStatus; | 48 | private Integer notifyStatus; |
| 49 | 49 | ||
| 50 | - @DictFormat(SysDictTypeConstants.PAY_REFUND_ORDER_STATUS) | 50 | + @DictFormat(DictTypeConstants.PAY_REFUND_ORDER_STATUS) |
| 51 | @ExcelProperty(value = "退款状态", converter = DictConvert.class) | 51 | @ExcelProperty(value = "退款状态", converter = DictConvert.class) |
| 52 | private Integer status; | 52 | private Integer status; |
| 53 | 53 | ||
| 54 | - @DictFormat(SysDictTypeConstants.PAY_REFUND_ORDER_TYPE) | 54 | + @DictFormat(DictTypeConstants.PAY_REFUND_ORDER_TYPE) |
| 55 | @ExcelProperty(value = "退款类型", converter = DictConvert.class) | 55 | @ExcelProperty(value = "退款类型", converter = DictConvert.class) |
| 56 | private Integer type; | 56 | private Integer type; |
| 57 | 57 |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoExcelVO.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo; | ||
| 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 5 | import cn.iocoder.yudao.adminserver.modules.infra.enums.InfDictTypeConstants; | 5 | import cn.iocoder.yudao.adminserver.modules.infra.enums.InfDictTypeConstants; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants; | 6 | +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; |
| 7 | import com.alibaba.excel.annotation.ExcelProperty; | 7 | import com.alibaba.excel.annotation.ExcelProperty; |
| 8 | import lombok.Data; | 8 | import lombok.Data; |
| 9 | 9 | ||
| @@ -24,11 +24,11 @@ public class ToolTestDemoExcelVO { | @@ -24,11 +24,11 @@ public class ToolTestDemoExcelVO { | ||
| 24 | private String name; | 24 | private String name; |
| 25 | 25 | ||
| 26 | @ExcelProperty(value = "状态", converter = DictConvert.class) | 26 | @ExcelProperty(value = "状态", converter = DictConvert.class) |
| 27 | - @DictFormat(SysDictTypeConstants.COMMON_STATUS) | 27 | + @DictFormat(DictTypeConstants.COMMON_STATUS) |
| 28 | private Integer status; | 28 | private Integer status; |
| 29 | 29 | ||
| 30 | @ExcelProperty(value = "类型", converter = DictConvert.class) | 30 | @ExcelProperty(value = "类型", converter = DictConvert.class) |
| 31 | - @DictFormat(SysDictTypeConstants.OPERATE_TYPE) | 31 | + @DictFormat(DictTypeConstants.OPERATE_TYPE) |
| 32 | private Integer type; | 32 | private Integer type; |
| 33 | 33 | ||
| 34 | @ExcelProperty(value = "分类", converter = DictConvert.class) | 34 | @ExcelProperty(value = "分类", converter = DictConvert.class) |
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,7 +5,7 @@ import cn.iocoder.yudao.adminserver.BaseRedisIntegrationTest; | ||
| 5 | import cn.iocoder.yudao.module.system.mq.consumer.mail.SysMailSendConsumer; | 5 | import cn.iocoder.yudao.module.system.mq.consumer.mail.SysMailSendConsumer; |
| 6 | import cn.iocoder.yudao.module.system.mq.consumer.sms.SysSmsSendConsumer; | 6 | import cn.iocoder.yudao.module.system.mq.consumer.sms.SysSmsSendConsumer; |
| 7 | import cn.iocoder.yudao.module.system.mq.message.mail.SysMailSendMessage; | 7 | import cn.iocoder.yudao.module.system.mq.message.mail.SysMailSendMessage; |
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.mq.message.sms.SysSmsSendMessage; | 8 | +import cn.iocoder.yudao.module.system.mq.message.sms.SysSmsSendMessage; |
| 9 | import cn.iocoder.yudao.framework.mq.core.util.RedisMessageUtils; | 9 | import cn.iocoder.yudao.framework.mq.core.util.RedisMessageUtils; |
| 10 | import org.junit.jupiter.api.Disabled; | 10 | import org.junit.jupiter.api.Disabled; |
| 11 | import org.junit.jupiter.api.Test; | 11 | import org.junit.jupiter.api.Test; |
yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsServiceIntegrationTest.java
| @@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.system.service.sms.impl.SysSmsChannelServiceImpl; | @@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.system.service.sms.impl.SysSmsChannelServiceImpl; | ||
| 9 | import cn.iocoder.yudao.module.system.service.sms.impl.SysSmsLogServiceImpl; | 9 | import cn.iocoder.yudao.module.system.service.sms.impl.SysSmsLogServiceImpl; |
| 10 | import cn.iocoder.yudao.module.system.service.sms.impl.SysSmsTemplateServiceImpl; | 10 | import cn.iocoder.yudao.module.system.service.sms.impl.SysSmsTemplateServiceImpl; |
| 11 | import cn.iocoder.yudao.module.system.service.user.SysUserService; | 11 | import cn.iocoder.yudao.module.system.service.user.SysUserService; |
| 12 | -import cn.iocoder.yudao.coreservice.modules.system.service.sms.impl.SysSmsCoreServiceImpl; | 12 | +import cn.iocoder.yudao.module.system.service.sms.impl.SysSmsCoreServiceImpl; |
| 13 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 13 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 14 | import cn.iocoder.yudao.framework.sms.config.YudaoSmsAutoConfiguration; | 14 | import cn.iocoder.yudao.framework.sms.config.YudaoSmsAutoConfiguration; |
| 15 | import org.junit.jupiter.api.Test; | 15 | import org.junit.jupiter.api.Test; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/enums/SysErrorCodeConstants.java
0 → 100644
| 1 | +package cn.iocoder.yudao.coreservice.modules.infra.enums; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.exception.ErrorCode; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * System 错误码枚举类 | ||
| 7 | + * | ||
| 8 | + * system 系统,使用 1-006-000-000 段 | ||
| 9 | + */ | ||
| 10 | +public interface SysErrorCodeConstants { | ||
| 11 | + | ||
| 12 | + // ========= 文件相关 1006001000================= | ||
| 13 | + ErrorCode FILE_PATH_EXISTS = new ErrorCode(1006001000, "文件路径已存在"); | ||
| 14 | + ErrorCode FILE_NOT_EXISTS = new ErrorCode(1006001002, "文件不存在"); | ||
| 15 | + | ||
| 16 | +} |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/enums/package-info.java deleted
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/service/file/impl/InfFileCoreServiceImpl.java
| @@ -10,7 +10,7 @@ import org.springframework.stereotype.Service; | @@ -10,7 +10,7 @@ import org.springframework.stereotype.Service; | ||
| 10 | import javax.annotation.Resource; | 10 | import javax.annotation.Resource; |
| 11 | import java.io.ByteArrayInputStream; | 11 | import java.io.ByteArrayInputStream; |
| 12 | 12 | ||
| 13 | -import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.*; | 13 | +import static cn.iocoder.yudao.coreservice.modules.infra.enums.SysErrorCodeConstants.*; |
| 14 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 14 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 15 | 15 | ||
| 16 | /** | 16 | /** |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/convert/package-info.java deleted
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md deleted
| 1 | -<http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao> |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/dataobject/package-info.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/dict/SysDictDataCoreMapper.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.dict; | ||
| 2 | - | ||
| 3 | - | ||
| 4 | -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO; | ||
| 6 | -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||
| 7 | -import org.apache.ibatis.annotations.Mapper; | ||
| 8 | - | ||
| 9 | -import java.util.Date; | ||
| 10 | - | ||
| 11 | -@Mapper | ||
| 12 | -public interface SysDictDataCoreMapper extends BaseMapperX<SysDictDataDO> { | ||
| 13 | - | ||
| 14 | - default boolean selectExistsByUpdateTimeAfter(Date maxUpdateTime) { | ||
| 15 | - return selectOne(new QueryWrapper<SysDictDataDO>().select("id") | ||
| 16 | - .gt("update_time", maxUpdateTime).last("LIMIT 1")) != null; | ||
| 17 | - } | ||
| 18 | - | ||
| 19 | -} |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/package-info.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.mysql; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/sms/SysSmsLogCoreMapper.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.sms; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO; | ||
| 4 | -import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 5 | -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 6 | -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; | ||
| 7 | -import org.apache.ibatis.annotations.Mapper; | ||
| 8 | - | ||
| 9 | -import java.util.List; | ||
| 10 | - | ||
| 11 | -@Mapper | ||
| 12 | -public interface SysSmsLogCoreMapper extends BaseMapperX<SysSmsLogDO> { | ||
| 13 | -} |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/sms/SysSmsTemplateCoreMapper.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.sms; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 4 | -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 5 | -import org.apache.ibatis.annotations.Mapper; | ||
| 6 | -import org.apache.ibatis.annotations.Select; | ||
| 7 | - | ||
| 8 | -import java.util.Date; | ||
| 9 | - | ||
| 10 | -@Mapper | ||
| 11 | -public interface SysSmsTemplateCoreMapper extends BaseMapperX<SysSmsTemplateDO> { | ||
| 12 | - | ||
| 13 | - @Select("SELECT id FROM sys_sms_template WHERE update_time > #{maxUpdateTime} LIMIT 1") | ||
| 14 | - Long selectExistsByUpdateTimeAfter(Date maxUpdateTime); | ||
| 15 | - | ||
| 16 | -} |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/user/SysUserCoreMapper.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.user; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 4 | -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 5 | -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||
| 6 | -import org.apache.ibatis.annotations.Mapper; | ||
| 7 | - | ||
| 8 | -import java.util.Collection; | ||
| 9 | -import java.util.List; | ||
| 10 | - | ||
| 11 | -@Mapper | ||
| 12 | -public interface SysUserCoreMapper extends BaseMapperX<SysUserDO> { | ||
| 13 | - | ||
| 14 | - default List<SysUserDO> selectListByDeptIds(Collection<Long> deptIds) { | ||
| 15 | - return selectList(SysUserDO::getDeptId, deptIds); | ||
| 16 | - } | ||
| 17 | -} |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/mq/producer/package-info.java deleted
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/mq/producer/sms/SysSmsCoreProducer.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.mq.producer.sms; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.mq.message.sms.SysSmsSendMessage; | ||
| 4 | -import cn.iocoder.yudao.framework.common.core.KeyValue; | ||
| 5 | -import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; | ||
| 6 | -import lombok.extern.slf4j.Slf4j; | ||
| 7 | -import org.springframework.stereotype.Component; | ||
| 8 | - | ||
| 9 | -import javax.annotation.Resource; | ||
| 10 | -import java.util.List; | ||
| 11 | - | ||
| 12 | -/** | ||
| 13 | - * Sms 短信相关消息的 Core Producer | ||
| 14 | - * | ||
| 15 | - * @author zzf | ||
| 16 | - * @date 2021/3/9 16:35 | ||
| 17 | - */ | ||
| 18 | -@Slf4j | ||
| 19 | -@Component | ||
| 20 | -public class SysSmsCoreProducer { | ||
| 21 | - | ||
| 22 | - @Resource | ||
| 23 | - private RedisMQTemplate redisMQTemplate; | ||
| 24 | - | ||
| 25 | - /** | ||
| 26 | - * 发送 {@link SysSmsSendMessage} 消息 | ||
| 27 | - * | ||
| 28 | - * @param logId 短信日志编号 | ||
| 29 | - * @param mobile 手机号 | ||
| 30 | - * @param channelId 渠道编号 | ||
| 31 | - * @param apiTemplateId 短信模板编号 | ||
| 32 | - * @param templateParams 短信模板参数 | ||
| 33 | - */ | ||
| 34 | - public void sendSmsSendMessage(Long logId, String mobile, | ||
| 35 | - Long channelId, String apiTemplateId, List<KeyValue<String, Object>> templateParams) { | ||
| 36 | - SysSmsSendMessage message = new SysSmsSendMessage().setLogId(logId).setMobile(mobile); | ||
| 37 | - message.setChannelId(channelId).setApiTemplateId(apiTemplateId).setTemplateParams(templateParams); | ||
| 38 | - redisMQTemplate.send(message); | ||
| 39 | - } | ||
| 40 | - | ||
| 41 | -} |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/package-info.java deleted
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/auth/SysUserSessionCoreService.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.auth; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.framework.security.core.LoginUser; | ||
| 4 | - | ||
| 5 | -/** | ||
| 6 | - * 在线用户 Session Core Service 接口 | ||
| 7 | - * | ||
| 8 | - * @author 芋道源码 | ||
| 9 | - */ | ||
| 10 | -public interface SysUserSessionCoreService { | ||
| 11 | - | ||
| 12 | - /** | ||
| 13 | - * 创建在线用户 Session | ||
| 14 | - * | ||
| 15 | - * @param loginUser 登录用户 | ||
| 16 | - * @param userIp 用户 IP | ||
| 17 | - * @param userAgent 用户 UA | ||
| 18 | - * @return Session 编号 | ||
| 19 | - */ | ||
| 20 | - String createUserSession(LoginUser loginUser, String userIp, String userAgent); | ||
| 21 | - | ||
| 22 | - /** | ||
| 23 | - * 刷新在线用户 Session 的更新时间 | ||
| 24 | - * | ||
| 25 | - * @param sessionId Session 编号 | ||
| 26 | - * @param loginUser 登录用户 | ||
| 27 | - */ | ||
| 28 | - void refreshUserSession(String sessionId, LoginUser loginUser); | ||
| 29 | - | ||
| 30 | - /** | ||
| 31 | - * 删除在线用户 Session | ||
| 32 | - * | ||
| 33 | - * @param sessionId Session 编号 | ||
| 34 | - */ | ||
| 35 | - void deleteUserSession(String sessionId); | ||
| 36 | - | ||
| 37 | - /** | ||
| 38 | - * 获得 Session 编号对应的在线用户 | ||
| 39 | - * | ||
| 40 | - * @param sessionId Session 编号 | ||
| 41 | - * @return 在线用户 | ||
| 42 | - */ | ||
| 43 | - LoginUser getLoginUser(String sessionId); | ||
| 44 | - | ||
| 45 | - /** | ||
| 46 | - * 获得 Session 超时时间,单位:毫秒 | ||
| 47 | - * | ||
| 48 | - * @return 超时时间 | ||
| 49 | - */ | ||
| 50 | - Long getSessionTimeoutMillis(); | ||
| 51 | - | ||
| 52 | -} |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/auth/impl/SysUserSessionCoreServiceImpl.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.auth.impl; | ||
| 2 | - | ||
| 3 | -import cn.hutool.core.util.IdUtil; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.auth.SysUserSessionCoreMapper; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.redis.auth.SysLoginUserCoreRedisDAO; | ||
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; | ||
| 8 | -import cn.iocoder.yudao.framework.security.config.SecurityProperties; | ||
| 9 | -import cn.iocoder.yudao.framework.security.core.LoginUser; | ||
| 10 | -import org.springframework.stereotype.Service; | ||
| 11 | - | ||
| 12 | -import javax.annotation.Resource; | ||
| 13 | -import java.time.Duration; | ||
| 14 | -import java.util.Date; | ||
| 15 | - | ||
| 16 | -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime; | ||
| 17 | - | ||
| 18 | -/** | ||
| 19 | - * 在线用户 Session Core Service 实现类 | ||
| 20 | - * | ||
| 21 | - * @author 芋道源码 | ||
| 22 | - */ | ||
| 23 | -@Service | ||
| 24 | -public class SysUserSessionCoreServiceImpl implements SysUserSessionCoreService { | ||
| 25 | - | ||
| 26 | - @Resource | ||
| 27 | - private SysUserSessionCoreMapper userSessionCoreMapper; | ||
| 28 | - | ||
| 29 | - @Resource | ||
| 30 | - private SysLoginUserCoreRedisDAO loginUserCoreRedisDAO; | ||
| 31 | - | ||
| 32 | - @Resource | ||
| 33 | - private SecurityProperties securityProperties; | ||
| 34 | - | ||
| 35 | - @Override | ||
| 36 | - public String createUserSession(LoginUser loginUser, String userIp, String userAgent) { | ||
| 37 | - // 生成 Session 编号 | ||
| 38 | - String sessionId = generateSessionId(); | ||
| 39 | - // 写入 Redis 缓存 | ||
| 40 | - loginUser.setUpdateTime(new Date()); | ||
| 41 | - loginUserCoreRedisDAO.set(sessionId, loginUser); | ||
| 42 | - // 写入 DB 中 | ||
| 43 | - SysUserSessionDO userSession = SysUserSessionDO.builder().id(sessionId) | ||
| 44 | - .userId(loginUser.getId()).userType(loginUser.getUserType()) | ||
| 45 | - .userIp(userIp).userAgent(userAgent).username(loginUser.getUsername()) | ||
| 46 | - .sessionTimeout(addTime(Duration.ofMillis(getSessionTimeoutMillis()))) | ||
| 47 | - .build(); | ||
| 48 | - userSessionCoreMapper.insert(userSession); | ||
| 49 | - // 返回 Session 编号 | ||
| 50 | - return sessionId; | ||
| 51 | - } | ||
| 52 | - | ||
| 53 | - @Override | ||
| 54 | - public void refreshUserSession(String sessionId, LoginUser loginUser) { | ||
| 55 | - // 写入 Redis 缓存 | ||
| 56 | - loginUser.setUpdateTime(new Date()); | ||
| 57 | - loginUserCoreRedisDAO.set(sessionId, loginUser); | ||
| 58 | - // 更新 DB 中 | ||
| 59 | - SysUserSessionDO updateObj = SysUserSessionDO.builder().id(sessionId).build(); | ||
| 60 | - updateObj.setUsername(loginUser.getUsername()); | ||
| 61 | - updateObj.setUpdateTime(new Date()); | ||
| 62 | - updateObj.setSessionTimeout(addTime(Duration.ofMillis(getSessionTimeoutMillis()))); | ||
| 63 | - userSessionCoreMapper.updateById(updateObj); | ||
| 64 | - } | ||
| 65 | - | ||
| 66 | - @Override | ||
| 67 | - public void deleteUserSession(String sessionId) { | ||
| 68 | - // 删除 Redis 缓存 | ||
| 69 | - loginUserCoreRedisDAO.delete(sessionId); | ||
| 70 | - // 删除 DB 记录 | ||
| 71 | - userSessionCoreMapper.deleteById(sessionId); | ||
| 72 | - } | ||
| 73 | - | ||
| 74 | - @Override | ||
| 75 | - public LoginUser getLoginUser(String sessionId) { | ||
| 76 | - return loginUserCoreRedisDAO.get(sessionId); | ||
| 77 | - } | ||
| 78 | - | ||
| 79 | - @Override | ||
| 80 | - public Long getSessionTimeoutMillis() { | ||
| 81 | - return securityProperties.getSessionTimeout().toMillis(); | ||
| 82 | - } | ||
| 83 | - | ||
| 84 | - /** | ||
| 85 | - * 生成 Session 编号,目前采用 UUID 算法 | ||
| 86 | - * | ||
| 87 | - * @return Session 编号 | ||
| 88 | - */ | ||
| 89 | - private static String generateSessionId() { | ||
| 90 | - return IdUtil.fastSimpleUUID(); | ||
| 91 | - } | ||
| 92 | - | ||
| 93 | -} |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/dict/SysDictDataCoreService.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.dict; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.framework.dict.core.service.DictDataFrameworkService; | ||
| 4 | - | ||
| 5 | -import java.util.Collection; | ||
| 6 | - | ||
| 7 | -/** | ||
| 8 | - * 字典数据 Service 接口 | ||
| 9 | - * | ||
| 10 | - * @author 芋道源码 | ||
| 11 | - */ | ||
| 12 | -public interface SysDictDataCoreService extends DictDataFrameworkService { | ||
| 13 | - | ||
| 14 | - /** | ||
| 15 | - * 初始化字典数据的本地缓存 | ||
| 16 | - */ | ||
| 17 | - void initLocalCache(); | ||
| 18 | - | ||
| 19 | - /** | ||
| 20 | - * 校验字典数据们是否有效。如下情况,视为无效: | ||
| 21 | - * 1. 字典数据不存在 | ||
| 22 | - * 2. 字典数据被禁用 | ||
| 23 | - * | ||
| 24 | - * @param dictType 字典类型 | ||
| 25 | - * @param values 字典数据值的数组 | ||
| 26 | - */ | ||
| 27 | - void validDictDatas(String dictType, Collection<String> values); | ||
| 28 | - | ||
| 29 | -} |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/dict/impl/SysDictDataCoreServiceImpl.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.dict.impl; | ||
| 2 | - | ||
| 3 | -import cn.hutool.core.collection.CollUtil; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.convert.dict.SysDictDataCoreConvert; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.dict.SysDictDataCoreMapper; | ||
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.service.dict.SysDictDataCoreService; | ||
| 8 | -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 9 | -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||
| 10 | -import cn.iocoder.yudao.framework.dict.core.dto.DictDataRespDTO; | ||
| 11 | -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | ||
| 12 | -import com.google.common.collect.ImmutableMap; | ||
| 13 | -import com.google.common.collect.ImmutableTable; | ||
| 14 | -import lombok.extern.slf4j.Slf4j; | ||
| 15 | -import org.springframework.scheduling.annotation.Scheduled; | ||
| 16 | -import org.springframework.stereotype.Service; | ||
| 17 | - | ||
| 18 | -import javax.annotation.PostConstruct; | ||
| 19 | -import javax.annotation.Resource; | ||
| 20 | -import java.util.*; | ||
| 21 | - | ||
| 22 | -import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.DICT_DATA_NOT_ENABLE; | ||
| 23 | -import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.DICT_DATA_NOT_EXISTS; | ||
| 24 | -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||
| 25 | - | ||
| 26 | -/** | ||
| 27 | - * 字典数据 Service 实现类 | ||
| 28 | - * | ||
| 29 | - * @author 芋道源码 | ||
| 30 | - */ | ||
| 31 | -@Service | ||
| 32 | -@Slf4j | ||
| 33 | -public class SysDictDataCoreServiceImpl implements SysDictDataCoreService { | ||
| 34 | - | ||
| 35 | - /** | ||
| 36 | - * 定时执行 {@link #schedulePeriodicRefresh()} 的周期 | ||
| 37 | - * 因为已经通过 Redis Pub/Sub 机制,所以频率不需要高 | ||
| 38 | - */ | ||
| 39 | - private static final long SCHEDULER_PERIOD = 5 * 60 * 1000L; | ||
| 40 | - | ||
| 41 | - /** | ||
| 42 | - * 字典数据缓存,第二个 key 使用 label | ||
| 43 | - * | ||
| 44 | - * key1:字典类型 dictType | ||
| 45 | - * key2:字典标签 label | ||
| 46 | - */ | ||
| 47 | - private ImmutableTable<String, String, SysDictDataDO> labelDictDataCache; | ||
| 48 | - /** | ||
| 49 | - * 字典数据缓存,第二个 key 使用 value | ||
| 50 | - * | ||
| 51 | - * key1:字典类型 dictType | ||
| 52 | - * key2:字典值 value | ||
| 53 | - */ | ||
| 54 | - private ImmutableTable<String, String, SysDictDataDO> valueDictDataCache; | ||
| 55 | - /** | ||
| 56 | - * 缓存字典数据的最大更新时间,用于后续的增量轮询,判断是否有更新 | ||
| 57 | - */ | ||
| 58 | - private volatile Date maxUpdateTime; | ||
| 59 | - | ||
| 60 | - @Resource | ||
| 61 | - private SysDictDataCoreMapper dictDataCoreMapper; | ||
| 62 | - | ||
| 63 | - @Override | ||
| 64 | - @PostConstruct | ||
| 65 | - public synchronized void initLocalCache() { | ||
| 66 | - // 获取字典数据列表,如果有更新 | ||
| 67 | - List<SysDictDataDO> dataList = this.loadDictDataIfUpdate(maxUpdateTime); | ||
| 68 | - if (CollUtil.isEmpty(dataList)) { | ||
| 69 | - return; | ||
| 70 | - } | ||
| 71 | - | ||
| 72 | - // 构建缓存 | ||
| 73 | - ImmutableTable.Builder<String, String, SysDictDataDO> labelDictDataBuilder = ImmutableTable.builder(); | ||
| 74 | - ImmutableTable.Builder<String, String, SysDictDataDO> valueDictDataBuilder = ImmutableTable.builder(); | ||
| 75 | - dataList.forEach(dictData -> { | ||
| 76 | - labelDictDataBuilder.put(dictData.getDictType(), dictData.getLabel(), dictData); | ||
| 77 | - valueDictDataBuilder.put(dictData.getDictType(), dictData.getValue(), dictData); | ||
| 78 | - }); | ||
| 79 | - labelDictDataCache = labelDictDataBuilder.build(); | ||
| 80 | - valueDictDataCache = valueDictDataBuilder.build(); | ||
| 81 | - assert dataList.size() > 0; // 断言,避免告警 | ||
| 82 | - maxUpdateTime = dataList.stream().max(Comparator.comparing(BaseDO::getUpdateTime)).get().getUpdateTime(); | ||
| 83 | - log.info("[initLocalCache][缓存字典数据,数量为:{}]", dataList.size()); | ||
| 84 | - } | ||
| 85 | - | ||
| 86 | - @Scheduled(fixedDelay = SCHEDULER_PERIOD, initialDelay = SCHEDULER_PERIOD) | ||
| 87 | - public void schedulePeriodicRefresh() { | ||
| 88 | - initLocalCache(); | ||
| 89 | - } | ||
| 90 | - | ||
| 91 | - /** | ||
| 92 | - * 如果字典数据发生变化,从数据库中获取最新的全量字典数据。 | ||
| 93 | - * 如果未发生变化,则返回空 | ||
| 94 | - * | ||
| 95 | - * @param maxUpdateTime 当前字典数据的最大更新时间 | ||
| 96 | - * @return 字典数据列表 | ||
| 97 | - */ | ||
| 98 | - private List<SysDictDataDO> loadDictDataIfUpdate(Date maxUpdateTime) { | ||
| 99 | - // 第一步,判断是否要更新。 | ||
| 100 | - if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据 | ||
| 101 | - log.info("[loadDictDataIfUpdate][首次加载全量字典数据]"); | ||
| 102 | - } else { // 判断数据库中是否有更新的字典数据 | ||
| 103 | - if (!dictDataCoreMapper.selectExistsByUpdateTimeAfter(maxUpdateTime)) { | ||
| 104 | - return null; | ||
| 105 | - } | ||
| 106 | - log.info("[loadDictDataIfUpdate][增量加载全量字典数据]"); | ||
| 107 | - } | ||
| 108 | - // 第二步,如果有更新,则从数据库加载所有字典数据 | ||
| 109 | - return dictDataCoreMapper.selectList(); | ||
| 110 | - } | ||
| 111 | - | ||
| 112 | - @Override | ||
| 113 | - public DictDataRespDTO getDictDataFromCache(String type, String value) { | ||
| 114 | - return SysDictDataCoreConvert.INSTANCE.convert02(valueDictDataCache.get(type, value)); | ||
| 115 | - } | ||
| 116 | - | ||
| 117 | - @Override | ||
| 118 | - public DictDataRespDTO parseDictDataFromCache(String type, String label) { | ||
| 119 | - return SysDictDataCoreConvert.INSTANCE.convert02(labelDictDataCache.get(type, label)); | ||
| 120 | - } | ||
| 121 | - | ||
| 122 | - @Override | ||
| 123 | - public List<DictDataRespDTO> listDictDatasFromCache(String type) { | ||
| 124 | - return SysDictDataCoreConvert.INSTANCE.convertList03(labelDictDataCache.row(type).values()); | ||
| 125 | - } | ||
| 126 | - | ||
| 127 | - @Override | ||
| 128 | - public void validDictDatas(String dictType, Collection<String> values) { | ||
| 129 | - if (CollUtil.isEmpty(values)) { | ||
| 130 | - return; | ||
| 131 | - } | ||
| 132 | - ImmutableMap<String, SysDictDataDO> dictDataMap = valueDictDataCache.row(dictType); | ||
| 133 | - // 校验 | ||
| 134 | - values.forEach(value -> { | ||
| 135 | - SysDictDataDO dictData = dictDataMap.get(value); | ||
| 136 | - if (dictData == null) { | ||
| 137 | - throw exception(DICT_DATA_NOT_EXISTS); | ||
| 138 | - } | ||
| 139 | - if (!CommonStatusEnum.ENABLE.getStatus().equals(dictData.getStatus())) { | ||
| 140 | - throw exception(DICT_DATA_NOT_ENABLE, dictData.getLabel()); | ||
| 141 | - } | ||
| 142 | - }); | ||
| 143 | - } | ||
| 144 | - | ||
| 145 | -} |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/logger/SysLoginLogCoreService.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.logger; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO; | ||
| 4 | - | ||
| 5 | -/** | ||
| 6 | - * 登录日志 Core Service 接口 | ||
| 7 | - */ | ||
| 8 | -public interface SysLoginLogCoreService { | ||
| 9 | - | ||
| 10 | - /** | ||
| 11 | - * 创建登录日志 | ||
| 12 | - * | ||
| 13 | - * @param reqDTO 日志信息 | ||
| 14 | - */ | ||
| 15 | - void createLoginLog(SysLoginLogCreateReqDTO reqDTO); | ||
| 16 | - | ||
| 17 | -} |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/logger/impl/SysLoginLogCoreServiceImpl.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.logger.impl; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.convert.logger.SysLoginLogCoreConvert; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.logger.SysLoginLogCoreMapper; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService; | ||
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO; | ||
| 8 | -import org.springframework.stereotype.Service; | ||
| 9 | - | ||
| 10 | -import javax.annotation.Resource; | ||
| 11 | - | ||
| 12 | -/** | ||
| 13 | - * 登录日志 Service Core 实现 | ||
| 14 | - * | ||
| 15 | - * @author 芋道源码 | ||
| 16 | - */ | ||
| 17 | -@Service | ||
| 18 | -public class SysLoginLogCoreServiceImpl implements SysLoginLogCoreService { | ||
| 19 | - | ||
| 20 | - @Resource | ||
| 21 | - private SysLoginLogCoreMapper loginLogMapper; | ||
| 22 | - | ||
| 23 | - @Override | ||
| 24 | - public void createLoginLog(SysLoginLogCreateReqDTO reqDTO) { | ||
| 25 | - SysLoginLogDO loginLog = SysLoginLogCoreConvert.INSTANCE.convert(reqDTO); | ||
| 26 | - // 插入 | ||
| 27 | - loginLogMapper.insert(loginLog); | ||
| 28 | - } | ||
| 29 | - | ||
| 30 | -} |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/sms/SysSmsLogCoreService.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.sms; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 4 | - | ||
| 5 | -import java.util.Date; | ||
| 6 | -import java.util.Map; | ||
| 7 | - | ||
| 8 | -/** | ||
| 9 | - * 短信日志 Core Service 接口 | ||
| 10 | - * | ||
| 11 | - * @author zzf | ||
| 12 | - * @date 13:48 2021/3/2 | ||
| 13 | - */ | ||
| 14 | -public interface SysSmsLogCoreService { | ||
| 15 | - | ||
| 16 | - /** | ||
| 17 | - * 创建短信日志 | ||
| 18 | - * | ||
| 19 | - * @param mobile 手机号 | ||
| 20 | - * @param userId 用户编号 | ||
| 21 | - * @param userType 用户类型 | ||
| 22 | - * @param isSend 是否发送 | ||
| 23 | - * @param template 短信模板 | ||
| 24 | - * @param templateContent 短信内容 | ||
| 25 | - * @param templateParams 短信参数 | ||
| 26 | - * @return 发送日志编号 | ||
| 27 | - */ | ||
| 28 | - Long createSmsLog(String mobile, Long userId, Integer userType, Boolean isSend, | ||
| 29 | - SysSmsTemplateDO template, String templateContent, Map<String, Object> templateParams); | ||
| 30 | - | ||
| 31 | - /** | ||
| 32 | - * 更新日志的发送结果 | ||
| 33 | - * | ||
| 34 | - * @param id 日志编号 | ||
| 35 | - * @param sendCode 发送结果的编码 | ||
| 36 | - * @param sendMsg 发送结果的提示 | ||
| 37 | - * @param apiSendCode 短信 API 发送结果的编码 | ||
| 38 | - * @param apiSendMsg 短信 API 发送失败的提示 | ||
| 39 | - * @param apiRequestId 短信 API 发送返回的唯一请求 ID | ||
| 40 | - * @param apiSerialNo 短信 API 发送返回的序号 | ||
| 41 | - */ | ||
| 42 | - void updateSmsSendResult(Long id, Integer sendCode, String sendMsg, | ||
| 43 | - String apiSendCode, String apiSendMsg, String apiRequestId, String apiSerialNo); | ||
| 44 | - | ||
| 45 | - /** | ||
| 46 | - * 更新日志的接收结果 | ||
| 47 | - * | ||
| 48 | - * @param id 日志编号 | ||
| 49 | - * @param success 是否接收成功 | ||
| 50 | - * @param receiveTime 用户接收时间 | ||
| 51 | - * @param apiReceiveCode API 接收结果的编码 | ||
| 52 | - * @param apiReceiveMsg API 接收结果的说明 | ||
| 53 | - */ | ||
| 54 | - void updateSmsReceiveResult(Long id, Boolean success, Date receiveTime, String apiReceiveCode, String apiReceiveMsg); | ||
| 55 | - | ||
| 56 | -} |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/sms/SysSmsTemplateCoreService.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.sms; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 4 | - | ||
| 5 | -import java.util.Map; | ||
| 6 | - | ||
| 7 | -/** | ||
| 8 | - * 短信模板 Core Service 接口 | ||
| 9 | - * | ||
| 10 | - * @author 芋道源码 | ||
| 11 | - */ | ||
| 12 | -public interface SysSmsTemplateCoreService { | ||
| 13 | - | ||
| 14 | - /** | ||
| 15 | - * 初始化短信模板的本地缓存 | ||
| 16 | - */ | ||
| 17 | - void initLocalCache(); | ||
| 18 | - | ||
| 19 | - /** | ||
| 20 | - * 获得短信模板,从缓存中 | ||
| 21 | - * | ||
| 22 | - * @param code 模板编码 | ||
| 23 | - * @return 短信模板 | ||
| 24 | - */ | ||
| 25 | - SysSmsTemplateDO getSmsTemplateByCodeFromCache(String code); | ||
| 26 | - | ||
| 27 | - /** | ||
| 28 | - * 格式化短信内容 | ||
| 29 | - * | ||
| 30 | - * @param content 短信模板的内容 | ||
| 31 | - * @param params 内容的参数 | ||
| 32 | - * @return 格式化后的内容 | ||
| 33 | - */ | ||
| 34 | - String formatSmsTemplateContent(String content, Map<String, Object> params); | ||
| 35 | - | ||
| 36 | -} |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/sms/impl/SysSmsLogCoreServiceImpl.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.sms.impl; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.sms.SysSmsLogCoreMapper; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.enums.sms.SysSmsReceiveStatusEnum; | ||
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.enums.sms.SysSmsSendStatusEnum; | ||
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsLogCoreService; | ||
| 9 | -import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||
| 10 | -import lombok.extern.slf4j.Slf4j; | ||
| 11 | -import org.springframework.stereotype.Service; | ||
| 12 | - | ||
| 13 | -import javax.annotation.Resource; | ||
| 14 | -import java.util.Date; | ||
| 15 | -import java.util.Map; | ||
| 16 | -import java.util.Objects; | ||
| 17 | - | ||
| 18 | -/** | ||
| 19 | - * 短信日志 Core Service 实现类 | ||
| 20 | - * | ||
| 21 | - * @author zzf | ||
| 22 | - * @date 2021/1/25 9:25 | ||
| 23 | - */ | ||
| 24 | -@Slf4j | ||
| 25 | -@Service | ||
| 26 | -public class SysSmsLogCoreServiceImpl implements SysSmsLogCoreService { | ||
| 27 | - | ||
| 28 | - @Resource | ||
| 29 | - private SysSmsLogCoreMapper smsLogCoreMapper; | ||
| 30 | - | ||
| 31 | - @Override | ||
| 32 | - public Long createSmsLog(String mobile, Long userId, Integer userType, Boolean isSend, | ||
| 33 | - SysSmsTemplateDO template, String templateContent, Map<String, Object> templateParams) { | ||
| 34 | - SysSmsLogDO.SysSmsLogDOBuilder logBuilder = SysSmsLogDO.builder(); | ||
| 35 | - // 根据是否要发送,设置状态 | ||
| 36 | - logBuilder.sendStatus(Objects.equals(isSend, true) ? SysSmsSendStatusEnum.INIT.getStatus() | ||
| 37 | - : SysSmsSendStatusEnum.IGNORE.getStatus()); | ||
| 38 | - // 设置手机相关字段 | ||
| 39 | - logBuilder.mobile(mobile).userId(userId).userType(userType); | ||
| 40 | - // 设置模板相关字段 | ||
| 41 | - logBuilder.templateId(template.getId()).templateCode(template.getCode()).templateType(template.getType()); | ||
| 42 | - logBuilder.templateContent(templateContent).templateParams(templateParams).apiTemplateId(template.getApiTemplateId()); | ||
| 43 | - // 设置渠道相关字段 | ||
| 44 | - logBuilder.channelId(template.getChannelId()).channelCode(template.getChannelCode()); | ||
| 45 | - // 设置接收相关字段 | ||
| 46 | - logBuilder.receiveStatus(SysSmsReceiveStatusEnum.INIT.getStatus()); | ||
| 47 | - | ||
| 48 | - // 插入数据库 | ||
| 49 | - SysSmsLogDO logDO = logBuilder.build(); | ||
| 50 | - smsLogCoreMapper.insert(logDO); | ||
| 51 | - return logDO.getId(); | ||
| 52 | - } | ||
| 53 | - | ||
| 54 | - @Override | ||
| 55 | - public void updateSmsSendResult(Long id, Integer sendCode, String sendMsg, | ||
| 56 | - String apiSendCode, String apiSendMsg, String apiRequestId, String apiSerialNo) { | ||
| 57 | - SysSmsSendStatusEnum sendStatus = CommonResult.isSuccess(sendCode) ? SysSmsSendStatusEnum.SUCCESS | ||
| 58 | - : SysSmsSendStatusEnum.FAILURE; | ||
| 59 | - smsLogCoreMapper.updateById(SysSmsLogDO.builder().id(id).sendStatus(sendStatus.getStatus()).sendTime(new Date()) | ||
| 60 | - .sendCode(sendCode).sendMsg(sendMsg).apiSendCode(apiSendCode).apiSendMsg(apiSendMsg) | ||
| 61 | - .apiRequestId(apiRequestId).apiSerialNo(apiSerialNo).build()); | ||
| 62 | - } | ||
| 63 | - | ||
| 64 | - @Override | ||
| 65 | - public void updateSmsReceiveResult(Long id, Boolean success, Date receiveTime, String apiReceiveCode, String apiReceiveMsg) { | ||
| 66 | - SysSmsReceiveStatusEnum receiveStatus = Objects.equals(success, true) ? SysSmsReceiveStatusEnum.SUCCESS | ||
| 67 | - : SysSmsReceiveStatusEnum.FAILURE; | ||
| 68 | - smsLogCoreMapper.updateById(SysSmsLogDO.builder().id(id).receiveStatus(receiveStatus.getStatus()).receiveTime(receiveTime) | ||
| 69 | - .apiReceiveCode(apiReceiveCode).apiReceiveMsg(apiReceiveMsg).build()); | ||
| 70 | - } | ||
| 71 | - | ||
| 72 | -} |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/sms/impl/SysSmsTemplateCoreServiceImpl.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.sms.impl; | ||
| 2 | - | ||
| 3 | -import cn.hutool.core.collection.CollUtil; | ||
| 4 | -import cn.hutool.core.util.StrUtil; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.sms.SysSmsTemplateCoreMapper; | ||
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsTemplateCoreService; | ||
| 8 | -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | ||
| 9 | -import com.google.common.collect.ImmutableMap; | ||
| 10 | -import lombok.extern.slf4j.Slf4j; | ||
| 11 | -import org.springframework.scheduling.annotation.Scheduled; | ||
| 12 | -import org.springframework.stereotype.Service; | ||
| 13 | - | ||
| 14 | -import javax.annotation.PostConstruct; | ||
| 15 | -import javax.annotation.Resource; | ||
| 16 | -import java.util.Comparator; | ||
| 17 | -import java.util.Date; | ||
| 18 | -import java.util.List; | ||
| 19 | -import java.util.Map; | ||
| 20 | - | ||
| 21 | -/** | ||
| 22 | - * 短信模板 Core Service 接口 | ||
| 23 | - * | ||
| 24 | - * @author 芋道源码 | ||
| 25 | - */ | ||
| 26 | -@Service | ||
| 27 | -@Slf4j | ||
| 28 | -public class SysSmsTemplateCoreServiceImpl implements SysSmsTemplateCoreService { | ||
| 29 | - | ||
| 30 | - /** | ||
| 31 | - * 定时执行 {@link #schedulePeriodicRefresh()} 的周期 | ||
| 32 | - * 因为已经通过 Redis Pub/Sub 机制,所以频率不需要高 | ||
| 33 | - */ | ||
| 34 | - private static final long SCHEDULER_PERIOD = 5 * 60 * 1000L; | ||
| 35 | - | ||
| 36 | - /** | ||
| 37 | - * 短信模板缓存 | ||
| 38 | - * key:短信模板编码 {@link SysSmsTemplateDO#getCode()} | ||
| 39 | - * | ||
| 40 | - * 这里声明 volatile 修饰的原因是,每次刷新时,直接修改指向 | ||
| 41 | - */ | ||
| 42 | - private volatile Map<String, SysSmsTemplateDO> smsTemplateCache; | ||
| 43 | - /** | ||
| 44 | - * 缓存短信模板的最大更新时间,用于后续的增量轮询,判断是否有更新 | ||
| 45 | - */ | ||
| 46 | - private volatile Date maxUpdateTime; | ||
| 47 | - | ||
| 48 | - @Resource | ||
| 49 | - private SysSmsTemplateCoreMapper smsTemplateCoreMapper; | ||
| 50 | - | ||
| 51 | - @Override | ||
| 52 | - @PostConstruct | ||
| 53 | - public void initLocalCache() { | ||
| 54 | - // 获取短信模板列表,如果有更新 | ||
| 55 | - List<SysSmsTemplateDO> smsTemplateList = this.loadSmsTemplateIfUpdate(maxUpdateTime); | ||
| 56 | - if (CollUtil.isEmpty(smsTemplateList)) { | ||
| 57 | - return; | ||
| 58 | - } | ||
| 59 | - | ||
| 60 | - // 写入缓存 | ||
| 61 | - ImmutableMap.Builder<String, SysSmsTemplateDO> builder = ImmutableMap.builder(); | ||
| 62 | - smsTemplateList.forEach(sysSmsTemplateDO -> builder.put(sysSmsTemplateDO.getCode(), sysSmsTemplateDO)); | ||
| 63 | - smsTemplateCache = builder.build(); | ||
| 64 | - assert smsTemplateList.size() > 0; // 断言,避免告警 | ||
| 65 | - maxUpdateTime = smsTemplateList.stream().max(Comparator.comparing(BaseDO::getUpdateTime)).get().getUpdateTime(); | ||
| 66 | - log.info("[initLocalCache][初始化 SmsTemplate 数量为 {}]", smsTemplateList.size()); | ||
| 67 | - } | ||
| 68 | - | ||
| 69 | - /** | ||
| 70 | - * 如果短信模板发生变化,从数据库中获取最新的全量短信模板。 | ||
| 71 | - * 如果未发生变化,则返回空 | ||
| 72 | - * | ||
| 73 | - * @param maxUpdateTime 当前短信模板的最大更新时间 | ||
| 74 | - * @return 短信模板列表 | ||
| 75 | - */ | ||
| 76 | - private List<SysSmsTemplateDO> loadSmsTemplateIfUpdate(Date maxUpdateTime) { | ||
| 77 | - // 第一步,判断是否要更新。 | ||
| 78 | - if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据 | ||
| 79 | - log.info("[loadSmsTemplateIfUpdate][首次加载全量短信模板]"); | ||
| 80 | - } else { // 判断数据库中是否有更新的短信模板 | ||
| 81 | - if (smsTemplateCoreMapper.selectExistsByUpdateTimeAfter(maxUpdateTime) == null) { | ||
| 82 | - return null; | ||
| 83 | - } | ||
| 84 | - log.info("[loadSmsTemplateIfUpdate][增量加载全量短信模板]"); | ||
| 85 | - } | ||
| 86 | - // 第二步,如果有更新,则从数据库加载所有短信模板 | ||
| 87 | - return smsTemplateCoreMapper.selectList(); | ||
| 88 | - } | ||
| 89 | - | ||
| 90 | - @Scheduled(fixedDelay = SCHEDULER_PERIOD, initialDelay = SCHEDULER_PERIOD) | ||
| 91 | - public void schedulePeriodicRefresh() { | ||
| 92 | - initLocalCache(); | ||
| 93 | - } | ||
| 94 | - | ||
| 95 | - @Override | ||
| 96 | - public SysSmsTemplateDO getSmsTemplateByCodeFromCache(String code) { | ||
| 97 | - return smsTemplateCache.get(code); | ||
| 98 | - } | ||
| 99 | - | ||
| 100 | - @Override | ||
| 101 | - public String formatSmsTemplateContent(String content, Map<String, Object> params) { | ||
| 102 | - return StrUtil.format(content, params); | ||
| 103 | - } | ||
| 104 | - | ||
| 105 | -} |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/user/SysUserCoreService.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.user; | ||
| 2 | - | ||
| 3 | -import cn.hutool.core.collection.CollUtil; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 5 | -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||
| 6 | - | ||
| 7 | -import java.util.*; | ||
| 8 | - | ||
| 9 | -/** | ||
| 10 | - * 后台用户 Service Core 接口 | ||
| 11 | - * | ||
| 12 | - * @author 芋道源码 | ||
| 13 | - */ | ||
| 14 | -public interface SysUserCoreService { | ||
| 15 | - | ||
| 16 | - /** | ||
| 17 | - * 通过用户 ID 查询用户 | ||
| 18 | - * | ||
| 19 | - * @param id 用户ID | ||
| 20 | - * @return 用户对象信息 | ||
| 21 | - */ | ||
| 22 | - SysUserDO getUser(Long id); | ||
| 23 | - | ||
| 24 | - /** | ||
| 25 | - * 获得指定部门的用户数组 | ||
| 26 | - * | ||
| 27 | - * @param deptIds 部门数组 | ||
| 28 | - * @return 用户数组 | ||
| 29 | - */ | ||
| 30 | - List<SysUserDO> getUsersByDeptIds(Collection<Long> deptIds); | ||
| 31 | - | ||
| 32 | - /** | ||
| 33 | - * 获得指定岗位的用户数组 | ||
| 34 | - * | ||
| 35 | - * @param postIds 岗位数组 | ||
| 36 | - * @return 用户数组 | ||
| 37 | - */ | ||
| 38 | - List<SysUserDO> getUsersByPostIds(Collection<Long> postIds); | ||
| 39 | - | ||
| 40 | - /** | ||
| 41 | - * 获得用户列表 | ||
| 42 | - * | ||
| 43 | - * @param ids 用户编号数组 | ||
| 44 | - * @return 用户列表 | ||
| 45 | - */ | ||
| 46 | - List<SysUserDO> getUsers(Collection<Long> ids); | ||
| 47 | - | ||
| 48 | - /** | ||
| 49 | - * 校验用户们是否有效。如下情况,视为无效: | ||
| 50 | - * 1. 用户编号不存在 | ||
| 51 | - * 2. 用户被禁用 | ||
| 52 | - * | ||
| 53 | - * @param ids 用户编号数组 | ||
| 54 | - */ | ||
| 55 | - void validUsers(Set<Long> ids); | ||
| 56 | - | ||
| 57 | - /** | ||
| 58 | - * 获得用户 Map | ||
| 59 | - * | ||
| 60 | - * @param ids 用户编号数组 | ||
| 61 | - * @return 用户 Map | ||
| 62 | - */ | ||
| 63 | - default Map<Long, SysUserDO> getUserMap(Collection<Long> ids) { | ||
| 64 | - if (CollUtil.isEmpty(ids)) { | ||
| 65 | - return new HashMap<>(); | ||
| 66 | - } | ||
| 67 | - return CollectionUtils.convertMap(getUsers(ids), SysUserDO::getId); | ||
| 68 | - } | ||
| 69 | - | ||
| 70 | -} |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/user/impl/SysUserCoreServiceImpl.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.user.impl; | ||
| 2 | - | ||
| 3 | -import cn.hutool.core.collection.CollUtil; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.user.SysUserCoreMapper; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | ||
| 7 | -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 8 | -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||
| 9 | -import org.springframework.stereotype.Service; | ||
| 10 | - | ||
| 11 | -import javax.annotation.Resource; | ||
| 12 | -import java.util.*; | ||
| 13 | - | ||
| 14 | -import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.USER_IS_DISABLE; | ||
| 15 | -import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.USER_NOT_EXISTS; | ||
| 16 | -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||
| 17 | - | ||
| 18 | -/** | ||
| 19 | - * 后台用户 Service Core 实现 | ||
| 20 | - * | ||
| 21 | - * @author 芋道源码 | ||
| 22 | - */ | ||
| 23 | -@Service | ||
| 24 | -public class SysUserCoreServiceImpl implements SysUserCoreService { | ||
| 25 | - | ||
| 26 | - @Resource | ||
| 27 | - private SysUserCoreMapper userCoreMapper; | ||
| 28 | - | ||
| 29 | - @Override | ||
| 30 | - public SysUserDO getUser(Long id) { | ||
| 31 | - return userCoreMapper.selectById(id); | ||
| 32 | - } | ||
| 33 | - | ||
| 34 | - @Override | ||
| 35 | - public List<SysUserDO> getUsersByDeptIds(Collection<Long> deptIds) { | ||
| 36 | - if (CollUtil.isEmpty(deptIds)) { | ||
| 37 | - return Collections.emptyList(); | ||
| 38 | - } | ||
| 39 | - return userCoreMapper.selectListByDeptIds(deptIds); | ||
| 40 | - } | ||
| 41 | - | ||
| 42 | - @Override | ||
| 43 | - public List<SysUserDO> getUsersByPostIds(Collection<Long> postIds) { | ||
| 44 | - if (CollUtil.isEmpty(postIds)) { | ||
| 45 | - return Collections.emptyList(); | ||
| 46 | - } | ||
| 47 | - // 过滤不符合条件的 | ||
| 48 | - // TODO 芋艿:暂时只能内存过滤。解决方案:1、新建一个关联表;2、基于 where + 函数;3、json 字段,适合 mysql 8+ 版本 | ||
| 49 | - List<SysUserDO> users = userCoreMapper.selectList(); | ||
| 50 | - users.removeIf(user -> !CollUtil.containsAny(user.getPostIds(), postIds)); | ||
| 51 | - return users; | ||
| 52 | - } | ||
| 53 | - | ||
| 54 | - @Override | ||
| 55 | - public List<SysUserDO> getUsers(Collection<Long> ids) { | ||
| 56 | - if (CollUtil.isEmpty(ids)) { | ||
| 57 | - return Collections.emptyList(); | ||
| 58 | - } | ||
| 59 | - return userCoreMapper.selectBatchIds(ids); | ||
| 60 | - } | ||
| 61 | - | ||
| 62 | - @Override | ||
| 63 | - public void validUsers(Set<Long> ids) { | ||
| 64 | - if (CollUtil.isEmpty(ids)) { | ||
| 65 | - return; | ||
| 66 | - } | ||
| 67 | - // 获得岗位信息 | ||
| 68 | - List<SysUserDO> users = userCoreMapper.selectBatchIds(ids); | ||
| 69 | - Map<Long, SysUserDO> userMap = CollectionUtils.convertMap(users, SysUserDO::getId); | ||
| 70 | - // 校验 | ||
| 71 | - ids.forEach(id -> { | ||
| 72 | - SysUserDO user = userMap.get(id); | ||
| 73 | - if (user == null) { | ||
| 74 | - throw exception(USER_NOT_EXISTS); | ||
| 75 | - } | ||
| 76 | - if (!CommonStatusEnum.ENABLE.getStatus().equals(user.getStatus())) { | ||
| 77 | - throw exception(USER_IS_DISABLE, user.getNickname()); | ||
| 78 | - } | ||
| 79 | - }); | ||
| 80 | - } | ||
| 81 | - | ||
| 82 | -} |
yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/infra/service/file/InfFileCoreServiceTest.java
| @@ -12,8 +12,7 @@ import org.springframework.context.annotation.Import; | @@ -12,8 +12,7 @@ import org.springframework.context.annotation.Import; | ||
| 12 | 12 | ||
| 13 | import javax.annotation.Resource; | 13 | import javax.annotation.Resource; |
| 14 | 14 | ||
| 15 | -import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.FILE_NOT_EXISTS; | ||
| 16 | -import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.FILE_PATH_EXISTS; | 15 | +import static cn.iocoder.yudao.coreservice.modules.infra.enums.SysErrorCodeConstants.*; |
| 17 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | 16 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; |
| 18 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; | 17 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; |
| 19 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString; | 18 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString; |
yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/system/service/auth/SysUserSessionCoreServiceTest.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.auth; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.coreservice.BaseDbAndRedisUnitTest; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.auth.SysUserSessionCoreMapper; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.redis.auth.SysLoginUserCoreRedisDAO; | ||
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.service.auth.impl.SysUserSessionCoreServiceImpl; | ||
| 8 | -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | ||
| 9 | -import cn.iocoder.yudao.framework.security.config.SecurityProperties; | ||
| 10 | -import cn.iocoder.yudao.framework.security.core.LoginUser; | ||
| 11 | -import org.junit.jupiter.api.Test; | ||
| 12 | -import org.springframework.boot.test.mock.mockito.MockBean; | ||
| 13 | -import org.springframework.context.annotation.Import; | ||
| 14 | - | ||
| 15 | -import javax.annotation.Resource; | ||
| 16 | -import java.time.Duration; | ||
| 17 | -import java.util.Date; | ||
| 18 | - | ||
| 19 | -import static cn.hutool.core.util.RandomUtil.randomEle; | ||
| 20 | -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime; | ||
| 21 | -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | ||
| 22 | -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; | ||
| 23 | -import static org.junit.jupiter.api.Assertions.*; | ||
| 24 | -import static org.mockito.Mockito.when; | ||
| 25 | - | ||
| 26 | -@Import({SysUserSessionCoreServiceImpl.class, SysLoginUserCoreRedisDAO.class}) | ||
| 27 | -public class SysUserSessionCoreServiceTest extends BaseDbAndRedisUnitTest { | ||
| 28 | - | ||
| 29 | - @Resource | ||
| 30 | - private SysUserSessionCoreServiceImpl userSessionCoreService; | ||
| 31 | - | ||
| 32 | - @Resource | ||
| 33 | - private SysUserSessionCoreMapper userSessionCoreMapper; | ||
| 34 | - @Resource | ||
| 35 | - private SysLoginUserCoreRedisDAO loginUserCoreRedisDAO; | ||
| 36 | - | ||
| 37 | - @MockBean | ||
| 38 | - private SecurityProperties securityProperties; | ||
| 39 | - | ||
| 40 | - @Test | ||
| 41 | - public void testCreateUserSession_success() { | ||
| 42 | - // 准备参数 | ||
| 43 | - String userIp = randomString(); | ||
| 44 | - String userAgent = randomString(); | ||
| 45 | - LoginUser loginUser = randomPojo(LoginUser.class, o -> { | ||
| 46 | - o.setUserType(randomEle(UserTypeEnum.values()).getValue()); | ||
| 47 | - o.setTenantId(0L); // 租户设置为 0,因为暂未启用多租户组件 | ||
| 48 | - }); | ||
| 49 | - // mock 方法 | ||
| 50 | - when(securityProperties.getSessionTimeout()).thenReturn(Duration.ofDays(1)); | ||
| 51 | - | ||
| 52 | - // 调用 | ||
| 53 | - String sessionId = userSessionCoreService.createUserSession(loginUser, userIp, userAgent); | ||
| 54 | - // 校验 SysUserSessionDO 记录 | ||
| 55 | - SysUserSessionDO userSessionDO = userSessionCoreMapper.selectById(sessionId); | ||
| 56 | - assertPojoEquals(loginUser, userSessionDO, "id", "updateTime"); | ||
| 57 | - assertEquals(sessionId, userSessionDO.getId()); | ||
| 58 | - assertEquals(userIp, userSessionDO.getUserIp()); | ||
| 59 | - assertEquals(userAgent, userSessionDO.getUserAgent()); | ||
| 60 | - // 校验 LoginUser 缓存 | ||
| 61 | - LoginUser redisLoginUser = loginUserCoreRedisDAO.get(sessionId); | ||
| 62 | - assertPojoEquals(loginUser, redisLoginUser, "username", "password"); | ||
| 63 | - } | ||
| 64 | - | ||
| 65 | - @Test | ||
| 66 | - public void testCreateRefreshUserSession_success() { | ||
| 67 | - // 准备参数 | ||
| 68 | - String sessionId = randomString(); | ||
| 69 | - String userIp = randomString(); | ||
| 70 | - String userAgent = randomString(); | ||
| 71 | - long timeLong = randomLongId(); | ||
| 72 | - String userName = randomString(); | ||
| 73 | - Date date = randomDate(); | ||
| 74 | - LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setUserType(randomEle(UserTypeEnum.values()).getValue())); | ||
| 75 | - // mock 方法 | ||
| 76 | - when(securityProperties.getSessionTimeout()).thenReturn(Duration.ofDays(1)); | ||
| 77 | - // mock 数据 | ||
| 78 | - loginUser.setUpdateTime(date); | ||
| 79 | - loginUserCoreRedisDAO.set(sessionId, loginUser); | ||
| 80 | - SysUserSessionDO userSession = SysUserSessionDO.builder().id(sessionId) | ||
| 81 | - .userId(loginUser.getId()).userType(loginUser.getUserType()) | ||
| 82 | - .userIp(userIp).userAgent(userAgent).username(userName) | ||
| 83 | - .sessionTimeout(addTime(Duration.ofMillis(timeLong))) | ||
| 84 | - .build(); | ||
| 85 | - userSessionCoreMapper.insert(userSession); | ||
| 86 | - | ||
| 87 | - // 调用 | ||
| 88 | - userSessionCoreService.refreshUserSession(sessionId, loginUser); | ||
| 89 | - // 校验 LoginUser 缓存 | ||
| 90 | - LoginUser redisLoginUser = loginUserCoreRedisDAO.get(sessionId); | ||
| 91 | - assertNotEquals(redisLoginUser.getUpdateTime(), date); | ||
| 92 | - // 校验 SysUserSessionDO 记录 | ||
| 93 | - SysUserSessionDO updateDO = userSessionCoreMapper.selectById(sessionId); | ||
| 94 | - assertEquals(updateDO.getUsername(), loginUser.getUsername()); | ||
| 95 | - assertNotEquals(updateDO.getUpdateTime(), userSession.getUpdateTime()); | ||
| 96 | - assertNotEquals(updateDO.getSessionTimeout(), addTime(Duration.ofMillis(timeLong))); | ||
| 97 | - } | ||
| 98 | - | ||
| 99 | - @Test | ||
| 100 | - public void testDeleteUserSession_success() { | ||
| 101 | - // 准备参数 | ||
| 102 | - String sessionId = randomString(); | ||
| 103 | - String userIp = randomString(); | ||
| 104 | - String userAgent = randomString(); | ||
| 105 | - Long timeLong = randomLongId(); | ||
| 106 | - LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setUserType(randomEle(UserTypeEnum.values()).getValue())); | ||
| 107 | - // mock 存入 Redis | ||
| 108 | - when(securityProperties.getSessionTimeout()).thenReturn(Duration.ofDays(1)); | ||
| 109 | - // mock 数据 | ||
| 110 | - loginUserCoreRedisDAO.set(sessionId, loginUser); | ||
| 111 | - SysUserSessionDO userSession = SysUserSessionDO.builder().id(sessionId) | ||
| 112 | - .userId(loginUser.getId()).userType(loginUser.getUserType()) | ||
| 113 | - .userIp(userIp).userAgent(userAgent).username(loginUser.getUsername()) | ||
| 114 | - .sessionTimeout(addTime(Duration.ofMillis(timeLong))) | ||
| 115 | - .build(); | ||
| 116 | - userSessionCoreMapper.insert(userSession); | ||
| 117 | - | ||
| 118 | - // 调用 | ||
| 119 | - userSessionCoreService.deleteUserSession(sessionId); | ||
| 120 | - // 校验数据不存在了 | ||
| 121 | - assertNull(loginUserCoreRedisDAO.get(sessionId)); | ||
| 122 | - assertNull(userSessionCoreMapper.selectById(sessionId)); | ||
| 123 | - } | ||
| 124 | - | ||
| 125 | -} |
yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/system/service/dict/SysDictDataCoreServiceTest.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.dict; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.coreservice.BaseDbUnitTest; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.dict.SysDictDataCoreMapper; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.service.dict.impl.SysDictDataCoreServiceImpl; | ||
| 7 | -import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; | ||
| 8 | -import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; | ||
| 9 | -import com.google.common.collect.ImmutableTable; | ||
| 10 | -import org.junit.jupiter.api.Test; | ||
| 11 | -import org.springframework.context.annotation.Import; | ||
| 12 | - | ||
| 13 | -import javax.annotation.Resource; | ||
| 14 | -import java.util.Date; | ||
| 15 | -import java.util.function.Consumer; | ||
| 16 | - | ||
| 17 | -import static cn.hutool.core.bean.BeanUtil.getFieldValue; | ||
| 18 | -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | ||
| 19 | -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomCommonStatus; | ||
| 20 | -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; | ||
| 21 | -import static org.junit.jupiter.api.Assertions.assertEquals; | ||
| 22 | - | ||
| 23 | -/** | ||
| 24 | -* {@link SysDictDataCoreServiceImpl} 的单元测试类 | ||
| 25 | -* | ||
| 26 | -* @author 芋道源码 | ||
| 27 | -*/ | ||
| 28 | -@Import(SysDictDataCoreServiceImpl.class) | ||
| 29 | -public class SysDictDataCoreServiceTest extends BaseDbUnitTest { | ||
| 30 | - | ||
| 31 | - @Resource | ||
| 32 | - private SysDictDataCoreServiceImpl dictDataCoreService; | ||
| 33 | - | ||
| 34 | - @Resource | ||
| 35 | - private SysDictDataCoreMapper dictDataMapper; | ||
| 36 | - | ||
| 37 | - /** | ||
| 38 | - * 测试加载到新的字典数据的情况 | ||
| 39 | - */ | ||
| 40 | - @Test | ||
| 41 | - @SuppressWarnings("unchecked") | ||
| 42 | - public void testInitLocalCache() { | ||
| 43 | - // mock 数据 | ||
| 44 | - SysDictDataDO dictData01 = randomDictDataDO(); | ||
| 45 | - dictDataMapper.insert(dictData01); | ||
| 46 | - SysDictDataDO dictData02 = randomDictDataDO(); | ||
| 47 | - dictDataMapper.insert(dictData02); | ||
| 48 | - | ||
| 49 | - // 调用 | ||
| 50 | - dictDataCoreService.initLocalCache(); | ||
| 51 | - // 断言 labelDictDataCache 缓存 | ||
| 52 | - ImmutableTable<String, String, SysDictDataDO> labelDictDataCache = | ||
| 53 | - (ImmutableTable<String, String, SysDictDataDO>) getFieldValue(dictDataCoreService, "labelDictDataCache"); | ||
| 54 | - assertEquals(2, labelDictDataCache.size()); | ||
| 55 | - assertPojoEquals(dictData01, labelDictDataCache.get(dictData01.getDictType(), dictData01.getLabel())); | ||
| 56 | - assertPojoEquals(dictData02, labelDictDataCache.get(dictData02.getDictType(), dictData02.getLabel())); | ||
| 57 | - // 断言 valueDictDataCache 缓存 | ||
| 58 | - ImmutableTable<String, String, SysDictDataDO> valueDictDataCache = | ||
| 59 | - (ImmutableTable<String, String, SysDictDataDO>) getFieldValue(dictDataCoreService, "valueDictDataCache"); | ||
| 60 | - assertEquals(2, valueDictDataCache.size()); | ||
| 61 | - assertPojoEquals(dictData01, valueDictDataCache.get(dictData01.getDictType(), dictData01.getValue())); | ||
| 62 | - assertPojoEquals(dictData02, valueDictDataCache.get(dictData02.getDictType(), dictData02.getValue())); | ||
| 63 | - // 断言 maxUpdateTime 缓存 | ||
| 64 | - Date maxUpdateTime = (Date) getFieldValue(dictDataCoreService, "maxUpdateTime"); | ||
| 65 | - assertEquals(ObjectUtils.max(dictData01.getUpdateTime(), dictData02.getUpdateTime()), maxUpdateTime); | ||
| 66 | - } | ||
| 67 | - | ||
| 68 | - // ========== 随机对象 ========== | ||
| 69 | - | ||
| 70 | - @SafeVarargs | ||
| 71 | - private static SysDictDataDO randomDictDataDO(Consumer<SysDictDataDO>... consumers) { | ||
| 72 | - Consumer<SysDictDataDO> consumer = (o) -> { | ||
| 73 | - o.setStatus(randomCommonStatus()); // 保证 status 的范围 | ||
| 74 | - }; | ||
| 75 | - return randomPojo(SysDictDataDO.class, ArrayUtils.append(consumer, consumers)); | ||
| 76 | - } | ||
| 77 | - | ||
| 78 | -} |
yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/system/service/logger/SysLoginLogServiceImplTest.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.logger; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.coreservice.BaseDbUnitTest; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.logger.SysLoginLogCoreMapper; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginLogTypeEnum; | ||
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginResultEnum; | ||
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO; | ||
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.service.logger.impl.SysLoginLogCoreServiceImpl; | ||
| 10 | -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | ||
| 11 | -import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; | ||
| 12 | -import cn.iocoder.yudao.framework.test.core.util.RandomUtils; | ||
| 13 | -import org.junit.jupiter.api.Test; | ||
| 14 | -import org.springframework.context.annotation.Import; | ||
| 15 | - | ||
| 16 | -import javax.annotation.Resource; | ||
| 17 | - | ||
| 18 | -import static cn.hutool.core.util.RandomUtil.randomEle; | ||
| 19 | -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | ||
| 20 | - | ||
| 21 | -@Import(SysLoginLogCoreServiceImpl.class) | ||
| 22 | -public class SysLoginLogServiceImplTest extends BaseDbUnitTest { | ||
| 23 | - | ||
| 24 | - @Resource | ||
| 25 | - private SysLoginLogCoreServiceImpl loginLogCoreService; | ||
| 26 | - | ||
| 27 | - @Resource | ||
| 28 | - private SysLoginLogCoreMapper loginLogCoreMapper; | ||
| 29 | - | ||
| 30 | - @Test | ||
| 31 | - public void testCreateLoginLog() { | ||
| 32 | - SysLoginLogCreateReqDTO reqDTO = RandomUtils.randomPojo(SysLoginLogCreateReqDTO.class, vo -> { | ||
| 33 | - // 指定随机的范围,避免超出范围入库失败 | ||
| 34 | - vo.setUserType(randomEle(UserTypeEnum.values()).getValue()); | ||
| 35 | - vo.setLogType(randomEle(SysLoginLogTypeEnum.values()).getType()); | ||
| 36 | - vo.setResult(randomEle(SysLoginResultEnum.values()).getResult()); | ||
| 37 | - vo.setTraceId(TracerUtils.getTraceId()); | ||
| 38 | - }); | ||
| 39 | - | ||
| 40 | - // 调用 | ||
| 41 | - loginLogCoreService.createLoginLog(reqDTO); | ||
| 42 | - // 断言,忽略基本字段 | ||
| 43 | - SysLoginLogDO sysLoginLogDO = loginLogCoreMapper.selectOne(null); | ||
| 44 | - assertPojoEquals(reqDTO, sysLoginLogDO); | ||
| 45 | - } | ||
| 46 | - | ||
| 47 | -} |
yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/system/service/package-info.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service; |
yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/system/service/sms/SysSmsLogCoreServiceTest.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.sms; | ||
| 2 | - | ||
| 3 | -import cn.hutool.core.map.MapUtil; | ||
| 4 | -import cn.iocoder.yudao.coreservice.BaseDbUnitTest; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.sms.SysSmsLogCoreMapper; | ||
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.enums.sms.SysSmsReceiveStatusEnum; | ||
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.enums.sms.SysSmsSendStatusEnum; | ||
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.enums.sms.SysSmsTemplateTypeEnum; | ||
| 11 | -import cn.iocoder.yudao.coreservice.modules.system.service.sms.impl.SysSmsLogCoreServiceImpl; | ||
| 12 | -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | ||
| 13 | -import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||
| 14 | -import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; | ||
| 15 | -import org.junit.jupiter.api.Test; | ||
| 16 | -import org.springframework.context.annotation.Import; | ||
| 17 | - | ||
| 18 | -import javax.annotation.Resource; | ||
| 19 | -import java.util.Date; | ||
| 20 | -import java.util.Map; | ||
| 21 | -import java.util.function.Consumer; | ||
| 22 | - | ||
| 23 | -import static cn.hutool.core.util.RandomUtil.randomBoolean; | ||
| 24 | -import static cn.hutool.core.util.RandomUtil.randomEle; | ||
| 25 | -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; | ||
| 26 | -import static org.junit.jupiter.api.Assertions.assertEquals; | ||
| 27 | -import static org.junit.jupiter.api.Assertions.assertNotNull; | ||
| 28 | - | ||
| 29 | -/** | ||
| 30 | -* {@link SysSmsLogCoreServiceImpl} 的单元测试类 | ||
| 31 | -* | ||
| 32 | -* @author 芋道源码 | ||
| 33 | -*/ | ||
| 34 | -@Import(SysSmsLogCoreServiceImpl.class) | ||
| 35 | -public class SysSmsLogCoreServiceTest extends BaseDbUnitTest { | ||
| 36 | - | ||
| 37 | - @Resource | ||
| 38 | - private SysSmsLogCoreServiceImpl smsLogCoreService; | ||
| 39 | - | ||
| 40 | - @Resource | ||
| 41 | - private SysSmsLogCoreMapper smsLogCoreMapper; | ||
| 42 | - | ||
| 43 | - @Test | ||
| 44 | - public void testCreateSmsLog() { | ||
| 45 | - // 准备参数 | ||
| 46 | - String mobile = randomString(); | ||
| 47 | - Long userId = randomLongId(); | ||
| 48 | - Integer userType = randomEle(UserTypeEnum.values()).getValue(); | ||
| 49 | - Boolean isSend = randomBoolean(); | ||
| 50 | - SysSmsTemplateDO templateDO = randomPojo(SysSmsTemplateDO.class, | ||
| 51 | - o -> o.setType(randomEle(SysSmsTemplateTypeEnum.values()).getType())); | ||
| 52 | - String templateContent = randomString(); | ||
| 53 | - Map<String, Object> templateParams = randomTemplateParams(); | ||
| 54 | - // mock 方法 | ||
| 55 | - | ||
| 56 | - // 调用 | ||
| 57 | - Long logId = smsLogCoreService.createSmsLog(mobile, userId, userType, isSend, | ||
| 58 | - templateDO, templateContent, templateParams); | ||
| 59 | - // 断言 | ||
| 60 | - SysSmsLogDO logDO = smsLogCoreMapper.selectById(logId); | ||
| 61 | - assertEquals(isSend ? SysSmsSendStatusEnum.INIT.getStatus() : SysSmsSendStatusEnum.IGNORE.getStatus(), | ||
| 62 | - logDO.getSendStatus()); | ||
| 63 | - assertEquals(mobile, logDO.getMobile()); | ||
| 64 | - assertEquals(userType, logDO.getUserType()); | ||
| 65 | - assertEquals(userId, logDO.getUserId()); | ||
| 66 | - assertEquals(templateDO.getId(), logDO.getTemplateId()); | ||
| 67 | - assertEquals(templateDO.getCode(), logDO.getTemplateCode()); | ||
| 68 | - assertEquals(templateDO.getType(), logDO.getTemplateType()); | ||
| 69 | - assertEquals(templateDO.getChannelId(), logDO.getChannelId()); | ||
| 70 | - assertEquals(templateDO.getChannelCode(), logDO.getChannelCode()); | ||
| 71 | - assertEquals(templateContent, logDO.getTemplateContent()); | ||
| 72 | - assertEquals(templateParams, logDO.getTemplateParams()); | ||
| 73 | - assertEquals(SysSmsReceiveStatusEnum.INIT.getStatus(), logDO.getReceiveStatus()); | ||
| 74 | - } | ||
| 75 | - | ||
| 76 | - @Test | ||
| 77 | - public void testUpdateSmsSendResult() { | ||
| 78 | - // mock 数据 | ||
| 79 | - SysSmsLogDO dbSmsLog = randomSmsLogDO( | ||
| 80 | - o -> o.setSendStatus(SysSmsSendStatusEnum.IGNORE.getStatus())); | ||
| 81 | - smsLogCoreMapper.insert(dbSmsLog); | ||
| 82 | - // 准备参数 | ||
| 83 | - Long id = dbSmsLog.getId(); | ||
| 84 | - Integer sendCode = randomInteger(); | ||
| 85 | - String sendMsg = randomString(); | ||
| 86 | - String apiSendCode = randomString(); | ||
| 87 | - String apiSendMsg = randomString(); | ||
| 88 | - String apiRequestId = randomString(); | ||
| 89 | - String apiSerialNo = randomString(); | ||
| 90 | - | ||
| 91 | - // 调用 | ||
| 92 | - smsLogCoreService.updateSmsSendResult(id, sendCode, sendMsg, | ||
| 93 | - apiSendCode, apiSendMsg, apiRequestId, apiSerialNo); | ||
| 94 | - // 断言 | ||
| 95 | - dbSmsLog = smsLogCoreMapper.selectById(id); | ||
| 96 | - assertEquals(CommonResult.isSuccess(sendCode) ? SysSmsSendStatusEnum.SUCCESS.getStatus() | ||
| 97 | - : SysSmsSendStatusEnum.FAILURE.getStatus(), dbSmsLog.getSendStatus()); | ||
| 98 | - assertNotNull(dbSmsLog.getSendTime()); | ||
| 99 | - assertEquals(sendMsg, dbSmsLog.getSendMsg()); | ||
| 100 | - assertEquals(apiSendCode, dbSmsLog.getApiSendCode()); | ||
| 101 | - assertEquals(apiSendMsg, dbSmsLog.getApiSendMsg()); | ||
| 102 | - assertEquals(apiRequestId, dbSmsLog.getApiRequestId()); | ||
| 103 | - assertEquals(apiSerialNo, dbSmsLog.getApiSerialNo()); | ||
| 104 | - } | ||
| 105 | - | ||
| 106 | - @Test | ||
| 107 | - public void testUpdateSmsReceiveResult() { | ||
| 108 | - // mock 数据 | ||
| 109 | - SysSmsLogDO dbSmsLog = randomSmsLogDO( | ||
| 110 | - o -> o.setReceiveStatus(SysSmsReceiveStatusEnum.INIT.getStatus())); | ||
| 111 | - smsLogCoreMapper.insert(dbSmsLog); | ||
| 112 | - // 准备参数 | ||
| 113 | - Long id = dbSmsLog.getId(); | ||
| 114 | - Boolean success = randomBoolean(); | ||
| 115 | - Date receiveTime = randomDate(); | ||
| 116 | - String apiReceiveCode = randomString(); | ||
| 117 | - String apiReceiveMsg = randomString(); | ||
| 118 | - | ||
| 119 | - // 调用 | ||
| 120 | - smsLogCoreService.updateSmsReceiveResult(id, success, receiveTime, apiReceiveCode, apiReceiveMsg); | ||
| 121 | - // 断言 | ||
| 122 | - dbSmsLog = smsLogCoreMapper.selectById(id); | ||
| 123 | - assertEquals(success ? SysSmsReceiveStatusEnum.SUCCESS.getStatus() | ||
| 124 | - : SysSmsReceiveStatusEnum.FAILURE.getStatus(), dbSmsLog.getReceiveStatus()); | ||
| 125 | - assertEquals(receiveTime, dbSmsLog.getReceiveTime()); | ||
| 126 | - assertEquals(apiReceiveCode, dbSmsLog.getApiReceiveCode()); | ||
| 127 | - assertEquals(apiReceiveMsg, dbSmsLog.getApiReceiveMsg()); | ||
| 128 | - } | ||
| 129 | - | ||
| 130 | - // ========== 随机对象 ========== | ||
| 131 | - | ||
| 132 | - @SafeVarargs | ||
| 133 | - private static SysSmsLogDO randomSmsLogDO(Consumer<SysSmsLogDO>... consumers) { | ||
| 134 | - Consumer<SysSmsLogDO> consumer = (o) -> { | ||
| 135 | - o.setTemplateParams(randomTemplateParams()); | ||
| 136 | - o.setTemplateType(randomEle(SysSmsTemplateTypeEnum.values()).getType()); // 保证 templateType 的范围 | ||
| 137 | - o.setUserType(randomEle(UserTypeEnum.values()).getValue()); // 保证 userType 的范围 | ||
| 138 | - o.setSendStatus(randomEle(SysSmsSendStatusEnum.values()).getStatus()); // 保证 sendStatus 的范围 | ||
| 139 | - o.setReceiveStatus(randomEle(SysSmsReceiveStatusEnum.values()).getStatus()); // 保证 receiveStatus 的范围 | ||
| 140 | - }; | ||
| 141 | - return randomPojo(SysSmsLogDO.class, ArrayUtils.append(consumer, consumers)); | ||
| 142 | - } | ||
| 143 | - | ||
| 144 | - | ||
| 145 | - private static Map<String, Object> randomTemplateParams() { | ||
| 146 | - return MapUtil.<String, Object>builder().put(randomString(), randomString()) | ||
| 147 | - .put(randomString(), randomString()).build(); | ||
| 148 | - } | ||
| 149 | -} |
yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/system/service/sms/SysSmsTemplateServiceTest.java deleted
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.sms; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.coreservice.BaseDbUnitTest; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.sms.SysSmsTemplateCoreMapper; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.enums.sms.SysSmsTemplateTypeEnum; | ||
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.service.sms.impl.SysSmsTemplateCoreServiceImpl; | ||
| 8 | -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 9 | -import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; | ||
| 10 | -import org.junit.jupiter.api.Test; | ||
| 11 | -import org.springframework.context.annotation.Import; | ||
| 12 | - | ||
| 13 | -import javax.annotation.Resource; | ||
| 14 | -import java.util.Date; | ||
| 15 | -import java.util.Map; | ||
| 16 | -import java.util.function.Consumer; | ||
| 17 | - | ||
| 18 | -import static cn.hutool.core.bean.BeanUtil.getFieldValue; | ||
| 19 | -import static cn.hutool.core.util.RandomUtil.randomEle; | ||
| 20 | -import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.max; | ||
| 21 | -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | ||
| 22 | -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; | ||
| 23 | -import static org.junit.jupiter.api.Assertions.assertEquals; | ||
| 24 | - | ||
| 25 | -/** | ||
| 26 | -* {@link SysSmsTemplateCoreServiceImpl} 的单元测试类 | ||
| 27 | -* | ||
| 28 | -* @author 芋道源码 | ||
| 29 | -*/ | ||
| 30 | -@Import(SysSmsTemplateCoreServiceImpl.class) | ||
| 31 | -public class SysSmsTemplateServiceTest extends BaseDbUnitTest { | ||
| 32 | - | ||
| 33 | - @Resource | ||
| 34 | - private SysSmsTemplateCoreServiceImpl smsTemplateCoreService; | ||
| 35 | - | ||
| 36 | - @Resource | ||
| 37 | - private SysSmsTemplateCoreMapper smsTemplateCoreMapper; | ||
| 38 | - | ||
| 39 | - @Test | ||
| 40 | - @SuppressWarnings("unchecked") | ||
| 41 | - void testInitLocalCache() { | ||
| 42 | - // mock 数据 | ||
| 43 | - SysSmsTemplateDO smsTemplate01 = randomSmsTemplateDO(); | ||
| 44 | - smsTemplateCoreMapper.insert(smsTemplate01); | ||
| 45 | - SysSmsTemplateDO smsTemplate02 = randomSmsTemplateDO(); | ||
| 46 | - smsTemplateCoreMapper.insert(smsTemplate02); | ||
| 47 | - | ||
| 48 | - // 调用 | ||
| 49 | - smsTemplateCoreService.initLocalCache(); | ||
| 50 | - // 断言 deptCache 缓存 | ||
| 51 | - Map<String, SysSmsTemplateDO> smsTemplateCache = (Map<String, SysSmsTemplateDO>) getFieldValue(smsTemplateCoreService, "smsTemplateCache"); | ||
| 52 | - assertEquals(2, smsTemplateCache.size()); | ||
| 53 | - assertPojoEquals(smsTemplate01, smsTemplateCache.get(smsTemplate01.getCode())); | ||
| 54 | - assertPojoEquals(smsTemplate02, smsTemplateCache.get(smsTemplate02.getCode())); | ||
| 55 | - // 断言 maxUpdateTime 缓存 | ||
| 56 | - Date maxUpdateTime = (Date) getFieldValue(smsTemplateCoreService, "maxUpdateTime"); | ||
| 57 | - assertEquals(max(smsTemplate01.getUpdateTime(), smsTemplate02.getUpdateTime()), maxUpdateTime); | ||
| 58 | - } | ||
| 59 | - | ||
| 60 | - // ========== 随机对象 ========== | ||
| 61 | - | ||
| 62 | - @SafeVarargs | ||
| 63 | - private static SysSmsTemplateDO randomSmsTemplateDO(Consumer<SysSmsTemplateDO>... consumers) { | ||
| 64 | - Consumer<SysSmsTemplateDO> consumer = (o) -> { | ||
| 65 | - o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 | ||
| 66 | - o.setType(randomEle(SysSmsTemplateTypeEnum.values()).getType()); // 保证 type 的 范围 | ||
| 67 | - }; | ||
| 68 | - return randomPojo(SysSmsTemplateDO.class, ArrayUtils.append(consumer, consumers)); | ||
| 69 | - } | ||
| 70 | - | ||
| 71 | -} |
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/message/BpmMessageConvert.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.bpm.convert.message; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.adminserver.modules.bpm.convert.message; | ||
| 3 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceApproveReqDTO; | 3 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceApproveReqDTO; |
| 4 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceRejectReqDTO; | 4 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceRejectReqDTO; |
| 5 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO; | 5 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | 6 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.SysUserDO; |
| 7 | import org.activiti.api.task.model.Task; | 7 | import org.activiti.api.task.model.Task; |
| 8 | import org.activiti.engine.runtime.ProcessInstance; | 8 | import org.activiti.engine.runtime.ProcessInstance; |
| 9 | import org.mapstruct.Mapper; | 9 | import org.mapstruct.Mapper; |
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/task/BpmProcessInstanceConvert.java
| @@ -5,8 +5,8 @@ import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.instance.BpmP | @@ -5,8 +5,8 @@ import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.instance.BpmP | ||
| 5 | import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO; | 5 | import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO; |
| 6 | import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; | 6 | import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; |
| 7 | import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.event.BpmProcessInstanceResultEvent; | 7 | import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.event.BpmProcessInstanceResultEvent; |
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | ||
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | 8 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 9 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.SysUserDO; | ||
| 10 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 10 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 11 | import org.activiti.engine.history.HistoricProcessInstance; | 11 | import org.activiti.engine.history.HistoricProcessInstance; |
| 12 | import org.activiti.engine.repository.ProcessDefinition; | 12 | import org.activiti.engine.repository.ProcessDefinition; |
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/task/BpmTaskConvert.java
| @@ -4,8 +4,8 @@ import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task.BpmTaskD | @@ -4,8 +4,8 @@ import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task.BpmTaskD | ||
| 4 | import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task.BpmTaskRespVO; | 4 | import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task.BpmTaskRespVO; |
| 5 | import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task.BpmTaskTodoPageItemRespVO; | 5 | import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task.BpmTaskTodoPageItemRespVO; |
| 6 | import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.task.BpmTaskExtDO; | 6 | import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.task.BpmTaskExtDO; |
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | ||
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | 7 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 8 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.SysUserDO; | ||
| 9 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | 9 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 10 | import cn.iocoder.yudao.framework.common.util.number.NumberUtils; | 10 | import cn.iocoder.yudao.framework.common.util.number.NumberUtils; |
| 11 | import org.activiti.engine.history.HistoricProcessInstance; | 11 | import org.activiti.engine.history.HistoricProcessInstance; |
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/dataobject/leave/BpmOALeaveDO.java
| 1 | package cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.leave; | 1 | package cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.leave; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.SysUserDO; |
| 4 | import lombok.*; | 4 | import lombok.*; |
| 5 | import java.util.*; | 5 | import java.util.*; |
| 6 | import com.baomidou.mybatisplus.annotation.*; | 6 | import com.baomidou.mybatisplus.annotation.*; |
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/message/BpmMessageEnum.java
| 1 | package cn.iocoder.yudao.adminserver.modules.bpm.enums.message; | 1 | package cn.iocoder.yudao.adminserver.modules.bpm.enums.message; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsTemplateDO; |
| 4 | import lombok.AllArgsConstructor; | 4 | import lombok.AllArgsConstructor; |
| 5 | import lombok.Getter; | 5 | import lombok.Getter; |
| 6 | 6 |
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/framework/activiti/config/BpmActivitiConfiguration.java
| @@ -7,9 +7,9 @@ import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.identity | @@ -7,9 +7,9 @@ import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.identity | ||
| 7 | import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.listener.BpmTackActivitiEventListener; | 7 | import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.listener.BpmTackActivitiEventListener; |
| 8 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService; | 8 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService; |
| 9 | import cn.iocoder.yudao.coreservice.modules.bpm.api.group.BpmUserGroupServiceApi; | 9 | import cn.iocoder.yudao.coreservice.modules.bpm.api.group.BpmUserGroupServiceApi; |
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService; | ||
| 11 | -import cn.iocoder.yudao.coreservice.modules.system.service.permission.SysPermissionCoreService; | ||
| 12 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | 10 | +import cn.iocoder.yudao.module.system.service.dept.SysDeptCoreService; |
| 11 | +import cn.iocoder.yudao.module.system.service.permission.SysPermissionCoreService; | ||
| 12 | +import cn.iocoder.yudao.module.system.service.user.SysUserCoreService; | ||
| 13 | import org.activiti.api.runtime.shared.identity.UserGroupManager; | 13 | import org.activiti.api.runtime.shared.identity.UserGroupManager; |
| 14 | import org.activiti.spring.boot.ProcessEngineConfigurationConfigurer; | 14 | import org.activiti.spring.boot.ProcessEngineConfigurationConfigurer; |
| 15 | import org.springframework.context.ApplicationEventPublisher; | 15 | import org.springframework.context.ApplicationEventPublisher; |
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/framework/activiti/core/behavior/BpmActivityBehaviorFactory.java
| @@ -3,9 +3,9 @@ package cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.behavio | @@ -3,9 +3,9 @@ package cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.behavio | ||
| 3 | import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.behavior.script.BpmTaskAssignScript; | 3 | import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.behavior.script.BpmTaskAssignScript; |
| 4 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService; | 4 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService; |
| 5 | import cn.iocoder.yudao.coreservice.modules.bpm.api.group.BpmUserGroupServiceApi; | 5 | import cn.iocoder.yudao.coreservice.modules.bpm.api.group.BpmUserGroupServiceApi; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService; | ||
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.service.permission.SysPermissionCoreService; | ||
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | 6 | +import cn.iocoder.yudao.module.system.service.dept.SysDeptCoreService; |
| 7 | +import cn.iocoder.yudao.module.system.service.permission.SysPermissionCoreService; | ||
| 8 | +import cn.iocoder.yudao.module.system.service.user.SysUserCoreService; | ||
| 9 | import lombok.Data; | 9 | import lombok.Data; |
| 10 | import lombok.EqualsAndHashCode; | 10 | import lombok.EqualsAndHashCode; |
| 11 | import lombok.Setter; | 11 | import lombok.Setter; |
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/framework/activiti/core/behavior/BpmUserTaskActivitiBehavior.java
| @@ -9,11 +9,11 @@ import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.behavior | @@ -9,11 +9,11 @@ import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.behavior | ||
| 9 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService; | 9 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService; |
| 10 | import cn.iocoder.yudao.coreservice.modules.bpm.api.group.BpmUserGroupServiceApi; | 10 | import cn.iocoder.yudao.coreservice.modules.bpm.api.group.BpmUserGroupServiceApi; |
| 11 | import cn.iocoder.yudao.coreservice.modules.bpm.api.group.dto.BpmUserGroupDTO; | 11 | import cn.iocoder.yudao.coreservice.modules.bpm.api.group.dto.BpmUserGroupDTO; |
| 12 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | ||
| 13 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 14 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService; | ||
| 15 | -import cn.iocoder.yudao.coreservice.modules.system.service.permission.SysPermissionCoreService; | ||
| 16 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | 12 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 13 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.SysUserDO; | ||
| 14 | +import cn.iocoder.yudao.module.system.service.dept.SysDeptCoreService; | ||
| 15 | +import cn.iocoder.yudao.module.system.service.permission.SysPermissionCoreService; | ||
| 16 | +import cn.iocoder.yudao.module.system.service.user.SysUserCoreService; | ||
| 17 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 17 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 18 | import com.google.common.annotations.VisibleForTesting; | 18 | import com.google.common.annotations.VisibleForTesting; |
| 19 | import lombok.Setter; | 19 | import lombok.Setter; |
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/framework/activiti/core/behavior/script/impl/BpmTaskAssignLeaderAbstractScript.java
| @@ -2,17 +2,16 @@ package cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.behavio | @@ -2,17 +2,16 @@ package cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.behavio | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.behavior.script.BpmTaskAssignScript; | 3 | import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.behavior.script.BpmTaskAssignScript; |
| 4 | 4 | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService; | ||
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | 5 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 6 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.SysUserDO; | ||
| 7 | +import cn.iocoder.yudao.module.system.service.dept.SysDeptCoreService; | ||
| 8 | +import cn.iocoder.yudao.module.system.service.user.SysUserCoreService; | ||
| 9 | import org.activiti.engine.impl.persistence.entity.TaskEntity; | 9 | import org.activiti.engine.impl.persistence.entity.TaskEntity; |
| 10 | import org.springframework.util.Assert; | 10 | import org.springframework.util.Assert; |
| 11 | 11 | ||
| 12 | import javax.annotation.Resource; | 12 | import javax.annotation.Resource; |
| 13 | import java.util.Set; | 13 | import java.util.Set; |
| 14 | 14 | ||
| 15 | -import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet; | ||
| 16 | import static java.util.Collections.emptySet; | 15 | import static java.util.Collections.emptySet; |
| 17 | 16 | ||
| 18 | /** | 17 | /** |
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/impl/BpmTaskAssignRuleServiceImpl.java
| @@ -14,12 +14,12 @@ import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmModelServi | @@ -14,12 +14,12 @@ import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmModelServi | ||
| 14 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmProcessDefinitionService; | 14 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmProcessDefinitionService; |
| 15 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService; | 15 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService; |
| 16 | import cn.iocoder.yudao.coreservice.modules.bpm.api.group.BpmUserGroupServiceApi; | 16 | import cn.iocoder.yudao.coreservice.modules.bpm.api.group.BpmUserGroupServiceApi; |
| 17 | -import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants; | ||
| 18 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService; | ||
| 19 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysPostCoreService; | ||
| 20 | -import cn.iocoder.yudao.coreservice.modules.system.service.dict.SysDictDataCoreService; | ||
| 21 | -import cn.iocoder.yudao.coreservice.modules.system.service.permission.SysRoleCoreService; | ||
| 22 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | 17 | +import cn.iocoder.yudao.module.system.enums.SysDictTypeConstants; |
| 18 | +import cn.iocoder.yudao.module.system.service.dept.SysDeptCoreService; | ||
| 19 | +import cn.iocoder.yudao.module.system.service.dept.SysPostCoreService; | ||
| 20 | +import cn.iocoder.yudao.module.system.service.dict.DictDataCoreService; | ||
| 21 | +import cn.iocoder.yudao.module.system.service.permission.SysRoleCoreService; | ||
| 22 | +import cn.iocoder.yudao.module.system.service.user.SysUserCoreService; | ||
| 23 | import cn.iocoder.yudao.framework.activiti.core.util.ActivitiUtils; | 23 | import cn.iocoder.yudao.framework.activiti.core.util.ActivitiUtils; |
| 24 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | 24 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 25 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; | 25 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; |
| @@ -64,7 +64,7 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService { | @@ -64,7 +64,7 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService { | ||
| 64 | @Resource | 64 | @Resource |
| 65 | private BpmUserGroupServiceApi userGroupServiceApi; | 65 | private BpmUserGroupServiceApi userGroupServiceApi; |
| 66 | @Resource | 66 | @Resource |
| 67 | - private SysDictDataCoreService dictDataCoreService; | 67 | + private DictDataCoreService dictDataCoreService; |
| 68 | 68 | ||
| 69 | @Override | 69 | @Override |
| 70 | public List<BpmTaskAssignRuleDO> getTaskAssignRuleListByProcessDefinitionId(String processDefinitionId, | 70 | public List<BpmTaskAssignRuleDO> getTaskAssignRuleListByProcessDefinitionId(String processDefinitionId, |
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/message/impl/BpmMessageServiceImpl.java
| @@ -5,7 +5,7 @@ import cn.iocoder.yudao.adminserver.modules.bpm.service.message.BpmMessageServic | @@ -5,7 +5,7 @@ import cn.iocoder.yudao.adminserver.modules.bpm.service.message.BpmMessageServic | ||
| 5 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceApproveReqDTO; | 5 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceApproveReqDTO; |
| 6 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceRejectReqDTO; | 6 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceRejectReqDTO; |
| 7 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO; | 7 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO; |
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService; | 8 | +import cn.iocoder.yudao.module.system.service.sms.SysSmsCoreService; |
| 9 | import lombok.extern.slf4j.Slf4j; | 9 | import lombok.extern.slf4j.Slf4j; |
| 10 | import org.springframework.beans.factory.annotation.Value; | 10 | import org.springframework.beans.factory.annotation.Value; |
| 11 | import org.springframework.stereotype.Service; | 11 | import org.springframework.stereotype.Service; |
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/impl/BpmProcessInstanceServiceImpl.java
| @@ -18,10 +18,10 @@ import cn.iocoder.yudao.adminserver.modules.bpm.service.message.BpmMessageServic | @@ -18,10 +18,10 @@ import cn.iocoder.yudao.adminserver.modules.bpm.service.message.BpmMessageServic | ||
| 18 | import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmProcessInstanceService; | 18 | import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmProcessInstanceService; |
| 19 | import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmTaskService; | 19 | import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmTaskService; |
| 20 | import cn.iocoder.yudao.adminserver.modules.bpm.service.task.dto.BpmProcessInstanceCreateReqDTO; | 20 | import cn.iocoder.yudao.adminserver.modules.bpm.service.task.dto.BpmProcessInstanceCreateReqDTO; |
| 21 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | ||
| 22 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 23 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService; | ||
| 24 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | 21 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 22 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.SysUserDO; | ||
| 23 | +import cn.iocoder.yudao.module.system.service.dept.SysDeptCoreService; | ||
| 24 | +import cn.iocoder.yudao.module.system.service.user.SysUserCoreService; | ||
| 25 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 25 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 26 | import cn.iocoder.yudao.framework.common.util.number.NumberUtils; | 26 | import cn.iocoder.yudao.framework.common.util.number.NumberUtils; |
| 27 | import lombok.extern.slf4j.Slf4j; | 27 | import lombok.extern.slf4j.Slf4j; |
yudao-module-bpm/yudao-module-bpm-activiti/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/impl/BpmTaskServiceImpl.java
| @@ -12,10 +12,10 @@ import cn.iocoder.yudao.adminserver.modules.bpm.service.message.BpmMessageServic | @@ -12,10 +12,10 @@ import cn.iocoder.yudao.adminserver.modules.bpm.service.message.BpmMessageServic | ||
| 12 | import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmProcessInstanceService; | 12 | import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmProcessInstanceService; |
| 13 | import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmTaskService; | 13 | import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmTaskService; |
| 14 | 14 | ||
| 15 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | ||
| 16 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 17 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService; | ||
| 18 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | 15 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 16 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.SysUserDO; | ||
| 17 | +import cn.iocoder.yudao.module.system.service.dept.SysDeptCoreService; | ||
| 18 | +import cn.iocoder.yudao.module.system.service.user.SysUserCoreService; | ||
| 19 | import cn.iocoder.yudao.framework.activiti.core.util.ActivitiUtils; | 19 | import cn.iocoder.yudao.framework.activiti.core.util.ActivitiUtils; |
| 20 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 20 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 21 | import cn.iocoder.yudao.framework.common.util.number.NumberUtils; | 21 | import cn.iocoder.yudao.framework.common.util.number.NumberUtils; |
yudao-module-bpm/yudao-module-bpm-activiti/src/test/java/cn/iocoder/yudao/adminserver/modules/bpm/framework/activiti/core/behavior/BpmUserTaskActivitiBehaviorTest.java
| @@ -8,11 +8,11 @@ import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.behavior | @@ -8,11 +8,11 @@ import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.behavior | ||
| 8 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService; | 8 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService; |
| 9 | import cn.iocoder.yudao.coreservice.modules.bpm.api.group.BpmUserGroupServiceApi; | 9 | import cn.iocoder.yudao.coreservice.modules.bpm.api.group.BpmUserGroupServiceApi; |
| 10 | import cn.iocoder.yudao.coreservice.modules.bpm.api.group.dto.BpmUserGroupDTO; | 10 | import cn.iocoder.yudao.coreservice.modules.bpm.api.group.dto.BpmUserGroupDTO; |
| 11 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | ||
| 12 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 13 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService; | ||
| 14 | -import cn.iocoder.yudao.coreservice.modules.system.service.permission.SysPermissionCoreService; | ||
| 15 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | 11 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 12 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.SysUserDO; | ||
| 13 | +import cn.iocoder.yudao.module.system.service.dept.SysDeptCoreService; | ||
| 14 | +import cn.iocoder.yudao.module.system.service.permission.SysPermissionCoreService; | ||
| 15 | +import cn.iocoder.yudao.module.system.service.user.SysUserCoreService; | ||
| 16 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 16 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 17 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | 17 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 18 | import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest; | 18 | import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest; |
yudao-module-bpm/yudao-module-bpm-activiti/src/test/java/cn/iocoder/yudao/adminserver/modules/bpm/framework/activiti/core/behavior/script/impl/BpmTaskAssignLeaderX2ScriptTest.java
| 1 | package cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.behavior.script.impl; | 1 | package cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.behavior.script.impl; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.SysUserDO; | ||
| 5 | +import cn.iocoder.yudao.module.system.service.dept.SysDeptCoreService; | ||
| 6 | +import cn.iocoder.yudao.module.system.service.user.SysUserCoreService; | ||
| 7 | import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest; | 7 | import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest; |
| 8 | import org.activiti.engine.impl.persistence.entity.ExecutionEntityImpl; | 8 | import org.activiti.engine.impl.persistence.entity.ExecutionEntityImpl; |
| 9 | import org.activiti.engine.impl.persistence.entity.TaskEntity; | 9 | import org.activiti.engine.impl.persistence.entity.TaskEntity; |
yudao-module-member/yudao-module-member-impl/pom.xml
| @@ -24,6 +24,12 @@ | @@ -24,6 +24,12 @@ | ||
| 24 | <version>${revision}</version> | 24 | <version>${revision}</version> |
| 25 | </dependency> | 25 | </dependency> |
| 26 | 26 | ||
| 27 | + <dependency> | ||
| 28 | + <groupId>cn.iocoder.boot</groupId> | ||
| 29 | + <artifactId>yudao-module-system-api</artifactId> | ||
| 30 | + <version>${revision}</version> | ||
| 31 | + </dependency> | ||
| 32 | + | ||
| 27 | <!-- 业务组件 --> | 33 | <!-- 业务组件 --> |
| 28 | <dependency> | 34 | <dependency> |
| 29 | <groupId>cn.iocoder.boot</groupId> | 35 | <groupId>cn.iocoder.boot</groupId> |
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/AppAuthController.java
| 1 | package cn.iocoder.yudao.module.member.controller.app.auth; | 1 | package cn.iocoder.yudao.module.member.controller.app.auth; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService; | ||
| 4 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 3 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 6 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | 5 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; |
| 7 | import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated; | 6 | import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated; |
| 8 | -import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; | ||
| 9 | import cn.iocoder.yudao.module.member.controller.app.auth.vo.*; | 7 | import cn.iocoder.yudao.module.member.controller.app.auth.vo.*; |
| 10 | import cn.iocoder.yudao.module.member.service.auth.AuthService; | 8 | import cn.iocoder.yudao.module.member.service.auth.AuthService; |
| 11 | import cn.iocoder.yudao.module.member.service.sms.SysSmsCodeService; | 9 | import cn.iocoder.yudao.module.member.service.sms.SysSmsCodeService; |
| @@ -15,7 +13,6 @@ import io.swagger.annotations.ApiImplicitParams; | @@ -15,7 +13,6 @@ import io.swagger.annotations.ApiImplicitParams; | ||
| 15 | import io.swagger.annotations.ApiOperation; | 13 | import io.swagger.annotations.ApiOperation; |
| 16 | import lombok.extern.slf4j.Slf4j; | 14 | import lombok.extern.slf4j.Slf4j; |
| 17 | import org.springframework.beans.factory.annotation.Autowired; | 15 | import org.springframework.beans.factory.annotation.Autowired; |
| 18 | -import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; | ||
| 19 | import org.springframework.validation.annotation.Validated; | 16 | import org.springframework.validation.annotation.Validated; |
| 20 | import org.springframework.web.bind.annotation.*; | 17 | import org.springframework.web.bind.annotation.*; |
| 21 | 18 |
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/vo/AppAuthSocialBindReqVO.java
| 1 | package cn.iocoder.yudao.module.member.controller.app.auth.vo; | 1 | package cn.iocoder.yudao.module.member.controller.app.auth.vo; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; | ||
| 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; | 3 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 5 | import io.swagger.annotations.ApiModel; | 4 | import io.swagger.annotations.ApiModel; |
| 6 | import io.swagger.annotations.ApiModelProperty; | 5 | import io.swagger.annotations.ApiModelProperty; |
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/vo/AppAuthSocialLogin2ReqVO.java
| 1 | package cn.iocoder.yudao.module.member.controller.app.auth.vo; | 1 | package cn.iocoder.yudao.module.member.controller.app.auth.vo; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; | ||
| 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; | 3 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 4 | +import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; | ||
| 5 | import io.swagger.annotations.ApiModel; | 5 | import io.swagger.annotations.ApiModel; |
| 6 | import io.swagger.annotations.ApiModelProperty; | 6 | import io.swagger.annotations.ApiModelProperty; |
| 7 | import lombok.AllArgsConstructor; | 7 | import lombok.AllArgsConstructor; |
| @@ -22,7 +22,7 @@ import javax.validation.constraints.Pattern; | @@ -22,7 +22,7 @@ import javax.validation.constraints.Pattern; | ||
| 22 | public class AppAuthSocialLogin2ReqVO { | 22 | public class AppAuthSocialLogin2ReqVO { |
| 23 | 23 | ||
| 24 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") | 24 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") |
| 25 | - @InEnum(SysSocialTypeEnum.class) | 25 | + @InEnum(SocialTypeEnum.class) |
| 26 | @NotNull(message = "社交平台的类型不能为空") | 26 | @NotNull(message = "社交平台的类型不能为空") |
| 27 | private Integer type; | 27 | private Integer type; |
| 28 | 28 |
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/vo/AppAuthSocialLoginReqVO.java
| 1 | package cn.iocoder.yudao.module.member.controller.app.auth.vo; | 1 | package cn.iocoder.yudao.module.member.controller.app.auth.vo; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; | ||
| 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; | 3 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 4 | +import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; | ||
| 5 | import io.swagger.annotations.ApiModel; | 5 | import io.swagger.annotations.ApiModel; |
| 6 | import io.swagger.annotations.ApiModelProperty; | 6 | import io.swagger.annotations.ApiModelProperty; |
| 7 | import lombok.AllArgsConstructor; | 7 | import lombok.AllArgsConstructor; |
| @@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull; | @@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull; | ||
| 20 | public class AppAuthSocialLoginReqVO { | 20 | public class AppAuthSocialLoginReqVO { |
| 21 | 21 | ||
| 22 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") | 22 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") |
| 23 | - @InEnum(SysSocialTypeEnum.class) | 23 | + @InEnum(SocialTypeEnum.class) |
| 24 | @NotNull(message = "社交平台的类型不能为空") | 24 | @NotNull(message = "社交平台的类型不能为空") |
| 25 | private Integer type; | 25 | private Integer type; |
| 26 | 26 |
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/vo/AppAuthSocialUnbindReqVO.java
| 1 | package cn.iocoder.yudao.module.member.controller.app.auth.vo; | 1 | package cn.iocoder.yudao.module.member.controller.app.auth.vo; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; | ||
| 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; | 3 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 4 | +import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; | ||
| 5 | import io.swagger.annotations.ApiModel; | 5 | import io.swagger.annotations.ApiModel; |
| 6 | import io.swagger.annotations.ApiModelProperty; | 6 | import io.swagger.annotations.ApiModelProperty; |
| 7 | import lombok.AllArgsConstructor; | 7 | import lombok.AllArgsConstructor; |
| @@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull; | @@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull; | ||
| 20 | public class AppAuthSocialUnbindReqVO { | 20 | public class AppAuthSocialUnbindReqVO { |
| 21 | 21 | ||
| 22 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") | 22 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") |
| 23 | - @InEnum(SysSocialTypeEnum.class) | 23 | + @InEnum(SocialTypeEnum.class) |
| 24 | @NotNull(message = "社交平台的类型不能为空") | 24 | @NotNull(message = "社交平台的类型不能为空") |
| 25 | private Integer type; | 25 | private Integer type; |
| 26 | 26 |
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/service/auth/AuthServiceImpl.java
| @@ -2,13 +2,13 @@ package cn.iocoder.yudao.module.member.service.auth; | @@ -2,13 +2,13 @@ package cn.iocoder.yudao.module.member.service.auth; | ||
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | import cn.hutool.core.lang.Assert; | 4 | import cn.hutool.core.lang.Assert; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginLogTypeEnum; | ||
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginResultEnum; | ||
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; | ||
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService; | ||
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO; | ||
| 11 | -import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService; | 5 | +import cn.iocoder.yudao.module.system.dal.dataobject.social.SysSocialUserDO; |
| 6 | +import cn.iocoder.yudao.module.system.enums.logger.SysLoginLogTypeEnum; | ||
| 7 | +import cn.iocoder.yudao.module.system.enums.logger.SysLoginResultEnum; | ||
| 8 | +import cn.iocoder.yudao.module.system.service.auth.SysUserSessionCoreService; | ||
| 9 | +import cn.iocoder.yudao.module.system.service.logger.SysLoginLogCoreService; | ||
| 10 | +import cn.iocoder.yudao.module.system.service.logger.dto.SysLoginLogCreateReqDTO; | ||
| 11 | +import cn.iocoder.yudao.module.system.service.social.SysSocialCoreService; | ||
| 12 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 12 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 13 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 13 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 14 | import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; | 14 | import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; |
| @@ -29,7 +29,6 @@ import org.springframework.context.annotation.Lazy; | @@ -29,7 +29,6 @@ import org.springframework.context.annotation.Lazy; | ||
| 29 | import org.springframework.security.authentication.AuthenticationManager; | 29 | import org.springframework.security.authentication.AuthenticationManager; |
| 30 | import org.springframework.security.authentication.BadCredentialsException; | 30 | import org.springframework.security.authentication.BadCredentialsException; |
| 31 | import org.springframework.security.authentication.DisabledException; | 31 | import org.springframework.security.authentication.DisabledException; |
| 32 | -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; | ||
| 33 | import org.springframework.security.core.Authentication; | 32 | import org.springframework.security.core.Authentication; |
| 34 | import org.springframework.security.core.AuthenticationException; | 33 | import org.springframework.security.core.AuthenticationException; |
| 35 | import org.springframework.security.core.userdetails.UserDetails; | 34 | import org.springframework.security.core.userdetails.UserDetails; |
yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/service/sms/SysSmsCodeServiceImpl.java
| 1 | package cn.iocoder.yudao.module.member.service.sms; | 1 | package cn.iocoder.yudao.module.member.service.sms; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.map.MapUtil; | 3 | import cn.hutool.core.map.MapUtil; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService; | 4 | +import cn.iocoder.yudao.module.system.service.sms.SysSmsCoreService; |
| 5 | import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; | 5 | import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; |
| 6 | import cn.iocoder.yudao.module.member.dal.dataobject.sms.SysSmsCodeDO; | 6 | import cn.iocoder.yudao.module.member.dal.dataobject.sms.SysSmsCodeDO; |
| 7 | import cn.iocoder.yudao.module.member.dal.dataobject.user.UserDO; | 7 | import cn.iocoder.yudao.module.member.dal.dataobject.user.UserDO; |
yudao-module-member/yudao-module-member-impl/src/test/java/cn/iocoder/yudao/module/member/service/auth/SysAuthServiceTest.java
| 1 | package cn.iocoder.yudao.module.member.service.auth; | 1 | package cn.iocoder.yudao.module.member.service.auth; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService; | 3 | +import cn.iocoder.yudao.module.system.service.auth.SysUserSessionCoreService; |
| 4 | +import cn.iocoder.yudao.module.system.service.logger.SysLoginLogCoreService; | ||
| 5 | +import cn.iocoder.yudao.module.system.service.social.SysSocialCoreService; | ||
| 6 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 6 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 7 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; | 7 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; |
| 8 | import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; | 8 | import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java renamed to yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/enums/SysErrorCodeConstants.java renamed to yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/SysErrorCodeConstants.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.enums; | 1 | +package cn.iocoder.yudao.module.system.enums; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.exception.ErrorCode; | 3 | import cn.iocoder.yudao.framework.common.exception.ErrorCode; |
| 4 | 4 | ||
| @@ -14,10 +14,6 @@ public interface SysErrorCodeConstants { | @@ -14,10 +14,6 @@ public interface SysErrorCodeConstants { | ||
| 14 | ErrorCode SMS_SEND_MOBILE_TEMPLATE_PARAM_MISS = new ErrorCode(1006000001, "模板参数({})缺失"); | 14 | ErrorCode SMS_SEND_MOBILE_TEMPLATE_PARAM_MISS = new ErrorCode(1006000001, "模板参数({})缺失"); |
| 15 | ErrorCode SMS_SEND_TEMPLATE_NOT_EXISTS = new ErrorCode(1006000000, "短信模板不存在"); | 15 | ErrorCode SMS_SEND_TEMPLATE_NOT_EXISTS = new ErrorCode(1006000000, "短信模板不存在"); |
| 16 | 16 | ||
| 17 | - // ========= 文件相关 1006001000================= | ||
| 18 | - ErrorCode FILE_PATH_EXISTS = new ErrorCode(1006001000, "文件路径已存在"); | ||
| 19 | - ErrorCode FILE_NOT_EXISTS = new ErrorCode(1006001002, "文件不存在"); | ||
| 20 | - | ||
| 21 | // ========== 社交模块 1006002000 ========== | 17 | // ========== 社交模块 1006002000 ========== |
| 22 | ErrorCode SOCIAL_AUTH_FAILURE = new ErrorCode(1006002000, "社交授权失败,原因是:{}"); | 18 | ErrorCode SOCIAL_AUTH_FAILURE = new ErrorCode(1006002000, "社交授权失败,原因是:{}"); |
| 23 | ErrorCode SOCIAL_UNBIND_NOT_SELF = new ErrorCode(1006002001, "社交解绑失败,非当前用户绑定"); | 19 | ErrorCode SOCIAL_UNBIND_NOT_SELF = new ErrorCode(1006002001, "社交解绑失败,非当前用户绑定"); |
| @@ -34,10 +30,6 @@ public interface SysErrorCodeConstants { | @@ -34,10 +30,6 @@ public interface SysErrorCodeConstants { | ||
| 34 | ErrorCode ROLE_NOT_EXISTS = new ErrorCode(1006005000, "角色不存在"); | 30 | ErrorCode ROLE_NOT_EXISTS = new ErrorCode(1006005000, "角色不存在"); |
| 35 | ErrorCode ROLE_IS_DISABLE = new ErrorCode(1006005001, "名字为【{}】的角色已被禁用"); | 31 | ErrorCode ROLE_IS_DISABLE = new ErrorCode(1006005001, "名字为【{}】的角色已被禁用"); |
| 36 | 32 | ||
| 37 | - // ========== 字典类型 1006006000 ========== | ||
| 38 | - ErrorCode DICT_DATA_NOT_EXISTS = new ErrorCode(1006006000, "当前字典数据不存在"); | ||
| 39 | - ErrorCode DICT_DATA_NOT_ENABLE = new ErrorCode(1006006001, "字典数据({})不处于开启状态,不允许选择"); | ||
| 40 | - | ||
| 41 | // ========== 岗位模块 1006007000 ========== | 33 | // ========== 岗位模块 1006007000 ========== |
| 42 | ErrorCode POST_NOT_FOUND = new ErrorCode(1006007000, "当前岗位不存在"); | 34 | ErrorCode POST_NOT_FOUND = new ErrorCode(1006007000, "当前岗位不存在"); |
| 43 | ErrorCode POST_NOT_ENABLE = new ErrorCode(1006007001, "岗位({}) 不处于开启状态,不允许选择"); | 35 | ErrorCode POST_NOT_ENABLE = new ErrorCode(1006007001, "岗位({}) 不处于开启状态,不允许选择"); |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/enums/social/SysSocialTypeEnum.java renamed to yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/social/SocialTypeEnum.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.enums.social; | 1 | +package cn.iocoder.yudao.module.system.enums.social; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.ListUtil; | 3 | import cn.hutool.core.collection.ListUtil; |
| 4 | import cn.hutool.core.util.ArrayUtil; | 4 | import cn.hutool.core.util.ArrayUtil; |
| @@ -16,7 +16,7 @@ import java.util.List; | @@ -16,7 +16,7 @@ import java.util.List; | ||
| 16 | */ | 16 | */ |
| 17 | @Getter | 17 | @Getter |
| 18 | @AllArgsConstructor | 18 | @AllArgsConstructor |
| 19 | -public enum SysSocialTypeEnum implements IntArrayValuable { | 19 | +public enum SocialTypeEnum implements IntArrayValuable { |
| 20 | 20 | ||
| 21 | /** | 21 | /** |
| 22 | * Gitee | 22 | * Gitee |
| @@ -51,7 +51,7 @@ public enum SysSocialTypeEnum implements IntArrayValuable { | @@ -51,7 +51,7 @@ public enum SysSocialTypeEnum implements IntArrayValuable { | ||
| 51 | WECHAT_MINI_PROGRAM(33, "WECHAT_MINI_PROGRAM"), | 51 | WECHAT_MINI_PROGRAM(33, "WECHAT_MINI_PROGRAM"), |
| 52 | ; | 52 | ; |
| 53 | 53 | ||
| 54 | - public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(SysSocialTypeEnum::getType).toArray(); | 54 | + public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(SocialTypeEnum::getType).toArray(); |
| 55 | 55 | ||
| 56 | public static final List<Integer> WECHAT_ALL = ListUtil.toList(WECHAT_ENTERPRISE.type, WECHAT_MP.type, WECHAT_OPEN.type, | 56 | public static final List<Integer> WECHAT_ALL = ListUtil.toList(WECHAT_ENTERPRISE.type, WECHAT_MP.type, WECHAT_OPEN.type, |
| 57 | WECHAT_MINI_PROGRAM.type); | 57 | WECHAT_MINI_PROGRAM.type); |
| @@ -70,7 +70,7 @@ public enum SysSocialTypeEnum implements IntArrayValuable { | @@ -70,7 +70,7 @@ public enum SysSocialTypeEnum implements IntArrayValuable { | ||
| 70 | return ARRAYS; | 70 | return ARRAYS; |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | - public static SysSocialTypeEnum valueOfType(Integer type) { | 73 | + public static SocialTypeEnum valueOfType(Integer type) { |
| 74 | return ArrayUtil.firstMatch(o -> o.getType().equals(type), values()); | 74 | return ArrayUtil.firstMatch(o -> o.getType().equals(type), values()); |
| 75 | } | 75 | } |
| 76 | 76 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java
| @@ -3,19 +3,19 @@ package cn.iocoder.yudao.module.system.controller.admin.auth; | @@ -3,19 +3,19 @@ package cn.iocoder.yudao.module.system.controller.admin.auth; | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.*; | 3 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.*; |
| 4 | import cn.iocoder.yudao.module.system.convert.auth.AuthConvert; | 4 | import cn.iocoder.yudao.module.system.convert.auth.AuthConvert; |
| 5 | import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO; | 5 | import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO; | 6 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysRoleDO; |
| 7 | import cn.iocoder.yudao.module.system.enums.permission.MenuTypeEnum; | 7 | import cn.iocoder.yudao.module.system.enums.permission.MenuTypeEnum; |
| 8 | import cn.iocoder.yudao.module.system.service.auth.AuthService; | 8 | import cn.iocoder.yudao.module.system.service.auth.AuthService; |
| 9 | import cn.iocoder.yudao.module.system.service.permission.PermissionService; | 9 | import cn.iocoder.yudao.module.system.service.permission.PermissionService; |
| 10 | import cn.iocoder.yudao.module.system.service.permission.RoleService; | 10 | import cn.iocoder.yudao.module.system.service.permission.RoleService; |
| 11 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 12 | -import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService; | ||
| 13 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | 11 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; |
| 12 | +import cn.iocoder.yudao.module.system.service.social.SocialUserService; | ||
| 14 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 13 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 15 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 14 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 16 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 15 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 17 | import cn.iocoder.yudao.framework.common.util.collection.SetUtils; | 16 | import cn.iocoder.yudao.framework.common.util.collection.SetUtils; |
| 18 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | 17 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; |
| 18 | +import cn.iocoder.yudao.module.system.service.user.UserService; | ||
| 19 | import io.swagger.annotations.Api; | 19 | import io.swagger.annotations.Api; |
| 20 | import io.swagger.annotations.ApiImplicitParam; | 20 | import io.swagger.annotations.ApiImplicitParam; |
| 21 | import io.swagger.annotations.ApiImplicitParams; | 21 | import io.swagger.annotations.ApiImplicitParams; |
| @@ -45,14 +45,15 @@ public class AuthController { | @@ -45,14 +45,15 @@ public class AuthController { | ||
| 45 | @Autowired | 45 | @Autowired |
| 46 | @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // AuthService 存在重名 | 46 | @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // AuthService 存在重名 |
| 47 | private AuthService authService; | 47 | private AuthService authService; |
| 48 | - @Resource | ||
| 49 | - private SysUserCoreService userCoreService; | 48 | + @Autowired |
| 49 | + @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // UserService 存在重名 | ||
| 50 | + private UserService userService; | ||
| 50 | @Resource | 51 | @Resource |
| 51 | private RoleService roleService; | 52 | private RoleService roleService; |
| 52 | @Resource | 53 | @Resource |
| 53 | private PermissionService permissionService; | 54 | private PermissionService permissionService; |
| 54 | @Resource | 55 | @Resource |
| 55 | - private SysSocialCoreService socialCoreService; | 56 | + private SocialUserService socialCoreService; |
| 56 | 57 | ||
| 57 | @PostMapping("/login") | 58 | @PostMapping("/login") |
| 58 | @ApiOperation("使用账号密码登录") | 59 | @ApiOperation("使用账号密码登录") |
| @@ -67,7 +68,7 @@ public class AuthController { | @@ -67,7 +68,7 @@ public class AuthController { | ||
| 67 | @ApiOperation("获取登录用户的权限信息") | 68 | @ApiOperation("获取登录用户的权限信息") |
| 68 | public CommonResult<AuthPermissionInfoRespVO> getPermissionInfo() { | 69 | public CommonResult<AuthPermissionInfoRespVO> getPermissionInfo() { |
| 69 | // 获得用户信息 | 70 | // 获得用户信息 |
| 70 | - SysUserDO user = userCoreService.getUser(getLoginUserId()); | 71 | + UserDO user = userService.getUser(getLoginUserId()); |
| 71 | if (user == null) { | 72 | if (user == null) { |
| 72 | return null; | 73 | return null; |
| 73 | } | 74 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/UserSessionController.java
| @@ -3,19 +3,19 @@ package cn.iocoder.yudao.module.system.controller.admin.auth; | @@ -3,19 +3,19 @@ package cn.iocoder.yudao.module.system.controller.admin.auth; | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageItemRespVO; | 3 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageItemRespVO; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; |
| 5 | import cn.iocoder.yudao.module.system.convert.auth.UserSessionConvert; | 5 | import cn.iocoder.yudao.module.system.convert.auth.UserSessionConvert; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | 6 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 7 | import cn.iocoder.yudao.module.system.service.auth.UserSessionService; | 7 | import cn.iocoder.yudao.module.system.service.auth.UserSessionService; |
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO; | ||
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; | ||
| 11 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService; | ||
| 12 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | 8 | +import cn.iocoder.yudao.module.system.dal.dataobject.auth.SysUserSessionDO; |
| 9 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; | ||
| 10 | +import cn.iocoder.yudao.module.system.service.dept.SysDeptCoreService; | ||
| 13 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 11 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 14 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 12 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 15 | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; | 13 | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; |
| 14 | +import cn.iocoder.yudao.module.system.service.user.UserService; | ||
| 16 | import io.swagger.annotations.Api; | 15 | import io.swagger.annotations.Api; |
| 17 | import io.swagger.annotations.ApiImplicitParam; | 16 | import io.swagger.annotations.ApiImplicitParam; |
| 18 | import io.swagger.annotations.ApiOperation; | 17 | import io.swagger.annotations.ApiOperation; |
| 18 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 19 | import org.springframework.security.access.prepost.PreAuthorize; | 19 | import org.springframework.security.access.prepost.PreAuthorize; |
| 20 | import org.springframework.validation.annotation.Validated; | 20 | import org.springframework.validation.annotation.Validated; |
| 21 | import org.springframework.web.bind.annotation.*; | 21 | import org.springframework.web.bind.annotation.*; |
| @@ -35,10 +35,9 @@ public class UserSessionController { | @@ -35,10 +35,9 @@ public class UserSessionController { | ||
| 35 | 35 | ||
| 36 | @Resource | 36 | @Resource |
| 37 | private UserSessionService userSessionService; | 37 | private UserSessionService userSessionService; |
| 38 | - @Resource | ||
| 39 | - private SysUserSessionCoreService userSessionCoreService; | ||
| 40 | - @Resource | ||
| 41 | - private SysUserCoreService userCoreService; | 38 | + @Autowired |
| 39 | + @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // UserService 存在重名 | ||
| 40 | + private UserService userService; | ||
| 42 | 41 | ||
| 43 | @Resource | 42 | @Resource |
| 44 | private SysDeptCoreService deptCoreService; | 43 | private SysDeptCoreService deptCoreService; |
| @@ -51,10 +50,10 @@ public class UserSessionController { | @@ -51,10 +50,10 @@ public class UserSessionController { | ||
| 51 | PageResult<SysUserSessionDO> pageResult = userSessionService.getUserSessionPage(reqVO); | 50 | PageResult<SysUserSessionDO> pageResult = userSessionService.getUserSessionPage(reqVO); |
| 52 | 51 | ||
| 53 | // 获得拼接需要的数据 | 52 | // 获得拼接需要的数据 |
| 54 | - Map<Long, SysUserDO> userMap = userCoreService.getUserMap( | 53 | + Map<Long, UserDO> userMap = userService.getUserMap( |
| 55 | convertList(pageResult.getList(), SysUserSessionDO::getUserId)); | 54 | convertList(pageResult.getList(), SysUserSessionDO::getUserId)); |
| 56 | Map<Long, SysDeptDO> deptMap = deptCoreService.getDeptMap( | 55 | Map<Long, SysDeptDO> deptMap = deptCoreService.getDeptMap( |
| 57 | - convertList(userMap.values(), SysUserDO::getDeptId)); | 56 | + convertList(userMap.values(), UserDO::getDeptId)); |
| 58 | // 拼接结果返回 | 57 | // 拼接结果返回 |
| 59 | List<UserSessionPageItemRespVO> sessionList = new ArrayList<>(pageResult.getList().size()); | 58 | List<UserSessionPageItemRespVO> sessionList = new ArrayList<>(pageResult.getList().size()); |
| 60 | pageResult.getList().forEach(session -> { | 59 | pageResult.getList().forEach(session -> { |
| @@ -76,7 +75,7 @@ public class UserSessionController { | @@ -76,7 +75,7 @@ public class UserSessionController { | ||
| 76 | example = "fe50b9f6-d177-44b1-8da9-72ea34f63db7") | 75 | example = "fe50b9f6-d177-44b1-8da9-72ea34f63db7") |
| 77 | @PreAuthorize("@ss.hasPermission('system:user-session:delete')") | 76 | @PreAuthorize("@ss.hasPermission('system:user-session:delete')") |
| 78 | public CommonResult<Boolean> deleteUserSession(@RequestParam("id") String id) { | 77 | public CommonResult<Boolean> deleteUserSession(@RequestParam("id") String id) { |
| 79 | - userSessionCoreService.deleteUserSession(id); | 78 | + userSessionService.deleteUserSession(id); |
| 80 | return success(true); | 79 | return success(true); |
| 81 | } | 80 | } |
| 82 | 81 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthSocialBindReqVO.java
| 1 | package cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth; | 1 | package cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; | 3 | +import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; |
| 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; | 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 5 | import io.swagger.annotations.ApiModel; | 5 | import io.swagger.annotations.ApiModel; |
| 6 | import io.swagger.annotations.ApiModelProperty; | 6 | import io.swagger.annotations.ApiModelProperty; |
| @@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull; | @@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull; | ||
| 20 | public class AuthSocialBindReqVO { | 20 | public class AuthSocialBindReqVO { |
| 21 | 21 | ||
| 22 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") | 22 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") |
| 23 | - @InEnum(SysSocialTypeEnum.class) | 23 | + @InEnum(SocialTypeEnum.class) |
| 24 | @NotNull(message = "社交平台的类型不能为空") | 24 | @NotNull(message = "社交平台的类型不能为空") |
| 25 | private Integer type; | 25 | private Integer type; |
| 26 | 26 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthSocialLogin2ReqVO.java
| 1 | package cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth; | 1 | package cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; | ||
| 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; | 3 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 4 | +import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; | ||
| 5 | import io.swagger.annotations.ApiModel; | 5 | import io.swagger.annotations.ApiModel; |
| 6 | import io.swagger.annotations.ApiModelProperty; | 6 | import io.swagger.annotations.ApiModelProperty; |
| 7 | import lombok.AllArgsConstructor; | 7 | import lombok.AllArgsConstructor; |
| @@ -22,7 +22,7 @@ import javax.validation.constraints.Pattern; | @@ -22,7 +22,7 @@ import javax.validation.constraints.Pattern; | ||
| 22 | public class AuthSocialLogin2ReqVO { | 22 | public class AuthSocialLogin2ReqVO { |
| 23 | 23 | ||
| 24 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") | 24 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") |
| 25 | - @InEnum(SysSocialTypeEnum.class) | 25 | + @InEnum(SocialTypeEnum.class) |
| 26 | @NotNull(message = "社交平台的类型不能为空") | 26 | @NotNull(message = "社交平台的类型不能为空") |
| 27 | private Integer type; | 27 | private Integer type; |
| 28 | 28 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthSocialLoginReqVO.java
| 1 | package cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth; | 1 | package cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; | 3 | +import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; |
| 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; | 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 5 | import io.swagger.annotations.ApiModel; | 5 | import io.swagger.annotations.ApiModel; |
| 6 | import io.swagger.annotations.ApiModelProperty; | 6 | import io.swagger.annotations.ApiModelProperty; |
| @@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull; | @@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull; | ||
| 20 | public class AuthSocialLoginReqVO { | 20 | public class AuthSocialLoginReqVO { |
| 21 | 21 | ||
| 22 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") | 22 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") |
| 23 | - @InEnum(SysSocialTypeEnum.class) | 23 | + @InEnum(SocialTypeEnum.class) |
| 24 | @NotNull(message = "社交平台的类型不能为空") | 24 | @NotNull(message = "社交平台的类型不能为空") |
| 25 | private Integer type; | 25 | private Integer type; |
| 26 | 26 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthSocialUnbindReqVO.java
| 1 | package cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth; | 1 | package cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; | ||
| 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; | 3 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 4 | +import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; | ||
| 5 | import io.swagger.annotations.ApiModel; | 5 | import io.swagger.annotations.ApiModel; |
| 6 | import io.swagger.annotations.ApiModelProperty; | 6 | import io.swagger.annotations.ApiModelProperty; |
| 7 | import lombok.AllArgsConstructor; | 7 | import lombok.AllArgsConstructor; |
| @@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull; | @@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull; | ||
| 20 | public class AuthSocialUnbindReqVO { | 20 | public class AuthSocialUnbindReqVO { |
| 21 | 21 | ||
| 22 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") | 22 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") |
| 23 | - @InEnum(SysSocialTypeEnum.class) | 23 | + @InEnum(SocialTypeEnum.class) |
| 24 | @NotNull(message = "社交平台的类型不能为空") | 24 | @NotNull(message = "社交平台的类型不能为空") |
| 25 | private Integer type; | 25 | private Integer type; |
| 26 | 26 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/DeptController.java
| 1 | package cn.iocoder.yudao.module.system.controller.admin.dept; | 1 | package cn.iocoder.yudao.module.system.controller.admin.dept; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService; | 3 | +import cn.iocoder.yudao.module.system.service.dept.SysDeptCoreService; |
| 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.*; | 6 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.*; |
| 7 | import cn.iocoder.yudao.module.system.convert.dept.DeptConvert; | 7 | import cn.iocoder.yudao.module.system.convert.dept.DeptConvert; |
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | 8 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 9 | import cn.iocoder.yudao.module.system.service.dept.DeptService; | 9 | import cn.iocoder.yudao.module.system.service.dept.DeptService; |
| 10 | import io.swagger.annotations.Api; | 10 | import io.swagger.annotations.Api; |
| 11 | import io.swagger.annotations.ApiImplicitParam; | 11 | import io.swagger.annotations.ApiImplicitParam; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/PostController.java
| @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | ||
| 7 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | 7 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; |
| 8 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.*; | 8 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.*; |
| 9 | import cn.iocoder.yudao.module.system.convert.dept.PostConvert; | 9 | import cn.iocoder.yudao.module.system.convert.dept.PostConvert; |
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO; | 10 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysPostDO; |
| 11 | import cn.iocoder.yudao.module.system.service.dept.PostService; | 11 | import cn.iocoder.yudao.module.system.service.dept.PostService; |
| 12 | import io.swagger.annotations.Api; | 12 | import io.swagger.annotations.Api; |
| 13 | import io.swagger.annotations.ApiImplicitParam; | 13 | import io.swagger.annotations.ApiImplicitParam; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/post/PostExcelVO.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.dept.vo.post; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.dept.vo.post; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants; | 5 | +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; |
| 6 | import com.alibaba.excel.annotation.ExcelProperty; | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | import lombok.Data; | 7 | import lombok.Data; |
| 8 | 8 | ||
| @@ -25,7 +25,7 @@ public class PostExcelVO { | @@ -25,7 +25,7 @@ public class PostExcelVO { | ||
| 25 | private Integer sort; | 25 | private Integer sort; |
| 26 | 26 | ||
| 27 | @ExcelProperty(value = "状态", converter = DictConvert.class) | 27 | @ExcelProperty(value = "状态", converter = DictConvert.class) |
| 28 | - @DictFormat(SysDictTypeConstants.COMMON_STATUS) | 28 | + @DictFormat(DictTypeConstants.COMMON_STATUS) |
| 29 | private String status; | 29 | private String status; |
| 30 | 30 | ||
| 31 | } | 31 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/DictDataController.java
| 1 | package cn.iocoder.yudao.module.system.controller.admin.dict; | 1 | package cn.iocoder.yudao.module.system.controller.admin.dict; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.dict.SysDictDataDO; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | 6 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/data/DictDataExcelVO.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.dict.vo.data; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.dict.vo.data; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants; | 5 | +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; |
| 6 | import com.alibaba.excel.annotation.ExcelProperty; | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | import lombok.Data; | 7 | import lombok.Data; |
| 8 | 8 | ||
| @@ -28,7 +28,7 @@ public class DictDataExcelVO { | @@ -28,7 +28,7 @@ public class DictDataExcelVO { | ||
| 28 | private String dictType; | 28 | private String dictType; |
| 29 | 29 | ||
| 30 | @ExcelProperty(value = "状态", converter = DictConvert.class) | 30 | @ExcelProperty(value = "状态", converter = DictConvert.class) |
| 31 | - @DictFormat(SysDictTypeConstants.COMMON_STATUS) | 31 | + @DictFormat(DictTypeConstants.COMMON_STATUS) |
| 32 | private Integer status; | 32 | private Integer status; |
| 33 | 33 | ||
| 34 | } | 34 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/type/DictTypeExcelVO.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.dict.vo.type; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.dict.vo.type; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants; | 5 | +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; |
| 6 | import com.alibaba.excel.annotation.ExcelProperty; | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | import lombok.Data; | 7 | import lombok.Data; |
| 8 | 8 | ||
| @@ -22,7 +22,7 @@ public class DictTypeExcelVO { | @@ -22,7 +22,7 @@ public class DictTypeExcelVO { | ||
| 22 | private String type; | 22 | private String type; |
| 23 | 23 | ||
| 24 | @ExcelProperty(value = "状态", converter = DictConvert.class) | 24 | @ExcelProperty(value = "状态", converter = DictConvert.class) |
| 25 | - @DictFormat(SysDictTypeConstants.COMMON_STATUS) | 25 | + @DictFormat(DictTypeConstants.COMMON_STATUS) |
| 26 | private Integer status; | 26 | private Integer status; |
| 27 | 27 | ||
| 28 | } | 28 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/LoginLogController.java
| 1 | package cn.iocoder.yudao.module.system.controller.admin.logger; | 1 | package cn.iocoder.yudao.module.system.controller.admin.logger; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.logger.SysLoginLogDO; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | 6 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/OperateLogController.java
| @@ -7,16 +7,17 @@ import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.Oper | @@ -7,16 +7,17 @@ import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.Oper | ||
| 7 | import cn.iocoder.yudao.module.system.convert.logger.OperateLogConvert; | 7 | import cn.iocoder.yudao.module.system.convert.logger.OperateLogConvert; |
| 8 | import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO; | 8 | import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO; |
| 9 | import cn.iocoder.yudao.module.system.service.logger.OperateLogService; | 9 | import cn.iocoder.yudao.module.system.service.logger.OperateLogService; |
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 11 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | 10 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; |
| 12 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 11 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 13 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 12 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 14 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | 13 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 15 | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; | 14 | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; |
| 16 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | 15 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
| 17 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | 16 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; |
| 17 | +import cn.iocoder.yudao.module.system.service.user.UserService; | ||
| 18 | import io.swagger.annotations.Api; | 18 | import io.swagger.annotations.Api; |
| 19 | import io.swagger.annotations.ApiOperation; | 19 | import io.swagger.annotations.ApiOperation; |
| 20 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 20 | import org.springframework.security.access.prepost.PreAuthorize; | 21 | import org.springframework.security.access.prepost.PreAuthorize; |
| 21 | import org.springframework.validation.annotation.Validated; | 22 | import org.springframework.validation.annotation.Validated; |
| 22 | import org.springframework.web.bind.annotation.GetMapping; | 23 | import org.springframework.web.bind.annotation.GetMapping; |
| @@ -43,8 +44,9 @@ public class OperateLogController { | @@ -43,8 +44,9 @@ public class OperateLogController { | ||
| 43 | 44 | ||
| 44 | @Resource | 45 | @Resource |
| 45 | private OperateLogService operateLogService; | 46 | private OperateLogService operateLogService; |
| 46 | - @Resource | ||
| 47 | - private SysUserCoreService userCoreService; | 47 | + @Autowired |
| 48 | + @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // UserService 存在重名 | ||
| 49 | + private UserService userService; | ||
| 48 | 50 | ||
| 49 | @GetMapping("/page") | 51 | @GetMapping("/page") |
| 50 | @ApiOperation("查看操作日志分页列表") | 52 | @ApiOperation("查看操作日志分页列表") |
| @@ -54,7 +56,7 @@ public class OperateLogController { | @@ -54,7 +56,7 @@ public class OperateLogController { | ||
| 54 | 56 | ||
| 55 | // 获得拼接需要的数据 | 57 | // 获得拼接需要的数据 |
| 56 | Collection<Long> userIds = CollectionUtils.convertList(pageResult.getList(), OperateLogDO::getUserId); | 58 | Collection<Long> userIds = CollectionUtils.convertList(pageResult.getList(), OperateLogDO::getUserId); |
| 57 | - Map<Long, SysUserDO> userMap = userCoreService.getUserMap(userIds); | 59 | + Map<Long, UserDO> userMap = userService.getUserMap(userIds); |
| 58 | // 拼接数据 | 60 | // 拼接数据 |
| 59 | List<OperateLogRespVO> list = new ArrayList<>(pageResult.getList().size()); | 61 | List<OperateLogRespVO> list = new ArrayList<>(pageResult.getList().size()); |
| 60 | pageResult.getList().forEach(operateLog -> { | 62 | pageResult.getList().forEach(operateLog -> { |
| @@ -75,7 +77,7 @@ public class OperateLogController { | @@ -75,7 +77,7 @@ public class OperateLogController { | ||
| 75 | 77 | ||
| 76 | // 获得拼接需要的数据 | 78 | // 获得拼接需要的数据 |
| 77 | Collection<Long> userIds = CollectionUtils.convertList(list, OperateLogDO::getUserId); | 79 | Collection<Long> userIds = CollectionUtils.convertList(list, OperateLogDO::getUserId); |
| 78 | - Map<Long, SysUserDO> userMap = userCoreService.getUserMap(userIds); | 80 | + Map<Long, UserDO> userMap = userService.getUserMap(userIds); |
| 79 | // 拼接数据 | 81 | // 拼接数据 |
| 80 | List<OperateLogExcelVO> excelDataList = OperateLogConvert.INSTANCE.convertList(list, userMap); | 82 | List<OperateLogExcelVO> excelDataList = OperateLogConvert.INSTANCE.convertList(list, userMap); |
| 81 | // 输出 | 83 | // 输出 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/vo/loginlog/LoginLogExcelVO.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants; | 5 | +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; |
| 6 | import com.alibaba.excel.annotation.ExcelProperty; | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | import lombok.Data; | 7 | import lombok.Data; |
| 8 | 8 | ||
| @@ -21,11 +21,11 @@ public class LoginLogExcelVO { | @@ -21,11 +21,11 @@ public class LoginLogExcelVO { | ||
| 21 | private String username; | 21 | private String username; |
| 22 | 22 | ||
| 23 | @ExcelProperty(value = "日志类型", converter = DictConvert.class) | 23 | @ExcelProperty(value = "日志类型", converter = DictConvert.class) |
| 24 | - @DictFormat(SysDictTypeConstants.LOGIN_TYPE) | 24 | + @DictFormat(DictTypeConstants.LOGIN_TYPE) |
| 25 | private Integer logType; | 25 | private Integer logType; |
| 26 | 26 | ||
| 27 | @ExcelProperty(value = "登录结果", converter = DictConvert.class) | 27 | @ExcelProperty(value = "登录结果", converter = DictConvert.class) |
| 28 | - @DictFormat(SysDictTypeConstants.LOGIN_RESULT) | 28 | + @DictFormat(DictTypeConstants.LOGIN_RESULT) |
| 29 | private Integer result; | 29 | private Integer result; |
| 30 | 30 | ||
| 31 | @ExcelProperty("登录 IP") | 31 | @ExcelProperty("登录 IP") |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/logger/vo/operatelog/OperateLogExcelVO.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants; | 5 | +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; |
| 6 | import com.alibaba.excel.annotation.ExcelProperty; | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | import lombok.Data; | 7 | import lombok.Data; |
| 8 | 8 | ||
| @@ -24,7 +24,7 @@ public class OperateLogExcelVO { | @@ -24,7 +24,7 @@ public class OperateLogExcelVO { | ||
| 24 | private String name; | 24 | private String name; |
| 25 | 25 | ||
| 26 | @ExcelProperty(value = "操作类型", converter = DictConvert.class) | 26 | @ExcelProperty(value = "操作类型", converter = DictConvert.class) |
| 27 | - @DictFormat(SysDictTypeConstants.OPERATE_TYPE) | 27 | + @DictFormat(DictTypeConstants.OPERATE_TYPE) |
| 28 | private String type; | 28 | private String type; |
| 29 | 29 | ||
| 30 | @ExcelProperty("操作人") | 30 | @ExcelProperty("操作人") |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/RoleController.java
| @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | ||
| 7 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | 7 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; |
| 8 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.*; | 8 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.*; |
| 9 | import cn.iocoder.yudao.module.system.convert.permission.RoleConvert; | 9 | import cn.iocoder.yudao.module.system.convert.permission.RoleConvert; |
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO; | 10 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysRoleDO; |
| 11 | import cn.iocoder.yudao.module.system.service.permission.RoleService; | 11 | import cn.iocoder.yudao.module.system.service.permission.RoleService; |
| 12 | import io.swagger.annotations.Api; | 12 | import io.swagger.annotations.Api; |
| 13 | import io.swagger.annotations.ApiImplicitParam; | 13 | import io.swagger.annotations.ApiImplicitParam; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/vo/role/RoleExcelVO.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.permission.vo.role; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.permission.vo.role; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants; | 5 | +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; |
| 6 | import com.alibaba.excel.annotation.ExcelProperty; | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | import lombok.Data; | 7 | import lombok.Data; |
| 8 | 8 | ||
| @@ -28,7 +28,7 @@ public class RoleExcelVO { | @@ -28,7 +28,7 @@ public class RoleExcelVO { | ||
| 28 | private Integer dataScope; | 28 | private Integer dataScope; |
| 29 | 29 | ||
| 30 | @ExcelProperty(value = "角色状态", converter = DictConvert.class) | 30 | @ExcelProperty(value = "角色状态", converter = DictConvert.class) |
| 31 | - @DictFormat(SysDictTypeConstants.COMMON_STATUS) | 31 | + @DictFormat(DictTypeConstants.COMMON_STATUS) |
| 32 | private String status; | 32 | private String status; |
| 33 | 33 | ||
| 34 | } | 34 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/SmsCallbackController.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.sms; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.sms; | ||
| 2 | 2 | ||
| 3 | import cn.hutool.core.util.URLUtil; | 3 | import cn.hutool.core.util.URLUtil; |
| 4 | import cn.hutool.extra.servlet.ServletUtil; | 4 | import cn.hutool.extra.servlet.ServletUtil; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService; | 5 | +import cn.iocoder.yudao.module.system.service.sms.SysSmsSendService; |
| 6 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 6 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 7 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | 7 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; |
| 8 | import cn.iocoder.yudao.framework.sms.core.enums.SmsChannelEnum; | 8 | import cn.iocoder.yudao.framework.sms.core.enums.SmsChannelEnum; |
| @@ -25,7 +25,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | @@ -25,7 +25,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||
| 25 | public class SmsCallbackController { | 25 | public class SmsCallbackController { |
| 26 | 26 | ||
| 27 | @Resource | 27 | @Resource |
| 28 | - private SysSmsCoreService smsCoreService; | 28 | + private SysSmsSendService smsCoreService; |
| 29 | 29 | ||
| 30 | @PostMapping("/sms/yunpian") | 30 | @PostMapping("/sms/yunpian") |
| 31 | @ApiOperation(value = "云片短信的回调", notes = "参见 https://www.yunpian.com/official/document/sms/zh_cn/domestic_push_report 文档") | 31 | @ApiOperation(value = "云片短信的回调", notes = "参见 https://www.yunpian.com/official/document/sms/zh_cn/domestic_push_report 文档") |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/SmsChannelController.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.system.controller.admin.sms; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.system.controller.admin.sms; | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.*; | 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.*; |
| 4 | import cn.iocoder.yudao.module.system.convert.sms.SmsChannelConvert; | 4 | import cn.iocoder.yudao.module.system.convert.sms.SmsChannelConvert; |
| 5 | import cn.iocoder.yudao.module.system.service.sms.SmsChannelService; | 5 | import cn.iocoder.yudao.module.system.service.sms.SmsChannelService; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO; | 6 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsChannelDO; |
| 7 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 7 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | import io.swagger.annotations.Api; | 9 | import io.swagger.annotations.Api; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/SmsLogController.java
| @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogPageReqV | @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogPageReqV | ||
| 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SysSmsLogRespVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SysSmsLogRespVO; |
| 7 | import cn.iocoder.yudao.module.system.convert.sms.SmsLogConvert; | 7 | import cn.iocoder.yudao.module.system.convert.sms.SmsLogConvert; |
| 8 | import cn.iocoder.yudao.module.system.service.sms.SmsLogService; | 8 | import cn.iocoder.yudao.module.system.service.sms.SmsLogService; |
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO; | 9 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsLogDO; |
| 10 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 10 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 11 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 11 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 12 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | 12 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/SmsTemplateController.java
| @@ -3,8 +3,8 @@ package cn.iocoder.yudao.module.system.controller.admin.sms; | @@ -3,8 +3,8 @@ package cn.iocoder.yudao.module.system.controller.admin.sms; | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.*; | 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.*; |
| 4 | import cn.iocoder.yudao.module.system.convert.sms.SmsTemplateConvert; | 4 | import cn.iocoder.yudao.module.system.convert.sms.SmsTemplateConvert; |
| 5 | import cn.iocoder.yudao.module.system.service.sms.SmsTemplateService; | 5 | import cn.iocoder.yudao.module.system.service.sms.SmsTemplateService; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService; | 6 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsTemplateDO; |
| 7 | +import cn.iocoder.yudao.module.system.service.sms.SysSmsSendService; | ||
| 8 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 8 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 9 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 9 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 10 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | 10 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
| @@ -32,7 +32,7 @@ public class SmsTemplateController { | @@ -32,7 +32,7 @@ public class SmsTemplateController { | ||
| 32 | @Resource | 32 | @Resource |
| 33 | private SmsTemplateService smsTemplateService; | 33 | private SmsTemplateService smsTemplateService; |
| 34 | @Resource | 34 | @Resource |
| 35 | - private SysSmsCoreService smsCoreService; | 35 | + private SysSmsSendService smsCoreService; |
| 36 | 36 | ||
| 37 | @PostMapping("/create") | 37 | @PostMapping("/create") |
| 38 | @ApiOperation("创建短信模板") | 38 | @ApiOperation("创建短信模板") |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/log/SmsLogExcelVO.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.system.controller.admin.sms.vo.log; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.system.controller.admin.sms.vo.log; | ||
| 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 5 | import cn.iocoder.yudao.framework.excel.core.convert.JsonConvert; | 5 | import cn.iocoder.yudao.framework.excel.core.convert.JsonConvert; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants; | 6 | +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; |
| 7 | import com.alibaba.excel.annotation.ExcelProperty; | 7 | import com.alibaba.excel.annotation.ExcelProperty; |
| 8 | import lombok.Data; | 8 | import lombok.Data; |
| 9 | 9 | ||
| @@ -34,7 +34,7 @@ public class SmsLogExcelVO { | @@ -34,7 +34,7 @@ public class SmsLogExcelVO { | ||
| 34 | private String templateCode; | 34 | private String templateCode; |
| 35 | 35 | ||
| 36 | @ExcelProperty(value = "短信类型", converter = DictConvert.class) | 36 | @ExcelProperty(value = "短信类型", converter = DictConvert.class) |
| 37 | - @DictFormat(SysDictTypeConstants.SMS_TEMPLATE_TYPE) | 37 | + @DictFormat(DictTypeConstants.SMS_TEMPLATE_TYPE) |
| 38 | private Integer templateType; | 38 | private Integer templateType; |
| 39 | 39 | ||
| 40 | @ExcelProperty("短信内容") | 40 | @ExcelProperty("短信内容") |
| @@ -53,11 +53,11 @@ public class SmsLogExcelVO { | @@ -53,11 +53,11 @@ public class SmsLogExcelVO { | ||
| 53 | private Long userId; | 53 | private Long userId; |
| 54 | 54 | ||
| 55 | @ExcelProperty(value = "用户类型", converter = DictConvert.class) | 55 | @ExcelProperty(value = "用户类型", converter = DictConvert.class) |
| 56 | - @DictFormat(SysDictTypeConstants.USER_TYPE) | 56 | + @DictFormat(DictTypeConstants.USER_TYPE) |
| 57 | private Integer userType; | 57 | private Integer userType; |
| 58 | 58 | ||
| 59 | @ExcelProperty(value = "发送状态", converter = DictConvert.class) | 59 | @ExcelProperty(value = "发送状态", converter = DictConvert.class) |
| 60 | - @DictFormat(SysDictTypeConstants.SMS_SEND_STATUS) | 60 | + @DictFormat(DictTypeConstants.SMS_SEND_STATUS) |
| 61 | private Integer sendStatus; | 61 | private Integer sendStatus; |
| 62 | 62 | ||
| 63 | @ExcelProperty("发送时间") | 63 | @ExcelProperty("发送时间") |
| @@ -82,7 +82,7 @@ public class SmsLogExcelVO { | @@ -82,7 +82,7 @@ public class SmsLogExcelVO { | ||
| 82 | private String apiSerialNo; | 82 | private String apiSerialNo; |
| 83 | 83 | ||
| 84 | @ExcelProperty(value = "接收状态", converter = DictConvert.class) | 84 | @ExcelProperty(value = "接收状态", converter = DictConvert.class) |
| 85 | - @DictFormat(SysDictTypeConstants.SMS_RECEIVE_STATUS) | 85 | + @DictFormat(DictTypeConstants.SMS_RECEIVE_STATUS) |
| 86 | private Integer receiveStatus; | 86 | private Integer receiveStatus; |
| 87 | 87 | ||
| 88 | @ExcelProperty("接收时间") | 88 | @ExcelProperty("接收时间") |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplateExcelVO.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.sms.vo.template; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.sms.vo.template; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants; | 5 | +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; |
| 6 | import com.alibaba.excel.annotation.ExcelProperty; | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | import lombok.Data; | 7 | import lombok.Data; |
| 8 | 8 | ||
| @@ -20,11 +20,11 @@ public class SmsTemplateExcelVO { | @@ -20,11 +20,11 @@ public class SmsTemplateExcelVO { | ||
| 20 | private Long id; | 20 | private Long id; |
| 21 | 21 | ||
| 22 | @ExcelProperty(value = "短信签名", converter = DictConvert.class) | 22 | @ExcelProperty(value = "短信签名", converter = DictConvert.class) |
| 23 | - @DictFormat(SysDictTypeConstants.SMS_TEMPLATE_TYPE) | 23 | + @DictFormat(DictTypeConstants.SMS_TEMPLATE_TYPE) |
| 24 | private Integer type; | 24 | private Integer type; |
| 25 | 25 | ||
| 26 | @ExcelProperty(value = "开启状态", converter = DictConvert.class) | 26 | @ExcelProperty(value = "开启状态", converter = DictConvert.class) |
| 27 | - @DictFormat(SysDictTypeConstants.COMMON_STATUS) | 27 | + @DictFormat(DictTypeConstants.COMMON_STATUS) |
| 28 | private Integer status; | 28 | private Integer status; |
| 29 | 29 | ||
| 30 | @ExcelProperty("模板编码") | 30 | @ExcelProperty("模板编码") |
| @@ -46,7 +46,7 @@ public class SmsTemplateExcelVO { | @@ -46,7 +46,7 @@ public class SmsTemplateExcelVO { | ||
| 46 | private Long channelId; | 46 | private Long channelId; |
| 47 | 47 | ||
| 48 | @ExcelProperty(value = "短信渠道编码", converter = DictConvert.class) | 48 | @ExcelProperty(value = "短信渠道编码", converter = DictConvert.class) |
| 49 | - @DictFormat(SysDictTypeConstants.SMS_CHANNEL_CODE) | 49 | + @DictFormat(DictTypeConstants.SMS_CHANNEL_CODE) |
| 50 | private String channelCode; | 50 | private String channelCode; |
| 51 | 51 | ||
| 52 | @ExcelProperty("创建时间") | 52 | @ExcelProperty("创建时间") |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/TenantController.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.system.controller.admin.tenant; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.system.controller.admin.tenant; | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.*; | 3 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.*; |
| 4 | import cn.iocoder.yudao.module.system.convert.tenant.TenantConvert; | 4 | import cn.iocoder.yudao.module.system.convert.tenant.TenantConvert; |
| 5 | import cn.iocoder.yudao.module.system.service.tenant.TenantService; | 5 | import cn.iocoder.yudao.module.system.service.tenant.TenantService; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.tenant.SysTenantDO; | 6 | +import cn.iocoder.yudao.module.system.dal.dataobject.tenant.SysTenantDO; |
| 7 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 7 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | 9 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java
| @@ -3,12 +3,11 @@ package cn.iocoder.yudao.module.system.controller.admin.user; | @@ -3,12 +3,11 @@ package cn.iocoder.yudao.module.system.controller.admin.user; | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*; | 4 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*; |
| 5 | import cn.iocoder.yudao.module.system.convert.user.UserConvert; | 5 | import cn.iocoder.yudao.module.system.convert.user.UserConvert; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | 6 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 7 | import cn.iocoder.yudao.module.system.service.user.UserService; | 7 | import cn.iocoder.yudao.module.system.service.user.UserService; |
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.enums.common.SysSexEnum; | ||
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService; | ||
| 11 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | 8 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; |
| 9 | +import cn.iocoder.yudao.module.system.enums.common.SysSexEnum; | ||
| 10 | +import cn.iocoder.yudao.module.system.service.dept.SysDeptCoreService; | ||
| 12 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 11 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 13 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 12 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 14 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 13 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| @@ -19,6 +18,7 @@ import io.swagger.annotations.Api; | @@ -19,6 +18,7 @@ import io.swagger.annotations.Api; | ||
| 19 | import io.swagger.annotations.ApiImplicitParam; | 18 | import io.swagger.annotations.ApiImplicitParam; |
| 20 | import io.swagger.annotations.ApiImplicitParams; | 19 | import io.swagger.annotations.ApiImplicitParams; |
| 21 | import io.swagger.annotations.ApiOperation; | 20 | import io.swagger.annotations.ApiOperation; |
| 21 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 22 | import org.springframework.security.access.prepost.PreAuthorize; | 22 | import org.springframework.security.access.prepost.PreAuthorize; |
| 23 | import org.springframework.validation.annotation.Validated; | 23 | import org.springframework.validation.annotation.Validated; |
| 24 | import org.springframework.web.bind.annotation.*; | 24 | import org.springframework.web.bind.annotation.*; |
| @@ -41,11 +41,10 @@ import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.E | @@ -41,11 +41,10 @@ import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.E | ||
| 41 | @Validated | 41 | @Validated |
| 42 | public class UserController { | 42 | public class UserController { |
| 43 | 43 | ||
| 44 | - @Resource | 44 | + @Autowired |
| 45 | + @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // UserService 存在重名 | ||
| 45 | private UserService userService; | 46 | private UserService userService; |
| 46 | @Resource | 47 | @Resource |
| 47 | - private SysUserCoreService userCoreService; | ||
| 48 | - @Resource | ||
| 49 | private SysDeptCoreService deptCoreService; | 48 | private SysDeptCoreService deptCoreService; |
| 50 | 49 | ||
| 51 | @PostMapping("/create") | 50 | @PostMapping("/create") |
| @@ -94,13 +93,13 @@ public class UserController { | @@ -94,13 +93,13 @@ public class UserController { | ||
| 94 | @PreAuthorize("@ss.hasPermission('system:user:list')") | 93 | @PreAuthorize("@ss.hasPermission('system:user:list')") |
| 95 | public CommonResult<PageResult<UserPageItemRespVO>> getUserPage(@Valid UserPageReqVO reqVO) { | 94 | public CommonResult<PageResult<UserPageItemRespVO>> getUserPage(@Valid UserPageReqVO reqVO) { |
| 96 | // 获得用户分页列表 | 95 | // 获得用户分页列表 |
| 97 | - PageResult<SysUserDO> pageResult = userService.getUserPage(reqVO); | 96 | + PageResult<UserDO> pageResult = userService.getUserPage(reqVO); |
| 98 | if (CollUtil.isEmpty(pageResult.getList())) { | 97 | if (CollUtil.isEmpty(pageResult.getList())) { |
| 99 | return success(new PageResult<>(pageResult.getTotal())); // 返回空 | 98 | return success(new PageResult<>(pageResult.getTotal())); // 返回空 |
| 100 | } | 99 | } |
| 101 | 100 | ||
| 102 | // 获得拼接需要的数据 | 101 | // 获得拼接需要的数据 |
| 103 | - Collection<Long> deptIds = convertList(pageResult.getList(), SysUserDO::getDeptId); | 102 | + Collection<Long> deptIds = convertList(pageResult.getList(), UserDO::getDeptId); |
| 104 | Map<Long, SysDeptDO> deptMap = deptCoreService.getDeptMap(deptIds); | 103 | Map<Long, SysDeptDO> deptMap = deptCoreService.getDeptMap(deptIds); |
| 105 | // 拼接结果返回 | 104 | // 拼接结果返回 |
| 106 | List<UserPageItemRespVO> userList = new ArrayList<>(pageResult.getList().size()); | 105 | List<UserPageItemRespVO> userList = new ArrayList<>(pageResult.getList().size()); |
| @@ -116,7 +115,7 @@ public class UserController { | @@ -116,7 +115,7 @@ public class UserController { | ||
| 116 | @ApiOperation(value = "获取用户精简信息列表", notes = "只包含被开启的用户,主要用于前端的下拉选项") | 115 | @ApiOperation(value = "获取用户精简信息列表", notes = "只包含被开启的用户,主要用于前端的下拉选项") |
| 117 | public CommonResult<List<UserSimpleRespVO>> getSimpleUsers() { | 116 | public CommonResult<List<UserSimpleRespVO>> getSimpleUsers() { |
| 118 | // 获用户门列表,只要开启状态的 | 117 | // 获用户门列表,只要开启状态的 |
| 119 | - List<SysUserDO> list = userService.getUsersByStatus(CommonStatusEnum.ENABLE.getStatus()); | 118 | + List<UserDO> list = userService.getUsersByStatus(CommonStatusEnum.ENABLE.getStatus()); |
| 120 | // 排序后,返回给前端 | 119 | // 排序后,返回给前端 |
| 121 | return success(UserConvert.INSTANCE.convertList04(list)); | 120 | return success(UserConvert.INSTANCE.convertList04(list)); |
| 122 | } | 121 | } |
| @@ -126,7 +125,7 @@ public class UserController { | @@ -126,7 +125,7 @@ public class UserController { | ||
| 126 | @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) | 125 | @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) |
| 127 | @PreAuthorize("@ss.hasPermission('system:user:query')") | 126 | @PreAuthorize("@ss.hasPermission('system:user:query')") |
| 128 | public CommonResult<UserRespVO> getInfo(@RequestParam("id") Long id) { | 127 | public CommonResult<UserRespVO> getInfo(@RequestParam("id") Long id) { |
| 129 | - return success(UserConvert.INSTANCE.convert(userCoreService.getUser(id))); | 128 | + return success(UserConvert.INSTANCE.convert(userService.getUser(id))); |
| 130 | } | 129 | } |
| 131 | 130 | ||
| 132 | @GetMapping("/export") | 131 | @GetMapping("/export") |
| @@ -136,12 +135,13 @@ public class UserController { | @@ -136,12 +135,13 @@ public class UserController { | ||
| 136 | public void exportUsers(@Validated UserExportReqVO reqVO, | 135 | public void exportUsers(@Validated UserExportReqVO reqVO, |
| 137 | HttpServletResponse response) throws IOException { | 136 | HttpServletResponse response) throws IOException { |
| 138 | // 获得用户列表 | 137 | // 获得用户列表 |
| 139 | - List<SysUserDO> users = userService.getUsers(reqVO); | 138 | + List<UserDO> users = userService.getUsers(reqVO); |
| 140 | 139 | ||
| 141 | // 获得拼接需要的数据 | 140 | // 获得拼接需要的数据 |
| 142 | - Collection<Long> deptIds = convertList(users, SysUserDO::getDeptId); | 141 | + Collection<Long> deptIds = convertList(users, UserDO::getDeptId); |
| 143 | Map<Long, SysDeptDO> deptMap = deptCoreService.getDeptMap(deptIds); | 142 | Map<Long, SysDeptDO> deptMap = deptCoreService.getDeptMap(deptIds); |
| 144 | - Map<Long, SysUserDO> deptLeaderUserMap = userCoreService.getUserMap(convertSet(deptMap.values(), SysDeptDO::getLeaderUserId)); | 143 | + Map<Long, UserDO> deptLeaderUserMap = userService.getUserMap( |
| 144 | + convertSet(deptMap.values(), SysDeptDO::getLeaderUserId)); | ||
| 145 | // 拼接数据 | 145 | // 拼接数据 |
| 146 | List<UserExcelVO> excelUsers = new ArrayList<>(users.size()); | 146 | List<UserExcelVO> excelUsers = new ArrayList<>(users.size()); |
| 147 | users.forEach(user -> { | 147 | users.forEach(user -> { |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java
| @@ -9,20 +9,20 @@ import cn.iocoder.yudao.module.system.service.dept.PostService; | @@ -9,20 +9,20 @@ import cn.iocoder.yudao.module.system.service.dept.PostService; | ||
| 9 | import cn.iocoder.yudao.module.system.service.permission.PermissionService; | 9 | import cn.iocoder.yudao.module.system.service.permission.PermissionService; |
| 10 | import cn.iocoder.yudao.module.system.service.permission.RoleService; | 10 | import cn.iocoder.yudao.module.system.service.permission.RoleService; |
| 11 | import cn.iocoder.yudao.module.system.service.user.UserService; | 11 | import cn.iocoder.yudao.module.system.service.user.UserService; |
| 12 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | ||
| 13 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO; | ||
| 14 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO; | ||
| 15 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; | ||
| 16 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 17 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService; | ||
| 18 | -import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService; | ||
| 19 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | 12 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 13 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysPostDO; | ||
| 14 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysRoleDO; | ||
| 15 | +import cn.iocoder.yudao.module.system.dal.dataobject.social.SysSocialUserDO; | ||
| 16 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; | ||
| 17 | +import cn.iocoder.yudao.module.system.service.dept.SysDeptCoreService; | ||
| 18 | +import cn.iocoder.yudao.module.system.service.social.SocialUserService; | ||
| 20 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 19 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 21 | import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; | 20 | import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; |
| 22 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 21 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 23 | import io.swagger.annotations.Api; | 22 | import io.swagger.annotations.Api; |
| 24 | import io.swagger.annotations.ApiOperation; | 23 | import io.swagger.annotations.ApiOperation; |
| 25 | import lombok.extern.slf4j.Slf4j; | 24 | import lombok.extern.slf4j.Slf4j; |
| 25 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 26 | import org.springframework.validation.annotation.Validated; | 26 | import org.springframework.validation.annotation.Validated; |
| 27 | import org.springframework.web.bind.annotation.*; | 27 | import org.springframework.web.bind.annotation.*; |
| 28 | import org.springframework.web.multipart.MultipartFile; | 28 | import org.springframework.web.multipart.MultipartFile; |
| @@ -43,11 +43,10 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti | @@ -43,11 +43,10 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti | ||
| 43 | @Slf4j | 43 | @Slf4j |
| 44 | public class UserProfileController { | 44 | public class UserProfileController { |
| 45 | 45 | ||
| 46 | - @Resource | 46 | + @Autowired |
| 47 | + @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // UserService 存在重名 | ||
| 47 | private UserService userService; | 48 | private UserService userService; |
| 48 | @Resource | 49 | @Resource |
| 49 | - private SysUserCoreService userCoreService; | ||
| 50 | - @Resource | ||
| 51 | private SysDeptCoreService deptCoreService; | 50 | private SysDeptCoreService deptCoreService; |
| 52 | 51 | ||
| 53 | @Resource | 52 | @Resource |
| @@ -57,13 +56,13 @@ public class UserProfileController { | @@ -57,13 +56,13 @@ public class UserProfileController { | ||
| 57 | @Resource | 56 | @Resource |
| 58 | private RoleService roleService; | 57 | private RoleService roleService; |
| 59 | @Resource | 58 | @Resource |
| 60 | - private SysSocialCoreService socialService; | 59 | + private SocialUserService socialService; |
| 61 | 60 | ||
| 62 | @GetMapping("/get") | 61 | @GetMapping("/get") |
| 63 | @ApiOperation("获得登录用户信息") | 62 | @ApiOperation("获得登录用户信息") |
| 64 | public CommonResult<UserProfileRespVO> profile() { | 63 | public CommonResult<UserProfileRespVO> profile() { |
| 65 | // 获得用户基本信息 | 64 | // 获得用户基本信息 |
| 66 | - SysUserDO user = userCoreService.getUser(getLoginUserId()); | 65 | + UserDO user = userService.getUser(getLoginUserId()); |
| 67 | UserProfileRespVO resp = UserConvert.INSTANCE.convert03(user); | 66 | UserProfileRespVO resp = UserConvert.INSTANCE.convert03(user); |
| 68 | // 获得用户角色 | 67 | // 获得用户角色 |
| 69 | List<SysRoleDO> userRoles = roleService.getRolesFromCache(permissionService.getUserRoleIdListByUserId(user.getId())); | 68 | List<SysRoleDO> userRoles = roleService.getRolesFromCache(permissionService.getUserRoleIdListByUserId(user.getId())); |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserExcelVO.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.user.vo.user; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.user.vo.user; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants; | 5 | +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; |
| 6 | import com.alibaba.excel.annotation.ExcelProperty; | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | import lombok.Data; | 7 | import lombok.Data; |
| 8 | 8 | ||
| @@ -30,11 +30,11 @@ public class UserExcelVO { | @@ -30,11 +30,11 @@ public class UserExcelVO { | ||
| 30 | private String mobile; | 30 | private String mobile; |
| 31 | 31 | ||
| 32 | @ExcelProperty(value = "用户性别", converter = DictConvert.class) | 32 | @ExcelProperty(value = "用户性别", converter = DictConvert.class) |
| 33 | - @DictFormat(SysDictTypeConstants.USER_SEX) | 33 | + @DictFormat(DictTypeConstants.USER_SEX) |
| 34 | private Integer sex; | 34 | private Integer sex; |
| 35 | 35 | ||
| 36 | @ExcelProperty(value = "帐号状态", converter = DictConvert.class) | 36 | @ExcelProperty(value = "帐号状态", converter = DictConvert.class) |
| 37 | - @DictFormat(SysDictTypeConstants.COMMON_STATUS) | 37 | + @DictFormat(DictTypeConstants.COMMON_STATUS) |
| 38 | private Integer status; | 38 | private Integer status; |
| 39 | 39 | ||
| 40 | @ExcelProperty("最后登录IP") | 40 | @ExcelProperty("最后登录IP") |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserImportExcelVO.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.user.vo.user; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.controller.admin.user.vo.user; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.enums.SysDictTypeConstants; | 5 | +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; |
| 6 | import com.alibaba.excel.annotation.ExcelProperty; | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | import lombok.AllArgsConstructor; | 7 | import lombok.AllArgsConstructor; |
| 8 | import lombok.Builder; | 8 | import lombok.Builder; |
| @@ -36,11 +36,11 @@ public class UserImportExcelVO { | @@ -36,11 +36,11 @@ public class UserImportExcelVO { | ||
| 36 | private String mobile; | 36 | private String mobile; |
| 37 | 37 | ||
| 38 | @ExcelProperty(value = "用户性别", converter = DictConvert.class) | 38 | @ExcelProperty(value = "用户性别", converter = DictConvert.class) |
| 39 | - @DictFormat(SysDictTypeConstants.USER_SEX) | 39 | + @DictFormat(DictTypeConstants.USER_SEX) |
| 40 | private Integer sex; | 40 | private Integer sex; |
| 41 | 41 | ||
| 42 | @ExcelProperty(value = "账号状态", converter = DictConvert.class) | 42 | @ExcelProperty(value = "账号状态", converter = DictConvert.class) |
| 43 | - @DictFormat(SysDictTypeConstants.COMMON_STATUS) | 43 | + @DictFormat(DictTypeConstants.COMMON_STATUS) |
| 44 | private Integer status; | 44 | private Integer status; |
| 45 | 45 | ||
| 46 | } | 46 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/auth/AuthConvert.java
| @@ -3,9 +3,9 @@ package cn.iocoder.yudao.module.system.convert.auth; | @@ -3,9 +3,9 @@ package cn.iocoder.yudao.module.system.convert.auth; | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthMenuRespVO; | 3 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthMenuRespVO; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthPermissionInfoRespVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthPermissionInfoRespVO; |
| 5 | import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO; | 5 | import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO; | 6 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysRoleDO; |
| 7 | import cn.iocoder.yudao.module.system.enums.permission.MenuIdEnum; | 7 | import cn.iocoder.yudao.module.system.enums.permission.MenuIdEnum; |
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | 8 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; |
| 9 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 9 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 10 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | 10 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 11 | import cn.iocoder.yudao.framework.security.core.LoginUser; | 11 | import cn.iocoder.yudao.framework.security.core.LoginUser; |
| @@ -22,14 +22,14 @@ public interface AuthConvert { | @@ -22,14 +22,14 @@ public interface AuthConvert { | ||
| 22 | AuthConvert INSTANCE = Mappers.getMapper(AuthConvert.class); | 22 | AuthConvert INSTANCE = Mappers.getMapper(AuthConvert.class); |
| 23 | 23 | ||
| 24 | @Mapping(source = "updateTime", target = "updateTime", ignore = true) // 字段相同,但是含义不同,忽略 | 24 | @Mapping(source = "updateTime", target = "updateTime", ignore = true) // 字段相同,但是含义不同,忽略 |
| 25 | - LoginUser convert0(SysUserDO bean); | 25 | + LoginUser convert0(UserDO bean); |
| 26 | 26 | ||
| 27 | - default LoginUser convert(SysUserDO bean) { | 27 | + default LoginUser convert(UserDO bean) { |
| 28 | // 目的,为了设置 UserTypeEnum.ADMIN.getValue() | 28 | // 目的,为了设置 UserTypeEnum.ADMIN.getValue() |
| 29 | return convert0(bean).setUserType(UserTypeEnum.ADMIN.getValue()); | 29 | return convert0(bean).setUserType(UserTypeEnum.ADMIN.getValue()); |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | - default AuthPermissionInfoRespVO convert(SysUserDO user, List<SysRoleDO> roleList, List<MenuDO> menuList) { | 32 | + default AuthPermissionInfoRespVO convert(UserDO user, List<SysRoleDO> roleList, List<MenuDO> menuList) { |
| 33 | return AuthPermissionInfoRespVO.builder() | 33 | return AuthPermissionInfoRespVO.builder() |
| 34 | .user(AuthPermissionInfoRespVO.UserVO.builder().id(user.getId()).nickname(user.getNickname()).avatar(user.getAvatar()).build()) | 34 | .user(AuthPermissionInfoRespVO.UserVO.builder().id(user.getId()).nickname(user.getNickname()).avatar(user.getAvatar()).build()) |
| 35 | .roles(CollectionUtils.convertSet(roleList, SysRoleDO::getCode)) | 35 | .roles(CollectionUtils.convertSet(roleList, SysRoleDO::getCode)) |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/auth/UserSessionConvert.java
| 1 | package cn.iocoder.yudao.module.system.convert.auth; | 1 | package cn.iocoder.yudao.module.system.convert.auth; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageItemRespVO; | 3 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageItemRespVO; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO; | 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.auth.SysUserSessionDO; |
| 5 | import org.mapstruct.Mapper; | 5 | import org.mapstruct.Mapper; |
| 6 | import org.mapstruct.factory.Mappers; | 6 | import org.mapstruct.factory.Mappers; |
| 7 | 7 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/dept/DeptConvert.java
| @@ -4,7 +4,7 @@ import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptCreateRe | @@ -4,7 +4,7 @@ import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptCreateRe | ||
| 4 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptRespVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptRespVO; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSimpleRespVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSimpleRespVO; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptUpdateReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptUpdateReqVO; |
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | 7 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 8 | import org.mapstruct.Mapper; | 8 | import org.mapstruct.Mapper; |
| 9 | import org.mapstruct.factory.Mappers; | 9 | import org.mapstruct.factory.Mappers; |
| 10 | 10 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/dept/PostConvert.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.convert.dept; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.convert.dept; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.*; | 4 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.*; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO; | 5 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysPostDO; |
| 6 | import org.mapstruct.Mapper; | 6 | import org.mapstruct.Mapper; |
| 7 | import org.mapstruct.factory.Mappers; | 7 | import org.mapstruct.factory.Mappers; |
| 8 | 8 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/dict/DictDataConvert.java
| 1 | package cn.iocoder.yudao.module.system.convert.dict; | 1 | package cn.iocoder.yudao.module.system.convert.dict; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.*; | 3 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.*; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO; | 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.dict.SysDictDataDO; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | import cn.iocoder.yudao.framework.dict.core.dto.DictDataRespDTO; | 6 | import cn.iocoder.yudao.framework.dict.core.dto.DictDataRespDTO; |
| 7 | import org.mapstruct.Mapper; | 7 | import org.mapstruct.Mapper; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/convert/dict/SysDictDataCoreConvert.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/dict/SysDictDataCoreConvert.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.convert.dict; | 1 | +package cn.iocoder.yudao.module.system.convert.dict; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.dict.SysDictDataDO; |
| 4 | import cn.iocoder.yudao.framework.dict.core.dto.DictDataRespDTO; | 4 | import cn.iocoder.yudao.framework.dict.core.dto.DictDataRespDTO; |
| 5 | import org.mapstruct.Mapper; | 5 | import org.mapstruct.Mapper; |
| 6 | import org.mapstruct.factory.Mappers; | 6 | import org.mapstruct.factory.Mappers; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/logger/LoginLogConvert.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.convert.logger; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.convert.logger; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogExcelVO; | 3 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogExcelVO; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogRespVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogRespVO; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO; | 5 | +import cn.iocoder.yudao.module.system.dal.dataobject.logger.SysLoginLogDO; |
| 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | import org.mapstruct.Mapper; | 7 | import org.mapstruct.Mapper; |
| 8 | import org.mapstruct.factory.Mappers; | 8 | import org.mapstruct.factory.Mappers; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/logger/OperateLogConvert.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.system.convert.logger; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.system.convert.logger; | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogExcelVO; | 3 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogExcelVO; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogRespVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogRespVO; |
| 5 | import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO; | 5 | import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | 6 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; |
| 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 8 | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; | 8 | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; |
| 9 | import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO; | 9 | import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO; |
| @@ -27,7 +27,7 @@ public interface OperateLogConvert { | @@ -27,7 +27,7 @@ public interface OperateLogConvert { | ||
| 27 | 27 | ||
| 28 | OperateLogRespVO convert(OperateLogDO bean); | 28 | OperateLogRespVO convert(OperateLogDO bean); |
| 29 | 29 | ||
| 30 | - default List<OperateLogExcelVO> convertList(List<OperateLogDO> list, Map<Long, SysUserDO> userMap) { | 30 | + default List<OperateLogExcelVO> convertList(List<OperateLogDO> list, Map<Long, UserDO> userMap) { |
| 31 | return list.stream().map(operateLog -> { | 31 | return list.stream().map(operateLog -> { |
| 32 | OperateLogExcelVO excelVO = convert02(operateLog); | 32 | OperateLogExcelVO excelVO = convert02(operateLog); |
| 33 | MapUtils.findAndThen(userMap, operateLog.getId(), user -> excelVO.setUserNickname(user.getNickname())); | 33 | MapUtils.findAndThen(userMap, operateLog.getId(), user -> excelVO.setUserNickname(user.getNickname())); |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/convert/logger/SysLoginLogCoreConvert.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/logger/SysLoginLogCoreConvert.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.convert.logger; | 1 | +package cn.iocoder.yudao.module.system.convert.logger; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.logger.SysLoginLogDO; |
| 4 | +import cn.iocoder.yudao.module.system.service.logger.dto.LoginLogCreateReqDTO; | ||
| 5 | import org.mapstruct.Mapper; | 5 | import org.mapstruct.Mapper; |
| 6 | import org.mapstruct.factory.Mappers; | 6 | import org.mapstruct.factory.Mappers; |
| 7 | 7 | ||
| @@ -10,6 +10,6 @@ public interface SysLoginLogCoreConvert { | @@ -10,6 +10,6 @@ public interface SysLoginLogCoreConvert { | ||
| 10 | 10 | ||
| 11 | SysLoginLogCoreConvert INSTANCE = Mappers.getMapper(SysLoginLogCoreConvert.class); | 11 | SysLoginLogCoreConvert INSTANCE = Mappers.getMapper(SysLoginLogCoreConvert.class); |
| 12 | 12 | ||
| 13 | - SysLoginLogDO convert(SysLoginLogCreateReqDTO bean); | 13 | + SysLoginLogDO convert(LoginLogCreateReqDTO bean); |
| 14 | 14 | ||
| 15 | } | 15 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/permission/RoleConvert.java
| 1 | package cn.iocoder.yudao.module.system.convert.permission; | 1 | package cn.iocoder.yudao.module.system.convert.permission; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.*; | 3 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.*; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO; | 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysRoleDO; |
| 5 | import org.mapstruct.Mapper; | 5 | import org.mapstruct.Mapper; |
| 6 | import org.mapstruct.factory.Mappers; | 6 | import org.mapstruct.factory.Mappers; |
| 7 | 7 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/sms/SmsChannelConvert.java
| @@ -4,7 +4,7 @@ import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannel | @@ -4,7 +4,7 @@ import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannel | ||
| 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelRespVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelRespVO; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelSimpleRespVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelSimpleRespVO; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelUpdateReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelUpdateReqVO; |
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO; | 7 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsChannelDO; |
| 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties; | 9 | import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties; |
| 10 | import org.mapstruct.Mapper; | 10 | import org.mapstruct.Mapper; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/sms/SmsLogConvert.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.convert.sms; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.convert.sms; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExcelVO; | 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExcelVO; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SysSmsLogRespVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SysSmsLogRespVO; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO; | 5 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsLogDO; |
| 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | import org.mapstruct.Mapper; | 7 | import org.mapstruct.Mapper; |
| 8 | import org.mapstruct.factory.Mappers; | 8 | import org.mapstruct.factory.Mappers; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/sms/SmsTemplateConvert.java
| @@ -4,7 +4,7 @@ import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTempla | @@ -4,7 +4,7 @@ import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTempla | ||
| 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateExcelVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateExcelVO; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateRespVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateRespVO; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateUpdateReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateUpdateReqVO; |
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | 7 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsTemplateDO; |
| 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | import org.mapstruct.Mapper; | 9 | import org.mapstruct.Mapper; |
| 10 | import org.mapstruct.factory.Mappers; | 10 | import org.mapstruct.factory.Mappers; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/tenant/TenantConvert.java
| @@ -4,7 +4,7 @@ import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantCreateReq | @@ -4,7 +4,7 @@ import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantCreateReq | ||
| 4 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantExcelVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantExcelVO; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantRespVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantRespVO; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantUpdateReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantUpdateReqVO; |
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.tenant.SysTenantDO; | 7 | +import cn.iocoder.yudao.module.system.dal.dataobject.tenant.SysTenantDO; |
| 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | import org.mapstruct.Mapper; | 9 | import org.mapstruct.Mapper; |
| 10 | import org.mapstruct.factory.Mappers; | 10 | import org.mapstruct.factory.Mappers; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/convert/user/UserConvert.java
| @@ -4,11 +4,11 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfi | @@ -4,11 +4,11 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfi | ||
| 4 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*; | 6 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*; |
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | ||
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO; | ||
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO; | ||
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; | ||
| 11 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | 7 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 8 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysPostDO; | ||
| 9 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysRoleDO; | ||
| 10 | +import cn.iocoder.yudao.module.system.dal.dataobject.social.SysSocialUserDO; | ||
| 11 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; | ||
| 12 | import org.mapstruct.Mapper; | 12 | import org.mapstruct.Mapper; |
| 13 | import org.mapstruct.factory.Mappers; | 13 | import org.mapstruct.factory.Mappers; |
| 14 | 14 | ||
| @@ -19,31 +19,31 @@ public interface UserConvert { | @@ -19,31 +19,31 @@ public interface UserConvert { | ||
| 19 | 19 | ||
| 20 | UserConvert INSTANCE = Mappers.getMapper(UserConvert.class); | 20 | UserConvert INSTANCE = Mappers.getMapper(UserConvert.class); |
| 21 | 21 | ||
| 22 | - UserPageItemRespVO convert(SysUserDO bean); | 22 | + UserPageItemRespVO convert(UserDO bean); |
| 23 | 23 | ||
| 24 | UserPageItemRespVO.Dept convert(SysDeptDO bean); | 24 | UserPageItemRespVO.Dept convert(SysDeptDO bean); |
| 25 | 25 | ||
| 26 | - SysUserDO convert(UserCreateReqVO bean); | 26 | + UserDO convert(UserCreateReqVO bean); |
| 27 | 27 | ||
| 28 | - SysUserDO convert(UserUpdateReqVO bean); | 28 | + UserDO convert(UserUpdateReqVO bean); |
| 29 | 29 | ||
| 30 | - UserExcelVO convert02(SysUserDO bean); | 30 | + UserExcelVO convert02(UserDO bean); |
| 31 | 31 | ||
| 32 | - SysUserDO convert(UserImportExcelVO bean); | 32 | + UserDO convert(UserImportExcelVO bean); |
| 33 | 33 | ||
| 34 | - UserProfileRespVO convert03(SysUserDO bean); | 34 | + UserProfileRespVO convert03(UserDO bean); |
| 35 | 35 | ||
| 36 | List<UserProfileRespVO.Role> convertList(List<SysRoleDO> list); | 36 | List<UserProfileRespVO.Role> convertList(List<SysRoleDO> list); |
| 37 | 37 | ||
| 38 | UserProfileRespVO.Dept convert02(SysDeptDO bean); | 38 | UserProfileRespVO.Dept convert02(SysDeptDO bean); |
| 39 | 39 | ||
| 40 | - SysUserDO convert(UserProfileUpdateReqVO bean); | 40 | + UserDO convert(UserProfileUpdateReqVO bean); |
| 41 | 41 | ||
| 42 | - SysUserDO convert(UserProfileUpdatePasswordReqVO bean); | 42 | + UserDO convert(UserProfileUpdatePasswordReqVO bean); |
| 43 | 43 | ||
| 44 | List<UserProfileRespVO.Post> convertList02(List<SysPostDO> list); | 44 | List<UserProfileRespVO.Post> convertList02(List<SysPostDO> list); |
| 45 | 45 | ||
| 46 | List<UserProfileRespVO.SocialUser> convertList03(List<SysSocialUserDO> list); | 46 | List<UserProfileRespVO.SocialUser> convertList03(List<SysSocialUserDO> list); |
| 47 | 47 | ||
| 48 | - List<UserSimpleRespVO> convertList04(List<SysUserDO> list); | 48 | + List<UserSimpleRespVO> convertList04(List<UserDO> list); |
| 49 | } | 49 | } |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/dataobject/auth/SysUserSessionDO.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/auth/SysUserSessionDO.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth; | 1 | +package cn.iocoder.yudao.module.system.dal.dataobject.auth; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 3 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 4 | import cn.iocoder.yudao.framework.security.core.LoginUser; | 4 | import cn.iocoder.yudao.framework.security.core.LoginUser; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/dataobject/dept/SysDeptDO.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dept/SysDeptDO.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept; | 1 | +package cn.iocoder.yudao.module.system.dal.dataobject.dept; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; |
| 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 5 | import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; | 5 | import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; |
| 6 | import com.baomidou.mybatisplus.annotation.TableId; | 6 | import com.baomidou.mybatisplus.annotation.TableId; |
| @@ -41,7 +41,7 @@ public class SysDeptDO extends TenantBaseDO { | @@ -41,7 +41,7 @@ public class SysDeptDO extends TenantBaseDO { | ||
| 41 | /** | 41 | /** |
| 42 | * 负责人 | 42 | * 负责人 |
| 43 | * | 43 | * |
| 44 | - * 关联 {@link SysUserDO#getId()} | 44 | + * 关联 {@link UserDO#getId()} |
| 45 | */ | 45 | */ |
| 46 | private Long leaderUserId; | 46 | private Long leaderUserId; |
| 47 | /** | 47 | /** |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/dataobject/dept/SysPostDO.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dept/SysPostDO.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept; | 1 | +package cn.iocoder.yudao.module.system.dal.dataobject.dept; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 4 | import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; | 4 | import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/dataobject/dict/SysDictDataDO.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dict/SysDictDataDO.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict; | 1 | +package cn.iocoder.yudao.module.system.dal.dataobject.dict; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 4 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/logger/OperateLogDO.java
| 1 | package cn.iocoder.yudao.module.system.dal.dataobject.logger; | 1 | package cn.iocoder.yudao.module.system.dal.dataobject.logger; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 5 | import cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum; | 5 | import cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum; |
| 6 | import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; | 6 | import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; |
| @@ -48,7 +48,7 @@ public class OperateLogDO extends TenantBaseDO { | @@ -48,7 +48,7 @@ public class OperateLogDO extends TenantBaseDO { | ||
| 48 | /** | 48 | /** |
| 49 | * 用户编号 | 49 | * 用户编号 |
| 50 | * | 50 | * |
| 51 | - * {@link SysUserDO#getId()} | 51 | + * {@link UserDO#getId()} |
| 52 | */ | 52 | */ |
| 53 | private Long userId; | 53 | private Long userId; |
| 54 | /** | 54 | /** |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/dataobject/logger/SysLoginLogDO.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/logger/SysLoginLogDO.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger; | 1 | +package cn.iocoder.yudao.module.system.dal.dataobject.logger; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 3 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 4 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginLogTypeEnum; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginResultEnum; | 5 | +import cn.iocoder.yudao.module.system.enums.logger.SysLoginLogTypeEnum; |
| 6 | +import cn.iocoder.yudao.module.system.enums.logger.SysLoginResultEnum; | ||
| 7 | import com.baomidou.mybatisplus.annotation.TableName; | 7 | import com.baomidou.mybatisplus.annotation.TableName; |
| 8 | import lombok.Data; | 8 | import lombok.Data; |
| 9 | import lombok.EqualsAndHashCode; | 9 | import lombok.EqualsAndHashCode; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/package-info.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.system.dal.dataobject; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/dataobject/permission/SysRoleDO.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/permission/SysRoleDO.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission; | 1 | +package cn.iocoder.yudao.module.system.dal.dataobject.permission; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 4 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/dataobject/permission/SysUserRoleDO.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/permission/SysUserRoleDO.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission; | 1 | +package cn.iocoder.yudao.module.system.dal.dataobject.permission; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 4 | import com.baomidou.mybatisplus.annotation.TableId; | 4 | import com.baomidou.mybatisplus.annotation.TableId; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/dataobject/sms/SysSmsChannelDO.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/sms/SysSmsChannelDO.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms; | 1 | +package cn.iocoder.yudao.module.system.dal.dataobject.sms; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 4 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/dataobject/sms/SysSmsLogDO.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/sms/SysSmsLogDO.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms; | 1 | +package cn.iocoder.yudao.module.system.dal.dataobject.sms; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.enums.sms.SysSmsReceiveStatusEnum; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.enums.sms.SysSmsSendStatusEnum; | 3 | +import cn.iocoder.yudao.module.system.enums.sms.SysSmsReceiveStatusEnum; |
| 4 | +import cn.iocoder.yudao.module.system.enums.sms.SysSmsSendStatusEnum; | ||
| 5 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 5 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 6 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 6 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 7 | import cn.iocoder.yudao.framework.sms.core.enums.SmsFrameworkErrorCodeConstants; | 7 | import cn.iocoder.yudao.framework.sms.core.enums.SmsFrameworkErrorCodeConstants; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/dataobject/sms/SysSmsTemplateDO.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/sms/SysSmsTemplateDO.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms; | 1 | +package cn.iocoder.yudao.module.system.dal.dataobject.sms; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.enums.sms.SysSmsTemplateTypeEnum; | 3 | +import cn.iocoder.yudao.module.system.enums.sms.SysSmsTemplateTypeEnum; |
| 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 5 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 5 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 6 | import com.baomidou.mybatisplus.annotation.TableField; | 6 | import com.baomidou.mybatisplus.annotation.TableField; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/dataobject/social/SysSocialUserDO.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/social/SysSocialUserDO.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social; | 1 | +package cn.iocoder.yudao.module.system.dal.dataobject.social; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; |
| 4 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 4 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 5 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 5 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 6 | import com.baomidou.mybatisplus.annotation.TableId; | 6 | import com.baomidou.mybatisplus.annotation.TableId; |
| @@ -9,7 +9,7 @@ import lombok.*; | @@ -9,7 +9,7 @@ import lombok.*; | ||
| 9 | 9 | ||
| 10 | /** | 10 | /** |
| 11 | * 社交用户 | 11 | * 社交用户 |
| 12 | - * 通过 {@link SysSocialUserDO#getUserId()} 关联到对应的 {@link SysUserDO} | 12 | + * 通过 {@link SysSocialUserDO#getUserId()} 关联到对应的 {@link UserDO} |
| 13 | * | 13 | * |
| 14 | * @author weir | 14 | * @author weir |
| 15 | */ | 15 | */ |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/dataobject/tenant/SysTenantDO.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/tenant/SysTenantDO.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.tenant; | 1 | +package cn.iocoder.yudao.module.system.dal.dataobject.tenant; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 4 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/dataobject/user/SysUserDO.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/UserDO.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user; | 1 | +package cn.iocoder.yudao.module.system.dal.dataobject.user; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.enums.common.SysSexEnum; | 3 | +import cn.iocoder.yudao.module.system.enums.common.SysSexEnum; |
| 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 5 | import cn.iocoder.yudao.framework.mybatis.core.type.JsonLongSetTypeHandler; | 5 | import cn.iocoder.yudao.framework.mybatis.core.type.JsonLongSetTypeHandler; |
| 6 | import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; | 6 | import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; |
| @@ -24,7 +24,7 @@ import java.util.Set; | @@ -24,7 +24,7 @@ import java.util.Set; | ||
| 24 | @Builder | 24 | @Builder |
| 25 | @NoArgsConstructor | 25 | @NoArgsConstructor |
| 26 | @AllArgsConstructor | 26 | @AllArgsConstructor |
| 27 | -public class SysUserDO extends TenantBaseDO { | 27 | +public class UserDO extends TenantBaseDO { |
| 28 | 28 | ||
| 29 | /** | 29 | /** |
| 30 | * 用户ID | 30 | * 用户ID |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/auth/SysUserSessionCoreMapper.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/auth/SysUserSessionCoreMapper.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.auth; | 1 | +package cn.iocoder.yudao.module.system.dal.mysql.auth; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.auth.SysUserSessionDO; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | import org.apache.ibatis.annotations.Mapper; | 5 | import org.apache.ibatis.annotations.Mapper; |
| 6 | 6 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/auth/SysUserSessionMapper.java
| 1 | package cn.iocoder.yudao.module.system.dal.mysql.auth; | 1 | package cn.iocoder.yudao.module.system.dal.mysql.auth; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; | 3 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO; | 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.auth.SysUserSessionDO; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 6 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 7 | import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; | 7 | import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/dept/SysDeptCoreMapper.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/SysDeptCoreMapper.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.dept; | 1 | +package cn.iocoder.yudao.module.system.dal.mysql.dept; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | import org.apache.ibatis.annotations.Mapper; | 5 | import org.apache.ibatis.annotations.Mapper; |
| 6 | 6 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/SysDeptMapper.java
| @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.mybatis.core.enums.SqlConstants; | @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.mybatis.core.enums.SqlConstants; | ||
| 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO; |
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | 7 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 8 | import com.baomidou.mybatisplus.annotation.InterceptorIgnore; | 8 | import com.baomidou.mybatisplus.annotation.InterceptorIgnore; |
| 9 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 9 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 10 | import org.apache.ibatis.annotations.Mapper; | 10 | import org.apache.ibatis.annotations.Mapper; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/dept/SysPostCoreMapper.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/SysPostCoreMapper.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.dept; | 1 | +package cn.iocoder.yudao.module.system.dal.mysql.dept; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysPostDO; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | import org.apache.ibatis.annotations.Mapper; | 5 | import org.apache.ibatis.annotations.Mapper; |
| 6 | 6 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/SysPostMapper.java
| @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 5 | import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; | 5 | import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostExportReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostExportReqVO; |
| 7 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostPageReqVO; | 7 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostPageReqVO; |
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO; | 8 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysPostDO; |
| 9 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 9 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| 10 | import org.apache.ibatis.annotations.Mapper; | 10 | import org.apache.ibatis.annotations.Mapper; |
| 11 | 11 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dict/SysDictDataMapper.java
| @@ -3,11 +3,12 @@ package cn.iocoder.yudao.module.system.dal.mysql.dict; | @@ -3,11 +3,12 @@ package cn.iocoder.yudao.module.system.dal.mysql.dict; | ||
| 3 | import cn.iocoder.yudao.framework.mybatis.core.enums.SqlConstants; | 3 | import cn.iocoder.yudao.framework.mybatis.core.enums.SqlConstants; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataExportReqVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataExportReqVO; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO; | 6 | +import cn.iocoder.yudao.module.system.dal.dataobject.dict.SysDictDataDO; |
| 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 8 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 8 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 9 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 9 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 10 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 10 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 11 | +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||
| 11 | import org.apache.ibatis.annotations.Mapper; | 12 | import org.apache.ibatis.annotations.Mapper; |
| 12 | 13 | ||
| 13 | import java.util.Arrays; | 14 | import java.util.Arrays; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/logger/LoginLogMapper.java
| 1 | package cn.iocoder.yudao.module.system.dal.mysql.logger; | 1 | package cn.iocoder.yudao.module.system.dal.mysql.logger; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.logger.SysLoginLogDO; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 5 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 6 | import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; | 6 | import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/logger/SysLoginLogCoreMapper.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/logger/SysLoginLogCoreMapper.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.logger; | 1 | +package cn.iocoder.yudao.module.system.dal.mysql.logger; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.logger.SysLoginLogDO; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | import org.apache.ibatis.annotations.Mapper; | 5 | import org.apache.ibatis.annotations.Mapper; |
| 6 | 6 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/package-info.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.system.dal.mysql; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/permission/SysRoleCoreMapper.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/SysRoleCoreMapper.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.permission; | 1 | +package cn.iocoder.yudao.module.system.dal.mysql.permission; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysRoleDO; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | import org.apache.ibatis.annotations.Mapper; | 5 | import org.apache.ibatis.annotations.Mapper; |
| 6 | 6 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/SysRoleMapper.java
| @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 5 | import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; | 5 | import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleExportReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleExportReqVO; |
| 7 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePageReqVO; | 7 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePageReqVO; |
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO; | 8 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysRoleDO; |
| 9 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 9 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| 10 | import org.apache.ibatis.annotations.Mapper; | 10 | import org.apache.ibatis.annotations.Mapper; |
| 11 | import org.springframework.lang.Nullable; | 11 | import org.springframework.lang.Nullable; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/permission/SysUserRoleCoreMapper.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/SysUserRoleCoreMapper.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.permission; | 1 | +package cn.iocoder.yudao.module.system.dal.mysql.permission; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysUserRoleDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysUserRoleDO; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | import org.apache.ibatis.annotations.Mapper; | 5 | import org.apache.ibatis.annotations.Mapper; |
| 6 | 6 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/SysUserRoleMapper.java
| 1 | package cn.iocoder.yudao.module.system.dal.mysql.permission; | 1 | package cn.iocoder.yudao.module.system.dal.mysql.permission; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 3 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysUserRoleDO; | 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysUserRoleDO; |
| 5 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 5 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| 6 | import org.apache.ibatis.annotations.Mapper; | 6 | import org.apache.ibatis.annotations.Mapper; |
| 7 | 7 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/sms/SysSmsChannelMapper.java
| 1 | package cn.iocoder.yudao.module.system.dal.mysql.sms; | 1 | package cn.iocoder.yudao.module.system.dal.mysql.sms; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelPageReqVO; | 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelPageReqVO; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO; | 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsChannelDO; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 6 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 7 | import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; | 7 | import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/sms/SysSmsLogMapper.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.dal.mysql.sms; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.dal.mysql.sms; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO; | 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogPageReqVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogPageReqVO; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO; | 5 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsLogDO; |
| 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 7 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 8 | import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; | 8 | import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/sms/SysSmsTemplateMapper.java
| 1 | package cn.iocoder.yudao.module.system.dal.mysql.sms; | 1 | package cn.iocoder.yudao.module.system.dal.mysql.sms; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateExportReqVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateExportReqVO; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplatePageReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplatePageReqVO; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 6 | -import cn.iocoder.yudao.framework.common.pojo.PageResult; | 7 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsTemplateDO; |
| 7 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 8 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 8 | -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||
| 9 | import org.apache.ibatis.annotations.Mapper; | 9 | import org.apache.ibatis.annotations.Mapper; |
| 10 | +import org.apache.ibatis.annotations.Select; | ||
| 10 | 11 | ||
| 12 | +import java.util.Date; | ||
| 11 | import java.util.List; | 13 | import java.util.List; |
| 12 | 14 | ||
| 13 | @Mapper | 15 | @Mapper |
| 14 | public interface SysSmsTemplateMapper extends BaseMapperX<SysSmsTemplateDO> { | 16 | public interface SysSmsTemplateMapper extends BaseMapperX<SysSmsTemplateDO> { |
| 15 | 17 | ||
| 18 | + @Select("SELECT id FROM sys_sms_template WHERE update_time > #{maxUpdateTime} LIMIT 1") | ||
| 19 | + Long selectExistsByUpdateTimeAfter(Date maxUpdateTime); | ||
| 20 | + | ||
| 16 | default SysSmsTemplateDO selectByCode(String code) { | 21 | default SysSmsTemplateDO selectByCode(String code) { |
| 17 | return selectOne(SysSmsTemplateDO::getCode, code); | 22 | return selectOne(SysSmsTemplateDO::getCode, code); |
| 18 | } | 23 | } |
| 19 | 24 | ||
| 20 | - // TODO 这种参数都一样的得想办法封装一下 | ||
| 21 | default PageResult<SysSmsTemplateDO> selectPage(SmsTemplatePageReqVO reqVO) { | 25 | default PageResult<SysSmsTemplateDO> selectPage(SmsTemplatePageReqVO reqVO) { |
| 22 | return selectPage(reqVO, new LambdaQueryWrapperX<SysSmsTemplateDO>() | 26 | return selectPage(reqVO, new LambdaQueryWrapperX<SysSmsTemplateDO>() |
| 23 | .eqIfPresent(SysSmsTemplateDO::getType, reqVO.getType()) | 27 | .eqIfPresent(SysSmsTemplateDO::getType, reqVO.getType()) |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/social/SysSocialUserCoreMapper.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/social/SysSocialUserMapper.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.social; | 1 | +package cn.iocoder.yudao.module.system.dal.mysql.social; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.social.SysSocialUserDO; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 5 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| 6 | import org.apache.ibatis.annotations.Mapper; | 6 | import org.apache.ibatis.annotations.Mapper; |
| @@ -9,7 +9,7 @@ import java.util.Collection; | @@ -9,7 +9,7 @@ import java.util.Collection; | ||
| 9 | import java.util.List; | 9 | import java.util.List; |
| 10 | 10 | ||
| 11 | @Mapper | 11 | @Mapper |
| 12 | -public interface SysSocialUserCoreMapper extends BaseMapperX<SysSocialUserDO> { | 12 | +public interface SysSocialUserMapper extends BaseMapperX<SysSocialUserDO> { |
| 13 | 13 | ||
| 14 | default List<SysSocialUserDO> selectListByTypeAndUnionId(Integer userType, Collection<Integer> types, String unionId) { | 14 | default List<SysSocialUserDO> selectListByTypeAndUnionId(Integer userType, Collection<Integer> types, String unionId) { |
| 15 | return selectList(new QueryWrapper<SysSocialUserDO>().eq("user_type", userType) | 15 | return selectList(new QueryWrapper<SysSocialUserDO>().eq("user_type", userType) |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/mysql/tenant/SysTenantCoreMapper.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/tenant/SysTenantCoreMapper.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.tenant; | 1 | +package cn.iocoder.yudao.module.system.dal.mysql.tenant; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.tenant.SysTenantDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.tenant.SysTenantDO; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | import org.apache.ibatis.annotations.Mapper; | 5 | import org.apache.ibatis.annotations.Mapper; |
| 6 | 6 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/tenant/SysTenantMapper.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.dal.mysql.tenant; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.dal.mysql.tenant; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantExportReqVO; | 3 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantExportReqVO; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantPageReqVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantPageReqVO; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.tenant.SysTenantDO; | 5 | +import cn.iocoder.yudao.module.system.dal.dataobject.tenant.SysTenantDO; |
| 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 7 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 8 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 8 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/SysUserMapper.java deleted
| 1 | -package cn.iocoder.yudao.module.system.dal.mysql.user; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserExportReqVO; | ||
| 4 | -import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 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.mapper.BaseMapperX; | ||
| 9 | -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||
| 10 | -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
| 11 | -import jodd.util.StringPool; | ||
| 12 | -import org.apache.ibatis.annotations.Mapper; | ||
| 13 | - | ||
| 14 | -import java.util.Collection; | ||
| 15 | -import java.util.List; | ||
| 16 | -import java.util.Optional; | ||
| 17 | - | ||
| 18 | -@Mapper | ||
| 19 | -public interface SysUserMapper extends BaseMapperX<SysUserDO> { | ||
| 20 | - | ||
| 21 | - default SysUserDO selectByUsername(String username) { | ||
| 22 | - return selectOne(new LambdaQueryWrapper<SysUserDO>().eq(SysUserDO::getUsername, username)); | ||
| 23 | - } | ||
| 24 | - | ||
| 25 | - default SysUserDO selectByEmail(String email) { | ||
| 26 | - return selectOne(new LambdaQueryWrapper<SysUserDO>().eq(SysUserDO::getEmail, email)); | ||
| 27 | - } | ||
| 28 | - | ||
| 29 | - default SysUserDO selectByMobile(String mobile) { | ||
| 30 | - return selectOne(new LambdaQueryWrapper<SysUserDO>().eq(SysUserDO::getMobile, mobile)); | ||
| 31 | - } | ||
| 32 | - | ||
| 33 | - default PageResult<SysUserDO> selectPage(UserPageReqVO reqVO, Collection<Long> deptIds) { | ||
| 34 | - return selectPage(reqVO, new LambdaQueryWrapperX<SysUserDO>() | ||
| 35 | - .likeIfPresent(SysUserDO::getUsername, reqVO.getUsername()) | ||
| 36 | - .likeIfPresent(SysUserDO::getMobile, reqVO.getMobile()) | ||
| 37 | - .eqIfPresent(SysUserDO::getStatus, reqVO.getStatus()) | ||
| 38 | - .betweenIfPresent(SysUserDO::getCreateTime, reqVO.getBeginTime(), reqVO.getEndTime()) | ||
| 39 | - .inIfPresent(SysUserDO::getDeptId, deptIds)); | ||
| 40 | - } | ||
| 41 | - | ||
| 42 | - default List<SysUserDO> selectList(UserExportReqVO reqVO, Collection<Long> deptIds) { | ||
| 43 | - return selectList(new LambdaQueryWrapperX<SysUserDO>() | ||
| 44 | - .likeIfPresent(SysUserDO::getUsername, reqVO.getUsername()) | ||
| 45 | - .likeIfPresent(SysUserDO::getMobile, reqVO.getMobile()) | ||
| 46 | - .eqIfPresent(SysUserDO::getStatus, reqVO.getStatus()) | ||
| 47 | - .betweenIfPresent(SysUserDO::getCreateTime, reqVO.getBeginTime(), reqVO.getEndTime()) | ||
| 48 | - .inIfPresent(SysUserDO::getDeptId, deptIds)); | ||
| 49 | - } | ||
| 50 | - | ||
| 51 | - default List<SysUserDO> selectListByNickname(String nickname) { | ||
| 52 | - return selectList(new LambdaQueryWrapperX<SysUserDO>().like(SysUserDO::getNickname, nickname)); | ||
| 53 | - } | ||
| 54 | - | ||
| 55 | - default List<SysUserDO> selectListByUsername(String username) { | ||
| 56 | - return selectList(new LambdaQueryWrapperX<SysUserDO>().like(SysUserDO::getUsername, username)); | ||
| 57 | - } | ||
| 58 | - | ||
| 59 | - // TODO 芋艿:可废弃该方法 | ||
| 60 | - default List<SysUserDO> selectListByDepartIdAndPostId(Long departId, Long postId) { | ||
| 61 | - return selectList(new LambdaQueryWrapperX<SysUserDO>() | ||
| 62 | - .eq(SysUserDO::getStatus, CommonStatusEnum.ENABLE.getStatus()) | ||
| 63 | - .eq(SysUserDO::getDeptId, departId) | ||
| 64 | - // TODO @jason: 封装一个 StringUtils .toString 。如果空的时候,设置为 null。会更简洁 | ||
| 65 | - .likeIfPresent(SysUserDO::getPostIds, Optional.ofNullable(postId).map(t -> String.valueOf(postId)).orElse(StringPool.EMPTY))); | ||
| 66 | - } | ||
| 67 | - | ||
| 68 | - default List<SysUserDO> selectListByStatus(Integer status) { | ||
| 69 | - return selectList(SysUserDO::getStatus, status); | ||
| 70 | - } | ||
| 71 | - | ||
| 72 | - default List<SysUserDO> selectListByDeptIds(Collection<Long> deptIds) { | ||
| 73 | - return selectList(SysUserDO::getDeptId, deptIds); | ||
| 74 | - } | ||
| 75 | - | ||
| 76 | -} | ||
| 77 | - |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/UserMapper.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.system.dal.mysql.user; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserExportReqVO; | ||
| 4 | +import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO; | ||
| 5 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; | ||
| 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.mapper.BaseMapperX; | ||
| 9 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||
| 10 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
| 11 | +import jodd.util.StringPool; | ||
| 12 | +import org.apache.ibatis.annotations.Mapper; | ||
| 13 | + | ||
| 14 | +import java.util.Collection; | ||
| 15 | +import java.util.List; | ||
| 16 | +import java.util.Optional; | ||
| 17 | + | ||
| 18 | +@Mapper | ||
| 19 | +public interface UserMapper extends BaseMapperX<UserDO> { | ||
| 20 | + | ||
| 21 | + default UserDO selectByUsername(String username) { | ||
| 22 | + return selectOne(new LambdaQueryWrapper<UserDO>().eq(UserDO::getUsername, username)); | ||
| 23 | + } | ||
| 24 | + | ||
| 25 | + default UserDO selectByEmail(String email) { | ||
| 26 | + return selectOne(new LambdaQueryWrapper<UserDO>().eq(UserDO::getEmail, email)); | ||
| 27 | + } | ||
| 28 | + | ||
| 29 | + default UserDO selectByMobile(String mobile) { | ||
| 30 | + return selectOne(new LambdaQueryWrapper<UserDO>().eq(UserDO::getMobile, mobile)); | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + default PageResult<UserDO> selectPage(UserPageReqVO reqVO, Collection<Long> deptIds) { | ||
| 34 | + return selectPage(reqVO, new LambdaQueryWrapperX<UserDO>() | ||
| 35 | + .likeIfPresent(UserDO::getUsername, reqVO.getUsername()) | ||
| 36 | + .likeIfPresent(UserDO::getMobile, reqVO.getMobile()) | ||
| 37 | + .eqIfPresent(UserDO::getStatus, reqVO.getStatus()) | ||
| 38 | + .betweenIfPresent(UserDO::getCreateTime, reqVO.getBeginTime(), reqVO.getEndTime()) | ||
| 39 | + .inIfPresent(UserDO::getDeptId, deptIds)); | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + default List<UserDO> selectList(UserExportReqVO reqVO, Collection<Long> deptIds) { | ||
| 43 | + return selectList(new LambdaQueryWrapperX<UserDO>() | ||
| 44 | + .likeIfPresent(UserDO::getUsername, reqVO.getUsername()) | ||
| 45 | + .likeIfPresent(UserDO::getMobile, reqVO.getMobile()) | ||
| 46 | + .eqIfPresent(UserDO::getStatus, reqVO.getStatus()) | ||
| 47 | + .betweenIfPresent(UserDO::getCreateTime, reqVO.getBeginTime(), reqVO.getEndTime()) | ||
| 48 | + .inIfPresent(UserDO::getDeptId, deptIds)); | ||
| 49 | + } | ||
| 50 | + | ||
| 51 | + default List<UserDO> selectListByNickname(String nickname) { | ||
| 52 | + return selectList(new LambdaQueryWrapperX<UserDO>().like(UserDO::getNickname, nickname)); | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + default List<UserDO> selectListByUsername(String username) { | ||
| 56 | + return selectList(new LambdaQueryWrapperX<UserDO>().like(UserDO::getUsername, username)); | ||
| 57 | + } | ||
| 58 | + | ||
| 59 | + default List<UserDO> selectListByStatus(Integer status) { | ||
| 60 | + return selectList(UserDO::getStatus, status); | ||
| 61 | + } | ||
| 62 | + | ||
| 63 | + default List<UserDO> selectListByDeptIds(Collection<Long> deptIds) { | ||
| 64 | + return selectList(UserDO::getDeptId, deptIds); | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | +} | ||
| 68 | + |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/redis/SysRedisKeyConstants.java
| 1 | package cn.iocoder.yudao.module.system.dal.redis; | 1 | package cn.iocoder.yudao.module.system.dal.redis; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine; | 3 | import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine; |
| 4 | +import cn.iocoder.yudao.framework.security.core.LoginUser; | ||
| 5 | +import me.zhyd.oauth.model.AuthUser; | ||
| 6 | + | ||
| 7 | +import java.time.Duration; | ||
| 4 | 8 | ||
| 5 | import static cn.iocoder.yudao.framework.redis.core.RedisKeyDefine.KeyTypeEnum.STRING; | 9 | import static cn.iocoder.yudao.framework.redis.core.RedisKeyDefine.KeyTypeEnum.STRING; |
| 6 | 10 | ||
| @@ -14,5 +18,17 @@ public interface SysRedisKeyConstants { | @@ -14,5 +18,17 @@ public interface SysRedisKeyConstants { | ||
| 14 | RedisKeyDefine CAPTCHA_CODE = new RedisKeyDefine("验证码的缓存", | 18 | RedisKeyDefine CAPTCHA_CODE = new RedisKeyDefine("验证码的缓存", |
| 15 | "captcha_code:%s", // 参数为 uuid | 19 | "captcha_code:%s", // 参数为 uuid |
| 16 | STRING, String.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); | 20 | STRING, String.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); |
| 21 | + | ||
| 22 | + RedisKeyDefine LOGIN_USER = new RedisKeyDefine("登录用户的缓存", | ||
| 23 | + "login_user:%s", // 参数为 sessionId | ||
| 24 | + STRING, LoginUser.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); | ||
| 25 | + | ||
| 26 | + RedisKeyDefine SOCIAL_AUTH_USER = new RedisKeyDefine("社交登陆的授权用户", | ||
| 27 | + "social_auth_user:%d:%s", // 参数为 type,code | ||
| 28 | + STRING, AuthUser.class, Duration.ofDays(1)); | ||
| 29 | + | ||
| 30 | + RedisKeyDefine SOCIAL_AUTH_STATE = new RedisKeyDefine("社交登陆的 state", | ||
| 31 | + "social_auth_state:%s", // 参数为 state | ||
| 32 | + STRING, String.class, Duration.ofHours(24)); // 值为 state | ||
| 17 | 33 | ||
| 18 | } | 34 | } |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/SysRedisKeyCoreConstants.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/redis/SysRedisKeyCoreConstants.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.redis; | 1 | +package cn.iocoder.yudao.module.system.dal.redis; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine; | 3 | import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine; |
| 4 | import cn.iocoder.yudao.framework.security.core.LoginUser; | 4 | import cn.iocoder.yudao.framework.security.core.LoginUser; |
| @@ -15,15 +15,4 @@ import static cn.iocoder.yudao.framework.redis.core.RedisKeyDefine.KeyTypeEnum.S | @@ -15,15 +15,4 @@ import static cn.iocoder.yudao.framework.redis.core.RedisKeyDefine.KeyTypeEnum.S | ||
| 15 | */ | 15 | */ |
| 16 | public interface SysRedisKeyCoreConstants { | 16 | public interface SysRedisKeyCoreConstants { |
| 17 | 17 | ||
| 18 | - RedisKeyDefine LOGIN_USER = new RedisKeyDefine("登录用户的缓存", | ||
| 19 | - "login_user:%s", // 参数为 sessionId | ||
| 20 | - STRING, LoginUser.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); | ||
| 21 | - | ||
| 22 | - RedisKeyDefine SOCIAL_AUTH_USER = new RedisKeyDefine("社交登陆的授权用户", | ||
| 23 | - "social_auth_user:%d:%s", // 参数为 type,code | ||
| 24 | - STRING, AuthUser.class, Duration.ofDays(1)); | ||
| 25 | - | ||
| 26 | - RedisKeyDefine SOCIAL_AUTH_STATE = new RedisKeyDefine("社交登陆的 state", | ||
| 27 | - "social_auth_state:%s", // 参数为 state | ||
| 28 | - STRING, String.class, Duration.ofHours(24)); // 值为 state | ||
| 29 | } | 18 | } |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/auth/SysLoginUserCoreRedisDAO.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/redis/auth/LoginUserRedisDAO.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.redis.auth; | 1 | +package cn.iocoder.yudao.module.system.dal.redis.auth; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; | 3 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; |
| 4 | import cn.iocoder.yudao.framework.security.config.SecurityProperties; | 4 | import cn.iocoder.yudao.framework.security.config.SecurityProperties; |
| @@ -8,7 +8,7 @@ import org.springframework.stereotype.Repository; | @@ -8,7 +8,7 @@ import org.springframework.stereotype.Repository; | ||
| 8 | 8 | ||
| 9 | import javax.annotation.Resource; | 9 | import javax.annotation.Resource; |
| 10 | 10 | ||
| 11 | -import static cn.iocoder.yudao.coreservice.modules.system.dal.redis.SysRedisKeyCoreConstants.LOGIN_USER; | 11 | +import static cn.iocoder.yudao.module.system.dal.redis.SysRedisKeyConstants.LOGIN_USER; |
| 12 | 12 | ||
| 13 | /** | 13 | /** |
| 14 | * {@link LoginUser} 的 RedisDAO | 14 | * {@link LoginUser} 的 RedisDAO |
| @@ -16,7 +16,7 @@ import static cn.iocoder.yudao.coreservice.modules.system.dal.redis.SysRedisKeyC | @@ -16,7 +16,7 @@ import static cn.iocoder.yudao.coreservice.modules.system.dal.redis.SysRedisKeyC | ||
| 16 | * @author 芋道源码 | 16 | * @author 芋道源码 |
| 17 | */ | 17 | */ |
| 18 | @Repository | 18 | @Repository |
| 19 | -public class SysLoginUserCoreRedisDAO { | 19 | +public class LoginUserRedisDAO { |
| 20 | 20 | ||
| 21 | @Resource | 21 | @Resource |
| 22 | private StringRedisTemplate stringRedisTemplate; | 22 | private StringRedisTemplate stringRedisTemplate; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/dal/redis/social/SysSocialAuthUserRedisDAO.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/redis/social/SocialAuthUserRedisDAO.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.dal.redis.social; | 1 | +package cn.iocoder.yudao.module.system.dal.redis.social; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; | 3 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; |
| 4 | import me.zhyd.oauth.model.AuthCallback; | 4 | import me.zhyd.oauth.model.AuthCallback; |
| @@ -8,7 +8,8 @@ import org.springframework.stereotype.Repository; | @@ -8,7 +8,8 @@ import org.springframework.stereotype.Repository; | ||
| 8 | 8 | ||
| 9 | import javax.annotation.Resource; | 9 | import javax.annotation.Resource; |
| 10 | 10 | ||
| 11 | -import static cn.iocoder.yudao.coreservice.modules.system.dal.redis.SysRedisKeyCoreConstants.SOCIAL_AUTH_USER; | 11 | +import static cn.iocoder.yudao.module.system.dal.redis.SysRedisKeyConstants.SOCIAL_AUTH_USER; |
| 12 | + | ||
| 12 | 13 | ||
| 13 | /** | 14 | /** |
| 14 | * 社交 {@link me.zhyd.oauth.model.AuthUser} 的 RedisDAO | 15 | * 社交 {@link me.zhyd.oauth.model.AuthUser} 的 RedisDAO |
| @@ -16,7 +17,7 @@ import static cn.iocoder.yudao.coreservice.modules.system.dal.redis.SysRedisKeyC | @@ -16,7 +17,7 @@ import static cn.iocoder.yudao.coreservice.modules.system.dal.redis.SysRedisKeyC | ||
| 16 | * @author 芋道源码 | 17 | * @author 芋道源码 |
| 17 | */ | 18 | */ |
| 18 | @Repository | 19 | @Repository |
| 19 | -public class SysSocialAuthUserRedisDAO { | 20 | +public class SocialAuthUserRedisDAO { |
| 20 | 21 | ||
| 21 | @Resource | 22 | @Resource |
| 22 | private StringRedisTemplate stringRedisTemplate; | 23 | private StringRedisTemplate stringRedisTemplate; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/enums/SysDictTypeConstants.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/DictTypeConstants.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.enums; | 1 | +package cn.iocoder.yudao.module.system.enums; |
| 2 | 2 | ||
| 3 | /** | 3 | /** |
| 4 | * System 字典类型的枚举类 | 4 | * System 字典类型的枚举类 |
| 5 | * | 5 | * |
| 6 | * @author 芋道源码 | 6 | * @author 芋道源码 |
| 7 | */ | 7 | */ |
| 8 | -public interface SysDictTypeConstants { | 8 | +public interface DictTypeConstants { |
| 9 | 9 | ||
| 10 | String USER_TYPE = "user_type"; // 用户类型 | 10 | String USER_TYPE = "user_type"; // 用户类型 |
| 11 | String COMMON_STATUS = "sys_common_status"; // 系统状态 | 11 | String COMMON_STATUS = "sys_common_status"; // 系统状态 |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/enums/common/SysSexEnum.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/common/SysSexEnum.java
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/enums/logger/SysLoginLogTypeEnum.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/logger/SysLoginLogTypeEnum.java
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/enums/logger/SysLoginResultEnum.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/logger/SysLoginResultEnum.java
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/enums/sms/SysSmsReceiveStatusEnum.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/sms/SysSmsReceiveStatusEnum.java
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/enums/sms/SysSmsSendStatusEnum.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/sms/SysSmsSendStatusEnum.java
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/enums/sms/SysSmsTemplateTypeEnum.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/enums/sms/SysSmsTemplateTypeEnum.java
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/framework/datapermission/config/DataPermissionConfiguration.java
| 1 | package cn.iocoder.yudao.module.system.framework.datapermission.config; | 1 | package cn.iocoder.yudao.module.system.framework.datapermission.config; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; | ||
| 5 | import cn.iocoder.yudao.framework.datapermission.core.dept.rule.DeptDataPermissionRuleCustomizer; | 5 | import cn.iocoder.yudao.framework.datapermission.core.dept.rule.DeptDataPermissionRuleCustomizer; |
| 6 | import org.springframework.context.annotation.Bean; | 6 | import org.springframework.context.annotation.Bean; |
| 7 | import org.springframework.context.annotation.Configuration; | 7 | import org.springframework.context.annotation.Configuration; |
| @@ -17,7 +17,7 @@ public class DataPermissionConfiguration { | @@ -17,7 +17,7 @@ public class DataPermissionConfiguration { | ||
| 17 | @Bean | 17 | @Bean |
| 18 | public DeptDataPermissionRuleCustomizer sysDeptDataPermissionRuleCustomizer() { | 18 | public DeptDataPermissionRuleCustomizer sysDeptDataPermissionRuleCustomizer() { |
| 19 | return rule -> { | 19 | return rule -> { |
| 20 | - rule.addDeptColumn(SysUserDO.class); | 20 | + rule.addDeptColumn(UserDO.class); |
| 21 | rule.addDeptColumn(SysDeptDO.class, "id"); | 21 | rule.addDeptColumn(SysDeptDO.class, "id"); |
| 22 | }; | 22 | }; |
| 23 | } | 23 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/dict/DictDataRefreshConsumer.java
| 1 | package cn.iocoder.yudao.module.system.mq.consumer.dict; | 1 | package cn.iocoder.yudao.module.system.mq.consumer.dict; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.service.dict.SysDictDataCoreService; | ||
| 4 | import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener; | 3 | import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener; |
| 5 | import cn.iocoder.yudao.module.system.mq.message.dict.DictDataRefreshMessage; | 4 | import cn.iocoder.yudao.module.system.mq.message.dict.DictDataRefreshMessage; |
| 5 | +import cn.iocoder.yudao.module.system.service.dict.DictDataService; | ||
| 6 | import lombok.extern.slf4j.Slf4j; | 6 | import lombok.extern.slf4j.Slf4j; |
| 7 | import org.springframework.stereotype.Component; | 7 | import org.springframework.stereotype.Component; |
| 8 | 8 | ||
| @@ -18,12 +18,12 @@ import javax.annotation.Resource; | @@ -18,12 +18,12 @@ import javax.annotation.Resource; | ||
| 18 | public class DictDataRefreshConsumer extends AbstractChannelMessageListener<DictDataRefreshMessage> { | 18 | public class DictDataRefreshConsumer extends AbstractChannelMessageListener<DictDataRefreshMessage> { |
| 19 | 19 | ||
| 20 | @Resource | 20 | @Resource |
| 21 | - private SysDictDataCoreService dictDataCoreService; | 21 | + private DictDataService dictDataService; |
| 22 | 22 | ||
| 23 | @Override | 23 | @Override |
| 24 | public void onMessage(DictDataRefreshMessage message) { | 24 | public void onMessage(DictDataRefreshMessage message) { |
| 25 | log.info("[onMessage][收到 DictData 刷新消息]"); | 25 | log.info("[onMessage][收到 DictData 刷新消息]"); |
| 26 | - dictDataCoreService.initLocalCache(); | 26 | + dictDataService.initLocalCache(); |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | } | 29 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/sms/SmsSendConsumer.java
| 1 | package cn.iocoder.yudao.module.system.mq.consumer.sms; | 1 | package cn.iocoder.yudao.module.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 | +import cn.iocoder.yudao.module.system.mq.message.sms.SmsSendMessage; |
| 4 | +import cn.iocoder.yudao.module.system.service.sms.SysSmsSendService; | ||
| 5 | import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessageListener; | 5 | import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessageListener; |
| 6 | import lombok.extern.slf4j.Slf4j; | 6 | import lombok.extern.slf4j.Slf4j; |
| 7 | import org.springframework.stereotype.Component; | 7 | import org.springframework.stereotype.Component; |
| @@ -9,20 +9,20 @@ import org.springframework.stereotype.Component; | @@ -9,20 +9,20 @@ import org.springframework.stereotype.Component; | ||
| 9 | import javax.annotation.Resource; | 9 | import javax.annotation.Resource; |
| 10 | 10 | ||
| 11 | /** | 11 | /** |
| 12 | - * 针对 {@link SysSmsSendMessage} 的消费者 | 12 | + * 针对 {@link SmsSendMessage} 的消费者 |
| 13 | * | 13 | * |
| 14 | * @author zzf | 14 | * @author zzf |
| 15 | * @date 2021/3/9 16:35 | 15 | * @date 2021/3/9 16:35 |
| 16 | */ | 16 | */ |
| 17 | @Component | 17 | @Component |
| 18 | @Slf4j | 18 | @Slf4j |
| 19 | -public class SmsSendConsumer extends AbstractStreamMessageListener<SysSmsSendMessage> { | 19 | +public class SmsSendConsumer extends AbstractStreamMessageListener<SmsSendMessage> { |
| 20 | 20 | ||
| 21 | @Resource | 21 | @Resource |
| 22 | - private SysSmsCoreService smsCoreService; | 22 | + private SysSmsSendService smsCoreService; |
| 23 | 23 | ||
| 24 | @Override | 24 | @Override |
| 25 | - public void onMessage(SysSmsSendMessage message) { | 25 | + public void onMessage(SmsSendMessage message) { |
| 26 | log.info("[onMessage][消息内容({})]", message); | 26 | log.info("[onMessage][消息内容({})]", message); |
| 27 | smsCoreService.doSendSms(message); | 27 | smsCoreService.doSendSms(message); |
| 28 | } | 28 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/sms/SmsTemplateRefreshConsumer.java
| 1 | package cn.iocoder.yudao.module.system.mq.consumer.sms; | 1 | package cn.iocoder.yudao.module.system.mq.consumer.sms; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.system.mq.message.sms.SmsTemplateRefreshMessage; | 3 | import cn.iocoder.yudao.module.system.mq.message.sms.SmsTemplateRefreshMessage; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsTemplateCoreService; | ||
| 5 | import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener; | 4 | import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener; |
| 5 | +import cn.iocoder.yudao.module.system.service.sms.SmsTemplateService; | ||
| 6 | import lombok.extern.slf4j.Slf4j; | 6 | import lombok.extern.slf4j.Slf4j; |
| 7 | import org.springframework.stereotype.Component; | 7 | import org.springframework.stereotype.Component; |
| 8 | 8 | ||
| @@ -18,12 +18,12 @@ import javax.annotation.Resource; | @@ -18,12 +18,12 @@ import javax.annotation.Resource; | ||
| 18 | public class SmsTemplateRefreshConsumer extends AbstractChannelMessageListener<SmsTemplateRefreshMessage> { | 18 | public class SmsTemplateRefreshConsumer extends AbstractChannelMessageListener<SmsTemplateRefreshMessage> { |
| 19 | 19 | ||
| 20 | @Resource | 20 | @Resource |
| 21 | - private SysSmsTemplateCoreService smsTemplateCoreService; | 21 | + private SmsTemplateService smsTemplateService; |
| 22 | 22 | ||
| 23 | @Override | 23 | @Override |
| 24 | public void onMessage(SmsTemplateRefreshMessage message) { | 24 | public void onMessage(SmsTemplateRefreshMessage message) { |
| 25 | log.info("[onMessage][收到 SmsTemplate 刷新消息]"); | 25 | log.info("[onMessage][收到 SmsTemplate 刷新消息]"); |
| 26 | - smsTemplateCoreService.initLocalCache(); | 26 | + smsTemplateService.initLocalCache(); |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | } | 29 | } |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/mq/message/sms/SysSmsSendMessage.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/message/sms/SmsSendMessage.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.mq.message.sms; | 1 | +package cn.iocoder.yudao.module.system.mq.message.sms; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.core.KeyValue; | 3 | import cn.iocoder.yudao.framework.common.core.KeyValue; |
| 4 | import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessage; | 4 | import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessage; |
| @@ -15,7 +15,7 @@ import java.util.List; | @@ -15,7 +15,7 @@ import java.util.List; | ||
| 15 | */ | 15 | */ |
| 16 | @Data | 16 | @Data |
| 17 | @EqualsAndHashCode(callSuper = true) | 17 | @EqualsAndHashCode(callSuper = true) |
| 18 | -public class SysSmsSendMessage extends AbstractStreamMessage { | 18 | +public class SmsSendMessage extends AbstractStreamMessage { |
| 19 | 19 | ||
| 20 | /** | 20 | /** |
| 21 | * 短信日志编号 | 21 | * 短信日志编号 |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/mq/message/package-info.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/package-info.java
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/mq/producer/sms/SmsProducer.java
| 1 | package cn.iocoder.yudao.module.system.mq.producer.sms; | 1 | package cn.iocoder.yudao.module.system.mq.producer.sms; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.common.core.KeyValue; | ||
| 3 | import cn.iocoder.yudao.module.system.mq.message.sms.SmsChannelRefreshMessage; | 4 | import cn.iocoder.yudao.module.system.mq.message.sms.SmsChannelRefreshMessage; |
| 5 | +import cn.iocoder.yudao.module.system.mq.message.sms.SmsSendMessage; | ||
| 4 | import cn.iocoder.yudao.module.system.mq.message.sms.SmsTemplateRefreshMessage; | 6 | import cn.iocoder.yudao.module.system.mq.message.sms.SmsTemplateRefreshMessage; |
| 5 | import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; | 7 | import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; |
| 6 | import lombok.extern.slf4j.Slf4j; | 8 | import lombok.extern.slf4j.Slf4j; |
| 7 | import org.springframework.stereotype.Component; | 9 | import org.springframework.stereotype.Component; |
| 8 | 10 | ||
| 9 | import javax.annotation.Resource; | 11 | import javax.annotation.Resource; |
| 12 | +import java.util.List; | ||
| 10 | 13 | ||
| 11 | /** | 14 | /** |
| 12 | * Sms 短信相关消息的 Producer | 15 | * Sms 短信相关消息的 Producer |
| @@ -37,4 +40,20 @@ public class SmsProducer { | @@ -37,4 +40,20 @@ public class SmsProducer { | ||
| 37 | redisMQTemplate.send(message); | 40 | redisMQTemplate.send(message); |
| 38 | } | 41 | } |
| 39 | 42 | ||
| 43 | + /** | ||
| 44 | + * 发送 {@link SmsSendMessage} 消息 | ||
| 45 | + * | ||
| 46 | + * @param logId 短信日志编号 | ||
| 47 | + * @param mobile 手机号 | ||
| 48 | + * @param channelId 渠道编号 | ||
| 49 | + * @param apiTemplateId 短信模板编号 | ||
| 50 | + * @param templateParams 短信模板参数 | ||
| 51 | + */ | ||
| 52 | + public void sendSmsSendMessage(Long logId, String mobile, | ||
| 53 | + Long channelId, String apiTemplateId, List<KeyValue<String, Object>> templateParams) { | ||
| 54 | + SmsSendMessage message = new SmsSendMessage().setLogId(logId).setMobile(mobile); | ||
| 55 | + message.setChannelId(channelId).setApiTemplateId(apiTemplateId).setTemplateParams(templateParams); | ||
| 56 | + redisMQTemplate.send(message); | ||
| 57 | + } | ||
| 58 | + | ||
| 40 | } | 59 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/auth/AuthServiceImpl.java
| 1 | package cn.iocoder.yudao.module.system.service.auth; | 1 | package cn.iocoder.yudao.module.system.service.auth; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 5 | +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | ||
| 6 | +import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; | ||
| 7 | +import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; | ||
| 8 | +import cn.iocoder.yudao.framework.security.core.LoginUser; | ||
| 9 | +import cn.iocoder.yudao.framework.security.core.authentication.MultiUsernamePasswordAuthenticationToken; | ||
| 4 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthLoginReqVO; | 10 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthLoginReqVO; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthSocialBindReqVO; | 11 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthSocialBindReqVO; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthSocialLogin2ReqVO; | 12 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthSocialLogin2ReqVO; |
| 7 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthSocialLoginReqVO; | 13 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthSocialLoginReqVO; |
| 8 | import cn.iocoder.yudao.module.system.convert.auth.AuthConvert; | 14 | import cn.iocoder.yudao.module.system.convert.auth.AuthConvert; |
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO; | 15 | +import cn.iocoder.yudao.module.system.dal.dataobject.social.SysSocialUserDO; |
| 16 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; | ||
| 10 | import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; | 17 | import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; |
| 11 | import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; | 18 | import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; |
| 12 | import cn.iocoder.yudao.module.system.service.common.CaptchaService; | 19 | import cn.iocoder.yudao.module.system.service.common.CaptchaService; |
| 13 | -import cn.iocoder.yudao.module.system.service.dept.PostService; | 20 | +import cn.iocoder.yudao.module.system.service.logger.LoginLogService; |
| 21 | +import cn.iocoder.yudao.module.system.service.logger.dto.LoginLogCreateReqDTO; | ||
| 14 | import cn.iocoder.yudao.module.system.service.permission.PermissionService; | 22 | import cn.iocoder.yudao.module.system.service.permission.PermissionService; |
| 23 | +import cn.iocoder.yudao.module.system.service.social.SocialUserService; | ||
| 15 | import cn.iocoder.yudao.module.system.service.user.UserService; | 24 | import cn.iocoder.yudao.module.system.service.user.UserService; |
| 16 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; | ||
| 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.social.SysSocialCoreService; | ||
| 22 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | ||
| 23 | -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 24 | -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | ||
| 25 | -import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; | ||
| 26 | -import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; | ||
| 27 | -import cn.iocoder.yudao.framework.security.core.LoginUser; | ||
| 28 | -import cn.iocoder.yudao.framework.security.core.authentication.MultiUsernamePasswordAuthenticationToken; | ||
| 29 | import lombok.extern.slf4j.Slf4j; | 25 | import lombok.extern.slf4j.Slf4j; |
| 30 | import me.zhyd.oauth.model.AuthUser; | 26 | import me.zhyd.oauth.model.AuthUser; |
| 27 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 31 | import org.springframework.context.annotation.Lazy; | 28 | import org.springframework.context.annotation.Lazy; |
| 32 | import org.springframework.security.authentication.AuthenticationManager; | 29 | import org.springframework.security.authentication.AuthenticationManager; |
| 33 | import org.springframework.security.authentication.BadCredentialsException; | 30 | import org.springframework.security.authentication.BadCredentialsException; |
| @@ -40,14 +37,12 @@ import org.springframework.stereotype.Service; | @@ -40,14 +37,12 @@ import org.springframework.stereotype.Service; | ||
| 40 | import org.springframework.util.Assert; | 37 | import org.springframework.util.Assert; |
| 41 | 38 | ||
| 42 | import javax.annotation.Resource; | 39 | import javax.annotation.Resource; |
| 43 | -import java.util.Collections; | ||
| 44 | import java.util.List; | 40 | import java.util.List; |
| 45 | import java.util.Objects; | 41 | import java.util.Objects; |
| 46 | import java.util.Set; | 42 | import java.util.Set; |
| 47 | 43 | ||
| 48 | -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; | ||
| 49 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 44 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 50 | -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; | 45 | +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; |
| 51 | import static java.util.Collections.singleton; | 46 | import static java.util.Collections.singleton; |
| 52 | 47 | ||
| 53 | /** | 48 | /** |
| @@ -63,27 +58,24 @@ public class AuthServiceImpl implements AuthService { | @@ -63,27 +58,24 @@ public class AuthServiceImpl implements AuthService { | ||
| 63 | @Lazy // 延迟加载,因为存在相互依赖的问题 | 58 | @Lazy // 延迟加载,因为存在相互依赖的问题 |
| 64 | private AuthenticationManager authenticationManager; | 59 | private AuthenticationManager authenticationManager; |
| 65 | 60 | ||
| 66 | - @Resource | 61 | + @Autowired |
| 62 | + @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // UserService 存在重名 | ||
| 67 | private UserService userService; | 63 | private UserService userService; |
| 68 | @Resource | 64 | @Resource |
| 69 | - private SysUserCoreService userCoreService; | ||
| 70 | - @Resource | ||
| 71 | private PermissionService permissionService; | 65 | private PermissionService permissionService; |
| 72 | @Resource | 66 | @Resource |
| 73 | private CaptchaService captchaService; | 67 | private CaptchaService captchaService; |
| 74 | @Resource | 68 | @Resource |
| 75 | - private SysLoginLogCoreService loginLogCoreService; | ||
| 76 | - @Resource | ||
| 77 | - private SysUserSessionCoreService userSessionCoreService; | 69 | + private LoginLogService loginLogService; |
| 78 | @Resource | 70 | @Resource |
| 79 | - private PostService postService; | 71 | + private UserSessionService userSessionService; |
| 80 | @Resource | 72 | @Resource |
| 81 | - private SysSocialCoreService socialService; | 73 | + private SocialUserService socialService; |
| 82 | 74 | ||
| 83 | @Override | 75 | @Override |
| 84 | public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { | 76 | public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { |
| 85 | // 获取 username 对应的 SysUserDO | 77 | // 获取 username 对应的 SysUserDO |
| 86 | - SysUserDO user = userService.getUserByUsername(username); | 78 | + UserDO user = userService.getUserByUsername(username); |
| 87 | if (user == null) { | 79 | if (user == null) { |
| 88 | throw new UsernameNotFoundException(username); | 80 | throw new UsernameNotFoundException(username); |
| 89 | } | 81 | } |
| @@ -94,7 +86,7 @@ public class AuthServiceImpl implements AuthService { | @@ -94,7 +86,7 @@ public class AuthServiceImpl implements AuthService { | ||
| 94 | @Override | 86 | @Override |
| 95 | public LoginUser mockLogin(Long userId) { | 87 | public LoginUser mockLogin(Long userId) { |
| 96 | // 获取用户编号对应的 SysUserDO | 88 | // 获取用户编号对应的 SysUserDO |
| 97 | - SysUserDO user = userCoreService.getUser(userId); | 89 | + UserDO user = userService.getUser(userId); |
| 98 | if (user == null) { | 90 | if (user == null) { |
| 99 | throw new UsernameNotFoundException(String.valueOf(userId)); | 91 | throw new UsernameNotFoundException(String.valueOf(userId)); |
| 100 | } | 92 | } |
| @@ -113,14 +105,7 @@ public class AuthServiceImpl implements AuthService { | @@ -113,14 +105,7 @@ public class AuthServiceImpl implements AuthService { | ||
| 113 | LoginUser loginUser = this.login0(reqVO.getUsername(), reqVO.getPassword()); | 105 | LoginUser loginUser = this.login0(reqVO.getUsername(), reqVO.getPassword()); |
| 114 | 106 | ||
| 115 | // 缓存登陆用户到 Redis 中,返回 sessionId 编号 | 107 | // 缓存登陆用户到 Redis 中,返回 sessionId 编号 |
| 116 | - return userSessionCoreService.createUserSession(loginUser, userIp, userAgent); | ||
| 117 | - } | ||
| 118 | - | ||
| 119 | - private List<String> getUserPosts(Set<Long> postIds) { | ||
| 120 | - if (CollUtil.isEmpty(postIds)) { | ||
| 121 | - return Collections.emptyList(); | ||
| 122 | - } | ||
| 123 | - return convertList(postService.getPosts(postIds), SysPostDO::getCode); | 108 | + return userSessionService.createUserSession(loginUser, userIp, userAgent); |
| 124 | } | 109 | } |
| 125 | 110 | ||
| 126 | private void verifyCaptcha(String username, String captchaUUID, String captchaCode) { | 111 | private void verifyCaptcha(String username, String captchaUUID, String captchaCode) { |
| @@ -175,9 +160,9 @@ public class AuthServiceImpl implements AuthService { | @@ -175,9 +160,9 @@ public class AuthServiceImpl implements AuthService { | ||
| 175 | 160 | ||
| 176 | private void createLoginLog(String username, LoginLogTypeEnum logTypeEnum, LoginResultEnum loginResult) { | 161 | private void createLoginLog(String username, LoginLogTypeEnum logTypeEnum, LoginResultEnum loginResult) { |
| 177 | // 获得用户 | 162 | // 获得用户 |
| 178 | - SysUserDO user = userService.getUserByUsername(username); | 163 | + UserDO user = userService.getUserByUsername(username); |
| 179 | // 插入登录日志 | 164 | // 插入登录日志 |
| 180 | - SysLoginLogCreateReqDTO reqDTO = new SysLoginLogCreateReqDTO(); | 165 | + LoginLogCreateReqDTO reqDTO = new LoginLogCreateReqDTO(); |
| 181 | reqDTO.setLogType(logTypeEnum.getType()); | 166 | reqDTO.setLogType(logTypeEnum.getType()); |
| 182 | reqDTO.setTraceId(TracerUtils.getTraceId()); | 167 | reqDTO.setTraceId(TracerUtils.getTraceId()); |
| 183 | if (user != null) { | 168 | if (user != null) { |
| @@ -188,7 +173,7 @@ public class AuthServiceImpl implements AuthService { | @@ -188,7 +173,7 @@ public class AuthServiceImpl implements AuthService { | ||
| 188 | reqDTO.setUserAgent(ServletUtils.getUserAgent()); | 173 | reqDTO.setUserAgent(ServletUtils.getUserAgent()); |
| 189 | reqDTO.setUserIp(ServletUtils.getClientIP()); | 174 | reqDTO.setUserIp(ServletUtils.getClientIP()); |
| 190 | reqDTO.setResult(loginResult.getResult()); | 175 | reqDTO.setResult(loginResult.getResult()); |
| 191 | - loginLogCoreService.createLoginLog(reqDTO); | 176 | + loginLogService.createLoginLog(reqDTO); |
| 192 | // 更新最后登录时间 | 177 | // 更新最后登录时间 |
| 193 | if (user != null && Objects.equals(LoginResultEnum.SUCCESS.getResult(), loginResult.getResult())) { | 178 | if (user != null && Objects.equals(LoginResultEnum.SUCCESS.getResult(), loginResult.getResult())) { |
| 194 | userService.updateUserLogin(user.getId(), ServletUtils.getClientIP()); | 179 | userService.updateUserLogin(user.getId(), ServletUtils.getClientIP()); |
| @@ -219,7 +204,7 @@ public class AuthServiceImpl implements AuthService { | @@ -219,7 +204,7 @@ public class AuthServiceImpl implements AuthService { | ||
| 219 | } | 204 | } |
| 220 | 205 | ||
| 221 | // 自动登录 | 206 | // 自动登录 |
| 222 | - SysUserDO user = userCoreService.getUser(socialUsers.get(0).getUserId()); | 207 | + UserDO user = userService.getUser(socialUsers.get(0).getUserId()); |
| 223 | if (user == null) { | 208 | if (user == null) { |
| 224 | throw exception(USER_NOT_EXISTS); | 209 | throw exception(USER_NOT_EXISTS); |
| 225 | } | 210 | } |
| @@ -232,7 +217,7 @@ public class AuthServiceImpl implements AuthService { | @@ -232,7 +217,7 @@ public class AuthServiceImpl implements AuthService { | ||
| 232 | socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, getUserType()); | 217 | socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, getUserType()); |
| 233 | 218 | ||
| 234 | // 缓存登录用户到 Redis 中,返回 sessionId 编号 | 219 | // 缓存登录用户到 Redis 中,返回 sessionId 编号 |
| 235 | - return userSessionCoreService.createUserSession(loginUser, userIp, userAgent); | 220 | + return userSessionService.createUserSession(loginUser, userIp, userAgent); |
| 236 | } | 221 | } |
| 237 | 222 | ||
| 238 | @Override | 223 | @Override |
| @@ -248,7 +233,7 @@ public class AuthServiceImpl implements AuthService { | @@ -248,7 +233,7 @@ public class AuthServiceImpl implements AuthService { | ||
| 248 | socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, getUserType()); | 233 | socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, getUserType()); |
| 249 | 234 | ||
| 250 | // 缓存登录用户到 Redis 中,返回 sessionId 编号 | 235 | // 缓存登录用户到 Redis 中,返回 sessionId 编号 |
| 251 | - return userSessionCoreService.createUserSession(loginUser, userIp, userAgent); | 236 | + return userSessionService.createUserSession(loginUser, userIp, userAgent); |
| 252 | } | 237 | } |
| 253 | 238 | ||
| 254 | @Override | 239 | @Override |
| @@ -264,12 +249,12 @@ public class AuthServiceImpl implements AuthService { | @@ -264,12 +249,12 @@ public class AuthServiceImpl implements AuthService { | ||
| 264 | @Override | 249 | @Override |
| 265 | public void logout(String token) { | 250 | public void logout(String token) { |
| 266 | // 查询用户信息 | 251 | // 查询用户信息 |
| 267 | - LoginUser loginUser = userSessionCoreService.getLoginUser(token); | 252 | + LoginUser loginUser = userSessionService.getLoginUser(token); |
| 268 | if (loginUser == null) { | 253 | if (loginUser == null) { |
| 269 | return; | 254 | return; |
| 270 | } | 255 | } |
| 271 | // 删除 session | 256 | // 删除 session |
| 272 | - userSessionCoreService.deleteUserSession(token); | 257 | + userSessionService.deleteUserSession(token); |
| 273 | // 记录登出日志 | 258 | // 记录登出日志 |
| 274 | this.createLogoutLog(loginUser.getId(), loginUser.getUsername()); | 259 | this.createLogoutLog(loginUser.getId(), loginUser.getUsername()); |
| 275 | } | 260 | } |
| @@ -280,7 +265,7 @@ public class AuthServiceImpl implements AuthService { | @@ -280,7 +265,7 @@ public class AuthServiceImpl implements AuthService { | ||
| 280 | } | 265 | } |
| 281 | 266 | ||
| 282 | private void createLogoutLog(Long userId, String username) { | 267 | private void createLogoutLog(Long userId, String username) { |
| 283 | - SysLoginLogCreateReqDTO reqDTO = new SysLoginLogCreateReqDTO(); | 268 | + LoginLogCreateReqDTO reqDTO = new LoginLogCreateReqDTO(); |
| 284 | reqDTO.setLogType(LoginLogTypeEnum.LOGOUT_SELF.getType()); | 269 | reqDTO.setLogType(LoginLogTypeEnum.LOGOUT_SELF.getType()); |
| 285 | reqDTO.setTraceId(TracerUtils.getTraceId()); | 270 | reqDTO.setTraceId(TracerUtils.getTraceId()); |
| 286 | reqDTO.setUserId(userId); | 271 | reqDTO.setUserId(userId); |
| @@ -289,13 +274,13 @@ public class AuthServiceImpl implements AuthService { | @@ -289,13 +274,13 @@ public class AuthServiceImpl implements AuthService { | ||
| 289 | reqDTO.setUserAgent(ServletUtils.getUserAgent()); | 274 | reqDTO.setUserAgent(ServletUtils.getUserAgent()); |
| 290 | reqDTO.setUserIp(ServletUtils.getClientIP()); | 275 | reqDTO.setUserIp(ServletUtils.getClientIP()); |
| 291 | reqDTO.setResult(LoginResultEnum.SUCCESS.getResult()); | 276 | reqDTO.setResult(LoginResultEnum.SUCCESS.getResult()); |
| 292 | - loginLogCoreService.createLoginLog(reqDTO); | 277 | + loginLogService.createLoginLog(reqDTO); |
| 293 | } | 278 | } |
| 294 | 279 | ||
| 295 | @Override | 280 | @Override |
| 296 | public LoginUser verifyTokenAndRefresh(String token) { | 281 | public LoginUser verifyTokenAndRefresh(String token) { |
| 297 | // 获得 LoginUser | 282 | // 获得 LoginUser |
| 298 | - LoginUser loginUser = userSessionCoreService.getLoginUser(token); | 283 | + LoginUser loginUser = userSessionService.getLoginUser(token); |
| 299 | if (loginUser == null) { | 284 | if (loginUser == null) { |
| 300 | return null; | 285 | return null; |
| 301 | } | 286 | } |
| @@ -306,23 +291,23 @@ public class AuthServiceImpl implements AuthService { | @@ -306,23 +291,23 @@ public class AuthServiceImpl implements AuthService { | ||
| 306 | private LoginUser refreshLoginUserCache(String token, LoginUser loginUser) { | 291 | private LoginUser refreshLoginUserCache(String token, LoginUser loginUser) { |
| 307 | // 每 1/3 的 Session 超时时间,刷新 LoginUser 缓存 | 292 | // 每 1/3 的 Session 超时时间,刷新 LoginUser 缓存 |
| 308 | if (System.currentTimeMillis() - loginUser.getUpdateTime().getTime() < | 293 | if (System.currentTimeMillis() - loginUser.getUpdateTime().getTime() < |
| 309 | - userSessionCoreService.getSessionTimeoutMillis() / 3) { | 294 | + userSessionService.getSessionTimeoutMillis() / 3) { |
| 310 | return loginUser; | 295 | return loginUser; |
| 311 | } | 296 | } |
| 312 | 297 | ||
| 313 | // 重新加载 SysUserDO 信息 | 298 | // 重新加载 SysUserDO 信息 |
| 314 | - SysUserDO user = userCoreService.getUser(loginUser.getId()); | 299 | + UserDO user = userService.getUser(loginUser.getId()); |
| 315 | if (user == null || CommonStatusEnum.DISABLE.getStatus().equals(user.getStatus())) { | 300 | if (user == null || CommonStatusEnum.DISABLE.getStatus().equals(user.getStatus())) { |
| 316 | throw exception(AUTH_TOKEN_EXPIRED); // 校验 token 时,用户被禁用的情况下,也认为 token 过期,方便前端跳转到登录界面 | 301 | throw exception(AUTH_TOKEN_EXPIRED); // 校验 token 时,用户被禁用的情况下,也认为 token 过期,方便前端跳转到登录界面 |
| 317 | } | 302 | } |
| 318 | 303 | ||
| 319 | // 刷新 LoginUser 缓存 | 304 | // 刷新 LoginUser 缓存 |
| 320 | LoginUser newLoginUser= this.buildLoginUser(user); | 305 | LoginUser newLoginUser= this.buildLoginUser(user); |
| 321 | - userSessionCoreService.refreshUserSession(token, newLoginUser); | 306 | + userSessionService.refreshUserSession(token, newLoginUser); |
| 322 | return newLoginUser; | 307 | return newLoginUser; |
| 323 | } | 308 | } |
| 324 | 309 | ||
| 325 | - private LoginUser buildLoginUser(SysUserDO user) { | 310 | + private LoginUser buildLoginUser(UserDO user) { |
| 326 | LoginUser loginUser = AuthConvert.INSTANCE.convert(user); | 311 | LoginUser loginUser = AuthConvert.INSTANCE.convert(user); |
| 327 | // 补全字段 | 312 | // 补全字段 |
| 328 | loginUser.setDeptId(user.getDeptId()); | 313 | loginUser.setDeptId(user.getDeptId()); |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/auth/UserSessionService.java
| 1 | package cn.iocoder.yudao.module.system.service.auth; | 1 | package cn.iocoder.yudao.module.system.service.auth; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.security.core.LoginUser; | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO; | 5 | +import cn.iocoder.yudao.module.system.dal.dataobject.auth.SysUserSessionDO; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | 7 | ||
| 7 | /** | 8 | /** |
| @@ -26,4 +27,44 @@ public interface UserSessionService { | @@ -26,4 +27,44 @@ public interface UserSessionService { | ||
| 26 | **/ | 27 | **/ |
| 27 | long clearSessionTimeout(); | 28 | long clearSessionTimeout(); |
| 28 | 29 | ||
| 30 | + /** | ||
| 31 | + * 创建在线用户 Session | ||
| 32 | + * | ||
| 33 | + * @param loginUser 登录用户 | ||
| 34 | + * @param userIp 用户 IP | ||
| 35 | + * @param userAgent 用户 UA | ||
| 36 | + * @return Session 编号 | ||
| 37 | + */ | ||
| 38 | + String createUserSession(LoginUser loginUser, String userIp, String userAgent); | ||
| 39 | + | ||
| 40 | + /** | ||
| 41 | + * 刷新在线用户 Session 的更新时间 | ||
| 42 | + * | ||
| 43 | + * @param sessionId Session 编号 | ||
| 44 | + * @param loginUser 登录用户 | ||
| 45 | + */ | ||
| 46 | + void refreshUserSession(String sessionId, LoginUser loginUser); | ||
| 47 | + | ||
| 48 | + /** | ||
| 49 | + * 删除在线用户 Session | ||
| 50 | + * | ||
| 51 | + * @param sessionId Session 编号 | ||
| 52 | + */ | ||
| 53 | + void deleteUserSession(String sessionId); | ||
| 54 | + | ||
| 55 | + /** | ||
| 56 | + * 获得 Session 编号对应的在线用户 | ||
| 57 | + * | ||
| 58 | + * @param sessionId Session 编号 | ||
| 59 | + * @return 在线用户 | ||
| 60 | + */ | ||
| 61 | + LoginUser getLoginUser(String sessionId); | ||
| 62 | + | ||
| 63 | + /** | ||
| 64 | + * 获得 Session 超时时间,单位:毫秒 | ||
| 65 | + * | ||
| 66 | + * @return 超时时间 | ||
| 67 | + */ | ||
| 68 | + Long getSessionTimeoutMillis(); | ||
| 69 | + | ||
| 29 | } | 70 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/auth/UserSessionServiceImpl.java
| 1 | package cn.iocoder.yudao.module.system.service.auth; | 1 | package cn.iocoder.yudao.module.system.service.auth; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | +import cn.hutool.core.util.IdUtil; | ||
| 4 | import cn.hutool.core.util.StrUtil; | 5 | import cn.hutool.core.util.StrUtil; |
| 6 | +import cn.iocoder.yudao.framework.security.config.SecurityProperties; | ||
| 7 | +import cn.iocoder.yudao.framework.security.core.LoginUser; | ||
| 5 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; | 8 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; |
| 6 | import cn.iocoder.yudao.module.system.dal.mysql.auth.SysUserSessionMapper; | 9 | import cn.iocoder.yudao.module.system.dal.mysql.auth.SysUserSessionMapper; |
| 7 | import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; | 10 | import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; |
| 8 | import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; | 11 | import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; |
| 12 | +import cn.iocoder.yudao.module.system.service.logger.LoginLogService; | ||
| 9 | import cn.iocoder.yudao.module.system.service.user.UserService; | 13 | import cn.iocoder.yudao.module.system.service.user.UserService; |
| 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.dal.redis.auth.SysLoginUserCoreRedisDAO; | ||
| 13 | -import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService; | ||
| 14 | -import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO; | 14 | +import cn.iocoder.yudao.module.system.dal.dataobject.auth.SysUserSessionDO; |
| 15 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; | ||
| 16 | +import cn.iocoder.yudao.module.system.dal.redis.auth.LoginUserRedisDAO; | ||
| 17 | +import cn.iocoder.yudao.module.system.service.logger.dto.LoginLogCreateReqDTO; | ||
| 15 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 18 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 16 | import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; | 19 | import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; |
| 17 | import com.google.common.collect.Lists; | 20 | import com.google.common.collect.Lists; |
| @@ -19,13 +22,12 @@ import lombok.extern.slf4j.Slf4j; | @@ -19,13 +22,12 @@ import lombok.extern.slf4j.Slf4j; | ||
| 19 | import org.springframework.stereotype.Service; | 22 | import org.springframework.stereotype.Service; |
| 20 | 23 | ||
| 21 | import javax.annotation.Resource; | 24 | import javax.annotation.Resource; |
| 22 | -import java.util.ArrayList; | ||
| 23 | -import java.util.Collection; | ||
| 24 | -import java.util.List; | ||
| 25 | -import java.util.Map; | 25 | +import java.time.Duration; |
| 26 | +import java.util.*; | ||
| 26 | import java.util.stream.Collectors; | 27 | import java.util.stream.Collectors; |
| 27 | 28 | ||
| 28 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | 29 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| 30 | +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime; | ||
| 29 | 31 | ||
| 30 | /** | 32 | /** |
| 31 | * 在线用户 Session Service 实现类 | 33 | * 在线用户 Session Service 实现类 |
| @@ -38,20 +40,24 @@ public class UserSessionServiceImpl implements UserSessionService { | @@ -38,20 +40,24 @@ public class UserSessionServiceImpl implements UserSessionService { | ||
| 38 | 40 | ||
| 39 | @Resource | 41 | @Resource |
| 40 | private SysUserSessionMapper userSessionMapper; | 42 | private SysUserSessionMapper userSessionMapper; |
| 43 | + | ||
| 41 | @Resource | 44 | @Resource |
| 42 | private UserService userService; | 45 | private UserService userService; |
| 43 | @Resource | 46 | @Resource |
| 44 | - private SysLoginLogCoreService loginLogCoreService; | 47 | + private LoginLogService loginLogService; |
| 48 | + | ||
| 49 | + @Resource | ||
| 50 | + private LoginUserRedisDAO loginUserCoreRedisDAO; | ||
| 45 | 51 | ||
| 46 | @Resource | 52 | @Resource |
| 47 | - private SysLoginUserCoreRedisDAO loginUserCoreRedisDAO; | 53 | + private SecurityProperties securityProperties; |
| 48 | 54 | ||
| 49 | @Override | 55 | @Override |
| 50 | public PageResult<SysUserSessionDO> getUserSessionPage(UserSessionPageReqVO reqVO) { | 56 | public PageResult<SysUserSessionDO> getUserSessionPage(UserSessionPageReqVO reqVO) { |
| 51 | // 处理基于用户昵称的查询 | 57 | // 处理基于用户昵称的查询 |
| 52 | Collection<Long> userIds = null; | 58 | Collection<Long> userIds = null; |
| 53 | if (StrUtil.isNotEmpty(reqVO.getUsername())) { | 59 | if (StrUtil.isNotEmpty(reqVO.getUsername())) { |
| 54 | - userIds = convertSet(userService.getUsersByUsername(reqVO.getUsername()), SysUserDO::getId); | 60 | + userIds = convertSet(userService.getUsersByUsername(reqVO.getUsername()), UserDO::getId); |
| 55 | if (CollUtil.isEmpty(userIds)) { | 61 | if (CollUtil.isEmpty(userIds)) { |
| 56 | return PageResult.empty(); | 62 | return PageResult.empty(); |
| 57 | } | 63 | } |
| @@ -80,7 +86,7 @@ public class UserSessionServiceImpl implements UserSessionService { | @@ -80,7 +86,7 @@ public class UserSessionServiceImpl implements UserSessionService { | ||
| 80 | 86 | ||
| 81 | private void createTimeoutLogoutLog(Collection<SysUserSessionDO> timeoutSessionDOS) { | 87 | private void createTimeoutLogoutLog(Collection<SysUserSessionDO> timeoutSessionDOS) { |
| 82 | for (SysUserSessionDO timeoutSessionDO : timeoutSessionDOS) { | 88 | for (SysUserSessionDO timeoutSessionDO : timeoutSessionDOS) { |
| 83 | - SysLoginLogCreateReqDTO reqDTO = new SysLoginLogCreateReqDTO(); | 89 | + LoginLogCreateReqDTO reqDTO = new LoginLogCreateReqDTO(); |
| 84 | reqDTO.setLogType(LoginLogTypeEnum.LOGOUT_TIMEOUT.getType()); | 90 | reqDTO.setLogType(LoginLogTypeEnum.LOGOUT_TIMEOUT.getType()); |
| 85 | reqDTO.setTraceId(TracerUtils.getTraceId()); | 91 | reqDTO.setTraceId(TracerUtils.getTraceId()); |
| 86 | reqDTO.setUserId(timeoutSessionDO.getUserId()); | 92 | reqDTO.setUserId(timeoutSessionDO.getUserId()); |
| @@ -89,8 +95,66 @@ public class UserSessionServiceImpl implements UserSessionService { | @@ -89,8 +95,66 @@ public class UserSessionServiceImpl implements UserSessionService { | ||
| 89 | reqDTO.setUserAgent(timeoutSessionDO.getUserAgent()); | 95 | reqDTO.setUserAgent(timeoutSessionDO.getUserAgent()); |
| 90 | reqDTO.setUserIp(timeoutSessionDO.getUserIp()); | 96 | reqDTO.setUserIp(timeoutSessionDO.getUserIp()); |
| 91 | reqDTO.setResult(LoginResultEnum.SUCCESS.getResult()); | 97 | reqDTO.setResult(LoginResultEnum.SUCCESS.getResult()); |
| 92 | - loginLogCoreService.createLoginLog(reqDTO); | 98 | + loginLogService.createLoginLog(reqDTO); |
| 93 | } | 99 | } |
| 94 | } | 100 | } |
| 95 | 101 | ||
| 102 | + @Override | ||
| 103 | + public String createUserSession(LoginUser loginUser, String userIp, String userAgent) { | ||
| 104 | + // 生成 Session 编号 | ||
| 105 | + String sessionId = generateSessionId(); | ||
| 106 | + // 写入 Redis 缓存 | ||
| 107 | + loginUser.setUpdateTime(new Date()); | ||
| 108 | + loginUserCoreRedisDAO.set(sessionId, loginUser); | ||
| 109 | + // 写入 DB 中 | ||
| 110 | + SysUserSessionDO userSession = SysUserSessionDO.builder().id(sessionId) | ||
| 111 | + .userId(loginUser.getId()).userType(loginUser.getUserType()) | ||
| 112 | + .userIp(userIp).userAgent(userAgent).username(loginUser.getUsername()) | ||
| 113 | + .sessionTimeout(addTime(Duration.ofMillis(getSessionTimeoutMillis()))) | ||
| 114 | + .build(); | ||
| 115 | + userSessionMapper.insert(userSession); | ||
| 116 | + // 返回 Session 编号 | ||
| 117 | + return sessionId; | ||
| 118 | + } | ||
| 119 | + | ||
| 120 | + @Override | ||
| 121 | + public void refreshUserSession(String sessionId, LoginUser loginUser) { | ||
| 122 | + // 写入 Redis 缓存 | ||
| 123 | + loginUser.setUpdateTime(new Date()); | ||
| 124 | + loginUserCoreRedisDAO.set(sessionId, loginUser); | ||
| 125 | + // 更新 DB 中 | ||
| 126 | + SysUserSessionDO updateObj = SysUserSessionDO.builder().id(sessionId).build(); | ||
| 127 | + updateObj.setUsername(loginUser.getUsername()); | ||
| 128 | + updateObj.setUpdateTime(new Date()); | ||
| 129 | + updateObj.setSessionTimeout(addTime(Duration.ofMillis(getSessionTimeoutMillis()))); | ||
| 130 | + userSessionMapper.updateById(updateObj); | ||
| 131 | + } | ||
| 132 | + | ||
| 133 | + @Override | ||
| 134 | + public void deleteUserSession(String sessionId) { | ||
| 135 | + // 删除 Redis 缓存 | ||
| 136 | + loginUserCoreRedisDAO.delete(sessionId); | ||
| 137 | + // 删除 DB 记录 | ||
| 138 | + userSessionMapper.deleteById(sessionId); | ||
| 139 | + } | ||
| 140 | + | ||
| 141 | + @Override | ||
| 142 | + public LoginUser getLoginUser(String sessionId) { | ||
| 143 | + return loginUserCoreRedisDAO.get(sessionId); | ||
| 144 | + } | ||
| 145 | + | ||
| 146 | + @Override | ||
| 147 | + public Long getSessionTimeoutMillis() { | ||
| 148 | + return securityProperties.getSessionTimeout().toMillis(); | ||
| 149 | + } | ||
| 150 | + | ||
| 151 | + /** | ||
| 152 | + * 生成 Session 编号,目前采用 UUID 算法 | ||
| 153 | + * | ||
| 154 | + * @return Session 编号 | ||
| 155 | + */ | ||
| 156 | + private static String generateSessionId() { | ||
| 157 | + return IdUtil.fastSimpleUUID(); | ||
| 158 | + } | ||
| 159 | + | ||
| 96 | } | 160 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.system.service.dept; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.system.service.dept; | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptCreateReqVO; | 3 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptCreateReqVO; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptUpdateReqVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptUpdateReqVO; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | 6 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 7 | 7 | ||
| 8 | import java.util.List; | 8 | import java.util.List; |
| 9 | 9 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java
| @@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqV | @@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqV | ||
| 9 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptUpdateReqVO; | 9 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptUpdateReqVO; |
| 10 | import cn.iocoder.yudao.module.system.convert.dept.DeptConvert; | 10 | import cn.iocoder.yudao.module.system.convert.dept.DeptConvert; |
| 11 | import cn.iocoder.yudao.module.system.dal.mysql.dept.SysDeptMapper; | 11 | import cn.iocoder.yudao.module.system.dal.mysql.dept.SysDeptMapper; |
| 12 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | 12 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 13 | import cn.iocoder.yudao.module.system.enums.dept.DeptIdEnum; | 13 | import cn.iocoder.yudao.module.system.enums.dept.DeptIdEnum; |
| 14 | import cn.iocoder.yudao.module.system.mq.producer.dept.DeptProducer; | 14 | import cn.iocoder.yudao.module.system.mq.producer.dept.DeptProducer; |
| 15 | import com.google.common.collect.ImmutableMap; | 15 | import com.google.common.collect.ImmutableMap; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/PostService.java
| @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostCreateRe | @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostCreateRe | ||
| 6 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostExportReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostExportReqVO; |
| 7 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostPageReqVO; | 7 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostPageReqVO; |
| 8 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostUpdateReqVO; | 8 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostUpdateReqVO; |
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO; | 9 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysPostDO; |
| 10 | import org.springframework.lang.Nullable; | 10 | import org.springframework.lang.Nullable; |
| 11 | 11 | ||
| 12 | import java.util.Collection; | 12 | import java.util.Collection; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/PostServiceImpl.java
| @@ -8,7 +8,7 @@ import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostPageReqV | @@ -8,7 +8,7 @@ import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostPageReqV | ||
| 8 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostUpdateReqVO; | 8 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostUpdateReqVO; |
| 9 | import cn.iocoder.yudao.module.system.convert.dept.PostConvert; | 9 | import cn.iocoder.yudao.module.system.convert.dept.PostConvert; |
| 10 | import cn.iocoder.yudao.module.system.dal.mysql.dept.SysPostMapper; | 10 | import cn.iocoder.yudao.module.system.dal.mysql.dept.SysPostMapper; |
| 11 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO; | 11 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysPostDO; |
| 12 | import org.springframework.stereotype.Service; | 12 | import org.springframework.stereotype.Service; |
| 13 | import org.springframework.validation.annotation.Validated; | 13 | import org.springframework.validation.annotation.Validated; |
| 14 | 14 |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/dept/SysDeptCoreService.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/SysDeptCoreService.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.dept; | 1 | +package cn.iocoder.yudao.module.system.service.dept; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 5 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | 5 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 6 | 6 | ||
| 7 | import java.util.Collection; | 7 | import java.util.Collection; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/dept/SysPostCoreService.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/SysPostCoreService.java
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/dept/impl/SysDeptCoreServiceImpl.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/impl/SysDeptCoreServiceImpl.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.dept.impl; | 1 | +package cn.iocoder.yudao.module.system.service.dept.impl; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.dept.SysDeptCoreMapper; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService; | 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 5 | +import cn.iocoder.yudao.module.system.dal.mysql.dept.SysDeptCoreMapper; | ||
| 6 | +import cn.iocoder.yudao.module.system.service.dept.SysDeptCoreService; | ||
| 7 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 7 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 8 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | 8 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 9 | import lombok.extern.slf4j.Slf4j; | 9 | import lombok.extern.slf4j.Slf4j; |
| 10 | import org.springframework.stereotype.Service; | 10 | import org.springframework.stereotype.Service; |
| 11 | -import org.springframework.validation.annotation.Validated; | ||
| 12 | 11 | ||
| 13 | import javax.annotation.Resource; | 12 | import javax.annotation.Resource; |
| 14 | import java.util.Collection; | 13 | import java.util.Collection; |
| 15 | import java.util.List; | 14 | import java.util.List; |
| 16 | import java.util.Map; | 15 | import java.util.Map; |
| 17 | 16 | ||
| 18 | -import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.DEPT_NOT_ENABLE; | ||
| 19 | -import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.DEPT_NOT_FOUND; | 17 | +import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.DEPT_NOT_ENABLE; |
| 18 | +import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.DEPT_NOT_FOUND; | ||
| 20 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 19 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 21 | 20 | ||
| 22 | /** | 21 | /** |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/dept/impl/SysPostCoreServiceImpl.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dept/impl/SysPostCoreServiceImpl.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.dept.impl; | 1 | +package cn.iocoder.yudao.module.system.service.dept.impl; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.dept.SysPostCoreMapper; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysPostCoreService; | 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysPostDO; |
| 5 | +import cn.iocoder.yudao.module.system.dal.mysql.dept.SysPostCoreMapper; | ||
| 6 | +import cn.iocoder.yudao.module.system.service.dept.SysPostCoreService; | ||
| 7 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 7 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 8 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | 8 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 9 | import org.springframework.stereotype.Service; | 9 | import org.springframework.stereotype.Service; |
| @@ -13,8 +13,8 @@ import java.util.Collection; | @@ -13,8 +13,8 @@ import java.util.Collection; | ||
| 13 | import java.util.List; | 13 | import java.util.List; |
| 14 | import java.util.Map; | 14 | import java.util.Map; |
| 15 | 15 | ||
| 16 | -import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.POST_NOT_ENABLE; | ||
| 17 | -import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.POST_NOT_FOUND; | 16 | +import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.POST_NOT_ENABLE; |
| 17 | +import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.POST_NOT_FOUND; | ||
| 18 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 18 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 19 | 19 | ||
| 20 | /** | 20 | /** |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictDataService.java
| 1 | package cn.iocoder.yudao.module.system.service.dict; | 1 | package cn.iocoder.yudao.module.system.service.dict; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO; | 3 | +import cn.iocoder.yudao.framework.dict.core.service.DictDataFrameworkService; |
| 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.dict.SysDictDataDO; | ||
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataCreateReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataCreateReqVO; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataExportReqVO; | 7 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataExportReqVO; |
| 7 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO; | 8 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO; |
| 8 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataUpdateReqVO; | 9 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataUpdateReqVO; |
| 9 | 10 | ||
| 11 | +import java.util.Collection; | ||
| 10 | import java.util.List; | 12 | import java.util.List; |
| 11 | 13 | ||
| 12 | /** | 14 | /** |
| @@ -14,7 +16,12 @@ import java.util.List; | @@ -14,7 +16,12 @@ import java.util.List; | ||
| 14 | * | 16 | * |
| 15 | * @author ruoyi | 17 | * @author ruoyi |
| 16 | */ | 18 | */ |
| 17 | -public interface DictDataService { | 19 | +public interface DictDataService extends DictDataFrameworkService { |
| 20 | + | ||
| 21 | + /** | ||
| 22 | + * 初始化字典数据的本地缓存 | ||
| 23 | + */ | ||
| 24 | + void initLocalCache(); | ||
| 18 | 25 | ||
| 19 | /** | 26 | /** |
| 20 | * 创建字典数据 | 27 | * 创建字典数据 |
| @@ -77,4 +84,14 @@ public interface DictDataService { | @@ -77,4 +84,14 @@ public interface DictDataService { | ||
| 77 | */ | 84 | */ |
| 78 | int countByDictType(String dictType); | 85 | int countByDictType(String dictType); |
| 79 | 86 | ||
| 87 | + /** | ||
| 88 | + * 校验字典数据们是否有效。如下情况,视为无效: | ||
| 89 | + * 1. 字典数据不存在 | ||
| 90 | + * 2. 字典数据被禁用 | ||
| 91 | + * | ||
| 92 | + * @param dictType 字典类型 | ||
| 93 | + * @param values 字典数据值的数组 | ||
| 94 | + */ | ||
| 95 | + void validDictDatas(String dictType, Collection<String> values); | ||
| 96 | + | ||
| 80 | } | 97 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictDataServiceImpl.java
| 1 | package cn.iocoder.yudao.module.system.service.dict; | 1 | package cn.iocoder.yudao.module.system.service.dict; |
| 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; | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataCreateReqVO; | 8 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataCreateReqVO; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataExportReqVO; | 9 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataExportReqVO; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO; | 10 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataUpdateReqVO; | 11 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataUpdateReqVO; |
| 7 | import cn.iocoder.yudao.module.system.convert.dict.DictDataConvert; | 12 | import cn.iocoder.yudao.module.system.convert.dict.DictDataConvert; |
| 13 | +import cn.iocoder.yudao.module.system.convert.dict.SysDictDataCoreConvert; | ||
| 8 | import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO; | 14 | import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO; |
| 15 | +import cn.iocoder.yudao.module.system.dal.dataobject.dict.SysDictDataDO; | ||
| 9 | import cn.iocoder.yudao.module.system.dal.mysql.dict.SysDictDataMapper; | 16 | import cn.iocoder.yudao.module.system.dal.mysql.dict.SysDictDataMapper; |
| 10 | import cn.iocoder.yudao.module.system.mq.producer.dict.DictDataProducer; | 17 | import cn.iocoder.yudao.module.system.mq.producer.dict.DictDataProducer; |
| 11 | -import cn.iocoder.yudao.module.system.service.dict.DictDataService; | ||
| 12 | -import cn.iocoder.yudao.module.system.service.dict.DictTypeService; | ||
| 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; | ||
| 16 | import com.google.common.annotations.VisibleForTesting; | 18 | import com.google.common.annotations.VisibleForTesting; |
| 19 | +import com.google.common.collect.ImmutableMap; | ||
| 20 | +import com.google.common.collect.ImmutableTable; | ||
| 17 | import lombok.extern.slf4j.Slf4j; | 21 | import lombok.extern.slf4j.Slf4j; |
| 22 | +import org.springframework.scheduling.annotation.Scheduled; | ||
| 18 | import org.springframework.stereotype.Service; | 23 | import org.springframework.stereotype.Service; |
| 19 | 24 | ||
| 25 | +import javax.annotation.PostConstruct; | ||
| 20 | import javax.annotation.Resource; | 26 | import javax.annotation.Resource; |
| 21 | -import java.util.*; | 27 | +import java.util.Collection; |
| 28 | +import java.util.Comparator; | ||
| 29 | +import java.util.Date; | ||
| 30 | +import java.util.List; | ||
| 22 | 31 | ||
| 23 | -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; | ||
| 24 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 32 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 33 | +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; | ||
| 25 | 34 | ||
| 26 | /** | 35 | /** |
| 27 | * 字典数据 Service 实现类 | 36 | * 字典数据 Service 实现类 |
| @@ -39,6 +48,12 @@ public class DictDataServiceImpl implements DictDataService { | @@ -39,6 +48,12 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 39 | .comparing(SysDictDataDO::getDictType) | 48 | .comparing(SysDictDataDO::getDictType) |
| 40 | .thenComparingInt(SysDictDataDO::getSort); | 49 | .thenComparingInt(SysDictDataDO::getSort); |
| 41 | 50 | ||
| 51 | + /** | ||
| 52 | + * 定时执行 {@link #schedulePeriodicRefresh()} 的周期 | ||
| 53 | + * 因为已经通过 Redis Pub/Sub 机制,所以频率不需要高 | ||
| 54 | + */ | ||
| 55 | + private static final long SCHEDULER_PERIOD = 5 * 60 * 1000L; | ||
| 56 | + | ||
| 42 | @Resource | 57 | @Resource |
| 43 | private DictTypeService dictTypeService; | 58 | private DictTypeService dictTypeService; |
| 44 | 59 | ||
| @@ -49,6 +64,48 @@ public class DictDataServiceImpl implements DictDataService { | @@ -49,6 +64,48 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 49 | private DictDataProducer dictDataProducer; | 64 | private DictDataProducer dictDataProducer; |
| 50 | 65 | ||
| 51 | /** | 66 | /** |
| 67 | + * 字典数据缓存,第二个 key 使用 label | ||
| 68 | + * | ||
| 69 | + * key1:字典类型 dictType | ||
| 70 | + * key2:字典标签 label | ||
| 71 | + */ | ||
| 72 | + private ImmutableTable<String, String, SysDictDataDO> labelDictDataCache; | ||
| 73 | + /** | ||
| 74 | + * 字典数据缓存,第二个 key 使用 value | ||
| 75 | + * | ||
| 76 | + * key1:字典类型 dictType | ||
| 77 | + * key2:字典值 value | ||
| 78 | + */ | ||
| 79 | + private ImmutableTable<String, String, SysDictDataDO> valueDictDataCache; | ||
| 80 | + /** | ||
| 81 | + * 缓存字典数据的最大更新时间,用于后续的增量轮询,判断是否有更新 | ||
| 82 | + */ | ||
| 83 | + private volatile Date maxUpdateTime; | ||
| 84 | + | ||
| 85 | + @Override | ||
| 86 | + @PostConstruct | ||
| 87 | + public synchronized void initLocalCache() { | ||
| 88 | + // 获取字典数据列表,如果有更新 | ||
| 89 | + List<SysDictDataDO> dataList = loadDictDataIfUpdate(maxUpdateTime); | ||
| 90 | + if (CollUtil.isEmpty(dataList)) { | ||
| 91 | + return; | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + // 构建缓存 | ||
| 95 | + ImmutableTable.Builder<String, String, SysDictDataDO> labelDictDataBuilder = ImmutableTable.builder(); | ||
| 96 | + ImmutableTable.Builder<String, String, SysDictDataDO> valueDictDataBuilder = ImmutableTable.builder(); | ||
| 97 | + dataList.forEach(dictData -> { | ||
| 98 | + labelDictDataBuilder.put(dictData.getDictType(), dictData.getLabel(), dictData); | ||
| 99 | + valueDictDataBuilder.put(dictData.getDictType(), dictData.getValue(), dictData); | ||
| 100 | + }); | ||
| 101 | + labelDictDataCache = labelDictDataBuilder.build(); | ||
| 102 | + valueDictDataCache = valueDictDataBuilder.build(); | ||
| 103 | + assert dataList.size() > 0; // 断言,避免告警 | ||
| 104 | + maxUpdateTime = dataList.stream().max(Comparator.comparing(BaseDO::getUpdateTime)).get().getUpdateTime(); | ||
| 105 | + log.info("[initLocalCache][缓存字典数据,数量为:{}]", dataList.size()); | ||
| 106 | + } | ||
| 107 | + | ||
| 108 | + /** | ||
| 52 | * 如果字典数据发生变化,从数据库中获取最新的全量字典数据。 | 109 | * 如果字典数据发生变化,从数据库中获取最新的全量字典数据。 |
| 53 | * 如果未发生变化,则返回空 | 110 | * 如果未发生变化,则返回空 |
| 54 | * | 111 | * |
| @@ -69,6 +126,11 @@ public class DictDataServiceImpl implements DictDataService { | @@ -69,6 +126,11 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 69 | return dictDataMapper.selectList(); | 126 | return dictDataMapper.selectList(); |
| 70 | } | 127 | } |
| 71 | 128 | ||
| 129 | + @Scheduled(fixedDelay = SCHEDULER_PERIOD, initialDelay = SCHEDULER_PERIOD) | ||
| 130 | + public void schedulePeriodicRefresh() { | ||
| 131 | + initLocalCache(); | ||
| 132 | + } | ||
| 133 | + | ||
| 72 | @Override | 134 | @Override |
| 73 | public List<SysDictDataDO> getDictDatas() { | 135 | public List<SysDictDataDO> getDictDatas() { |
| 74 | List<SysDictDataDO> list = dictDataMapper.selectList(); | 136 | List<SysDictDataDO> list = dictDataMapper.selectList(); |
| @@ -94,12 +156,29 @@ public class DictDataServiceImpl implements DictDataService { | @@ -94,12 +156,29 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 94 | } | 156 | } |
| 95 | 157 | ||
| 96 | @Override | 158 | @Override |
| 159 | + public DictDataRespDTO getDictDataFromCache(String type, String value) { | ||
| 160 | + return SysDictDataCoreConvert.INSTANCE.convert02(valueDictDataCache.get(type, value)); | ||
| 161 | + } | ||
| 162 | + | ||
| 163 | + @Override | ||
| 164 | + public DictDataRespDTO parseDictDataFromCache(String type, String label) { | ||
| 165 | + return SysDictDataCoreConvert.INSTANCE.convert02(labelDictDataCache.get(type, label)); | ||
| 166 | + } | ||
| 167 | + | ||
| 168 | + @Override | ||
| 169 | + public List<DictDataRespDTO> listDictDatasFromCache(String type) { | ||
| 170 | + return SysDictDataCoreConvert.INSTANCE.convertList03(labelDictDataCache.row(type).values()); | ||
| 171 | + } | ||
| 172 | + | ||
| 173 | + @Override | ||
| 97 | public Long createDictData(DictDataCreateReqVO reqVO) { | 174 | public Long createDictData(DictDataCreateReqVO reqVO) { |
| 98 | // 校验正确性 | 175 | // 校验正确性 |
| 99 | - this.checkCreateOrUpdate(null, reqVO.getValue(), reqVO.getDictType()); | 176 | + checkCreateOrUpdate(null, reqVO.getValue(), reqVO.getDictType()); |
| 177 | + | ||
| 100 | // 插入字典类型 | 178 | // 插入字典类型 |
| 101 | SysDictDataDO dictData = DictDataConvert.INSTANCE.convert(reqVO); | 179 | SysDictDataDO dictData = DictDataConvert.INSTANCE.convert(reqVO); |
| 102 | dictDataMapper.insert(dictData); | 180 | dictDataMapper.insert(dictData); |
| 181 | + | ||
| 103 | // 发送刷新消息 | 182 | // 发送刷新消息 |
| 104 | dictDataProducer.sendDictDataRefreshMessage(); | 183 | dictDataProducer.sendDictDataRefreshMessage(); |
| 105 | return dictData.getId(); | 184 | return dictData.getId(); |
| @@ -108,10 +187,12 @@ public class DictDataServiceImpl implements DictDataService { | @@ -108,10 +187,12 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 108 | @Override | 187 | @Override |
| 109 | public void updateDictData(DictDataUpdateReqVO reqVO) { | 188 | public void updateDictData(DictDataUpdateReqVO reqVO) { |
| 110 | // 校验正确性 | 189 | // 校验正确性 |
| 111 | - this.checkCreateOrUpdate(reqVO.getId(), reqVO.getValue(), reqVO.getDictType()); | 190 | + checkCreateOrUpdate(reqVO.getId(), reqVO.getValue(), reqVO.getDictType()); |
| 191 | + | ||
| 112 | // 更新字典类型 | 192 | // 更新字典类型 |
| 113 | SysDictDataDO updateObj = DictDataConvert.INSTANCE.convert(reqVO); | 193 | SysDictDataDO updateObj = DictDataConvert.INSTANCE.convert(reqVO); |
| 114 | dictDataMapper.updateById(updateObj); | 194 | dictDataMapper.updateById(updateObj); |
| 195 | + | ||
| 115 | // 发送刷新消息 | 196 | // 发送刷新消息 |
| 116 | dictDataProducer.sendDictDataRefreshMessage(); | 197 | dictDataProducer.sendDictDataRefreshMessage(); |
| 117 | } | 198 | } |
| @@ -119,9 +200,11 @@ public class DictDataServiceImpl implements DictDataService { | @@ -119,9 +200,11 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 119 | @Override | 200 | @Override |
| 120 | public void deleteDictData(Long id) { | 201 | public void deleteDictData(Long id) { |
| 121 | // 校验是否存在 | 202 | // 校验是否存在 |
| 122 | - this.checkDictDataExists(id); | 203 | + checkDictDataExists(id); |
| 204 | + | ||
| 123 | // 删除字典数据 | 205 | // 删除字典数据 |
| 124 | dictDataMapper.deleteById(id); | 206 | dictDataMapper.deleteById(id); |
| 207 | + | ||
| 125 | // 发送刷新消息 | 208 | // 发送刷新消息 |
| 126 | dictDataProducer.sendDictDataRefreshMessage(); | 209 | dictDataProducer.sendDictDataRefreshMessage(); |
| 127 | } | 210 | } |
| @@ -178,4 +261,22 @@ public class DictDataServiceImpl implements DictDataService { | @@ -178,4 +261,22 @@ public class DictDataServiceImpl implements DictDataService { | ||
| 178 | } | 261 | } |
| 179 | } | 262 | } |
| 180 | 263 | ||
| 264 | + @Override | ||
| 265 | + public void validDictDatas(String dictType, Collection<String> values) { | ||
| 266 | + if (CollUtil.isEmpty(values)) { | ||
| 267 | + return; | ||
| 268 | + } | ||
| 269 | + ImmutableMap<String, SysDictDataDO> dictDataMap = valueDictDataCache.row(dictType); | ||
| 270 | + // 校验 | ||
| 271 | + values.forEach(value -> { | ||
| 272 | + SysDictDataDO dictData = dictDataMap.get(value); | ||
| 273 | + if (dictData == null) { | ||
| 274 | + throw exception(DICT_DATA_NOT_EXISTS); | ||
| 275 | + } | ||
| 276 | + if (!CommonStatusEnum.ENABLE.getStatus().equals(dictData.getStatus())) { | ||
| 277 | + throw exception(DICT_DATA_NOT_ENABLE, dictData.getLabel()); | ||
| 278 | + } | ||
| 279 | + }); | ||
| 280 | + } | ||
| 281 | + | ||
| 181 | } | 282 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictTypeServiceImpl.java
| @@ -54,7 +54,7 @@ public class DictTypeServiceImpl implements DictTypeService { | @@ -54,7 +54,7 @@ public class DictTypeServiceImpl implements DictTypeService { | ||
| 54 | @Override | 54 | @Override |
| 55 | public Long createDictType(DictTypeCreateReqVO reqVO) { | 55 | public Long createDictType(DictTypeCreateReqVO reqVO) { |
| 56 | // 校验正确性 | 56 | // 校验正确性 |
| 57 | - this.checkCreateOrUpdate(null, reqVO.getName(), reqVO.getType()); | 57 | + checkCreateOrUpdate(null, reqVO.getName(), reqVO.getType()); |
| 58 | // 插入字典类型 | 58 | // 插入字典类型 |
| 59 | DictTypeDO dictType = DictTypeConvert.INSTANCE.convert(reqVO); | 59 | DictTypeDO dictType = DictTypeConvert.INSTANCE.convert(reqVO); |
| 60 | dictTypeMapper.insert(dictType); | 60 | dictTypeMapper.insert(dictType); |
| @@ -64,7 +64,7 @@ public class DictTypeServiceImpl implements DictTypeService { | @@ -64,7 +64,7 @@ public class DictTypeServiceImpl implements DictTypeService { | ||
| 64 | @Override | 64 | @Override |
| 65 | public void updateDictType(DictTypeUpdateReqVO reqVO) { | 65 | public void updateDictType(DictTypeUpdateReqVO reqVO) { |
| 66 | // 校验正确性 | 66 | // 校验正确性 |
| 67 | - this.checkCreateOrUpdate(reqVO.getId(), reqVO.getName(), null); | 67 | + checkCreateOrUpdate(reqVO.getId(), reqVO.getName(), null); |
| 68 | // 更新字典类型 | 68 | // 更新字典类型 |
| 69 | DictTypeDO updateObj = DictTypeConvert.INSTANCE.convert(reqVO); | 69 | DictTypeDO updateObj = DictTypeConvert.INSTANCE.convert(reqVO); |
| 70 | dictTypeMapper.updateById(updateObj); | 70 | dictTypeMapper.updateById(updateObj); |
| @@ -73,7 +73,7 @@ public class DictTypeServiceImpl implements DictTypeService { | @@ -73,7 +73,7 @@ public class DictTypeServiceImpl implements DictTypeService { | ||
| 73 | @Override | 73 | @Override |
| 74 | public void deleteDictType(Long id) { | 74 | public void deleteDictType(Long id) { |
| 75 | // 校验是否存在 | 75 | // 校验是否存在 |
| 76 | - DictTypeDO dictType = this.checkDictTypeExists(id); | 76 | + DictTypeDO dictType = checkDictTypeExists(id); |
| 77 | // 校验是否有字典数据 | 77 | // 校验是否有字典数据 |
| 78 | if (dictDataService.countByDictType(dictType.getType()) > 0) { | 78 | if (dictDataService.countByDictType(dictType.getType()) > 0) { |
| 79 | throw exception(DICT_TYPE_HAS_CHILDREN); | 79 | throw exception(DICT_TYPE_HAS_CHILDREN); |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/logger/LoginLogService.java
| @@ -2,8 +2,9 @@ package cn.iocoder.yudao.module.system.service.logger; | @@ -2,8 +2,9 @@ package cn.iocoder.yudao.module.system.service.logger; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogExportReqVO; | 3 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogExportReqVO; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogPageReqVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogPageReqVO; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO; | 5 | +import cn.iocoder.yudao.module.system.dal.dataobject.logger.SysLoginLogDO; |
| 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | +import cn.iocoder.yudao.module.system.service.logger.dto.LoginLogCreateReqDTO; | ||
| 7 | 8 | ||
| 8 | import java.util.List; | 9 | import java.util.List; |
| 9 | 10 | ||
| @@ -28,4 +29,11 @@ public interface LoginLogService { | @@ -28,4 +29,11 @@ public interface LoginLogService { | ||
| 28 | */ | 29 | */ |
| 29 | List<SysLoginLogDO> getLoginLogList(LoginLogExportReqVO reqVO); | 30 | List<SysLoginLogDO> getLoginLogList(LoginLogExportReqVO reqVO); |
| 30 | 31 | ||
| 32 | + /** | ||
| 33 | + * 创建登录日志 | ||
| 34 | + * | ||
| 35 | + * @param reqDTO 日志信息 | ||
| 36 | + */ | ||
| 37 | + void createLoginLog(LoginLogCreateReqDTO reqDTO); | ||
| 38 | + | ||
| 31 | } | 39 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/logger/LoginLogServiceImpl.java
| @@ -2,9 +2,12 @@ package cn.iocoder.yudao.module.system.service.logger; | @@ -2,9 +2,12 @@ package cn.iocoder.yudao.module.system.service.logger; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogExportReqVO; | 3 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogExportReqVO; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogPageReqVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogPageReqVO; |
| 5 | +import cn.iocoder.yudao.module.system.convert.logger.SysLoginLogCoreConvert; | ||
| 5 | import cn.iocoder.yudao.module.system.dal.mysql.logger.LoginLogMapper; | 6 | import cn.iocoder.yudao.module.system.dal.mysql.logger.LoginLogMapper; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO; | 7 | +import cn.iocoder.yudao.module.system.dal.dataobject.logger.SysLoginLogDO; |
| 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | +import cn.iocoder.yudao.module.system.dal.mysql.logger.SysLoginLogCoreMapper; | ||
| 10 | +import cn.iocoder.yudao.module.system.service.logger.dto.LoginLogCreateReqDTO; | ||
| 8 | import org.springframework.stereotype.Service; | 11 | import org.springframework.stereotype.Service; |
| 9 | 12 | ||
| 10 | import javax.annotation.Resource; | 13 | import javax.annotation.Resource; |
| @@ -29,4 +32,11 @@ public class LoginLogServiceImpl implements LoginLogService { | @@ -29,4 +32,11 @@ public class LoginLogServiceImpl implements LoginLogService { | ||
| 29 | return loginLogMapper.selectList(reqVO); | 32 | return loginLogMapper.selectList(reqVO); |
| 30 | } | 33 | } |
| 31 | 34 | ||
| 35 | + @Override | ||
| 36 | + public void createLoginLog(LoginLogCreateReqDTO reqDTO) { | ||
| 37 | + SysLoginLogDO loginLog = SysLoginLogCoreConvert.INSTANCE.convert(reqDTO); | ||
| 38 | + // 插入 | ||
| 39 | + loginLogMapper.insert(loginLog); | ||
| 40 | + } | ||
| 41 | + | ||
| 32 | } | 42 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/logger/OperateLogServiceImpl.java
| @@ -8,7 +8,7 @@ import cn.iocoder.yudao.module.system.convert.logger.OperateLogConvert; | @@ -8,7 +8,7 @@ import cn.iocoder.yudao.module.system.convert.logger.OperateLogConvert; | ||
| 8 | import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO; | 8 | import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO; |
| 9 | import cn.iocoder.yudao.module.system.dal.mysql.logger.OperateLogMapper; | 9 | import cn.iocoder.yudao.module.system.dal.mysql.logger.OperateLogMapper; |
| 10 | import cn.iocoder.yudao.module.system.service.user.UserService; | 10 | import cn.iocoder.yudao.module.system.service.user.UserService; |
| 11 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | 11 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; |
| 12 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 12 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 13 | import cn.iocoder.yudao.framework.common.util.string.StrUtils; | 13 | import cn.iocoder.yudao.framework.common.util.string.StrUtils; |
| 14 | import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO; | 14 | import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO; |
| @@ -58,7 +58,7 @@ public class OperateLogServiceImpl implements OperateLogService { | @@ -58,7 +58,7 @@ public class OperateLogServiceImpl implements OperateLogService { | ||
| 58 | // 处理基于用户昵称的查询 | 58 | // 处理基于用户昵称的查询 |
| 59 | Collection<Long> userIds = null; | 59 | Collection<Long> userIds = null; |
| 60 | if (StrUtil.isNotEmpty(reqVO.getUserNickname())) { | 60 | if (StrUtil.isNotEmpty(reqVO.getUserNickname())) { |
| 61 | - userIds = convertSet(userService.getUsersByNickname(reqVO.getUserNickname()), SysUserDO::getId); | 61 | + userIds = convertSet(userService.getUsersByNickname(reqVO.getUserNickname()), UserDO::getId); |
| 62 | if (CollUtil.isEmpty(userIds)) { | 62 | if (CollUtil.isEmpty(userIds)) { |
| 63 | return PageResult.empty(); | 63 | return PageResult.empty(); |
| 64 | } | 64 | } |
| @@ -72,7 +72,7 @@ public class OperateLogServiceImpl implements OperateLogService { | @@ -72,7 +72,7 @@ public class OperateLogServiceImpl implements OperateLogService { | ||
| 72 | // 处理基于用户昵称的查询 | 72 | // 处理基于用户昵称的查询 |
| 73 | Collection<Long> userIds = null; | 73 | Collection<Long> userIds = null; |
| 74 | if (StrUtil.isNotEmpty(reqVO.getUserNickname())) { | 74 | if (StrUtil.isNotEmpty(reqVO.getUserNickname())) { |
| 75 | - userIds = convertSet(userService.getUsersByNickname(reqVO.getUserNickname()), SysUserDO::getId); | 75 | + userIds = convertSet(userService.getUsersByNickname(reqVO.getUserNickname()), UserDO::getId); |
| 76 | if (CollUtil.isEmpty(userIds)) { | 76 | if (CollUtil.isEmpty(userIds)) { |
| 77 | return Collections.emptyList(); | 77 | return Collections.emptyList(); |
| 78 | } | 78 | } |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/logger/dto/SysLoginLogCreateReqDTO.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/logger/dto/LoginLogCreateReqDTO.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.logger.dto; | 1 | +package cn.iocoder.yudao.module.system.service.logger.dto; |
| 2 | 2 | ||
| 3 | import lombok.Data; | 3 | import lombok.Data; |
| 4 | 4 | ||
| @@ -13,7 +13,7 @@ import javax.validation.constraints.Size; | @@ -13,7 +13,7 @@ import javax.validation.constraints.Size; | ||
| 13 | * @author 芋道源码 | 13 | * @author 芋道源码 |
| 14 | */ | 14 | */ |
| 15 | @Data | 15 | @Data |
| 16 | -public class SysLoginLogCreateReqDTO { | 16 | +public class LoginLogCreateReqDTO { |
| 17 | 17 | ||
| 18 | /** | 18 | /** |
| 19 | * 日志类型 | 19 | * 日志类型 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceImpl.java
| @@ -3,11 +3,11 @@ package cn.iocoder.yudao.module.system.service.permission; | @@ -3,11 +3,11 @@ package cn.iocoder.yudao.module.system.service.permission; | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | import cn.hutool.core.collection.CollectionUtil; | 4 | import cn.hutool.core.collection.CollectionUtil; |
| 5 | import cn.hutool.core.util.ArrayUtil; | 5 | import cn.hutool.core.util.ArrayUtil; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | 6 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 7 | import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO; | 7 | import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO; |
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO; | 8 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysRoleDO; |
| 9 | import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleMenuDO; | 9 | import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleMenuDO; |
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysUserRoleDO; | 10 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysUserRoleDO; |
| 11 | import cn.iocoder.yudao.module.system.dal.mysql.permission.SysRoleMenuMapper; | 11 | import cn.iocoder.yudao.module.system.dal.mysql.permission.SysRoleMenuMapper; |
| 12 | import cn.iocoder.yudao.module.system.dal.mysql.permission.SysUserRoleMapper; | 12 | import cn.iocoder.yudao.module.system.dal.mysql.permission.SysUserRoleMapper; |
| 13 | import cn.iocoder.yudao.module.system.mq.producer.permission.PermissionProducer; | 13 | import cn.iocoder.yudao.module.system.mq.producer.permission.PermissionProducer; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleService.java
| @@ -5,7 +5,7 @@ import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleCr | @@ -5,7 +5,7 @@ import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleCr | ||
| 5 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleExportReqVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleExportReqVO; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePageReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePageReqVO; |
| 7 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleUpdateReqVO; | 7 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleUpdateReqVO; |
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO; | 8 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysRoleDO; |
| 9 | import org.springframework.lang.Nullable; | 9 | import org.springframework.lang.Nullable; |
| 10 | 10 | ||
| 11 | import java.util.Collection; | 11 | import java.util.Collection; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java
| @@ -11,7 +11,7 @@ import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePa | @@ -11,7 +11,7 @@ import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePa | ||
| 11 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleUpdateReqVO; | 11 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleUpdateReqVO; |
| 12 | import cn.iocoder.yudao.module.system.convert.permission.RoleConvert; | 12 | import cn.iocoder.yudao.module.system.convert.permission.RoleConvert; |
| 13 | import cn.iocoder.yudao.module.system.dal.mysql.permission.SysRoleMapper; | 13 | import cn.iocoder.yudao.module.system.dal.mysql.permission.SysRoleMapper; |
| 14 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO; | 14 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysRoleDO; |
| 15 | import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum; | 15 | import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum; |
| 16 | import cn.iocoder.yudao.module.system.enums.permission.RoleTypeEnum; | 16 | import cn.iocoder.yudao.module.system.enums.permission.RoleTypeEnum; |
| 17 | import cn.iocoder.yudao.module.system.mq.producer.permission.RoleProducer; | 17 | import cn.iocoder.yudao.module.system.mq.producer.permission.RoleProducer; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/permission/SysPermissionCoreService.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/SysPermissionCoreService.java
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/permission/SysRoleCoreService.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/SysRoleCoreService.java
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/permission/impl/SysPermissionCoreServiceImpl.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/impl/SysPermissionCoreServiceImpl.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.permission.impl; | 1 | +package cn.iocoder.yudao.module.system.service.permission.impl; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysUserRoleDO; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.permission.SysUserRoleCoreMapper; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.service.permission.SysPermissionCoreService; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysUserRoleDO; |
| 4 | +import cn.iocoder.yudao.module.system.dal.mysql.permission.SysUserRoleCoreMapper; | ||
| 5 | +import cn.iocoder.yudao.module.system.service.permission.SysPermissionCoreService; | ||
| 6 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | 6 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 7 | import org.springframework.stereotype.Service; | 7 | import org.springframework.stereotype.Service; |
| 8 | 8 |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/permission/impl/SysRoleCoreServiceImpl.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/permission/impl/SysRoleCoreServiceImpl.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.permission.impl; | 1 | +package cn.iocoder.yudao.module.system.service.permission.impl; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.permission.SysRoleCoreMapper; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.service.permission.SysRoleCoreService; | 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysRoleDO; |
| 5 | +import cn.iocoder.yudao.module.system.dal.mysql.permission.SysRoleCoreMapper; | ||
| 6 | +import cn.iocoder.yudao.module.system.service.permission.SysRoleCoreService; | ||
| 7 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 7 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 8 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | 8 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 9 | import org.springframework.stereotype.Service; | 9 | import org.springframework.stereotype.Service; |
| @@ -13,8 +13,8 @@ import java.util.Collection; | @@ -13,8 +13,8 @@ import java.util.Collection; | ||
| 13 | import java.util.List; | 13 | import java.util.List; |
| 14 | import java.util.Map; | 14 | import java.util.Map; |
| 15 | 15 | ||
| 16 | -import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.ROLE_IS_DISABLE; | ||
| 17 | -import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.ROLE_NOT_EXISTS; | 16 | +import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.ROLE_IS_DISABLE; |
| 17 | +import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.ROLE_NOT_EXISTS; | ||
| 18 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 18 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 19 | 19 | ||
| 20 | /** | 20 | /** |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsChannelService.java
| 1 | package cn.iocoder.yudao.module.system.service.sms; | 1 | package cn.iocoder.yudao.module.system.service.sms; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsChannelDO; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelCreateReqVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelCreateReqVO; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelPageReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelPageReqVO; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsChannelServiceImpl.java
| @@ -7,7 +7,7 @@ import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannel | @@ -7,7 +7,7 @@ import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannel | ||
| 7 | import cn.iocoder.yudao.module.system.convert.sms.SmsChannelConvert; | 7 | import cn.iocoder.yudao.module.system.convert.sms.SmsChannelConvert; |
| 8 | import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsChannelMapper; | 8 | import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsChannelMapper; |
| 9 | import cn.iocoder.yudao.module.system.mq.producer.sms.SmsProducer; | 9 | import cn.iocoder.yudao.module.system.mq.producer.sms.SmsProducer; |
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO; | 10 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsChannelDO; |
| 11 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 11 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 12 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 12 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 13 | import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; | 13 | import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsLogService.java
| @@ -2,10 +2,13 @@ package cn.iocoder.yudao.module.system.service.sms; | @@ -2,10 +2,13 @@ package cn.iocoder.yudao.module.system.service.sms; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO; | 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogPageReqVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogPageReqVO; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO; | 5 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsLogDO; |
| 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 7 | 8 | ||
| 9 | +import java.util.Date; | ||
| 8 | import java.util.List; | 10 | import java.util.List; |
| 11 | +import java.util.Map; | ||
| 9 | 12 | ||
| 10 | /** | 13 | /** |
| 11 | * 短信日志 Service 接口 | 14 | * 短信日志 Service 接口 |
| @@ -16,6 +19,46 @@ import java.util.List; | @@ -16,6 +19,46 @@ import java.util.List; | ||
| 16 | public interface SmsLogService { | 19 | public interface SmsLogService { |
| 17 | 20 | ||
| 18 | /** | 21 | /** |
| 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 | + /** | ||
| 19 | * 获得短信日志分页 | 62 | * 获得短信日志分页 |
| 20 | * | 63 | * |
| 21 | * @param pageReqVO 分页查询 | 64 | * @param pageReqVO 分页查询 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsLogServiceImpl.java
| 1 | package cn.iocoder.yudao.module.system.service.sms; | 1 | package cn.iocoder.yudao.module.system.service.sms; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogPageReqVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogPageReqVO; |
| 6 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 5 | import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsLogMapper; | 7 | import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsLogMapper; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO; | 8 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsLogDO; |
| 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 9 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 10 | +import cn.iocoder.yudao.module.system.enums.sms.SysSmsReceiveStatusEnum; | ||
| 11 | +import cn.iocoder.yudao.module.system.enums.sms.SysSmsSendStatusEnum; | ||
| 8 | import lombok.extern.slf4j.Slf4j; | 12 | import lombok.extern.slf4j.Slf4j; |
| 9 | import org.springframework.stereotype.Service; | 13 | import org.springframework.stereotype.Service; |
| 10 | 14 | ||
| 11 | import javax.annotation.Resource; | 15 | import javax.annotation.Resource; |
| 16 | +import java.util.Date; | ||
| 12 | import java.util.List; | 17 | import java.util.List; |
| 18 | +import java.util.Map; | ||
| 19 | +import java.util.Objects; | ||
| 13 | 20 | ||
| 14 | /** | 21 | /** |
| 15 | * 短信日志 Service 实现类 | 22 | * 短信日志 Service 实现类 |
| 16 | * | 23 | * |
| 17 | * @author zzf | 24 | * @author zzf |
| 18 | - * @date 2021/1/25 9:25 | ||
| 19 | */ | 25 | */ |
| 20 | @Slf4j | 26 | @Slf4j |
| 21 | @Service | 27 | @Service |
| @@ -25,6 +31,50 @@ public class SmsLogServiceImpl implements SmsLogService { | @@ -25,6 +31,50 @@ public class SmsLogServiceImpl implements SmsLogService { | ||
| 25 | private SysSmsLogMapper smsLogMapper; | 31 | private SysSmsLogMapper smsLogMapper; |
| 26 | 32 | ||
| 27 | @Override | 33 | @Override |
| 34 | + public Long createSmsLog(String mobile, Long userId, Integer userType, Boolean isSend, | ||
| 35 | + SysSmsTemplateDO template, String templateContent, Map<String, Object> templateParams) { | ||
| 36 | + SysSmsLogDO.SysSmsLogDOBuilder logBuilder = SysSmsLogDO.builder(); | ||
| 37 | + // 根据是否要发送,设置状态 | ||
| 38 | + logBuilder.sendStatus(Objects.equals(isSend, true) ? SysSmsSendStatusEnum.INIT.getStatus() | ||
| 39 | + : SysSmsSendStatusEnum.IGNORE.getStatus()); | ||
| 40 | + // 设置手机相关字段 | ||
| 41 | + logBuilder.mobile(mobile).userId(userId).userType(userType); | ||
| 42 | + // 设置模板相关字段 | ||
| 43 | + logBuilder.templateId(template.getId()).templateCode(template.getCode()).templateType(template.getType()); | ||
| 44 | + logBuilder.templateContent(templateContent).templateParams(templateParams).apiTemplateId(template.getApiTemplateId()); | ||
| 45 | + // 设置渠道相关字段 | ||
| 46 | + logBuilder.channelId(template.getChannelId()).channelCode(template.getChannelCode()); | ||
| 47 | + // 设置接收相关字段 | ||
| 48 | + logBuilder.receiveStatus(SysSmsReceiveStatusEnum.INIT.getStatus()); | ||
| 49 | + | ||
| 50 | + // 插入数据库 | ||
| 51 | + SysSmsLogDO logDO = logBuilder.build(); | ||
| 52 | + smsLogMapper.insert(logDO); | ||
| 53 | + return logDO.getId(); | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + @Override | ||
| 57 | + public void updateSmsSendResult(Long id, Integer sendCode, String sendMsg, | ||
| 58 | + String apiSendCode, String apiSendMsg, | ||
| 59 | + String apiRequestId, String apiSerialNo) { | ||
| 60 | + SysSmsSendStatusEnum sendStatus = CommonResult.isSuccess(sendCode) ? | ||
| 61 | + SysSmsSendStatusEnum.SUCCESS : SysSmsSendStatusEnum.FAILURE; | ||
| 62 | + smsLogMapper.updateById(SysSmsLogDO.builder().id(id).sendStatus(sendStatus.getStatus()) | ||
| 63 | + .sendTime(new Date()).sendCode(sendCode).sendMsg(sendMsg) | ||
| 64 | + .apiSendCode(apiSendCode).apiSendMsg(apiSendMsg) | ||
| 65 | + .apiRequestId(apiRequestId).apiSerialNo(apiSerialNo).build()); | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + @Override | ||
| 69 | + public void updateSmsReceiveResult(Long id, Boolean success, Date receiveTime, | ||
| 70 | + String apiReceiveCode, String apiReceiveMsg) { | ||
| 71 | + SysSmsReceiveStatusEnum receiveStatus = Objects.equals(success, true) ? | ||
| 72 | + SysSmsReceiveStatusEnum.SUCCESS : SysSmsReceiveStatusEnum.FAILURE; | ||
| 73 | + smsLogMapper.updateById(SysSmsLogDO.builder().id(id).receiveStatus(receiveStatus.getStatus()) | ||
| 74 | + .receiveTime(receiveTime).apiReceiveCode(apiReceiveCode).apiReceiveMsg(apiReceiveMsg).build()); | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + @Override | ||
| 28 | public PageResult<SysSmsLogDO> getSmsLogPage(SmsLogPageReqVO pageReqVO) { | 78 | public PageResult<SysSmsLogDO> getSmsLogPage(SmsLogPageReqVO pageReqVO) { |
| 29 | return smsLogMapper.selectPage(pageReqVO); | 79 | return smsLogMapper.selectPage(pageReqVO); |
| 30 | } | 80 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsTemplateService.java
| @@ -4,12 +4,13 @@ import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTempla | @@ -4,12 +4,13 @@ import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTempla | ||
| 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateExportReqVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateExportReqVO; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplatePageReqVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplatePageReqVO; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateUpdateReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateUpdateReqVO; |
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | 7 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsTemplateDO; |
| 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | 9 | ||
| 10 | import javax.validation.Valid; | 10 | import javax.validation.Valid; |
| 11 | import java.util.Collection; | 11 | import java.util.Collection; |
| 12 | import java.util.List; | 12 | import java.util.List; |
| 13 | +import java.util.Map; | ||
| 13 | 14 | ||
| 14 | /** | 15 | /** |
| 15 | * 短信模板 Service 接口 | 16 | * 短信模板 Service 接口 |
| @@ -20,6 +21,28 @@ import java.util.List; | @@ -20,6 +21,28 @@ import java.util.List; | ||
| 20 | public interface SmsTemplateService { | 21 | public interface SmsTemplateService { |
| 21 | 22 | ||
| 22 | /** | 23 | /** |
| 24 | + * 初始化短信模板的本地缓存 | ||
| 25 | + */ | ||
| 26 | + void initLocalCache(); | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * 获得短信模板,从缓存中 | ||
| 30 | + * | ||
| 31 | + * @param code 模板编码 | ||
| 32 | + * @return 短信模板 | ||
| 33 | + */ | ||
| 34 | + SysSmsTemplateDO getSmsTemplateByCodeFromCache(String code); | ||
| 35 | + | ||
| 36 | + /** | ||
| 37 | + * 格式化短信内容 | ||
| 38 | + * | ||
| 39 | + * @param content 短信模板的内容 | ||
| 40 | + * @param params 内容的参数 | ||
| 41 | + * @return 格式化后的内容 | ||
| 42 | + */ | ||
| 43 | + String formatSmsTemplateContent(String content, Map<String, Object> params); | ||
| 44 | + | ||
| 45 | + /** | ||
| 23 | * 获得短信模板 | 46 | * 获得短信模板 |
| 24 | * | 47 | * |
| 25 | * @param code 模板编码 | 48 | * @param code 模板编码 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsTemplateServiceImpl.java
| 1 | package cn.iocoder.yudao.module.system.service.sms; | 1 | package cn.iocoder.yudao.module.system.service.sms; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.collection.CollUtil; | ||
| 3 | import cn.hutool.core.util.ReUtil; | 4 | import cn.hutool.core.util.ReUtil; |
| 5 | +import cn.hutool.core.util.StrUtil; | ||
| 6 | +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | ||
| 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateCreateReqVO; | 7 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateCreateReqVO; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateExportReqVO; | 8 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateExportReqVO; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplatePageReqVO; | 9 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplatePageReqVO; |
| @@ -8,8 +11,8 @@ import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTempla | @@ -8,8 +11,8 @@ import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTempla | ||
| 8 | import cn.iocoder.yudao.module.system.convert.sms.SmsTemplateConvert; | 11 | import cn.iocoder.yudao.module.system.convert.sms.SmsTemplateConvert; |
| 9 | import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsTemplateMapper; | 12 | import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsTemplateMapper; |
| 10 | import cn.iocoder.yudao.module.system.mq.producer.sms.SmsProducer; | 13 | import cn.iocoder.yudao.module.system.mq.producer.sms.SmsProducer; |
| 11 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO; | ||
| 12 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | 14 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsChannelDO; |
| 15 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 13 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 16 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 14 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 17 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 15 | import cn.iocoder.yudao.framework.sms.core.client.SmsClient; | 18 | import cn.iocoder.yudao.framework.sms.core.client.SmsClient; |
| @@ -17,14 +20,15 @@ import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; | @@ -17,14 +20,15 @@ import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; | ||
| 17 | import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult; | 20 | import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult; |
| 18 | import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO; | 21 | import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO; |
| 19 | import com.google.common.annotations.VisibleForTesting; | 22 | import com.google.common.annotations.VisibleForTesting; |
| 23 | +import com.google.common.collect.ImmutableMap; | ||
| 20 | import lombok.extern.slf4j.Slf4j; | 24 | import lombok.extern.slf4j.Slf4j; |
| 25 | +import org.springframework.scheduling.annotation.Scheduled; | ||
| 21 | import org.springframework.stereotype.Service; | 26 | import org.springframework.stereotype.Service; |
| 22 | import org.springframework.util.Assert; | 27 | import org.springframework.util.Assert; |
| 23 | 28 | ||
| 29 | +import javax.annotation.PostConstruct; | ||
| 24 | import javax.annotation.Resource; | 30 | import javax.annotation.Resource; |
| 25 | -import java.util.Collection; | ||
| 26 | -import java.util.List; | ||
| 27 | -import java.util.Objects; | 31 | +import java.util.*; |
| 28 | import java.util.regex.Pattern; | 32 | import java.util.regex.Pattern; |
| 29 | 33 | ||
| 30 | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; | 34 | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; |
| @@ -41,6 +45,12 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU | @@ -41,6 +45,12 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU | ||
| 41 | public class SmsTemplateServiceImpl implements SmsTemplateService { | 45 | public class SmsTemplateServiceImpl implements SmsTemplateService { |
| 42 | 46 | ||
| 43 | /** | 47 | /** |
| 48 | + * 定时执行 {@link #schedulePeriodicRefresh()} 的周期 | ||
| 49 | + * 因为已经通过 Redis Pub/Sub 机制,所以频率不需要高 | ||
| 50 | + */ | ||
| 51 | + private static final long SCHEDULER_PERIOD = 5 * 60 * 1000L; | ||
| 52 | + | ||
| 53 | + /** | ||
| 44 | * 正则表达式,匹配 {} 中的变量 | 54 | * 正则表达式,匹配 {} 中的变量 |
| 45 | */ | 55 | */ |
| 46 | private static final Pattern PATTERN_PARAMS = Pattern.compile("\\{(.*?)}"); | 56 | private static final Pattern PATTERN_PARAMS = Pattern.compile("\\{(.*?)}"); |
| @@ -57,6 +67,72 @@ public class SmsTemplateServiceImpl implements SmsTemplateService { | @@ -57,6 +67,72 @@ public class SmsTemplateServiceImpl implements SmsTemplateService { | ||
| 57 | @Resource | 67 | @Resource |
| 58 | private SmsProducer smsProducer; | 68 | private SmsProducer smsProducer; |
| 59 | 69 | ||
| 70 | + /** | ||
| 71 | + * 短信模板缓存 | ||
| 72 | + * key:短信模板编码 {@link SysSmsTemplateDO#getCode()} | ||
| 73 | + * | ||
| 74 | + * 这里声明 volatile 修饰的原因是,每次刷新时,直接修改指向 | ||
| 75 | + */ | ||
| 76 | + private volatile Map<String, SysSmsTemplateDO> smsTemplateCache; | ||
| 77 | + /** | ||
| 78 | + * 缓存短信模板的最大更新时间,用于后续的增量轮询,判断是否有更新 | ||
| 79 | + */ | ||
| 80 | + private volatile Date maxUpdateTime; | ||
| 81 | + | ||
| 82 | + @Override | ||
| 83 | + @PostConstruct | ||
| 84 | + public void initLocalCache() { | ||
| 85 | + // 获取短信模板列表,如果有更新 | ||
| 86 | + List<SysSmsTemplateDO> smsTemplateList = this.loadSmsTemplateIfUpdate(maxUpdateTime); | ||
| 87 | + if (CollUtil.isEmpty(smsTemplateList)) { | ||
| 88 | + return; | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | + // 写入缓存 | ||
| 92 | + ImmutableMap.Builder<String, SysSmsTemplateDO> builder = ImmutableMap.builder(); | ||
| 93 | + smsTemplateList.forEach(sysSmsTemplateDO -> builder.put(sysSmsTemplateDO.getCode(), sysSmsTemplateDO)); | ||
| 94 | + smsTemplateCache = builder.build(); | ||
| 95 | + assert smsTemplateList.size() > 0; // 断言,避免告警 | ||
| 96 | + maxUpdateTime = smsTemplateList.stream().max(Comparator.comparing(BaseDO::getUpdateTime)).get().getUpdateTime(); | ||
| 97 | + log.info("[initLocalCache][初始化 SmsTemplate 数量为 {}]", smsTemplateList.size()); | ||
| 98 | + } | ||
| 99 | + | ||
| 100 | + /** | ||
| 101 | + * 如果短信模板发生变化,从数据库中获取最新的全量短信模板。 | ||
| 102 | + * 如果未发生变化,则返回空 | ||
| 103 | + * | ||
| 104 | + * @param maxUpdateTime 当前短信模板的最大更新时间 | ||
| 105 | + * @return 短信模板列表 | ||
| 106 | + */ | ||
| 107 | + private List<SysSmsTemplateDO> loadSmsTemplateIfUpdate(Date maxUpdateTime) { | ||
| 108 | + // 第一步,判断是否要更新。 | ||
| 109 | + if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据 | ||
| 110 | + log.info("[loadSmsTemplateIfUpdate][首次加载全量短信模板]"); | ||
| 111 | + } else { // 判断数据库中是否有更新的短信模板 | ||
| 112 | + if (smsTemplateMapper.selectExistsByUpdateTimeAfter(maxUpdateTime) == null) { | ||
| 113 | + return null; | ||
| 114 | + } | ||
| 115 | + log.info("[loadSmsTemplateIfUpdate][增量加载全量短信模板]"); | ||
| 116 | + } | ||
| 117 | + // 第二步,如果有更新,则从数据库加载所有短信模板 | ||
| 118 | + return smsTemplateMapper.selectList(); | ||
| 119 | + } | ||
| 120 | + | ||
| 121 | + @Scheduled(fixedDelay = SCHEDULER_PERIOD, initialDelay = SCHEDULER_PERIOD) | ||
| 122 | + public void schedulePeriodicRefresh() { | ||
| 123 | + initLocalCache(); | ||
| 124 | + } | ||
| 125 | + | ||
| 126 | + @Override | ||
| 127 | + public SysSmsTemplateDO getSmsTemplateByCodeFromCache(String code) { | ||
| 128 | + return smsTemplateCache.get(code); | ||
| 129 | + } | ||
| 130 | + | ||
| 131 | + @Override | ||
| 132 | + public String formatSmsTemplateContent(String content, Map<String, Object> params) { | ||
| 133 | + return StrUtil.format(content, params); | ||
| 134 | + } | ||
| 135 | + | ||
| 60 | @Override | 136 | @Override |
| 61 | public SysSmsTemplateDO getSmsTemplateByCode(String code) { | 137 | public SysSmsTemplateDO getSmsTemplateByCode(String code) { |
| 62 | return smsTemplateMapper.selectByCode(code); | 138 | return smsTemplateMapper.selectByCode(code); |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/sms/SysSmsCoreService.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsSendService.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.sms; | 1 | +package cn.iocoder.yudao.module.system.service.sms; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.mq.message.sms.SysSmsSendMessage; | 3 | +import cn.iocoder.yudao.module.system.mq.message.sms.SmsSendMessage; |
| 4 | 4 | ||
| 5 | import java.util.List; | 5 | import java.util.List; |
| 6 | import java.util.Map; | 6 | import java.util.Map; |
| 7 | 7 | ||
| 8 | /** | 8 | /** |
| 9 | - * 短信 Service Core 接口 | ||
| 10 | - * | ||
| 11 | - * 接入方,通过调用 send 开头的方法,创建发送短信的任务到 MQ 中 | ||
| 12 | - * 后续,yudao-admin-server 监听 MQ,执行真正的短信发送逻辑 | 9 | + * 短信 Service 发送接口 |
| 13 | * | 10 | * |
| 14 | * @author 芋道源码 | 11 | * @author 芋道源码 |
| 15 | */ | 12 | */ |
| 16 | -public interface SysSmsCoreService { | 13 | +public interface SysSmsSendService { |
| 17 | 14 | ||
| 18 | /** | 15 | /** |
| 19 | * 发送单条短信给后台用户 | 16 | * 发送单条短信给后台用户 |
| @@ -49,7 +46,7 @@ public interface SysSmsCoreService { | @@ -49,7 +46,7 @@ public interface SysSmsCoreService { | ||
| 49 | void sendBatchSms(List<String> mobiles, List<Long> userIds, Integer userType, | 46 | void sendBatchSms(List<String> mobiles, List<Long> userIds, Integer userType, |
| 50 | String templateCode, Map<String, Object> templateParams); | 47 | String templateCode, Map<String, Object> templateParams); |
| 51 | 48 | ||
| 52 | - void doSendSms(SysSmsSendMessage message); | 49 | + void doSendSms(SmsSendMessage message); |
| 53 | 50 | ||
| 54 | /** | 51 | /** |
| 55 | * 接收短信的接收结果 | 52 | * 接收短信的接收结果 |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/sms/impl/SysSmsCoreServiceImpl.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SysSmsSendServiceImpl.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.sms.impl; | 1 | +package cn.iocoder.yudao.module.system.service.sms; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | import cn.hutool.core.util.StrUtil; | 4 | import cn.hutool.core.util.StrUtil; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.mq.message.sms.SysSmsSendMessage; | ||
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.mq.producer.sms.SysSmsCoreProducer; | ||
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService; | ||
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsLogCoreService; | ||
| 11 | -import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsTemplateCoreService; | ||
| 12 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | 5 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsTemplateDO; |
| 6 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; | ||
| 7 | +import cn.iocoder.yudao.module.system.mq.message.sms.SmsSendMessage; | ||
| 13 | import cn.iocoder.yudao.framework.common.core.KeyValue; | 8 | import cn.iocoder.yudao.framework.common.core.KeyValue; |
| 14 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 9 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 15 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 10 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| @@ -18,7 +13,10 @@ import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; | @@ -18,7 +13,10 @@ import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; | ||
| 18 | import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult; | 13 | import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult; |
| 19 | import cn.iocoder.yudao.framework.sms.core.client.dto.SmsReceiveRespDTO; | 14 | import cn.iocoder.yudao.framework.sms.core.client.dto.SmsReceiveRespDTO; |
| 20 | import cn.iocoder.yudao.framework.sms.core.client.dto.SmsSendRespDTO; | 15 | import cn.iocoder.yudao.framework.sms.core.client.dto.SmsSendRespDTO; |
| 16 | +import cn.iocoder.yudao.module.system.mq.producer.sms.SmsProducer; | ||
| 17 | +import cn.iocoder.yudao.module.system.service.user.UserService; | ||
| 21 | import com.google.common.annotations.VisibleForTesting; | 18 | import com.google.common.annotations.VisibleForTesting; |
| 19 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 22 | import org.springframework.stereotype.Service; | 20 | import org.springframework.stereotype.Service; |
| 23 | import org.springframework.util.Assert; | 21 | import org.springframework.util.Assert; |
| 24 | 22 | ||
| @@ -27,35 +25,36 @@ import java.util.List; | @@ -27,35 +25,36 @@ import java.util.List; | ||
| 27 | import java.util.Map; | 25 | import java.util.Map; |
| 28 | import java.util.stream.Collectors; | 26 | import java.util.stream.Collectors; |
| 29 | 27 | ||
| 30 | -import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.*; | 28 | +import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*; |
| 31 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 29 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 32 | 30 | ||
| 33 | /** | 31 | /** |
| 34 | - * 短信 Service Core 实现 | 32 | + * 短信 Service 发送的实现 |
| 35 | * | 33 | * |
| 36 | * @author 芋道源码 | 34 | * @author 芋道源码 |
| 37 | */ | 35 | */ |
| 38 | @Service | 36 | @Service |
| 39 | -public class SysSmsCoreServiceImpl implements SysSmsCoreService { | 37 | +public class SysSmsSendServiceImpl implements SysSmsSendService { |
| 40 | 38 | ||
| 39 | + @Autowired | ||
| 40 | + @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // UserService 存在重名 | ||
| 41 | + private UserService userService; | ||
| 41 | @Resource | 42 | @Resource |
| 42 | - private SysUserCoreService sysUserCoreService; | 43 | + private SmsTemplateService smsTemplateService; |
| 43 | @Resource | 44 | @Resource |
| 44 | - private SysSmsTemplateCoreService smsTemplateCoreService; | ||
| 45 | - @Resource | ||
| 46 | - private SysSmsLogCoreService smsLogCoreService; | 45 | + private SmsLogService smsLogService; |
| 47 | 46 | ||
| 48 | @Resource | 47 | @Resource |
| 49 | private SmsClientFactory smsClientFactory; | 48 | private SmsClientFactory smsClientFactory; |
| 50 | 49 | ||
| 51 | @Resource | 50 | @Resource |
| 52 | - private SysSmsCoreProducer smsCoreProducer; | 51 | + private SmsProducer smsProducer; |
| 53 | 52 | ||
| 54 | @Override | 53 | @Override |
| 55 | public Long sendSingleSmsToAdmin(String mobile, Long userId, String templateCode, Map<String, Object> templateParams) { | 54 | public Long sendSingleSmsToAdmin(String mobile, Long userId, String templateCode, Map<String, Object> templateParams) { |
| 56 | // 如果 mobile 为空,则加载用户编号对应的手机号 | 55 | // 如果 mobile 为空,则加载用户编号对应的手机号 |
| 57 | if (StrUtil.isEmpty(mobile)) { | 56 | if (StrUtil.isEmpty(mobile)) { |
| 58 | - SysUserDO user = sysUserCoreService.getUser(userId); | 57 | + UserDO user = userService.getUser(userId); |
| 59 | if (user != null) { | 58 | if (user != null) { |
| 60 | mobile = user.getMobile(); | 59 | mobile = user.getMobile(); |
| 61 | } | 60 | } |
| @@ -90,12 +89,12 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { | @@ -90,12 +89,12 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { | ||
| 90 | 89 | ||
| 91 | // 创建发送日志 | 90 | // 创建发送日志 |
| 92 | Boolean isSend = CommonStatusEnum.ENABLE.getStatus().equals(template.getStatus()); // 如果模板被禁用,则不发送短信,只记录日志 | 91 | Boolean isSend = CommonStatusEnum.ENABLE.getStatus().equals(template.getStatus()); // 如果模板被禁用,则不发送短信,只记录日志 |
| 93 | - String content = smsTemplateCoreService.formatSmsTemplateContent(template.getContent(), templateParams); | ||
| 94 | - Long sendLogId = smsLogCoreService.createSmsLog(mobile, userId, userType, isSend, template, content, templateParams); | 92 | + String content = smsTemplateService.formatSmsTemplateContent(template.getContent(), templateParams); |
| 93 | + Long sendLogId = smsLogService.createSmsLog(mobile, userId, userType, isSend, template, content, templateParams); | ||
| 95 | 94 | ||
| 96 | // 发送 MQ 消息,异步执行发送短信 | 95 | // 发送 MQ 消息,异步执行发送短信 |
| 97 | if (isSend) { | 96 | if (isSend) { |
| 98 | - smsCoreProducer.sendSmsSendMessage(sendLogId, mobile, template.getChannelId(), | 97 | + smsProducer.sendSmsSendMessage(sendLogId, mobile, template.getChannelId(), |
| 99 | template.getApiTemplateId(), newTemplateParams); | 98 | template.getApiTemplateId(), newTemplateParams); |
| 100 | } | 99 | } |
| 101 | return sendLogId; | 100 | return sendLogId; |
| @@ -110,7 +109,7 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { | @@ -110,7 +109,7 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { | ||
| 110 | @VisibleForTesting | 109 | @VisibleForTesting |
| 111 | public SysSmsTemplateDO checkSmsTemplateValid(String templateCode) { | 110 | public SysSmsTemplateDO checkSmsTemplateValid(String templateCode) { |
| 112 | // 获得短信模板。考虑到效率,从缓存中获取 | 111 | // 获得短信模板。考虑到效率,从缓存中获取 |
| 113 | - SysSmsTemplateDO template = smsTemplateCoreService.getSmsTemplateByCodeFromCache(templateCode); | 112 | + SysSmsTemplateDO template = smsTemplateService.getSmsTemplateByCodeFromCache(templateCode); |
| 114 | // 短信模板不存在 | 113 | // 短信模板不存在 |
| 115 | if (template == null) { | 114 | if (template == null) { |
| 116 | throw exception(SMS_SEND_TEMPLATE_NOT_EXISTS); | 115 | throw exception(SMS_SEND_TEMPLATE_NOT_EXISTS); |
| @@ -146,16 +145,15 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { | @@ -146,16 +145,15 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { | ||
| 146 | return mobile; | 145 | return mobile; |
| 147 | } | 146 | } |
| 148 | 147 | ||
| 149 | - | ||
| 150 | @Override | 148 | @Override |
| 151 | - public void doSendSms(SysSmsSendMessage message) { | 149 | + public void doSendSms(SmsSendMessage message) { |
| 152 | // 获得渠道对应的 SmsClient 客户端 | 150 | // 获得渠道对应的 SmsClient 客户端 |
| 153 | SmsClient smsClient = smsClientFactory.getSmsClient(message.getChannelId()); | 151 | SmsClient smsClient = smsClientFactory.getSmsClient(message.getChannelId()); |
| 154 | Assert.notNull(smsClient, String.format("短信客户端(%d) 不存在", message.getChannelId())); | 152 | Assert.notNull(smsClient, String.format("短信客户端(%d) 不存在", message.getChannelId())); |
| 155 | // 发送短信 | 153 | // 发送短信 |
| 156 | SmsCommonResult<SmsSendRespDTO> sendResult = smsClient.sendSms(message.getLogId(), message.getMobile(), | 154 | SmsCommonResult<SmsSendRespDTO> sendResult = smsClient.sendSms(message.getLogId(), message.getMobile(), |
| 157 | message.getApiTemplateId(), message.getTemplateParams()); | 155 | message.getApiTemplateId(), message.getTemplateParams()); |
| 158 | - smsLogCoreService.updateSmsSendResult(message.getLogId(), sendResult.getCode(), sendResult.getMsg(), | 156 | + smsLogService.updateSmsSendResult(message.getLogId(), sendResult.getCode(), sendResult.getMsg(), |
| 159 | sendResult.getApiCode(), sendResult.getApiMsg(), sendResult.getApiRequestId(), | 157 | sendResult.getApiCode(), sendResult.getApiMsg(), sendResult.getApiRequestId(), |
| 160 | sendResult.getData() != null ? sendResult.getData().getSerialNo() : null); | 158 | sendResult.getData() != null ? sendResult.getData().getSerialNo() : null); |
| 161 | } | 159 | } |
| @@ -171,7 +169,7 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { | @@ -171,7 +169,7 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { | ||
| 171 | return; | 169 | return; |
| 172 | } | 170 | } |
| 173 | // 更新短信日志的接收结果. 因为量一般不大,所以先使用 for 循环更新 | 171 | // 更新短信日志的接收结果. 因为量一般不大,所以先使用 for 循环更新 |
| 174 | - receiveResults.forEach(result -> smsLogCoreService.updateSmsReceiveResult(result.getLogId(), | 172 | + receiveResults.forEach(result -> smsLogService.updateSmsReceiveResult(result.getLogId(), |
| 175 | result.getSuccess(), result.getReceiveTime(), result.getErrorCode(), result.getErrorCode())); | 173 | result.getSuccess(), result.getReceiveTime(), result.getErrorCode(), result.getErrorCode())); |
| 176 | } | 174 | } |
| 177 | 175 |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialCoreService.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialUserService.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.social; | 1 | +package cn.iocoder.yudao.module.system.service.social; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 3 | import cn.hutool.core.util.StrUtil; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; | 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.social.SysSocialUserDO; |
| 5 | +import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; | ||
| 6 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 6 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 7 | import cn.iocoder.yudao.framework.common.exception.ServiceException; | 7 | import cn.iocoder.yudao.framework.common.exception.ServiceException; |
| 8 | import me.zhyd.oauth.model.AuthUser; | 8 | import me.zhyd.oauth.model.AuthUser; |
| @@ -11,16 +11,16 @@ import javax.validation.constraints.NotNull; | @@ -11,16 +11,16 @@ import javax.validation.constraints.NotNull; | ||
| 11 | import java.util.List; | 11 | import java.util.List; |
| 12 | 12 | ||
| 13 | /** | 13 | /** |
| 14 | - * 社交 Service 接口,例如说社交平台的授权登录 | 14 | + * 社交用户 Service 接口,例如说社交平台的授权登录 |
| 15 | * | 15 | * |
| 16 | * @author 芋道源码 | 16 | * @author 芋道源码 |
| 17 | */ | 17 | */ |
| 18 | -public interface SysSocialCoreService { | 18 | +public interface SocialUserService { |
| 19 | 19 | ||
| 20 | /** | 20 | /** |
| 21 | * 获得社交平台的授权 URL | 21 | * 获得社交平台的授权 URL |
| 22 | * | 22 | * |
| 23 | - * @param type 社交平台的类型 {@link SysSocialTypeEnum} | 23 | + * @param type 社交平台的类型 {@link SocialTypeEnum} |
| 24 | * @param redirectUri 重定向 URL | 24 | * @param redirectUri 重定向 URL |
| 25 | * @return 社交平台的授权 URL | 25 | * @return 社交平台的授权 URL |
| 26 | */ | 26 | */ |
| @@ -30,7 +30,7 @@ public interface SysSocialCoreService { | @@ -30,7 +30,7 @@ public interface SysSocialCoreService { | ||
| 30 | * 获得授权的用户 | 30 | * 获得授权的用户 |
| 31 | * 如果授权失败,则会抛出 {@link ServiceException} 异常 | 31 | * 如果授权失败,则会抛出 {@link ServiceException} 异常 |
| 32 | * | 32 | * |
| 33 | - * @param type 社交平台的类型 {@link SysSocialTypeEnum} | 33 | + * @param type 社交平台的类型 {@link SocialTypeEnum} |
| 34 | * @param code 授权码 | 34 | * @param code 授权码 |
| 35 | * @param state state | 35 | * @param state state |
| 36 | * @return 授权用户 | 36 | * @return 授权用户 |
| @@ -46,7 +46,7 @@ public interface SysSocialCoreService { | @@ -46,7 +46,7 @@ public interface SysSocialCoreService { | ||
| 46 | * 获得 unionId 对应的某个社交平台的“所有”社交用户 | 46 | * 获得 unionId 对应的某个社交平台的“所有”社交用户 |
| 47 | * 注意,这里的“所有”,指的是类似【微信】平台,包括了小程序、公众号、PC 网站,他们的 unionId 是一致的 | 47 | * 注意,这里的“所有”,指的是类似【微信】平台,包括了小程序、公众号、PC 网站,他们的 unionId 是一致的 |
| 48 | * | 48 | * |
| 49 | - * @param type 社交平台的类型 {@link SysSocialTypeEnum} | 49 | + * @param type 社交平台的类型 {@link SocialTypeEnum} |
| 50 | * @param unionId 社交平台的 unionId | 50 | * @param unionId 社交平台的 unionId |
| 51 | * @return 社交用户列表 | 51 | * @return 社交用户列表 |
| 52 | * @param userTypeEnum 全局用户类型 | 52 | * @param userTypeEnum 全局用户类型 |
| @@ -66,7 +66,7 @@ public interface SysSocialCoreService { | @@ -66,7 +66,7 @@ public interface SysSocialCoreService { | ||
| 66 | * 绑定社交用户 | 66 | * 绑定社交用户 |
| 67 | * | 67 | * |
| 68 | * @param userId 用户编号 | 68 | * @param userId 用户编号 |
| 69 | - * @param type 社交平台的类型 {@link SysSocialTypeEnum} | 69 | + * @param type 社交平台的类型 {@link SocialTypeEnum} |
| 70 | * @param authUser 授权用户 | 70 | * @param authUser 授权用户 |
| 71 | * @param userTypeEnum 全局用户类型 | 71 | * @param userTypeEnum 全局用户类型 |
| 72 | */ | 72 | */ |
| @@ -76,7 +76,7 @@ public interface SysSocialCoreService { | @@ -76,7 +76,7 @@ public interface SysSocialCoreService { | ||
| 76 | * 取消绑定社交用户 | 76 | * 取消绑定社交用户 |
| 77 | * | 77 | * |
| 78 | * @param userId 用户编号 | 78 | * @param userId 用户编号 |
| 79 | - * @param type 社交平台的类型 {@link SysSocialTypeEnum} | 79 | + * @param type 社交平台的类型 {@link SocialTypeEnum} |
| 80 | * @param unionId 社交平台的 unionId | 80 | * @param unionId 社交平台的 unionId |
| 81 | * @param userTypeEnum 全局用户类型 | 81 | * @param userTypeEnum 全局用户类型 |
| 82 | */ | 82 | */ |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialCoreServiceImpl.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialUserServiceImpl.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.social.impl; | 1 | +package cn.iocoder.yudao.module.system.service.social; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.social.SysSocialUserCoreMapper; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.redis.social.SysSocialAuthUserRedisDAO; | ||
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; | ||
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService; | 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.social.SysSocialUserDO; |
| 5 | +import cn.iocoder.yudao.module.system.dal.mysql.social.SysSocialUserMapper; | ||
| 6 | +import cn.iocoder.yudao.module.system.dal.redis.social.SocialAuthUserRedisDAO; | ||
| 7 | +import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; | ||
| 9 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 8 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 10 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | 9 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 11 | import cn.iocoder.yudao.framework.common.util.http.HttpUtils; | 10 | import cn.iocoder.yudao.framework.common.util.http.HttpUtils; |
| @@ -25,34 +24,34 @@ import javax.annotation.Resource; | @@ -25,34 +24,34 @@ import javax.annotation.Resource; | ||
| 25 | import java.util.List; | 24 | import java.util.List; |
| 26 | import java.util.Objects; | 25 | import java.util.Objects; |
| 27 | 26 | ||
| 28 | -import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.SOCIAL_AUTH_FAILURE; | ||
| 29 | -import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.SOCIAL_UNBIND_NOT_SELF; | 27 | +import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.SOCIAL_AUTH_FAILURE; |
| 28 | +import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.SOCIAL_UNBIND_NOT_SELF; | ||
| 30 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 29 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 31 | import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString; | 30 | import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString; |
| 32 | 31 | ||
| 33 | /** | 32 | /** |
| 34 | - * 社交 Service 实现类 | 33 | + * 社交用户 Service 实现类 |
| 35 | * | 34 | * |
| 36 | * @author 芋道源码 | 35 | * @author 芋道源码 |
| 37 | */ | 36 | */ |
| 38 | @Service | 37 | @Service |
| 39 | @Validated | 38 | @Validated |
| 40 | @Slf4j | 39 | @Slf4j |
| 41 | -public class SysSocialCoreServiceImpl implements SysSocialCoreService { | 40 | +public class SocialUserServiceImpl implements SocialUserService { |
| 42 | 41 | ||
| 43 | @Resource | 42 | @Resource |
| 44 | private AuthRequestFactory authRequestFactory; | 43 | private AuthRequestFactory authRequestFactory; |
| 45 | 44 | ||
| 46 | @Resource | 45 | @Resource |
| 47 | - private SysSocialAuthUserRedisDAO authSocialUserRedisDAO; | 46 | + private SocialAuthUserRedisDAO authSocialUserRedisDAO; |
| 48 | 47 | ||
| 49 | @Resource | 48 | @Resource |
| 50 | - private SysSocialUserCoreMapper socialUserMapper; | 49 | + private SysSocialUserMapper socialUserMapper; |
| 51 | 50 | ||
| 52 | @Override | 51 | @Override |
| 53 | public String getAuthorizeUrl(Integer type, String redirectUri) { | 52 | public String getAuthorizeUrl(Integer type, String redirectUri) { |
| 54 | // 获得对应的 AuthRequest 实现 | 53 | // 获得对应的 AuthRequest 实现 |
| 55 | - AuthRequest authRequest = authRequestFactory.get(SysSocialTypeEnum.valueOfType(type).getSource()); | 54 | + AuthRequest authRequest = authRequestFactory.get(SocialTypeEnum.valueOfType(type).getSource()); |
| 56 | // 生成跳转地址 | 55 | // 生成跳转地址 |
| 57 | String authorizeUri = authRequest.authorize(AuthStateUtils.createState()); | 56 | String authorizeUri = authRequest.authorize(AuthStateUtils.createState()); |
| 58 | return HttpUtils.replaceUrlQuery(authorizeUri, "redirect_uri", redirectUri); | 57 | return HttpUtils.replaceUrlQuery(authorizeUri, "redirect_uri", redirectUri); |
| @@ -76,7 +75,7 @@ public class SysSocialCoreServiceImpl implements SysSocialCoreService { | @@ -76,7 +75,7 @@ public class SysSocialCoreServiceImpl implements SysSocialCoreService { | ||
| 76 | 75 | ||
| 77 | @Override | 76 | @Override |
| 78 | public List<SysSocialUserDO> getAllSocialUserList(Integer type, String unionId,UserTypeEnum userTypeEnum) { | 77 | public List<SysSocialUserDO> getAllSocialUserList(Integer type, String unionId,UserTypeEnum userTypeEnum) { |
| 79 | - List<Integer> types = SysSocialTypeEnum.getRelationTypes(type); | 78 | + List<Integer> types = SocialTypeEnum.getRelationTypes(type); |
| 80 | return socialUserMapper.selectListByTypeAndUnionId(userTypeEnum.getValue(), types, unionId); | 79 | return socialUserMapper.selectListByTypeAndUnionId(userTypeEnum.getValue(), types, unionId); |
| 81 | } | 80 | } |
| 82 | 81 | ||
| @@ -141,7 +140,7 @@ public class SysSocialCoreServiceImpl implements SysSocialCoreService { | @@ -141,7 +140,7 @@ public class SysSocialCoreServiceImpl implements SysSocialCoreService { | ||
| 141 | 140 | ||
| 142 | @VisibleForTesting | 141 | @VisibleForTesting |
| 143 | public void unbindOldSocialUser(Long userId, Integer type, String newUnionId, UserTypeEnum userTypeEnum) { | 142 | public void unbindOldSocialUser(Long userId, Integer type, String newUnionId, UserTypeEnum userTypeEnum) { |
| 144 | - List<Integer> types = SysSocialTypeEnum.getRelationTypes(type); | 143 | + List<Integer> types = SocialTypeEnum.getRelationTypes(type); |
| 145 | List<SysSocialUserDO> oldSocialUsers = socialUserMapper.selectListByTypeAndUserId( | 144 | List<SysSocialUserDO> oldSocialUsers = socialUserMapper.selectListByTypeAndUserId( |
| 146 | userTypeEnum.getValue(), types, userId); | 145 | userTypeEnum.getValue(), types, userId); |
| 147 | // 如果新老的 unionId 是一致的,说明无需解绑 | 146 | // 如果新老的 unionId 是一致的,说明无需解绑 |
| @@ -161,7 +160,7 @@ public class SysSocialCoreServiceImpl implements SysSocialCoreService { | @@ -161,7 +160,7 @@ public class SysSocialCoreServiceImpl implements SysSocialCoreService { | ||
| 161 | * @return 授权的用户 | 160 | * @return 授权的用户 |
| 162 | */ | 161 | */ |
| 163 | private AuthUser getAuthUser0(Integer type, AuthCallback authCallback) { | 162 | private AuthUser getAuthUser0(Integer type, AuthCallback authCallback) { |
| 164 | - AuthRequest authRequest = authRequestFactory.get(SysSocialTypeEnum.valueOfType(type).getSource()); | 163 | + AuthRequest authRequest = authRequestFactory.get(SocialTypeEnum.valueOfType(type).getSource()); |
| 165 | AuthResponse<?> authResponse = authRequest.login(authCallback); | 164 | AuthResponse<?> authResponse = authRequest.login(authCallback); |
| 166 | log.info("[getAuthUser0][请求社交平台 type({}) request({}) response({})]", type, toJsonString(authCallback), | 165 | log.info("[getAuthUser0][请求社交平台 type({}) request({}) response({})]", type, toJsonString(authCallback), |
| 167 | toJsonString(authResponse)); | 166 | toJsonString(authResponse)); |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/tenant/SysTenantCoreService.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/tenant/SysTenantCoreService.java
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantService.java
| @@ -4,7 +4,7 @@ import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantCreateReq | @@ -4,7 +4,7 @@ import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantCreateReq | ||
| 4 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantExportReqVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantExportReqVO; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantPageReqVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantPageReqVO; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantUpdateReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantUpdateReqVO; |
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.tenant.SysTenantDO; | 7 | +import cn.iocoder.yudao.module.system.dal.dataobject.tenant.SysTenantDO; |
| 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | 9 | ||
| 10 | import javax.validation.Valid; | 10 | import javax.validation.Valid; |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImpl.java
| @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantPageReqVO | @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantPageReqVO | ||
| 6 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantUpdateReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantUpdateReqVO; |
| 7 | import cn.iocoder.yudao.module.system.convert.tenant.TenantConvert; | 7 | import cn.iocoder.yudao.module.system.convert.tenant.TenantConvert; |
| 8 | import cn.iocoder.yudao.module.system.dal.mysql.tenant.SysTenantMapper; | 8 | import cn.iocoder.yudao.module.system.dal.mysql.tenant.SysTenantMapper; |
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.tenant.SysTenantDO; | 9 | +import cn.iocoder.yudao.module.system.dal.dataobject.tenant.SysTenantDO; |
| 10 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 10 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 11 | import org.springframework.stereotype.Service; | 11 | import org.springframework.stereotype.Service; |
| 12 | import org.springframework.validation.annotation.Validated; | 12 | import org.springframework.validation.annotation.Validated; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/tenant/impl/SysTenantCoreServiceImpl.java renamed to yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/tenant/impl/SysTenantCoreServiceImpl.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.tenant.impl; | 1 | +package cn.iocoder.yudao.module.system.service.tenant.impl; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.tenant.SysTenantDO; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.tenant.SysTenantCoreMapper; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.service.tenant.SysTenantCoreService; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.tenant.SysTenantDO; |
| 4 | +import cn.iocoder.yudao.module.system.dal.mysql.tenant.SysTenantCoreMapper; | ||
| 5 | +import cn.iocoder.yudao.module.system.service.tenant.SysTenantCoreService; | ||
| 6 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | 6 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 7 | import org.springframework.stereotype.Service; | 7 | import org.springframework.stereotype.Service; |
| 8 | 8 |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/user/UserService.java
| 1 | package cn.iocoder.yudao.module.system.service.user; | 1 | package cn.iocoder.yudao.module.system.service.user; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.collection.CollUtil; | ||
| 4 | +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||
| 3 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; |
| 4 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*; | 7 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*; |
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; | ||
| 8 | 10 | ||
| 9 | import java.io.InputStream; | 11 | import java.io.InputStream; |
| 10 | import java.util.*; | 12 | import java.util.*; |
| @@ -92,7 +94,7 @@ public interface UserService { | @@ -92,7 +94,7 @@ public interface UserService { | ||
| 92 | * @param username 用户名 | 94 | * @param username 用户名 |
| 93 | * @return 用户对象信息 | 95 | * @return 用户对象信息 |
| 94 | */ | 96 | */ |
| 95 | - SysUserDO getUserByUsername(String username); | 97 | + UserDO getUserByUsername(String username); |
| 96 | 98 | ||
| 97 | /** | 99 | /** |
| 98 | * 获得用户分页列表 | 100 | * 获得用户分页列表 |
| @@ -100,25 +102,69 @@ public interface UserService { | @@ -100,25 +102,69 @@ public interface UserService { | ||
| 100 | * @param reqVO 分页条件 | 102 | * @param reqVO 分页条件 |
| 101 | * @return 分页列表 | 103 | * @return 分页列表 |
| 102 | */ | 104 | */ |
| 103 | - PageResult<SysUserDO> getUserPage(UserPageReqVO reqVO); | 105 | + PageResult<UserDO> getUserPage(UserPageReqVO reqVO); |
| 104 | 106 | ||
| 105 | /** | 107 | /** |
| 106 | - * 获得用户 | 108 | + * 通过用户 ID 查询用户 |
| 107 | * | 109 | * |
| 108 | - * @param id 用户编号 | ||
| 109 | - * @return 用户 | 110 | + * @param id 用户ID |
| 111 | + * @return 用户对象信息 | ||
| 112 | + */ | ||
| 113 | + UserDO getUser(Long id); | ||
| 114 | + | ||
| 115 | + /** | ||
| 116 | + * 获得指定部门的用户数组 | ||
| 117 | + * | ||
| 118 | + * @param deptIds 部门数组 | ||
| 119 | + * @return 用户数组 | ||
| 110 | */ | 120 | */ |
| 111 | - SysUserDO getUser(Long id); | 121 | + List<UserDO> getUsersByDeptIds(Collection<Long> deptIds); |
| 122 | + | ||
| 123 | + /** | ||
| 124 | + * 获得指定岗位的用户数组 | ||
| 125 | + * | ||
| 126 | + * @param postIds 岗位数组 | ||
| 127 | + * @return 用户数组 | ||
| 128 | + */ | ||
| 129 | + List<UserDO> getUsersByPostIds(Collection<Long> postIds); | ||
| 112 | 130 | ||
| 113 | /** | 131 | /** |
| 114 | * 获得用户列表 | 132 | * 获得用户列表 |
| 115 | * | 133 | * |
| 116 | - * @param reqVO 列表请求 | 134 | + * @param ids 用户编号数组 |
| 117 | * @return 用户列表 | 135 | * @return 用户列表 |
| 118 | */ | 136 | */ |
| 119 | - List<SysUserDO> getUsers(UserExportReqVO reqVO); | 137 | + List<UserDO> getUsers(Collection<Long> ids); |
| 138 | + | ||
| 139 | + /** | ||
| 140 | + * 校验用户们是否有效。如下情况,视为无效: | ||
| 141 | + * 1. 用户编号不存在 | ||
| 142 | + * 2. 用户被禁用 | ||
| 143 | + * | ||
| 144 | + * @param ids 用户编号数组 | ||
| 145 | + */ | ||
| 146 | + void validUsers(Set<Long> ids); | ||
| 120 | 147 | ||
| 148 | + /** | ||
| 149 | + * 获得用户 Map | ||
| 150 | + * | ||
| 151 | + * @param ids 用户编号数组 | ||
| 152 | + * @return 用户 Map | ||
| 153 | + */ | ||
| 154 | + default Map<Long, UserDO> getUserMap(Collection<Long> ids) { | ||
| 155 | + if (CollUtil.isEmpty(ids)) { | ||
| 156 | + return new HashMap<>(); | ||
| 157 | + } | ||
| 158 | + return CollectionUtils.convertMap(getUsers(ids), UserDO::getId); | ||
| 159 | + } | ||
| 121 | 160 | ||
| 161 | + /** | ||
| 162 | + * 获得用户列表 | ||
| 163 | + * | ||
| 164 | + * @param reqVO 列表请求 | ||
| 165 | + * @return 用户列表 | ||
| 166 | + */ | ||
| 167 | + List<UserDO> getUsers(UserExportReqVO reqVO); | ||
| 122 | 168 | ||
| 123 | /** | 169 | /** |
| 124 | * 获得用户列表,基于昵称模糊匹配 | 170 | * 获得用户列表,基于昵称模糊匹配 |
| @@ -126,7 +172,7 @@ public interface UserService { | @@ -126,7 +172,7 @@ public interface UserService { | ||
| 126 | * @param nickname 昵称 | 172 | * @param nickname 昵称 |
| 127 | * @return 用户列表 | 173 | * @return 用户列表 |
| 128 | */ | 174 | */ |
| 129 | - List<SysUserDO> getUsersByNickname(String nickname); | 175 | + List<UserDO> getUsersByNickname(String nickname); |
| 130 | 176 | ||
| 131 | /** | 177 | /** |
| 132 | * 获得用户列表,基于用户账号模糊匹配 | 178 | * 获得用户列表,基于用户账号模糊匹配 |
| @@ -134,7 +180,7 @@ public interface UserService { | @@ -134,7 +180,7 @@ public interface UserService { | ||
| 134 | * @param username 用户账号 | 180 | * @param username 用户账号 |
| 135 | * @return 用户列表 | 181 | * @return 用户列表 |
| 136 | */ | 182 | */ |
| 137 | - List<SysUserDO> getUsersByUsername(String username); | 183 | + List<UserDO> getUsersByUsername(String username); |
| 138 | 184 | ||
| 139 | /** | 185 | /** |
| 140 | * 批量导入用户 | 186 | * 批量导入用户 |
| @@ -151,6 +197,6 @@ public interface UserService { | @@ -151,6 +197,6 @@ public interface UserService { | ||
| 151 | * @param status 状态 | 197 | * @param status 状态 |
| 152 | * @return 用户们 | 198 | * @return 用户们 |
| 153 | */ | 199 | */ |
| 154 | - List<SysUserDO> getUsersByStatus(Integer status); | 200 | + List<UserDO> getUsersByStatus(Integer status); |
| 155 | 201 | ||
| 156 | } | 202 | } |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/user/UserServiceImpl.java
| @@ -4,23 +4,23 @@ import cn.hutool.core.collection.CollUtil; | @@ -4,23 +4,23 @@ import cn.hutool.core.collection.CollUtil; | ||
| 4 | import cn.hutool.core.io.IoUtil; | 4 | import cn.hutool.core.io.IoUtil; |
| 5 | import cn.hutool.core.util.IdUtil; | 5 | import cn.hutool.core.util.IdUtil; |
| 6 | import cn.hutool.core.util.StrUtil; | 6 | import cn.hutool.core.util.StrUtil; |
| 7 | +import cn.iocoder.yudao.coreservice.modules.infra.service.file.InfFileCoreService; | ||
| 8 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 9 | +import cn.iocoder.yudao.framework.common.exception.ServiceException; | ||
| 10 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 11 | +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||
| 7 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; | 12 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; |
| 8 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; | 13 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; |
| 9 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*; | 14 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*; |
| 10 | import cn.iocoder.yudao.module.system.convert.user.UserConvert; | 15 | import cn.iocoder.yudao.module.system.convert.user.UserConvert; |
| 11 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | ||
| 12 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO; | ||
| 13 | -import cn.iocoder.yudao.module.system.dal.mysql.user.SysUserMapper; | 16 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 17 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysPostDO; | ||
| 18 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; | ||
| 19 | +import cn.iocoder.yudao.module.system.dal.mysql.user.UserMapper; | ||
| 14 | import cn.iocoder.yudao.module.system.service.dept.DeptService; | 20 | import cn.iocoder.yudao.module.system.service.dept.DeptService; |
| 15 | import cn.iocoder.yudao.module.system.service.dept.PostService; | 21 | import cn.iocoder.yudao.module.system.service.dept.PostService; |
| 22 | +import cn.iocoder.yudao.module.system.service.dept.SysDeptCoreService; | ||
| 16 | import cn.iocoder.yudao.module.system.service.permission.PermissionService; | 23 | import cn.iocoder.yudao.module.system.service.permission.PermissionService; |
| 17 | -import cn.iocoder.yudao.coreservice.modules.infra.service.file.InfFileCoreService; | ||
| 18 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 19 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService; | ||
| 20 | -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 21 | -import cn.iocoder.yudao.framework.common.exception.ServiceException; | ||
| 22 | -import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 23 | -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||
| 24 | import com.google.common.annotations.VisibleForTesting; | 24 | import com.google.common.annotations.VisibleForTesting; |
| 25 | import lombok.extern.slf4j.Slf4j; | 25 | import lombok.extern.slf4j.Slf4j; |
| 26 | import org.springframework.beans.factory.annotation.Value; | 26 | import org.springframework.beans.factory.annotation.Value; |
| @@ -32,8 +32,10 @@ import javax.annotation.Resource; | @@ -32,8 +32,10 @@ import javax.annotation.Resource; | ||
| 32 | import java.io.InputStream; | 32 | import java.io.InputStream; |
| 33 | import java.util.*; | 33 | import java.util.*; |
| 34 | 34 | ||
| 35 | -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; | ||
| 36 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 35 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 36 | +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; | ||
| 37 | +import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.USER_IS_DISABLE; | ||
| 38 | +import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.USER_NOT_EXISTS; | ||
| 37 | 39 | ||
| 38 | /** | 40 | /** |
| 39 | * 管理员用户 Service 实现类 | 41 | * 管理员用户 Service 实现类 |
| @@ -48,7 +50,7 @@ public class UserServiceImpl implements UserService { | @@ -48,7 +50,7 @@ public class UserServiceImpl implements UserService { | ||
| 48 | private String userInitPassword; | 50 | private String userInitPassword; |
| 49 | 51 | ||
| 50 | @Resource(name = "sysUserMapper") // userMapper 存在重名 | 52 | @Resource(name = "sysUserMapper") // userMapper 存在重名 |
| 51 | - private SysUserMapper userMapper; | 53 | + private UserMapper userMapper; |
| 52 | 54 | ||
| 53 | @Resource | 55 | @Resource |
| 54 | private DeptService deptService; | 56 | private DeptService deptService; |
| @@ -70,7 +72,7 @@ public class UserServiceImpl implements UserService { | @@ -70,7 +72,7 @@ public class UserServiceImpl implements UserService { | ||
| 70 | this.checkCreateOrUpdate(null, reqVO.getUsername(), reqVO.getMobile(), reqVO.getEmail(), | 72 | this.checkCreateOrUpdate(null, reqVO.getUsername(), reqVO.getMobile(), reqVO.getEmail(), |
| 71 | reqVO.getDeptId(), reqVO.getPostIds()); | 73 | reqVO.getDeptId(), reqVO.getPostIds()); |
| 72 | // 插入用户 | 74 | // 插入用户 |
| 73 | - SysUserDO user = UserConvert.INSTANCE.convert(reqVO); | 75 | + UserDO user = UserConvert.INSTANCE.convert(reqVO); |
| 74 | user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启 | 76 | user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启 |
| 75 | user.setPassword(passwordEncoder.encode(reqVO.getPassword())); // 加密密码 | 77 | user.setPassword(passwordEncoder.encode(reqVO.getPassword())); // 加密密码 |
| 76 | userMapper.insert(user); | 78 | userMapper.insert(user); |
| @@ -83,13 +85,13 @@ public class UserServiceImpl implements UserService { | @@ -83,13 +85,13 @@ public class UserServiceImpl implements UserService { | ||
| 83 | this.checkCreateOrUpdate(reqVO.getId(), reqVO.getUsername(), reqVO.getMobile(), reqVO.getEmail(), | 85 | this.checkCreateOrUpdate(reqVO.getId(), reqVO.getUsername(), reqVO.getMobile(), reqVO.getEmail(), |
| 84 | reqVO.getDeptId(), reqVO.getPostIds()); | 86 | reqVO.getDeptId(), reqVO.getPostIds()); |
| 85 | // 更新用户 | 87 | // 更新用户 |
| 86 | - SysUserDO updateObj = UserConvert.INSTANCE.convert(reqVO); | 88 | + UserDO updateObj = UserConvert.INSTANCE.convert(reqVO); |
| 87 | userMapper.updateById(updateObj); | 89 | userMapper.updateById(updateObj); |
| 88 | } | 90 | } |
| 89 | 91 | ||
| 90 | @Override | 92 | @Override |
| 91 | public void updateUserLogin(Long id, String loginIp) { | 93 | public void updateUserLogin(Long id, String loginIp) { |
| 92 | - userMapper.updateById(new SysUserDO().setId(id).setLoginIp(loginIp).setLoginDate(new Date())); | 94 | + userMapper.updateById(new UserDO().setId(id).setLoginIp(loginIp).setLoginDate(new Date())); |
| 93 | } | 95 | } |
| 94 | 96 | ||
| 95 | @Override | 97 | @Override |
| @@ -107,7 +109,7 @@ public class UserServiceImpl implements UserService { | @@ -107,7 +109,7 @@ public class UserServiceImpl implements UserService { | ||
| 107 | // 校验旧密码密码 | 109 | // 校验旧密码密码 |
| 108 | this.checkOldPassword(id, reqVO.getOldPassword()); | 110 | this.checkOldPassword(id, reqVO.getOldPassword()); |
| 109 | // 执行更新 | 111 | // 执行更新 |
| 110 | - SysUserDO updateObj = new SysUserDO().setId(id); | 112 | + UserDO updateObj = new UserDO().setId(id); |
| 111 | updateObj.setPassword(passwordEncoder.encode(reqVO.getNewPassword())); // 加密密码 | 113 | updateObj.setPassword(passwordEncoder.encode(reqVO.getNewPassword())); // 加密密码 |
| 112 | userMapper.updateById(updateObj); | 114 | userMapper.updateById(updateObj); |
| 113 | } | 115 | } |
| @@ -118,7 +120,7 @@ public class UserServiceImpl implements UserService { | @@ -118,7 +120,7 @@ public class UserServiceImpl implements UserService { | ||
| 118 | // 存储文件 | 120 | // 存储文件 |
| 119 | String avatar = fileService.createFile(IdUtil.fastUUID(), IoUtil.readBytes(avatarFile)); | 121 | String avatar = fileService.createFile(IdUtil.fastUUID(), IoUtil.readBytes(avatarFile)); |
| 120 | // 更新路径 | 122 | // 更新路径 |
| 121 | - SysUserDO sysUserDO = new SysUserDO(); | 123 | + UserDO sysUserDO = new UserDO(); |
| 122 | sysUserDO.setId(id); | 124 | sysUserDO.setId(id); |
| 123 | sysUserDO.setAvatar(avatar); | 125 | sysUserDO.setAvatar(avatar); |
| 124 | userMapper.updateById(sysUserDO); | 126 | userMapper.updateById(sysUserDO); |
| @@ -130,7 +132,7 @@ public class UserServiceImpl implements UserService { | @@ -130,7 +132,7 @@ public class UserServiceImpl implements UserService { | ||
| 130 | // 校验用户存在 | 132 | // 校验用户存在 |
| 131 | this.checkUserExists(id); | 133 | this.checkUserExists(id); |
| 132 | // 更新密码 | 134 | // 更新密码 |
| 133 | - SysUserDO updateObj = new SysUserDO(); | 135 | + UserDO updateObj = new UserDO(); |
| 134 | updateObj.setId(id); | 136 | updateObj.setId(id); |
| 135 | updateObj.setPassword(passwordEncoder.encode(password)); // 加密密码 | 137 | updateObj.setPassword(passwordEncoder.encode(password)); // 加密密码 |
| 136 | userMapper.updateById(updateObj); | 138 | userMapper.updateById(updateObj); |
| @@ -141,7 +143,7 @@ public class UserServiceImpl implements UserService { | @@ -141,7 +143,7 @@ public class UserServiceImpl implements UserService { | ||
| 141 | // 校验用户存在 | 143 | // 校验用户存在 |
| 142 | this.checkUserExists(id); | 144 | this.checkUserExists(id); |
| 143 | // 更新状态 | 145 | // 更新状态 |
| 144 | - SysUserDO updateObj = new SysUserDO(); | 146 | + UserDO updateObj = new UserDO(); |
| 145 | updateObj.setId(id); | 147 | updateObj.setId(id); |
| 146 | updateObj.setStatus(status); | 148 | updateObj.setStatus(status); |
| 147 | userMapper.updateById(updateObj); | 149 | userMapper.updateById(updateObj); |
| @@ -158,33 +160,80 @@ public class UserServiceImpl implements UserService { | @@ -158,33 +160,80 @@ public class UserServiceImpl implements UserService { | ||
| 158 | } | 160 | } |
| 159 | 161 | ||
| 160 | @Override | 162 | @Override |
| 161 | - public SysUserDO getUserByUsername(String username) { | 163 | + public UserDO getUserByUsername(String username) { |
| 162 | return userMapper.selectByUsername(username); | 164 | return userMapper.selectByUsername(username); |
| 163 | } | 165 | } |
| 164 | 166 | ||
| 165 | @Override | 167 | @Override |
| 166 | - public PageResult<SysUserDO> getUserPage(UserPageReqVO reqVO) { | 168 | + public PageResult<UserDO> getUserPage(UserPageReqVO reqVO) { |
| 167 | return userMapper.selectPage(reqVO, this.getDeptCondition(reqVO.getDeptId())); | 169 | return userMapper.selectPage(reqVO, this.getDeptCondition(reqVO.getDeptId())); |
| 168 | } | 170 | } |
| 169 | 171 | ||
| 170 | @Override | 172 | @Override |
| 171 | - public SysUserDO getUser(Long id) { | 173 | + public UserDO getUser(Long id) { |
| 172 | return userMapper.selectById(id); | 174 | return userMapper.selectById(id); |
| 173 | } | 175 | } |
| 174 | 176 | ||
| 175 | @Override | 177 | @Override |
| 176 | - public List<SysUserDO> getUsers(UserExportReqVO reqVO) { | ||
| 177 | - return userMapper.selectList(reqVO, this.getDeptCondition(reqVO.getDeptId())); | 178 | + public List<UserDO> getUsersByDeptIds(Collection<Long> deptIds) { |
| 179 | + if (CollUtil.isEmpty(deptIds)) { | ||
| 180 | + return Collections.emptyList(); | ||
| 181 | + } | ||
| 182 | + return userMapper.selectListByDeptIds(deptIds); | ||
| 178 | } | 183 | } |
| 179 | 184 | ||
| 185 | + @Override | ||
| 186 | + public List<UserDO> getUsersByPostIds(Collection<Long> postIds) { | ||
| 187 | + if (CollUtil.isEmpty(postIds)) { | ||
| 188 | + return Collections.emptyList(); | ||
| 189 | + } | ||
| 190 | + // 过滤不符合条件的 | ||
| 191 | + // TODO 芋艿:暂时只能内存过滤。解决方案:1、新建一个关联表;2、基于 where + 函数;3、json 字段,适合 mysql 8+ 版本 | ||
| 192 | + List<UserDO> users = userMapper.selectList(); | ||
| 193 | + users.removeIf(user -> !CollUtil.containsAny(user.getPostIds(), postIds)); | ||
| 194 | + return users; | ||
| 195 | + } | ||
| 196 | + | ||
| 197 | + @Override | ||
| 198 | + public List<UserDO> getUsers(Collection<Long> ids) { | ||
| 199 | + if (CollUtil.isEmpty(ids)) { | ||
| 200 | + return Collections.emptyList(); | ||
| 201 | + } | ||
| 202 | + return userMapper.selectBatchIds(ids); | ||
| 203 | + } | ||
| 204 | + | ||
| 205 | + @Override | ||
| 206 | + public void validUsers(Set<Long> ids) { | ||
| 207 | + if (CollUtil.isEmpty(ids)) { | ||
| 208 | + return; | ||
| 209 | + } | ||
| 210 | + // 获得岗位信息 | ||
| 211 | + List<UserDO> users = userMapper.selectBatchIds(ids); | ||
| 212 | + Map<Long, UserDO> userMap = CollectionUtils.convertMap(users, UserDO::getId); | ||
| 213 | + // 校验 | ||
| 214 | + ids.forEach(id -> { | ||
| 215 | + UserDO user = userMap.get(id); | ||
| 216 | + if (user == null) { | ||
| 217 | + throw exception(USER_NOT_EXISTS); | ||
| 218 | + } | ||
| 219 | + if (!CommonStatusEnum.ENABLE.getStatus().equals(user.getStatus())) { | ||
| 220 | + throw exception(USER_IS_DISABLE, user.getNickname()); | ||
| 221 | + } | ||
| 222 | + }); | ||
| 223 | + } | ||
| 224 | + | ||
| 225 | + @Override | ||
| 226 | + public List<UserDO> getUsers(UserExportReqVO reqVO) { | ||
| 227 | + return userMapper.selectList(reqVO, this.getDeptCondition(reqVO.getDeptId())); | ||
| 228 | + } | ||
| 180 | 229 | ||
| 181 | @Override | 230 | @Override |
| 182 | - public List<SysUserDO> getUsersByNickname(String nickname) { | 231 | + public List<UserDO> getUsersByNickname(String nickname) { |
| 183 | return userMapper.selectListByNickname(nickname); | 232 | return userMapper.selectListByNickname(nickname); |
| 184 | } | 233 | } |
| 185 | 234 | ||
| 186 | @Override | 235 | @Override |
| 187 | - public List<SysUserDO> getUsersByUsername(String username) { | 236 | + public List<UserDO> getUsersByUsername(String username) { |
| 188 | return userMapper.selectListByUsername(username); | 237 | return userMapper.selectListByUsername(username); |
| 189 | } | 238 | } |
| 190 | 239 | ||
| @@ -225,7 +274,7 @@ public class UserServiceImpl implements UserService { | @@ -225,7 +274,7 @@ public class UserServiceImpl implements UserService { | ||
| 225 | if (id == null) { | 274 | if (id == null) { |
| 226 | return; | 275 | return; |
| 227 | } | 276 | } |
| 228 | - SysUserDO user = userMapper.selectById(id); | 277 | + UserDO user = userMapper.selectById(id); |
| 229 | if (user == null) { | 278 | if (user == null) { |
| 230 | throw exception(USER_NOT_EXISTS); | 279 | throw exception(USER_NOT_EXISTS); |
| 231 | } | 280 | } |
| @@ -236,7 +285,7 @@ public class UserServiceImpl implements UserService { | @@ -236,7 +285,7 @@ public class UserServiceImpl implements UserService { | ||
| 236 | if (StrUtil.isBlank(username)) { | 285 | if (StrUtil.isBlank(username)) { |
| 237 | return; | 286 | return; |
| 238 | } | 287 | } |
| 239 | - SysUserDO user = userMapper.selectByUsername(username); | 288 | + UserDO user = userMapper.selectByUsername(username); |
| 240 | if (user == null) { | 289 | if (user == null) { |
| 241 | return; | 290 | return; |
| 242 | } | 291 | } |
| @@ -254,7 +303,7 @@ public class UserServiceImpl implements UserService { | @@ -254,7 +303,7 @@ public class UserServiceImpl implements UserService { | ||
| 254 | if (StrUtil.isBlank(email)) { | 303 | if (StrUtil.isBlank(email)) { |
| 255 | return; | 304 | return; |
| 256 | } | 305 | } |
| 257 | - SysUserDO user = userMapper.selectByEmail(email); | 306 | + UserDO user = userMapper.selectByEmail(email); |
| 258 | if (user == null) { | 307 | if (user == null) { |
| 259 | return; | 308 | return; |
| 260 | } | 309 | } |
| @@ -272,7 +321,7 @@ public class UserServiceImpl implements UserService { | @@ -272,7 +321,7 @@ public class UserServiceImpl implements UserService { | ||
| 272 | if (StrUtil.isBlank(mobile)) { | 321 | if (StrUtil.isBlank(mobile)) { |
| 273 | return; | 322 | return; |
| 274 | } | 323 | } |
| 275 | - SysUserDO user = userMapper.selectByMobile(mobile); | 324 | + UserDO user = userMapper.selectByMobile(mobile); |
| 276 | if (user == null) { | 325 | if (user == null) { |
| 277 | return; | 326 | return; |
| 278 | } | 327 | } |
| @@ -328,7 +377,7 @@ public class UserServiceImpl implements UserService { | @@ -328,7 +377,7 @@ public class UserServiceImpl implements UserService { | ||
| 328 | */ | 377 | */ |
| 329 | @VisibleForTesting | 378 | @VisibleForTesting |
| 330 | public void checkOldPassword(Long id, String oldPassword) { | 379 | public void checkOldPassword(Long id, String oldPassword) { |
| 331 | - SysUserDO user = userMapper.selectById(id); | 380 | + UserDO user = userMapper.selectById(id); |
| 332 | if (user == null) { | 381 | if (user == null) { |
| 333 | throw exception(USER_NOT_EXISTS); | 382 | throw exception(USER_NOT_EXISTS); |
| 334 | } | 383 | } |
| @@ -355,7 +404,7 @@ public class UserServiceImpl implements UserService { | @@ -355,7 +404,7 @@ public class UserServiceImpl implements UserService { | ||
| 355 | return; | 404 | return; |
| 356 | } | 405 | } |
| 357 | // 判断如果不存在,在进行插入 | 406 | // 判断如果不存在,在进行插入 |
| 358 | - SysUserDO existUser = userMapper.selectByUsername(importUser.getUsername()); | 407 | + UserDO existUser = userMapper.selectByUsername(importUser.getUsername()); |
| 359 | if (existUser == null) { | 408 | if (existUser == null) { |
| 360 | userMapper.insert(UserConvert.INSTANCE.convert(importUser) | 409 | userMapper.insert(UserConvert.INSTANCE.convert(importUser) |
| 361 | .setPassword(passwordEncoder.encode(userInitPassword))); // 设置默认密码 | 410 | .setPassword(passwordEncoder.encode(userInitPassword))); // 设置默认密码 |
| @@ -367,7 +416,7 @@ public class UserServiceImpl implements UserService { | @@ -367,7 +416,7 @@ public class UserServiceImpl implements UserService { | ||
| 367 | respVO.getFailureUsernames().put(importUser.getUsername(), USER_USERNAME_EXISTS.getMsg()); | 416 | respVO.getFailureUsernames().put(importUser.getUsername(), USER_USERNAME_EXISTS.getMsg()); |
| 368 | return; | 417 | return; |
| 369 | } | 418 | } |
| 370 | - SysUserDO updateUser = UserConvert.INSTANCE.convert(importUser); | 419 | + UserDO updateUser = UserConvert.INSTANCE.convert(importUser); |
| 371 | updateUser.setId(existUser.getId()); | 420 | updateUser.setId(existUser.getId()); |
| 372 | userMapper.updateById(updateUser); | 421 | userMapper.updateById(updateUser); |
| 373 | respVO.getUpdateUsernames().add(importUser.getUsername()); | 422 | respVO.getUpdateUsernames().add(importUser.getUsername()); |
| @@ -376,7 +425,7 @@ public class UserServiceImpl implements UserService { | @@ -376,7 +425,7 @@ public class UserServiceImpl implements UserService { | ||
| 376 | } | 425 | } |
| 377 | 426 | ||
| 378 | @Override | 427 | @Override |
| 379 | - public List<SysUserDO> getUsersByStatus(Integer status) { | 428 | + public List<UserDO> getUsersByStatus(Integer status) { |
| 380 | return userMapper.selectListByStatus(status); | 429 | return userMapper.selectListByStatus(status); |
| 381 | } | 430 | } |
| 382 | 431 |
yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/auth/AuthServiceImplTest.java
| @@ -5,13 +5,11 @@ import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; | @@ -5,13 +5,11 @@ import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; | ||
| 5 | import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; | 5 | import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; |
| 6 | import cn.iocoder.yudao.module.system.service.common.CaptchaService; | 6 | import cn.iocoder.yudao.module.system.service.common.CaptchaService; |
| 7 | import cn.iocoder.yudao.module.system.service.dept.PostService; | 7 | import cn.iocoder.yudao.module.system.service.dept.PostService; |
| 8 | +import cn.iocoder.yudao.module.system.service.logger.LoginLogService; | ||
| 8 | import cn.iocoder.yudao.module.system.service.permission.PermissionService; | 9 | import cn.iocoder.yudao.module.system.service.permission.PermissionService; |
| 9 | import cn.iocoder.yudao.module.system.service.user.UserService; | 10 | import cn.iocoder.yudao.module.system.service.user.UserService; |
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 11 | -import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; | ||
| 12 | -import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService; | ||
| 13 | -import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService; | ||
| 14 | -import cn.iocoder.yudao.coreservice.modules.system.service.user.SysUserCoreService; | 11 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; |
| 12 | +import cn.iocoder.yudao.module.system.service.social.SocialUserService; | ||
| 15 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 13 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 16 | import cn.iocoder.yudao.framework.security.core.LoginUser; | 14 | import cn.iocoder.yudao.framework.security.core.LoginUser; |
| 17 | import cn.iocoder.yudao.framework.test.core.util.AssertUtils; | 15 | import cn.iocoder.yudao.framework.test.core.util.AssertUtils; |
| @@ -48,8 +46,6 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | @@ -48,8 +46,6 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | ||
| 48 | @MockBean | 46 | @MockBean |
| 49 | private UserService userService; | 47 | private UserService userService; |
| 50 | @MockBean | 48 | @MockBean |
| 51 | - private SysUserCoreService userCoreService; | ||
| 52 | - @MockBean | ||
| 53 | private PermissionService permissionService; | 49 | private PermissionService permissionService; |
| 54 | @MockBean | 50 | @MockBean |
| 55 | private AuthenticationManager authenticationManager; | 51 | private AuthenticationManager authenticationManager; |
| @@ -58,11 +54,11 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | @@ -58,11 +54,11 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | ||
| 58 | @MockBean | 54 | @MockBean |
| 59 | private CaptchaService captchaService; | 55 | private CaptchaService captchaService; |
| 60 | @MockBean | 56 | @MockBean |
| 61 | - private SysLoginLogCoreService loginLogCoreService; | 57 | + private LoginLogService loginLogService; |
| 62 | @MockBean | 58 | @MockBean |
| 63 | - private SysUserSessionCoreService userSessionCoreService; | 59 | + private UserSessionService userSessionService; |
| 64 | @MockBean | 60 | @MockBean |
| 65 | - private SysSocialCoreService socialService; | 61 | + private SocialUserService socialService; |
| 66 | @MockBean | 62 | @MockBean |
| 67 | private PostService postService; | 63 | private PostService postService; |
| 68 | 64 | ||
| @@ -76,7 +72,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | @@ -76,7 +72,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | ||
| 76 | // 准备参数 | 72 | // 准备参数 |
| 77 | String username = randomString(); | 73 | String username = randomString(); |
| 78 | // mock 方法 | 74 | // mock 方法 |
| 79 | - SysUserDO user = randomPojo(SysUserDO.class, o -> o.setUsername(username)); | 75 | + UserDO user = randomPojo(UserDO.class, o -> o.setUsername(username)); |
| 80 | when(userService.getUserByUsername(eq(username))).thenReturn(user); | 76 | when(userService.getUserByUsername(eq(username))).thenReturn(user); |
| 81 | 77 | ||
| 82 | // 调用 | 78 | // 调用 |
| @@ -102,8 +98,8 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | @@ -102,8 +98,8 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | ||
| 102 | // 准备参数 | 98 | // 准备参数 |
| 103 | Long userId = randomLongId(); | 99 | Long userId = randomLongId(); |
| 104 | // mock 方法 01 | 100 | // mock 方法 01 |
| 105 | - SysUserDO user = randomPojo(SysUserDO.class, o -> o.setId(userId)); | ||
| 106 | - when(userCoreService.getUser(eq(userId))).thenReturn(user); | 101 | + UserDO user = randomPojo(UserDO.class, o -> o.setId(userId)); |
| 102 | + when(userService.getUser(eq(userId))).thenReturn(user); | ||
| 107 | // mock 方法 02 | 103 | // mock 方法 02 |
| 108 | Set<Long> roleIds = randomSet(Long.class); | 104 | Set<Long> roleIds = randomSet(Long.class); |
| 109 | when(permissionService.getUserRoleIds(eq(userId), eq(singleton(CommonStatusEnum.ENABLE.getStatus())))) | 105 | when(permissionService.getUserRoleIds(eq(userId), eq(singleton(CommonStatusEnum.ENABLE.getStatus())))) |
| @@ -137,7 +133,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | @@ -137,7 +133,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | ||
| 137 | // 调用, 并断言异常 | 133 | // 调用, 并断言异常 |
| 138 | assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_CAPTCHA_NOT_FOUND); | 134 | assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_CAPTCHA_NOT_FOUND); |
| 139 | // 校验调用参数 | 135 | // 校验调用参数 |
| 140 | - verify(loginLogCoreService, times(1)).createLoginLog( | 136 | + verify(loginLogService, times(1)).createLoginLog( |
| 141 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) | 137 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) |
| 142 | && o.getResult().equals(LoginResultEnum.CAPTCHA_NOT_FOUND.getResult())) | 138 | && o.getResult().equals(LoginResultEnum.CAPTCHA_NOT_FOUND.getResult())) |
| 143 | ); | 139 | ); |
| @@ -155,7 +151,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | @@ -155,7 +151,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | ||
| 155 | // 调用, 并断言异常 | 151 | // 调用, 并断言异常 |
| 156 | assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_CAPTCHA_CODE_ERROR); | 152 | assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_CAPTCHA_CODE_ERROR); |
| 157 | // 校验调用参数 | 153 | // 校验调用参数 |
| 158 | - verify(loginLogCoreService, times(1)).createLoginLog( | 154 | + verify(loginLogService, times(1)).createLoginLog( |
| 159 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) | 155 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) |
| 160 | && o.getResult().equals(LoginResultEnum.CAPTCHA_CODE_ERROR.getResult())) | 156 | && o.getResult().equals(LoginResultEnum.CAPTCHA_CODE_ERROR.getResult())) |
| 161 | ); | 157 | ); |
| @@ -176,7 +172,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | @@ -176,7 +172,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | ||
| 176 | assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_BAD_CREDENTIALS); | 172 | assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_BAD_CREDENTIALS); |
| 177 | // 校验调用参数 | 173 | // 校验调用参数 |
| 178 | verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid()); | 174 | verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid()); |
| 179 | - verify(loginLogCoreService, times(1)).createLoginLog( | 175 | + verify(loginLogService, times(1)).createLoginLog( |
| 180 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) | 176 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) |
| 181 | && o.getResult().equals(LoginResultEnum.BAD_CREDENTIALS.getResult())) | 177 | && o.getResult().equals(LoginResultEnum.BAD_CREDENTIALS.getResult())) |
| 182 | ); | 178 | ); |
| @@ -197,7 +193,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | @@ -197,7 +193,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | ||
| 197 | assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_USER_DISABLED); | 193 | assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_USER_DISABLED); |
| 198 | // 校验调用参数 | 194 | // 校验调用参数 |
| 199 | verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid()); | 195 | verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid()); |
| 200 | - verify(loginLogCoreService, times(1)).createLoginLog( | 196 | + verify(loginLogService, times(1)).createLoginLog( |
| 201 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) | 197 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) |
| 202 | && o.getResult().equals(LoginResultEnum.USER_DISABLED.getResult())) | 198 | && o.getResult().equals(LoginResultEnum.USER_DISABLED.getResult())) |
| 203 | ); | 199 | ); |
| @@ -218,7 +214,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | @@ -218,7 +214,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | ||
| 218 | assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_FAIL_UNKNOWN); | 214 | assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_FAIL_UNKNOWN); |
| 219 | // 校验调用参数 | 215 | // 校验调用参数 |
| 220 | verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid()); | 216 | verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid()); |
| 221 | - verify(loginLogCoreService, times(1)).createLoginLog( | 217 | + verify(loginLogService, times(1)).createLoginLog( |
| 222 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) | 218 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) |
| 223 | && o.getResult().equals(LoginResultEnum.UNKNOWN_ERROR.getResult())) | 219 | && o.getResult().equals(LoginResultEnum.UNKNOWN_ERROR.getResult())) |
| 224 | ); | 220 | ); |
| @@ -246,13 +242,13 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | @@ -246,13 +242,13 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | ||
| 246 | // mock 获得 User 拥有的角色编号数组 | 242 | // mock 获得 User 拥有的角色编号数组 |
| 247 | when(permissionService.getUserRoleIds(userId, singleton(CommonStatusEnum.ENABLE.getStatus()))).thenReturn(userRoleIds); | 243 | when(permissionService.getUserRoleIds(userId, singleton(CommonStatusEnum.ENABLE.getStatus()))).thenReturn(userRoleIds); |
| 248 | // mock 缓存登录用户到 Redis | 244 | // mock 缓存登录用户到 Redis |
| 249 | - when(userSessionCoreService.createUserSession(loginUser, userIp, userAgent)).thenReturn(sessionId); | 245 | + when(userSessionService.createUserSession(loginUser, userIp, userAgent)).thenReturn(sessionId); |
| 250 | // 调用, 并断言异常 | 246 | // 调用, 并断言异常 |
| 251 | String login = authService.login(reqVO, userIp, userAgent); | 247 | String login = authService.login(reqVO, userIp, userAgent); |
| 252 | assertEquals(sessionId, login); | 248 | assertEquals(sessionId, login); |
| 253 | // 校验调用参数 | 249 | // 校验调用参数 |
| 254 | verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid()); | 250 | verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid()); |
| 255 | - verify(loginLogCoreService, times(1)).createLoginLog( | 251 | + verify(loginLogService, times(1)).createLoginLog( |
| 256 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) | 252 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) |
| 257 | && o.getResult().equals(LoginResultEnum.SUCCESS.getResult())) | 253 | && o.getResult().equals(LoginResultEnum.SUCCESS.getResult())) |
| 258 | ); | 254 | ); |
| @@ -264,12 +260,12 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | @@ -264,12 +260,12 @@ public class AuthServiceImplTest extends BaseDbUnitTest { | ||
| 264 | String token = randomString(); | 260 | String token = randomString(); |
| 265 | LoginUser loginUser = randomPojo(LoginUser.class); | 261 | LoginUser loginUser = randomPojo(LoginUser.class); |
| 266 | // mock | 262 | // mock |
| 267 | - when(userSessionCoreService.getLoginUser(token)).thenReturn(loginUser); | 263 | + when(userSessionService.getLoginUser(token)).thenReturn(loginUser); |
| 268 | // 调用 | 264 | // 调用 |
| 269 | authService.logout(token); | 265 | authService.logout(token); |
| 270 | // 校验调用参数 | 266 | // 校验调用参数 |
| 271 | - verify(userSessionCoreService, times(1)).deleteUserSession(token); | ||
| 272 | - verify(loginLogCoreService, times(1)).createLoginLog( | 267 | + verify(userSessionService, times(1)).deleteUserSession(token); |
| 268 | + verify(loginLogService, times(1)).createLoginLog( | ||
| 273 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGOUT_SELF.getType()) | 269 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGOUT_SELF.getType()) |
| 274 | && o.getResult().equals(LoginResultEnum.SUCCESS.getResult())) | 270 | && o.getResult().equals(LoginResultEnum.SUCCESS.getResult())) |
| 275 | ); | 271 | ); |
yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/auth/UserSessionServiceImplTest.java
| 1 | package cn.iocoder.yudao.module.system.service.auth; | 1 | package cn.iocoder.yudao.module.system.service.auth; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.date.DateUtil; | 3 | import cn.hutool.core.date.DateUtil; |
| 4 | +import cn.iocoder.yudao.framework.security.config.SecurityProperties; | ||
| 5 | +import cn.iocoder.yudao.framework.security.core.LoginUser; | ||
| 4 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; |
| 5 | import cn.iocoder.yudao.module.system.dal.mysql.auth.SysUserSessionMapper; | 7 | import cn.iocoder.yudao.module.system.dal.mysql.auth.SysUserSessionMapper; |
| 8 | +import cn.iocoder.yudao.module.system.service.logger.LoginLogService; | ||
| 6 | import cn.iocoder.yudao.module.system.service.user.UserService; | 9 | import cn.iocoder.yudao.module.system.service.user.UserService; |
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.auth.SysUserSessionDO; | ||
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.dal.redis.auth.SysLoginUserCoreRedisDAO; | ||
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.enums.common.SysSexEnum; | ||
| 11 | -import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService; | 10 | +import cn.iocoder.yudao.module.system.dal.dataobject.auth.SysUserSessionDO; |
| 11 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; | ||
| 12 | +import cn.iocoder.yudao.module.system.dal.redis.auth.LoginUserRedisDAO; | ||
| 13 | +import cn.iocoder.yudao.module.system.enums.common.SysSexEnum; | ||
| 12 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 14 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 13 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 15 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 14 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 16 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| @@ -19,17 +21,19 @@ import org.springframework.boot.test.mock.mockito.MockBean; | @@ -19,17 +21,19 @@ import org.springframework.boot.test.mock.mockito.MockBean; | ||
| 19 | import org.springframework.context.annotation.Import; | 21 | import org.springframework.context.annotation.Import; |
| 20 | 22 | ||
| 21 | import javax.annotation.Resource; | 23 | import javax.annotation.Resource; |
| 24 | +import java.time.Duration; | ||
| 22 | import java.util.Date; | 25 | import java.util.Date; |
| 23 | import java.util.List; | 26 | import java.util.List; |
| 24 | import java.util.stream.Collectors; | 27 | import java.util.stream.Collectors; |
| 25 | import java.util.stream.Stream; | 28 | import java.util.stream.Stream; |
| 26 | 29 | ||
| 27 | import static cn.hutool.core.util.RandomUtil.randomEle; | 30 | import static cn.hutool.core.util.RandomUtil.randomEle; |
| 31 | +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime; | ||
| 28 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | 32 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; |
| 29 | -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; | ||
| 30 | -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString; | 33 | +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; |
| 31 | import static java.util.Collections.singletonList; | 34 | import static java.util.Collections.singletonList; |
| 32 | -import static org.junit.jupiter.api.Assertions.assertEquals; | 35 | +import static org.junit.jupiter.api.Assertions.*; |
| 36 | +import static org.junit.jupiter.api.Assertions.assertNull; | ||
| 33 | import static org.mockito.ArgumentMatchers.eq; | 37 | import static org.mockito.ArgumentMatchers.eq; |
| 34 | import static org.mockito.Mockito.when; | 38 | import static org.mockito.Mockito.when; |
| 35 | 39 | ||
| @@ -38,7 +42,7 @@ import static org.mockito.Mockito.when; | @@ -38,7 +42,7 @@ import static org.mockito.Mockito.when; | ||
| 38 | * | 42 | * |
| 39 | * @author Lyon | 43 | * @author Lyon |
| 40 | */ | 44 | */ |
| 41 | -@Import({UserSessionServiceImpl.class}) | 45 | +@Import({UserSessionServiceImpl.class, LoginUserRedisDAO.class}) |
| 42 | public class UserSessionServiceImplTest extends BaseDbAndRedisUnitTest { | 46 | public class UserSessionServiceImplTest extends BaseDbAndRedisUnitTest { |
| 43 | 47 | ||
| 44 | @Resource | 48 | @Resource |
| @@ -50,14 +54,17 @@ public class UserSessionServiceImplTest extends BaseDbAndRedisUnitTest { | @@ -50,14 +54,17 @@ public class UserSessionServiceImplTest extends BaseDbAndRedisUnitTest { | ||
| 50 | @MockBean | 54 | @MockBean |
| 51 | private UserService userService; | 55 | private UserService userService; |
| 52 | @MockBean | 56 | @MockBean |
| 53 | - private SysLoginLogCoreService loginLogCoreService; | 57 | + private LoginLogService loginLogService; |
| 54 | @MockBean | 58 | @MockBean |
| 55 | - private SysLoginUserCoreRedisDAO loginUserCoreRedisDAO; | 59 | + private LoginUserRedisDAO loginUserRedisDAO; |
| 60 | + | ||
| 61 | + @MockBean | ||
| 62 | + private SecurityProperties securityProperties; | ||
| 56 | 63 | ||
| 57 | @Test | 64 | @Test |
| 58 | public void testGetUserSessionPage_success() { | 65 | public void testGetUserSessionPage_success() { |
| 59 | // mock 数据 | 66 | // mock 数据 |
| 60 | - SysUserDO dbUser = randomPojo(SysUserDO.class, o -> { | 67 | + UserDO dbUser = randomPojo(UserDO.class, o -> { |
| 61 | o.setSex(randomEle(SysSexEnum.values()).getSex()); | 68 | o.setSex(randomEle(SysSexEnum.values()).getSex()); |
| 62 | o.setStatus(CommonStatusEnum.ENABLE.getStatus()); | 69 | o.setStatus(CommonStatusEnum.ENABLE.getStatus()); |
| 63 | }); | 70 | }); |
| @@ -124,4 +131,89 @@ public class UserSessionServiceImplTest extends BaseDbAndRedisUnitTest { | @@ -124,4 +131,89 @@ public class UserSessionServiceImplTest extends BaseDbAndRedisUnitTest { | ||
| 124 | assertPojoEquals(sessionDO, userSessionDOS.get(0), "updateTime"); | 131 | assertPojoEquals(sessionDO, userSessionDOS.get(0), "updateTime"); |
| 125 | } | 132 | } |
| 126 | 133 | ||
| 134 | + @Test | ||
| 135 | + public void testCreateUserSession_success() { | ||
| 136 | + // 准备参数 | ||
| 137 | + String userIp = randomString(); | ||
| 138 | + String userAgent = randomString(); | ||
| 139 | + LoginUser loginUser = randomPojo(LoginUser.class, o -> { | ||
| 140 | + o.setUserType(randomEle(UserTypeEnum.values()).getValue()); | ||
| 141 | + o.setTenantId(0L); // 租户设置为 0,因为暂未启用多租户组件 | ||
| 142 | + }); | ||
| 143 | + // mock 方法 | ||
| 144 | + when(securityProperties.getSessionTimeout()).thenReturn(Duration.ofDays(1)); | ||
| 145 | + | ||
| 146 | + // 调用 | ||
| 147 | + String sessionId = userSessionService.createUserSession(loginUser, userIp, userAgent); | ||
| 148 | + // 校验 SysUserSessionDO 记录 | ||
| 149 | + SysUserSessionDO userSessionDO = userSessionMapper.selectById(sessionId); | ||
| 150 | + assertPojoEquals(loginUser, userSessionDO, "id", "updateTime"); | ||
| 151 | + assertEquals(sessionId, userSessionDO.getId()); | ||
| 152 | + assertEquals(userIp, userSessionDO.getUserIp()); | ||
| 153 | + assertEquals(userAgent, userSessionDO.getUserAgent()); | ||
| 154 | + // 校验 LoginUser 缓存 | ||
| 155 | + LoginUser redisLoginUser = loginUserRedisDAO.get(sessionId); | ||
| 156 | + assertPojoEquals(loginUser, redisLoginUser, "username", "password"); | ||
| 157 | + } | ||
| 158 | + | ||
| 159 | + @Test | ||
| 160 | + public void testCreateRefreshUserSession_success() { | ||
| 161 | + // 准备参数 | ||
| 162 | + String sessionId = randomString(); | ||
| 163 | + String userIp = randomString(); | ||
| 164 | + String userAgent = randomString(); | ||
| 165 | + long timeLong = randomLongId(); | ||
| 166 | + String userName = randomString(); | ||
| 167 | + Date date = randomDate(); | ||
| 168 | + LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setUserType(randomEle(UserTypeEnum.values()).getValue())); | ||
| 169 | + // mock 方法 | ||
| 170 | + when(securityProperties.getSessionTimeout()).thenReturn(Duration.ofDays(1)); | ||
| 171 | + // mock 数据 | ||
| 172 | + loginUser.setUpdateTime(date); | ||
| 173 | + loginUserRedisDAO.set(sessionId, loginUser); | ||
| 174 | + SysUserSessionDO userSession = SysUserSessionDO.builder().id(sessionId) | ||
| 175 | + .userId(loginUser.getId()).userType(loginUser.getUserType()) | ||
| 176 | + .userIp(userIp).userAgent(userAgent).username(userName) | ||
| 177 | + .sessionTimeout(addTime(Duration.ofMillis(timeLong))) | ||
| 178 | + .build(); | ||
| 179 | + userSessionMapper.insert(userSession); | ||
| 180 | + | ||
| 181 | + // 调用 | ||
| 182 | + userSessionService.refreshUserSession(sessionId, loginUser); | ||
| 183 | + // 校验 LoginUser 缓存 | ||
| 184 | + LoginUser redisLoginUser = loginUserRedisDAO.get(sessionId); | ||
| 185 | + assertNotEquals(redisLoginUser.getUpdateTime(), date); | ||
| 186 | + // 校验 SysUserSessionDO 记录 | ||
| 187 | + SysUserSessionDO updateDO = userSessionMapper.selectById(sessionId); | ||
| 188 | + assertEquals(updateDO.getUsername(), loginUser.getUsername()); | ||
| 189 | + assertNotEquals(updateDO.getUpdateTime(), userSession.getUpdateTime()); | ||
| 190 | + assertNotEquals(updateDO.getSessionTimeout(), addTime(Duration.ofMillis(timeLong))); | ||
| 191 | + } | ||
| 192 | + | ||
| 193 | + @Test | ||
| 194 | + public void testDeleteUserSession_success() { | ||
| 195 | + // 准备参数 | ||
| 196 | + String sessionId = randomString(); | ||
| 197 | + String userIp = randomString(); | ||
| 198 | + String userAgent = randomString(); | ||
| 199 | + Long timeLong = randomLongId(); | ||
| 200 | + LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setUserType(randomEle(UserTypeEnum.values()).getValue())); | ||
| 201 | + // mock 存入 Redis | ||
| 202 | + when(securityProperties.getSessionTimeout()).thenReturn(Duration.ofDays(1)); | ||
| 203 | + // mock 数据 | ||
| 204 | + loginUserRedisDAO.set(sessionId, loginUser); | ||
| 205 | + SysUserSessionDO userSession = SysUserSessionDO.builder().id(sessionId) | ||
| 206 | + .userId(loginUser.getId()).userType(loginUser.getUserType()) | ||
| 207 | + .userIp(userIp).userAgent(userAgent).username(loginUser.getUsername()) | ||
| 208 | + .sessionTimeout(addTime(Duration.ofMillis(timeLong))) | ||
| 209 | + .build(); | ||
| 210 | + userSessionMapper.insert(userSession); | ||
| 211 | + | ||
| 212 | + // 调用 | ||
| 213 | + userSessionService.deleteUserSession(sessionId); | ||
| 214 | + // 校验数据不存在了 | ||
| 215 | + assertNull(loginUserRedisDAO.get(sessionId)); | ||
| 216 | + assertNull(userSessionMapper.selectById(sessionId)); | ||
| 217 | + } | ||
| 218 | + | ||
| 127 | } | 219 | } |
yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceTest.java
| @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 4 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptCreateReqVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptCreateReqVO; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptUpdateReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptUpdateReqVO; |
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | 7 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 8 | import cn.iocoder.yudao.module.system.dal.mysql.dept.SysDeptMapper; | 8 | import cn.iocoder.yudao.module.system.dal.mysql.dept.SysDeptMapper; |
| 9 | import cn.iocoder.yudao.module.system.enums.dept.DeptIdEnum; | 9 | import cn.iocoder.yudao.module.system.enums.dept.DeptIdEnum; |
| 10 | import cn.iocoder.yudao.module.system.mq.producer.dept.DeptProducer; | 10 | import cn.iocoder.yudao.module.system.mq.producer.dept.DeptProducer; |
yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/dept/PostServiceTest.java
| 1 | package cn.iocoder.yudao.module.system.service.dept; | 1 | package cn.iocoder.yudao.module.system.service.dept; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysPostDO; |
| 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; | 6 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; |
yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/dict/DictDataServiceTest.java
| 1 | package cn.iocoder.yudao.module.system.service.dict; | 1 | package cn.iocoder.yudao.module.system.service.dict; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO; | 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.dict.SysDictDataDO; |
| 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataCreateReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataCreateReqVO; |
| @@ -13,14 +13,17 @@ import cn.iocoder.yudao.module.system.mq.producer.dict.DictDataProducer; | @@ -13,14 +13,17 @@ import cn.iocoder.yudao.module.system.mq.producer.dict.DictDataProducer; | ||
| 13 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; | 13 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; |
| 14 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; | 14 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; |
| 15 | import cn.iocoder.yudao.module.system.test.BaseDbUnitTest; | 15 | import cn.iocoder.yudao.module.system.test.BaseDbUnitTest; |
| 16 | +import com.google.common.collect.ImmutableTable; | ||
| 16 | import org.junit.jupiter.api.Test; | 17 | import org.junit.jupiter.api.Test; |
| 17 | import org.springframework.boot.test.mock.mockito.MockBean; | 18 | import org.springframework.boot.test.mock.mockito.MockBean; |
| 18 | import org.springframework.context.annotation.Import; | 19 | import org.springframework.context.annotation.Import; |
| 19 | 20 | ||
| 20 | import javax.annotation.Resource; | 21 | import javax.annotation.Resource; |
| 22 | +import java.util.Date; | ||
| 21 | import java.util.List; | 23 | import java.util.List; |
| 22 | import java.util.function.Consumer; | 24 | import java.util.function.Consumer; |
| 23 | 25 | ||
| 26 | +import static cn.hutool.core.bean.BeanUtil.getFieldValue; | ||
| 24 | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; | 27 | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; |
| 25 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | 28 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; |
| 26 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | 29 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; |
| @@ -42,6 +45,37 @@ public class DictDataServiceTest extends BaseDbUnitTest { | @@ -42,6 +45,37 @@ public class DictDataServiceTest extends BaseDbUnitTest { | ||
| 42 | @MockBean | 45 | @MockBean |
| 43 | private DictDataProducer dictDataProducer; | 46 | private DictDataProducer dictDataProducer; |
| 44 | 47 | ||
| 48 | + /** | ||
| 49 | + * 测试加载到新的字典数据的情况 | ||
| 50 | + */ | ||
| 51 | + @Test | ||
| 52 | + @SuppressWarnings("unchecked") | ||
| 53 | + public void testInitLocalCache() { | ||
| 54 | + // mock 数据 | ||
| 55 | + SysDictDataDO dictData01 = randomDictDataDO(); | ||
| 56 | + dictDataMapper.insert(dictData01); | ||
| 57 | + SysDictDataDO dictData02 = randomDictDataDO(); | ||
| 58 | + dictDataMapper.insert(dictData02); | ||
| 59 | + | ||
| 60 | + // 调用 | ||
| 61 | + dictDataService.initLocalCache(); | ||
| 62 | + // 断言 labelDictDataCache 缓存 | ||
| 63 | + ImmutableTable<String, String, SysDictDataDO> labelDictDataCache = | ||
| 64 | + (ImmutableTable<String, String, SysDictDataDO>) getFieldValue(dictDataService, "labelDictDataCache"); | ||
| 65 | + assertEquals(2, labelDictDataCache.size()); | ||
| 66 | + assertPojoEquals(dictData01, labelDictDataCache.get(dictData01.getDictType(), dictData01.getLabel())); | ||
| 67 | + assertPojoEquals(dictData02, labelDictDataCache.get(dictData02.getDictType(), dictData02.getLabel())); | ||
| 68 | + // 断言 valueDictDataCache 缓存 | ||
| 69 | + ImmutableTable<String, String, SysDictDataDO> valueDictDataCache = | ||
| 70 | + (ImmutableTable<String, String, SysDictDataDO>) getFieldValue(dictDataService, "valueDictDataCache"); | ||
| 71 | + assertEquals(2, valueDictDataCache.size()); | ||
| 72 | + assertPojoEquals(dictData01, valueDictDataCache.get(dictData01.getDictType(), dictData01.getValue())); | ||
| 73 | + assertPojoEquals(dictData02, valueDictDataCache.get(dictData02.getDictType(), dictData02.getValue())); | ||
| 74 | + // 断言 maxUpdateTime 缓存 | ||
| 75 | + Date maxUpdateTime = (Date) getFieldValue(dictDataService, "maxUpdateTime"); | ||
| 76 | + assertEquals(ObjectUtils.max(dictData01.getUpdateTime(), dictData02.getUpdateTime()), maxUpdateTime); | ||
| 77 | + } | ||
| 78 | + | ||
| 45 | @Test | 79 | @Test |
| 46 | public void testGetDictDataPage() { | 80 | public void testGetDictDataPage() { |
| 47 | // mock 数据 | 81 | // mock 数据 |
yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/logger/LoginLogServiceImplTest.java
| 1 | package cn.iocoder.yudao.module.system.service.logger; | 1 | package cn.iocoder.yudao.module.system.service.logger; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.util.RandomUtil; | 3 | import cn.hutool.core.util.RandomUtil; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO; | 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.logger.SysLoginLogDO; |
| 5 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 5 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; | 7 | import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; |
| @@ -12,6 +12,9 @@ import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; | @@ -12,6 +12,9 @@ import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; | ||
| 12 | import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; | 12 | import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; |
| 13 | import cn.iocoder.yudao.framework.test.core.util.RandomUtils; | 13 | import cn.iocoder.yudao.framework.test.core.util.RandomUtils; |
| 14 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; | 14 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; |
| 15 | +import cn.iocoder.yudao.module.system.enums.logger.SysLoginLogTypeEnum; | ||
| 16 | +import cn.iocoder.yudao.module.system.enums.logger.SysLoginResultEnum; | ||
| 17 | +import cn.iocoder.yudao.module.system.service.logger.dto.LoginLogCreateReqDTO; | ||
| 15 | import cn.iocoder.yudao.module.system.test.BaseDbUnitTest; | 18 | import cn.iocoder.yudao.module.system.test.BaseDbUnitTest; |
| 16 | import org.junit.jupiter.api.Test; | 19 | import org.junit.jupiter.api.Test; |
| 17 | import org.springframework.context.annotation.Import; | 20 | import org.springframework.context.annotation.Import; |
| @@ -19,6 +22,7 @@ import org.springframework.context.annotation.Import; | @@ -19,6 +22,7 @@ import org.springframework.context.annotation.Import; | ||
| 19 | import javax.annotation.Resource; | 22 | import javax.annotation.Resource; |
| 20 | import java.util.List; | 23 | import java.util.List; |
| 21 | 24 | ||
| 25 | +import static cn.hutool.core.util.RandomUtil.randomEle; | ||
| 22 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | 26 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; |
| 23 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; | 27 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; |
| 24 | import static org.junit.jupiter.api.Assertions.assertEquals; | 28 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| @@ -27,7 +31,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; | @@ -27,7 +31,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; | ||
| 27 | public class LoginLogServiceImplTest extends BaseDbUnitTest { | 31 | public class LoginLogServiceImplTest extends BaseDbUnitTest { |
| 28 | 32 | ||
| 29 | @Resource | 33 | @Resource |
| 30 | - private LoginLogServiceImpl sysLoginLogService; | 34 | + private LoginLogServiceImpl loginLogService; |
| 31 | 35 | ||
| 32 | @Resource | 36 | @Resource |
| 33 | private LoginLogMapper loginLogMapper; | 37 | private LoginLogMapper loginLogMapper; |
| @@ -68,7 +72,7 @@ public class LoginLogServiceImplTest extends BaseDbUnitTest { | @@ -68,7 +72,7 @@ public class LoginLogServiceImplTest extends BaseDbUnitTest { | ||
| 68 | reqVO.setEndTime(buildTime(2021, 3, 7)); | 72 | reqVO.setEndTime(buildTime(2021, 3, 7)); |
| 69 | 73 | ||
| 70 | // 调用service方法 | 74 | // 调用service方法 |
| 71 | - PageResult<SysLoginLogDO> pageResult = sysLoginLogService.getLoginLogPage(reqVO); | 75 | + PageResult<SysLoginLogDO> pageResult = loginLogService.getLoginLogPage(reqVO); |
| 72 | 76 | ||
| 73 | // 断言,只查到了一条符合条件的 | 77 | // 断言,只查到了一条符合条件的 |
| 74 | assertEquals(1, pageResult.getTotal()); | 78 | assertEquals(1, pageResult.getTotal()); |
| @@ -114,10 +118,28 @@ public class LoginLogServiceImplTest extends BaseDbUnitTest { | @@ -114,10 +118,28 @@ public class LoginLogServiceImplTest extends BaseDbUnitTest { | ||
| 114 | 118 | ||
| 115 | 119 | ||
| 116 | // 调用service方法 | 120 | // 调用service方法 |
| 117 | - List<SysLoginLogDO> loginLogList = sysLoginLogService.getLoginLogList(reqVO); | 121 | + List<SysLoginLogDO> loginLogList = loginLogService.getLoginLogList(reqVO); |
| 118 | 122 | ||
| 119 | // 断言 | 123 | // 断言 |
| 120 | assertEquals(1, loginLogList.size()); | 124 | assertEquals(1, loginLogList.size()); |
| 121 | assertPojoEquals(loginLogDO, loginLogList.get(0)); | 125 | assertPojoEquals(loginLogDO, loginLogList.get(0)); |
| 122 | } | 126 | } |
| 127 | + | ||
| 128 | + @Test | ||
| 129 | + public void testCreateLoginLog() { | ||
| 130 | + LoginLogCreateReqDTO reqDTO = RandomUtils.randomPojo(LoginLogCreateReqDTO.class, vo -> { | ||
| 131 | + // 指定随机的范围,避免超出范围入库失败 | ||
| 132 | + vo.setUserType(randomEle(UserTypeEnum.values()).getValue()); | ||
| 133 | + vo.setLogType(randomEle(SysLoginLogTypeEnum.values()).getType()); | ||
| 134 | + vo.setResult(randomEle(SysLoginResultEnum.values()).getResult()); | ||
| 135 | + vo.setTraceId(TracerUtils.getTraceId()); | ||
| 136 | + }); | ||
| 137 | + | ||
| 138 | + // 调用 | ||
| 139 | + loginLogService.createLoginLog(reqDTO); | ||
| 140 | + // 断言,忽略基本字段 | ||
| 141 | + SysLoginLogDO sysLoginLogDO = loginLogMapper.selectOne(null); | ||
| 142 | + assertPojoEquals(reqDTO, sysLoginLogDO); | ||
| 143 | + } | ||
| 144 | + | ||
| 123 | } | 145 | } |
yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/logger/OperateLogServiceImplTest.java
| @@ -6,8 +6,8 @@ import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.Oper | @@ -6,8 +6,8 @@ import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.Oper | ||
| 6 | import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO; | 6 | import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO; |
| 7 | import cn.iocoder.yudao.module.system.dal.mysql.logger.OperateLogMapper; | 7 | import cn.iocoder.yudao.module.system.dal.mysql.logger.OperateLogMapper; |
| 8 | import cn.iocoder.yudao.module.system.service.user.UserService; | 8 | import cn.iocoder.yudao.module.system.service.user.UserService; |
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.enums.common.SysSexEnum; | 9 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; |
| 10 | +import cn.iocoder.yudao.module.system.enums.common.SysSexEnum; | ||
| 11 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 11 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 12 | import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; | 12 | import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; |
| 13 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 13 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| @@ -66,7 +66,7 @@ public class OperateLogServiceImplTest extends BaseDbUnitTest { | @@ -66,7 +66,7 @@ public class OperateLogServiceImplTest extends BaseDbUnitTest { | ||
| 66 | public void testGetOperateLogPage() { | 66 | public void testGetOperateLogPage() { |
| 67 | // 构造测试数据 | 67 | // 构造测试数据 |
| 68 | // 先构造用户 | 68 | // 先构造用户 |
| 69 | - SysUserDO user = RandomUtils.randomPojo(SysUserDO.class, o -> { | 69 | + UserDO user = RandomUtils.randomPojo(UserDO.class, o -> { |
| 70 | o.setNickname("wangkai"); | 70 | o.setNickname("wangkai"); |
| 71 | o.setSex(SysSexEnum.MALE.getSex()); | 71 | o.setSex(SysSexEnum.MALE.getSex()); |
| 72 | o.setStatus(CommonStatusEnum.ENABLE.getStatus()); | 72 | o.setStatus(CommonStatusEnum.ENABLE.getStatus()); |
| @@ -117,7 +117,7 @@ public class OperateLogServiceImplTest extends BaseDbUnitTest { | @@ -117,7 +117,7 @@ public class OperateLogServiceImplTest extends BaseDbUnitTest { | ||
| 117 | public void testGetOperateLogs() { | 117 | public void testGetOperateLogs() { |
| 118 | // 构造测试数据 | 118 | // 构造测试数据 |
| 119 | // 先构造用户 | 119 | // 先构造用户 |
| 120 | - SysUserDO user = RandomUtils.randomPojo(SysUserDO.class, o -> { | 120 | + UserDO user = RandomUtils.randomPojo(UserDO.class, o -> { |
| 121 | o.setNickname("wangkai"); | 121 | o.setNickname("wangkai"); |
| 122 | o.setSex(SysSexEnum.MALE.getSex()); | 122 | o.setSex(SysSexEnum.MALE.getSex()); |
| 123 | o.setStatus(CommonStatusEnum.ENABLE.getStatus()); | 123 | o.setStatus(CommonStatusEnum.ENABLE.getStatus()); |
yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceTest.java
| 1 | package cn.iocoder.yudao.module.system.service.permission; | 1 | package cn.iocoder.yudao.module.system.service.permission; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO; | 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 5 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysRoleDO; | ||
| 6 | import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleMenuDO; | 6 | import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleMenuDO; |
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysUserRoleDO; | 7 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysUserRoleDO; |
| 8 | import cn.iocoder.yudao.module.system.dal.mysql.permission.SysRoleMenuMapper; | 8 | import cn.iocoder.yudao.module.system.dal.mysql.permission.SysRoleMenuMapper; |
| 9 | import cn.iocoder.yudao.module.system.dal.mysql.permission.SysUserRoleMapper; | 9 | import cn.iocoder.yudao.module.system.dal.mysql.permission.SysUserRoleMapper; |
| 10 | import cn.iocoder.yudao.module.system.mq.producer.permission.PermissionProducer; | 10 | import cn.iocoder.yudao.module.system.mq.producer.permission.PermissionProducer; |
yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceTest.java
| @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.security.core.enums.DataScopeEnum; | @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.security.core.enums.DataScopeEnum; | ||
| 7 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleCreateReqVO; | 7 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleCreateReqVO; |
| 8 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePageReqVO; | 8 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePageReqVO; |
| 9 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleUpdateReqVO; | 9 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleUpdateReqVO; |
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.permission.SysRoleDO; | 10 | +import cn.iocoder.yudao.module.system.dal.dataobject.permission.SysRoleDO; |
| 11 | import cn.iocoder.yudao.module.system.dal.mysql.permission.SysRoleMapper; | 11 | import cn.iocoder.yudao.module.system.dal.mysql.permission.SysRoleMapper; |
| 12 | import cn.iocoder.yudao.module.system.enums.permission.RoleTypeEnum; | 12 | import cn.iocoder.yudao.module.system.enums.permission.RoleTypeEnum; |
| 13 | import cn.iocoder.yudao.module.system.mq.producer.permission.RoleProducer; | 13 | import cn.iocoder.yudao.module.system.mq.producer.permission.RoleProducer; |
yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/sms/SmsChannelServiceTest.java
| @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannel | @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannel | ||
| 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelUpdateReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelUpdateReqVO; |
| 7 | import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsChannelMapper; | 7 | import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsChannelMapper; |
| 8 | import cn.iocoder.yudao.module.system.mq.producer.sms.SmsProducer; | 8 | import cn.iocoder.yudao.module.system.mq.producer.sms.SmsProducer; |
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO; | 9 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsChannelDO; |
| 10 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 10 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 11 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 11 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 12 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; | 12 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; |
yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/sms/SmsLogServiceTest.java
| 1 | package cn.iocoder.yudao.module.system.service.sms; | 1 | package cn.iocoder.yudao.module.system.service.sms; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.map.MapUtil; | 3 | import cn.hutool.core.map.MapUtil; |
| 4 | +import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||
| 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO; |
| 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogPageReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogPageReqVO; |
| 7 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 6 | import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsLogMapper; | 8 | import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsLogMapper; |
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsLogDO; | ||
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.enums.sms.SysSmsReceiveStatusEnum; | ||
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.enums.sms.SysSmsSendStatusEnum; | ||
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.enums.sms.SysSmsTemplateTypeEnum; | 9 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsLogDO; |
| 10 | +import cn.iocoder.yudao.module.system.enums.sms.SysSmsReceiveStatusEnum; | ||
| 11 | +import cn.iocoder.yudao.module.system.enums.sms.SysSmsSendStatusEnum; | ||
| 12 | +import cn.iocoder.yudao.module.system.enums.sms.SysSmsTemplateTypeEnum; | ||
| 11 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 13 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 12 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 14 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 13 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; | 15 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; |
| @@ -17,16 +19,18 @@ import org.junit.jupiter.api.Test; | @@ -17,16 +19,18 @@ import org.junit.jupiter.api.Test; | ||
| 17 | import org.springframework.context.annotation.Import; | 19 | import org.springframework.context.annotation.Import; |
| 18 | 20 | ||
| 19 | import javax.annotation.Resource; | 21 | import javax.annotation.Resource; |
| 22 | +import java.util.Date; | ||
| 20 | import java.util.List; | 23 | import java.util.List; |
| 21 | import java.util.Map; | 24 | import java.util.Map; |
| 22 | import java.util.function.Consumer; | 25 | import java.util.function.Consumer; |
| 23 | 26 | ||
| 27 | +import static cn.hutool.core.util.RandomUtil.randomBoolean; | ||
| 24 | import static cn.hutool.core.util.RandomUtil.randomEle; | 28 | import static cn.hutool.core.util.RandomUtil.randomEle; |
| 25 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; | 29 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; |
| 26 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | 30 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; |
| 27 | -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; | ||
| 28 | -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString; | 31 | +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; |
| 29 | import static org.junit.jupiter.api.Assertions.assertEquals; | 32 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| 33 | +import static org.junit.jupiter.api.Assertions.assertNotNull; | ||
| 30 | 34 | ||
| 31 | @Import(SmsLogServiceImpl.class) | 35 | @Import(SmsLogServiceImpl.class) |
| 32 | public class SmsLogServiceTest extends BaseDbUnitTest { | 36 | public class SmsLogServiceTest extends BaseDbUnitTest { |
| @@ -130,6 +134,93 @@ public class SmsLogServiceTest extends BaseDbUnitTest { | @@ -130,6 +134,93 @@ public class SmsLogServiceTest extends BaseDbUnitTest { | ||
| 130 | assertPojoEquals(dbSmsLog, list.get(0)); | 134 | assertPojoEquals(dbSmsLog, list.get(0)); |
| 131 | } | 135 | } |
| 132 | 136 | ||
| 137 | + @Test | ||
| 138 | + public void testCreateSmsLog() { | ||
| 139 | + // 准备参数 | ||
| 140 | + String mobile = randomString(); | ||
| 141 | + Long userId = randomLongId(); | ||
| 142 | + Integer userType = randomEle(UserTypeEnum.values()).getValue(); | ||
| 143 | + Boolean isSend = randomBoolean(); | ||
| 144 | + SysSmsTemplateDO templateDO = randomPojo(SysSmsTemplateDO.class, | ||
| 145 | + o -> o.setType(randomEle(SysSmsTemplateTypeEnum.values()).getType())); | ||
| 146 | + String templateContent = randomString(); | ||
| 147 | + Map<String, Object> templateParams = randomTemplateParams(); | ||
| 148 | + // mock 方法 | ||
| 149 | + | ||
| 150 | + // 调用 | ||
| 151 | + Long logId = smsLogService.createSmsLog(mobile, userId, userType, isSend, | ||
| 152 | + templateDO, templateContent, templateParams); | ||
| 153 | + // 断言 | ||
| 154 | + SysSmsLogDO logDO = smsLogMapper.selectById(logId); | ||
| 155 | + assertEquals(isSend ? SysSmsSendStatusEnum.INIT.getStatus() : SysSmsSendStatusEnum.IGNORE.getStatus(), | ||
| 156 | + logDO.getSendStatus()); | ||
| 157 | + assertEquals(mobile, logDO.getMobile()); | ||
| 158 | + assertEquals(userType, logDO.getUserType()); | ||
| 159 | + assertEquals(userId, logDO.getUserId()); | ||
| 160 | + assertEquals(templateDO.getId(), logDO.getTemplateId()); | ||
| 161 | + assertEquals(templateDO.getCode(), logDO.getTemplateCode()); | ||
| 162 | + assertEquals(templateDO.getType(), logDO.getTemplateType()); | ||
| 163 | + assertEquals(templateDO.getChannelId(), logDO.getChannelId()); | ||
| 164 | + assertEquals(templateDO.getChannelCode(), logDO.getChannelCode()); | ||
| 165 | + assertEquals(templateContent, logDO.getTemplateContent()); | ||
| 166 | + assertEquals(templateParams, logDO.getTemplateParams()); | ||
| 167 | + assertEquals(SysSmsReceiveStatusEnum.INIT.getStatus(), logDO.getReceiveStatus()); | ||
| 168 | + } | ||
| 169 | + | ||
| 170 | + @Test | ||
| 171 | + public void testUpdateSmsSendResult() { | ||
| 172 | + // mock 数据 | ||
| 173 | + SysSmsLogDO dbSmsLog = randomSmsLogDO( | ||
| 174 | + o -> o.setSendStatus(SysSmsSendStatusEnum.IGNORE.getStatus())); | ||
| 175 | + smsLogMapper.insert(dbSmsLog); | ||
| 176 | + // 准备参数 | ||
| 177 | + Long id = dbSmsLog.getId(); | ||
| 178 | + Integer sendCode = randomInteger(); | ||
| 179 | + String sendMsg = randomString(); | ||
| 180 | + String apiSendCode = randomString(); | ||
| 181 | + String apiSendMsg = randomString(); | ||
| 182 | + String apiRequestId = randomString(); | ||
| 183 | + String apiSerialNo = randomString(); | ||
| 184 | + | ||
| 185 | + // 调用 | ||
| 186 | + smsLogService.updateSmsSendResult(id, sendCode, sendMsg, | ||
| 187 | + apiSendCode, apiSendMsg, apiRequestId, apiSerialNo); | ||
| 188 | + // 断言 | ||
| 189 | + dbSmsLog = smsLogMapper.selectById(id); | ||
| 190 | + assertEquals(CommonResult.isSuccess(sendCode) ? SysSmsSendStatusEnum.SUCCESS.getStatus() | ||
| 191 | + : SysSmsSendStatusEnum.FAILURE.getStatus(), dbSmsLog.getSendStatus()); | ||
| 192 | + assertNotNull(dbSmsLog.getSendTime()); | ||
| 193 | + assertEquals(sendMsg, dbSmsLog.getSendMsg()); | ||
| 194 | + assertEquals(apiSendCode, dbSmsLog.getApiSendCode()); | ||
| 195 | + assertEquals(apiSendMsg, dbSmsLog.getApiSendMsg()); | ||
| 196 | + assertEquals(apiRequestId, dbSmsLog.getApiRequestId()); | ||
| 197 | + assertEquals(apiSerialNo, dbSmsLog.getApiSerialNo()); | ||
| 198 | + } | ||
| 199 | + | ||
| 200 | + @Test | ||
| 201 | + public void testUpdateSmsReceiveResult() { | ||
| 202 | + // mock 数据 | ||
| 203 | + SysSmsLogDO dbSmsLog = randomSmsLogDO( | ||
| 204 | + o -> o.setReceiveStatus(SysSmsReceiveStatusEnum.INIT.getStatus())); | ||
| 205 | + smsLogMapper.insert(dbSmsLog); | ||
| 206 | + // 准备参数 | ||
| 207 | + Long id = dbSmsLog.getId(); | ||
| 208 | + Boolean success = randomBoolean(); | ||
| 209 | + Date receiveTime = randomDate(); | ||
| 210 | + String apiReceiveCode = randomString(); | ||
| 211 | + String apiReceiveMsg = randomString(); | ||
| 212 | + | ||
| 213 | + // 调用 | ||
| 214 | + smsLogService.updateSmsReceiveResult(id, success, receiveTime, apiReceiveCode, apiReceiveMsg); | ||
| 215 | + // 断言 | ||
| 216 | + dbSmsLog = smsLogMapper.selectById(id); | ||
| 217 | + assertEquals(success ? SysSmsReceiveStatusEnum.SUCCESS.getStatus() | ||
| 218 | + : SysSmsReceiveStatusEnum.FAILURE.getStatus(), dbSmsLog.getReceiveStatus()); | ||
| 219 | + assertEquals(receiveTime, dbSmsLog.getReceiveTime()); | ||
| 220 | + assertEquals(apiReceiveCode, dbSmsLog.getApiReceiveCode()); | ||
| 221 | + assertEquals(apiReceiveMsg, dbSmsLog.getApiReceiveMsg()); | ||
| 222 | + } | ||
| 223 | + | ||
| 133 | // ========== 随机对象 ========== | 224 | // ========== 随机对象 ========== |
| 134 | 225 | ||
| 135 | @SafeVarargs | 226 | @SafeVarargs |
yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/sms/SmsTemplateServiceTest.java
| @@ -6,9 +6,9 @@ import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTempla | @@ -6,9 +6,9 @@ import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTempla | ||
| 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateUpdateReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateUpdateReqVO; |
| 7 | import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsTemplateMapper; | 7 | import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsTemplateMapper; |
| 8 | import cn.iocoder.yudao.module.system.mq.producer.sms.SmsProducer; | 8 | import cn.iocoder.yudao.module.system.mq.producer.sms.SmsProducer; |
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsChannelDO; | ||
| 10 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 11 | -import cn.iocoder.yudao.coreservice.modules.system.enums.sms.SysSmsTemplateTypeEnum; | 9 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsChannelDO; |
| 10 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 11 | +import cn.iocoder.yudao.module.system.enums.sms.SysSmsTemplateTypeEnum; | ||
| 12 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 12 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 13 | import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; | 13 | import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; |
| 14 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 14 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| @@ -25,10 +25,14 @@ import org.springframework.boot.test.mock.mockito.MockBean; | @@ -25,10 +25,14 @@ import org.springframework.boot.test.mock.mockito.MockBean; | ||
| 25 | import org.springframework.context.annotation.Import; | 25 | import org.springframework.context.annotation.Import; |
| 26 | 26 | ||
| 27 | import javax.annotation.Resource; | 27 | import javax.annotation.Resource; |
| 28 | +import java.util.Date; | ||
| 28 | import java.util.List; | 29 | import java.util.List; |
| 30 | +import java.util.Map; | ||
| 29 | import java.util.function.Consumer; | 31 | import java.util.function.Consumer; |
| 30 | 32 | ||
| 33 | +import static cn.hutool.core.bean.BeanUtil.getFieldValue; | ||
| 31 | import static cn.hutool.core.util.RandomUtil.randomEle; | 34 | import static cn.hutool.core.util.RandomUtil.randomEle; |
| 35 | +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.max; | ||
| 32 | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; | 36 | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; |
| 33 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; | 37 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; |
| 34 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | 38 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; |
| @@ -57,6 +61,27 @@ public class SmsTemplateServiceTest extends BaseDbUnitTest { | @@ -57,6 +61,27 @@ public class SmsTemplateServiceTest extends BaseDbUnitTest { | ||
| 57 | private SmsProducer smsProducer; | 61 | private SmsProducer smsProducer; |
| 58 | 62 | ||
| 59 | @Test | 63 | @Test |
| 64 | + @SuppressWarnings("unchecked") | ||
| 65 | + void testInitLocalCache() { | ||
| 66 | + // mock 数据 | ||
| 67 | + SysSmsTemplateDO smsTemplate01 = randomSmsTemplateDO(); | ||
| 68 | + smsTemplateMapper.insert(smsTemplate01); | ||
| 69 | + SysSmsTemplateDO smsTemplate02 = randomSmsTemplateDO(); | ||
| 70 | + smsTemplateMapper.insert(smsTemplate02); | ||
| 71 | + | ||
| 72 | + // 调用 | ||
| 73 | + smsTemplateService.initLocalCache(); | ||
| 74 | + // 断言 deptCache 缓存 | ||
| 75 | + Map<String, SysSmsTemplateDO> smsTemplateCache = (Map<String, SysSmsTemplateDO>) getFieldValue(smsTemplateService, "smsTemplateCache"); | ||
| 76 | + assertEquals(2, smsTemplateCache.size()); | ||
| 77 | + assertPojoEquals(smsTemplate01, smsTemplateCache.get(smsTemplate01.getCode())); | ||
| 78 | + assertPojoEquals(smsTemplate02, smsTemplateCache.get(smsTemplate02.getCode())); | ||
| 79 | + // 断言 maxUpdateTime 缓存 | ||
| 80 | + Date maxUpdateTime = (Date) getFieldValue(smsTemplateService, "maxUpdateTime"); | ||
| 81 | + assertEquals(max(smsTemplate01.getUpdateTime(), smsTemplate02.getUpdateTime()), maxUpdateTime); | ||
| 82 | + } | ||
| 83 | + | ||
| 84 | + @Test | ||
| 60 | public void testParseTemplateContentParams() { | 85 | public void testParseTemplateContentParams() { |
| 61 | // 准备参数 | 86 | // 准备参数 |
| 62 | String content = "正在进行登录操作{operation},您的验证码是{code}"; | 87 | String content = "正在进行登录操作{operation},您的验证码是{code}"; |
yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/system/service/sms/SysSmsCoreServiceTest.java renamed to yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/sms/SysSmsSendServiceTest.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.sms; | 1 | +package cn.iocoder.yudao.module.system.service.sms; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.map.MapUtil; | 3 | import cn.hutool.core.map.MapUtil; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.mq.message.sms.SysSmsSendMessage; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.mq.producer.sms.SysSmsCoreProducer; | ||
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.service.sms.impl.SysSmsCoreServiceImpl; | 4 | +import cn.iocoder.yudao.module.system.dal.dataobject.sms.SysSmsTemplateDO; |
| 5 | +import cn.iocoder.yudao.module.system.mq.message.sms.SmsSendMessage; | ||
| 6 | +import cn.iocoder.yudao.module.system.mq.producer.sms.SmsProducer; | ||
| 8 | import cn.iocoder.yudao.framework.common.core.KeyValue; | 7 | import cn.iocoder.yudao.framework.common.core.KeyValue; |
| 9 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 8 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 10 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 9 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| @@ -24,29 +23,24 @@ import java.util.List; | @@ -24,29 +23,24 @@ import java.util.List; | ||
| 24 | import java.util.Map; | 23 | import java.util.Map; |
| 25 | 24 | ||
| 26 | import static cn.hutool.core.util.RandomUtil.randomEle; | 25 | import static cn.hutool.core.util.RandomUtil.randomEle; |
| 27 | -import static cn.iocoder.yudao.coreservice.modules.system.enums.SysErrorCodeConstants.*; | 26 | +import static cn.iocoder.yudao.module.system.enums.SysErrorCodeConstants.*; |
| 28 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | 27 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; |
| 29 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; | 28 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; |
| 30 | import static org.junit.jupiter.api.Assertions.assertEquals; | 29 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| 31 | import static org.mockito.ArgumentMatchers.eq; | 30 | import static org.mockito.ArgumentMatchers.eq; |
| 32 | import static org.mockito.Mockito.*; | 31 | import static org.mockito.Mockito.*; |
| 33 | 32 | ||
| 34 | -/** | ||
| 35 | - * {@link SysSmsCoreService} 的单元测试类 | ||
| 36 | - * | ||
| 37 | - * @author 芋道源码 | ||
| 38 | - */ | ||
| 39 | -public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { | 33 | +public class SysSmsSendServiceTest extends BaseMockitoUnitTest { |
| 40 | 34 | ||
| 41 | @InjectMocks | 35 | @InjectMocks |
| 42 | - private SysSmsCoreServiceImpl smsCoreService; | 36 | + private SysSmsSendServiceImpl smsService; |
| 43 | 37 | ||
| 44 | @Mock | 38 | @Mock |
| 45 | - private SysSmsTemplateCoreService smsTemplateCoreService; | 39 | + private SmsTemplateService smsTemplateService; |
| 46 | @Mock | 40 | @Mock |
| 47 | - private SysSmsLogCoreService smsLogCoreService; | 41 | + private SmsLogService smsLogService; |
| 48 | @Mock | 42 | @Mock |
| 49 | - private SysSmsCoreProducer smsCoreProducer; | 43 | + private SmsProducer smsProducer; |
| 50 | @Mock | 44 | @Mock |
| 51 | private SmsClientFactory smsClientFactory; | 45 | private SmsClientFactory smsClientFactory; |
| 52 | 46 | ||
| @@ -68,21 +62,21 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { | @@ -68,21 +62,21 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { | ||
| 68 | o.setContent("验证码为{code}, 操作为{op}"); | 62 | o.setContent("验证码为{code}, 操作为{op}"); |
| 69 | o.setParams(Lists.newArrayList("code", "op")); | 63 | o.setParams(Lists.newArrayList("code", "op")); |
| 70 | }); | 64 | }); |
| 71 | - when(smsTemplateCoreService.getSmsTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); | 65 | + when(smsTemplateService.getSmsTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); |
| 72 | String content = randomString(); | 66 | String content = randomString(); |
| 73 | - when(smsTemplateCoreService.formatSmsTemplateContent(eq(template.getContent()), eq(templateParams))) | 67 | + when(smsTemplateService.formatSmsTemplateContent(eq(template.getContent()), eq(templateParams))) |
| 74 | .thenReturn(content); | 68 | .thenReturn(content); |
| 75 | // mock SmsLogService 的方法 | 69 | // mock SmsLogService 的方法 |
| 76 | Long smsLogId = randomLongId(); | 70 | Long smsLogId = randomLongId(); |
| 77 | - when(smsLogCoreService.createSmsLog(eq(mobile), eq(userId), eq(userType), eq(Boolean.TRUE), eq(template), | 71 | + when(smsLogService.createSmsLog(eq(mobile), eq(userId), eq(userType), eq(Boolean.TRUE), eq(template), |
| 78 | eq(content), eq(templateParams))).thenReturn(smsLogId); | 72 | eq(content), eq(templateParams))).thenReturn(smsLogId); |
| 79 | 73 | ||
| 80 | // 调用 | 74 | // 调用 |
| 81 | - Long resultSmsLogId = smsCoreService.sendSingleSms(mobile, userId, userType, templateCode, templateParams); | 75 | + Long resultSmsLogId = smsService.sendSingleSms(mobile, userId, userType, templateCode, templateParams); |
| 82 | // 断言 | 76 | // 断言 |
| 83 | assertEquals(smsLogId, resultSmsLogId); | 77 | assertEquals(smsLogId, resultSmsLogId); |
| 84 | // 断言调用 | 78 | // 断言调用 |
| 85 | - verify(smsCoreProducer, times(1)).sendSmsSendMessage(eq(smsLogId), eq(mobile), | 79 | + verify(smsProducer, times(1)).sendSmsSendMessage(eq(smsLogId), eq(mobile), |
| 86 | eq(template.getChannelId()), eq(template.getApiTemplateId()), | 80 | eq(template.getChannelId()), eq(template.getApiTemplateId()), |
| 87 | eq(Lists.newArrayList(new KeyValue<>("code", "1234"), new KeyValue<>("op", "login")))); | 81 | eq(Lists.newArrayList(new KeyValue<>("code", "1234"), new KeyValue<>("op", "login")))); |
| 88 | } | 82 | } |
| @@ -105,21 +99,21 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { | @@ -105,21 +99,21 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { | ||
| 105 | o.setContent("验证码为{code}, 操作为{op}"); | 99 | o.setContent("验证码为{code}, 操作为{op}"); |
| 106 | o.setParams(Lists.newArrayList("code", "op")); | 100 | o.setParams(Lists.newArrayList("code", "op")); |
| 107 | }); | 101 | }); |
| 108 | - when(smsTemplateCoreService.getSmsTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); | 102 | + when(smsTemplateService.getSmsTemplateByCodeFromCache(eq(templateCode))).thenReturn(template); |
| 109 | String content = randomString(); | 103 | String content = randomString(); |
| 110 | - when(smsTemplateCoreService.formatSmsTemplateContent(eq(template.getContent()), eq(templateParams))) | 104 | + when(smsTemplateService.formatSmsTemplateContent(eq(template.getContent()), eq(templateParams))) |
| 111 | .thenReturn(content); | 105 | .thenReturn(content); |
| 112 | // mock SmsLogService 的方法 | 106 | // mock SmsLogService 的方法 |
| 113 | Long smsLogId = randomLongId(); | 107 | Long smsLogId = randomLongId(); |
| 114 | - when(smsLogCoreService.createSmsLog(eq(mobile), eq(userId), eq(userType), eq(Boolean.FALSE), eq(template), | 108 | + when(smsLogService.createSmsLog(eq(mobile), eq(userId), eq(userType), eq(Boolean.FALSE), eq(template), |
| 115 | eq(content), eq(templateParams))).thenReturn(smsLogId); | 109 | eq(content), eq(templateParams))).thenReturn(smsLogId); |
| 116 | 110 | ||
| 117 | // 调用 | 111 | // 调用 |
| 118 | - Long resultSmsLogId = smsCoreService.sendSingleSms(mobile, userId, userType, templateCode, templateParams); | 112 | + Long resultSmsLogId = smsService.sendSingleSms(mobile, userId, userType, templateCode, templateParams); |
| 119 | // 断言 | 113 | // 断言 |
| 120 | assertEquals(smsLogId, resultSmsLogId); | 114 | assertEquals(smsLogId, resultSmsLogId); |
| 121 | // 断言调用 | 115 | // 断言调用 |
| 122 | - verify(smsCoreProducer, times(0)).sendSmsSendMessage(anyLong(), anyString(), | 116 | + verify(smsProducer, times(0)).sendSmsSendMessage(anyLong(), anyString(), |
| 123 | anyLong(), any(), anyList()); | 117 | anyLong(), any(), anyList()); |
| 124 | } | 118 | } |
| 125 | 119 | ||
| @@ -130,7 +124,7 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { | @@ -130,7 +124,7 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { | ||
| 130 | // mock 方法 | 124 | // mock 方法 |
| 131 | 125 | ||
| 132 | // 调用,并断言异常 | 126 | // 调用,并断言异常 |
| 133 | - assertServiceException(() -> smsCoreService.checkSmsTemplateValid(templateCode), | 127 | + assertServiceException(() -> smsService.checkSmsTemplateValid(templateCode), |
| 134 | SMS_SEND_TEMPLATE_NOT_EXISTS); | 128 | SMS_SEND_TEMPLATE_NOT_EXISTS); |
| 135 | } | 129 | } |
| 136 | 130 | ||
| @@ -143,7 +137,7 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { | @@ -143,7 +137,7 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { | ||
| 143 | // mock 方法 | 137 | // mock 方法 |
| 144 | 138 | ||
| 145 | // 调用,并断言异常 | 139 | // 调用,并断言异常 |
| 146 | - assertServiceException(() -> smsCoreService.buildTemplateParams(template, templateParams), | 140 | + assertServiceException(() -> smsService.buildTemplateParams(template, templateParams), |
| 147 | SMS_SEND_MOBILE_TEMPLATE_PARAM_MISS, "code"); | 141 | SMS_SEND_MOBILE_TEMPLATE_PARAM_MISS, "code"); |
| 148 | } | 142 | } |
| 149 | 143 | ||
| @@ -153,7 +147,7 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { | @@ -153,7 +147,7 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { | ||
| 153 | // mock 方法 | 147 | // mock 方法 |
| 154 | 148 | ||
| 155 | // 调用,并断言异常 | 149 | // 调用,并断言异常 |
| 156 | - assertServiceException(() -> smsCoreService.checkMobile(null), | 150 | + assertServiceException(() -> smsService.checkMobile(null), |
| 157 | SMS_SEND_MOBILE_NOT_EXISTS); | 151 | SMS_SEND_MOBILE_NOT_EXISTS); |
| 158 | } | 152 | } |
| 159 | 153 | ||
| @@ -161,7 +155,7 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { | @@ -161,7 +155,7 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { | ||
| 161 | @SuppressWarnings("unchecked") | 155 | @SuppressWarnings("unchecked") |
| 162 | public void testDoSendSms() { | 156 | public void testDoSendSms() { |
| 163 | // 准备参数 | 157 | // 准备参数 |
| 164 | - SysSmsSendMessage message = randomPojo(SysSmsSendMessage.class); | 158 | + SmsSendMessage message = randomPojo(SmsSendMessage.class); |
| 165 | // mock SmsClientFactory 的方法 | 159 | // mock SmsClientFactory 的方法 |
| 166 | SmsClient smsClient = spy(SmsClient.class); | 160 | SmsClient smsClient = spy(SmsClient.class); |
| 167 | when(smsClientFactory.getSmsClient(eq(message.getChannelId()))).thenReturn(smsClient); | 161 | when(smsClientFactory.getSmsClient(eq(message.getChannelId()))).thenReturn(smsClient); |
| @@ -171,9 +165,9 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { | @@ -171,9 +165,9 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { | ||
| 171 | eq(message.getTemplateParams()))).thenReturn(sendResult); | 165 | eq(message.getTemplateParams()))).thenReturn(sendResult); |
| 172 | 166 | ||
| 173 | // 调用 | 167 | // 调用 |
| 174 | - smsCoreService.doSendSms(message); | 168 | + smsService.doSendSms(message); |
| 175 | // 断言 | 169 | // 断言 |
| 176 | - verify(smsLogCoreService, times(1)).updateSmsSendResult(eq(message.getLogId()), | 170 | + verify(smsLogService, times(1)).updateSmsSendResult(eq(message.getLogId()), |
| 177 | eq(sendResult.getCode()), eq(sendResult.getMsg()), eq(sendResult.getApiCode()), | 171 | eq(sendResult.getCode()), eq(sendResult.getMsg()), eq(sendResult.getApiCode()), |
| 178 | eq(sendResult.getApiMsg()), eq(sendResult.getApiRequestId()), eq(sendResult.getData().getSerialNo())); | 172 | eq(sendResult.getApiMsg()), eq(sendResult.getApiRequestId()), eq(sendResult.getData().getSerialNo())); |
| 179 | } | 173 | } |
| @@ -190,9 +184,9 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { | @@ -190,9 +184,9 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { | ||
| 190 | List<SmsReceiveRespDTO> receiveResults = randomPojoList(SmsReceiveRespDTO.class); | 184 | List<SmsReceiveRespDTO> receiveResults = randomPojoList(SmsReceiveRespDTO.class); |
| 191 | 185 | ||
| 192 | // 调用 | 186 | // 调用 |
| 193 | - smsCoreService.receiveSmsStatus(channelCode, text); | 187 | + smsService.receiveSmsStatus(channelCode, text); |
| 194 | // 断言 | 188 | // 断言 |
| 195 | - receiveResults.forEach(result -> smsLogCoreService.updateSmsReceiveResult(eq(result.getLogId()), eq(result.getSuccess()), | 189 | + receiveResults.forEach(result -> smsLogService.updateSmsReceiveResult(eq(result.getLogId()), eq(result.getSuccess()), |
| 196 | eq(result.getReceiveTime()), eq(result.getErrorCode()), eq(result.getErrorCode()))); | 190 | eq(result.getReceiveTime()), eq(result.getErrorCode()), eq(result.getErrorCode()))); |
| 197 | } | 191 | } |
| 198 | 192 |
yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/system/service/social/SysSocialCoreServiceTest.java renamed to yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/social/SocialUsererviceTest.java
| 1 | -package cn.iocoder.yudao.coreservice.modules.system.service.social; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.coreservice.BaseDbAndRedisUnitTest; | ||
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.social.SysSocialUserDO; | ||
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.social.SysSocialUserCoreMapper; | ||
| 6 | -import cn.iocoder.yudao.coreservice.modules.system.dal.redis.social.SysSocialAuthUserRedisDAO; | ||
| 7 | -import cn.iocoder.yudao.coreservice.modules.system.enums.social.SysSocialTypeEnum; | ||
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.service.social.impl.SysSocialCoreServiceImpl; | 1 | +package cn.iocoder.yudao.module.system.service.social; |
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.system.dal.dataobject.social.SysSocialUserDO; | ||
| 4 | +import cn.iocoder.yudao.module.system.dal.mysql.social.SysSocialUserMapper; | ||
| 5 | +import cn.iocoder.yudao.module.system.dal.redis.social.SocialAuthUserRedisDAO; | ||
| 6 | +import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; | ||
| 9 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 7 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 8 | +import cn.iocoder.yudao.module.system.test.BaseDbAndRedisUnitTest; | ||
| 10 | import com.xkcoding.justauth.AuthRequestFactory; | 9 | import com.xkcoding.justauth.AuthRequestFactory; |
| 11 | import me.zhyd.oauth.model.AuthUser; | 10 | import me.zhyd.oauth.model.AuthUser; |
| 12 | import org.junit.jupiter.api.Test; | 11 | import org.junit.jupiter.api.Test; |
| @@ -23,19 +22,14 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId | @@ -23,19 +22,14 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId | ||
| 23 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; | 22 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; |
| 24 | import static org.junit.jupiter.api.Assertions.assertEquals; | 23 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| 25 | 24 | ||
| 26 | -/** | ||
| 27 | - * {@link SysSocialCoreServiceImpl} 的单元测试类 | ||
| 28 | - * | ||
| 29 | - * @author 芋道源码 | ||
| 30 | - */ | ||
| 31 | -@Import({SysSocialCoreServiceImpl.class, SysSocialAuthUserRedisDAO.class}) | ||
| 32 | -public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest { | 25 | +@Import({SocialUserServiceImpl.class, SocialAuthUserRedisDAO.class}) |
| 26 | +public class SocialUsererviceTest extends BaseDbAndRedisUnitTest { | ||
| 33 | 27 | ||
| 34 | @Resource | 28 | @Resource |
| 35 | - private SysSocialCoreServiceImpl socialService; | 29 | + private SocialUserServiceImpl socialService; |
| 36 | 30 | ||
| 37 | @Resource | 31 | @Resource |
| 38 | - private SysSocialUserCoreMapper socialUserMapper; | 32 | + private SysSocialUserMapper socialUserMapper; |
| 39 | 33 | ||
| 40 | @MockBean | 34 | @MockBean |
| 41 | private AuthRequestFactory authRequestFactory; | 35 | private AuthRequestFactory authRequestFactory; |
| @@ -48,7 +42,7 @@ public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest { | @@ -48,7 +42,7 @@ public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest { | ||
| 48 | // mock 数据 | 42 | // mock 数据 |
| 49 | // 准备参数 | 43 | // 准备参数 |
| 50 | Long userId = randomLongId(); | 44 | Long userId = randomLongId(); |
| 51 | - Integer type = randomEle(SysSocialTypeEnum.values()).getType(); | 45 | + Integer type = randomEle(SocialTypeEnum.values()).getType(); |
| 52 | AuthUser authUser = randomPojo(AuthUser.class); | 46 | AuthUser authUser = randomPojo(AuthUser.class); |
| 53 | // mock 方法 | 47 | // mock 方法 |
| 54 | 48 | ||
| @@ -68,7 +62,7 @@ public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest { | @@ -68,7 +62,7 @@ public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest { | ||
| 68 | // mock 数据 | 62 | // mock 数据 |
| 69 | SysSocialUserDO dbSocialUser = randomPojo(SysSocialUserDO.class, socialUserDO -> { | 63 | SysSocialUserDO dbSocialUser = randomPojo(SysSocialUserDO.class, socialUserDO -> { |
| 70 | socialUserDO.setUserType(UserTypeEnum.ADMIN.getValue()); | 64 | socialUserDO.setUserType(UserTypeEnum.ADMIN.getValue()); |
| 71 | - socialUserDO.setType(randomEle(SysSocialTypeEnum.values()).getType()); | 65 | + socialUserDO.setType(randomEle(SocialTypeEnum.values()).getType()); |
| 72 | }); | 66 | }); |
| 73 | socialUserMapper.insert(dbSocialUser); | 67 | socialUserMapper.insert(dbSocialUser); |
| 74 | // 准备参数 | 68 | // 准备参数 |
| @@ -93,7 +87,7 @@ public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest { | @@ -93,7 +87,7 @@ public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest { | ||
| 93 | // mock 数据 | 87 | // mock 数据 |
| 94 | SysSocialUserDO dbSocialUser = randomPojo(SysSocialUserDO.class, socialUserDO -> { | 88 | SysSocialUserDO dbSocialUser = randomPojo(SysSocialUserDO.class, socialUserDO -> { |
| 95 | socialUserDO.setUserType(UserTypeEnum.ADMIN.getValue()); | 89 | socialUserDO.setUserType(UserTypeEnum.ADMIN.getValue()); |
| 96 | - socialUserDO.setType(randomEle(SysSocialTypeEnum.values()).getType()); | 90 | + socialUserDO.setType(randomEle(SocialTypeEnum.values()).getType()); |
| 97 | }); | 91 | }); |
| 98 | socialUserMapper.insert(dbSocialUser); | 92 | socialUserMapper.insert(dbSocialUser); |
| 99 | // 准备参数 | 93 | // 准备参数 |
| @@ -131,7 +125,7 @@ public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest { | @@ -131,7 +125,7 @@ public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest { | ||
| 131 | // mock 数据 | 125 | // mock 数据 |
| 132 | SysSocialUserDO oldSocialUser = randomPojo(SysSocialUserDO.class, socialUserDO -> { | 126 | SysSocialUserDO oldSocialUser = randomPojo(SysSocialUserDO.class, socialUserDO -> { |
| 133 | socialUserDO.setUserType(UserTypeEnum.ADMIN.getValue()); | 127 | socialUserDO.setUserType(UserTypeEnum.ADMIN.getValue()); |
| 134 | - socialUserDO.setType(randomEle(SysSocialTypeEnum.values()).getType()); | 128 | + socialUserDO.setType(randomEle(SocialTypeEnum.values()).getType()); |
| 135 | }); | 129 | }); |
| 136 | socialUserMapper.insert(oldSocialUser); | 130 | socialUserMapper.insert(oldSocialUser); |
| 137 | // 准备参数 | 131 | // 准备参数 |
| @@ -154,7 +148,7 @@ public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest { | @@ -154,7 +148,7 @@ public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest { | ||
| 154 | // mock 数据 | 148 | // mock 数据 |
| 155 | SysSocialUserDO oldSocialUser = randomPojo(SysSocialUserDO.class, socialUserDO -> { | 149 | SysSocialUserDO oldSocialUser = randomPojo(SysSocialUserDO.class, socialUserDO -> { |
| 156 | socialUserDO.setUserType(UserTypeEnum.ADMIN.getValue()); | 150 | socialUserDO.setUserType(UserTypeEnum.ADMIN.getValue()); |
| 157 | - socialUserDO.setType(randomEle(SysSocialTypeEnum.values()).getType()); | 151 | + socialUserDO.setType(randomEle(SocialTypeEnum.values()).getType()); |
| 158 | }); | 152 | }); |
| 159 | socialUserMapper.insert(oldSocialUser); | 153 | socialUserMapper.insert(oldSocialUser); |
| 160 | // 准备参数 | 154 | // 准备参数 |
yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceTest.java
| @@ -5,7 +5,7 @@ import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantExportReq | @@ -5,7 +5,7 @@ import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantExportReq | ||
| 5 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantPageReqVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantPageReqVO; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantUpdateReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantUpdateReqVO; |
| 7 | import cn.iocoder.yudao.module.system.dal.mysql.tenant.SysTenantMapper; | 7 | import cn.iocoder.yudao.module.system.dal.mysql.tenant.SysTenantMapper; |
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.tenant.SysTenantDO; | 8 | +import cn.iocoder.yudao.module.system.dal.dataobject.tenant.SysTenantDO; |
| 9 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 9 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 10 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 10 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 11 | import cn.iocoder.yudao.module.system.test.BaseDbUnitTest; | 11 | import cn.iocoder.yudao.module.system.test.BaseDbUnitTest; |
yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/user/UserServiceImplTest.java
| @@ -5,16 +5,16 @@ import cn.hutool.core.util.RandomUtil; | @@ -5,16 +5,16 @@ import cn.hutool.core.util.RandomUtil; | ||
| 5 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; |
| 7 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*; | 7 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*; |
| 8 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysDeptDO; | ||
| 9 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dept.SysPostDO; | ||
| 10 | -import cn.iocoder.yudao.module.system.dal.mysql.user.SysUserMapper; | 8 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysDeptDO; |
| 9 | +import cn.iocoder.yudao.module.system.dal.dataobject.dept.SysPostDO; | ||
| 10 | +import cn.iocoder.yudao.module.system.dal.mysql.user.UserMapper; | ||
| 11 | import cn.iocoder.yudao.module.system.service.dept.DeptService; | 11 | import cn.iocoder.yudao.module.system.service.dept.DeptService; |
| 12 | import cn.iocoder.yudao.module.system.service.dept.PostService; | 12 | import cn.iocoder.yudao.module.system.service.dept.PostService; |
| 13 | import cn.iocoder.yudao.module.system.service.permission.PermissionService; | 13 | import cn.iocoder.yudao.module.system.service.permission.PermissionService; |
| 14 | import cn.iocoder.yudao.coreservice.modules.infra.service.file.InfFileCoreService; | 14 | import cn.iocoder.yudao.coreservice.modules.infra.service.file.InfFileCoreService; |
| 15 | -import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | ||
| 16 | -import cn.iocoder.yudao.coreservice.modules.system.enums.common.SysSexEnum; | ||
| 17 | -import cn.iocoder.yudao.coreservice.modules.system.service.dept.SysDeptCoreService; | 15 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; |
| 16 | +import cn.iocoder.yudao.module.system.enums.common.SysSexEnum; | ||
| 17 | +import cn.iocoder.yudao.module.system.service.dept.SysDeptCoreService; | ||
| 18 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 18 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 19 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 19 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 20 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; | 20 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; |
| @@ -52,7 +52,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -52,7 +52,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 52 | private UserServiceImpl userService; | 52 | private UserServiceImpl userService; |
| 53 | 53 | ||
| 54 | @Resource | 54 | @Resource |
| 55 | - private SysUserMapper userMapper; | 55 | + private UserMapper userMapper; |
| 56 | 56 | ||
| 57 | @MockBean | 57 | @MockBean |
| 58 | private DeptService deptService; | 58 | private DeptService deptService; |
| @@ -94,7 +94,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -94,7 +94,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 94 | // 调用 | 94 | // 调用 |
| 95 | Long userId = userService.createUser(reqVO); | 95 | Long userId = userService.createUser(reqVO); |
| 96 | // 断言 | 96 | // 断言 |
| 97 | - SysUserDO user = userMapper.selectById(userId); | 97 | + UserDO user = userMapper.selectById(userId); |
| 98 | assertPojoEquals(reqVO, user, "password"); | 98 | assertPojoEquals(reqVO, user, "password"); |
| 99 | assertEquals("yudaoyuanma", user.getPassword()); | 99 | assertEquals("yudaoyuanma", user.getPassword()); |
| 100 | assertEquals(CommonStatusEnum.ENABLE.getStatus(), user.getStatus()); | 100 | assertEquals(CommonStatusEnum.ENABLE.getStatus(), user.getStatus()); |
| @@ -103,7 +103,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -103,7 +103,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 103 | @Test | 103 | @Test |
| 104 | public void testUpdateUser_success() { | 104 | public void testUpdateUser_success() { |
| 105 | // mock 数据 | 105 | // mock 数据 |
| 106 | - SysUserDO dbUser = randomSysUserDO(); | 106 | + UserDO dbUser = randomSysUserDO(); |
| 107 | userMapper.insert(dbUser); | 107 | userMapper.insert(dbUser); |
| 108 | // 准备参数 | 108 | // 准备参数 |
| 109 | UserUpdateReqVO reqVO = randomPojo(UserUpdateReqVO.class, o -> { | 109 | UserUpdateReqVO reqVO = randomPojo(UserUpdateReqVO.class, o -> { |
| @@ -128,14 +128,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -128,14 +128,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 128 | // 调用 | 128 | // 调用 |
| 129 | userService.updateUser(reqVO); | 129 | userService.updateUser(reqVO); |
| 130 | // 断言 | 130 | // 断言 |
| 131 | - SysUserDO user = userMapper.selectById(reqVO.getId()); | 131 | + UserDO user = userMapper.selectById(reqVO.getId()); |
| 132 | assertPojoEquals(reqVO, user); | 132 | assertPojoEquals(reqVO, user); |
| 133 | } | 133 | } |
| 134 | 134 | ||
| 135 | @Test | 135 | @Test |
| 136 | public void testUpdateUserProfile_success() { | 136 | public void testUpdateUserProfile_success() { |
| 137 | // mock 数据 | 137 | // mock 数据 |
| 138 | - SysUserDO dbUser = randomSysUserDO(); | 138 | + UserDO dbUser = randomSysUserDO(); |
| 139 | userMapper.insert(dbUser); | 139 | userMapper.insert(dbUser); |
| 140 | // 准备参数 | 140 | // 准备参数 |
| 141 | Long userId = dbUser.getId(); | 141 | Long userId = dbUser.getId(); |
| @@ -147,14 +147,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -147,14 +147,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 147 | // 调用 | 147 | // 调用 |
| 148 | userService.updateUserProfile(userId, reqVO); | 148 | userService.updateUserProfile(userId, reqVO); |
| 149 | // 断言 | 149 | // 断言 |
| 150 | - SysUserDO user = userMapper.selectById(userId); | 150 | + UserDO user = userMapper.selectById(userId); |
| 151 | assertPojoEquals(reqVO, user); | 151 | assertPojoEquals(reqVO, user); |
| 152 | } | 152 | } |
| 153 | 153 | ||
| 154 | @Test | 154 | @Test |
| 155 | public void testUpdateUserPassword_success() { | 155 | public void testUpdateUserPassword_success() { |
| 156 | // mock 数据 | 156 | // mock 数据 |
| 157 | - SysUserDO dbUser = randomSysUserDO(o -> o.setPassword("encode:yudao")); | 157 | + UserDO dbUser = randomSysUserDO(o -> o.setPassword("encode:yudao")); |
| 158 | userMapper.insert(dbUser); | 158 | userMapper.insert(dbUser); |
| 159 | // 准备参数 | 159 | // 准备参数 |
| 160 | Long userId = dbUser.getId(); | 160 | Long userId = dbUser.getId(); |
| @@ -170,14 +170,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -170,14 +170,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 170 | // 调用 | 170 | // 调用 |
| 171 | userService.updateUserPassword(userId, reqVO); | 171 | userService.updateUserPassword(userId, reqVO); |
| 172 | // 断言 | 172 | // 断言 |
| 173 | - SysUserDO user = userMapper.selectById(userId); | 173 | + UserDO user = userMapper.selectById(userId); |
| 174 | assertEquals("encode:yuanma", user.getPassword()); | 174 | assertEquals("encode:yuanma", user.getPassword()); |
| 175 | } | 175 | } |
| 176 | 176 | ||
| 177 | @Test | 177 | @Test |
| 178 | public void testUpdateUserAvatar_success() { | 178 | public void testUpdateUserAvatar_success() { |
| 179 | // mock 数据 | 179 | // mock 数据 |
| 180 | - SysUserDO dbUser = randomSysUserDO(); | 180 | + UserDO dbUser = randomSysUserDO(); |
| 181 | userMapper.insert(dbUser); | 181 | userMapper.insert(dbUser); |
| 182 | // 准备参数 | 182 | // 准备参数 |
| 183 | Long userId = dbUser.getId(); | 183 | Long userId = dbUser.getId(); |
| @@ -190,14 +190,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -190,14 +190,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 190 | // 调用 | 190 | // 调用 |
| 191 | userService.updateUserAvatar(userId, avatarFile); | 191 | userService.updateUserAvatar(userId, avatarFile); |
| 192 | // 断言 | 192 | // 断言 |
| 193 | - SysUserDO user = userMapper.selectById(userId); | 193 | + UserDO user = userMapper.selectById(userId); |
| 194 | assertEquals(avatar, user.getAvatar()); | 194 | assertEquals(avatar, user.getAvatar()); |
| 195 | } | 195 | } |
| 196 | 196 | ||
| 197 | @Test | 197 | @Test |
| 198 | public void testUpdateUserPassword02_success() { | 198 | public void testUpdateUserPassword02_success() { |
| 199 | // mock 数据 | 199 | // mock 数据 |
| 200 | - SysUserDO dbUser = randomSysUserDO(); | 200 | + UserDO dbUser = randomSysUserDO(); |
| 201 | userMapper.insert(dbUser); | 201 | userMapper.insert(dbUser); |
| 202 | // 准备参数 | 202 | // 准备参数 |
| 203 | Long userId = dbUser.getId(); | 203 | Long userId = dbUser.getId(); |
| @@ -209,14 +209,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -209,14 +209,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 209 | // 调用 | 209 | // 调用 |
| 210 | userService.updateUserPassword(userId, password); | 210 | userService.updateUserPassword(userId, password); |
| 211 | // 断言 | 211 | // 断言 |
| 212 | - SysUserDO user = userMapper.selectById(userId); | 212 | + UserDO user = userMapper.selectById(userId); |
| 213 | assertEquals("encode:" + password, user.getPassword()); | 213 | assertEquals("encode:" + password, user.getPassword()); |
| 214 | } | 214 | } |
| 215 | 215 | ||
| 216 | @Test | 216 | @Test |
| 217 | public void testUpdateUserStatus() { | 217 | public void testUpdateUserStatus() { |
| 218 | // mock 数据 | 218 | // mock 数据 |
| 219 | - SysUserDO dbUser = randomSysUserDO(); | 219 | + UserDO dbUser = randomSysUserDO(); |
| 220 | userMapper.insert(dbUser); | 220 | userMapper.insert(dbUser); |
| 221 | // 准备参数 | 221 | // 准备参数 |
| 222 | Long userId = dbUser.getId(); | 222 | Long userId = dbUser.getId(); |
| @@ -225,14 +225,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -225,14 +225,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 225 | // 调用 | 225 | // 调用 |
| 226 | userService.updateUserStatus(userId, status); | 226 | userService.updateUserStatus(userId, status); |
| 227 | // 断言 | 227 | // 断言 |
| 228 | - SysUserDO user = userMapper.selectById(userId); | 228 | + UserDO user = userMapper.selectById(userId); |
| 229 | assertEquals(status, user.getStatus()); | 229 | assertEquals(status, user.getStatus()); |
| 230 | } | 230 | } |
| 231 | 231 | ||
| 232 | @Test | 232 | @Test |
| 233 | public void testDeleteUser_success(){ | 233 | public void testDeleteUser_success(){ |
| 234 | // mock 数据 | 234 | // mock 数据 |
| 235 | - SysUserDO dbUser = randomSysUserDO(); | 235 | + UserDO dbUser = randomSysUserDO(); |
| 236 | userMapper.insert(dbUser); | 236 | userMapper.insert(dbUser); |
| 237 | // 准备参数 | 237 | // 准备参数 |
| 238 | Long userId = dbUser.getId(); | 238 | Long userId = dbUser.getId(); |
| @@ -248,7 +248,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -248,7 +248,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 248 | @Test | 248 | @Test |
| 249 | public void testGetUserPage() { | 249 | public void testGetUserPage() { |
| 250 | // mock 数据 | 250 | // mock 数据 |
| 251 | - SysUserDO dbUser = initGetUserPageData(); | 251 | + UserDO dbUser = initGetUserPageData(); |
| 252 | // 准备参数 | 252 | // 准备参数 |
| 253 | UserPageReqVO reqVO = new UserPageReqVO(); | 253 | UserPageReqVO reqVO = new UserPageReqVO(); |
| 254 | reqVO.setUsername("yudao"); | 254 | reqVO.setUsername("yudao"); |
| @@ -262,7 +262,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -262,7 +262,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 262 | when(deptService.getDeptsByParentIdFromCache(eq(reqVO.getDeptId()), eq(true))).thenReturn(deptList); | 262 | when(deptService.getDeptsByParentIdFromCache(eq(reqVO.getDeptId()), eq(true))).thenReturn(deptList); |
| 263 | 263 | ||
| 264 | // 调用 | 264 | // 调用 |
| 265 | - PageResult<SysUserDO> pageResult = userService.getUserPage(reqVO); | 265 | + PageResult<UserDO> pageResult = userService.getUserPage(reqVO); |
| 266 | // 断言 | 266 | // 断言 |
| 267 | assertEquals(1, pageResult.getTotal()); | 267 | assertEquals(1, pageResult.getTotal()); |
| 268 | assertEquals(1, pageResult.getList().size()); | 268 | assertEquals(1, pageResult.getList().size()); |
| @@ -272,7 +272,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -272,7 +272,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 272 | @Test | 272 | @Test |
| 273 | public void testGetUsers() { | 273 | public void testGetUsers() { |
| 274 | // mock 数据 | 274 | // mock 数据 |
| 275 | - SysUserDO dbUser = initGetUserPageData(); | 275 | + UserDO dbUser = initGetUserPageData(); |
| 276 | // 准备参数 | 276 | // 准备参数 |
| 277 | UserExportReqVO reqVO = new UserExportReqVO(); | 277 | UserExportReqVO reqVO = new UserExportReqVO(); |
| 278 | reqVO.setUsername("yudao"); | 278 | reqVO.setUsername("yudao"); |
| @@ -286,7 +286,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -286,7 +286,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 286 | when(deptService.getDeptsByParentIdFromCache(eq(reqVO.getDeptId()), eq(true))).thenReturn(deptList); | 286 | when(deptService.getDeptsByParentIdFromCache(eq(reqVO.getDeptId()), eq(true))).thenReturn(deptList); |
| 287 | 287 | ||
| 288 | // 调用 | 288 | // 调用 |
| 289 | - List<SysUserDO> list = userService.getUsers(reqVO); | 289 | + List<UserDO> list = userService.getUsers(reqVO); |
| 290 | // 断言 | 290 | // 断言 |
| 291 | assertEquals(1, list.size()); | 291 | assertEquals(1, list.size()); |
| 292 | assertPojoEquals(dbUser, list.get(0)); | 292 | assertPojoEquals(dbUser, list.get(0)); |
| @@ -295,9 +295,9 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -295,9 +295,9 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 295 | /** | 295 | /** |
| 296 | * 初始化 getUserPage 方法的测试数据 | 296 | * 初始化 getUserPage 方法的测试数据 |
| 297 | */ | 297 | */ |
| 298 | - private SysUserDO initGetUserPageData() { | 298 | + private UserDO initGetUserPageData() { |
| 299 | // mock 数据 | 299 | // mock 数据 |
| 300 | - SysUserDO dbUser = randomSysUserDO(o -> { // 等会查询到 | 300 | + UserDO dbUser = randomSysUserDO(o -> { // 等会查询到 |
| 301 | o.setUsername("yudaoyuanma"); | 301 | o.setUsername("yudaoyuanma"); |
| 302 | o.setMobile("15601691300"); | 302 | o.setMobile("15601691300"); |
| 303 | o.setStatus(CommonStatusEnum.ENABLE.getStatus()); | 303 | o.setStatus(CommonStatusEnum.ENABLE.getStatus()); |
| @@ -359,7 +359,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -359,7 +359,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 359 | UserImportRespVO respVO = userService.importUsers(newArrayList(importUser), true); | 359 | UserImportRespVO respVO = userService.importUsers(newArrayList(importUser), true); |
| 360 | // 断言 | 360 | // 断言 |
| 361 | assertEquals(1, respVO.getCreateUsernames().size()); | 361 | assertEquals(1, respVO.getCreateUsernames().size()); |
| 362 | - SysUserDO user = userMapper.selectByUsername(respVO.getCreateUsernames().get(0)); | 362 | + UserDO user = userMapper.selectByUsername(respVO.getCreateUsernames().get(0)); |
| 363 | assertPojoEquals(importUser, user); | 363 | assertPojoEquals(importUser, user); |
| 364 | assertEquals("java", user.getPassword()); | 364 | assertEquals("java", user.getPassword()); |
| 365 | assertEquals(0, respVO.getUpdateUsernames().size()); | 365 | assertEquals(0, respVO.getUpdateUsernames().size()); |
| @@ -372,7 +372,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -372,7 +372,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 372 | @Test | 372 | @Test |
| 373 | public void testImportUsers_03() { | 373 | public void testImportUsers_03() { |
| 374 | // mock 数据 | 374 | // mock 数据 |
| 375 | - SysUserDO dbUser = randomSysUserDO(); | 375 | + UserDO dbUser = randomSysUserDO(); |
| 376 | userMapper.insert(dbUser); | 376 | userMapper.insert(dbUser); |
| 377 | // 准备参数 | 377 | // 准备参数 |
| 378 | UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> { | 378 | UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> { |
| @@ -402,7 +402,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -402,7 +402,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 402 | @Test | 402 | @Test |
| 403 | public void testImportUsers_04() { | 403 | public void testImportUsers_04() { |
| 404 | // mock 数据 | 404 | // mock 数据 |
| 405 | - SysUserDO dbUser = randomSysUserDO(); | 405 | + UserDO dbUser = randomSysUserDO(); |
| 406 | userMapper.insert(dbUser); | 406 | userMapper.insert(dbUser); |
| 407 | // 准备参数 | 407 | // 准备参数 |
| 408 | UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> { | 408 | UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> { |
| @@ -422,7 +422,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -422,7 +422,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 422 | // 断言 | 422 | // 断言 |
| 423 | assertEquals(0, respVO.getCreateUsernames().size()); | 423 | assertEquals(0, respVO.getCreateUsernames().size()); |
| 424 | assertEquals(1, respVO.getUpdateUsernames().size()); | 424 | assertEquals(1, respVO.getUpdateUsernames().size()); |
| 425 | - SysUserDO user = userMapper.selectByUsername(respVO.getUpdateUsernames().get(0)); | 425 | + UserDO user = userMapper.selectByUsername(respVO.getUpdateUsernames().get(0)); |
| 426 | assertPojoEquals(importUser, user); | 426 | assertPojoEquals(importUser, user); |
| 427 | assertEquals(0, respVO.getFailureUsernames().size()); | 427 | assertEquals(0, respVO.getFailureUsernames().size()); |
| 428 | } | 428 | } |
| @@ -561,7 +561,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -561,7 +561,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 561 | @Test | 561 | @Test |
| 562 | public void testCheckOldPassword_passwordFailed() { | 562 | public void testCheckOldPassword_passwordFailed() { |
| 563 | // mock 数据 | 563 | // mock 数据 |
| 564 | - SysUserDO user = randomSysUserDO(); | 564 | + UserDO user = randomSysUserDO(); |
| 565 | userMapper.insert(user); | 565 | userMapper.insert(user); |
| 566 | // 准备参数 | 566 | // 准备参数 |
| 567 | Long id = user.getId(); | 567 | Long id = user.getId(); |
| @@ -594,12 +594,12 @@ public class UserServiceImplTest extends BaseDbUnitTest { | @@ -594,12 +594,12 @@ public class UserServiceImplTest extends BaseDbUnitTest { | ||
| 594 | // ========== 随机对象 ========== | 594 | // ========== 随机对象 ========== |
| 595 | 595 | ||
| 596 | @SafeVarargs | 596 | @SafeVarargs |
| 597 | - private static SysUserDO randomSysUserDO(Consumer<SysUserDO>... consumers) { | ||
| 598 | - Consumer<SysUserDO> consumer = (o) -> { | 597 | + private static UserDO randomSysUserDO(Consumer<UserDO>... consumers) { |
| 598 | + Consumer<UserDO> consumer = (o) -> { | ||
| 599 | o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 | 599 | o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 |
| 600 | o.setSex(randomEle(SysSexEnum.values()).getSex()); // 保证 sex 的范围 | 600 | o.setSex(randomEle(SysSexEnum.values()).getSex()); // 保证 sex 的范围 |
| 601 | }; | 601 | }; |
| 602 | - return randomPojo(SysUserDO.class, ArrayUtils.append(consumer, consumers)); | 602 | + return randomPojo(UserDO.class, ArrayUtils.append(consumer, consumers)); |
| 603 | } | 603 | } |
| 604 | 604 | ||
| 605 | } | 605 | } |