瀏覽代碼

Merge remote-tracking branch 'origin/master'

weifanli 3 年之前
父節點
當前提交
4ff0d6e897

+ 4 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/SubjectController.java

@@ -43,6 +43,10 @@ public class SubjectController extends BaseController {
 	@PreAuthorize("@pcs.hasPermissions('subject/queryPage')")
 	public HttpResponseResult<PageInfo<Subject>> queryPage(SubjectQueryInfo queryInfo) {
 		PageInfo<Subject> pageInfo = subjectService.queryPage(queryInfo);
+		
+		if(pageInfo.getRows().size() == 0){
+			return succeed(pageInfo);
+		}
 
 		Map<Long, Subject> map = subjectService.findBySubjectByIdList(pageInfo.getRows().stream().map(t -> t.getParentSubjectId()).collect(Collectors.toList())).stream()
 				.collect(Collectors.toMap(Subject::getId, t -> t));

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

@@ -13,6 +13,7 @@ import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -175,7 +176,7 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
     List<SysUser> selectTeacher(String tomorrow);
 
     //根据老师id统计明日课程
-    List<CountVo> selectTypeCount(@Param("teacherId")Long teacherId,@Param("tomorrow") String tomorrow);
+    List<CountVo> selectTypeCount(@Param("teacherId") Long teacherId, @Param("tomorrow") String tomorrow);
 
 
     List<TodayNotRepliedAndNotDecorateHomeworkVo> selectTodayNotRepliedAndNotDecorateHomework();
@@ -188,14 +189,19 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
 
     /**
      * 按年查询首页课程数据
+     *
      * @param param
      */
     List<CourseHomeVo.CourseHomeInfoVo> queryCourseHomeOfYear(@Param("param") Map<String, Object> param);
 
     /**
      * 按月查询首页课程数据
+     *
      * @param param
      */
     List<CourseHomeVo.CourseHomeInfoVo> queryCourseHomeOfMonth(@Param("param") Map<String, Object> param);
+
+    //查询老师声部价格
+    BigDecimal selectPrice(@Param("teacherId") Long teacherId, @Param("subjectId") Long subjectId);
 }
 

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

@@ -828,6 +828,38 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     }
 
     /**
+     * 批量检查老师课时在数据库是否重复
+     *
+     * @param teacherId 老师id
+     * @param timeList  时间集合
+     */
+    private <T> void batchCheckTeacherCourseTime(Long teacherId, List<T> timeList, Function<T, Date> startTimeFun, Function<T, Date> endTimeFun) {
+        //再校验数据库中课程时间和传入时间是否有交集
+        timeList.forEach(o -> {
+            boolean checkDataTime = this.checkTeacherCourseTime(teacherId, startTimeFun.apply(o), endTimeFun.apply(o));
+            if (checkDataTime) {
+                throw new BizException("预计安排在" + DateUtil.dateToString(startTimeFun.apply(o), "yyyy年MM月dd号 HH点mm分") + "的课程时间存在冲突!");
+            }
+        });
+    }
+
+    /**
+     * 批量检查学生课时在数据库是否重复
+     *
+     * @param studentId 老师id
+     * @param timeList  时间集合
+     */
+    private <T> void batchCheckStudentCourseTime(Long studentId, List<T> timeList, Function<T, Date> startTimeFun, Function<T, Date> endTimeFun) {
+        //再校验数据库中课程时间和传入时间是否有交集
+        timeList.forEach(o -> {
+            boolean checkDataTime = this.checkStudentCourseTime(studentId, startTimeFun.apply(o), endTimeFun.apply(o));
+            if (checkDataTime) {
+                throw new BizException("预计安排在" + DateUtil.dateToString(startTimeFun.apply(o), "yyyy年MM月dd号 HH点mm分") + "的课程时间存在冲突!");
+            }
+        });
+    }
+
+    /**
      * @Description: 学生购买陪练课
      * @Author: cy
      * @Date: 2022/4/21
@@ -842,8 +874,24 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
 
         ObjectMapper objectMapper = new ObjectMapper();
         PracticeScheduleDto scheduleDto = objectMapper.convertValue(orderReqInfo.getBizContent(), PracticeScheduleDto.class);
+        List<CourseScheduleDate> dateList = scheduleDto.getClassTime();
+        Integer courseNum = scheduleDto.getCourseNum();//课程数
+
+        //校验课时数
+        if (dateList.size() != courseNum) {
+            throw new BizException("课程数与课时数不符");
+        }
+        BigDecimal price=baseMapper.selectPrice(scheduleDto.getTeacherId(), scheduleDto.getSubjectId());//老师设置声部价格
+        BigDecimal decimal = new BigDecimal(courseNum);//选购课程节数
+        BigDecimal multiply = price.multiply(decimal);//预计总价
+        if (multiply.compareTo(scheduleDto.getCoursePrice())!=0){
+            throw new BizException("价格异常。预计价格:{},实际价格:{}",multiply,scheduleDto.getCoursePrice());
+        }
 
-        //校验课程数与价格
+        //批量检查老师课时在数据库是否重复
+        batchCheckTeacherCourseTime(scheduleDto.getTeacherId(), dateList, CourseScheduleDate::getStartTime, CourseScheduleDate::getEndTime);
+        //批量检查学生课时在数据库是否重复
+        batchCheckStudentCourseTime(studentId, dateList, CourseScheduleDate::getStartTime, CourseScheduleDate::getEndTime);
 
         String orderNo = orderReqInfo.getOrderNo();
         scheduleDto.setType(CourseScheduleEnum.PRACTICE.getCode());

+ 3 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonEvaluateServiceImpl.java

@@ -60,7 +60,7 @@ public class VideoLessonEvaluateServiceImpl extends ServiceImpl<VideoLessonEvalu
         Long teacherId = videoLessonPurchaseRecordDao.selectTeacherByDetail(videoId);
 
         //校验用户是否已购该课或未本课老师
-        if (userId != teacherId && !studentIdList.contains(userId)) {
+        if (!(userId.equals(teacherId)) && !studentIdList.contains(userId)) {
             throw new RuntimeException("未购买该课程无法参与讨论");
         }
 
@@ -69,7 +69,7 @@ public class VideoLessonEvaluateServiceImpl extends ServiceImpl<VideoLessonEvalu
 //            evaluate.setIsTeacher(YesOrNoEnum.YES);
 //        }
         //当前用户为课程创建者  是:老师  否:学生
-        if (teacherId==userId){
+        if (teacherId == userId) {
             evaluate.setIsTeacher(YesOrNoEnum.YES);
         }
 
@@ -83,6 +83,6 @@ public class VideoLessonEvaluateServiceImpl extends ServiceImpl<VideoLessonEvalu
      * @Date: 2022/4/11
      */
     public IPage<VideoLessonEvaluateVo> selectEvaluate(IPage<VideoLessonEvaluateVo> page, VideoLessonEvaluateSearch search) {
-        return page.setRecords(baseMapper.selectEvaluate(page,search));
+        return page.setRecords(baseMapper.selectEvaluate(page, search));
     }
 }

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

@@ -90,12 +90,12 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
         }
 
         //校验课程是否购买
-//        VideoLessonPurchaseRecord isAlreadyBuy = videoLessonPurchaseRecordDao.selectOne(Wrappers.<VideoLessonPurchaseRecord>lambdaQuery()
-//                .eq(VideoLessonPurchaseRecord::getStudentId, studentId)
-//                .eq(VideoLessonPurchaseRecord::getVideoLessonGroupId, groupId));
-//        if (!ObjectUtil.isEmpty(isAlreadyBuy)) {
-//            throw new BizException("已购买过该课程");
-//        }
+        VideoLessonPurchaseRecord isAlreadyBuy = videoLessonPurchaseRecordDao.selectOne(Wrappers.<VideoLessonPurchaseRecord>lambdaQuery()
+                .eq(VideoLessonPurchaseRecord::getStudentId, studentId)
+                .eq(VideoLessonPurchaseRecord::getVideoLessonGroupId, groupId));
+        if (!ObjectUtil.isEmpty(isAlreadyBuy)) {
+            throw new BizException("已购买过该课程,或存在该课程未完成订单");
+        }
 
         purchaseRecord.setOrderNo(orderNo);
         purchaseRecord.setStudentId(studentId);

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/StudentHomePage.java

@@ -26,9 +26,9 @@ public class StudentHomePage implements Serializable {
         private Long teacherId;
         @ApiModelProperty(value = "老师姓名")
         private String teacherName;
-        private String realName;
         @ApiModelProperty(value = "老师头像")
         private String avatar;
+        private String realName;
 
         @ApiModelProperty(value = "课程id")
         private Long courseId;

+ 8 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -690,5 +690,12 @@
         <![CDATA[ AND class_date_ <= #{param.endDate} ]]>
         group by class_date_
     </select>
-
+    <select id="selectPrice" resultType="java.math.BigDecimal">
+        SELECT p.subject_price_
+        FROM teacher_free_time t
+        LEFT JOIN teacher_subject_price p ON t.id_=p.teacher_free_time_id
+        WHERE t.teacher_id_=#{teacherId}
+        AND p.subject_id_=#{subjectId}
+        AND t.default_flag_=1
+    </select>
 </mapper>

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

@@ -154,8 +154,7 @@
         LEFT JOIN course_schedule s ON t.course_schedule_id_=s.id_
         LEFT JOIN course_group g ON t.course_group_id_=g.id_
         LEFT JOIN `subject` sb ON g.subject_id_=sb.id_
-        WHERE t.student_id_=#{studentId}
-        AND t.course_schedule_id_=#{courseScheduleId}
+        WHERE t.course_schedule_id_=#{courseScheduleId}
         AND t.course_group_id_=#{courseGroupId}
         AND t.course_group_type_=#{courseGroupType}
     </select>