From e5ed9472ff4b5bf2f26e5beb6a77af571057b79b Mon Sep 17 00:00:00 2001
From: 44323 <443237572@qq.com>
Date: 星期三, 01 十一月 2023 18:58:03 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/PlayPai

---
 cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket_add.html                  |    2 
 cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java                               |    2 
 cloud-server-competition/src/main/java/com/dsh/competition/controller/ParticipantController.java    |   23 ++
 cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java                             |    3 
 cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java                |   11 +
 cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java |    4 
 cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java                       |    2 
 cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java                      |   12 
 cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseDetailsResponse.java       |    3 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java |    3 
 cloud-server-competition/src/main/java/com/dsh/competition/feignclient/account/StudentClient.java   |    4 
 cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java                   |    2 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java        |    2 
 cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java            |    4 
 cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java        |   99 +++++++++++++
 cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointDetailsVo.java   |    2 
 cloud-server-account/src/main/java/com/dsh/account/util/ResultUtil.java                             |    2 
 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ExchangeDetailsResponse.java |    2 
 cloud-server-activity/src/main/java/com/dsh/activity/controller/UserCouponController.java           |   18 ++
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java            |   58 ++++++++
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java |    3 
 cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java       |   10 +
 cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js                |   46 +++++
 cloud-server-competition/src/main/java/com/dsh/competition/util/CodeGenerateUtils.java              |   74 ++++++++++
 cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java                   |    1 
 25 files changed, 361 insertions(+), 31 deletions(-)

diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java
index 4584afb..08b4512 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java
@@ -8,6 +8,7 @@
 import com.dsh.account.feignclient.course.CoursePaymentClient;
 import com.dsh.account.feignclient.course.model.TCoursePackagePayment;
 import com.dsh.account.model.QueryDataFee;
+import com.dsh.account.model.Student;
 import com.dsh.account.model.StudentVo;
 import com.dsh.account.service.*;
 import com.dsh.account.util.ResultUtil;
@@ -173,6 +174,16 @@
     }
 
 
+    @ResponseBody
+    @PostMapping("/base/appUser/updateTStudent")
+    public void updateTStudent(@RequestBody TStudent student){
+        try {
+            studentService.updateById(student);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
     /**
      * 根据id获取数据
      * @param id
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 7de2ec7..cac69c8 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
@@ -466,7 +466,9 @@
     })
     public ResultUtil<PointDetailsVo> redemptionDetails(Long detailsId){
         try {
-            return ResultUtil.success(uicService.queryRedemptionDetails(detailsId));
+            PointDetailsVo pointDetailsVo = uicService.queryRedemptionDetails(detailsId);
+            pointDetailsVo.getPics().remove(0);
+            return ResultUtil.success(pointDetailsVo);
         }catch (Exception e){
             return ResultUtil.runErr();
         }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java
index d757b42..0559521 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java
@@ -20,6 +20,8 @@
     @PostMapping("/base/userConpon/getStuOfConpons")
     public List<CouponStuAvailableVo> queryUserWithConponList(@RequestParam("appUserId") Integer appUserId);
 
+    @PostMapping("/coupon/queryCouponById")
+    Coupon queryCouponById(Integer id);
 
     @PostMapping("/base/coupon/getAllCoupons")
     public List<Coupon> getAllCoupons(@RequestBody CommodityRequest request);
@@ -33,4 +35,12 @@
 
     @PostMapping("/userCoupon/queryCouponOfStore")
     List<Integer> getCouponStoreIds(@RequestBody Integer couponId);
+
+
+    @PostMapping("/userCoupon/queryCounts")
+    Integer queryCounts(@RequestBody List<Integer> queryIds);
+
+
+    @PostMapping("/userCoupon/queryCounts1")
+    Integer queryCounts1(@RequestBody List<Integer> queryIds);
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointDetailsVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointDetailsVo.java
index 62a435b..120ac9c 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointDetailsVo.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/PointDetailsVo.java
@@ -19,7 +19,7 @@
     @ApiModelProperty(value = "商品名称")
     private String goodName;
 
-    @ApiModelProperty(value = "适用状态(1已使用 2未使用)")
+    @ApiModelProperty(value = "适用状态(1已使用 2未使用 3已过期)")
     private Integer useType;
 
     @ApiModelProperty(value = "有效期开始时间")
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 79458e2..2426ac0 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
@@ -1175,11 +1175,69 @@
         }
     }
 
+
+
+        @Resource
+        private UserConponClient userConponClient;
+
+@Autowired
+private TAppUserService appUserService;
+
+
+
+
     @Override
     @Transactional
     public ResultUtil productRedemptionOperation(Integer userIdFormRedis, GoodsExchangeVo exchangeType) {
         System.out.println("exchangeType:--->");
 
+            //如果是兑换优惠卷
+        if (exchangeType.getGoodsType()==4){
+            //查询优惠卷
+            Coupon coupon = userConponClient.queryCouponById(exchangeType.getGoodId());
+            //查询该优惠卷的数量够不够
+            List<Integer> queryIds = new ArrayList<>();
+            queryIds.add(coupon.getId());
+            queryIds.add(userIdFormRedis);
+           Integer counts =  userConponClient.queryCounts(queryIds);
+           if (coupon.getQuantityIssued()-counts == 0){
+               return new ResultUtil(0,"当前数量不足");
+           }
+            //查询该用户是否超出限领数量
+            Integer usercounts =  userConponClient.queryCounts1(queryIds);
+
+            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,"当前用户积分不足");
+            }
+
+            user.setIntegral(user.getIntegral()-coupon.getIntegral().intValue());
+
+            appUserService.updateById(user);
+
+            return ResultUtil.success();
+        }
+
+
+
+
         System.out.println(exchangeType);
         try {
             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
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 5d076e5..22d3b45 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
@@ -199,6 +199,9 @@
             detailsResponses.clear();
         }
 
+
+
+
         return detailsResponses;
     }
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/util/ResultUtil.java b/cloud-server-account/src/main/java/com/dsh/account/util/ResultUtil.java
index 4c70087..3fa8b2d 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/util/ResultUtil.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/util/ResultUtil.java
@@ -51,7 +51,7 @@
         return code;
     }
 
-    private ResultUtil(Integer code, String msg) {
+    public ResultUtil(Integer code, String msg) {
         this.code = code;
         this.msg = msg;
     }
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 302410c..55f23ea 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
@@ -486,6 +486,10 @@
         }
         return detailsVo;
     }
+
+
+    @Autowired
+    private UserCouponService userCouponService;
     @PostMapping("/base/pointMerchars/getGoodDetails")
     public ProductDetailsVo getGoodDetailsWithId(@RequestBody ProductDetailRequest detailRequest){
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
@@ -639,8 +643,15 @@
                 detailsVo.setBelongsScope(coupon.getUserPopulation());
 //                int couponNums = upmseService.count(new QueryWrapper<UserPointsMerchandise>()
 //                        .eq("pointsMerchandiseId",merchandise.getId() ));
-                detailsVo.setRedeemedNum(coupon.getPickUpQuantity());
-                detailsVo.setResidueNum(Math.max(coupon.getQuantityIssued() - coupon.getPickUpQuantity(), 0));
+
+
+
+                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){
@@ -741,6 +752,90 @@
                         }
 
                     }
+
+
+                    if (merchandise.getCardType()==1){
+                        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+                        Calendar calendar = Calendar.getInstance();
+                        calendar.setTime(pointsMerchandise.getInsertTime());
+                        calendar.add(Calendar.DAY_OF_MONTH, 1);
+                        Date end = calendar.getTime();
+                        String startDate = dateFormat.format(pointsMerchandise.getInsertTime());
+                        String endDate = dateFormat.format(end);
+                        detailsResponse.setStartTime(startDate);
+                        detailsResponse.setEndTime(endDate);
+
+                        Date now = new Date();
+                        Calendar cal1 = Calendar.getInstance();
+                        cal1.setTime(pointsMerchandise.getInsertTime());
+
+                        Calendar cal2 = Calendar.getInstance();
+                        cal2.setTime(now);
+
+                        // Compare the year, month, and day of the two Calendar instances
+                        boolean isSameDate = cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) &&
+                                cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH) &&
+                                cal1.get(Calendar.DAY_OF_MONTH) == cal2.get(Calendar.DAY_OF_MONTH);
+
+                        // Print the result
+                        if (isSameDate) {
+                            detailsResponse.setUseStatus(3);
+                        } else {
+                            System.out.println("The two dates do not have the same date.");
+                        }
+
+
+                    } else if (merchandise.getCardType()==2) {
+                        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+                        Calendar calendar = Calendar.getInstance();
+                        calendar.setTime(pointsMerchandise.getInsertTime());
+                        calendar.add(Calendar.DAY_OF_MONTH, 31);
+                        Date end = calendar.getTime();
+                        String startDate = dateFormat.format(pointsMerchandise.getInsertTime());
+                        String endDate = dateFormat.format(end);
+                        detailsResponse.setStartTime(startDate);
+                        detailsResponse.setEndTime(endDate);
+
+                        Date now = new Date();
+                        if (now.after(end)){
+                            detailsResponse.setUseStatus(3);
+                        }
+
+                    } else if (merchandise.getCardType()==3) {
+                        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+                        Calendar calendar = Calendar.getInstance();
+                        calendar.setTime(pointsMerchandise.getInsertTime());
+                        calendar.add(Calendar.DAY_OF_MONTH, 93);
+                        Date end = calendar.getTime();
+                        String startDate = dateFormat.format(pointsMerchandise.getInsertTime());
+                        String endDate = dateFormat.format(end);
+                        detailsResponse.setStartTime(startDate);
+                        detailsResponse.setEndTime(endDate);
+
+                        Date now = new Date();
+                        if (now.after(end)){
+                            detailsResponse.setUseStatus(3);
+                        }
+
+                    } else if (merchandise.getCardType()==4) {
+                        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+                        Calendar calendar = Calendar.getInstance();
+                        calendar.setTime(pointsMerchandise.getInsertTime());
+                        calendar.add(Calendar.DAY_OF_MONTH, 365);
+                        Date end = calendar.getTime();
+                        String startDate = dateFormat.format(pointsMerchandise.getInsertTime());
+                        String endDate = dateFormat.format(end);
+                        detailsResponse.setStartTime(startDate);
+                        detailsResponse.setEndTime(endDate);
+
+                        Date now = new Date();
+                        if (now.after(end)){
+                            detailsResponse.setUseStatus(3);
+                        }
+
+                    }
+
+
                 }
                 responses.add(detailsResponse);
             }
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 e4fb80c..bd829f2 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
@@ -232,5 +232,23 @@
             return null;
         }
     }
+
+
+    @ResponseBody
+    @PostMapping("/userCoupon/queryCounts")
+    public Integer queryCounts(@RequestBody List<Integer> queryIds){
+     return    userCouponService.count(new QueryWrapper<UserCoupon>().eq("couponId",queryIds.get(0)));
+
+
+    }
+
+
+    @ResponseBody
+    @PostMapping("/userCoupon/queryCounts1")
+    public Integer queryCounts1(@RequestBody List<Integer> queryIds){
+        return    userCouponService.count(new QueryWrapper<UserCoupon>().eq("couponId",queryIds.get(0)).eq("userId",queryIds.get(1)));
+
+
+    }
     
 }
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ExchangeDetailsResponse.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ExchangeDetailsResponse.java
index a940cd8..4f3406e 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ExchangeDetailsResponse.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ExchangeDetailsResponse.java
@@ -31,7 +31,7 @@
     @ApiModelProperty(value = "有效期结束时间")
     private String endTime;
 
-    @ApiModelProperty(value = "使用状态 (1已使用 2未使用)")
+    @ApiModelProperty(value = "使用状态 (1已使用 2未使用 3 已过期)")
     private Integer useStatus;
 
     @ApiModelProperty(value = "商品类型  1实物 2课包 3门票 4优惠券")
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/controller/ParticipantController.java b/cloud-server-competition/src/main/java/com/dsh/competition/controller/ParticipantController.java
index dce73b2..fd5049b 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/controller/ParticipantController.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/controller/ParticipantController.java
@@ -3,6 +3,8 @@
 import com.dsh.competition.feignclient.account.AppUserClient;
 import com.dsh.competition.feignclient.account.StudentClient;
 import com.dsh.competition.feignclient.account.model.AppUser;
+import com.dsh.competition.feignclient.account.model.Student;
+import com.dsh.competition.feignclient.account.model.TStudent;
 import com.dsh.competition.model.AddParticipant;
 import com.dsh.competition.model.EditParticipant;
 import com.dsh.competition.model.ParticipantVo;
@@ -98,6 +100,8 @@
    @Resource
    private StudentClient studentClient;
 
+    @Resource
+    private AppUserClient appUserClient;
     @ResponseBody
     @PostMapping("/api/participant/editParticipant")
     @ApiOperation(value = "编辑参赛人员", tags = {"APP-赛事活动列表", ""})
@@ -110,15 +114,24 @@
             if(null == uid){
                 return ResultUtil.tokenErr();
             }
+            int numDigits = String.valueOf(editParticipant.getId()).length();
 
-            if (editParticipant.getIsStudent()==0){
-            return participantService.editParticipant(uid, editParticipant);}
+
+
+            if (numDigits==9){
+            return participantService.editParticipant(uid, editParticipant);
+            }
             else {
-                AppUser appUser = new AppUser();
-                appUser.setId(editParticipant.getId());
 
 
-
+                TStudent student = new TStudent();
+                student.setId(editParticipant.getId());
+                student.setName(editParticipant.getName());
+                student.setIdCard(editParticipant.getIdcard());
+                student.setHeight(Double.valueOf(editParticipant.getHeight()));
+                student.setWeight(editParticipant.getWeight());
+                student.setPhone(editParticipant.getPhone());
+                studentClient.updateAppUser(student);
                 return ResultUtil.success();
             }
         }catch (Exception e){
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/account/StudentClient.java b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/account/StudentClient.java
index 5052d4a..48f0dcb 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/account/StudentClient.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/account/StudentClient.java
@@ -1,5 +1,6 @@
 package com.dsh.competition.feignclient.account;
 
+import com.dsh.competition.feignclient.account.model.AppUser;
 import com.dsh.competition.feignclient.account.model.Student;
 import com.dsh.competition.feignclient.account.model.TStudent;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -15,7 +16,8 @@
 @FeignClient("mb-cloud-account")
 public interface StudentClient {
 
-
+    @PostMapping("/base/appUser/updateTStudent")
+    void updateAppUser(TStudent student);
     /**
      * 根据电话号码获取学员
      * @param phone
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java
index 705a65c..bc0760b 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java
@@ -16,6 +16,7 @@
 import com.dsh.competition.model.ParticipantVo;
 import com.dsh.competition.model.SaveParticipant;
 import com.dsh.competition.service.IParticipantService;
+import com.dsh.competition.util.CodeGenerateUtils;
 import com.dsh.competition.util.JuHeUtil;
 import com.dsh.competition.util.ResultUtil;
 import com.dsh.competition.util.ToolUtil;
@@ -71,6 +72,9 @@
             Date parse = sdf.parse(addParticipant.getBirthday());
             participant.setBirthday(parse);
         }
+        String s = CodeGenerateUtils.generateOrderSn();
+        String substring = s.substring(1);
+        participant.setId(Integer.valueOf(substring));
         participant.setAppUserId(uid);
         participant.setState(1);
         participant.setInsertTime(new Date());
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/util/CodeGenerateUtils.java b/cloud-server-competition/src/main/java/com/dsh/competition/util/CodeGenerateUtils.java
index e69de29..62ac104 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/util/CodeGenerateUtils.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/util/CodeGenerateUtils.java
@@ -0,0 +1,74 @@
+package com.dsh.competition.util;
+
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+
+/**
+ * @Description
+ * @Author xiaochen
+ * @Date 2021/7/28 10:26
+ */
+public class CodeGenerateUtils {
+
+    /**
+     * @return
+     * @Description 获取商品编码
+     * 商品编码规则:nanoTime(后5位)*5位随机数(10000~99999)
+     * @Author xiaochen
+     */
+    public static String generateProductCode() {
+        long nanoPart = System.nanoTime() % 100000L;
+        if (nanoPart < 10000L) {
+            nanoPart += 10000L;
+        }
+        long randomPart = (long) (Math.random() * (90000) + 10000);
+        String code = "0" + new BigDecimal(nanoPart).multiply(new BigDecimal(randomPart));
+        return code.substring(code.length() - 10);
+    }
+
+    /**
+     * @return
+     * @Description 生成订单编号  10位
+     * 订单编号规则:(10位):(年末尾*月,取后2位)+(用户ID%3.33*日取整后2位)+(timestamp*10000以内随机数,取后6位)
+     * @Author xiaochen
+     */
+    public static String generateOrderSn() {
+        Calendar calendar = Calendar.getInstance();
+        int year = calendar.get(Calendar.YEAR);
+        year = year % 10;
+        if (year == 0) year = 10;
+        int month = calendar.get(Calendar.MONTH) + 1;
+        int yearMonth = year * month;
+        String yearMonthPart = "0" + yearMonth;
+        yearMonthPart = yearMonthPart.substring(yearMonthPart.length() - 2);
+
+        int day = calendar.get(Calendar.DAY_OF_MONTH);
+        double v = Math.random() * 10000;
+        int dayNum = (int) ((v % 3.33) * day);
+        String dayPart = "0" + dayNum;
+        dayPart = dayPart.substring(dayPart.length() - 2);
+
+        String timestampPart = "" + (Math.random() * 10000) * (System.currentTimeMillis() / 10000);
+        timestampPart = timestampPart.replace(".", "").replace("E", "");
+        timestampPart = timestampPart.substring(0, 6);
+        return yearMonthPart + dayPart + timestampPart;
+    }
+
+    /**
+     * @return
+     * @Description 生成统一支付单号  规则:年(2)月(2)日(2)时(2)分(2)+timestamp*5位随机整数取后5位
+     * @Author xiaochen
+     */
+    public static String generateVolumeSn() {
+        Calendar calendar = Calendar.getInstance();
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddhhmmss");
+        String dateTime = dateFormat.format(calendar.getTime());
+        dateTime = dateTime.substring(2);
+        String timestampPart = "" + (Math.random() * 10000) * (System.currentTimeMillis() / 10000);
+        timestampPart = timestampPart.replace(".", "").replace("E", "");
+        timestampPart = timestampPart.substring(0, 5);
+        return dateTime + timestampPart;
+    }
+
+}
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java b/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java
index d293072..5996da1 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java
@@ -57,7 +57,7 @@
 
     private String key = "";//微信商户号
 
-    private String callbackPath = "";//支付回调网关地址
+    private String callbackPath = "http://8.137.22.229:56666/competition";//支付回调网关地址
 
     private String app_cert_path = "C:/cert/alipay/user/app_cert_path.crt";//应用公钥证书路径
 
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 cb5f581..df01a7d 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
@@ -276,6 +276,7 @@
     @PostMapping("/base/course/aliPaymentCourseCallback")
     public void aliPaymentCourseCallback(HttpServletRequest request, HttpServletResponse response){
         try {
+            System.err.println("=====支付宝回调=======");
             Map<String, String> map = payMoneyUtil.alipayCallback(request);
             if(null != map){
                 String code = map.get("out_trade_no");
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseDetailsResponse.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseDetailsResponse.java
index d98b2db..2884223 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseDetailsResponse.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseDetailsResponse.java
@@ -40,5 +40,6 @@
     @ApiModelProperty(value = "支付状态 1未支付 2续课")
     private Integer payStatus;
 
-
+    @ApiModelProperty("详情图片")
+    private String detailDrawing;
 }
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 5c3a583..8c2ca47 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
@@ -431,6 +431,7 @@
             TCoursePackage coursePackage = tcpmapper.selectById(tCoursePackagePayment.getCoursePackageId());
             response.setCoursePackageId(tCoursePackagePayment.getCoursePackageId());
             response.setCoverDrawing(coursePackage.getCoverDrawing());
+            response.setDetailDrawing(coursePackage.getDetailDrawing());
             response.setCoursePackageName(coursePackage.getName());
             response.setCoursePayId(tCoursePackagePayment.getId());
             List<Integer> integers = StrUtils.dealStrToList(coursePackage.getClassWeeks());
@@ -661,7 +662,7 @@
 
     public ResultUtil AlipayPayment(String code, BigDecimal request){
         TCoursePackagePaymentMapper baseMapper1 = this.baseMapper;
-        ResultUtil alipay = payMoneyUtil.alipay("课包购买", "", "", code, request.toString(),
+        ResultUtil alipay = payMoneyUtil.alipay("课包购买", "课包购买", "", code, request.toString(),
                 "/base/coursePackage/alipayRegisteredCoursesCallback");
         if(alipay.getCode() == 200){
             new Thread(new Runnable() {
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 f89ee80..1e9f9bb 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
@@ -951,7 +951,7 @@
             sid=student.getId();
         }
 
-        ResultUtil alipay = payMoneyUtil.alipay("购买课程", "购买课程", "", code, paymentPrice.toString(), "/base/course/aliPaymentCourseCallback");
+        ResultUtil alipay = payMoneyUtil.alipay("购买课程", "购买课程", student.getId().toString(), code, paymentPrice.toString(), "/base/course/aliPaymentCourseCallback");
         if(alipay.getCode() == 200){
             Integer finalSid = sid;
             new Thread(new Runnable() {
diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java b/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
index 839bdc2..ded08d6 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
@@ -59,7 +59,7 @@
 
     private String key = "6f5e0c2dcabfa9c27b5da5836a362fef";//微信商户号
 
-    private String callbackPath = "";//支付回调网关地址
+    private String callbackPath = "http://8.137.22.229:5004";//支付回调网关地址
 
     private String app_cert_path = "C:/cert/alipay/user/app_cert_path.crt";//应用公钥证书路径
 
@@ -142,6 +142,7 @@
         model.setPassbackParams(passbackParams);//自定义参数
         request.setBizModel(model);
         request.setNotifyUrl(callbackPath + notifyUrl);
+
         try {
             //这里和普通的接口调用不同,使用的是sdkExecute
             AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket_add.html
index 55edd06..b53f6dc 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/ticket/ticket_add.html
@@ -47,7 +47,7 @@
                     <input type="radio" name="type" value="1" checked onclick="updateType(1)"> 日卡
                     <input type="radio" name="type" value="2" > 月卡
                     <input type="radio" name="type" value="3" > 季卡
-                    <input type="radio" name="type" value="3" > 年卡
+                    <input type="radio" name="type" value="4" > 年卡
                 </div>
             </div>
             <div class="form-group">
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 d4cab8a..e816df7 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
@@ -395,15 +395,18 @@
     if ($('#userType').val()==1){
     // 兑换方式
     let exchangeMethod = $(':radio[name="exchangeMethod"]:checked').val();
-    if (exchangeMethod === '' || exchangeMethod === undefined || exchangeMethod === null){
-        return Feng.error('兑换方式不能为空');
+
+    if (distributionMethod === '1') {
+        if (exchangeMethod === '' || exchangeMethod === undefined || exchangeMethod === null) {
+            return Feng.error('兑换方式不能为空');
+        }
     }
-    if (exchangeMethod === '1'){
+    if (exchangeMethod === '1' ){
         if (requiredPoints === undefined || requiredPoints === '' || requiredPoints === null){
             return Feng.error('所需积分不能为空');
         }
     }
-    if (exchangeMethod === '2'){
+    if (exchangeMethod === '2' && distributionMethod === '1'){
         if (requiredPoints === undefined || requiredPoints === '' || requiredPoints === null){
             return Feng.error('所需积分不能为空');
         }
@@ -411,7 +414,7 @@
             return Feng.error('所需现金不能为空');
         }
     }
-    if (exchangeMethod === '3'){
+    if (exchangeMethod === '3' && distributionMethod === '1'){
         if (requiredCash === undefined || requiredCash === '' || requiredCash === null){
             return Feng.error('所需现金不能为空');
         }
@@ -520,6 +523,9 @@
 
 
 $(function () {
+
+
+
     getProvince(null);
     radio1();
     var OBJradio = document.getElementsByName("prescription")
@@ -604,4 +610,34 @@
         $('#app1').show();
         // 适用范围
     }
+
+
+
+
+    const distributionMethodOptions = document.getElementsByName('distributionMethod');
+
+// 监听distributionMethod选项的变化
+    for (let i = 0; i < distributionMethodOptions.length; i++) {
+        distributionMethodOptions[i].addEventListener('change', function() {
+            // 获取选中的distributionMethod值
+            const selectedDistributionMethod = document.querySelector('input[name="distributionMethod"]:checked').value;
+
+            // 判断选中的值是否不等于1
+            if (selectedDistributionMethod !== '1') {
+                console.log("已经选择1")
+                // 隐藏exchangeType
+                document.getElementById('exchangeType').style.display = 'none';
+                document.getElementById('needAmount').style.display = 'none';
+                document.getElementById('needIntegral').style.display = 'none';
+            } else {
+                // 显示exchangeType
+                document.getElementById('exchangeType').style.display = 'block';
+                document.getElementById('needAmount').style.display = 'block';
+                document.getElementById('needIntegral').style.display = 'block';
+            }
+        });
+    }
+
+
+
 });
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java
index a297924..ea1db91 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java
@@ -327,7 +327,7 @@
 
 
     /**
-     * 购买课程支付宝回调
+     * 预约场地支付宝回调
      * @param request
      * @param response
      */
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java
index 6e23ca2..97c999d 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java
@@ -114,16 +114,16 @@
                 String result = storeLon+","+storeLat;
                 String distanceTOKilometer = gdMapGeocodingUtil.getDistanceTOKilometer(current, result);
                 long l = 0;
-                try {
-                    l = Long.parseLong(distanceTOKilometer);
-                }catch (Exception e){
-                    l = 0;
-                }
+//                try {
+//                    l = Long.parseLong(distanceTOKilometer);
+//                }catch (Exception e){
+//                    l = 0;
+//                }
                 StoreInfo info = new StoreInfo();
                 info.setStoreId(store.getId());
                 info.setStoreName(store.getName());
                 info.setStoreImg(store.getCoverDrawing());
-                info.setDistance(l);
+                info.setDistance((long) Double.parseDouble(distanceTOKilometer));
                 info.setStoreAddr(store.getAddress());
                 info.setLatitude(storeLat);
                 info.setLongitude(storeLon);
diff --git a/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java b/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java
index e9a7ebc..c2b8f8b 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/util/PayMoneyUtil.java
@@ -61,7 +61,7 @@
 
     private String key = "";//微信商户号
 
-    private String callbackPath = "";//支付回调网关地址
+    private String callbackPath = "http://8.137.22.229:56666/other";//支付回调网关地址
 
     private String app_cert_path = "C:/cert/alipay/user/app_cert_path.crt";//应用公钥证书路径
 

--
Gitblit v1.7.1