From 252253187765e71f2953b8c00e2497ff29a0deaf Mon Sep 17 00:00:00 2001
From: lisy <linlangsur163@163.com>
Date: 星期三, 26 七月 2023 17:05:36 +0800
Subject: [PATCH] 开始上课的预约记录修改

---
 cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java                   |    2 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java          |   69 +++++++++++++++++++++++++++++++++-
 cloud-server-account/src/main/java/com/dsh/account/util/DateUtil.java                             |   39 +++++++++++++++++++
 cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java         |    7 ++-
 cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/AppointmentRecordVo.java |    3 +
 5 files changed, 115 insertions(+), 5 deletions(-)

diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
index 345666f..12bc776 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
@@ -409,14 +409,17 @@
     @ApiImplicitParams({
             @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
             @ApiImplicitParam(value = "学员id", name = "stuId", required = true, dataType = "int"),
+            @ApiImplicitParam(value = "预约状态 0=全部 1=待上课 2=已完成 3=已取消", name = "appointStatus", required = false, dataType = "int"),
+            @ApiImplicitParam(value = "时间类型 0=全部 1=近一周 2=近一个月 3=近一年", name = "appointStatus", required = false, dataType = "int"),
+            @ApiImplicitParam(value = "课程名称", name = "appointStatus", required = false, dataType = "string"),
     })
-    public ResultUtil<AppointmentRecordVo> cgeClassAppointmentRecordList(Integer stuId){
+    public ResultUtil<AppointmentRecordVo> cgeClassAppointmentRecordList(Integer stuId,Integer appointStatus,Integer timeType,String search){
         try {
             Integer appUserId = tokenUtil.getUserIdFormRedis();
             if(null == appUserId){
                 return ResultUtil.tokenErr();
             }
-            return ResultUtil.success(istuService.getAppointmentRecords(stuId,appUserId));
+            return ResultUtil.success(istuService.getAppointmentRecords(stuId,appUserId,appointStatus,timeType,search));
         }catch (Exception e){
             return ResultUtil.runErr();
         }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/AppointmentRecordVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/AppointmentRecordVo.java
index 296e9e7..d253b80 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/AppointmentRecordVo.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/AppointmentRecordVo.java
@@ -16,6 +16,9 @@
     @ApiModelProperty(value = "当前学员姓名")
     private String stuName;
 
+    @ApiModelProperty(value = "预约状态 0=全部 1=待上课 2=已完成 3=已取消")
+    private Integer appointStatus;
+
     @ApiModelProperty(value = "记录列表")
     private List<RecordAppoint> appointList;
 
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java b/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java
index 96f2359..508dd60 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java
@@ -83,7 +83,7 @@
      * @param appUserId
      * @return
      */
-    AppointmentRecordVo getAppointmentRecords(Integer stuId, Integer appUserId);
+    AppointmentRecordVo getAppointmentRecords(Integer stuId, Integer appUserId,Integer appointStatus,Integer timeType,String search);
 
     ResultUtil cancelReservationOfCourse( Integer courseStuRecordId);
 
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 c9e98a6..9a11a95 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
@@ -563,7 +563,7 @@
     }
 
     @Override
-    public AppointmentRecordVo getAppointmentRecords(Integer stuId, Integer appUserId) {
+    public AppointmentRecordVo getAppointmentRecords(Integer stuId, Integer appUserId,Integer appointStatus,Integer timeType,String search) {
         AppointmentRecordVo recordVo = new AppointmentRecordVo();
         TStudent tStudent = this.baseMapper.selectOne(new QueryWrapper<TStudent>()
                 .eq("id",stuId )
@@ -571,7 +571,72 @@
         if (ToolUtil.isNotEmpty(tStudent)){
             recordVo.setStuId(tStudent.getId());
             recordVo.setStuName(tStudent.getName());
-            recordVo.setAppointList(couPayClient.obtainStudentClassDetailsData(stuId));
+            List<RecordAppoint> recordAppoints = couPayClient.obtainStudentClassDetailsData(stuId);
+            if (ToolUtil.isEmpty(appointStatus)){
+                recordVo.setAppointStatus(0);
+            }else {
+                recordVo.setAppointStatus(appointStatus);
+                recordAppoints = recordAppoints.stream()
+                        .filter(record -> record.getStatus().equals(appointStatus))
+                        .collect(Collectors.toList());
+            }
+            if (ToolUtil.isNotEmpty(search)){
+                recordVo.setAppointStatus(appointStatus);
+                recordAppoints = recordAppoints.stream()
+                        .filter(record -> record.getCoursePackageName().contains(search))
+                        .collect(Collectors.toList());
+            }
+            if (ToolUtil.isNotEmpty(timeType)){
+                Date lastOfDate = DateUtil.getLastOfDate();
+                switch (timeType){
+                    case 1:
+                        Date lastWeekStartDate = DateUtil.getLastWeekStartDate();
+                        recordAppoints = recordAppoints.stream()
+                                .filter(record -> {
+                                    try {
+                                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+                                        Date time = sdf.parse(record.getTimeFrame().substring(11));
+                                        return !time.before(lastWeekStartDate) && !time.after(lastOfDate);
+                                    } catch (ParseException e) {
+                                        return false;
+                                    }
+                                })
+                                .collect(Collectors.toList());
+                        break;
+                    case 2:
+                        Date lastMonthStartDate = DateUtil.getLastMonthStartDate();
+                        recordAppoints = recordAppoints.stream()
+                                .filter(record -> {
+                                    try {
+                                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                                        Date time = sdf.parse(record.getTimeFrame().substring(11));
+                                        return !time.before(lastMonthStartDate) && !time.after(lastOfDate);
+                                    } catch (ParseException e) {
+                                        return false;
+                                    }
+                                })
+                                .collect(Collectors.toList());
+                        break;
+                    case 3:
+                        Date lastYearStartDate = DateUtil.getLastYearStartDate();
+                        recordAppoints = recordAppoints.stream()
+                                .filter(record -> {
+                                    try {
+                                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+                                        Date time = sdf.parse(record.getTimeFrame().substring(11));
+                                        return !time.before(lastYearStartDate) && !time.after(lastOfDate);
+                                    } catch (ParseException e) {
+                                        return false;
+                                    }
+                                })
+                                .collect(Collectors.toList());
+                        break;
+                    default:
+                        break;
+
+                }
+            }
+            recordVo.setAppointList(recordAppoints);
         }
         return recordVo;
     }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/util/DateUtil.java b/cloud-server-account/src/main/java/com/dsh/account/util/DateUtil.java
index a546553..9c752b6 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/util/DateUtil.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/util/DateUtil.java
@@ -368,4 +368,43 @@
         return age;
     }
 
+
+    // 获取近一周的开始时间
+    public static Date getLastWeekStartDate() {
+        Calendar calendar = Calendar.getInstance();
+        // 设置为当前日期的前一周
+        calendar.add(Calendar.DAY_OF_YEAR, -7);
+        // 获取近一周的开始时间
+        return calendar.getTime();
+    }
+
+
+    // 获取近一个月的开始时间
+    public static Date getLastMonthStartDate() {
+        Calendar calendar = Calendar.getInstance();
+        // 设置为当前日期的前一个月
+        calendar.add(Calendar.MONTH, -1);
+        // 获取近一个月的开始时间
+        return calendar.getTime();
+    }
+
+    // 获取近一年的开始时间
+    public static Date getLastYearStartDate() {
+        Calendar calendar = Calendar.getInstance();
+        // 设置为当前日期的前一年
+        calendar.add(Calendar.YEAR, -1);
+        // 获取近一年的开始时间
+        return calendar.getTime();
+    }
+
+
+    // 获取昨天的时间
+    public static Date getLastOfDate() {
+        Calendar calendar = Calendar.getInstance();
+        // 设置为当前日期的前一个月
+        calendar.add(Calendar.DAY_OF_YEAR, -1);
+        // 获取近一个月的开始时间
+        return calendar.getTime();
+    }
+
 }

--
Gitblit v1.7.1