Selaa lähdekoodia

时间冲突校验

刘俊驰 8 kuukautta sitten
vanhempi
commit
458b15c7eb

+ 6 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java

@@ -310,6 +310,12 @@ public interface SysConfigConstant {
      * 趣纠课账期
      */
     String PRACTICE_ACCOUNT_PERIOD = "practice_account_period";
+
+    /**
+     * vip课帐期
+     */
+    String VIP_COURSE_ACCOUNT_PERIOD = "vip_course_account_period";
+
     /**
      * 直播课账期
      */

+ 1 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AccountBizTypeEnum.java

@@ -26,6 +26,7 @@ public enum AccountBizTypeEnum implements BaseEnum<String, AccountBizTypeEnum> {
     VIP_COURSE("VIP定制课"),
     DISCOUNT("畅学卡"),
 
+
     LIVE_SHARE("直播课分润"),
     VIDEO_SHARE("视频课分润"),
     MUSIC_SHARE("乐谱分润"),

+ 9 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java

@@ -503,12 +503,12 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         Map<String, List<CourseTimeEntity>> nowCourseMap = getAllPracticeCourseTime(teacherId, studentId, firstDay.toString(), lastDay.toString());
         //和生成的日历对比,筛选出空余的课程时间
         opsNewCourseCalendarData(nowCourseMap, courseCalendarEntities, Boolean.TRUE.equals(teacherTime.getSkipHolidayFlag()) ? 1 : 0 ,
-                teacherSubjectPrice.getCourseMinutes()+teacherSubjectPrice.getFreeMinutes());
+                teacherSubjectPrice.getCourseMinutes(),teacherSubjectPrice.getFreeMinutes());
         return courseCalendarEntities;
     }
 
     private void opsNewCourseCalendarData(Map<String, List<CourseTimeEntity>> nowCourseMap, List<CourseCalendarEntity> courseCalendarEntities,
-                                          Integer skipHoliday,Integer courseMinutes) {
+                                          Integer skipHoliday,Integer courseMinutes,Integer freeMinutes) {
         //储存节假日数据,避免重复查询
         Map<Integer, List<String>> holidayMap = new HashMap<>();
         courseCalendarEntities.forEach(calendarEntity -> {
@@ -534,7 +534,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
                 }
 
                 // 检查时间段是否满足课程时间,不满足则删除,满足 并且可多段的情况下,将时间段拆分
-                courseTime = splitTime(courseTime,courseMinutes);
+                courseTime = splitTime(courseTime,courseMinutes,freeMinutes);
                 calendarEntity.setCourseTime(courseTime);
 
                 //如果日历时间集合数据删没了,那么就证明当天课程已经满了  0:未满 1满
@@ -569,19 +569,20 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     }
 
     // 检查时间段是否满足课程时间,不满足则删除,满足 并且可多段的情况下,将时间段拆分
-    private List<CourseTimeEntity> splitTime(List<CourseTimeEntity> courseTime, Integer courseMinutes) {
+    private List<CourseTimeEntity> splitTime(List<CourseTimeEntity> courseTime, Integer courseMinutes,Integer freeMinutes) {
+        Integer mergeMinutes = courseMinutes + freeMinutes;
         List<CourseTimeEntity> result = new ArrayList<>();
         for (CourseTimeEntity courseTimeEntity : courseTime) {
-            if (courseTimeEntity.getEndTime().getTime() - courseTimeEntity.getStartTime().getTime() >= courseMinutes * 60 * 1000) {
+            if (courseTimeEntity.getEndTime().getTime() - courseTimeEntity.getStartTime().getTime() >= mergeMinutes * 60 * 1000) {
                 long time = courseTimeEntity.getEndTime().getTime() - courseTimeEntity.getStartTime().getTime();
                 long startTime = courseTimeEntity.getStartTime().getTime();
-                while (time >= courseMinutes * 60 * 1000) {
+                while (time >= mergeMinutes * 60 * 1000) {
                     CourseTimeEntity entity = new CourseTimeEntity();
                     entity.setStartTime(new Date(startTime));
                     entity.setEndTime(new Date(startTime + courseMinutes * 60 * 1000));
                     result.add(entity);
-                    startTime = startTime + courseMinutes * 60 * 1000;
-                    time = time - courseMinutes * 60 * 1000;
+                    startTime = startTime + mergeMinutes * 60 * 1000;
+                    time = time - mergeMinutes * 60 * 1000;
                 }
             }
         }

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java

@@ -1428,6 +1428,8 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.ALBUM_ACCOUNT_PERIOD)));
         } else if (GoodTypeEnum.ACTI_REGIST.equals(goodType)) {
             instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.ACTI_REGIST_ACCOUNT_PERIOD)));
+        } else if (GoodTypeEnum.VIP_COURSE.equals(goodType)) {
+            instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.VIP_COURSE_ACCOUNT_PERIOD)));
         }
         return instance.getTime();
     }
@@ -1514,6 +1516,10 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             return new BigDecimal(sysConfigService.findConfigValue(SysConfigConstant.MUSIC_SHEET_SERVICE_FEE))
                     .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
         }
+        if (GoodTypeEnum.VIP_COURSE.equals(goodType)) {
+            return new BigDecimal(sysConfigService.findConfigValue(SysConfigConstant.VIP_COURSE_SERVICE_FEE))
+                    .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+        }
         return BigDecimal.ZERO;
     }