admin
2019-04-12 176a83fedd71847a088bafb541b9a8877d6234b7
fanli/src/main/java/com/yeshi/fanli/controller/client/SMSController.java
@@ -7,16 +7,19 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.JsonUtil;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode;
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode.ForbiddenUserIdentifyCodeTypeEnum;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.exception.SMSException;
import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService;
import com.yeshi.fanli.service.inter.user.SMSService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
import org.yeshi.utils.JsonUtil;
@Controller
@RequestMapping("api/v1/sms")
@@ -30,6 +33,9 @@
   @Resource
   private UserInfoService userInfoService;
   @Resource
   private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
   // 发送短信
@@ -57,12 +63,120 @@
            out.print(JsonUtil.loadFalseResult(4, "电话号码格式不正确"));
            return;
         }
         String msg = smsService.sendLoginVCode(phone);
         smsService.sendLoginVCode(phone, 6);
         out.print(JsonUtil.loadTrueResult("发送成功"));
      } catch (SMSException e) {
         out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
      }
   }
   /**
    * 1.5.3  登录发送短信
    * @param acceptData
    * @param phone
    * @param uid
    * @param out
    */
   @RequestMapping(value = "sendMSMLogin", method = RequestMethod.POST)
   public void sendMSMLogin(AcceptData acceptData, String phone, boolean slideVerify, PrintWriter out) {
      if (phone == null || !StringUtil.isMobile(phone.replaceAll(" ", ""))) {
         out.print(JsonUtil.loadFalseResult(1, "手机号输入有误,请修改"));
         return;
      }
      phone = phone.replaceAll(" ", "");
      sendMSNnew(phone,slideVerify, 1, StringUtil.Md5(phone + "-" + acceptData.getDevice()), out);
   }
   /**
    * 1.5.3 绑定发送短信
    * @param acceptData
    * @param phone
    * @param uid
    * @param out
    */
   @RequestMapping(value = "sendMSMBind", method = RequestMethod.POST)
   public void sendMSMBind(AcceptData acceptData, String phone, boolean slideVerify, PrintWriter out) {
      if (phone == null || !StringUtil.isMobile(phone.replaceAll(" ", ""))) {
         out.print(JsonUtil.loadFalseResult(1, "手机号输入有误,请修改"));
         return;
      }
      phone = phone.replaceAll(" ", "");
      // 判断手机号码是否被封禁
      ForbiddenUserIdentifyCode identifyCode1 = forbiddenUserIdentifyCodeService
            .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, phone);
      if (identifyCode1 != null && identifyCode1.getEffective() != null && identifyCode1.getEffective()) {
         out.print(JsonUtil.loadFalseResult(9001,"该电话号码被占用"));
         return;
      }
      // 判断手机号码是否被封禁
      UserInfo phoneUser = userInfoService.getEffectiveUserInfoByPhone(phone);
      if (phoneUser != null) {
         out.print(JsonUtil.loadFalseResult(9001,"该电话号码被占用"));
         return;
      }
      sendMSNnew(phone,slideVerify, 2, StringUtil.Md5(phone + "-" + acceptData.getDevice()), out);
   }
   @RequestSerializableByKey(key = "key")
   public void sendMSNnew(String phone, boolean slideVerify, int type, String key, PrintWriter out) {
      try {
         int count = 0;
         String cachekey = null;
         if (type == 1) {
            // 登录验证码
            cachekey = "sendMSNLoginCount" + phone;
         } else if (type == 2) {
            // 绑定验证码
            cachekey = "sendMSNBindCount" + phone;
         }
         if (cachekey == null) {
            out.print(JsonUtil.loadFalseResult(1,"发送失败"));
            return;
         }
         String cacheValue = redisManager.getCommonString(cachekey);
         if (!StringUtil.isNullOrEmpty(cacheValue)) {
            count = Integer.parseInt(cacheValue);
            // 限制3次
            if (count >= 3) {
               out.print(JsonUtil.loadFalseResult(3,"验证码次数超限,请稍后再试"));
               return;
            }
         }
         if (count == 2 && !slideVerify) {
            out.print(JsonUtil.loadFalseResult(2,"需要滑动验证"));
            return;
         }
         // 缓存一个小时
         count ++;
         redisManager.cacheCommonString(cachekey, count + "", 60 * 60);
         if (type == 1) {
            // 登录验证码
            smsService.sendLoginVCode(phone, 4);
         } else if (type == 2) {
            // 绑定验证码
            smsService.sendBindVCode(phone, 4);
         }
         out.print(JsonUtil.loadTrueResult("发送成功"));
      } catch (SMSException e) {
         out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
      } catch (Exception e) {
         out.print(JsonUtil.loadFalseResult(1, "发送失败"));
         e.printStackTrace();
      }
   }
}