mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 02:08:43 +08:00 
			
		
		
		
	多模块重构 4:system 模块的调整,实现 sms API~~
This commit is contained in:
		| @@ -0,0 +1,39 @@ | ||||
| package cn.iocoder.yudao.module.system.api.sms; | ||||
|  | ||||
| import cn.iocoder.yudao.module.system.api.sms.dto.SmsCodeCheckReqDTO; | ||||
| import cn.iocoder.yudao.module.system.api.sms.dto.SmsCodeSendReqDTO; | ||||
| import cn.iocoder.yudao.module.system.api.sms.dto.SmsCodeUseReqDTO; | ||||
| import cn.iocoder.yudao.module.system.service.sms.SmsCodeService; | ||||
| import org.springframework.stereotype.Service; | ||||
| import org.springframework.validation.annotation.Validated; | ||||
|  | ||||
| import javax.annotation.Resource; | ||||
|  | ||||
| /** | ||||
|  * 短信验证码 API 实现类 | ||||
|  * | ||||
|  * @author 芋道源码 | ||||
|  */ | ||||
| @Service | ||||
| @Validated | ||||
| public class SmsCodeApiImpl implements SmsCodeApi { | ||||
|  | ||||
|     @Resource | ||||
|     private SmsCodeService smsCodeService; | ||||
|  | ||||
|     @Override | ||||
|     public void sendSmsCode(SmsCodeSendReqDTO reqDTO) { | ||||
|         smsCodeService.sendSmsCode(reqDTO); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void useSmsCode(SmsCodeUseReqDTO reqDTO) { | ||||
|         smsCodeService.useSmsCode(reqDTO); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void checkSmsCode(SmsCodeCheckReqDTO reqDTO) { | ||||
|         smsCodeService.checkSmsCode(reqDTO); | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -1,8 +1,11 @@ | ||||
| package cn.iocoder.yudao.module.system.service.sms; | ||||
|  | ||||
| import cn.iocoder.yudao.framework.common.exception.ServiceException; | ||||
| import cn.iocoder.yudao.framework.common.validation.Mobile; | ||||
| import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum; | ||||
| import cn.iocoder.yudao.module.system.api.sms.dto.SmsCodeCheckReqDTO; | ||||
| import cn.iocoder.yudao.module.system.api.sms.dto.SmsCodeSendReqDTO; | ||||
| import cn.iocoder.yudao.module.system.api.sms.dto.SmsCodeUseReqDTO; | ||||
|  | ||||
| import javax.validation.Valid; | ||||
|  | ||||
| /** | ||||
|  * 短信验证码 Service 接口 | ||||
| @@ -14,31 +17,24 @@ public interface SmsCodeService { | ||||
|     /** | ||||
|      * 创建短信验证码,并进行发送 | ||||
|      * | ||||
|      * @param mobile   手机号 | ||||
|      * @param scene    发送场景 {@link SmsSceneEnum} | ||||
|      * @param createIp 发送 IP | ||||
|      * @param reqDTO 发送请求 | ||||
|      */ | ||||
|     void sendSmsCode(@Mobile String mobile, Integer scene, String createIp); | ||||
|     void sendSmsCode(@Valid SmsCodeSendReqDTO reqDTO); | ||||
|  | ||||
|     /** | ||||
|      * 验证短信验证码,并进行使用 | ||||
|      * 如果正确,则将验证码标记成已使用 | ||||
|      * 如果错误,则抛出 {@link ServiceException} 异常 | ||||
|      * | ||||
|      * @param mobile 手机号 | ||||
|      * @param scene  发送场景 {@link SmsSceneEnum} | ||||
|      * @param code   验证码 | ||||
|      * @param usedIp 使用 IP | ||||
|      * @param reqDTO 使用请求 | ||||
|      */ | ||||
|     void useSmsCode(@Mobile String mobile, Integer scene, String code, String usedIp); | ||||
|     void useSmsCode(@Valid SmsCodeUseReqDTO reqDTO); | ||||
|  | ||||
|     /** | ||||
|      * 检查验证码是否有效 | ||||
|      * | ||||
|      * @param mobile 手机 | ||||
|      * @param code 验证码 | ||||
|      * @param scene 使用场景 | ||||
|      * @param reqDTO 校验请求 | ||||
|      */ | ||||
|     void checkSmsCode(String mobile, String code, Integer scene); | ||||
|     void checkSmsCode(@Valid SmsCodeCheckReqDTO reqDTO); | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -4,6 +4,9 @@ import cn.hutool.core.lang.Assert; | ||||
| import cn.hutool.core.map.MapUtil; | ||||
| import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; | ||||
| import cn.iocoder.yudao.module.member.api.user.MemberUserApi; | ||||
| import cn.iocoder.yudao.module.system.api.sms.dto.SmsCodeCheckReqDTO; | ||||
| import cn.iocoder.yudao.module.system.api.sms.dto.SmsCodeSendReqDTO; | ||||
| import cn.iocoder.yudao.module.system.api.sms.dto.SmsCodeUseReqDTO; | ||||
| import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsCodeDO; | ||||
| import cn.iocoder.yudao.module.system.dal.mysql.sms.SmsCodeMapper; | ||||
| import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum; | ||||
| @@ -42,13 +45,13 @@ public class SmsCodeServiceImpl implements SmsCodeService { | ||||
|     private SmsSendService smsSendService; | ||||
|  | ||||
|     @Override | ||||
|     public void sendSmsCode(String mobile, Integer scene, String createIp) { | ||||
|         SmsSceneEnum sceneEnum = SmsSceneEnum.getCodeByScene(scene); | ||||
|         Assert.notNull(sceneEnum, "验证码场景({}) 查找不到配置", scene); | ||||
|     public void sendSmsCode(SmsCodeSendReqDTO reqDTO) { | ||||
|         SmsSceneEnum sceneEnum = SmsSceneEnum.getCodeByScene(reqDTO.getScene()); | ||||
|         Assert.notNull(sceneEnum, "验证码场景({}) 查找不到配置", reqDTO.getScene()); | ||||
|         // 创建验证码 | ||||
|         String code = createSmsCode(mobile, scene, createIp); | ||||
|         String code = createSmsCode(reqDTO.getMobile(), reqDTO.getScene(), reqDTO.getCreateIp()); | ||||
|         // 发送验证码 | ||||
|         smsSendService.sendSingleSms(mobile, null, null, | ||||
|         smsSendService.sendSingleSms(reqDTO.getMobile(), null, null, | ||||
|                 sceneEnum.getTemplateCode(), MapUtil.of("code", code)); | ||||
|     } | ||||
|  | ||||
| @@ -77,17 +80,17 @@ public class SmsCodeServiceImpl implements SmsCodeService { | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void useSmsCode(String mobile, Integer scene, String code, String usedIp) { | ||||
|     public void useSmsCode(SmsCodeUseReqDTO reqDTO) { | ||||
|         // 检测验证码是否有效 | ||||
|         SmsCodeDO lastSmsCode = this.checkSmsCode0(mobile, code, scene); | ||||
|         SmsCodeDO lastSmsCode = this.checkSmsCode0(reqDTO.getMobile(), reqDTO.getCode(), reqDTO.getScene()); | ||||
|         // 使用验证码 | ||||
|         smsCodeMapper.updateById(SmsCodeDO.builder().id(lastSmsCode.getId()) | ||||
|                 .used(true).usedTime(new Date()).usedIp(usedIp).build()); | ||||
|                 .used(true).usedTime(new Date()).usedIp(reqDTO.getUsedIp()).build()); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void checkSmsCode(String mobile, String code, Integer scene) { | ||||
|         checkSmsCode0(mobile, code, scene); | ||||
|     public void checkSmsCode(SmsCodeCheckReqDTO reqDTO) { | ||||
|         checkSmsCode0(reqDTO.getMobile(), reqDTO.getCode(), reqDTO.getScene()); | ||||
|     } | ||||
|  | ||||
|     public SmsCodeDO checkSmsCode0(String mobile, String code, Integer scene) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV