From d954784593cb24b0455529ea28588a317c5d766f Mon Sep 17 00:00:00 2001
From: luo <2855143437@qq.com>
Date: 星期二, 26 九月 2023 17:05:30 +0800
Subject: [PATCH] 9.26

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java     |    3 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord2.html              |    2 
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java                 |    8 
 cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml                                   |   10 
 cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java                            |    2 
 cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java                        |   20 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/classRecord2.html                     |   68 +++
 cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord.html               |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java          |    4 
 cloud-server-account/src/main/java/com/dsh/account/entity/GiftSearchDto.java                                    |    2 
 cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java                      |    3 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord3.html              |    2 
 cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js               |   58 ++
 .idea/workspace.xml                                                                                             |   94 ++-
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java                    |  110 ++--
 cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java                        |    3 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/GiftSearchDto.java                  |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/classRecord.html                      |    2 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/SelectDto.java                      |    2 
 cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage_info.js               |   48 +-
 cloud-server-account/src/main/java/com/dsh/account/dto/SelectDto.java                                           |    1 
 cloud-server-course/src/main/java/com/dsh/course/entity/dto/TCoursePackagePayment1.java                         |  100 ++++
 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java                  |    7 
 cloud-server-account/src/main/java/com/dsh/account/dto/TCoursePackagePayment1.java                              |  163 +++++++
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java |   39 +
 cloud-server-management/src/main/webapp/static/modular/system/coursePackage/classRecord2.js                     |  440 ++++++++++++++++++++
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java             |    5 
 cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord2.js              |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEditTTT.html                       |    6 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html                          |   23 
 30 files changed, 1,052 insertions(+), 179 deletions(-)

diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index fdcc0cf..be2394c 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -24,15 +24,31 @@
   <component name="ChangeListManager">
     <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="9.25">
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/dto/SelectDto.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/dto/SelectDto.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/entity/GiftSearchDto.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/entity/GiftSearchDto.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/AppUserClient.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/model/TAppUser.java" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/coursePackage_edit.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TShopController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/GiftSearchDto.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/GiftSearchDto.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/SelectDto.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/SelectDto.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/classRecord.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/classRecord.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord2.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord2.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord3.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord3.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEditTTT.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEditTTT.html" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage_info.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage_info.js" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord2.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord2.js" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -78,39 +94,39 @@
     <option name="hideEmptyMiddlePackages" value="true" />
     <option name="showLibraryContents" value="true" />
   </component>
-  <component name="PropertiesComponent">{
-  &quot;keyToString&quot;: {
-    &quot;DefaultHtmlFileTemplate&quot;: &quot;HTML File&quot;,
-    &quot;RequestMappingsPanelOrder0&quot;: &quot;0&quot;,
-    &quot;RequestMappingsPanelOrder1&quot;: &quot;1&quot;,
-    &quot;RequestMappingsPanelWidth0&quot;: &quot;75&quot;,
-    &quot;RequestMappingsPanelWidth1&quot;: &quot;75&quot;,
-    &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
-    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
-    &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
-    &quot;git-widget-placeholder&quot;: &quot;master&quot;,
-    &quot;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;,
-    &quot;last_opened_file_path&quot;: &quot;D:/JavaTool/PlayPai1/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage&quot;,
-    &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
-    &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
-    &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
-    &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
-    &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
-    &quot;project.structure.last.edited&quot;: &quot;模块&quot;,
-    &quot;project.structure.proportion&quot;: &quot;0.15&quot;,
-    &quot;project.structure.side.proportion&quot;: &quot;0.54367816&quot;,
-    &quot;settings.editor.selected.configurable&quot;: &quot;preferences.pluginManager&quot;,
-    &quot;spring.configuration.checksum&quot;: &quot;b0c8222ba40624e179f539b98c2e8cad&quot;,
-    &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
+  <component name="PropertiesComponent"><![CDATA[{
+  "keyToString": {
+    "DefaultHtmlFileTemplate": "HTML File",
+    "RequestMappingsPanelOrder0": "0",
+    "RequestMappingsPanelOrder1": "1",
+    "RequestMappingsPanelWidth0": "75",
+    "RequestMappingsPanelWidth1": "75",
+    "RunOnceActivity.OpenProjectViewOnStart": "true",
+    "RunOnceActivity.ShowReadmeOnStart": "true",
+    "WebServerToolWindowFactoryState": "false",
+    "git-widget-placeholder": "master",
+    "ignore.virus.scanning.warn.message": "true",
+    "last_opened_file_path": "D:/JavaTool/PlayPai1/cloud-server-management/src/main/webapp/static/modular/system/coursePackage",
+    "node.js.detected.package.eslint": "true",
+    "node.js.detected.package.tslint": "true",
+    "node.js.selected.package.eslint": "(autodetect)",
+    "node.js.selected.package.tslint": "(autodetect)",
+    "nodejs_package_manager_path": "npm",
+    "project.structure.last.edited": "模块",
+    "project.structure.proportion": "0.15",
+    "project.structure.side.proportion": "0.54367816",
+    "settings.editor.selected.configurable": "preferences.pluginManager",
+    "spring.configuration.checksum": "b0c8222ba40624e179f539b98c2e8cad",
+    "vue.rearranger.settings.migration": "true"
   }
-}</component>
+}]]></component>
   <component name="ReactorSettings">
     <option name="notificationShown" value="true" />
   </component>
   <component name="RecentsManager">
     <key name="CopyFile.RECENT_KEYS">
-      <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\WEB-INF\view\system\coursePackage" />
       <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\static\modular\system\coursePackage" />
+      <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\WEB-INF\view\system\coursePackage" />
       <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\WEB-INF\view\system\tStudent" />
       <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\static\modular\system\tCoupon" />
       <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\WEB-INF\view\system" />
@@ -252,7 +268,7 @@
   </component>
   <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
   <component name="SvnConfiguration">
-    <configuration />
+    <configuration>C:\Users\luo\AppData\Roaming\Subversion</configuration>
   </component>
   <component name="TaskManager">
     <task active="true" id="Default" summary="Default task">
@@ -292,7 +308,9 @@
       <workItem from="1695520475699" duration="28522000" />
       <workItem from="1695602623205" duration="24182000" />
       <workItem from="1695633570775" duration="65000" />
-      <workItem from="1695633789585" duration="2320000" />
+      <workItem from="1695633789585" duration="4703000" />
+      <workItem from="1695638521906" duration="1415000" />
+      <workItem from="1695689815334" duration="13353000" />
     </task>
     <task id="LOCAL-00001" summary="后台代码删除">
       <created>1690249807612</created>
@@ -425,7 +443,15 @@
       <option name="project" value="LOCAL" />
       <updated>1695629926005</updated>
     </task>
-    <option name="localTasksCounter" value="19" />
+    <task id="LOCAL-00019" summary="9.25">
+      <option name="closed" value="true" />
+      <created>1695636138175</created>
+      <option name="number" value="00019" />
+      <option name="presentableId" value="LOCAL-00019" />
+      <option name="project" value="LOCAL" />
+      <updated>1695636138175</updated>
+    </task>
+    <option name="localTasksCounter" value="20" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java
index 8be82ce..93c7845 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/StudentController.java
@@ -204,7 +204,7 @@
         System.out.println("======giftSelect=========giftSearchDto===="+giftSearchDto);
 
 //       Integer appId = studentService.getGiftSelect(giftSearchDto);
-        TCoursePackagePayment coursePackagePaymentById = paymentClient.getCoursePackagePaymentById(giftSearchDto.getId());
+        TCoursePackagePayment1 coursePackagePaymentById = paymentClient.getCoursePackagePaymentById1(giftSearchDto.getId());
 //        System.out.println("=======giftSelect======appId====>"+appId);
         List<TStudent> selectDtos =  studentService.list(new QueryWrapper<TStudent>()
                 .select("name, id")
diff --git a/cloud-server-account/src/main/java/com/dsh/account/dto/SelectDto.java b/cloud-server-account/src/main/java/com/dsh/account/dto/SelectDto.java
index 28cac4b..fda50a5 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/dto/SelectDto.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/dto/SelectDto.java
@@ -1,5 +1,6 @@
 package com.dsh.account.dto;
 
+import io.swagger.models.auth.In;
 import lombok.Data;
 
 @Data
diff --git a/cloud-server-account/src/main/java/com/dsh/account/dto/TCoursePackagePayment1.java b/cloud-server-account/src/main/java/com/dsh/account/dto/TCoursePackagePayment1.java
new file mode 100644
index 0000000..30b6e89
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/dto/TCoursePackagePayment1.java
@@ -0,0 +1,163 @@
+package com.dsh.account.dto;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.dsh.account.feignclient.course.model.TCoursePackagePayment;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 用户课程包购买记录
+ * </p>
+ *
+ * @author administrator
+ * @since 2023-06-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_course_package_payment")
+public class TCoursePackagePayment1 {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.NONE)
+    @TableField(updateStrategy = FieldStrategy.NEVER)
+    private Long id;
+    /**
+     * 业务编号
+     */
+    @TableField("code")
+    private String code;
+    /**
+     * 用户id
+     */
+    @TableField("appUserId")
+    private Integer appUserId;
+    /**
+     * 学员id
+     */
+    @TableField("studentId")
+    private Integer studentId;
+    /**
+     * 课包id
+     */
+    @TableField("coursePackageId")
+    private Integer coursePackageId;
+    /**
+     * 支付方式(1=微信,2=支付宝,3=玩湃币,4=积分,5=积分+微信,6=积分+支付宝)
+     */
+    @TableField("payType")
+    private Integer payType;
+    /**
+     * 课时数
+     */
+    @TableField("classHours")
+    private Integer classHours;
+    /**
+     * 原价
+     */
+    @TableField("originalPrice")
+    private Double originalPrice;
+    /**
+     * 优惠券id
+     */
+    @TableField("userCouponId")
+    private Long userCouponId;
+    /**
+     * 现金支付价格
+     */
+    @TableField("cashPayment")
+    private BigDecimal cashPayment;
+    /**
+     * 玩湃币价格/积分
+     */
+    @TableField("playPaiCoin")
+    private Integer playPaiCoin;
+    /**
+     * 总课时
+     */
+    @TableField("totalClassHours")
+    private Integer totalClassHours;
+    /**
+     * 剩余课时
+     */
+    @TableField("laveClassHours")
+    private Integer laveClassHours;
+    /**
+     * 缺课次数
+     */
+    @TableField("absencesNumber")
+    private Integer absencesNumber;
+    /**
+     * 退课课时
+     */
+    @TableField(exist = false)
+    private Integer dropoutsNumber;
+    /**
+     * 支付用户类型(1=用户,2=管理员)
+     */
+    @TableField("payUserType")
+    private Integer payUserType;
+    /**
+     * 支付状态(1=待支付,2=已支付)
+     */
+    @TableField("payStatus")
+    private Integer payStatus;
+    /**
+     * 第三方支付流水号
+     */
+    @TableField("orderNumber")
+    private String orderNumber;
+    /**
+     * 支付用户id
+     */
+    @TableField("payUserId")
+    private Integer payUserId;
+    /**
+     * 课程状态(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("useTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date useTime;
+
+    /**
+     * 平台手动支付时使用
+     */
+    @TableField("payUserName")
+    private String payUserName;
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/entity/GiftSearchDto.java b/cloud-server-account/src/main/java/com/dsh/account/entity/GiftSearchDto.java
index 712302d..21b1b1a 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/entity/GiftSearchDto.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/entity/GiftSearchDto.java
@@ -7,5 +7,5 @@
 public class GiftSearchDto {
     String name;
     String phone;
-    Integer id;
+    Long id;
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java
index d035236..18393df 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java
@@ -1,5 +1,6 @@
 package com.dsh.account.feignclient.course;
 
+import com.dsh.account.dto.TCoursePackagePayment1;
 import com.dsh.account.feignclient.competition.model.BillingDataRequestVo;
 import com.dsh.account.feignclient.course.model.*;
 import com.dsh.account.model.BillingRequest;
@@ -50,7 +51,11 @@
 
 
     @PostMapping("/base/coursePack/getCoursePackagePaymentById")
-    public TCoursePackagePayment getCoursePackagePaymentById(@RequestBody Integer id);
+    public TCoursePackagePayment getCoursePackagePaymentById(@RequestBody Long id);
+
+
+    @PostMapping("/base/coursePack/getCoursePackagePaymentById")
+    public TCoursePackagePayment1 getCoursePackagePaymentById1(@RequestBody Long id);
 
     @PostMapping("/base/coursePack/updatePaymentCoursePackage")
     void updatePaymentCoursePackage(@RequestBody TCoursePackagePayment coursePackagePayment);
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 f2c8f54..55722f8 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
@@ -1144,9 +1144,13 @@
 
 
     @PostMapping("/base/coursePack/getCoursePackagePaymentById")
-    public TCoursePackagePayment getCoursePackagePaymentById(@RequestBody Integer id){
-        return packagePaymentService.getById(id);
+    public TCoursePackagePayment getCoursePackagePaymentById(@RequestBody Long id){
+        TCoursePackagePayment byId = packagePaymentService.getById(id);
+        System.out.println("======byId=========="+byId);
+        return byId;
     }
+
+
     @PostMapping("/base/coursePack/delPaymentCoursePackage")
     public boolean delPaymentCoursePackage(@RequestBody Integer payId){
         return packagePaymentService.removeById(payId);
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 2bd56b6..8433f71 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
@@ -107,7 +107,9 @@
     @ResponseBody
     public List<SelectDto> getSelect(@RequestParam("payId")Long payId){
 
-        List<Integer> studentIds = paymentService.getStudentIds(payId);
+        TCoursePackagePayment byId = paymentService.getById(payId);
+
+        List<Integer> studentIds = paymentService.getStudentIds(payId,byId.getCoursePackageId(),byId.getAppUserId());
     System.out.println("=========studentIds=================>"+studentIds);
 
     if (studentIds.size()>0){
@@ -371,7 +373,13 @@
             counsumService.save(courseCounsum1);
 
         }else {
-
+            CourseCounsum courseCounsum = new CourseCounsum();
+            courseCounsum.setInsertTime(new Date());
+            courseCounsum.setReason("赠课");
+            courseCounsum.setNum(orinPay.getLaveClassHours());
+            courseCounsum.setChangeType(0);
+            courseCounsum.setPaymentId(orinPay.getId());
+            counsumService.save(courseCounsum);
 
 
             orinPay.setTotalClassHours(0);
@@ -381,13 +389,7 @@
             paymentService.updateById(orinPay);
 
 
-            CourseCounsum courseCounsum = new CourseCounsum();
-            courseCounsum.setInsertTime(new Date());
-            courseCounsum.setReason("赠课");
-            courseCounsum.setNum(orinPay.getLaveClassHours());
-            courseCounsum.setChangeType(0);
-            courseCounsum.setPaymentId(orinPay.getId());
-            counsumService.save(courseCounsum);
+
 
 
 
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/dto/TCoursePackagePayment1.java b/cloud-server-course/src/main/java/com/dsh/course/entity/dto/TCoursePackagePayment1.java
new file mode 100644
index 0000000..38e0806
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/dto/TCoursePackagePayment1.java
@@ -0,0 +1,100 @@
+package com.dsh.course.entity.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class TCoursePackagePayment1 {
+
+    /**
+     * 主键
+     */
+    private Integer id;
+    /**
+     * 用户id
+     */
+    private Integer appUserId;
+    /**
+     * 学员id
+     */
+    private Integer studentId;
+    /**
+     * 课包id
+     */
+    private Integer coursePackageId;
+    /**
+     * 支付方式(1=微信,2=支付宝,3=玩湃币,4=积分,5=积分+微信,6=积分+支付宝)
+     */
+    private Integer payType;
+    /**
+     * 课时数
+     */
+    private Integer classHours;
+    /**
+     * 现金支付价格
+     */
+    private BigDecimal cashPayment;
+    /**
+     * 玩湃币价格/积分
+     */
+    private Integer playPaiCoin;
+    /**
+     * 总课时
+     */
+    private Integer totalClassHours;
+    /**
+     * 剩余课时
+     */
+    private Integer laveClassHours;
+    /**
+     * 缺课次数
+     */
+    private Integer absencesNumber;
+    /**
+     * 支付用户类型(1=用户,2=管理员)
+     */
+    private Integer payUserType;
+    /**
+     * 支付状态(1=待支付,2=已支付)
+     */
+    private Integer payStatus;
+    /**
+     * 第三方支付流水号
+     */
+    private String orderNumber;
+    /**
+     * 支付用户id
+     */
+    private Integer payUserId;
+    /**
+     * 课程状态(1=正常,2=已退课)
+     */
+    private Integer status;
+    /**
+     * 退课时间
+     */
+    private Date withdrawalTime;
+    /**
+     * 退课凭证
+     */
+    private String certificate;
+    /**
+     * 状态(1=正常,2=冻结,3=删除)
+     */
+    private Integer state;
+    /**
+     * 添加时间
+     */
+    private Date insertTime;
+    /**
+     * 业务编号
+     */
+    private String code;
+    /**
+     * 原价
+     */
+    private Double originalPrice;
+
+}
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 6cf9d59..de5d28d 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
@@ -5,6 +5,7 @@
 import com.dsh.course.entity.TCoursePackagePayment;
 import com.dsh.course.model.QueryRegistrationRecord;
 import com.dsh.course.model.BillingRequest;
+import io.swagger.models.auth.In;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.Date;
@@ -61,7 +62,7 @@
 
     void updateUseTime(@Param("id")Long id,  @Param("date") Date date);
 
-    List<Integer> getStudentIds(@Param("id")Long payId);
+    List<Integer> getStudentIds(@Param("id")Long payId,@Param("classId")Integer classId,@Param("appId")Integer appId);
 
     boolean updateHoursById(@Param("id") Long id, @Param("i") int i);
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java
index f017ec9..8e5d9f0 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java
@@ -10,6 +10,7 @@
 import com.dsh.course.model.vo.request.*;
 import com.dsh.course.model.vo.response.*;
 import com.dsh.course.util.ResultUtil;
+import io.swagger.models.auth.In;
 
 import java.util.Date;
 import java.util.List;
@@ -119,7 +120,7 @@
 
     void updateUseTime(Long id, Date date);
 
-    List<Integer> getStudentIds(Long payId);
+    List<Integer> getStudentIds(Long payId,Integer classId,Integer appId);
 
     boolean updateHoursById(TCoursePackagePayment byId, int i);
 
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 57f34a3..bd53a3d 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
@@ -34,6 +34,7 @@
 import com.dsh.course.util.*;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import io.swagger.models.auth.In;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
@@ -1039,8 +1040,8 @@
     }
 
     @Override
-    public List<Integer> getStudentIds(Long payId) {
-       return  this.baseMapper.getStudentIds(payId);
+    public List<Integer> getStudentIds(Long payId, Integer classId, Integer appId) {
+       return  this.baseMapper.getStudentIds(payId,classId,appId);
     }
 
     @Override
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 ee64ebb..cf2a792 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
@@ -1215,74 +1215,76 @@
         try {
             coursePackage.setAuditStatus(2);
             this.baseMapper.insert(coursePackage);
-            //生成排课数据
-            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().trim();
 
-            String[] star = value.split(",");
-            String[] end = value1.split(",");
+            if (coursePackage.getClassStartTime()!=null&&coursePackage.getClassStartTime()!="") {
+                //生成排课数据
+                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().trim();
 
-            for (int i = 0; i < star.length; i++) {
+                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 classStartTime = star[i];
+                    String[] split = classStartTime.split(":");
 //            String value1 = en;
-                int index1 = value1.indexOf(",");
+                    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) + 13);
-                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);
-                    }
+                    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);
-                    if(s.getTimeInMillis() > timeInMillis){
-                        break;
+                    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) + 13);
+                    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);
+                        }
+                        s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
+                        if (s.getTimeInMillis() > timeInMillis) {
+                            break;
+                        }
                     }
+
                 }
 
             }
-
-
 
             return coursePackage.getId();
         }catch (Exception e){
diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
index 74a7466..0da6c9e 100644
--- a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
@@ -132,15 +132,7 @@
     <select id="getStudentIds" resultType="java.lang.Integer">
         SELECT studentId
         FROM t_course_package_payment
-        WHERE appUserId = (
-            SELECT appUserId
-            FROM t_course_package_payment
-            WHERE id = #{id}
-        ) AND id != #{id} and coursePackageId=(
-				 SELECT coursePackageId
-            FROM t_course_package_payment
-            WHERE id = #{id}
-				)
+        WHERE appUserId = #{appId} AND id != #{id} and coursePackageId=#{classId}
 
 
     </select>
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
index 9337926..b29cf19 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageController.java
@@ -470,7 +470,39 @@
         model.addAttribute("times", strings);
         model.addAttribute("counts", counts);
 
+
         return PREFIX + "classRecord.html";
+    }
+
+    /**
+     * 假期跳转到上课记录列表页
+     * @param model
+     * @param id
+     * @return
+     */
+    @GetMapping("/openClassRecord1")
+    public String openClassRecord1(Model model, Integer id){
+        TCoursePackage tCoursePackage = coursePackageClient.queryById(id);
+        String[] start = tCoursePackage.getClassStartTime().split(",");
+        String[] end = tCoursePackage.getClassEndTime().split(",");
+        Integer counts = packagePaymentClient.queryByClassId(id);
+
+
+        List<String> strings = new ArrayList<>();
+        for (int i = 0; i <start.length ; i++) {
+            String outTime = start[i] +"-" +end[0];
+            strings.add(outTime);
+        }
+
+        TStore store = storeService.getById(tCoursePackage.getStoreId());
+        Coach coach = coachClient.queryCoachById(tCoursePackage.getCoachId());
+        model.addAttribute("item", tCoursePackage);
+        model.addAttribute("store", store);
+        model.addAttribute("coach", coach);
+        model.addAttribute("times", strings);
+        model.addAttribute("counts", counts);
+
+        return PREFIX + "classRecord2.html";
     }
 
 
@@ -692,8 +724,9 @@
             String jsonString = jsonArray.getString(i);
             String[] split = jsonString.split(" - ");
             first.add(split[0]);
-            second.add(split[1]);
-
+            if (split.length>1) {
+                second.add(split[1]);
+            }
         }
         String firstString = String.join(",",first);
         String secondString = String.join(",",second);
@@ -944,7 +977,7 @@
     @ResponseBody
     @PostMapping("/makeUpMissedLessons")
     public ResultUtil makeUpMissedLessons(Long id){
-        System.out.println("==========coursePackagePaymentId======"+id);
+        System.out.println("==========coursePackage补课PaymentId======"+id);
         return coursePackageService.makeUpMissedLessons(id);
     }
 
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 3598333..84bd171 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
@@ -127,6 +127,7 @@
     @RequestMapping("/tShop_update/{id}")
     public String tCityUpdate(@PathVariable Integer id, Model model) {
         TStore byId = storeService.getById(id);
+        System.out.println("======byId========="+byId);
         model.addAttribute("item",byId);
         List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
 
@@ -137,10 +138,13 @@
         List<TOperatorCity> list3 = operatorCityService.list(new LambdaQueryWrapper<TOperatorCity>().eq(TOperatorCity::getPid, one.getId()).eq(TOperatorCity::getType, 2));
         if(list3.size()>0){
             model.addAttribute("list1",list3);
+            System.out.println("===list3======="+list3);
+
         }else {
             TCity one1 = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, byId.getProvinceCode()));
             List<TCity> list1 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId,one1.getId()));
             model.addAttribute("list1",list1);
+            System.out.println("===list1======="+list1);
         }
         CityListQuery cityListQuery = new CityListQuery();
         cityListQuery.setOffset(1);
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 7ac3954..4af6710 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
@@ -194,6 +194,9 @@
             payment.setId(Long.valueOf(tCoursePackage.getId()));
 
             BigDecimal cashPayment = payment.getCashPayment();
+            if (cashPayment==null){
+                cashPayment = BigDecimal.ZERO;
+            }
             Integer totalClassHours = payment.getTotalClassHours();
             BigDecimal result =  new BigDecimal(0);
             if (totalClassHours!=0) {
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/GiftSearchDto.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/GiftSearchDto.java
index 61424c4..505f15b 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/GiftSearchDto.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/GiftSearchDto.java
@@ -7,5 +7,5 @@
 public class GiftSearchDto {
     String name;
     String phone;
-    Integer id;
+    Long id;
 }
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/SelectDto.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/SelectDto.java
index 0916ff1..26908f5 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/SelectDto.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/SelectDto.java
@@ -4,6 +4,6 @@
 
 @Data
 public class SelectDto {
-    Integer id;
+    Long id;
     String value;
 }
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/classRecord.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/classRecord.html
index 38673a9..7e6c1c8 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/classRecord.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/classRecord.html
@@ -46,7 +46,7 @@
                             <#button name="发布课后练习" icon="fa-refresh" clickFun="ClassRecord.afterClassExercises()" space="true"/>
                             <#button name="上传消课记录" icon="fa-refresh" clickFun="ClassRecord.cancellationRecord(${item.codeTime})" space="true"/>
                             <#button name="查看消课记录" icon="fa-refresh" clickFun="ClassRecord.lookCancellationRecord()" space="true"/>
-                            <#button name="手动预约" icon="fa-refresh" clickFun="ClassRecord.manualReservation()" space="true"/>
+<!--                            <#button name="手动预约" icon="fa-refresh" clickFun="ClassRecord.manualReservation()" space="true"/>-->
                         </div>
                         <#table id="managerTable"/>
                     </div>
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/classRecord2.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/classRecord2.html
new file mode 100644
index 0000000..f400693
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/classRecord2.html
@@ -0,0 +1,68 @@
+@layout("/common/_container.html"){
+<link rel="stylesheet" href="${ctxPath}/layui/css/layui.css"  media="all">
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-content">
+                <div class="row row-lg">
+                    <div class="col-sm-12">
+                        <div class="row">
+                            <h3>课包信息</h3>
+                            <input type="hidden" id="id" value="${item.id}">
+                            <input type="hidden" id="codeTime" value="${item.codeTime}">
+
+                            <div class="form-group" style="height: 10px;">
+                                <label class="col-sm-1 control-label" style="text-align: right;">所属门店:</label>
+                                <span class="col-sm-2" style="text-align: left;">${store.name}</span>
+                            </div>
+                            <div class="form-group" style="height: 10px;">
+                                <label class="col-sm-1 control-label" style="text-align: right;">课包名称:</label>
+                                <span class="col-sm-1" style="text-align: left;" id="name">${item.name}</span>
+                            </div>
+                            <div class="form-group" style="height: 10px;">
+                                <label class="col-sm-1 control-label" style="text-align: right;">授课教师:</label>
+                                <span class="col-sm-2" style="text-align: left;">${coach.name!}</span>
+                            </div>
+                            <div class="form-group" style="height: 10px;">
+                                <label class="col-sm-1 control-label" style="text-align: right;">已报名学员:</label>
+                                <span class="col-sm-2" style="text-align: left;">${counts}</span>
+                            </div>
+                            <div class="form-group" style="height: 10px;">
+                                <label class="col-sm-1 control-label" style="text-align: right;">上课时间:</label>
+                                <span class="col-sm-2" style="text-align: left;">${item.classWeeks}</span>
+                            </div>
+
+                            @for(time in times){
+                            <div class="form-group" style="height: 10px;">
+                                <label class="col-sm-1 control-label" style="text-align: right;"></label>
+                                <span class="col-sm-2" style="text-align: left;">${time}</span>
+                            </div>
+                            @}
+
+                        </div>
+                        <div class="hidden-xs" id="managerTableToolbar" role="group">
+                            <#button name="查看学员" icon="fa-plus" clickFun="ClassRecord.classRecord()"/>
+                            <#button name="取消本次" icon="fa-edit" clickFun="ClassRecord.cancelClassSchedule()" space="true"/>
+                            <#button name="发布课后练习" icon="fa-refresh" clickFun="ClassRecord.afterClassExercises()" space="true"/>
+                            <#button name="上传消课记录" icon="fa-refresh" clickFun="ClassRecord.cancellationRecord(${item.codeTime})" space="true"/>
+                            <#button name="查看消课记录" icon="fa-refresh" clickFun="ClassRecord.lookCancellationRecord()" space="true"/>
+<!--                            <#button name="手动预约" icon="fa-refresh" clickFun="ClassRecord.manualReservation()" space="true"/>-->
+                        </div>
+                        <#table id="managerTable"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="${ctxPath}/modular/system/coursePackage/classRecord2.js"></script>
+<script src="${ctxPath}/layui/layui.js" charset="utf-8"></script>
+<script>
+    laydate.render({
+        elem: '#beginTime'
+    });
+    laydate.render({
+        elem: '#endTime'
+    });
+</script>
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord.html
index 0c3bf46..7c08efb 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord.html
@@ -7,7 +7,7 @@
                 <div class="row row-lg">
                     <div class="col-sm-12">
                         <div class="row">
-                            <input type="text" id="type" value="${type}">
+                            <input type="hidden" id="type" value="${type}">
                             <input type="hidden" id="id" value="${item.id}">
                             <input type="hidden" id="name" value="${item.name}">
                             <div class="col-lg-10 col-sm-9">
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord2.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord2.html
index 4a22f03..5b260a5 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord2.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord2.html
@@ -7,7 +7,7 @@
                 <div class="row row-lg">
                     <div class="col-sm-12">
                         <div class="row">
-                            <input type="text" id="type" value="${type}">
+                            <input type="hidden" id="type" value="${type}">
                             <input type="hidden" id="id" value="${item.id}">
                             <input type="hidden" id="name" value="${item.name}">
                             <div class="col-lg-10 col-sm-9">
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord3.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord3.html
index 5f422d4..8b9a709 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord3.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackage/registrationRecord3.html
@@ -7,7 +7,7 @@
                 <div class="row row-lg">
                     <div class="col-sm-12">
                         <div class="row">
-                            <input type="text" id="type" value="${type}">
+                            <input type="hidden" id="type" value="${type}">
                             <input type="hidden" id="id" value="${item.id}">
                             <input type="hidden" id="name" value="${item.name}">
                             <div class="col-lg-10 col-sm-9">
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html
index 229b1df..7f04db7 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html
@@ -1228,16 +1228,14 @@
                                         "valueField": "id"
                                       }
                                     ],
-                                    "messages": {
-                                    },
+                                    "messages": {},
                                     "loadingConfig": {
-                                      "show": true
+                                      "show": false
                                     },
                                     "api": {
                                       "url": "/tStudent/giftSelect",
                                       "method": "post",
-                                      "messages": {
-                                      },
+                                      "messages": {},
                                       "requestAdaptor": "",
                                       "adaptor": "",
                                       "dataType": "form-data",
@@ -1246,7 +1244,8 @@
                                         "phone": "$phone",
                                         "id": "$id"
                                       }
-                                    }
+                                    },
+                                    "initFetch": false
                                   },
                                   {
                                     "type": "input-text",
@@ -1316,12 +1315,10 @@
                                   "method": "post",
                                   "requestAdaptor": "",
                                   "adaptor": "",
-                                  "messages": {
-                                  },
+                                  "messages": {},
                                   "dataType": "form-data"
                                 },
-                                "actions": [
-                                ],
+                                "actions": [],
                                 "onEvent": {
                                   "submitSucc": {
                                     "weight": 0,
@@ -1341,8 +1338,7 @@
                               {
                                 "id": "u:59d68a32f7fd",
                                 "type": "container",
-                                "body": [
-                                ],
+                                "body": [],
                                 "style": {
                                   "position": "static",
                                   "display": "block"
@@ -1354,8 +1350,7 @@
                             "showLoading": true,
                             "className": "app-popover",
                             "id": "u:552bd1b3464d",
-                            "actions": [
-                            ],
+                            "actions": [],
                             "canAccessSuperData": false
                           }
                         }
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEditTTT.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEditTTT.html
index b348230..d02be05 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEditTTT.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEditTTT.html
@@ -60,7 +60,8 @@
                   "name": "id",
                   "id": "u:d038053014ca",
                   "mode": "horizontal",
-                  "size": "md"
+                  "size": "md",
+                  "hidden": true
                 },
                 {
                   "type": "input-text",
@@ -68,7 +69,8 @@
                   "name": "ids",
                   "id": "u:223b7f2a1a5b",
                   "mode": "horizontal",
-                  "size": "md"
+                  "size": "md",
+                  "hidden": true
                 },
                 {
                   "label": "换课课程:",
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/classRecord2.js b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/classRecord2.js
new file mode 100644
index 0000000..fd03170
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/classRecord2.js
@@ -0,0 +1,440 @@
+/**
+ * 系统管理--用户管理的单例对象
+ */
+let ClassRecord = {
+    id: "managerTable",//表格id
+    seItem: null,		//选中的条目
+    table: null,
+    layerIndex: -1,
+    courseList: null
+};
+/**
+ * 初始化表格的列
+ */
+ClassRecord.initColumn = function () {
+    let columns = [
+        {field: 'selectItem', radio: true},
+        {title: 'id', field: 'id', visible: false, align: 'center', valign: 'middle'},
+        {title: '日期', field: 'classDate', align: 'center', valign: 'middle'},
+        {title: '请假学员', field: 'registered', align: 'center', valign: 'middle'},
+        {title: '实到学员', field: 'actualArrival', align: 'center', valign: 'middle',
+            formatter: function (v, row) {
+                if (row.absencesNumber === undefined) {
+                    return 0;
+                } else {
+                    return v;
+                }
+            }
+        },
+        {title: '未到学员', field: 'nonArrival', align: 'center', valign: 'middle',
+            formatter: function (v, row) {
+                if (row.absencesNumber === undefined) {
+                    return 0;
+                } else {
+                    return v;
+                }
+            }
+        },
+        {title: '课后练习', field: 'courseId', align: 'center', valign: 'middle',
+            formatter: function (v) {
+                if (typeof v === "undefined") {
+                    return '未布置';
+                } else {
+                    return '已布置';
+                }
+            }
+        },
+        {title: '状态', field: 'status', align: 'center', valign: 'middle',
+            formatter: function (v) {
+                switch (v) {
+                    case 1:
+                        return '未开始';
+                    case 2:
+                        return '已开始';
+                    case 3:
+                        return '已结束';
+                    case 4:
+                        return '已取消';
+                }
+            }
+        },
+        {title: '扣除课时', field: 'deductClassHour', align: 'center', valign: 'middle'},
+        {title: '取消记录', field: 'absencesNumber', align: 'center', valign: 'middle',
+            formatter: function (v) {
+                if (typeof v === "undefined") {
+                    return '未上传';
+                } else {
+                    return '已上传';
+                }
+            }
+        },
+    ];
+    return columns;
+};
+
+/**
+ * 检查是否选中
+ */
+ClassRecord.check = function () {
+    let selected = $('#' + this.id).bootstrapTable('getSelections');
+    if (selected.length == 0) {
+        Feng.info("请先选中表格中的某一记录!");
+        return false;
+    } else {
+        ClassRecord.seItem = selected[0];
+        return true;
+    }
+};
+
+
+
+/**
+ * 点击修改按钮时
+ * @param userId 管理员id
+ */
+ClassRecord.classRecord = function () {
+    if (this.check()) {
+        let index = layer.open({
+            type: 2,
+            title: '查看学员',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/coursePackage/openCoursePackageStudent?id=' + this.seItem.id
+        });
+        this.layerIndex = index;
+    }
+};
+
+
+
+/**
+ * 删除用户
+ */
+ClassRecord.cancelClassSchedule = function () {
+    if (this.check()) {
+        let operation = function(){
+            let ajax = new $ax(Feng.ctxPath + "/coursePackage/cancelClassSchedule", function (res) {
+                if(res.code == 200){
+                    Feng.success("取消成功!");
+                    ClassRecord.table.refresh();
+                }else{
+                    Feng.error(res.msg);
+                }
+            }, function (data) {
+                Feng.error("取消失败!" + data.responseJSON.message + "!");
+            });
+            ajax.set("id", ClassRecord.seItem.id);
+            ajax.start();
+        };
+
+        Feng.confirm("确定取消本次",operation);
+    }
+};
+
+
+
+ClassRecord.afterClassExercises = function () {
+    if (this.check()) {
+        var ajax = new $ax(Feng.ctxPath + "/course/queryCourseByType", function (data) {
+            ClassRecord.courseList = data;
+            let htmlStr =
+                '<div class="form-horizontal">' +
+                '   <div class="col-sm-11" style="padding: 20px;">' +
+                '       <div class="form-group">\n' +
+                '           <label class="col-sm-3 control-label">视频类型:</label>\n' +
+                '           <div class="col-sm-9" style="margin-top: 6px;">\n' +
+                '               <span>课后练习</span>' +
+                '           </div>\n' +
+                '       </div>' +
+                '       <div class="form-group">\n' +
+                '           <label class="col-sm-3 control-label">视频名称:</label>\n' +
+                '           <div class="col-sm-9">\n' +
+                '               <select class="form-control" id="courseId">' +
+                '                   <option value="">请选择</option>';
+            for (let i = 0; i < data.length; i++) {
+                htmlStr += '<option value="' + data[i].id + '">' + data[i].name + '</option>';
+            }
+            htmlStr += '        </select>' +
+            '               </div>\n' +
+            '           </div>' +
+                '       <div class="form-group">\n' +
+                '           <label class="col-sm-3 control-label">视频封面:</label>\n' +
+                '           <div class="col-sm-9">\n' +
+                '               <img src="" style="height: 150px;" id="coverDrawing"/>' +
+                '           </div>\n' +
+                '       </div>' +
+                '       <div class="form-group">\n' +
+                '           <label class="col-sm-3 control-label">视频简介:</label>\n' +
+                '           <div class="col-sm-9">\n' +
+                '               <textarea class="form-control" id="introduce" style="height: 200px;"></textarea>' +
+                '           </div>\n' +
+                '       </div>' +
+                '       <div class="form-group">\n' +
+                '           <label class="col-sm-3 control-label">可获得积分:</label>\n' +
+                '           <div class="col-sm-9">\n' +
+                '               <input class="form-control" id="integral" type="number" min="0">' +
+                '           </div>\n' +
+                '       </div>' +
+            '       </div>' +
+            '</div>';
+            layer.open({
+                type: 1
+                , title: '选择课程'
+                , area: ['50%', '90%']
+                , offset: 'auto' //具体配置参考:http://www.layui.com/doc/modules/layer.html#offset
+                , id: 'layerDemo' //防止重复弹出cge
+                , content: htmlStr
+                , btn: ['保存', '关闭']
+                , btnAlign: 'c' //按钮居中
+                , shade: 0.5 //不显示遮罩
+                , yes: function () {
+                    let courseId = $('#courseId').val();
+                    let integral = $('#integral').val();
+                    if(null == courseId || '' == courseId){
+                        Feng.error("请选择有效的课程");
+                        return
+                    }
+                    if(null == integral || '' == integral){
+                        Feng.error("请输入有效的积分");
+                        return
+                    }
+                    let ajax = new $ax(Feng.ctxPath + "/coursePackage/afterClassExercises", function (res) {
+                        if(res.code == 200){
+                            Feng.success("保存成功!");
+                            layer.closeAll();
+                            RegistrationRecord.table.refresh();
+                        }else{
+                            Feng.error(res.msg);
+                        }
+                    }, function (data) {
+                        Feng.error("保存失败!" + data.responseJSON.message + "!");
+                    });
+                    ajax.set("id", ClassRecord.seItem.id);
+                    ajax.set("courseId", courseId);
+                    ajax.set("integral", integral);
+                    ajax.start();
+                },
+            });
+
+            $('#courseId').change(function () {
+                let id = $(this).val();
+                for (let i = 0; i < ClassRecord.courseList.length; i++) {
+                    if(ClassRecord.courseList[i].id == id){
+                        $('#coverDrawing').attr("src", ClassRecord.courseList[i].coverDrawing);
+                        $('#introduce').text(ClassRecord.courseList[i].introduce);
+                    }
+                }
+            })
+
+            $('#courseId').val(ClassRecord.seItem.courseId);
+            $('#integral').val(ClassRecord.seItem.integral);
+
+        }, function (data) {
+            Feng.error("获取失败!" + data.responseJSON.message + "!");
+        });
+        ajax.set('type', 1);
+        ajax.start();
+    }
+};
+
+
+ClassRecord.cancellationRecord = function(i){
+    if(this.check()){
+        let htmlStr =
+
+        '<div class="form-horizontal">' +
+            '   <div class="col-sm-11" style="padding: 20px;">' +
+            '       <div class="form-group">\n' +
+            '           <label class="col-sm-2"></label>'+
+            '           <label class="col-sm-8 control-label" style="text-align: left;">课程名称:' + $("#name").text() + '</label>\n' +
+            '       </div>' +
+            '       <div class="form-group">\n' +
+            '           <label class="col-sm-2"></label>'+
+            '           <label class="col-sm-8 control-label" style="text-align: left;">*上传凭证(请上传小于5张图片):</label>\n' +
+            '       </div>' +
+            '       <div class="form-group">\n' +
+            '           <label class="col-sm-2"></label>'+
+            '           <div class="col-sm-8" style="min-height: 200px;">\n' +
+            '               <div id="cancelClasses"></div>' +
+            '               <input type="file" id="file" style="display: none;"/>' +
+            '               <button onclick="uploadImgs()" style="width: 60px;padding: 10px; color: white;background-color: #0d8ddb;border-radius: 5px;border: none;bottom: 50%;position: absolute;"> 上传 </button>' +
+            '           </div>\n' +
+            '       </div>' +
+            '       </div>' +
+            '</div>';
+        layer.open({
+            type: 1
+            , title: '上传消课记录'
+            , area: ['80%', '90%']
+            , offset: 'auto' //具体配置参考:http://www.layui.com/doc/modules/layer.html#offset
+            , id: 'layerDemo' //防止重复弹出cge
+            , content: htmlStr
+            , btn: ['保存', '关闭']
+            , btnAlign: 'c' //按钮居中
+            , shade: 0.5 //不显示遮罩
+            , yes: function () {
+                let cancelClasses = $('#cancelClasses').html();
+                let deductClassHour = $('#deductClassHour').val();
+                if(null == cancelClasses || '' == cancelClasses){
+                    Feng.error("请上传凭证图片");
+                    return
+                }
+                if(null == deductClassHour || '' == deductClassHour){
+                    Feng.error("请输入有效的扣除课时数");
+                    return
+                }
+                let div_array = $('#cancelClasses').find('div');
+                let str = '';
+                for (let i = 0; i < div_array.length; i++) {
+                    let v = $($(div_array[i]).find('img')[0]).attr('src');
+                    str += v + ";";
+                }
+
+                let ajax = new $ax(Feng.ctxPath + "/coursePackage/cancellationRecord", function (res) {
+                    if(res.code == 200){
+                        Feng.success("保存成功!");
+                        layer.closeAll();
+                        RegistrationRecord.table.refresh();
+                    }else{
+                        Feng.error(res.msg);
+                    }
+                }, function (data) {
+                    Feng.error("保存失败!" + data.responseJSON.message + "!");
+                });
+                ajax.set("id", ClassRecord.seItem.id);
+                ajax.set("cancelClasses", str.substring(0, str.length - 1));
+                ajax.set("deductClassHour", deductClassHour);
+                ajax.start();
+            },
+        });
+
+        $('#file').on('change', function () {
+            var formData = new FormData()  //创建一个forData
+            formData.append('file', $('#file')[0].files[0]) //把file添加进去  name命名为img
+            layer.load(); //上传loading
+            $.ajax({
+                url: Feng.ctxPath + '/mgr/uploadImg',
+                data: formData,
+                type: "POST",
+                async: true,
+                cache: false,
+                contentType: false,
+                processData: false,
+                success: function(res) {
+                    layer.closeAll('loading'); //关闭loading
+                    $('#file').val('');
+                    $('#cancelClasses').append('' +
+                        '<div style="float: left; margin: 10px; width: 200px;">' +
+                        '   <i class="fa fa-close" style="font-size:24px;color: red;position: relative;top: 10px;right: -190px" onclick="removeImg(this)"></i>' +
+                        '   <div style="width: 100%;"><img src="' + res + '" style="width: 100%;"/></div>' +
+                        '</div>')
+                }
+            })
+        })
+    }
+}
+
+
+ClassRecord.lookCancellationRecord = function(){
+    if(this.check()){
+        if(ClassRecord.seItem.cancelClasses == '' || ClassRecord.seItem.cancelClasses == null){
+            Feng.error("请先上传消课凭证");
+            return
+        }
+        let imgs = ClassRecord.seItem.cancelClasses.split(";");
+        let htmlStr =
+            '<div class="form-horizontal">' +
+            '   <div class="col-sm-11" style="padding: 20px;">' +
+            '       <div class="form-group">\n' +
+            '           <label class="col-sm-8 control-label">课程名称:' + $("#name").text() + '</label>\n' +
+            '       </div>' +
+            '       <div class="form-group">\n' +
+            '           <label class="col-sm-8 control-label">*上传凭证(请上传小于5张图片):</label>\n' +
+            '       </div>' +
+            '       <div class="form-group">\n' +
+            '           <div class="col-sm-8" style="min-height: 200px;">\n' +
+            '               <div id="cancelClasses">';
+
+        for (let i = 0; i < imgs.length; i++) {
+            htmlStr += '<div><img src="' + imgs[i] + '" style="height: 150px;"/></div>&nbsp;&nbsp;&nbsp;&nbsp;';
+        }
+
+        htmlStr += '</div>' +
+            '           </div>\n' +
+            '       </div>' +
+            '       <div class="form-group">\n' +
+            '           <label class="col-sm-3 control-label">扣除课时数:</label>\n' +
+            '           <div class="col-sm-9">\n' +
+            '               <input class="form-control" id="deductClassHour" value="' + ClassRecord.seItem.deductClassHour + '" type="number" min="0">' +
+            '           </div>\n' +
+            '       </div>' +
+            '       </div>' +
+            '</div>';
+        layer.open({
+            type: 1
+            , title: '查看消课记录'
+            , area: ['50%', '90%']
+            , offset: 'auto' //具体配置参考:http://www.layui.com/doc/modules/layer.html#offset
+            , id: 'layerDemo' //防止重复弹出cge
+            , content: htmlStr
+            , btnAlign: 'c' //按钮居中
+            , shade: 0.5 //不显示遮罩
+            , yes: function () {
+            },
+        });
+    }
+}
+
+ClassRecord.manualReservation = function(){
+    if(this.check()){
+        let index = layer.open({
+            type: 2,
+            title: '手动预约',
+            area: ['100%', '100%'], //宽高
+            fix: false, //不固定
+            maxmin: true,
+            content: Feng.ctxPath + '/coursePackage/openManualReservation?id=' + this.seItem.id
+        });
+        this.layerIndex = index;
+    }
+}
+
+function uploadImgs(){
+    let num = $('#cancelClasses>div').length;
+    if(num >= 5){
+        Feng.error("最多只能上传5张图片");
+        return;
+    }
+    $('#file').click();
+}
+
+
+function removeImg(e){
+    $(e).parent('div').remove();
+}
+
+
+
+
+ClassRecord.resetSearch = function () {
+    ClassRecord.search();
+}
+
+ClassRecord.search = function () {
+    let queryData = {};
+    queryData['id'] = $('#id').val();
+    ClassRecord.table.refresh({query: queryData});
+}
+
+
+$(function () {
+    let defaultColunms = ClassRecord.initColumn();
+    let table = new BSTable(ClassRecord.id, "/coursePackage/queryClassRecord", defaultColunms);
+    // 设置物理分页server(逻辑分页client)
+    table.setPaginationType("server");
+    table.setQueryParams({
+        id: $('#id').val()
+    })
+    ClassRecord.table = table.init();
+});
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage_info.js b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage_info.js
index 454d17d..0ff0c09 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage_info.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/coursePackage_info.js
@@ -119,22 +119,22 @@
         Feng.error("授课教师不能为空");
         return
     }
-    if(null == maxSubscribeNumber || '' == maxSubscribeNumber){
-        Feng.error("最多预约人数不能为空");
-        return
-    }
+    // if(null == maxSubscribeNumber || '' == maxSubscribeNumber){
+    //     Feng.error("最多预约人数不能为空");
+    //     return
+    // }
     // if(null == codeTime || '' == codeTime){
     //     Feng.error("扣除课时数不能为空不能为空");
     //     return
     // }
-    if(null == classStartTime || '' == classStartTime){
-        Feng.error("上课时间不能为空");
-        return
-    }
-    if(null == classWeeks || '' == classWeeks){
-        Feng.error("上课时间不能为空");
-        return
-    }
+    // if(null == classStartTime || '' == classStartTime){
+    //     Feng.error("上课时间不能为空");
+    //     return
+    // }
+    // if(null == classWeeks || '' == classWeeks){
+    //     Feng.error("上课时间不能为空");
+    //     return
+    // }
     classWeeks = classWeeks.substring(0, classWeeks.length - 1);
 
     if(null == coverDrawing || '' == coverDrawing){
@@ -276,22 +276,22 @@
         Feng.error("授课教师不能为空");
         return
     }
-    if(null == maxSubscribeNumber || '' == maxSubscribeNumber){
-        Feng.error("最多预约人数不能为空");
-        return
-    }
+    // if(null == maxSubscribeNumber || '' == maxSubscribeNumber){
+    //     Feng.error("最多预约人数不能为空");
+    //     return
+    // }
     // if(null == codeTime || '' == codeTime){
     //     Feng.error("扣除课时不能为空");
     //     return
     // }
-    if(null == classStartTime || '' == classStartTime){
-        Feng.error("上课时间不能为空");
-        return
-    }
-    if(null == classWeeks || '' == classWeeks){
-        Feng.error("上课时间不能为空");
-        return
-    }
+    // if(null == classStartTime || '' == classStartTime){
+    //     Feng.error("上课时间不能为空");
+    //     return
+    // }
+    // if(null == classWeeks || '' == classWeeks){
+    //     Feng.error("周不能为空");
+    //     return
+    // }
     classWeeks = classWeeks.substring(0, classWeeks.length - 1);
 
     if(null == coverDrawing || '' == coverDrawing){
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js
index 991e711..11084e8 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord.js
@@ -20,25 +20,42 @@
         {title: '购课学员', field: 'studentName', align: 'center', valign: 'middle'},
         {title: '报名时间', field: 'insertTime', align: 'center', valign: 'middle'},
         {title: '总课时数', field: 'totalClassHours', align: 'center', valign: 'middle'},
-        {title: '剩余课时数', field: 'laveClassHours', align: 'center', valign: 'middle',rowStyle: function(row, index) {
-                // 参数说明:
-                //row, 行,row.xxx,能获取某个字段的值
-                //index,索引,第几行
-
-                // 逻辑判断
-                // .....
-                return  {"background-color":'rgba(208,9,9,0.7)'};
+        {
+            title: '剩余课时数',
+            field: 'laveClassHours',
+            align: 'center',
+            valign: 'middle',
+            formatter: function (value, row) {
+                if (value < 3) {
+                    return '<div style="color: red;">' + value + '</div>';
+                } else {
+                    return value;
+                }
             }
         },
         {title: '已上课时数', field: 'already', align: 'center', valign: 'middle'},
         {title: '请假次数', field: 'absencesNumber', align: 'center', valign: 'middle'},
-        {title: '状态', field: 'status', align: 'center', valign: 'middle',
+        {
+            title: '状态',
+            field: 'status',
+            align: 'center',
+            valign: 'middle',
             formatter: function (v) {
                 switch (v) {
                     case 1:
                         return '正常';
                     case 2:
-                        return '<a href="#" onclick="">已退课-查看凭证</a>';
+                        return '已退课';
+                    case 3:
+                        return '换课中';
+                    case 4:
+                        return '申请退费中';
+                    case 5:
+                        return '已转移';
+                    case 6:
+                        return '已赠课';
+                    default:
+                        return '';
                 }
             }
         }
@@ -51,8 +68,21 @@
  */
 RegistrationRecord.check = function () {
     let selected = $('#' + this.id).bootstrapTable('getSelections');
+    if (selected.length > 1) {
+        Feng.info("只能选中表格中的一条记录!");
+        return false;
+    } else {
+        RegistrationRecord.seItem = selected[0];
+        RegistrationRecord.seItem1 = selected;
+
+        return true;
+    }
+};
+
+RegistrationRecord.check1 = function () {
+    let selected = $('#' + this.id).bootstrapTable('getSelections');
     if (selected.length == 0) {
-        Feng.info("请先选中表格中的某一记录!");
+        Feng.info("必须选中表格中的某一记录!");
         return false;
     } else {
         RegistrationRecord.seItem = selected[0];
@@ -79,7 +109,7 @@
 
 
 RegistrationRecord.holiClass = function () {
-    if (this.check()) {
+    if (this.check1()) {
         var ids = RegistrationRecord.seItem1.map(function(item) {
             return item.id;
         }).join(",");
@@ -215,8 +245,8 @@
 RegistrationRecord.makeUpMissedLessons = function () {
     if (this.check()) {
         let operation = function(){
-            let ajax = new $ax(Feng.ctxPath + "/coursePackage/makeUpMissedLessons", function () {
-                Feng.success("补课成功!");
+            let ajax = new $ax(Feng.ctxPath + "/coursePackage/makeUpMissedLessons", function (data) {
+                Feng.success(data.msg);
                 RegistrationRecord.table.refresh();
             }, function (data) {
                 Feng.error("补课失败!" + data.responseJSON.message + "!");
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord2.js b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord2.js
index e7b35e4..34e71bc 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord2.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/coursePackage/registrationRecord2.js
@@ -72,7 +72,7 @@
         area: ['100%', '100%'], //宽高
         fix: false, //不固定
         maxmin: true,
-        content: Feng.ctxPath + '/coursePackage/openClassRecord?id=' + $('#id').val()
+        content: Feng.ctxPath + '/coursePackage/openClassRecord1?id=' + $('#id').val()
     });
     this.layerIndex = index;
 };

--
Gitblit v1.7.1