From 9baa55cf4292ad0fe80547f9c840e917775411f4 Mon Sep 17 00:00:00 2001
From: 44323 <443237572@qq.com>
Date: 星期日, 05 十一月 2023 09:45:48 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/PlayPai

---
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java                           |    8 
 cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java            |    7 
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java                    |  272 +++++++++----
 cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml                                      |    4 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseClient.java                          |    3 
 cloud-server-activity/src/main/java/com/dsh/activity/entity/ConsumeDetail.java                                     |   22 +
 cloud-server-course/src/main/java/com/dsh/course/model/vo/RegisterCourseVo.java                                    |    2 
 cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java                       |    4 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java                |    7 
 cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods_info.js                                |    2 
 cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java                     |    4 
 cloud-server-competition/src/main/java/com/dsh/competition/feignclient/course/model/PaymentDeductionClassHour.java |    1 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java                       |  348 +++++++++++++----
 cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java                           |    9 
 cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java                              |   62 +-
 cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java                          |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java             |    6 
 cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java                           |   14 
 cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java                       |  156 ++++++
 cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java                |    5 
 cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java                                      |    6 
 cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java                                          |    3 
 cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PaymentDeductionClassHour.java                  |    1 
 cloud-server-activity/src/main/java/com/dsh/activity/entity/BillingDataRequestVo.java                              |   21 +
 cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java                          |   15 
 cloud-server-account/src/main/java/com/dsh/account/model/ReturnModel.java                                          |   12 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java                           |   75 ++-
 cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml                                    |   25 +
 cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java                                   |    6 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java                |    7 
 cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java                     |   14 
 cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js                               |    5 
 cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java                                  |   11 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java               |    2 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java                    |   15 
 35 files changed, 870 insertions(+), 286 deletions(-)

diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
index 2583912..1512dc0 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
@@ -247,7 +247,7 @@
             }
             List<StuListVo> stuListVos = new ArrayList<>();
             List<TStudent> tStudents = istuService.list(new QueryWrapper<TStudent>()
-                    .eq("appUserId",userIdFormRedis));
+                    .eq("appUserId",userIdFormRedis).eq("state",1));
             if (tStudents.size() > 0){
                 tStudents.forEach(sts -> {
                     StuListVo vo = new StuListVo();
diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java
index cac69c8..7aaa6e0 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java
@@ -2,6 +2,7 @@
 
 
 import com.dsh.account.entity.TAppUser;
+import com.dsh.account.feignclient.activity.model.IntegralCommodity;
 import com.dsh.account.feignclient.other.SysLogClient;
 import com.dsh.account.model.vo.userBenefitDetail.*;
 import com.dsh.account.service.RechargeRecordsService;
@@ -61,7 +62,13 @@
             if(null == appUserId){
                 return ResultUtil.tokenErr();
             }
-            return ResultUtil.success(tauService.queryBenefitDetails(appUserId));
+            IndexOfUserBenefirVo indexOfUserBenefirVo = tauService.queryBenefitDetails(appUserId);
+            List<IntegralCommodity> commodities = indexOfUserBenefirVo.getCommodities();
+            if (commodities.size() > 5) {
+                commodities = commodities.subList(0, 5);
+            }
+            indexOfUserBenefirVo.setCommodities(commodities);
+            return ResultUtil.success(indexOfUserBenefirVo);
         }catch (Exception e){
             return ResultUtil.runErr();
         }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java
index 1f28eb8..19f7b0e 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/MerChandiseClient.java
@@ -2,10 +2,8 @@
 
 
 import com.dsh.account.feignclient.activity.model.*;
-import com.dsh.account.model.vo.userBenefitDetail.ExchangeDetailsResponse;
-import com.dsh.account.model.vo.userBenefitDetail.ExchangeDetailsVo;
-import com.dsh.account.model.vo.userBenefitDetail.PointDetailsVo;
-import com.dsh.account.model.vo.userBenefitDetail.ProductDetailsVo;
+import com.dsh.account.feignclient.competition.model.BillingDataRequestVo;
+import com.dsh.account.model.vo.userBenefitDetail.*;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -44,7 +42,7 @@
 
 
     @PostMapping("/base/pointMerchars/saveDetailsUserPointMercase")
-    public void saveDetailsUserPointMercase( UserPointsMerchandise merchandise);
+    public Long saveDetailsUserPointMercase( UserPointsMerchandise merchandise);
 
 
     @PostMapping("/base/pointMerchars/updateDetailsUserPointMercase")
@@ -65,8 +63,6 @@
     void deletePaymentRecord(@RequestBody String code);
 
 
-
-
-
-
+    @PostMapping("/base/pointMerchars/getConsumeDetails")
+    List<ConsumeDetail> getConsumeDetails(@RequestBody BillingDataRequestVo requestVo);
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/ReturnModel.java b/cloud-server-account/src/main/java/com/dsh/account/model/ReturnModel.java
new file mode 100644
index 0000000..eedcf43
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/ReturnModel.java
@@ -0,0 +1,12 @@
+package com.dsh.account.model;
+
+
+import lombok.Data;
+
+@Data
+public class ReturnModel {
+
+    private Long returnId;
+
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java
index e24cde3..3b86233 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/RechargeRecordsServiceImpl.java
@@ -277,9 +277,23 @@
                                     break;
                                 }
                                 if("TRADE_SUCCESS".equals(tradeStatus)){
+                                    records.setAppUserId(null);
                                     records.setPayStatus(2);
+                                    records.setPayTime(new Date());
                                     records.setOrderNumber(tradeNo);
                                     rereMapper.updateById(records);
+
+//                                    RechargeRecords rechargeRecords = rereMapper.selectOne(new QueryWrapper<RechargeRecords>()
+//                                            .eq("code", code));
+//                                    if (rechargeRecords.getPayStatus() == 2){
+//                                        break;
+//                                    }
+//
+//                                    TAppUser tAppUser = tappMapper.selectById(rechargeRecords.getAppUserId());
+//                                    tAppUser.setPlayPaiCoins(null == tAppUser.getPlayPaiCoins()? rechargeRecords.getPlayPaiCoins(): tAppUser.getPlayPaiCoins() +rechargeRecords.getPlayPaiCoins() );
+//                                    tappMapper.updateById(tAppUser);
+
+
                                     break;
                                 }
                                 if("WAIT_BUYER_PAY".equals(tradeStatus)){
@@ -362,6 +376,7 @@
         if (rechargeRecords.getPayStatus() == 2){
             return  ResultUtil.success();
         }
+        rechargeRecords.setAppUserId(null);
         rechargeRecords.setPayStatus(2);
         rechargeRecords.setPayTime(new Date());
         rechargeRecords.setOrderNumber(orderNumber);
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
index 54627f6..82a76bd 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -284,8 +284,9 @@
                 classInfoVo.setHeight(tStudent.getHeight());
                 classInfoVo.setWeight(tStudent.getWeight());
                 classInfoVo.setBmi(tStudent.getBmi());
-                classInfoVo.setBodyStatus(BMIBodyUtil.getBodyStatus(tStudent.getBmi()));
-
+                if (tStudent.getBmi()!=null) {
+                    classInfoVo.setBodyStatus(BMIBodyUtil.getBodyStatus(tStudent.getBmi()));
+                }
                 List<RegisteredCourse> courseList = new ArrayList<>();
                 List<StuCourseResp> stuCoursePayment = paymentClient.getStuCoursePayment(tStudent.getId());
                 List<Integer> coursePackIds = new ArrayList<>();
@@ -302,7 +303,6 @@
                         course.setPeriodOfValidity(tCoursePackagePayment.getPeriodOfValidity());
                         courseList.add(course);
                     }
-
                 }
                 classInfoVo.setCourseList(courseList);
 //                List<ExerciseVideo> stuCourseOfVideoList = voclClient.getStuCourseOfVideoList(coursePackIds);
@@ -799,6 +799,13 @@
                 details.add(consumeDetail);
             }
         }
+
+        //8.积分商场
+
+        List<ConsumeDetail> consumeDetails = mcClient.getConsumeDetails(requestVo);
+        details.addAll(consumeDetails);
+
+
         if (details.size() > 0 ){
             Collections.sort(details, new Comparator<ConsumeDetail>() {
                 @Override
@@ -960,7 +967,7 @@
         if (request.getShopId()!=null){
             if (goods.size() > 0 ){
                 goods = goods.stream()
-                        .filter( merchandise ->(merchandise.getGoodsType() == 4&&merchandise.getUseScope() == 1)||merchandise.getShopIds().contains(request.getShopId()))
+                        .filter( merchandise ->(merchandise.getGoodsType() == 4&&merchandise.getUseScope() == 2)||(merchandise.getGoodsType() == 4&&merchandise.getUseScope() == 1)||merchandise.getShopIds().contains(request.getShopId()))
                         .collect(Collectors.toList());
             }
         }
@@ -1198,6 +1205,8 @@
     public ResultUtil productRedemptionOperation(Integer userIdFormRedis, GoodsExchangeVo exchangeType) {
         System.out.println("exchangeType:--->");
 
+        ReturnModel returnModel = new ReturnModel();
+        Long returnId = null;
             //如果是兑换优惠卷
         if (exchangeType.getGoodsType()==4){
             //查询优惠卷
@@ -1216,10 +1225,6 @@
             if (usercounts == coupon.getPickUpQuantity()){
                 return new ResultUtil<>(0,"限领数量已达最大");
             }
-
-
-
-
 //            userConponClient.queryCouponById(exchangeType.getGoodId());
             UserCoupon userCoupon = new UserCoupon();
             userCoupon.setCouponId(exchangeType.getGoodId());
@@ -1227,19 +1232,33 @@
             userCoupon.setStatus(1);
             userCoupon.setInsertTime(new Date());
             userConponClient.insertToAppuserCoupon(userCoupon);
-
-
             //扣积分
             TAppUser user = appUserService.getById(userIdFormRedis);
             if (user.getIntegral()<coupon.getIntegral().intValue()){
                 return  new ResultUtil<>(0,"当前用户积分不足");
             }
-
             user.setIntegral(user.getIntegral()-coupon.getIntegral().intValue());
-
             appUserService.updateById(user);
 
-            return ResultUtil.success();
+            //记录
+//            UserPointsMerchandise pointsMerchandise = new UserPointsMerchandise();
+//            pointsMerchandise.setPointsMerchandiseId(exchangeType.getGoodId());
+//            pointsMerchandise.setUserId(userIdFormRedis);
+//            pointsMerchandise.setStatus(1);
+//            pointsMerchandise.setState(1);
+//            pointsMerchandise.setPayStatus(1);
+////            if (merchandise.getUseScope() == 3){
+////                if (exchangeType.getGoodsType() == 2){
+////                    CoursePackage coursePackage = cpageClient.queryCoursePackageById(merchandise.getCoursePackageId());
+////                    pointsMerchandise.setStoreId(coursePackage.getStoreId());
+////                }else {
+////                    pointsMerchandise.setStoreId(exchangeType.getStoreId());
+////                }
+////            }
+////            pointsMerchandise.setCode(code);
+//            returnId = mcClient.saveDetailsUserPointMercase(pointsMerchandise);
+
+            return ResultUtil.success(returnId);
         }
 
 
@@ -1250,6 +1269,7 @@
             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
             String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
             PointsMerchandise merchandise = mcClient.selectPointsMerchandiseById(exchangeType.getGoodId());
+
             if (ToolUtil.isEmpty(merchandise)){
                 return ResultUtil.error("商品不存在");
             }
@@ -1307,13 +1327,16 @@
                     }
                 }
                 pointsMerchandise.setCode(code);
-                mcClient.saveDetailsUserPointMercase(pointsMerchandise);
+                returnId = mcClient.saveDetailsUserPointMercase(pointsMerchandise);
             }
 
             switch (exchangeType.getExchangeType()){
 //            积分
                 case 1:
-                    boolean b = dealAppUserIntegral(userIdFormRedis,tAppUser,merchandise.getIntegral());
+                    boolean b =true;
+                    for (int i = 0; i < goodsNums; i++) {
+                         b = dealAppUserIntegral(userIdFormRedis,tAppUser,merchandise.getIntegral());
+                    }
                     if (b){
                         switch (exchangeType.getGoodsType()){
                             case 2:
@@ -1367,7 +1390,11 @@
                     break;
                 case 2:
 //                积分+现金
-                    boolean dealt = dealAppUserIntegral(userIdFormRedis,tAppUser,merchandise.getIntegral());
+                    boolean dealt =true;
+                    for (int i = 0; i < goodsNums; i++) {
+                        dealt = dealAppUserIntegral(userIdFormRedis,tAppUser,merchandise.getIntegral());
+                    }
+
                     switch (exchangeType.getPayType()) {
                         case 1:
                             try {
@@ -1381,9 +1408,9 @@
                             }
                         case 2:
                             if (merchandise.getType() == 2) {
-                                return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code);
+                                return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code,returnId);
                             } else {
-                                return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code);
+                                return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code,returnId);
                             }
                         default:
                             break;
@@ -1403,9 +1430,9 @@
                             }
                         case 2:
                             if (merchandise.getType() == 2) {
-                                return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code);
+                                return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code,returnId);
                             } else {
-                                return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code);
+                                return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code,returnId);
                             }
                         default:
                             break;
@@ -1415,8 +1442,8 @@
                     break;
             }
 
-
-            return ResultUtil.success();
+        returnModel.setReturnId(returnId);
+            return ResultUtil.success(returnModel);
         }catch (Exception e){
             e.printStackTrace();
             return null;
@@ -1447,9 +1474,9 @@
         }
     }
 
-    private ResultUtil AlipayPayment(BigDecimal cash, String code) {
+    private ResultUtil AlipayPayment(BigDecimal cash, String code,Long  returnId) {
         System.out.println("金额:"+cash);
-        ResultUtil alipay = payMoneyUtil.alipay("课包续费", "课包续费", "", code, cash.toString(),
+        ResultUtil alipay = payMoneyUtil.alipay("课包续费", "课包续费", String.valueOf(returnId), code, cash.toString(),
                 "/base/pointMer/exchangeGoodPaymentAliCallback");
         if(alipay.getCode() == 200){
             new Thread(new Runnable() {
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java
index 22d3b45..163f753 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java
@@ -98,7 +98,7 @@
             if (null != recordId){
                 details = details.stream()
                         .filter(obj -> obj instanceof IntegralsData)
-                        .filter(obj -> Objects.equals(obj.getDetailsType(), recordId))
+                        .filter(obj -> !Objects.equals(obj.getDetailsType(), recordId))
                         .collect(Collectors.toList());
             }
         }
@@ -175,6 +175,8 @@
     public List<ExchangeDetailsResponse> queryExchangeGoodsdetails1(Integer userIdFormRedis, Integer useType, Integer goodType, Integer page, Integer size) {
         List<ExchangeDetailsResponse> detailsResponses = new ArrayList<>();
         ExchangeDetailsVo integralExchangeDetails = mcClient.getIntegralExchangeDetails(userIdFormRedis);
+
+
         if (ToolUtil.isNotEmpty(integralExchangeDetails.getDetailsResponses())){
             detailsResponses = integralExchangeDetails.getDetailsResponses();
             if (ToolUtil.isNotEmpty(useType)){
@@ -189,6 +191,9 @@
             }
         }
 
+
+
+
         int totalItems = detailsResponses.size();
         int startIndex = (page - 1) * size;
         int endIndex = Math.min(startIndex + size, totalItems);
diff --git a/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java b/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java
index e21ff45..ef7e699 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java
@@ -76,7 +76,7 @@
 
     private String key = "";//微信商户号
 
-    private String callbackPath = "";//支付回调网关地址
+    private String callbackPath = "8.137.22.229:56666/account";//支付回调网关地址
 
     private String app_cert_path = "C:/cert/alipay/user/app_cert_path.crt";//应用公钥证书路径
 
@@ -204,6 +204,7 @@
             AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
             Map<String, String> map = new HashMap<>();
             map.put("orderString", response.getBody());
+            map.put("returnId",passbackParams);
             System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
             return ResultUtil.success(map);
         } catch (AlipayApiException e) {
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
index f531216..cbdcf9a 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
@@ -100,7 +100,7 @@
     @ResponseBody
     @PostMapping("/coupon/queryCouponByUser/{userId}")
     public List<Integer> queryCouponByUser(@PathVariable("userId") Integer userId){
-        List<Coupon> list = couponService.list(new QueryWrapper<Coupon>().eq("distributionMethod", 2)
+        List<Coupon> list = couponService.list(new QueryWrapper<Coupon>().eq("distributionMethod", 2).eq("userPopulation",2)
                 .le("startTime", new Date()).ge("endTime", new Date()).eq("auditStatus", 2)
                 .eq("state", 1));
 
@@ -202,18 +202,18 @@
     @PostMapping("/base/coupon/getAllCoupons")
     public List<Coupon> getAllCoupons(@RequestBody CommodityRequest request){
         List<Coupon> couponList = new ArrayList<>();
-//        String provinceCode = "";
-//        String cityCode = "";
-//        if (ToolUtil.isEmpty(request.getLat()) && ToolUtil.isEmpty(request.getLon())){
-//            return couponList;
-//        }
-//        try {
-//            Map<String, String> geocode = gdMapGeocodingUtil.geocode(request.getLon(), request.getLat());
-//            provinceCode = geocode.get("provinceCode");
-//            cityCode = geocode.get("cityCode");
-//        }catch (Exception e){
-//            e.printStackTrace();
-//        }
+        String provinceCode = "";
+        String cityCode = "";
+        if (ToolUtil.isEmpty(request.getLat()) && ToolUtil.isEmpty(request.getLon())){
+            return couponList;
+        }
+        try {
+            Map<String, String> geocode = gdMapGeocodingUtil.geocode(request.getLon(), request.getLat());
+            provinceCode = geocode.get("provinceCode");
+            cityCode = geocode.get("cityCode");
+        }catch (Exception e){
+            e.printStackTrace();
+        }
         try {
             LocalDateTime currentDate = LocalDateTime.now();
 
@@ -223,24 +223,24 @@
                     .eq("status",1)
                      .le("startTime", currentDate)
                     .ge("endTime", currentDate));
-//            if (couponList.size() > 0 ){
-//                Iterator<Coupon> iterator = couponList.iterator();
-//                while (iterator.hasNext()) {
-//                    Coupon merchandise = iterator.next();
-//                    if (merchandise.getUseScope() == 2){
-//                        List<CouponCity> couponCities = cityService.list(new LambdaQueryWrapper<CouponCity>()
-//                                .eq(CouponCity::getCouponId,merchandise.getId()));
-//                        if (couponCities.size() > 0){
-//                            for (CouponCity couponCity : couponCities) {
-//                                if (!Objects.equals(couponCity.getCityCode(), cityCode) && !Objects.equals(couponCity.getProvinceCode(), provinceCode)){
-//                                    iterator.remove(); // 移除符合条件的商品
-//                                    break;
-//                                }
-//                            }
-//                        }
-//                    }
-//                }
-//            }
+            if (couponList.size() > 0 ){
+                Iterator<Coupon> iterator = couponList.iterator();
+                while (iterator.hasNext()) {
+                    Coupon merchandise = iterator.next();
+                    if (merchandise.getUseScope() == 2){
+                        List<CouponCity> couponCities = cityService.list(new LambdaQueryWrapper<CouponCity>()
+                                .eq(CouponCity::getCouponId,merchandise.getId()));
+                        if (couponCities.size() > 0){
+                            for (CouponCity couponCity : couponCities) {
+                                if (!Objects.equals(couponCity.getCityCode(), cityCode) && !Objects.equals(couponCity.getProvinceCode(), provinceCode)){
+                                    iterator.remove(); // 移除符合条件的商品
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
             return couponList;
         } catch (Exception e) {
             throw new RuntimeException(e);
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
index bc73622..764abaf 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
@@ -739,6 +739,10 @@
     }
 
 
+    @Autowired
+    private ICouponService couponService;
+
+
     @ResponseBody
     @PostMapping("/base/pointMerchars/getDetailsOfExchange")
     public ExchangeDetailsVo getIntegralExchangeDetails(@RequestBody Integer appUserId){
@@ -747,18 +751,29 @@
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
         List<UserPointsMerchandise> pointsMerchandises = upmseService.list(new QueryWrapper<UserPointsMerchandise>()
                 .eq("userId",appUserId ));
+
+
+        List<UserCoupon> userCoupons = userCouponService.list(new QueryWrapper<UserCoupon>().eq("userId", appUserId));
+
+
         if (pointsMerchandises.size() > 0 ){
             for (UserPointsMerchandise pointsMerchandise : pointsMerchandises) {
                 PointsMerchandise merchandise = pmdsService.getById(pointsMerchandise.getPointsMerchandiseId());
+                if (merchandise==null){
+                    continue;
+                }
                 ExchangeDetailsResponse detailsResponse = new ExchangeDetailsResponse();
                 detailsResponse.setDetailsId(pointsMerchandise.getId());
                 detailsResponse.setGoodName(merchandise.getName());
                 if (merchandise.getRedemptionMethod() == 1){
                     detailsResponse.setExchangeType(1);
                     detailsResponse.setIntegral(merchandise.getIntegral());
-                }else {
+                }else if (merchandise.getRedemptionMethod() == 2){
                     detailsResponse.setExchangeType(2);
                     detailsResponse.setIntegral(merchandise.getIntegral());
+                    detailsResponse.setCash(merchandise.getCash());
+                }else if (merchandise.getRedemptionMethod() == 3){
+                    detailsResponse.setExchangeType(3);
                     detailsResponse.setCash(merchandise.getCash());
                 }
                 detailsResponse.setStartTime(simpleDateFormat.format(merchandise.getStartTime()));
@@ -828,9 +843,10 @@
 
                         // Print the result
                         if (isSameDate) {
-                            detailsResponse.setUseStatus(3);
+
                         } else {
                             System.out.println("The two dates do not have the same date.");
+                            detailsResponse.setUseStatus(3);
                         }
 
 
@@ -890,6 +906,38 @@
             }
             detailsVo.setDetailsResponses(responses);
         }
+
+        if (userCoupons.size()>0){
+            for (UserCoupon userCoupon : userCoupons) {
+                Coupon c = couponService.getById(userCoupon.getCouponId());
+                if (c==null){
+                    continue;
+                }
+
+                ExchangeDetailsResponse detailsResponse = new ExchangeDetailsResponse();
+                detailsResponse.setDetailsId(Long.valueOf(c.getId()));
+                detailsResponse.setGoodName(c.getName());
+                if (c.getRedemptionMethod() == 1){
+                    detailsResponse.setExchangeType(1);
+                    detailsResponse.setIntegral(c.getIntegral().intValue());
+                }else {
+                    detailsResponse.setExchangeType(2);
+                    detailsResponse.setIntegral(c.getIntegral().intValue());
+                    detailsResponse.setCash(c.getCash());
+                }
+                detailsResponse.setStartTime(simpleDateFormat.format(c.getStartTime()));
+                detailsResponse.setEndTime(simpleDateFormat.format(c.getEndTime()));
+                detailsResponse.setUseStatus(userCoupon.getStatus() == 1 ? 2 : 1);
+                detailsResponse.setGoodType(4);
+                responses.add(detailsResponse);
+
+
+            }
+            Comparator<ExchangeDetailsResponse> comparator = Comparator.comparing(ExchangeDetailsResponse::getStartTime).reversed();
+            Collections.sort(responses, comparator);
+            detailsVo.setDetailsResponses(responses);
+
+        }
         return detailsVo;
     }
 
@@ -937,13 +985,13 @@
                     if (pmdsServiceById.getCardType()==1){
                         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
                         Calendar calendar = Calendar.getInstance();
-                        calendar.setTime(pmdsServiceById.getInsertTime());
+                        calendar.setTime(byId.getInsertTime());
                         calendar.add(Calendar.DAY_OF_MONTH, 1);
                         Date end = calendar.getTime();
-                        String startDate = dateFormat.format(pmdsServiceById.getInsertTime());
+                        String startDate = dateFormat.format(byId.getInsertTime());
                         String endDate = dateFormat.format(end);
-                        pmdsServiceById.setStartTime(pmdsServiceById.getInsertTime());
-                        pmdsServiceById.setEndTime(pmdsServiceById.getInsertTime());
+                        detailsVo.setStartTime(startDate);
+                        detailsVo.setEndTime(startDate);
 
                         Date now = new Date();
                         Calendar cal1 = Calendar.getInstance();
@@ -959,19 +1007,19 @@
 
                         // Print the result
                         if (isSameDate) {
-                            detailsVo.setUseType(3);
                         } else {
                             System.out.println("The two dates do not have the same date.");
+                            detailsVo.setUseType(3);
                         }
 
 
                     } else if (pmdsServiceById.getCardType()==2) {
                         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
                         Calendar calendar = Calendar.getInstance();
-                        calendar.setTime(pmdsServiceById.getInsertTime());
+                        calendar.setTime(byId.getInsertTime());
                         calendar.add(Calendar.DAY_OF_MONTH, 31);
                         Date end = calendar.getTime();
-                        String startDate = dateFormat.format(pmdsServiceById.getInsertTime());
+                        String startDate = dateFormat.format(byId.getInsertTime());
                         String endDate = dateFormat.format(end);
                         detailsVo.setStartTime(startDate);
                         detailsVo.setEndTime(endDate);
@@ -984,10 +1032,10 @@
                     } else if (pmdsServiceById.getCardType()==3) {
                         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
                         Calendar calendar = Calendar.getInstance();
-                        calendar.setTime(pmdsServiceById.getInsertTime());
+                        calendar.setTime(byId.getInsertTime());
                         calendar.add(Calendar.DAY_OF_MONTH, 93);
                         Date end = calendar.getTime();
-                        String startDate = dateFormat.format(pmdsServiceById.getInsertTime());
+                        String startDate = dateFormat.format(byId.getInsertTime());
                         String endDate = dateFormat.format(end);
                         detailsVo.setStartTime(startDate);
                         detailsVo.setEndTime(endDate);
@@ -1000,10 +1048,10 @@
                     } else if (pmdsServiceById.getCardType()==4) {
                         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
                         Calendar calendar = Calendar.getInstance();
-                        calendar.setTime(pmdsServiceById.getInsertTime());
+                        calendar.setTime(byId.getInsertTime());
                         calendar.add(Calendar.DAY_OF_MONTH, 372);
                         Date end = calendar.getTime();
-                        String startDate = dateFormat.format(pmdsServiceById.getInsertTime());
+                        String startDate = dateFormat.format(byId.getInsertTime());
                         String endDate = dateFormat.format(end);
                         detailsVo.setStartTime(startDate);
                         detailsVo.setEndTime(endDate);
@@ -1060,9 +1108,12 @@
 
             detailsVo.setGoodName(pmdsServiceById.getName());
             // 2.0
-            detailsVo.setStartTime(simpleDateFormat.format(byId.getInsertTime()));
-            detailsVo.setEndTime(simpleDateFormat.format(pmdsServiceById.getEndTime()));
-            detailsVo.setOrderTime(simpleDateFormat.format(byId.getInsertTime()));
+            if (detailsVo.getStartTime()==null) {
+                detailsVo.setStartTime(simpleDateFormat.format(byId.getInsertTime()));
+                detailsVo.setEndTime(simpleDateFormat.format(pmdsServiceById.getEndTime()));
+                detailsVo.setOrderTime(simpleDateFormat.format(byId.getInsertTime()));
+
+            }
             if (byId.getStatus() == 1){
                 detailsVo.setUseType(2);
             }else {
@@ -1086,6 +1137,67 @@
                     break;
             }
             detailsVo.setContents(pmdsServiceById.getRedemptionInstructions());
+        }else {
+            Coupon coupon = iCouponService.getById(speMercharsId);
+            detailsVo.setDetailsId(Long.valueOf(coupon.getId()));
+            List<String> list3 = new ArrayList<>();
+            list3.add(ToolUtil.isEmpty(coupon.getCover()) ? "" : coupon.getCover());
+            if (ToolUtil.isNotEmpty(coupon.getProductImages())){
+                list3.addAll(Arrays.asList(StrUtils.splitStr2StrArr(coupon.getProductImages(), ",")));
+            }
+            detailsVo.setPics(list3);
+            Collections.sort(detailsVo.getPics(), (s1, s2) -> {
+                if (s1.equals(coupon.getCover())) {
+                    return -1; // s1排在前面
+                } else if (s2.equals(coupon.getCover())) {
+                    return 1; // s2排在前面
+                } else {
+                    return 0; // 保持原顺序
+                }
+            });
+            detailsVo.setGoodName(coupon.getName());
+//            detailsVo.setBelongsScope(coupon.getUserPopulation());
+//                int couponNums = upmseService.count(new QueryWrapper<UserPointsMerchandise>()
+//                        .eq("pointsMerchandiseId",merchandise.getId() ));
+
+
+
+            int couponCounts = userCouponService.count(new QueryWrapper<UserCoupon>().eq("couponId", coupon.getId()));
+//                detailsVo.setRedeemedNum(coupon.getPickUpQuantity());
+//            detailsVo.setRedeemedNum(couponCounts);
+
+//            detailsVo.setResidueNum(Math.max(coupon.getQuantityIssued() - couponCounts, 0));
+
+//            detailsVo.setPerLimit(coupon.getPickUpQuantity());
+            detailsVo.setExchangeType(coupon.getRedemptionMethod());
+            if (coupon.getRedemptionMethod() == 1){
+                detailsVo.setIntegral(coupon.getIntegral().intValue());
+            }else {
+                detailsVo.setIntegral(coupon.getIntegral().intValue());
+                detailsVo.setCash(coupon.getCash());
+            }
+//            if (coupon.getUseScope() == 1){
+//                detailsVo.setExchangeAddrType(1);
+//                detailsVo.setBelongs("全国通用");
+//            }else if (coupon.getUseScope() == 2){
+//                detailsVo.setExchangeAddrType(2);
+//                List<CouponCity> list = ccityService.list(new LambdaQueryWrapper<CouponCity>()
+//                        .eq(CouponCity::getCouponId, coupon.getId()));
+//                if (list.size() > 0){
+//                    detailsVo.setBelongs(list.get(0).getProvince()+"|"+list.get(0).getCity() + "用户可用");
+//                }
+//            }else {
+//                detailsVo.setExchangeAddrType(3);
+//                List<CouponStore> list = cstoreService.list(new QueryWrapper<CouponStore>()
+//                        .eq("couponId",coupon.getId() ));
+//                StoreDetailOfCourse courseOfStore = stoClient.getCourseOfStore(list.get(0).getStoreId());
+//                detailsVo.setBelongs(courseOfStore.getStoreName()+"可用");
+//            }
+//            detailsVo.setStartTime(format.format(coupon.getStartTime()));
+//            detailsVo.setEndTime(format.format(coupon.getEndTime()));
+
+            detailsVo.setContents(coupon.getIllustrate());
+            detailsVo.setGoodType(4);
         }
         return detailsVo;
     }
@@ -1098,9 +1210,10 @@
 
 
     @PostMapping("/base/pointMerchars/saveDetailsUserPointMercase")
-    public void saveDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise){
+    public Long saveDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise){
         merchandise.setInsertTime(new Date());
         upmseService.save(merchandise);
+        return merchandise.getId();
     }
 
 
@@ -1174,6 +1287,15 @@
 
     }
 
+    //拿到积分商品现金的消费记录
+    @ResponseBody
+    @PostMapping("/base/pointMerchars/getConsumeDetails")
+    public List<ConsumeDetail> getConsumeDetails(@RequestBody BillingDataRequestVo requestVo){
+       return   upmseService.getConsumeDetails(requestVo);
+
+
+
+    }
 
 
     public int dealTimeStatus(String startTime, String endTime){
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java
index bd829f2..da55753 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java
@@ -171,19 +171,29 @@
     @PostMapping("/userCoupon/queryUserCouponById")
     public UserCoupon queryUserCouponById(@RequestBody QueryUserCouponByIdAndUserId userCouponByIdAndUserId){
         try {
-            UserCoupon userCoupon = userCouponService.getOne(new LambdaQueryWrapper<UserCoupon>().eq(UserCoupon::getCouponId,userCouponByIdAndUserId.getId()).eq(UserCoupon::getUserId,userCouponByIdAndUserId.getUserId()));
+                UserCoupon userCoupon = userCouponService.getOne(new LambdaQueryWrapper<UserCoupon>().eq(UserCoupon::getId,userCouponByIdAndUserId.getId()).eq(UserCoupon::getUserId,userCouponByIdAndUserId.getUserId()));
             return userCoupon;
         }catch (Exception e){
             e.printStackTrace();
             return null;
         }
     }
-
+    @Autowired
+    private ICouponService couponService;
     @PostMapping("/userCoupon/sendUserCoupon")
     public void sendUserCoupon(@RequestBody SendCouponReq sendCouponReq){
         try {
             String couponIds = sendCouponReq.getCouponIds();
             for (String s : couponIds.split(",")) {
+                Coupon coupon = couponService.getById(s);
+                //查询该优惠卷的数量够不够
+                List<Integer> queryIds = new ArrayList<>();
+                queryIds.add(coupon.getId());
+                int counts = userCouponService.count(new QueryWrapper<UserCoupon>().eq("couponId", s));
+                if (coupon.getQuantityIssued()<=counts){
+                    continue;
+                }
+                
                 UserCoupon userCoupon = new UserCoupon();
                 userCoupon.setCouponId(Integer.valueOf(s));
                 userCoupon.setUserId(sendCouponReq.getUserId());
@@ -205,6 +215,7 @@
     @PostMapping("/userCoupon/updateUserCoupon")
     public void updateUserCoupon(@RequestBody UserCoupon userCoupon){
         try {
+            userCoupon.setUserId(null);
             userCouponService.updateById(userCoupon);
         }catch (Exception e){
             e.printStackTrace();
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/BillingDataRequestVo.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/BillingDataRequestVo.java
new file mode 100644
index 0000000..f426cd3
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/BillingDataRequestVo.java
@@ -0,0 +1,21 @@
+package com.dsh.activity.entity;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class BillingDataRequestVo {
+
+    @ApiModelProperty(value = "开始时间")
+    private String monthStart = null;
+
+    @ApiModelProperty(value = "结束时间时间")
+    private String monthEnd = null;
+
+    @ApiModelProperty(value = "用户id")
+    private Integer appUserId;
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/ConsumeDetail.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/ConsumeDetail.java
new file mode 100644
index 0000000..96bc0bd
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/ConsumeDetail.java
@@ -0,0 +1,22 @@
+package com.dsh.activity.entity;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ConsumeDetail {
+
+    @ApiModelProperty(value = "名称")
+    private String consumeName;
+
+    @ApiModelProperty(value = "时间")
+    private String consumeTime;
+
+    @ApiModelProperty(value = "金额 例如 -90 ")
+    private String consumeAmount;
+
+    @ApiModelProperty(value = "1充值 2扣除")
+    private Integer type;
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java
index 605dc03..45cc535 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java
@@ -2,6 +2,8 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dsh.activity.entity.BillingDataRequestVo;
+import com.dsh.activity.entity.ConsumeDetail;
 import com.dsh.activity.entity.UserPointsMerchandise;
 import com.dsh.activity.model.PointMerchandiseIncomeVo;
 import org.apache.ibatis.annotations.Param;
@@ -24,4 +26,6 @@
 
 
     Object changeState(List<Integer> ids, Integer state);
+
+    List<ConsumeDetail> getConsumeDetails(BillingDataRequestVo requestVo);
 }
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java
index 76b505b..ab0122f 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java
@@ -1,6 +1,8 @@
 package com.dsh.activity.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.activity.entity.BillingDataRequestVo;
+import com.dsh.activity.entity.ConsumeDetail;
 import com.dsh.activity.entity.CourseChangeStateDTO;
 import com.dsh.activity.entity.UserPointsMerchandise;
 import com.dsh.activity.model.PointMerchandiseIncomeVo;
@@ -22,4 +24,6 @@
     List<PointMerchandiseIncomeVo> getAmount();
 
     Object changeState(CourseChangeStateDTO dto);
+
+    List<ConsumeDetail> getConsumeDetails(BillingDataRequestVo requestVo);
 }
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java
index c998d48..43c1b28 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java
@@ -23,6 +23,7 @@
 import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -64,10 +65,15 @@
             if (students.size() > 0) {
                 userPopulation.add(3);//已有学员用户
             }
-            List<Coupon> list = this.list(new QueryWrapper<Coupon>().eq("distributionMethod", distributionMethod)
-                    .in("userPopulation", userPopulation)
-                    .eq("auditStatus", 2).eq("status", 2).eq("state", 1)
-                    .last(" and now() between startTime and endTime order by insertTime desc"));
+//            List<Coupon> list = this.list(new QueryWrapper<Coupon>().eq("distributionMethod", distributionMethod)
+//                    .in("userPopulation", userPopulation)
+//                    .eq("auditStatus", 2).eq("status", 2).eq("state", 1)
+//                    .last(" and now() between startTime and endTime order by insertTime desc"));
+
+
+            List<Coupon> list = this.list(new QueryWrapper<Coupon>().eq("distributionMethod", 2).eq("userPopulation",2)
+                    .le("startTime", new Date()).ge("endTime", new Date()).eq("auditStatus", 2)
+                    .eq("state", 1));
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
             for (Coupon coupon : list) {
                 CouponListVo couponListVo = new CouponListVo();
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java
index 150a419..1300c06 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java
@@ -1,6 +1,8 @@
 package com.dsh.activity.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.activity.entity.BillingDataRequestVo;
+import com.dsh.activity.entity.ConsumeDetail;
 import com.dsh.activity.entity.CourseChangeStateDTO;
 import com.dsh.activity.entity.UserPointsMerchandise;
 import com.dsh.activity.mapper.UserPointsMerchandiseMapper;
@@ -35,4 +37,9 @@
         List<Integer> ids = dto.getIds();
         return this.baseMapper.changeState(ids,dto.getState());
     }
+
+    @Override
+    public List<ConsumeDetail> getConsumeDetails(BillingDataRequestVo requestVo) {
+        return this.baseMapper.getConsumeDetails(requestVo);
+    }
 }
diff --git a/cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml b/cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml
index 5db81fc..bc20cc5 100644
--- a/cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml
+++ b/cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml
@@ -24,4 +24,29 @@
         left join t_points_merchandise t2 on t1.pointsMerchandiseId = t2.id
         where t1.payStatus =2
     </select>
+    <select id="getConsumeDetails" resultType="com.dsh.activity.entity.ConsumeDetail">
+
+        SELECT
+            CASE  tm.type
+                WHEN 1 THEN '实体购买'
+                WHEN 2 THEN '课包购买'
+                WHEN 3 THEN '门票购买'
+                WHEN 4 THEN '优惠券购买'
+                END AS  consumeName  ,DATE_FORMAT(pm.insertTime, '%m-%d %H:%i')as `consumeTime`,2 as type,CONCAT('-',tm.cash) as consumeAmount
+        FROM t_user_points_merchandise pm
+                 LEFT JOIN t_points_merchandise tm ON tm.id = pm.pointsMerchandiseId
+        WHERE pm.pointsMerchandiseId IN(
+            SELECT id
+            FROM t_points_merchandise WHERE redemptionMethod IN (2,3)
+
+        )
+        <if test="null != monthStart and '' != monthStart and null != monthEnd and '' != monthEnd">
+            and DATE_FORMAT(pm.insertTime, '%Y-%m-%d %H:%i:%s') between #{monthStart} and #{monthEnd}
+        </if>
+        <if test="null != appUserId and '' != appUserId ">
+            and pm.userId = #{appUserId}
+        </if>
+
+
+    </select>
 </mapper>
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/course/model/PaymentDeductionClassHour.java b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/course/model/PaymentDeductionClassHour.java
index e8dc41d..c2c3dc1 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/course/model/PaymentDeductionClassHour.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/course/model/PaymentDeductionClassHour.java
@@ -24,4 +24,5 @@
      * 用于支付的课程
      */
     private Long courseId;
+    private Integer uid;
 }
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java
index d8fa0ea..ea7864c 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java
@@ -161,8 +161,8 @@
         competitionInfo.setStartTime(sdf.format(competition.getStartTime()));
         competitionInfo.setEndTime(sdf.format(competition.getEndTime()));
         competitionInfo.setAge(competition.getStartAge() + "-" + competition.getEndAge());
-        competitionInfo.setProvince(competition.getEntryProvince());
-        competitionInfo.setCity(competition.getEntryCity());
+        competitionInfo.setProvince(competition.getProvince());
+        competitionInfo.setCity(competition.getCity());
         String str = competition.getAddress();
         str = str.substring(str.indexOf("省") + 1);
 
@@ -304,6 +304,7 @@
                 paymentDeductionClassHour.setClassHour(competition.getClassPrice());
                 paymentDeductionClassHour.setCode(code);
                 paymentDeductionClassHour.setCourseId(paymentCompetitionVo.getCoursePaymentId());
+                paymentDeductionClassHour.setUid(uid);
                 coursePackagePaymentClient.paymentDeductionClassHour(paymentDeductionClassHour);
             }
             paymentCompetition = paymentCompetitionService.getById(paymentCompetition.getId());
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
index df01a7d..86c427a 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dsh.course.entity.*;
+import com.dsh.course.entity.dto.SelectDto;
 import com.dsh.course.feignclient.model.ExerciseVideo;
 import com.dsh.course.model.*;
 import com.dsh.course.model.dto.CourseChangeStateDTO;
@@ -509,11 +510,15 @@
     @Autowired
     private ICoursePackagePaymentConfigService packagePaymentConfigService;
     @PostMapping("/course/times")
-    public List<Integer> times( @RequestBody Integer oneId){
+    public List<SelectDto> times(@RequestBody Integer oneId){
         List<CoursePackagePaymentConfig> list = packagePaymentConfigService.list(new QueryWrapper<CoursePackagePaymentConfig>().eq("coursePackageId",oneId));
-        List<Integer> integerList = new ArrayList<>();
+        List<SelectDto> integerList = new ArrayList<>();
         for (CoursePackagePaymentConfig coursePackagePaymentConfig : list) {
-            integerList.add(coursePackagePaymentConfig.getClassHours());
+//            integerList.add(coursePackagePaymentConfig.getClassHours());
+            SelectDto selectDto = new SelectDto();
+            selectDto.setId(coursePackagePaymentConfig.getId());
+            selectDto.setValue(String.valueOf(coursePackagePaymentConfig.getClassHours()));
+            integerList.add(selectDto);
         }
 
 
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java
index 577aa91..9e1ff4b 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java
@@ -185,11 +185,11 @@
             @ApiImplicitParam(name = "lat",value = "纬度",dataType = "String"),
     })
     public ResultUtil<ExchangeCoursePackageResponse> discountCourseDatas(Integer coursePackageDiscountId,String lon,String lat){
-        try {
+//        try {
             return ResultUtil.success(tcpdService.getWeekFreeCourseDetails(coursePackageDiscountId,lat,lon));
-        }catch (Exception e){
-            return ResultUtil.runErr();
-        }
+//        }catch (Exception e){
+//            return ResultUtil.runErr();
+//        }
     }
 
 
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
index 9761b5d..8834457 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -54,10 +54,7 @@
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.ZoneId;
+import java.time.*;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -438,6 +435,9 @@
         if (byUserId.size() > 0 ){
             for (TCoursePackagePayment tCoursePackagePayment : byUserId) {
                 TCoursePackage tCoursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId());
+                if (tCoursePackage.getType()==3){
+                    continue;
+                }
                 StuCourseResp resp = new StuCourseResp();
                 resp.setCourseId(tCoursePackage.getId());
                 resp.setId(tCoursePackagePayment.getId());
@@ -1091,6 +1091,20 @@
     }
 
 
+    public static Date[] generateDateArray(int numDays,Date date) {
+//        LocalDate tomorrow = LocalDate.now().plusDays(1);
+        LocalDate tomorrow = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate().plusDays(1);
+
+        Date[] dates = new Date[numDays];
+
+        for (int i = 0; i < numDays; i++) {
+            LocalDate currentDate = tomorrow.plusDays(i);
+            dates[i] = Date.from(currentDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+        }
+
+        return dates;
+    }
+
     @Autowired
     private  TCoursePackageService packageService;
     @Autowired
@@ -1104,18 +1118,23 @@
     public void paymentDeductionClassHour(@RequestBody PaymentDeductionClassHour paymentDeductionClassHour){
         try {
             // 2.0 用id进行查询
-            List<TCoursePackagePayment> list = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>().eq("id", paymentDeductionClassHour.getCourseId()).eq("payStatus", 2)
+            TCoursePackagePayment coursePackagePayment= packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("id", paymentDeductionClassHour.getCourseId()).eq("payStatus", 2)
                     .eq("status", 1).eq("state", 1).gt("laveClassHours", 0));
             Integer classHour = paymentDeductionClassHour.getClassHour();
-            for (TCoursePackagePayment coursePackagePayment : list) {
+//            for (TCoursePackagePayment coursePackagePayment : list) {
                 if (coursePackagePayment.getLaveClassHours().compareTo(classHour) >= 0) {
                     coursePackagePayment.setLaveClassHours(coursePackagePayment.getLaveClassHours() - classHour);
                     coursePackagePayment.setAppUserId(null);
                     packagePaymentService.updateById(coursePackagePayment);
 
 
-                    coursePackageSchedulingService.remove(new QueryWrapper<CoursePackageScheduling>().eq("courseId", coursePackagePayment.getCoursePackageId()));
-                    coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("coursePackageId", coursePackagePayment.getCoursePackageId()));
+//                    coursePackageSchedulingService.remove(new QueryWrapper<CoursePackageScheduling>().eq("courseId", coursePackagePayment.getCoursePackageId()));
+
+
+                    List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", coursePackagePayment.getStudentId()).eq("coursePackageId", coursePackagePayment.getCoursePackageId()));
+                    List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
+                    coursePackageSchedulingService.remove(new QueryWrapper<CoursePackageScheduling>().in("id",collect));
+                    coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", paymentDeductionClassHour.getId()).eq("coursePackageId", coursePackagePayment.getCoursePackageId()));
 
 
 
@@ -1126,103 +1145,179 @@
                     String classWeeks = tCoursePackage.getClassWeeks();
                     List<Integer> week = week(classWeeks);
 
+                    List<TCoursePackagePayment> pays = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>().eq("coursePackageId", coursePackagePayment.getCoursePackageId()).eq("studentId", coursePackagePayment.getStudentId()));
+
+
+                    for (TCoursePackagePayment pay : pays) {
+
+
+                        List<CoursePackageStudent> studentCourse1 = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", pay.getStudentId()).eq("coursePackageId", pay.getCoursePackageId()));
+                        List<Long> collect1 = studentCourse1.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
+                        //拿到最后一天的排课记录
+
+                        CoursePackageScheduling cs = null;
+                        if (collect1.size()>0) {
+                            cs = coursePackageSchedulingService.getOne(new QueryWrapper<CoursePackageScheduling>().in("id", collect1).orderByDesc("classDate").last("limit 1"));
+
+                        }
+//
+//                        Calendar calendar = Calendar.getInstance();
+//                        Date currentDate = calendar.getTime();
+//                        calendar.add(Calendar.DAY_OF_MONTH, -1);
+//                        Date today = calendar.getTime();
+                        Date today = new Date();
+
+                        //判断最后一天是否超过当前日期
+                        if (cs==null||cs.getClassDate().before(new Date())){
+                        }else {
+                            today = cs.getClassDate();
+                        }
+
+                    Integer laveClassHours = pay.getLaveClassHours();
+                    Integer codeTime = tCoursePackage.getCodeTime();
+                    Integer can = laveClassHours/codeTime;
+
+                    int count = 0;
+
+
                     String[] split = tCoursePackage.getClassStartTime().split(",");
                     String[] split1 = tCoursePackage.getClassEndTime().split(",");
                     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                     SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-                    // 本周周几
-                    int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date()) - 1;
-                    for (Integer integer : week) {
-                        if (integer < i) {
-                            // 找下一周的时间
-                            Calendar instance = Calendar.getInstance();
-                            instance.add(Calendar.DATE, 7 - (i - integer));
-                            Date time = instance.getTime();
 
+                    Date[] dates = generateDateArray(14,today);
+                    for (Date date : dates) {
+                        if (count==can){
+                            break;
+                        }
+                        int wei =  cn.hutool.core.date.DateUtil.dayOfWeek(date);
+                        if (week.contains(wei)){
                             for (int i1 = 0; i1 < split.length; i1++) {
-
-                                CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                                coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                                Date parse = format1.parse(format.format(time) + " " + split[i1]);
-                                Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
-                                coursePackageScheduling.setClassDate(parse);
-                                coursePackageScheduling.setEndDate(parse1);
-                                coursePackageScheduling.setStatus(1);
-                                coursePackageSchedulingService.save(coursePackageScheduling);
-                                CoursePackageStudent student1 = new CoursePackageStudent();
-                                student1.setAppUserId(student.getAppUserId());
-                                student1.setStudentId(student.getId());
-                                student1.setCoursePackageId(tCoursePackage.getId());
-                                student1.setCoursePackagePaymentId(coursePackagePayment.getId());
-                                student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                                student1.setSignInOrNot(1);
-                                student1.setReservationStatus(1);
-                                student1.setInsertTime(new Date());
-                                studentService.save(student1);
-
-                            }
-
-                        } else if (integer > i) {
-                            Calendar instance = Calendar.getInstance();
-                            instance.add(Calendar.DATE, integer - i);
-                            Date time1 = instance.getTime();
-                            List<Date> list6 = new ArrayList<>();
-                            list6.add(time1);
-                            instance.add(Calendar.DATE, 7);
-                            Date time2 = instance.getTime();
-                            list6.add(time2);
-                            for (Date time : list6) {
-                                for (int i1 = 0; i1 < split.length; i1++) {
-                                    CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                                    coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                                    Date parse = format1.parse(format.format(time) + " " + split[i1]);
-                                    Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
-                                    coursePackageScheduling.setClassDate(parse);
-                                    coursePackageScheduling.setEndDate(parse1);
-                                    coursePackageScheduling.setStatus(1);
-                                    coursePackageSchedulingService.save(coursePackageScheduling);
-
-                                    CoursePackageStudent student1 = new CoursePackageStudent();
-                                    student1.setAppUserId(student.getAppUserId());
-                                    student1.setStudentId(student.getId());
-                                    student1.setCoursePackageId(tCoursePackage.getId());
-                                    student1.setCoursePackagePaymentId(coursePackagePayment.getId());
-                                    student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                                    student1.setSignInOrNot(1);
-                                    student1.setReservationStatus(1);
-                                    student1.setInsertTime(new Date());
-                                    studentService.save(student1);
+                                if (count==can){
+                                    break;
                                 }
-                            }
-
-                        } else {
-                            Calendar instance = Calendar.getInstance();
-                            instance.add(Calendar.DATE, 7);
-                            Date time = instance.getTime();
-
-                            for (int i1 = 0; i1 < split.length; i1++) {
                                 CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
                                 coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                                Date parse = format1.parse(format.format(time) + " " + split[i1]);
-                                Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
+                                Date parse = format1.parse(format.format(date) + " " + split[i1]);
+                                Date parse1 = format1.parse(format.format(date) + " " + split1[i1]);
                                 coursePackageScheduling.setClassDate(parse);
                                 coursePackageScheduling.setEndDate(parse1);
                                 coursePackageScheduling.setStatus(1);
                                 coursePackageSchedulingService.save(coursePackageScheduling);
-
                                 CoursePackageStudent student1 = new CoursePackageStudent();
-                                student1.setAppUserId(student.getAppUserId());
-                                student1.setStudentId(student.getId());
-                                student1.setCoursePackageId(tCoursePackage.getId());
-                                student1.setCoursePackagePaymentId(coursePackagePayment.getId());
+                                student1.setAppUserId(pay.getAppUserId());
+                                student1.setStudentId(pay.getStudentId());
+                                student1.setCoursePackageId(pay.getCoursePackageId());
+                                student1.setCoursePackagePaymentId(pay.getId());
                                 student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
                                 student1.setSignInOrNot(1);
                                 student1.setReservationStatus(1);
                                 student1.setInsertTime(new Date());
                                 studentService.save(student1);
+                                count++;
                             }
                         }
                     }
+
+                    }
+
+
+
+
+
+//                    // 本周周几
+//                    int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date()) - 1;
+//                    for (Integer integer : week) {
+//                        if (integer < i) {
+//                            // 找下一周的时间
+//                            Calendar instance = Calendar.getInstance();
+//                            instance.add(Calendar.DATE, 7 - (i - integer));
+//                            Date time = instance.getTime();
+//
+//                            for (int i1 = 0; i1 < split.length; i1++) {
+//
+//                                CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
+//                                coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
+//                                Date parse = format1.parse(format.format(time) + " " + split[i1]);
+//                                Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
+//                                coursePackageScheduling.setClassDate(parse);
+//                                coursePackageScheduling.setEndDate(parse1);
+//                                coursePackageScheduling.setStatus(1);
+//                                coursePackageSchedulingService.save(coursePackageScheduling);
+//                                CoursePackageStudent student1 = new CoursePackageStudent();
+//                                student1.setAppUserId(student.getAppUserId());
+//                                student1.setStudentId(student.getId());
+//                                student1.setCoursePackageId(tCoursePackage.getId());
+//                                student1.setCoursePackagePaymentId(coursePackagePayment.getId());
+//                                student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+//                                student1.setSignInOrNot(1);
+//                                student1.setReservationStatus(1);
+//                                student1.setInsertTime(new Date());
+//                                studentService.save(student1);
+//
+//                            }
+//
+//                        } else if (integer > i) {
+//                            Calendar instance = Calendar.getInstance();
+//                            instance.add(Calendar.DATE, integer - i);
+//                            Date time1 = instance.getTime();
+//                            List<Date> list6 = new ArrayList<>();
+//                            list6.add(time1);
+//                            instance.add(Calendar.DATE, 7);
+//                            Date time2 = instance.getTime();
+//                            list6.add(time2);
+//                            for (Date time : list6) {
+//                                for (int i1 = 0; i1 < split.length; i1++) {
+//                                    CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
+//                                    coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
+//                                    Date parse = format1.parse(format.format(time) + " " + split[i1]);
+//                                    Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
+//                                    coursePackageScheduling.setClassDate(parse);
+//                                    coursePackageScheduling.setEndDate(parse1);
+//                                    coursePackageScheduling.setStatus(1);
+//                                    coursePackageSchedulingService.save(coursePackageScheduling);
+//
+//                                    CoursePackageStudent student1 = new CoursePackageStudent();
+//                                    student1.setAppUserId(student.getAppUserId());
+//                                    student1.setStudentId(student.getId());
+//                                    student1.setCoursePackageId(tCoursePackage.getId());
+//                                    student1.setCoursePackagePaymentId(coursePackagePayment.getId());
+//                                    student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+//                                    student1.setSignInOrNot(1);
+//                                    student1.setReservationStatus(1);
+//                                    student1.setInsertTime(new Date());
+//                                    studentService.save(student1);
+//                                }
+//                            }
+//
+//                        } else {
+//                            Calendar instance = Calendar.getInstance();
+//                            instance.add(Calendar.DATE, 7);
+//                            Date time = instance.getTime();
+//
+//                            for (int i1 = 0; i1 < split.length; i1++) {
+//                                CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
+//                                coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
+//                                Date parse = format1.parse(format.format(time) + " " + split[i1]);
+//                                Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
+//                                coursePackageScheduling.setClassDate(parse);
+//                                coursePackageScheduling.setEndDate(parse1);
+//                                coursePackageScheduling.setStatus(1);
+//                                coursePackageSchedulingService.save(coursePackageScheduling);
+//
+//                                CoursePackageStudent student1 = new CoursePackageStudent();
+//                                student1.setAppUserId(student.getAppUserId());
+//                                student1.setStudentId(student.getId());
+//                                student1.setCoursePackageId(tCoursePackage.getId());
+//                                student1.setCoursePackagePaymentId(coursePackagePayment.getId());
+//                                student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+//                                student1.setSignInOrNot(1);
+//                                student1.setReservationStatus(1);
+//                                student1.setInsertTime(new Date());
+//                                studentService.save(student1);
+//                            }
+//                        }
+//                    }
 
 
                         // 2.0 少于3课时 推送
@@ -1250,7 +1345,7 @@
                         cancelledClasses.setCancelledClassesNumber(classHour);
                         cancelledClasses.setInsertTime(new Date());
                         cancelledClassesService.save(cancelledClasses);
-                        break;
+
                     }else{
                         CancelledClasses cancelledClasses = new CancelledClasses();
                         cancelledClasses.setType(2);
@@ -1266,7 +1361,7 @@
 
                         classHour -= cancelledClasses.getCancelledClassesNumber();
                     }
-                }
+//                }
 
 
         }catch (Exception e){
@@ -1713,13 +1808,18 @@
                                     in(CoursePackageStudent::getCoursePackagePaymentId, ids)
                     );
 
-                    detailsListVo.setType(1);
                     if(list4.size()>0){
                         Integer signInOrNot = list4.get(0).getSignInOrNot();
+                        detailsListVo.setType(1);
+
                         if(signInOrNot==2){
                             detailsListVo.setType(3);
                         }
                         detailsListVo.setIsType(list4.get(0).getType());
+
+                    }else {
+                        detailsListVo.setType(2);
+
                     }
 
                 } else {
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PaymentDeductionClassHour.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PaymentDeductionClassHour.java
index 0953dd1..29a4176 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PaymentDeductionClassHour.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PaymentDeductionClassHour.java
@@ -24,4 +24,5 @@
      * 用于支付的课程
      */
     private Long courseId;
+    private Integer uid;
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/RegisterCourseVo.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/RegisterCourseVo.java
index 877a839..8d82530 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/model/vo/RegisterCourseVo.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/RegisterCourseVo.java
@@ -36,5 +36,7 @@
 
     @ApiModelProperty(value = "1常规 2假期 3体验")
     private Integer type;
+    @ApiModelProperty(value = "假期课时间段")
+    private String time;
 
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java
index e294b35..a8a1c42 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java
@@ -319,7 +319,7 @@
         JSONArray jsonArray = JSON.parseArray(coursePackageDiscount.getContent());
         JSONObject jsonObject = jsonArray.getJSONObject(0);
         CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(coursePackageDiscount.getCoursePackagePaymentConfigId());
-        if (coursePackageDiscount.getType() == 3){
+        if (coursePackageDiscount.getType() == 3 ||coursePackageDiscount.getType() == 4){
             Double cashPayment = jsonObject.getDouble("cashPayment");
             packageResponse.setClassHours(paymentConfig.getClassHours());
             packageResponse.setCostPrice(paymentConfig.getCashPayment());
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
index 1369c02..96e9b12 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
@@ -389,6 +389,9 @@
                     registerCourseVo.setCourseTime(new SimpleDateFormat("yyyy-MM-dd").format(tCoursePackagePayment.getInsertTime()));
                     Coach coach = coachClient.queryCoachById(coursePackage.getCoachId());
                     registerCourseVo.setCourseTeacher(ToolUtil.isEmpty(coach) ? "" : coach.getName());
+                    if (coursePackage.getType()==2) {
+                        registerCourseVo.setTime(new SimpleDateFormat("yyyy-MM-dd").format(coursePackage.getStartTime()) + "-" + new SimpleDateFormat("yyyy-MM-dd").format(coursePackage.getEndTime()));
+                    }
                     List<CoursePackageStudent> coursePackageStudents = cpsMapper.selectList(new QueryWrapper<CoursePackageStudent>()
                             .eq("coursePackageId",coursePackage.getId())
                             .eq("studentId",appUserId ));
@@ -841,8 +844,10 @@
                             }else if(coursePackageStudent.getSignInOrNot()==2){
                                 recordVo.setStatus(5);
                             }else {
+//                                CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>()
+//                                        .eq("coursePackageId",coursePackageStudent.getCoursePackageId()));
                                 CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>()
-                                        .eq("coursePackageId",coursePackageStudent.getCoursePackageId() ));
+                                        .eq("coursePackageSchedulingId",byId.getId()));
                                 if (ToolUtil.isNotEmpty(cancelledClasses)){
                                     recordVo.setStatus(3);
                                     // 消课 到课状态0 旷课
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
index 80c060c..33a6525 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
@@ -42,6 +42,8 @@
 import java.math.RoundingMode;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.ZoneId;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -122,8 +124,11 @@
         Map<String, String> geocode = gdMapGeocodingUtil.geocode(coursePackageList.getLon(), coursePackageList.getLat());
         String provinceCode = geocode.get("provinceCode");
         String cityCode = geocode.get("cityCode");
+//        QueryWrapper<TCoursePackage> wrapper = new QueryWrapper<TCoursePackage>().in("status", Arrays.asList(1, 2))
+//                .eq("auditStatus", 2).eq("state", 1).eq("provinceCode", provinceCode).eq("cityCode", cityCode);
+
         QueryWrapper<TCoursePackage> wrapper = new QueryWrapper<TCoursePackage>().in("status", Arrays.asList(1, 2))
-                .eq("auditStatus", 2).eq("state", 1).eq("provinceCode", provinceCode).eq("cityCode", cityCode);
+                .eq("auditStatus", 2).eq("state", 1);
         if(null != coursePackageList.getCoursePackageTypeId()){
             wrapper.eq("coursePackageTypeId", coursePackageList.getCoursePackageTypeId());
         }
@@ -141,7 +146,7 @@
                 wrapper.or().in("storeId", collect);
             }
         }
-        List<TCoursePackage> list = this.list(wrapper.last(" order by sort, insertTime desc"));
+        List<TCoursePackage> list = this.list(wrapper.last(" order by sort desc, insertTime desc"));
         List<CoursePackageListVo> listVos = new ArrayList<>();
         for (TCoursePackage coursePackage : list) {
             Store store = storeClient.queryStoreById(coursePackage.getStoreId());
@@ -707,6 +712,15 @@
     public ResultUtil paymentCourse(Integer uid, PaymentCourseVo paymentCourseVo) throws Exception {
         AppUser appUser = appUserClient.queryAppUser(uid);
         CoursePackageInfo coursePackageInfo = queryCourseInfo(uid, paymentCourseVo.getId(), null, null);
+        //校验是否已经报满
+        Integer integer = coursePackagePaymentService.queryCountNumber(paymentCourseVo.getId());
+        TCoursePackage course = coursePackageService.getById(paymentCourseVo.getId());
+        if (integer>=course.getMaxSubscribeNumber()){
+            return ResultUtil.error("报名失败,已达最大报名人数");
+        }
+
+
+
         List<CoursePackagePaymentConfigVo> list = coursePackageInfo.getList();
 
         String[] students = paymentCourseVo.getStudentIds().split(";");
@@ -996,16 +1010,14 @@
                                     coursePackagePaymentService.updateBatchById(list);
                                 System.out.println("===========到达支付");
                                     // 2.0
+                                    String[] coupons = coursePackagePaymentConfig.getCouponIds().split(",");
+
+
+
                                     userCouponClient.sendUserCoupon(new SendCouponReq(uid,coursePackagePaymentConfig.getCouponIds()));
 
 
                                     moneyOut(tradeNo,tradeNo);
-
-
-
-
-
-
 
 
 
@@ -1132,6 +1144,7 @@
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
         String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
         for (String s : split) {
+
             TCoursePackagePayment coursePackagePayment = new TCoursePackagePayment();
             coursePackagePayment.setCode(code);
             coursePackagePayment.setAppUserId(appUser.getId());
@@ -1156,7 +1169,7 @@
             if(student!=null){
                 sId=student.getId();
             }
-            addPackageStudent(paymentCourseVo.getId(),appUser.getId(),sId,coursePackagePayment.getId());
+            addPackageStudent(paymentCourseVo.getId(),appUser.getId(), Integer.valueOf(s),coursePackagePayment.getId());
         }
 
         Integer playPaiCoins = appUser.getPlayPaiCoins();
@@ -1173,6 +1186,9 @@
     }
 
 
+
+
+
     private void addPackageStudent(Integer courseId, Integer userId, Integer sId,Long paymentId) throws ParseException {
         // 课包
         TCoursePackage tCoursePackage = this.baseMapper.selectById(courseId);
@@ -1184,26 +1200,74 @@
         String[] split1 = tCoursePackage.getClassEndTime().split(",");
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
         SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+
+        //查出当前用户当前学员当前课包最后一天的排课数据
+        List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", sId).eq("coursePackageId", courseId));
+        List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
+        //拿到最后一天的排课记录
+
+        CoursePackageScheduling cs = null;
+        if (collect.size()>0) {
+             cs = coursePackageSchedulingService.getOne(new QueryWrapper<CoursePackageScheduling>().in("id", collect).orderByDesc("classDate").last("limit 1"));
+
+        }
+        int i = -1;
+
+//        Calendar calendar = Calendar.getInstance();
+//        Date currentDate = calendar.getTime();
+//        calendar.add(Calendar.DAY_OF_MONTH, -1);
+//        Date today = calendar.getTime();
+        Date today = new Date();
+
+        //判断最后一天是否超过当前日期
+        if (cs==null||cs.getClassDate().before(new Date())){
+            i = DateUtil.dayOfWeek(new Date())-1;
+        }else {
+            i = DateUtil.dayOfWeek(cs.getClassDate())-1;
+            today = cs.getClassDate();
+        }
+
+
+        TCoursePackagePayment pay = coursePackagePaymentService.getById(paymentId);
+        Integer laveClassHours = pay.getLaveClassHours();
+        Integer codeTime = tCoursePackage.getCodeTime();
+        Integer can = 0;
+
+
+        int count = 0;
+
         // 本周周几
-        int i = DateUtil.dayOfWeek(new Date())-1;
-        for (Integer integer : week) {
-            if(integer<i){
-                // 找下一周的时间
-                Calendar instance = Calendar.getInstance();
-                instance.add(Calendar.DATE,7-(i-integer));
-                Date time = instance.getTime();
+//        int i = DateUtil.dayOfWeek(new Date())-1;
 
+        Date[] dates = generateDateArray(14,today);
+        if (tCoursePackage.getType()==1){
+            can = laveClassHours/codeTime;
+        }
+        if (tCoursePackage.getType()==2){
+            Date startDate = tCoursePackage.getStartTime();
+            Date endDate = tCoursePackage.getEndTime();
+            dates = generateDateArray1(startDate, endDate);
+            can = 999;
+        }
+
+        for (Date date : dates) {
+            if (count==can){
+                     break;
+                  }
+                int wei =  DateUtil.dayOfWeek(date);
+            if (week.contains(wei)){
                 for (int i1 = 0; i1 < split.length; i1++) {
-
+                    if (count==can){
+                        break;
+                            }
                     CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
                     coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                                            Date parse = format1.parse(format.format(time) + " " + split[i1]);
-                        Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
-                        coursePackageScheduling.setClassDate(parse);
-                        coursePackageScheduling.setEndDate(parse1);
-                        coursePackageScheduling.setStatus(1);
-                        coursePackageSchedulingService.save(coursePackageScheduling);
-
+                    Date parse = format1.parse(format.format(date) + " " + split[i1]);
+                    Date parse1 = format1.parse(format.format(date) + " " + split1[i1]);
+                    coursePackageScheduling.setClassDate(parse);
+                    coursePackageScheduling.setEndDate(parse1);
+                    coursePackageScheduling.setStatus(1);
+                    coursePackageSchedulingService.save(coursePackageScheduling);
                     CoursePackageStudent student1 = new CoursePackageStudent();
                     student1.setAppUserId(userId);
                     student1.setStudentId(sId);
@@ -1214,75 +1278,151 @@
                     student1.setReservationStatus(1);
                     student1.setInsertTime(new Date());
                     cpsMapper.insert(student1);
-
-                }
-
-            }else if(integer>i) {
-                Calendar instance = Calendar.getInstance();
-                instance.add(Calendar.DATE,integer-i);
-                Date time1 = instance.getTime();
-                List<Date> list = new ArrayList<>();
-                list.add(time1);
-                instance.add(Calendar.DATE,7);
-                Date time2 = instance.getTime();
-                list.add(time2);
-                for (Date time : list) {
-                    for (int i1 = 0; i1 < split.length; i1++) {
-                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                        coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                                                    Date parse = format1.parse(format.format(time) + " " + split[i1]);
-                            Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
-                            coursePackageScheduling.setClassDate(parse);
-                            coursePackageScheduling.setEndDate(parse1);
-                            coursePackageScheduling.setStatus(1);
-                            coursePackageSchedulingService.save(coursePackageScheduling);
-
-                        CoursePackageStudent student1 = new CoursePackageStudent();
-                        student1.setAppUserId(userId);
-                        student1.setStudentId(sId);
-                        student1.setCoursePackageId(tCoursePackage.getId());
-                        student1.setCoursePackagePaymentId(paymentId);
-                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                        student1.setSignInOrNot(1);
-                        student1.setReservationStatus(1);
-                        student1.setInsertTime(new Date());
-                        cpsMapper.insert(student1);
-                    }
-                }
-
-            }else {
-                Calendar instance = Calendar.getInstance();
-                instance.add(Calendar.DATE,7);
-                Date time = instance.getTime();
-
-                for (int i1 = 0; i1 < split.length; i1++) {
-                    CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                    coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                                            Date parse = format1.parse(format.format(time) + " " + split[i1]);
-                        Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
-                        coursePackageScheduling.setClassDate(parse);
-                        coursePackageScheduling.setEndDate(parse1);
-                        coursePackageScheduling.setStatus(1);
-                        coursePackageSchedulingService.save(coursePackageScheduling);
-
-                    CoursePackageStudent student1 = new CoursePackageStudent();
-                    student1.setAppUserId(userId);
-                    student1.setStudentId(sId);
-                    student1.setCoursePackageId(tCoursePackage.getId());
-                    student1.setCoursePackagePaymentId(paymentId);
-                    student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                    student1.setSignInOrNot(1);
-                    student1.setReservationStatus(1);
-                    student1.setInsertTime(new Date());
-                    cpsMapper.insert(student1);
+                    count++;
                 }
             }
         }
+
+
+
+
+//        for (Integer integer : week) {
+//            if (count==can){
+//                break;
+//            }
+//            if(integer<i){
+//                // 找下一周的时间
+//                Calendar instance = Calendar.getInstance();
+//                if (cs==null||cs.getClassDate().before(new Date())){
+//                    instance = Calendar.getInstance();
+//                }else {
+////                    i = DateUtil.dayOfWeek(cs.getClassDate())-1;
+//                    instance.setTime(cs.getClassDate());
+//                }
+//                instance.add(Calendar.DATE,7-(i-integer));
+//                Date time = instance.getTime();
+//
+//                for (int i1 = 0; i1 < split.length; i1++) {
+//                    if (count==can){
+//                        break;
+//                    }
+//
+//                    CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
+//                    coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
+//                                            Date parse = format1.parse(format.format(time) + " " + split[i1]);
+//                        Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
+//                        coursePackageScheduling.setClassDate(parse);
+//                        coursePackageScheduling.setEndDate(parse1);
+//                        coursePackageScheduling.setStatus(1);
+//                        coursePackageSchedulingService.save(coursePackageScheduling);
+//
+//                    CoursePackageStudent student1 = new CoursePackageStudent();
+//                    student1.setAppUserId(userId);
+//                    student1.setStudentId(sId);
+//                    student1.setCoursePackageId(tCoursePackage.getId());
+//                    student1.setCoursePackagePaymentId(paymentId);
+//                    student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+//                    student1.setSignInOrNot(1);
+//                    student1.setReservationStatus(1);
+//                    student1.setInsertTime(new Date());
+//                    cpsMapper.insert(student1);
+//                    count++;
+//                }
+//
+//
+//            }else if(integer>i) {
+//                if (count==can){
+//                    break;
+//                }
+//
+////                Calendar instance = Calendar.getInstance();
+//
+//                Calendar instance = Calendar.getInstance();
+//                if (cs==null||cs.getClassDate().before(new Date())){
+//                    instance = Calendar.getInstance();
+//                }else {
+////                    i = DateUtil.dayOfWeek(cs.getClassDate())-1;
+//                    instance.setTime(cs.getClassDate());
+//                }
+//                instance.add(Calendar.DATE,integer-i);
+//                Date time1 = instance.getTime();
+//                List<Date> list = new ArrayList<>();
+//                list.add(time1);
+//                instance.add(Calendar.DATE,7);
+//                Date time2 = instance.getTime();
+//                list.add(time2);
+//                for (Date time : list) {
+//                    for (int i1 = 0; i1 < split.length; i1++) {
+//                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
+//                        coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
+//                                                    Date parse = format1.parse(format.format(time) + " " + split[i1]);
+//                            Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
+//                            coursePackageScheduling.setClassDate(parse);
+//                            coursePackageScheduling.setEndDate(parse1);
+//                            coursePackageScheduling.setStatus(1);
+//                            coursePackageSchedulingService.save(coursePackageScheduling);
+//
+//                        CoursePackageStudent student1 = new CoursePackageStudent();
+//                        student1.setAppUserId(userId);
+//                        student1.setStudentId(sId);
+//                        student1.setCoursePackageId(tCoursePackage.getId());
+//                        student1.setCoursePackagePaymentId(paymentId);
+//                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+//                        student1.setSignInOrNot(1);
+//                        student1.setReservationStatus(1);
+//                        student1.setInsertTime(new Date());
+//                        cpsMapper.insert(student1);
+//                        count++;
+//
+//                    }
+//                }
+//
+//            }else {
+////                Calendar instance = Calendar.getInstance();
+//                Calendar instance = Calendar.getInstance();
+//                if (cs==null||cs.getClassDate().before(new Date())){
+//                    instance = Calendar.getInstance();
+//                }else {
+////                    i = DateUtil.dayOfWeek(cs.getClassDate())-1;
+//                    instance.setTime(cs.getClassDate());
+//                }
+//                instance.add(Calendar.DATE,7);
+//                Date time = instance.getTime();
+//
+//                for (int i1 = 0; i1 < split.length; i1++) {
+//                    if (count==can){
+//                        break;
+//                    }
+//
+//                    CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
+//                    coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
+//                                            Date parse = format1.parse(format.format(time) + " " + split[i1]);
+//                        Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
+//                        coursePackageScheduling.setClassDate(parse);
+//                        coursePackageScheduling.setEndDate(parse1);
+//                        coursePackageScheduling.setStatus(1);
+//                        coursePackageSchedulingService.save(coursePackageScheduling);
+//
+//                    CoursePackageStudent student1 = new CoursePackageStudent();
+//                    student1.setAppUserId(userId);
+//                    student1.setStudentId(sId);
+//                    student1.setCoursePackageId(tCoursePackage.getId());
+//                    student1.setCoursePackagePaymentId(paymentId);
+//                    student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+//                    student1.setSignInOrNot(1);
+//                    student1.setReservationStatus(1);
+//                    student1.setInsertTime(new Date());
+//                    cpsMapper.insert(student1);
+//                    count++;
+//
+//                }
+//            }
+//        }
         // 2.0
         TCourseInfoRecord tCourseInfoRecord = new TCourseInfoRecord();
         tCourseInfoRecord.setUserId(userId);
         tCourseInfoRecord.setCourseId(courseId);
-        tCourseInfoRecord.setName("报名假期班");
+        tCourseInfoRecord.setName("报名运动营");
         tCourseInfoRecord.setNum(tCoursePackage.getNeedNum());
         tCourseInfoRecord.setTime(new Date());
         tCourseInfoRecord.setType(2);
@@ -1290,6 +1430,28 @@
 
 
     }
+
+
+    public static Date[] generateDateArray1(Date startDate, Date endDate) {
+        List<Date> dateList = new ArrayList<>();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(startDate);
+
+        while (!calendar.getTime().after(endDate)) {
+            Date currentDate = calendar.getTime();
+            dateList.add(currentDate);
+            calendar.add(Calendar.DAY_OF_MONTH, 1);
+        }
+
+        return dateList.toArray(new Date[0]);
+    }
+
+    public static Date createDate1(int year, int month, int day) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(year, month - 1, day);
+        return calendar.getTime();
+    }
+
     private List<Integer> week(String week){
         String[] split = week.split(";");
         ArrayList<Integer> integers = new ArrayList<>();
@@ -1322,6 +1484,20 @@
     }
 
 
+
+    public static Date[] generateDateArray(int numDays,Date date) {
+//        LocalDate tomorrow = LocalDate.now().plusDays(1);
+        LocalDate tomorrow = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate().plusDays(1);
+
+        Date[] dates = new Date[numDays];
+
+        for (int i = 0; i < numDays; i++) {
+            LocalDate currentDate = tomorrow.plusDays(i);
+            dates[i] = Date.from(currentDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+        }
+
+        return dates;
+    }
     /**
      * 获取课包管理列表数据
      * @param queryCoursePackageLists
diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
index 28720c4..8d36281 100644
--- a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
@@ -38,7 +38,7 @@
         SELECT
 	    count( 1 ) AS num
         FROM (
-          SELECT appUserId FROM t_course_package_payment WHERE payStatus = 2 AND state = 1 and coursePackageId = #{coursePackageId} GROUP BY appUserId
+          SELECT studentId FROM t_course_package_payment WHERE payStatus = 2 AND state = 1 and coursePackageId = #{coursePackageId} GROUP BY studentId
         ) AS aa
     </select>
 
@@ -52,7 +52,7 @@
     <select id="billingDataRequestVo" resultType="com.dsh.course.model.BillingRequest">
         SELECT DATE_FORMAT(insertTime, '%m-%d %H:%i')as `time`,IFNULL(playPaiCoin, cashPayment) AS amount
         from t_course_package_payment
-        where  payStatus = 2 and state = 1 and payType = 3
+        where  payStatus = 2 and state = 1 and payType in (1,2)
         <if test="null != monthStart and '' != monthStart and null != monthEnd and '' != monthEnd">
             and DATE_FORMAT(insertTime, '%Y-%m-%d %H:%i:%s') between #{monthStart} and #{monthEnd}
         </if>
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseClient.java
index 196cfe0..edd2c1c 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseClient.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseClient.java
@@ -6,6 +6,7 @@
 import com.dsh.course.model.AuditDiscount;
 import com.dsh.guns.modular.system.model.*;
 import com.dsh.guns.modular.system.model.dto.CoursePackage;
+import com.dsh.guns.modular.system.model.dto.SelectDto;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -135,5 +136,5 @@
     Boolean auditDiscount(AuditDiscount auditDiscount);
 
     @PostMapping("/course/times")
-    List<Integer> timeChange(@RequestBody Integer oneId);
+    List<SelectDto> timeChange(@RequestBody Integer oneId);
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java
index 20c6822..d27750d 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java
@@ -22,6 +22,7 @@
 import com.dsh.guns.modular.system.model.TCourse;
 import com.dsh.guns.modular.system.model.TStore;
 import com.dsh.guns.modular.system.model.User;
+import com.dsh.guns.modular.system.model.dto.SelectDto;
 import com.dsh.guns.modular.system.service.ICityService;
 import com.dsh.guns.modular.system.service.IStoreService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -115,9 +116,8 @@
      private CourseClient courseClient;
     @RequestMapping(value = "/timeChange")
     @ResponseBody
-    public List<Integer> timeChange(Integer oneId) {
-
-        List<Integer> integerList = courseClient.timeChange(oneId);
+    public List<SelectDto> timeChange(Integer oneId) {
+        List<SelectDto> integerList = courseClient.timeChange(oneId);
         return integerList ;
     }
 
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js b/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js
index e816df7..5267798 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js
@@ -438,9 +438,12 @@
                         cityIds.push(inData);
                     }
                 }
-                cts = cityIds.join(',');
             }
+            cts = cityIds.join(',');
+            console.log("============到达城市"+cts)
+
         }
+
     }
     const commaSeparatedString = this.goodsPicArray.join(',');
 
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods_info.js
index a0ed109..f507aa8 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods_info.js
@@ -1038,7 +1038,7 @@
                 var content='<option value="">Pilih franchisee Anda</option>';
             }
             $.each(data, function(k,v) {
-                content += "<option value='"+v+"'>"+v+"</option>";
+                content += "<option value='"+v.id+"'>"+v.value+"</option>";
             });
             $("#coursePackageConfigId").empty().append(content);
         }
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java
index b7b81ff..baf6f33 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java
@@ -28,6 +28,7 @@
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @RestController
 @RequestMapping("/api/game")
@@ -89,7 +90,10 @@
                 tGameConfigs = gameConfigService.listJs(id);
 
             }
-            return ResultUtil.success(tGameConfigs);
+            List<TGameConfig> filteredList = tGameConfigs.stream()
+                    .filter(gameConfig -> !gameConfig.getImg().isEmpty())
+                    .collect(Collectors.toList());
+            return ResultUtil.success(filteredList);
         }catch (Exception e){
             e.printStackTrace();
             return ResultUtil.runErr();
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
index 8021355..f4c5a6c 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
@@ -351,7 +351,7 @@
             if(reservationSite.getIsHalf()==2){
                 payMoney = new BigDecimal(site.getPlayPaiCoin()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() ;
             }else {
-                payMoney = new BigDecimal(site.getPlayPaiCoinOne()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() /2;
+                payMoney = new BigDecimal(site.getPlayPaiCoinOne()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
             }
             if(appUser.getPlayPaiCoins().compareTo(payMoney.intValue()) < 0){
 
@@ -361,7 +361,7 @@
             if(reservationSite.getIsHalf()==2){
             payMoney = new BigDecimal(site.getCashPrice()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() ;
             }else {
-                payMoney = new BigDecimal(site.getCashPrice()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() / 2;
+                payMoney = new BigDecimal(site.getCashPriceOne()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
 
             }
         }
@@ -387,7 +387,7 @@
                 JSONObject jsonObject = JSON.parseObject(coupon.getContent());
                 Double num1 = jsonObject.getDouble("conditionalAmount");
                 Double num2 = jsonObject.getDouble("deductionAmount");
-                if(payMoney.compareTo(num1) <= 0){
+                if(payMoney.compareTo(num1) < 0){
                     return ResultUtil.error("该优惠券无法使用");
                 }
 

--
Gitblit v1.7.1