//新版接口 if (StringUtils.isBlank(iv)) { String url = String.format(AppletUtils.LOGIN_GET_PHONE, miniMessageService.getDoctorMiniAccessToken()); JSONObject request = new JSONObject(); request.put("code", phoneCode); ResponseEntity<String> response = restTemplate.postForEntity(url, request, String.class); // 解析相应内容(转换成json对象) String sr = response.getBody(); JSONObject json = JSONObject.parseObject(sr); log.info("新版接口获取手机号返回" + json.toString()); if (json.get("errcode") != null && !"0".equals(json.getString("errcode"))) { throw new Exception(json.getString("errmsg")); } String phoneInfo = json.getString("phone_info"); if (StringUtils.isNotBlank(phoneInfo)) { JSONObject phoneInfoTemp = JSONObject.parseObject(phoneInfo); return phoneInfoTemp.getString("phoneNumber"); } } else { //旧版接口 log.info("旧版接口解密开始:sessionKey:"+sessionKey); String result = AesCommonUtils.decryptWX(phoneCode, sessionKey, iv, "UTF-8"); log.info("旧版接口解密:"+result); if (null != result && result.length() > 0) { JSONObject json = JSONObject.parseObject(result); if (json.containsKey("phoneNumber")) { return json.getString("phoneNumber"); } } }
时间: 2024-02-15 19:28:26 浏览: 69
这是一段Java代码,大概的逻辑如下:
1. 检查参数iv是否为空,如果为空,则使用新版接口获取手机号码,否则使用旧版接口。
2. 如果使用新版接口,则构造请求URL,将手机号码验证码等信息封装成json格式请求体,使用RestTemplate发送POST请求,并接收响应体。
3. 解析响应体,如果errcode不为0,则抛出异常。
4. 从响应体中获取phone_info字段,解析出其中的phoneNumber字段并返回。
5. 如果使用旧版接口,则调用AesCommonUtils.decryptWX方法对phoneCode进行解密,得到解密后的字符串。
6. 解析得到的字符串,如果包含phoneNumber字段,则返回该字段的值。
需要注意的是,这段代码中使用了一些第三方库和工具类,例如StringUtils、JSONObject、RestTemplate等,这些工具类需要提前导入并配置好。
相关问题
if (bindingResult.hasErrors()) { for (ObjectError error : bindingResult.getAllErrors()) { return new PayResult<ZhenghangParamDTO>(PayResultConstant.PARAM_VALID_FAILED.getCode(), error.getDefaultMessage(), null); } } if (StringUtils.isBlank(orgCode)){ return new PayResult<ZhenghangParamDTO>(PayResultConstant.PARAM_VALID_FAILED.getCode(), "公司编码不能为空", null); } if (epayBankParamDTO.getCo_list() == null || epayBankParamDTO.getCo_list().isEmpty()){ return new PayResult<ZhenghangParamDTO>(PayResultConstant.PARAM_VALID_FAILED.getCode(), "关联订单信息不能为空", null); } if (!isIntAndGreaterThanZero(epayBankParamDTO.getBill_acct())){ return new PayResult(PayResultConstant.PARAM_VALID_FAILED.getCode(),"交易金额必须大于0,必须为整数", null); } if (StringUtils.isBlank(epayBankParamDTO.getCanInputName())){ epayBankParamDTO.setCanInputName("1"); } if (StringUtils.isBlank(epayBankParamDTO.getOrder_type())){ epayBankParamDTO.setOrder_type("901"); } if (StringUtils.isBlank(epayBankParamDTO.getCurr_type())){ epayBankParamDTO.setCurr_type("156"); }
这段代码可以进行如下优化:
```java
if (bindingResult.hasErrors()) {
ObjectError error = bindingResult.getAllErrors().get(0);
return new PayResult<>(PayResultConstant.PARAM_VALID_FAILED.getCode(), error.getDefaultMessage(), null);
}
if (StringUtils.isBlank(orgCode)) {
return new PayResult<>(PayResultConstant.PARAM_VALID_FAILED.getCode(), "公司编码不能为空", null);
}
if (epayBankParamDTO.getCo_list() == null || epayBankParamDTO.getCo_list().isEmpty()) {
return new PayResult<>(PayResultConstant.PARAM_VALID_FAILED.getCode(), "关联订单信息不能为空", null);
}
if (!isIntAndGreaterThanZero(epayBankParamDTO.getBill_acct())) {
return new PayResult<>(PayResultConstant.PARAM_VALID_FAILED.getCode(), "交易金额必须大于0,必须为整数", null);
}
epayBankParamDTO.setCanInputName(StringUtils.defaultIfBlank(epayBankParamDTO.getCanInputName(), "1"));
epayBankParamDTO.setOrder_type(StringUtils.defaultIfBlank(epayBankParamDTO.getOrder_type(), "901"));
epayBankParamDTO.setCurr_type(StringUtils.defaultIfBlank(epayBankParamDTO.getCurr_type(), "156"));
```
这个优化做了以下几个改进:
1. 在第一个 `if` 语句块里,我们只需要获取第一个错误信息,而不需要遍历所有的错误信息,这样可以减少不必要的操作。
2. 对于后面三个 `if` 语句块,我们可以使用 `StringUtils.defaultIfBlank()` 方法来简化代码,这个方法会在字符串为空时返回一个默认值,这样可以避免使用 `if` 语句来判断是否为空。
if(StringUtils.isBlank(seat) && StringUtils.isBlank(cabin) && StringUtils.isBlank(personal)) {return null;}
这段代码使用了StringUtils类中的isBlank方法,判断了三个字符串变量seat、cabin和personal是否为空或者只包含空格。如果这三个变量都为空或者只包含空格,那么返回null。isBlank方法与isEmpty方法的区别在于,isBlank方法不仅会判断字符串是否为空,还会判断字符串是否只包含空格。而isEmpty方法只会判断字符串是否为空。
```java
if (StringUtils.isBlank(seat) && StringUtils.isBlank(cabin) && StringUtils.isBlank(personal)) {
return null;
}
```
阅读全文