From df2e94580f6a24a14d08b6535dc166625b2b2caa Mon Sep 17 00:00:00 2001
From: nickchange <126672920+nickchange@users.noreply.github.com>
Date: 星期二, 28 十一月 2023 20:35:47 +0800
Subject: [PATCH] 更新
---
cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java | 5 +
cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java | 1
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 3
.idea/workspace.xml | 19 +++-
cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java | 10 +
cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java | 1
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java | 185 ++++++++++++++++++++++++++++++++++++++++++++-
7 files changed, 205 insertions(+), 19 deletions(-)
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index b72c3d4..e7c5bba 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -25,7 +25,14 @@
<select />
</component>
<component name="ChangeListManager">
- <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="11.27,9" />
+ <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="11.27,9">
+ <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java" afterDir="false" />
+ </list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
@@ -86,12 +93,12 @@
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
- <component name="PropertiesComponent">{
- "keyToString": {
- "git-widget-placeholder": "master",
- "node.js.selected.package.tslint": "(autodetect)"
+ <component name="PropertiesComponent"><![CDATA[{
+ "keyToString": {
+ "git-widget-placeholder": "正在合并 master",
+ "node.js.selected.package.tslint": "(autodetect)"
}
-}</component>
+}]]></component>
<component name="ReactorSettings">
<option name="notificationShown" value="true" />
</component>
diff --git a/cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java b/cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java
index 15142ba..7dde998 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java
@@ -108,6 +108,7 @@
* 所有课时有效期
*/
@TableField("validity")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date validity;
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
index bb4fc3d..a025fe7 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -303,6 +303,7 @@
;
}
}
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (tStudents.size() > 0) {
TStudent tStudent = tStudents.get(0);
classInfoVo.setStuId(tStudent.getId());
@@ -328,7 +329,7 @@
course.setTotalNums(ToolUtil.isEmpty(tCoursePackagePayment.getTotalCourseNums()) ? 0 : tCoursePackagePayment.getTotalCourseNums());
course.setDeductedNums(ToolUtil.isEmpty(tCoursePackagePayment.getDeductionNums()) ? 0 : tCoursePackagePayment.getDeductionNums());
course.setRemainingNums(ToolUtil.isEmpty(tCoursePackagePayment.getResidueNums()) ? 0 : tCoursePackagePayment.getResidueNums());
- course.setPeriodOfValidity(tCoursePackagePayment.getPeriodOfValidity());
+ course.setPeriodOfValidity(sdf.format(tStudent.getValidity()));
course.setIsAble(tCoursePackagePayment.getIsAble());
course.setCourseType(tCoursePackagePayment.getCourseType());
courseList.add(course);
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java
index 7f991b0..93dbc1f 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java
@@ -55,7 +55,10 @@
*/
@PostMapping("/student/queryTStudentListByName")
List<TStudent> queryTStudentListByName(@RequestBody String name);
-
+ /**
+ * 修改数据
+ * @param student
+ */
@PostMapping("/student/frozen")
void frozen(@RequestBody Student student);
}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java
index a123916..d66b31b 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java
@@ -75,5 +75,4 @@
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date validity;
-
}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
index 17df637..cc8cf68 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
@@ -172,6 +172,8 @@
.orderByDesc("classDate")
.last(" limit 0, 1")
);
+ Student student = studentClient.queryStudentById(coursePackageScheduling.getStudentId());
+ Date validity = student.getValidity();
TCoursePackage coursePackage = coursePackageService.getById(coursePackageScheduling.getCoursePackageId());
//上课星期
String classWeeks = coursePackage.getClassWeeks();
@@ -221,7 +223,7 @@
continue;
}
//大于有效期不进行排课
- if (start.getTimeInMillis() >= useTime.getTime()) {
+ if (start.getTimeInMillis() >= validity.getTime()) {
break;
}
for (int j = 0; j < split.length; j++) {
@@ -318,6 +320,8 @@
TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
Integer codeTime = coursePackage.getCodeTime();
Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
+ Student student = studentClient.queryStudentById(coursePackageScheduling.getStudentId());
+ Date validity = student.getValidity();
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
@@ -370,7 +374,7 @@
}
//大于有效期不进行排课
- if (startTime.getTimeInMillis() >= useTime.getTime()) {
+ if (startTime.getTimeInMillis() >= validity.getTime()) {
break;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -484,7 +488,7 @@
}
//大于有效期不进行排课
- if (startTime.getTimeInMillis() >= useTime.getTime()) {
+ if (startTime.getTimeInMillis() >= validity.getTime()) {
break;
}
for (int j = 0; j < split.length; j++) {
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 e4eac41..80f53c0 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
@@ -103,6 +103,9 @@
@Autowired
private TCoursePackageService coursePackageService;
+ @Resource
+ private CoursePackageStudentMapper coursePackageStudentMapper;
+
@Override
public List<CourseOfStoreVo> queryStoreOfCourse() {
@@ -1068,7 +1071,6 @@
break;
}
if ("TRADE_SUCCESS".equals(s)) {
-
coursePackageOrder1.setPayStatus(2);
coursePackageOrder1.setOrderNumber(tradeNo);
coursePackageOrder1.setAppUserId(null);
@@ -1175,6 +1177,8 @@
String[] split = coursePackageOrder.getStudentIds().split(";");
for (String id : split) {
if(coursePackage.getType() == 1){
+ //增加学员课时有效期
+ Student student = studentClient.queryStudentById(Integer.valueOf(id));
CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", id)
.eq("coursePackageId", coursePackageOrder.getCoursePackageId()).eq("state", 1));
if (null == coursePackageOrderStudent) {
@@ -1196,9 +1200,18 @@
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
coursePackageOrderStudent.setUseTime(calendar.getTime());
coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
+ //更新学员课时有效期
+ if(null == student.getValidity()){
+ student.setValidity(calendar.getTime());
+ addOldPackageStudent(student);
+ }else if(calendar.getTimeInMillis() > student.getValidity().getTime()){
+ student.setValidity(calendar.getTime());
+ addOldPackageStudent(student);
+ }
+ studentClient.frozen(student);
//开始排课
- addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), coursePackageOrderStudent);
+ addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), coursePackageOrderStudent, student.getValidity());
//课时记录
CourseCounsum courseCounsum = new CourseCounsum();
courseCounsum.setPaymentId(coursePackageOrderStudent.getId());
@@ -1230,9 +1243,19 @@
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
coursePackageOrderStudent.setUseTime(calendar.getTime());
coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
+ //更新学员课时有效期
+ if(null == student.getValidity()){
+ student.setValidity(calendar.getTime());
+ addOldPackageStudent(student);
+ }else if(calendar.getTimeInMillis() > student.getValidity().getTime()){
+ student.setValidity(calendar.getTime());
+ addOldPackageStudent(student);
+ }
+ studentClient.frozen(student);
+
//中间断课,没有连续续费的情况需要重新排课
if (useTime.compareTo(new Date()) < 0) {
- addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), coursePackageOrderStudent);
+ addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), coursePackageOrderStudent, student.getValidity());
}
//课时记录
@@ -1261,7 +1284,7 @@
}
if(coursePackage.getType() == 2){
- addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), null);
+ addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), null, null);
}
}
}
@@ -1274,7 +1297,7 @@
* @param sId
* @throws ParseException
*/
- private void addPackageStudent(TCoursePackage tCoursePackage, Integer userId, Integer sId, CoursePackageOrderStudent coursePackageOrderStudent) {
+ private void addPackageStudent(TCoursePackage tCoursePackage, Integer userId, Integer sId, CoursePackageOrderStudent coursePackageOrderStudent, Date validity) {
try {
//1常规 2假期 3体验
if (tCoursePackage.getType() == 1) {
@@ -1302,7 +1325,6 @@
int day_week = calendar.get(Calendar.DAY_OF_WEEK);
day_week = day_week - 1 == 0 ? 7 : day_week - 1;
int num = 8 - day_week + 7;
- Date useTime = coursePackageOrderStudent.getUseTime();
for (int i = 0; i < num; i++) {
Date time = calendar.getTime();
@@ -1317,7 +1339,7 @@
//大于有效期不进行排课
- if (calendar.getTimeInMillis() >= useTime.getTime()) {
+ if (calendar.getTimeInMillis() >= validity.getTime()) {
break;
}
for (int j = 0; j < split.length; j++) {
@@ -1420,6 +1442,155 @@
}
+ /**
+ * 课时有效期更新后-更新历史排课数据
+ * @param student
+ */
+ public void addOldPackageStudent(Student student){
+ Integer studentId = student.getId();
+ Date validity = student.getValidity();
+ List<CoursePackageOrderStudent> list = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
+ .eq("studentId", studentId)
+ .eq("status", 1)
+ .gt("laveClassHours", 0)
+ .eq("state", 1)
+ );
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ for (CoursePackageOrderStudent coursePackageOrderStudent : list) {
+ TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
+ CoursePackageScheduling one = coursePackageSchedulingService.getOne(new QueryWrapper<CoursePackageScheduling>()
+ .eq("studentId", studentId)
+ .eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId())
+ .eq("status", 1)
+ .orderByDesc("classDate")
+ .last(" limit 0, 1")
+ );
+
+ Calendar calendar = Calendar.getInstance();
+ if(null == one){
+ calendar.setTime(new Date());
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+ }else{
+ Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
+ Integer codeTime = coursePackage.getCodeTime();
+ String classStartTime = coursePackage.getClassStartTime();
+ String classEndTime = coursePackage.getClassEndTime();
+ String format = sdf1.format(one.getClassDate());
+ String time = format.substring(format.indexOf(" ") + 1);
+ String[] split = classStartTime.split(",");
+ String[] split1 = classEndTime.split(",");
+ int n = Arrays.asList(split).indexOf(time);
+ if(n != split.length - 1){
+ calendar.setTime(one.getClassDate());
+ //单独处理当天的剩余时间段
+ n++;
+ for (int i = n; i < split.length; i++) {
+ //剩余数量不足以排课
+ if (laveClassHours.compareTo(codeTime) < 0) {
+ break;
+ }
+ laveClassHours -= codeTime;
+ CoursePackageScheduling packageScheduling = new CoursePackageScheduling();
+ packageScheduling.setType(coursePackage.getType());
+ packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId());
+ packageScheduling.setStudentId(coursePackageOrderStudent.getStudentId());
+ packageScheduling.setCoursePackageId(coursePackage.getId());
+ try {
+ Date parse = sdf.parse(format.format(time) + " " + split[i]);
+ Date parse1 = sdf.parse(format.format(time) + " " + split1[i]);
+ packageScheduling.setClassDate(parse);
+ packageScheduling.setEndDate(parse1);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ packageScheduling.setStatus(1);
+ coursePackageSchedulingService.save(packageScheduling);
+ CoursePackageStudent student1 = new CoursePackageStudent();
+ student1.setAppUserId(coursePackageOrderStudent.getAppUserId());
+ student1.setStudentId(coursePackageOrderStudent.getStudentId());
+ student1.setCoursePackageId(coursePackage.getId());
+ student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
+ student1.setCoursePackageSchedulingId(packageScheduling.getId());
+ student1.setSignInOrNot(1);
+ student1.setReservationStatus(1);
+ student1.setInsertTime(new Date());
+ coursePackageStudentMapper.insert(student1);
+ }
+
+ }else{
+ calendar.setTime(one.getClassDate());
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ int day_week1 = calendar.get(Calendar.DAY_OF_WEEK);
+ day_week1 = day_week1 - 1 == 0 ? 7 : day_week1 - 1;
+ int num = 8 - day_week1 + 7;
+
+ //上课星期
+ String classWeeks = coursePackage.getClassWeeks();
+ List<Integer> week = week(classWeeks);
+
+ for (int i = 0; i < num; i++) {
+ Date time1 = calendar.getTime();
+
+ //判断当天是否在排课星期内
+ int day = calendar.get(Calendar.DAY_OF_WEEK);
+ day = day - 1 == 0 ? 7 : day - 1;
+ if (!week.contains(day)) {
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+ continue;
+ }
+
+ //大于有效期不进行排课
+ if (calendar.getTimeInMillis() >= validity.getTime()) {
+ break;
+ }
+ for (int j = 0; j < split.length; j++) {
+ //剩余数量不足以排课
+ if (laveClassHours.compareTo(codeTime) < 0) {
+ break;
+ }
+
+ laveClassHours -= codeTime;
+
+ CoursePackageScheduling packageScheduling = new CoursePackageScheduling();
+ packageScheduling.setType(coursePackage.getType());
+ packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId());
+ packageScheduling.setStudentId(coursePackageOrderStudent.getStudentId());
+ packageScheduling.setCoursePackageId(coursePackage.getId());
+ try {
+ Date parse = sdf.parse(sdf1.format(time1) + " " + split[j]);
+ Date parse1 = sdf.parse(sdf1.format(time1) + " " + split1[j]);
+ packageScheduling.setClassDate(parse);
+ packageScheduling.setEndDate(parse1);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ packageScheduling.setStatus(1);
+ coursePackageSchedulingService.save(packageScheduling);
+ CoursePackageStudent student1 = new CoursePackageStudent();
+ student1.setAppUserId(coursePackageOrderStudent.getAppUserId());
+ student1.setStudentId(coursePackageOrderStudent.getStudentId());
+ student1.setCoursePackageId(coursePackage.getId());
+ student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
+ student1.setCoursePackageSchedulingId(packageScheduling.getId());
+ student1.setSignInOrNot(1);
+ student1.setReservationStatus(1);
+ student1.setInsertTime(new Date());
+ coursePackageStudentMapper.insert(student1);
+ }
+ //增加日期,用于判断
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+ }
+ }
+ }
+ }
+ }
+
+
+
public static Date[] generateDateArray1(Date startDate, Date endDate) {
List<Date> dateList = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
--
Gitblit v1.7.1