|
@@ -1442,16 +1442,17 @@ public class PayOrderController {
|
|
|
public String calculateCouponDiscount(@RequestParam String ordNo, @RequestParam Integer couponId){
|
|
|
Gson gson =new Gson();
|
|
|
ResultData resultData =null;
|
|
|
- PayOrder payOrder = payOrderService.selectOrderInfoByOrdNo(ordNo);
|
|
|
+ PayOrder payOrder = new PayOrder();
|
|
|
+ payOrder.setOrderNo(ordNo);
|
|
|
Map<String, Object> infoMap = payOrderService.getOrderInfoAndUserInfoByOrderNo(payOrder);
|
|
|
- if(payOrder !=null){
|
|
|
+ if(infoMap !=null){
|
|
|
Coupon coupon = new Coupon();
|
|
|
coupon.setId(couponId);
|
|
|
Coupon couponInfo = couponService.selectCouponInfo(coupon);
|
|
|
if(couponInfo !=null){
|
|
|
String status = couponInfo.getStatus();
|
|
|
//该优惠券是否有效
|
|
|
- if(status !=null && status.equals("1")){
|
|
|
+ if(status !=null && status.equals("1")) {
|
|
|
//
|
|
|
String isMarketFlag = coupon.getIsMarketFlag();
|
|
|
String isCardFlag = coupon.getIsCardFlag();
|
|
@@ -1463,40 +1464,61 @@ public class PayOrderController {
|
|
|
// BigDecimal dzkAmt = new BigDecimal(payOrder.getDzkAmt().toString()); //应收金额
|
|
|
|
|
|
BigDecimal receivableAmt = new BigDecimal(infoMap.get("receivableAmt").toString()); //应收金额
|
|
|
+ p.setReceivableAmt(receivableAmt.doubleValue());
|
|
|
BigDecimal amt = new BigDecimal(infoMap.get("amt").toString()); //实收金额
|
|
|
+ p.setAmt(amt.doubleValue());
|
|
|
BigDecimal dzkAmt = new BigDecimal(infoMap.get("dzkAmt").toString()); //电子卡金额
|
|
|
+ p.setDzkAmt(dzkAmt.doubleValue());
|
|
|
BigDecimal oilPrice = new BigDecimal(infoMap.get("oilPirce").toString()); //油品价格
|
|
|
|
|
|
- BigDecimal couponAmt = coupon.getCouponAmt(); //优惠券金额:金额 比例值
|
|
|
-
|
|
|
- String couponType = coupon.getCouponType(); //优惠劵类型 1现金劵,2折扣券,3兑换券
|
|
|
- switch (couponType){
|
|
|
+ //查询优惠券使用时间
|
|
|
+ //String effectiveTimeType = coupon.getEffectiveTimeType();
|
|
|
+ String availableControl = coupon.getAvailableControl();
|
|
|
+ if(availableControl.equals("0")) {
|
|
|
+ BigDecimal couponAmt = coupon.getCouponAmt(); //优惠券金额:金额 比例值
|
|
|
+ String couponType = coupon.getCouponType(); //优惠劵类型 1现金劵,2折扣券,3兑换券
|
|
|
+ switch (couponType) {
|
|
|
case "1":
|
|
|
//现金券
|
|
|
//与营销方案,电子卡互斥
|
|
|
BigDecimal subtract = receivableAmt.subtract(couponAmt);
|
|
|
- subtract =subtract.signum() == -1 ? new BigDecimal("0.01"): subtract;
|
|
|
+ subtract = subtract.signum() == -1 ? new BigDecimal("0.01") : subtract;
|
|
|
p.setAmt(subtract.doubleValue());
|
|
|
p.setDzkAmt(subtract.doubleValue());
|
|
|
//是否与电子卡叠加
|
|
|
- if(isCardFlag.equals("1")){
|
|
|
+ if (isCardFlag.equals("1")) {
|
|
|
BigDecimal dzkAmtSub = dzkAmt.subtract(couponAmt);
|
|
|
+ dzkAmtSub = dzkAmtSub.signum() == -1 ? new BigDecimal("0.01") : dzkAmtSub;
|
|
|
p.setDzkAmt(dzkAmtSub.doubleValue());
|
|
|
}
|
|
|
//是否与营销方案叠加
|
|
|
- if(isMarketFlag.equals("1")){
|
|
|
+ if (isMarketFlag.equals("1")) {
|
|
|
BigDecimal marketSub = amt.subtract(couponAmt);
|
|
|
+ marketSub = marketSub.signum() == -1 ? new BigDecimal("0.01") : marketSub;
|
|
|
p.setAmt(marketSub.doubleValue());
|
|
|
}
|
|
|
break;
|
|
|
case "2":
|
|
|
//折扣券
|
|
|
- if(isMarketFlag.equals("1")){
|
|
|
-
|
|
|
+ BigDecimal multiply = receivableAmt.multiply(couponAmt);
|
|
|
+ multiply = receivableAmt.subtract(multiply).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.setAmt(multiply.doubleValue());
|
|
|
+ p.setDzkAmt(multiply.doubleValue());
|
|
|
+ //是否与电子卡叠加
|
|
|
+ if (isGradeFlag.equals("1")) {
|
|
|
+ BigDecimal multiplyCard = dzkAmt.multiply(couponAmt);
|
|
|
+ multiplyCard = dzkAmt.subtract(multiplyCard).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.setDzkAmt(multiplyCard.doubleValue());
|
|
|
+ }
|
|
|
+ //是否与营销方案叠加
|
|
|
+ if (isMarketFlag.equals("1")) {
|
|
|
+ BigDecimal multiplyMarket = amt.multiply(couponAmt);
|
|
|
+ multiplyMarket = amt.subtract(multiplyMarket).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ p.setAmt(multiplyMarket.doubleValue());
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
-
|
|
|
+ }
|
|
|
//
|
|
|
resultData = ResultData.success(payOrder);
|
|
|
|