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 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 4 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/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,6 +2,8 @@ package cn.iocoder.yudao.coreservice.modules.system.service.sms.impl; | ||
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | import cn.hutool.core.util.StrUtil; | 4 | import cn.hutool.core.util.StrUtil; |
| 5 | +import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO; | ||
| 6 | +import cn.iocoder.yudao.coreservice.modules.member.service.user.MbrUserCoreService; | ||
| 5 | import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; | 7 | import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO; |
| 6 | import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | 8 | import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; |
| 7 | import cn.iocoder.yudao.coreservice.modules.system.mq.message.sms.SysSmsSendMessage; | 9 | import cn.iocoder.yudao.coreservice.modules.system.mq.message.sms.SysSmsSendMessage; |
| @@ -41,6 +43,8 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { | @@ -41,6 +43,8 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { | ||
| 41 | @Resource | 43 | @Resource |
| 42 | private SysUserCoreService sysUserCoreService; | 44 | private SysUserCoreService sysUserCoreService; |
| 43 | @Resource | 45 | @Resource |
| 46 | + private MbrUserCoreService mbrUserCoreService; | ||
| 47 | + @Resource | ||
| 44 | private SysSmsTemplateCoreService smsTemplateCoreService; | 48 | private SysSmsTemplateCoreService smsTemplateCoreService; |
| 45 | @Resource | 49 | @Resource |
| 46 | private SysSmsLogCoreService smsLogCoreService; | 50 | private SysSmsLogCoreService smsLogCoreService; |
| @@ -66,7 +70,15 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { | @@ -66,7 +70,15 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService { | ||
| 66 | 70 | ||
| 67 | @Override | 71 | @Override |
| 68 | public Long sendSingleSmsToMember(String mobile, Long userId, String templateCode, Map<String, Object> templateParams) { | 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 | @Override | 84 | @Override |
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/dal/mysql/user/MbrUserMapper.java
| 1 | package cn.iocoder.yudao.userserver.modules.member.dal.mysql.user; | 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 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 4 | -import cn.iocoder.yudao.userserver.modules.member.dal.dataobject.user.MbrUserDO; | ||
| 5 | import org.apache.ibatis.annotations.Mapper; | 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 | package cn.iocoder.yudao.userserver.modules.member.service.user; | 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 | import cn.iocoder.yudao.framework.common.validation.Mobile; | 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 | * 前台用户 Service 接口 | 7 | * 前台用户 Service 接口 |
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/service/user/impl/MbrUserServiceImpl.java
| 1 | package cn.iocoder.yudao.userserver.modules.member.service.user.impl; | 1 | package cn.iocoder.yudao.userserver.modules.member.service.user.impl; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.util.IdUtil; | 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 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 5 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 7 | -import cn.iocoder.yudao.userserver.modules.member.dal.dataobject.user.MbrUserDO; | ||
| 8 | import cn.iocoder.yudao.userserver.modules.member.dal.mysql.user.MbrUserMapper; | 6 | import cn.iocoder.yudao.userserver.modules.member.dal.mysql.user.MbrUserMapper; |
| 9 | import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService; | 7 | import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService; |
| 10 | import lombok.extern.slf4j.Slf4j; | 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 | package cn.iocoder.yudao.userserver.modules.system.convert.auth; | 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 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 4 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 4 | import cn.iocoder.yudao.framework.security.core.LoginUser; | 5 | import cn.iocoder.yudao.framework.security.core.LoginUser; |
| 5 | -import cn.iocoder.yudao.userserver.modules.member.dal.dataobject.user.MbrUserDO; | ||
| 6 | import org.mapstruct.Mapper; | 6 | import org.mapstruct.Mapper; |
| 7 | import org.mapstruct.Mapping; | 7 | import org.mapstruct.Mapping; |
| 8 | import org.mapstruct.factory.Mappers; | 8 | import org.mapstruct.factory.Mappers; |
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/enums/sms/SysSmsTemplateCodeConstants.java
0 → 100644
yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/system/service/auth/impl/SysAuthServiceImpl.java
| 1 | package cn.iocoder.yudao.userserver.modules.system.service.auth.impl; | 1 | package cn.iocoder.yudao.userserver.modules.system.service.auth.impl; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.lang.Assert; | 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 | import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; | 7 | import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService; |
| 5 | import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService; | 8 | import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService; |
| 6 | import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO; | 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,15 +12,12 @@ import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | ||
| 9 | import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; | 12 | import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; |
| 10 | import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; | 13 | import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; |
| 11 | import cn.iocoder.yudao.framework.security.core.LoginUser; | 14 | import cn.iocoder.yudao.framework.security.core.LoginUser; |
| 15 | +import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService; | ||
| 12 | import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.SysAuthLoginReqVO; | 16 | import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.SysAuthLoginReqVO; |
| 13 | import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.SysAuthSmsLoginReqVO; | 17 | import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.SysAuthSmsLoginReqVO; |
| 14 | import cn.iocoder.yudao.userserver.modules.system.convert.auth.SysAuthConvert; | 18 | import cn.iocoder.yudao.userserver.modules.system.convert.auth.SysAuthConvert; |
| 15 | -import cn.iocoder.yudao.userserver.modules.member.dal.dataobject.user.MbrUserDO; | ||
| 16 | import cn.iocoder.yudao.userserver.modules.system.enums.sms.SysSmsSceneEnum; | 19 | import cn.iocoder.yudao.userserver.modules.system.enums.sms.SysSmsSceneEnum; |
| 17 | import cn.iocoder.yudao.userserver.modules.system.service.auth.SysAuthService; | 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 | import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; | 21 | import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; |
| 22 | import lombok.extern.slf4j.Slf4j; | 22 | import lombok.extern.slf4j.Slf4j; |
| 23 | import org.springframework.context.annotation.Lazy; | 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 | package cn.iocoder.yudao.userserver.modules.system.service.sms.impl; | 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 | import cn.iocoder.yudao.userserver.modules.system.dal.dataobject.sms.SysSmsCodeDO; | 5 | import cn.iocoder.yudao.userserver.modules.system.dal.dataobject.sms.SysSmsCodeDO; |
| 4 | import cn.iocoder.yudao.userserver.modules.system.dal.mysql.sms.SysSmsCodeMapper; | 6 | import cn.iocoder.yudao.userserver.modules.system.dal.mysql.sms.SysSmsCodeMapper; |
| 7 | +import cn.iocoder.yudao.userserver.modules.system.enums.sms.SysSmsTemplateCodeConstants; | ||
| 5 | import cn.iocoder.yudao.userserver.modules.system.framework.sms.SmsCodeProperties; | 8 | import cn.iocoder.yudao.userserver.modules.system.framework.sms.SmsCodeProperties; |
| 6 | import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; | 9 | import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService; |
| 7 | import org.springframework.stereotype.Service; | 10 | import org.springframework.stereotype.Service; |
| @@ -29,12 +32,16 @@ public class SysSmsCodeServiceImpl implements SysSmsCodeService { | @@ -29,12 +32,16 @@ public class SysSmsCodeServiceImpl implements SysSmsCodeService { | ||
| 29 | @Resource | 32 | @Resource |
| 30 | private SysSmsCodeMapper smsCodeMapper; | 33 | private SysSmsCodeMapper smsCodeMapper; |
| 31 | 34 | ||
| 35 | + @Resource | ||
| 36 | + private SysSmsCoreService smsCoreService; | ||
| 37 | + | ||
| 32 | @Override | 38 | @Override |
| 33 | public void sendSmsCode(String mobile, Integer scene, String createIp) { | 39 | public void sendSmsCode(String mobile, Integer scene, String createIp) { |
| 34 | // 创建验证码 | 40 | // 创建验证码 |
| 35 | String code = this.createSmsCode(mobile, scene, createIp); | 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 | private String createSmsCode(String mobile, Integer scene, String ip) { | 47 | private String createSmsCode(String mobile, Integer scene, String ip) { |