فهرست منبع

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

zouxuan 5 سال پیش
والد
کامیت
b904ce6d0a

+ 22 - 19
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -32,6 +32,7 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
 
     /**
      * 删除学生对应的课程
+     *
      * @param userId
      * @param courseScheduleList
      * @return
@@ -39,73 +40,75 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
     int deleteStudentCourseSchedule(@Param("userId") Integer userId, @Param("courseScheduleList") List<CourseSchedule> courseScheduleList);
 
     /**
+     * @param courseScheduleIds: 课程编号列表
+     * @return int
      * @describe 批量删除课程对应的学生缴费记录
      * @author Joburgess
      * @date 2019/10/31
-     * @param courseScheduleIds: 课程编号列表
-     * @return int
      */
     int deleteByCourseSchedule(@Param("courseScheduleIds") List<Long> courseScheduleIds);
 
     /**
+     * @param params: 班级编号
+     * @return java.util.List<com.ym.mec.biz.dal.dto.StudentAttendanceStatisticsResp>
      * @describe 获取指定班级中的学生
      * @author Joburgess
      * @date 2019/10/28
-     * @param params: 班级编号
-     * @return java.util.List<com.ym.mec.biz.dal.dto.StudentAttendanceStatisticsResp>
      */
-    List<StudentAttendanceStatisticsResponse> findStudentByClassGroup(Map<String,Object> params);
-    int countStudentByClassGroup(Map<String,Object> params);
+    List<StudentAttendanceStatisticsResponse> findStudentByClassGroup(Map<String, Object> params);
+
+    int countStudentByClassGroup(Map<String, Object> params);
 
     /**
+     * @param classGroupId: 班级编号
+     * @param userId:       学生编号
+     * @return java.math.BigDecimal
      * @describe 统计学生剩余课时的费用
      * @author Joburgess
      * @date 2019/11/15
-     * @param classGroupId: 班级编号
-     * @param userId: 学生编号
-     * @return java.math.BigDecimal
      */
     BigDecimal countSurplusCourseFee(@Param("classGroupId") Integer classGroupId,
                                      @Param("userId") Integer userId);
 
     /**
+     * @param classGroupId: 班级编号
+     * @return java.math.BigDecimal
      * @describe 统计所有课时的购买费用
      * @author Joburgess
      * @date 2019/11/27
-     * @param classGroupId: 班级编号
-     * @return java.math.BigDecimal
      */
     BigDecimal countAllCourseFee(@Param("classGroupId") Integer classGroupId);
 
     /**
+     * @param ids: 学生课程缴费信息编号
+     * @return int
      * @describe 删除用户在指定班级上的课程
      * @author Joburgess
      * @date 2019/12/3
-     * @param ids: 学生课程缴费信息编号
-     * @return int
      */
     int batchDeleteWithID(@Param("ids") List<Integer> ids);
 
     /**
-     * @describe 获取用户在指定班级上缴费记录编号
-     * @author Joburgess
-     * @date 2019/12/3
      * @param classGroupId:
      * @param userId:
      * @return java.util.List<java.lang.Integer>
+     * @describe 获取用户在指定班级上缴费记录编号
+     * @author Joburgess
+     * @date 2019/12/3
      */
     List<Integer> findNotStartCourseStudentPaymentIdsWithClassGroupAndStudent(@Param("classGroupId") Integer classGroupId,
                                                                               @Param("userId") Integer userId);
 
     /**
+     * @param vipGroupId: 小课编号
+     * @param teachMode:  教学形式
+     * @return java.math.BigDecimal
      * @describe 获取小课指定形式下最后一节课的课程单价
      * @author Joburgess
      * @date 2019/12/5
-     * @param vipGroupId: 小课编号
-     * @param teachMode: 教学形式
-     * @return java.math.BigDecimal
      */
     BigDecimal findVipGroupCoursePrice(@Param("vipGroupId") Integer vipGroupId,
                                        @Param("teachMode") String teachMode);
 
+    int deleteStudentCourseScheduleByUserId(@Param("courseScheduleId") Long courseScheduleId, @Param("userIdList") List<Integer> userIdList);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -348,4 +348,6 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      */
     List<ClassGroup> findByClassGroupIds(List<Integer> classGroupIds);
 
+    boolean updateTotalClassTimes(Long classGroupId, Integer num);
+
 }

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -98,6 +98,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Autowired
     private RedisCache<String, Object> redisCache;
+    @Autowired
+    private ClassGroupService classGroupService;
 
     @Override
     public BaseDAO<Integer, ClassGroup> getDAO() {
@@ -1227,9 +1229,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         if (classGroup == null) {
             throw new Exception("班级不存在");
         }
+        Integer courseTimes = classGroup4MixDto.getCourseTimes();
+
         if (classGroup4MixDto.getCourseAddType().equals("renew")) {
             List<CourseSchedule> noStartCourses = courseScheduleService.findNoStartCoursesByClassGroupId(classGroup.getId());
             if (noStartCourses.size() > 0) {
+                courseTimes -=  noStartCourses.size();
                 List<Long> courseScheduleIds = noStartCourses.stream().map(courseSchedule -> courseSchedule.getId()).collect(Collectors.toList());
                 courseScheduleDao.batchDeleteCourseSchedules(courseScheduleIds);
                 courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
@@ -1238,6 +1243,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
         }
 
+        classGroupService.updateTotalClassTimes(classGroup.getId().longValue(),courseTimes);
+
         MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
 
         Integer schoolId = musicGroup.getSchoolId();
@@ -1911,4 +1918,19 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         imFeignService.groupBatchCreate(imGroupModelList);
         return true;
     }
+
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    public boolean updateTotalClassTimes(Long classGroupId, Integer num) {
+        ClassGroup classGroup = classGroupDao.lockClassGroup(classGroupId);
+        if (Objects.isNull(classGroup)) {
+            throw new BizException("班级不存在");
+        }
+        classGroup.setTotalClassTimes(classGroup.getTotalClassTimes() + num);
+        classGroup.setUpdateTime(new Date());
+
+        classGroupDao.update(classGroup);
+
+        return true;
+    }
 }

+ 12 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -114,9 +114,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	@Transactional(rollbackFor = Exception.class)
 	public void deleteCourseSchedules(List<Long> courseScheduleIds) {
 		courseScheduleDao.batchDeleteCourseSchedules(courseScheduleIds);
-		courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
-		courseScheduleStudentPaymentDao.deleteByCourseSchedule(courseScheduleIds);
-		teacherAttendanceDao.batchDeleteByCourseSchedules(courseScheduleIds);
+        courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
+        courseScheduleStudentPaymentDao.deleteByCourseSchedule(courseScheduleIds);
+        teacherAttendanceDao.batchDeleteByCourseSchedules(courseScheduleIds);
 	}
 
 	@Override
@@ -660,7 +660,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				}
 
 				if(existCourseSchedule.getClassGroupType().equals(ClassGroupTypeEnum.SNAP.getCode())||existCourseSchedule.getClassGroupType().equals(ClassGroupTypeEnum.VIP.getCode())){
-					throw new BizException("排课冲突");
+					throw new BizException(courseCheckInfo(newCourseSchedule,existCourseSchedule,existCourseScheduleIds,1));
 				}
 
 				if(isTeacherRepeat){
@@ -684,7 +684,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		}
 		//学生冲突删除学生课程
 		if(courseScheduleStudents.size()>0){
-
+			for (CourseScheduleStudentDto courseScheduleStudent : courseScheduleStudents) {
+				courseScheduleStudentPaymentDao.deleteStudentCourseScheduleByUserId(courseScheduleStudent.getId(),courseScheduleStudent.getStudentIds());
+			}
 		}
 		return courseScheduleIds;
 	}
@@ -1289,7 +1291,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		for (StudentAttendance studentAttendance : studentAttendanceList) {
 			studentAttendance.setStatus(StudentAttendanceStatusEnum.TRUANT);
 			studentAttendance.setRemark("课程已结束,自动补旷课");
-			studentAttendance.setCurrentClassTimes(studentAttendance.getCurrentClassTimes() + 1);
+			if(Objects.isNull(studentAttendance.getCurrentClassTimes())){
+                studentAttendance.setCurrentClassTimes(1);
+            }else{
+                studentAttendance.setCurrentClassTimes(studentAttendance.getCurrentClassTimes() + 1);
+            }
 			studentAttendance.setCreateTime(date);
 		}
 

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -882,6 +882,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         
         //删除续费记录
         musicGroupStudentFeeDao.deleteByMusicGroupId(musicGroupId);
+        
+        //删除课表
+        //删除每节课的课酬
+        //删除考勤
 
         // 查询已缴费信息
         studentPaymentOrders = studentPaymentOrderDao.queryByDealStatus(musicGroupId, OrderTypeEnum.APPLY, DealStatusEnum.SUCCESS);

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

@@ -566,6 +566,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 					if(data.getStudentStatus()==0&&studentApplyRefund.getStatus().equals(StudentApplyRefundsStatus.ING)){
 						data.setStudentStatus(2);
 					}
+				}else if(data.getStudentStatus()==0){
+					data.setRefundDate(null);
 				}
 			});
 		}
@@ -1810,7 +1812,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 			for (StudentPaymentOrder studentPaymentOrder:studentPaymentOrders){
 				//生成账户资金明细
-				sysUserCashAccountService.updateCourseBalance(studentPaymentOrder.getUserId(),studentPaymentOrder.getActualAmount());
+				sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(),studentPaymentOrder.getActualAmount());
 				SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(studentPaymentOrder.getUserId());
 				SysUserCashAccountDetail sysUserIncomeCashAccountDetail = new SysUserCashAccountDetail();
 				sysUserIncomeCashAccountDetail.setUserId(studentPaymentOrder.getUserId());
@@ -1822,7 +1824,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				userCashAccountDetails.add(sysUserIncomeCashAccountDetail);
 			}
 		}
-		sysUserCashAccountDetailDao.batchInsert(userCashAccountDetails);
+		if(!CollectionUtils.isEmpty(userCashAccountDetails)){
+			sysUserCashAccountDetailDao.batchInsert(userCashAccountDetails);
+		}
 		vipGroupDao.batchUpdate(noCreateSuccessVipGroups);
 	}
 

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -1502,7 +1502,7 @@
         cs.id_ course_schedule_id_,cs.class_group_id_,cs.music_group_id_,cs.group_type_,cg.current_class_times_
         FROM course_schedule_student_payment cssp
         LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_ LEFT JOIN class_group cg ON cg.id_=cs.class_group_id_
-        LEFT JOIN student_attendance sa ON sa.course_schedule_id_= cssp.course_schedule_id_
+        LEFT JOIN student_attendance sa ON sa.course_schedule_id_= cssp.course_schedule_id_ AND cssp.user_id_=sa.user_id_
         WHERE CONCAT(cs.class_date_,' ',cs.end_class_time_) &lt;= now() AND sa.id_ IS NULL
     </select>
     <select id="getNextCourseSchedule" resultMap="CourseSchedule">

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -198,4 +198,10 @@
 			#{id}
 		</foreach>
     </delete>
+	<delete id="deleteStudentCourseScheduleByUserId">
+		DELETE FROM course_schedule_student_payment WHERE course_schedule_id_ = #{courseScheduleId} AND user_id_  IN
+		<foreach collection="userIdList" item="userId" index="index" open="(" close=")" separator=",">
+			#{userId}
+		</foreach>
+	</delete>
 </mapper>