zouxuan преди 2 години
родител
ревизия
2e1e372c48

+ 10 - 10
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleConvertDao.java

@@ -10,47 +10,47 @@ public interface CourseScheduleConvertDao {
 
     /**
     * @description: 获取符合课程转换要求的课程数量,用于校验
-     * @param courseIds
+     * @param courseIdList
     * @return int
     * @author zx
     * @date 2022/9/21 10:33
     */
-    int countLegalCourse(@Param("courseIds") String courseIds);
+    int countLegalCourse(@Param("courseIdList") List<Long> courseIdList);
 
     /**
     * @description: 校验所选课程是否所有学员的课程数量一致
-     * @param courseIds
+     * @param courseIdList
      * @param courseNum
     * @return java.lang.String
     * @author zx
     * @date 2022/9/21 11:40
     */
-    Integer checkStudentCourseNum(@Param("courseIds") String courseIds, @Param("courseNum") int courseNum);
+    Integer checkStudentCourseNum(@Param("courseIdList") List<Long> courseIdList, @Param("courseNum") int courseNum);
 
     /**
     * @description: 获取可转换课程时长,学员数量,课程数量
-     * @param courseIds
+     * @param courseIdList
     * @return com.ym.mec.biz.dal.dto.CourseConvertSumDto
     * @author zx
     * @date 2022/9/21 14:48 
     */
-    CourseConvertSumDto sumCourseConvert(@Param("courseIds") String courseIds);
+    CourseConvertSumDto sumCourseConvert(@Param("courseIdList") List<Long> courseIdList);
 
     /**
     * @description: 获取课程关联的学员列表
-     * @param courseIds
+     * @param courseIdList
     * @return java.util.List<com.ym.mec.biz.dal.dto.BasicUserDto>
     * @author zx
     * @date 2022/9/21 15:16
     */
-    List<BasicUserDto> queryStudents(@Param("courseIds") String courseIds);
+    List<BasicUserDto> queryStudents(@Param("courseIdList") List<Long> courseIdList);
 
     /**
     * @description: 获取课关联的班级数量
-     * @param courseIds
+     * @param courseIdList
     * @return int
     * @author zx
     * @date 2022/9/21 16:42
     */
-    int countClassNum(@Param("courseIds") String courseIds);
+    int countClassNum(@Param("courseIdList") List<Long> courseIdList);
 }

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

@@ -15,7 +15,7 @@ import java.util.List;
 public interface CourseConvertLogService extends  BaseService<Integer, CourseConvertLog>{
     CourseConvertLogDao getDao();
 
-    CourseConvertLog save(String oldCourseIds, List<Integer> newClassGroupIds, List<Long> courseIdList,
+    CourseConvertLog save(List<Long> oldCourseIdList, List<Integer> newClassGroupIds, List<Long> courseIdList,
               List<CourseScheduleTeacherSalary> teacherSalaries,
               List<CourseScheduleStudentPayment> studentPayments);
 

+ 2 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseConvertLogServiceImpl.java

@@ -51,17 +51,16 @@ public class CourseConvertLogServiceImpl extends BaseServiceImpl<Integer, Course
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-    public CourseConvertLog save(String oldCourseIds, List<Integer> newClassGroupIds, List<Long> courseIdList,
+    public CourseConvertLog save(List<Long> oldCourseIdList, List<Integer> newClassGroupIds, List<Long> courseIdList,
 					 List<CourseScheduleTeacherSalary> teacherSalaries,
 					 List<CourseScheduleStudentPayment> studentPayments) {
 		SysUser user = sysUserService.getUser();
 		CourseConvertLog courseConvertLog = new CourseConvertLog();
 		courseConvertLog.setOperatorName(user.getRealName());
 		courseConvertLog.setOperator(user.getId());
-		courseConvertLog.setOldCourseIds(oldCourseIds);
+		courseConvertLog.setOldCourseIds(StringUtils.join(oldCourseIdList,","));
 		String userIds = studentPayments.stream().map(e -> e.getUserId().toString()).distinct().collect(Collectors.joining(","));
 		courseConvertLog.setStudentIds(userIds);
-		List<Long> oldCourseIdList = Arrays.stream(oldCourseIds.split(",")).map(e -> Long.parseLong(e)).collect(Collectors.toList());
 
 		//获取老师课酬json
 		courseConvertLog.setOldCourseTeacherSalaryJson(JSONObject.toJSONString(teacherSalaries));

+ 13 - 15
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleConvertServiceImpl.java

@@ -57,12 +57,13 @@ public class CourseScheduleConvertServiceImpl implements CourseScheduleConvertSe
 
     @Override
     public HashMap<String, Object> queryConvertStudent(String courseIds) {
+        List<Long> oldCourseIdList = Arrays.stream(courseIds.split(",")).map(id -> Long.parseLong(id)).collect(Collectors.toList());
         //校验课程是否可以进行转换
-        this.checkConvertCourseIds(courseIds);
+        this.checkConvertCourseIds(oldCourseIdList);
         //获取可转换课程时长,学员数量,课程数量
-        CourseConvertSumDto courseConvertSumDto = courseScheduleConvertDao.sumCourseConvert(courseIds);
+        CourseConvertSumDto courseConvertSumDto = courseScheduleConvertDao.sumCourseConvert(oldCourseIdList);
         //获取学员列表
-        List<BasicUserDto> basicUserDtos = Optional.ofNullable(courseScheduleConvertDao.queryStudents(courseIds)).
+        List<BasicUserDto> basicUserDtos = Optional.ofNullable(courseScheduleConvertDao.queryStudents(oldCourseIdList)).
                 orElseThrow(()->new BizException("操作失败:所选课程没有学员"));
         List<Integer> userIds = basicUserDtos.stream().map(e -> e.getUserId()).collect(Collectors.toList());
         Map<Integer,String> subjectMap = MapUtil.convertIntegerMap(studentDao.getStudentSubjectMapList(userIds));
@@ -77,8 +78,9 @@ public class CourseScheduleConvertServiceImpl implements CourseScheduleConvertSe
     @Transactional(rollbackFor = Exception.class)
     public HttpResponseResult action(List<ClassGroupDto> classGroups) {
         ClassGroupDto classGroupDto = classGroups.get(0);
+        List<Long> oldCourseIdList = Arrays.stream(classGroupDto.getCourseIds().split(",")).map(id -> Long.parseLong(id)).collect(Collectors.toList());
         //校验课程是否可以进行转换
-        this.checkConvertCourseIds(classGroupDto.getCourseIds());
+        this.checkConvertCourseIds(oldCourseIdList);
         if(!classGroupDto.getConfirmGenerate()){
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
         }
@@ -130,10 +132,7 @@ public class CourseScheduleConvertServiceImpl implements CourseScheduleConvertSe
                 }
             }
         }
-        ClassGroupDto groupDto = classGroups.get(0);
-        String courseIds = groupDto.getCourseIds();
         //获取总课酬
-        List<Long> oldCourseIdList = Arrays.stream(courseIds.split(",")).map(e -> Long.parseLong(e)).collect(Collectors.toList());
         List<CourseScheduleTeacherSalary> teacherSalaries = courseScheduleTeacherSalaryService.getDao().findByCourseSchedules(oldCourseIdList);
         //获取学员课程价值
         List<CourseScheduleStudentPayment> studentPayments = courseScheduleStudentPaymentService.getDao().findByCourseScheduleIds(oldCourseIdList);
@@ -148,9 +147,9 @@ public class CourseScheduleConvertServiceImpl implements CourseScheduleConvertSe
         List<Long> courseIdList = courseScheduleList.stream().map(e -> e.getId()).collect(Collectors.toList());
         cloudTeacherFreeCourseService.courseConvert(oldCourseIdList,courseIdList);
         //记录课程转换相关信息
-        courseConvertLogService.save(courseIds,newClassGroupIds,courseIdList,teacherSalaries,studentPayments);
+        courseConvertLogService.save(oldCourseIdList,newClassGroupIds,courseIdList,teacherSalaries,studentPayments);
         // 刷新群组
-        imUserFriendService.refreshGroupImUserFriend(groupDto.getMusicGroupId(), MUSIC);
+        imUserFriendService.refreshGroupImUserFriend(classGroupDto.getMusicGroupId(), MUSIC);
         return BaseController.succeed();
     }
 
@@ -245,20 +244,19 @@ public class CourseScheduleConvertServiceImpl implements CourseScheduleConvertSe
         }
     }
 
-    private void checkConvertCourseIds(String courseIds){
+    private void checkConvertCourseIds(List<Long> oldCourseIdList){
         //是否同一个班级
-        int classNum = courseScheduleConvertDao.countClassNum(courseIds);
+        int classNum = courseScheduleConvertDao.countClassNum(oldCourseIdList);
         if(classNum > 1){
             throw new BizException("操作失败:请选择同一个班级的课程");
         }
         //获取合法的课程列表
-        int num = courseScheduleConvertDao.countLegalCourse(courseIds);
-        String[] split = courseIds.split(",");
-        if(num < split.length){
+        int num = courseScheduleConvertDao.countLegalCourse(oldCourseIdList);
+        if(num < oldCourseIdList.size()){
             throw new BizException("操作失败:所选部分课程不支持课程转换");
         }
         //校验学员时长是否一致
-        Integer errorNum = courseScheduleConvertDao.checkStudentCourseNum(courseIds,split.length);
+        Integer errorNum = courseScheduleConvertDao.checkStudentCourseNum(oldCourseIdList,oldCourseIdList.size());
         if (errorNum != null && errorNum > 0){
             throw new BizException("操作失败: 课程关联学员不一致");
         }

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

@@ -5853,9 +5853,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 		//2、获取班级学生
 		List<Integer> studentIds = Arrays.stream(groupDto.getUserIds().split(",")).map(id -> Integer.valueOf(id)).distinct().collect(Collectors.toList());
+		List<Long> oldCourseIdList = Arrays.stream(groupDto.getCourseIds().split(",")).map(id -> Long.parseLong(id)).collect(Collectors.toList());
 
 		//获取可转换课程时长,学员数量,课程数量
-		CourseConvertSumDto courseConvertSumDto = courseScheduleConvertDao.sumCourseConvert(groupDto.getCourseIds());
+		CourseConvertSumDto courseConvertSumDto = courseScheduleConvertDao.sumCourseConvert(oldCourseIdList);
 
 		//计算每节课的课酬
 		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();

+ 30 - 7
mec-biz/src/main/resources/config/mybatis/CourseScheduleConvert.xml

@@ -10,14 +10,23 @@
         SELECT COUNT(cs.id_) FROM course_schedule cs
         WHERE status_ = 'NOT_START' AND (cs.type_ IN ('SINGLE','TRAINING_SINGLE') OR cs.convert_flag_ = 1)
         AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.new_course_id_ IS NULL
-        AND FIND_IN_SET(cs.id_,#{courseIds})
+        AND cs.id_ IN
+        <foreach collection="courseIdList" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
     </select>
     <select id="checkStudentCourseNum" resultType="java.lang.Integer">
         select COUNT(DISTINCT cssp.course_schedule_id_) from course_schedule_student_payment cssp
-        where FIND_IN_SET(cssp.course_schedule_id_,#{courseIds})
+        where cssp.course_schedule_id_ IN
+        <foreach collection="courseIdList" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
         GROUP BY cssp.course_schedule_id_ HAVING COUNT(DISTINCT cssp.user_id_) &lt; (select COUNT(distinct cssp.user_id_) num_
         from course_schedule_student_payment cssp
-        where FIND_IN_SET(cssp.course_schedule_id_,#{courseIds}));
+        where cssp.course_schedule_id_ IN
+        <foreach collection="courseIdList" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>);
     </select>
     <resultMap id="CourseConvertSumDto" type="com.ym.mec.biz.dal.dto.CourseConvertSumDto">
         <result property="courseType" column="courseType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
@@ -29,16 +38,30 @@
         select COUNT(distinct cs.id_) courseNum,cs.type_ courseType,cssp.num_,SUM(TIMESTAMPDIFF(MINUTE,cs.start_class_time_,cs.end_class_time_)) minute_
         from course_schedule cs,
         (select COUNT(distinct cssp.user_id_) num_ from course_schedule_student_payment cssp
-        where FIND_IN_SET(cssp.course_schedule_id_,#{courseIds})) cssp
-        where FIND_IN_SET(cs.id_,#{courseIds})
+        where cssp.course_schedule_id_ IN
+        <foreach collection="courseIdList" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+        ) cssp
+        where cs.id_ IN
+        <foreach collection="courseIdList" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
     </select>
     <select id="queryStudents" resultType="com.ym.mec.biz.dal.dto.BasicUserDto">
         select cssp.user_id_ userId,su.username_ name,su.phone_ phone from course_schedule_student_payment cssp
         LEFT JOIN sys_user su ON su.id_ = cssp.user_id_
-        where FIND_IN_SET(cssp.course_schedule_id_,#{courseIds})
+        where cssp.course_schedule_id_ IN
+        <foreach collection="courseIdList" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
         group by cssp.user_id_
     </select>
     <select id="countClassNum" resultType="java.lang.Integer">
-        select COUNT(distinct cs.class_group_id_) from course_schedule cs where FIND_IN_SET(cs.id_,#{courseIds})
+        select COUNT(distinct cs.class_group_id_) from course_schedule cs
+        where cs.id_ IN
+        <foreach collection="courseIdList" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
     </select>
 </mapper>