From cf28c25d1a8e360ab328c5435d289c5cb9b414c1 Mon Sep 17 00:00:00 2001
From: nickchange <126672920+nickchange@users.noreply.github.com>
Date: 星期六, 25 十一月 2023 21:06:34 +0800
Subject: [PATCH] 11.26

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java |   29 
 cloud-server-account/src/main/resources/mapper/TStudentMapper.xml                                           |    5 
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java             |  336 +++++++-----
 cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml                               |    2 
 cloud-server-other/src/main/java/com/dsh/other/service/IUserService.java                                    |   23 
 cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java                               |   13 
 cloud-server-course/src/main/java/com/dsh/course/service/ICoursePackageOrderStudentService.java             |   12 
 cloud-server-other/src/main/java/com/dsh/other/mapper/UserMapper.java                                       |   24 
 cloud-server-other/src/main/java/com/dsh/other/model/User.java                                              |  270 ++++++++++
 cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageScheduling.java                        |   15 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/EvaluateStudentServiceImpl.java             |   17 
 cloud-server-account/src/main/java/com/dsh/account/feignclient/other/SiteClient.java                        |    3 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java                    |  116 ---
 cloud-server-other/src/main/java/com/dsh/other/service/impl/UserServiceImpl.java                            |   29 +
 cloud-server-course/src/main/java/com/dsh/config/Sharding_jdbc/ShardingConfig.java                          |    3 
 cloud-server-account/src/main/java/com/dsh/account/entity/User.java                                         |  270 ++++++++++
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java         |  176 ++----
 cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageOrderStudentServiceImpl.java     |  189 ++++++
 cloud-server-other/src/main/java/com/dsh/other/util/TaskUtil.java                                           |    3 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java                |   23 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tStudent/tStudentEdit.html                      |    6 
 21 files changed, 1,164 insertions(+), 400 deletions(-)

diff --git a/cloud-server-account/src/main/java/com/dsh/account/entity/User.java b/cloud-server-account/src/main/java/com/dsh/account/entity/User.java
new file mode 100644
index 0000000..12feb49
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/entity/User.java
@@ -0,0 +1,270 @@
+package com.dsh.account.entity;
+
+
+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 java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 管理员表
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2017-07-11
+ */
+@TableName("sys_user")
+public class User extends Model<User> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+	@TableId(value="id", type= IdType.AUTO)
+	private Integer id;
+    /**
+     * 头像
+     */
+	private String avatar;
+    /**
+     * 账号
+     */
+	private String account;
+    /**
+     * 密码
+     */
+	private String password;
+    /**
+     * md5密码盐
+     */
+	private String salt;
+    /**
+     * 名字
+     */
+	private String name;
+    /**
+     * 生日
+     */
+	private Date birthday;
+    /**
+     * 性别(1:男 2:女)
+     */
+	private Integer sex;
+    /**
+     * 电子邮件
+     */
+	private String email;
+    /**
+     * 电话
+     */
+	private String phone;
+    /**
+     * 角色id
+     */
+	private String roleid;
+    /**
+     * 部门id
+     */
+	private Integer deptid;
+    /**
+     * 状态(1:启用  2:冻结  3:删除)
+     */
+	private Integer status;
+    /**
+     * 创建时间
+     */
+	private Date createtime;
+    /**
+     * 保留字段
+     */
+	private Integer version;
+	/**
+	 * 对象类型(1=平台,2=城市管理员,3=门店)
+	 */
+	@TableField("objectType")
+	private Integer objectType;
+	/**
+	 * objectId
+	 */
+	@TableField("objectId")
+	private Integer objectId;
+	@TableField("idCard")
+	private String idCard;
+
+	public String getIdCard() {
+		return idCard;
+	}
+
+	public void setIdCard(String idCard) {
+		this.idCard = idCard;
+	}
+
+	public Integer getId() {
+		return id;
+	}
+
+	public void setId(Integer id) {
+		this.id = id;
+	}
+
+	public String getAvatar() {
+		return avatar;
+	}
+
+	public void setAvatar(String avatar) {
+		this.avatar = avatar;
+	}
+
+	public String getAccount() {
+		return account;
+	}
+
+	public void setAccount(String account) {
+		this.account = account;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public String getSalt() {
+		return salt;
+	}
+
+	public void setSalt(String salt) {
+		this.salt = salt;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Date getBirthday() {
+		return birthday;
+	}
+
+	public void setBirthday(Date birthday) {
+		this.birthday = birthday;
+	}
+
+	public Integer getSex() {
+		return sex;
+	}
+
+	public void setSex(Integer sex) {
+		this.sex = sex;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getPhone() {
+		return phone;
+	}
+
+	public void setPhone(String phone) {
+		this.phone = phone;
+	}
+
+	public String getRoleid() {
+		return roleid;
+	}
+
+	public void setRoleid(String roleid) {
+		this.roleid = roleid;
+	}
+
+	public Integer getDeptid() {
+		return deptid;
+	}
+
+	public void setDeptid(Integer deptid) {
+		this.deptid = deptid;
+	}
+
+	public Integer getStatus() {
+		return status;
+	}
+
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
+
+	public Date getCreatetime() {
+		return createtime;
+	}
+
+	public void setCreatetime(Date createtime) {
+		this.createtime = createtime;
+	}
+
+	public Integer getVersion() {
+		return version;
+	}
+
+	public void setVersion(Integer version) {
+		this.version = version;
+	}
+
+	public Integer getObjectType() {
+		return objectType;
+	}
+
+	public void setObjectType(Integer objectType) {
+		this.objectType = objectType;
+	}
+
+	public Integer getObjectId() {
+		return objectId;
+	}
+
+	public void setObjectId(Integer objectId) {
+		this.objectId = objectId;
+	}
+
+	@Override
+	protected Serializable pkVal() {
+		return this.id;
+	}
+
+	@Override
+	public String toString() {
+		return "User{" +
+			"id=" + id +
+			", avatar=" + avatar +
+			", account=" + account +
+			", password=" + password +
+			", salt=" + salt +
+			", name=" + name +
+			", birthday=" + birthday +
+			", sex=" + sex +
+			", email=" + email +
+			", phone=" + phone +
+			", roleid=" + roleid +
+			", deptid=" + deptid +
+			", status=" + status +
+			", createtime=" + createtime +
+			", version=" + version +
+			"}";
+	}
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/SiteClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/SiteClient.java
index 59cb8b6..bb4f0a6 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/SiteClient.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/SiteClient.java
@@ -1,6 +1,7 @@
 package com.dsh.account.feignclient.other;
 
 import com.dsh.account.entity.OperatorUser;
+import com.dsh.account.entity.User;
 import com.dsh.account.feignclient.competition.model.BillingDataRequestVo;
 import com.dsh.account.feignclient.other.model.SiteBooking;
 import com.dsh.account.model.BillingRequestOfType;
@@ -39,4 +40,6 @@
 
     @PostMapping("/base/site/counts")
     Integer counts(Integer stuId);
+    @PostMapping("/base/site/queryUserName")
+    User queryUserName(Integer coachId);
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/EvaluateStudentServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/EvaluateStudentServiceImpl.java
index 29503c8..a1d0052 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/EvaluateStudentServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/EvaluateStudentServiceImpl.java
@@ -5,6 +5,8 @@
 import com.dsh.account.entity.Coach;
 import com.dsh.account.entity.EvaluateStudent;
 import com.dsh.account.entity.TStudent;
+import com.dsh.account.entity.User;
+import com.dsh.account.feignclient.other.SiteClient;
 import com.dsh.account.mapper.EvaluateStudentMapper;
 import com.dsh.account.mapper.TStudentMapper;
 import com.dsh.account.model.vo.commentDetail.StuCommentsVo;
@@ -38,24 +40,27 @@
 
     @Autowired
     private CoachService coachService;
-
+    @Resource
+    private SiteClient siteClient;
     @Override
     public List<StuCommentsVo> queryStuCommentsList(Integer stuId) {
         List<StuCommentsVo> stuCommentsVos = new ArrayList<>();
         TStudent tStudent = tstuMapper.selectById(stuId);
         List<EvaluateStudent> evaluateStudents = this.list(new QueryWrapper<EvaluateStudent>()
-                .eq("studentId", stuId));
+                .eq("studentId",stuId ));
 
 
-        if (evaluateStudents.size() > 0) {
+        if (evaluateStudents.size() > 0){
             for (EvaluateStudent evaluateStudent : evaluateStudents) {
                 StuCommentsVo vo = new StuCommentsVo();
 
-                Coach coach = coachService.getById(evaluateStudent.getCoachId());
+//                Coach coach = coachService.getById(evaluateStudent.getCoachId());
+                User user = siteClient.queryUserName(evaluateStudent.getCoachId());
+
 //                vo.setHeadImg(tStudent.getHeadImg());
-                vo.setHeadImg(coach.getDiploma());
+                vo.setHeadImg(user.getAvatar());
 //                vo.setStuName(tStudent.getName());
-                vo.setStuName(coach.getName());
+                vo.setStuName(user.getName());
                 vo.setComTime(format.format(tStudent.getInsertTime()));
                 vo.setContents(evaluateStudent.getContent());
                 String imgs = evaluateStudent.getImgs();
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 870a43f..17ea143 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
@@ -234,107 +234,7 @@
 
     @Override
     public List<PurchaseRecordVo> queryDeduRecordDetails(RecordTimeRequest timeRequest, Integer appUserId) {
-        List<PurchaseRecordVo> purchaseRecordVoList = new ArrayList<>();
-        String time = timeRequest.getTime();
-
         List<PurchaseRecordVo> record1 = sessionNameClient.getRecord(timeRequest);
-
-//
-//        Date monthStart = null;
-//        Date monthEnd = null;
-//        if (StringUtils.hasText(time)) {
-//            monthStart = DateTimeHelper.getCurrentIdetMouthStart(time);
-//            monthEnd = DateTimeHelper.getCurrentIdeaMouthEnd(time);
-//        } else {
-//            monthStart = DateTimeHelper.getCurrentMouthStart();
-//            monthEnd = DateTimeHelper.getCurrentMouthEnd();
-//        }
-//
-//        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
-//        Date startTime = DateTimeHelper.getCurrentIdetMouthStart(simpleDateFormat.format(monthStart));
-//        Date endTime = DateTimeHelper.getCurrentIdeaMouthEnd(simpleDateFormat.format(monthEnd));
-//        GetStuSourseList getStuSourseList = new GetStuSourseList();
-//        getStuSourseList.setStartTime(startTime);
-//        getStuSourseList.setEndTime(endTime);
-//        getStuSourseList.setAppUserId(appUserId);
-//        // 报名赛事
-//        List<PurchaseRecordVo> stuSourseList = dcttClient.getStuSourseList1(getStuSourseList);
-//        purchaseRecordVoList.addAll(stuSourseList);
-//
-//        GetStuSessionList sessionList = new GetStuSessionList();
-//        sessionList.setStartTime(startTime);
-//        sessionList.setEndTime(endTime);
-//        sessionList.setStuId(timeRequest.getStuId());
-//        sessionList.setAppUserId(appUserId);
-//        List<PurchaseRecordVo> cancelCourseList = cancelcClient.getCancelCourseList(sessionList);
-//
-//        purchaseRecordVoList.addAll(cancelCourseList);
-//        GetStuSessionList getStuSessionList = new GetStuSessionList();
-//        getStuSessionList.setStartTime(startTime);
-//        getStuSessionList.setEndTime(endTime);
-//        getStuSessionList.setStuId(timeRequest.getStuId());
-//        getStuSessionList.setAppUserId(appUserId);
-//        // 购买课包
-//        List<PurchaseRecordVo> purchaseRecordVos = sessionNameClient.queryCourseDetails(getStuSessionList);
-//        purchaseRecordVoList.addAll(purchaseRecordVos);
-//        List<TAppUser> tAppUsers = tauMapper.selectList(new QueryWrapper<TAppUser>()
-//                .eq("referralUserId",appUserId )
-//                .between("insertTime",startTime ,endTime));
-//        if (ToolUtil.isNotEmpty(tAppUsers)){
-//            List<Integer> userIds = tAppUsers.stream().map(TAppUser::getId).collect(Collectors.toList());
-//            IntrduceOfUserRequest request  = new IntrduceOfUserRequest();
-//            request.setStartTime(startTime);
-//            request.setEndTime(endTime);
-//            request.setUserIds(userIds);
-//            // 介绍有礼
-//            List<PurchaseRecordVo> purchaseRecordVos1 = idrClient.queryAppUsersofIntroduce(request);
-//            purchaseRecordVoList.addAll(purchaseRecordVos1);
-//        }
-//
-//        LambdaQueryWrapper<TCourseInfoRecord> eq = new LambdaQueryWrapper<TCourseInfoRecord>().eq(TCourseInfoRecord::getUserId, appUserId);
-//        if(timeRequest.getType()!=null){
-//            eq.eq(TCourseInfoRecord::getType,timeRequest.getType());
-//        }
-//        if (timeRequest.getLessionId()!=null){
-//            eq.eq(TCourseInfoRecord::getCourseId,timeRequest.getLessionId());
-//
-//        }
-//        // 2.0其他记录
-//        List<TCourseInfoRecord> list = courseInfoRecordService.list(eq);
-//        List<PurchaseRecordVo> list1=new ArrayList<>();
-//        for (TCourseInfoRecord tCourseInfoRecord : list) {
-//            PurchaseRecordVo purchaseRecordVo = new PurchaseRecordVo();
-//            purchaseRecordVo.setPurchaseTime(new SimpleDateFormat("MM-dd HH:mm").format(tCourseInfoRecord.getTime()));
-//            purchaseRecordVo.setPurchaseType(tCourseInfoRecord.getName());
-//            if(tCourseInfoRecord.getType()==1){
-//                purchaseRecordVo.setPurchaseAmount("+"+tCourseInfoRecord.getNum());
-//            }else {
-//                purchaseRecordVo.setPurchaseAmount("-"+tCourseInfoRecord.getNum());
-//            }
-//            list1.add(purchaseRecordVo);
-//        }
-//        purchaseRecordVoList.addAll(list1);
-//
-//        if (purchaseRecordVoList.size() > 0 ){
-//            purchaseRecordVoList = purchaseRecordVoList.stream()
-//                    .filter(record -> {
-//                        String fieldValue = record.getPurchaseAmount();
-//                        if (ToolUtil.isNotEmpty(timeRequest.getType())){
-//                            switch (timeRequest.getType()){
-//                                case 2:
-//                                    return fieldValue != null && !fieldValue.isEmpty() && fieldValue.charAt(0) == '-';
-//                                case 1:
-//                                    return fieldValue != null && !fieldValue.isEmpty() && fieldValue.charAt(0) == '+';
-//                                default:
-//                                    break;
-//                            }
-//                        }
-//                        return true;
-//                    })
-//                    .collect(Collectors.toList());
-//        }
-//
-//        purchaseRecordVoList = dealDataOfTime(purchaseRecordVoList);
         return record1;
     }
 
@@ -879,9 +779,23 @@
         return this.baseMapper.getGiftSelect(giftSearchDto);
     }
 
+    @Resource
+    private SiteClient siteClient;
+
+
     @Override
     public List<Map<String, Object>> queryCom(Integer id) {
-        return this.baseMapper.queryCom(id);
+        List<Map<String, Object>> maps = this.baseMapper.queryCom(id);
+        for (Map<String, Object> map : maps) {
+            Integer coachId = (Integer) map.get("coachId");
+            System.err.println("==============XXXXXXXXXXXX"+coachId);
+            if (coachId!=null) {
+                User name = siteClient.queryUserName(coachId);
+                map.put("name",name.getName());
+            }
+        }
+
+    return maps;
     }
 
 
diff --git a/cloud-server-account/src/main/resources/mapper/TStudentMapper.xml b/cloud-server-account/src/main/resources/mapper/TStudentMapper.xml
index 8b2cf72..078ea64 100644
--- a/cloud-server-account/src/main/resources/mapper/TStudentMapper.xml
+++ b/cloud-server-account/src/main/resources/mapper/TStudentMapper.xml
@@ -86,13 +86,10 @@
 
     <select id="queryCom" resultType="java.util.Map">
         SELECT
-            es.id as id ,tc.name,es.content,es.insertTime,es.imgs as images
+            es.id as id ,es.coachId,es.content,es.insertTime,es.imgs as images
         FROM
 
             t_evaluate_student es
-
-                left JOIN t_student ts on es.studentId = ts.id
-                LEFT JOIN t_coach tc on es.coachId = tc.id
 
         where es.studentId = #{id}
 
diff --git a/cloud-server-course/src/main/java/com/dsh/config/Sharding_jdbc/ShardingConfig.java b/cloud-server-course/src/main/java/com/dsh/config/Sharding_jdbc/ShardingConfig.java
index df8dabe..cc0cc02 100644
--- a/cloud-server-course/src/main/java/com/dsh/config/Sharding_jdbc/ShardingConfig.java
+++ b/cloud-server-course/src/main/java/com/dsh/config/Sharding_jdbc/ShardingConfig.java
@@ -70,6 +70,7 @@
 
         //分片规则配置
         ShardingRuleConfiguration result1 = new ShardingRuleConfiguration();
+
         result1.getTables().add(getCoursePackagePaymentTableRuleConfiguration());
         Properties props1 = new Properties();
         props1.setProperty("algorithm-expression", "t_course_package_payment$->{appUserId % 5 + 1}");
@@ -107,7 +108,7 @@
         //分片规则配置
         result1.getTables().add(getCoursePackageOrderTableRuleConfiguration());
         Properties props6 = new Properties();
-        props1.setProperty("algorithm-expression", "t_course_package_order$->{appUserId % 5 + 1}");
+        props6.setProperty("algorithm-expression", "t_course_package_order$->{appUserId % 5 + 1}");
         result1.getShardingAlgorithms().put("t_course_package_order-inline", new AlgorithmConfiguration("INLINE", props6));
         result1.getKeyGenerators().put("t_course_package_order-snowflake", new AlgorithmConfiguration("SNOWFLAKE", new Properties()));
 
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 fc98bb4..c0019bf 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
@@ -21,6 +21,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.TCoursePackageMapper;
 import com.dsh.course.model.*;
 import com.dsh.course.model.dto.DiscountJsonDto;
 import com.dsh.course.model.vo.CourseDetailRequest;
@@ -28,6 +29,7 @@
 import com.dsh.course.model.vo.request.*;
 import com.dsh.course.model.vo.response.*;
 import com.dsh.course.service.*;
+import com.dsh.course.service.impl.CoursePackageOrderStudentServiceImpl;
 import com.dsh.course.util.*;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -585,6 +587,8 @@
         }
     }
 
+    @Autowired
+    private ICoursePackageOrderStudentService orderStudentService;
 
     /**
      * 课程名称列表
@@ -592,12 +596,12 @@
     @PostMapping("/base/coursePack/sessionNames")
     public List<StuSessionDetailsVo> getStuSessionList(@RequestBody CourseDetailRequest request) {
         List<StuSessionDetailsVo> detailsVos = new ArrayList<>();
-        List<TCoursePackagePayment> byUserId = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>()
+        List<CoursePackageOrderStudent> byUserId = orderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
                 .between("insertTime", request.getStartTime(), request.getEndTime())
                 .eq("appUserId", request.getAppUserId())
                 .eq("studentId", request.getStuId()));
         if (byUserId.size() > 0) {
-            List<Integer> collect = byUserId.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList());
+            List<Integer> collect = byUserId.stream().map(CoursePackageOrderStudent::getCoursePackageId).collect(Collectors.toList());
             List<TCoursePackage> list = tcpService.list(new QueryWrapper<TCoursePackage>()
                     .in("id", collect));
 
@@ -670,22 +674,23 @@
 
     @PostMapping("/base/coursePack/getRecord")
     public List<PurchaseRecordVo> getRecord(@RequestBody RecordTimeRequest recordTimeRequest) {
-        List<TCoursePackagePayment> list = new ArrayList<>();
+        List<CoursePackageOrderStudent> list = new ArrayList<>();
         Integer[] changes = {1, 0};
         if (recordTimeRequest.getType() == null) {
-            list = coursePackagePaymentService.list(new QueryWrapper<TCoursePackagePayment>().eq("studentId", recordTimeRequest.getStuId()).eq("coursePackageId", recordTimeRequest.getLessionId()).orderByDesc("insertTime"));
+            list = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", recordTimeRequest.getStuId()).eq("coursePackageId", recordTimeRequest.getLessionId()).orderByDesc("insertTime"));
         } else {
 
-            list = coursePackagePaymentService.list(new QueryWrapper<TCoursePackagePayment>().eq("studentId", recordTimeRequest.getStuId()).eq("coursePackageId", recordTimeRequest.getLessionId()).orderByDesc("insertTime"));
-
+            list = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", recordTimeRequest.getStuId()).eq("coursePackageId", recordTimeRequest.getLessionId()).orderByDesc("insertTime"));
         }
-        List<Long> ids = new ArrayList<>();
-        for (TCoursePackagePayment coursePackagePayment : list) {
-            ids.add(coursePackagePayment.getId());
-        }
+        List<Integer> appUserIds = list.stream().map(CoursePackageOrderStudent::getAppUserId).collect(Collectors.toList());
+        List<CoursePackageOrderStudent> list1 = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
+                .in("appUserId", appUserIds)
+                .eq("coursePackageId", recordTimeRequest.getLessionId())
+                .eq("state", 1)
+        );
+        List<Long> collect = list1.stream().map(CoursePackageOrderStudent::getId).collect(Collectors.toList());
 
-
-        QueryWrapper<CourseCounsum> in = new QueryWrapper<CourseCounsum>().in("paymentId", ids).in("changeType", changes);
+        QueryWrapper<CourseCounsum> in = new QueryWrapper<CourseCounsum>().in("paymentId", collect).in("changeType", changes);
 
         if (recordTimeRequest.getType() != null) {
             if (recordTimeRequest.getType() == 2) {
@@ -1255,8 +1260,8 @@
     @PostMapping("/coursePackagePayment/queryResidueClassHourById")
     public Integer queryResidueClassHourById(@RequestBody Long id) {
         try {
-            TCoursePackagePayment list = packagePaymentService.getById(id);
-            return list.getLaveClassHours();
+            CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getById(id);
+            return coursePackageOrderStudent.getLaveClassHours();
         } catch (Exception e) {
             e.printStackTrace();
             return 0;
@@ -1293,128 +1298,162 @@
     public void paymentDeductionClassHour(@RequestBody PaymentDeductionClassHour paymentDeductionClassHour) {
         try {
             // 2.0 用id进行查询
-            TCoursePackagePayment coursePackagePayment = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("id", paymentDeductionClassHour.getCourseId()).eq("payStatus", 2)
-                    .eq("status", 1).eq("state", 1).gt("laveClassHours", 0));
-            Integer classHour = paymentDeductionClassHour.getClassHour();
+//            TCoursePackagePayment coursePackagePayment = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("id", paymentDeductionClassHour.getCourseId()).eq("payStatus", 2)
+//                    .eq("status", 1).eq("state", 1).gt("laveClassHours", 0));
+//            Integer classHour = paymentDeductionClassHour.getClassHour();
 //            for (TCoursePackagePayment coursePackagePayment : list) {
-            if (coursePackagePayment.getLaveClassHours().compareTo(classHour) >= 0) {
-                coursePackagePayment.setLaveClassHours(coursePackagePayment.getLaveClassHours() - classHour);
-                coursePackagePayment.setAppUserId(null);
-                packagePaymentService.updateById(coursePackagePayment);
-
-                CourseCounsum courseCounsum = new CourseCounsum();
-                courseCounsum.setPaymentId(coursePackagePayment.getId());
-                courseCounsum.setChangeType(0);
-                courseCounsum.setNum(classHour);
-                courseCounsum.setInsertTime(new Date());
-                courseCounsum.setReason("报名赛事");
-                courseCounsumService.save(courseCounsum);
 
 
-                List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", coursePackagePayment.getStudentId()).eq("coursePackageId", coursePackagePayment.getCoursePackageId()));
-                List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
-                coursePackageSchedulingService.remove(new QueryWrapper<CoursePackageScheduling>().in("id", collect));
-                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", paymentDeductionClassHour.getId()).eq("coursePackageId", coursePackagePayment.getCoursePackageId()));
 
+            CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getById(paymentDeductionClassHour.getCourseId());
+//            if (paymentDeductionClassHour.getClassHour() > coursePackageOrderStudent.getLaveClassHours()) {
+//                return ResultUtil.error("当前课包课时数不足");
+//            }
+            TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
+            coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() - paymentDeductionClassHour.getClassHour());
+            coursePackageOrderStudentService.updateById(coursePackageOrderStudent);
+            //判断剩余课时是否已经全部进行排课,如果排课需要删除已经排好的记录
+            List<CoursePackageScheduling> list1 = coursePackageSchedulingService.list(new QueryWrapper<CoursePackageScheduling>()
+                    .eq("studentId", coursePackageOrderStudent.getStudentId()).eq("status", 1)
+                    .eq("type", 1).orderByDesc("classDate"));
+            //已经排课但没有使用的课时数量
+            int number = list1.size() * coursePackage.getNeedNum();
+            Integer laveClassHours1 = coursePackageOrderStudent.getLaveClassHours();
+            //需要删除多余的排课记录
+            if(number > laveClassHours1){
+                int n = number - laveClassHours1;
+                for (int i = 0; i < n; i++) {
+                    CoursePackageScheduling coursePackageScheduling = list1.get(i);
+                    coursePackageSchedulingService.getBaseMapper().deleteById(coursePackageScheduling.getId());
 
-                TCoursePackage tCoursePackage = packageService.getById(coursePackagePayment.getCoursePackageId());
-                String classWeeks = tCoursePackage.getClassWeeks();
-                List<Integer> week = week(classWeeks);
-
-                TCoursePackagePayment pay = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("coursePackageId", coursePackagePayment.getCoursePackageId()).eq("studentId", coursePackagePayment.getStudentId()));
-
-                Date today = new Date();
-                Calendar calendar = Calendar.getInstance();
-                calendar.add(Calendar.DATE, -1);
-                today = calendar.getTime();
-
-
-                Integer laveClassHours = pay.getLaveClassHours();
-                Integer codeTime = tCoursePackage.getCodeTime();
-                Integer can = laveClassHours / codeTime;
-
-                int count = 0;
-                String[] split = tCoursePackage.getClassStartTime().split(",");
-                String[] split1 = tCoursePackage.getClassEndTime().split(",");
-                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-                SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-
-                Date[] dates = generateDateArray(14, today);
-                for (Date date : dates) {
-                    if (count == can) {
-                        break;
-                    }
-                    int wei = cn.hutool.core.date.DateUtil.dayOfWeek(date);
-                    if (week.contains(wei)) {
-                        for (int i1 = 0; i1 < split.length; i1++) {
-                            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.save(coursePackageScheduling);
-                            CoursePackageStudent student1 = new CoursePackageStudent();
-                            student1.setAppUserId(pay.getAppUserId());
-                            student1.setStudentId(pay.getStudentId());
-                            student1.setCoursePackageId(pay.getCoursePackageId());
-                            student1.setCoursePackagePaymentId(pay.getId());
-                            student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                            student1.setSignInOrNot(1);
-                            student1.setReservationStatus(1);
-                            student1.setInsertTime(new Date());
-                            studentService.save(student1);
-                            count++;
-                        }
-                    }
+                    coursePackageStudentService.getBaseMapper().delete(new QueryWrapper<CoursePackageStudent>()
+                            .eq("coursePackageSchedulingId", coursePackageScheduling.getId()));
                 }
-
-
-                // 2.0 少于3课时 推送
-                if (coursePackagePayment.getLaveClassHours() <= 3) {
-                    Integer appUserId = coursePackagePayment.getAppUserId();
-
-                    //调用推送
-                    HttpHeaders headers = new HttpHeaders();
-                    // 以表单的方式提交
-                    headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
-                    String s1 = appUserId + "_" + "Three";
-                    //定时修改排课状态
-                    String s = internalRestTemplate.getForObject("http://mb-cloud-gateway/netty/sendMsgToClient?id=" + s1, String.class);
-                    JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class);
-                    if (jsonObject1.getIntValue("code") != 200) {
-                        System.err.println(jsonObject1.getString("msg"));
-                    }
-                }
-
-                CancelledClasses cancelledClasses = new CancelledClasses();
-                cancelledClasses.setType(2);
-                cancelledClasses.setVoucher(paymentDeductionClassHour.getCode());
-                cancelledClasses.setCoursePackageId(coursePackagePayment.getCoursePackageId());
-                cancelledClasses.setCoursePackagePaymentId(coursePackagePayment.getId());
-                cancelledClasses.setCancelledClassesNumber(classHour);
-                cancelledClasses.setInsertTime(new Date());
-                cancelledClassesService.save(cancelledClasses);
-
-            } else {
-                CancelledClasses cancelledClasses = new CancelledClasses();
-                cancelledClasses.setType(2);
-                cancelledClasses.setVoucher(paymentDeductionClassHour.getCode());
-                cancelledClasses.setCoursePackageId(coursePackagePayment.getCoursePackageId());
-                cancelledClasses.setCoursePackagePaymentId(coursePackagePayment.getId());
-                cancelledClasses.setCancelledClassesNumber(coursePackagePayment.getLaveClassHours());
-                cancelledClasses.setInsertTime(new Date());
-                cancelledClassesService.save(cancelledClasses);
-
-                coursePackagePayment.setLaveClassHours(0);
-                packagePaymentService.updateById(coursePackagePayment);
-
-                classHour -= cancelledClasses.getCancelledClassesNumber();
             }
+
+
+
+
+
+
+//            if (coursePackagePayment.getLaveClassHours().compareTo(classHour) >= 0) {
+//                coursePackagePayment.setLaveClassHours(coursePackagePayment.getLaveClassHours() - classHour);
+//                coursePackagePayment.setAppUserId(null);
+//                packagePaymentService.updateById(coursePackagePayment);
+//
+//                CourseCounsum courseCounsum = new CourseCounsum();
+//                courseCounsum.setPaymentId(coursePackagePayment.getId());
+//                courseCounsum.setChangeType(0);
+//                courseCounsum.setNum(classHour);
+//                courseCounsum.setInsertTime(new Date());
+//                courseCounsum.setReason("报名赛事");
+//                courseCounsumService.save(courseCounsum);
+//
+//
+//                List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", coursePackagePayment.getStudentId()).eq("coursePackageId", coursePackagePayment.getCoursePackageId()));
+//                List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
+//                coursePackageSchedulingService.remove(new QueryWrapper<CoursePackageScheduling>().in("id", collect));
+//                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", paymentDeductionClassHour.getId()).eq("coursePackageId", coursePackagePayment.getCoursePackageId()));
+//
+//
+//                TCoursePackage tCoursePackage = packageService.getById(coursePackagePayment.getCoursePackageId());
+//                String classWeeks = tCoursePackage.getClassWeeks();
+//                List<Integer> week = week(classWeeks);
+//
+//                TCoursePackagePayment pay = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("coursePackageId", coursePackagePayment.getCoursePackageId()).eq("studentId", coursePackagePayment.getStudentId()));
+//
+//                Date today = new Date();
+//                Calendar calendar = Calendar.getInstance();
+//                calendar.add(Calendar.DATE, -1);
+//                today = calendar.getTime();
+//
+//
+//                Integer laveClassHours = pay.getLaveClassHours();
+//                Integer codeTime = tCoursePackage.getCodeTime();
+//                Integer can = laveClassHours / codeTime;
+//
+//                int count = 0;
+//                String[] split = tCoursePackage.getClassStartTime().split(",");
+//                String[] split1 = tCoursePackage.getClassEndTime().split(",");
+//                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+//                SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+//
+//                Date[] dates = generateDateArray(14, today);
+//                for (Date date : dates) {
+//                    if (count == can) {
+//                        break;
+//                    }
+//                    int wei = cn.hutool.core.date.DateUtil.dayOfWeek(date);
+//                    if (week.contains(wei)) {
+//                        for (int i1 = 0; i1 < split.length; i1++) {
+//                            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.save(coursePackageScheduling);
+//                            CoursePackageStudent student1 = new CoursePackageStudent();
+//                            student1.setAppUserId(pay.getAppUserId());
+//                            student1.setStudentId(pay.getStudentId());
+//                            student1.setCoursePackageId(pay.getCoursePackageId());
+//                            student1.setCoursePackagePaymentId(pay.getId());
+//                            student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+//                            student1.setSignInOrNot(1);
+//                            student1.setReservationStatus(1);
+//                            student1.setInsertTime(new Date());
+//                            studentService.save(student1);
+//                            count++;
+//                        }
+//                    }
+//                }
+//
+//
+//                // 2.0 少于3课时 推送
+//                if (coursePackagePayment.getLaveClassHours() <= 3) {
+//                    Integer appUserId = coursePackagePayment.getAppUserId();
+//
+//                    //调用推送
+//                    HttpHeaders headers = new HttpHeaders();
+//                    // 以表单的方式提交
+//                    headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+//                    String s1 = appUserId + "_" + "Three";
+//                    //定时修改排课状态
+//                    String s = internalRestTemplate.getForObject("http://mb-cloud-gateway/netty/sendMsgToClient?id=" + s1, String.class);
+//                    JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class);
+//                    if (jsonObject1.getIntValue("code") != 200) {
+//                        System.err.println(jsonObject1.getString("msg"));
+//                    }
+//                }
+//
+//                CancelledClasses cancelledClasses = new CancelledClasses();
+//                cancelledClasses.setType(2);
+//                cancelledClasses.setVoucher(paymentDeductionClassHour.getCode());
+//                cancelledClasses.setCoursePackageId(coursePackagePayment.getCoursePackageId());
+//                cancelledClasses.setCoursePackagePaymentId(coursePackagePayment.getId());
+//                cancelledClasses.setCancelledClassesNumber(classHour);
+//                cancelledClasses.setInsertTime(new Date());
+//                cancelledClassesService.save(cancelledClasses);
+//
+//            } else {
+//                CancelledClasses cancelledClasses = new CancelledClasses();
+//                cancelledClasses.setType(2);
+//                cancelledClasses.setVoucher(paymentDeductionClassHour.getCode());
+//                cancelledClasses.setCoursePackageId(coursePackagePayment.getCoursePackageId());
+//                cancelledClasses.setCoursePackagePaymentId(coursePackagePayment.getId());
+//                cancelledClasses.setCancelledClassesNumber(coursePackagePayment.getLaveClassHours());
+//                cancelledClasses.setInsertTime(new Date());
+//                cancelledClassesService.save(cancelledClasses);
+//
+//                coursePackagePayment.setLaveClassHours(0);
+//                packagePaymentService.updateById(coursePackagePayment);
+//
+//                classHour -= cancelledClasses.getCancelledClassesNumber();
+//            }
 //                }
 
 
@@ -1478,6 +1517,8 @@
     }
 
 
+    @Resource
+    private TCoursePackageMapper tcpmapper;
     /**
      * 找出符合门店的课包
      *
@@ -1499,21 +1540,42 @@
         for (String s2 : split1) {
             storeIds.add(Integer.valueOf(s2));
         }
-        List<TCoursePackagePayment> list = packagePaymentService.list(new LambdaQueryWrapper<TCoursePackagePayment>().eq(TCoursePackagePayment::getAppUserId, integer).ge(TCoursePackagePayment::getLaveClassHours, 0).eq(TCoursePackagePayment::getStatus, 1).eq(TCoursePackagePayment::getState, 1));
-        for (TCoursePackagePayment tCoursePackagePayment : list) {
-            Integer coursePackageId = tCoursePackagePayment.getCoursePackageId();
-            TCoursePackage byId = tcpService.getById(coursePackageId);
-            if (byId.getType() == 3) {
+//        List<TCoursePackagePayment> list = packagePaymentService.list(new LambdaQueryWrapper<TCoursePackagePayment>().eq(TCoursePackagePayment::getAppUserId, integer).ge(TCoursePackagePayment::getLaveClassHours, 0).eq(TCoursePackagePayment::getStatus, 1).eq(TCoursePackagePayment::getState, 1));
+//        for (TCoursePackagePayment tCoursePackagePayment : list) {
+//            Integer coursePackageId = tCoursePackagePayment.getCoursePackageId();
+//            TCoursePackage byId = tcpService.getById(coursePackageId);
+//            if (byId.getType() == 3) {
+//                continue;
+//            }
+//            if (storeIds.contains(byId.getStoreId())) {
+//                PayCourseRes payCourseRes = new PayCourseRes();
+//                payCourseRes.setCourseNum(tCoursePackagePayment.getLaveClassHours());
+//                payCourseRes.setId(tCoursePackagePayment.getId());
+//                payCourseRes.setName(byId.getName());
+//                objects.add(payCourseRes);
+//            }
+//        }
+
+
+
+        List<CoursePackageOrderStudent> tCoursePackagePayments = coursePackageOrderStudentService.list(new LambdaQueryWrapper<CoursePackageOrderStudent>().eq(CoursePackageOrderStudent::getAppUserId, integer));
+//        ArrayList<PayCourseRes> payCourseRes = new ArrayList<>();
+        for (CoursePackageOrderStudent tCoursePackagePayment : tCoursePackagePayments) {
+            TCoursePackage tCoursePackage = tcpmapper.selectById(tCoursePackagePayment.getCoursePackageId());
+            if (tCoursePackage.getType() != 1) {
                 continue;
             }
-            if (storeIds.contains(byId.getStoreId())) {
+            if (storeIds.contains(tCoursePackage.getStoreId())) {
                 PayCourseRes payCourseRes = new PayCourseRes();
                 payCourseRes.setCourseNum(tCoursePackagePayment.getLaveClassHours());
                 payCourseRes.setId(tCoursePackagePayment.getId());
-                payCourseRes.setName(byId.getName());
+                payCourseRes.setName(tCoursePackage.getName());
                 objects.add(payCourseRes);
+
             }
         }
+
+
         return objects;
     }
 
@@ -1880,7 +1942,7 @@
     @PostMapping("/base/coursePack/obtainStudentClassDetails")
     public List<RecordAppoint> obtainStudentClassDetailsData(@RequestBody WeeksOfCourseRest stuId) {
 //        try {
-        return packagePaymentService.obtainStuClassDetails(stuId.getStuId(), stuId.getAppUserId(), stuId.getPageNum());
+        return coursePackageOrderStudentService.obtainStuClassDetails(stuId.getStuId(), stuId.getAppUserId(), stuId.getPageNum());
 //        }catch (Exception e){
 //            e.printStackTrace();
 //            throw new RuntimeException();
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageScheduling.java b/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageScheduling.java
index 238c0e6..c78d505 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageScheduling.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageScheduling.java
@@ -35,6 +35,21 @@
     @TableId(value = "id", type = IdType.NONE)
     private Long id;
     /**
+     * 1=常规,2=假期,3=体验购课
+     */
+    @TableField("type")
+    private Integer type;
+    /**
+     * 用户id
+     */
+    @TableField("appUserId")
+    private Integer appUserId;
+    /**
+     * 学员id
+     */
+    @TableField("studentId")
+    private Integer studentId;
+    /**
      * 课包id
      */
     @TableField("coursePackageId")
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/ICoursePackageOrderStudentService.java b/cloud-server-course/src/main/java/com/dsh/course/service/ICoursePackageOrderStudentService.java
index 6c8f98f..b8c867e 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/ICoursePackageOrderStudentService.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/ICoursePackageOrderStudentService.java
@@ -2,10 +2,22 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.dsh.course.entity.CoursePackageOrderStudent;
+import com.dsh.course.feignclient.model.RecordAppoint;
+
+import java.util.List;
 
 /**
  * @author zhibing.pu
  * @Date 2023/11/25 14:05
  */
 public interface ICoursePackageOrderStudentService extends IService<CoursePackageOrderStudent> {
+
+    /**
+     * 查询学员的课包上课记录
+     *
+     * @param stuId
+     * @param appUserId
+     * @return
+     */
+    List<RecordAppoint> obtainStuClassDetails(Integer stuId, Integer appUserId, Integer pageNum);
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageOrderStudentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageOrderStudentServiceImpl.java
index c8f143b..c4a56a5 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageOrderStudentServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageOrderStudentServiceImpl.java
@@ -1,10 +1,30 @@
 package com.dsh.course.service.impl;
 
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.dsh.course.entity.CoursePackageOrderStudent;
-import com.dsh.course.mapper.CoursePackageOrderStudentMapper;
+import com.dsh.course.entity.*;
+import com.dsh.course.feignclient.model.RecordAppoint;
+import com.dsh.course.feignclient.other.StoreClient;
+import com.dsh.course.feignclient.other.model.Store;
+import com.dsh.course.mapper.*;
 import com.dsh.course.service.ICoursePackageOrderStudentService;
+import com.dsh.course.service.ICoursePackageSchedulingService;
+import com.dsh.course.util.DateTimeHelper;
+import com.dsh.course.util.DateUtil;
+import com.dsh.course.util.ToolUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * @author zhibing.pu
@@ -12,4 +32,169 @@
  */
 @Service
 public class CoursePackageOrderStudentServiceImpl extends ServiceImpl<CoursePackageOrderStudentMapper, CoursePackageOrderStudent> implements ICoursePackageOrderStudentService {
+
+
+    @Resource
+    private CoursePackageStudentMapper cpsMapper;
+
+    @Resource
+    private CancelledClassesMapper cacMapper;
+
+    @Autowired
+    private ICoursePackageSchedulingService coursePackageSchedulingService;
+
+    @Resource
+    private TCoursePackageMapper tcpmapper;
+
+    @Resource
+    private StoreClient stoClient;
+
+
+
+    @Override
+    public List<RecordAppoint> obtainStuClassDetails(Integer stuId, Integer appUserId, Integer pageNum) {
+        List<RecordAppoint> recordVoList = new ArrayList<>();
+        List<CoursePackageOrderStudent> tCoursePackagePayments = this.baseMapper.selectList(new QueryWrapper<CoursePackageOrderStudent>()
+                .eq("studentId", stuId)
+                .eq("appUserId", appUserId)
+                .eq("status", 1)
+                .orderByDesc("insertTime"));
+
+        List<Integer> ids = new ArrayList<>();
+        for (CoursePackageOrderStudent tCoursePackagePayment : tCoursePackagePayments) {
+            ids.add(tCoursePackagePayment.getCoursePackageId());
+        }
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd");
+        SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
+        if (tCoursePackagePayments.size() > 0) {
+
+//            int pageNum = 1; // 页码
+            int pageSize = 10; // 每页记录数
+            Page<CoursePackageStudent> page = new Page<>(pageNum, pageSize);
+            IPage<CoursePackageStudent> coursePackageStudentPage = cpsMapper.selectPage(page, new QueryWrapper<CoursePackageStudent>()
+                    .in("coursePackageId", ids)
+                    .eq("studentId", stuId)
+                    .eq("appUserId", appUserId)
+                    .eq("reservationStatus", 1));
+            List<CoursePackageStudent> coursePackageStudent1 = coursePackageStudentPage.getRecords();
+
+
+            if (ToolUtil.isNotEmpty(coursePackageStudent1) && coursePackageStudent1.size() > 0) {
+                TCoursePackage coursePackage = new TCoursePackage();
+                Integer coursePackageId = -1;
+                for (CoursePackageStudent coursePackageStudent : coursePackageStudent1) {
+                    RecordAppoint recordVo = new RecordAppoint();
+                    recordVo.setCoursePackageId(coursePackageStudent.getCoursePackageId());
+
+                    if (!coursePackageStudent.getCoursePackageId().equals(coursePackageId)) {
+                        coursePackage = tcpmapper.selectById(coursePackageStudent.getCoursePackageId());
+                        coursePackageId = coursePackageStudent.getCoursePackageId();
+                    }
+
+                    recordVo.setSid(Arrays.asList(coursePackage.getStoreId()));
+                    List<Integer> rid = stoClient.querySiteId(coursePackage.getStoreId());
+                    recordVo.setRid(rid);
+                    recordVo.setUserId(appUserId);
+                    recordVo.setSiteId(coursePackage.getSiteId());
+                    List<Integer> ids1 = getIds(coursePackage.getSiteId());
+                    recordVo.setIds(ids1);
+
+                    recordVo.setCoursePackageName(coursePackage.getName());
+                    for (CoursePackageOrderStudent tCoursePackagePayment : tCoursePackagePayments) {
+                        if (Objects.equals(coursePackageStudent.getCoursePackageId(), tCoursePackagePayment.getCoursePackageId())) {
+                            recordVo.setCourseHours(tCoursePackagePayment.getTotalClassHours());
+                        }
+                    }
+
+
+                    CoursePackageScheduling byId = coursePackageSchedulingService.getById(coursePackageStudent.getCoursePackageSchedulingId());
+                    if (byId == null) {
+                        continue;
+                    }
+                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                    String dateString1 = sdf.format(byId.getClassDate());
+                    String dateString2 = sdf.format(byId.getEndDate());
+
+
+                    recordVo.setTimeFrame(dateString1 + "-" + dateString2.substring(11));
+
+                    Store store = stoClient.queryStoreById(coursePackage.getStoreId());
+                    recordVo.setStoreNameAddr(store.getName() + store.getAddress());
+                    recordVo.setCourseStuRecordId(coursePackageStudent.getId());
+                    String classWeeks = coursePackage.getClassWeeks();
+                    String[] split = classWeeks.split(";");
+                    List<String> integerList = Arrays.asList(split);
+                    String weekOfDate = DateTimeHelper.getWeekOfDate(new Date());
+                    if (integerList.contains(weekOfDate)) {
+                        String dat = simpleDateFormat.format(byId.getClassDate()) + " " + dateString1.substring(11);
+
+                        Date start = null;
+                        try {
+                            start = format.parse(dat);
+                        } catch (ParseException e) {
+                            throw new RuntimeException(e);
+                        }
+                        //已取消
+                        if (byId.getStatus() == 4) {
+                            recordVo.setStatus(4);
+                        } else if (coursePackageStudent.getSignInOrNot() == 2) {
+                            //已请假
+                            recordVo.setStatus(5);
+                        } else if (start.after(new Date())) {
+                            //待上课
+                            recordVo.setStatus(1);
+                        }
+                        else {
+                            CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>()
+                                    .eq("coursePackageSchedulingId", byId.getId()).last("limit 1"));
+                            if (ToolUtil.isNotEmpty(cancelledClasses)) {
+                                recordVo.setStatus(3);
+                                // 消课 到课状态0 旷课
+                                if (coursePackageStudent.getSignInOrNot() == 0) {
+                                    recordVo.setStatus(6);
+                                }
+
+                            } else {
+                                Date now = new Date();
+                                if (now.after(byId.getClassDate()) && now.before(byId.getEndDate())) {
+                                    recordVo.setStatus(2);
+                                } else {
+                                    recordVo.setStatus(3);
+
+                                }
+                            }
+                        }
+                    } else {
+                        recordVo.setStatus(1);
+                    }
+                    recordVoList.add(recordVo);
+                }
+
+            } else {
+            }
+
+        }
+
+        return recordVoList;
+    }
+
+
+
+    public List<Integer> getIds(Integer siteId) {
+        HttpRequest httpRequest = HttpRequest.get("https://try.daowepark.com/v7/user_api/general/get_space_area?space_id=" + siteId);
+        HttpResponse execute = httpRequest.execute();
+        String body = execute.body();
+        JSONObject jsonObject = JSONObject.parseObject(body);
+        Object data = jsonObject.get("data");
+        JSONArray array = JSONArray.parseArray(data.toString());
+        List<Integer> ids = new ArrayList<>();
+        for (Object o : array) {
+            JSONObject jsonObject1 = JSONObject.parseObject(o.toString());
+            Object id = jsonObject1.get("id");
+            Integer integer = Integer.valueOf(id.toString());
+            ids.add(integer);
+        }
+        return ids;
+
+    }
 }
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 3d6656f..3f681cd 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
@@ -502,12 +502,31 @@
     @Autowired
     private ICoursePackageOrderService coursePackageOrderService;
 
+    @Autowired
+    private ICoursePackageOrderStudentService coursePackageOrderStudentService;
+
+    @Autowired
+    private TCoursePackageService coursePackageService;
+
+
+
 
     @Override
     public CourseDetailsResponse queryRegisteredCourseDetails(Long coursePayId, Integer appUserId, String lon, String lat) {
         AppUser appUser = appuClient.queryAppUser(appUserId);
         CourseDetailsResponse response = new CourseDetailsResponse();
-        CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(coursePayId);
+        CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getById(coursePayId);
+        CoursePackageOrder coursePackageOrder = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>()
+                .eq("appUserId", coursePackageOrderStudent.getAppUserId())
+                .eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId())
+                .eq("payStatus", 2)
+                .eq("state", 1)
+                .like("studentIds", coursePackageOrderStudent.getStudentId())
+                .orderByDesc("insertTime")
+                .last(" limit 0, 1")
+        );
+
+
         response.setChooseHours(coursePackageOrder.getClassHours());
 
         if (null != coursePackageOrder) {
@@ -1215,10 +1234,6 @@
             Integer integer = cpsMapper.selectCount(new QueryWrapper<CoursePackageStudent>().eq("appUserId", appUserId)
                     .eq("studentId", studentId).eq("coursePackagePaymentId", id).eq("signInOrNot", 2));
             map.put("already", integer);
-//            if (student != null && student.getName().equals("杨锴1")) {
-//                map.put("totalClassHours", "测试");
-//            }
-            ;
         }
         return list;
     }
@@ -1277,9 +1292,9 @@
     @Override
     public List<PayCourseRes> getMyCourseList(Integer storeId, Integer appUserId) {
         // 找到购买的课包
-        List<TCoursePackagePayment> tCoursePackagePayments = this.baseMapper.selectList(new LambdaQueryWrapper<TCoursePackagePayment>().eq(TCoursePackagePayment::getAppUserId, appUserId));
+        List<CoursePackageOrderStudent> tCoursePackagePayments = coursePackageOrderStudentService.list(new LambdaQueryWrapper<CoursePackageOrderStudent>().eq(CoursePackageOrderStudent::getAppUserId, appUserId));
         ArrayList<PayCourseRes> payCourseRes = new ArrayList<>();
-        for (TCoursePackagePayment tCoursePackagePayment : tCoursePackagePayments) {
+        for (CoursePackageOrderStudent tCoursePackagePayment : tCoursePackagePayments) {
             TCoursePackage tCoursePackage = tcpmapper.selectById(tCoursePackagePayment.getCoursePackageId());
             if (tCoursePackage.getType() != 1) {
                 continue;
@@ -1396,121 +1411,46 @@
         // 添加购买课时 paytyoe为7
         // 排课可期  判断课程时间段  添加排课表  添加上课记录表
         // 找到原来的课包 扣课时
-        TCoursePackagePayment tCoursePackagePayment = this.baseMapper.selectById(req.getOldCourseId());
-        if (req.getNum() > tCoursePackagePayment.getLaveClassHours()) {
+        CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getById(req.getOldCourseId());
+        if (req.getNum() > coursePackageOrderStudent.getLaveClassHours()) {
             return ResultUtil.error("当前课包课时数不足");
         }
-        tCoursePackagePayment.setLaveClassHours(tCoursePackagePayment.getLaveClassHours() - req.getNum());
-        this.baseMapper.updateHoursById(tCoursePackagePayment.getId(), -req.getNum());
+        TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
+        coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() - req.getNum());
+        coursePackageOrderStudentService.updateById(coursePackageOrderStudent);
+        //判断剩余课时是否已经全部进行排课,如果排课需要删除已经排好的记录
+        List<CoursePackageScheduling> list1 = coursePackageSchedulingService.list(new QueryWrapper<CoursePackageScheduling>()
+                .eq("studentId", coursePackageOrderStudent.getStudentId()).eq("status", 1)
+                .eq("type", 1).orderByDesc("classDate"));
+        //已经排课但没有使用的课时数量
+        int number = list1.size() * coursePackage.getNeedNum();
+        Integer laveClassHours1 = coursePackageOrderStudent.getLaveClassHours();
+        //需要删除多余的排课记录
+        if(number > laveClassHours1){
+            int n = number - laveClassHours1;
+            for (int i = 0; i < n; i++) {
+                CoursePackageScheduling coursePackageScheduling = list1.get(i);
+                coursePackageSchedulingService.getBaseMapper().deleteById(coursePackageScheduling.getId());
 
-
-        List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", tCoursePackagePayment.getStudentId()).eq("coursePackageId", tCoursePackagePayment.getCoursePackageId()));
-        List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
-
-        List<CoursePackageScheduling> list = coursePackageSchedulingService.list(new QueryWrapper<CoursePackageScheduling>().in("id", collect).le("classDate", new Date()));
-        coursePackageSchedulingService.remove(new QueryWrapper<CoursePackageScheduling>().in("id", collect).le("classDate", new Date()));
-        List<Long> collect1 = list.stream().map(CoursePackageScheduling::getId).collect(Collectors.toList());
-
-
-//        coursePackageSchedulingService.remove(new QueryWrapper<CoursePackageScheduling>().in("id",collect));
-        coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", tCoursePackagePayment.getStudentId()).eq("coursePackageId", tCoursePackagePayment.getCoursePackageId()));
-
-        TCoursePackage tCoursePackage = tcpmapper.selectById(req.getCourseId());
-        String classWeeks = tCoursePackage.getClassWeeks();
-        List<Integer> week = week(classWeeks);
-
-        TCoursePackagePayment pay = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("coursePackageId", tCoursePackagePayment.getCoursePackageId()).eq("studentId", tCoursePackagePayment.getStudentId()));
-
-
-        Date today = new Date();
-        Calendar calendar = Calendar.getInstance();
-        calendar.add(Calendar.DATE, -1);
-        today = calendar.getTime();
-
-        Integer laveClassHours = pay.getLaveClassHours();
-        Integer codeTime = tCoursePackage.getCodeTime();
-        Integer can = laveClassHours / codeTime;
-
-        int count = 0;
-        String[] split = tCoursePackage.getClassStartTime().split(",");
-        String[] split1 = tCoursePackage.getClassEndTime().split(",");
-        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-        SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-
-        Date[] dates = generateDateArray(14, today);
-        for (Date date : dates) {
-            if (count == can) {
-                break;
-            }
-            int wei = cn.hutool.core.date.DateUtil.dayOfWeek(date);
-            if (week.contains(wei)) {
-                for (int i1 = 0; i1 < split.length; i1++) {
-                    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.save(coursePackageScheduling);
-                    CoursePackageStudent student1 = new CoursePackageStudent();
-                    student1.setAppUserId(pay.getAppUserId());
-                    student1.setStudentId(pay.getStudentId());
-                    student1.setCoursePackageId(pay.getCoursePackageId());
-                    student1.setCoursePackagePaymentId(pay.getId());
-                    student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                    student1.setSignInOrNot(1);
-                    student1.setReservationStatus(1);
-                    student1.setInsertTime(new Date());
-                    coursePackageStudentService.save(student1);
-                    count++;
-                }
+                coursePackageStudentService.getBaseMapper().delete(new QueryWrapper<CoursePackageStudent>()
+                        .eq("coursePackageSchedulingId", coursePackageScheduling.getId()));
             }
         }
 
 
-//        TCoursePackage tCoursePackage = tcpmapper.selectById(req.getCourseId());
-        // 添加课包
-        TCoursePackagePayment tCoursePackagePayment1 = new TCoursePackagePayment();
-//        tCoursePackagePayment1.setAppUserId(userId);
-//        Student student = studentClient.queryDefaultStudent(userId);
-//        // student ID
-//
-//        Integer sId=null;
-//        if(student!=null){
-//            tCoursePackagePayment1.setStudentId(student.getId());
-//            sId=student.getId();
-//        }
-        tCoursePackagePayment1.setCoursePackageId(tCoursePackage.getId());
-        tCoursePackagePayment1.setStudentId(req.getStuId());
-        tCoursePackagePayment1.setPayType(7);
-        tCoursePackagePayment1.setClassHours(req.getNum());
-        tCoursePackagePayment1.setOriginalPrice(0.0);
-        tCoursePackagePayment1.setTotalClassHours(req.getNum());
-        tCoursePackagePayment1.setLaveClassHours(req.getNum());
-        tCoursePackagePayment1.setAbsencesNumber(0);
-        tCoursePackagePayment1.setPayUserType(1);
-        tCoursePackagePayment1.setPayStatus(2);
-        tCoursePackagePayment1.setPayUserId(userId);
-        tCoursePackagePayment1.setStatus(1);
-        tCoursePackagePayment1.setAppUserId(userId);
-        tCoursePackagePayment1.setState(1);
-        tCoursePackagePayment1.setInsertTime(new Date());
-        this.baseMapper.insert(tCoursePackagePayment1);
-        // 找出课包时间段
-//        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-        String classStartTime = tCoursePackage.getClassStartTime();
-        String classEndTime = tCoursePackage.getClassEndTime();
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        String classStartTime = coursePackage.getClassStartTime();
+        String classEndTime = coursePackage.getClassEndTime();
         String[] split5 = classStartTime.split(",");
         String[] split6 = classEndTime.split(",");
         List<String> time = req.getTime();
         for (String s : time) {
             for (int i = 0; i < split5.length; i++) {
                 CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
+                coursePackageScheduling.setType(3);
+                coursePackageScheduling.setAppUserId(userId);
+                coursePackageScheduling.setStudentId(req.getStuId());
+                coursePackageScheduling.setCoursePackageId(coursePackage.getId());
                 try {
                     Date parse = format.parse(s + " " + split5[i]);
                     Date parse1 = format.parse(s + " " + split6[i]);
@@ -1522,8 +1462,8 @@
                     CoursePackageStudent student1 = new CoursePackageStudent();
                     student1.setAppUserId(userId);
                     student1.setStudentId(req.getStuId());
-                    student1.setCoursePackageId(tCoursePackage.getId());
-                    student1.setCoursePackagePaymentId(tCoursePackagePayment1.getId());
+                    student1.setCoursePackageId(coursePackage.getId());
+                    student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
                     student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
                     student1.setSignInOrNot(1);
                     student1.setReservationStatus(1);
@@ -1538,18 +1478,10 @@
         }
 
 
-        // 2.0
-//        TCourseInfoRecord tCourseInfoRecord = new TCourseInfoRecord();
-//        tCourseInfoRecord.setUserId(userId);
-//        tCourseInfoRecord.setCourseId(req.getCourseId());
-//        tCourseInfoRecord.setName("体验购课");
-//        tCourseInfoRecord.setNum(req.getNum());
-//        tCourseInfoRecord.setTime(new Date());
-//        tCourseInfoRecord.setType(2);
-//        appuClient.addCourseInfoRecord(tCourseInfoRecord);
+
 
         CourseCounsum courseCounsum = new CourseCounsum();
-        courseCounsum.setPaymentId(tCoursePackagePayment.getId());
+        courseCounsum.setPaymentId(coursePackageOrderStudent.getId());
         courseCounsum.setChangeType(0);
         courseCounsum.setNum(req.getNum());
         courseCounsum.setInsertTime(new Date());
@@ -1558,7 +1490,7 @@
         courseCounsumService.save(courseCounsum);
 
 
-        if (tCoursePackagePayment.getLaveClassHours() <= 3) {
+        if (coursePackageOrderStudent.getLaveClassHours() <= 3) {
             Integer appUserId = userId;
 
             //调用推送
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 199a25d..9db33b0 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
@@ -1001,7 +1001,7 @@
                                     coursePackageOrder1.setOrderNumber(transaction_id);
                                     coursePackageOrder1.setAppUserId(null);
                                     coursePackageOrderService.updateById(coursePackageOrder1);
-                                    addCoursePackageOrderStudent(coursePackageOrder1, coursePackagePaymentConfig);
+                                    addCoursePackageOrderStudent(coursePackageOrder1.getId(), coursePackagePaymentConfig);
                                     break;
                                 }
                                 if ("USERPAYING".equals(s)) {
@@ -1091,7 +1091,7 @@
                                     coursePackageOrder1.setOrderNumber(tradeNo);
                                     coursePackageOrder1.setAppUserId(null);
                                     coursePackageOrderService.updateById(coursePackageOrder1);
-                                    addCoursePackageOrderStudent(coursePackageOrder1, coursePackagePaymentConfig);
+                                    addCoursePackageOrderStudent(coursePackageOrder1.getId(), coursePackagePaymentConfig);
                                     break;
                                 }
                                 if ("WAIT_BUYER_PAY".equals(s)) {
@@ -1147,7 +1147,7 @@
         coursePackageOrder.setInsertTime(new Date());
         coursePackageOrderService.save(coursePackageOrder);
 
-        addCoursePackageOrderStudent(coursePackageOrder, coursePackagePaymentConfig);
+        addCoursePackageOrderStudent(coursePackageOrder.getId(), coursePackagePaymentConfig);
         return ResultUtil.success();
     }
 
@@ -1172,7 +1172,7 @@
         coursePackageOrderService.updateById(coursePackageOrder1);
 
         CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigService.getById(attach);
-        addCoursePackageOrderStudent(coursePackageOrder1, coursePackagePaymentConfig);
+        addCoursePackageOrderStudent(coursePackageOrder1.getId(), coursePackagePaymentConfig);
         return ResultUtil.success();
     }
 
@@ -1180,10 +1180,10 @@
     /**
      * 支付成功后添加学员课时数据
      *
-     * @param coursePackageOrder
      * @param coursePackagePaymentConfig
      */
-    public void addCoursePackageOrderStudent(CoursePackageOrder coursePackageOrder, CoursePackagePaymentConfig coursePackagePaymentConfig) {
+    public void addCoursePackageOrderStudent(Long coursePackageOrderId, CoursePackagePaymentConfig coursePackagePaymentConfig) {
+        CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(coursePackageOrderId);
         // 发放优惠券
         userCouponClient.sendUserCoupon(new SendCouponReq(coursePackageOrder.getAppUserId(), coursePackagePaymentConfig.getCouponIds()));
 
@@ -1211,6 +1211,7 @@
                 calendar.setTime(new Date());
                 calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
                 coursePackageOrderStudent.setUseTime(calendar.getTime());
+                coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
 
                 //开始排课
                 addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), coursePackageOrderStudent);
@@ -1223,15 +1224,15 @@
                 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());
+                coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
                 //中间断课,没有连续续费的情况需要重新排课
                 if (useTime.compareTo(new Date()) < 0) {
                     addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), coursePackageOrderStudent);
                 }
             }
-            coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
 
             CourseCounsum courseCounsum = new CourseCounsum();
-            courseCounsum.setPaymentId(coursePackageOrder.getId());
+            courseCounsum.setPaymentId(coursePackageOrderStudent.getId());
             courseCounsum.setChangeType(1);
             courseCounsum.setNum(coursePackagePaymentConfig.getClassHours());
             courseCounsum.setInsertTime(new Date());
@@ -1301,6 +1302,9 @@
                         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]);
@@ -1360,6 +1364,9 @@
                             break;
                         }
                         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]);
diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
index e8062f9..b8d8fcb 100644
--- a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
@@ -75,7 +75,7 @@
         laveClassHours,
         absencesNumber,
         `status`
-        from t_course_package_payment where payStatus = 2 and state = 1
+        from t_course_package_order_student where state = 1
         <if test="null != coursePackageId">
             and coursePackageId = #{coursePackageId}
         </if>
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 5b4453d..ada2d2a 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
@@ -260,17 +260,19 @@
         //查询学员信息
         TStudentDto tStudentDto = itStudentService.listOne(tStudentId);
         model.addAttribute("item", tStudentDto);
-        if (tStudentDto.getLateralSurface()!=null) {
+        if (tStudentDto.getLateralSurface()!=null&&!tStudentDto.getLateralSurface().equals("")) {
             String[] pics = tStudentDto.getLateralSurface().split(";");
-            model.addAttribute("pic1", pics[0]);
-            System.out.println("=====pic1==" + pics[0]);
-            if (pics.length > 1) {
-                model.addAttribute("pic2", pics[1]);
-                System.out.println("=====pic2==" + pics[1]);
-            }
-            if (pics.length > 2) {
-                model.addAttribute("pic3", pics[2]);
-                System.out.println("=====pic3==" + pics[2]);
+            if (pics.length>0) {
+                model.addAttribute("pic1", pics[0]);
+                System.out.println("=====pic1==" + pics[0]);
+                if (pics.length > 1) {
+                    model.addAttribute("pic2", pics[1]);
+                    System.out.println("=====pic2==" + pics[1]);
+                }
+                if (pics.length > 2) {
+                    model.addAttribute("pic3", pics[2]);
+                    System.out.println("=====pic3==" + pics[2]);
+                }
             }
         }
 
@@ -306,7 +308,7 @@
 
 
         model.addAttribute("item", tStudentDto);
-        if (tStudentDto.getLateralSurface()!=null) {
+        if (tStudentDto.getLateralSurface()!=null&&!tStudentDto.equals("")) {
             String[] pics = tStudentDto.getLateralSurface().split(";");
             model.addAttribute("pic1", pics[0]);
             System.out.println("=====pic1==" + pics[0]);
@@ -434,8 +436,6 @@
 
         List<Map<String,Object>> maps =   studentClient.listCom(id);
 
-
-
         return maps;
     }
 
@@ -450,7 +450,8 @@
         evaluateStudent.setImgs(image);
 //        evaluateStudent.setInsertTime(new Date());
 
-
+        User user = UserExt.getUser();
+        evaluateStudent.setCoachId(user.getId());
         appUserClient.save(evaluateStudent);
 //        evaluateStudentService.save(evaluateStudent);
 
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 a2fd628..7861601 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
@@ -1369,7 +1369,7 @@
                           "actionType": "dialog",
                           "dialog": {
                             "type": "dialog",
-                            "title": "弹框标题",
+                            "title": "课时变更记录",
                             "body": [
                               {
                                 "type": "form",
@@ -1431,7 +1431,7 @@
                                         {
                                           "type": "input-date-range",
                                           "name": "start",
-                                          "label": "上传时间",
+                                          "label": "时间",
                                           "id": "u:b2fb064aa9ac",
                                           "inputFormat": "YYYY-MM-DD HH:mm",
                                           "format": "YYYY-MM-DD HH:mm",
@@ -1440,7 +1440,7 @@
                                         },
                                         {
                                           "type": "select",
-                                          "label": "是否启用",
+                                          "label": "变更类型",
                                           "name": "changeType",
                                           "options": [
                                             {
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 c1ba97c..2e5d486 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
@@ -682,6 +682,19 @@
 
     }
 
+    @Autowired
+    private  IUserService userService;
+
+
+    @ResponseBody
+    @PostMapping("/base/site/queryUserName")
+    public User queryUserName(@RequestBody Integer coachId){
+        User byId = userService.getById(coachId);
+
+        return byId;
+
+    }
+
     @ResponseBody
     @PostMapping("/base/site/queryOperator")
     public OperatorUser queryOperator(@RequestBody List<Integer> stores) {
diff --git a/cloud-server-other/src/main/java/com/dsh/other/mapper/UserMapper.java b/cloud-server-other/src/main/java/com/dsh/other/mapper/UserMapper.java
new file mode 100644
index 0000000..7cc394a
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/mapper/UserMapper.java
@@ -0,0 +1,24 @@
+package com.dsh.other.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+import com.dsh.other.model.User;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 管理员表 Mapper 接口
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2017-07-11
+ */
+public interface UserMapper extends BaseMapper<User> {
+
+
+
+}
\ No newline at end of file
diff --git a/cloud-server-other/src/main/java/com/dsh/other/model/User.java b/cloud-server-other/src/main/java/com/dsh/other/model/User.java
new file mode 100644
index 0000000..7f4b888
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/model/User.java
@@ -0,0 +1,270 @@
+package com.dsh.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 java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 管理员表
+ * </p>
+ *
+ * @author stylefeng
+ * @since 2017-07-11
+ */
+@TableName("sys_user")
+public class User extends Model<User> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+	@TableId(value="id", type= IdType.AUTO)
+	private Integer id;
+    /**
+     * 头像
+     */
+	private String avatar;
+    /**
+     * 账号
+     */
+	private String account;
+    /**
+     * 密码
+     */
+	private String password;
+    /**
+     * md5密码盐
+     */
+	private String salt;
+    /**
+     * 名字
+     */
+	private String name;
+    /**
+     * 生日
+     */
+	private Date birthday;
+    /**
+     * 性别(1:男 2:女)
+     */
+	private Integer sex;
+    /**
+     * 电子邮件
+     */
+	private String email;
+    /**
+     * 电话
+     */
+	private String phone;
+    /**
+     * 角色id
+     */
+	private String roleid;
+    /**
+     * 部门id
+     */
+	private Integer deptid;
+    /**
+     * 状态(1:启用  2:冻结  3:删除)
+     */
+	private Integer status;
+    /**
+     * 创建时间
+     */
+	private Date createtime;
+    /**
+     * 保留字段
+     */
+	private Integer version;
+	/**
+	 * 对象类型(1=平台,2=城市管理员,3=门店)
+	 */
+	@TableField("objectType")
+	private Integer objectType;
+	/**
+	 * objectId
+	 */
+	@TableField("objectId")
+	private Integer objectId;
+	@TableField("idCard")
+	private String idCard;
+
+	public String getIdCard() {
+		return idCard;
+	}
+
+	public void setIdCard(String idCard) {
+		this.idCard = idCard;
+	}
+
+	public Integer getId() {
+		return id;
+	}
+
+	public void setId(Integer id) {
+		this.id = id;
+	}
+
+	public String getAvatar() {
+		return avatar;
+	}
+
+	public void setAvatar(String avatar) {
+		this.avatar = avatar;
+	}
+
+	public String getAccount() {
+		return account;
+	}
+
+	public void setAccount(String account) {
+		this.account = account;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public String getSalt() {
+		return salt;
+	}
+
+	public void setSalt(String salt) {
+		this.salt = salt;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Date getBirthday() {
+		return birthday;
+	}
+
+	public void setBirthday(Date birthday) {
+		this.birthday = birthday;
+	}
+
+	public Integer getSex() {
+		return sex;
+	}
+
+	public void setSex(Integer sex) {
+		this.sex = sex;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getPhone() {
+		return phone;
+	}
+
+	public void setPhone(String phone) {
+		this.phone = phone;
+	}
+
+	public String getRoleid() {
+		return roleid;
+	}
+
+	public void setRoleid(String roleid) {
+		this.roleid = roleid;
+	}
+
+	public Integer getDeptid() {
+		return deptid;
+	}
+
+	public void setDeptid(Integer deptid) {
+		this.deptid = deptid;
+	}
+
+	public Integer getStatus() {
+		return status;
+	}
+
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
+
+	public Date getCreatetime() {
+		return createtime;
+	}
+
+	public void setCreatetime(Date createtime) {
+		this.createtime = createtime;
+	}
+
+	public Integer getVersion() {
+		return version;
+	}
+
+	public void setVersion(Integer version) {
+		this.version = version;
+	}
+
+	public Integer getObjectType() {
+		return objectType;
+	}
+
+	public void setObjectType(Integer objectType) {
+		this.objectType = objectType;
+	}
+
+	public Integer getObjectId() {
+		return objectId;
+	}
+
+	public void setObjectId(Integer objectId) {
+		this.objectId = objectId;
+	}
+
+	@Override
+	protected Serializable pkVal() {
+		return this.id;
+	}
+
+	@Override
+	public String toString() {
+		return "User{" +
+			"id=" + id +
+			", avatar=" + avatar +
+			", account=" + account +
+			", password=" + password +
+			", salt=" + salt +
+			", name=" + name +
+			", birthday=" + birthday +
+			", sex=" + sex +
+			", email=" + email +
+			", phone=" + phone +
+			", roleid=" + roleid +
+			", deptid=" + deptid +
+			", status=" + status +
+			", createtime=" + createtime +
+			", version=" + version +
+			"}";
+	}
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/IUserService.java b/cloud-server-other/src/main/java/com/dsh/other/service/IUserService.java
new file mode 100644
index 0000000..9c54f65
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/IUserService.java
@@ -0,0 +1,23 @@
+package com.dsh.other.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import com.dsh.other.model.User;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 管理员表 服务类
+ * </p>
+ *
+ * @author stylefeng123
+ * @since 2018-02-22
+ */
+public interface IUserService extends IService<User> {
+
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/UserServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/UserServiceImpl.java
new file mode 100644
index 0000000..9d7ef68
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/UserServiceImpl.java
@@ -0,0 +1,29 @@
+package com.dsh.other.service.impl;
+
+import java.util.List;
+
+import java.util.Map;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.other.mapper.UserMapper;
+import com.dsh.other.model.User;
+import com.dsh.other.service.IUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+
+/**
+ * <p>
+ * 管理员表 服务实现类
+ * </p>
+ *
+ * @author stylefeng123
+ * @since 2018-02-22
+ */
+@Service
+public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
+
+
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/util/TaskUtil.java b/cloud-server-other/src/main/java/com/dsh/other/util/TaskUtil.java
index c406008..4b95453 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/util/TaskUtil.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/util/TaskUtil.java
@@ -36,7 +36,8 @@
                 long l = time + 1800 * 1000;
                 if (System.currentTimeMillis() > l) {
                     siteBooking.setStatus(5);
-                    siteBookingMapper.deleteById(siteBooking.getId());
+                    siteBookingMapper.updateById(siteBooking);
+//                    siteBookingMapper.deleteById(siteBooking.getId());
                 }
             }
             //定时修改赛事状态

--
Gitblit v1.7.1