From f489850355bae6d690b2d3e6d0627f90bde79b1d Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期五, 06 九月 2024 18:59:51 +0800
Subject: [PATCH] 1.优惠券记录新增category查询字段 2.小程序-商品历史记录根据更新时间排序 3.优惠券-用户优惠券控制已下架的优惠券不可重新上架,及当前优惠券的已经发放的情况下不可再次下发

---
 src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponRecordDTO.java        |    3 +
 src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java             |    8 +++
 src/main/java/com/mzl/flower/enums/CouponGetUserTypeEnum.java                    |    2 
 src/main/resources/mapper/flower/FlowerMapper.xml                                |    2 
 src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java    |   14 ++++++-
 src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java   |    8 ++--
 src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java      |   34 +++++++++++++++-
 src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java     |   28 +++++++++-----
 src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java |   15 +++++--
 src/main/resources/mapper/coupon/CouponRecordMapperCustom.xml                    |    5 ++
 10 files changed, 93 insertions(+), 26 deletions(-)

diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponRecordDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponRecordDTO.java
index f745ccc..50cf5f2 100644
--- a/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponRecordDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponRecordDTO.java
@@ -38,4 +38,7 @@
     @ApiModelProperty(value = "优惠券模版ID")
     private String couponId;
 
+    @ApiModelProperty(value = "优惠券种类")
+    private String category;
+
 }
diff --git a/src/main/java/com/mzl/flower/enums/CouponGetUserTypeEnum.java b/src/main/java/com/mzl/flower/enums/CouponGetUserTypeEnum.java
index c39fbd7..2b66fe3 100644
--- a/src/main/java/com/mzl/flower/enums/CouponGetUserTypeEnum.java
+++ b/src/main/java/com/mzl/flower/enums/CouponGetUserTypeEnum.java
@@ -6,7 +6,7 @@
 
 
     ALL("all","全部用户"),
-    POINT("point","指定用户"),
+    TARGET("target","指定用户"),
 
     ;
 
diff --git a/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java b/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
index 530dc08..4efcf6b 100644
--- a/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
+++ b/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
@@ -103,5 +103,11 @@
 
     CouponRecordDO getCouponByOrderId(String orderId) ;
 
-
+    /**
+     * 查看当前人员是否已经重复发过此优惠券
+     * @param couponId
+     * @param customId
+     * @return
+     */
+    boolean checkUserCouponExists(String couponId, Long customId);
 }
diff --git a/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java
index ec5067b..09c97f9 100644
--- a/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java
+++ b/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java
@@ -135,7 +135,7 @@
                     }
 
                     // 优惠券字段冗余
-                    couponRecordDO.setCategory(couponTemplateDO.getGetUserType());
+                    couponRecordDO.setCategory(couponTemplateDO.getCategory());
                     couponRecordDO.setCouponCode(couponTemplateDO.getCouponCode());
                     couponRecordDO.setCouponName(couponTemplateDO.getCouponName());
                     couponRecordDO.setCouponDiscountValue(couponTemplateDO.getCouponDiscountValue());
@@ -212,7 +212,7 @@
         // 优惠券字段冗余
         final CouponTemplateDO couponTemplateDO = couponTemplateService.getById(dto.getCouponId());
         if(null!=couponTemplateDO){
-            couponRecordDO.setCategory(couponTemplateDO.getGetUserType());
+            couponRecordDO.setCategory(couponTemplateDO.getCategory());
             couponRecordDO.setCouponCode(couponTemplateDO.getCouponCode());
             couponRecordDO.setCouponName(couponTemplateDO.getCouponName());
             couponRecordDO.setCouponDiscountValue(couponTemplateDO.getCouponDiscountValue());
@@ -524,4 +524,14 @@
         }
         return null;
     }
+
+    @Override
+    public boolean checkUserCouponExists(String couponId, Long customId) {
+        QueryWrapper<CouponRecordDO> queryWrapper=new QueryWrapper<>();
+        queryWrapper.lambda().eq(CouponRecordDO::getDeleted,TrueOrFalseEnum.FALSE.isFlag())
+                .eq(CouponRecordDO::getCouponId,couponId)
+                .eq(CouponRecordDO::getCustomerId,customId)
+        ;
+        return baseMapper.selectCount(queryWrapper)>0;
+    }
 }
diff --git a/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java b/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java
index ce2b9af..dd40bfd 100644
--- a/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java
+++ b/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java
@@ -40,6 +40,7 @@
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -225,7 +226,7 @@
         // 判断当前的优惠券的用户类型是指定用户还是全部用户,如果是指定用户的情况下需要发布优惠券
         if (StringUtils.isNotBlank(couponTemplateDO.getGetUserType())
                 && StringUtils.isNotBlank(couponTemplateDO.getCategory())
-                && couponTemplateDO.getGetUserType().equals(CouponGetUserTypeEnum.POINT.getType())
+                && couponTemplateDO.getGetUserType().equals(CouponGetUserTypeEnum.TARGET.getType())
                 && couponTemplateDO.getCategory().equals(CouponCategoryEnum.USER.getStatus())
         ) {
 
@@ -278,7 +279,7 @@
                     couponRecordDO.setCouponCode(couponTemplateDO.getCouponCode());
                     couponRecordDO.setCouponName(couponTemplateDO.getCouponName());
                     //  优惠券种类
-                    couponRecordDO.setCategory(couponTemplateDO.getGetUserType());
+                    couponRecordDO.setCategory(couponTemplateDO.getCategory());
                     couponRecordDO.setMinOrderAmount(couponTemplateDO.getMinOrderAmount());
                     couponRecordDO.setCouponDiscountValue(couponTemplateDO.getCouponDiscountValue());
                     couponRecordDO.setGetType(couponTemplateDO.getGetType());
@@ -290,8 +291,14 @@
                     // 创建相关信息
                     couponRecordDO.create(SecurityUtils.getUserId());
 
-                    return couponRecordDO;
-                }).collect(Collectors.toList());
+                    // 查看当前优惠券是不是已经存在,存在的话则不能添加,防止同一人员重复下发同一张指定的优惠券
+                    if(!couponRecordService.checkUserCouponExists(pointCustomRe.getCouponId(),pointCustomRe.getCustomId())){
+                        return couponRecordDO;
+                    }else{
+                        return null;
+                    }
+
+                }).filter(Objects::nonNull).collect(Collectors.toList());
 
                 // 批量保存优惠券信息
                 couponRecordService.saveBatch(couponUsageDOList);
diff --git a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java
index e14979b..9ce4203 100644
--- a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java
+++ b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java
@@ -52,7 +52,7 @@
         CreateCouponTemplateBO couponTemplateBO = new CreateCouponTemplateBO();
         BeanUtils.copyProperties(dto, couponTemplateBO);
 
-        // 设置成积分优惠券
+        // 设置成活动优惠券
         couponTemplateBO.setCategory(CouponCategoryEnum.ACTIVITY.getStatus());
         couponTemplateBO.setGetUserType(CouponGetUserTypeEnum.ALL.getType());
 
@@ -81,7 +81,7 @@
         BeanUtils.copyProperties(couponTemplateDO,couponTemplateBO);
         BeanUtils.copyProperties(dto, couponTemplateBO);
 
-        // 设置成积分优惠券
+        // 设置成活动优惠券
         couponTemplateBO.setCategory(CouponCategoryEnum.ACTIVITY.getStatus());
         couponTemplateBO.setGetUserType(CouponGetUserTypeEnum.ALL.getType());
 
@@ -112,7 +112,7 @@
     @GetMapping("/page")
     @ApiOperation(value = "查询-分页", notes = "查询-分页")
     public ResponseEntity<ReturnDataDTO<Page<CouponTemplatePointVO>>> page(Page page, QueryCouponDTO dto) {
-        // 设置只查询积分优惠券的
+        // 设置只查询活动优惠券的
         dto.setCategory(CouponCategoryEnum.ACTIVITY.getStatus());
         Page<CouponTemplateVO> resultPage = couponTemplateService.getPage(page, dto);
         return returnData(R.SUCCESS.getCode(), ConverterUtil.transPage(resultPage, CouponTemplateActivyVO.class));
@@ -121,7 +121,7 @@
     @GetMapping("/list")
     @ApiOperation(value = "查询-全部", notes = "查询-全部")
     public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> list(QueryCouponDTO dto) {
-        // 设置只查询积分优惠券的
+        // 设置只查询活动优惠券的
         dto.setCategory(CouponCategoryEnum.ACTIVITY.getStatus());
         return returnData(R.SUCCESS.getCode(), ConverterUtil.transList(couponTemplateService.getList(dto), CouponTemplateActivyVO.class));
     }
diff --git a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java
index 13d7bd7..7939f58 100644
--- a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java
+++ b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java
@@ -13,14 +13,12 @@
 import com.mzl.flower.dto.response.coupon.CouponTemplateUserVO;
 import com.mzl.flower.dto.response.coupon.CouponTemplateVO;
 import com.mzl.flower.entity.coupon.CouponTemplateDO;
-import com.mzl.flower.enums.CouponCategoryEnum;
-import com.mzl.flower.enums.CouponGetUserTypeEnum;
-import com.mzl.flower.enums.CouponTypeEnum;
-import com.mzl.flower.enums.CouponUsageTypeEnum;
+import com.mzl.flower.enums.*;
 import com.mzl.flower.service.coupon.CouponTemplateService2;
 import com.mzl.flower.utils.ConverterUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
@@ -60,8 +58,8 @@
         BeanUtils.copyProperties(dto, couponTemplateBO);
 
         // 设置成指定用户
-        couponTemplateBO.setGetUserType(CouponGetUserTypeEnum.POINT.getType());
-        // 设置成积分优惠券
+        couponTemplateBO.setGetUserType(CouponGetUserTypeEnum.TARGET.getType());
+        // 设置成用户优惠券
         couponTemplateBO.setCategory(CouponCategoryEnum.USER.getStatus());
         // 设置默认类型
         couponTemplateBO.setUsageType(CouponUsageTypeEnum.GET_AFTER_TIME.getType());
@@ -98,8 +96,8 @@
         BeanUtils.copyProperties(dto, couponTemplateBO);
 
          // 设置成指定用户
-        couponTemplateBO.setGetUserType(CouponGetUserTypeEnum.POINT.getType());
-        // 设置成积分优惠券
+        couponTemplateBO.setGetUserType(CouponGetUserTypeEnum.TARGET.getType());
+        // 设置成用户优惠券
         couponTemplateBO.setCategory(CouponCategoryEnum.USER.getStatus());
         // 设置默认类型
         couponTemplateBO.setUsageType(CouponUsageTypeEnum.GET_AFTER_TIME.getType());
@@ -134,7 +132,7 @@
     public ResponseEntity<ReturnDataDTO<Page<CouponTemplatePointVO>>> page(
             Page page, QueryCouponDTO dto
     ) {
-        // 设置只查询积分优惠券的
+        // 设置只查询用户优惠券的
         dto.setCategory(CouponCategoryEnum.USER.getStatus());
         Page<CouponTemplateVO> resultPage = couponTemplateService.getPage(page, dto);
         return returnData(R.SUCCESS.getCode(), ConverterUtil.transPage(resultPage, CouponTemplateUserVO.class));
@@ -144,7 +142,7 @@
     @ApiOperation(value = "查询-全部", notes = "查询-全部")
     public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> list(QueryCouponDTO dto
     ) {
-        // 设置只查询积分优惠券的
+        // 设置只查询用户优惠券的
         dto.setCategory(CouponCategoryEnum.USER.getStatus());
         return returnData(R.SUCCESS.getCode(), ConverterUtil.transList(couponTemplateService.getList(dto), CouponTemplateUserVO.class));
     }
@@ -159,6 +157,16 @@
             throw new ValidationException("优惠券不存在");
         }
 
+        if(StringUtils.isNotBlank(couponTemplateDO.getStatus())
+                &&  couponTemplateDO.getStatus().equals(CouponStatusEnum.ACTIVE.getStatus())){
+            throw new ValidationException("已发布的的商品不可重复发布");
+        }
+
+        if(StringUtils.isNotBlank(couponTemplateDO.getStatus())
+              &&  couponTemplateDO.getStatus().equals(CouponStatusEnum.EXPIRED.getStatus())){
+            throw new ValidationException("已下架的商品不可重复上架");
+        }
+
         couponTemplateService.activeCouponTemplate(id);
 
         return returnData(R.SUCCESS.getCode(), null);
diff --git a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java
index 762b64a..fe543b1 100644
--- a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java
+++ b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java
@@ -53,7 +53,7 @@
         CreateCouponTemplateBO couponTemplateBO = new CreateCouponTemplateBO();
         BeanUtils.copyProperties(dto, couponTemplateBO);
 
-        // 设置成积分优惠券
+        // 设置成会员优惠券
         couponTemplateBO.setCategory(CouponCategoryEnum.MEMBER.getStatus());
 
         couponTemplateService.createCouponTemplate(couponTemplateBO);
@@ -78,7 +78,7 @@
         BeanUtils.copyProperties(couponTemplateDO,couponTemplateBO);
         BeanUtils.copyProperties(dto, couponTemplateBO);
 
-        // 设置成积分优惠券
+        // 设置成会员优惠券
         couponTemplateBO.setCategory(CouponCategoryEnum.MEMBER.getStatus());
 
         couponTemplateService.updateCouponTemplate(couponTemplateBO);
@@ -110,7 +110,7 @@
     public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVipVO>>> page(
             Page page, QueryCouponDTO dto
     ) {
-        // 设置只查询积分优惠券的
+        // 设置只查询会员优惠券的
         dto.setCategory(CouponCategoryEnum.MEMBER.getStatus());
         Page<CouponTemplateVO> resultPage = couponTemplateService.getPage(page, dto);
         return returnData(R.SUCCESS.getCode(), ConverterUtil.transPage(resultPage, CouponTemplateVipVO.class));
@@ -125,6 +125,34 @@
         return returnData(R.SUCCESS.getCode(), ConverterUtil.transList(couponTemplateService.getList(dto), CouponTemplateVipVO.class));
     }
 
+    @PutMapping("/active/{id}")
+    @ApiOperation(value = "发布", notes = "发布")
+    public ResponseEntity<ReturnDataDTO> active(@PathVariable String id) {
+
+        CouponTemplateDO couponTemplateDO = couponTemplateService.getById(id);
+        if (null == couponTemplateDO) {
+            throw new ValidationException("优惠券不存在");
+        }
+
+        couponTemplateService.activeCouponTemplate(id);
+
+        return returnData(R.SUCCESS.getCode(), null);
+    }
+
+    @PutMapping("/expire/{id}")
+    @ApiOperation(value = "下架", notes = "下架")
+    public ResponseEntity<ReturnDataDTO> expire(@PathVariable String id) {
+
+        CouponTemplateDO couponTemplateDO = couponTemplateService.getById(id);
+        if (null == couponTemplateDO) {
+            throw new ValidationException("优惠券不存在");
+        }
+
+        couponTemplateService.expireCouponTemplate(id);
+
+        return returnData(R.SUCCESS.getCode(), null);
+    }
+
 
     private void valid(CreateCouponTemplateVipDTO dto){
 
diff --git a/src/main/resources/mapper/coupon/CouponRecordMapperCustom.xml b/src/main/resources/mapper/coupon/CouponRecordMapperCustom.xml
index 4b1c2e9..7970cda 100644
--- a/src/main/resources/mapper/coupon/CouponRecordMapperCustom.xml
+++ b/src/main/resources/mapper/coupon/CouponRecordMapperCustom.xml
@@ -118,6 +118,11 @@
         <if test="param.couponId != null and param.couponId != ''">
             and t.coupon_id =  #{param.couponId}
         </if>
+        <if test="param.category != null and param.category != ''">
+            and t.category =  #{param.category}
+        </if>
+
+
 
         order by t.create_time desc
     </sql>
diff --git a/src/main/resources/mapper/flower/FlowerMapper.xml b/src/main/resources/mapper/flower/FlowerMapper.xml
index 5a0b0c1..3f5857f 100644
--- a/src/main/resources/mapper/flower/FlowerMapper.xml
+++ b/src/main/resources/mapper/flower/FlowerMapper.xml
@@ -320,7 +320,7 @@
                 </choose>
             </when>
             <otherwise>
-                order by c.create_time desc
+                order by c.update_time desc
             </otherwise>
         </choose>
     </select>

--
Gitblit v1.9.3