Commit d68ced8de44291eaa77828b97d914a5b05d3063c

Authored by YunaiV
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
  1 +/**
  2 + * 提供 POJO 类的实体转换
  3 + *
  4 + * 目前使用 MapStruct 框架
  5 + */
  6 +package cn.iocoder.yudao.coreservice.modules.member.convert;
... ...
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
... ... @@ -12,7 +12,7 @@ POST {{userServerUrl}}/send-sms-code
12 12 Content-Type: application/json
13 13  
14 14 {
15   - "mobile": "15601691301",
  15 + "mobile": "15601691399",
16 16 "scene": 1
17 17 }
18 18  
... ...
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) {
... ...