Commit d68ced8de44291eaa77828b97d914a5b05d3063c
1 parent
8e2388d5
前台用户,接入发送短信验证码
Showing
15 changed files
with
110 additions
and
14 deletions
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/member/convert/package-info.java
0 → 100644
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/member/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md
0 → 100644
| 1 | +<http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao> | ... | ... |
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/dal/dataobject/user/MbrUserDO.java renamed to yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/member/dal/dataobject/user/MbrUserDO.java
| 1 | -package cn.iocoder.yudao.userserver.modules.member.dal.dataobject.user; | |
| 1 | +package cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user; | |
| 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/member/dal/mysql/user/MbrUserCoreMapper.java
0 → 100644
| 1 | +package cn.iocoder.yudao.coreservice.modules.member.dal.mysql.user; | |
| 2 | + | |
| 3 | +import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; | |
| 4 | +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | |
| 5 | +import org.apache.ibatis.annotations.Mapper; | |
| 6 | + | |
| 7 | +@Mapper | |
| 8 | +public interface MbrUserCoreMapper extends BaseMapperX<MbrUserDO> { | |
| 9 | + | |
| 10 | +} | ... | ... |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/member/service/user/MbrUserCoreService.java
0 → 100644
| 1 | +package cn.iocoder.yudao.coreservice.modules.member.service.user; | |
| 2 | + | |
| 3 | +import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; | |
| 4 | + | |
| 5 | +/** | |
| 6 | + * 前台用户 Core Service 接口 | |
| 7 | + * | |
| 8 | + * @author 芋道源码 | |
| 9 | + */ | |
| 10 | +public interface MbrUserCoreService { | |
| 11 | + /** | |
| 12 | + * 通过用户 ID 查询用户 | |
| 13 | + * | |
| 14 | + * @param id 用户ID | |
| 15 | + * @return 用户对象信息 | |
| 16 | + */ | |
| 17 | + MbrUserDO getUser(Long id); | |
| 18 | + | |
| 19 | +} | ... | ... |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/member/service/user/impl/MbrUserCoreServiceImpl.java
0 → 100644
| 1 | +package cn.iocoder.yudao.coreservice.modules.member.service.user.impl; | |
| 2 | + | |
| 3 | +import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; | |
| 4 | +import cn.iocoder.yudao.coreservice.modules.member.dal.mysql.user.MbrUserCoreMapper; | |
| 5 | +import cn.iocoder.yudao.coreservice.modules.member.service.user.MbrUserCoreService; | |
| 6 | +import lombok.extern.slf4j.Slf4j; | |
| 7 | +import org.springframework.stereotype.Service; | |
| 8 | + | |
| 9 | +import javax.annotation.Resource; | |
| 10 | + | |
| 11 | +/** | |
| 12 | + * User Core Service 实现类 | |
| 13 | + * | |
| 14 | + * @author 芋道源码 | |
| 15 | + */ | |
| 16 | +@Service | |
| 17 | +@Slf4j | |
| 18 | +public class MbrUserCoreServiceImpl implements MbrUserCoreService { | |
| 19 | + | |
| 20 | + @Resource | |
| 21 | + private MbrUserCoreMapper userCoreMapper; | |
| 22 | + | |
| 23 | + @Override | |
| 24 | + public MbrUserDO getUser(Long id) { | |
| 25 | + return userCoreMapper.selectById(id); | |
| 26 | + } | |
| 27 | + | |
| 28 | +} | ... | ... |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/sms/impl/SysSmsCoreServiceImpl.java
| ... | ... | @@ -2,6 +2,8 @@ package cn.iocoder.yudao.coreservice.modules.system.service.sms.impl; |
| 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.member.dal.dataobject.user.MbrUserDO; | |
| 6 | +import cn.iocoder.yudao.coreservice.modules.member.service.user.MbrUserCoreService; | |
| 5 | 7 | import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; |
| 6 | 8 | import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; |
| 7 | 9 | import cn.iocoder.yudao.coreservice.modules.system.mq.message.sms.SysSmsSendMessage; |
| ... | ... | @@ -41,6 +43,8 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { |
| 41 | 43 | @Resource |
| 42 | 44 | private SysUserCoreService sysUserCoreService; |
| 43 | 45 | @Resource |
| 46 | + private MbrUserCoreService mbrUserCoreService; | |
| 47 | + @Resource | |
| 44 | 48 | private SysSmsTemplateCoreService smsTemplateCoreService; |
| 45 | 49 | @Resource |
| 46 | 50 | private SysSmsLogCoreService smsLogCoreService; |
| ... | ... | @@ -66,7 +70,15 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { |
| 66 | 70 | |
| 67 | 71 | @Override |
| 68 | 72 | public Long sendSingleSmsToMember(String mobile, Long userId, String templateCode, Map<String, Object> templateParams) { |
| 69 | - throw new UnsupportedOperationException("暂时不支持该操作,感兴趣可以实现该功能哟!"); | |
| 73 | + // 如果 mobile 为空,则加载用户编号对应的手机号 | |
| 74 | + if (StrUtil.isEmpty(mobile)) { | |
| 75 | + MbrUserDO user = mbrUserCoreService.getUser(userId); | |
| 76 | + if (user != null) { | |
| 77 | + mobile = user.getMobile(); | |
| 78 | + } | |
| 79 | + } | |
| 80 | + // 执行发送 | |
| 81 | + return this.sendSingleSms(mobile, userId, UserTypeEnum.MEMBER.getValue(), templateCode, templateParams); | |
| 70 | 82 | } |
| 71 | 83 | |
| 72 | 84 | @Override | ... | ... |
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/dal/mysql/user/MbrUserMapper.java
| 1 | 1 | package cn.iocoder.yudao.userserver.modules.member.dal.mysql.user; |
| 2 | 2 | |
| 3 | +import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; | |
| 3 | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 4 | -import cn.iocoder.yudao.userserver.modules.member.dal.dataobject.user.MbrUserDO; | |
| 5 | 5 | import org.apache.ibatis.annotations.Mapper; |
| 6 | 6 | |
| 7 | 7 | /** | ... | ... |
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/service/user/MbrUserService.java
| 1 | 1 | package cn.iocoder.yudao.userserver.modules.member.service.user; |
| 2 | 2 | |
| 3 | +import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; | |
| 3 | 4 | import cn.iocoder.yudao.framework.common.validation.Mobile; |
| 4 | -import cn.iocoder.yudao.userserver.modules.member.dal.dataobject.user.MbrUserDO; | |
| 5 | 5 | |
| 6 | 6 | /** |
| 7 | 7 | * 前台用户 Service 接口 | ... | ... |
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/service/user/impl/MbrUserServiceImpl.java
| 1 | 1 | package cn.iocoder.yudao.userserver.modules.member.service.user.impl; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.util.IdUtil; |
| 4 | -import cn.hutool.core.util.RandomUtil; | |
| 5 | -import cn.hutool.core.util.StrUtil; | |
| 4 | +import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; | |
| 6 | 5 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 7 | -import cn.iocoder.yudao.userserver.modules.member.dal.dataobject.user.MbrUserDO; | |
| 8 | 6 | import cn.iocoder.yudao.userserver.modules.member.dal.mysql.user.MbrUserMapper; |
| 9 | 7 | import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService; |
| 10 | 8 | import lombok.extern.slf4j.Slf4j; | ... | ... |
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/controller/auth/SysAuthController.http
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/convert/auth/SysAuthConvert.java
| 1 | 1 | package cn.iocoder.yudao.userserver.modules.system.convert.auth; |
| 2 | 2 | |
| 3 | +import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; | |
| 3 | 4 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 4 | 5 | import cn.iocoder.yudao.framework.security.core.LoginUser; |
| 5 | -import cn.iocoder.yudao.userserver.modules.member.dal.dataobject.user.MbrUserDO; | |
| 6 | 6 | import org.mapstruct.Mapper; |
| 7 | 7 | import org.mapstruct.Mapping; |
| 8 | 8 | import org.mapstruct.factory.Mappers; | ... | ... |
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/enums/sms/SysSmsTemplateCodeConstants.java
0 → 100644
| 1 | +package cn.iocoder.yudao.userserver.modules.system.enums.sms; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * yudao-user-server 使用到的短信模板的 Code 编码的枚举 | |
| 5 | + * | |
| 6 | + * @author 芋道源码 | |
| 7 | + */ | |
| 8 | +public interface SysSmsTemplateCodeConstants { | |
| 9 | + | |
| 10 | + /** | |
| 11 | + * 前台用户短信登录 | |
| 12 | + */ | |
| 13 | + String USER_SMS_LOGIN = "user-sms-login"; | |
| 14 | + | |
| 15 | +} | ... | ... |
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java
| 1 | 1 | package cn.iocoder.yudao.userserver.modules.system.service.auth.impl; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.lang.Assert; |
| 4 | +import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; | |
| 5 | +import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginLogTypeEnum; | |
| 6 | +import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginResultEnum; | |
| 4 | 7 | import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; |
| 5 | 8 | import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService; |
| 6 | 9 | import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO; |
| ... | ... | @@ -9,15 +12,12 @@ import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 9 | 12 | import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; |
| 10 | 13 | import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; |
| 11 | 14 | import cn.iocoder.yudao.framework.security.core.LoginUser; |
| 15 | +import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService; | |
| 12 | 16 | import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.SysAuthLoginReqVO; |
| 13 | 17 | import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.SysAuthSmsLoginReqVO; |
| 14 | 18 | import cn.iocoder.yudao.userserver.modules.system.convert.auth.SysAuthConvert; |
| 15 | -import cn.iocoder.yudao.userserver.modules.member.dal.dataobject.user.MbrUserDO; | |
| 16 | 19 | import cn.iocoder.yudao.userserver.modules.system.enums.sms.SysSmsSceneEnum; |
| 17 | 20 | import cn.iocoder.yudao.userserver.modules.system.service.auth.SysAuthService; |
| 18 | -import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService; | |
| 19 | -import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginLogTypeEnum; | |
| 20 | -import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginResultEnum; | |
| 21 | 21 | import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; |
| 22 | 22 | import lombok.extern.slf4j.Slf4j; |
| 23 | 23 | import org.springframework.context.annotation.Lazy; | ... | ... |
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/sms/impl/SysSmsCodeServiceImpl.java
| 1 | 1 | package cn.iocoder.yudao.userserver.modules.system.service.sms.impl; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.map.MapUtil; | |
| 4 | +import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService; | |
| 3 | 5 | import cn.iocoder.yudao.userserver.modules.system.dal.dataobject.sms.SysSmsCodeDO; |
| 4 | 6 | import cn.iocoder.yudao.userserver.modules.system.dal.mysql.sms.SysSmsCodeMapper; |
| 7 | +import cn.iocoder.yudao.userserver.modules.system.enums.sms.SysSmsTemplateCodeConstants; | |
| 5 | 8 | import cn.iocoder.yudao.userserver.modules.system.framework.sms.SmsCodeProperties; |
| 6 | 9 | import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; |
| 7 | 10 | import org.springframework.stereotype.Service; |
| ... | ... | @@ -29,12 +32,16 @@ public class SysSmsCodeServiceImpl implements SysSmsCodeService { |
| 29 | 32 | @Resource |
| 30 | 33 | private SysSmsCodeMapper smsCodeMapper; |
| 31 | 34 | |
| 35 | + @Resource | |
| 36 | + private SysSmsCoreService smsCoreService; | |
| 37 | + | |
| 32 | 38 | @Override |
| 33 | 39 | public void sendSmsCode(String mobile, Integer scene, String createIp) { |
| 34 | 40 | // 创建验证码 |
| 35 | 41 | String code = this.createSmsCode(mobile, scene, createIp); |
| 36 | 42 | // 发送验证码 |
| 37 | - // TODO 芋艿:重要,发送短信验证码 | |
| 43 | + smsCoreService.sendSingleSmsToMember(mobile, null, SysSmsTemplateCodeConstants.USER_SMS_LOGIN, | |
| 44 | + MapUtil.of("code", code)); | |
| 38 | 45 | } |
| 39 | 46 | |
| 40 | 47 | private String createSmsCode(String mobile, Integer scene, String ip) { | ... | ... |