|
@@ -21,6 +21,7 @@ import com.yonge.cooleshow.biz.dal.entity.*;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.CourseGroupEnum;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
|
|
|
+import com.yonge.cooleshow.biz.dal.enums.TeacherSalaryEnum;
|
|
|
import com.yonge.cooleshow.biz.dal.service.*;
|
|
|
import com.yonge.cooleshow.biz.dal.support.PageUtil;
|
|
|
import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
|
|
@@ -41,6 +42,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.temporal.TemporalAdjusters;
|
|
|
import java.util.*;
|
|
@@ -75,6 +77,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
private CourseGroupService courseGroupService;
|
|
|
@Autowired
|
|
|
private CourseScheduleStudentPaymentService courseScheduleStudentPaymentService;
|
|
|
+ @Autowired
|
|
|
+ private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
|
|
|
|
|
|
@Override
|
|
|
public CourseScheduleDao getDao() {
|
|
@@ -799,7 +803,29 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
pageInfo.setAsc(" cs.start_time_");
|
|
|
return PageUtil.pageInfo(baseMapper.queryStudentLiveCourse(pageInfo, param));
|
|
|
}
|
|
|
-
|
|
|
+ /**
|
|
|
+ * 计算课堂每节课价格
|
|
|
+ *
|
|
|
+ * @param totalCourseNum 总课程数
|
|
|
+ * @param totalRatePrice 总金额
|
|
|
+ * @return key 课堂数 value 课酬
|
|
|
+ */
|
|
|
+ private Map<Integer, BigDecimal> getCourseAveragePrice(Integer totalCourseNum, BigDecimal totalRatePrice) {
|
|
|
+ //每节课的单价 四舍五入
|
|
|
+ BigDecimal singerSalary = totalRatePrice.divide(BigDecimal.valueOf(totalCourseNum), 2, RoundingMode.HALF_UP);
|
|
|
+ //单价累计总额
|
|
|
+ BigDecimal cumulativeAmount = BigDecimal.ZERO;
|
|
|
+ Map<Integer, BigDecimal> map = new HashMap<>();
|
|
|
+ for (int i = 1; i <= totalCourseNum; i++) {
|
|
|
+ //最后一节课,直接用总课酬减去累计总额
|
|
|
+ if (i == totalCourseNum) {
|
|
|
+ singerSalary = totalRatePrice.subtract(cumulativeAmount);
|
|
|
+ }
|
|
|
+ cumulativeAmount = cumulativeAmount.add(singerSalary);
|
|
|
+ map.put(i, singerSalary);
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ }
|
|
|
/**
|
|
|
* @Description: 学生购买陪练课
|
|
|
* @Author: cy
|
|
@@ -826,7 +852,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
baseMapper.addCourseGroup(scheduleDto);
|
|
|
Long groupId = scheduleDto.getGroupId();
|
|
|
|
|
|
- BigDecimal unitPrice = scheduleDto.getUnitPrice();
|
|
|
+ //获取每节课购买的价格
|
|
|
+ Map<Integer, BigDecimal> courseAveragePrice = getCourseAveragePrice(scheduleDto.getCourseNum(), scheduleDto.getCoursePrice());
|
|
|
+
|
|
|
List<CourseScheduleDate> classTime = scheduleDto.getClassTime();
|
|
|
for (int i = 0; i < classTime.size(); i++) {
|
|
|
CourseScheduleDate date = classTime.get(i);
|
|
@@ -851,9 +879,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
payment.setCourseGroupId(groupId);
|
|
|
payment.setCourseType(CourseScheduleEnum.PRACTICE.getCode());
|
|
|
payment.setOrderNo(orderNo);
|
|
|
- payment.setOriginalPrice(unitPrice);
|
|
|
- payment.setExpectPrice(unitPrice);
|
|
|
- payment.setActualPrice(unitPrice);
|
|
|
+ payment.setOriginalPrice(courseAveragePrice.get(i+1));
|
|
|
+ payment.setExpectPrice(courseAveragePrice.get(i+1));
|
|
|
+ payment.setActualPrice(courseAveragePrice.get(i+1));
|
|
|
//写入course_schedule_student_payment
|
|
|
courseScheduleStudentPaymentService.save(payment);
|
|
|
}
|
|
@@ -878,8 +906,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
public void buyPracticeCourseSuccess(UserOrderDetailVo orderParam) {
|
|
|
log.info("学生购买陪练课-成功-回调,请求参数:{}", JSON.toJSONString(orderParam));
|
|
|
String orderNo = orderParam.getOrderNo();
|
|
|
- List<CourseScheduleStudentPayment> paymentList = paymentDao.selectList(Wrappers.<CourseScheduleStudentPayment>lambdaQuery()
|
|
|
- .eq(CourseScheduleStudentPayment::getOrderNo, orderNo));
|
|
|
+ List<CourseScheduleStudentPaymentVo> paymentList = paymentDao.selectPaymentList(orderNo);
|
|
|
if (paymentList.isEmpty()) {
|
|
|
throw new BizException("订单不存在!");
|
|
|
}
|
|
@@ -887,13 +914,34 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
//course_schedule中lock_改为0
|
|
|
List<Long> scheduleIds = paymentList.stream().map(CourseScheduleStudentPayment::getCourseId).collect(Collectors.toList());
|
|
|
baseMapper.updateLock(scheduleIds);
|
|
|
+
|
|
|
+ //写course_schedule_teacher_salary
|
|
|
+ Date now = new Date();
|
|
|
+ List<CourseScheduleTeacherSalary> teacherSalaryList = new ArrayList<>();
|
|
|
+ for (CourseScheduleStudentPaymentVo payment : paymentList) {
|
|
|
+ CourseScheduleTeacherSalary teacherSalary = new CourseScheduleTeacherSalary();
|
|
|
+ teacherSalary.setTeacherId(payment.getTeacherId());
|
|
|
+ teacherSalary.setStudentId(payment.getUserId());
|
|
|
+ teacherSalary.setCourseScheduleId(payment.getCourseId());
|
|
|
+ teacherSalary.setCourseGroupType(payment.getCourseType());
|
|
|
+ teacherSalary.setCourseGroupId(payment.getCourseGroupId());
|
|
|
+ teacherSalary.setClassNum(payment.getClassNum());
|
|
|
+ teacherSalary.setExpectSalary(payment.getExpectPrice());
|
|
|
+ teacherSalary.setActualSalary(payment.getActualPrice());
|
|
|
+ teacherSalary.setReduceSalary(BigDecimal.ZERO);
|
|
|
+ teacherSalary.setStatus(TeacherSalaryEnum.NOT_START.getCode());
|
|
|
+ teacherSalaryList.add(teacherSalary);
|
|
|
+ teacherSalary.setCreateTime(now);
|
|
|
+ }
|
|
|
+ courseScheduleTeacherSalaryService.getDao().insertBatch(teacherSalaryList);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 学生购买陪练课-失败-回调
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void buyPracticeCourseFailed(String orderNo) {
|
|
|
+ public void buyPracticeCourseFailed(UserOrderDetailVo orderParam) {
|
|
|
+ String orderNo = orderParam.getOrderNo();
|
|
|
List<CourseScheduleStudentPayment> paymentList = paymentDao.selectList(Wrappers.<CourseScheduleStudentPayment>lambdaQuery()
|
|
|
.eq(CourseScheduleStudentPayment::getOrderNo, orderNo));
|
|
|
if (paymentList.isEmpty()) {
|
|
@@ -924,5 +972,16 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
baseMapper.courseAdjust(adjustVo);
|
|
|
}
|
|
|
|
|
|
-}
|
|
|
-
|
|
|
+ /**
|
|
|
+ * @Description: 学生-首页-直播课&视频课
|
|
|
+ * @Author: cy
|
|
|
+ * @Date: 2022/4/22
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public StudentHomePage queryLiveAndVideo() {
|
|
|
+ StudentHomePage homePage = new StudentHomePage();
|
|
|
+ homePage.setLiveList(baseMapper.selectLive());
|
|
|
+ homePage.setVideoList(baseMapper.selectVideo());
|
|
|
+ return homePage;
|
|
|
+ }
|
|
|
+}
|