From 3c12858927ce26f277ba758e520c81be599d8df1 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 28 十一月 2023 15:42:24 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java |   65 +
 cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/ListQuery.java                     |    3 
 cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml                                         |   28 
 cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java                              |  348 ++++---
 cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/ListQuery.java                           |    3 
 cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePayDTO.java                                       |    2 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java                              |    3 
 cloud-server-activity/pom.xml                                                                                         |    5 
 cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition.js                            |   11 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java                          |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoach/TCoach_edit.html                                   |   29 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoachController.java                |  132 ++
 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/CoursePackageOrderStudent.java          |   96 ++
 cloud-server-other/src/main/java/com/dsh/other/model/dto/siteDto/GameDataQuery.java                                   |    9 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/GameDataQuery.java                       |    9 
 cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java                          |   31 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java                 |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java       |   85 +
 cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java                                         |   25 
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentConfigController.java                 |   13 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html                        |   97 +
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionAuditController.java    |    2 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java                   |   57 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentConfigClient.java         |    7 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePaymentVO.java                   |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java                |    7 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java           |   18 
 cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml                                    |   18 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStore.java                                   |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/advertisement/advertisement_edit.html                     |   30 
 cloud-server-course/pom.xml                                                                                           |   13 
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java                       |  578 ++++++++++---
 cloud-server-course/src/main/java/com/dsh/course/service/ICoursePackageSchedulingService.java                         |    2 
 cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java                                         |    6 
 cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageOrderStudent.java                                |    1 
 cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java                           |    8 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java                |   73 
 cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js                             |    5 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/other/BallClient.java                                |    6 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java                    |    5 
 cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js                                  |   19 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/LoginController.java              |   49 
 cloud-server-management/src/main/webapp/static/modular/system/tCoach/tCoach_add.js                                    |   49 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html                                     |   30 
 cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition_info.js                       |   67 +
 cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java                              |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoach/TCoach_add.html                                    |    4 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition.html                            |    2 
 cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java                                    |    5 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/TGameRecord.java                         |   69 +
 cloud-server-account/pom.xml                                                                                          |    1 
 cloud-server-management/src/main/java/com/dsh/course/entity/CoursePackageOrderStudent.java                            |   94 ++
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java         |    9 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java              |   43 
 cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePaymentVO.java                                    |    7 
 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java               |   14 
 cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackagePaymentConfigMapper.java                         |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePayDTO.java                      |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html                        |  228 +++--
 cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java                      |   21 
 60 files changed, 1,815 insertions(+), 740 deletions(-)

diff --git a/cloud-server-account/pom.xml b/cloud-server-account/pom.xml
index f88ad28..50581f7 100644
--- a/cloud-server-account/pom.xml
+++ b/cloud-server-account/pom.xml
@@ -15,7 +15,6 @@
     <description>账户</description>
     <dependencies>
         <!--日志处理-->
-
         <!--        <dependency>-->
         <!--            <groupId>com.github.binarywang</groupId>-->
         <!--            <artifactId>wx-java-pay-spring-boot-starter</artifactId>-->
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
index 17ea143..3f390b1 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
@@ -607,6 +607,7 @@
                                         Date time = sdf.parse(substring);
                                         return !time.before(lastWeekStartDate) && !time.after(lastOfDate);
                                     } catch (ParseException e) {
+                                        e.printStackTrace();
                                         return false;
                                     }
                                 })
@@ -621,6 +622,7 @@
                                         Date time = sdf.parse(record.getTimeFrame().substring(11));
                                         return !time.before(lastMonthStartDate) && !time.after(lastOfDate);
                                     } catch (ParseException e) {
+                                        e.printStackTrace();
                                         return false;
                                     }
                                 })
@@ -635,6 +637,7 @@
                                         Date time = sdf.parse(record.getTimeFrame().substring(11));
                                         return !time.before(lastYearStartDate) && !time.after(lastOfDate);
                                     } catch (ParseException e) {
+                                        e.printStackTrace();
                                         return false;
                                     }
                                 })
diff --git a/cloud-server-activity/pom.xml b/cloud-server-activity/pom.xml
index 2435023..f09891d 100644
--- a/cloud-server-activity/pom.xml
+++ b/cloud-server-activity/pom.xml
@@ -14,6 +14,11 @@
     <name>福利</name>
     <description>福利</description>
     <dependencies>
+        <dependency>
+            <groupId>org.gavaghan</groupId>
+            <artifactId>geodesy</artifactId>
+            <version>1.1.3</version>
+        </dependency>
         <!--日志处理-->
         <dependency>
             <groupId>cn.mb.cloud</groupId>
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 133becb..3458faa 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
@@ -873,15 +873,38 @@
 
                     } else if (merchandise.getUseScope() == 3) {
                         // 指定门店
-                        List<PointsMerchandiseStore> list = pmdstoService.list(new LambdaQueryWrapper<PointsMerchandiseStore>().eq(PointsMerchandiseStore::getPointsMerchandiseId, merchandise.getId()));
+                        List<PointsMerchandiseStore> list = pmdstoService.list(new LambdaQueryWrapper<PointsMerchandiseStore>()
+                                .eq(PointsMerchandiseStore::getPointsMerchandiseId, merchandise.getId()));
                         List<Integer> collect = list.stream().map(PointsMerchandiseStore::getStoreId).collect(Collectors.toList());
                         detailsResponse.setSid(collect);
                         if (collect.size() > 0) {
                             // 获取rid
-                            List<Integer> rid = stoClient.querySiteIdById(collect);
-                            detailsResponse.setRid(rid);
+//                            List<Integer> rid= stoClient.querySiteIdById(collect);
+                            //detailsResponse.setRid(rid);
+                            // todo 修改区域id 临时
+                            // 根据门店id 写死区域id 后续调整为门票指定多个区域
+                            // 以下代码均为临时代码
+                            for (Integer integer : collect) {
+                                ArrayList<Integer> list2 = new ArrayList<>();
+                                if (integer==2024){
+                                    list2.add(32);
+                                    detailsResponse.setRid(list2);
+                                }
+                                // 临时 根据门票id 指定的区域
+                                if (integer==9919){
+                                    if (pointsMerchandise.getPointsMerchandiseId()==196||pointsMerchandise.getPointsMerchandiseId()==198){
+                                        // 返回儿童区id
+                                        ArrayList<Integer> list3 = new ArrayList<>();
+                                        list3.add(44);
+                                        detailsResponse.setRid(list3);
+                                    }else {
+                                        ArrayList<Integer> list4 = new ArrayList<>();
+                                        list4.add(43);
+                                        detailsResponse.setRid(list4);
+                                    }
+                                }
+                            }
                         }
-
                     }
 
 
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
index 8340f5c..b5cb1f8 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
@@ -466,7 +466,6 @@
             if (null != map) {
                 String code = map.get("out_trade_no");
                 String trade_no = map.get("trade_no");
-
                 PaymentCompetition paymentCompetition = paymentCompetitionService.getOne(new QueryWrapper<PaymentCompetition>().eq("code", code).eq("payType", 2));
                 if (paymentCompetition.getPayStatus() == 1) {
                     paymentCompetition.setAppUserId(null);
@@ -474,7 +473,6 @@
                     paymentCompetition.setPayTime(new Date());
                     paymentCompetition.setPayOrderNo(trade_no);
                     paymentCompetitionService.updateById(paymentCompetition);
-
                     Competition competition = cttService.getById(paymentCompetition.getCompetitionId());
                     competition.setApplicantsNumber(competition.getApplicantsNumber() + 1);
                     cttService.updateById(competition);
@@ -617,18 +615,21 @@
                 wrapper.lt(Competition::getStartTime, listQuery.getTime().split(" - ")[0] + " 00:00:00");
                 wrapper.gt(Competition::getEndTime, listQuery.getTime().split(" - ")[1] + " 23:59:59");
             }
-
-            if (ToolUtil.isNotEmpty(listQuery.getRegisterCondition())) {
-                wrapper.eq(Competition::getRegisterCondition, listQuery.getRegisterCondition());
+            if(ToolUtil.isNotEmpty(listQuery.getRegisterCondition())){
+                wrapper.eq(Competition::getRegisterCondition,listQuery.getRegisterCondition());
             }
-
-            wrapper.in(Competition::getStoreId, listQuery.getIds());
-            wrapper.eq(Competition::getAuditStatus, 2);
+            // 平台查询审核通过的赛事
+            if (listQuery.getObj()==1){
+                wrapper.eq(Competition::getAuditStatus,2);
+            }
+            // 赛事审核
+            if (listQuery.getObj()==-1){
+                wrapper.ne(Competition::getAuditStatus,2);
+            }
+            wrapper.in(Competition::getStoreId,listQuery.getIds());
             wrapper.orderByDesc(Competition::getInsertTime);
-
             Page<Competition> page = cttService.page(competitionPage, wrapper);
             for (Competition record : page.getRecords()) {
-
                 // 查询当前赛事有多少人报名了
                 List<UserCompetition> competitionId = ucttService.list(new QueryWrapper<UserCompetition>()
                         .eq("competitionId", record.getId()));
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/ListQuery.java b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/ListQuery.java
index 68bb178..6e968c4 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/ListQuery.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/ListQuery.java
@@ -21,5 +21,6 @@
     private Integer state;
     private Integer registerCondition;
     private List<Integer> ids;
-
+    // 角色类型 如果是平台1的话 查询审核通过的 如果是运营商查询所有属于
+    private Integer obj;
 }
diff --git a/cloud-server-course/pom.xml b/cloud-server-course/pom.xml
index dd0d09c..5b0d712 100644
--- a/cloud-server-course/pom.xml
+++ b/cloud-server-course/pom.xml
@@ -15,6 +15,12 @@
     <description>课程</description>
     <dependencies>
         <dependency>
+            <groupId>net.sf.json-lib</groupId>
+            <artifactId>json-lib</artifactId>
+            <version>2.4</version>
+            <classifier>jdk15</classifier>
+        </dependency>
+        <dependency>
             <groupId>com.github.pagehelper</groupId>
             <artifactId>pagehelper</artifactId>
             <version>5.2.1</version>
@@ -124,6 +130,13 @@
             <version>3.23.5</version>
             <scope>compile</scope>
         </dependency>
+
+        <dependency>
+            <groupId>net.sf.json-lib</groupId>
+            <artifactId>json-lib</artifactId>
+            <version>2.4</version>
+            <classifier>jdk15</classifier>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java
index 54f63a2..0f9a839 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java
@@ -126,6 +126,9 @@
     @Autowired
     private CourseCounsumService courseCounsumService;
 
+
+    @Autowired
+    private ICoursePackageOrderStudentService orderStudentService;
     /**
      * 添加数据
      *
@@ -136,9 +139,10 @@
     public void addCancelledClasses(@RequestBody CancelledClasses cancelledClasses) {
         cancelledClassesService.save(cancelledClasses);
 
-        TCoursePackagePayment byId = coursePackagePaymentService.getById(cancelledClasses.getCoursePackagePaymentId());
+//        TCoursePackagePayment byId = coursePackagePaymentService.getById(cancelledClasses.getCoursePackagePaymentId());
+        orderStudentService.getById(cancelledClasses.getCoursePackagePaymentId());
         CourseCounsum courseCounsum = new CourseCounsum();
-        courseCounsum.setPaymentId(byId.getId());
+        courseCounsum.setPaymentId(cancelledClasses.getCoursePackagePaymentId());
         courseCounsum.setChangeType(0);
         courseCounsum.setNum(cancelledClasses.getCancelledClassesNumber());
         courseCounsum.setInsertTime(new Date());
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentConfigController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentConfigController.java
index f21af93..b1482d2 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentConfigController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentConfigController.java
@@ -55,6 +55,19 @@
     public List<CoursePackagePaymentConfig> queryCoursePackagePaymentConfigList(@RequestBody Integer coursePackageId) {
         return coursePackagePaymentConfigService.list(new QueryWrapper<CoursePackagePaymentConfig>().eq("coursePackageId", coursePackageId));
     }
+    /**
+     * 根据课时规格id获取价格配置
+     *
+     * @param
+     * @return
+     */
+    @ResponseBody
+    @PostMapping("/coursePackagePaymentConfig/queryCoursePackagePaymentConfigList1")
+    public List<CoursePackagePaymentConfig> queryCoursePackagePaymentConfigList1(@RequestBody Integer coursePackagePaymentConfigId) {
+        return coursePackagePaymentConfigService.
+                list(new QueryWrapper<CoursePackagePaymentConfig>()
+                        .eq("id", coursePackagePaymentConfigId));
+    }
 
 
     /**
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 680f6e6..42473f5 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
@@ -16,6 +16,7 @@
 import com.dsh.course.feignclient.other.StoreClient;
 import com.dsh.course.feignclient.other.model.Store;
 import com.dsh.course.mapper.CoursePackageSchedulingMapper;
+import com.dsh.course.mapper.CoursePackageStudentMapper;
 import com.dsh.course.mapper.TCoursePackageMapper;
 import com.dsh.course.model.*;
 import com.dsh.course.model.dto.DiscountJsonDto;
@@ -31,6 +32,7 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import net.sf.json.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -60,6 +62,8 @@
     @Autowired
     private TCoursePackagePaymentService packagePaymentService;
 
+    @Resource
+    private CoursePackageStudentMapper cpsMapper;
     @Autowired
     private ICoursePackageOrderService coursePackageOrderService;
 
@@ -123,6 +127,8 @@
 
     @Autowired
     private CoursePackageStudentService coursePackageStudentService;
+    @Autowired
+    private TOrderService orderService;
 
     private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm");
 
@@ -159,124 +165,31 @@
      */
     @RequestMapping("/base/coursePackagePayment/add")
     public Object addCoursePackagePayment(@RequestBody TCoursePackagePayment packagePayment) {
-        packagePayment.setInsertTime(new Date());
-        packagePayment.setInsertTime(new Date());
-        Integer studentId = packagePayment.getStudentId();
-        // 添加学员上课记录
-        CoursePackageStudent coursePackageStudent = new CoursePackageStudent();
-        TCoursePackagePayment one = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("studentId", packagePayment.getStudentId())
-                .orderByDesc("insertTime")
-                .last("LIMIT 1"));
-
-        if (one != null) {
-            Integer totalClassHours = one.getTotalClassHours();
-            Integer absencesNumber = one.getAbsencesNumber();
-            // 没有过期
-            if (one.getUseTime().after(new Date())) {
-                if (one.getLaveClassHours() - packagePayment.getClassHours() < 0) {
-                    return 5002;
-                }
-                packagePayment.setTotalClassHours(one.getTotalClassHours());
-                packagePayment.setLaveClassHours(one.getLaveClassHours() - packagePayment.getClassHours());
-                packagePayment.setAbsencesNumber(one.getAbsencesNumber());
+        //校验是否已经报满
+        Integer cpId = Integer.valueOf((int) packagePayment.getCoursePackageId());
+        Integer integer = coursePackagePaymentService.queryCountNumber(cpId);
+        TCoursePackage course = coursePackageService.getById(packagePayment.getCoursePackageId());
+        if (course.getType() != 3) {
+            if (integer + 1 > course.getMaxSubscribeNumber()) {
+                return 5001;
             }
-            packagePayment.setTotalClassHours(packagePayment.getClassHours());
-            packagePayment.setLaveClassHours(packagePayment.getClassHours());
-            packagePayment.setAbsencesNumber(one.getAbsencesNumber());
-        } else {
-            packagePayment.setTotalClassHours(packagePayment.getClassHours());
-            packagePayment.setLaveClassHours(packagePayment.getClassHours());
-            packagePayment.setAbsencesNumber(0);
         }
+        CoursePackageOrder coursePackageOrder = new CoursePackageOrder();
+        coursePackageOrder.setAppUserId(packagePayment.getAppUserId());
+        coursePackageOrder.setStudentIds(String.valueOf(packagePayment.getStudentId()));
+        coursePackageOrder.setCoursePackageId(packagePayment.getCoursePackageId());
+        coursePackageOrder.setClassHours(packagePayment.getClassHours());
+        coursePackageOrder.setOriginalPrice(packagePayment.getOriginalPrice());
+        coursePackageOrder.setCashPayment(packagePayment.getCashPayment());
+        coursePackageOrder.setPlayPaiCoin(packagePayment.getPlayPaiCoin());
+        coursePackageOrder.setPayStatus(1);
+        coursePackageOrder.setState(1);
+        coursePackageOrder.setInsertTime(new Date());
+        coursePackageOrder.setSalesName(packagePayment.getSalesName());
+        coursePackageOrderService.save(coursePackageOrder);
         // 生成排课数据
-        TCoursePackage coursePackage = tcpService.getById(packagePayment.getCoursePackageId());
-        //生成排课数据
-        try {
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            Date date = sdf1.parse(sdf.format(new Date()) + " 00:00:00");
-            List<String> list = Arrays.asList(coursePackage.getClassWeeks().split(";"));
-            String value = coursePackage.getClassStartTime();
-            String value1 = coursePackage.getClassEndTime();
+        return 200;
 
-            String[] star = value.split(",");
-            String[] end = value1.split(",");
-            for (int i = 0; i < star.length; i++) {
-                //                int index = star[i].indexOf(",");
-                //                String result = value.substring(0, index).trim();
-                String classStartTime = star[i];
-                String[] split = classStartTime.split(":");
-                //            String value1 = en;
-                int index1 = value1.indexOf(",");
-                //                String result1 = value.substring(0, index1).trim();
-                String classEndTime = end[i];
-                String[] split1 = classEndTime.split(":");
-                Calendar s = Calendar.getInstance();
-                s.setTime(date);
-                s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
-                s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
-                s.set(Calendar.MINUTE, Integer.valueOf(split[1]));
-                s.set(Calendar.SECOND, 0);
-
-                Calendar e = Calendar.getInstance();
-                e.setTime(date);
-                e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 14);
-                long timeInMillis = e.getTimeInMillis();
-
-                while (true) {
-                    int w = s.get(Calendar.DAY_OF_WEEK);
-                    WeekEnum weekEnum = WeekEnum.getWeekEnum(w);
-                    if (list.contains(weekEnum.getChineseName())) {
-                        Calendar classDate = Calendar.getInstance();
-                        classDate.setTime(s.getTime());
-                        classDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
-                        classDate.set(Calendar.MINUTE, Integer.valueOf(split[1]));
-                        classDate.set(Calendar.SECOND, 0);
-
-                        Calendar endDate = Calendar.getInstance();
-                        endDate.setTime(s.getTime());
-                        endDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0]));
-                        endDate.set(Calendar.MINUTE, Integer.valueOf(split1[1]));
-                        endDate.set(Calendar.SECOND, 0);
-
-                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                        coursePackageScheduling.setCoursePackageId(coursePackage.getId());
-                        coursePackageScheduling.setClassDate(classDate.getTime());
-                        coursePackageScheduling.setEndDate(endDate.getTime());
-                        coursePackageScheduling.setStatus(1);
-                        coursePackageSchedulingService.save(coursePackageScheduling);
-                        coursePackageStudent.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-
-                        List<CoursePackageScheduling> list1 = coursePackageSchedulingService.list(new QueryWrapper<CoursePackageScheduling>()
-                                .eq("coursePackageId", coursePackage.getId())
-                                .eq("classDate", classDate.getTime())
-                                .eq("endDate", endDate.getTime()));
-                        if (list1.size() + 1 > coursePackage.getMaxSubscribeNumber()) {
-                            // 当前课包预约人数已满
-                            return 5001;
-                        }
-                    }
-                    s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
-                    if (s.getTimeInMillis() > timeInMillis) {
-                        break;
-                    }
-                }
-            }
-        } catch (ParseException e) {
-            e.printStackTrace();
-        }
-
-        coursePackageStudent.setStudentId(packagePayment.getStudentId());
-        coursePackageStudent.setCoursePackageId(packagePayment.getCoursePackageId());
-
-
-        coursePackageStudent.setSignInOrNot(0);
-        coursePackageStudent.setReservationStatus(1);
-        coursePackageStudent.setInsertTime(new Date());
-        coursePackageStudent.setAppUserId(packagePayment.getAppUserId());
-        packagePaymentService.save(packagePayment);
-        coursePackageStudent.setCoursePackagePaymentId(packagePayment.getId());
-        return coursePackageStudentService.save(coursePackageStudent);
     }
 
     /**
@@ -286,13 +199,98 @@
      */
     @RequestMapping("/base/coursePackagePayment/changeState")
     public Object changeState(@RequestBody CoursePackagePayDTO dto) {
+        String ids = dto.getIds();
+        Long aLong = Long.valueOf(ids);
+        CoursePackageOrder byId1 = coursePackageOrderService.getById(aLong);
+        TCoursePackage byId = coursePackageService.getById(byId1.getCoursePackageId());
+        if (byId.getType()==1){
+            // 如果重复购买 累加课时
+            CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService
+                    .getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", Integer.valueOf(byId1.getStudentIds()))
+                            .eq("coursePackageId", byId1.getCoursePackageId()).eq("status", 1).eq("state", 1));
+            if (null == coursePackageOrderStudent) {
+                coursePackageOrderStudent = new CoursePackageOrderStudent();
+                coursePackageOrderStudent.setAppUserId(byId1.getAppUserId());
+                coursePackageOrderStudent.setStudentId(Integer.valueOf(byId1.getStudentIds()));
+                coursePackageOrderStudent.setCoursePackageId(byId1.getCoursePackageId());
+                coursePackageOrderStudent.setTotalClassHours(byId1.getClassHours());
+                coursePackageOrderStudent.setLaveClassHours(byId1.getClassHours());
+                coursePackageOrderStudent.setAbsencesNumber(0);
+                coursePackageOrderStudent.setStatus(1);
+                coursePackageOrderStudent.setState(1);
+                coursePackageOrderStudent.setInsertTime(new Date());
+                // 判断这个订单购买的是哪一个课时规格
+                CoursePackagePaymentConfig one1 = icppcService.getOne(new QueryWrapper<CoursePackagePaymentConfig>()
+                        .eq("coursePackageId", byId.getId())
+                        .eq("classHours", byId1.getClassHours()));
 
+                // 判断当前购买的课包有没有赠送课时
+                TCoursePackageDiscount one = tcpdService.getOne(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackageId", byId.getId())
+                        .eq("type", 4).eq("auditStatus", 2).eq("status", 1)
+                        .eq("coursePackagePaymentConfigId",one1.getId()));
+                if (one!=null){
+                    Integer giftClassHours = getGiftClassHours(one,null);
+                    coursePackageOrderStudent.setGiftClassHours(giftClassHours);
+                    coursePackageOrderStudent.setTotalClassHours(coursePackageOrderStudent.getTotalClassHours()+giftClassHours);
+                    coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours()+giftClassHours);
+                }else{
+                    coursePackageOrderStudent.setGiftClassHours(0);
+                }
+                Integer validDays = byId.getValidDays();
+                Calendar calendar = Calendar.getInstance();
+                calendar.setTime(new Date());
+                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
+                coursePackageOrderStudent.setUseTime(calendar.getTime());
+
+                coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
+                Integer studentId = Integer.valueOf(byId1.getStudentIds());
+                //开始排课
+                addPackageStudent1(byId, byId1.getAppUserId(), studentId, coursePackageOrderStudent);
+            } else {
+                Date useTime = coursePackageOrderStudent.getUseTime();
+                coursePackageOrderStudent.setTotalClassHours(coursePackageOrderStudent.getTotalClassHours() + byId1.getClassHours());
+                coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() + byId1.getClassHours());
+                Integer validDays = byId.getValidDays();
+                Calendar calendar = Calendar.getInstance();
+                calendar.setTime(useTime.compareTo(new Date()) < 0 ? new Date() : useTime);
+                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
+                coursePackageOrderStudent.setUseTime(calendar.getTime());
+                // 判断这个订单购买的是哪一个课时规格
+                CoursePackagePaymentConfig one1 = icppcService.getOne(new QueryWrapper<CoursePackagePaymentConfig>()
+                        .eq("coursePackageId", byId.getId())
+                        .eq("classHours", byId1.getClassHours()));
+                // 判断当前购买的课包有没有赠送课时
+                TCoursePackageDiscount one = tcpdService.getOne(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackageId", byId.getId())
+                        .eq("type", 4).eq("auditStatus", 2).eq("status", 1)
+                        .eq("coursePackagePaymentConfigId",one1.getId()));
+                if (one!=null){
+                    Integer giftClassHours = getGiftClassHours(one,null);
+                    coursePackageOrderStudent.setGiftClassHours(giftClassHours);
+                }else{
+                    coursePackageOrderStudent.setGiftClassHours(0);
+                }
+                // 获取常规课的有效期 计算是哪一天
+                Calendar calendar9 = Calendar.getInstance();
+                calendar9.add(Calendar.DAY_OF_MONTH, byId.getValidDays());
+                Date time = calendar9.getTime();
+                coursePackageOrderStudent.setUseTime(time);
+                coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
+                Integer studentId = Integer.valueOf(byId1.getStudentIds());
+                //中间断课,没有连续续费的情况需要重新排课
+                if (useTime.compareTo(new Date()) < 0) {
+                    addPackageStudent1(byId, byId1.getAppUserId(), studentId, coursePackageOrderStudent);
+                }
+            }
+        }
+            if(byId.getType() == 2){
+                addPackageStudent1(byId, byId1.getAppUserId(), Integer.valueOf(byId1.getStudentIds()), null);
+            }
         return packagePaymentService.changeState(dto);
     }
 
     @GetMapping("/coursePackagePayment/courseStore/{appUserId}/{coursePackageId}")
-    public List<TCoursePackagePayment> getByUserIdAndCoursePackageId(@PathVariable("appUserId") Integer appUserId, @PathVariable("coursePackageId") Integer coursePackageId) {
-        List<TCoursePackagePayment> list = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>()
+    public List<CoursePackageOrderStudent> getByUserIdAndCoursePackageId(@PathVariable("appUserId") Integer appUserId, @PathVariable("coursePackageId") Integer coursePackageId) {
+        List<CoursePackageOrderStudent> list = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
                 .eq("appUserId", appUserId)
                 .eq("coursePackageId", coursePackageId));
         return list;
@@ -307,17 +305,46 @@
         List<CoursePackagePaymentVO> res = packagePaymentService.listAll(query);
         List<CoursePackagePaymentVO> result = new ArrayList<>();
         for (CoursePackagePaymentVO re : res) {
+            // 判断这条记录有没有赠送课时
+            Integer coursePackageId = re.getCoursePackageId();
+            Integer classHours = re.getClassHours();
+            CoursePackagePaymentConfig one = icppcService.getOne(new QueryWrapper<CoursePackagePaymentConfig>()
+                    .eq("coursePackageId", coursePackageId)
+                    .eq("classHours", classHours));
+            if (one!=null){
+                TCoursePackageDiscount one1 = discountService.getOne(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackageId", coursePackageId)
+                        .eq("coursePackagePaymentConfigId", one.getId())
+                        .eq("auditStatus",2).eq("status",1).eq("type",4));
+                if (one1 == null){
+                    re.setGiftClassHours(0);
+                }else{
+                    Integer giftClassHours = getGiftClassHours(one1,re.getInsertTime());
+                    re.setGiftClassHours(giftClassHours);
+                }
+            }else{
+                re.setGiftClassHours(0);
+            }
             if (re.getCashPayment() == null) {
                 if (re.getPlayPaiCoin() != null) {
                     String value = String.valueOf(re.getPlayPaiCoin());
                     re.setCashPayment(new BigDecimal(value));
                 }
             }
-
             Store store = storeClient.queryStoreById(re.getStoreId());
             TAppUser appUser = appUserClient.queryAppUser1(re.getAppUserId());
-            Student student = studentClient.queryStudentById(re.getStudentId());
-            re.setPayStudent(student.getName());
+            String studentId = re.getStudentId();
+            String[] split = studentId.split(",");
+            StringBuilder stringBuilder = new StringBuilder("");
+
+            for (String s : split) {
+                Student student = studentClient.queryStudentById(Integer.valueOf(s));
+                stringBuilder.append(student.getName()+",");
+            }
+            String string = stringBuilder.toString();
+            if (string.length() > 0) {
+                String stringWithoutLastCharacter = string.substring(0, string.length() - 1);
+                re.setPayStudent(stringWithoutLastCharacter);
+            }
             re.setPayUser(appUser.getName());
             re.setPhone(appUser.getPhone());
             re.setStoreName(store.getName());
@@ -330,7 +357,7 @@
                         } else {
                             List<Student> students = studentClient.queryStudentListByName(query.getPayStudent());
                             for (Student student1 : students) {
-                                if (student.getName().equals(student1.getName())) {
+                                if (string.contains(student1.getName())) {
                                     result.add(re);
                                 }
                             }
@@ -338,7 +365,6 @@
                     }
                 }
             }
-
             if (re.getPayType() != null) {
                 if (re.getPayType() == 1) {
                     re.setBuyTypeName("微信支付");
@@ -366,7 +392,7 @@
                     if (discountService.list(new QueryWrapper<TCoursePackageDiscount>()
                             .eq("coursePackageId", re.getCoursePackageId()).eq("auditStatus", 2)).size() > 0) {
                         re.setBuyType(3);
-                        re.setDiscountAmount(re.getOriginalPrice().subtract(re.getPayMoney()));
+                        re.setDiscountAmount(re.getOriginalPrice().subtract(re.getCashPayment()));
                     } else {
                         re.setBuyType(2);
                     }
@@ -661,18 +687,17 @@
 
     @PostMapping("/base/coursePack/getRecord")
     public List<PurchaseRecordVo> getRecord(@RequestBody RecordTimeRequest recordTimeRequest) {
-        List<CoursePackageOrderStudent> list = new ArrayList<>();
+//        List<CoursePackageOrderStudent> list = new ArrayList<>();
         Integer[] changes = {1, 0};
-        if (recordTimeRequest.getType() == null) {
-            list = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", recordTimeRequest.getStuId()).eq("coursePackageId", recordTimeRequest.getLessionId()).orderByDesc("insertTime"));
-        } else {
-
-            list = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", recordTimeRequest.getStuId()).eq("coursePackageId", recordTimeRequest.getLessionId()).orderByDesc("insertTime"));
-        }
-        List<Integer> appUserIds = list.stream().map(CoursePackageOrderStudent::getAppUserId).collect(Collectors.toList());
+//        if (recordTimeRequest.getType() == null) {
+//            list = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", recordTimeRequest.getStuId()).eq("coursePackageId", recordTimeRequest.getLessionId()).orderByDesc("insertTime"));
+//        } else {
+//
+//            list = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", recordTimeRequest.getStuId()).eq("coursePackageId", recordTimeRequest.getLessionId()).orderByDesc("insertTime"));
+//        }
+//        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("studentId", recordTimeRequest.getStuId())
                 .eq("coursePackageId", recordTimeRequest.getLessionId())
                 .eq("state", 1)
         );
@@ -828,9 +853,6 @@
         }
         return videoVos;
     }
-
-
-
 
     @PostMapping("/base/coursePack/allPaymentCourseList")
     @ResponseBody
@@ -1092,7 +1114,6 @@
     }
 
 
-
     /**
      * 已报名课程详情
      */
@@ -1107,7 +1128,7 @@
             @ApiImplicitParam(name = "orderId", value = "订单id", dataType = "int")
 
     })
-    public ResultUtil<CourseDetailsResponse> getRegisteredData(Long coursePayId, String lon, String lat, Integer orderId) {
+    public ResultUtil<CourseDetailsResponse> getRegisteredData(Long coursePayId, String lon, String lat) {
         try {
             Integer appUserId = tokenUtil.getUserIdFormRedis();
             if (null == appUserId) {
@@ -1115,9 +1136,7 @@
             }
             CourseDetailsResponse courseDetailsResponse = packagePaymentService.queryRegisteredCourseDetails(coursePayId, appUserId, lon, lat);
 
-
-
-
+//
 //            if (orderId != null) {
 //                TOrder byId = orderService.getById(orderId);
 //                courseDetailsResponse.setAmount(byId.getPrice());
@@ -1765,9 +1784,265 @@
         return dateList.toArray(new Date[0]);
     }
 
+    public Integer getGiftClassHours(TCoursePackageDiscount one,Date insertTime){
+        if (insertTime!=null){
+            // 判断购买时间 是否满足折扣规则
+            char c = one.getContent().charAt(0);
+            String value1 = String.valueOf(c);
+            JSONObject jsonObject ;
+            if (value1.equals("[")){
+                jsonObject = JSONObject.fromObject(one.getContent()
+                        .substring(1,one.getContent().length() - 1));
+            }else{
+                jsonObject = JSONObject.fromObject(one.getContent());
+            }
+            // 赠送课时 判断当前课包有没有赠送课时
+            String weeks = jsonObject.getString("weeks");
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(insertTime);
+            // 获取星期几,星期日是1,星期一是2,以此类推
+            int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
+            // 将星期日(Calendar定义为1)转换为7
+            if (dayOfWeek == Calendar.SUNDAY) {
+                dayOfWeek = 7;
+            } else {
+                // 其他星期减一即可得到1-6的数字表示
+                dayOfWeek -= 1;
+            }
+            // todo
+            if (weeks.contains(String.valueOf(dayOfWeek))){
+                // 限时折扣判断是否在有效期
+                try {
+                    // 判断当日时间是否能享受到折扣
+                    String startTime = jsonObject.getString("startTime");
+                    String endTime = jsonObject.getString("endTime");
+
+                    // 定义时间格式
+                    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
+                    // 解析开始时间和结束时间为Date对象
+                    Date startTime1 = sdf.parse(startTime);
+                    Date endTime1 = sdf.parse(endTime);
+                    Date date1 = new Date();
+                    date1.setHours(startTime1.getHours());
+                    date1.setMinutes(startTime1.getMinutes());
+                    date1.setSeconds(startTime1.getSeconds());
+                    Date date2 = new Date();
+                    date2.setHours(endTime1.getHours());
+                    date2.setMinutes(endTime1.getMinutes());
+                    date2.setSeconds(endTime1.getSeconds());
+                    // 检查当前时间是否在开始时间和结束时间之间
+                    if (insertTime.after(date1) && insertTime.before(date2)) {
+                        System.out.println("当前时间在开始时间和结束时间之间。");
+                        String hour = jsonObject.getString("hour");
+                        return Integer.valueOf(hour);
+                    } else {
+                        System.out.println("当前时间不在开始时间和结束时间之间。");
+                        return 0;
+                    }
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        // 判断购买时间 是否满足折扣规则
+        char c = one.getContent().charAt(0);
+        String value1 = String.valueOf(c);
+        JSONObject jsonObject ;
+        if (value1.equals("[")){
+            jsonObject = JSONObject.fromObject(one.getContent()
+                    .substring(1,one.getContent().length() - 1));
+        }else{
+            jsonObject = JSONObject.fromObject(one.getContent());
+        }
+        // 赠送课时 判断当前课包有没有赠送课时
+        String weeks = jsonObject.getString("weeks");
+        // 判断当前周几 是否满足折扣规则
+        // 获取当前日期
+        LocalDate currentDate = LocalDate.now();
+        // 获取当前日期是星期几的数字表示
+        int dayOfWeekAsNumber = currentDate.getDayOfWeek().getValue();
+        if (weeks.contains(String.valueOf(dayOfWeekAsNumber))){
+            // 限时折扣判断是否在有效期
+            try {
+                // 判断当日时间是否能享受到折扣
+                String startTime = jsonObject.getString("startTime");
+                String endTime = jsonObject.getString("endTime");
+                // 获取当前时间
+                Date currentTime = new Date();
+                // 定义时间格式
+                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
+                // 解析开始时间和结束时间为Date对象
+                Date startTime1 = sdf.parse(startTime);
+                Date endTime1 = sdf.parse(endTime);
+                Date date1 = new Date();
+                date1.setHours(startTime1.getHours());
+                date1.setMinutes(startTime1.getMinutes());
+                date1.setSeconds(startTime1.getSeconds());
+                Date date2 = new Date();
+                date2.setHours(endTime1.getHours());
+                date2.setMinutes(endTime1.getMinutes());
+                date2.setSeconds(endTime1.getSeconds());
+                // 检查当前时间是否在开始时间和结束时间之间
+                if (currentTime.after(date1) && currentTime.before(date2)) {
+                    System.out.println("当前时间在开始时间和结束时间之间。");
+                    String hour = jsonObject.getString("hour");
+
+                    return Integer.valueOf(hour);
+                } else {
+                    System.out.println("当前时间不在开始时间和结束时间之间。");
+                    return 0;
+                }
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+        }
+            return 0;
+    }
+
     @Autowired
     private TCoursePackageService coursePackageService;
+    private void addPackageStudent1(TCoursePackage tCoursePackage, Integer userId, Integer sId, CoursePackageOrderStudent coursePackageOrderStudent) {
+        try {
+            //1常规 2假期 3体验
+            if (tCoursePackage.getType() == 1) {
+                //上课星期
+                String classWeeks = tCoursePackage.getClassWeeks();
+                List<Integer> week = week(classWeeks);
+                //上课时段
+                String[] split = tCoursePackage.getClassStartTime().split(",");
+                String[] split1 = tCoursePackage.getClassEndTime().split(",");
+                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+                //剩余课时
+                Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
+                //扣除课时数
+                Integer codeTime = tCoursePackage.getCodeTime();
+                //排课 本周+下周,课时不够扣则直接剩余不排课
+                Calendar calendar = Calendar.getInstance();
+                calendar.setTime(new Date());
+                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                calendar.set(Calendar.HOUR_OF_DAY, 0);
+                calendar.set(Calendar.MINUTE, 0);
+                calendar.set(Calendar.SECOND, 0);
+                int day_week = calendar.get(Calendar.DAY_OF_WEEK);
+                day_week = day_week - 1 == 0 ? 7 : day_week - 1;
+                int num = 8 - day_week + 7;
+                Date useTime = coursePackageOrderStudent.getUseTime();
 
+                for (int i = 0; i < num; i++) {
+                    Date time = calendar.getTime();
+
+                    //判断当天是否在排课星期内
+                    int day = calendar.get(Calendar.DAY_OF_WEEK);
+                    day = day - 1 == 0 ? 7 : day - 1;
+                    if (!week.contains(day)) {
+                        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                        continue;
+                    }
+
+
+                    //大于有效期不进行排课
+                    if (calendar.getTimeInMillis() >= useTime.getTime()) {
+                        break;
+                    }
+                    for (int j = 0; j < split.length; j++) {
+                        //剩余数量不足以排课
+                        if (laveClassHours.compareTo(codeTime) < 0) {
+                            break;
+                        }
+
+                        laveClassHours -= codeTime;
+
+                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
+                        coursePackageScheduling.setType(tCoursePackage.getType());
+                        coursePackageScheduling.setAppUserId(userId);
+                        coursePackageScheduling.setStudentId(sId);
+                        coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
+                        Date parse = format1.parse(format.format(time) + " " + split[j]);
+                        Date parse1 = format1.parse(format.format(time) + " " + split1[j]);
+                        coursePackageScheduling.setClassDate(parse);
+                        coursePackageScheduling.setEndDate(parse1);
+                        coursePackageScheduling.setStatus(1);
+                        coursePackageSchedulingService.save(coursePackageScheduling);
+                        CoursePackageStudent student1 = new CoursePackageStudent();
+                        student1.setAppUserId(userId);
+                        student1.setStudentId(sId);
+                        student1.setCoursePackageId(tCoursePackage.getId());
+                        student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
+                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+                        student1.setSignInOrNot(1);
+                        student1.setReservationStatus(1);
+                        student1.setInsertTime(new Date());
+                        cpsMapper.insert(student1);
+                    }
+                    //增加日期,用于判断
+                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                }
+            }
+
+            if (tCoursePackage.getType() == 2) {
+                //上课星期
+                String classWeeks = tCoursePackage.getClassWeeks();
+                List<Integer> week = week(classWeeks);
+                //上课时段
+                String[] split = tCoursePackage.getClassStartTime().split(",");
+                String[] split1 = tCoursePackage.getClassEndTime().split(",");
+                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+
+                Date startTime = tCoursePackage.getStartTime();
+                Date endTime = tCoursePackage.getEndTime();
+                //排课 本周+下周,课时不够扣则直接剩余不排课
+                Calendar calendar = Calendar.getInstance();
+                //假期开始使用当前时间为起始时间进行排课
+                calendar.setTime(startTime.getTime() > System.currentTimeMillis() ? startTime : new Date());
+                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                while (true) {
+                    Date time = calendar.getTime();
+
+                    //判断当天是否在排课星期内
+                    int day = calendar.get(Calendar.DAY_OF_WEEK);
+                    day = day - 1 == 0 ? 7 : day - 1;
+                    if (!week.contains(day)) {
+                        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                        continue;
+                    }
+
+                    //大于有效期不进行排课
+                    if (calendar.getTimeInMillis() > endTime.getTime()) {
+                        break;
+                    }
+                    for (int j = 0; j < split.length; j++) {
+                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
+                        coursePackageScheduling.setType(tCoursePackage.getType());
+                        coursePackageScheduling.setAppUserId(userId);
+                        coursePackageScheduling.setStudentId(sId);
+                        coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
+                        Date parse = format1.parse(format.format(time) + " " + split[j]);
+                        Date parse1 = format1.parse(format.format(time) + " " + split1[j]);
+                        coursePackageScheduling.setClassDate(parse);
+                        coursePackageScheduling.setEndDate(parse1);
+                        coursePackageScheduling.setStatus(1);
+                        coursePackageSchedulingService.save(coursePackageScheduling);
+                        CoursePackageStudent student1 = new CoursePackageStudent();
+                        student1.setAppUserId(userId);
+                        student1.setStudentId(sId);
+                        student1.setCoursePackageId(tCoursePackage.getId());
+                        student1.setCoursePackagePaymentId(null);
+                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+                        student1.setSignInOrNot(1);
+                        student1.setReservationStatus(1);
+                        student1.setInsertTime(new Date());
+                        cpsMapper.insert(student1);
+                    }
+                    //增加日期,用于判断
+                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
     private void addPackageStudent(Integer courseId, Integer userId, Integer sId, Long paymentId) throws ParseException {
         // 课包
         TCoursePackage tCoursePackage = coursePackageService.getById(courseId);
@@ -1903,8 +2178,6 @@
                 }
             }
         }
-
-
         // 2.0
         TCourseInfoRecord tCourseInfoRecord = new TCourseInfoRecord();
         tCourseInfoRecord.setUserId(userId);
@@ -1914,8 +2187,6 @@
         tCourseInfoRecord.setTime(new Date());
         tCourseInfoRecord.setType(2);
         appUserClient.addCourseInfoRecord(tCourseInfoRecord);
-
-
     }
 
     @ResponseBody
@@ -2083,6 +2354,12 @@
         return packagePaymentService.getById(id);
     }
 
+    @ResponseBody
+    @PostMapping("/coursePackagePayment/queryCoursePackagePaymentById1")
+    public CoursePackageOrderStudent queryCoursePackagePaymentById1(@RequestParam("id") Long id) {
+        return coursePackageOrderStudentService.getById(id);
+    }
+
 
 //    @Autowired
 //    private ICoursePackageOrderStudentService orderStudentService;
@@ -2145,6 +2422,16 @@
         System.out.println("editCoursePackagePayment1====coursePackagePayment" + coursePackagePayment);
 //        coursePackagePayment.setCoursePackageId(null);
         packagePaymentService.updateBytime(coursePackagePayment);
+    }
+
+    @ResponseBody
+    @PostMapping("/coursePackagePayment/editCoursePackagePayment2")
+    public void editCoursePackagePayment2(@RequestBody CoursePackageOrderStudent coursePackageOrderStudent) {
+        System.out.println("editCoursePackagePayment1====coursePackagePayment" + coursePackageOrderStudent);
+//        coursePackagePayment.setCoursePackageId(null);
+//        packagePaymentService.updateBytime(coursePackagePayment);
+
+        coursePackageOrderStudentService.updateById(coursePackageOrderStudent);
     }
 
 
@@ -2477,7 +2764,8 @@
         List<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.listOne(userPt);
         int sum = tCoursePackagePayments.stream().mapToInt(TCoursePackagePayment::getTotalClassHours).sum();
         int sum1 = tCoursePackagePayments.stream().mapToInt(TCoursePackagePayment::getLaveClassHours).sum();
-        map.put("allCourse", sum - sum1);
+        // 查询介绍有礼课时数量
+        map.put("allCourse",sum-sum1);
 
         //所有课包
         List<TCoursePackage> coursePackages = tcpService.list();
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 18e5477..6b9bbdc 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
@@ -174,15 +174,29 @@
     @Resource
     private AppUserClient appUserClient;
 
+
+    @Autowired
+    private ICoursePackageOrderStudentService orderStudentService;
     //获取可转移学员
     @RequestMapping("/getSelect")
     @ResponseBody
     public List<SelectDto> getSelect(@RequestParam("payId") Long payId) {
 
-        TCoursePackagePayment byId = paymentService.getById(payId);
+//        TCoursePackagePayment byId = paymentService.getById(payId);
+//
+//        List<Integer> studentIds = paymentService.getStudentIds(payId, byId.getCoursePackageId(), byId.getAppUserId());
+//        System.out.println("=========studentIds=================>" + studentIds);
 
-        List<Integer> studentIds = paymentService.getStudentIds(payId, byId.getCoursePackageId(), byId.getAppUserId());
-        System.out.println("=========studentIds=================>" + studentIds);
+        CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getById(payId);
+
+
+        List<CoursePackageOrderStudent> orderStudent = orderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("appUserId", coursePackageOrderStudent.getAppUserId()).eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId()).ne("id",payId));
+
+        List<Integer> studentIds = new ArrayList<>();
+        for (CoursePackageOrderStudent packageOrderStudent : orderStudent) {
+            studentIds.add(packageOrderStudent.getStudentId());
+        }
+
 
         if (studentIds.size() > 0) {
             List<SelectDto> selectDtos = appUserClient.getSelects(studentIds);
@@ -269,8 +283,7 @@
     }
 
 
-    @Autowired
-    private ICoursePackageOrderStudentService orderStudentService;
+
 
     @RequestMapping("/insertBack")
     @ResponseBody
@@ -416,38 +429,47 @@
         return moneyBacksck;
     }
 
+
+
+    @Autowired
+    private ICoursePackageSchedulingService schedulingService;
+
     //课程转移
     @RequestMapping("/toClass")
     @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 studentPay = paymentService.getOne
-                (new QueryWrapper<TCoursePackagePayment>()
-                        .eq("studentId", toClassDto.getToStudentId())
-                        .eq("coursePackageId", orinPay.getCoursePackageId()));
+//        System.out.println("===========到达getSelect=======" + toClassDto);
+//        TCoursePackagePayment orinPay =
+//                paymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("id", toClassDto.getId()));
+//        TCoursePackagePayment studentPay = paymentService.getOne
+//                (new QueryWrapper<TCoursePackagePayment>()
+//                        .eq("studentId", toClassDto.getToStudentId())
+//                        .eq("coursePackageId", orinPay.getCoursePackageId()));
+
+
+        CoursePackageOrderStudent orinPay = orderStudentService.getById(toClassDto.getId());
+
+        CoursePackageOrderStudent studentPay = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", orinPay.getCoursePackageId()));
+
+        TCoursePackage coursePackage = packageService.getById(orinPay.getCoursePackageId());
+
         if (studentPay != null) {
+            //转移
             System.out.println("======orinPay=====>" + orinPay);
             System.out.println("======studentPay=====>" + studentPay);
             Integer laveClassHours = orinPay.getLaveClassHours();
             Integer totalClassHours = orinPay.getTotalClassHours();
             orinPay.setTotalClassHours(0);
             orinPay.setLaveClassHours(0);
-            orinPay.setStatus(1);
+            orinPay.setStatus(5);
             orinPay.setAppUserId(null);
-            paymentService.updateById(orinPay);
-            //删除orin的排课记录
-            List<CoursePackageStudent> studentCourse1 = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId()));
-            List<Long> collect1 = studentCourse1.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
-            //拿到最后一天的排课记录
-            if (collect1.size() > 0) {
-                coursePackageSchedulingService.delete(new QueryWrapper<CoursePackageScheduling>().in("id", collect1));
-                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
-            }
+            orderStudentService.updateById(orinPay);
+
+
             CourseCounsum courseCounsum = new CourseCounsum();
             courseCounsum.setInsertTime(new Date());
             if (orinPay.getAppUserId() != studentPay.getAppUserId()) {
-                courseCounsum.setReason("课时转移");
+                courseCounsum.setReason("课时赠送");
             } else {
                 courseCounsum.setReason("课时转移");
             }
@@ -464,12 +486,12 @@
             studentPay.setAppUserId(null);
             studentPay.setLaveClassHours(lave);
             studentPay.setTotalClassHours(total);
-            paymentService.updateById(studentPay);
+            orderStudentService.updateById(studentPay);
 
             CourseCounsum courseCounsum1 = new CourseCounsum();
             courseCounsum1.setInsertTime(new Date());
             if (orinPay.getAppUserId() != studentPay.getAppUserId()) {
-                courseCounsum1.setReason("课时转移");
+                courseCounsum1.setReason("课时赠送");
             } else {
                 courseCounsum1.setReason("课时转移");
             }
@@ -479,112 +501,47 @@
             counsumService.save(courseCounsum1);
 
 
-            //排课
-            TCoursePackage tCoursePackage = packageService.getById(studentPay.getCoursePackageId());
-            String classWeeks = tCoursePackage.getClassWeeks();
-            List<Integer> week = week(classWeeks);
-
-            String[] split = tCoursePackage.getClassStartTime().split(",");
-            String[] split1 = tCoursePackage.getClassEndTime().split(",");
-            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-            // 本周周几
-
-            List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
-            List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
-            //拿到最后一天的排课记录
-            if (collect.size() > 0) {
-                coursePackageSchedulingService.delete(new QueryWrapper<CoursePackageScheduling>().in("id", collect));
-                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
-            }
-
-            Student student = studentClient.queryStudentById(toClassDto.getToStudentId());
-
-            Date today = new Date();
-
-
-            TCoursePackagePayment pay = coursePackagePaymentService.getById(studentPay.getId());
-            Integer laveClassHours2 = pay.getLaveClassHours();
-            Integer codeTime = tCoursePackage.getCodeTime();
-            Integer can = 0;
-            int count = 0;
-            // 本周周几
-//        int i = DateUtil.dayOfWeek(new Date())-1;
-
-            Date[] dates = generateDateArray(14, today);
-            can = laveClassHours2 / codeTime;
-
-            for (Date date : dates) {
-                if (count == can) {
-                    break;
-                }
-                int wei = DateUtil.dayOfWeek(date);
-                if (week.contains(wei)) {
-                    for (int i1 = 0; i1 < split.length; i1++) {
-                        if (count == can) {
-                            break;
-                        }
-                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                        coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                        Date parse = format1.parse(format.format(date) + " " + split[i1]);
-                        Date parse1 = format1.parse(format.format(date) + " " + split1[i1]);
-                        coursePackageScheduling.setClassDate(parse);
-                        coursePackageScheduling.setEndDate(parse1);
-                        coursePackageScheduling.setStatus(1);
-                        coursePackageSchedulingService.insert(coursePackageScheduling);
-                        CoursePackageStudent student1 = new CoursePackageStudent();
-                        student1.setAppUserId(student.getAppUserId());
-                        student1.setStudentId(student.getId());
-                        student1.setCoursePackageId(tCoursePackage.getId());
-                        student1.setCoursePackagePaymentId(studentPay.getId());
-                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                        student1.setSignInOrNot(1);
-                        student1.setReservationStatus(1);
-                        student1.setInsertTime(new Date());
-                        cpsMapper.insert(student1);
-                        count++;
-                    }
-                }
-            }
+            schedulingService.addNewCoursePackageScheduling(studentPay.getId(),laveClassHours);
 
 
         } else {
 
 
+
+
             Student student = studentClient.queryStudentById(toClassDto.getToStudentId());
-            TCoursePackagePayment to = new TCoursePackagePayment();
+            CoursePackageOrderStudent to = new CoursePackageOrderStudent();
             to.setStudentId(toClassDto.getToStudentId());
             to.setTotalClassHours(orinPay.getTotalClassHours());
             to.setLaveClassHours(orinPay.getLaveClassHours());
             to.setCoursePackageId(orinPay.getCoursePackageId());
             to.setState(1);
             to.setAppUserId(student.getAppUserId());
-            to.setPayStatus(2);
             to.setStatus(1);
             to.setInsertTime(new Date());
-            paymentService.save(to);
+
+            Integer validDays = coursePackage.getValidDays();
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(new Date());
+            calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
+            to.setUseTime(calendar.getTime());
+
+            orderStudentService.save(to);
 
 
             orinPay.setTotalClassHours(0);
             orinPay.setLaveClassHours(0);
             orinPay.setAppUserId(null);
-            orinPay.setStatus(1);
-            paymentService.updateById(orinPay);
+            orinPay.setStatus(6);
+            orderStudentService.updateById(orinPay);
 
 
-            //删除orin的排课记录
-            List<CoursePackageStudent> studentCourse1 = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId()));
-            List<Long> collect1 = studentCourse1.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
-            //拿到最后一天的排课记录
-            if (collect1.size() > 0) {
-                coursePackageSchedulingService.delete(new QueryWrapper<CoursePackageScheduling>().in("id", collect1));
-                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
-            }
+
 
 
             CourseCounsum courseCounsum = new CourseCounsum();
             courseCounsum.setInsertTime(new Date());
-            courseCounsum.setReason("课时转移");
+            courseCounsum.setReason("课时赠送");
             courseCounsum.setNum(orinPay.getLaveClassHours());
             courseCounsum.setChangeType(0);
             courseCounsum.setPaymentId(orinPay.getId());
@@ -593,82 +550,177 @@
 
             CourseCounsum courseCounsum1 = new CourseCounsum();
             courseCounsum1.setInsertTime(new Date());
-            courseCounsum1.setReason("课时转移");
+            courseCounsum1.setReason("课时赠送");
             courseCounsum1.setNum(orinPay.getLaveClassHours());
             courseCounsum1.setChangeType(1);
             courseCounsum1.setPaymentId(to.getId());
             counsumService.save(courseCounsum);
 
 
-            TCoursePackage tCoursePackage = packageService.getById(studentPay.getCoursePackageId());
-            String classWeeks = tCoursePackage.getClassWeeks();
-            List<Integer> week = week(classWeeks);
 
-            String[] split = tCoursePackage.getClassStartTime().split(",");
-            String[] split1 = tCoursePackage.getClassEndTime().split(",");
-            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-            // 本周周几
-
-            List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
-            List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
-            //拿到最后一天的排课记录
-            if (collect.size() > 0) {
-                coursePackageSchedulingService.delete(new QueryWrapper<CoursePackageScheduling>().in("id", collect));
-                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
-            }
+                //开始排课
+                addPackageStudent(coursePackage, to.getAppUserId(), to.getStudentId(), to);
 
 
-            Date today = new Date();
 
 
-            TCoursePackagePayment pay = coursePackagePaymentService.getById(studentPay.getId());
-            Integer laveClassHours2 = pay.getLaveClassHours();
-            Integer codeTime = tCoursePackage.getCodeTime();
-            Integer can = 0;
-            int count = 0;
-            // 本周周几
-//        int i = DateUtil.dayOfWeek(new Date())-1;
+        }
 
-            Date[] dates = generateDateArray(14, today);
-            can = laveClassHours2 / codeTime;
 
-            for (Date date : dates) {
-                if (count == can) {
-                    break;
-                }
-                int wei = DateUtil.dayOfWeek(date);
-                if (week.contains(wei)) {
-                    for (int i1 = 0; i1 < split.length; i1++) {
-                        if (count == can) {
+    }
+
+
+
+    /**
+     * 新购买课程后的排课
+     *
+     * @param userId
+     * @param sId
+     * @throws ParseException
+     */
+    private void addPackageStudent(TCoursePackage tCoursePackage, Integer userId, Integer sId, CoursePackageOrderStudent coursePackageOrderStudent) {
+        try {
+            //1常规 2假期 3体验
+            if (tCoursePackage.getType() == 1) {
+                //上课星期
+                String classWeeks = tCoursePackage.getClassWeeks();
+                List<Integer> week = week(classWeeks);
+                //上课时段
+                String[] split = tCoursePackage.getClassStartTime().split(",");
+                String[] split1 = tCoursePackage.getClassEndTime().split(",");
+                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+
+
+                //剩余课时
+                Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
+                //扣除课时数
+                Integer codeTime = tCoursePackage.getCodeTime();
+                //排课 本周+下周,课时不够扣则直接剩余不排课
+                Calendar calendar = Calendar.getInstance();
+                calendar.setTime(new Date());
+                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                calendar.set(Calendar.HOUR_OF_DAY, 0);
+                calendar.set(Calendar.MINUTE, 0);
+                calendar.set(Calendar.SECOND, 0);
+                int day_week = calendar.get(Calendar.DAY_OF_WEEK);
+                day_week = day_week - 1 == 0 ? 7 : day_week - 1;
+                int num = 8 - day_week + 7;
+                Date useTime = coursePackageOrderStudent.getUseTime();
+
+                for (int i = 0; i < num; i++) {
+                    Date time = calendar.getTime();
+
+                    //判断当天是否在排课星期内
+                    int day = calendar.get(Calendar.DAY_OF_WEEK);
+                    day = day - 1 == 0 ? 7 : day - 1;
+                    if (!week.contains(day)) {
+                        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                        continue;
+                    }
+
+
+                    //大于有效期不进行排课
+                    if (calendar.getTimeInMillis() >= useTime.getTime()) {
+                        break;
+                    }
+                    for (int j = 0; j < split.length; j++) {
+                        //剩余数量不足以排课
+                        if (laveClassHours.compareTo(codeTime) < 0) {
                             break;
                         }
+
+                        laveClassHours -= codeTime;
+
                         CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
+                        coursePackageScheduling.setType(tCoursePackage.getType());
+                        coursePackageScheduling.setAppUserId(userId);
+                        coursePackageScheduling.setStudentId(sId);
                         coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                        Date parse = format1.parse(format.format(date) + " " + split[i1]);
-                        Date parse1 = format1.parse(format.format(date) + " " + split1[i1]);
+                        Date parse = format1.parse(format.format(time) + " " + split[j]);
+                        Date parse1 = format1.parse(format.format(time) + " " + split1[j]);
                         coursePackageScheduling.setClassDate(parse);
                         coursePackageScheduling.setEndDate(parse1);
                         coursePackageScheduling.setStatus(1);
                         coursePackageSchedulingService.insert(coursePackageScheduling);
                         CoursePackageStudent student1 = new CoursePackageStudent();
-                        student1.setAppUserId(student.getAppUserId());
-                        student1.setStudentId(student.getId());
+                        student1.setAppUserId(userId);
+                        student1.setStudentId(sId);
                         student1.setCoursePackageId(tCoursePackage.getId());
-                        student1.setCoursePackagePaymentId(studentPay.getId());
+                        student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
                         student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
                         student1.setSignInOrNot(1);
                         student1.setReservationStatus(1);
                         student1.setInsertTime(new Date());
                         cpsMapper.insert(student1);
-                        count++;
                     }
+                    //增加日期,用于判断
+                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                 }
             }
 
+            if (tCoursePackage.getType() == 2) {
+                //上课星期
+                String classWeeks = tCoursePackage.getClassWeeks();
+                List<Integer> week = week(classWeeks);
+                //上课时段
+                String[] split = tCoursePackage.getClassStartTime().split(",");
+                String[] split1 = tCoursePackage.getClassEndTime().split(",");
+                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+
+                Date startTime = tCoursePackage.getStartTime();
+                Date endTime = tCoursePackage.getEndTime();
+                //排课 本周+下周,课时不够扣则直接剩余不排课
+                Calendar calendar = Calendar.getInstance();
+                //假期开始使用当前时间为起始时间进行排课
+                calendar.setTime(startTime.getTime() > System.currentTimeMillis() ? startTime : new Date());
+                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                while (true) {
+                    Date time = calendar.getTime();
+
+                    //判断当天是否在排课星期内
+                    int day = calendar.get(Calendar.DAY_OF_WEEK);
+                    day = day - 1 == 0 ? 7 : day - 1;
+                    if (!week.contains(day)) {
+                        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                        continue;
+                    }
+
+                    //大于有效期不进行排课
+                    if (calendar.getTimeInMillis() > endTime.getTime()) {
+                        break;
+                    }
+                    for (int j = 0; j < split.length; j++) {
+                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
+                        coursePackageScheduling.setType(tCoursePackage.getType());
+                        coursePackageScheduling.setAppUserId(userId);
+                        coursePackageScheduling.setStudentId(sId);
+                        coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
+                        Date parse = format1.parse(format.format(time) + " " + split[j]);
+                        Date parse1 = format1.parse(format.format(time) + " " + split1[j]);
+                        coursePackageScheduling.setClassDate(parse);
+                        coursePackageScheduling.setEndDate(parse1);
+                        coursePackageScheduling.setStatus(1);
+                        coursePackageSchedulingService.insert(coursePackageScheduling);
+                        CoursePackageStudent student1 = new CoursePackageStudent();
+                        student1.setAppUserId(userId);
+                        student1.setStudentId(sId);
+                        student1.setCoursePackageId(tCoursePackage.getId());
+                        student1.setCoursePackagePaymentId(null);
+                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+                        student1.setSignInOrNot(1);
+                        student1.setReservationStatus(1);
+                        student1.setInsertTime(new Date());
+                        cpsMapper.insert(student1);
+                    }
+                    //增加日期,用于判断
+                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
         }
-
-
     }
 
     @Resource
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageOrderStudent.java b/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageOrderStudent.java
index 0179da0..52b76d7 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageOrderStudent.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageOrderStudent.java
@@ -89,5 +89,6 @@
      * 课程有效期
      */
     @TableField("useTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date useTime;
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
index 4f957ea..96b44df 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
@@ -192,4 +192,9 @@
 
     @TableField(exist = false)
     private Integer orderId;
+    @TableField("giftClassHours")
+    private Integer giftClassHours;
+    // 所选课时规格id
+    @TableField(exist = false)
+    private Integer coursePackageConfigId;
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackagePaymentConfigMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackagePaymentConfigMapper.java
index bddf0c5..6d3ba0b 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackagePaymentConfigMapper.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackagePaymentConfigMapper.java
@@ -15,7 +15,7 @@
 public interface CoursePackagePaymentConfigMapper extends BaseMapper<CoursePackagePaymentConfig> {
     List<CoursePackagePaymentVO> listAll(@Param("query") CoursePackagePaymentQuery query);
 
-    int changeState(@Param("ids") List<Long> ids, @Param("payUserName") String payUserName, @Param("payUserId") Integer payUserId);
+    int changeState(@Param("ids") Long ids, @Param("payUserName") String payUserName, @Param("payUserId") Integer payUserId);
 
     List<RegisterOrderVO> listAllRegister(@Param("query") RegisterOrderQuery query, @Param("sTime") String sTime, @Param("eTime") String eTime, @Param("amount") BigDecimal amount);
 
diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java
index a8f7b26..1428de3 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java
@@ -50,6 +50,8 @@
      */
     List<Map<String, Object>> queryRegistrationRecord(Page<Map<String, Object>> page, @Param("coursePackageId") Integer coursePackageId,
                                                       @Param("userIds") List<Integer> userIds, @Param("studentIds") List<Integer> studentIds);
+    List<Map<String, Object>> queryRegistrationRecord1(Page<Map<String, Object>> page, @Param("coursePackageId") Integer coursePackageId,
+                                                      @Param("userIds") List<Integer> userIds, @Param("studentIds") List<Integer> studentIds);
 
 
     /**
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePayDTO.java b/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePayDTO.java
index bd6b0e5..1559c5c 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePayDTO.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePayDTO.java
@@ -9,7 +9,7 @@
  */
 @Data
 public class CoursePackagePayDTO {
-    private List<String> ids;
+    private String ids;
     private String payUserName;
     // 操作人id
     private Integer userId;
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePaymentVO.java b/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePaymentVO.java
index 55a9003..3e695f7 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePaymentVO.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePaymentVO.java
@@ -3,7 +3,9 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
+import javax.naming.PartialResultException;
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * 购课记录列表VO
@@ -43,7 +45,7 @@
     private String payUser;
     private String phone;
     // 学员id
-    private Integer studentId;
+    private String studentId;
     private String payStudent;
     private Integer payType;
     private BigDecimal originalPrice;
@@ -68,4 +70,7 @@
     private Integer buyType;
     // 当状态为手动支付时使用 用于显示手动支付时显示操作人
     private String buyTypeName;
+    private Integer classHours;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date insertTime;
 }
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 09ea539..ee39ca6 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
@@ -46,5 +46,5 @@
      * 处理剩余课时已经全部排完课后临时增加课时后添加排课
      * @param coursePackageOrderStudentId
      */
-    void addNewCoursePackageScheduling(Integer coursePackageOrderStudentId, Integer classNumber);
+    void addNewCoursePackageScheduling(Long coursePackageOrderStudentId, Integer classNumber);
 }
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 fe4934d..7b2c2fb 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
@@ -289,7 +289,7 @@
      * @param coursePackageOrderStudentId
      */
     @Override
-    public void addNewCoursePackageScheduling(Integer coursePackageOrderStudentId, Integer classNumber) {
+    public void addNewCoursePackageScheduling(Long coursePackageOrderStudentId, Integer classNumber) {
         CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getById(coursePackageOrderStudentId);
         CoursePackageScheduling coursePackageScheduling = this.getOne(new QueryWrapper<CoursePackageScheduling>()
                 .eq("appUserId", coursePackageOrderStudent.getAppUserId())
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 682ca6f..b8a4cf5 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
@@ -130,13 +130,8 @@
 
     @Override
     public int changeState(CoursePackagePayDTO dto) {
-        List<String> ids = dto.getIds();
-        List<Long> list = new ArrayList<>();
-        for (String id : ids) {
-            long value = Long.parseLong(id);
-            list.add(value);
-        }
-        return cpConfigMapper.changeState(list, dto.getPayUserName(), dto.getUserId());
+
+        return cpConfigMapper.changeState(Long.valueOf(dto.getIds()), dto.getPayUserName(), dto.getUserId());
     }
 
     @Override
@@ -526,6 +521,14 @@
         AppUser appUser = appuClient.queryAppUser(appUserId);
         CourseDetailsResponse response = new CourseDetailsResponse();
         CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(coursePayId);
+        if (coursePackageOrder==null){
+//             student = coursePackageStudentService.getById(coursePayId);
+            CoursePackageOrderStudent student = coursePackageOrderStudentService.getById(coursePayId);
+
+            coursePackageOrder = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>().eq("appUserId", student.getAppUserId()).like("studentIds", student.getStudentId()).eq("coursePackageId", student.getCoursePackageId()).orderByDesc("insertTime").last("limit 1"));
+
+        }
+
 
 
         response.setChooseHours(coursePackageOrder.getClassHours());
@@ -604,7 +607,9 @@
                     response.setVipAmount(discountMember);
                     break;
                 case 3:
-                    response.setWpGold(playPaiCoin);
+                    if (playPaiCoin!=null) {
+                        response.setWpGold(playPaiCoin);
+                    }
                     break;
             }
 
@@ -722,16 +727,16 @@
                     TCoursePackageDiscount discount = coursePackageDiscountService.getOne(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackagePaymentConfigId", coursePackagePaymentConfig.getId())
                             .eq("type", 2).eq("auditStatus", 2));
 
-                    Double continuingMember = JSON.parseObject(discount.getContent()).getDouble("continuingUser");
-                    Double vipcontinuingMember = JSON.parseObject(discount.getContent()).getDouble("continuingMember");
-
-
-                    if (coursePackagePaymentConfigVo.getPaymentPrice() > continuingMember) {
-                        coursePackagePaymentConfigVo.setPaymentPrice(continuingMember);
-                    }
-                    if (coursePackagePaymentConfigVo.getVipPrice() > vipcontinuingMember) {
-                        coursePackagePaymentConfigVo.setVipPrice(vipcontinuingMember);
-                    }
+//                    Double continuingMember = JSON.parseObject(discount.getContent()).getDouble("continuingUser");
+//                    Double vipcontinuingMember = JSON.parseObject(discount.getContent()).getDouble("continuingMember");
+//
+//
+//                    if (coursePackagePaymentConfigVo.getPaymentPrice() > continuingMember) {
+//                        coursePackagePaymentConfigVo.setPaymentPrice(continuingMember);
+//                    }
+//                    if (coursePackagePaymentConfigVo.getVipPrice() > vipcontinuingMember) {
+//                        coursePackagePaymentConfigVo.setVipPrice(vipcontinuingMember);
+//                    }
 
 
                     if (coursePackagePaymentConfigVo.getPaymentPrice() < coursePackagePaymentConfigVo.getVipPrice()) {
@@ -1204,6 +1209,7 @@
     @Override
     public List<Map<String, Object>> queryRegistrationRecord(Page<Map<String, Object>> page, QueryRegistrationRecord queryRegistrationRecord) {
         Integer coursePackageId = queryRegistrationRecord.getCoursePackageId();
+        TCoursePackage coursePackage = coursePackageService.getById(coursePackageId);
         String userName = queryRegistrationRecord.getUserName();
         List<Integer> userIds = null;
         List<Integer> studentIds = null;
@@ -1220,12 +1226,23 @@
                 studentIds = students.stream().map(Student::getId).collect(Collectors.toList());
             }
         }
-        List<Map<String, Object>> list = this.baseMapper.queryRegistrationRecord(page, coursePackageId, userIds, studentIds);
+
+        List<Map<String, Object>> list = new ArrayList<>();
+
+        if (coursePackage.getType()==1){
+      list = this.baseMapper.queryRegistrationRecord(page, coursePackageId, userIds, studentIds);}else {
+            list = this.baseMapper.queryRegistrationRecord1(page, coursePackageId, userIds, studentIds);
+        }
         for (Map<String, Object> map : list) {
 
             Long id = Long.valueOf(map.get("id").toString());
             Integer appUserId = Integer.valueOf(map.get("appUserId").toString());
-            Integer studentId = Integer.valueOf(map.get("studentId").toString());
+            Integer studentId = 0;
+            if (coursePackage.getType()==1) {
+                studentId = Integer.valueOf(map.get("studentId").toString());
+            }else {
+                studentId = Integer.valueOf(map.get("studentIds").toString());
+            }
 
             TAppUser appUser = appuClient.queryAppUser1(appUserId);
             map.put("userName", null != appUser ? appUser.getName() : "");
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 a14b9c3..953ae02 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
@@ -1220,6 +1220,8 @@
                 courseCounsum.setInsertTime(new Date());
                 courseCounsum.setReason("购买课包");
                 courseCounsumService.save(courseCounsum);
+
+
             }
             if(coursePackage.getType() == 2){
                 addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), null);
diff --git a/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml b/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml
index 3d9fe23..d5b02bd 100644
--- a/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml
@@ -12,25 +12,23 @@
         <result column="playPaiCoin" property="playPaiCoin"/>
     </resultMap>
     <update id="changeState">
-        update t_course_package_payment set
-        payStatus = 2,payUserName = #{payUserName},payType = 7,payUserId=#{payUserId}
+        update t_course_package_order set
+        payStatus = 2,payUserName = #{payUserName},payType = 7,payUserId=#{payUserId},
+        payUserType = 2
         <where>
-            <if test="ids != null and ids.size()>0">
-                AND t_course_package_payment.id IN
-                <foreach collection="ids" separator="," item="id" open="(" close=")">
-                    #{id}
-                </foreach>
+            <if test="ids!=null and ids!= ''">
+                and t_course_package_order.id = #{ids}
             </if>
         </where>
     </update>
 
     <select id="listAll" resultType="com.dsh.course.model.CoursePackagePaymentVO">
         select
-        t1.id,t1.studentId,t1.payUserType,t1.payStatus,t1.payType,t1.originalPrice,t1.userCouponId,t1.payUserId,t1.giftClassHours,t1.studentId,t1.appUserId,t1.cashPayment,t1.playPaiCoin,
-        t1.payUserName as buyTypeName,
+        t1.id,t1.payUserType,t1.payStatus,t1.payType,t1.originalPrice,t1.userCouponId,t1.payUserId,t1.studentIds as studentId,t1.appUserId,t1.cashPayment,t1.playPaiCoin,
+        t1.payUserName as buyTypeName, t1.classHours as classHours,t1.insertTime as insertTime,t1.coursePackageId as coursePackageId,
         CONCAT(t2.province,t2.city) as provinceAndCity,t2.coursePackageTypeId,t2.storeId,t2.name as coursePackage,
         t3.name as coursePackageType
-        from t_course_package_payment t1
+        from t_course_package_order t1
         left join t_course_package t2 on t1.coursePackageId = t2.id
         left join t_course_package_type t3 on t2.coursePackageTypeId = t3.id
         <where>
diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
index b8d8fcb..929e249 100644
--- a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
@@ -98,6 +98,34 @@
         END, insertTime DESC
     </select>
 
+    <select id="queryRegistrationRecord1" resultType="map">
+        select
+        CAST(id AS CHAR(20)) as id,
+        appUserId,
+        studentIds,
+        DATE_FORMAT(insertTime, '%Y-%m-%d %H:%i') as insertTime,
+        `status`
+        from t_course_package_order where state = 1
+        <if test="null != coursePackageId">
+            and coursePackageId = #{coursePackageId}
+        </if>
+        <if test="null != userIds">
+            and appUserId in
+            <foreach collection="userIds" item="item" index="index" separator="," open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="null != studentIds">
+            and studentId in
+            <foreach collection="studentIds" item="item" index="index" separator="," open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        order by
+        insertTime DESC
+    </select>
+
+
 
     <select id="queryWalkInStudentList" resultType="map">
         select
diff --git a/cloud-server-management/src/main/java/com/dsh/course/entity/CoursePackageOrderStudent.java b/cloud-server-management/src/main/java/com/dsh/course/entity/CoursePackageOrderStudent.java
new file mode 100644
index 0000000..52b76d7
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/entity/CoursePackageOrderStudent.java
@@ -0,0 +1,94 @@
+package com.dsh.course.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/11/25 11:59
+ */
+@Data
+@TableName("t_course_package_order_student")
+public class CoursePackageOrderStudent {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+    /**
+     * 用户id
+     */
+    @TableField("appUserId")
+    private Integer appUserId;
+    /**
+     * 学员id
+     */
+    @TableField("studentId")
+    private Integer studentId;
+    /**
+     * 课包id
+     */
+    @TableField("coursePackageId")
+    private Integer coursePackageId;
+    /**
+     * 总课时
+     */
+    @TableField("totalClassHours")
+    private Integer totalClassHours;
+    /**
+     * 剩余课时
+     */
+    @TableField("laveClassHours")
+    private Integer laveClassHours;
+    /**
+     * 缺课次数
+     */
+    @TableField("absencesNumber")
+    private Integer absencesNumber;
+    /**
+     * 退课课时
+     */
+    @TableField(exist = false)
+    private Integer dropoutsNumber;
+    /**
+     * 课程状态(1=正常,2=已退课)
+     */
+    @TableField("status")
+    private Integer status;
+    /**
+     * 退课时间
+     */
+    @TableField("withdrawalTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date withdrawalTime;
+    /**
+     * 退课凭证
+     */
+    @TableField("certificate")
+    private String certificate;
+    /**
+     * 状态(1=正常,2=冻结,3=删除)
+     */
+    @TableField("state")
+    private Integer state;
+    /**
+     * 添加时间
+     */
+    @TableField("insertTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date insertTime;
+    /**
+     * 赠送课时
+     */
+    @TableField("giftClassHours")
+    private Integer giftClassHours;
+    /**
+     * 课程有效期
+     */
+    @TableField("useTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date useTime;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/ListQuery.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/ListQuery.java
index e9bfbdd..16da73f 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/ListQuery.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/competition/model/ListQuery.java
@@ -22,5 +22,6 @@
     private Integer state;
     private Integer registerCondition ;
     private List<Integer> ids;
-
+    // 角色类型 如果是平台1的话 查询审核通过的 如果是运营商查询所有属于
+    private Integer obj;
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java
index 5c5d4e3..8504df7 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java
@@ -1,12 +1,14 @@
 package com.dsh.course.feignClient.course;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dsh.course.entity.CoursePackageOrderStudent;
 import com.dsh.course.feignClient.course.model.QueryRegistrationRecord;
 import com.dsh.course.feignClient.course.model.QueryWalkInStudentList;
 import com.dsh.course.feignClient.course.model.TCoursePackage;
+import com.dsh.course.feignClient.course.model.*;
 import com.dsh.course.feignClient.course.model.TCoursePackagePayment;
 import com.dsh.guns.modular.system.model.*;
-import com.dsh.guns.modular.system.model.dto.CoursePackage;
+
 import com.dsh.guns.modular.system.util.ResultUtil;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.*;
@@ -87,6 +89,10 @@
     @PostMapping("/coursePackagePayment/consumeCourse")
     ResultUtil consumeCourse(@RequestBody Integer coursePackagePaymentId);
 
+    @PostMapping("/coursePackagePayment/queryCoursePackagePaymentById1")
+    CoursePackageOrderStudent queryCoursePackagePaymentById1(@RequestParam("id")Long id);
+
+
     /**
      * 修改数据
      * @param coursePackagePayment
@@ -96,6 +102,9 @@
 
     @PostMapping("/coursePackagePayment/editCoursePackagePayment1")
     void editCoursePackagePayment1(@RequestBody TCoursePackagePayment coursePackagePayment);
+
+    @PostMapping("/coursePackagePayment/editCoursePackagePayment2")
+    void editCoursePackagePayment2(@RequestBody CoursePackageOrderStudent coursePackageOrderStudent);
 
 
     @PostMapping("/coursePackagePayment/CountqueryByClassId")
@@ -112,5 +121,6 @@
     HashMap<String, Object> courseStore(@RequestBody List<Integer> userPt);
 
     @GetMapping("/coursePackagePayment/courseStore/{appUserId}/{coursePackageId}")
-    List<TCoursePackagePayment> getByUserIdAndCoursePackageId(@PathVariable("appUserId") Integer appUserId,@PathVariable("coursePackageId") Integer coursePackageId);
+    List<CoursePackageOrderStudent> getByUserIdAndCoursePackageId
+            (@PathVariable("appUserId") Integer appUserId, @PathVariable("coursePackageId") Integer coursePackageId);
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentConfigClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentConfigClient.java
index 8318f02..1c36fca 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentConfigClient.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentConfigClient.java
@@ -37,6 +37,13 @@
      */
     @PostMapping("/coursePackagePaymentConfig/queryCoursePackagePaymentConfigList")
     List<CoursePackagePaymentConfig> queryCoursePackagePaymentConfigList(Integer coursePackageId);
+    /**
+     * 根据课包id获取价格配置
+     * @param
+     * @return
+     */
+    @PostMapping("/coursePackagePaymentConfig/queryCoursePackagePaymentConfigList1")
+    List<CoursePackagePaymentConfig> queryCoursePackagePaymentConfigList1(Integer coursePackagePaymentConfigId);
 
 
     /**
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/CoursePackageOrderStudent.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/CoursePackageOrderStudent.java
new file mode 100644
index 0000000..b5f4377
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/CoursePackageOrderStudent.java
@@ -0,0 +1,96 @@
+package com.dsh.course.feignClient.course.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 com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/11/25 11:59
+ */
+@Data
+@TableName("t_course_package_order_student")
+public class CoursePackageOrderStudent {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+    /**
+     * 用户id
+     */
+    @TableField("appUserId")
+    private Integer appUserId;
+    /**
+     * 学员id
+     */
+    @TableField("studentId")
+    private Integer studentId;
+    /**
+     * 课包id
+     */
+    @TableField("coursePackageId")
+    private Integer coursePackageId;
+    /**
+     * 总课时
+     */
+    @TableField("totalClassHours")
+    private Integer totalClassHours;
+    /**
+     * 剩余课时
+     */
+    @TableField("laveClassHours")
+    private Integer laveClassHours;
+    /**
+     * 缺课次数
+     */
+    @TableField("absencesNumber")
+    private Integer absencesNumber;
+    /**
+     * 退课课时
+     */
+    @TableField(exist = false)
+    private Integer dropoutsNumber;
+    /**
+     * 课程状态(1=正常,2=已退课)
+     */
+    @TableField("status")
+    private Integer status;
+    /**
+     * 退课时间
+     */
+    @TableField("withdrawalTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date withdrawalTime;
+    /**
+     * 退课凭证
+     */
+    @TableField("certificate")
+    private String certificate;
+    /**
+     * 状态(1=正常,2=冻结,3=删除)
+     */
+    @TableField("state")
+    private Integer state;
+    /**
+     * 添加时间
+     */
+    @TableField("insertTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date insertTime;
+    /**
+     * 赠送课时
+     */
+    @TableField("giftClassHours")
+    private Integer giftClassHours;
+    /**
+     * 课程有效期
+     */
+    @TableField("useTime")
+    private Date useTime;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/BallClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/BallClient.java
index d62b570..528b5ab 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/BallClient.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/BallClient.java
@@ -3,6 +3,8 @@
 import com.dsh.course.dto.StudentSearch;
 import com.dsh.course.dto.TStudentDto;
 import com.dsh.course.feignClient.other.model.Banner;
+import com.dsh.course.feignClient.other.model.GameDataQuery;
+import com.dsh.course.feignClient.other.model.TGameRecord;
 import com.dsh.guns.modular.system.model.*;
 import com.dsh.guns.modular.system.model.dto.BallQueryDto;
 import com.dsh.guns.modular.system.model.dto.BookingQuery;
@@ -16,6 +18,10 @@
 
 @FeignClient(value = "mb-cloud-other")
 public interface BallClient {
+
+    // 数据统计
+    @PostMapping("/student/getData")
+    List<TGameRecord> getData(@RequestBody GameDataQuery query);
     // 根据门店ids 获取游戏记录
     @PostMapping("/game/getGameByStoreIds")
     List<Integer> getGameByStoreIds(@RequestBody List<Integer> storeIds);
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/GameDataQuery.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/GameDataQuery.java
new file mode 100644
index 0000000..069ab7f
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/GameDataQuery.java
@@ -0,0 +1,9 @@
+package com.dsh.course.feignClient.other.model;
+
+import lombok.Data;
+
+@Data
+public class GameDataQuery {
+    Integer objectId;
+    Integer storeId;
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/TGameRecord.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/TGameRecord.java
new file mode 100644
index 0000000..fe8604c
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/TGameRecord.java
@@ -0,0 +1,69 @@
+package com.dsh.course.feignClient.other.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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-10-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_game_record")
+public class TGameRecord extends Model<TGameRecord> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("userId")
+    private Integer userId;
+
+    @TableField("gameId")
+    private Integer gameId;
+
+    /**
+     * 1玩湃币 2微信  3支付宝
+     */
+    @TableField("payType")
+    private Integer payType;
+
+    /**
+     * 金额
+     */
+    private BigDecimal money;
+
+    /**
+     * 0待支付 1已支付
+     */
+    private Integer status;
+
+    private String number;
+    @TableField("orderNo")
+    private String orderNo;
+
+    private Date time;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoachController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoachController.java
index 6b1d951..a84e295 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoachController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoachController.java
@@ -1,6 +1,8 @@
 package com.dsh.guns.modular.system.controller.code;
 
 
+import com.alibaba.druid.sql.visitor.functions.If;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.dsh.course.feignClient.account.CityManagerClient;
 import com.dsh.course.feignClient.account.CoachClient;
@@ -11,12 +13,10 @@
 import com.dsh.course.feignClient.account.model.CoachType;
 import com.dsh.course.feignClient.other.model.Site;
 import com.dsh.guns.config.UserExt;
-import com.dsh.guns.modular.system.model.CoachChangeStateVO;
-import com.dsh.guns.modular.system.model.CoachQuery;
-import com.dsh.guns.modular.system.model.Store;
-import com.dsh.guns.modular.system.model.TStore;
-import com.dsh.guns.modular.system.service.IStoreService;
+import com.dsh.guns.modular.system.model.*;
+import com.dsh.guns.modular.system.service.*;
 import com.dsh.guns.modular.system.util.ResultUtil;
+import org.bouncycastle.math.raw.Mod;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -41,6 +41,14 @@
     private CoachClient coachClient;
     @Autowired
     private CityManagerClient cityManagerClient;
+    @Autowired
+    private ICityService cityService;
+    @Autowired
+    private TOperatorService operatorService;
+    @Autowired
+    private TOperatorCityService operatorCityService;
+    @Autowired
+    private IUserService userService;
 
     /**
      * 跳转教练管理首页
@@ -89,15 +97,8 @@
      */
     @RequestMapping("/addCoach")
     public String addCoach(Model model) {
-        List<CityManager> province = cityManagerClient.listAll();
-        Set<String> seenNames = new HashSet<>();
-        List<CityManager> result = new ArrayList<>();
-        for (CityManager cityManager : province) {
-            if(!seenNames.contains(cityManager.getProvince())){
-                result.add(cityManager);
-                seenNames.add(cityManager.getProvince());
-            }
-        }
+        List<TCity> list1 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+        model.addAttribute("list",list1);
         Integer objectType = UserExt.getUser().getObjectType();
         Integer objectId = UserExt.getUser().getObjectId();
         CoachQuery coachQuery = new CoachQuery();
@@ -106,7 +107,6 @@
         String roleid = UserExt.getUser().getRoleid();
         model.addAttribute("role",roleid);
         model.addAttribute("data",data);
-        model.addAttribute("list",result);
         model.addAttribute("objectType",objectType);
         model.addAttribute("objectId",objectId);
         model.addAttribute("coachType",list);
@@ -119,6 +119,7 @@
     @ResponseBody
     @RequestMapping(value = "/add")
     public ResultUtil addCoach(@RequestBody Coach coach) {
+
         Integer objectId = UserExt.getUser().getObjectId();
         if (UserExt.getUser().getObjectType() == 2){
             coach.setCityManagerId(objectId);
@@ -149,6 +150,43 @@
         coachClient.changeState(vo);
         return ResultUtil.success();
     }
+    /**
+     *  根据选择的市 查询有哪些运营商管理了所选的市
+     *
+     * @return
+     */
+    @RequestMapping("/getYys")
+    @ResponseBody
+    public Object getYys(String pCode,String cCode){
+        // 先获取管理全国的运营商
+        List<TOperator> type = operatorService.list(new QueryWrapper<TOperator>().eq("type", 1));
+        // 根据所选市 查询管理了这个市的运营商
+        // 获取管理指定区域的运营商的ID 然后去重
+        List<Integer> collect = operatorCityService.list(new QueryWrapper<TOperatorCity>()).stream().map(TOperatorCity::getOperatorId)
+                .distinct().collect(Collectors.toList());
+        // 遍历 判断当前运营商是否管理了所选市
+        for (Integer integer : collect) {
+            // 查询是否管理了省
+            TOperatorCity code = operatorCityService.getOne(new QueryWrapper<TOperatorCity>().eq("code", pCode).eq("operatorId",integer));
+            if (code==null)continue;
+            List<TOperatorCity> pid = operatorCityService.list(new QueryWrapper<TOperatorCity>().eq("pid", code.getId()));
+            // 如果pid长度为0 则说明管理整个省
+            if (pid.size()==0){
+                type.add(operatorService.getOne(new QueryWrapper<TOperator>()
+                        .eq("id",integer)));
+            }
+            for (TOperatorCity tOperatorCity : pid) {
+                if (tOperatorCity.getCode().toString().equals(cCode)){
+                    TOperator id = operatorService.getOne(new QueryWrapper<TOperator>()
+                            .eq("id", tOperatorCity.getOperatorId()));
+                    if (id!=null)type.add(id);
+                    break;
+                }
+            }
+        }
+
+        return type;
+    }
 
     /**
      * 跳转修改教练页面
@@ -158,29 +196,54 @@
         CoachQuery coachQuery = new CoachQuery();
         coachQuery.setId(id);
         List<CoachSerchVO> data = coachClient.listAll(coachQuery);
-        List<CityManager> province = cityManagerClient.listAll();
-        Set<String> seenNames = new HashSet<>();
-        List<CityManager> result = new ArrayList<>();
-        List<CityManager> city = new ArrayList<>();
-        for (CityManager cityManager : province) {
-            if(!seenNames.contains(cityManager.getProvince())){
-                result.add(cityManager);
-                seenNames.add(cityManager.getProvince());
+        List<TCity> list1 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+        // 省
+        model.addAttribute("list",list1);
+        // 市
+        Integer code = cityService.getOne(new QueryWrapper<TCity>()
+                .eq("code", data.get(0).getProvinceCode())).getId();
+
+        List<TCity> pid = cityService.list(new QueryWrapper<TCity>().eq("parent_id", code));
+        model.addAttribute("city",pid);
+        // 获取所选省市下的运营商列表
+        // 先获取管理全国的运营商
+        List<TOperator> type = operatorService.list(new QueryWrapper<TOperator>().eq("type", 1));
+        // 根据所选市 查询管理了这个市的运营商
+        // 获取管理指定区域的运营商的ID 然后去重
+        List<Integer> collect = operatorCityService.list(new QueryWrapper<TOperatorCity>()).stream().map(TOperatorCity::getOperatorId)
+                .distinct().collect(Collectors.toList());
+        // 遍历 判断当前运营商是否管理了所选市
+        for (Integer integer : collect) {
+            // 查询是否管理了省
+            TOperatorCity code1 = operatorCityService.getOne(new QueryWrapper<TOperatorCity>()
+                    .eq("code", data.get(0).getProvinceCode())
+                    .eq("operatorId",integer)
+            );
+            if (code1==null)continue;
+            List<TOperatorCity> pid1 = operatorCityService.list(new QueryWrapper<TOperatorCity>().eq("pid", code1.getId()));
+            // 如果pid长度为0 则说明管理整个省
+            if (pid1.size()==0){
+                type.add(operatorService.getOne(new QueryWrapper<TOperator>()
+                        .eq("id",integer)));
             }
-            if(data.get(0).getProvince().equals(cityManager.getProvince())){
-                city.add(cityManager);
+            for (TOperatorCity tOperatorCity : pid1) {
+                if (tOperatorCity.getCode().toString().equals(data.get(0).getCityCode())){
+                    TOperator id1 = operatorService.getOne(new QueryWrapper<TOperator>()
+                            .eq("id", tOperatorCity.getOperatorId()));
+                    if (id1!=null)type.add(id1);
+                    break;
+                }
             }
         }
+
+
         Integer objectType = UserExt.getUser().getObjectType();
         Integer objectId = UserExt.getUser().getObjectId();
-        List<CityManager> accounts = cityManagerClient.getAccount(data.get(0).getCity());
         List<CoachType> list = coachTypeClient.list();
         String roleid = UserExt.getUser().getRoleid();
         model.addAttribute("role",roleid);
         model.addAttribute("data",data.get(0));
-        model.addAttribute("list",result);
-        model.addAttribute("city",city);
-        model.addAttribute("cityManagers",accounts);
+        model.addAttribute("cityManagers",type);
         model.addAttribute("objectType",objectType);
         model.addAttribute("objectId",objectId);
         model.addAttribute("coachType",list);
@@ -261,7 +324,14 @@
             Integer objectId = UserExt.getUser().getObjectId();
             coachQuery.setOperatorId(objectId);
         }
-
-        return coachClient.listAll(coachQuery);
+        List<CoachSerchVO> coachSerchVOS = coachClient.listAll(coachQuery);
+        for (CoachSerchVO coachSerchVO : coachSerchVOS) {
+            Integer cityManagerId = coachSerchVO.getCityManagerId();
+            TOperator byId = operatorService.getById(cityManagerId);
+            Integer userId = byId.getUserId();
+            User byId1 = userService.getById(userId);
+            coachSerchVO.setNameAndPhone(byId.getName()+""+byId1.getPhone());
+        }
+        return coachSerchVOS;
     }
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java
index fbac453..1f3af00 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java
@@ -16,6 +16,7 @@
 import com.dsh.guns.config.UserExt;
 import com.dsh.guns.core.base.controller.BaseController;
 import com.dsh.guns.modular.system.model.*;
+import com.dsh.course.entity.CoursePackageOrderStudent;
 import com.dsh.guns.modular.system.model.TCoursePackagePayment;
 import com.dsh.guns.modular.system.model.dto.CoursePackage;
 import com.dsh.guns.modular.system.service.ICityService;
@@ -106,7 +107,7 @@
      */
     @ResponseBody
     @PostMapping(value = "/addCoursePackagePayment/{id}")
-    public ResultUtil addCoach(@RequestBody TCoursePackagePayment tCoursePackagePayment, @PathVariable("id")Integer id) {
+    public Object addCoach(@RequestBody TCoursePackagePayment tCoursePackagePayment, @PathVariable("id")Integer id) {
         Integer objectId = UserExt.getUser().getObjectId();
         Integer objectType = UserExt.getUser().getObjectType();
         String name = UserExt.getUser().getName();
@@ -114,7 +115,6 @@
         // 获取课包id
         Integer coursePackageId = tCoursePackagePayment.getCoursePackageId();
         List<TCoursePackageDiscount> list = coursePackageDiscountClient.queryByCoursePackageId(coursePackageId);
-
         Date currentDate = new Date();
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(currentDate);
@@ -136,6 +136,7 @@
         for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) {
             char c = tCoursePackageDiscount.getContent().charAt(0);
             String value1 = String.valueOf(c);
+
             JSONObject jsonObject ;
             if (value1.equals("[")){
                 jsonObject = JSONObject.fromObject(tCoursePackageDiscount.getContent()
@@ -143,14 +144,14 @@
             }else{
                 jsonObject = JSONObject.fromObject(tCoursePackageDiscount.getContent());
             }
-            // 获取当前课包价格配置
-            Integer coursePackageId1 = tCoursePackagePayment.getCoursePackageId();
-            List<CoursePackagePaymentConfig> coursePackagePaymentConfigs = coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList(coursePackageId1);
+            // 获取所选课时的课包价格配置
+            List<CoursePackagePaymentConfig> coursePackagePaymentConfigs =
+                    coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList1
+                            (tCoursePackagePayment.getCoursePackageConfigId());
             if (coursePackagePaymentConfigs.size()!=0){
                 CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigs.get(0);
                 tCoursePackagePayment.setOriginalPrice(coursePackagePaymentConfig.getCashPayment());
                 tCoursePackagePayment.setPlayPaiCoin(coursePackagePaymentConfig.getPlayPaiCoin());
-
             }
             // 原价
             Double originalPrice = tCoursePackagePayment.getOriginalPrice();
@@ -175,7 +176,9 @@
                     break;
                 case 2:
                     // 判断当前用户是否已经购买过当前课包
-                    List<com.dsh.course.feignClient.course.model.TCoursePackagePayment> result= coursePackagePaymentClient.getByUserIdAndCoursePackageId(tCoursePackagePayment.getAppUserId(),tCoursePackagePayment.getCoursePackageId());
+                    List<CoursePackageOrderStudent> result=
+                            coursePackagePaymentClient.getByUserIdAndCoursePackageId(tCoursePackagePayment.getAppUserId(),
+                                    tCoursePackagePayment.getCoursePackageId());
                     // 已经购买了
                     if (result.size()!=0){
                         // 会员续课折扣
@@ -196,8 +199,6 @@
                     // 限时折扣判断是否在有效期
                     String timeFrameStart = jsonObject.getString("startDate");
                     String timeFrameEnd   = jsonObject.getString("endDate");
-                    SimpleDateFormat format = new SimpleDateFormat(timeFrameStart);
-                    SimpleDateFormat format1 = new SimpleDateFormat(timeFrameEnd);
                     try {
                         // 判断当日时间是否能享受到折扣
                         String startTime = jsonObject.getString("startTime");
@@ -230,8 +231,46 @@
                     }
                     break;
                 case 4:
-                    // 赠送课时
-
+                    // 赠送课时 判断当前课包有没有赠送课时
+                    String weeks = jsonObject.getString("weeks");
+                    // 判断当前周几 是否满足折扣规则
+                    Calendar calendar9 = Calendar.getInstance();
+                    int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
+                    if (weeks.contains(String.valueOf(dayOfWeek))){
+                        // 限时折扣判断是否在有效期
+                        String timeFrameStart1 = jsonObject.getString("startDate");
+                        String timeFrameEnd1   = jsonObject.getString("endDate");
+                        try {
+                            // 判断当日时间是否能享受到折扣
+                            String startTime = jsonObject.getString("startTime");
+                            String endTime = jsonObject.getString("endTime");
+                            // 获取当前时间
+                            Date currentTime = new Date();
+                            // 定义时间格式
+                            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
+                            // 解析开始时间和结束时间为Date对象
+                            Date startTime1 = sdf.parse(startTime);
+                            Date endTime1 = sdf.parse(endTime);
+                            Date date1 = new Date();
+                            date1.setHours(startTime1.getHours());
+                            date1.setMinutes(startTime1.getMinutes());
+                            date1.setSeconds(startTime1.getSeconds());
+                            Date date2 = new Date();
+                            date2.setHours(endTime1.getHours());
+                            date2.setMinutes(endTime1.getMinutes());
+                            date2.setSeconds(endTime1.getSeconds());
+                            // 检查当前时间是否在开始时间和结束时间之间
+                            if (currentTime.after(date1) && currentTime.before(date2)) {
+                                System.out.println("当前时间在开始时间和结束时间之间。");
+                                String hour = jsonObject.getString("hour");
+                                tCoursePackagePayment.setGiftClassHours(Integer.valueOf(hour));
+                            } else {
+                                System.out.println("当前时间不在开始时间和结束时间之间。");
+                            }
+                        } catch (ParseException e) {
+                            e.printStackTrace();
+                        }
+                    }
                     break;
             }
 
@@ -249,8 +288,8 @@
             BigDecimal bigDecimal = new BigDecimal(minValue);
             tCoursePackagePayment.setCashPayment(bigDecimal);
         }
-        coursePackagePaymentClient.addCoursePackagePayment(tCoursePackagePayment);
-        return ResultUtil.success("添加成功");
+
+        return coursePackagePaymentClient.addCoursePackagePayment(tCoursePackagePayment);
     }
 
     /**
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
index 29f5cb4..645571c 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
@@ -14,8 +14,11 @@
 import com.dsh.course.feignClient.course.*;
 import com.dsh.course.feignClient.course.model.TCoursePackage;
 import com.dsh.course.feignClient.course.model.TCoursePackagePayment;
+import com.dsh.course.feignClient.other.BallClient;
 import com.dsh.course.feignClient.other.SiteClient;
 import com.dsh.course.feignClient.other.StoreClient;
+import com.dsh.course.feignClient.other.model.GameDataQuery;
+import com.dsh.course.feignClient.other.model.TGameRecord;
 import com.dsh.course.model.MoneyBack;
 import com.dsh.guns.config.UserExt;
 import com.dsh.guns.core.base.controller.BaseController;
@@ -88,6 +91,8 @@
     private CoursePackageClient coursePackageClient;
     @Autowired
     private TOperatorService operatorService;
+    @Autowired
+    private BallClient ballClient;
     /**
      * 跳转到平台统计数据页面
      */
@@ -95,15 +100,9 @@
     public String index(Model model) {
         Object o = type1(null);
         model.addAttribute("data",o);
-
-
-
         // 教学统计
         HashMap<String, Object> map = appUserClient.queryUserAge();
         model.addAttribute("stuData",map);
-
-
-
         return PREFIX + "platformIncome.html";
     }
 
@@ -124,6 +123,8 @@
         IncomeQuery incomeQuery = new IncomeQuery();
         // 场地预约记录查询query
         SiteBookingQuery siteBookingQuery = new SiteBookingQuery();
+        // 智慧球场查询query
+        GameDataQuery gameDataQuery = new GameDataQuery();
         // 筛选运营商的是时候使用
         List<Integer> storeIds = new ArrayList<>();
         // 根据运营商ID 查询运营商下的所有门店
@@ -156,8 +157,8 @@
         List<VipPayment> vipPayments = vipPaymentClient.registrationList(incomeQuery);
         for (VipPayment vipPayment : vipPayments) {
             IncomeVO temp = new IncomeVO();
-            if (vipPayment.getPayStatus()==1){
-                temp.setInsertTime(vipPayment.getInsertTime());
+            if (vipPayment.getState()!=3){
+                temp.setInsertTime(vipPayment.getPayTime());
                 incomeVOS.add(temp);
             }
             if (vipPayment.getAmount() != null) {
@@ -168,14 +169,13 @@
         List<RechargeRecordsVO> rechargeRecordsVOS = financeClient.rechargeList(rechargeRecordsQuery);
         for (RechargeRecordsVO rechargeRecordsVO : rechargeRecordsVOS) {
             IncomeVO temp = new IncomeVO();
-            temp.setInsertTime(rechargeRecordsVO.getInsertTime());
+            temp.setInsertTime(rechargeRecordsVO.getPayTime());
             if (rechargeRecordsVO.getAmount() != null) {
                 temp.setAmount(rechargeRecordsVO.getAmount());
             }
-            if (rechargeRecordsVO.getPayStatus() ==1){
+            if (rechargeRecordsVO.getState() !=3){
                 incomeVOS.add(temp);
             }
-
         }
         // 报名课程记录
         List<RegisterOrderVO> registerOrderVOS = coursePackagePaymentClient.listAllRegister(query);
@@ -193,7 +193,6 @@
             }
         }
         // query权限设置 获取运营商下的门店集合
-
         if (roleType==2){
             competitionQuery.setOperatorId(UserExt.getUser().getObjectId());
         }
@@ -206,8 +205,9 @@
             if (competition.getPayType()==3 || competition.getPayType()==4){
                 continue;
             }
+            if (competition.getState()==3)continue;
             IncomeVO temp = new IncomeVO();
-            temp.setInsertTime(competition.getInsertTime());
+            temp.setInsertTime(competition.getPayTime());
             if (competition.getAmount() != null) {
                 temp.setAmount(new BigDecimal(competition.getAmount().toString()));
             }
@@ -220,9 +220,10 @@
             List<SiteBooking> siteBookings = siteClient.listAll(siteBookingQuery);
             for (SiteBooking siteBooking : siteBookings) {
                 IncomeVO temp = new IncomeVO();
-                if(siteBooking.getStatus()!=3){
+                if(siteBooking.getStatus()==0 || siteBooking.getStatus()==5){
                     continue;
                 }
+                if (siteBooking.getPayType() ==3 || siteBooking.getPayType() ==4)continue;
                 temp.setInsertTime(siteBooking.getPayTime());
                 if (siteBooking.getPayMoney() != null) {
                     temp.setAmount(new BigDecimal(siteBooking.getPayMoney().toString()));
@@ -239,6 +240,39 @@
             temp.setInsertTime(pointMerchandiseIncomeVo.getInsertTime());
             if (pointMerchandiseIncomeVo.getCash()!=null){
                 temp.setAmount(pointMerchandiseIncomeVo.getCash());
+                incomeVOS.add(temp);
+            }
+        }
+        // 平台智慧球场
+        if (storeId==null&&operatorId==null){
+            gameDataQuery.setObjectId(0);
+            List<TGameRecord> data = ballClient.getData(gameDataQuery);
+            for (TGameRecord datum : data) {
+                IncomeVO temp = new IncomeVO();
+                temp.setAmount(datum.getMoney());
+                temp.setInsertTime(datum.getTime());
+                incomeVOS.add(temp);
+            }
+        }
+        // 运营商
+        if (operatorId!=null && storeId==null){
+            gameDataQuery.setObjectId(operatorId);
+            List<TGameRecord> data = ballClient.getData(gameDataQuery);
+            for (TGameRecord datum : data) {
+                IncomeVO temp = new IncomeVO();
+                temp.setAmount(datum.getMoney());
+                temp.setInsertTime(datum.getTime());
+                incomeVOS.add(temp);
+            }
+        }
+        // 门店
+        if (storeId!=null){
+            gameDataQuery.setStoreId(storeId);
+            List<TGameRecord> data = ballClient.getData(gameDataQuery);
+            for (TGameRecord datum : data) {
+                IncomeVO temp = new IncomeVO();
+                temp.setAmount(datum.getMoney());
+                temp.setInsertTime(datum.getTime());
                 incomeVOS.add(temp);
             }
         }
@@ -1262,7 +1296,6 @@
         // 会员费
         HashMap<String, Object> map1 = appUserClient.queryFee(queryDataFee);
         Object fee1 = map1.get("fee1");
-
         map.put("fee1",fee1);
         //玩湃比
         Object fee2 = map1.get("fee2");
@@ -1272,12 +1305,9 @@
         map.put("fee3",map3.get("fee"));
         Object data = map3.get("data");
         map.put("courseData",data);
-
-
         // 赛事收入
         Double aDouble1 = competitionClient.queryFee(queryDataFee);
         map.put("fee4",aDouble1);
-
         // 订场
         if(ids.size()==0){
             ids.add(-1);
@@ -1291,15 +1321,28 @@
         if(userIds.size()==0){
             userIds.add(-1);
         }
-        vipPaymentLambdaQueryWrapper.in(SiteBooking::getAppUserId,userIds);
         vipPaymentLambdaQueryWrapper.ne(SiteBooking::getStatus,0);
+        vipPaymentLambdaQueryWrapper.ne(SiteBooking::getStatus,5);
         ArrayList<Integer> objects = new ArrayList<>();
         objects.add(1);
         objects.add(2);
         vipPaymentLambdaQueryWrapper.in(SiteBooking::getPayType,objects);
-        List<SiteBooking> list1 = siteBookingService.list(vipPaymentLambdaQueryWrapper);
+        List<SiteBooking> list1 = siteBookingService.list(new QueryWrapper<SiteBooking>()
+                .ne("status",0)
+                .ne("status",5)
+                .ne("payType",3)
+                .ne("payType",4));
         double sum = list1.stream().mapToDouble(SiteBooking::getPayMoney).sum();
-        map.put("fee5",sum);
+        // 智慧球场查询query
+        GameDataQuery gameDataQuery = new GameDataQuery();
+        gameDataQuery.setObjectId(0);
+        // 平台智慧球场
+        List<TGameRecord> data1 = ballClient.getData(gameDataQuery);
+        double sum1 = data1.stream()
+                .map(TGameRecord::getMoney) // 获取每个 TGameRecord 对象的 money 字段
+                .mapToDouble(BigDecimal::doubleValue) // 将 BigDecimal 转换为 double
+                .sum();
+        map.put("fee5",sum+sum1);
 
 
         List<Integer> collect = list1.stream().map(SiteBooking::getSiteId).collect(Collectors.toList());
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionAuditController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionAuditController.java
index 9905cf4..73c887c 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionAuditController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionAuditController.java
@@ -143,7 +143,7 @@
             ids.add(-1);
         }
         Page<Competition> page = new PageFactory<Competition>().defaultPage();
-        ListQuery listQuery = new ListQuery(page.getSize(),page.getCurrent(),provinceCode,cityCode,eventName,time,state,registerCondition,ids);
+        ListQuery listQuery = new ListQuery(page.getSize(),page.getCurrent(),provinceCode,cityCode,eventName,time,state,registerCondition,ids,0);
         Page<Competition> competitions = competitionClient.listAudit(listQuery);
         for (Competition competition : competitions.getRecords()) {
             for (TStore tStore : list) {
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java
index 7b37e15..8e9c16b 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCompetitionController.java
@@ -163,10 +163,17 @@
                 model.addAttribute("province",list4);
             }
             model.addAttribute("operator",objectId);
+            // 查询当前运营商管理了哪些门店
+            List<TStore> stores = storeService
+                    .list(new QueryWrapper<TStore>()
+                            .eq("operatorId", UserExt.getUser().getObjectId()));
+            model.addAttribute("stores",stores);
         }
         if (UserExt.getUser().getObjectType()==1) model.addAttribute("operator",0);
         TStore byId = storeService.getById(UserExt.getUser().getObjectId());
         if (UserExt.getUser().getObjectType()==3) model.addAttribute("operator",byId.getOperatorId());
+        List<TOperator> list2 = tOperatorService.list();
+        model.addAttribute("yysList",list2);
         return PREFIX + "TCompetition_add.html";
     }
 
@@ -275,7 +282,7 @@
             ids = operatorId;
         }
         Page<Competition> page = new PageFactory<Competition>().defaultPage();
-        ListQuery listQuery = new ListQuery(page.getSize(),page.getCurrent(),provinceCode,cityCode,eventName,time,state,registerCondition,ids);
+        ListQuery listQuery = new ListQuery(page.getSize(),page.getCurrent(),provinceCode,cityCode,eventName,time,state,registerCondition,ids,UserExt.getUser().getObjectType());
         Page<Competition> competitions = competitionClient.list(listQuery);
         List<Competition> records = new ArrayList<>();
 //        for (Competition competition : competitions.getRecords()) {
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java
index 4558895..381e544 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java
@@ -161,11 +161,20 @@
     @RequestMapping("/getProvinceYys")
     @ResponseBody
     public Object getProvinceYys(Integer operatorId) {
-        // 获取运营商管理的所有省
-        List<TOperatorCity> list = operatorCityService.list(new QueryWrapper<TOperatorCity>().eq("operatorId", operatorId)
-                .eq("pid", 0));
+        // 判断当前运营商是管理全国还是指定区域
+        TOperator byId = tOperatorService.getById(operatorId);
+        // 说明是管理全国
+        if (byId.getType()==1){
+            List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+            return list;
+        }else{
+            // 获取运营商管理的所有省
+            List<TOperatorCity> list = operatorCityService.list(new QueryWrapper<TOperatorCity>().eq("operatorId", operatorId)
+                    .eq("pid", 0));
+            return list;
+        }
 
-        return list;
+
     }
     // 运营商根据省筛选市区
     @RequestMapping("/getCityYys")
@@ -437,8 +446,6 @@
     @ResponseBody
     public Object list(TStore tStore,String time,String userName,String userPhone,String ids,Integer type,Integer yyId,String lat,String lon,String pCode1,String cCode1) {
         try {
-
-
             if(yyId==null || type==1){
                 yyId=0;
             }
@@ -522,7 +529,7 @@
             if (UserExt.getUser().getObjectType()==2){
                 tStore.setOperatorId(UserExt.getUser().getObjectId());
             }
-            storeService.save(tStore);
+
             user.setObjectId(tStore.getId());
             userService.updateById(user);
             ArrayList<StoreConfig> storeConfigs = new ArrayList<>();
@@ -535,19 +542,6 @@
                 storeConfigs.add(storeConfig);
             }
             storeConfigService.saveBatch(storeConfigs);
-            // 添加场地
-            TSite tSite = new TSite();
-            tSite.setName(tStore.getName());
-            tSite.setStoreId(tStore.getId());
-            tSite.setSign(1);
-            siteService.save(tSite);
-
-            HashMap<String, String> mapSite = new HashMap<>();
-            mapSite.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
-            mapSite.put("name",tStore.getName());
-            mapSite.put("space_id",tStore.getId().toString());
-            mapSite.put("area_id",tSite.getId().toString());
-            HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/addSpaceArea", mapSite);
             // 添加门店
             HashMap<String, String> map1 = new HashMap<>();
             map1.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
@@ -562,24 +556,31 @@
             map1.put("remark",tStore.getIntroduce());
             map1.put("lat",tStore.getLat());
             map1.put("lng",tStore.getLon());
-            map1.put("space_id",tStore.getId().toString());
             String result = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/addSpace", map1);
             System.out.println(result);
-
-
-
-            for (String s : tStore.getIds().split(",")) {
-                HashMap<String, String> map = new HashMap<>();
-                map.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
-                map.put("space_id",tStore.getId()+"");
-                map.put("device_id",s);
-                map.put("region_id",tSite.getId().toString());
-                // 添加门禁
-                String s1 = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/addDevice", map);
-                System.out.println(s1);
-            }
-
-
+            JSONObject jsonObject = JSONObject.parseObject(result);
+            JSONObject data = jsonObject.getJSONObject("data");
+            String space_id = data.getString("space_id");
+            Integer integer = Integer.valueOf(space_id);
+            tStore.setId(integer);
+            storeService.save(tStore);
+            System.err.println(tStore);
+//            HashMap<String, String> mapSite = new HashMap<>();
+//            mapSite.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
+//            mapSite.put("name",tStore.getName());
+//            mapSite.put("space_id",tStore.getId().toString());
+//            mapSite.put("area_id",tSite.getId().toString());
+//            HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/addSpaceArea", mapSite);
+//            for (String s : tStore.getIds().split(",")) {
+//                HashMap<String, String> map = new HashMap<>();
+//                map.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
+//                map.put("space_id",tStore.getId()+"");
+//                map.put("device_id",s);
+//                map.put("region_id",tSite.getId().toString());
+//                // 添加门禁
+//                String s1 = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/addDevice", map);
+//                System.out.println(s1);
+//            }
             return new SuccessTip<>();
         }catch (Exception e){
             e.printStackTrace();
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
index 31a6afe..90d491e 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
@@ -472,19 +472,22 @@
         site.setInsertTime(new Date());
         site.setState(1);
         site.setOperatorId(UserExt.getUser().getObjectId());
-        Integer integer1 = siteClient.addSite(site);
+
 
         // 添加场地
         HashMap<String, String> map = new HashMap<>();
         map.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
         map.put("name",site.getName());
         map.put("space_id",store.getId().toString());
-        map.put("area_id",integer1.toString());
         String s = HttpRequestUtil.postRequest
                 ("https://try.daowepark.com/v7/user_api/general/addSpaceArea", map);
         // 添加门禁
         JSONObject jsonObject = JSONObject.parseObject(s);
         JSONObject data = jsonObject.getJSONObject("data");
+        String area_id = data.getString("area_id");
+        Integer integer = Integer.valueOf(area_id);
+        site.setId(integer);
+        Integer integer1 = siteClient.addSite(site);
 //        Integer integer = Integer.valueOf(spaceId);
         if(StringUtils.hasLength( site.getIds())) {
             for (String s1 : site.getIds().split(",")) {
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/LoginController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/LoginController.java
index 2b8a8d2..8890d96 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/LoginController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/LoginController.java
@@ -80,26 +80,26 @@
     public String updatePassword(Model model) {
         return "/password.html" ;
     }
-    @Autowired
-    private RedisUtil redisUtil;
-    /**
-     * 点击登录执行的动作
-     */
-    @RequestMapping(value = "/updatePassword", method = RequestMethod.POST)
-    public Object loginVali(String username, String password,String code) {
-
-        User user = userService.getByAccount(username);
-        if (user==null)return "用户不存在";
-        password = AESUtils.decrypt(password);
-        String s = MD5.md5(password);
-        if(user.getPassword().equals(s))return "新密码和旧密码一致";
-        //验证短信验证码
-        if(ToolUtil.isEmpty(code))return "无效的验证码";
-        String value = redisUtil.getValue(user.getPhone());
-        if(ToolUtil.isEmpty(value) || !code.equals(value))return "手机验证码不正确";
-        user.setPassword(s);
-        return "修改成功!";
-    }
+//    @Autowired
+//    private RedisUtil redisUtil;
+//    /**
+//     * 点击登录执行的动作
+//     */
+//    @RequestMapping(value = "/updatePassword", method = RequestMethod.POST)
+//    public Object loginVali(String username, String password,String code) {
+//
+//        User user = userService.getByAccount(username);
+//        if (user==null)return "用户不存在";
+//        password = AESUtils.decrypt(password);
+//        String s = MD5.md5(password);
+//        if(user.getPassword().equals(s))return "新密码和旧密码一致";
+//        //验证短信验证码
+//        if(ToolUtil.isEmpty(code))return "无效的验证码";
+//        String value = redisUtil.getValue(user.getPhone());
+//        if(ToolUtil.isEmpty(value) || !code.equals(value))return "手机验证码不正确";
+//        user.setPassword(s);
+//        return "修改成功!";
+//    }
     /**
      * 跳转到主页
      */
@@ -227,14 +227,7 @@
             f++;
             loginFailures.put(username, f);
         }
-        if (KaptchaUtil.getKaptchaOnOff()) {
-            String kaptcha = super.getPara("kaptcha").trim();
-            String code = (String) super.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
-            if (Objects.isNull(kaptcha) || !kaptcha.equalsIgnoreCase(code)) {
-                model.addAttribute("tips", "验证码错误");
-                return "/login.html";
-            }
-        }
+
 //        if (f > 5 && (System.currentTimeMillis() - t) <= (30 * 60 * 1000)) {
 //            model.addAttribute("tips", "登录次数过多,请等30分钟再试!");
 //            return "/login.html";
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
index 3e8d1a9..6b15485 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
@@ -698,15 +698,15 @@
 
         List<SelectDto>  selectDtos =  appUserClient.giftSelect(giftSearchDto);
         // 只查询当前用户下 同时也报名了该课程的学员
-        for (SelectDto selectDto : selectDtos) {
-            // 获取课包id
-            TCoursePackagePayment tCoursePackagePayment = coursePackagePaymentClient.queryCoursePackagePaymentById(giftSearchDto.getId());
-
-            Integer coursePackageId = tCoursePackagePayment.getCoursePackageId();
-            // 学员id 拿到学员id 判断当前学员是否报名了这门课程
-            Long id = selectDto.getId();
-            //
-        }
+//        for (SelectDto selectDto : selectDtos) {
+//            // 获取课包id
+//            TCoursePackagePayment tCoursePackagePayment = coursePackagePaymentClient.queryCoursePackagePaymentById(giftSearchDto.getId());
+//
+//            Integer coursePackageId = tCoursePackagePayment.getCoursePackageId();
+//            // 学员id 拿到学员id 判断当前学员是否报名了这门课程
+//            Long id = selectDto.getId();
+//            //
+//        }
         Map<String,List<SelectDto>> map = new HashMap<>();
         map.put("options",selectDtos);
 //        Map<String,List<SelectDto>> map = new HashMap<>();
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePayDTO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePayDTO.java
index f096587..28b00b3 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePayDTO.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePayDTO.java
@@ -9,7 +9,7 @@
  */
 @Data
 public class CoursePackagePayDTO {
-    private List<String> ids;
+    private String ids;
     private String payUserName;
     // 操作人id
     private Integer userId;
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePaymentVO.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePaymentVO.java
index be14510..a24303a 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePaymentVO.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePaymentVO.java
@@ -45,7 +45,7 @@
     private String payUser;
     private String phone;
     // 学员id
-    private Integer studentId;
+    private String studentId;
     private String payStudent;
     private Integer payType;
 
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java
index b4f7fe9..f6bfdc0 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java
@@ -164,7 +164,8 @@
      */
     @TableField("salesName")
     private String salesName;
-
+    @TableField("giftClassHours")
+    private Integer giftClassHours;
 
     private String studentName;
     private String province;
@@ -173,4 +174,6 @@
     private Integer hasHours;
     private BigDecimal laveCashPayment;
     private BigDecimal cashPayment1;
+    // 所选课时规格id
+    private Integer coursePackageConfigId;
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStore.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStore.java
index 8adf9ff..6b71bf1 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStore.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TStore.java
@@ -12,7 +12,7 @@
 @TableName("t_store")
 @Data
 public class TStore {
-    @TableId(type = IdType.AUTO)
+    @TableId(type = IdType.INPUT)
     private Integer id;
     @TableField("name")
     private String name;
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java
index 5d58749..f8034c5 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java
@@ -4,6 +4,7 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dsh.course.entity.CoursePackageOrderStudent;
 import com.dsh.course.feignClient.course.*;
 import com.dsh.course.feignClient.course.model.*;
 import com.dsh.guns.config.UserExt;
@@ -548,48 +549,53 @@
     @Override
     public ResultUtil cancellationRecord(Long id, String cancelClasses, Integer deductClassHour) {
 //        CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingClient.queryCoursePackageSchedulingById(id);
-        List<Long> integers = new ArrayList<>();
+
         List<CoursePackageScheduling> coursePackageSchedulings =  coursePackageSchedulingClient.queryCoursePackageSchedulingsById(id);
+        List<Long> integers = new ArrayList<>();
+        for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) {
+            integers.add(coursePackageScheduling.getId());
+            coursePackageScheduling.setCancelClasses(cancelClasses);
+            coursePackageScheduling.setDeductClassHour(deductClassHour);
+        }
+
+
 //        for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) {
+
 //        if(coursePackageScheduling.getStatus() == 1 || coursePackageScheduling.getStatus() == 4){
 //            return ResultUtil.error("不能添加消课凭证");
 //        }
 //        coursePackageScheduling.setCancelClasses(cancelClasses);
 //        coursePackageScheduling.setDeductClassHour(deductClassHour);
+        coursePackageSchedulingClient.editCoursePackageScheduling(coursePackageSchedulings);
+
         List<CoursePackageStudent> coursePackageStudents = coursePackageStudentClient.queryByCoursePackageSchedulingId(integers);
         for (CoursePackageStudent coursePackageStudent : coursePackageStudents) {
-            for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) {
-                if (coursePackageStudent.getSignInOrNot()==2){
-                    break;
-                }
-                integers.add(coursePackageScheduling.getId());
-                coursePackageScheduling.setCancelClasses(cancelClasses);
-                coursePackageScheduling.setDeductClassHour(deductClassHour);
-            }
-
-            if(coursePackageStudent.getReservationStatus() == 0){
+            if(coursePackageStudent.getSignInOrNot() == 2){
                 continue;
             }
-            TCoursePackagePayment tCoursePackagePayment = coursePackagePaymentClient.queryCoursePackagePaymentById(coursePackageStudent.getCoursePackagePaymentId());
+//            TCoursePackagePayment tCoursePackagePayment = coursePackagePaymentClient.queryCoursePackagePaymentById(coursePackageStudent.getCoursePackagePaymentId());
+
+            CoursePackageOrderStudent coursePackageOrderStudent = coursePackagePaymentClient.queryCoursePackagePaymentById1(coursePackageStudent.getCoursePackagePaymentId());
 
             if (deductClassHour!=null) {
-                if (tCoursePackagePayment.getLaveClassHours() - deductClassHour < 0) {
+                if (coursePackageOrderStudent.getLaveClassHours() - deductClassHour < 0) {
                     coursePackageStudentClient.editCoursePackageStudent(coursePackageStudent);
                     continue;
                 }
-                tCoursePackagePayment.setLaveClassHours(tCoursePackagePayment.getLaveClassHours() - deductClassHour);
+                coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() - deductClassHour);
             }
 
             if(coursePackageStudent.getReservationStatus() == 0){
-                tCoursePackagePayment.setAbsencesNumber(tCoursePackagePayment.getAbsencesNumber() + 1);
+                coursePackageOrderStudent.setAbsencesNumber(coursePackageOrderStudent.getAbsencesNumber() + 1);
             }
-            System.out.println("====tCoursePackagePayment====="+tCoursePackagePayment);
-            coursePackagePaymentClient.editCoursePackagePayment1(tCoursePackagePayment);
+            System.out.println("====tCoursePackagePayment====="+coursePackageOrderStudent);
+            coursePackagePaymentClient.editCoursePackagePayment2(coursePackageOrderStudent);
+
 
             CancelledClasses cancelledClasses = new CancelledClasses();
             cancelledClasses.setType(1);
             cancelledClasses.setCoursePackageId(coursePackageStudent.getCoursePackageId());
-            cancelledClasses.setCoursePackagePaymentId(coursePackageStudent.getCoursePackagePaymentId());
+            cancelledClasses.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
             cancelledClasses.setCoursePackageSchedulingId(coursePackageStudent.getCoursePackageSchedulingId());
             cancelledClasses.setVoucher(cancelClasses);
             if (deductClassHour!=null) {
@@ -603,7 +609,6 @@
 
 
         }
-        coursePackageSchedulingClient.editCoursePackageScheduling(coursePackageSchedulings);
 //        }
 
         return ResultUtil.success();
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/advertisement/advertisement_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/advertisement/advertisement_edit.html
index 999a7be..3f374b1 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/advertisement/advertisement_edit.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/advertisement/advertisement_edit.html
@@ -172,6 +172,9 @@
             $("#t1").val("")
             $("#t2").val("")
             $("#t3").val("")
+            $("#page").val("")
+            $("#type").val("")
+            $("#pageId").val("")
         }else {
             $("#t1").show()
             $("#t2").show()
@@ -197,11 +200,15 @@
 
 
     function updateOne(e) {
-        console.log("看看选择页面")
         console.log($('#page option:selected').text())
-        if ($('#page option:selected').text()=="门店列表"){
+        var page= $('#page option:selected').text();
+        if (page=="门店列表" || page=="主页" || page=="充值中心"){
             $("#t3").hide();
             $("#t2").hide();
+            $("#t2").val("")
+            $("#t3").val("")
+            $("#type").val("")
+            $("#pageId").val("")
         }
         var oneId=$(e).val();
         var ajax = new $ax(Feng.ctxPath + "/tShop/typeChangeOne", function(data){
@@ -216,12 +223,15 @@
                 console.log("=-======0000")
                 $("#t2").val("")
                 $("#t2").hide()
+                $("#type").val("")
 
             }
         });
         if (oneId==2 || oneId==25|| oneId==27){
             $("#t3").val("")
             $("#t3").hide()
+
+            $("#pageId").val("")
         }
         ajax.set("id",oneId);
         ajax.start();
@@ -246,6 +256,7 @@
         if (oneId!="详情"&&oneId!="指定商品"&&oneId!="指定折扣"){
             $("#t3").hide()
             $("#t3").val("")
+            $("#pageId").val("")
 
         }else{
             $("#t3").show()
@@ -258,17 +269,32 @@
         }
     }
     window.onload = function() {
+        if ($('#model option:selected').text()=="不跳转"){
+            $("#t1").hide();
+            $("#t2").hide();
+            $("#t3").hide();
+            $("#page").val("")
+            $("#type").val("")
+            $("#pageId").val("")
+        }
+
         var temp = $("#turnId").val();
         var res= document.getElementById("imgPX");
         res.innerHTML ="推荐像素:780x472px";
         if (temp==""){
             $("#t3").hide();
+            $("#t3").val("")
+            $("#pageId").val("")
         }
         // 查看跳转页面 有没有跳转类型
         var page = $('#page option:selected').text();
         if (page=="门店列表" || page=="主页" || page=="充值中心" ){
             $("#t2").hide();
             $("#t3").hide();
+            $("#t2").val("")
+            $("#t3").val("")
+            $("#type").val("")
+            $("#pageId").val("")
         }
     }
 </script>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html
index ccde8d9..a6007b2 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/dataStatistics/platformIncome.html
@@ -61,13 +61,11 @@
                         <div id="div2" class='table1' onclick="getContent(2)" style="border-right: 1px solid #333;">运营统计</div>
                         <div id="div3" class='table1' onclick="getContent(3)" style="border-right: 1px solid #333;">教学统计</div>
                     </div>
-
-
                     <div class="row" id="content1" style="margin-left: 100px;">
                         <div class="col-sm-11">
                             <div class="form-group">
                                 <div class="col-sm-10">
-                                    <h2>营收数据1</h2>
+                                    <h2>营收数据</h2>
                                     </br>
                                     <div id = "money1" style="width: 1500px" >
                                         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span id="totalIncome">总营收:</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -258,6 +256,14 @@
 <script src="${ctxPath}/modular/system/dataStatistics/echarts.min.js"></script>
 <script src="${ctxPath}/static/js/plugins/switchery/switchery.js"></script>
 <script>
+    function search1() {
+        var time =  $("#beginTime").val();
+        var ajax9 = new $ax(Feng.ctxPath + "/data/type1", function(data){
+
+        });
+        ajax9.set("time",time);
+        ajax9.start();
+    }
     var ans = [];
     var weekX = ["1周","2周","3周","4周"];
     var monthX = ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"];
@@ -401,8 +407,6 @@
         var myChart1 = echarts.init(document.getElementById('refund'));
 
         var myChart7 = echarts.init(document.getElementById('courseData'));
-
-
         var ajax3 = new $ax(Feng.ctxPath + "/data/backPt", function(data){
             $("#back1").text(data.thisYear);
             $("#back2").text(data.thisMonth);
@@ -546,63 +550,6 @@
         ajax4.start();
 
 
-
-
-
-
-        option7  = {
-            tooltip: {
-                trigger: 'axis'
-            },
-            legend: {
-                data: ['年度耗课数量', '月度耗课数量', '周度耗课数量', '日度耗课数量']
-            },
-            grid: {
-                left: '3%',
-                right: '4%',
-                bottom: '3%',
-                containLabel: true
-            },
-            toolbox: {
-                feature: {
-                    saveAsImage: {}
-                }
-            },
-            xAxis: {
-                type: 'category',
-                boundaryGap: false,
-                data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
-            },
-            yAxis: {
-                type: 'value'
-            },
-            series: [
-                {
-                    name: '年度耗课数量',
-                    type: 'line',
-                    stack: 'Total',
-                    data: [120, 132, 101, 134, 90, 230, 160, 190, 410, 330, 210, 330]
-                },
-                {
-                    name: '月度耗课数量',
-                    type: 'line',
-                    stack: 'Total',
-                    data: [220, 182, 191, 234, 290, 330, 310, 190, 210, 330, 410, 160]
-                },
-                {
-                    name: '周度耗课数量',
-                    type: 'line',
-                    stack: 'Total',
-                    data: [150, 232, 201, 154, 190, 330, 410, 160, 210, 195, 210, 188]
-                },
-                {
-                    name: '日度耗课数量',
-                    type: 'line',
-                    stack: 'Total',
-                    data: [320, 332, 301, 334, 390, 330, 320, 10, 195, 145, 188, 160]
-                }
-            ]
-        };
         myChart.on('legendselectchanged', obj => {
             var options = myChart.getOption()
             //这里是选择切换什么样的x轴,那么他会进行对Y值的切换
@@ -960,13 +907,9 @@
             }
             myChart6.setOption(options, true)
         });
-
-
         var ajax2 = new $ax(Feng.ctxPath + "/data/stuPt", function(data){
             console.log(data)
-
             $("#allUser").text(data.allUser)
-
             option6  = {
                 tooltip: {
                     trigger: 'axis'
@@ -1032,39 +975,10 @@
         });
         ajax2.start()
         myChart6.setOption(option6);
-    }
 
-
-    function ptCourse() {
-        console.log("调用")
-        var myChart7 = echarts.init(document.getElementById('courseData'));
-        myChart7.on('legendselectchanged', obj => {
-            var options = myChart7.getOption()
-            //这里是选择切换什么样的x轴,那么他会进行对Y值的切换
-            console.log("看看选择")
-            console.log(obj.name)
-            if (obj.name == '年度耗课数量') {
-                console.log("看看年度轴")
-                options.xAxis[0].data = yearX
-                console.log(yearX)
-            } else if (obj.name == '月度耗课数量') {
-                console.log("看看月度轴")
-                options.xAxis[0].data = monthX
-                console.log(monthX)
-            }else if (obj.name == '周度耗课数量') {
-                options.xAxis[0].data = ["1周","2周","3周","4周"]
-            }else if (obj.name == '日度耗课数量') {
-                console.log("看看日度轴")
-                options.xAxis[0].data = dataX
-                console.log(dataX)
-            }
-            myChart7.setOption(options, true)
-        });
         var ajax2 = new $ax(Feng.ctxPath + "/data/coursePt", function(data){
             console.log(data)
-
             $("#allHour").text(data.allHour)
-
             option7  = {
                 tooltip: {
                     trigger: 'axis'
@@ -1117,7 +1031,7 @@
                         name: '周度耗课数',
                         type: 'line',
                         stack: 'Total',
-                        data: [data.count,data.count1,data.count2,data.count3]
+                        data: data.weekData
                     },
                     {
                         name: '日度耗课数',
@@ -1128,6 +1042,128 @@
                 ]
             };
         });
+        console.log("调用")
+        var myChart7 = echarts.init(document.getElementById('courseData'));
+        myChart7.on('legendselectchanged', obj => {
+            var options = myChart7.getOption()
+            //这里是选择切换什么样的x轴,那么他会进行对Y值的切换
+            console.log("看看选择")
+            console.log(obj.name)
+            if (obj.name == '年度耗课数') {
+                console.log("看看年度轴")
+                options.xAxis[0].data = yearX
+                console.log(yearX)
+            } else if (obj.name == '月度耗课数') {
+                console.log("看看月度轴")
+                options.xAxis[0].data = monthX
+                console.log(monthX)
+            }else if (obj.name == '周度耗课数') {
+                options.xAxis[0].data = ["1周","2周","3周","4周"]
+            }else if (obj.name == '日度耗课数') {
+                console.log("看看日度轴")
+                options.xAxis[0].data = dataX
+                console.log(dataX)
+            }
+            myChart7.setOption(options, true)
+        });
+        ajax2.start()
+        myChart7.setOption(option7);
+    }
+
+    function ptCourse() {
+        var ajax2 = new $ax(Feng.ctxPath + "/data/coursePt", function(data){
+
+            $("#allHour").text(data.allHour)
+            console.log("周度")
+            console.log(data.weekData)
+            option7  = {
+                tooltip: {
+                    trigger: 'axis'
+                },
+                legend: {
+                    data: ['年度耗课数', '月度耗课数', '周度耗课数', '日度耗课数'],
+                    icon: 'stack',
+                    selectedMode: 'single', // 单选
+                    selected: {
+                        年度耗课数: true,
+                        月度耗课数: false,
+                        周度耗课数: false,
+                        日度耗课数: false
+                    },
+                },
+                grid: {
+                    left: '3%',
+                    right: '4%',
+                    bottom: '3%',
+                    containLabel: true
+                },
+                toolbox: {
+                    feature: {
+                        saveAsImage: {}
+                    }
+                },
+                xAxis: {
+                    type: 'category',
+                    boundaryGap: false,
+                    data: yearX
+                },
+                yAxis: {
+                    type: 'value'
+                },
+                series: [
+                    {
+                        name: '年度耗课数',
+                        type: 'line',
+                        stack: 'Total',
+                        data: data.yearData
+                    },
+                    {
+                        name: '月度耗课数',
+                        type: 'line',
+                        stack: 'Total',
+                        data: data.monthData
+                    },
+                    {
+                        name: '周度耗课数',
+                        type: 'line',
+                        stack: 'Total',
+                        data: data.weekData
+                    },
+                    {
+                        name: '日度耗课数',
+                        type: 'line',
+                        stack: 'Total',
+                        data: data.dayData
+                    }
+                ]
+            };
+        });
+        console.log("调用")
+        var myChart7 = echarts.init(document.getElementById('courseData'));
+        myChart7.on('legendselectchanged', obj => {
+            var options = myChart7.getOption()
+            //这里是选择切换什么样的x轴,那么他会进行对Y值的切换
+            console.log("看看选择")
+            console.log(obj.name)
+            if (obj.name == '年度耗课数') {
+                console.log("看看年度轴")
+                options.xAxis[0].data = yearX
+                console.log(yearX)
+            } else if (obj.name == '月度耗课数') {
+                console.log("看看月度轴")
+                options.xAxis[0].data = monthX
+                console.log(monthX)
+            }else if (obj.name == '周度耗课数') {
+                options.xAxis[0].data = ["1周","2周","3周","4周"]
+            }else if (obj.name == '日度耗课数') {
+                console.log("看看日度轴")
+                options.xAxis[0].data = dataX
+                console.log(dataX)
+            }
+            myChart7.setOption(options, true)
+        });
+
+
         ajax2.start()
         myChart7.setOption(option7);
     }
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoach/TCoach_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoach/TCoach_add.html
index 3c6a243..4d1b2c2 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoach/TCoach_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoach/TCoach_add.html
@@ -43,13 +43,14 @@
     <div class="ibox-content">
         <div class="form-horizontal" id="carInfoForm">
             <input hidden id="role" value="${role}">
+            @if(objectType==1){
             <div class="form-group" id="provinceCode">
                 <label class="col-sm-3 control-label">*所在省:</label>
                 <div class="col-sm-9">
                     <select style="width: 300px" class="form-control" id="pCode" name="pCode" onchange="TSite.oneChange()">
                         <option value="">请选择省</option>
                         @for(obj in list){
-                        <option style="width: 300px" value="${obj.provinceCode}">${obj.province}</option>
+                        <option style="width: 300px" value="${obj.code}">${obj.name}</option>
                         @}
                     </select>
                 </div>
@@ -62,7 +63,6 @@
                     </select>
                 </div>
             </div>
-            @if(objectType==1){
             <div class="form-group" >
                 <label class="col-sm-3 control-label">*所属账号:</label>
                 <div class="col-sm-9">
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoach/TCoach_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoach/TCoach_edit.html
index 0723fce..391e25d 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoach/TCoach_edit.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoach/TCoach_edit.html
@@ -29,7 +29,7 @@
                 <div class="col-sm-9">
                     <select style="width: 300px" class="form-control" id="pCode" name="pCode" onchange="TSite.oneChange()">
                         @for(obj in list){
-                        <option value="${obj.provinceCode}" ${obj.province == data.province ? 'selected=selected' : ''}>${obj.province}</option>
+                        <option value="${obj.code}" ${obj.code == data.provinceCode ? 'selected=selected' : ''}>${obj.name}</option>
                         @}
                     </select>
                 </div>
@@ -41,7 +41,7 @@
                 <div class="col-sm-9">
                     <select style="width: 300px" class="form-control" id="cCode" name="cCode" onchange="TSite.oneChangeNext(this)">
                         @for(obj in city){
-                        <option value="${obj.cityCode}" ${obj.city == data.city ? 'selected=selected' : ''}>${obj.city}</option>
+                        <option value="${obj.code}" ${obj.code == data.cityCode ? 'selected=selected' : ''}>${obj.name}</option>
                         @}
                     </select>
                 </div>
@@ -71,14 +71,12 @@
                     </select>
                 </div>
             </div>
-
             <div class="form-group" >
                 <label class="col-sm-3 control-label">*姓名:</label>
                 <div class="col-sm-9" style="display: flex;">
                     <input style="width: 300px" class="form-control" id="name" value="${data.name}"  placeholder="请输入姓名" type="text">
                 </div>
             </div>
-
             <div class="form-group" >
                 <label class="col-sm-3 control-label">*生日:</label>
                 <div class="col-sm-9"  style="display: flex">
@@ -184,8 +182,11 @@
 <script src="${ctxPath}/js/elementui/index.js"></script>
 <link rel="stylesheet" href="${ctxPath}/js/elementui/index.css">
 <script>
-    let id = "${pictures}"
-    let obj = []
+    $(function() {
+        var id = "${pictures}"
+    })
+    var id = "${pictures}"
+    var obj = []
     var vue2 = new Vue({
         el: '#app1',
         props: {
@@ -219,9 +220,10 @@
                 });
             },
             changeImg(){
-                console.log("看看id")
-                console.log(id)
                 var i = id.split(",")
+                console.log("看看后端返回的图片")
+                console.log(i.length)
+                console.log(i)
                 for (let j = 0; j <i.length; j++) {
                     let obj={
                         fileName:i[j],
@@ -230,13 +232,22 @@
                         response:i[j],
                     }
                     this.imageUrl2.push(obj)
+                    console.log("看看res")
+                    console.log(obj.response);
+                    TSite.goodsPicArray.push(obj.response)
                 }
-                console.log(this.imageUrl2)
             },
         },
         created() {
             this.changeImg()
             TSite.goodsPicArray = this.imageUrl2
+            console.log("看看执行")
+            var temp = []
+            for (let i = 0; i < TSite.goodsPicArray.length; i++) {
+                temp.push(TSite.goodsPicArray[i].response)
+            }
+            TSite.goodsPicArray = temp;
+            console.log("赋值")
             console.log(TSite.goodsPicArray)
         },
     });
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition.html
index 9c15f74..eba49ba 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition.html
@@ -6,7 +6,7 @@
             <div class="ibox-title">
                 <h5>赛事管理</h5>
             </div>
-
+            <input hidden id="type" value="${type}">
             <div class="ibox-content">
                 <div class="row row-lg">
                     <div class="col-sm-12">
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html
index b7445e2..35dadf3 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCompetition/TCompetition_add.html
@@ -49,23 +49,29 @@
         <div class="form-horizontal" id="carInfoForm">
 
             @if(type==1){
-            <div class="form-group"   >
-                <label class="col-sm-3 control-label" id="yys1">所属运营商:</label>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">*门店类型:</label>
                 <div class="col-sm-9">
-                    <select class="form-control" id="account" name="account" onchange="TCarInfoDlg.oneChange3(this)">
+                    <input type="radio" name="type" value="1" onclick="updateType(1)" checked > 平台门店
+                    <input type="radio" name="type" value="2" onclick="updateType(2)" id="radio1" > 运营商门店
+                </div>
+            </div>
+            <div id="yys" hidden>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">*所属运营商:</label>
+                <div class="col-sm-9">
+                    <select class="form-control" id="account" name="account" onchange="TCarInfoDlg.oneChange3(this)" >
                         <option value="">选择运营商</option>
                         @for(i in yysList){
-                        <option value="${i.id}">${i.name}</option>
+                        <option value="${i.id}" >${i.name}</option>
                         @}
                     </select>
-                    <input type="checkbox" value="0" name="pt" id="pt" onchange="TCarInfoDlg.oneChangeYys(this)">平台</input>
                 </div>
             </div>
             <div class="form-group" id="provinceCode">
                 <label class="col-sm-3 control-label">所在省:</label>
                 <div class="col-sm-9">
                     <select class="form-control" id="pCode" name="pCode" onchange="TCarInfoDlg.oneChange9(this)">
-
                     </select>
                 </div>
             </div>
@@ -77,28 +83,30 @@
                     </select>
                 </div>
             </div>
-            @}
-            @if(type==2){
-            <div class="form-group" id="provinceCode">
-                <label class="col-sm-3 control-label">所在省:</label>
-                <div class="col-sm-9">
-                    <select class="form-control" id="pCode" name="pCode" onchange="TCarInfoDlg.oneChange9(this)">
-                        <option value="">选择省</option>
-                        @for(i in province){
-                        <option value="${i.code}">${i.name}</option>
-                        @}
-                    </select>
-                </div>
             </div>
-            <div class="form-group" id="cityCode">
-                <label class="col-sm-3 control-label">举办市:</label>
-                <div class="col-sm-9">
-                    <select class="form-control" id="cCode" name="cCode" onchange="TCarInfoDlg.oneChangeNext9(this)">
-                        <option value="">选择市</option>
 
-                    </select>
+            <div id="yys1">
+                <div class="form-group" >
+                    <label class="col-sm-3 control-label">所在省:</label>
+                    <div class="col-sm-9">
+                        <select class="form-control" id="pCode1" name="pCode" onchange="TCarInfoDlg.oneChange9(this)">
+                            <option value="">选择省</option>
+                            @for(i in list){
+                            <option value="${i.code}" >${i.name}</option>
+                            @}
+                        </select>
+                    </div>
+                </div>
+                <div class="form-group" >
+                    <label class="col-sm-3 control-label">举办市:</label>
+                    <div class="col-sm-9">
+                        <select class="form-control" id="cCode1" name="cCode" onchange="TCarInfoDlg.oneChangeNext(this)">
+                            <option value="">选择市</option>
+                        </select>
+                    </div>
                 </div>
             </div>
+
             @}
             @if(type==1){
             <div class="form-group" id="shop">
@@ -115,7 +123,10 @@
                 <label class="col-sm-3 control-label">举办门店:</label>
                 <div class="col-sm-9">
                     <select class="form-control" id="shopId" name="shopId" multiple>
-
+                        <option value="">选择门店</option>
+                        @for(i in stores){
+                        <option value="${i.id}" >${i.name}</option>
+                        @}
                     </select>
                 </div>
             </div>
@@ -143,9 +154,9 @@
             <div class="form-group">
                 <label class="col-sm-3 control-label">支付方式:</label>
                 <div class="col-sm-9">
-                    <input type="checkbox"  onclick="updateType(1,this)"> 现金支付
-                    <input type="checkbox" onclick="updateType(2,this)"> 玩湃币支付
-                    <input type="checkbox" onclick="updateType(3,this)"> 课时支付
+                    <input type="checkbox"  onclick="updateType1(1,this)"> 现金支付
+                    <input type="checkbox" onclick="updateType1(2,this)"> 玩湃币支付
+                    <input type="checkbox" onclick="updateType1(3,this)"> 课时支付
                 </div>
             </div>
 
@@ -364,6 +375,36 @@
             }else {
                 $("#payType1").hide();
             }
+            $("#yys").hide();
+            $("#yys1").show();
+            $("#pCode1").val("");
+            $("#cCode1").val("");
+            $("#pCode").val("");
+            $("#cCode").val("");
+
+        }
+        if(e==2){
+            if($(o).is(":checked")){
+                $("#payType2").show();
+            }else {
+                $("#payType2").hide();
+            }
+            $("#yys").show();
+            $("#yys1").hide();
+            $("#pCode1").val("");
+            $("#cCode1").val("");
+            $("#pCode").val("");
+            $("#cCode").val("");
+
+        }
+    }
+    function updateType1(e,o) {
+        if(e==1){
+            if($(o).is(":checked")){
+                $("#payType1").show();
+            }else {
+                $("#payType1").hide();
+            }
         }
         if(e==2){
             if($(o).is(":checked")){
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html
index 4e76b09..5ba1c62 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html
@@ -212,22 +212,8 @@
         methods: {
             handleAvatarSuccess(res, file) {
                 file.url =file.response
-                TCarInfoDlg.goodsPicArray.push(file);
+                TCarInfoDlg.goodsPicArray.push(res);
                 console.log(TCarInfoDlg.goodsPicArray)
-            },
-            changeImg(){
-               var i = id.split(",")
-                for (let j = 0; j <i.length; j++) {
-                    let obj={
-                        fileName:i[j],
-                        uuid:i[j],
-                        url:i[j],
-                        response:i[j],
-                    }
-                    this.imageUrl2.push(obj)
-
-                }
-                console.log( this.imageUrl2,111)
             },
             beforeAvatarUpload(file) {
                 const isLt2M = file.size / 1024 / 1024 < 10;
@@ -240,7 +226,19 @@
                 TCarInfoDlg.goodsPicArray = TCarInfoDlg.goodsPicArray.filter(item => {
                     return item.uid != file.uid;
                 });
-
+            },
+            changeImg(){
+                var i = id.split(",")
+                for (let j = 0; j <i.length; j++) {
+                    let obj={
+                        fileName:i[j],
+                        uuid:i[j],
+                        url:i[j],
+                        response:i[j],
+                    }
+                    this.imageUrl2.push(obj)
+                }
+                console.log( this.imageUrl2,111)
             },
         },
         created() {
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js
index aadbb71..c9f6f43 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js
@@ -14,7 +14,7 @@
  */
 TQuestion.initColumn = function () {
     return [
-        {field: 'selectItem', checkbox: true},
+        {field: 'selectItem', radio: true},
         {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle'},
         {title: '所在省市', field: 'provinceAndCity', visible: role==1?true:false, align: 'center', valign: 'middle'},
         {title:  '门店名称', field: 'storeName', visible: true, align: 'center', valign: 'middle'},
@@ -538,23 +538,16 @@
 TQuestion.unfreeze = function () {
     if (this.check()) {
         var selected = $('#' + this.id).bootstrapTable('getSelections');
-
         console.log("看看选择")
         console.log(selected)
         const data1 = {
-            ids:[],
+            ids:TQuestion.seItem.id,
             payUserName:""
         };
-        selected.forEach(function(obj) {
-            if (obj.payStatus == 2){
-                Feng.error("订单已支付!不能再手动支付了")
-                return;
-            }
-            var id = "";
-             id = obj.id;
-            console.log(obj.id);
-            data1.ids.push(id);
-        });
+        if (TQuestion.seItem.payStatus == 2){
+            Feng.error("订单已支付!不能再手动支付了")
+            return;
+        }
         console.log(data1)
         $.ajax({
             url: Feng.ctxPath + "/cpPayment/pay",
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js
index 53fc429..155328e 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js
@@ -260,8 +260,12 @@
         giftClassHours:null,
         useTime:"",
         payUserName:"",
+        coursePackageConfigId:null
     };
     data.appUserId            = appUserId;
+    console.log("我看看规格id")
+    console.log($("#courseTime").val())
+    data.coursePackageConfigId            = $("#courseTime").val();
     data.studentId                = $("#student").val()
     data.coursePackageId       = $("#coursePackageName").val()
     data.cashPayment             = $("#cashPayment").val()
@@ -312,6 +316,7 @@
     var courseTimeId= $("#courseTime").val()
     console.log("看看课时")
     console.log(courseTimeId)
+    data.coursePackageConfigId            = courseTimeId;
     if(typeof courseTimeId === 'undefined'){
         console.log("进入")
         courseTimeId=0;
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tCoach/tCoach_add.js b/cloud-server-management/src/main/webapp/static/modular/system/tCoach/tCoach_add.js
index a5ab2ea..e64677f 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tCoach/tCoach_add.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tCoach/tCoach_add.js
@@ -169,13 +169,13 @@
 // 场地管理首页 选择对应的省市
 // 传1是场地管理首页 传2是场地管理添加页面
 TSite.oneChange = function () {
-    var province = $('#pCode option:selected').text();
+    var province = $('#pCode').val();
     var citySelect = document.getElementById("cCode");
-    var ajax = new $ax(Feng.ctxPath + "/tSite/getCity", function(data){
+    var ajax = new $ax(Feng.ctxPath + "/tCompetition/onChange", function(data){
         if(data!=null){
             var content='<option value="">选择市</option>';
             $.each(data, function(k,v) {
-                content += "<option value='"+v.cityCode+"'>"+v.city+"</option>";
+                content += "<option value='"+v.code+"'>"+v.name+"</option>";
             });
             $("#cCode").empty().append(content);
         }
@@ -185,14 +185,13 @@
         $("#cCode").innerHTML = '<option value="">请先选择省/市</option>';
     }
 
-    ajax.set("province",province);
+    ajax.set("oneId",province);
     ajax.start();
 };
 
 TSite.oneChangeNext = function (e) {
     var oneId=$(e).val();
-    var city = $('#cCode option:selected').text();
-    var ajax = new $ax(Feng.ctxPath + "/tSite/accountChangeNext", function(data){
+    var ajax = new $ax(Feng.ctxPath + "/tCoach/getYys", function(data){
         if(data!=null){
             var content='<option value="">选择账号</option>';
             $.each(data, function(k,v) {
@@ -201,26 +200,14 @@
             $("#account").empty().append(content);
         }
     });
+
+    ajax.set("pCode",$("#pCode").val());
+    ajax.set("cCode",$("#cCode").val());
+    ajax.start();
     if (oneId === ""){
         $("#account").innerHTML = '<option style="width: 300px" value="">请先选择省/市</option>';
 
     }
-    ajax.set("oneId",city);
-    ajax.start();
-
-    // var ajax1 = new $ax(Feng.ctxPath + "/tSite/storeChangeNext", function(data){
-    //     if(data!=null && data.length !== 0){
-    //         var content='<option value="">选择门店</option>';
-    //         $.each(data, function(k,v) {
-    //             content += "<option style='width: 300px' value='"+v.id+"'>"+v.name+"</option>";
-    //         });
-    //         $("#store").empty().append(content);
-    //     }else {
-    //         storeSelect.innerHTML = '<option value="">当前所选市没有门店</option>';
-    //     }
-    // });
-    // ajax1.set("oneId",oneId);
-    // ajax1.start();
 };
 
 /**
@@ -314,8 +301,6 @@
 var em = "";// 门店经营结束时间:分钟
 
 TSite.addSubmit = function(){
-
-
     var data = {
         id:null,
         province:"",
@@ -364,7 +349,7 @@
         temp = temp+","+TSite.goodsPicArray[i];
     }
     data.certificateImg        = temp
-
+    if ($("#objectType").val()==1){
     if($("#pCode").val()==''){
         Feng.info("请选择省")
         return;
@@ -376,6 +361,7 @@
     if($("#account").val()=='' ){
         Feng.info("请选择账号")
         return;
+    }
     }
     if($("#coachTypeId").val()=='' ){
         Feng.info("请选择教练类型")
@@ -447,8 +433,6 @@
     });
 };
 TSite.editSubmit = function(){
-
-
     var data = {
         id:null,
         province:"",
@@ -488,13 +472,16 @@
     data.graduateSchool     = $('#graduateSchool').val()
     data.diploma            = $('#img').val()
     data.certificate        = $('#certificate').val()
-
+    var goodImgs = this.goodsPicArray;
+    if(goodImgs.length==0){
+        Feng.info("请上传实景图")
+        return;
+    }
     var temp = ""
-
     for (let i = 0; i < TSite.goodsPicArray.length; i++) {
         console.log("循环")
-        console.log(TSite.goodsPicArray[i][`fileName`])
-        temp = temp+","+TSite.goodsPicArray[i][`fileName`];
+        console.log(TSite.goodsPicArray[i])
+        temp = temp+","+TSite.goodsPicArray[i];
     }
     data.certificateImg        = temp
 
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition.js b/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition.js
index c7dea08..83fcebb 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition.js
@@ -11,13 +11,15 @@
 /**
  * 初始化表格的列
  */
+
+var type = $("#type").val()
 TCompetition.initColumn = function () {
     return [
         {field: 'selectItem', radio: true},
         {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle'},
-        {title: '所在省', field: 'province', visible: true, align: 'center', valign: 'middle',width:'8%',
+        {title: '所在省', field: 'province', visible: type==2?false:true, align: 'center', valign: 'middle',width:'8%',
         },
-        {title: '所在市', field: 'city', visible: true, align: 'center', valign: 'middle'},
+        {title: '所在市', field: 'city', visible: type==2?false:true, align: 'center', valign: 'middle'},
         {title: '举办门店', field: 'storeName', visible: true, align: 'center', valign: 'middle',width:'8%',
         },
         {title:  '赛事名称', field: 'name', visible: true, align: 'center', valign: 'middle',width:'8%',
@@ -38,6 +40,11 @@
                 return {1:"未开始",2:"已开始",3:"已结束",4:"已取消"}[data]
             }
         },
+        {title: '审核状态', field: 'auditStatus', visible: type==2?true:false, align: 'center', valign: 'middle',width:'8%',
+            formatter:function (data) {
+                return {1:"待审核",2:"已通过",3:"已拒绝"}[data]
+            }
+        },
     ];
 };
 function currentTime(timestamp){
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition_info.js
index 84c0147..3be94d2 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tCompetition/tCompetition_info.js
@@ -103,22 +103,17 @@
 }
 
 TCarInfoDlg.oneChange9 = function (e) {
-    console.log(111)
     var oneId=$(e).val();
-    var elementById = document.getElementById("pt");
-
+    var elementById = document.getElementById("radio1");
     var operatorId;
     if (elementById !== null) {
-        console.log(elementById)
         operatorId =  $("#account").val()
         if (elementById.checked){
-            operatorId = 0
+            operatorId = $("#account").val()
         }else{
-            operatorId =  $("#account").val()
+            operatorId =  0
         }
     }
-
-
     var ajax = new $ax(Feng.ctxPath + "/tShop/getCityYys", function(data){
         if(data!=null){
             if(language==1){
@@ -211,22 +206,50 @@
  * 提交添加
  */
 TCarInfoDlg.addSubmit = function() {
-
     this.clearData();
     this.collectData();
     if(!this.validate()){
         return ;
     }
-    var pCode = $("#pCode").val();
-    if(pCode==""){
-        Feng.info("请选择省");
-        return;
+    var pCode;
+    var cCode;
+    var elementById = document.getElementById("radio1");
+    console.log("看看标签")
+    console.log(elementById)
+    if (elementById!=null){
+    if (!elementById.checked){
+        console.log("选中平台")
+        console.log($("#pCode1").val())
+        console.log($("#cCode1").val())
+        // 选中平台赛事
+        pCode = $("#pCode1").val();
+        if($("#pCode1").val()==""){
+            Feng.info("请选择省");
+            return;
+        }
+        cCode = $("#cCode1").val();
+        if($("#cCode1").val()==""){
+            Feng.info("请选择市");
+            return;
+        }
+    }else{
+        console.log("选中运营商")
+        console.log($("#pCode").val())
+        console.log($("#cCode").val())
+        // 选中运营商赛事
+        pCode = $("#pCode").val();
+        if(pCode==""){
+            Feng.info("请选择省");
+            return;
+        }
+        cCode = $("#cCode").val();
+        if(cCode==""){
+            Feng.info("请选择市");
+            return;
+        }
     }
-    var cCode = $("#cCode").val();
-    if(cCode==""){
-        Feng.info("请选择市");
-        return;
     }
+
     var shopId = $("#shopId").val();
 
     if(shopId==""){
@@ -566,19 +589,18 @@
 
 
 TCarInfoDlg.oneChangeYys = function(e){
-
-    var oneId= $("input[name='pt']:checked").val()
-
-    console.log("===========oneId=========="+oneId)
+    var oneId= $(e).val()
     var SelectValue="";
     if(oneId=='0' ){
         oneId=0
         console.log("隐藏")
         $("#yys1").hide();
+        $("#t1").hide();
         $("#account").hide();
     }else{
         console.log("展示")
         $("#yys1").show();
+        $("#t1").show();
         $("#account").show();
     }
     // var ajax = new $ax(Feng.ctxPath + "/tSite/getChangeOne", function(data){
@@ -619,9 +641,8 @@
     ajax.start();
 
 
-    if (typeof(oneId) == "undefined"){
+    if (oneId == "1"){
         console.log("===============")
-
         var button = document.getElementById("account");
         button.removeAttribute("disabled");
 
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java
index 42cccc7..c8903fd 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/BallController.java
@@ -5,6 +5,7 @@
 import com.dsh.other.feignclient.model.AdvertisementChangeStateDTO;
 import com.dsh.other.feignclient.model.AdvertisementQuery;
 import com.dsh.other.model.BannerVo;
+import com.dsh.other.model.dto.siteDto.GameDataQuery;
 import com.dsh.other.service.*;
 import com.dsh.other.util.ResultUtil;
 import io.swagger.annotations.ApiImplicitParam;
@@ -33,6 +34,30 @@
     @Autowired
     private TGameRecordService gameRecordService;
 
+    // 数据统计
+    @ResponseBody
+    @PostMapping("/student/getData")
+    public List<TGameRecord> getData(@RequestBody GameDataQuery query){
+        if (query.getStoreId()==null){
+            // 获取到游戏ids
+            List<Integer> gameIds = gameService.list(new QueryWrapper<Game>().eq("operationId", query.getObjectId()))
+                    .stream().map(Game::getId).collect(Collectors.toList());
+            // 根据游戏ids查询智慧球场支付记录
+            List<TGameRecord> list = gameRecordService.list(new QueryWrapper<TGameRecord>().in("gameId", gameIds)
+                    .eq("status", 1)
+                    .ne("payType", 3)
+                    .ne("payType", 4));
+            return list;
+        }else{
+            List<Integer> gameIds = gameService.list(new QueryWrapper<Game>().eq("storeId", query.getStoreId()))
+                    .stream().map(Game::getId).collect(Collectors.toList());
+            List<TGameRecord> list = gameRecordService.list(new QueryWrapper<TGameRecord>().in("gameId", gameIds)
+                    .eq("status", 1).eq("payType", 1).eq("payType", 2));
+            return list;
+        }
+    }
+
+
     @ResponseBody
     @PostMapping("/student/webStudentList")
     public List<Game> list(@RequestBody BallQueryDto ballQueryDto) {
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 2e5d486..eabcf5a 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
@@ -474,16 +474,16 @@
             Date startTime = byId.getStartTime();
             Date endTime = byId.getEndTime();
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-
             String startTimeString = sdf.format(startTime);
             String endTimeString = sdf.format(endTime);
-
             String result = startTimeString + "-" + endTimeString.substring(11);
             byId.setTimes(result);
 
 
             byId.setSid(Arrays.asList(storeId));
-            List<Site> list = siteService.list(new LambdaQueryWrapper<Site>().eq(Site::getStoreId, storeId).eq(Site::getSign, 1));
+            List<Site> list = siteService.list(new LambdaQueryWrapper<Site>()
+                    .eq(Site::getStoreId, storeId)
+                    .eq(Site::getSign, 1));
             List<Integer> collect = list.stream().map(Site::getId).collect(Collectors.toList());
             byId.setRid(collect);
             map.put("data", byId);
diff --git a/cloud-server-other/src/main/java/com/dsh/other/model/dto/siteDto/GameDataQuery.java b/cloud-server-other/src/main/java/com/dsh/other/model/dto/siteDto/GameDataQuery.java
new file mode 100644
index 0000000..23af790
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/model/dto/siteDto/GameDataQuery.java
@@ -0,0 +1,9 @@
+package com.dsh.other.model.dto.siteDto;
+
+import lombok.Data;
+
+@Data
+public class GameDataQuery {
+    Integer objectId;
+    Integer storeId;
+}

--
Gitblit v1.7.1