From 9d909e5f8048b74ac56d8f853758cfccfea61759 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 28 十一月 2023 15:23:55 +0800
Subject: [PATCH] 后台1

---
 cloud-server-activity/src/main/java/com/dsh/activity/service/IUserCouponPaymentService.java               |   11 
 cloud-server-course/src/main/java/com/dsh/course/model/vo/request/UpdateCourseVideoStatusRequest.java     |    3 
 cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java                                   |    5 
 cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/UserCouponPayment.java      |   64 ++++
 cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/SaveUserIntegralChangesVo.java |   23 +
 cloud-server-other/src/main/resources/mapper/BannerMapper.xml                                             |    7 
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java           |   42 --
 cloud-server-course/src/main/java/com/dsh/course/service/ICoursePackageSchedulingService.java             |    1 
 cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java                  |    3 
 cloud-server-activity/src/main/java/com/dsh/activity/model/UserCouponPayment.java                         |   78 +++++
 cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java                           |   17 -
 cloud-server-activity/pom.xml                                                                             |    1 
 cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponPaymentMapper.java                  |   11 
 cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponPaymentServiceImpl.java       |   15 +
 cloud-server-course/src/main/java/com/dsh/course/util/TaskUtil.java                                       |    9 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java              |    5 
 cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java                  |   62 ++++
 cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java                 |    2 
 cloud-server-activity/src/main/java/com/dsh/config/Sharding_jdbc/ShardingConfig.java                      |   19 +
 cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java     |   30 --
 cloud-server-other/src/main/java/com/dsh/other/model/BannerVo.java                                        |    2 
 cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponPaymentController.java          |   53 +++
 cloud-server-account/src/main/java/com/dsh/account/model/Student.java                                     |    5 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java                  |  309 +++++++++++++++++---
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java       |   22 +
 cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserCouponPaymentClient.java      |   37 ++
 cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackageStudent.js       |   11 
 cloud-server-course/src/main/java/com/dsh/course/feignclient/account/UserIntegralChangesClient.java       |   22 +
 cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java                           |   10 
 cloud-server-activity/src/main/resources/mapper/UserCouponPaymentMapper.xml                               |    5 
 30 files changed, 720 insertions(+), 164 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 f5619c9..7d92af3 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
@@ -382,8 +382,6 @@
             }
 
             return ResultUtil.success(istuService.updateById(tStudent));
-
-//            return ResultUtil.success(istuService.commitEditStudentInfo(stu,userIdFormRedis));
         } catch (Exception e) {
             return ResultUtil.runErr();
         }
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 d3347a1..3ce9631 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
@@ -8,6 +8,7 @@
 import com.dsh.account.service.RechargeRecordsService;
 import com.dsh.account.service.TAppUserService;
 import com.dsh.account.service.UserIntegralChangesService;
+import com.dsh.account.util.PayMoneyUtil;
 import com.dsh.account.util.ResultUtil;
 import com.dsh.account.util.TokenUtil;
 import com.dsh.account.util.ToolUtil;
@@ -20,8 +21,11 @@
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
 import java.text.SimpleDateFormat;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 使用福利 控制器
@@ -48,6 +52,9 @@
     private UserIntegralChangesService uicService;
 
     private final SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
+
+    @Autowired
+    private PayMoneyUtil payMoneyUtil;
 
 
     @ResponseBody
@@ -407,7 +414,7 @@
     @ApiImplicitParams({
             @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
     })
-    public synchronized ResultUtil productRedemptionOperation(GoodsExchangeVo exchangeType) {
+    public ResultUtil productRedemptionOperation(GoodsExchangeVo exchangeType) {
         try {
             Integer userIdFormRedis = tokenUtil.getUserIdFormRedis();
             if (null == userIdFormRedis) {
@@ -420,6 +427,59 @@
     }
 
 
+
+
+    @ResponseBody
+    @PostMapping("/base/coupon/weChatPaymentCouponCallback")
+    public void weChatPaymentCouponCallback(HttpServletRequest request, HttpServletResponse response){
+        try {
+            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
+            if(null != map){
+                String code = map.get("out_trade_no");
+                String trade_no = map.get("transaction_id");
+                String result = map.get("result");
+                ResultUtil resultUtil = tauService.paymentCouponCallback(code, trade_no);
+                if(resultUtil.getCode() == 200){
+                    PrintWriter out = response.getWriter();
+                    out.print(result);
+                    out.flush();
+                    out.close();
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+
+
+    @ResponseBody
+    @PostMapping("/base/coupon/aliPaymentCouponCallback")
+    public void aliPaymentCouponCallback(HttpServletRequest request, HttpServletResponse response){
+        try {
+            Map<String, String> map = payMoneyUtil.alipayCallback(request);
+            if(null != map){
+                String code = map.get("out_trade_no");
+                String trade_no = map.get("trade_no");
+                ResultUtil resultUtil = tauService.paymentCouponCallback(code, trade_no);
+                if(resultUtil.getCode() == 200){
+                    PrintWriter out = response.getWriter();
+                    out.print("success");
+                    out.flush();
+                    out.close();
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+
+
+
+
+
+
     /**
      * 积分明细
      */
diff --git a/cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java b/cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java
index 5e44d75..15142ba 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java
@@ -104,6 +104,11 @@
      */
     @TableField("isDefault")
     private Integer isDefault;
+    /**
+     * 所有课时有效期
+     */
+    @TableField("validity")
+    private Date validity;
 
 
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserCouponPaymentClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserCouponPaymentClient.java
new file mode 100644
index 0000000..c12c599
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserCouponPaymentClient.java
@@ -0,0 +1,37 @@
+package com.dsh.account.feignclient.activity;
+
+import com.dsh.account.feignclient.activity.model.UserCouponPayment;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/11/28 11:10
+ */
+@FeignClient(value = "mb-cloud-activity")
+public interface UserCouponPaymentClient {
+
+
+    /**
+     * 添加数据
+     * @param userCouponPayment
+     */
+    @PostMapping("/userCouponPayment/addUserCouponPayment")
+    void addUserCouponPayment(UserCouponPayment userCouponPayment);
+
+
+    /**
+     * 获取数据
+     * @param code
+     * @return
+     */
+    @PostMapping("/userCouponPayment/getUserCouponPayment")
+    UserCouponPayment getUserCouponPayment(String code);
+
+    /**
+     * 修改数据
+     * @param userCouponPayment
+     */
+    @PostMapping("/userCouponPayment/updateUserCouponPayment")
+    void updateUserCouponPayment(UserCouponPayment userCouponPayment);
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/UserCouponPayment.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/UserCouponPayment.java
new file mode 100644
index 0000000..23a9b6f
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/model/UserCouponPayment.java
@@ -0,0 +1,64 @@
+package com.dsh.account.feignclient.activity.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/11/28 10:38
+ */
+@Data
+public class UserCouponPayment {
+    /**
+     * 主键
+     */
+    private Long id;
+    /**
+     * 优惠券id
+     */
+    private Integer couponId;
+    /**
+     * 用户id
+     */
+    private Integer userId;
+    /**
+     * 支付状态(1=待支付,2=已支付)
+     */
+    private Integer status;
+    /**
+     * 流水号
+     */
+    private String code;
+    /**
+     * 支付方式(1=积分兑换,2=积分+现金)
+     */
+    private Integer payType;
+    /**
+     * 积分支付数量
+     */
+    private Integer integral;
+    /**
+     * 现金支付金额
+     */
+    private Double cash;
+    /**
+     * 现金支付方式(1=微信,2=支付宝)
+     */
+    private Integer cashPayType;
+    /**
+     * 第三方支付流水号
+     */
+    private String orderNumber;
+    /**
+     * 支付时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date paymentTime;
+    /**
+     * 添加时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date insertTime;
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/Student.java b/cloud-server-account/src/main/java/com/dsh/account/model/Student.java
index 4907004..b666214 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/Student.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/Student.java
@@ -70,4 +70,9 @@
      * 是否默认 1默认 2不是默认
      */
     private Integer isDefault;
+    /**
+     * 所有课时有效期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date validity;
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
index 88dc565..a6c7435 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
@@ -150,6 +150,16 @@
 
     ResultUtil productRedemptionOperation(Integer userIdFormRedis, GoodsExchangeVo exchangeVo);
 
+    /**
+     * 优惠券支付回调处理
+     * @param code
+     * @param orderNumber
+     * @return
+     */
+    ResultUtil paymentCouponCallback(String code, String orderNumber);
+
+
+
     ResultUtil exchangeAddPaymentCallback(String code, String orderNumber, Integer payType);
 
     List<StoreResponse> queryStoresOfExchange(Integer goodsType, Integer pointsMerId);
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 e5a6145..bb4fc3d 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
@@ -1,7 +1,6 @@
 package com.dsh.account.service.impl;
 
 
-import com.alibaba.fastjson.JSONObject;
 import com.alipay.api.AlipayApiException;
 import com.alipay.api.AlipayClient;
 import com.alipay.api.DefaultAlipayClient;
@@ -19,15 +18,10 @@
 import com.dsh.account.dto.*;
 import com.dsh.account.entity.*;
 import com.dsh.account.enums.RechargeRecordEnum;
-import com.dsh.account.feignclient.activity.IntroduceRewardsClient;
-import com.dsh.account.feignclient.activity.MerChandiseClient;
-import com.dsh.account.feignclient.activity.MerChandiseStoreClient;
-import com.dsh.account.feignclient.activity.UserConponClient;
+import com.dsh.account.feignclient.activity.*;
 import com.dsh.account.feignclient.activity.model.*;
 import com.dsh.account.feignclient.competition.DeductionCompetitionsClient;
 import com.dsh.account.feignclient.competition.model.BillingDataRequestVo;
-import com.dsh.account.feignclient.competition.model.PaymentCompetition;
-import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
 import com.dsh.account.feignclient.course.CoursePackageClient;
 import com.dsh.account.feignclient.course.CoursePackageConfigClient;
 import com.dsh.account.feignclient.course.CoursePaymentClient;
@@ -37,7 +31,6 @@
 import com.dsh.account.feignclient.other.RechargeConfigClient;
 import com.dsh.account.feignclient.other.SiteClient;
 import com.dsh.account.feignclient.other.StoreClient;
-import com.dsh.account.feignclient.other.model.SiteBooking;
 import com.dsh.account.feignclient.other.model.Store;
 import com.dsh.account.feignclient.other.model.StoreDetailOfCourse;
 import com.dsh.account.feignclient.other.model.TImgConfig;
@@ -46,7 +39,6 @@
 import com.dsh.account.model.AppUserByNameAndPhoneDTO;
 import com.dsh.account.model.dto.Coupon;
 import com.dsh.account.model.query.appUserQuery.QueryAppUser;
-import com.dsh.account.model.vo.DetailsListVo;
 import com.dsh.account.model.vo.QueryAppUserVO;
 import com.dsh.account.model.vo.classDetails.CourseVenue;
 import com.dsh.account.model.vo.classDetails.ExerciseVideo;
@@ -156,9 +148,6 @@
     private CoursePackageConfigClient cpconClient;
 
     @Resource
-    private PayMoneyUtil payMoneyUtil;
-
-    @Resource
     private SiteClient stClient;
     @Autowired
     private TAppUserMapper appUserMapper;
@@ -182,6 +171,16 @@
     private TAppUserService appUserService;
     @Resource
     private MerChandiseClient merChandiseClient;
+
+    @Autowired
+    private PayMoneyUtil payMoneyUtil;
+
+    @Resource
+    private UserCouponPaymentClient userCouponPaymentClient;
+
+
+
+
 
     // 对数据进行分页处理的方法
     private static Page<Goods> getPage(List<Goods> dataList, Pageable pageable) {
@@ -1281,9 +1280,6 @@
     @Override
     @Transactional
     public synchronized ResultUtil productRedemptionOperation(Integer userIdFormRedis, GoodsExchangeVo exchangeType) {
-        System.out.println("exchangeType:--->");
-
-
         ReturnModel returnModel = new ReturnModel();
         Long returnId = null;
         //如果是兑换优惠卷
@@ -1295,7 +1291,7 @@
             queryIds.add(coupon.getId());
             queryIds.add(userIdFormRedis);
             Integer counts = userConponClient.queryCounts(queryIds);
-            if (coupon.getQuantityIssued() - counts == 0) {
+            if (coupon.getQuantityIssued().compareTo(counts) == 0) {
                 return new ResultUtil(0, "当前数量不足");
             }
             //查询该用户是否超出限领数量
@@ -1304,40 +1300,56 @@
             if (usercounts == coupon.getPickUpQuantity()) {
                 return new ResultUtil<>(0, "限领数量已达最大");
             }
-//            userConponClient.queryCouponById(exchangeType.getGoodId());
-            UserCoupon userCoupon = new UserCoupon();
-            userCoupon.setCouponId(exchangeType.getGoodId());
-            userCoupon.setUserId(userIdFormRedis);
-            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, "当前用户积分不足");
+
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+            String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
+            //生成支付订单
+            UserCouponPayment userCouponPayment = new UserCouponPayment();
+            userCouponPayment.setCouponId(exchangeType.getGoodId());
+            userCouponPayment.setUserId(userIdFormRedis);
+            userCouponPayment.setStatus(1);
+            userCouponPayment.setCode(code);
+            userCouponPayment.setPayType(coupon.getRedemptionMethod());
+            userCouponPayment.setIntegral(coupon.getIntegral().intValue());
+            userCouponPayment.setCash(coupon.getCash().doubleValue());
+            userCouponPayment.setCashPayType(exchangeType.getPayType());
+            userCouponPayment.setInsertTime(new Date());
+
+            //积分兑换
+            if(coupon.getRedemptionMethod() == 1){
+                UserCoupon userCoupon = new UserCoupon();
+                userCoupon.setCouponId(exchangeType.getGoodId());
+                userCoupon.setUserId(userIdFormRedis);
+                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);
+
+                userCouponPayment.setStatus(2);
+                userCouponPayment.setPaymentTime(new Date());
+                userCouponPaymentClient.addUserCouponPayment(userCouponPayment);
+                return ResultUtil.success(returnId);
             }
-            user.setIntegral(user.getIntegral() - coupon.getIntegral().intValue());
-            appUserService.updateById(user);
-
-            //记录
-//            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);
+            //积分+现金
+            if(coupon.getRedemptionMethod() == 1){
+                userCouponPaymentClient.addUserCouponPayment(userCouponPayment);
+                try {
+                    if(exchangeType.getPayType() == 1){
+                        return weChatPaymentCoupon("购买优惠券", userCouponPayment);
+                    }
+                    if(exchangeType.getPayType() == 2){
+                        return aliPaymentCoupon("购买优惠券", userCouponPayment);
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
         }
 
 
@@ -1558,6 +1570,205 @@
 
     }
 
+
+    /**
+     * 优惠券微信支付
+     * @param body
+     * @param userCouponPayment
+     * @return
+     * @throws Exception
+     */
+    public ResultUtil weChatPaymentCoupon(String body, UserCouponPayment userCouponPayment) throws Exception {
+        String code = userCouponPayment.getCode();
+        Double cash = userCouponPayment.getCash();
+        ResultUtil weixinpay = payMoneyUtil.weixinpay(body, "", code, cash.toString(), "/base/coupon/weChatPaymentCouponCallback", "APP", "");
+        if (weixinpay.getCode() == 200) {
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        int num = 1;
+                        int wait = 0;
+                        while (num <= 10) {
+                            int min = 5000;
+                            wait += (min * num);
+                            Thread.sleep(wait);
+                            UserCouponPayment userCouponPayment1 = userCouponPaymentClient.getUserCouponPayment(code);
+                            if (userCouponPayment1.getStatus() == 2) {
+                                break;
+                            }
+                            ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(code, "");
+                            if (resultUtil.getCode() == 200 && userCouponPayment1.getStatus() == 1) {
+                                /**
+                                 * SUCCESS—支付成功,
+                                 * REFUND—转入退款,
+                                 * NOTPAY—未支付,
+                                 * CLOSED—已关闭,
+                                 * REVOKED—已撤销(刷卡支付),
+                                 * USERPAYING--用户支付中,
+                                 * PAYERROR--支付失败(其他原因,如银行返回失败)
+                                 */
+                                Map<String, String> data1 = resultUtil.getData();
+                                String s = data1.get("trade_state");
+                                String transaction_id = data1.get("transaction_id");
+                                if ("REFUND".equals(s) || "NOTPAY".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10) {
+                                    //有待支付的订单,这里不处理
+                                    userCouponPayment1.setStatus(-1);
+                                    userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1);
+                                    break;
+                                }
+                                if ("SUCCESS".equals(s)) {
+                                    userCouponPayment1.setStatus(2);
+                                    userCouponPayment1.setPaymentTime(new Date());
+                                    userCouponPayment1.setOrderNumber(transaction_id);
+                                    userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1);
+
+                                    UserCoupon userCoupon = new UserCoupon();
+                                    userCoupon.setCouponId(userCouponPayment1.getCouponId());
+                                    userCoupon.setUserId(userCouponPayment1.getUserId());
+                                    userCoupon.setStatus(1);
+                                    userCoupon.setInsertTime(new Date());
+                                    userConponClient.insertToAppuserCoupon(userCoupon);
+
+                                    if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){
+                                        //扣积分
+                                        TAppUser user = appUserService.getById(userCouponPayment1.getUserId());
+                                        user.setIntegral(user.getIntegral() - userCouponPayment1.getIntegral().intValue());
+                                        appUserService.updateById(user);
+                                    }
+                                    break;
+                                }
+                                if ("USERPAYING".equals(s)) {
+                                    num++;
+                                }
+                            }
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            }).start();
+        }
+        return weixinpay;
+    }
+
+
+    /**
+     * 优惠券支付宝支付
+     *
+     * @param uid
+     * @param paymentPrice
+     * @param paymentCourseVo
+     * @return
+     * @throws Exception
+     */
+    public ResultUtil aliPaymentCoupon(String body, UserCouponPayment userCouponPayment) throws Exception {
+        String code = userCouponPayment.getCode();
+        Double cash = userCouponPayment.getCash();
+
+        ResultUtil alipay = payMoneyUtil.alipay(body, body, "", code, cash.toString(), "/base/coupon/aliPaymentCouponCallback");
+        if (alipay.getCode() == 200) {
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        Thread.sleep(1000);
+
+                        int num = 1;
+                        int wait = 0;
+                        while (num <= 10) {
+                            int min = 5000;
+                            wait += (min * num);
+                            Thread.sleep(wait);
+                            UserCouponPayment userCouponPayment1 = userCouponPaymentClient.getUserCouponPayment(code);
+                            if (userCouponPayment1.getStatus() == 2) {
+                                break;
+                            }
+                            AlipayTradeQueryResponse alipayTradeQueryResponse = payMoneyUtil.queryALIOrder(code);
+                            if (null != alipayTradeQueryResponse) {
+                                /**
+                                 * WAIT_BUYER_PAY(交易创建,等待买家付款)、
+                                 * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
+                                 * TRADE_SUCCESS(交易支付成功)、
+                                 * TRADE_FINISHED(交易结束,不可退款)
+                                 */
+                                String s = alipayTradeQueryResponse.getTradeStatus();
+
+                                String tradeNo = alipayTradeQueryResponse.getTradeNo();
+                                if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) {
+                                    //有待支付的订单,这里不处理
+                                    userCouponPayment1.setStatus(-1);
+                                    userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1);
+                                    break;
+                                }
+                                if ("TRADE_SUCCESS".equals(s)) {
+                                    userCouponPayment1.setStatus(2);
+                                    userCouponPayment1.setPaymentTime(new Date());
+                                    userCouponPayment1.setOrderNumber(tradeNo);
+                                    userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1);
+
+                                    UserCoupon userCoupon = new UserCoupon();
+                                    userCoupon.setCouponId(userCouponPayment1.getCouponId());
+                                    userCoupon.setUserId(userCouponPayment1.getUserId());
+                                    userCoupon.setStatus(1);
+                                    userCoupon.setInsertTime(new Date());
+                                    userConponClient.insertToAppuserCoupon(userCoupon);
+
+                                    if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){
+                                        //扣积分
+                                        TAppUser user = appUserService.getById(userCouponPayment1.getUserId());
+                                        user.setIntegral(user.getIntegral() - userCouponPayment1.getIntegral().intValue());
+                                        appUserService.updateById(user);
+                                    }
+                                    break;
+                                }
+                                if ("WAIT_BUYER_PAY".equals(s)) {
+                                    num++;
+                                }
+                            }
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            }).start();
+        }
+        return alipay;
+    }
+
+    /**
+     * 支付回调
+     * @param code
+     * @param orderNumber
+     * @return
+     */
+    @Override
+    public ResultUtil paymentCouponCallback(String code, String orderNumber) {
+        UserCouponPayment userCouponPayment1 = userCouponPaymentClient.getUserCouponPayment(code);
+        if (userCouponPayment1.getStatus() == 2) {
+            return ResultUtil.success();
+        }
+        userCouponPayment1.setStatus(2);
+        userCouponPayment1.setPaymentTime(new Date());
+        userCouponPayment1.setOrderNumber(orderNumber);
+        userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1);
+
+        UserCoupon userCoupon = new UserCoupon();
+        userCoupon.setCouponId(userCouponPayment1.getCouponId());
+        userCoupon.setUserId(userCouponPayment1.getUserId());
+        userCoupon.setStatus(1);
+        userCoupon.setInsertTime(new Date());
+        userConponClient.insertToAppuserCoupon(userCoupon);
+
+        if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){
+            //扣积分
+            TAppUser user = appUserService.getById(userCouponPayment1.getUserId());
+            user.setIntegral(user.getIntegral() - userCouponPayment1.getIntegral().intValue());
+            appUserService.updateById(user);
+        }
+        return ResultUtil.success();
+    }
+
     public boolean dealAppUserIntegral(Integer appUserId, TAppUser appUser, Integer points) {
         try {
             if (ToolUtil.isEmpty(appUser.getIntegral()) || (ToolUtil.isNotEmpty(appUser.getIntegral()) && appUser.getIntegral() < points)) {
diff --git a/cloud-server-activity/pom.xml b/cloud-server-activity/pom.xml
index 9254ebe..2435023 100644
--- a/cloud-server-activity/pom.xml
+++ b/cloud-server-activity/pom.xml
@@ -84,7 +84,6 @@
             <artifactId>geodesy</artifactId>
             <version>1.1.3</version>
         </dependency>
-
     </dependencies>
 
     <build>
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponPaymentController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponPaymentController.java
new file mode 100644
index 0000000..0dd286f
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponPaymentController.java
@@ -0,0 +1,53 @@
+package com.dsh.activity.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.dsh.activity.model.UserCouponPayment;
+import com.dsh.activity.service.IUserCouponPaymentService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/11/28 11:12
+ */
+@RestController
+@RequestMapping("")
+public class UserCouponPaymentController {
+
+    @Autowired
+    private IUserCouponPaymentService userCouponPaymentService;
+
+
+    /**
+     * 添加数据
+     * @param userCouponPayment
+     */
+    @ResponseBody
+    @PostMapping("/userCouponPayment/addUserCouponPayment")
+    public void addUserCouponPayment(@RequestBody UserCouponPayment userCouponPayment){
+        userCouponPaymentService.save(userCouponPayment);
+    }
+
+
+    /**
+     * 获取数据
+     * @param code
+     * @return
+     */
+    @ResponseBody
+    @PostMapping("/userCouponPayment/getUserCouponPayment")
+    public UserCouponPayment getUserCouponPayment(@RequestBody String code){
+        return userCouponPaymentService.getOne(new QueryWrapper<UserCouponPayment>().eq("code", code));
+    }
+
+
+    /**
+     * 修改数据
+     * @param userCouponPayment
+     */
+    @ResponseBody
+    @PostMapping("/userCouponPayment/updateUserCouponPayment")
+    public void updateUserCouponPayment(@RequestBody UserCouponPayment userCouponPayment){
+        userCouponPaymentService.updateById(userCouponPayment);
+    }
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponPaymentMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponPaymentMapper.java
new file mode 100644
index 0000000..09f4539
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponPaymentMapper.java
@@ -0,0 +1,11 @@
+package com.dsh.activity.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.activity.model.UserCouponPayment;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/11/28 10:44
+ */
+public interface UserCouponPaymentMapper extends BaseMapper<UserCouponPayment> {
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/UserCouponPayment.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/UserCouponPayment.java
new file mode 100644
index 0000000..ee18da6
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/UserCouponPayment.java
@@ -0,0 +1,78 @@
+package com.dsh.activity.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/11/28 10:38
+ */
+@Data
+@TableName("t_user_coupon_payment")
+public class UserCouponPayment {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.NONE)
+    private Long id;
+    /**
+     * 优惠券id
+     */
+    @TableField("couponId")
+    private Integer couponId;
+    /**
+     * 用户id
+     */
+    @TableField("userId")
+    private Integer userId;
+    /**
+     * 支付状态(1=待支付,2=已支付)
+     */
+    @TableField("status")
+    private Integer status;
+    /**
+     * 流水号
+     */
+    @TableField("code")
+    private String code;
+    /**
+     * 支付方式(1=积分兑换,2=积分+现金)
+     */
+    @TableField("payType")
+    private Integer payType;
+    /**
+     * 积分支付数量
+     */
+    @TableField("integral")
+    private Integer integral;
+    /**
+     * 现金支付金额
+     */
+    @TableField("cash")
+    private Double cash;
+    /**
+     * 现金支付方式(1=微信,2=支付宝)
+     */
+    @TableField("cashPayType")
+    private Integer cashPayType;
+    /**
+     * 第三方支付流水号
+     */
+    @TableField("orderNumber")
+    private String orderNumber;
+    /**
+     * 支付时间
+     */
+    @TableField("paymentTime")
+    private Date paymentTime;
+    /**
+     * 添加时间
+     */
+    @TableField("insertTime")
+    private Date insertTime;
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/IUserCouponPaymentService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/IUserCouponPaymentService.java
new file mode 100644
index 0000000..a9a1465
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/IUserCouponPaymentService.java
@@ -0,0 +1,11 @@
+package com.dsh.activity.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.activity.model.UserCouponPayment;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/11/28 10:45
+ */
+public interface IUserCouponPaymentService extends IService<UserCouponPayment> {
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponPaymentServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponPaymentServiceImpl.java
new file mode 100644
index 0000000..8a69103
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponPaymentServiceImpl.java
@@ -0,0 +1,15 @@
+package com.dsh.activity.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.activity.mapper.UserCouponPaymentMapper;
+import com.dsh.activity.model.UserCouponPayment;
+import com.dsh.activity.service.IUserCouponPaymentService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/11/28 10:45
+ */
+@Service
+public class UserCouponPaymentServiceImpl extends ServiceImpl<UserCouponPaymentMapper, UserCouponPayment> implements IUserCouponPaymentService {
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/config/Sharding_jdbc/ShardingConfig.java b/cloud-server-activity/src/main/java/com/dsh/config/Sharding_jdbc/ShardingConfig.java
index 3409f5a..4e66630 100644
--- a/cloud-server-activity/src/main/java/com/dsh/config/Sharding_jdbc/ShardingConfig.java
+++ b/cloud-server-activity/src/main/java/com/dsh/config/Sharding_jdbc/ShardingConfig.java
@@ -89,8 +89,13 @@
         props3.setProperty("algorithm-expression", "t_user_benefits_videos$->{appUserId % 5 + 1}");
         result1.getShardingAlgorithms().put("t_user_benefits_videos-inline", new AlgorithmConfiguration("INLINE", props3));
         result1.getKeyGenerators().put("t_user_benefits_videos-snowflake", new AlgorithmConfiguration("SNOWFLAKE", new Properties()));
-        linkedList.add(result1);
 
+        result1.getTables().add(getUserCouponTableRulePaymentConfiguration());
+        Properties props4 = new Properties();
+        props4.setProperty("algorithm-expression", "t_user_coupon_payment$->{userId % 5 + 1}");
+        result1.getShardingAlgorithms().put("t_user_coupon_payment-inline", new AlgorithmConfiguration("INLINE", props4));
+        result1.getKeyGenerators().put("t_user_coupon_payment-snowflake", new AlgorithmConfiguration("SNOWFLAKE", new Properties()));
+        linkedList.add(result1);
         return linkedList;
     }
 
@@ -132,4 +137,16 @@
         return result;
     }
 
+    /**
+     * 分片算法配置
+     *
+     * @return
+     */
+    private ShardingTableRuleConfiguration getUserCouponTableRulePaymentConfiguration() {
+        ShardingTableRuleConfiguration result = new ShardingTableRuleConfiguration("t_user_coupon_payment", "m_$->{0}.t_user_coupon_payment$->{1..5}");//50
+        result.setTableShardingStrategy(new StandardShardingStrategyConfiguration("userId", "t_user_coupon_payment-inline"));
+        result.setKeyGenerateStrategy(new KeyGenerateStrategyConfiguration("id", "t_user_coupon_payment-snowflake"));
+        return result;
+    }
+
 }
diff --git a/cloud-server-activity/src/main/resources/mapper/UserCouponPaymentMapper.xml b/cloud-server-activity/src/main/resources/mapper/UserCouponPaymentMapper.xml
new file mode 100644
index 0000000..b752298
--- /dev/null
+++ b/cloud-server-activity/src/main/resources/mapper/UserCouponPaymentMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.activity.mapper.UserCouponPaymentMapper">
+
+</mapper>
\ No newline at end of file
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 f469119..680f6e6 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
@@ -672,6 +672,7 @@
         List<Integer> appUserIds = list.stream().map(CoursePackageOrderStudent::getAppUserId).collect(Collectors.toList());
         List<CoursePackageOrderStudent> list1 = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
                 .in("appUserId", appUserIds)
+                .in("studentId", recordTimeRequest.getStuId())
                 .eq("coursePackageId", recordTimeRequest.getLessionId())
                 .eq("state", 1)
         );
@@ -896,7 +897,6 @@
 
             Set<BaseVo> set = new HashSet<>(list);
             List<BaseVo> back = new ArrayList<>(set);
-
             return ResultUtil.success(back);
         } catch (Exception e) {
             e.printStackTrace();
@@ -914,25 +914,11 @@
             @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
     })
     public ResultUtil<List<AppUserVideoResponse>> queryAfterSourceList(CourseOfAfterRequest search) throws Exception {
-//        try {
         Integer appUserId = tokenUtil.getUserIdFormRedis();
 
         if (null == appUserId) {
             return ResultUtil.tokenErr();
         }
-//
-//            List<Integer> courseIds = new ArrayList<>();
-//            QueryWrapper<TCoursePackagePayment> queryWrapper = new QueryWrapper<TCoursePackagePayment>().eq("appUserId", appUserId)
-//                    .groupBy("coursePackageId");
-//            if (ToolUtil.isNotEmpty(search.getCourseTypeId())){
-//                queryWrapper.eq("coursePackageId",search.getCourseTypeId());
-//            }
-//            List<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.list(queryWrapper);
-//            if (tCoursePackagePayments.size() > 0 ){
-//                courseIds = tCoursePackagePayments.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList());
-//            }
-
-
         QueryWrapper<CoursePackageStudent> queryWrapper1 = new QueryWrapper<CoursePackageStudent>().eq("studentId", search.getStuId());
         if (ToolUtil.isNotEmpty(search.getCourseTypeId())) {
             queryWrapper1.eq("coursePackageId", search.getCourseTypeId());
@@ -945,7 +931,6 @@
         }
 
         System.out.println("======longs========" + longs);
-//           List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.list(new QueryWrapper<CoursePackageScheduling>().in("id",longs).isNotNull("courseId"));
         List<AppUserVideoResponse> coursePackageSchedulings1 = coursePackageSchedulingService.queryAll(longs);
 
         if (search.getSearch() != null) {
@@ -960,11 +945,6 @@
         }
 
         return ResultUtil.success(coursePackageSchedulings1);
-
-
-//        }catch (Exception e){
-//            return ResultUtil.runErr();
-//        }
     }
 
     /**
@@ -2266,7 +2246,9 @@
         map.put("lon", lon);
         map.put("lat", lat);
         // 找出门店的所有课程 排出体验
-        List<TCoursePackage> list = tcpService.list(new LambdaQueryWrapper<TCoursePackage>().eq(TCoursePackage::getStoreId, courseDetailReq.getStoreId()).ne(TCoursePackage::getType, 3).eq(TCoursePackage::getState, 1).like(TCoursePackage::getClassWeeks, week));
+        List<TCoursePackage> list = tcpService.list(new LambdaQueryWrapper<TCoursePackage>()
+                .eq(TCoursePackage::getStoreId, courseDetailReq.getStoreId()).ne(TCoursePackage::getType, 3)
+                .eq(TCoursePackage::getState, 1).like(TCoursePackage::getClassWeeks, week));
         List<Integer> collect = list.stream().map(TCoursePackage::getId).collect(Collectors.toList());
         if (collect.size() == 0) {
             collect.add(-1);
@@ -2278,14 +2260,14 @@
                 .in(CoursePackageScheduling::getCoursePackageId, collect)
         );
         List<Integer> collect1 = list8.stream().map(CoursePackageScheduling::getCoursePackageId).collect(Collectors.toList());
-        // 找出购买的课包
-        List<CoursePackageOrderStudent> list1 = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
-                .eq("appUserId", courseDetailReq.getAppUserId())
-                .eq("studentId", courseDetailReq.getStuId())
-                .in("coursePackageId", collect1)
-                .eq("status", 1)
-                .eq("state", 1)
-        );
+//        // 找出购买的课包
+//        List<CoursePackageOrderStudent> list1 = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
+//                .eq("appUserId", courseDetailReq.getAppUserId())
+//                .eq("studentId", courseDetailReq.getStuId())
+//                .in("coursePackageId", collect1)
+//                .eq("status", 1)
+//                .eq("state", 1)
+//        );
 
 
 
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
index 3cdcbf9..18e5477 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
@@ -421,8 +421,7 @@
     @ResponseBody
     public void toClass(@RequestBody ToClassDto toClassDto) throws ParseException {
         System.out.println("===========到达getSelect=======" + toClassDto);
-        TCoursePackagePayment orinPay =
-                paymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("id", toClassDto.getId()));
+        TCoursePackagePayment orinPay = paymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("id", toClassDto.getId()));
         TCoursePackagePayment studentPay = paymentService.getOne
                 (new QueryWrapper<TCoursePackagePayment>()
                         .eq("studentId", toClassDto.getToStudentId())
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/UserIntegralChangesClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/UserIntegralChangesClient.java
new file mode 100644
index 0000000..62683fe
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/UserIntegralChangesClient.java
@@ -0,0 +1,22 @@
+package com.dsh.course.feignclient.account;
+
+import com.dsh.course.feignclient.account.model.SaveUserIntegralChangesVo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/12 11:40
+ */
+@FeignClient("mb-cloud-account")
+public interface UserIntegralChangesClient {
+
+
+    /**
+     * 保存用户积分变动记录
+     *
+     * @param vo
+     */
+    @PostMapping("/userIntegralChanges/saveUserIntegralChanges")
+    void saveUserIntegralChanges(SaveUserIntegralChangesVo vo);
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/SaveUserIntegralChangesVo.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/SaveUserIntegralChangesVo.java
new file mode 100644
index 0000000..6faaadf
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/SaveUserIntegralChangesVo.java
@@ -0,0 +1,23 @@
+package com.dsh.course.feignclient.account.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/12 11:26
+ */
+@Data
+public class SaveUserIntegralChangesVo {
+    /**
+     * 用户id
+     */
+    private Integer appUserId;
+    /**
+     * 积分类型(1=赠送积分,2=兑换商品,3=完成课后练习,4=观看教学视频)
+     */
+    private Integer type;
+    /**
+     * 积分
+     */
+    private Integer integral;
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/UpdateCourseVideoStatusRequest.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/UpdateCourseVideoStatusRequest.java
index bee3540..398ace3 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/UpdateCourseVideoStatusRequest.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/UpdateCourseVideoStatusRequest.java
@@ -14,6 +14,9 @@
     @ApiModelProperty(value = "课包id")
     private Integer coursePackageId;
 
+    @ApiModelProperty(value = "排课id")
+    private Long scId;
+
     @ApiModelProperty(value = "是否看完 1是 2否")
     private Integer isOver;
 
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/ICoursePackageSchedulingService.java b/cloud-server-course/src/main/java/com/dsh/course/service/ICoursePackageSchedulingService.java
index d9b43d5..09ea539 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/ICoursePackageSchedulingService.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/ICoursePackageSchedulingService.java
@@ -34,7 +34,6 @@
 
     List<AppUserVideoResponse> queryAll(List<Long> longs);
 
-    void cancel();
 
 
     /**
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
index c4797d5..fe4934d 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
@@ -84,36 +84,6 @@
      * 定时修改状态
      */
     @Override
-    public void cancel() {
-        new Thread(new Runnable() {
-            @Override
-            public void run() {
-                List<TCoursePackagePayment> list = packagePaymentService.list();
-                Date now = new Date();
-                List<Long> pays = new ArrayList<>();
-                for (TCoursePackagePayment coursePackagePayment : list) {
-                    if (now.before(coursePackagePayment.getUseTime())) {
-                        pays.add(coursePackagePayment.getId());
-                    }
-                }
-
-                List<CoursePackageStudent> coursePackagePaymentId = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().in("coursePackagePaymentId", pays));
-                List<Long> scs = new ArrayList<>();
-                for (CoursePackageStudent coursePackageStudent : coursePackagePaymentId) {
-                    scs.add(coursePackageStudent.getCoursePackageSchedulingId());
-                }
-                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().in("coursePackagePaymentId", pays));
-                coursePackageSchedulingMapper.delete(new QueryWrapper<CoursePackageScheduling>().in("id", scs));
-
-
-            }
-        }).start();
-    }
-
-    /**
-     * 定时修改状态
-     */
-    @Override
     public void taskSetStatus() {
         new Thread(new Runnable() {
             @Override
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 624cee3..682ca6f 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
@@ -18,10 +18,8 @@
 import com.dsh.course.feignclient.account.AppUserClient;
 import com.dsh.course.feignclient.account.CoachClient;
 import com.dsh.course.feignclient.account.StudentClient;
-import com.dsh.course.feignclient.account.model.AppUser;
-import com.dsh.course.feignclient.account.model.Coach;
-import com.dsh.course.feignclient.account.model.Student;
-import com.dsh.course.feignclient.account.model.TCourseInfoRecord;
+import com.dsh.course.feignclient.account.UserIntegralChangesClient;
+import com.dsh.course.feignclient.account.model.*;
 import com.dsh.course.feignclient.activity.BenefitVideoClient;
 import com.dsh.course.feignclient.activity.CouponClient;
 import com.dsh.course.feignclient.activity.model.BenefitsVideos;
@@ -118,9 +116,11 @@
     @Autowired
     private ICoursePackageSchedulingService coursePackageSchedulingService;
 
-
     @Autowired
     private RestTemplate internalRestTemplate;
+
+    @Resource
+    private UserIntegralChangesClient userIntegralChangesClient;
 
 
     @Override
@@ -326,7 +326,6 @@
     @Override
     public CourseOfVideoResponse queryVideoDetails(CourseWithDetailsRequest detailsRequest, Integer appUserId) {
         CourseOfVideoResponse response = new CourseOfVideoResponse();
-//        BenefitsVideos videosWithIds = bfvoClient.getVideosWithIds(detailsRequest.getVideoId());
         TCourse byId = courseService.getById(detailsRequest.getVideoId());
         TCoursePackage coursePackage = tcpmapper.selectById(detailsRequest.getCoursePackageId());
         CoursePackageScheduling byId1 = new CoursePackageScheduling();
@@ -373,6 +372,17 @@
             userVideoDetails.setState(2);
             userVideoDetails.setUpdateTime(new Date());
             uvdmapper.updateById(userVideoDetails);
+
+            CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingService.getById(detailsRequest.getScId());
+            //添加积分
+            AppUser appUser = appuClient.queryAppUser(coursePackageScheduling.getAppUserId());
+            appUser.setIntegral((null == appUser.getIntegral() ? 0 : appUser.getIntegral()) + (null == coursePackageScheduling.getIntegral() ? 0 : coursePackageScheduling.getIntegral()));
+            appuClient.updateAppUser(appUser);
+            SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
+            vo.setAppUserId(coursePackageScheduling.getAppUserId());
+            vo.setIntegral(coursePackageScheduling.getIntegral());
+            vo.setType(4);
+            userIntegralChangesClient.saveUserIntegralChanges(vo);
             return "SUCCESS";
         }
         return "ERROR";
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 3226306..a14b9c3 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
@@ -607,7 +607,6 @@
         String[] split = coursePackage.getClassWeeks().split(";");
         coursePackageInfo.setWeeks(Arrays.asList(split));
 
-        // 2.0
         String classStartTime = coursePackage.getClassStartTime();
         String classEndTime = coursePackage.getClassEndTime();
         ArrayList<String> classTime = new ArrayList<>();
@@ -643,7 +642,6 @@
                 coursePackagePaymentConfigVo.setPayType(2);
             }
 
-//                coursePackagePaymentConfigVo.setPayType(coursePackage.getPayType());
             //会员显示原价和支付价(会员价)。非会员显示会员价和支付价(最低)
 //                if(appUser.getIsVip() == 0){//非会员
             List<TCoursePackageDiscount> list2 = coursePackageDiscountService.list(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackagePaymentConfigId", coursePackagePaymentConfig.getId())
@@ -981,6 +979,9 @@
                                     coursePackageOrder1.setOrderNumber(transaction_id);
                                     coursePackageOrder1.setAppUserId(null);
                                     coursePackageOrderService.updateById(coursePackageOrder1);
+                                    //修改课时有效期
+
+
                                     addCoursePackageOrderStudent(coursePackageOrder1.getId(), coursePackagePaymentConfig);
                                     break;
                                 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/TaskUtil.java b/cloud-server-course/src/main/java/com/dsh/course/util/TaskUtil.java
index fd4f410..1065e31 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/util/TaskUtil.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/util/TaskUtil.java
@@ -91,15 +91,6 @@
 
 
     /**
-     * 零时任务
-     */
-    @Scheduled(cron = "0 0 23 * * *")
-    public void zeroTask() {
-        coursePackageSchedulingService.cancel();
-    }
-
-
-    /**
      * 每周一执行的定时任务
      */
     @Scheduled(cron = "0 0 0 * * 2")
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackageStudent.js b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackageStudent.js
index ee68969..0ca98b7 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackageStudent.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackageStudent.js
@@ -42,16 +42,7 @@
                     }
                 }
             }
-        },
-        {title: '预定状态', field: 'reservationStatus', align: 'center', valign: 'middle',hidden:true,
-            formatter: function (v) {
-                if (v == 0) {
-                    return '已取消';
-                } else {
-                    return '正常';
-                }
-            }
-        },
+        }
     ];
     return columns;
 };
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java
index 493cda4..4338689 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java
@@ -85,25 +85,8 @@
             @ApiImplicitParam(value = "位置(1=首页,2=首页底部,3=线上课得积分,4=看视频得奖励,5=常见问题)", name = "position", dataType = "int", required = true),
     })
     public ResultUtil<List<BannerVo>> queryBannerList(Integer position) {
-//        try {
-//            List<Banner> list = bannerService.list(new QueryWrapper<Banner>().eq("position", position).eq("state", 1).orderByAsc("sort"));
-
-//            if (position == 4) {
         List<BannerVo> list2 = bannerService.list1(position);
         return ResultUtil.success(list2);
-//            }
-
-//            List<BannerVo> list1 = new ArrayList<>();
-//            for (Banner banner : list) {
-//                BannerVo bannerVo = new BannerVo();
-//                BeanUtils.copyProperties(banner, bannerVo);
-//                list1.add(bannerVo);
-//            }
-//            return ResultUtil.success(list1);
-//        }catch (Exception e){
-//            e.printStackTrace();
-//            return ResultUtil.runErr();
-//        }
     }
 
 
diff --git a/cloud-server-other/src/main/java/com/dsh/other/model/BannerVo.java b/cloud-server-other/src/main/java/com/dsh/other/model/BannerVo.java
index 972eaa5..cceae31 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/model/BannerVo.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/model/BannerVo.java
@@ -25,4 +25,6 @@
     private Integer turnId;
     @ApiModelProperty("跳转模块")
     private String model;
+    @ApiModelProperty("跳转列表类型id")
+    private Integer typeId;
 }
diff --git a/cloud-server-other/src/main/resources/mapper/BannerMapper.xml b/cloud-server-other/src/main/resources/mapper/BannerMapper.xml
index cee1903..0accb48 100644
--- a/cloud-server-other/src/main/resources/mapper/BannerMapper.xml
+++ b/cloud-server-other/src/main/resources/mapper/BannerMapper.xml
@@ -49,9 +49,10 @@
             where position = 6
     </select>
     <select id="list1" resultType="com.dsh.other.model.BannerVo">
-                    select tb.id as id,tb.img as img, tb.page as page,tb.name as name,tb.type as type,tb.turnId as turnId  , tb.model as model
-                        from t_banner tb
-                    where tb.position = #{position} and tb.state =1
+      select tb.id as id,tb.img as img, tb.page as page,tb.name as name,tb.type as type,
+      tb.turnId as turnId  , tb.model as model, tb.typeId
+      from t_banner tb
+      where tb.position = #{position} and tb.state =1
     </select>
 
 </mapper>

--
Gitblit v1.7.1