|
@@ -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));
|