| | |
| | | package com.yeshi.fanli.controller.client.v1;
|
| | |
|
| | | import java.io.PrintWriter;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | 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.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;
|
| | |
|
| | | @Controller
|
| | | @RequestMapping("api/v1/sms")
|
| | | public class SMSController {
|
| | |
|
| | | @Resource
|
| | | private SMSService smsService;
|
| | |
|
| | | @Resource
|
| | | private RedisManager redisManager;
|
| | |
|
| | | @Resource
|
| | | private UserInfoService userInfoService;
|
| | | |
| | | @Resource
|
| | | private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
|
| | |
|
| | | // 发送短信
|
| | |
|
| | | @RequestMapping(value = "sendSMS", method = RequestMethod.POST)
|
| | | public void sendMSM(AcceptData acceptData, String phone, Long uid, Integer type, PrintWriter out) {
|
| | | sendMSM(acceptData, phone, uid, type, StringUtil.Md5(phone + "-" + "-" + uid + "-" + type), out);
|
| | | }
|
| | |
|
| | | @RequestSerializableByKey(key = "key")
|
| | | public void sendMSM(AcceptData acceptData, String phone, Long uid, Integer type, String key, PrintWriter out) {
|
| | | try {
|
| | | if (phone.contains("**") && uid != null && uid > 0) {
|
| | | UserInfo userInfo = userInfoService.getUserById(uid);
|
| | | if (userInfo == null) {
|
| | | out.print(JsonUtil.loadFalseResult(2, "用户不存在"));
|
| | | return;
|
| | | } else if (StringUtil.isNullOrEmpty(userInfo.getPhone())) {
|
| | | out.print(JsonUtil.loadFalseResult(3, "尚未绑定电话号码"));
|
| | | return;
|
| | | }
|
| | | phone = userInfo.getPhone();
|
| | | }
|
| | |
|
| | | if (!StringUtil.isMobile(phone)) {
|
| | | out.print(JsonUtil.loadFalseResult(4, "电话号码格式不正确"));
|
| | | return;
|
| | | }
|
| | | 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();
|
| | | }
|
| | | }
|
| | | }
|
| | | package com.yeshi.fanli.controller.client.v1; |
| | | |
| | | import java.io.PrintWriter; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import com.yeshi.fanli.entity.SystemEnum; |
| | | import com.yeshi.fanli.util.*; |
| | | 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.UserInfo; |
| | | import com.yeshi.fanli.exception.config.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.annotation.RequestSerializableByKey; |
| | | |
| | | @Controller |
| | | @RequestMapping("api/v1/sms") |
| | | public class SMSController { |
| | | |
| | | @Resource |
| | | private SMSService smsService; |
| | | |
| | | @Resource |
| | | private RedisManager redisManager; |
| | | |
| | | @Resource |
| | | private UserInfoService userInfoService; |
| | | |
| | | @Resource |
| | | private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService; |
| | | |
| | | // 发送短信 |
| | | |
| | | @RequestSerializableByKey(key = "#phone+'-'+#uid+'-'+#type") |
| | | @RequestMapping(value = "sendSMS", method = RequestMethod.POST) |
| | | public void sendMSM(AcceptData acceptData, String phone, Long uid, Integer type, PrintWriter out) { |
| | | if (Constant.IS_TEST) { |
| | | out.print(JsonUtil.loadTrueResult("发送成功")); |
| | | return; |
| | | } |
| | | sendMSM(acceptData, phone, uid, type, StringUtil.Md5(phone + "-" + "-" + uid + "-" + type), out); |
| | | } |
| | | |
| | | public void sendMSM(AcceptData acceptData, String phone, Long uid, Integer type, String key, PrintWriter out) { |
| | | try { |
| | | if (phone.contains("**") && uid != null && uid > 0) { |
| | | UserInfo userInfo = userInfoService.getUserById(uid); |
| | | if (userInfo == null) { |
| | | out.print(JsonUtil.loadFalseResult(2, "用户不存在")); |
| | | return; |
| | | } else if (StringUtil.isNullOrEmpty(userInfo.getPhone())) { |
| | | out.print(JsonUtil.loadFalseResult(3, "尚未绑定电话号码")); |
| | | return; |
| | | } |
| | | phone = userInfo.getPhone(); |
| | | } |
| | | |
| | | if (!StringUtil.isMobile(phone)) { |
| | | out.print(JsonUtil.loadFalseResult(4, "电话号码格式不正确")); |
| | | return; |
| | | } |
| | | smsService.sendLoginVCode(acceptData.getSystem(), 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 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(" ", ""); |
| | | |
| | | if (Constant.IS_TEST) { |
| | | out.print(JsonUtil.loadTrueResult("发送成功")); |
| | | return; |
| | | } |
| | | |
| | | sendMSNnew(acceptData.getSystem(), phone, slideVerify, 1, StringUtil.Md5(phone + "-" + acceptData.getDevice()), out); |
| | | } |
| | | |
| | | /** |
| | | * 1.5.3 绑定发送短信 |
| | | * |
| | | * @param acceptData |
| | | * @param phone |
| | | * @param uid |
| | | * @param out |
| | | */ |
| | | @RequestSerializableByKey(key = "#acceptData.device+'-'+#phone") |
| | | @RequestMapping(value = "sendMSMBind", method = RequestMethod.POST) |
| | | public void sendMSMBind(AcceptData acceptData, String phone, boolean slideVerify, Long uid, 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, SystemInfoUtil.getSystem(acceptData.getPlatform(), acceptData.getPackages())); |
| | | if (phoneUser != null && uid != null) { |
| | | out.print(JsonUtil.loadFalseResult(9001, "该电话号码被占用")); |
| | | return; |
| | | } |
| | | |
| | | if (Constant.IS_TEST) { |
| | | out.print(JsonUtil.loadTrueResult("发送成功")); |
| | | return; |
| | | } |
| | | |
| | | sendMSNnew(acceptData.getSystem(), phone, slideVerify, 2, StringUtil.Md5(phone + "-" + acceptData.getDevice()), out); |
| | | } |
| | | |
| | | public void sendMSNnew(SystemEnum system, String phone, boolean slideVerify, int type, String key, PrintWriter out) { |
| | | try { |
| | | int count = 0; |
| | | String cachekey = null; |
| | | if (type == 1) { |
| | | // 登录验证码 |
| | | cachekey = RedisKeyEnum.getRedisKey(RedisKeyEnum.SMSLoginCount, phone + ""); |
| | | } else if (type == 2) { |
| | | // 绑定验证码 |
| | | cachekey = RedisKeyEnum.getRedisKey(RedisKeyEnum.SMSBindCount, 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(system, phone, 4); |
| | | } else if (type == 2) { |
| | | // 绑定验证码 |
| | | smsService.sendBindVCode(system, 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(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 注销账户短信验证 |
| | | * |
| | | * @param acceptData |
| | | * @param uid |
| | | * @param phone |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "sendMSMRemove") |
| | | public void sendMSMRemove(String callback, AcceptData acceptData, Long uid, String phone, PrintWriter out) { |
| | | if (Constant.IS_TEST) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("发送成功")); |
| | | return; |
| | | } |
| | | |
| | | if (uid == null || uid <= 0) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "用户未登录")); |
| | | return; |
| | | } |
| | | |
| | | if (phone == null || !StringUtil.isMobile(phone.replaceAll(" ", ""))) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "请输入正确手机号")); |
| | | return; |
| | | } |
| | | phone = phone.replaceAll(" ", "").trim(); |
| | | |
| | | UserInfo userInfo = userInfoService.selectAvailableByPrimaryKey(uid); |
| | | if (userInfo == null) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "用户不存在")); |
| | | return; |
| | | } |
| | | |
| | | if (!phone.equals(userInfo.getPhone())) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "请输入正确手机号")); |
| | | return; |
| | | } |
| | | |
| | | try { |
| | | int count = 0; |
| | | String cachekey = RedisKeyEnum.getRedisKey(RedisKeyEnum.SMSBindRemove, phone + ""); |
| | | String cacheValue = redisManager.getCommonString(cachekey); |
| | | if (!StringUtil.isNullOrEmpty(cacheValue)) { |
| | | count = Integer.parseInt(cacheValue); |
| | | // 限制3次 |
| | | if (count >= 3) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "验证码次数超限,请稍后再试")); |
| | | return; |
| | | } |
| | | } |
| | | // 缓存一个小时 |
| | | count++; |
| | | redisManager.cacheCommonString(cachekey, count + "", 60 * 60); |
| | | // 发送验证码 |
| | | smsService.sendRemoveVCode(acceptData.getSystem(), phone, 4); |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("发送成功")); |
| | | } catch (SMSException e) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); |
| | | } catch (Exception e) { |
| | | JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "发送失败")); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 设备是否允许一键登录 |
| | | * |
| | | * @param acceptData |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "allowOneKeyLogin", method = RequestMethod.POST) |
| | | public void allowOneKeyLogin(AcceptData acceptData, PrintWriter out) { |
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.oneKeyLoginCount, StringUtil.Md5(StringUtil.isNullOrEmpty(acceptData.getUtdid()) ? acceptData.getDevice() : acceptData.getUtdid())); |
| | | //每天只能用10次 |
| | | String value = redisManager.getCommonString(key); |
| | | if (!StringUtil.isNullOrEmpty(value) && Integer.parseInt(value) >= 10) { |
| | | out.print(JsonUtil.loadFalseResult("一键登录每日只能用10次")); |
| | | return; |
| | | } |
| | | out.print(JsonUtil.loadTrueResult("")); |
| | | } |
| | | |
| | | } |