Ver Fonte

活动排课

zouxuan há 3 anos atrás
pai
commit
5adad7b6c1

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

@@ -609,20 +609,12 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
     List<StudentOrganDto> queryRemainCourseStudent(@Param("organIds") List<Integer> organIds);
 
     /**
-    * @description: 获取课程组关联的活动资格
+    * @description: 获取所有关联的课程组
      * @param feeDto
     * @return java.lang.String
     * @author zx
     * @date 2022/7/27 17:22
     */
-    List<SurplusCourseFeeDto> queryActivityUserMapperId(@Param("feeDto") SurplusCourseFeeDto feeDto);
+    List<SurplusCourseFeeDto> getAllAssociatedCourseGroups(@Param("feeDto") SurplusCourseFeeDto feeDto);
 
-    /**
-    * @description: 获取活动关联的课程组
-     * @param feeDto
-    * @return java.lang.String
-    * @author zx
-    * @date 2022/7/27 17:22
-    */
-    List<SurplusCourseFeeDto> queryGroupIdByActivity(@Param("feeDto") SurplusCourseFeeDto feeDto);
 }

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

@@ -454,6 +454,10 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 		if (Objects.isNull(vipGroupCategory)) {
 			throw new BizException("课程形式不存在");
 		}
+		//如果是乐理课,那么声部固定给31
+		if(vipGroupCategory.getMusicTheory()){
+			applyBaseInfo.setSubjectIdList("31");
+		}
 		List<Integer> studentIdList = Arrays.stream(studentIds.split(",")).map(id -> Integer.valueOf(id)).collect(Collectors.toList());
 		if (!vipGroupCategory.getMusicTheory()) {
 			if (studentIdList.size() != vipGroupCategory.getStudentNum()) {

+ 5 - 25
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -3644,32 +3644,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
     @Override
     public Map<String, BigDecimal> getStudentSurplusCourseFee1(SurplusCourseFeeDto feeDto) {
-        //获取当前课程组关联的活动
-        Set<String> ignoreGroupId = new HashSet<>();
-        Set<Integer> ignoreActivityIds = new HashSet<>();
-        this.studentSurplusCourseFeeTree(feeDto,ignoreGroupId,ignoreActivityIds);
-        //再通过活动编号获取锁关联的课程组、会员
-        //计算出需要退的金额
-        return null;
-    }
+        //获取所有关联的课程组
+        List<SurplusCourseFeeDto> surplusCourseFeeDtos = courseScheduleStudentPaymentDao.getAllAssociatedCourseGroups(feeDto);
+        //计算课程组剩余课程价值
+        //计算活动剩余未排课价值
 
-    public void studentSurplusCourseFeeTree(SurplusCourseFeeDto feeDto,Set<String> ignoreGroupId,Set<Integer> ignoreActivityIds){
-        String join = StringUtils.join(ignoreGroupId, ",");
-        feeDto.setIgnoreGroupId(join);
-        //获取课程组关联的活动
-        List<SurplusCourseFeeDto> surplusCourseFeeDtos = courseScheduleStudentPaymentDao.queryActivityUserMapperId(feeDto);
-        if (!CollectionUtils.isEmpty(surplusCourseFeeDtos)){
-            ignoreActivityIds.addAll(surplusCourseFeeDtos.stream().map(e -> e.getActivityUserMapperId()).collect(Collectors.toSet()));
-            for (SurplusCourseFeeDto surplusCourseFeeDto : surplusCourseFeeDtos) {
-                surplusCourseFeeDto.setIgnoreGroupId(join);
-                //获取活动关联的课程组
-                List<SurplusCourseFeeDto> feeDtos = courseScheduleStudentPaymentDao.queryGroupIdByActivity(surplusCourseFeeDto);
-                if(!CollectionUtils.isEmpty(feeDtos)){
-                    ignoreGroupId.addAll(feeDtos.stream().map(e -> e.getGroupId()).collect(Collectors.toSet()));
-                    feeDtos.forEach(e->this.studentSurplusCourseFeeTree(e,ignoreGroupId,ignoreActivityIds));
-                }
-            }
-        }
+        return null;
     }
 
     @Transactional(rollbackFor = Exception.class)

+ 8 - 19
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -1087,25 +1087,14 @@
 		<result property="studentId" column="user_id_"/>
 		<result property="groupType" column="group_type_"/>
 		<result property="groupId" column="group_id_"/>
-		<result property="activityUserMapperId" column="activity_user_mapper_id_"/>
 	</resultMap>
-	<select id="queryActivityUserMapperId" resultMap="SurplusCourseFeeDto">
-		SELECT cssp.activity_user_mapper_id_,cssp.group_type_
-		FROM course_schedule_student_payment cssp
-		LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
-		WHERE cs.status_ = 'NOT_START' AND cssp.user_id_ = #{feeDto.studentId}
-		AND cssp.music_group_id_ = #{feeDto.groupId} AND cssp.group_type_ = #{feeDto.groupType} AND cssp.activity_user_mapper_id_ IS NOT NULL
-		<if test="feeDto.ignoreGroupId != null and feeDto.ignoreGroupId != ''">
-			AND NOT FIND_IN_SET(cssp.music_group_id_,#{feeDto.ignoreGroupId})
-		</if>
-		GROUP BY cssp.activity_user_mapper_id_
-	</select>
-	<select id="queryGroupIdByActivity" resultMap="SurplusCourseFeeDto">
-		SELECT DISTINCT cssp.music_group_id_ group_id_,cssp.group_type_,cssp.user_id_ FROM course_schedule_student_payment cssp
-		LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
-		WHERE cs.status_ = 'NOT_START' AND cssp.group_type_ = #{feeDto.groupType} AND cssp.activity_user_mapper_id_ = #{feeDto.activityUserMapperId}
-		<if test="feeDto.ignoreGroupId != null and feeDto.ignoreGroupId != ''">
-			AND NOT FIND_IN_SET(cssp.music_group_id_,#{feeDto.ignoreGroupId})
-		</if>
+	<select id="getAllAssociatedCourseGroups" resultMap="SurplusCourseFeeDto">
+		select cssp.group_type_,cssp.music_group_id_,#{feeDto.studentId} user_id_ from
+		(select group_type_,music_group_id_ from course_schedule_student_payment
+		where activity_user_mapper_id_ IN (select distinct activity_user_mapper_id_
+		from course_schedule_student_payment
+		where music_group_id_ = #{feeDto.groupId} and group_type_ = #{feeDto.groupType} and user_id_ = #{feeDto.studentId}) group by group_type_,music_group_id_) aum
+		LEFT JOIN course_schedule_student_payment cssp ON aum.music_group_id_ = cssp.music_group_id_ and aum.group_type_ = cssp.group_type_
+		group by cssp.group_type_,cssp.music_group_id_
 	</select>
 </mapper>