Przeglądaj źródła

保存订单修改

plf 3 lat temu
rodzic
commit
98cba44a2e

+ 2 - 3
src/main/java/com/caimei/modules/coupon/dao/CmCouponDao.java

@@ -73,10 +73,9 @@ public interface CmCouponDao extends CrudDao<CmCoupon> {
     List<Integer> findAllProductId(String couponId);
 
     /**
-     * 查询所有有效优惠券
+     * 查询所有未兑换且有效优惠券
      *
-     * @param type 优惠券类型: 1普通优惠券  2兑换券优惠券
      * @return
      */
-    List<CmCoupon> findAllValidCoupon(int type);
+    List<CmCoupon> findNotRedeemedCoupon();
 }

+ 9 - 0
src/main/java/com/caimei/modules/coupon/entity/CmCoupon.java

@@ -42,6 +42,7 @@ public class CmCoupon extends DataEntity<CmCoupon> {
     private Integer clubCouponId;      //机构领券id
     private String couponName;          //优惠券名称
     private String couponDesc;        //描述
+    private String redemptionCode;      //兑换码
     private CmCouponClub couponClub;
     private NewCmShop shop;
     private List<Integer> productIdList;
@@ -276,4 +277,12 @@ public class CmCoupon extends DataEntity<CmCoupon> {
     public void setCouponDesc(String couponDesc) {
         this.couponDesc = couponDesc;
     }
+
+    public String getRedemptionCode() {
+        return redemptionCode;
+    }
+
+    public void setRedemptionCode(String redemptionCode) {
+        this.redemptionCode = redemptionCode;
+    }
 }

+ 44 - 0
src/main/java/com/caimei/modules/coupon/entity/CmCouponOrderRecord.java

@@ -0,0 +1,44 @@
+package com.caimei.modules.coupon.entity;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * Description
+ *
+ * @author : plf
+ * @date : 2021/8/20
+ */
+public class CmCouponOrderRecord {
+    private Integer id;
+
+    /**
+     * 订单id
+     */
+    private Integer orderId;
+
+    /**
+     * 用户领券id(对应cm_coupon_club)
+     */
+    private Integer clubCouponId;
+
+    /**
+     * 劵类型 0活动券 1品类券 2用户专享券 3店铺券 4新用户券
+     */
+    private Integer couponType;
+
+    /**
+     * 优惠券金额(面值)
+     */
+    private BigDecimal couponAmount;
+
+    /**
+     * 优惠满减条件金额
+     */
+    private BigDecimal touchPrice;
+
+    /**
+     * 创建时间
+     */
+    private Date createDate;
+}

+ 63 - 9
src/main/java/com/caimei/modules/coupon/service/CmCouponService.java

@@ -15,7 +15,6 @@ import com.caimei.modules.user.dao.NewCmShopDao;
 import com.caimei.modules.user.entity.CmUser;
 import com.caimei.modules.user.entity.NewCmShop;
 import com.caimei.utils.AppUtils;
-import com.thinkgem.jeesite.common.config.Global;
 import com.thinkgem.jeesite.common.persistence.Page;
 import com.thinkgem.jeesite.common.service.CrudService;
 import org.apache.commons.lang3.StringUtils;
@@ -291,17 +290,20 @@ public class CmCouponService extends CrudService<CmCouponDao, CmCoupon> {
         return couponsLogo;
     }
 
+    public List<CmCoupon> findClubCouponList(Product product, Integer userId) {
+        List<CmCoupon> couponList = cmCouponDao.findClubCouponList(userId);
+        filterCoupon(product, couponList);
+        setCouponCopywriting(couponList);
+        return couponList;
+    }
+
     /**
-     * 查询对应优惠券信息
+     * 过滤与商品不能使用优惠券
      *
-     * @param product 商品数据
-     * @param type    优惠券类型: 1普通优惠券  2兑换券优惠券
-     * @return
+     * @param product    商品数据
+     * @param couponList 优惠券集合
      */
-    public List<CmCoupon> findProductCoupon(Product product, int type) {
-        String wwwServer = Global.getConfig("wwwServer");
-        product.setMainImage(AppUtils.getImageURL("product", product.getMainImage(), 0, wwwServer));
-        List<CmCoupon> couponList = cmCouponDao.findAllValidCoupon(type);
+    private void filterCoupon(Product product, List<CmCoupon> couponList) {
         if (couponList != null && couponList.size() > 0) {
             Iterator<CmCoupon> iterator = couponList.iterator();
             while (iterator.hasNext()) {
@@ -323,6 +325,58 @@ public class CmCouponService extends CrudService<CmCouponDao, CmCoupon> {
                 }
             }
         }
+    }
+
+    public List<CmCoupon> findNotRedeemedCoupon(Product product) {
+        List<CmCoupon> couponList = cmCouponDao.findNotRedeemedCoupon();
+        filterCoupon(product, couponList);
+        setCouponCopywriting(couponList);
         return couponList;
     }
+
+    /**
+     * 设置优惠券文案相关
+     *
+     * @param couponList
+     */
+    public void setCouponCopywriting(List<CmCoupon> couponList) {
+        if (couponList != null && couponList.size() > 0) {
+            couponList.forEach(coupon -> {
+                String couponName = "¥" + coupon.getCouponAmount() + " 满" + coupon.getTouchPrice() + "可用";
+                if (coupon.getCouponType() == 0) {
+                    coupon.setCouponName("活动券" + couponName);
+                    if ("2".equals(coupon.getProductType())) {
+                        List<Integer> productIdList = cmCouponDao.findAllProductId(coupon.getId());
+                        coupon.setProductIdList(productIdList);
+                        coupon.setCouponDesc("仅可购买指定商品");
+                    } else {
+                        coupon.setCouponDesc("全商城商品通用");
+                    }
+                } else if (coupon.getCouponType() == 1) {
+                    coupon.setCouponName("品类券" + couponName);
+                    if ("1".equals(coupon.getCategoryType())) {
+                        coupon.setCouponDesc("仅可购买产品类商品");
+                    } else {
+                        coupon.setCouponDesc("仅可购买仪器类商品");
+                    }
+                } else if (coupon.getCouponType() == 2) {
+                    coupon.setCouponName("用户专享券" + couponName);
+                    coupon.setCouponDesc("全商城商品通用");
+                } else if (coupon.getCouponType() == 3) {
+                    NewCmShop cmShop = newCmShopDao.get(coupon.getShopId().toString());
+                    if (cmShop != null) {
+                        String shopName = cmShop.getName();
+                        if (shopName.length() > 10) {
+                            shopName = shopName.substring(0, 9) + "...";
+                        }
+                        coupon.setCouponName("店铺券" + couponName);
+                        coupon.setCouponDesc("仅可购买店铺【" + shopName + "】的商品");
+                    }
+                } else if (coupon.getCouponType() == 4) {
+                    coupon.setCouponName("新用户券" + couponName);
+                    coupon.setCouponDesc("全商城商品通用");
+                }
+            });
+        }
+    }
 }

+ 5 - 3
src/main/java/com/caimei/modules/coupon/web/CmCouponController.java

@@ -217,10 +217,12 @@ public class CmCouponController extends BaseController {
      * 查看商品优惠券详情
      */
     @RequestMapping("productDetails")
-    public String productCouponDetails(Integer productId, Model model) {
+    public String productCouponDetails(Integer productId, Integer userId, Model model) {
         Product product = productService.get(productId.toString());
-        List<CmCoupon> ordinaryCoupons = cmCouponService.findProductCoupon(product, 1);
-        List<CmCoupon> redeemCoupons = cmCouponService.findProductCoupon(product, 2);
+        String wwwServer = Global.getConfig("wwwServer");
+        product.setMainImage(AppUtils.getImageURL("product", product.getMainImage(), 0, wwwServer));
+        List<CmCoupon> ordinaryCoupons = cmCouponService.findClubCouponList(product, userId);
+        List<CmCoupon> redeemCoupons = cmCouponService.findNotRedeemedCoupon(product);
         model.addAttribute("product", product);
         model.addAttribute("ordinaryCoupons", ordinaryCoupons);
         model.addAttribute("redeemCoupons", redeemCoupons);

+ 9 - 0
src/main/java/com/caimei/modules/order/dao/NewOrderDao.java

@@ -1,5 +1,6 @@
 package com.caimei.modules.order.dao;
 
+import com.caimei.modules.coupon.entity.CmCouponOrderRecord;
 import com.caimei.modules.order.entity.CmFile;
 import com.caimei.modules.order.entity.NewOrder;
 import com.caimei.modules.product.entity.CmPromotion;
@@ -137,4 +138,12 @@ public interface NewOrderDao extends CrudDao<NewOrder> {
      * @param num
      */
     void updateSendNum(@Param("markId") int markId, @Param("num") int num);
+
+    /**
+     * 查询订单优惠券信息
+     *
+     * @param orderID
+     * @return
+     */
+    CmCouponOrderRecord findOrderCouponRecord(Integer orderID);
 }

+ 12 - 1
src/main/java/com/caimei/modules/order/entity/NewOrder.java

@@ -132,8 +132,11 @@ public class NewOrder extends DataEntity<NewOrder> {
     private String associationType;//订单关联方式: 1手动 2自动
     private Double ableUserMoney; //当前下单用户可用余额
     private String organizeStoreName;//组织门店名称
-    /** 优惠券机构关联ID */
+    /**
+     * 优惠券机构关联ID
+     */
     private Integer clubCouponId;
+    private Double couponAmount;
 
     public Integer getClubCouponId() {
         return clubCouponId;
@@ -1029,5 +1032,13 @@ public class NewOrder extends DataEntity<NewOrder> {
     public void setOrganizeStoreName(String organizeStoreName) {
         this.organizeStoreName = organizeStoreName;
     }
+
+    public Double getCouponAmount() {
+        return couponAmount;
+    }
+
+    public void setCouponAmount(Double couponAmount) {
+        this.couponAmount = couponAmount;
+    }
 }
 

+ 11 - 36
src/main/java/com/caimei/modules/order/service/NewOrderService.java

@@ -9,6 +9,8 @@ import com.caimei.modules.bulkpurchase.entity.OrderInvoice;
 import com.caimei.modules.bulkpurchase.service.OrderInvoiceService;
 import com.caimei.modules.coupon.dao.CmCouponDao;
 import com.caimei.modules.coupon.entity.CmCoupon;
+import com.caimei.modules.coupon.entity.CmCouponOrderRecord;
+import com.caimei.modules.coupon.service.CmCouponService;
 import com.caimei.modules.miniprogram.utils.UploadPicUtils;
 import com.caimei.modules.order.dao.*;
 import com.caimei.modules.order.entity.*;
@@ -109,6 +111,8 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
     private CmSecondHandDetailDao cmSecondHandDetailDao;
     @Autowired
     private CmCouponDao cmCouponDao;
+    @Autowired
+    private CmCouponService cmCouponService;
 
     @Transactional(readOnly = false)
     public void updateClauseContent(NewOrder newOrder) {
@@ -236,6 +240,12 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
                 // 修改
                 newOrderDao.update(newOrder);
             }
+            //优惠券相关
+            if (newOrder.getClubCouponId() != null && newOrder.getClubCouponId() > 0) {
+                /*CmCouponOrderRecord orderRecord = newOrderDao.findOrderCouponRecord(newOrder.getOrderID());
+                CmCoupon coupon = newOrderDao.findClubCouponById(newOrder.getClubCouponId());*/
+
+            }
             // 促销订单
             List<CmPromotion> promotionsList = new ArrayList<>();
             if (promotionsIds.size() > 0) {
@@ -2189,42 +2199,7 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
         Map<String, Object> map = new HashMap<>();
         map.put("code", 0);
         List<CmCoupon> couponList = cmCouponDao.findClubCouponList(userId);
-        couponList.forEach(coupon -> {
-            String couponName = "¥" + coupon.getCouponAmount() + " 满" + coupon.getTouchPrice() + "可用";
-            if (coupon.getCouponType() == 0) {
-                coupon.setCouponName("活动券" + couponName);
-                if ("2".equals(coupon.getProductType())) {
-                    List<Integer> productIdList = cmCouponDao.findAllProductId(coupon.getId());
-                    coupon.setProductIdList(productIdList);
-                    coupon.setCouponDesc("仅可购买指定商品");
-                } else {
-                    coupon.setCouponDesc("全商城商品通用");
-                }
-            } else if (coupon.getCouponType() == 1) {
-                coupon.setCouponName("品类券" + couponName);
-                if ("1".equals(coupon.getCategoryType())) {
-                    coupon.setCouponDesc("仅可购买产品类商品");
-                } else {
-                    coupon.setCouponDesc("仅可购买仪器类商品");
-                }
-            } else if (coupon.getCouponType() == 2) {
-                coupon.setCouponName("用户专享券" + couponName);
-                coupon.setCouponDesc("全商城商品通用");
-            } else if (coupon.getCouponType() == 3) {
-                NewCmShop cmShop = newCmShopDao.get(coupon.getShopId().toString());
-                if (cmShop != null) {
-                    String shopName = cmShop.getName();
-                    if (shopName.length() > 10) {
-                        shopName = shopName.substring(0, 9) + "...";
-                    }
-                    coupon.setCouponName("店铺券" + couponName);
-                    coupon.setCouponDesc("仅可购买店铺【" + shopName + "】的商品");
-                }
-            } else if (coupon.getCouponType() == 4) {
-                coupon.setCouponName("新用户券" + couponName);
-                coupon.setCouponDesc("全商城商品通用");
-            }
-        });
+        cmCouponService.setCouponCopywriting(couponList);
         map.put("couponList", couponList);
         return map;
     }

+ 26 - 29
src/main/resources/mappings/modules/coupon/CmCouponMapper.xml

@@ -443,38 +443,35 @@
 		  )
 	</select>
 
-	<select id="findAllValidCoupon" resultType="com.caimei.modules.coupon.entity.CmCoupon">
+	<select id="findNotRedeemedCoupon" resultType="com.caimei.modules.coupon.entity.CmCoupon">
 		SELECT
-		  `id`,
-		  `name`,
-		  `couponAmount`,
-		  `touchPrice`,
-		  `startDate`,
-		  `endDate`,
-		  `status`,
-		  `couponType`,
-		  `userId`,
-		  `shopId`,
-		  `productType`,
-		  `pcBanner`,
-		  `appletsBanner`,
-		  `categoryType`,
-		  `couponsMode`,
-		  `createDate`,
-		  `delFlag`
+		  a.`id`,
+		  a.`name`,
+		  a.`couponAmount`,
+		  a.`touchPrice`,
+		  a.`startDate`,
+		  a.`endDate`,
+		  a.`status`,
+		  a.`couponType`,
+		  a.`userId`,
+		  a.`shopId`,
+		  a.`productType`,
+		  a.`pcBanner`,
+		  a.`appletsBanner`,
+		  a.`categoryType`,
+		  a.`couponsMode`,
+		  a.`createDate`,
+		  a.`delFlag`,
+		  ccrc.redemptionCode
 		FROM
-		  cm_coupon
+		  cm_coupon a
+		  LEFT JOIN cm_coupon_redemption_code ccrc ON a.id = ccrc.couponId
 		WHERE
-		  STATUS != 2
-		  AND delFlag = 0
-		  AND NOW() BETWEEN startDate
-		  AND endDate
-		  <if test="type == 1">
-			  AND couponsMode = 0
-		  </if>
-		  <if test="type == 2">
-			AND couponsMode = 1
-		  </if>
+		  a.status != 2
+		  AND a.delFlag = 0
+		  AND NOW() BETWEEN a.startDate
+		  AND a.endDate
+		  AND a.couponsMode = 1
 	</select>
 	
 </mapper>

+ 4 - 0
src/main/resources/mappings/modules/order/OrderMapper.xml

@@ -860,4 +860,8 @@
 	<update id="updateSendNum">
         UPDATE cm_sms_statistics SET sendNum = (sendNum + #{num}) WHERE markId = #{markId}
     </update>
+
+	<select id="findOrderCouponRecord" resultType="com.caimei.modules.coupon.entity.CmCouponOrderRecord">
+
+	</select>
 </mapper>