From 22ab448873d921fdcad0eacc20288e8ff17cf5c6 Mon Sep 17 00:00:00 2001
From: 1098226878@qq.com <1098226878@qq.com>
Date: 星期二, 11 一月 2022 16:13:33 +0800
Subject: [PATCH] 优化代码
---
service-fee/src/main/java/com/java110/fee/cmd/tempCarFee/GetTempCarFeeOrderCmd.java | 79 ++++++++++++++++++++++++++++++++++++++-
1 files changed, 76 insertions(+), 3 deletions(-)
diff --git a/service-fee/src/main/java/com/java110/fee/cmd/tempCarFee/GetTempCarFeeOrderCmd.java b/service-fee/src/main/java/com/java110/fee/cmd/tempCarFee/GetTempCarFeeOrderCmd.java
index c32c32b..fd80a6f 100644
--- a/service-fee/src/main/java/com/java110/fee/cmd/tempCarFee/GetTempCarFeeOrderCmd.java
+++ b/service-fee/src/main/java/com/java110/fee/cmd/tempCarFee/GetTempCarFeeOrderCmd.java
@@ -1,16 +1,29 @@
package com.java110.fee.cmd.tempCarFee;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.context.ICmdDataFlowContext;
import com.java110.core.event.cmd.AbstractServiceCmdListener;
import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.couponUser.CouponUserDto;
import com.java110.dto.tempCarFeeConfig.TempCarPayOrderDto;
import com.java110.fee.bmo.tempCarFee.IGetTempCarFeeRules;
+import com.java110.intf.acct.ICouponUserV1InnerServiceSMO;
+import com.java110.utils.cache.CommonCache;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
/**
* 绫昏〃杩帮細鍒犻櫎
@@ -24,14 +37,17 @@
*/
@Java110Cmd(serviceCode = "tempCarFee.getTempCarFeeOrder")
public class GetTempCarFeeOrderCmd extends AbstractServiceCmdListener {
-
+ @Autowired
+ private ICouponUserV1InnerServiceSMO couponUserV1InnerServiceSMOImpl;
@Autowired
private IGetTempCarFeeRules getTempCarFeeRulesImpl;
+
@Override
public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
Assert.hasKeyAndValue(reqJson, "paId", "paId涓嶈兘涓虹┖");
Assert.hasKeyAndValue(reqJson, "carNum", "carNum涓嶈兘涓虹┖");
+ Assert.hasKeyAndValue(reqJson, "couponIds", "couponIds涓嶈兘涓虹┖");
}
@@ -40,7 +56,64 @@
TempCarPayOrderDto tempCarPayOrderDto = new TempCarPayOrderDto();
tempCarPayOrderDto.setPaId(reqJson.getString("paId"));
tempCarPayOrderDto.setCarNum(reqJson.getString("carNum"));
- ResponseEntity<String> responseEntity = getTempCarFeeRulesImpl.getTempCarFeeOrder(tempCarPayOrderDto);
- cmdDataFlowContext.setResponseEntity(responseEntity);
+ ResponseEntity<String> responseEntity = getTempCarFeeRulesImpl.getTempCarFeeOrder(tempCarPayOrderDto);
+
+ if (responseEntity.getStatusCode() != HttpStatus.OK) {
+ cmdDataFlowContext.setResponseEntity(responseEntity);
+ return;
+ }
+ JSONObject orderInfo = JSONObject.parseObject(responseEntity.getBody().toString());
+ if (orderInfo.getIntValue("code") != 0) {
+ cmdDataFlowContext.setResponseEntity(responseEntity);
+ return;
+ }
+
+ JSONObject fee = orderInfo.getJSONObject("data");
+ //double money = fee.getDouble("payCharge");
+ BigDecimal money = new BigDecimal(fee.getDouble("payCharge"));
+ //3.0 鑰冭檻浼樻儬鍗�
+ double couponPrice = checkCouponUser(reqJson);
+ money = money.subtract(new BigDecimal(couponPrice)).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+
+ double receivedAmount = money.doubleValue();
+ //鎵�鏈� 浼樻儬鎶樻墸璁$畻瀹屽悗锛屽鏋滄�婚噾棰濆皬浜庣瓑浜�0锛屽垯杩斿洖鎬绘墸娆句负0
+ if (receivedAmount <= 0) {
+ receivedAmount = 0.0;
+ }
+ fee.put("receivedAmount", receivedAmount);
+ fee.put("oId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_oId));
+ fee.putAll(reqJson);
+ CommonCache.setValue("getTempCarFeeOrder" + fee.getString("oId"), fee.toJSONString(), 24 * 60 * 60);
+ ResponseEntity<String> responseEntitys = new ResponseEntity<>(fee.toJSONString(), HttpStatus.OK);
+ cmdDataFlowContext.setResponseEntity(responseEntitys);
+ }
+
+ private double checkCouponUser(JSONObject paramObj) {
+
+ BigDecimal couponPrice = new BigDecimal(0.0);
+ String couponIds = paramObj.getString("couponIds");
+ if (couponIds == null || "".equals(couponIds)) {
+ paramObj.put("couponPrice", couponPrice.doubleValue());
+ paramObj.put("couponUserDtos", new JSONArray()); //杩欓噷鑰冭檻绌�
+ return couponPrice.doubleValue();
+ }
+
+ List<String> result = Arrays.asList(couponIds.split(","));
+ CouponUserDto couponUserDto = new CouponUserDto();
+ couponUserDto.setCouponIds(result.toArray(new String[result.size()]));
+ List<CouponUserDto> couponUserDtos = couponUserV1InnerServiceSMOImpl.queryCouponUsers(couponUserDto);
+ if (couponUserDtos == null || couponUserDtos.size() < 1) {
+ paramObj.put("couponPrice", couponPrice.doubleValue());
+ return couponPrice.doubleValue();
+ }
+ for (CouponUserDto couponUser : couponUserDtos) {
+ //涓嶈绠楀凡杩囨湡璐墿鍒搁噾棰�
+ if (couponUser.getEndTime().compareTo(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_B)) >= 0) {
+ couponPrice = couponPrice.add(new BigDecimal(Double.parseDouble(couponUser.getActualPrice())));
+ }
+ }
+ paramObj.put("couponPrice", couponPrice.doubleValue());
+ paramObj.put("couponUserDtos", BeanConvertUtil.beanCovertJSONArray(couponUserDtos));
+ return couponPrice.doubleValue();
}
}
--
Gitblit v1.8.0