| package com.matrix.system.shopXcx.api.action; | 
|   | 
| import com.matrix.component.rabbitmq.RabiitMqTemplate; | 
| import com.matrix.component.redis.RedisUserLoginUtils; | 
| import com.matrix.component.tools.AES; | 
| import com.matrix.core.pojo.AjaxResult; | 
| import com.matrix.core.tools.LogUtil; | 
| import com.matrix.core.tools.StringUtils; | 
| import com.matrix.system.hive.bean.SysVipInfo; | 
| import com.matrix.system.hive.dao.SysVipInfoDao; | 
| import com.matrix.system.shopXcx.api.pojo.BindingPhoneNumberPOJO; | 
| import com.matrix.system.shopXcx.api.tools.SMSVerifiTools; | 
| import com.matrix.system.shopXcx.api.vo.DataDecipheringVo; | 
| import org.apache.commons.collections.CollectionUtils; | 
| import org.apache.commons.lang.RandomStringUtils; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.beans.factory.annotation.Value; | 
| import org.springframework.stereotype.Controller; | 
| import org.springframework.web.bind.annotation.*; | 
|   | 
| import javax.servlet.http.HttpServletRequest; | 
| import javax.servlet.http.HttpServletResponse; | 
| import java.util.List; | 
|   | 
| /** | 
|  * @author jiangyouyao | 
|  * @description 绑定手机号 | 
|  * @date 2019-07-17 10:15 | 
|  */ | 
| @CrossOrigin(origins = "*", maxAge = 3600) | 
| @Controller | 
| @RequestMapping(value = "wxapi/shopBindingPhoneNumber") | 
| public class WxBindingPhoneNumber { | 
|     @Autowired | 
|     private SMSVerifiTools sMSVerifiTools; | 
|     @Autowired | 
|     private SysVipInfoDao sysVipInfoDao; | 
|   | 
|     @Autowired | 
|     private RedisUserLoginUtils redisUserLoginUtils; | 
|   | 
|     @Autowired | 
|     private RabiitMqTemplate mqTemplate; | 
|   | 
|     @Value("${evn}") | 
|     private String evn; | 
|   | 
|     /** | 
|      * 获取手机验证码 | 
|      * | 
|      * @param | 
|      * @return | 
|      */ | 
|     @PostMapping("/getPhonVerifyCode/{phoneNumber}") | 
|     @ResponseBody | 
|     public AjaxResult getPhonVerifyCode(HttpServletRequest request, HttpServletResponse response, @PathVariable("phoneNumber") String phoneNumber) { | 
|         //首先判断该手机号是否被绑定过 | 
|         if (StringUtils.isBlank(phoneNumber)) { | 
|             return new AjaxResult(AjaxResult.STATUS_FAIL, "手机号码不能为空"); | 
|         } | 
|         SysVipInfo sysVipInfo = new SysVipInfo(); | 
|         sysVipInfo.setPhone(phoneNumber); | 
|         List<SysVipInfo> bizUsers = sysVipInfoDao.selectByModel(sysVipInfo); | 
|         if (CollectionUtils.isNotEmpty(bizUsers) && bizUsers.size() > 0) { | 
|             return new AjaxResult(AjaxResult.STATUS_FAIL, "该手机号已被绑定"); | 
|         } | 
|         //生成短信验证码 | 
|         String randomCode = RandomStringUtils.randomNumeric(4); | 
|         //将短信验证码保存到redis中,设置30分钟失效 | 
|         //TODO 修复这个功能 | 
|         //redisClient.saveValue("phonVerifyCode" + phoneNumber, randomCode, 1800); | 
|   | 
|         try { | 
|             //编辑短信内容 | 
|             String msg = "您的验证码为:" + randomCode + ",该验证码仅用于身份验证,30分钟内有效,请勿泄露于他人。"; | 
|             //调用工具类发送短信发送短信码 | 
|             sMSVerifiTools.sendMsg(phoneNumber, msg); | 
|             LogUtil.info("调用了短信接口"); | 
|         } catch (Exception e) { | 
|             LogUtil.info("手机验证码发送失败。。。", e); | 
|             return new AjaxResult(AjaxResult.STATUS_FAIL, "手机验证码发送失败"); | 
|         } | 
|         AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, "手机验证码发送成功"); | 
|         return result; | 
|     } | 
|   | 
|   | 
|     /** | 
|      * @param bindingPhoneNumber | 
|      * @return 返回类型 AjaxResult | 
|      *  绑定手机号码 | 
|      * @author:jiangyouyao | 
|      */ | 
|     @PostMapping("/bindingPhoneNumber") | 
|     @ResponseBody | 
|     public AjaxResult bindingPhoneNumber(@RequestBody BindingPhoneNumberPOJO bindingPhoneNumber) { | 
|         if (StringUtils.isBlank(bindingPhoneNumber.getPhoneNumber())) { | 
|             return new AjaxResult(AjaxResult.STATUS_FAIL, "手机号码不能为空"); | 
|         } | 
|         //验证通过将手机号加入相应的用户数据中 | 
|         SysVipInfo sysVipInfo = new SysVipInfo(); | 
|         SysVipInfo loginUser = redisUserLoginUtils.getLoginUser(SysVipInfo.class); | 
|         sysVipInfo.setId(loginUser.getId()); | 
|         if(loginUser.getShopId()==null){ | 
|             sysVipInfo.setShopId(bindingPhoneNumber.getShopId()); | 
|         } | 
|         sysVipInfo.setPhone(bindingPhoneNumber.getPhoneNumber()); | 
|         sysVipInfoDao.update(sysVipInfo); | 
|         return new AjaxResult(AjaxResult.STATUS_SUCCESS, "绑定成功"); | 
|     } | 
|   | 
|   | 
|   | 
|     /** | 
|      * 手机号码解密 | 
|      * | 
|      * @param dataDecipheringVo | 
|      * @return | 
|      * @author JIANGYOUYAO | 
|      * @email 935090232@qq.com | 
|      * @date 2018年8月28日 | 
|      */ | 
|     @RequestMapping(value = "/deciphering") | 
|     public @ResponseBody | 
|     AjaxResult deciphering(@RequestBody DataDecipheringVo dataDecipheringVo) { | 
|         SysVipInfo loginUser = redisUserLoginUtils.getLoginUser(SysVipInfo.class); | 
|         String session_key = loginUser.getSessionKey(); | 
|         LogUtil.debug(dataDecipheringVo.toString()); | 
|         String jsonResult = AES.wxDecrypt(dataDecipheringVo.getEncryptedData(), session_key, dataDecipheringVo.getIv()); | 
|         AjaxResult result = new AjaxResult(); | 
|         result.setStatus(AjaxResult.STATUS_SUCCESS); | 
|         result.putInMap("decipher", jsonResult); | 
|         return result; | 
|     } | 
|   | 
|   | 
| } |