From e425e5d101e1d48e40674a2a801efb8dd060e8a5 Mon Sep 17 00:00:00 2001
From: gongzuming <gongzuming>
Date: 星期五, 20 九月 2024 13:44:35 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master-v2'

---
 src/main/java/com/mzl/flower/service/flower/FlowerCategoryService.java           |    4 ++
 src/main/java/com/mzl/flower/mapper/flower/FlowerCategoryMapper.java             |    2 +
 src/main/java/com/mzl/flower/service/payment/OrderService.java                   |    4 +-
 src/main/java/com/mzl/flower/web/customer/CustomerSignInController.java          |    4 +-
 src/main/java/com/mzl/flower/dto/response/flower/FlowerCategoryTreeDTO.java      |    2 +
 src/main/java/com/mzl/flower/service/point/PointGoodsService.java                |    4 -
 src/main/java/com/mzl/flower/web/flower/FlowerCategoryController.java            |    6 +++
 src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java |   10 +++-
 src/main/resources/mapper/flower/FlowerCategoryMapper.xml                        |   29 ++++++++++++++
 9 files changed, 55 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/mzl/flower/dto/response/flower/FlowerCategoryTreeDTO.java b/src/main/java/com/mzl/flower/dto/response/flower/FlowerCategoryTreeDTO.java
index 93ababc..d9f9c08 100644
--- a/src/main/java/com/mzl/flower/dto/response/flower/FlowerCategoryTreeDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/flower/FlowerCategoryTreeDTO.java
@@ -67,4 +67,6 @@
 
     @ApiModelProperty(value = "级别限制")
     private String levelLimit;
+
+    private Integer childrenCount;
 }
diff --git a/src/main/java/com/mzl/flower/mapper/flower/FlowerCategoryMapper.java b/src/main/java/com/mzl/flower/mapper/flower/FlowerCategoryMapper.java
index f8f58c9..ec0137a 100644
--- a/src/main/java/com/mzl/flower/mapper/flower/FlowerCategoryMapper.java
+++ b/src/main/java/com/mzl/flower/mapper/flower/FlowerCategoryMapper.java
@@ -14,6 +14,8 @@
 
 @Repository
 public interface FlowerCategoryMapper extends BaseMapper<FlowerCategory> {
+    List<FlowerCategoryTreeDTO> selectCategoryList(@Param("condition") FlowerCategoryQueryDTO dto);
+
     List<FlowerCategoryTreeDTO> selectTreeList(@Param("condition") FlowerCategoryQueryDTO dto);
 
     void clearParamByParamId(@Param("paramId") Long paramId);
diff --git a/src/main/java/com/mzl/flower/service/flower/FlowerCategoryService.java b/src/main/java/com/mzl/flower/service/flower/FlowerCategoryService.java
index 41f590e..b90f6c8 100644
--- a/src/main/java/com/mzl/flower/service/flower/FlowerCategoryService.java
+++ b/src/main/java/com/mzl/flower/service/flower/FlowerCategoryService.java
@@ -122,6 +122,10 @@
         return dto;
     }
 
+    public List<FlowerCategoryTreeDTO> selectCategoryList(FlowerCategoryQueryDTO dto){
+        return categoryMapper.selectCategoryList(dto);
+    }
+
     public List<FlowerCategoryTreeDTO> selectCategoryTree(FlowerCategoryQueryDTO dto) {
         List<FlowerCategoryTreeDTO> treeList = categoryMapper.selectTreeList(dto);
         treeList = (List<FlowerCategoryTreeDTO>) TreeBuilderUtil.buildListToTree(treeList);
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 b33c44a..247093e 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
@@ -421,7 +421,9 @@
             if(couponTemplateDO==null){
                 throw new ValidationException("优惠券不存在");
             }
-
+            if(couponTemplateDO.getCouponAmount()<=0 ){
+               throw new ValidationException("优惠券已兑换完");
+            }
             CustomerPoint cp = customerPointMapper.selectOne(new LambdaQueryWrapper<CustomerPoint>()
                     .eq(CustomerPoint::getUserId, SecurityUtils.getUserId()));
             if(cp == null || (cp.getTotalPoint()-cp.getUsedPoint()-cp.getExpiredPoint()- cp.getExpiredPoint()) < couponTemplateDO.getPoint() * dto.getNum()){
@@ -439,6 +441,10 @@
             recordDTO.setCustomerId(customer.getId());
             couponRecordService.createCouponRecord(recordDTO);
 
+//            //更新优惠券数量
+//            couponTemplateDO.setCouponAmount(couponTemplateDO.getCouponAmount()-dto.getNum());
+//            couponTemplateService.updateById(couponTemplateDO);
+
             //更新积分汇总
             cp.setUsedPoint(cp.getUsedPoint()+couponTemplateDO.getPoint());
             customerPointMapper.updateById(cp);
@@ -454,8 +460,6 @@
             detail.setRemarks(couponTemplateDO.getCouponName());
             detail.create(SecurityUtils.getUserId());
             customerPointDetailMapper.insert(detail);
-        }catch (Exception e){
-            throw new ValidationException("兑换失败");
         }finally {
             lockService.releaseObjectLock(key,"");
         }
diff --git a/src/main/java/com/mzl/flower/service/payment/OrderService.java b/src/main/java/com/mzl/flower/service/payment/OrderService.java
index 0b26afb..681a6fd 100644
--- a/src/main/java/com/mzl/flower/service/payment/OrderService.java
+++ b/src/main/java/com/mzl/flower/service/payment/OrderService.java
@@ -541,7 +541,7 @@
         List<FlowerCartListDTO> flowers = p.getFlowers();
         Map<Long, List<ParamItemDTO>> paramMap = new HashMap<>();
         final BigDecimal flowerAmount = order.getFlowerAmount();//订单商品总价
-        final BigDecimal memberCouponAmount = order.getMemberCouponAmount();//使用优惠券面值
+        final BigDecimal memberCouponAmount = getAmount(order.getMemberCouponAmount());//使用优惠券面值
         BigDecimal usedCouponAmount = new BigDecimal(0);
         for (int i = 0; i < flowers.size(); i++) {
             FlowerCartListDTO f = flowers.get(i);
@@ -637,7 +637,7 @@
     private BigDecimal calculateCoupon(BigDecimal couponAmount, BigDecimal itemTotalAmount
             , BigDecimal totalAmount, Integer num, BigDecimal price
             , boolean isLastOne, BigDecimal usedCouponAmount){
-        if(couponAmount == null){
+        if(couponAmount == null || couponAmount.doubleValue() == 0){
             return new BigDecimal(0);
         }
 
diff --git a/src/main/java/com/mzl/flower/service/point/PointGoodsService.java b/src/main/java/com/mzl/flower/service/point/PointGoodsService.java
index 69c144b..e56ab9f 100644
--- a/src/main/java/com/mzl/flower/service/point/PointGoodsService.java
+++ b/src/main/java/com/mzl/flower/service/point/PointGoodsService.java
@@ -143,7 +143,7 @@
             if(!Constants.POINT_GOODS_STATUS.A.name().equals(p.getStatus())){
                 throw new ValidationException("商品未上架");
             }
-            if(p.getStock()< dto.getNum()){
+            if(p.getStock() <=0 || p.getStock()< dto.getNum()){
                 throw new ValidationException("商品库存不足");
             }
             CustomerPoint cp = customerPointMapper.selectOne(new LambdaQueryWrapper<CustomerPoint>()
@@ -190,8 +190,6 @@
             //更新库存
             p.setStock(p.getStock()- dto.getNum());
             pointGoodsMapper.updateById(p);
-        }catch (Exception e){
-            throw new ValidationException("兑换失败");
         }finally {
             lockService.releaseObjectLock(key,"");
         }
diff --git a/src/main/java/com/mzl/flower/web/customer/CustomerSignInController.java b/src/main/java/com/mzl/flower/web/customer/CustomerSignInController.java
index 5254160..96d4cda 100644
--- a/src/main/java/com/mzl/flower/web/customer/CustomerSignInController.java
+++ b/src/main/java/com/mzl/flower/web/customer/CustomerSignInController.java
@@ -39,8 +39,8 @@
     @GetMapping("/list")
     @ApiOperation(value = "签到历史")
     public ResponseEntity<ReturnDataDTO<List<CustomerPointDetailDTO>>> signList(String startDateStr, String endDateStr)  {
-        LocalDate startDate = LocalDate.parse(startDateStr);
-        LocalDate endDate = LocalDate.parse(endDateStr);
+        LocalDate startDate = customerPointService.parseLocalDate(startDateStr);
+        LocalDate endDate = customerPointService.parseLocalDate(endDateStr);
 
         return returnData(R.SUCCESS.getCode(), customerPointService.signList(startDate, endDate));
     }
diff --git a/src/main/java/com/mzl/flower/web/flower/FlowerCategoryController.java b/src/main/java/com/mzl/flower/web/flower/FlowerCategoryController.java
index 772fdbb..e40416e 100644
--- a/src/main/java/com/mzl/flower/web/flower/FlowerCategoryController.java
+++ b/src/main/java/com/mzl/flower/web/flower/FlowerCategoryController.java
@@ -66,6 +66,12 @@
         return returnData(R.SUCCESS.getCode(), categoryService.selectCategoryTree(dto));
     }
 
+    @GetMapping("/list")
+    @ApiOperation(value = "获取商品分类列表")
+    public ResponseEntity<ReturnDataDTO<List<FlowerCategoryTreeDTO>>> selectCategoryList(FlowerCategoryQueryDTO dto){
+        return returnData(R.SUCCESS.getCode(), categoryService.selectCategoryList(dto));
+    }
+
     @GetMapping("/tree/delete")
     @ApiOperation(value = "删除商品分类")
     @ApiImplicitParams({
diff --git a/src/main/resources/mapper/flower/FlowerCategoryMapper.xml b/src/main/resources/mapper/flower/FlowerCategoryMapper.xml
index 0051a46..7cd07ee 100644
--- a/src/main/resources/mapper/flower/FlowerCategoryMapper.xml
+++ b/src/main/resources/mapper/flower/FlowerCategoryMapper.xml
@@ -2,6 +2,35 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.mzl.flower.mapper.flower.FlowerCategoryMapper">
 
+    <select id="selectCategoryList" resultType="com.mzl.flower.dto.response.flower.FlowerCategoryTreeDTO">
+        SELECT q.*
+        , (select count(1) from t_flower_category f where f.parent_id = q.id) childrenCount
+        FROM t_flower_category q
+        WHERE q.deleted = 0
+        <if test="condition.name != null and condition.name != ''">
+            AND (q.name LIKE concat('%', #{condition.name},'%')
+                or exists (
+                    select 1 from t_flower_category sq where sq.parent_id = q.id and sq.name LIKE concat('%', #{condition.name},'%')
+                )
+            )
+        </if>
+        <choose>
+            <when test="condition.parentId != null">
+                AND q.parent_id = #{condition.parentId}
+            </when>
+            <otherwise>
+                AND q.parent_id is null
+            </otherwise>
+        </choose>
+        <if test="condition.shown != null and condition.shown">
+            AND (q.shown = 1 or q.shown is null)
+        </if>
+        <if test="condition.shown != null and !condition.shown">
+            AND q.shown = 0
+        </if>
+        ORDER BY q.sort_by, q.create_time Desc
+    </select>
+
     <select id="selectTreeList" resultType="com.mzl.flower.dto.response.flower.FlowerCategoryTreeDTO">
         SELECT q.*
         , (select min(f.price) from t_flower f where f.category = q.id and f.status = 'UP' and f.deleted = 0) priceLow

--
Gitblit v1.9.3