Browse Source

1、处理小课购买完成后由于课程冲突导致的订单更新失败

Joburgess 5 năm trước cách đây
mục cha
commit
9d56c564ea

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java

@@ -213,5 +213,5 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	 * @param courseScheduleIds: 课程编号列表
 	 * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
 	 */
-	List<Map<Long,Integer>> checkCoursesIsSettlement(@Param("courseScheduleIds") List<Integer> courseScheduleIds);
+	List<Map<Long,Integer>> checkCoursesIsSettlement(@Param("courseScheduleIds") List<Long> courseScheduleIds);
 }

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java

@@ -338,4 +338,5 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      * @return
      */
     VipBuyResultDto findVipBuyResultInfo(Integer vipGroupId);
+
 }

+ 8 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -666,7 +666,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		List<CourseSchedule> oldCourseScheduleIds = courseScheduleDao.findByCourseScheduleIds(courseScheduleIds);
 		Map<Long, List<CourseSchedule>> oldCourseScheduleMap = oldCourseScheduleIds.stream()
 				.collect(Collectors.groupingBy(CourseSchedule::getId));
+		List<Map<Long, Integer>> courseSettlementMaps = courseScheduleTeacherSalaryDao.checkCoursesIsSettlement(courseScheduleIds);
+		Map<Long, Long> courseSettlementMap = MapUtil.convertIntegerMap(courseSettlementMaps);
 		newCourseSchedules.forEach(newCourseSchedule->{
+			Long isSettlement = courseSettlementMap.get(newCourseSchedule.getId().longValue());
+			if(Objects.nonNull(isSettlement)&&isSettlement>0){
+				throw new BizException("调整的课程中存在已结算的课程");
+			}
 			CourseSchedule oldCourseSchedule=null;
 			if(Objects.isNull(newCourseSchedule.getActualTeacherId())){
 				List<CourseSchedule> oldCourseSchedules = oldCourseScheduleMap.get(newCourseSchedule.getId());
@@ -1378,8 +1384,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                     courseSchedule.setIsSettlement(0);
                 });
             }else{
-                List<Integer> courseScheduleIds = dataList.stream()
-                        .map(courseSchedule -> courseSchedule.getId().intValue())
+                List<Long> courseScheduleIds = dataList.stream()
+                        .map(courseSchedule -> courseSchedule.getId())
                         .distinct().collect(Collectors.toList());
                 List<Map<Long, Integer>> courseSettlementMaps = courseScheduleTeacherSalaryDao.checkCoursesIsSettlement(courseScheduleIds);
                 Map<Long, Long> courseSettlementMap = MapUtil.convertIntegerMap(courseSettlementMaps);

+ 12 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -25,6 +25,8 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
@@ -109,6 +111,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	@Autowired
     private TeacherService teacherService;
 
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(VipGroup.class);
+
 	@Override
 	public BaseDAO<Long, VipGroup> getDAO() {
 		return vipGroupDao;
@@ -860,8 +865,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			classGroup.setStudentNum(studentPaymentNum);
 			classGroup.setDelFlag(0);
 			vipGroup.setStatus(VipGroupStatusEnum.APPLYING_END);
-			vipGroupDao.update(vipGroup);
 			createVipGroupCourseScheInfo(vipGroupId,classGroup);
+			vipGroupDao.update(vipGroup);
 		}
 		if(num!=0||updateVipStatus){
 			classGroupDao.update(classGroup);
@@ -1060,7 +1065,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			return;
 		}
 
-		updateVipGroupStudentNumAndStatus(vipGroupId, classGroup,0,true);
+		try {
+			updateVipGroupStudentNumAndStatus(vipGroupId, classGroup,0,true);
+		} catch (Exception e) {
+			LOGGER.error("小课[{}]开课失败",vipGroupId);
+		}
+
 		SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(userId);
 
 		VipGroup vipGroup = vipGroupDao.get(vipGroupId);