mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 20:28:44 +08:00 
			
		
		
		
	前台用户,接入发送短信验证码
This commit is contained in:
		@@ -0,0 +1,6 @@
 | 
			
		||||
/**
 | 
			
		||||
 * 提供 POJO 类的实体转换
 | 
			
		||||
 *
 | 
			
		||||
 * 目前使用 MapStruct 框架
 | 
			
		||||
 */
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.member.convert;
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
<http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao>
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
package cn.iocoder.yudao.userserver.modules.member.dal.dataobject.user;
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 | 
			
		||||
@@ -0,0 +1,10 @@
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.member.dal.mysql.user;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface MbrUserCoreMapper extends BaseMapperX<MbrUserDO> {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,19 @@
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.member.service.user;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 前台用户 Core Service 接口
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 */
 | 
			
		||||
public interface MbrUserCoreService {
 | 
			
		||||
    /**
 | 
			
		||||
     * 通过用户 ID 查询用户
 | 
			
		||||
     *
 | 
			
		||||
     * @param id 用户ID
 | 
			
		||||
     * @return 用户对象信息
 | 
			
		||||
     */
 | 
			
		||||
    MbrUserDO getUser(Long id);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,28 @@
 | 
			
		||||
package cn.iocoder.yudao.coreservice.modules.member.service.user.impl;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.member.dal.mysql.user.MbrUserCoreMapper;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.member.service.user.MbrUserCoreService;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * User Core Service 实现类
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 */
 | 
			
		||||
@Service
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class MbrUserCoreServiceImpl implements MbrUserCoreService {
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private MbrUserCoreMapper userCoreMapper;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public MbrUserDO getUser(Long id) {
 | 
			
		||||
        return userCoreMapper.selectById(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -2,6 +2,8 @@ package cn.iocoder.yudao.coreservice.modules.system.service.sms.impl;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.hutool.core.util.StrUtil;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.member.service.user.MbrUserCoreService;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.mq.message.sms.SysSmsSendMessage;
 | 
			
		||||
@@ -41,6 +43,8 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService {
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysUserCoreService sysUserCoreService;
 | 
			
		||||
    @Resource
 | 
			
		||||
    private MbrUserCoreService mbrUserCoreService;
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysSmsTemplateCoreService smsTemplateCoreService;
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysSmsLogCoreService smsLogCoreService;
 | 
			
		||||
@@ -66,7 +70,15 @@ public class SysSmsCoreServiceImpl implements SysSmsCoreService {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Long sendSingleSmsToMember(String mobile, Long userId, String templateCode, Map<String, Object> templateParams) {
 | 
			
		||||
        throw new UnsupportedOperationException("暂时不支持该操作,感兴趣可以实现该功能哟!");
 | 
			
		||||
        // 如果 mobile 为空,则加载用户编号对应的手机号
 | 
			
		||||
        if (StrUtil.isEmpty(mobile)) {
 | 
			
		||||
            MbrUserDO user = mbrUserCoreService.getUser(userId);
 | 
			
		||||
            if (user != null) {
 | 
			
		||||
                mobile = user.getMobile();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        // 执行发送
 | 
			
		||||
        return this.sendSingleSms(mobile, userId, UserTypeEnum.MEMBER.getValue(), templateCode, templateParams);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
package cn.iocoder.yudao.userserver.modules.member.dal.mysql.user;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.member.dal.dataobject.user.MbrUserDO;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
package cn.iocoder.yudao.userserver.modules.member.service.user;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.validation.Mobile;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.member.dal.dataobject.user.MbrUserDO;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 前台用户 Service 接口
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,8 @@
 | 
			
		||||
package cn.iocoder.yudao.userserver.modules.member.service.user.impl;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.util.IdUtil;
 | 
			
		||||
import cn.hutool.core.util.RandomUtil;
 | 
			
		||||
import cn.hutool.core.util.StrUtil;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.member.dal.dataobject.user.MbrUserDO;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.member.dal.mysql.user.MbrUserMapper;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ POST {{userServerUrl}}/send-sms-code
 | 
			
		||||
Content-Type: application/json
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
  "mobile": "15601691301",
 | 
			
		||||
  "mobile": "15601691399",
 | 
			
		||||
  "scene": 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
package cn.iocoder.yudao.userserver.modules.system.convert.auth;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.security.core.LoginUser;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.member.dal.dataobject.user.MbrUserDO;
 | 
			
		||||
import org.mapstruct.Mapper;
 | 
			
		||||
import org.mapstruct.Mapping;
 | 
			
		||||
import org.mapstruct.factory.Mappers;
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,15 @@
 | 
			
		||||
package cn.iocoder.yudao.userserver.modules.system.enums.sms;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * yudao-user-server 使用到的短信模板的 Code 编码的枚举
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 */
 | 
			
		||||
public interface SysSmsTemplateCodeConstants {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 前台用户短信登录
 | 
			
		||||
     */
 | 
			
		||||
    String USER_SMS_LOGIN = "user-sms-login";
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,9 @@
 | 
			
		||||
package cn.iocoder.yudao.userserver.modules.system.service.auth.impl;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.lang.Assert;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginLogTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginResultEnum;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.auth.SysUserSessionCoreService;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO;
 | 
			
		||||
@@ -9,15 +12,12 @@ import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.security.core.LoginUser;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.SysAuthLoginReqVO;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.system.controller.auth.vo.SysAuthSmsLoginReqVO;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.system.convert.auth.SysAuthConvert;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.member.dal.dataobject.user.MbrUserDO;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.system.enums.sms.SysSmsSceneEnum;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.system.service.auth.SysAuthService;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginLogTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginResultEnum;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.context.annotation.Lazy;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,10 @@
 | 
			
		||||
package cn.iocoder.yudao.userserver.modules.system.service.sms.impl;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.map.MapUtil;
 | 
			
		||||
import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.system.dal.dataobject.sms.SysSmsCodeDO;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.system.dal.mysql.sms.SysSmsCodeMapper;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.system.enums.sms.SysSmsTemplateCodeConstants;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.system.framework.sms.SmsCodeProperties;
 | 
			
		||||
import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
@@ -29,12 +32,16 @@ public class SysSmsCodeServiceImpl implements SysSmsCodeService {
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysSmsCodeMapper smsCodeMapper;
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private SysSmsCoreService smsCoreService;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void sendSmsCode(String mobile, Integer scene, String createIp) {
 | 
			
		||||
        // 创建验证码
 | 
			
		||||
        String code = this.createSmsCode(mobile, scene, createIp);
 | 
			
		||||
        // 发送验证码
 | 
			
		||||
        // TODO 芋艿:重要,发送短信验证码
 | 
			
		||||
        smsCoreService.sendSingleSmsToMember(mobile, null, SysSmsTemplateCodeConstants.USER_SMS_LOGIN,
 | 
			
		||||
                MapUtil.of("code", code));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private String createSmsCode(String mobile, Integer scene, String ip) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user