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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | 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 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| ... | ... | @@ -30,11 +30,11 @@ public class InfConfigExcelVO { |
| 30 | 30 | private String value; |
| 31 | 31 | |
| 32 | 32 | @ExcelProperty(value = "参数类型", converter = DictConvert.class) |
| 33 | - @DictFormat(SysDictTypeConstants.CONFIG_TYPE) | |
| 33 | + @DictFormat(DictTypeConstants.CONFIG_TYPE) | |
| 34 | 34 | private Integer type; |
| 35 | 35 | |
| 36 | 36 | @ExcelProperty(value = "是否敏感", converter = DictConvert.class) |
| 37 | - @DictFormat(SysDictTypeConstants.BOOLEAN_STRING) | |
| 37 | + @DictFormat(DictTypeConstants.BOOLEAN_STRING) | |
| 38 | 38 | private Boolean sensitive; |
| 39 | 39 | |
| 40 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | 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 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| ... | ... | @@ -26,7 +26,7 @@ public class InfApiAccessLogExcelVO { |
| 26 | 26 | private Long userId; |
| 27 | 27 | |
| 28 | 28 | @ExcelProperty(value = "用户类型", converter = DictConvert.class) |
| 29 | - @DictFormat(SysDictTypeConstants.USER_TYPE) | |
| 29 | + @DictFormat(DictTypeConstants.USER_TYPE) | |
| 30 | 30 | private Integer userType; |
| 31 | 31 | |
| 32 | 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 | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 5 | 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 | 7 | import com.alibaba.excel.annotation.ExcelProperty; |
| 8 | 8 | import lombok.Data; |
| 9 | 9 | |
| ... | ... | @@ -27,7 +27,7 @@ public class InfApiErrorLogExcelVO { |
| 27 | 27 | private Integer userId; |
| 28 | 28 | |
| 29 | 29 | @ExcelProperty(value = "用户类型", converter = DictConvert.class) |
| 30 | - @DictFormat(SysDictTypeConstants.USER_TYPE) | |
| 30 | + @DictFormat(DictTypeConstants.USER_TYPE) | |
| 31 | 31 | private Integer userType; |
| 32 | 32 | |
| 33 | 33 | @ExcelProperty("应用名") | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/order/PayOrderExcelVO.java
| 1 | 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 | 4 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 5 | 5 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 6 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| ... | ... | @@ -46,11 +46,11 @@ public class PayOrderExcelVO { |
| 46 | 46 | @ExcelProperty("渠道手续费,单位:百分比") |
| 47 | 47 | private String channelFeeRate; |
| 48 | 48 | |
| 49 | - @DictFormat(SysDictTypeConstants.PAY_ORDER_STATUS) | |
| 49 | + @DictFormat(DictTypeConstants.PAY_ORDER_STATUS) | |
| 50 | 50 | @ExcelProperty(value = "支付状态", converter = DictConvert.class) |
| 51 | 51 | private Integer status; |
| 52 | 52 | |
| 53 | - @DictFormat(SysDictTypeConstants.PAY_ORDER_NOTIFY_STATUS) | |
| 53 | + @DictFormat(DictTypeConstants.PAY_ORDER_NOTIFY_STATUS) | |
| 54 | 54 | @ExcelProperty(value = "通知商户支付结果的回调状态", converter = DictConvert.class) |
| 55 | 55 | private Integer notifyStatus; |
| 56 | 56 | |
| ... | ... | @@ -75,7 +75,7 @@ public class PayOrderExcelVO { |
| 75 | 75 | @ExcelProperty("用户 IP") |
| 76 | 76 | private String userIp; |
| 77 | 77 | |
| 78 | - @DictFormat(SysDictTypeConstants.PAY_ORDER_REFUND_STATUS) | |
| 78 | + @DictFormat(DictTypeConstants.PAY_ORDER_REFUND_STATUS) | |
| 79 | 79 | @ExcelProperty(value = "退款状态", converter = DictConvert.class) |
| 80 | 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 | 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 | 4 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 5 | 5 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 6 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| ... | ... | @@ -43,15 +43,15 @@ public class PayRefundExcelVO { |
| 43 | 43 | @ExcelProperty("异步通知商户地址") |
| 44 | 44 | private String notifyUrl; |
| 45 | 45 | |
| 46 | - @DictFormat(SysDictTypeConstants.PAY_ORDER_NOTIFY_STATUS) | |
| 46 | + @DictFormat(DictTypeConstants.PAY_ORDER_NOTIFY_STATUS) | |
| 47 | 47 | @ExcelProperty(value = "商户退款结果回调状态", converter = DictConvert.class) |
| 48 | 48 | private Integer notifyStatus; |
| 49 | 49 | |
| 50 | - @DictFormat(SysDictTypeConstants.PAY_REFUND_ORDER_STATUS) | |
| 50 | + @DictFormat(DictTypeConstants.PAY_REFUND_ORDER_STATUS) | |
| 51 | 51 | @ExcelProperty(value = "退款状态", converter = DictConvert.class) |
| 52 | 52 | private Integer status; |
| 53 | 53 | |
| 54 | - @DictFormat(SysDictTypeConstants.PAY_REFUND_ORDER_TYPE) | |
| 54 | + @DictFormat(DictTypeConstants.PAY_REFUND_ORDER_TYPE) | |
| 55 | 55 | @ExcelProperty(value = "退款类型", converter = DictConvert.class) |
| 56 | 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 | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 5 | 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 | 7 | import com.alibaba.excel.annotation.ExcelProperty; |
| 8 | 8 | import lombok.Data; |
| 9 | 9 | |
| ... | ... | @@ -24,11 +24,11 @@ public class ToolTestDemoExcelVO { |
| 24 | 24 | private String name; |
| 25 | 25 | |
| 26 | 26 | @ExcelProperty(value = "状态", converter = DictConvert.class) |
| 27 | - @DictFormat(SysDictTypeConstants.COMMON_STATUS) | |
| 27 | + @DictFormat(DictTypeConstants.COMMON_STATUS) | |
| 28 | 28 | private Integer status; |
| 29 | 29 | |
| 30 | 30 | @ExcelProperty(value = "类型", converter = DictConvert.class) |
| 31 | - @DictFormat(SysDictTypeConstants.OPERATE_TYPE) | |
| 31 | + @DictFormat(DictTypeConstants.OPERATE_TYPE) | |
| 32 | 32 | private Integer type; |
| 33 | 33 | |
| 34 | 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 | 5 | import cn.iocoder.yudao.module.system.mq.consumer.mail.SysMailSendConsumer; |
| 6 | 6 | import cn.iocoder.yudao.module.system.mq.consumer.sms.SysSmsSendConsumer; |
| 7 | 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 | 9 | import cn.iocoder.yudao.framework.mq.core.util.RedisMessageUtils; |
| 10 | 10 | import org.junit.jupiter.api.Disabled; |
| 11 | 11 | import org.junit.jupiter.api.Test; | ... | ... |
yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsServiceIntegrationTest.java
| ... | ... | @@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.system.service.sms.impl.SysSmsChannelServiceImpl; |
| 9 | 9 | import cn.iocoder.yudao.module.system.service.sms.impl.SysSmsLogServiceImpl; |
| 10 | 10 | import cn.iocoder.yudao.module.system.service.sms.impl.SysSmsTemplateServiceImpl; |
| 11 | 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 | 13 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 14 | 14 | import cn.iocoder.yudao.framework.sms.config.YudaoSmsAutoConfiguration; |
| 15 | 15 | import org.junit.jupiter.api.Test; | ... | ... |
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 | 10 | import javax.annotation.Resource; |
| 11 | 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 | 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 | 12 | |
| 13 | 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 | 16 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; |
| 18 | 17 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; |
| 19 | 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 | 3 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceApproveReqDTO; |
| 4 | 4 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceRejectReqDTO; |
| 5 | 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 | 7 | import org.activiti.api.task.model.Task; |
| 8 | 8 | import org.activiti.engine.runtime.ProcessInstance; |
| 9 | 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 | 5 | import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO; |
| 6 | 6 | import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; |
| 7 | 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 | 10 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 11 | 11 | import org.activiti.engine.history.HistoricProcessInstance; |
| 12 | 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 | 4 | import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task.BpmTaskRespVO; |
| 5 | 5 | import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task.BpmTaskTodoPageItemRespVO; |
| 6 | 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 | 9 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 10 | 10 | import cn.iocoder.yudao.framework.common.util.number.NumberUtils; |
| 11 | 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 | 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 | 4 | import lombok.*; |
| 5 | 5 | import java.util.*; |
| 6 | 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 | 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 | 4 | import lombok.AllArgsConstructor; |
| 5 | 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 | 7 | import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.listener.BpmTackActivitiEventListener; |
| 8 | 8 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService; |
| 9 | 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 | 13 | import org.activiti.api.runtime.shared.identity.UserGroupManager; |
| 14 | 14 | import org.activiti.spring.boot.ProcessEngineConfigurationConfigurer; |
| 15 | 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 | 3 | import cn.iocoder.yudao.adminserver.modules.bpm.framework.activiti.core.behavior.script.BpmTaskAssignScript; |
| 4 | 4 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService; |
| 5 | 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 | 9 | import lombok.Data; |
| 10 | 10 | import lombok.EqualsAndHashCode; |
| 11 | 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 | 9 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService; |
| 10 | 10 | import cn.iocoder.yudao.coreservice.modules.bpm.api.group.BpmUserGroupServiceApi; |
| 11 | 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 | 17 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 18 | 18 | import com.google.common.annotations.VisibleForTesting; |
| 19 | 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 | 2 | |
| 3 | 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 | 9 | import org.activiti.engine.impl.persistence.entity.TaskEntity; |
| 10 | 10 | import org.springframework.util.Assert; |
| 11 | 11 | |
| 12 | 12 | import javax.annotation.Resource; |
| 13 | 13 | import java.util.Set; |
| 14 | 14 | |
| 15 | -import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet; | |
| 16 | 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 | 14 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmProcessDefinitionService; |
| 15 | 15 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService; |
| 16 | 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 | 23 | import cn.iocoder.yudao.framework.activiti.core.util.ActivitiUtils; |
| 24 | 24 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 25 | 25 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; |
| ... | ... | @@ -64,7 +64,7 @@ public class BpmTaskAssignRuleServiceImpl implements BpmTaskAssignRuleService { |
| 64 | 64 | @Resource |
| 65 | 65 | private BpmUserGroupServiceApi userGroupServiceApi; |
| 66 | 66 | @Resource |
| 67 | - private SysDictDataCoreService dictDataCoreService; | |
| 67 | + private DictDataCoreService dictDataCoreService; | |
| 68 | 68 | |
| 69 | 69 | @Override |
| 70 | 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 | 5 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceApproveReqDTO; |
| 6 | 6 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceRejectReqDTO; |
| 7 | 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 | 9 | import lombok.extern.slf4j.Slf4j; |
| 10 | 10 | import org.springframework.beans.factory.annotation.Value; |
| 11 | 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 | 18 | import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmProcessInstanceService; |
| 19 | 19 | import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmTaskService; |
| 20 | 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 | 25 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 26 | 26 | import cn.iocoder.yudao.framework.common.util.number.NumberUtils; |
| 27 | 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 | 12 | import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmProcessInstanceService; |
| 13 | 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 | 19 | import cn.iocoder.yudao.framework.activiti.core.util.ActivitiUtils; |
| 20 | 20 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 21 | 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 | 8 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmTaskAssignRuleService; |
| 9 | 9 | import cn.iocoder.yudao.coreservice.modules.bpm.api.group.BpmUserGroupServiceApi; |
| 10 | 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 | 16 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 17 | 17 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 18 | 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 | 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 | 7 | import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest; |
| 8 | 8 | import org.activiti.engine.impl.persistence.entity.ExecutionEntityImpl; |
| 9 | 9 | import org.activiti.engine.impl.persistence.entity.TaskEntity; | ... | ... |
yudao-module-member/yudao-module-member-impl/pom.xml
| ... | ... | @@ -24,6 +24,12 @@ |
| 24 | 24 | <version>${revision}</version> |
| 25 | 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 | 34 | <dependency> |
| 29 | 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 | 1 | package cn.iocoder.yudao.module.member.controller.app.auth; |
| 2 | 2 | |
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.service.social.SysSocialCoreService; | |
| 4 | 3 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 5 | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 6 | 5 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; |
| 7 | 6 | import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated; |
| 8 | -import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; | |
| 9 | 7 | import cn.iocoder.yudao.module.member.controller.app.auth.vo.*; |
| 10 | 8 | import cn.iocoder.yudao.module.member.service.auth.AuthService; |
| 11 | 9 | import cn.iocoder.yudao.module.member.service.sms.SysSmsCodeService; |
| ... | ... | @@ -15,7 +13,6 @@ import io.swagger.annotations.ApiImplicitParams; |
| 15 | 13 | import io.swagger.annotations.ApiOperation; |
| 16 | 14 | import lombok.extern.slf4j.Slf4j; |
| 17 | 15 | import org.springframework.beans.factory.annotation.Autowired; |
| 18 | -import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; | |
| 19 | 16 | import org.springframework.validation.annotation.Validated; |
| 20 | 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 | 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 | 3 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 5 | 4 | import io.swagger.annotations.ApiModel; |
| 6 | 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 | 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 | 3 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 4 | +import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; | |
| 5 | 5 | import io.swagger.annotations.ApiModel; |
| 6 | 6 | import io.swagger.annotations.ApiModelProperty; |
| 7 | 7 | import lombok.AllArgsConstructor; |
| ... | ... | @@ -22,7 +22,7 @@ import javax.validation.constraints.Pattern; |
| 22 | 22 | public class AppAuthSocialLogin2ReqVO { |
| 23 | 23 | |
| 24 | 24 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") |
| 25 | - @InEnum(SysSocialTypeEnum.class) | |
| 25 | + @InEnum(SocialTypeEnum.class) | |
| 26 | 26 | @NotNull(message = "社交平台的类型不能为空") |
| 27 | 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 | 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 | 3 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 4 | +import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; | |
| 5 | 5 | import io.swagger.annotations.ApiModel; |
| 6 | 6 | import io.swagger.annotations.ApiModelProperty; |
| 7 | 7 | import lombok.AllArgsConstructor; |
| ... | ... | @@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull; |
| 20 | 20 | public class AppAuthSocialLoginReqVO { |
| 21 | 21 | |
| 22 | 22 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") |
| 23 | - @InEnum(SysSocialTypeEnum.class) | |
| 23 | + @InEnum(SocialTypeEnum.class) | |
| 24 | 24 | @NotNull(message = "社交平台的类型不能为空") |
| 25 | 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 | 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 | 3 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 4 | +import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; | |
| 5 | 5 | import io.swagger.annotations.ApiModel; |
| 6 | 6 | import io.swagger.annotations.ApiModelProperty; |
| 7 | 7 | import lombok.AllArgsConstructor; |
| ... | ... | @@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull; |
| 20 | 20 | public class AppAuthSocialUnbindReqVO { |
| 21 | 21 | |
| 22 | 22 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") |
| 23 | - @InEnum(SysSocialTypeEnum.class) | |
| 23 | + @InEnum(SocialTypeEnum.class) | |
| 24 | 24 | @NotNull(message = "社交平台的类型不能为空") |
| 25 | 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 | 2 | |
| 3 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | 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 | 12 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 13 | 13 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 14 | 14 | import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; |
| ... | ... | @@ -29,7 +29,6 @@ import org.springframework.context.annotation.Lazy; |
| 29 | 29 | import org.springframework.security.authentication.AuthenticationManager; |
| 30 | 30 | import org.springframework.security.authentication.BadCredentialsException; |
| 31 | 31 | import org.springframework.security.authentication.DisabledException; |
| 32 | -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; | |
| 33 | 32 | import org.springframework.security.core.Authentication; |
| 34 | 33 | import org.springframework.security.core.AuthenticationException; |
| 35 | 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 | 1 | package cn.iocoder.yudao.module.member.service.sms; |
| 2 | 2 | |
| 3 | 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 | 5 | import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; |
| 6 | 6 | import cn.iocoder.yudao.module.member.dal.dataobject.sms.SysSmsCodeDO; |
| 7 | 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 | 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 | 6 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 7 | 7 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; |
| 8 | 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 | 3 | import cn.iocoder.yudao.framework.common.exception.ErrorCode; |
| 4 | 4 | |
| ... | ... | @@ -14,10 +14,6 @@ public interface SysErrorCodeConstants { |
| 14 | 14 | ErrorCode SMS_SEND_MOBILE_TEMPLATE_PARAM_MISS = new ErrorCode(1006000001, "模板参数({})缺失"); |
| 15 | 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 | 17 | // ========== 社交模块 1006002000 ========== |
| 22 | 18 | ErrorCode SOCIAL_AUTH_FAILURE = new ErrorCode(1006002000, "社交授权失败,原因是:{}"); |
| 23 | 19 | ErrorCode SOCIAL_UNBIND_NOT_SELF = new ErrorCode(1006002001, "社交解绑失败,非当前用户绑定"); |
| ... | ... | @@ -34,10 +30,6 @@ public interface SysErrorCodeConstants { |
| 34 | 30 | ErrorCode ROLE_NOT_EXISTS = new ErrorCode(1006005000, "角色不存在"); |
| 35 | 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 | 33 | // ========== 岗位模块 1006007000 ========== |
| 42 | 34 | ErrorCode POST_NOT_FOUND = new ErrorCode(1006007000, "当前岗位不存在"); |
| 43 | 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 | 3 | import cn.hutool.core.collection.ListUtil; |
| 4 | 4 | import cn.hutool.core.util.ArrayUtil; |
| ... | ... | @@ -16,7 +16,7 @@ import java.util.List; |
| 16 | 16 | */ |
| 17 | 17 | @Getter |
| 18 | 18 | @AllArgsConstructor |
| 19 | -public enum SysSocialTypeEnum implements IntArrayValuable { | |
| 19 | +public enum SocialTypeEnum implements IntArrayValuable { | |
| 20 | 20 | |
| 21 | 21 | /** |
| 22 | 22 | * Gitee |
| ... | ... | @@ -51,7 +51,7 @@ public enum SysSocialTypeEnum implements IntArrayValuable { |
| 51 | 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 | 56 | public static final List<Integer> WECHAT_ALL = ListUtil.toList(WECHAT_ENTERPRISE.type, WECHAT_MP.type, WECHAT_OPEN.type, |
| 57 | 57 | WECHAT_MINI_PROGRAM.type); |
| ... | ... | @@ -70,7 +70,7 @@ public enum SysSocialTypeEnum implements IntArrayValuable { |
| 70 | 70 | return ARRAYS; |
| 71 | 71 | } |
| 72 | 72 | |
| 73 | - public static SysSocialTypeEnum valueOfType(Integer type) { | |
| 73 | + public static SocialTypeEnum valueOfType(Integer type) { | |
| 74 | 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 | 3 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.*; |
| 4 | 4 | import cn.iocoder.yudao.module.system.convert.auth.AuthConvert; |
| 5 | 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 | 7 | import cn.iocoder.yudao.module.system.enums.permission.MenuTypeEnum; |
| 8 | 8 | import cn.iocoder.yudao.module.system.service.auth.AuthService; |
| 9 | 9 | import cn.iocoder.yudao.module.system.service.permission.PermissionService; |
| 10 | 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 | 13 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 15 | 14 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 16 | 15 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 17 | 16 | import cn.iocoder.yudao.framework.common.util.collection.SetUtils; |
| 18 | 17 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; |
| 18 | +import cn.iocoder.yudao.module.system.service.user.UserService; | |
| 19 | 19 | import io.swagger.annotations.Api; |
| 20 | 20 | import io.swagger.annotations.ApiImplicitParam; |
| 21 | 21 | import io.swagger.annotations.ApiImplicitParams; |
| ... | ... | @@ -45,14 +45,15 @@ public class AuthController { |
| 45 | 45 | @Autowired |
| 46 | 46 | @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // AuthService 存在重名 |
| 47 | 47 | private AuthService authService; |
| 48 | - @Resource | |
| 49 | - private SysUserCoreService userCoreService; | |
| 48 | + @Autowired | |
| 49 | + @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // UserService 存在重名 | |
| 50 | + private UserService userService; | |
| 50 | 51 | @Resource |
| 51 | 52 | private RoleService roleService; |
| 52 | 53 | @Resource |
| 53 | 54 | private PermissionService permissionService; |
| 54 | 55 | @Resource |
| 55 | - private SysSocialCoreService socialCoreService; | |
| 56 | + private SocialUserService socialCoreService; | |
| 56 | 57 | |
| 57 | 58 | @PostMapping("/login") |
| 58 | 59 | @ApiOperation("使用账号密码登录") |
| ... | ... | @@ -67,7 +68,7 @@ public class AuthController { |
| 67 | 68 | @ApiOperation("获取登录用户的权限信息") |
| 68 | 69 | public CommonResult<AuthPermissionInfoRespVO> getPermissionInfo() { |
| 69 | 70 | // 获得用户信息 |
| 70 | - SysUserDO user = userCoreService.getUser(getLoginUserId()); | |
| 71 | + UserDO user = userService.getUser(getLoginUserId()); | |
| 71 | 72 | if (user == null) { |
| 72 | 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 | 3 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageItemRespVO; |
| 4 | 4 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; |
| 5 | 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 | 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 | 11 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 14 | 12 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 15 | 13 | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; |
| 14 | +import cn.iocoder.yudao.module.system.service.user.UserService; | |
| 16 | 15 | import io.swagger.annotations.Api; |
| 17 | 16 | import io.swagger.annotations.ApiImplicitParam; |
| 18 | 17 | import io.swagger.annotations.ApiOperation; |
| 18 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 19 | 19 | import org.springframework.security.access.prepost.PreAuthorize; |
| 20 | 20 | import org.springframework.validation.annotation.Validated; |
| 21 | 21 | import org.springframework.web.bind.annotation.*; |
| ... | ... | @@ -35,10 +35,9 @@ public class UserSessionController { |
| 35 | 35 | |
| 36 | 36 | @Resource |
| 37 | 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 | 42 | @Resource |
| 44 | 43 | private SysDeptCoreService deptCoreService; |
| ... | ... | @@ -51,10 +50,10 @@ public class UserSessionController { |
| 51 | 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 | 54 | convertList(pageResult.getList(), SysUserSessionDO::getUserId)); |
| 56 | 55 | Map<Long, SysDeptDO> deptMap = deptCoreService.getDeptMap( |
| 57 | - convertList(userMap.values(), SysUserDO::getDeptId)); | |
| 56 | + convertList(userMap.values(), UserDO::getDeptId)); | |
| 58 | 57 | // 拼接结果返回 |
| 59 | 58 | List<UserSessionPageItemRespVO> sessionList = new ArrayList<>(pageResult.getList().size()); |
| 60 | 59 | pageResult.getList().forEach(session -> { |
| ... | ... | @@ -76,7 +75,7 @@ public class UserSessionController { |
| 76 | 75 | example = "fe50b9f6-d177-44b1-8da9-72ea34f63db7") |
| 77 | 76 | @PreAuthorize("@ss.hasPermission('system:user-session:delete')") |
| 78 | 77 | public CommonResult<Boolean> deleteUserSession(@RequestParam("id") String id) { |
| 79 | - userSessionCoreService.deleteUserSession(id); | |
| 78 | + userSessionService.deleteUserSession(id); | |
| 80 | 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 | 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 | 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 5 | 5 | import io.swagger.annotations.ApiModel; |
| 6 | 6 | import io.swagger.annotations.ApiModelProperty; |
| ... | ... | @@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull; |
| 20 | 20 | public class AuthSocialBindReqVO { |
| 21 | 21 | |
| 22 | 22 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") |
| 23 | - @InEnum(SysSocialTypeEnum.class) | |
| 23 | + @InEnum(SocialTypeEnum.class) | |
| 24 | 24 | @NotNull(message = "社交平台的类型不能为空") |
| 25 | 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 | 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 | 3 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 4 | +import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; | |
| 5 | 5 | import io.swagger.annotations.ApiModel; |
| 6 | 6 | import io.swagger.annotations.ApiModelProperty; |
| 7 | 7 | import lombok.AllArgsConstructor; |
| ... | ... | @@ -22,7 +22,7 @@ import javax.validation.constraints.Pattern; |
| 22 | 22 | public class AuthSocialLogin2ReqVO { |
| 23 | 23 | |
| 24 | 24 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") |
| 25 | - @InEnum(SysSocialTypeEnum.class) | |
| 25 | + @InEnum(SocialTypeEnum.class) | |
| 26 | 26 | @NotNull(message = "社交平台的类型不能为空") |
| 27 | 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 | 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 | 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 5 | 5 | import io.swagger.annotations.ApiModel; |
| 6 | 6 | import io.swagger.annotations.ApiModelProperty; |
| ... | ... | @@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull; |
| 20 | 20 | public class AuthSocialLoginReqVO { |
| 21 | 21 | |
| 22 | 22 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") |
| 23 | - @InEnum(SysSocialTypeEnum.class) | |
| 23 | + @InEnum(SocialTypeEnum.class) | |
| 24 | 24 | @NotNull(message = "社交平台的类型不能为空") |
| 25 | 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 | 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 | 3 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 4 | +import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; | |
| 5 | 5 | import io.swagger.annotations.ApiModel; |
| 6 | 6 | import io.swagger.annotations.ApiModelProperty; |
| 7 | 7 | import lombok.AllArgsConstructor; |
| ... | ... | @@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull; |
| 20 | 20 | public class AuthSocialUnbindReqVO { |
| 21 | 21 | |
| 22 | 22 | @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") |
| 23 | - @InEnum(SysSocialTypeEnum.class) | |
| 23 | + @InEnum(SocialTypeEnum.class) | |
| 24 | 24 | @NotNull(message = "社交平台的类型不能为空") |
| 25 | 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 | 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 | 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 5 | 5 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 6 | 6 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.*; |
| 7 | 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 | 9 | import cn.iocoder.yudao.module.system.service.dept.DeptService; |
| 10 | 10 | import io.swagger.annotations.Api; |
| 11 | 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 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; |
| 8 | 8 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.*; |
| 9 | 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 | 11 | import cn.iocoder.yudao.module.system.service.dept.PostService; |
| 12 | 12 | import io.swagger.annotations.Api; |
| 13 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | 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 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| ... | ... | @@ -25,7 +25,7 @@ public class PostExcelVO { |
| 25 | 25 | private Integer sort; |
| 26 | 26 | |
| 27 | 27 | @ExcelProperty(value = "状态", converter = DictConvert.class) |
| 28 | - @DictFormat(SysDictTypeConstants.COMMON_STATUS) | |
| 28 | + @DictFormat(DictTypeConstants.COMMON_STATUS) | |
| 29 | 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 | 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 | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 5 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | 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 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| ... | ... | @@ -28,7 +28,7 @@ public class DictDataExcelVO { |
| 28 | 28 | private String dictType; |
| 29 | 29 | |
| 30 | 30 | @ExcelProperty(value = "状态", converter = DictConvert.class) |
| 31 | - @DictFormat(SysDictTypeConstants.COMMON_STATUS) | |
| 31 | + @DictFormat(DictTypeConstants.COMMON_STATUS) | |
| 32 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | 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 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| ... | ... | @@ -22,7 +22,7 @@ public class DictTypeExcelVO { |
| 22 | 22 | private String type; |
| 23 | 23 | |
| 24 | 24 | @ExcelProperty(value = "状态", converter = DictConvert.class) |
| 25 | - @DictFormat(SysDictTypeConstants.COMMON_STATUS) | |
| 25 | + @DictFormat(DictTypeConstants.COMMON_STATUS) | |
| 26 | 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 | 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 | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 5 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | 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 | 7 | import cn.iocoder.yudao.module.system.convert.logger.OperateLogConvert; |
| 8 | 8 | import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO; |
| 9 | 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 | 11 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 13 | 12 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 14 | 13 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 15 | 14 | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; |
| 16 | 15 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
| 17 | 16 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; |
| 17 | +import cn.iocoder.yudao.module.system.service.user.UserService; | |
| 18 | 18 | import io.swagger.annotations.Api; |
| 19 | 19 | import io.swagger.annotations.ApiOperation; |
| 20 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 20 | 21 | import org.springframework.security.access.prepost.PreAuthorize; |
| 21 | 22 | import org.springframework.validation.annotation.Validated; |
| 22 | 23 | import org.springframework.web.bind.annotation.GetMapping; |
| ... | ... | @@ -43,8 +44,9 @@ public class OperateLogController { |
| 43 | 44 | |
| 44 | 45 | @Resource |
| 45 | 46 | private OperateLogService operateLogService; |
| 46 | - @Resource | |
| 47 | - private SysUserCoreService userCoreService; | |
| 47 | + @Autowired | |
| 48 | + @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // UserService 存在重名 | |
| 49 | + private UserService userService; | |
| 48 | 50 | |
| 49 | 51 | @GetMapping("/page") |
| 50 | 52 | @ApiOperation("查看操作日志分页列表") |
| ... | ... | @@ -54,7 +56,7 @@ public class OperateLogController { |
| 54 | 56 | |
| 55 | 57 | // 获得拼接需要的数据 |
| 56 | 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 | 61 | List<OperateLogRespVO> list = new ArrayList<>(pageResult.getList().size()); |
| 60 | 62 | pageResult.getList().forEach(operateLog -> { |
| ... | ... | @@ -75,7 +77,7 @@ public class OperateLogController { |
| 75 | 77 | |
| 76 | 78 | // 获得拼接需要的数据 |
| 77 | 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 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | 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 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| ... | ... | @@ -21,11 +21,11 @@ public class LoginLogExcelVO { |
| 21 | 21 | private String username; |
| 22 | 22 | |
| 23 | 23 | @ExcelProperty(value = "日志类型", converter = DictConvert.class) |
| 24 | - @DictFormat(SysDictTypeConstants.LOGIN_TYPE) | |
| 24 | + @DictFormat(DictTypeConstants.LOGIN_TYPE) | |
| 25 | 25 | private Integer logType; |
| 26 | 26 | |
| 27 | 27 | @ExcelProperty(value = "登录结果", converter = DictConvert.class) |
| 28 | - @DictFormat(SysDictTypeConstants.LOGIN_RESULT) | |
| 28 | + @DictFormat(DictTypeConstants.LOGIN_RESULT) | |
| 29 | 29 | private Integer result; |
| 30 | 30 | |
| 31 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | 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 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| ... | ... | @@ -24,7 +24,7 @@ public class OperateLogExcelVO { |
| 24 | 24 | private String name; |
| 25 | 25 | |
| 26 | 26 | @ExcelProperty(value = "操作类型", converter = DictConvert.class) |
| 27 | - @DictFormat(SysDictTypeConstants.OPERATE_TYPE) | |
| 27 | + @DictFormat(DictTypeConstants.OPERATE_TYPE) | |
| 28 | 28 | private String type; |
| 29 | 29 | |
| 30 | 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 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; |
| 8 | 8 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.*; |
| 9 | 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 | 11 | import cn.iocoder.yudao.module.system.service.permission.RoleService; |
| 12 | 12 | import io.swagger.annotations.Api; |
| 13 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | 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 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| ... | ... | @@ -28,7 +28,7 @@ public class RoleExcelVO { |
| 28 | 28 | private Integer dataScope; |
| 29 | 29 | |
| 30 | 30 | @ExcelProperty(value = "角色状态", converter = DictConvert.class) |
| 31 | - @DictFormat(SysDictTypeConstants.COMMON_STATUS) | |
| 31 | + @DictFormat(DictTypeConstants.COMMON_STATUS) | |
| 32 | 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 | 2 | |
| 3 | 3 | import cn.hutool.core.util.URLUtil; |
| 4 | 4 | import cn.hutool.extra.servlet.ServletUtil; |
| 5 | -import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService; | |
| 5 | +import cn.iocoder.yudao.module.system.service.sms.SysSmsSendService; | |
| 6 | 6 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 7 | 7 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; |
| 8 | 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 | 25 | public class SmsCallbackController { |
| 26 | 26 | |
| 27 | 27 | @Resource |
| 28 | - private SysSmsCoreService smsCoreService; | |
| 28 | + private SysSmsSendService smsCoreService; | |
| 29 | 29 | |
| 30 | 30 | @PostMapping("/sms/yunpian") |
| 31 | 31 | @ApiOperation(value = "云片短信的回调", notes = "参见 https://www.yunpian.com/official/document/sms/zh_cn/domestic_push_report 文档") | ... | ... |
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 | 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.*; |
| 4 | 4 | import cn.iocoder.yudao.module.system.convert.sms.SmsChannelConvert; |
| 5 | 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 | 7 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 8 | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | 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 | 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SysSmsLogRespVO; |
| 7 | 7 | import cn.iocoder.yudao.module.system.convert.sms.SmsLogConvert; |
| 8 | 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 | 10 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 11 | 11 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 12 | 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 | 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.*; |
| 4 | 4 | import cn.iocoder.yudao.module.system.convert.sms.SmsTemplateConvert; |
| 5 | 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 | 8 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 9 | 9 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 10 | 10 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
| ... | ... | @@ -32,7 +32,7 @@ public class SmsTemplateController { |
| 32 | 32 | @Resource |
| 33 | 33 | private SmsTemplateService smsTemplateService; |
| 34 | 34 | @Resource |
| 35 | - private SysSmsCoreService smsCoreService; | |
| 35 | + private SysSmsSendService smsCoreService; | |
| 36 | 36 | |
| 37 | 37 | @PostMapping("/create") |
| 38 | 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 | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 5 | 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 | 7 | import com.alibaba.excel.annotation.ExcelProperty; |
| 8 | 8 | import lombok.Data; |
| 9 | 9 | |
| ... | ... | @@ -34,7 +34,7 @@ public class SmsLogExcelVO { |
| 34 | 34 | private String templateCode; |
| 35 | 35 | |
| 36 | 36 | @ExcelProperty(value = "短信类型", converter = DictConvert.class) |
| 37 | - @DictFormat(SysDictTypeConstants.SMS_TEMPLATE_TYPE) | |
| 37 | + @DictFormat(DictTypeConstants.SMS_TEMPLATE_TYPE) | |
| 38 | 38 | private Integer templateType; |
| 39 | 39 | |
| 40 | 40 | @ExcelProperty("短信内容") |
| ... | ... | @@ -53,11 +53,11 @@ public class SmsLogExcelVO { |
| 53 | 53 | private Long userId; |
| 54 | 54 | |
| 55 | 55 | @ExcelProperty(value = "用户类型", converter = DictConvert.class) |
| 56 | - @DictFormat(SysDictTypeConstants.USER_TYPE) | |
| 56 | + @DictFormat(DictTypeConstants.USER_TYPE) | |
| 57 | 57 | private Integer userType; |
| 58 | 58 | |
| 59 | 59 | @ExcelProperty(value = "发送状态", converter = DictConvert.class) |
| 60 | - @DictFormat(SysDictTypeConstants.SMS_SEND_STATUS) | |
| 60 | + @DictFormat(DictTypeConstants.SMS_SEND_STATUS) | |
| 61 | 61 | private Integer sendStatus; |
| 62 | 62 | |
| 63 | 63 | @ExcelProperty("发送时间") |
| ... | ... | @@ -82,7 +82,7 @@ public class SmsLogExcelVO { |
| 82 | 82 | private String apiSerialNo; |
| 83 | 83 | |
| 84 | 84 | @ExcelProperty(value = "接收状态", converter = DictConvert.class) |
| 85 | - @DictFormat(SysDictTypeConstants.SMS_RECEIVE_STATUS) | |
| 85 | + @DictFormat(DictTypeConstants.SMS_RECEIVE_STATUS) | |
| 86 | 86 | private Integer receiveStatus; |
| 87 | 87 | |
| 88 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | 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 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| ... | ... | @@ -20,11 +20,11 @@ public class SmsTemplateExcelVO { |
| 20 | 20 | private Long id; |
| 21 | 21 | |
| 22 | 22 | @ExcelProperty(value = "短信签名", converter = DictConvert.class) |
| 23 | - @DictFormat(SysDictTypeConstants.SMS_TEMPLATE_TYPE) | |
| 23 | + @DictFormat(DictTypeConstants.SMS_TEMPLATE_TYPE) | |
| 24 | 24 | private Integer type; |
| 25 | 25 | |
| 26 | 26 | @ExcelProperty(value = "开启状态", converter = DictConvert.class) |
| 27 | - @DictFormat(SysDictTypeConstants.COMMON_STATUS) | |
| 27 | + @DictFormat(DictTypeConstants.COMMON_STATUS) | |
| 28 | 28 | private Integer status; |
| 29 | 29 | |
| 30 | 30 | @ExcelProperty("模板编码") |
| ... | ... | @@ -46,7 +46,7 @@ public class SmsTemplateExcelVO { |
| 46 | 46 | private Long channelId; |
| 47 | 47 | |
| 48 | 48 | @ExcelProperty(value = "短信渠道编码", converter = DictConvert.class) |
| 49 | - @DictFormat(SysDictTypeConstants.SMS_CHANNEL_CODE) | |
| 49 | + @DictFormat(DictTypeConstants.SMS_CHANNEL_CODE) | |
| 50 | 50 | private String channelCode; |
| 51 | 51 | |
| 52 | 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 | 3 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.*; |
| 4 | 4 | import cn.iocoder.yudao.module.system.convert.tenant.TenantConvert; |
| 5 | 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 | 7 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 8 | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | 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 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | 4 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*; |
| 5 | 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 | 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 | 11 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 13 | 12 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 14 | 13 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| ... | ... | @@ -19,6 +18,7 @@ import io.swagger.annotations.Api; |
| 19 | 18 | import io.swagger.annotations.ApiImplicitParam; |
| 20 | 19 | import io.swagger.annotations.ApiImplicitParams; |
| 21 | 20 | import io.swagger.annotations.ApiOperation; |
| 21 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 22 | 22 | import org.springframework.security.access.prepost.PreAuthorize; |
| 23 | 23 | import org.springframework.validation.annotation.Validated; |
| 24 | 24 | import org.springframework.web.bind.annotation.*; |
| ... | ... | @@ -41,11 +41,10 @@ import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.E |
| 41 | 41 | @Validated |
| 42 | 42 | public class UserController { |
| 43 | 43 | |
| 44 | - @Resource | |
| 44 | + @Autowired | |
| 45 | + @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // UserService 存在重名 | |
| 45 | 46 | private UserService userService; |
| 46 | 47 | @Resource |
| 47 | - private SysUserCoreService userCoreService; | |
| 48 | - @Resource | |
| 49 | 48 | private SysDeptCoreService deptCoreService; |
| 50 | 49 | |
| 51 | 50 | @PostMapping("/create") |
| ... | ... | @@ -94,13 +93,13 @@ public class UserController { |
| 94 | 93 | @PreAuthorize("@ss.hasPermission('system:user:list')") |
| 95 | 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 | 97 | if (CollUtil.isEmpty(pageResult.getList())) { |
| 99 | 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 | 103 | Map<Long, SysDeptDO> deptMap = deptCoreService.getDeptMap(deptIds); |
| 105 | 104 | // 拼接结果返回 |
| 106 | 105 | List<UserPageItemRespVO> userList = new ArrayList<>(pageResult.getList().size()); |
| ... | ... | @@ -116,7 +115,7 @@ public class UserController { |
| 116 | 115 | @ApiOperation(value = "获取用户精简信息列表", notes = "只包含被开启的用户,主要用于前端的下拉选项") |
| 117 | 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 | 120 | return success(UserConvert.INSTANCE.convertList04(list)); |
| 122 | 121 | } |
| ... | ... | @@ -126,7 +125,7 @@ public class UserController { |
| 126 | 125 | @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) |
| 127 | 126 | @PreAuthorize("@ss.hasPermission('system:user:query')") |
| 128 | 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 | 131 | @GetMapping("/export") |
| ... | ... | @@ -136,12 +135,13 @@ public class UserController { |
| 136 | 135 | public void exportUsers(@Validated UserExportReqVO reqVO, |
| 137 | 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 | 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 | 146 | List<UserExcelVO> excelUsers = new ArrayList<>(users.size()); |
| 147 | 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 | 9 | import cn.iocoder.yudao.module.system.service.permission.PermissionService; |
| 10 | 10 | import cn.iocoder.yudao.module.system.service.permission.RoleService; |
| 11 | 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 | 19 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 21 | 20 | import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; |
| 22 | 21 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 23 | 22 | import io.swagger.annotations.Api; |
| 24 | 23 | import io.swagger.annotations.ApiOperation; |
| 25 | 24 | import lombok.extern.slf4j.Slf4j; |
| 25 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 26 | 26 | import org.springframework.validation.annotation.Validated; |
| 27 | 27 | import org.springframework.web.bind.annotation.*; |
| 28 | 28 | import org.springframework.web.multipart.MultipartFile; |
| ... | ... | @@ -43,11 +43,10 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti |
| 43 | 43 | @Slf4j |
| 44 | 44 | public class UserProfileController { |
| 45 | 45 | |
| 46 | - @Resource | |
| 46 | + @Autowired | |
| 47 | + @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // UserService 存在重名 | |
| 47 | 48 | private UserService userService; |
| 48 | 49 | @Resource |
| 49 | - private SysUserCoreService userCoreService; | |
| 50 | - @Resource | |
| 51 | 50 | private SysDeptCoreService deptCoreService; |
| 52 | 51 | |
| 53 | 52 | @Resource |
| ... | ... | @@ -57,13 +56,13 @@ public class UserProfileController { |
| 57 | 56 | @Resource |
| 58 | 57 | private RoleService roleService; |
| 59 | 58 | @Resource |
| 60 | - private SysSocialCoreService socialService; | |
| 59 | + private SocialUserService socialService; | |
| 61 | 60 | |
| 62 | 61 | @GetMapping("/get") |
| 63 | 62 | @ApiOperation("获得登录用户信息") |
| 64 | 63 | public CommonResult<UserProfileRespVO> profile() { |
| 65 | 64 | // 获得用户基本信息 |
| 66 | - SysUserDO user = userCoreService.getUser(getLoginUserId()); | |
| 65 | + UserDO user = userService.getUser(getLoginUserId()); | |
| 67 | 66 | UserProfileRespVO resp = UserConvert.INSTANCE.convert03(user); |
| 68 | 67 | // 获得用户角色 |
| 69 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | 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 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| ... | ... | @@ -30,11 +30,11 @@ public class UserExcelVO { |
| 30 | 30 | private String mobile; |
| 31 | 31 | |
| 32 | 32 | @ExcelProperty(value = "用户性别", converter = DictConvert.class) |
| 33 | - @DictFormat(SysDictTypeConstants.USER_SEX) | |
| 33 | + @DictFormat(DictTypeConstants.USER_SEX) | |
| 34 | 34 | private Integer sex; |
| 35 | 35 | |
| 36 | 36 | @ExcelProperty(value = "帐号状态", converter = DictConvert.class) |
| 37 | - @DictFormat(SysDictTypeConstants.COMMON_STATUS) | |
| 37 | + @DictFormat(DictTypeConstants.COMMON_STATUS) | |
| 38 | 38 | private Integer status; |
| 39 | 39 | |
| 40 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | 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 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.AllArgsConstructor; |
| 8 | 8 | import lombok.Builder; |
| ... | ... | @@ -36,11 +36,11 @@ public class UserImportExcelVO { |
| 36 | 36 | private String mobile; |
| 37 | 37 | |
| 38 | 38 | @ExcelProperty(value = "用户性别", converter = DictConvert.class) |
| 39 | - @DictFormat(SysDictTypeConstants.USER_SEX) | |
| 39 | + @DictFormat(DictTypeConstants.USER_SEX) | |
| 40 | 40 | private Integer sex; |
| 41 | 41 | |
| 42 | 42 | @ExcelProperty(value = "账号状态", converter = DictConvert.class) |
| 43 | - @DictFormat(SysDictTypeConstants.COMMON_STATUS) | |
| 43 | + @DictFormat(DictTypeConstants.COMMON_STATUS) | |
| 44 | 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 | 3 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthMenuRespVO; |
| 4 | 4 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthPermissionInfoRespVO; |
| 5 | 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 | 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 | 9 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 10 | 10 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 11 | 11 | import cn.iocoder.yudao.framework.security.core.LoginUser; |
| ... | ... | @@ -22,14 +22,14 @@ public interface AuthConvert { |
| 22 | 22 | AuthConvert INSTANCE = Mappers.getMapper(AuthConvert.class); |
| 23 | 23 | |
| 24 | 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 | 28 | // 目的,为了设置 UserTypeEnum.ADMIN.getValue() |
| 29 | 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 | 33 | return AuthPermissionInfoRespVO.builder() |
| 34 | 34 | .user(AuthPermissionInfoRespVO.UserVO.builder().id(user.getId()).nickname(user.getNickname()).avatar(user.getAvatar()).build()) |
| 35 | 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 | 1 | package cn.iocoder.yudao.module.system.convert.auth; |
| 2 | 2 | |
| 3 | 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 | 5 | import org.mapstruct.Mapper; |
| 6 | 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 | 4 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptRespVO; |
| 5 | 5 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSimpleRespVO; |
| 6 | 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 | 8 | import org.mapstruct.Mapper; |
| 9 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | 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 | 6 | import org.mapstruct.Mapper; |
| 7 | 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 | 1 | package cn.iocoder.yudao.module.system.convert.dict; |
| 2 | 2 | |
| 3 | 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 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | 6 | import cn.iocoder.yudao.framework.dict.core.dto.DictDataRespDTO; |
| 7 | 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 | 4 | import cn.iocoder.yudao.framework.dict.core.dto.DictDataRespDTO; |
| 5 | 5 | import org.mapstruct.Mapper; |
| 6 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogExcelVO; |
| 4 | 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 | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | 7 | import org.mapstruct.Mapper; |
| 8 | 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 | 3 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogExcelVO; |
| 4 | 4 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogRespVO; |
| 5 | 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 | 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 8 | 8 | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; |
| 9 | 9 | import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO; |
| ... | ... | @@ -27,7 +27,7 @@ public interface OperateLogConvert { |
| 27 | 27 | |
| 28 | 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 | 31 | return list.stream().map(operateLog -> { |
| 32 | 32 | OperateLogExcelVO excelVO = convert02(operateLog); |
| 33 | 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 | 5 | import org.mapstruct.Mapper; |
| 6 | 6 | import org.mapstruct.factory.Mappers; |
| 7 | 7 | |
| ... | ... | @@ -10,6 +10,6 @@ public interface SysLoginLogCoreConvert { |
| 10 | 10 | |
| 11 | 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 | 1 | package cn.iocoder.yudao.module.system.convert.permission; |
| 2 | 2 | |
| 3 | 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 | 5 | import org.mapstruct.Mapper; |
| 6 | 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 | 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelRespVO; |
| 5 | 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelSimpleRespVO; |
| 6 | 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 | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | 9 | import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties; |
| 10 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExcelVO; |
| 4 | 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 | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | 7 | import org.mapstruct.Mapper; |
| 8 | 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 | 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateExcelVO; |
| 5 | 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateRespVO; |
| 6 | 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 | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | 9 | import org.mapstruct.Mapper; |
| 10 | 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 | 4 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantExcelVO; |
| 5 | 5 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantRespVO; |
| 6 | 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 | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | 9 | import org.mapstruct.Mapper; |
| 10 | 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 | 4 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; |
| 5 | 5 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; |
| 6 | 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 | 12 | import org.mapstruct.Mapper; |
| 13 | 13 | import org.mapstruct.factory.Mappers; |
| 14 | 14 | |
| ... | ... | @@ -19,31 +19,31 @@ public interface UserConvert { |
| 19 | 19 | |
| 20 | 20 | UserConvert INSTANCE = Mappers.getMapper(UserConvert.class); |
| 21 | 21 | |
| 22 | - UserPageItemRespVO convert(SysUserDO bean); | |
| 22 | + UserPageItemRespVO convert(UserDO bean); | |
| 23 | 23 | |
| 24 | 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 | 36 | List<UserProfileRespVO.Role> convertList(List<SysRoleDO> list); |
| 37 | 37 | |
| 38 | 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 | 44 | List<UserProfileRespVO.Post> convertList02(List<SysPostDO> list); |
| 45 | 45 | |
| 46 | 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
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 | 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 5 | 5 | import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; |
| 6 | 6 | import com.baomidou.mybatisplus.annotation.TableId; |
| ... | ... | @@ -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 | 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
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
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/logger/OperateLogDO.java
| 1 | 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 | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 5 | 5 | import cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum; |
| 6 | 6 | import cn.iocoder.yudao.framework.tenant.core.db.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 | 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 | 3 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 4 | 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 | 7 | import com.baomidou.mybatisplus.annotation.TableName; |
| 8 | 8 | import lombok.Data; |
| 9 | 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 | 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 4 | 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
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
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 | 5 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 6 | 6 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 7 | 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 | 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 5 | 5 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 6 | 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 | 4 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 5 | 5 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 6 | 6 | import com.baomidou.mybatisplus.annotation.TableId; |
| ... | ... | @@ -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 | 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
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 | 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 5 | 5 | import cn.iocoder.yudao.framework.mybatis.core.type.JsonLongSetTypeHandler; |
| 6 | 6 | import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; |
| ... | ... | @@ -24,7 +24,7 @@ import java.util.Set; |
| 24 | 24 | @Builder |
| 25 | 25 | @NoArgsConstructor |
| 26 | 26 | @AllArgsConstructor |
| 27 | -public class SysUserDO extends TenantBaseDO { | |
| 27 | +public class UserDO extends TenantBaseDO { | |
| 28 | 28 | |
| 29 | 29 | /** |
| 30 | 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 | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | 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 | 1 | package cn.iocoder.yudao.module.system.dal.mysql.auth; |
| 2 | 2 | |
| 3 | 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 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | 6 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 7 | 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 | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | 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 | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 6 | 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 | 8 | import com.baomidou.mybatisplus.annotation.InterceptorIgnore; |
| 9 | 9 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 10 | 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 | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | 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 | 5 | import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; |
| 6 | 6 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostExportReqVO; |
| 7 | 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 | 9 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| 10 | 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 | 3 | import cn.iocoder.yudao.framework.mybatis.core.enums.SqlConstants; |
| 4 | 4 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataExportReqVO; |
| 5 | 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 | 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 8 | 8 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 9 | 9 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 10 | 10 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 11 | +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |
| 11 | 12 | import org.apache.ibatis.annotations.Mapper; |
| 12 | 13 | |
| 13 | 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 | 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 | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | 5 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 6 | 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 | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | 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 | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | 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 | 5 | import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; |
| 6 | 6 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleExportReqVO; |
| 7 | 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 | 9 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| 10 | 10 | import org.apache.ibatis.annotations.Mapper; |
| 11 | 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 | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | 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 | 1 | package cn.iocoder.yudao.module.system.dal.mysql.permission; |
| 2 | 2 | |
| 3 | 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 | 5 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| 6 | 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 | 1 | package cn.iocoder.yudao.module.system.dal.mysql.sms; |
| 2 | 2 | |
| 3 | 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 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | 6 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 7 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO; |
| 4 | 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 | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | 7 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 8 | 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 | 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 | 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateExportReqVO; |
| 4 | 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 | 8 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 8 | -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | |
| 9 | 9 | import org.apache.ibatis.annotations.Mapper; |
| 10 | +import org.apache.ibatis.annotations.Select; | |
| 10 | 11 | |
| 12 | +import java.util.Date; | |
| 11 | 13 | import java.util.List; |
| 12 | 14 | |
| 13 | 15 | @Mapper |
| 14 | 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 | 21 | default SysSmsTemplateDO selectByCode(String code) { |
| 17 | 22 | return selectOne(SysSmsTemplateDO::getCode, code); |
| 18 | 23 | } |
| 19 | 24 | |
| 20 | - // TODO 这种参数都一样的得想办法封装一下 | |
| 21 | 25 | default PageResult<SysSmsTemplateDO> selectPage(SmsTemplatePageReqVO reqVO) { |
| 22 | 26 | return selectPage(reqVO, new LambdaQueryWrapperX<SysSmsTemplateDO>() |
| 23 | 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 | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | 5 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| 6 | 6 | import org.apache.ibatis.annotations.Mapper; |
| ... | ... | @@ -9,7 +9,7 @@ import java.util.Collection; |
| 9 | 9 | import java.util.List; |
| 10 | 10 | |
| 11 | 11 | @Mapper |
| 12 | -public interface SysSocialUserCoreMapper extends BaseMapperX<SysSocialUserDO> { | |
| 12 | +public interface SysSocialUserMapper extends BaseMapperX<SysSocialUserDO> { | |
| 13 | 13 | |
| 14 | 14 | default List<SysSocialUserDO> selectListByTypeAndUnionId(Integer userType, Collection<Integer> types, String unionId) { |
| 15 | 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 | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantExportReqVO; |
| 4 | 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 | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | 7 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 8 | 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 | 1 | package cn.iocoder.yudao.module.system.dal.redis; |
| 2 | 2 | |
| 3 | 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 | 9 | import static cn.iocoder.yudao.framework.redis.core.RedisKeyDefine.KeyTypeEnum.STRING; |
| 6 | 10 | |
| ... | ... | @@ -14,5 +18,17 @@ public interface SysRedisKeyConstants { |
| 14 | 18 | RedisKeyDefine CAPTCHA_CODE = new RedisKeyDefine("验证码的缓存", |
| 15 | 19 | "captcha_code:%s", // 参数为 uuid |
| 16 | 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 | 3 | import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine; |
| 4 | 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 | */ |
| 16 | 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 | 3 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; |
| 4 | 4 | import cn.iocoder.yudao.framework.security.config.SecurityProperties; |
| ... | ... | @@ -8,7 +8,7 @@ import org.springframework.stereotype.Repository; |
| 8 | 8 | |
| 9 | 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 | 14 | * {@link LoginUser} 的 RedisDAO |
| ... | ... | @@ -16,7 +16,7 @@ import static cn.iocoder.yudao.coreservice.modules.system.dal.redis.SysRedisKeyC |
| 16 | 16 | * @author 芋道源码 |
| 17 | 17 | */ |
| 18 | 18 | @Repository |
| 19 | -public class SysLoginUserCoreRedisDAO { | |
| 19 | +public class LoginUserRedisDAO { | |
| 20 | 20 | |
| 21 | 21 | @Resource |
| 22 | 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 | 3 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; |
| 4 | 4 | import me.zhyd.oauth.model.AuthCallback; |
| ... | ... | @@ -8,7 +8,8 @@ import org.springframework.stereotype.Repository; |
| 8 | 8 | |
| 9 | 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 | 15 | * 社交 {@link me.zhyd.oauth.model.AuthUser} 的 RedisDAO |
| ... | ... | @@ -16,7 +17,7 @@ import static cn.iocoder.yudao.coreservice.modules.system.dal.redis.SysRedisKeyC |
| 16 | 17 | * @author 芋道源码 |
| 17 | 18 | */ |
| 18 | 19 | @Repository |
| 19 | -public class SysSocialAuthUserRedisDAO { | |
| 20 | +public class SocialAuthUserRedisDAO { | |
| 20 | 21 | |
| 21 | 22 | @Resource |
| 22 | 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 | 4 | * System 字典类型的枚举类 |
| 5 | 5 | * |
| 6 | 6 | * @author 芋道源码 |
| 7 | 7 | */ |
| 8 | -public interface SysDictTypeConstants { | |
| 8 | +public interface DictTypeConstants { | |
| 9 | 9 | |
| 10 | 10 | String USER_TYPE = "user_type"; // 用户类型 |
| 11 | 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 | 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 | 5 | import cn.iocoder.yudao.framework.datapermission.core.dept.rule.DeptDataPermissionRuleCustomizer; |
| 6 | 6 | import org.springframework.context.annotation.Bean; |
| 7 | 7 | import org.springframework.context.annotation.Configuration; |
| ... | ... | @@ -17,7 +17,7 @@ public class DataPermissionConfiguration { |
| 17 | 17 | @Bean |
| 18 | 18 | public DeptDataPermissionRuleCustomizer sysDeptDataPermissionRuleCustomizer() { |
| 19 | 19 | return rule -> { |
| 20 | - rule.addDeptColumn(SysUserDO.class); | |
| 20 | + rule.addDeptColumn(UserDO.class); | |
| 21 | 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 | 1 | package cn.iocoder.yudao.module.system.mq.consumer.dict; |
| 2 | 2 | |
| 3 | -import cn.iocoder.yudao.coreservice.modules.system.service.dict.SysDictDataCoreService; | |
| 4 | 3 | import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener; |
| 5 | 4 | import cn.iocoder.yudao.module.system.mq.message.dict.DictDataRefreshMessage; |
| 5 | +import cn.iocoder.yudao.module.system.service.dict.DictDataService; | |
| 6 | 6 | import lombok.extern.slf4j.Slf4j; |
| 7 | 7 | import org.springframework.stereotype.Component; |
| 8 | 8 | |
| ... | ... | @@ -18,12 +18,12 @@ import javax.annotation.Resource; |
| 18 | 18 | public class DictDataRefreshConsumer extends AbstractChannelMessageListener<DictDataRefreshMessage> { |
| 19 | 19 | |
| 20 | 20 | @Resource |
| 21 | - private SysDictDataCoreService dictDataCoreService; | |
| 21 | + private DictDataService dictDataService; | |
| 22 | 22 | |
| 23 | 23 | @Override |
| 24 | 24 | public void onMessage(DictDataRefreshMessage message) { |
| 25 | 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 | 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 | 5 | import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessageListener; |
| 6 | 6 | import lombok.extern.slf4j.Slf4j; |
| 7 | 7 | import org.springframework.stereotype.Component; |
| ... | ... | @@ -9,20 +9,20 @@ import org.springframework.stereotype.Component; |
| 9 | 9 | import javax.annotation.Resource; |
| 10 | 10 | |
| 11 | 11 | /** |
| 12 | - * 针对 {@link SysSmsSendMessage} 的消费者 | |
| 12 | + * 针对 {@link SmsSendMessage} 的消费者 | |
| 13 | 13 | * |
| 14 | 14 | * @author zzf |
| 15 | 15 | * @date 2021/3/9 16:35 |
| 16 | 16 | */ |
| 17 | 17 | @Component |
| 18 | 18 | @Slf4j |
| 19 | -public class SmsSendConsumer extends AbstractStreamMessageListener<SysSmsSendMessage> { | |
| 19 | +public class SmsSendConsumer extends AbstractStreamMessageListener<SmsSendMessage> { | |
| 20 | 20 | |
| 21 | 21 | @Resource |
| 22 | - private SysSmsCoreService smsCoreService; | |
| 22 | + private SysSmsSendService smsCoreService; | |
| 23 | 23 | |
| 24 | 24 | @Override |
| 25 | - public void onMessage(SysSmsSendMessage message) { | |
| 25 | + public void onMessage(SmsSendMessage message) { | |
| 26 | 26 | log.info("[onMessage][消息内容({})]", message); |
| 27 | 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 | 1 | package cn.iocoder.yudao.module.system.mq.consumer.sms; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.system.mq.message.sms.SmsTemplateRefreshMessage; |
| 4 | -import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsTemplateCoreService; | |
| 5 | 4 | import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener; |
| 5 | +import cn.iocoder.yudao.module.system.service.sms.SmsTemplateService; | |
| 6 | 6 | import lombok.extern.slf4j.Slf4j; |
| 7 | 7 | import org.springframework.stereotype.Component; |
| 8 | 8 | |
| ... | ... | @@ -18,12 +18,12 @@ import javax.annotation.Resource; |
| 18 | 18 | public class SmsTemplateRefreshConsumer extends AbstractChannelMessageListener<SmsTemplateRefreshMessage> { |
| 19 | 19 | |
| 20 | 20 | @Resource |
| 21 | - private SysSmsTemplateCoreService smsTemplateCoreService; | |
| 21 | + private SmsTemplateService smsTemplateService; | |
| 22 | 22 | |
| 23 | 23 | @Override |
| 24 | 24 | public void onMessage(SmsTemplateRefreshMessage message) { |
| 25 | 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 | 3 | import cn.iocoder.yudao.framework.common.core.KeyValue; |
| 4 | 4 | import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessage; |
| ... | ... | @@ -15,7 +15,7 @@ import java.util.List; |
| 15 | 15 | */ |
| 16 | 16 | @Data |
| 17 | 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 | 1 | package cn.iocoder.yudao.module.system.mq.producer.sms; |
| 2 | 2 | |
| 3 | +import cn.iocoder.yudao.framework.common.core.KeyValue; | |
| 3 | 4 | import cn.iocoder.yudao.module.system.mq.message.sms.SmsChannelRefreshMessage; |
| 5 | +import cn.iocoder.yudao.module.system.mq.message.sms.SmsSendMessage; | |
| 4 | 6 | import cn.iocoder.yudao.module.system.mq.message.sms.SmsTemplateRefreshMessage; |
| 5 | 7 | import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; |
| 6 | 8 | import lombok.extern.slf4j.Slf4j; |
| 7 | 9 | import org.springframework.stereotype.Component; |
| 8 | 10 | |
| 9 | 11 | import javax.annotation.Resource; |
| 12 | +import java.util.List; | |
| 10 | 13 | |
| 11 | 14 | /** |
| 12 | 15 | * Sms 短信相关消息的 Producer |
| ... | ... | @@ -37,4 +40,20 @@ public class SmsProducer { |
| 37 | 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 | 1 | package cn.iocoder.yudao.module.system.service.auth; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | |
| 5 | +import cn.iocoder.yudao.framework.common.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 | 10 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthLoginReqVO; |
| 5 | 11 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthSocialBindReqVO; |
| 6 | 12 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthSocialLogin2ReqVO; |
| 7 | 13 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthSocialLoginReqVO; |
| 8 | 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 | 17 | import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; |
| 11 | 18 | import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; |
| 12 | 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 | 22 | import cn.iocoder.yudao.module.system.service.permission.PermissionService; |
| 23 | +import cn.iocoder.yudao.module.system.service.social.SocialUserService; | |
| 15 | 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 | 25 | import lombok.extern.slf4j.Slf4j; |
| 30 | 26 | import me.zhyd.oauth.model.AuthUser; |
| 27 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 31 | 28 | import org.springframework.context.annotation.Lazy; |
| 32 | 29 | import org.springframework.security.authentication.AuthenticationManager; |
| 33 | 30 | import org.springframework.security.authentication.BadCredentialsException; |
| ... | ... | @@ -40,14 +37,12 @@ import org.springframework.stereotype.Service; |
| 40 | 37 | import org.springframework.util.Assert; |
| 41 | 38 | |
| 42 | 39 | import javax.annotation.Resource; |
| 43 | -import java.util.Collections; | |
| 44 | 40 | import java.util.List; |
| 45 | 41 | import java.util.Objects; |
| 46 | 42 | import java.util.Set; |
| 47 | 43 | |
| 48 | -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; | |
| 49 | 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 | 46 | import static java.util.Collections.singleton; |
| 52 | 47 | |
| 53 | 48 | /** |
| ... | ... | @@ -63,27 +58,24 @@ public class AuthServiceImpl implements AuthService { |
| 63 | 58 | @Lazy // 延迟加载,因为存在相互依赖的问题 |
| 64 | 59 | private AuthenticationManager authenticationManager; |
| 65 | 60 | |
| 66 | - @Resource | |
| 61 | + @Autowired | |
| 62 | + @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // UserService 存在重名 | |
| 67 | 63 | private UserService userService; |
| 68 | 64 | @Resource |
| 69 | - private SysUserCoreService userCoreService; | |
| 70 | - @Resource | |
| 71 | 65 | private PermissionService permissionService; |
| 72 | 66 | @Resource |
| 73 | 67 | private CaptchaService captchaService; |
| 74 | 68 | @Resource |
| 75 | - private SysLoginLogCoreService loginLogCoreService; | |
| 76 | - @Resource | |
| 77 | - private SysUserSessionCoreService userSessionCoreService; | |
| 69 | + private LoginLogService loginLogService; | |
| 78 | 70 | @Resource |
| 79 | - private PostService postService; | |
| 71 | + private UserSessionService userSessionService; | |
| 80 | 72 | @Resource |
| 81 | - private SysSocialCoreService socialService; | |
| 73 | + private SocialUserService socialService; | |
| 82 | 74 | |
| 83 | 75 | @Override |
| 84 | 76 | public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { |
| 85 | 77 | // 获取 username 对应的 SysUserDO |
| 86 | - SysUserDO user = userService.getUserByUsername(username); | |
| 78 | + UserDO user = userService.getUserByUsername(username); | |
| 87 | 79 | if (user == null) { |
| 88 | 80 | throw new UsernameNotFoundException(username); |
| 89 | 81 | } |
| ... | ... | @@ -94,7 +86,7 @@ public class AuthServiceImpl implements AuthService { |
| 94 | 86 | @Override |
| 95 | 87 | public LoginUser mockLogin(Long userId) { |
| 96 | 88 | // 获取用户编号对应的 SysUserDO |
| 97 | - SysUserDO user = userCoreService.getUser(userId); | |
| 89 | + UserDO user = userService.getUser(userId); | |
| 98 | 90 | if (user == null) { |
| 99 | 91 | throw new UsernameNotFoundException(String.valueOf(userId)); |
| 100 | 92 | } |
| ... | ... | @@ -113,14 +105,7 @@ public class AuthServiceImpl implements AuthService { |
| 113 | 105 | LoginUser loginUser = this.login0(reqVO.getUsername(), reqVO.getPassword()); |
| 114 | 106 | |
| 115 | 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 | 111 | private void verifyCaptcha(String username, String captchaUUID, String captchaCode) { |
| ... | ... | @@ -175,9 +160,9 @@ public class AuthServiceImpl implements AuthService { |
| 175 | 160 | |
| 176 | 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 | 166 | reqDTO.setLogType(logTypeEnum.getType()); |
| 182 | 167 | reqDTO.setTraceId(TracerUtils.getTraceId()); |
| 183 | 168 | if (user != null) { |
| ... | ... | @@ -188,7 +173,7 @@ public class AuthServiceImpl implements AuthService { |
| 188 | 173 | reqDTO.setUserAgent(ServletUtils.getUserAgent()); |
| 189 | 174 | reqDTO.setUserIp(ServletUtils.getClientIP()); |
| 190 | 175 | reqDTO.setResult(loginResult.getResult()); |
| 191 | - loginLogCoreService.createLoginLog(reqDTO); | |
| 176 | + loginLogService.createLoginLog(reqDTO); | |
| 192 | 177 | // 更新最后登录时间 |
| 193 | 178 | if (user != null && Objects.equals(LoginResultEnum.SUCCESS.getResult(), loginResult.getResult())) { |
| 194 | 179 | userService.updateUserLogin(user.getId(), ServletUtils.getClientIP()); |
| ... | ... | @@ -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 | 208 | if (user == null) { |
| 224 | 209 | throw exception(USER_NOT_EXISTS); |
| 225 | 210 | } |
| ... | ... | @@ -232,7 +217,7 @@ public class AuthServiceImpl implements AuthService { |
| 232 | 217 | socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, getUserType()); |
| 233 | 218 | |
| 234 | 219 | // 缓存登录用户到 Redis 中,返回 sessionId 编号 |
| 235 | - return userSessionCoreService.createUserSession(loginUser, userIp, userAgent); | |
| 220 | + return userSessionService.createUserSession(loginUser, userIp, userAgent); | |
| 236 | 221 | } |
| 237 | 222 | |
| 238 | 223 | @Override |
| ... | ... | @@ -248,7 +233,7 @@ public class AuthServiceImpl implements AuthService { |
| 248 | 233 | socialService.bindSocialUser(loginUser.getId(), reqVO.getType(), authUser, getUserType()); |
| 249 | 234 | |
| 250 | 235 | // 缓存登录用户到 Redis 中,返回 sessionId 编号 |
| 251 | - return userSessionCoreService.createUserSession(loginUser, userIp, userAgent); | |
| 236 | + return userSessionService.createUserSession(loginUser, userIp, userAgent); | |
| 252 | 237 | } |
| 253 | 238 | |
| 254 | 239 | @Override |
| ... | ... | @@ -264,12 +249,12 @@ public class AuthServiceImpl implements AuthService { |
| 264 | 249 | @Override |
| 265 | 250 | public void logout(String token) { |
| 266 | 251 | // 查询用户信息 |
| 267 | - LoginUser loginUser = userSessionCoreService.getLoginUser(token); | |
| 252 | + LoginUser loginUser = userSessionService.getLoginUser(token); | |
| 268 | 253 | if (loginUser == null) { |
| 269 | 254 | return; |
| 270 | 255 | } |
| 271 | 256 | // 删除 session |
| 272 | - userSessionCoreService.deleteUserSession(token); | |
| 257 | + userSessionService.deleteUserSession(token); | |
| 273 | 258 | // 记录登出日志 |
| 274 | 259 | this.createLogoutLog(loginUser.getId(), loginUser.getUsername()); |
| 275 | 260 | } |
| ... | ... | @@ -280,7 +265,7 @@ public class AuthServiceImpl implements AuthService { |
| 280 | 265 | } |
| 281 | 266 | |
| 282 | 267 | private void createLogoutLog(Long userId, String username) { |
| 283 | - SysLoginLogCreateReqDTO reqDTO = new SysLoginLogCreateReqDTO(); | |
| 268 | + LoginLogCreateReqDTO reqDTO = new LoginLogCreateReqDTO(); | |
| 284 | 269 | reqDTO.setLogType(LoginLogTypeEnum.LOGOUT_SELF.getType()); |
| 285 | 270 | reqDTO.setTraceId(TracerUtils.getTraceId()); |
| 286 | 271 | reqDTO.setUserId(userId); |
| ... | ... | @@ -289,13 +274,13 @@ public class AuthServiceImpl implements AuthService { |
| 289 | 274 | reqDTO.setUserAgent(ServletUtils.getUserAgent()); |
| 290 | 275 | reqDTO.setUserIp(ServletUtils.getClientIP()); |
| 291 | 276 | reqDTO.setResult(LoginResultEnum.SUCCESS.getResult()); |
| 292 | - loginLogCoreService.createLoginLog(reqDTO); | |
| 277 | + loginLogService.createLoginLog(reqDTO); | |
| 293 | 278 | } |
| 294 | 279 | |
| 295 | 280 | @Override |
| 296 | 281 | public LoginUser verifyTokenAndRefresh(String token) { |
| 297 | 282 | // 获得 LoginUser |
| 298 | - LoginUser loginUser = userSessionCoreService.getLoginUser(token); | |
| 283 | + LoginUser loginUser = userSessionService.getLoginUser(token); | |
| 299 | 284 | if (loginUser == null) { |
| 300 | 285 | return null; |
| 301 | 286 | } |
| ... | ... | @@ -306,23 +291,23 @@ public class AuthServiceImpl implements AuthService { |
| 306 | 291 | private LoginUser refreshLoginUserCache(String token, LoginUser loginUser) { |
| 307 | 292 | // 每 1/3 的 Session 超时时间,刷新 LoginUser 缓存 |
| 308 | 293 | if (System.currentTimeMillis() - loginUser.getUpdateTime().getTime() < |
| 309 | - userSessionCoreService.getSessionTimeoutMillis() / 3) { | |
| 294 | + userSessionService.getSessionTimeoutMillis() / 3) { | |
| 310 | 295 | return loginUser; |
| 311 | 296 | } |
| 312 | 297 | |
| 313 | 298 | // 重新加载 SysUserDO 信息 |
| 314 | - SysUserDO user = userCoreService.getUser(loginUser.getId()); | |
| 299 | + UserDO user = userService.getUser(loginUser.getId()); | |
| 315 | 300 | if (user == null || CommonStatusEnum.DISABLE.getStatus().equals(user.getStatus())) { |
| 316 | 301 | throw exception(AUTH_TOKEN_EXPIRED); // 校验 token 时,用户被禁用的情况下,也认为 token 过期,方便前端跳转到登录界面 |
| 317 | 302 | } |
| 318 | 303 | |
| 319 | 304 | // 刷新 LoginUser 缓存 |
| 320 | 305 | LoginUser newLoginUser= this.buildLoginUser(user); |
| 321 | - userSessionCoreService.refreshUserSession(token, newLoginUser); | |
| 306 | + userSessionService.refreshUserSession(token, newLoginUser); | |
| 322 | 307 | return newLoginUser; |
| 323 | 308 | } |
| 324 | 309 | |
| 325 | - private LoginUser buildLoginUser(SysUserDO user) { | |
| 310 | + private LoginUser buildLoginUser(UserDO user) { | |
| 326 | 311 | LoginUser loginUser = AuthConvert.INSTANCE.convert(user); |
| 327 | 312 | // 补全字段 |
| 328 | 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 | 1 | package cn.iocoder.yudao.module.system.service.auth; |
| 2 | 2 | |
| 3 | +import cn.iocoder.yudao.framework.security.core.LoginUser; | |
| 3 | 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 | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | 7 | |
| 7 | 8 | /** |
| ... | ... | @@ -26,4 +27,44 @@ public interface UserSessionService { |
| 26 | 27 | **/ |
| 27 | 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 | 1 | package cn.iocoder.yudao.module.system.service.auth; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | +import cn.hutool.core.util.IdUtil; | |
| 4 | 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 | 8 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; |
| 6 | 9 | import cn.iocoder.yudao.module.system.dal.mysql.auth.SysUserSessionMapper; |
| 7 | 10 | import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; |
| 8 | 11 | import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; |
| 12 | +import cn.iocoder.yudao.module.system.service.logger.LoginLogService; | |
| 9 | 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 | 18 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 16 | 19 | import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; |
| 17 | 20 | import com.google.common.collect.Lists; |
| ... | ... | @@ -19,13 +22,12 @@ import lombok.extern.slf4j.Slf4j; |
| 19 | 22 | import org.springframework.stereotype.Service; |
| 20 | 23 | |
| 21 | 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 | 27 | import java.util.stream.Collectors; |
| 27 | 28 | |
| 28 | 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 | 33 | * 在线用户 Session Service 实现类 |
| ... | ... | @@ -38,20 +40,24 @@ public class UserSessionServiceImpl implements UserSessionService { |
| 38 | 40 | |
| 39 | 41 | @Resource |
| 40 | 42 | private SysUserSessionMapper userSessionMapper; |
| 43 | + | |
| 41 | 44 | @Resource |
| 42 | 45 | private UserService userService; |
| 43 | 46 | @Resource |
| 44 | - private SysLoginLogCoreService loginLogCoreService; | |
| 47 | + private LoginLogService loginLogService; | |
| 48 | + | |
| 49 | + @Resource | |
| 50 | + private LoginUserRedisDAO loginUserCoreRedisDAO; | |
| 45 | 51 | |
| 46 | 52 | @Resource |
| 47 | - private SysLoginUserCoreRedisDAO loginUserCoreRedisDAO; | |
| 53 | + private SecurityProperties securityProperties; | |
| 48 | 54 | |
| 49 | 55 | @Override |
| 50 | 56 | public PageResult<SysUserSessionDO> getUserSessionPage(UserSessionPageReqVO reqVO) { |
| 51 | 57 | // 处理基于用户昵称的查询 |
| 52 | 58 | Collection<Long> userIds = null; |
| 53 | 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 | 61 | if (CollUtil.isEmpty(userIds)) { |
| 56 | 62 | return PageResult.empty(); |
| 57 | 63 | } |
| ... | ... | @@ -80,7 +86,7 @@ public class UserSessionServiceImpl implements UserSessionService { |
| 80 | 86 | |
| 81 | 87 | private void createTimeoutLogoutLog(Collection<SysUserSessionDO> timeoutSessionDOS) { |
| 82 | 88 | for (SysUserSessionDO timeoutSessionDO : timeoutSessionDOS) { |
| 83 | - SysLoginLogCreateReqDTO reqDTO = new SysLoginLogCreateReqDTO(); | |
| 89 | + LoginLogCreateReqDTO reqDTO = new LoginLogCreateReqDTO(); | |
| 84 | 90 | reqDTO.setLogType(LoginLogTypeEnum.LOGOUT_TIMEOUT.getType()); |
| 85 | 91 | reqDTO.setTraceId(TracerUtils.getTraceId()); |
| 86 | 92 | reqDTO.setUserId(timeoutSessionDO.getUserId()); |
| ... | ... | @@ -89,8 +95,66 @@ public class UserSessionServiceImpl implements UserSessionService { |
| 89 | 95 | reqDTO.setUserAgent(timeoutSessionDO.getUserAgent()); |
| 90 | 96 | reqDTO.setUserIp(timeoutSessionDO.getUserIp()); |
| 91 | 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 | 3 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptCreateReqVO; |
| 4 | 4 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO; |
| 5 | 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 | 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 | 9 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptUpdateReqVO; |
| 10 | 10 | import cn.iocoder.yudao.module.system.convert.dept.DeptConvert; |
| 11 | 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 | 13 | import cn.iocoder.yudao.module.system.enums.dept.DeptIdEnum; |
| 14 | 14 | import cn.iocoder.yudao.module.system.mq.producer.dept.DeptProducer; |
| 15 | 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 | 6 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostExportReqVO; |
| 7 | 7 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostPageReqVO; |
| 8 | 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 | 10 | import org.springframework.lang.Nullable; |
| 11 | 11 | |
| 12 | 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 | 8 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostUpdateReqVO; |
| 9 | 9 | import cn.iocoder.yudao.module.system.convert.dept.PostConvert; |
| 10 | 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 | 12 | import org.springframework.stereotype.Service; |
| 13 | 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 | 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 | 5 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 6 | 6 | |
| 7 | 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 | 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 | 7 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 8 | 8 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 9 | 9 | import lombok.extern.slf4j.Slf4j; |
| 10 | 10 | import org.springframework.stereotype.Service; |
| 11 | -import org.springframework.validation.annotation.Validated; | |
| 12 | 11 | |
| 13 | 12 | import javax.annotation.Resource; |
| 14 | 13 | import java.util.Collection; |
| 15 | 14 | import java.util.List; |
| 16 | 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 | 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 | 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 | 7 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 8 | 8 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 9 | 9 | import org.springframework.stereotype.Service; |
| ... | ... | @@ -13,8 +13,8 @@ import java.util.Collection; |
| 13 | 13 | import java.util.List; |
| 14 | 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 | 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 | 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 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | 6 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataCreateReqVO; |
| 6 | 7 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataExportReqVO; |
| 7 | 8 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO; |
| 8 | 9 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataUpdateReqVO; |
| 9 | 10 | |
| 11 | +import java.util.Collection; | |
| 10 | 12 | import java.util.List; |
| 11 | 13 | |
| 12 | 14 | /** |
| ... | ... | @@ -14,7 +16,12 @@ import java.util.List; |
| 14 | 16 | * |
| 15 | 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 | 84 | */ |
| 78 | 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 | 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 | 8 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataCreateReqVO; |
| 4 | 9 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataExportReqVO; |
| 5 | 10 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO; |
| 6 | 11 | import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataUpdateReqVO; |
| 7 | 12 | import cn.iocoder.yudao.module.system.convert.dict.DictDataConvert; |
| 13 | +import cn.iocoder.yudao.module.system.convert.dict.SysDictDataCoreConvert; | |
| 8 | 14 | import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO; |
| 15 | +import cn.iocoder.yudao.module.system.dal.dataobject.dict.SysDictDataDO; | |
| 9 | 16 | import cn.iocoder.yudao.module.system.dal.mysql.dict.SysDictDataMapper; |
| 10 | 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 | 18 | import com.google.common.annotations.VisibleForTesting; |
| 19 | +import com.google.common.collect.ImmutableMap; | |
| 20 | +import com.google.common.collect.ImmutableTable; | |
| 17 | 21 | import lombok.extern.slf4j.Slf4j; |
| 22 | +import org.springframework.scheduling.annotation.Scheduled; | |
| 18 | 23 | import org.springframework.stereotype.Service; |
| 19 | 24 | |
| 25 | +import javax.annotation.PostConstruct; | |
| 20 | 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 | 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 | 36 | * 字典数据 Service 实现类 |
| ... | ... | @@ -39,6 +48,12 @@ public class DictDataServiceImpl implements DictDataService { |
| 39 | 48 | .comparing(SysDictDataDO::getDictType) |
| 40 | 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 | 57 | @Resource |
| 43 | 58 | private DictTypeService dictTypeService; |
| 44 | 59 | |
| ... | ... | @@ -49,6 +64,48 @@ public class DictDataServiceImpl implements DictDataService { |
| 49 | 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 | 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 | 134 | @Override |
| 73 | 135 | public List<SysDictDataDO> getDictDatas() { |
| 74 | 136 | List<SysDictDataDO> list = dictDataMapper.selectList(); |
| ... | ... | @@ -94,12 +156,29 @@ public class DictDataServiceImpl implements DictDataService { |
| 94 | 156 | } |
| 95 | 157 | |
| 96 | 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 | 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 | 179 | SysDictDataDO dictData = DictDataConvert.INSTANCE.convert(reqVO); |
| 102 | 180 | dictDataMapper.insert(dictData); |
| 181 | + | |
| 103 | 182 | // 发送刷新消息 |
| 104 | 183 | dictDataProducer.sendDictDataRefreshMessage(); |
| 105 | 184 | return dictData.getId(); |
| ... | ... | @@ -108,10 +187,12 @@ public class DictDataServiceImpl implements DictDataService { |
| 108 | 187 | @Override |
| 109 | 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 | 193 | SysDictDataDO updateObj = DictDataConvert.INSTANCE.convert(reqVO); |
| 114 | 194 | dictDataMapper.updateById(updateObj); |
| 195 | + | |
| 115 | 196 | // 发送刷新消息 |
| 116 | 197 | dictDataProducer.sendDictDataRefreshMessage(); |
| 117 | 198 | } |
| ... | ... | @@ -119,9 +200,11 @@ public class DictDataServiceImpl implements DictDataService { |
| 119 | 200 | @Override |
| 120 | 201 | public void deleteDictData(Long id) { |
| 121 | 202 | // 校验是否存在 |
| 122 | - this.checkDictDataExists(id); | |
| 203 | + checkDictDataExists(id); | |
| 204 | + | |
| 123 | 205 | // 删除字典数据 |
| 124 | 206 | dictDataMapper.deleteById(id); |
| 207 | + | |
| 125 | 208 | // 发送刷新消息 |
| 126 | 209 | dictDataProducer.sendDictDataRefreshMessage(); |
| 127 | 210 | } |
| ... | ... | @@ -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 | 54 | @Override |
| 55 | 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 | 59 | DictTypeDO dictType = DictTypeConvert.INSTANCE.convert(reqVO); |
| 60 | 60 | dictTypeMapper.insert(dictType); |
| ... | ... | @@ -64,7 +64,7 @@ public class DictTypeServiceImpl implements DictTypeService { |
| 64 | 64 | @Override |
| 65 | 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 | 69 | DictTypeDO updateObj = DictTypeConvert.INSTANCE.convert(reqVO); |
| 70 | 70 | dictTypeMapper.updateById(updateObj); |
| ... | ... | @@ -73,7 +73,7 @@ public class DictTypeServiceImpl implements DictTypeService { |
| 73 | 73 | @Override |
| 74 | 74 | public void deleteDictType(Long id) { |
| 75 | 75 | // 校验是否存在 |
| 76 | - DictTypeDO dictType = this.checkDictTypeExists(id); | |
| 76 | + DictTypeDO dictType = checkDictTypeExists(id); | |
| 77 | 77 | // 校验是否有字典数据 |
| 78 | 78 | if (dictDataService.countByDictType(dictType.getType()) > 0) { |
| 79 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogExportReqVO; |
| 4 | 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 | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | +import cn.iocoder.yudao.module.system.service.logger.dto.LoginLogCreateReqDTO; | |
| 7 | 8 | |
| 8 | 9 | import java.util.List; |
| 9 | 10 | |
| ... | ... | @@ -28,4 +29,11 @@ public interface LoginLogService { |
| 28 | 29 | */ |
| 29 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogExportReqVO; |
| 4 | 4 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogPageReqVO; |
| 5 | +import cn.iocoder.yudao.module.system.convert.logger.SysLoginLogCoreConvert; | |
| 5 | 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 | 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 | 11 | import org.springframework.stereotype.Service; |
| 9 | 12 | |
| 10 | 13 | import javax.annotation.Resource; |
| ... | ... | @@ -29,4 +32,11 @@ public class LoginLogServiceImpl implements LoginLogService { |
| 29 | 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 | 8 | import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO; |
| 9 | 9 | import cn.iocoder.yudao.module.system.dal.mysql.logger.OperateLogMapper; |
| 10 | 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 | 12 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 13 | 13 | import cn.iocoder.yudao.framework.common.util.string.StrUtils; |
| 14 | 14 | import cn.iocoder.yudao.framework.operatelog.core.dto.OperateLogCreateReqDTO; |
| ... | ... | @@ -58,7 +58,7 @@ public class OperateLogServiceImpl implements OperateLogService { |
| 58 | 58 | // 处理基于用户昵称的查询 |
| 59 | 59 | Collection<Long> userIds = null; |
| 60 | 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 | 62 | if (CollUtil.isEmpty(userIds)) { |
| 63 | 63 | return PageResult.empty(); |
| 64 | 64 | } |
| ... | ... | @@ -72,7 +72,7 @@ public class OperateLogServiceImpl implements OperateLogService { |
| 72 | 72 | // 处理基于用户昵称的查询 |
| 73 | 73 | Collection<Long> userIds = null; |
| 74 | 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 | 76 | if (CollUtil.isEmpty(userIds)) { |
| 77 | 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 | 3 | import lombok.Data; |
| 4 | 4 | |
| ... | ... | @@ -13,7 +13,7 @@ import javax.validation.constraints.Size; |
| 13 | 13 | * @author 芋道源码 |
| 14 | 14 | */ |
| 15 | 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 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | 4 | import cn.hutool.core.collection.CollectionUtil; |
| 5 | 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 | 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 | 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 | 11 | import cn.iocoder.yudao.module.system.dal.mysql.permission.SysRoleMenuMapper; |
| 12 | 12 | import cn.iocoder.yudao.module.system.dal.mysql.permission.SysUserRoleMapper; |
| 13 | 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 | 5 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleExportReqVO; |
| 6 | 6 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePageReqVO; |
| 7 | 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 | 9 | import org.springframework.lang.Nullable; |
| 10 | 10 | |
| 11 | 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 | 11 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleUpdateReqVO; |
| 12 | 12 | import cn.iocoder.yudao.module.system.convert.permission.RoleConvert; |
| 13 | 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 | 15 | import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum; |
| 16 | 16 | import cn.iocoder.yudao.module.system.enums.permission.RoleTypeEnum; |
| 17 | 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 | 6 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 7 | 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 | 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 | 7 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 8 | 8 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 9 | 9 | import org.springframework.stereotype.Service; |
| ... | ... | @@ -13,8 +13,8 @@ import java.util.Collection; |
| 13 | 13 | import java.util.List; |
| 14 | 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 | 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 | 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 | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelCreateReqVO; |
| 6 | 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 | import cn.iocoder.yudao.module.system.convert.sms.SmsChannelConvert; |
| 8 | 8 | import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsChannelMapper; |
| 9 | 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 | 11 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 12 | 12 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 13 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO; |
| 4 | 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 | 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 | 10 | import java.util.List; |
| 11 | +import java.util.Map; | |
| 9 | 12 | |
| 10 | 13 | /** |
| 11 | 14 | * 短信日志 Service 接口 |
| ... | ... | @@ -16,6 +19,46 @@ import java.util.List; |
| 16 | 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 | 64 | * @param pageReqVO 分页查询 | ... | ... |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsLogServiceImpl.java
| 1 | 1 | package cn.iocoder.yudao.module.system.service.sms; |
| 2 | 2 | |
| 3 | +import cn.iocoder.yudao.framework.common.pojo.CommonResult; | |
| 3 | 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO; |
| 4 | 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 | 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 | 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 | 12 | import lombok.extern.slf4j.Slf4j; |
| 9 | 13 | import org.springframework.stereotype.Service; |
| 10 | 14 | |
| 11 | 15 | import javax.annotation.Resource; |
| 16 | +import java.util.Date; | |
| 12 | 17 | import java.util.List; |
| 18 | +import java.util.Map; | |
| 19 | +import java.util.Objects; | |
| 13 | 20 | |
| 14 | 21 | /** |
| 15 | 22 | * 短信日志 Service 实现类 |
| 16 | 23 | * |
| 17 | 24 | * @author zzf |
| 18 | - * @date 2021/1/25 9:25 | |
| 19 | 25 | */ |
| 20 | 26 | @Slf4j |
| 21 | 27 | @Service |
| ... | ... | @@ -25,6 +31,50 @@ public class SmsLogServiceImpl implements SmsLogService { |
| 25 | 31 | private SysSmsLogMapper smsLogMapper; |
| 26 | 32 | |
| 27 | 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 | 78 | public PageResult<SysSmsLogDO> getSmsLogPage(SmsLogPageReqVO pageReqVO) { |
| 29 | 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 | 4 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateExportReqVO; |
| 5 | 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplatePageReqVO; |
| 6 | 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 | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | 9 | |
| 10 | 10 | import javax.validation.Valid; |
| 11 | 11 | import java.util.Collection; |
| 12 | 12 | import java.util.List; |
| 13 | +import java.util.Map; | |
| 13 | 14 | |
| 14 | 15 | /** |
| 15 | 16 | * 短信模板 Service 接口 |
| ... | ... | @@ -20,6 +21,28 @@ import java.util.List; |
| 20 | 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 | 48 | * @param code 模板编码 | ... | ... |
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsTemplateServiceImpl.java
| 1 | 1 | package cn.iocoder.yudao.module.system.service.sms; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.collection.CollUtil; | |
| 3 | 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 | 7 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateCreateReqVO; |
| 5 | 8 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateExportReqVO; |
| 6 | 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 | 11 | import cn.iocoder.yudao.module.system.convert.sms.SmsTemplateConvert; |
| 9 | 12 | import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsTemplateMapper; |
| 10 | 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 | 16 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 14 | 17 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 15 | 18 | import cn.iocoder.yudao.framework.sms.core.client.SmsClient; |
| ... | ... | @@ -17,14 +20,15 @@ import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; |
| 17 | 20 | import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult; |
| 18 | 21 | import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO; |
| 19 | 22 | import com.google.common.annotations.VisibleForTesting; |
| 23 | +import com.google.common.collect.ImmutableMap; | |
| 20 | 24 | import lombok.extern.slf4j.Slf4j; |
| 25 | +import org.springframework.scheduling.annotation.Scheduled; | |
| 21 | 26 | import org.springframework.stereotype.Service; |
| 22 | 27 | import org.springframework.util.Assert; |
| 23 | 28 | |
| 29 | +import javax.annotation.PostConstruct; | |
| 24 | 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 | 32 | import java.util.regex.Pattern; |
| 29 | 33 | |
| 30 | 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 | 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 | 56 | private static final Pattern PATTERN_PARAMS = Pattern.compile("\\{(.*?)}"); |
| ... | ... | @@ -57,6 +67,72 @@ public class SmsTemplateServiceImpl implements SmsTemplateService { |
| 57 | 67 | @Resource |
| 58 | 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 | 136 | @Override |
| 61 | 137 | public SysSmsTemplateDO getSmsTemplateByCode(String code) { |
| 62 | 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 | 5 | import java.util.List; |
| 6 | 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 | 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 | 46 | void sendBatchSms(List<String> mobiles, List<Long> userIds, Integer userType, |
| 50 | 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 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | 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 | 8 | import cn.iocoder.yudao.framework.common.core.KeyValue; |
| 14 | 9 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 15 | 10 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| ... | ... | @@ -18,7 +13,10 @@ import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory; |
| 18 | 13 | import cn.iocoder.yudao.framework.sms.core.client.SmsCommonResult; |
| 19 | 14 | import cn.iocoder.yudao.framework.sms.core.client.dto.SmsReceiveRespDTO; |
| 20 | 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 | 18 | import com.google.common.annotations.VisibleForTesting; |
| 19 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 22 | 20 | import org.springframework.stereotype.Service; |
| 23 | 21 | import org.springframework.util.Assert; |
| 24 | 22 | |
| ... | ... | @@ -27,35 +25,36 @@ import java.util.List; |
| 27 | 25 | import java.util.Map; |
| 28 | 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 | 29 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 32 | 30 | |
| 33 | 31 | /** |
| 34 | - * 短信 Service Core 实现 | |
| 32 | + * 短信 Service 发送的实现 | |
| 35 | 33 | * |
| 36 | 34 | * @author 芋道源码 |
| 37 | 35 | */ |
| 38 | 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 | 42 | @Resource |
| 42 | - private SysUserCoreService sysUserCoreService; | |
| 43 | + private SmsTemplateService smsTemplateService; | |
| 43 | 44 | @Resource |
| 44 | - private SysSmsTemplateCoreService smsTemplateCoreService; | |
| 45 | - @Resource | |
| 46 | - private SysSmsLogCoreService smsLogCoreService; | |
| 45 | + private SmsLogService smsLogService; | |
| 47 | 46 | |
| 48 | 47 | @Resource |
| 49 | 48 | private SmsClientFactory smsClientFactory; |
| 50 | 49 | |
| 51 | 50 | @Resource |
| 52 | - private SysSmsCoreProducer smsCoreProducer; | |
| 51 | + private SmsProducer smsProducer; | |
| 53 | 52 | |
| 54 | 53 | @Override |
| 55 | 54 | public Long sendSingleSmsToAdmin(String mobile, Long userId, String templateCode, Map<String, Object> templateParams) { |
| 56 | 55 | // 如果 mobile 为空,则加载用户编号对应的手机号 |
| 57 | 56 | if (StrUtil.isEmpty(mobile)) { |
| 58 | - SysUserDO user = sysUserCoreService.getUser(userId); | |
| 57 | + UserDO user = userService.getUser(userId); | |
| 59 | 58 | if (user != null) { |
| 60 | 59 | mobile = user.getMobile(); |
| 61 | 60 | } |
| ... | ... | @@ -90,12 +89,12 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { |
| 90 | 89 | |
| 91 | 90 | // 创建发送日志 |
| 92 | 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 | 95 | // 发送 MQ 消息,异步执行发送短信 |
| 97 | 96 | if (isSend) { |
| 98 | - smsCoreProducer.sendSmsSendMessage(sendLogId, mobile, template.getChannelId(), | |
| 97 | + smsProducer.sendSmsSendMessage(sendLogId, mobile, template.getChannelId(), | |
| 99 | 98 | template.getApiTemplateId(), newTemplateParams); |
| 100 | 99 | } |
| 101 | 100 | return sendLogId; |
| ... | ... | @@ -110,7 +109,7 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { |
| 110 | 109 | @VisibleForTesting |
| 111 | 110 | public SysSmsTemplateDO checkSmsTemplateValid(String templateCode) { |
| 112 | 111 | // 获得短信模板。考虑到效率,从缓存中获取 |
| 113 | - SysSmsTemplateDO template = smsTemplateCoreService.getSmsTemplateByCodeFromCache(templateCode); | |
| 112 | + SysSmsTemplateDO template = smsTemplateService.getSmsTemplateByCodeFromCache(templateCode); | |
| 114 | 113 | // 短信模板不存在 |
| 115 | 114 | if (template == null) { |
| 116 | 115 | throw exception(SMS_SEND_TEMPLATE_NOT_EXISTS); |
| ... | ... | @@ -146,16 +145,15 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { |
| 146 | 145 | return mobile; |
| 147 | 146 | } |
| 148 | 147 | |
| 149 | - | |
| 150 | 148 | @Override |
| 151 | - public void doSendSms(SysSmsSendMessage message) { | |
| 149 | + public void doSendSms(SmsSendMessage message) { | |
| 152 | 150 | // 获得渠道对应的 SmsClient 客户端 |
| 153 | 151 | SmsClient smsClient = smsClientFactory.getSmsClient(message.getChannelId()); |
| 154 | 152 | Assert.notNull(smsClient, String.format("短信客户端(%d) 不存在", message.getChannelId())); |
| 155 | 153 | // 发送短信 |
| 156 | 154 | SmsCommonResult<SmsSendRespDTO> sendResult = smsClient.sendSms(message.getLogId(), message.getMobile(), |
| 157 | 155 | message.getApiTemplateId(), message.getTemplateParams()); |
| 158 | - smsLogCoreService.updateSmsSendResult(message.getLogId(), sendResult.getCode(), sendResult.getMsg(), | |
| 156 | + smsLogService.updateSmsSendResult(message.getLogId(), sendResult.getCode(), sendResult.getMsg(), | |
| 159 | 157 | sendResult.getApiCode(), sendResult.getApiMsg(), sendResult.getApiRequestId(), |
| 160 | 158 | sendResult.getData() != null ? sendResult.getData().getSerialNo() : null); |
| 161 | 159 | } |
| ... | ... | @@ -171,7 +169,7 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { |
| 171 | 169 | return; |
| 172 | 170 | } |
| 173 | 171 | // 更新短信日志的接收结果. 因为量一般不大,所以先使用 for 循环更新 |
| 174 | - receiveResults.forEach(result -> smsLogCoreService.updateSmsReceiveResult(result.getLogId(), | |
| 172 | + receiveResults.forEach(result -> smsLogService.updateSmsReceiveResult(result.getLogId(), | |
| 175 | 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 | 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 | 6 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 7 | 7 | import cn.iocoder.yudao.framework.common.exception.ServiceException; |
| 8 | 8 | import me.zhyd.oauth.model.AuthUser; |
| ... | ... | @@ -11,16 +11,16 @@ import javax.validation.constraints.NotNull; |
| 11 | 11 | import java.util.List; |
| 12 | 12 | |
| 13 | 13 | /** |
| 14 | - * 社交 Service 接口,例如说社交平台的授权登录 | |
| 14 | + * 社交用户 Service 接口,例如说社交平台的授权登录 | |
| 15 | 15 | * |
| 16 | 16 | * @author 芋道源码 |
| 17 | 17 | */ |
| 18 | -public interface SysSocialCoreService { | |
| 18 | +public interface SocialUserService { | |
| 19 | 19 | |
| 20 | 20 | /** |
| 21 | 21 | * 获得社交平台的授权 URL |
| 22 | 22 | * |
| 23 | - * @param type 社交平台的类型 {@link SysSocialTypeEnum} | |
| 23 | + * @param type 社交平台的类型 {@link SocialTypeEnum} | |
| 24 | 24 | * @param redirectUri 重定向 URL |
| 25 | 25 | * @return 社交平台的授权 URL |
| 26 | 26 | */ |
| ... | ... | @@ -30,7 +30,7 @@ public interface SysSocialCoreService { |
| 30 | 30 | * 获得授权的用户 |
| 31 | 31 | * 如果授权失败,则会抛出 {@link ServiceException} 异常 |
| 32 | 32 | * |
| 33 | - * @param type 社交平台的类型 {@link SysSocialTypeEnum} | |
| 33 | + * @param type 社交平台的类型 {@link SocialTypeEnum} | |
| 34 | 34 | * @param code 授权码 |
| 35 | 35 | * @param state state |
| 36 | 36 | * @return 授权用户 |
| ... | ... | @@ -46,7 +46,7 @@ public interface SysSocialCoreService { |
| 46 | 46 | * 获得 unionId 对应的某个社交平台的“所有”社交用户 |
| 47 | 47 | * 注意,这里的“所有”,指的是类似【微信】平台,包括了小程序、公众号、PC 网站,他们的 unionId 是一致的 |
| 48 | 48 | * |
| 49 | - * @param type 社交平台的类型 {@link SysSocialTypeEnum} | |
| 49 | + * @param type 社交平台的类型 {@link SocialTypeEnum} | |
| 50 | 50 | * @param unionId 社交平台的 unionId |
| 51 | 51 | * @return 社交用户列表 |
| 52 | 52 | * @param userTypeEnum 全局用户类型 |
| ... | ... | @@ -66,7 +66,7 @@ public interface SysSocialCoreService { |
| 66 | 66 | * 绑定社交用户 |
| 67 | 67 | * |
| 68 | 68 | * @param userId 用户编号 |
| 69 | - * @param type 社交平台的类型 {@link SysSocialTypeEnum} | |
| 69 | + * @param type 社交平台的类型 {@link SocialTypeEnum} | |
| 70 | 70 | * @param authUser 授权用户 |
| 71 | 71 | * @param userTypeEnum 全局用户类型 |
| 72 | 72 | */ |
| ... | ... | @@ -76,7 +76,7 @@ public interface SysSocialCoreService { |
| 76 | 76 | * 取消绑定社交用户 |
| 77 | 77 | * |
| 78 | 78 | * @param userId 用户编号 |
| 79 | - * @param type 社交平台的类型 {@link SysSocialTypeEnum} | |
| 79 | + * @param type 社交平台的类型 {@link SocialTypeEnum} | |
| 80 | 80 | * @param unionId 社交平台的 unionId |
| 81 | 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 | 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 | 8 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 10 | 9 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 11 | 10 | import cn.iocoder.yudao.framework.common.util.http.HttpUtils; |
| ... | ... | @@ -25,34 +24,34 @@ import javax.annotation.Resource; |
| 25 | 24 | import java.util.List; |
| 26 | 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 | 29 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 31 | 30 | import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString; |
| 32 | 31 | |
| 33 | 32 | /** |
| 34 | - * 社交 Service 实现类 | |
| 33 | + * 社交用户 Service 实现类 | |
| 35 | 34 | * |
| 36 | 35 | * @author 芋道源码 |
| 37 | 36 | */ |
| 38 | 37 | @Service |
| 39 | 38 | @Validated |
| 40 | 39 | @Slf4j |
| 41 | -public class SysSocialCoreServiceImpl implements SysSocialCoreService { | |
| 40 | +public class SocialUserServiceImpl implements SocialUserService { | |
| 42 | 41 | |
| 43 | 42 | @Resource |
| 44 | 43 | private AuthRequestFactory authRequestFactory; |
| 45 | 44 | |
| 46 | 45 | @Resource |
| 47 | - private SysSocialAuthUserRedisDAO authSocialUserRedisDAO; | |
| 46 | + private SocialAuthUserRedisDAO authSocialUserRedisDAO; | |
| 48 | 47 | |
| 49 | 48 | @Resource |
| 50 | - private SysSocialUserCoreMapper socialUserMapper; | |
| 49 | + private SysSocialUserMapper socialUserMapper; | |
| 51 | 50 | |
| 52 | 51 | @Override |
| 53 | 52 | public String getAuthorizeUrl(Integer type, String redirectUri) { |
| 54 | 53 | // 获得对应的 AuthRequest 实现 |
| 55 | - AuthRequest authRequest = authRequestFactory.get(SysSocialTypeEnum.valueOfType(type).getSource()); | |
| 54 | + AuthRequest authRequest = authRequestFactory.get(SocialTypeEnum.valueOfType(type).getSource()); | |
| 56 | 55 | // 生成跳转地址 |
| 57 | 56 | String authorizeUri = authRequest.authorize(AuthStateUtils.createState()); |
| 58 | 57 | return HttpUtils.replaceUrlQuery(authorizeUri, "redirect_uri", redirectUri); |
| ... | ... | @@ -76,7 +75,7 @@ public class SysSocialCoreServiceImpl implements SysSocialCoreService { |
| 76 | 75 | |
| 77 | 76 | @Override |
| 78 | 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 | 79 | return socialUserMapper.selectListByTypeAndUnionId(userTypeEnum.getValue(), types, unionId); |
| 81 | 80 | } |
| 82 | 81 | |
| ... | ... | @@ -141,7 +140,7 @@ public class SysSocialCoreServiceImpl implements SysSocialCoreService { |
| 141 | 140 | |
| 142 | 141 | @VisibleForTesting |
| 143 | 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 | 144 | List<SysSocialUserDO> oldSocialUsers = socialUserMapper.selectListByTypeAndUserId( |
| 146 | 145 | userTypeEnum.getValue(), types, userId); |
| 147 | 146 | // 如果新老的 unionId 是一致的,说明无需解绑 |
| ... | ... | @@ -161,7 +160,7 @@ public class SysSocialCoreServiceImpl implements SysSocialCoreService { |
| 161 | 160 | * @return 授权的用户 |
| 162 | 161 | */ |
| 163 | 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 | 164 | AuthResponse<?> authResponse = authRequest.login(authCallback); |
| 166 | 165 | log.info("[getAuthUser0][请求社交平台 type({}) request({}) response({})]", type, toJsonString(authCallback), |
| 167 | 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 | 4 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantExportReqVO; |
| 5 | 5 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantPageReqVO; |
| 6 | 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 | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | 9 | |
| 10 | 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 | 6 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantUpdateReqVO; |
| 7 | 7 | import cn.iocoder.yudao.module.system.convert.tenant.TenantConvert; |
| 8 | 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 | 10 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 11 | 11 | import org.springframework.stereotype.Service; |
| 12 | 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 | 6 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 7 | 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 | 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 | 5 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; |
| 4 | 6 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; |
| 5 | 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 | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | +import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDO; | |
| 8 | 10 | |
| 9 | 11 | import java.io.InputStream; |
| 10 | 12 | import java.util.*; |
| ... | ... | @@ -92,7 +94,7 @@ public interface UserService { |
| 92 | 94 | * @param username 用户名 |
| 93 | 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 | 102 | * @param reqVO 分页条件 |
| 101 | 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 | 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 | 172 | * @param nickname 昵称 |
| 127 | 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 | 180 | * @param username 用户账号 |
| 135 | 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 | 197 | * @param status 状态 |
| 152 | 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 | 4 | import cn.hutool.core.io.IoUtil; |
| 5 | 5 | import cn.hutool.core.util.IdUtil; |
| 6 | 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 | 12 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; |
| 8 | 13 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; |
| 9 | 14 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*; |
| 10 | 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 | 20 | import cn.iocoder.yudao.module.system.service.dept.DeptService; |
| 15 | 21 | import cn.iocoder.yudao.module.system.service.dept.PostService; |
| 22 | +import cn.iocoder.yudao.module.system.service.dept.SysDeptCoreService; | |
| 16 | 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 | 24 | import com.google.common.annotations.VisibleForTesting; |
| 25 | 25 | import lombok.extern.slf4j.Slf4j; |
| 26 | 26 | import org.springframework.beans.factory.annotation.Value; |
| ... | ... | @@ -32,8 +32,10 @@ import javax.annotation.Resource; |
| 32 | 32 | import java.io.InputStream; |
| 33 | 33 | import java.util.*; |
| 34 | 34 | |
| 35 | -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; | |
| 36 | 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 | 41 | * 管理员用户 Service 实现类 |
| ... | ... | @@ -48,7 +50,7 @@ public class UserServiceImpl implements UserService { |
| 48 | 50 | private String userInitPassword; |
| 49 | 51 | |
| 50 | 52 | @Resource(name = "sysUserMapper") // userMapper 存在重名 |
| 51 | - private SysUserMapper userMapper; | |
| 53 | + private UserMapper userMapper; | |
| 52 | 54 | |
| 53 | 55 | @Resource |
| 54 | 56 | private DeptService deptService; |
| ... | ... | @@ -70,7 +72,7 @@ public class UserServiceImpl implements UserService { |
| 70 | 72 | this.checkCreateOrUpdate(null, reqVO.getUsername(), reqVO.getMobile(), reqVO.getEmail(), |
| 71 | 73 | reqVO.getDeptId(), reqVO.getPostIds()); |
| 72 | 74 | // 插入用户 |
| 73 | - SysUserDO user = UserConvert.INSTANCE.convert(reqVO); | |
| 75 | + UserDO user = UserConvert.INSTANCE.convert(reqVO); | |
| 74 | 76 | user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启 |
| 75 | 77 | user.setPassword(passwordEncoder.encode(reqVO.getPassword())); // 加密密码 |
| 76 | 78 | userMapper.insert(user); |
| ... | ... | @@ -83,13 +85,13 @@ public class UserServiceImpl implements UserService { |
| 83 | 85 | this.checkCreateOrUpdate(reqVO.getId(), reqVO.getUsername(), reqVO.getMobile(), reqVO.getEmail(), |
| 84 | 86 | reqVO.getDeptId(), reqVO.getPostIds()); |
| 85 | 87 | // 更新用户 |
| 86 | - SysUserDO updateObj = UserConvert.INSTANCE.convert(reqVO); | |
| 88 | + UserDO updateObj = UserConvert.INSTANCE.convert(reqVO); | |
| 87 | 89 | userMapper.updateById(updateObj); |
| 88 | 90 | } |
| 89 | 91 | |
| 90 | 92 | @Override |
| 91 | 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 | 97 | @Override |
| ... | ... | @@ -107,7 +109,7 @@ public class UserServiceImpl implements UserService { |
| 107 | 109 | // 校验旧密码密码 |
| 108 | 110 | this.checkOldPassword(id, reqVO.getOldPassword()); |
| 109 | 111 | // 执行更新 |
| 110 | - SysUserDO updateObj = new SysUserDO().setId(id); | |
| 112 | + UserDO updateObj = new UserDO().setId(id); | |
| 111 | 113 | updateObj.setPassword(passwordEncoder.encode(reqVO.getNewPassword())); // 加密密码 |
| 112 | 114 | userMapper.updateById(updateObj); |
| 113 | 115 | } |
| ... | ... | @@ -118,7 +120,7 @@ public class UserServiceImpl implements UserService { |
| 118 | 120 | // 存储文件 |
| 119 | 121 | String avatar = fileService.createFile(IdUtil.fastUUID(), IoUtil.readBytes(avatarFile)); |
| 120 | 122 | // 更新路径 |
| 121 | - SysUserDO sysUserDO = new SysUserDO(); | |
| 123 | + UserDO sysUserDO = new UserDO(); | |
| 122 | 124 | sysUserDO.setId(id); |
| 123 | 125 | sysUserDO.setAvatar(avatar); |
| 124 | 126 | userMapper.updateById(sysUserDO); |
| ... | ... | @@ -130,7 +132,7 @@ public class UserServiceImpl implements UserService { |
| 130 | 132 | // 校验用户存在 |
| 131 | 133 | this.checkUserExists(id); |
| 132 | 134 | // 更新密码 |
| 133 | - SysUserDO updateObj = new SysUserDO(); | |
| 135 | + UserDO updateObj = new UserDO(); | |
| 134 | 136 | updateObj.setId(id); |
| 135 | 137 | updateObj.setPassword(passwordEncoder.encode(password)); // 加密密码 |
| 136 | 138 | userMapper.updateById(updateObj); |
| ... | ... | @@ -141,7 +143,7 @@ public class UserServiceImpl implements UserService { |
| 141 | 143 | // 校验用户存在 |
| 142 | 144 | this.checkUserExists(id); |
| 143 | 145 | // 更新状态 |
| 144 | - SysUserDO updateObj = new SysUserDO(); | |
| 146 | + UserDO updateObj = new UserDO(); | |
| 145 | 147 | updateObj.setId(id); |
| 146 | 148 | updateObj.setStatus(status); |
| 147 | 149 | userMapper.updateById(updateObj); |
| ... | ... | @@ -158,33 +160,80 @@ public class UserServiceImpl implements UserService { |
| 158 | 160 | } |
| 159 | 161 | |
| 160 | 162 | @Override |
| 161 | - public SysUserDO getUserByUsername(String username) { | |
| 163 | + public UserDO getUserByUsername(String username) { | |
| 162 | 164 | return userMapper.selectByUsername(username); |
| 163 | 165 | } |
| 164 | 166 | |
| 165 | 167 | @Override |
| 166 | - public PageResult<SysUserDO> getUserPage(UserPageReqVO reqVO) { | |
| 168 | + public PageResult<UserDO> getUserPage(UserPageReqVO reqVO) { | |
| 167 | 169 | return userMapper.selectPage(reqVO, this.getDeptCondition(reqVO.getDeptId())); |
| 168 | 170 | } |
| 169 | 171 | |
| 170 | 172 | @Override |
| 171 | - public SysUserDO getUser(Long id) { | |
| 173 | + public UserDO getUser(Long id) { | |
| 172 | 174 | return userMapper.selectById(id); |
| 173 | 175 | } |
| 174 | 176 | |
| 175 | 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 | 230 | @Override |
| 182 | - public List<SysUserDO> getUsersByNickname(String nickname) { | |
| 231 | + public List<UserDO> getUsersByNickname(String nickname) { | |
| 183 | 232 | return userMapper.selectListByNickname(nickname); |
| 184 | 233 | } |
| 185 | 234 | |
| 186 | 235 | @Override |
| 187 | - public List<SysUserDO> getUsersByUsername(String username) { | |
| 236 | + public List<UserDO> getUsersByUsername(String username) { | |
| 188 | 237 | return userMapper.selectListByUsername(username); |
| 189 | 238 | } |
| 190 | 239 | |
| ... | ... | @@ -225,7 +274,7 @@ public class UserServiceImpl implements UserService { |
| 225 | 274 | if (id == null) { |
| 226 | 275 | return; |
| 227 | 276 | } |
| 228 | - SysUserDO user = userMapper.selectById(id); | |
| 277 | + UserDO user = userMapper.selectById(id); | |
| 229 | 278 | if (user == null) { |
| 230 | 279 | throw exception(USER_NOT_EXISTS); |
| 231 | 280 | } |
| ... | ... | @@ -236,7 +285,7 @@ public class UserServiceImpl implements UserService { |
| 236 | 285 | if (StrUtil.isBlank(username)) { |
| 237 | 286 | return; |
| 238 | 287 | } |
| 239 | - SysUserDO user = userMapper.selectByUsername(username); | |
| 288 | + UserDO user = userMapper.selectByUsername(username); | |
| 240 | 289 | if (user == null) { |
| 241 | 290 | return; |
| 242 | 291 | } |
| ... | ... | @@ -254,7 +303,7 @@ public class UserServiceImpl implements UserService { |
| 254 | 303 | if (StrUtil.isBlank(email)) { |
| 255 | 304 | return; |
| 256 | 305 | } |
| 257 | - SysUserDO user = userMapper.selectByEmail(email); | |
| 306 | + UserDO user = userMapper.selectByEmail(email); | |
| 258 | 307 | if (user == null) { |
| 259 | 308 | return; |
| 260 | 309 | } |
| ... | ... | @@ -272,7 +321,7 @@ public class UserServiceImpl implements UserService { |
| 272 | 321 | if (StrUtil.isBlank(mobile)) { |
| 273 | 322 | return; |
| 274 | 323 | } |
| 275 | - SysUserDO user = userMapper.selectByMobile(mobile); | |
| 324 | + UserDO user = userMapper.selectByMobile(mobile); | |
| 276 | 325 | if (user == null) { |
| 277 | 326 | return; |
| 278 | 327 | } |
| ... | ... | @@ -328,7 +377,7 @@ public class UserServiceImpl implements UserService { |
| 328 | 377 | */ |
| 329 | 378 | @VisibleForTesting |
| 330 | 379 | public void checkOldPassword(Long id, String oldPassword) { |
| 331 | - SysUserDO user = userMapper.selectById(id); | |
| 380 | + UserDO user = userMapper.selectById(id); | |
| 332 | 381 | if (user == null) { |
| 333 | 382 | throw exception(USER_NOT_EXISTS); |
| 334 | 383 | } |
| ... | ... | @@ -355,7 +404,7 @@ public class UserServiceImpl implements UserService { |
| 355 | 404 | return; |
| 356 | 405 | } |
| 357 | 406 | // 判断如果不存在,在进行插入 |
| 358 | - SysUserDO existUser = userMapper.selectByUsername(importUser.getUsername()); | |
| 407 | + UserDO existUser = userMapper.selectByUsername(importUser.getUsername()); | |
| 359 | 408 | if (existUser == null) { |
| 360 | 409 | userMapper.insert(UserConvert.INSTANCE.convert(importUser) |
| 361 | 410 | .setPassword(passwordEncoder.encode(userInitPassword))); // 设置默认密码 |
| ... | ... | @@ -367,7 +416,7 @@ public class UserServiceImpl implements UserService { |
| 367 | 416 | respVO.getFailureUsernames().put(importUser.getUsername(), USER_USERNAME_EXISTS.getMsg()); |
| 368 | 417 | return; |
| 369 | 418 | } |
| 370 | - SysUserDO updateUser = UserConvert.INSTANCE.convert(importUser); | |
| 419 | + UserDO updateUser = UserConvert.INSTANCE.convert(importUser); | |
| 371 | 420 | updateUser.setId(existUser.getId()); |
| 372 | 421 | userMapper.updateById(updateUser); |
| 373 | 422 | respVO.getUpdateUsernames().add(importUser.getUsername()); |
| ... | ... | @@ -376,7 +425,7 @@ public class UserServiceImpl implements UserService { |
| 376 | 425 | } |
| 377 | 426 | |
| 378 | 427 | @Override |
| 379 | - public List<SysUserDO> getUsersByStatus(Integer status) { | |
| 428 | + public List<UserDO> getUsersByStatus(Integer status) { | |
| 380 | 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 | 5 | import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; |
| 6 | 6 | import cn.iocoder.yudao.module.system.service.common.CaptchaService; |
| 7 | 7 | import cn.iocoder.yudao.module.system.service.dept.PostService; |
| 8 | +import cn.iocoder.yudao.module.system.service.logger.LoginLogService; | |
| 8 | 9 | import cn.iocoder.yudao.module.system.service.permission.PermissionService; |
| 9 | 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 | 13 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 16 | 14 | import cn.iocoder.yudao.framework.security.core.LoginUser; |
| 17 | 15 | import cn.iocoder.yudao.framework.test.core.util.AssertUtils; |
| ... | ... | @@ -48,8 +46,6 @@ public class AuthServiceImplTest extends BaseDbUnitTest { |
| 48 | 46 | @MockBean |
| 49 | 47 | private UserService userService; |
| 50 | 48 | @MockBean |
| 51 | - private SysUserCoreService userCoreService; | |
| 52 | - @MockBean | |
| 53 | 49 | private PermissionService permissionService; |
| 54 | 50 | @MockBean |
| 55 | 51 | private AuthenticationManager authenticationManager; |
| ... | ... | @@ -58,11 +54,11 @@ public class AuthServiceImplTest extends BaseDbUnitTest { |
| 58 | 54 | @MockBean |
| 59 | 55 | private CaptchaService captchaService; |
| 60 | 56 | @MockBean |
| 61 | - private SysLoginLogCoreService loginLogCoreService; | |
| 57 | + private LoginLogService loginLogService; | |
| 62 | 58 | @MockBean |
| 63 | - private SysUserSessionCoreService userSessionCoreService; | |
| 59 | + private UserSessionService userSessionService; | |
| 64 | 60 | @MockBean |
| 65 | - private SysSocialCoreService socialService; | |
| 61 | + private SocialUserService socialService; | |
| 66 | 62 | @MockBean |
| 67 | 63 | private PostService postService; |
| 68 | 64 | |
| ... | ... | @@ -76,7 +72,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { |
| 76 | 72 | // 准备参数 |
| 77 | 73 | String username = randomString(); |
| 78 | 74 | // mock 方法 |
| 79 | - SysUserDO user = randomPojo(SysUserDO.class, o -> o.setUsername(username)); | |
| 75 | + UserDO user = randomPojo(UserDO.class, o -> o.setUsername(username)); | |
| 80 | 76 | when(userService.getUserByUsername(eq(username))).thenReturn(user); |
| 81 | 77 | |
| 82 | 78 | // 调用 |
| ... | ... | @@ -102,8 +98,8 @@ public class AuthServiceImplTest extends BaseDbUnitTest { |
| 102 | 98 | // 准备参数 |
| 103 | 99 | Long userId = randomLongId(); |
| 104 | 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 | 103 | // mock 方法 02 |
| 108 | 104 | Set<Long> roleIds = randomSet(Long.class); |
| 109 | 105 | when(permissionService.getUserRoleIds(eq(userId), eq(singleton(CommonStatusEnum.ENABLE.getStatus())))) |
| ... | ... | @@ -137,7 +133,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { |
| 137 | 133 | // 调用, 并断言异常 |
| 138 | 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 | 137 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) |
| 142 | 138 | && o.getResult().equals(LoginResultEnum.CAPTCHA_NOT_FOUND.getResult())) |
| 143 | 139 | ); |
| ... | ... | @@ -155,7 +151,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { |
| 155 | 151 | // 调用, 并断言异常 |
| 156 | 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 | 155 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) |
| 160 | 156 | && o.getResult().equals(LoginResultEnum.CAPTCHA_CODE_ERROR.getResult())) |
| 161 | 157 | ); |
| ... | ... | @@ -176,7 +172,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { |
| 176 | 172 | assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_BAD_CREDENTIALS); |
| 177 | 173 | // 校验调用参数 |
| 178 | 174 | verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid()); |
| 179 | - verify(loginLogCoreService, times(1)).createLoginLog( | |
| 175 | + verify(loginLogService, times(1)).createLoginLog( | |
| 180 | 176 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) |
| 181 | 177 | && o.getResult().equals(LoginResultEnum.BAD_CREDENTIALS.getResult())) |
| 182 | 178 | ); |
| ... | ... | @@ -197,7 +193,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { |
| 197 | 193 | assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_USER_DISABLED); |
| 198 | 194 | // 校验调用参数 |
| 199 | 195 | verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid()); |
| 200 | - verify(loginLogCoreService, times(1)).createLoginLog( | |
| 196 | + verify(loginLogService, times(1)).createLoginLog( | |
| 201 | 197 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) |
| 202 | 198 | && o.getResult().equals(LoginResultEnum.USER_DISABLED.getResult())) |
| 203 | 199 | ); |
| ... | ... | @@ -218,7 +214,7 @@ public class AuthServiceImplTest extends BaseDbUnitTest { |
| 218 | 214 | assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_FAIL_UNKNOWN); |
| 219 | 215 | // 校验调用参数 |
| 220 | 216 | verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid()); |
| 221 | - verify(loginLogCoreService, times(1)).createLoginLog( | |
| 217 | + verify(loginLogService, times(1)).createLoginLog( | |
| 222 | 218 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) |
| 223 | 219 | && o.getResult().equals(LoginResultEnum.UNKNOWN_ERROR.getResult())) |
| 224 | 220 | ); |
| ... | ... | @@ -246,13 +242,13 @@ public class AuthServiceImplTest extends BaseDbUnitTest { |
| 246 | 242 | // mock 获得 User 拥有的角色编号数组 |
| 247 | 243 | when(permissionService.getUserRoleIds(userId, singleton(CommonStatusEnum.ENABLE.getStatus()))).thenReturn(userRoleIds); |
| 248 | 244 | // mock 缓存登录用户到 Redis |
| 249 | - when(userSessionCoreService.createUserSession(loginUser, userIp, userAgent)).thenReturn(sessionId); | |
| 245 | + when(userSessionService.createUserSession(loginUser, userIp, userAgent)).thenReturn(sessionId); | |
| 250 | 246 | // 调用, 并断言异常 |
| 251 | 247 | String login = authService.login(reqVO, userIp, userAgent); |
| 252 | 248 | assertEquals(sessionId, login); |
| 253 | 249 | // 校验调用参数 |
| 254 | 250 | verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid()); |
| 255 | - verify(loginLogCoreService, times(1)).createLoginLog( | |
| 251 | + verify(loginLogService, times(1)).createLoginLog( | |
| 256 | 252 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) |
| 257 | 253 | && o.getResult().equals(LoginResultEnum.SUCCESS.getResult())) |
| 258 | 254 | ); |
| ... | ... | @@ -264,12 +260,12 @@ public class AuthServiceImplTest extends BaseDbUnitTest { |
| 264 | 260 | String token = randomString(); |
| 265 | 261 | LoginUser loginUser = randomPojo(LoginUser.class); |
| 266 | 262 | // mock |
| 267 | - when(userSessionCoreService.getLoginUser(token)).thenReturn(loginUser); | |
| 263 | + when(userSessionService.getLoginUser(token)).thenReturn(loginUser); | |
| 268 | 264 | // 调用 |
| 269 | 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 | 269 | argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGOUT_SELF.getType()) |
| 274 | 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 | 1 | package cn.iocoder.yudao.module.system.service.auth; |
| 2 | 2 | |
| 3 | 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 | 6 | import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; |
| 5 | 7 | import cn.iocoder.yudao.module.system.dal.mysql.auth.SysUserSessionMapper; |
| 8 | +import cn.iocoder.yudao.module.system.service.logger.LoginLogService; | |
| 6 | 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 | 14 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 13 | 15 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 14 | 16 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| ... | ... | @@ -19,17 +21,19 @@ import org.springframework.boot.test.mock.mockito.MockBean; |
| 19 | 21 | import org.springframework.context.annotation.Import; |
| 20 | 22 | |
| 21 | 23 | import javax.annotation.Resource; |
| 24 | +import java.time.Duration; | |
| 22 | 25 | import java.util.Date; |
| 23 | 26 | import java.util.List; |
| 24 | 27 | import java.util.stream.Collectors; |
| 25 | 28 | import java.util.stream.Stream; |
| 26 | 29 | |
| 27 | 30 | import static cn.hutool.core.util.RandomUtil.randomEle; |
| 31 | +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime; | |
| 28 | 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 | 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 | 37 | import static org.mockito.ArgumentMatchers.eq; |
| 34 | 38 | import static org.mockito.Mockito.when; |
| 35 | 39 | |
| ... | ... | @@ -38,7 +42,7 @@ import static org.mockito.Mockito.when; |
| 38 | 42 | * |
| 39 | 43 | * @author Lyon |
| 40 | 44 | */ |
| 41 | -@Import({UserSessionServiceImpl.class}) | |
| 45 | +@Import({UserSessionServiceImpl.class, LoginUserRedisDAO.class}) | |
| 42 | 46 | public class UserSessionServiceImplTest extends BaseDbAndRedisUnitTest { |
| 43 | 47 | |
| 44 | 48 | @Resource |
| ... | ... | @@ -50,14 +54,17 @@ public class UserSessionServiceImplTest extends BaseDbAndRedisUnitTest { |
| 50 | 54 | @MockBean |
| 51 | 55 | private UserService userService; |
| 52 | 56 | @MockBean |
| 53 | - private SysLoginLogCoreService loginLogCoreService; | |
| 57 | + private LoginLogService loginLogService; | |
| 54 | 58 | @MockBean |
| 55 | - private SysLoginUserCoreRedisDAO loginUserCoreRedisDAO; | |
| 59 | + private LoginUserRedisDAO loginUserRedisDAO; | |
| 60 | + | |
| 61 | + @MockBean | |
| 62 | + private SecurityProperties securityProperties; | |
| 56 | 63 | |
| 57 | 64 | @Test |
| 58 | 65 | public void testGetUserSessionPage_success() { |
| 59 | 66 | // mock 数据 |
| 60 | - SysUserDO dbUser = randomPojo(SysUserDO.class, o -> { | |
| 67 | + UserDO dbUser = randomPojo(UserDO.class, o -> { | |
| 61 | 68 | o.setSex(randomEle(SysSexEnum.values()).getSex()); |
| 62 | 69 | o.setStatus(CommonStatusEnum.ENABLE.getStatus()); |
| 63 | 70 | }); |
| ... | ... | @@ -124,4 +131,89 @@ public class UserSessionServiceImplTest extends BaseDbAndRedisUnitTest { |
| 124 | 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 | 4 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptCreateReqVO; |
| 5 | 5 | import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO; |
| 6 | 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 | 8 | import cn.iocoder.yudao.module.system.dal.mysql.dept.SysDeptMapper; |
| 9 | 9 | import cn.iocoder.yudao.module.system.enums.dept.DeptIdEnum; |
| 10 | 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 | 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 | 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 5 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | 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 | 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 | 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 5 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | 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 | 13 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; |
| 14 | 14 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; |
| 15 | 15 | import cn.iocoder.yudao.module.system.test.BaseDbUnitTest; |
| 16 | +import com.google.common.collect.ImmutableTable; | |
| 16 | 17 | import org.junit.jupiter.api.Test; |
| 17 | 18 | import org.springframework.boot.test.mock.mockito.MockBean; |
| 18 | 19 | import org.springframework.context.annotation.Import; |
| 19 | 20 | |
| 20 | 21 | import javax.annotation.Resource; |
| 22 | +import java.util.Date; | |
| 21 | 23 | import java.util.List; |
| 22 | 24 | import java.util.function.Consumer; |
| 23 | 25 | |
| 26 | +import static cn.hutool.core.bean.BeanUtil.getFieldValue; | |
| 24 | 27 | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; |
| 25 | 28 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; |
| 26 | 29 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; |
| ... | ... | @@ -42,6 +45,37 @@ public class DictDataServiceTest extends BaseDbUnitTest { |
| 42 | 45 | @MockBean |
| 43 | 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 | 79 | @Test |
| 46 | 80 | public void testGetDictDataPage() { |
| 47 | 81 | // mock 数据 | ... | ... |
yudao-module-system/yudao-module-system-impl/src/test/java/cn/iocoder/yudao/module/system/service/logger/LoginLogServiceImplTest.java
| 1 | 1 | package cn.iocoder.yudao.module.system.service.logger; |
| 2 | 2 | |
| 3 | 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 | 5 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 6 | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | 7 | import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; |
| ... | ... | @@ -12,6 +12,9 @@ import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; |
| 12 | 12 | import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; |
| 13 | 13 | import cn.iocoder.yudao.framework.test.core.util.RandomUtils; |
| 14 | 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 | 18 | import cn.iocoder.yudao.module.system.test.BaseDbUnitTest; |
| 16 | 19 | import org.junit.jupiter.api.Test; |
| 17 | 20 | import org.springframework.context.annotation.Import; |
| ... | ... | @@ -19,6 +22,7 @@ import org.springframework.context.annotation.Import; |
| 19 | 22 | import javax.annotation.Resource; |
| 20 | 23 | import java.util.List; |
| 21 | 24 | |
| 25 | +import static cn.hutool.core.util.RandomUtil.randomEle; | |
| 22 | 26 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; |
| 23 | 27 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; |
| 24 | 28 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| ... | ... | @@ -27,7 +31,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; |
| 27 | 31 | public class LoginLogServiceImplTest extends BaseDbUnitTest { |
| 28 | 32 | |
| 29 | 33 | @Resource |
| 30 | - private LoginLogServiceImpl sysLoginLogService; | |
| 34 | + private LoginLogServiceImpl loginLogService; | |
| 31 | 35 | |
| 32 | 36 | @Resource |
| 33 | 37 | private LoginLogMapper loginLogMapper; |
| ... | ... | @@ -68,7 +72,7 @@ public class LoginLogServiceImplTest extends BaseDbUnitTest { |
| 68 | 72 | reqVO.setEndTime(buildTime(2021, 3, 7)); |
| 69 | 73 | |
| 70 | 74 | // 调用service方法 |
| 71 | - PageResult<SysLoginLogDO> pageResult = sysLoginLogService.getLoginLogPage(reqVO); | |
| 75 | + PageResult<SysLoginLogDO> pageResult = loginLogService.getLoginLogPage(reqVO); | |
| 72 | 76 | |
| 73 | 77 | // 断言,只查到了一条符合条件的 |
| 74 | 78 | assertEquals(1, pageResult.getTotal()); |
| ... | ... | @@ -114,10 +118,28 @@ public class LoginLogServiceImplTest extends BaseDbUnitTest { |
| 114 | 118 | |
| 115 | 119 | |
| 116 | 120 | // 调用service方法 |
| 117 | - List<SysLoginLogDO> loginLogList = sysLoginLogService.getLoginLogList(reqVO); | |
| 121 | + List<SysLoginLogDO> loginLogList = loginLogService.getLoginLogList(reqVO); | |
| 118 | 122 | |
| 119 | 123 | // 断言 |
| 120 | 124 | assertEquals(1, loginLogList.size()); |
| 121 | 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 | 6 | import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO; |
| 7 | 7 | import cn.iocoder.yudao.module.system.dal.mysql.logger.OperateLogMapper; |
| 8 | 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 | 11 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 12 | 12 | import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; |
| 13 | 13 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| ... | ... | @@ -66,7 +66,7 @@ public class OperateLogServiceImplTest extends BaseDbUnitTest { |
| 66 | 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 | 70 | o.setNickname("wangkai"); |
| 71 | 71 | o.setSex(SysSexEnum.MALE.getSex()); |
| 72 | 72 | o.setStatus(CommonStatusEnum.ENABLE.getStatus()); |
| ... | ... | @@ -117,7 +117,7 @@ public class OperateLogServiceImplTest extends BaseDbUnitTest { |
| 117 | 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 | 121 | o.setNickname("wangkai"); |
| 122 | 122 | o.setSex(SysSexEnum.MALE.getSex()); |
| 123 | 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 | 1 | package cn.iocoder.yudao.module.system.service.permission; |
| 2 | 2 | |
| 3 | 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 | 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 | 8 | import cn.iocoder.yudao.module.system.dal.mysql.permission.SysRoleMenuMapper; |
| 9 | 9 | import cn.iocoder.yudao.module.system.dal.mysql.permission.SysUserRoleMapper; |
| 10 | 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 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleCreateReqVO; |
| 8 | 8 | import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePageReqVO; |
| 9 | 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 | 11 | import cn.iocoder.yudao.module.system.dal.mysql.permission.SysRoleMapper; |
| 12 | 12 | import cn.iocoder.yudao.module.system.enums.permission.RoleTypeEnum; |
| 13 | 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 | 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelUpdateReqVO; |
| 7 | 7 | import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsChannelMapper; |
| 8 | 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 | 10 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 11 | 11 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 12 | 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 | 1 | package cn.iocoder.yudao.module.system.service.sms; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.map.MapUtil; |
| 4 | +import cn.iocoder.yudao.framework.common.pojo.CommonResult; | |
| 4 | 5 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO; |
| 5 | 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 | 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 | 13 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 12 | 14 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 13 | 15 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; |
| ... | ... | @@ -17,16 +19,18 @@ import org.junit.jupiter.api.Test; |
| 17 | 19 | import org.springframework.context.annotation.Import; |
| 18 | 20 | |
| 19 | 21 | import javax.annotation.Resource; |
| 22 | +import java.util.Date; | |
| 20 | 23 | import java.util.List; |
| 21 | 24 | import java.util.Map; |
| 22 | 25 | import java.util.function.Consumer; |
| 23 | 26 | |
| 27 | +import static cn.hutool.core.util.RandomUtil.randomBoolean; | |
| 24 | 28 | import static cn.hutool.core.util.RandomUtil.randomEle; |
| 25 | 29 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; |
| 26 | 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 | 32 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| 33 | +import static org.junit.jupiter.api.Assertions.assertNotNull; | |
| 30 | 34 | |
| 31 | 35 | @Import(SmsLogServiceImpl.class) |
| 32 | 36 | public class SmsLogServiceTest extends BaseDbUnitTest { |
| ... | ... | @@ -130,6 +134,93 @@ public class SmsLogServiceTest extends BaseDbUnitTest { |
| 130 | 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 | 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 | 6 | import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateUpdateReqVO; |
| 7 | 7 | import cn.iocoder.yudao.module.system.dal.mysql.sms.SysSmsTemplateMapper; |
| 8 | 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 | 12 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 13 | 13 | import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; |
| 14 | 14 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| ... | ... | @@ -25,10 +25,14 @@ import org.springframework.boot.test.mock.mockito.MockBean; |
| 25 | 25 | import org.springframework.context.annotation.Import; |
| 26 | 26 | |
| 27 | 27 | import javax.annotation.Resource; |
| 28 | +import java.util.Date; | |
| 28 | 29 | import java.util.List; |
| 30 | +import java.util.Map; | |
| 29 | 31 | import java.util.function.Consumer; |
| 30 | 32 | |
| 33 | +import static cn.hutool.core.bean.BeanUtil.getFieldValue; | |
| 31 | 34 | import static cn.hutool.core.util.RandomUtil.randomEle; |
| 35 | +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.max; | |
| 32 | 36 | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; |
| 33 | 37 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; |
| 34 | 38 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; |
| ... | ... | @@ -57,6 +61,27 @@ public class SmsTemplateServiceTest extends BaseDbUnitTest { |
| 57 | 61 | private SmsProducer smsProducer; |
| 58 | 62 | |
| 59 | 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 | 85 | public void testParseTemplateContentParams() { |
| 61 | 86 | // 准备参数 |
| 62 | 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 | 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 | 7 | import cn.iocoder.yudao.framework.common.core.KeyValue; |
| 9 | 8 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 10 | 9 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| ... | ... | @@ -24,29 +23,24 @@ import java.util.List; |
| 24 | 23 | import java.util.Map; |
| 25 | 24 | |
| 26 | 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 | 27 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; |
| 29 | 28 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; |
| 30 | 29 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| 31 | 30 | import static org.mockito.ArgumentMatchers.eq; |
| 32 | 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 | 35 | @InjectMocks |
| 42 | - private SysSmsCoreServiceImpl smsCoreService; | |
| 36 | + private SysSmsSendServiceImpl smsService; | |
| 43 | 37 | |
| 44 | 38 | @Mock |
| 45 | - private SysSmsTemplateCoreService smsTemplateCoreService; | |
| 39 | + private SmsTemplateService smsTemplateService; | |
| 46 | 40 | @Mock |
| 47 | - private SysSmsLogCoreService smsLogCoreService; | |
| 41 | + private SmsLogService smsLogService; | |
| 48 | 42 | @Mock |
| 49 | - private SysSmsCoreProducer smsCoreProducer; | |
| 43 | + private SmsProducer smsProducer; | |
| 50 | 44 | @Mock |
| 51 | 45 | private SmsClientFactory smsClientFactory; |
| 52 | 46 | |
| ... | ... | @@ -68,21 +62,21 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { |
| 68 | 62 | o.setContent("验证码为{code}, 操作为{op}"); |
| 69 | 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 | 66 | String content = randomString(); |
| 73 | - when(smsTemplateCoreService.formatSmsTemplateContent(eq(template.getContent()), eq(templateParams))) | |
| 67 | + when(smsTemplateService.formatSmsTemplateContent(eq(template.getContent()), eq(templateParams))) | |
| 74 | 68 | .thenReturn(content); |
| 75 | 69 | // mock SmsLogService 的方法 |
| 76 | 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 | 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 | 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 | 80 | eq(template.getChannelId()), eq(template.getApiTemplateId()), |
| 87 | 81 | eq(Lists.newArrayList(new KeyValue<>("code", "1234"), new KeyValue<>("op", "login")))); |
| 88 | 82 | } |
| ... | ... | @@ -105,21 +99,21 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { |
| 105 | 99 | o.setContent("验证码为{code}, 操作为{op}"); |
| 106 | 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 | 103 | String content = randomString(); |
| 110 | - when(smsTemplateCoreService.formatSmsTemplateContent(eq(template.getContent()), eq(templateParams))) | |
| 104 | + when(smsTemplateService.formatSmsTemplateContent(eq(template.getContent()), eq(templateParams))) | |
| 111 | 105 | .thenReturn(content); |
| 112 | 106 | // mock SmsLogService 的方法 |
| 113 | 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 | 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 | 114 | assertEquals(smsLogId, resultSmsLogId); |
| 121 | 115 | // 断言调用 |
| 122 | - verify(smsCoreProducer, times(0)).sendSmsSendMessage(anyLong(), anyString(), | |
| 116 | + verify(smsProducer, times(0)).sendSmsSendMessage(anyLong(), anyString(), | |
| 123 | 117 | anyLong(), any(), anyList()); |
| 124 | 118 | } |
| 125 | 119 | |
| ... | ... | @@ -130,7 +124,7 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { |
| 130 | 124 | // mock 方法 |
| 131 | 125 | |
| 132 | 126 | // 调用,并断言异常 |
| 133 | - assertServiceException(() -> smsCoreService.checkSmsTemplateValid(templateCode), | |
| 127 | + assertServiceException(() -> smsService.checkSmsTemplateValid(templateCode), | |
| 134 | 128 | SMS_SEND_TEMPLATE_NOT_EXISTS); |
| 135 | 129 | } |
| 136 | 130 | |
| ... | ... | @@ -143,7 +137,7 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { |
| 143 | 137 | // mock 方法 |
| 144 | 138 | |
| 145 | 139 | // 调用,并断言异常 |
| 146 | - assertServiceException(() -> smsCoreService.buildTemplateParams(template, templateParams), | |
| 140 | + assertServiceException(() -> smsService.buildTemplateParams(template, templateParams), | |
| 147 | 141 | SMS_SEND_MOBILE_TEMPLATE_PARAM_MISS, "code"); |
| 148 | 142 | } |
| 149 | 143 | |
| ... | ... | @@ -153,7 +147,7 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { |
| 153 | 147 | // mock 方法 |
| 154 | 148 | |
| 155 | 149 | // 调用,并断言异常 |
| 156 | - assertServiceException(() -> smsCoreService.checkMobile(null), | |
| 150 | + assertServiceException(() -> smsService.checkMobile(null), | |
| 157 | 151 | SMS_SEND_MOBILE_NOT_EXISTS); |
| 158 | 152 | } |
| 159 | 153 | |
| ... | ... | @@ -161,7 +155,7 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { |
| 161 | 155 | @SuppressWarnings("unchecked") |
| 162 | 156 | public void testDoSendSms() { |
| 163 | 157 | // 准备参数 |
| 164 | - SysSmsSendMessage message = randomPojo(SysSmsSendMessage.class); | |
| 158 | + SmsSendMessage message = randomPojo(SmsSendMessage.class); | |
| 165 | 159 | // mock SmsClientFactory 的方法 |
| 166 | 160 | SmsClient smsClient = spy(SmsClient.class); |
| 167 | 161 | when(smsClientFactory.getSmsClient(eq(message.getChannelId()))).thenReturn(smsClient); |
| ... | ... | @@ -171,9 +165,9 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { |
| 171 | 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 | 171 | eq(sendResult.getCode()), eq(sendResult.getMsg()), eq(sendResult.getApiCode()), |
| 178 | 172 | eq(sendResult.getApiMsg()), eq(sendResult.getApiRequestId()), eq(sendResult.getData().getSerialNo())); |
| 179 | 173 | } |
| ... | ... | @@ -190,9 +184,9 @@ public class SysSmsCoreServiceTest extends BaseMockitoUnitTest { |
| 190 | 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 | 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 | 7 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 8 | +import cn.iocoder.yudao.module.system.test.BaseDbAndRedisUnitTest; | |
| 10 | 9 | import com.xkcoding.justauth.AuthRequestFactory; |
| 11 | 10 | import me.zhyd.oauth.model.AuthUser; |
| 12 | 11 | import org.junit.jupiter.api.Test; |
| ... | ... | @@ -23,19 +22,14 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId |
| 23 | 22 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; |
| 24 | 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 | 28 | @Resource |
| 35 | - private SysSocialCoreServiceImpl socialService; | |
| 29 | + private SocialUserServiceImpl socialService; | |
| 36 | 30 | |
| 37 | 31 | @Resource |
| 38 | - private SysSocialUserCoreMapper socialUserMapper; | |
| 32 | + private SysSocialUserMapper socialUserMapper; | |
| 39 | 33 | |
| 40 | 34 | @MockBean |
| 41 | 35 | private AuthRequestFactory authRequestFactory; |
| ... | ... | @@ -48,7 +42,7 @@ public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest { |
| 48 | 42 | // mock 数据 |
| 49 | 43 | // 准备参数 |
| 50 | 44 | Long userId = randomLongId(); |
| 51 | - Integer type = randomEle(SysSocialTypeEnum.values()).getType(); | |
| 45 | + Integer type = randomEle(SocialTypeEnum.values()).getType(); | |
| 52 | 46 | AuthUser authUser = randomPojo(AuthUser.class); |
| 53 | 47 | // mock 方法 |
| 54 | 48 | |
| ... | ... | @@ -68,7 +62,7 @@ public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest { |
| 68 | 62 | // mock 数据 |
| 69 | 63 | SysSocialUserDO dbSocialUser = randomPojo(SysSocialUserDO.class, socialUserDO -> { |
| 70 | 64 | socialUserDO.setUserType(UserTypeEnum.ADMIN.getValue()); |
| 71 | - socialUserDO.setType(randomEle(SysSocialTypeEnum.values()).getType()); | |
| 65 | + socialUserDO.setType(randomEle(SocialTypeEnum.values()).getType()); | |
| 72 | 66 | }); |
| 73 | 67 | socialUserMapper.insert(dbSocialUser); |
| 74 | 68 | // 准备参数 |
| ... | ... | @@ -93,7 +87,7 @@ public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest { |
| 93 | 87 | // mock 数据 |
| 94 | 88 | SysSocialUserDO dbSocialUser = randomPojo(SysSocialUserDO.class, socialUserDO -> { |
| 95 | 89 | socialUserDO.setUserType(UserTypeEnum.ADMIN.getValue()); |
| 96 | - socialUserDO.setType(randomEle(SysSocialTypeEnum.values()).getType()); | |
| 90 | + socialUserDO.setType(randomEle(SocialTypeEnum.values()).getType()); | |
| 97 | 91 | }); |
| 98 | 92 | socialUserMapper.insert(dbSocialUser); |
| 99 | 93 | // 准备参数 |
| ... | ... | @@ -131,7 +125,7 @@ public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest { |
| 131 | 125 | // mock 数据 |
| 132 | 126 | SysSocialUserDO oldSocialUser = randomPojo(SysSocialUserDO.class, socialUserDO -> { |
| 133 | 127 | socialUserDO.setUserType(UserTypeEnum.ADMIN.getValue()); |
| 134 | - socialUserDO.setType(randomEle(SysSocialTypeEnum.values()).getType()); | |
| 128 | + socialUserDO.setType(randomEle(SocialTypeEnum.values()).getType()); | |
| 135 | 129 | }); |
| 136 | 130 | socialUserMapper.insert(oldSocialUser); |
| 137 | 131 | // 准备参数 |
| ... | ... | @@ -154,7 +148,7 @@ public class SysSocialCoreServiceTest extends BaseDbAndRedisUnitTest { |
| 154 | 148 | // mock 数据 |
| 155 | 149 | SysSocialUserDO oldSocialUser = randomPojo(SysSocialUserDO.class, socialUserDO -> { |
| 156 | 150 | socialUserDO.setUserType(UserTypeEnum.ADMIN.getValue()); |
| 157 | - socialUserDO.setType(randomEle(SysSocialTypeEnum.values()).getType()); | |
| 151 | + socialUserDO.setType(randomEle(SocialTypeEnum.values()).getType()); | |
| 158 | 152 | }); |
| 159 | 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 | 5 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantPageReqVO; |
| 6 | 6 | import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.TenantUpdateReqVO; |
| 7 | 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 | 9 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 10 | 10 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 11 | 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 | 5 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; |
| 6 | 6 | import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; |
| 7 | 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 | 11 | import cn.iocoder.yudao.module.system.service.dept.DeptService; |
| 12 | 12 | import cn.iocoder.yudao.module.system.service.dept.PostService; |
| 13 | 13 | import cn.iocoder.yudao.module.system.service.permission.PermissionService; |
| 14 | 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 | 18 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 19 | 19 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 20 | 20 | import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils; |
| ... | ... | @@ -52,7 +52,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 52 | 52 | private UserServiceImpl userService; |
| 53 | 53 | |
| 54 | 54 | @Resource |
| 55 | - private SysUserMapper userMapper; | |
| 55 | + private UserMapper userMapper; | |
| 56 | 56 | |
| 57 | 57 | @MockBean |
| 58 | 58 | private DeptService deptService; |
| ... | ... | @@ -94,7 +94,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 94 | 94 | // 调用 |
| 95 | 95 | Long userId = userService.createUser(reqVO); |
| 96 | 96 | // 断言 |
| 97 | - SysUserDO user = userMapper.selectById(userId); | |
| 97 | + UserDO user = userMapper.selectById(userId); | |
| 98 | 98 | assertPojoEquals(reqVO, user, "password"); |
| 99 | 99 | assertEquals("yudaoyuanma", user.getPassword()); |
| 100 | 100 | assertEquals(CommonStatusEnum.ENABLE.getStatus(), user.getStatus()); |
| ... | ... | @@ -103,7 +103,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 103 | 103 | @Test |
| 104 | 104 | public void testUpdateUser_success() { |
| 105 | 105 | // mock 数据 |
| 106 | - SysUserDO dbUser = randomSysUserDO(); | |
| 106 | + UserDO dbUser = randomSysUserDO(); | |
| 107 | 107 | userMapper.insert(dbUser); |
| 108 | 108 | // 准备参数 |
| 109 | 109 | UserUpdateReqVO reqVO = randomPojo(UserUpdateReqVO.class, o -> { |
| ... | ... | @@ -128,14 +128,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 128 | 128 | // 调用 |
| 129 | 129 | userService.updateUser(reqVO); |
| 130 | 130 | // 断言 |
| 131 | - SysUserDO user = userMapper.selectById(reqVO.getId()); | |
| 131 | + UserDO user = userMapper.selectById(reqVO.getId()); | |
| 132 | 132 | assertPojoEquals(reqVO, user); |
| 133 | 133 | } |
| 134 | 134 | |
| 135 | 135 | @Test |
| 136 | 136 | public void testUpdateUserProfile_success() { |
| 137 | 137 | // mock 数据 |
| 138 | - SysUserDO dbUser = randomSysUserDO(); | |
| 138 | + UserDO dbUser = randomSysUserDO(); | |
| 139 | 139 | userMapper.insert(dbUser); |
| 140 | 140 | // 准备参数 |
| 141 | 141 | Long userId = dbUser.getId(); |
| ... | ... | @@ -147,14 +147,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 147 | 147 | // 调用 |
| 148 | 148 | userService.updateUserProfile(userId, reqVO); |
| 149 | 149 | // 断言 |
| 150 | - SysUserDO user = userMapper.selectById(userId); | |
| 150 | + UserDO user = userMapper.selectById(userId); | |
| 151 | 151 | assertPojoEquals(reqVO, user); |
| 152 | 152 | } |
| 153 | 153 | |
| 154 | 154 | @Test |
| 155 | 155 | public void testUpdateUserPassword_success() { |
| 156 | 156 | // mock 数据 |
| 157 | - SysUserDO dbUser = randomSysUserDO(o -> o.setPassword("encode:yudao")); | |
| 157 | + UserDO dbUser = randomSysUserDO(o -> o.setPassword("encode:yudao")); | |
| 158 | 158 | userMapper.insert(dbUser); |
| 159 | 159 | // 准备参数 |
| 160 | 160 | Long userId = dbUser.getId(); |
| ... | ... | @@ -170,14 +170,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 170 | 170 | // 调用 |
| 171 | 171 | userService.updateUserPassword(userId, reqVO); |
| 172 | 172 | // 断言 |
| 173 | - SysUserDO user = userMapper.selectById(userId); | |
| 173 | + UserDO user = userMapper.selectById(userId); | |
| 174 | 174 | assertEquals("encode:yuanma", user.getPassword()); |
| 175 | 175 | } |
| 176 | 176 | |
| 177 | 177 | @Test |
| 178 | 178 | public void testUpdateUserAvatar_success() { |
| 179 | 179 | // mock 数据 |
| 180 | - SysUserDO dbUser = randomSysUserDO(); | |
| 180 | + UserDO dbUser = randomSysUserDO(); | |
| 181 | 181 | userMapper.insert(dbUser); |
| 182 | 182 | // 准备参数 |
| 183 | 183 | Long userId = dbUser.getId(); |
| ... | ... | @@ -190,14 +190,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 190 | 190 | // 调用 |
| 191 | 191 | userService.updateUserAvatar(userId, avatarFile); |
| 192 | 192 | // 断言 |
| 193 | - SysUserDO user = userMapper.selectById(userId); | |
| 193 | + UserDO user = userMapper.selectById(userId); | |
| 194 | 194 | assertEquals(avatar, user.getAvatar()); |
| 195 | 195 | } |
| 196 | 196 | |
| 197 | 197 | @Test |
| 198 | 198 | public void testUpdateUserPassword02_success() { |
| 199 | 199 | // mock 数据 |
| 200 | - SysUserDO dbUser = randomSysUserDO(); | |
| 200 | + UserDO dbUser = randomSysUserDO(); | |
| 201 | 201 | userMapper.insert(dbUser); |
| 202 | 202 | // 准备参数 |
| 203 | 203 | Long userId = dbUser.getId(); |
| ... | ... | @@ -209,14 +209,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 209 | 209 | // 调用 |
| 210 | 210 | userService.updateUserPassword(userId, password); |
| 211 | 211 | // 断言 |
| 212 | - SysUserDO user = userMapper.selectById(userId); | |
| 212 | + UserDO user = userMapper.selectById(userId); | |
| 213 | 213 | assertEquals("encode:" + password, user.getPassword()); |
| 214 | 214 | } |
| 215 | 215 | |
| 216 | 216 | @Test |
| 217 | 217 | public void testUpdateUserStatus() { |
| 218 | 218 | // mock 数据 |
| 219 | - SysUserDO dbUser = randomSysUserDO(); | |
| 219 | + UserDO dbUser = randomSysUserDO(); | |
| 220 | 220 | userMapper.insert(dbUser); |
| 221 | 221 | // 准备参数 |
| 222 | 222 | Long userId = dbUser.getId(); |
| ... | ... | @@ -225,14 +225,14 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 225 | 225 | // 调用 |
| 226 | 226 | userService.updateUserStatus(userId, status); |
| 227 | 227 | // 断言 |
| 228 | - SysUserDO user = userMapper.selectById(userId); | |
| 228 | + UserDO user = userMapper.selectById(userId); | |
| 229 | 229 | assertEquals(status, user.getStatus()); |
| 230 | 230 | } |
| 231 | 231 | |
| 232 | 232 | @Test |
| 233 | 233 | public void testDeleteUser_success(){ |
| 234 | 234 | // mock 数据 |
| 235 | - SysUserDO dbUser = randomSysUserDO(); | |
| 235 | + UserDO dbUser = randomSysUserDO(); | |
| 236 | 236 | userMapper.insert(dbUser); |
| 237 | 237 | // 准备参数 |
| 238 | 238 | Long userId = dbUser.getId(); |
| ... | ... | @@ -248,7 +248,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 248 | 248 | @Test |
| 249 | 249 | public void testGetUserPage() { |
| 250 | 250 | // mock 数据 |
| 251 | - SysUserDO dbUser = initGetUserPageData(); | |
| 251 | + UserDO dbUser = initGetUserPageData(); | |
| 252 | 252 | // 准备参数 |
| 253 | 253 | UserPageReqVO reqVO = new UserPageReqVO(); |
| 254 | 254 | reqVO.setUsername("yudao"); |
| ... | ... | @@ -262,7 +262,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 262 | 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 | 267 | assertEquals(1, pageResult.getTotal()); |
| 268 | 268 | assertEquals(1, pageResult.getList().size()); |
| ... | ... | @@ -272,7 +272,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 272 | 272 | @Test |
| 273 | 273 | public void testGetUsers() { |
| 274 | 274 | // mock 数据 |
| 275 | - SysUserDO dbUser = initGetUserPageData(); | |
| 275 | + UserDO dbUser = initGetUserPageData(); | |
| 276 | 276 | // 准备参数 |
| 277 | 277 | UserExportReqVO reqVO = new UserExportReqVO(); |
| 278 | 278 | reqVO.setUsername("yudao"); |
| ... | ... | @@ -286,7 +286,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 286 | 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 | 291 | assertEquals(1, list.size()); |
| 292 | 292 | assertPojoEquals(dbUser, list.get(0)); |
| ... | ... | @@ -295,9 +295,9 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 295 | 295 | /** |
| 296 | 296 | * 初始化 getUserPage 方法的测试数据 |
| 297 | 297 | */ |
| 298 | - private SysUserDO initGetUserPageData() { | |
| 298 | + private UserDO initGetUserPageData() { | |
| 299 | 299 | // mock 数据 |
| 300 | - SysUserDO dbUser = randomSysUserDO(o -> { // 等会查询到 | |
| 300 | + UserDO dbUser = randomSysUserDO(o -> { // 等会查询到 | |
| 301 | 301 | o.setUsername("yudaoyuanma"); |
| 302 | 302 | o.setMobile("15601691300"); |
| 303 | 303 | o.setStatus(CommonStatusEnum.ENABLE.getStatus()); |
| ... | ... | @@ -359,7 +359,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 359 | 359 | UserImportRespVO respVO = userService.importUsers(newArrayList(importUser), true); |
| 360 | 360 | // 断言 |
| 361 | 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 | 363 | assertPojoEquals(importUser, user); |
| 364 | 364 | assertEquals("java", user.getPassword()); |
| 365 | 365 | assertEquals(0, respVO.getUpdateUsernames().size()); |
| ... | ... | @@ -372,7 +372,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 372 | 372 | @Test |
| 373 | 373 | public void testImportUsers_03() { |
| 374 | 374 | // mock 数据 |
| 375 | - SysUserDO dbUser = randomSysUserDO(); | |
| 375 | + UserDO dbUser = randomSysUserDO(); | |
| 376 | 376 | userMapper.insert(dbUser); |
| 377 | 377 | // 准备参数 |
| 378 | 378 | UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> { |
| ... | ... | @@ -402,7 +402,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 402 | 402 | @Test |
| 403 | 403 | public void testImportUsers_04() { |
| 404 | 404 | // mock 数据 |
| 405 | - SysUserDO dbUser = randomSysUserDO(); | |
| 405 | + UserDO dbUser = randomSysUserDO(); | |
| 406 | 406 | userMapper.insert(dbUser); |
| 407 | 407 | // 准备参数 |
| 408 | 408 | UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> { |
| ... | ... | @@ -422,7 +422,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 422 | 422 | // 断言 |
| 423 | 423 | assertEquals(0, respVO.getCreateUsernames().size()); |
| 424 | 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 | 426 | assertPojoEquals(importUser, user); |
| 427 | 427 | assertEquals(0, respVO.getFailureUsernames().size()); |
| 428 | 428 | } |
| ... | ... | @@ -561,7 +561,7 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 561 | 561 | @Test |
| 562 | 562 | public void testCheckOldPassword_passwordFailed() { |
| 563 | 563 | // mock 数据 |
| 564 | - SysUserDO user = randomSysUserDO(); | |
| 564 | + UserDO user = randomSysUserDO(); | |
| 565 | 565 | userMapper.insert(user); |
| 566 | 566 | // 准备参数 |
| 567 | 567 | Long id = user.getId(); |
| ... | ... | @@ -594,12 +594,12 @@ public class UserServiceImplTest extends BaseDbUnitTest { |
| 594 | 594 | // ========== 随机对象 ========== |
| 595 | 595 | |
| 596 | 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 | 599 | o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围 |
| 600 | 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 | } | ... | ... |