|
@@ -12,6 +12,7 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.CourseScheduleDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.CourseScheduleRepliedDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.CourseScheduleStudentPaymentDao;
|
|
|
+import com.yonge.cooleshow.biz.dal.dao.TeacherFreeTimeDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.PracticeScheduleDto;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.search.HomeworkSearch;
|
|
@@ -42,6 +43,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.*;
|
|
@@ -78,6 +80,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
private CourseScheduleStudentPaymentService courseScheduleStudentPaymentService;
|
|
|
@Autowired
|
|
|
private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
|
|
|
+ @Autowired
|
|
|
+ private TeacherFreeTimeDao teacherFreeTimeDao;
|
|
|
|
|
|
@Override
|
|
|
public CourseScheduleDao getDao() {
|
|
@@ -810,7 +814,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public HttpResponseResult<OrderCreateRes> buyPracticeCourse(OrderReq.OrderReqInfo orderReqInfo) {
|
|
|
- log.info("学生购买陪练课,请求参数:{}", JSON.toJSONString(orderReqInfo));
|
|
|
+ log.info("buyPracticeCourse param:{}", JSON.toJSONString(orderReqInfo));
|
|
|
Long studentId = orderReqInfo.getUserId();
|
|
|
|
|
|
//校验学生信息
|
|
@@ -829,7 +833,11 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
baseMapper.addCourseGroup(scheduleDto);
|
|
|
Long groupId = scheduleDto.getGroupId();
|
|
|
|
|
|
- //获取每节课购买的价格
|
|
|
+ //根据老师id获取默认配置声部原价
|
|
|
+ TeacherSubjectPrice teacherSubjectPrice = teacherFreeTimeDao.selectSubjectPrice(scheduleDto.getTeacherId(), scheduleDto.getSubjectId());
|
|
|
+ BigDecimal subjectPrice = teacherSubjectPrice.getSubjectPrice();
|
|
|
+
|
|
|
+ //每课实际价格
|
|
|
Map<Integer, BigDecimal> courseAveragePrice = WrapperUtil.getAveragePrice(scheduleDto.getCourseNum(), scheduleDto.getCoursePrice());
|
|
|
|
|
|
List<CourseScheduleDate> classTime = scheduleDto.getClassTime();
|
|
@@ -856,9 +864,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
payment.setCourseGroupId(groupId);
|
|
|
payment.setCourseType(CourseScheduleEnum.PRACTICE.getCode());
|
|
|
payment.setOrderNo(orderNo);
|
|
|
- payment.setOriginalPrice(courseAveragePrice.get(i + 1));
|
|
|
- payment.setExpectPrice(courseAveragePrice.get(i + 1));
|
|
|
- payment.setActualPrice(courseAveragePrice.get(i + 1));
|
|
|
+ payment.setOriginalPrice(subjectPrice);//原价
|
|
|
+ payment.setExpectPrice(subjectPrice);//预计价格
|
|
|
+ payment.setActualPrice(courseAveragePrice.get(i + 1));//实际价格
|
|
|
//写入course_schedule_student_payment
|
|
|
courseScheduleStudentPaymentService.save(payment);
|
|
|
}
|
|
@@ -873,6 +881,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
orderCreateRes.setGoodType(GoodTypeEnum.PRACTICE);
|
|
|
HttpResponseResult<OrderCreateRes> httpResponseResult = new HttpResponseResult<>();
|
|
|
httpResponseResult.setData(orderCreateRes);
|
|
|
+ log.info("buyPracticeCourse return {}", httpResponseResult);
|
|
|
return httpResponseResult;
|
|
|
}
|
|
|
|
|
@@ -892,10 +901,16 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
List<Long> scheduleIds = paymentList.stream().map(CourseScheduleStudentPayment::getCourseId).collect(Collectors.toList());
|
|
|
baseMapper.updateLock(scheduleIds);
|
|
|
|
|
|
+ //查询陪练课服务费
|
|
|
+ String practiceServiceRateStr = sysConfigService.findConfigValue(SysConfigConstant.PRACTICE_SERVICE_FEE);
|
|
|
+ BigDecimal practiceServiceRate = new BigDecimal(practiceServiceRateStr).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
|
|
|
+
|
|
|
//写course_schedule_teacher_salary
|
|
|
Date now = new Date();
|
|
|
List<CourseScheduleTeacherSalary> teacherSalaryList = new ArrayList<>();
|
|
|
for (CourseScheduleStudentPaymentVo payment : paymentList) {
|
|
|
+ BigDecimal expectPrice = payment.getExpectPrice();//预计价格
|
|
|
+
|
|
|
CourseScheduleTeacherSalary teacherSalary = new CourseScheduleTeacherSalary();
|
|
|
teacherSalary.setTeacherId(payment.getTeacherId());
|
|
|
teacherSalary.setStudentId(payment.getUserId());
|
|
@@ -903,8 +918,10 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
teacherSalary.setCourseGroupType(payment.getCourseType());
|
|
|
teacherSalary.setCourseGroupId(payment.getCourseGroupId());
|
|
|
teacherSalary.setClassNum(payment.getClassNum());
|
|
|
- teacherSalary.setExpectSalary(payment.getExpectPrice());
|
|
|
- teacherSalary.setActualSalary(payment.getActualPrice());
|
|
|
+ //预计获取学生支付单课全部课酬
|
|
|
+ teacherSalary.setExpectSalary(payment.getActualPrice());
|
|
|
+ //实际获取扣除手续费后课酬
|
|
|
+ teacherSalary.setActualSalary(expectPrice.subtract(expectPrice.multiply(practiceServiceRate)).setScale(2, RoundingMode.HALF_UP));//实际
|
|
|
teacherSalary.setReduceSalary(BigDecimal.ZERO);
|
|
|
teacherSalary.setStatus(TeacherSalaryEnum.NOT_START.getCode());
|
|
|
teacherSalaryList.add(teacherSalary);
|
|
@@ -935,8 +952,6 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
this.removeByIds(scheduleIds);
|
|
|
//删除course_group数据
|
|
|
courseGroupService.removeById(courseGroupId);
|
|
|
-
|
|
|
- //修改订单为失败
|
|
|
}
|
|
|
|
|
|
/**
|