Browse Source

视频课审核筛选

cy 3 năm trước cách đây
mục cha
commit
05fac36b3e

+ 0 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java

@@ -7,7 +7,6 @@ import com.yonge.cooleshow.biz.dal.dto.PracticeScheduleDto;
 import com.yonge.cooleshow.biz.dal.dto.search.HomeworkSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.PracticeTeacherSearch;
-import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import org.apache.ibatis.annotations.Param;

+ 9 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherFreeTimeDao.java

@@ -20,11 +20,11 @@ public interface TeacherFreeTimeDao extends BaseMapper<TeacherFreeTime> {
     int insertBatch(@Param("entities") List<TeacherFreeTime> entities);
 
     /**
-     * @description: 获取老师陪练课设置
      * @param teacherId
      * @param courseMinutes
      * @param freeMinutes
      * @return com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime
+     * @description: 获取老师陪练课设置
      * @author zx
      * @date 2022/3/25 10:25
      */
@@ -33,12 +33,12 @@ public interface TeacherFreeTimeDao extends BaseMapper<TeacherFreeTime> {
                             @Param("freeMinutes") Integer freeMinutes);
 
     /**
-    * @description: 修改默认配置
      * @param defaultFlag
-    * @return void
-    * @author zx
-    * @date 2022/3/29 10:02
-    */
+     * @return void
+     * @description: 修改默认配置
+     * @author zx
+     * @date 2022/3/29 10:02
+     */
     void updateDefaultFlag(@Param("defaultFlag") boolean defaultFlag, @Param("teacherId") Long teacherId);
 
     //根据id删除关联表数据
@@ -52,5 +52,8 @@ public interface TeacherFreeTimeDao extends BaseMapper<TeacherFreeTime> {
 
     //根据id查声部售价
     List<TeacherSubjectPrice> getPrice(Long id);
+
+    //查询老师声部默认售价
+    TeacherSubjectPrice selectSubjectPrice(@Param("teacherId") Long teacherId, @Param("subjectId") Long subjectId);
 }
 

+ 3 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/PracticeScheduleDto.java

@@ -28,7 +28,7 @@ public class PracticeScheduleDto implements Serializable {
     @ApiModelProperty(value = "课程组名称")
     private String courseGroupName;
     @ApiModelProperty(value = "声部id")
-    private String subjectId;
+    private Long subjectId;
     @ApiModelProperty(value = "单课时长")
     private Integer singleCourseMinutes;
     @ApiModelProperty(value = "课程数")
@@ -98,11 +98,11 @@ public class PracticeScheduleDto implements Serializable {
         this.courseGroupName = courseGroupName;
     }
 
-    public String getSubjectId() {
+    public Long getSubjectId() {
         return subjectId;
     }
 
-    public void setSubjectId(String subjectId) {
+    public void setSubjectId(Long subjectId) {
         this.subjectId = subjectId;
     }
 

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

@@ -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);
-
-        //修改订单为失败
     }
 
     /**

+ 24 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonPurchaseRecordServiceImpl.java

@@ -6,10 +6,14 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDao;
+import com.yonge.cooleshow.biz.dal.dto.UserAccountRecordDto;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonPurchaseRecordDao;
+import com.yonge.cooleshow.biz.dal.enums.AccountBizTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
+import com.yonge.cooleshow.biz.dal.service.UserAccountService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonPurchaseRecordService;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
@@ -43,6 +47,8 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
     private VideoLessonPurchaseRecordDao videoLessonPurchaseRecordDao;
     @Autowired
     private VideoLessonGroupDao videoLessonGroupDao;
+    @Autowired
+    private UserAccountService userAccountService;
 
     public VideoLessonPurchaseRecordDao getDao() {
         return videoLessonPurchaseRecordDao;
@@ -55,7 +61,7 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
      */
     @Transactional(rollbackFor = Exception.class)
     public HttpResponseResult<OrderCreateRes> buyVideoCourse(OrderReq.OrderReqInfo orderReqInfo) {
-        log.info("学生购买视频课程组,请求参数:{}", JSON.toJSONString(orderReqInfo));
+        log.info("buyVideoCourse  param:{}", JSON.toJSONString(orderReqInfo));
         Long studentId = orderReqInfo.getUserId();
         String orderNo = orderReqInfo.getOrderNo();
 
@@ -72,7 +78,6 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
             throw new BizException("课程组不存在!");
         }
 
-        orderNo="999";
         purchaseRecord.setOrderNo(orderNo);
         purchaseRecord.setStudentId(studentId);
         purchaseRecord.setOrderStatus(0);
@@ -89,6 +94,7 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
         orderCreateRes.setGoodType(GoodTypeEnum.VIDEO);
         HttpResponseResult<OrderCreateRes> httpResponseResult = new HttpResponseResult<>();
         httpResponseResult.setData(orderCreateRes);
+        log.info("buyVideoCourse  return {}", httpResponseResult);
         return httpResponseResult;
     }
 
@@ -102,14 +108,27 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
         log.info("学生购买视频课-成功-回调,请求参数:{}", JSON.toJSONString(orderParam));
         String orderNo = orderParam.getOrderNo();
 
-        VideoLessonPurchaseRecord videoGroup = videoLessonPurchaseRecordDao.selectOne(Wrappers.<VideoLessonPurchaseRecord>lambdaQuery()
+        VideoLessonPurchaseRecord purchaseRecord = videoLessonPurchaseRecordDao.selectOne(Wrappers.<VideoLessonPurchaseRecord>lambdaQuery()
                 .eq(VideoLessonPurchaseRecord::getOrderNo, orderNo));
-        if (videoGroup == null) {
-            throw new BizException("课程组不存在!");
+        if (purchaseRecord == null) {
+            throw new BizException("课程组购买记录不存在!");
         }
 
         //video_lesson_purchase_record中order_status_改为1
         videoLessonPurchaseRecordDao.updateStatus(orderNo);
+        //查询组信息
+        VideoLessonGroup lessonGroup = videoLessonGroupDao.selectById(purchaseRecord.getVideoLessonGroupId());
+
+        //记录流水
+        UserAccountRecordDto userAccountRecord = new UserAccountRecordDto();
+        userAccountRecord.setUserId(lessonGroup.getTeacherId());
+        userAccountRecord.setTransAmount(purchaseRecord.getPayMoney());
+        userAccountRecord.setInOrOut(InOrOutEnum.IN);
+        userAccountRecord.setBizType(AccountBizTypeEnum.VIDEO);
+        userAccountRecord.setBizId(lessonGroup.getTeacherId());
+        userAccountRecord.setBizName(lessonGroup.getLessonName());
+        userAccountRecord.setOrderNo(orderNo);
+        userAccountService.accountChange(userAccountRecord);
     }
 
     /**

+ 14 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherFreeTimeMapper.xml

@@ -81,4 +81,18 @@
             parameterType="java.lang.Long">
         SELECT * FROM teacher_subject_price WHERE teacher_free_time_id = #{id}
     </select>
+    <select id="selectSubjectPrice" resultType="com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice">
+        SELECT
+            p.id_ AS id,
+            p.teacher_free_time_id AS teacherFreeTimeId,
+            p.teacher_id_ AS teacherId,
+            p.free_minutes_ AS freeMinutes,
+            p.course_minutes_ AS courseMinutes,
+            p.subject_id_ AS subjectId,
+            p.subject_name_ AS subjectName,
+            p.subject_price_ AS subjectPrice
+        FROM teacher_free_time f
+        LEFT JOIN teacher_subject_price p ON f.id_=p.teacher_free_time_id
+        WHERE f.teacher_id_=#{teacherId} AND f.default_flag_=1 AND p.subject_id_=#{subjectId}
+    </select>
 </mapper>

+ 2 - 2
cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml

@@ -270,13 +270,13 @@
 				)
 			</if>
 			<if test="param.auditStatus !=null and param.auditStatus !=''">
-				AND g.audit_status_ = #{param.auditStatus}
+				AND r.audit_status_ = #{param.auditStatus}
 			</if>
 			<if test="param.subjectId !=null">
 				AND g.lesson_subject_ = #{param.subjectId}
 			</if>
 			<if test="param.auditName !=null and param.auditName !=''">
-				AND g.audit_name_ LIKE CONCAT('%', #{param.auditName}, '%')
+				AND r.audit_name_ LIKE CONCAT('%', #{param.auditName}, '%')
 			</if>
 			<if test="param.startTime !=null">
 				<![CDATA[AND g.create_time_ >= #{param.startTime} ]]>