Forráskód Böngészése

时长计算修改

cy 3 éve
szülő
commit
7b97edecf5

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

@@ -1024,7 +1024,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
 
         RLock lock = redissonClient.getLock("teacherId:" + scheduleDto.getTeacherId());
         try {
-            if (lock.tryLock(10,60, TimeUnit.SECONDS)) {
+            if (lock.tryLock(0, 60, TimeUnit.SECONDS)) {
                 return buyPracticeCourseTran(orderReqInfo);
             }
         } catch (InterruptedException e) {
@@ -2100,31 +2100,20 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         if (pianoRoomTime == null) {
             throw new BizException("未查到剩余时长");
         }
-        Integer frozenTime = pianoRoomTime.getFrozenTime();
-        Integer remainTime = pianoRoomTime.getRemainTime();
+        Integer frozenTime = pianoRoomTime.getFrozenTime();//冻结时长
+        Integer remainTime = pianoRoomTime.getRemainTime();//剩余时长
 
         String formula = sysConfigService.findConfigValue(SysConfigConstant.PIANO_ROOM_TIME_FORMULA);
-
-        int i = studentIds.size() - paymentList.size();//新人数-原人数
-        if (i > 0) {//加人,扣时长
-            Integer n = (Integer) WrapperUtil.strToFormula(formula, "n", String.valueOf(i + 1));
-            int courseTime = singleCourseTime * n;
-            if (remainTime - courseTime < 0) {
-                throw new BizException("剩余时长不足");
-            }
-            pianoRoomTimeDao.update(null, Wrappers.<PianoRoomTime>lambdaUpdate()
-                    .eq(PianoRoomTime::getTeacherId, teacherId)
-                    .set(PianoRoomTime::getRemainTime, remainTime - courseTime)
-                    .set(PianoRoomTime::getFrozenTime, frozenTime + courseTime));
-        }
-        if (i < 0) {//减人,释放时长
-            Integer n = (Integer) WrapperUtil.strToFormula(formula, "n", String.valueOf(-i + 1));
-            int courseTime = singleCourseTime * n;
-            pianoRoomTimeDao.update(null, Wrappers.<PianoRoomTime>lambdaUpdate()
-                    .eq(PianoRoomTime::getTeacherId, teacherId)
-                    .set(PianoRoomTime::getRemainTime, remainTime + courseTime)
-                    .set(PianoRoomTime::getFrozenTime, frozenTime - courseTime));
+        Integer before = (Integer) WrapperUtil.strToFormula(formula, "n", String.valueOf(studentIds.size() + 1));//变更前
+        Integer after = (Integer) WrapperUtil.strToFormula(formula, "n", String.valueOf(paymentList.size() + 1));//变更前
+        int diffTime = singleCourseTime * (after - before);//人数变更后单课耗时
+        if (remainTime - diffTime < 0) {
+            throw new BizException("剩余时长不足");
         }
+        pianoRoomTimeDao.update(null, Wrappers.<PianoRoomTime>lambdaUpdate()
+                .eq(PianoRoomTime::getTeacherId, teacherId)
+                .set(PianoRoomTime::getRemainTime, remainTime - diffTime)
+                .set(PianoRoomTime::getFrozenTime, frozenTime + diffTime));
 
         //删除原学员
         paymentDao.delete(Wrappers.<CourseScheduleStudentPayment>lambdaQuery().eq(CourseScheduleStudentPayment::getCourseId, courseId));