Bladeren bron

优惠券修改

JK 3 jaren geleden
bovenliggende
commit
731d2d0028

+ 35 - 13
YijiaRestful/src/main/java/com/platform/yijia/controller/PayOrderController.java

@@ -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);
 

+ 5 - 4
YijiaRestful/src/main/java/com/platform/yijia/pojo/Coupon.java

@@ -15,7 +15,6 @@ public class Coupon {
     private String couponName;              //优惠券名称;
     private String couponType;              //优惠券类型: 1现金劵,2折扣券,3兑换券;
     private BigDecimal couponThresholdAmt;  //优惠券使用门槛金额 1.无门槛,2满减劵,3折扣;
-
     private String oilName;                 //油品
     private String oilType;                 //1 柴油,2 汽油;
     private BigDecimal couponAmt;           //优惠券优惠金额;
@@ -24,12 +23,10 @@ public class Coupon {
     private Date effectiveTimeStart;        //固定时间-有效开始时间;
     private Date effectiveTimeEnd;          //固定时间-有效结束时间;
     private Integer effectiveDayNum;        //有效天数;
-
     private Integer couponReceiveNum;       //优惠劵领取数量 单个用户优惠劵领取数量;
     private Integer couponHoldNum;          //单个用户优惠劵持有数量
     private Integer couponCumulativeNum;    //优惠劵所有用户累计领取数量
     private Integer couponUseNum;           //优惠劵累计使用数量
-
     private String openPlatform;            //'发放平台,1.微信 2支付宝';
     private String grantStatus;             //发放状态:0,未发放;1,已发放;
     private String status;                  //有效状态:0,未生效; 1,生效;2,失效;
@@ -40,18 +37,22 @@ public class Coupon {
     private String delFlag;                 //是否删除优惠劵 1是 0 否
     private String couponDetails;           //优惠内容
     private String verification;            //优惠劵选中的站点
+    private String availableControl;        //有效期内可用时间设置0一直可用 1:每周 2 每月 3 指定日期
+    private String appointedDays;           //指定日期
+    private String cycleDays;               //每周每月的周几和几号
 
     //优惠活动是否叠加
     private String isCardFlag;              //是否电子卡
     private String isGradeFlag;             //是否等级
     private String isMarketFlag;            //是否叠加营销方案;
 
+    //领取方式属性
     private Integer showId;                     //展示位
     private BigDecimal discountThresholdAmt;    //领取方式门槛金额
 
     //查询参数
     private String issueType;               //领取方式
-    private String couponIssueId;          //领取方式ID
+    private String couponIssueId;           //领取方式ID
     private String unionId;                 //用户unionId
 
 }

+ 7 - 4
YijiaRestful/src/main/resources/mapper/CouponMapper.xml

@@ -30,8 +30,10 @@
     <result column="create_time"              jdbcType="TIMESTAMP" property="createTime" />
     <result column="update_by"                jdbcType="VARCHAR"   property="updateBy" />
 
-      <result column="update_by"              jdbcType="TIMESTAMP"   property="updateTime" />
+      <result column="update_by"              jdbcType="TIMESTAMP" property="updateTime" />
       <result column="del_flag"               jdbcType="VARCHAR"   property="delFlag" />
+      <result column="coupon_details"         jdbcType="VARCHAR"   property="couponDetails" />
+
       <result column="update_by"              jdbcType="VARCHAR"   property="couponDetails" />
       <result column="verification"           jdbcType="VARCHAR"   property="verification" />
 
@@ -39,11 +41,14 @@
       <result column="is_grade_flag"          jdbcType="VARCHAR"   property="isGradeFlag" />
       <result column="is_market_flag"         jdbcType="VARCHAR"   property="isMarketFlag" />
 
+      <result column="available_control"         jdbcType="VARCHAR"   property="availableControl" />
+      <result column="appointed_days"            jdbcType="VARCHAR"   property="appointedDays" />
+      <result column="cycle_days"                jdbcType="VARCHAR"   property="cycleDays" />
+
       <result column="coupon_issue_id"           jdbcType="VARCHAR"   property="couponIssueId" />
       <result column="show_id"                   jdbcType="INTEGER"   property="showId" />
       <result column="issue_type"                jdbcType="VARCHAR"   property="issueType" />
       <result column="discount_threshold_amt"    jdbcType="DECIMAL"   property="discountThresholdAmt" />
-
   </resultMap>
 
     <!--发放方式,优惠劵信息-->
@@ -65,8 +70,6 @@
        <result column="cycle_days"                   jdbcType="VARCHAR"   property="cycleDays" />
        <result column="give_limit"                   jdbcType="INTEGER"   property="giveLimit" />
        <result column="give_count"                   jdbcType="INTEGER"   property="giveCount" />
-
-<!--       <collection property="couponInfoList" resultMap="BaseResultMap"/>-->
    </resultMap>
 
     <!--用户优惠券-->