| 
					
				 | 
			
			
				@@ -1471,59 +1471,43 @@ public class PayOrderController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     p.setDzkAmt(dzkAmt.doubleValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     BigDecimal oilPrice = new BigDecimal(infoMap.get("oilPirce").toString());            //油品价格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    BigDecimal couponAmt = coupon.getCouponAmt();                                       //优惠券金额:金额 比例值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    String couponType = coupon.getCouponType();                                         //优惠劵类型 1现金劵,2折扣券,3兑换券 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //计算优惠券优惠后金额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    PayOrder resultCalCoupon = calCouponAmt(couponType, receivableAmt, couponAmt, dzkAmt, amt, isCardFlag, isMarketFlag); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //查询优惠券使用时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //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) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    switch (availableControl){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        case "0": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            p.setDzkAmt(resultCalCoupon.getDzkAmt()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            p.setAmt(resultCalCoupon.getAmt()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         case "1": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            //现金券 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            //与营销方案,电子卡互斥 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            BigDecimal subtract = receivableAmt.subtract(couponAmt); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            subtract = subtract.signum() == -1 ? new BigDecimal("0.01") : subtract; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            p.setAmt(subtract.doubleValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            p.setDzkAmt(subtract.doubleValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            //是否与电子卡叠加 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            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")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                BigDecimal marketSub = amt.subtract(couponAmt); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                marketSub = marketSub.signum() == -1 ? new BigDecimal("0.01") : marketSub; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                p.setAmt(marketSub.doubleValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            boolean activityDay = this.isActivityDay("1", coupon.getCycleDays()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if(activityDay){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                p.setDzkAmt(resultCalCoupon.getDzkAmt()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                p.setAmt(resultCalCoupon.getAmt()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         case "2": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            //折扣券 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            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()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            boolean activityDay2 = this.isActivityDay("2", coupon.getCycleDays()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if(activityDay2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                p.setDzkAmt(resultCalCoupon.getDzkAmt()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                p.setAmt(resultCalCoupon.getAmt()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        case "3": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            boolean activityDay3 = this.isActivityDay("3", coupon.getCycleDays()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if(activityDay3){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                p.setDzkAmt(resultCalCoupon.getDzkAmt()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                p.setAmt(resultCalCoupon.getAmt()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     resultData = ResultData.success(payOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                   // resultData = ResultData.error(2,""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    resultData = ResultData.error(CodeMsg.COUPON_LOSE_EFFECTIVE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 resultData = ResultData.error(CodeMsg.NO_COUPON); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1534,6 +1518,54 @@ public class PayOrderController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return gson.toJson(resultData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //计算优惠券金额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public PayOrder calCouponAmt(String couponType, BigDecimal receivableAmt, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                 BigDecimal couponAmt, BigDecimal dzkAmt, BigDecimal amt, String isCardFlag, String isMarketFlag){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        PayOrder p = new PayOrder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        switch (couponType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case "1": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //现金券 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //与营销方案,电子卡互斥 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                BigDecimal subtract = receivableAmt.subtract(couponAmt); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                subtract = subtract.signum() == -1 ? new BigDecimal("0.01") : subtract; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                p.setAmt(subtract.doubleValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                p.setDzkAmt(subtract.doubleValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //是否与电子卡叠加 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                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")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    BigDecimal marketSub = amt.subtract(couponAmt); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    marketSub = marketSub.signum() == -1 ? new BigDecimal("0.01") : marketSub; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    p.setAmt(marketSub.doubleValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case "2": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //折扣券 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                BigDecimal multiply = receivableAmt.multiply(couponAmt); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                multiply = receivableAmt.subtract(multiply).setScale(2, BigDecimal.ROUND_HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                p.setAmt(multiply.doubleValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                p.setDzkAmt(multiply.doubleValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //是否与电子卡叠加 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (isCardFlag.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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return p; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 根据订单号获取订单信息 
			 |