|
@@ -65,58 +65,56 @@ public class SmsServiceImpl implements SmsService {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void sendSmsCode(String phone, String code) {
|
|
public void sendSmsCode(String phone, String code) {
|
|
- {
|
|
|
|
|
|
|
|
- boolean virtualEnable = PropertyHolder.getBoolean("sms.smsCode.virtual.enable", false);
|
|
|
|
|
|
+ boolean virtualEnable = PropertyHolder.getBoolean("sms.smsCode.virtual.enable", false);
|
|
|
|
|
|
- if (virtualEnable) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
|
|
+ if (virtualEnable) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
|
|
- String key = "$_SMS:" + phone;
|
|
|
|
- ShortMessageInfo sm = redisClient.get(key, ShortMessageInfo.class);
|
|
|
|
- if (null != sm) {
|
|
|
|
- Date creationTime = sm.getCreationTime();
|
|
|
|
- boolean sameDay = DateUtil.isSameDay(creationTime, new Date());
|
|
|
|
- if (!sameDay) {
|
|
|
|
- sm = null;
|
|
|
|
- }
|
|
|
|
|
|
+ String key = "$_SMS:" + phone;
|
|
|
|
+ ShortMessageInfo sm = redisClient.get(key, ShortMessageInfo.class);
|
|
|
|
+ if (null != sm) {
|
|
|
|
+ Date creationTime = sm.getCreationTime();
|
|
|
|
+ boolean sameDay = DateUtil.isSameDay(creationTime, new Date());
|
|
|
|
+ if (!sameDay) {
|
|
|
|
+ sm = null;
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
|
|
- Date now = new Date();
|
|
|
|
|
|
+ Date now = new Date();
|
|
|
|
|
|
- if (null == sm) {
|
|
|
|
- sm = new ShortMessageInfo();
|
|
|
|
- sm.setCreationTime(now);
|
|
|
|
- sm.setPhone(phone);
|
|
|
|
- sm.setTimes(0);
|
|
|
|
|
|
+ if (null == sm) {
|
|
|
|
+ sm = new ShortMessageInfo();
|
|
|
|
+ sm.setCreationTime(now);
|
|
|
|
+ sm.setPhone(phone);
|
|
|
|
+ sm.setTimes(0);
|
|
|
|
+ } else {
|
|
|
|
+ List<Date> sendTimeList = sm.getSendTimeList();
|
|
|
|
+
|
|
|
|
+ if (10 <= sendTimeList.size()) {
|
|
|
|
+ throw new StatusException("101000", "一天内发送次数超过10次");
|
|
|
|
+ } else if (5 <= sendTimeList.size()) {
|
|
|
|
+ Date d = sendTimeList.get(sendTimeList.size() - 5);
|
|
|
|
+ if (now.getTime() - d.getTime() < 1000 * 60 * 60) {
|
|
|
|
+ throw new StatusException("101000", "一小时内发送次数超过5次");
|
|
|
|
+ }
|
|
} else {
|
|
} else {
|
|
- List<Date> sendTimeList = sm.getSendTimeList();
|
|
|
|
-
|
|
|
|
- if (10 <= sendTimeList.size()) {
|
|
|
|
- throw new StatusException("101000", "一天内发送次数超过10次");
|
|
|
|
- } else if (5 <= sendTimeList.size()) {
|
|
|
|
- Date d = sendTimeList.get(sendTimeList.size() - 5);
|
|
|
|
- if (now.getTime() - d.getTime() < 1000 * 60 * 60) {
|
|
|
|
- throw new StatusException("101000", "一小时内发送次数超过5次");
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- Date d = sendTimeList.get(sendTimeList.size() - 1);
|
|
|
|
- if (now.getTime() - d.getTime() < 1000 * 60) {
|
|
|
|
- throw new StatusException("101000", "一分钟内发送次数超过1次");
|
|
|
|
- }
|
|
|
|
|
|
+ Date d = sendTimeList.get(sendTimeList.size() - 1);
|
|
|
|
+ if (now.getTime() - d.getTime() < 1000 * 60) {
|
|
|
|
+ throw new StatusException("101000", "一分钟内发送次数超过1次");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- Map<String, String> params = Maps.newHashMap();
|
|
|
|
- params.put("code", code);
|
|
|
|
- this.sendSms(YZM_SMS_ASSEMBLY_CODE, Arrays.asList(new String[]{phone}), params);
|
|
|
|
|
|
+ }
|
|
|
|
+ Map<String, String> params = Maps.newHashMap();
|
|
|
|
+ params.put("code", code);
|
|
|
|
+ this.sendSms(YZM_SMS_ASSEMBLY_CODE, Arrays.asList(new String[]{phone}), params);
|
|
|
|
|
|
- sm.getSendTimeList().add(now);
|
|
|
|
- sm.setTimes(sm.getSendTimeList().size());
|
|
|
|
- sm.setLastMessage(code);
|
|
|
|
|
|
+ sm.getSendTimeList().add(now);
|
|
|
|
+ sm.setTimes(sm.getSendTimeList().size());
|
|
|
|
+ sm.setLastMessage(code);
|
|
|
|
|
|
- redisClient.set(key, sm, 60 * 60 * 24);
|
|
|
|
- }
|
|
|
|
|
|
+ redisClient.set(key, sm, 60 * 60 * 24);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|