Bläddra i källkod

Merge branch 'online1' of http://git.dayaedu.com/yonge/mec into mec_update_2021-11-02

zouxuan 3 år sedan
förälder
incheckning
13884ad3bc

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

@@ -42,7 +42,7 @@ public interface ExtracurricularExercisesReplyDao extends BaseDAO<Long, Extracur
      * @param extraExerciseIds:
      * @return java.util.List<com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply>
      */
-    List<ExtracurricularExercisesReply> findExtraExerciseStudentsByExtraExercises(@Param("extraExerciseIds") List<Long> extraExerciseIds);
+    List<ExtracurricularExercisesReply> findExtraExerciseStudentsByExtraExercises(@Param("extraExerciseIds") List extraExerciseIds);
 
     /**
      * @describe 获取学生课外训练详情

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

@@ -172,7 +172,7 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
      */
     BigDecimal sumGroupIncomeFee(@Param("vipGroupId") Long vipGroupId);
 
-    List<StudentPaymentOrder> findStudentPaymentOrder(@Param("groupType") String groupType, @Param("musicGroupId") String musicGroupId);
+    List<StudentPaymentOrder> findStudentPaymentOrder(@Param("musicGroupId") String musicGroupId);
 
     /**
      * 获取零星订单

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicScoreAccompaniment.java

@@ -41,6 +41,8 @@ public class SysMusicScoreAccompaniment {
 
 	/**  */
 	private Integer categoriesId;
+	
+	private Integer parentCategoriesId;
 
 	/**  */
 	private String type;
@@ -105,6 +107,14 @@ public class SysMusicScoreAccompaniment {
 		this.categoriesId = categoriesId;
 	}
 
+	public Integer getParentCategoriesId() {
+		return parentCategoriesId;
+	}
+
+	public void setParentCategoriesId(Integer parentCategoriesId) {
+		this.parentCategoriesId = parentCategoriesId;
+	}
+
 	public String getCategoriesName() {
 		return categoriesName;
 	}

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ReturnFeeEnum.java

@@ -9,7 +9,8 @@ public enum ReturnFeeEnum implements BaseEnum<String, ReturnFeeEnum> {
 	VIP("VIP", "VIP退学"),
 	PRACTICE("PRACTICE", "网管课关闭"),
 	MUSIC("MUSIC", "乐团退团"),
-	GOODS("GOODS", "商品退费");
+	GOODS("GOODS", "商品退费"),
+	SUBJECT_CHANGE("SUBJECT_CHANGE", "声部更换");
 
 	private String code;
 

+ 60 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java

@@ -4,9 +4,11 @@ import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.ExtracurricularExercises;
 import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
+import com.ym.mec.biz.dal.entity.StudentCourseHomework;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.enums.ImSendTypeEnum;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.ExtraExercilseQueryInfo;
 import com.ym.mec.biz.service.ExtracurricularExercisesService;
 import com.ym.mec.biz.service.StudentServeService;
@@ -49,6 +51,8 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
 	private CourseHomeworkDao courseHomeworkDao;
 	@Autowired
 	private StudentServeService studentServeService;
+	@Autowired
+	private StudentCourseHomeworkDao studentCourseHomeworkDao;
 
 	@Override
 	public BaseDAO<Long, ExtracurricularExercises> getDAO() {
@@ -236,13 +240,67 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
 			List<ExtracurricularExercisesHomeworkListDto> exercises = homeworksExercises.stream().filter(e -> e.getType().equals("EXERCISES")).collect(Collectors.toList());
 			if(exercises.size() > 0){
 				List<Integer> exercisesIdList = exercises.stream().map(e -> e.getHomeworkId()).collect(Collectors.toList());
-				dataList.addAll(extracurricularExercisesDao.findByIdList(exercisesIdList));
+				List<TeacherHomeworkListDto> byIdList = extracurricularExercisesDao.findByIdList(exercisesIdList);
+				if(byIdList != null && byIdList.size() > 0){
+					List<Integer> extraExerciseIds = byIdList.stream().map(TeacherHomeworkListDto::getHomeworkId).collect(Collectors.toList());
+					List<ExtracurricularExercisesReply> extraExerciseStudentsByExtraExercises = extracurricularExercisesReplyDao.findExtraExerciseStudentsByExtraExercises(extraExerciseIds);
+					Map<Long, List<ExtracurricularExercisesReply>> idStudentsMap = extraExerciseStudentsByExtraExercises.stream().collect(Collectors.groupingBy(ExtracurricularExercisesReply::getExtracurricularExercisesId));
+					for (TeacherHomeworkListDto homeworkListDto : byIdList) {
+						List<ExtracurricularExercisesReply> extracurricularExercisesReplies = idStudentsMap.get(homeworkListDto.getHomeworkId().longValue());
+						if(CollectionUtils.isEmpty(extracurricularExercisesReplies)){
+							continue;
+						}
+						long noRepliedNum = extracurricularExercisesReplies.stream().filter(e -> e.getStatus()==1&&e.getIsReplied() == 0).count();
+						if(noRepliedNum<=0){
+							homeworkListDto.setIsReplied(1);
+						}
+						long notSubmitNum = extracurricularExercisesReplies.stream().filter(e -> e.getStatus() == 0).count();
+						if(notSubmitNum<=0){
+							homeworkListDto.setIsSubmit(1);
+						}
+						if(noRepliedNum>0){
+							homeworkListDto.setStatus(1);
+						}else if(noRepliedNum<=0&&notSubmitNum>0){
+							homeworkListDto.setStatus(2);
+						}else if(noRepliedNum<=0&&notSubmitNum<=0){
+							homeworkListDto.setStatus(3);
+						}
+					}
+					dataList.addAll(byIdList);
+				}
 			}
 			//课后作业
 			List<ExtracurricularExercisesHomeworkListDto> homeworkList = homeworksExercises.stream().filter(e -> e.getType().equals("HOMEWORK")).collect(Collectors.toList());
 			if(homeworkList.size() > 0){
 				List<Integer> homeworkIdList = homeworkList.stream().map(e -> e.getHomeworkId()).collect(Collectors.toList());
-				dataList.addAll(courseHomeworkDao.findByIdList(homeworkIdList));
+				List<TeacherHomeworkListDto> byIdList = courseHomeworkDao.findByIdList(homeworkIdList);
+				if(byIdList != null && byIdList.size() > 0){
+					List<Long> courseIds = byIdList.stream().mapToLong(TeacherHomeworkListDto::getCourseScheduleId).boxed().collect(Collectors.toList());
+					List<StudentCourseHomework> allStudentCourseHomeworks = studentCourseHomeworkDao.findByCourses(courseIds);
+					Map<Long, List<StudentCourseHomework>> homeworkStudentMap = allStudentCourseHomeworks.stream().collect(Collectors.groupingBy(StudentCourseHomework::getCourseScheduleId));
+					for (TeacherHomeworkListDto teacherHomeworkListDto : byIdList) {
+						List<StudentCourseHomework> studentCourseHomeworks = homeworkStudentMap.get(teacherHomeworkListDto.getCourseScheduleId().longValue());
+						if(CollectionUtils.isEmpty(studentCourseHomeworks)){
+							continue;
+						}
+						long noRepliedNum=studentCourseHomeworks.stream().filter(e -> YesOrNoEnum.YES.equals(e.getStatus())&&YesOrNoEnum.NO.equals(e.getIsReplied())).count();
+						if(noRepliedNum<=0){
+							teacherHomeworkListDto.setIsReplied(YesOrNoEnum.YES.getCode());
+						}
+						long notSubmitNum = studentCourseHomeworks.stream().filter(e -> e.getStatus().equals(YesOrNoEnum.NO)).count();
+						if(notSubmitNum<=0){
+							teacherHomeworkListDto.setIsSubmit(1);
+						}
+						if(noRepliedNum>0){
+							teacherHomeworkListDto.setStatus(1);
+						}else if(noRepliedNum<=0&&notSubmitNum>0){
+							teacherHomeworkListDto.setStatus(2);
+						}else if(noRepliedNum<=0&&notSubmitNum<=0){
+							teacherHomeworkListDto.setStatus(3);
+						}
+					}
+					dataList.addAll(byIdList);
+				}
 			}
 			dataList.removeAll(Collections.singleton(null));
 			dataList = dataList.stream().sorted(Comparator.comparing(TeacherHomeworkListDto::getDay).reversed()).collect(Collectors.toList());

+ 22 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectChangeServiceImpl.java

@@ -1,6 +1,8 @@
 package com.ym.mec.biz.service.impl;
 
 import static com.ym.mec.biz.dal.enums.DealStatusEnum.SUCCESS;
+import static com.ym.mec.biz.dal.enums.GroupType.SUBJECT_CHANGE;
+import static com.ym.mec.biz.dal.enums.GroupType.VIP;
 
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.SubjectChangeParamDto;
@@ -82,6 +84,8 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
     private MusicGroupSubjectPlanService musicGroupSubjectPlanService;
     @Autowired
     private SysCouponCodeService sysCouponCodeService;
+    @Autowired
+    private SysUserCashAccountLogDao sysUserCashAccountLogDao;
 
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
@@ -175,7 +179,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
         StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(subjectChangeParamDto.getCouponIdList(),amount,true);
         amount = studentPaymentOrder.getActualAmount();
         studentPaymentOrder.setUserId(subjectChange.getStudentId());
-        studentPaymentOrder.setGroupType(GroupType.SUBJECT_CHANGE);
+        studentPaymentOrder.setGroupType(SUBJECT_CHANGE);
         studentPaymentOrder.setOrderNo(orderNo);
         studentPaymentOrder.setType(OrderTypeEnum.SUBJECT_CHANGE);
         studentPaymentOrder.setStatus(DealStatusEnum.ING);
@@ -337,21 +341,32 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
             subjectChange.setSellAmount(BigDecimal.ZERO);
             subjectChange.setSellTime(nowDate);
         }
-        //差价小于0退到余额
-        if (amountMargin.compareTo(BigDecimal.ZERO) <= 0) {
-            sysUserCashAccountService.updateBalance(subjectChange.getStudentId(), amountMargin.negate(), PlatformCashAccountDetailTypeEnum.REFUNDS, "声部更换退还");
-            studentRegistrationService.changeStudentSubject(subjectChange.getStudentId(), subjectChange.getMusicGroupId(), subjectChange.getOriginalSubjectId(), subjectChange.getChangeSubjectId());
-        }
         subjectChange.setCreateTime(nowDate);
         subjectChange.setUpdateTime(nowDate);
         subjectChange.setVersion(0);
         subjectChangeDao.insert(subjectChange);
+        //差价小于0退到余额
+        if (amountMargin.compareTo(BigDecimal.ZERO) <= 0) {
+//            sysUserCashAccountService.updateBalance(subjectChange.getStudentId(), amountMargin.negate(), PlatformCashAccountDetailTypeEnum.REFUNDS, "声部更换退还");
+            if(amountMargin.compareTo(BigDecimal.ZERO) < 0){
+                SysUserCashAccountLog sysUserCashAccountLog = new SysUserCashAccountLog();
+                sysUserCashAccountLog.setUserId(subjectChange.getStudentId());
+                sysUserCashAccountLog.setGroupType(SUBJECT_CHANGE);
+                sysUserCashAccountLog.setOrganId(subjectChange.getOrganId());
+                sysUserCashAccountLog.setGroupId(subjectChange.getId().toString());
+                sysUserCashAccountLog.setAmount(amountMargin.negate());
+                sysUserCashAccountLog.setReturnFeeType(ReturnFeeEnum.SUBJECT_CHANGE);
+                sysUserCashAccountLog.setComment("声部更换退还");
+                sysUserCashAccountLogDao.insert(sysUserCashAccountLog);
+            }
+            studentRegistrationService.changeStudentSubject(subjectChange.getStudentId(), subjectChange.getMusicGroupId(), subjectChange.getOriginalSubjectId(), subjectChange.getChangeSubjectId());
+        }
 
         if (amountMargin.compareTo(BigDecimal.ZERO) <= 0) {
             String orderNo = idGeneratorService.generatorId("payment") + "";
             StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
             studentPaymentOrder.setUserId(subjectChange.getStudentId());
-            studentPaymentOrder.setGroupType(GroupType.SUBJECT_CHANGE);
+            studentPaymentOrder.setGroupType(SUBJECT_CHANGE);
             studentPaymentOrder.setOrderNo(orderNo);
             studentPaymentOrder.setType(OrderTypeEnum.SUBJECT_CHANGE);
             studentPaymentOrder.setExpectAmount(BigDecimal.ZERO);

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

@@ -522,7 +522,7 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 			dataList = teacherDao.queryMusicGroupStudentApply(params);
 			String paymentStatus = queryInfo.getPaymentStatus();
 			if(StringUtils.isNotEmpty(paymentStatus) && paymentStatus.equals("2")){
-				List<StudentPaymentOrder> studentPaymentOrders = studentPaymentOrderDao.findStudentPaymentOrder("MUSIC",queryInfo.getMusicGroupId());
+				List<StudentPaymentOrder> studentPaymentOrders = studentPaymentOrderDao.findStudentPaymentOrder(queryInfo.getMusicGroupId());
 				Map<Integer, List<StudentPaymentOrder>> collect = studentPaymentOrders.stream().collect(Collectors.groupingBy(StudentPaymentOrder::getUserId));
 				dataList.forEach(e->{
 					List<StudentPaymentOrder> paymentOrders = collect.get(e.getUserId());

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

@@ -268,7 +268,8 @@
 		<include refid="global.limit"/>
 	</select>
 	<select id="findByIdList" resultMap="com.ym.mec.biz.dal.dao.CourseHomeworkDao.teacherHomeworkListDto">
-		SELECT id_ homework_id_,title_,content_,completed_num_,expect_num_,music_score_id_,expire_date_ expiry_date_,DATE_FORMAT(create_time_,'%Y-%m-%d') 'day_'
+		SELECT id_ homework_id_,title_,content_,completed_num_,expect_num_,music_score_id_,
+		       expire_date_ expiry_date_,DATE_FORMAT(create_time_,'%Y-%m-%d') 'day_'
 		FROM extracurricular_exercises WHERE id_ IN
 		<foreach collection="exercisesIdList" separator="," item="item" open="(" close=")">
 			#{item}

+ 16 - 14
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -569,15 +569,15 @@
         (SELECT SUM(CASE WHEN amount_ IS NULL THEN 0 ELSE amount_ END) e FROM sys_user_courses_account_detail WHERE group_id_ = #{vipGroupId}) e
     </select>
     <select id="findStudentPaymentOrder" resultMap="StudentPaymentOrder">
-        SELECT *
-        FROM student_payment_order
-        WHERE id_ IN (SELECT id_
-                            FROM student_payment_order
-                            WHERE group_type_ = #{groupType}
-                              AND type_ = 'APPLY'
-                              AND music_group_id_ = #{musicGroupId}
-                              AND status_ = 'SUCCESS'
-                            ORDER BY id_ DESC)
+        SELECT sr.user_id_ ,sum(case when sc.id_ is null then spo.expect_amount_ else (spo.expect_amount_ + sc.goods_margin_) end) expect_amount_,spo.pay_time_
+        FROM student_payment_order spo
+                 LEFT JOIN student_registration sr ON sr.user_id_ = spo.user_id_
+                 LEFT JOIN (SELECT id_,music_group_id_,original_order_id_,CASE WHEN goods_margin_ &lt; 0 THEN goods_margin_ ELSE sell_amount_ END goods_margin_ FROM subject_change WHERE id_ in
+                                                               (SELECT max(id_) id_ from subject_change WHERE status_ = 2 GROUP BY music_group_id_,student_id_ ORDER BY id_ desc)
+        ) sc on spo.music_group_id_ = sc.music_group_id_ and spo.id_ = sc.original_order_id_
+        WHERE spo.music_group_id_ = #{musicGroupId} AND sr.music_group_id_ = spo.music_group_id_ AND sr.music_group_status_ = 'NORMAL'
+          AND spo.type_ = 'APPLY' and spo.status_ = 'SUCCESS'
+        GROUP BY sr.user_id_;
     </select>
     <select id="findOrderByGroupType" resultType="int">
         SELECT COUNT(id_) FROM student_payment_order
@@ -1006,16 +1006,18 @@
     </select>
 
     <select id="getMoneyInMusicApply" resultMap="Mapper">
-        SELECT spo.music_group_id_ key_, sum(case when a.id_ is null then spo.expect_amount_ else (spo.expect_amount_ + a.goods_margin_) end) value_ from student_payment_order spo LEFT JOIN
-		(
-		SELECT * FROM subject_change WHERE id_ in
-		(SELECT max(sc.id_) id_ from subject_change sc WHERE sc.status_ = 2 GROUP BY music_group_id_,student_id_ ORDER BY id_ desc)
+        SELECT spo.music_group_id_ key_, SUM(CASE WHEN a.id_ IS NULL THEN spo.expect_amount_ ELSE (spo.expect_amount_ + a.goods_margin_) END) value_
+        FROM student_payment_order spo
+        LEFT JOIN student_registration sr ON sr.user_id_ = spo.user_id_
+        LEFT JOIN (SELECT id_,music_group_id_,original_order_id_,CASE WHEN goods_margin_ &lt; 0 THEN goods_margin_ ELSE sell_amount_ END goods_margin_
+        FROM subject_change WHERE id_ in
+		(SELECT max(sc.id_) id_ from subject_change sc WHERE sc.status_ = 2 GROUP BY music_group_id_,student_id_ ORDER BY id_ DESC)
 		) a on spo.music_group_id_ = a.music_group_id_ and spo.id_ = a.original_order_id_
 		WHERE spo.music_group_id_ IN
         <foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
             #{musicGroupId}
         </foreach>
-        AND spo.type_ = 'APPLY' and spo.status_ = 'SUCCESS'
+        AND spo.type_ = 'APPLY' AND spo.status_ = 'SUCCESS' AND sr.music_group_id_ = spo.music_group_id_ AND sr.music_group_status_ = 'NORMAL'
 		GROUP BY spo.music_group_id_
     </select>
     <select id="findByUserAndActive" resultMap="StudentPaymentOrder">

+ 5 - 3
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -1847,10 +1847,12 @@
         GROUP BY sr.music_group_id_
     </select>
     <select id="querySubjectAmount" resultType="java.util.Map">
-        SELECT sr.actual_subject_id_ 'key',SUM(spo.expect_amount_) 'value' FROM student_payment_order spo
+        SELECT sr.actual_subject_id_ 'key', SUM(CASE WHEN sc.id_ IS NULL THEN spo.expect_amount_ ELSE (spo.expect_amount_ + sc.goods_margin_) END) 'value'
+        FROM student_payment_order spo
         LEFT JOIN student_registration sr ON sr.user_id_ = spo.user_id_
-        WHERE spo.group_type_ = 'MUSIC' AND spo.type_ = 'APPLY' AND spo.music_group_id_ = #{musicGroupId}
-        AND spo.status_ = 'SUCCESS' AND sr.music_group_id_ = spo.music_group_id_
+        LEFT JOIN (SELECT id_,music_group_id_,original_order_id_,CASE WHEN goods_margin_ &lt; 0 THEN goods_margin_ ELSE sell_amount_ END goods_margin_ FROM subject_change WHERE id_ IN (SELECT MAX(id_) id_ FROM subject_change WHERE status_ = 2 GROUP BY music_group_id_,student_id_ ORDER BY id_ DESC)) sc ON spo.music_group_id_ = sc.music_group_id_ AND spo.id_ = sc.original_order_id_
+        WHERE spo.music_group_id_ = #{musicGroupId} AND sr.music_group_id_ = spo.music_group_id_ AND sr.music_group_status_ = 'NORMAL'
+        AND spo.type_ = 'APPLY' AND spo.status_ = 'SUCCESS'
         GROUP BY sr.actual_subject_id_
     </select>
 </mapper>

+ 3 - 2
mec-biz/src/main/resources/config/mybatis/SysMusicScoreAccompanimentMapper.xml

@@ -16,6 +16,7 @@
 		<result column="name_" property="examSongName" />
 		<result column="categories_name_" property="categoriesName" />
 		<result column="categories_id_" property="categoriesId" />
+		<result column="parent_categories_id_" property="parentCategoriesId" />
 		<result column="type_" property="type" />
 		<result column="url_" property="url" />
 		<result column="del_flag_" property="delFlag" />
@@ -121,7 +122,7 @@
 	
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="SysMusicScoreAccompaniment" parameterType="map">
-		SELECT sesa.*,ses.name_,ses.type_,ses.url_,s.name_ subject_name_,sesc.name_ categories_name_,sesc.id_ categories_id_,ses.client_type_,ses.rank_ids_
+		SELECT sesa.*,ses.name_,ses.type_,ses.url_,s.name_ subject_name_,sesc.name_ categories_name_,sesc.id_ categories_id_,sesc.parent_id_ parent_categories_id_,ses.client_type_,ses.rank_ids_
 		FROM sys_music_score ses
 		LEFT JOIN sys_music_score_accompaniment sesa ON ses.id_ = sesa.exam_song_id_
 		LEFT JOIN sys_music_score_categories sesc ON sesc.id_ = ses.music_score_categories_id_
@@ -156,7 +157,7 @@
 		</where>
 	</select>
 	<select id="queryAccPage" resultMap="SysMusicScoreAccompaniment">
-		SELECT sesa.*,ses.name_,ses.type_,ses.url_,s.name_ subject_name_,sesc.name_ categories_name_,sesc.id_ categories_id_,ses.client_type_
+		SELECT sesa.*,ses.name_,ses.type_,ses.url_,s.name_ subject_name_,sesc.name_ categories_name_,sesc.id_ categories_id_,sesc.parent_id_ parent_categories_id_,ses.client_type_
 		FROM sys_music_score ses
 		LEFT JOIN sys_music_score_accompaniment sesa ON ses.id_ = sesa.exam_song_id_
 		LEFT JOIN sys_music_score_categories sesc ON sesc.id_ = ses.music_score_categories_id_