Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

Joburgess 5 gadi atpakaļ
vecāks
revīzija
223ef7b2cc

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMessageDao.java

@@ -11,6 +11,8 @@ import com.ym.mec.common.dal.BaseDAO;
 
 
 public interface SysMessageDao extends BaseDAO<Long, SysMessage> {
 public interface SysMessageDao extends BaseDAO<Long, SysMessage> {
 
 
+	public List<SysMessage> queryUserInRecentMinList(@Param("mobile") String mobile, @Param("recentMin") int recentMin, @Param("type") MessageSendMode type);
+
 	/**
 	/**
 	 * 根据状态查询最近N分钟的记录
 	 * 根据状态查询最近N分钟的记录
 	 * @param status 状态值
 	 * @param status 状态值

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -80,6 +80,11 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
      * 可更新学生签到状态时间限制,课程结束后{}分钟
      * 可更新学生签到状态时间限制,课程结束后{}分钟
      */
      */
     String ENABLE_STUDENT_ATTENDANCE_TIME_RANGE = "enable_student_attendance_time_range";
     String ENABLE_STUDENT_ATTENDANCE_TIME_RANGE = "enable_student_attendance_time_range";
+    
+    /**
+     * 十分钟内最大可发送的短信次数
+     */
+    String SMS_MAX_TIMES = "sms_max_times";
 
 
     /**
     /**
      * @return com.ym.mec.biz.dal.entity.SysConfig
      * @return com.ym.mec.biz.dal.entity.SysConfig

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service;
 package com.ym.mec.biz.service;
 
 
 import java.util.Date;
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.Set;
 import java.util.Set;
 
 
@@ -117,5 +118,7 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * 修改单条消息状态
 	 * 修改单条消息状态
 	 */
 	 */
 	public int updateOneStatus(Long id, int status);
 	public int updateOneStatus(Long id, int status);
+	
+	public List<SysMessage> queryUserInRecentMinList(String mobile, int recentMin, MessageSendMode type);
 
 
 }
 }

+ 26 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SmsCodeServiceImpl.java

@@ -1,15 +1,22 @@
 package com.ym.mec.biz.service.impl;
 package com.ym.mec.biz.service.impl;
 
 
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.SysConfig;
+import com.ym.mec.biz.dal.entity.SysMessage;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.service.SmsCodeService;
 import com.ym.mec.biz.service.SmsCodeService;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.biz.service.SysMessageService;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 
 
 @Service
 @Service
 public class SmsCodeServiceImpl implements SmsCodeService {
 public class SmsCodeServiceImpl implements SmsCodeService {
@@ -18,24 +25,36 @@ public class SmsCodeServiceImpl implements SmsCodeService {
 	private SysMessageService sysMessageService;
 	private SysMessageService sysMessageService;
 	@Autowired
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
 	private SysUserFeignService sysUserFeignService;
+	@Autowired
+	private SysConfigService sysConfigService;
 
 
 	@Override
 	@Override
 	public boolean verifyValidCode(String mobile, String authCode) {
 	public boolean verifyValidCode(String mobile, String authCode) {
 		String verifyCode = sysMessageService.getSendedVerificationCode(MessageTypeEnum.SMS_VERIFY_CODE_LOGIN, mobile);
 		String verifyCode = sysMessageService.getSendedVerificationCode(MessageTypeEnum.SMS_VERIFY_CODE_LOGIN, mobile);
-		if(StringUtils.isNoneEmpty(verifyCode) && StringUtils.equalsIgnoreCase(verifyCode,authCode)){
+		if (StringUtils.isNoneEmpty(verifyCode) && StringUtils.equalsIgnoreCase(verifyCode, authCode)) {
 			return true;
 			return true;
 		}
 		}
 		return false;
 		return false;
 	}
 	}
 
 
 	@Override
 	@Override
-	public boolean sendValidCode(String mobile){
+	public boolean sendValidCode(String mobile) {
 		SysUser sysUser = sysUserFeignService.queryUserByMobile(mobile);
 		SysUser sysUser = sysUserFeignService.queryUserByMobile(mobile);
 		Integer userId = null;
 		Integer userId = null;
-		if(sysUser != null){
+		if (sysUser != null) {
 			userId = sysUser.getId();
 			userId = sysUser.getId();
 		}
 		}
-		sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.YIMEI,userId, MessageTypeEnum.SMS_VERIFY_CODE_LOGIN,mobile);
+		SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.SMS_MAX_TIMES);
+		int times = 3;
+		if (sysConfig != null) {
+			times = Integer.parseInt(sysConfig.getParanValue());
+		}
+		// 十分钟内只能发3条
+		List<SysMessage> list = sysMessageService.queryUserInRecentMinList(mobile, 10, MessageSendMode.SMS);
+		if (list != null && list.size() >= times) {
+			throw new BizException("对不起,您发送太频繁请稍后重试!");
+		}
+		sysMessageService.sendSecurityCode(MessageSenderPluginContext.MessageSender.YIMEI, userId, MessageTypeEnum.SMS_VERIFY_CODE_LOGIN, mobile);
 		return true;
 		return true;
 	}
 	}
 
 

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java

@@ -18,6 +18,7 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.string.MessageFormatter;
 import com.ym.mec.util.string.MessageFormatter;
+
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
@@ -375,4 +376,9 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	public int updateOneStatus(Long id, int status) {
 	public int updateOneStatus(Long id, int status) {
 		return sysMessageDao.updateOneStatus(id, status);
 		return sysMessageDao.updateOneStatus(id, status);
 	}
 	}
+
+	@Override
+	public List<SysMessage> queryUserInRecentMinList(String mobile, int recentMin, MessageSendMode type) {
+		return sysMessageDao.queryUserInRecentMinList(mobile, recentMin, type);
+	}
 }
 }

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/SysMessageMapper.xml

@@ -178,4 +178,10 @@
 		</if>
 		</if>
 		group by group_
 		group by group_
 	</select>
 	</select>
+
+	<select id="queryUserInRecentMinList" resultMap="message" parameterType="map">
+		select *
+		from sys_message where receiver_ = #{mobile} and type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} and <![CDATA[DATE_ADD(send_time_,
+		INTERVAL #{recentMin} MINUTE) >= now()]]>
+	</select>
 </mapper>
 </mapper>