mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-30 09:48:43 +08:00 
			
		
		
		
	fix:短信验证码的每日发送条数不正确
This commit is contained in:
		| @@ -158,7 +158,7 @@ ps:核心功能已经实现,正在对接微信小程序中... | |||||||
|  |  | ||||||
| | 框架                                                                                         | 说明                   | 版本      | 学习指南                                                           | | | 框架                                                                                         | 说明                   | 版本      | 学习指南                                                           | | ||||||
| |---------------------------------------------------------------------------------------------|-----------------------|-----------|----------------------------------------------------------------| | |---------------------------------------------------------------------------------------------|-----------------------|-----------|----------------------------------------------------------------| | ||||||
| | [Spring Boot](https://spring.io/projects/spring-boot)                                       | 应用开发框架             | 2.6.9    | [文档](https://github.com/YunaiV/SpringBoot-Labs)                | | | [Spring Boot](https://spring.io/projects/spring-boot)                                       | 应用开发框架             | 2.6.10    | [文档](https://github.com/YunaiV/SpringBoot-Labs)                | | ||||||
| | [MySQL](https://www.mysql.com/cn/)                                                          | 数据库服务器             | 5.7      |                                                                | | | [MySQL](https://www.mysql.com/cn/)                                                          | 数据库服务器             | 5.7      |                                                                | | ||||||
| | [Druid](https://github.com/alibaba/druid)                                                   | JDBC 连接池、监控组件     | 1.2.11    | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) | | | [Druid](https://github.com/alibaba/druid)                                                   | JDBC 连接池、监控组件     | 1.2.11    | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) | | ||||||
| | [MyBatis Plus](https://mp.baomidou.com/)                                                    | MyBatis 增强工具包       | 3.5.2    | [文档](http://www.iocoder.cn/Spring-Boot/MyBatis/?yudao)         | | | [MyBatis Plus](https://mp.baomidou.com/)                                                    | MyBatis 增强工具包       | 3.5.2    | [文档](http://www.iocoder.cn/Spring-Boot/MyBatis/?yudao)         | | ||||||
|   | |||||||
| @@ -1,5 +1,7 @@ | |||||||
| package cn.iocoder.yudao.framework.common.util.date; | package cn.iocoder.yudao.framework.common.util.date; | ||||||
|  |  | ||||||
|  | import cn.hutool.core.date.DateUtil; | ||||||
|  |  | ||||||
| import java.time.Duration; | import java.time.Duration; | ||||||
| import java.util.Calendar; | import java.util.Calendar; | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
| @@ -120,4 +122,17 @@ public class DateUtils { | |||||||
|         return c.getTime(); |         return c.getTime(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 是否今天 | ||||||
|  |      * | ||||||
|  |      * @param date 日期 | ||||||
|  |      * @return 是否 | ||||||
|  |      */ | ||||||
|  |     public static boolean isToday(Date date) { | ||||||
|  |         if (date == null) { | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  |         return DateUtil.isSameDay(date, new Date()); | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.service.sms; | |||||||
| import cn.hutool.core.lang.Assert; | import cn.hutool.core.lang.Assert; | ||||||
| import cn.hutool.core.map.MapUtil; | import cn.hutool.core.map.MapUtil; | ||||||
| import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; | import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; | ||||||
|  | import cn.iocoder.yudao.framework.common.util.date.DateUtils; | ||||||
| import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeCheckReqDTO; | import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeCheckReqDTO; | ||||||
| import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeSendReqDTO; | import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeSendReqDTO; | ||||||
| import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeUseReqDTO; | import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeUseReqDTO; | ||||||
| @@ -52,21 +53,22 @@ public class SmsCodeServiceImpl implements SmsCodeService { | |||||||
|         // 校验是否可以发送验证码,不用筛选场景 |         // 校验是否可以发送验证码,不用筛选场景 | ||||||
|         SmsCodeDO lastSmsCode = smsCodeMapper.selectLastByMobile(mobile, null,null); |         SmsCodeDO lastSmsCode = smsCodeMapper.selectLastByMobile(mobile, null,null); | ||||||
|         if (lastSmsCode != null) { |         if (lastSmsCode != null) { | ||||||
|             if (lastSmsCode.getTodayIndex() >= smsCodeProperties.getSendMaximumQuantityPerDay()) { // 超过当天发送的上限。 |  | ||||||
|                 throw ServiceExceptionUtil.exception(SMS_CODE_EXCEED_SEND_MAXIMUM_QUANTITY_PER_DAY); |  | ||||||
|             } |  | ||||||
|             if (System.currentTimeMillis() - lastSmsCode.getCreateTime().getTime() |             if (System.currentTimeMillis() - lastSmsCode.getCreateTime().getTime() | ||||||
|                     < smsCodeProperties.getSendFrequency().toMillis()) { // 发送过于频繁 |                     < smsCodeProperties.getSendFrequency().toMillis()) { // 发送过于频繁 | ||||||
|                 throw ServiceExceptionUtil.exception(SMS_CODE_SEND_TOO_FAST); |                 throw ServiceExceptionUtil.exception(SMS_CODE_SEND_TOO_FAST); | ||||||
|             } |             } | ||||||
|  |             if (DateUtils.isToday(lastSmsCode.getCreateTime()) && // 必须是今天,才能计算超过当天的上限 | ||||||
|  |                     lastSmsCode.getTodayIndex() >= smsCodeProperties.getSendMaximumQuantityPerDay()) { // 超过当天发送的上限。 | ||||||
|  |                 throw ServiceExceptionUtil.exception(SMS_CODE_EXCEED_SEND_MAXIMUM_QUANTITY_PER_DAY); | ||||||
|  |             } | ||||||
|             // TODO 芋艿:提升,每个 IP 每天可发送数量 |             // TODO 芋艿:提升,每个 IP 每天可发送数量 | ||||||
|             // TODO 芋艿:提升,每个 IP 每小时可发送数量 |             // TODO 芋艿:提升,每个 IP 每小时可发送数量 | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         // 创建验证码记录 |         // 创建验证码记录 | ||||||
|         String code = String.valueOf(randomInt(smsCodeProperties.getBeginCode(), smsCodeProperties.getEndCode() + 1)); |         String code = String.valueOf(randomInt(smsCodeProperties.getBeginCode(), smsCodeProperties.getEndCode() + 1)); | ||||||
|         SmsCodeDO newSmsCode = SmsCodeDO.builder().mobile(mobile).code(code) |         SmsCodeDO newSmsCode = SmsCodeDO.builder().mobile(mobile).code(code).scene(scene) | ||||||
|                 .scene(scene).todayIndex(lastSmsCode != null ? lastSmsCode.getTodayIndex() + 1 : 1) |                 .todayIndex(lastSmsCode != null && DateUtils.isToday(lastSmsCode.getCreateTime()) ? lastSmsCode.getTodayIndex() + 1 : 1) | ||||||
|                 .createIp(ip).used(false).build(); |                 .createIp(ip).used(false).build(); | ||||||
|         smsCodeMapper.insert(newSmsCode); |         smsCodeMapper.insert(newSmsCode); | ||||||
|         return code; |         return code; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV