| | |
| | | package com.java110.front.smo.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.java110.core.factory.SendSmsFactory; |
| | | import com.java110.core.factory.TencentSendMessageFactory; |
| | | import com.java110.utils.cache.CommonCache; |
| | | import com.java110.utils.cache.MappingCache; |
| | | import com.java110.utils.constant.ServiceConstant; |
| | |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | /** |
| | | * |
| | | * 用户注册业务处理类 |
| | | * |
| | | * <p> |
| | | * Created by wuxw on 2019/3/23. |
| | | */ |
| | | @Service("registerServiceSMOImpl") |
| | |
| | | |
| | | @Autowired |
| | | private RestTemplate restTemplate; |
| | | |
| | | @Override |
| | | public ResponseEntity<String> doRegister(IPageData pd) { |
| | | ResponseEntity<String> responseEntity = null; |
| | | |
| | | Assert.jsonObjectHaveKey(pd.getReqData(),"username","请求报文格式错误或未包含用户名信息"); |
| | | Assert.jsonObjectHaveKey(pd.getReqData(),"passwd","请求报文格式错误或未包含密码信息"); |
| | | Assert.jsonObjectHaveKey(pd.getReqData(),"repasswd","请求报文格式错误或未包含确认密码信息"); |
| | | Assert.jsonObjectHaveKey(pd.getReqData(),"tel","请求报文格式错误或未包含手机信息信息"); |
| | | Assert.jsonObjectHaveKey(pd.getReqData(), "username", "请求报文格式错误或未包含用户名信息"); |
| | | Assert.jsonObjectHaveKey(pd.getReqData(), "passwd", "请求报文格式错误或未包含密码信息"); |
| | | Assert.jsonObjectHaveKey(pd.getReqData(), "repasswd", "请求报文格式错误或未包含确认密码信息"); |
| | | Assert.jsonObjectHaveKey(pd.getReqData(), "tel", "请求报文格式错误或未包含手机信息信息"); |
| | | JSONObject registerInfo = JSONObject.parseObject(pd.getReqData()); |
| | | |
| | | //校验密码 |
| | | if(!registerInfo.getString("passwd").equals(registerInfo.getString("repasswd"))){ |
| | | responseEntity = new ResponseEntity<String>("密码和确认密码不一致",HttpStatus.INTERNAL_SERVER_ERROR); |
| | | if (!registerInfo.getString("passwd").equals(registerInfo.getString("repasswd"))) { |
| | | responseEntity = new ResponseEntity<String>("密码和确认密码不一致", HttpStatus.INTERNAL_SERVER_ERROR); |
| | | return responseEntity; |
| | | } |
| | | |
| | | //调用 手机验证码 |
| | | responseEntity = this.invokeComponent("validate-tel","validate",pd); |
| | | if(responseEntity.getStatusCode() != HttpStatus.OK){ |
| | | responseEntity = this.invokeComponent("validate-tel", "validate", pd); |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | return responseEntity; |
| | | } |
| | | |
| | | responseEntity = this.checkNameAndTelExists(pd,registerInfo.getString("username"),""); |
| | | if(responseEntity.getStatusCode()!=HttpStatus.OK){ |
| | | responseEntity = this.checkNameAndTelExists(pd, registerInfo.getString("username"), ""); |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | return responseEntity; |
| | | } |
| | | |
| | | responseEntity = this.checkNameAndTelExists(pd,"",registerInfo.getString("tel")); |
| | | if(responseEntity.getStatusCode()!=HttpStatus.OK){ |
| | | responseEntity = this.checkNameAndTelExists(pd, "", registerInfo.getString("tel")); |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | return responseEntity; |
| | | } |
| | | |
| | | |
| | | registerInfo.put("passwd", AuthenticationFactory.passwdMd5(registerInfo.getString("passwd"))); |
| | | |
| | | registerInfo.put("name",registerInfo.getString("username")); |
| | | registerInfo.put("password",registerInfo.getString("passwd")); |
| | | responseEntity = this.callCenterService(restTemplate,pd,registerInfo.toJSONString(), ServiceConstant.SERVICE_API_URL+"/api/user.service.register", HttpMethod.POST); |
| | | registerInfo.put("name", registerInfo.getString("username")); |
| | | registerInfo.put("password", registerInfo.getString("passwd")); |
| | | responseEntity = this.callCenterService(restTemplate, pd, registerInfo.toJSONString(), ServiceConstant.SERVICE_API_URL + "/api/user.service.register", HttpMethod.POST); |
| | | return responseEntity; |
| | | } |
| | | |
| | | private ResponseEntity<String> checkNameAndTelExists(IPageData pd,String name,String tel){ |
| | | private ResponseEntity<String> checkNameAndTelExists(IPageData pd, String name, String tel) { |
| | | ResponseEntity<String> responseEntity = null; |
| | | //校验用户名或手机是否存在 |
| | | responseEntity = this.callCenterService(restTemplate,pd,"", |
| | | ServiceConstant.SERVICE_API_URL+"/api/check.hasUser.byNameOrTel?name="+name+"&tel="+tel, |
| | | responseEntity = this.callCenterService(restTemplate, pd, "", |
| | | ServiceConstant.SERVICE_API_URL + "/api/check.hasUser.byNameOrTel?name=" + name + "&tel=" + tel, |
| | | HttpMethod.GET); |
| | | |
| | | if(responseEntity.getStatusCode()!=HttpStatus.OK){ |
| | | logger.error("调用后端服务异常:{}",responseEntity); |
| | | return new ResponseEntity<String>("调用中心服务异常",HttpStatus.INTERNAL_SERVER_ERROR); |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | logger.error("调用后端服务异常:{}", responseEntity); |
| | | return new ResponseEntity<String>("调用中心服务异常", HttpStatus.INTERNAL_SERVER_ERROR); |
| | | } |
| | | |
| | | Assert.jsonObjectHaveKey(responseEntity.getBody(),"userCount","调用中心服务异常,报文中未包含userCount节点"); |
| | | Assert.jsonObjectHaveKey(responseEntity.getBody(), "userCount", "调用中心服务异常,报文中未包含userCount节点"); |
| | | |
| | | JSONObject userInfo = JSONObject.parseObject(responseEntity.getBody()); |
| | | |
| | | if(userInfo.getIntValue("userCount") > 0){ |
| | | return new ResponseEntity<String>(StringUtil.isNullOrNone(name)?"手机号已占用":"用户名已占用",HttpStatus.INTERNAL_SERVER_ERROR); |
| | | if (userInfo.getIntValue("userCount") > 0) { |
| | | return new ResponseEntity<String>(StringUtil.isNullOrNone(name) ? "手机号已占用" : "用户名已占用", HttpStatus.INTERNAL_SERVER_ERROR); |
| | | } |
| | | |
| | | responseEntity = new ResponseEntity<>("成功",HttpStatus.OK); |
| | | responseEntity = new ResponseEntity<>("成功", HttpStatus.OK); |
| | | |
| | | return responseEntity; |
| | | |
| | |
| | | |
| | | /** |
| | | * 发送验证码 |
| | | * |
| | | * @param pd |
| | | * @return |
| | | */ |
| | | @Override |
| | | public ResponseEntity<String> sendTelMessageCode(IPageData pd) { |
| | | |
| | | Assert.jsonObjectHaveKey(pd.getReqData(),"tel","请求报文格式错误或未包含手机号信息"); |
| | | |
| | | Assert.jsonObjectHaveKey(pd.getReqData(), "tel", "请求报文格式错误或未包含手机号信息"); |
| | | |
| | | |
| | | JSONObject telInfo = JSONObject.parseObject(pd.getReqData()); |
| | | |
| | | String verifyCode = AliSendMessageFactory.generateMessageCode(); |
| | | ResponseEntity<String> sendMessageResult = null; |
| | | String verifyStr="演示环境验证码:"+verifyCode; |
| | | String verifyStr = "演示环境验证码:" + verifyCode; |
| | | try { |
| | | if("ON".equals(MappingCache.getValue("SMS_SEND_SWITCH"))){ |
| | | //开始发送验证码 |
| | | AliSendMessageFactory.sendMessage(telInfo.getString("tel"),verifyCode); |
| | | if ("ON".equals(MappingCache.getValue(SendSmsFactory.SMS_SEND_SWITCH))) { |
| | | //开始发送验证码 |
| | | //AliSendMessageFactory.sendMessage(telInfo.getString("tel"), verifyCode); |
| | | |
| | | verifyStr ="验证码已下发至您的手机!"; |
| | | TencentSendMessageFactory.sendMessage(telInfo.getString("tel"), verifyCode); |
| | | |
| | | verifyStr = "验证码已下发至您的手机!"; |
| | | } |
| | | //将验证码存入Redis中 |
| | | CommonCache.setValue(telInfo.getString("tel")+"_validateTel",verifyCode.toLowerCase(),CommonCache.defaultExpireTime); |
| | | CommonCache.setValue(telInfo.getString("tel") + "_validateTel", verifyCode.toLowerCase(), CommonCache.defaultExpireTime); |
| | | |
| | | sendMessageResult = new ResponseEntity<>(verifyStr, HttpStatus.OK); |
| | | |
| | | }catch (Exception e){ |
| | | logger.error("生成验证码失败,",e); |
| | | } catch (Exception e) { |
| | | logger.error("生成验证码失败,", e); |
| | | sendMessageResult = new ResponseEntity<>("", HttpStatus.INTERNAL_SERVER_ERROR); |
| | | } |
| | | return sendMessageResult; |
| | |
| | | |
| | | /** |
| | | * 校验验证码 |
| | | * |
| | | * @param pd 页面请求对象 |
| | | * @return |
| | | */ |
| | | public ResponseEntity<String> validate(IPageData pd){ |
| | | public ResponseEntity<String> validate(IPageData pd) { |
| | | |
| | | logger.debug("校验验证码参数:{}",pd.toString()); |
| | | logger.debug("校验验证码参数:{}", pd.toString()); |
| | | ResponseEntity<String> verifyResult = null; |
| | | Assert.jsonObjectHaveKey(pd.getReqData(),"messageCode","请求报文中未包含 验证码"+pd.toString()); |
| | | Assert.jsonObjectHaveKey(pd.getReqData(),"tel","请求报文中未包含 手机号"+pd.toString()); |
| | | Assert.jsonObjectHaveKey(pd.getReqData(), "messageCode", "请求报文中未包含 验证码" + pd.toString()); |
| | | Assert.jsonObjectHaveKey(pd.getReqData(), "tel", "请求报文中未包含 手机号" + pd.toString()); |
| | | JSONObject telInfo = JSONObject.parseObject(pd.getReqData()); |
| | | |
| | | String code = CommonCache.getValue(telInfo.getString("tel")+"_validateTel"); |
| | | String code = CommonCache.getValue(telInfo.getString("tel") + "_validateTel"); |
| | | |
| | | if(telInfo.getString("messageCode").toLowerCase().equals(code)){ |
| | | if (telInfo.getString("messageCode").toLowerCase().equals(code)) { |
| | | verifyResult = new ResponseEntity<>("成功", HttpStatus.OK); |
| | | }else{ |
| | | } else { |
| | | pd.setToken(""); |
| | | verifyResult = new ResponseEntity<>("验证码错误", HttpStatus.INTERNAL_SERVER_ERROR); |
| | | } |
| | |
| | | |
| | | return verifyResult; |
| | | } |
| | | |
| | | /** |
| | | * 加载地区 |
| | | * |
| | | * @param pd 页面请求对象 |
| | | * @return |
| | | */ |
| | | public ResponseEntity<String> loadArea(IPageData pd) { |
| | | ResponseEntity responseEntity = null; |
| | | JSONObject paramObj = JSONObject.parseObject(pd.getReqData()); |
| | | responseEntity = this.callCenterService(restTemplate, pd, "", |
| | | ServiceConstant.SERVICE_API_URL + "/api/area.listAreas?" + super.mapToUrlParam(paramObj), |
| | | HttpMethod.GET); |
| | | |
| | | return responseEntity; |
| | | } |
| | | } |