فهرست منبع

获取当前机构下所有已领取优惠券

plf 3 سال پیش
والد
کامیت
558f38fb4f

+ 4 - 2
src/main/java/com/caimei/modules/coupon/dao/CmCouponClubDao.java

@@ -5,6 +5,7 @@ import com.caimei.modules.coupon.entity.CmCouponClub;
 import com.caimei.modules.coupon.entity.CmCouponRedemptionCode;
 import com.thinkgem.jeesite.common.persistence.CrudDao;
 import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -47,7 +48,8 @@ public interface CmCouponClubDao extends CrudDao<CmCouponClub> {
     /**
      * 更新兑换码使用状态
      *
-     * @param id
+     * @param id           兑换码id
+     * @param clubCouponId 用户关联优惠券id
      */
-    void updateRedemptionCode(String id);
+    void updateRedemptionCode(@Param("id") String id, @Param("clubCouponId") String clubCouponId);
 }

+ 9 - 0
src/main/java/com/caimei/modules/coupon/dao/CmCouponDao.java

@@ -50,6 +50,7 @@ public interface CmCouponDao extends CrudDao<CmCoupon> {
 
     /**
      * 查询已兑换数量
+     *
      * @param couponId
      * @return
      */
@@ -70,4 +71,12 @@ public interface CmCouponDao extends CrudDao<CmCoupon> {
      * @return
      */
     List<Integer> findAllProductId(String couponId);
+
+    /**
+     * 查询所有有效优惠券
+     *
+     * @param type 优惠券类型: 1普通优惠券  2兑换券优惠券
+     * @return
+     */
+    List<CmCoupon> findAllValidCoupon(int type);
 }

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

@@ -21,7 +21,9 @@ public class CmCoupon extends DataEntity<CmCoupon> {
     private String name;        // 活动主题
     private BigDecimal couponAmount;        // 优惠券金额(面值)
     private BigDecimal touchPrice;        // 优惠满减条件金额
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date startDate;        // 使用开始时间(有效期)
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date endDate;        // 使用结束时间(有效期)
     private String status;        // 状态 0未生效 1已生效 2已关闭 3已失效
     private Integer couponType;        // 劵类型 0活动券 1品类券 2用户专享券 3店铺券 4新用户券
@@ -40,6 +42,8 @@ public class CmCoupon extends DataEntity<CmCoupon> {
     private String shopName;        //供应商名称
     private Integer codeNum;       //兑换码数量
     private Integer clubCouponId;      //机构领券id
+    private String couponName;          //优惠券名称
+    private String desc;        //描述
     private CmCouponClub couponClub;
     private NewCmShop shop;
     private List<Integer> productIdList;
@@ -258,4 +262,20 @@ public class CmCoupon extends DataEntity<CmCoupon> {
     public void setProductIdList(List<Integer> productIdList) {
         this.productIdList = productIdList;
     }
+
+    public String getCouponName() {
+        return couponName;
+    }
+
+    public void setCouponName(String couponName) {
+        this.couponName = couponName;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
 }

+ 14 - 6
src/main/java/com/caimei/modules/coupon/entity/CmCouponRedemptionCode.java

@@ -2,7 +2,6 @@ package com.caimei.modules.coupon.entity;
 
 import com.thinkgem.jeesite.common.persistence.DataEntity;
 
-import java.io.Serializable;
 import java.util.Date;
 
 /**
@@ -13,11 +12,12 @@ import java.util.Date;
  */
 public class CmCouponRedemptionCode extends DataEntity<CmCouponRedemptionCode> {
     private Integer couponId;       //优惠券id
-    private Integer userId;         //机构用户id
+    private Integer clubCouponId;         //用户关联优惠券id(对应cm_coupon_club)
     private String redemptionCode;      //兑换码(16位)
     private String status;      //兑换状态:1未兑换 2已兑换
     private Date redemptionTime;     //兑换时间
     private Date addTime;        //添加时间
+    private Integer userId;     //机构用户id
 
     public Integer getCouponId() {
         return couponId;
@@ -27,12 +27,12 @@ public class CmCouponRedemptionCode extends DataEntity<CmCouponRedemptionCode> {
         this.couponId = couponId;
     }
 
-    public Integer getUserId() {
-        return userId;
+    public Integer getClubCouponId() {
+        return clubCouponId;
     }
 
-    public void setUserId(Integer userId) {
-        this.userId = userId;
+    public void setClubCouponId(Integer clubCouponId) {
+        this.clubCouponId = clubCouponId;
     }
 
     public String getRedemptionCode() {
@@ -66,4 +66,12 @@ public class CmCouponRedemptionCode extends DataEntity<CmCouponRedemptionCode> {
     public void setAddTime(Date addTime) {
         this.addTime = addTime;
     }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
 }

+ 1 - 1
src/main/java/com/caimei/modules/coupon/service/CmCouponClubService.java

@@ -101,7 +101,7 @@ public class CmCouponClubService extends CrudService<CmCouponClubDao, CmCouponCl
         couponClub.setCreateDate(new Date());
         couponClub.setDelFlag("0");
         cmCouponClubDao.insertCouponClub(couponClub);
-        cmCouponClubDao.updateRedemptionCode(cmCouponRedemptionCode.getId());
+        cmCouponClubDao.updateRedemptionCode(cmCouponRedemptionCode.getId(), couponClub.getId());
         map.put("code", 0);
         map.put("msg", "优惠券兑换成功");
         return map;

+ 37 - 0
src/main/java/com/caimei/modules/coupon/service/CmCouponService.java

@@ -15,6 +15,7 @@ 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;
@@ -23,6 +24,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
+import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -288,4 +290,39 @@ public class CmCouponService extends CrudService<CmCouponDao, CmCoupon> {
         }
         return couponsLogo;
     }
+
+    /**
+     * 查询对应优惠券信息
+     *
+     * @param product 商品数据
+     * @param type    优惠券类型: 1普通优惠券  2兑换券优惠券
+     * @return
+     */
+    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);
+        if (couponList != null && couponList.size() > 0) {
+            Iterator<CmCoupon> iterator = couponList.iterator();
+            while (iterator.hasNext()) {
+                CmCoupon coupon = iterator.next();
+                if (coupon.getCouponType() == 0 && "2".equals(coupon.getProductType())) {
+                    //活动券
+                    List<Integer> productIds = cmCouponDao.findAllProductId(coupon.getId());
+                    if (!productIds.contains(product.getProductID())) {
+                        iterator.remove();
+                        continue;
+                    }
+                }
+                if (coupon.getCouponType() == 1 && !coupon.getCategoryType().equals(product.getCommodityType())) {
+                    iterator.remove();
+                    continue;
+                }
+                if (coupon.getCouponType() == 3 && !coupon.getShopId().equals(product.getShopID())) {
+                    iterator.remove();
+                }
+            }
+        }
+        return couponList;
+    }
 }

+ 19 - 1
src/main/java/com/caimei/modules/coupon/web/CmCouponController.java

@@ -5,11 +5,13 @@ import com.caimei.modules.coupon.entity.CmCouponAssociate;
 import com.caimei.modules.coupon.entity.CmCouponRedemptionCode;
 import com.caimei.modules.coupon.service.CmCouponService;
 import com.caimei.modules.product.entity.Product;
+import com.caimei.modules.product.service.ProductService;
 import com.caimei.modules.user.dao.CmUserDao;
 import com.caimei.modules.user.dao.NewCmClubDao;
 import com.caimei.modules.user.entity.CmUser;
 import com.caimei.modules.user.entity.NewCmClub;
 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.utils.StringUtils;
@@ -44,6 +46,8 @@ public class CmCouponController extends BaseController {
     private CmUserDao cmUserDao;
     @Autowired
     private NewCmClubDao newCmClubDao;
+    @Autowired
+    private ProductService productService;
 
     @ModelAttribute
     public CmCoupon get(@RequestParam(required = false) String id) {
@@ -205,7 +209,21 @@ public class CmCouponController extends BaseController {
     public String redemptionCodeList(CmCouponRedemptionCode redemptionCode, HttpServletRequest request, HttpServletResponse response, Model model) {
         Page<CmCouponRedemptionCode> page = cmCouponService.redemptionCodeList(new Page<CmCouponRedemptionCode>(request, response), redemptionCode);
         model.addAttribute("page", page);
-        model.addAttribute("redemptionCode",redemptionCode);
+        model.addAttribute("redemptionCode", redemptionCode);
         return "/modules/coupon/redemptionCodeList";
     }
+
+    /**
+     * 查看商品优惠券详情
+     */
+    @RequestMapping("productDetails")
+    public String productCouponDetails(Integer productId, Model model) {
+        Product product = productService.get(productId.toString());
+        List<CmCoupon> ordinaryCoupons = cmCouponService.findProductCoupon(product, 1);
+        List<CmCoupon> redeemCoupons = cmCouponService.findProductCoupon(product, 2);
+        model.addAttribute("product", product);
+        model.addAttribute("ordinaryCoupons", ordinaryCoupons);
+        model.addAttribute("redeemCoupons", redeemCoupons);
+        return "/modules/coupon/productCouponDetails";
+    }
 }

+ 33 - 3
src/main/java/com/caimei/modules/order/service/NewOrderService.java

@@ -2190,9 +2190,39 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
         map.put("code", 0);
         List<CmCoupon> couponList = cmCouponDao.findClubCouponList(userId);
         couponList.forEach(coupon -> {
-            if (coupon.getCouponType() == 0 && "2".equals(coupon.getProductType())) {
-                List<Integer> productIdList = cmCouponDao.findAllProductId(coupon.getId());
-                coupon.setProductIdList(productIdList);
+            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.setDesc("仅可购买指定商品");
+                } else {
+                    coupon.setDesc("全商城商品通用");
+                }
+            } else if (coupon.getCouponType() == 1) {
+                coupon.setCouponName("品类券" + couponName);
+                if ("1".equals(coupon.getCategoryType())) {
+                    coupon.setDesc("仅可购买产品类商品");
+                } else {
+                    coupon.setDesc("仅可购买仪器类商品");
+                }
+            } else if (coupon.getCouponType() == 2) {
+                coupon.setCouponName("用户专享券" + couponName);
+                coupon.setDesc("全商城商品通用");
+            } 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.setDesc("仅可购买店铺【" + shopName + "】的商品");
+                }
+            } else if (coupon.getCouponType() == 4) {
+                coupon.setCouponName("新用户券" + couponName);
+                coupon.setDesc("全商城商品通用");
             }
         });
         map.put("couponList", couponList);

+ 11 - 4
src/main/resources/mappings/modules/coupon/CmCouponClubMapper.xml

@@ -189,7 +189,7 @@
         SELECT
           `id`,
           `couponId`,
-          `userId`,
+          `clubCouponId`,
           `redemptionCode`,
           `status`,
           `redemptionTime`,
@@ -220,7 +220,7 @@
           AND id = #{couponId}
     </select>
 
-	<insert id="insertCouponClub">
+	<insert id="insertCouponClub" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
         INSERT INTO `cm_coupon_club` (
           `userId`,
           `couponId`,
@@ -244,8 +244,15 @@
           )
     </insert>
 
-	<update id="updateRedemptionCode">
-        UPDATE cm_coupon_redemption_code SET status = 2, redemptionTime = NOW() WHERE id = #{id}
+	<update id="updateRedemptionCode">UPDATE
+		UPDATE
+		  cm_coupon_redemption_code
+		SET
+		  STATUS = 2,
+		  redemptionTime = NOW(),
+		  clubCouponId = #{clubCouponId}
+		WHERE
+		  id = #{id}
     </update>
 	
 </mapper>

+ 38 - 4
src/main/resources/mappings/modules/coupon/CmCouponMapper.xml

@@ -340,7 +340,7 @@
 		SELECT
 		  `id`,
 		  `couponId`,
-		  `userId`,
+		  `clubCouponId`,
 		  `redemptionCode`,
 		  `status`,
 		  `redemptionTime`,
@@ -354,7 +354,7 @@
 	<insert id="insertRedemptionCode">
 		INSERT INTO `cm_coupon_redemption_code` (
 		  `couponId`,
-		  `userId`,
+		  `clubCouponId`,
 		  `redemptionCode`,
 		  `status`,
 		  `redemptionTime`,
@@ -363,7 +363,7 @@
 		VALUES
 		  (
 			#{couponId},
-			#{userId},
+			#{clubCouponId},
 			#{redemptionCode},
 			#{status},
 			#{redemptionTime},
@@ -375,7 +375,7 @@
 		SELECT
 		  `id`,
 		  `couponId`,
-		  `userId`,
+		  `clubCouponId`,
 		  `redemptionCode`,
 		  `status`,
 		  `redemptionTime`,
@@ -442,5 +442,39 @@
 			OR appletsStatus = 1
 		  )
 	</select>
+
+	<select id="findAllValidCoupon" 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`
+		FROM
+		  cm_coupon
+		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>
+	</select>
 	
 </mapper>

+ 2 - 1
src/main/resources/mappings/modules/product/ProductMapper.xml

@@ -144,7 +144,8 @@
 		a.machineType as "machineType",
 		a.trainingMethod as "trainingMethod",
 		a.trainingType as "trainingType",
-		a.trainingFee as "trainingFee"
+		a.trainingFee as "trainingFee",
+		a.commodityType as "commodityType"
 	</sql>
 
 	<sql id="productJoins">

+ 16 - 0
src/main/webapp/WEB-INF/views/modules/coupon/productCouponDetails.jsp

@@ -0,0 +1,16 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: Administrator
+  Date: 2021/8/20
+  Time: 10:54
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>Title</title>
+</head>
+<body>
+
+</body>
+</html>