优化代码PlanOrderPushResponseVO planOrderPushResponseVO = JSON.parseObject(postResult, PlanOrderPushResponseVO.class); String flag = !StringUtils.isBlank(planOrderPushResponseVO.getFlag()) ? planOrderPushResponseVO.getFlag() : NumberConstant.CONSTANT_
时间: 2024-02-11 20:03:45 浏览: 122
可以对代码进行如下优化:
1. 可以使用`StringUtils.isNotBlank()`方法代替`!StringUtils.isBlank()`方法,因为`isNotBlank()`方法更加直观,更易读。
2. 可以将重复的常量提取出来,定义为常量,避免多次创建。
3. 可以使用三目运算符来简化代码,避免使用多个`if-else`语句。
改进后的代码如下:
```
PlanOrderPushResponseVO planOrderPushResponseVO = JSON.parseObject(postResult, PlanOrderPushResponseVO.class);
String flag = StringUtils.isNotBlank(planOrderPushResponseVO.getFlag()) ? planOrderPushResponseVO.getFlag() : NumberConstant.CONSTANT_;
```
注意:原代码中`NumberConstant.CONSTANT_`存在缺失,请根据实际情况自行添加常量。
相关问题
优化代码 PlanOrderPushResponseVO planOrderPushResponseVO = JSON.parseObject(postResult, PlanOrderPushResponseVO.class); String flag = !StringUtils.isBlank(planOrderPushResponseVO.getFlag()) ? planOrderPushResponseVO.getFlag() : NumberConstant.CONSTANT_ONE.toString(); for (DesignPlanOrder planOrder : designPlanOrderList) { planOrder.setOrderPushResult(planOrderPushResponseVO.getMessage()); if (StringUtils.equals(NumberConstant.CONSTANT_ZERO.toString(),flag)){ planOrder.setOrderPushStatus(NumberConstant.CONSTANT_TWO); } else { planOrder.setOrderPushStatus(NumberConstant.CONSTANT_THREE); if (Objects.equals(NumberConstant.CONSTANT_ONE,source)){ delPlanOrderIdList.add(planOrder.getId()); } } planOrder.setOrderStatus(NumberConstant.CONSTANT_TWO); planOrder.setOrderProductionData(null); planOrder.setOrderQuotationData(null); planOrder.setOrderCadData(null); } designPlanOrderService.updateBatchById(designPlanOrderList); if (Objects.equals(NumberConstant.CONSTANT_ONE,source) && StringUtils.equals(NumberConstant.CONSTANT_ZERO.toString(),flag)){ //修改方案下单状态 designPlan.setPlanOrderStatus(NumberConstant.CONSTANT_TWO); designPlanService.updateById(designPlan); } //下单推送返回失败则废弃该订单 if (CollectionUtil.isNotEmpty(delPlanOrderIdList)){ designPlanOrderService.removeByIds(delPlanOrderIdList); Integer orderCount = designPlanOrderService.getPlanOrderCountByPlanCode(designPlan.getPlanCode()); if (null == orderCount || Objects.equals(NumberConstant.CONSTANT_ZERO,orderCount)){ designPlan.setPlanOrderStatus(NumberConstant.CONSTANT_ONE); } }
可以对代码进行如下优化:
1. 可以将重复的常量提取出来,定义为常量,避免多次创建。
2. 可以使用`Objects.equals()`方法代替`StringUtils.equals()`方法,因为`Objects.equals()`方法可以比较任意两个对象是否相等,而`StringUtils.equals()`方法只能比较字符串是否相等。
3. 可以使用`StringUtils.equalsAny()`方法代替多个`StringUtils.equals()`方法,可以使代码更简洁。
4. 可以使用`CollectionUtils.isEmpty()`方法代替`CollectionUtil.isNotEmpty()`方法,因为`CollectionUtils`是`Apache Commons Collections`库的类,而`CollectionUtil`是`Hutool`库的类,使用`CollectionUtils`更加常见。
改进后的代码如下:
```
PlanOrderPushResponseVO planOrderPushResponseVO = JSON.parseObject(postResult, PlanOrderPushResponseVO.class);
String flag = StringUtils.isNotBlank(planOrderPushResponseVO.getFlag()) ? planOrderPushResponseVO.getFlag() : NumberConstant.CONSTANT_ONE.toString();
for (DesignPlanOrder planOrder : designPlanOrderList) {
planOrder.setOrderPushResult(planOrderPushResponseVO.getMessage());
if (StringUtils.equalsAny(flag, NumberConstant.CONSTANT_ZERO.toString())) {
planOrder.setOrderPushStatus(NumberConstant.CONSTANT_TWO);
} else {
planOrder.setOrderPushStatus(NumberConstant.CONSTANT_THREE);
if (Objects.equals(NumberConstant.CONSTANT_ONE, source)) {
delPlanOrderIdList.add(planOrder.getId());
}
}
planOrder.setOrderStatus(NumberConstant.CONSTANT_TWO);
planOrder.setOrderProductionData(null);
planOrder.setOrderQuotationData(null);
planOrder.setOrderCadData(null);
}
designPlanOrderService.updateBatchById(designPlanOrderList);
if (Objects.equals(NumberConstant.CONSTANT_ONE, source) && StringUtils.equalsAny(flag, NumberConstant.CONSTANT_ZERO.toString())) {
//修改方案下单状态
designPlan.setPlanOrderStatus(NumberConstant.CONSTANT_TWO);
designPlanService.updateById(designPlan);
}
//下单推送返回失败则废弃该订单
if (CollectionUtils.isNotEmpty(delPlanOrderIdList)) {
designPlanOrderService.removeByIds(delPlanOrderIdList);
Integer orderCount = designPlanOrderService.getPlanOrderCountByPlanCode(designPlan.getPlanCode());
if (Objects.equals(NumberConstant.CONSTANT_ZERO, orderCount)) {
designPlan.setPlanOrderStatus(NumberConstant.CONSTANT_ONE);
}
}
```
注意:原代码中`source`变量未定义,请根据实际情况自行定义。
//新版接口 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"); } } }
这是一段Java代码,大概的逻辑如下:
1. 检查参数iv是否为空,如果为空,则使用新版接口获取手机号码,否则使用旧版接口。
2. 如果使用新版接口,则构造请求URL,将手机号码验证码等信息封装成json格式请求体,使用RestTemplate发送POST请求,并接收响应体。
3. 解析响应体,如果errcode不为0,则抛出异常。
4. 从响应体中获取phone_info字段,解析出其中的phoneNumber字段并返回。
5. 如果使用旧版接口,则调用AesCommonUtils.decryptWX方法对phoneCode进行解密,得到解密后的字符串。
6. 解析得到的字符串,如果包含phoneNumber字段,则返回该字段的值。
需要注意的是,这段代码中使用了一些第三方库和工具类,例如StringUtils、JSONObject、RestTemplate等,这些工具类需要提前导入并配置好。
阅读全文