From 69c7aa6c7cf05197c0b1d1e9e19759943a5fb3a1 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期三, 19 二月 2025 09:14:41 +0800
Subject: [PATCH] 111

---
 server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java               |    4 
 server/services/src/main/java/com/doumee/service/business/impl/DiscountServiceImpl.java       |   48 ++++++-
 server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java   |   32 +++++
 server/web/src/main/java/com/doumee/api/web/BusinessApi.java                                  |   36 ++++++
 server/services/src/main/java/com/doumee/service/business/GoodsorderService.java              |    9 +
 server/services/src/main/java/com/doumee/service/business/DiscountService.java                |    1 
 server/services/src/main/java/com/doumee/core/utils/DateUtil.java                             |   13 +-
 server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java          |    4 
 server/web/src/main/java/com/doumee/api/web/HomeApi.java                                      |    3 
 server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java |    3 
 server/services/src/main/java/com/doumee/core/constants/Constants.java                        |    4 
 server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java     |  160 +++++++++++++++++++++++++-
 server/services/src/main/java/com/doumee/dao/business/model/Discount.java                     |    6 +
 server/services/src/main/java/com/doumee/dao/business/model/Transactions.java                 |    6 
 14 files changed, 290 insertions(+), 39 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/core/constants/Constants.java b/server/services/src/main/java/com/doumee/core/constants/Constants.java
index 8589721..b4ae0e5 100644
--- a/server/services/src/main/java/com/doumee/core/constants/Constants.java
+++ b/server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -115,7 +115,9 @@
 
         REFUND(2,"缁撶畻閫�鎶奸噾", "缁撶畻閫�鎶奸噾"),
 
-        PLATFORMREFUND(3,"骞冲彴閫�鎶奸噾", "骞冲彴閫�鎶奸噾")
+        PLATFORM_REFUND(3,"骞冲彴閫�娆�", "骞冲彴閫�娆�"),
+
+        DISCOUNT(4,"骞冲彴濂楅", "骞冲彴濂楅")
 
         ;
         String name;
diff --git a/server/services/src/main/java/com/doumee/core/utils/DateUtil.java b/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
index 8f8188e..575ab4e 100644
--- a/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
+++ b/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -2163,19 +2163,19 @@
     /**
      * 寰楀嚭涓や釜鏃ユ湡涔嬮棿鐨勯棿闅斿ぉ鏁�
      *
-     * @param strFromDate
+     * @param smallDate
      *            鏍煎紡涓簓yyy-MM-dd
-     * @param strToDate
+     * @param bigDate
      *            鏍煎紡涓簓yyy-MM-dd
      * @return int
      */
-    public static long getBetweenDays(String strFromDate, String strToDate) {
+    public static long getBetweenDays(String smallDate, String bigDate) {
         long m_intervalday = 0;// 鍒濆鍖栨椂闂撮棿闅旂殑鍊间负0
         // 浣跨敤鐨勬椂闂存牸寮忎负yyyy-MM-dd
         SimpleDateFormat m_simpledateformat = new SimpleDateFormat("yyyy-MM-dd");
         try {
-            Date fromDate = m_simpledateformat.parse(strFromDate);
-            Date toDate = m_simpledateformat.parse(strToDate);
+            Date fromDate = m_simpledateformat.parse(smallDate);
+            Date toDate = m_simpledateformat.parse(bigDate);
             m_intervalday = toDate.getTime() - fromDate.getTime();// 璁$畻鎵�寰椾负寰鏁�
             m_intervalday = m_intervalday / 1000 / 60 / 60 / 24;// 璁$畻鎵�寰楃殑澶╂暟
 
@@ -2771,8 +2771,7 @@
 
     public static void main(String[] args) {
         try {
-            System.out.println((int)(3.222));
-
+            System.out.println(DateUtil.getBetweenDays("2025-02-13","2025-02-15"));
         } catch (Exception ex) {
             ex.printStackTrace();
         }
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Discount.java b/server/services/src/main/java/com/doumee/dao/business/model/Discount.java
index 68b7641..722c77f 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Discount.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Discount.java
@@ -157,6 +157,12 @@
     private Integer bikeOrElec;
 
     @TableField(exist = false)
+    @ApiModelProperty(value = "姣忔棩鍗曚环", example = "1")
+    private BigDecimal dayPrice;
+
+
+
+    @TableField(exist = false)
     @ApiModelProperty(value = "鍥剧墖鍏ㄨ矾寰�", example = "1")
     private String fullImgUrl;
 }
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java b/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java
index 893616e..7260dc1 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java
@@ -118,8 +118,8 @@
     @ApiModelProperty(value = "閿�閲忔瘡澶╅檺棰�", example = "1")
     private Integer saleDayLimit;
 
-    @ApiModelProperty(value = "鐘舵�� 0姝e父 1浣滃簾 2杩囨湡鎴栫敤瀹�", example = "1")
-    @ExcelColumn(name="濂楅鐘舵��",index = 7,width = 10,valueMapping = "0=姝e父锛�1=浣滃簾锛�2=杩囨湡鎴栫敤瀹�")
+    @ApiModelProperty(value = "鐘舵�� 0姝e父 1浣滃簾 2寰呮敮浠�", example = "1")
+    @ExcelColumn(name="濂楅鐘舵��",index = 7,width = 10,valueMapping = "0=姝e父锛�1=浣滃簾锛�2=寰呮敮浠�")
     private Integer status;
 
     @ApiModelProperty(value = "鐢ㄦ埛缂栫爜锛堝叧鑱攎ember)")
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Transactions.java b/server/services/src/main/java/com/doumee/dao/business/model/Transactions.java
index 91c04df..99918c9 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Transactions.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Transactions.java
@@ -63,7 +63,7 @@
     @ExcelColumn(name="浜ゆ槗閲戦")
     private BigDecimal money;
 
-    @ApiModelProperty(value = "浜ゆ槗绫诲瀷 0绉熻溅鎶奸噾 1缁撶畻瀹為檯娑堣垂 2缁撶畻閫�娆� 3骞冲彴閫�娆�", example = "1")
+    @ApiModelProperty(value = "浜ゆ槗绫诲瀷 0绉熻溅鎶奸噾 1缁撶畻瀹為檯娑堣垂 2缁撶畻閫�娆� 3骞冲彴閫�娆� 4璐拱濂楅 ", example = "1")
     @ExcelColumn(name="浜ゆ槗绫诲瀷 0绉熻溅鎶奸噾 1缁撶畻瀹為檯娑堣垂 2缁撶畻閫�娆� 3骞冲彴閫�娆�")
     private Integer type;
 
@@ -91,8 +91,8 @@
     @ExcelColumn(name="鐢ㄦ埛褰撳墠浣欓(鍒嗭級")
     private BigDecimal balance;
 
-    @ApiModelProperty(value = "浜ゆ槗鍏宠仈瀵硅薄绫诲瀷 0璁㈠崟 1閫�娆惧崟", example = "1")
-    @ExcelColumn(name="浜ゆ槗鍏宠仈瀵硅薄绫诲瀷 0璁㈠崟 1閫�娆惧崟")
+    @ApiModelProperty(value = "浜ゆ槗鍏宠仈瀵硅薄绫诲瀷 0璁㈠崟 1閫�娆惧崟 2濂楅璐拱", example = "1")
+    @ExcelColumn(name="浜ゆ槗鍏宠仈瀵硅薄绫诲瀷 0璁㈠崟 1閫�娆惧崟 2濂楅璐拱")
     private Integer objType;
 
     @ApiModelProperty(value = "浜ゆ槗鍏宠仈瀵硅薄缂栫爜")
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java b/server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java
index 04205a2..02081f8 100644
--- a/server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java
+++ b/server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java
@@ -1,6 +1,7 @@
 package com.doumee.dao.business.web.response;
 
 import com.doumee.dao.business.model.Ad;
+import com.doumee.dao.business.model.Discount;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -37,7 +38,6 @@
     @ApiModelProperty(value = "绉熻祦椤荤煡")
     private String leaseNotice;
 
-
     @ApiModelProperty(value = "鎶奸噾鐘舵�侊細0=鏈敮浠樻娂閲戯紱1=宸叉敮浠樻娂閲�; 2=閫�娆句腑")
     private Integer depositStatus = 0;
 
@@ -65,5 +65,7 @@
     @ApiModelProperty(value = "骞垮憡淇℃伅")
     private List<Ad> adList;
 
+    @ApiModelProperty(value = "鐑攢濂楅")
+    private List<Discount> discountList;
 
 }
diff --git a/server/services/src/main/java/com/doumee/service/business/DiscountService.java b/server/services/src/main/java/com/doumee/service/business/DiscountService.java
index 61b5690..1f4c9a8 100644
--- a/server/services/src/main/java/com/doumee/service/business/DiscountService.java
+++ b/server/services/src/main/java/com/doumee/service/business/DiscountService.java
@@ -87,6 +87,7 @@
      */
     PageData<Discount> findPage(PageWrap<Discount> pageWrap);
 
+    void dealPrice(Discount discount);
     /**
      * 鏉′欢缁熻
      *
diff --git a/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java b/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java
index 452593d..dc989d6 100644
--- a/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java
+++ b/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java
@@ -128,9 +128,16 @@
      */
     Object createGoodsOrderPay(String memberId);
 
+    /**
+     * 濂楅璐拱
+     * @param discountId
+     * @param memberId
+     * @return
+     */
+    Object createDiscountOrderPay(String discountId,String memberId);
 
     /**
-     * 鎶奸噾鏀粯鍥炶皟涓氬姟
+     * 鏀粯鍥炶皟涓氬姟
      * @param preOrderId
      * @return
      */
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java
index f22b329..07658ac 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java
@@ -183,6 +183,7 @@
             discountLog.setGoodsorderId(discountMember.getGoodsorderId());
             discountLogMapper.insert(discountLog);
         }
+        //閫�娆炬搷浣�
     }
 
 
@@ -229,8 +230,8 @@
             discountLog.setGoodsorderId(discountMember.getGoodsorderId());
             discountLog.setEditInfo(model.getInfo());
             discountLog.setEditDays(model.getAddDays());
-            discountLog.setInfo("灏嗘湁鏁堟湡澧炲姞"+model.getAddDays()+"澶�, 璋冩暣鍚庢湁鏁堟湡鑷�"+useEndDate);
             discountLogMapper.insert(discountLog);
+
         }
     }
 
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/DiscountServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/DiscountServiceImpl.java
index 1a049aa..7c88851 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/DiscountServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/DiscountServiceImpl.java
@@ -7,6 +7,7 @@
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.DiscountMapper;
 import com.doumee.dao.business.join.BikeRepairJoinMapper;
@@ -29,6 +30,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -58,6 +60,9 @@
         discount.setIsdeleted(Constants.ZERO);
         discount.setCreateDate(new Date());
         discount.setCreator(userInfo.getId());
+        if(Constants.equalsInteger(discount.getUseType(),Constants.ZERO)){
+            discount.setUseDays((int) (DateUtil.getBetweenDays(DateUtil.dateToString(discount.getUseStartDate(),"yyyy-MM-dd"),DateUtil.dateToString(discount.getUseEndDate(),"yyyy-MM-dd"))));
+        }
         discountMapper.insert(discount);
         return discount.getId();
     }
@@ -68,15 +73,15 @@
                 || StringUtils.isBlank(discount.getName())
                 || Objects.isNull(discount.getType())
                 || Objects.isNull(discount.getLimitType())
-                || (discount.getLimitTime()==Constants.ONE && Objects.isNull(discount.getLimitTime()))
-                || Objects.isNull(discount.getPrice())
+                || (Constants.equalsInteger(discount.getLimitTime(),Constants.ONE) && Objects.isNull(discount.getLimitTime()))
+                || Objects.isNull(discount.getPrice()) || discount.getPrice().compareTo(BigDecimal.ZERO) <= Constants.ZERO
                 || Objects.isNull(discount.getChannel())
                 || Objects.isNull(discount.getStartDate())
                 || Objects.isNull(discount.getEndDate())
                 || Objects.isNull(discount.getUseType())
-                || (discount.getUseType()==Constants.ZERO && ( Objects.isNull(discount.getUseStartDate()) || Objects.isNull(discount.getUseEndDate()) ))
-                || (discount.getUseType()==Constants.ONE && Objects.isNull(discount.getUseDays()))
-                || (discount.getUseType()==Constants.TWO && ( Objects.isNull(discount.getUseStartDate()) || Objects.isNull(discount.getUseDays()) ))
+                || (Constants.equalsInteger(discount.getUseType(),Constants.ZERO) && ( Objects.isNull(discount.getUseStartDate()) || Objects.isNull(discount.getUseEndDate()) ))
+                || (Constants.equalsInteger(discount.getUseType(),Constants.ONE) && Objects.isNull(discount.getUseDays()))
+                || (Constants.equalsInteger(discount.getUseType(),Constants.TWO) && ( Objects.isNull(discount.getUseStartDate()) || Objects.isNull(discount.getUseDays()) ))
                 || (Objects.isNull(discount.getUseHoliday()) || Objects.isNull(discount.getUseWorkday()) )
                 || (Objects.isNull(discount.getIsbike()) || Objects.isNull(discount.getIselecbike()) )
         ){
@@ -86,15 +91,16 @@
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"閿�鍞椂娈典俊鎭敊璇�");
         }
         //鍥哄畾鏃ユ湡鐢熸晥
-        if(discount.getUseType()==Constants.ZERO &&
+        if(Constants.equalsInteger(discount.getUseType(),Constants.ZERO) &&
                 ( discount.getUseStartDate().getTime()>discount.getUseEndDate().getTime() ||
                         discount.getUseStartDate().getTime() < discount.getStartDate().getTime() ||
                         discount.getUseEndDate().getTime() > discount.getEndDate().getTime()
                 ) ){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浣跨敤鏃舵淇℃伅閿欒");
         }
+
         //鎸囧畾鏃ユ湡鐢熸晥
-        if(discount.getUseType()==Constants.TWO &&
+        if(Constants.equalsInteger(discount.getUseType(),Constants.TWO) &&
                 ( discount.getUseStartDate().getTime()<discount.getStartDate().getTime() ||
                         discount.getUseStartDate().getTime() > discount.getEndDate().getTime()
                 ) ){
@@ -125,8 +131,6 @@
         }
         discountMapper.update(null,new UpdateWrapper<Discount>().lambda().set(Discount::getStatus,discount.getStatus()).eq(Discount::getId,discount.getId()));
     }
-
-
 
 
     @Override
@@ -168,6 +172,7 @@
         if(Objects.isNull(discount)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
+        this.dealPrice(discount);
         if(StringUtils.isNotBlank(discount.getImgurl())){
             String path =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.FILE_DIR).getCode()+
                     systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.DISCOUNT).getCode();
@@ -203,10 +208,31 @@
                 .eq(Objects.nonNull(modele.getBikeOrElec()) && Constants.equalsInteger(modele.getBikeOrElec(),Constants.TWO),Discount::getIselecbike, Constants.ONE)
                 .eq(Discount::getIsdeleted, Constants.ZERO)
                 .eq( pageWrap.getModel().getStatus() !=null,BikeRepair::getStatus,pageWrap.getModel().getStatus());
-        queryWrapper.orderByDesc(Discount::getCreateDate);
-        return PageData.from(discountJoinMapper.selectJoinPage(page, Discount.class,queryWrapper));
+                queryWrapper.orderByDesc(Discount::getCreateDate);
+        PageData<Discount> pageData = PageData.from(discountJoinMapper.selectJoinPage(page, Discount.class,queryWrapper));
+        for (Discount discount:pageData.getRecords()) {
+            dealPrice(discount);
+        }
+        return pageData;
     }
 
+
+
+    @Override
+    public void dealPrice(Discount discount){
+        if(Objects.isNull(discount)
+            || Objects.isNull(discount.getUseEndDate())
+            || Objects.isNull(discount.getUseStartDate())
+            || Objects.isNull(discount.getPrice())
+            || discount.getPrice().compareTo(BigDecimal.ZERO)==0
+        ){
+            discount.setDayPrice(BigDecimal.ZERO);
+            return;
+        }
+        discount.setDayPrice(discount.getPrice().divide(new BigDecimal(Long.toString(discount.getUseDays())),2));
+    }
+
+
     @Override
     public long count(Discount discount) {
         QueryWrapper<Discount> wrapper = new QueryWrapper<>(discount);
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index bc917a3..89814e8 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -49,6 +49,7 @@
 import org.apache.shiro.SecurityUtils;
 import org.checkerframework.checker.units.qual.A;
 import org.checkerframework.checker.units.qual.C;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -82,6 +83,8 @@
 
     @Autowired
     private DiscountLogMapper discountLogMapper;
+    @Autowired
+    private DiscountMapper discountMapper;
 
     @Autowired
     GoodsorderJoinMapper goodsorderJoinMapper;
@@ -375,6 +378,19 @@
                 .eq("status",Constants.ZERO)
                 .orderByAsc("sortnum")
         ));;
+        homeResponse.setDiscountList(
+                discountMapper.selectList(new QueryWrapper<Discount>().lambda()
+                        .eq(Discount::getIsdeleted,Constants.ZERO)
+                        .eq(Discount::getStatus,Constants.ZERO)
+                        .orderByDesc(Discount::getId)
+                        .last(" limit 3 ")
+                )
+        );
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(homeResponse.getDiscountList())){
+            for (Discount discount:homeResponse.getDiscountList()) {
+                discount.setDayPrice(discount.getPrice().divide(new BigDecimal(Integer.toString(discount.getUseDays())),2));
+            }
+        }
         if(!Objects.isNull(homeResponse.getAdList())&&homeResponse.getAdList().size()>Constants.ZERO){
             homeResponse.getAdList().forEach(i->{
                 i.setImgfullurl(fullPath + i.getImgurl());
@@ -1105,6 +1121,7 @@
         goodsorder.setCreateDate(new Date());
         goodsorder.setIsdeleted(Constants.ZERO);
         goodsorder.setCode(goodsorder.getId());
+        goodsorder.setType(Constants.ZERO);
         goodsorder.setMemberId(memberId);
         goodsorder.setMoney(new BigDecimal(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_DEPOSIT).getCode()).multiply(new BigDecimal(100)));
         goodsorder.setStatus(Constants.goodsorderStatus.waitPay);
@@ -1119,16 +1136,101 @@
         }  catch (Exception e) {
             throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍙戣捣鏀粯澶辫触~");
         }
-
         return response;
     }
 
-    private Object getWxPayResponse(Goodsorder goodsorder,String openid) throws Exception {
+
+    @Override
+    public Object createDiscountOrderPay(String memberId,String discountId){
+        Member member = memberMapper.selectById(memberId);
+        if(Objects.isNull(member)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鐢ㄦ埛瀵硅薄淇℃伅");
+        }
+        Discount discount = discountMapper.selectById(discountId);
+        this.checkDiscountSaleDate(discount);
+        String discountMemberId = Constants.getUUID();
+        String goodsorderId = Constants.getUUID();
+        DiscountMember discountMember = new DiscountMember();
+        BeanUtils.copyProperties(discount,discountMember);
+        discountMember.setCreator(null);
+        discountMember.setId(discountMemberId);
+        discountMember.setCreateDate(new Date());
+        discountMember.setEditDate(new Date());
+        discountMember.setEditor(null);
+        discountMember.setMemberId(memberId);
+        discountMember.setStatus(Constants.TWO);
+        discountMember.setGoodsorderId(goodsorderId);
+        discountMemberMapper.insert(discountMember);
+
+        Goodsorder goodsorder = new Goodsorder();
+        goodsorder.setId(goodsorderId);
+        goodsorder.setCreateDate(new Date());
+        goodsorder.setIsdeleted(Constants.ZERO);
+        goodsorder.setCode(goodsorder.getId());
+        goodsorder.setMemberId(memberId);
+        goodsorder.setType(Constants.ONE);
+        goodsorder.setMoney(discount.getPrice().multiply(new BigDecimal(100)));
+        goodsorder.setStatus(Constants.goodsorderStatus.waitPay);
+        goodsorder.setPreOrderid(goodsorder.getId());
+        goodsorder.setPayStatus(Constants.goodsorderPayStatus.waitPay);
+        goodsorder.setPayWay(Constants.ZERO);
+        goodsorder.setObjType(Constants.ZERO);
+        goodsorder.setObjId(discount.getId());
+        this.goodsorderMapper.insert(goodsorder);
         //璋冭捣鏀粯
-            Object response = null;
+        Object response = null;
+        try {
+            response = getWxPayResponse(goodsorder,member.getOpenid());
+        }  catch (Exception e) {
+            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍙戣捣鏀粯澶辫触~");
+        }
+        return response;
+
+    }
+
+    public void checkDiscountSaleDate(Discount discount){
+        if(Objects.isNull(discount)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌濂楅淇℃伅");
+        }
+        if(!(Constants.equalsInteger(discount.getIsdeleted(),Constants.ZERO)
+            ||Constants.equalsInteger(discount.getStatus(),Constants.ZERO))){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"濂楅宸蹭笅鏋讹紝鏃犳硶杩涜璐拱锛岃鍒锋柊鏌ョ湅");
+        }
+        if(!(discount.getStartDate().getTime() < System.currentTimeMillis()
+         && Utils.Date.getEnd(discount.getEndDate()).getTime() > System.currentTimeMillis() )){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"濂楅寮�鏀炬椂闂存湭鍒�,鏃犳硶杩涜璐拱");
+        }
+        //楠岃瘉鏄惁瓒呰繃浠婃棩鍙敭鍗栨暟閲�
+        if(Objects.nonNull(discount.getSaleDayLimit())){
+            if(goodsorderMapper.selectCount(new QueryWrapper<Goodsorder>().lambda()
+                    .eq(Goodsorder::getType,Constants.ONE)
+                    .eq(Goodsorder::getObjId,discount.getId())
+                    .in(Goodsorder::getStatus,Constants.ZERO,Constants.ONE)
+                    .apply(" EXTRACT(DAY FROM create_date) = EXTRACT(DAY FROM CURRENT_DATE) ")
+            )>=discount.getSaleDayLimit()){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"濂楅浠婃棩鍙戣閲忓凡鍞絼锛岃鏄庢棩鏌ョ湅锛�");
+            }
+        }
+        if(Objects.nonNull(discount.getSaleLimit())){
+            if(goodsorderMapper.selectCount(new QueryWrapper<Goodsorder>().lambda()
+                    .eq(Goodsorder::getType,Constants.ONE)
+                    .eq(Goodsorder::getObjId,discount.getId())
+                    .in(Goodsorder::getStatus,Constants.ZERO,Constants.ONE)
+                    .apply(" EXTRACT(YEAR FROM create_date) = EXTRACT(YEAR FROM CURRENT_DATE) ")
+            )>=discount.getSaleDayLimit()){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"濂楅鍙戣閲忓凡鍞絼锛�");
+            }
+        }
+    }
+
+
+
+    private Object getWxPayResponse(Goodsorder goodsorder,String openid){
+        //璋冭捣鏀粯
+        Object response = null;
         PrepayRequest request = new PrepayRequest();
         request.setAttach("createGoodsOrder");
-        request.setDescription("妫灄鍏洯鑷杞﹂獞琛屾娂閲戞敮浠�");
+        request.setDescription(Constants.equalsInteger(goodsorder.getType(),Constants.ZERO)?"妫灄鍏洯鑷杞﹂獞琛屾娂閲戞敮浠�":"妫灄鍏洯鑷杞﹁喘涔伴獞琛屽椁愭敮浠�");
         request.setSpMchid(WxMiniConfig.wxProperties.getMchId());
         request.setSpAppid(WxMiniConfig.wxProperties.getAppId());
         request.setSubMchid(WxMiniConfig.wxProperties.getSubMchId());
@@ -1145,10 +1247,10 @@
             // 璺熶箣鍓嶄笅鍗曠ず渚嬩竴鏍凤紝濉厖棰勪笅鍗曞弬鏁�
         PrepayWithRequestPaymentResponse resParam =  WxMiniConfig.jsapiExtService.prepayWithRequestPayment(request,WxMiniConfig.wxProperties.getSubAppId());
         response =resParam;
-
         return response;
-
     }
+
+
 
 
     /**
@@ -1274,6 +1376,50 @@
             return  ("澶勭悊鎴愬姛!");
         }
         goodsorder.setOnlineOrderid(paymentNo);
+        if(Constants.equalsInteger(goodsorder.getType(),Constants.ZERO)){
+            this.dealGoodsOrderCallBack(goodsorder);
+        }else{
+            this.dealDiscountOrderCallBack(goodsorder);
+        }
+        return  ("澶勭悊鎴愬姛!");
+    }
+
+    public void dealDiscountOrderCallBack(Goodsorder goodsorder){
+        goodsorder.setPayStatus(Constants.goodsorderPayStatus.pay);
+        goodsorder.setStatus(Constants.goodsorderStatus.pay);
+        goodsorder.setPayDate(new Date());
+        goodsorder.setEditDate(new Date());
+        goodsorderMapper.updateById(goodsorder);
+
+        DiscountMember discountMember = discountMemberMapper.selectOne(new QueryWrapper<DiscountMember>().lambda()
+                .eq(DiscountMember::getGoodsorderId,goodsorder.getId()).last(" limit 1 "));
+        discountMemberMapper.update(null,new UpdateWrapper<DiscountMember>().lambda()
+                .set(DiscountMember::getStatus,Constants.ZERO)
+                .eq(DiscountMember::getId,discountMember.getId())
+        );
+        Constants.TRANSACTIONS_TYPE discountConstants = Constants.TRANSACTIONS_TYPE.DISCOUNT;
+        //瀛樺偍浜ゆ槗娴佹按琛�
+        Transactions transactions = new Transactions();
+        transactions.setMemberId(goodsorder.getMemberId());
+        transactions.setCreateDate(new Date());
+        transactions.setIsdeleted(Constants.ZERO);
+        transactions.setOrderId(goodsorder.getId());
+        transactions.setMoney(goodsorder.getMoney());
+        transactions.setType(discountConstants.getKey());
+        transactions.setPreOrderid(goodsorder.getPreOrderid());
+        transactions.setOnlineOrderid(goodsorder.getOnlineOrderid());
+        transactions.setDoneDate(new Date());
+        transactions.setTitle(discountConstants.getName());
+        transactions.setContent(discountConstants.getInfo());
+        //transactions.setContent(discountMember.getName() +" 鏈夋晥鏈�" + DateUtil.dateToString(discountMember.getUseStartDate(),"yyyy-MM-dd") +"-"+DateUtil.dateToString(discountMember.getUseEndDate(),"yyyy-MM-dd"));
+        transactions.setBalance(goodsorder.getMoney());
+        transactions.setObjId(discountMember.getId());
+        transactions.setObjType(Constants.TWO);
+        transactionsMapper.insert(transactions);
+    }
+
+
+    public void dealGoodsOrderCallBack(Goodsorder goodsorder){
         goodsorder.setPayStatus(Constants.goodsorderPayStatus.pay);
         goodsorder.setStatus(Constants.goodsorderStatus.pay);
         goodsorder.setPayDate(new Date());
@@ -1296,9 +1442,7 @@
         transactions.setObjId(goodsorder.getId());
         transactions.setObjType(Constants.ZERO);
         transactionsMapper.insert(transactions);
-        return  ("澶勭悊鎴愬姛!");
     }
-
 
 
     /**
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java
index 4de6300..f09b5a2 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java
@@ -1,20 +1,27 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.core.constants.Constants;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.DiscountMemberMapper;
+import com.doumee.dao.business.RefundMapper;
 import com.doumee.dao.business.TransactionsMapper;
+import com.doumee.dao.business.model.DiscountMember;
 import com.doumee.dao.business.model.Transactions;
 import com.doumee.service.business.TransactionsService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 浜ゆ槗娴佹按琛⊿ervice瀹炵幇
@@ -26,6 +33,13 @@
 
     @Autowired
     private TransactionsMapper transactionsMapper;
+
+    @Autowired
+    private DiscountMemberMapper discountMemberMapper;
+
+    @Autowired
+    private RefundMapper refundMapper;
+
 
     @Override
     public String create(Transactions transactions) {
@@ -172,7 +186,23 @@
         Utils.MP.blankToNull(pageWrap.getModel());
         queryWrapper.lambda().eq(Transactions::getMemberId, memberId);
         queryWrapper.orderByDesc("create_date");
-        return PageData.from(transactionsMapper.selectPage(page, queryWrapper));
+        PageData<Transactions> pageData = PageData.from(transactionsMapper.selectPage(page, queryWrapper));
+        for (Transactions transactions:pageData.getRecords()) {
+            if(Constants.equalsInteger(transactions.getType(),Constants.TRANSACTIONS_TYPE.DISCOUNT.getKey())){
+                //璐拱濂楅 澶勭悊鍐呭
+                 DiscountMember discountMember = discountMemberMapper.selectById(transactions.getObjId());
+                 if(Objects.nonNull(discountMember)){
+                     transactions.setContent(discountMember.getName() +" 鏈夋晥鏈�" + DateUtil.dateToString(discountMember.getUseStartDate(),"yyyy-MM-dd") +"-"+DateUtil.dateToString(discountMember.getUseEndDate(),"yyyy-MM-dd"));
+                 }
+            }else if(Constants.equalsInteger(transactions.getType(),Constants.TRANSACTIONS_TYPE.PLATFORM_REFUND.getKey())){
+                DiscountMember discountMember = discountMemberMapper.selectOne(
+                        new QueryWrapper<DiscountMember>().lambda().eq(DiscountMember::getGoodsorderId, transactions.getOrderId()).last("limit 1"));
+                if(Objects.nonNull(discountMember)){
+                    transactions.setContent(discountMember.getName() +" 鏈夋晥鏈�" + DateUtil.dateToString(discountMember.getUseStartDate(),"yyyy-MM-dd") +"-"+DateUtil.dateToString(discountMember.getUseEndDate(),"yyyy-MM-dd"));
+                }
+            }
+        }
+        return pageData;
     }
 
 
diff --git a/server/web/src/main/java/com/doumee/api/web/BusinessApi.java b/server/web/src/main/java/com/doumee/api/web/BusinessApi.java
index b054b80..8c95549 100644
--- a/server/web/src/main/java/com/doumee/api/web/BusinessApi.java
+++ b/server/web/src/main/java/com/doumee/api/web/BusinessApi.java
@@ -12,6 +12,7 @@
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.business.web.request.BackElecBikeRequest;
 import com.doumee.dao.business.web.request.RepairRequest;
+import com.doumee.dao.business.web.response.HomeResponse;
 import com.doumee.dao.business.web.response.MemberRidesDetailResponse;
 import com.doumee.dao.business.web.response.RidesDetailResponse;
 import com.doumee.dao.system.model.SystemDictData;
@@ -67,6 +68,9 @@
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
 
+    @Autowired
+    private DiscountService discountService;
+
     @PreventRepeat
     @LoginRequired
     @ApiOperation(value = "鎶奸噾鏀粯", notes = "灏忕▼搴忕")
@@ -77,6 +81,20 @@
     public ApiResponse<Object> createGoodsOrderPay() {
         return  ApiResponse.success("鎿嶄綔鎴愬姛",goodsorderService.createGoodsOrderPay(getMemberId()));
     }
+
+    @PreventRepeat
+    @LoginRequired
+    @ApiOperation(value = "濂楅璐拱", notes = "灏忕▼搴忕")
+    @GetMapping("/createDiscountOrderPay")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "discountId", value = "濂楅涓婚敭", required = true)
+    })
+    public ApiResponse<Object> createDiscountOrderPay(@RequestParam String discountId) {
+        return  ApiResponse.success("鎿嶄綔鎴愬姛",goodsorderService.createDiscountOrderPay(discountId,getMemberId()));
+    }
+
+
 
     @LoginRequired
     @ApiOperation(value = "楠戣鏄庣粏", notes = "灏忕▼搴忕")
@@ -112,6 +130,24 @@
         return ApiResponse.success(transactionsService.findPageForMini(pageWrap,getMemberId()));
     }
 
+
+
+    @LoginRequired
+    @ApiOperation(value = "鐑攢濂楅", notes = "鐑攢濂楅")
+    @GetMapping("/discountPage")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
+    })
+    public ApiResponse<PageData<Discount>> discountPage (@RequestBody PageWrap<Discount> pageWrap) {
+        Discount discount = new Discount();
+        discount.setStatus(Constants.ZERO);
+        pageWrap.setModel(discount);
+        return ApiResponse.success(discountService.findPage(pageWrap));
+    }
+
+
+
+
     @LoginRequired
     @ApiOperation("鍩虹閰嶇疆鏁版嵁")
     @GetMapping("/baseParamList")
diff --git a/server/web/src/main/java/com/doumee/api/web/HomeApi.java b/server/web/src/main/java/com/doumee/api/web/HomeApi.java
index 8392c58..dcc0139 100644
--- a/server/web/src/main/java/com/doumee/api/web/HomeApi.java
+++ b/server/web/src/main/java/com/doumee/api/web/HomeApi.java
@@ -50,9 +50,6 @@
         return  ApiResponse.success("鏌ヨ鎴愬姛",homeResponse);
     }
 
-
-
-
     @ApiOperation(value = "娴嬭瘯鐢垫睜鎺у埗", notes = "娴嬭瘯鐢垫睜鎺у埗")
     @PostMapping("/testControl")
     public ApiResponse<APIResult<T0201_0500>> testControl(@RequestBody  T8500 param) {

--
Gitblit v1.9.3