Ver código fonte

Merge remote-tracking branch 'origin/master'

周箭河 4 anos atrás
pai
commit
ea106a0eab
19 arquivos alterados com 184 adições e 102 exclusões
  1. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  2. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java
  3. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/DegreeRegistrationDao.java
  4. 0 9
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupOrganizationCourseSettingsDetailDao.java
  5. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  6. 8 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  7. 7 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java
  8. 31 34
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeRegistrationServiceImpl.java
  9. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  10. 18 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  11. 1 1
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  12. 9 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  13. 5 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  14. 74 13
      mec-biz/src/main/resources/config/mybatis/DegreeRegistrationMapper.xml
  15. 0 8
      mec-biz/src/main/resources/config/mybatis/MusicGroupOrganizationCourseSettingsDetailMapper.xml
  16. 0 2
      mec-im/src/main/java/com/ym/controller/RoomController.java
  17. 3 3
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  18. 4 4
      mec-student/src/main/java/com/ym/mec/student/controller/DegreeController.java
  19. 1 2
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -1680,4 +1680,13 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     List<Long> findNoStudentCourseIds(@Param("courseIds") List<Long> courseIds);
+
+    /**
+     *
+     * 根据班级编号获取未开始的主课
+     * @author zouxuan
+     * @param classGroupIds
+     * @return
+     */
+    int findNoStartMasterCourseNum(@Param("classGroupIds") List<Integer> classGroupIds);
 }

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

@@ -428,4 +428,14 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      * @return
      */
     List<CourseScheduleStudentPayment> queryByIdsAndStudentId(@Param("studentPaymentIds") List<Long> studentPaymentIds, @Param("studentId") Integer studentId, @Param("courseType") String courseType);
+
+    /**
+     * @describe 统计课程组已经开始的课程的应缴费用
+     * @author qnc99
+     * @date 2020/12/8 0008
+     * @param groupId:
+     * @param groupType:
+     * @return java.math.BigDecimal
+     */
+    BigDecimal countFinishCoursePriceWithMusicGroup(@Param("groupId") String groupId, @Param("groupType") GroupType groupType);
 }

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

@@ -9,6 +9,8 @@ import java.util.Map;
 
 public interface DegreeRegistrationDao extends BaseDAO<Integer, DegreeRegistration> {
 
+    int batchUpdate(@Param("degrees") List<DegreeRegistration> degrees);
+
     DegreeRegistration findByMobileAndSporadicId(@Param("mobile") String mobile, @Param("sporadicId") Integer sporadicId);
 
     DegreeRegistration getLock(@Param("id") Integer id);
@@ -17,8 +19,6 @@ public interface DegreeRegistrationDao extends BaseDAO<Integer, DegreeRegistrati
 
     DegreeRegistration getWithUserIdAndActivityTag(@Param("degree") DegreeRegistration degree);
 
-    DegreeRegistration getWithLevel(@Param("degree") DegreeRegistration degree);
-
     List<DegreeRegistration> getUserLevelDegrees(@Param("userId") Integer userId,
                                                  @Param("activityTag") String activityTag);
 }

+ 0 - 9
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupOrganizationCourseSettingsDetailDao.java

@@ -13,13 +13,4 @@ public interface MusicGroupOrganizationCourseSettingsDetailDao extends BaseDAO<I
     int deleteBySettingId(@Param("settingId") Integer settingId);
     
     List<MusicGroupOrganizationCourseSettingsDetail> queryByMusicGroupOrganizationCourseSettingsId(Integer musicGroupOrganizationCourseSettingsId);
-
-    /**
-     * 获取当前班级对应课程类型的价格
-     * @author zouxuan
-     * @param classGroupId
-     * @param courseType
-     * @return
-     */
-    MusicGroupOrganizationCourseSettingsDetail getClassLastSetting(@Param("classGroupId") Integer classGroupId, @Param("courseType") String courseType);
 }

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

@@ -481,7 +481,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param mergeClassSplitClassAffirmDto
      * @return
      */
-    void mergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) throws InvocationTargetException, IllegalAccessException, Exception;
+    String mergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) throws InvocationTargetException, IllegalAccessException, Exception;
 
     /**
      * 进行中乐团-修改-班级详情-学员班级调整-合并结果确认-获取新班级的可排课时长

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

@@ -3606,7 +3606,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             for (String courseType : courseTypes) {
                 Long currentNum = subCourseNumMap.get(courseType);
                 if(currentNum == null){
-                    throw new BizException("所选班级课程类型不一致,请重新选择");
+                    currentNum = 0l;
                 }
                 Long maxNum = map.get(courseType);
                 //如果当前课程类型不需要新增缴费项目
@@ -3615,7 +3615,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 }
                 Long subNum = maxNum - currentNum;
                 //生成缴费项目
-//                MusicGroupOrganizationCourseSettingsDetail settingsDetail = musicGroupOrganizationCourseSettingsDetailDao.getClassLastSetting(classGroupId,courseType);
                 MusicGroupOrganizationCourseSettingsDetail settingsDetail = new MusicGroupOrganizationCourseSettingsDetail();
                 BigDecimal unitPrice = unitPriceMap.get(courseType);
                 if(unitPrice == null){
@@ -3634,7 +3633,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void mergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto){
+    public String mergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto){
         List<Integer> classGroupIds = mergeClassSplitClassAffirmDto.getClassGroupIds();
         if(classGroupIds == null || classGroupIds.size() == 0){
             throw new BizException("参数校验失败");
@@ -3746,11 +3745,13 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             if(delCourseIds != null && delCourseIds.size() > 0){
                 courseScheduleDao.deleteCourseSchedulesByClassGroupIds(delCourseIds);
             }
+            return "学员班级调整完成";
         }else {
             //冻结班级
             classGroupDao.batchUpdateLockByClassGroupIds(classGroupIds,1);
             //冻结所选班级的课程
             courseScheduleDao.batchUpdateLockByCourseIds(allLockCourseIds,1);
+            return "学员班级调整申请已提交,缴费项目审核中";
         }
     }
 
@@ -3777,11 +3778,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         if(lockClassGroupIds != null && lockClassGroupIds.size() > 0){
             throw new BizException("所选班级包含审核中的学员班级调整申请");
         }
-        for (Integer classGroupId : classGroupIds) {
-            List<CourseSchedule> courseSchedules = courseScheduleDao.findCoursesByClassGroupId(classGroupId,CourseStatusEnum.NOT_START);
-            if(courseSchedules != null && courseSchedules.size() > 0){
-                throw new BizException("所选班级不能有未开始的临时合并课程");
-            }
+        //所选班级不能有未开始的临时合并课程
+        int courseNum = courseScheduleDao.findNoStartMasterCourseNum(classGroupIds);
+        if(courseNum > 0){
+            throw new BizException("所选班级不能有未开始的临时合并课程");
         }
         List<Integer> allTeacherIds = classGroupTeacherMapperList.stream()
                 .map(ClassGroupTeacherMapper::getUserId)

+ 7 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java

@@ -328,6 +328,7 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 		JSONObject jsonObject = JSON.parseObject(courseDefaultMinutes);
 
 		for (Integer studentId : studentIds) {
+			List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetails = null;
 			for (int i = 0; i < courseSchedules.size(); i++) {
 				CourseSchedule courseSchedule = courseSchedules.get(i);
 				//优先处理之前的剩余课程
@@ -353,7 +354,9 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 					}
 				}
 				//处理缴费的排课信息
-				List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetails = musicGroupPaymentStudentCourseDetailDao.getUnUseWithStudentAndCourseTypeAndCourseMinutes(batchNo, studentId,courseSchedule.getType());
+				if(musicGroupPaymentStudentCourseDetails == null){
+					musicGroupPaymentStudentCourseDetails = musicGroupPaymentStudentCourseDetailDao.getUnUseWithStudentAndCourseTypeAndCourseMinutes(batchNo, studentId,courseSchedule.getType());
+				}
 				if(musicGroupPaymentStudentCourseDetails == null || musicGroupPaymentStudentCourseDetails.size() == 0){
 					throw new BizException("学员缴费详情获取失败");
 				}
@@ -388,9 +391,11 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 					if(typeCourseDuration > musicGroupPaymentStudentCourseDetail.getTotalCourseMinutes()){
 						musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(musicGroupPaymentStudentCourseDetail.getTotalCourseMinutes());
 					}else{
-						musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(typeCourseDuration);
+						musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(musicGroupPaymentStudentCourseDetail.getUsedCourseMinutes() + typeCourseDuration);
 					}
 				}
+			}
+			if(musicGroupPaymentStudentCourseDetails != null && musicGroupPaymentStudentCourseDetails.size() > 0){
 				musicGroupPaymentStudentCourseDetailDao.batchUpdate(musicGroupPaymentStudentCourseDetails);
 			}
 		}

+ 31 - 34
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeRegistrationServiceImpl.java

@@ -77,18 +77,19 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
         Student student = studentDao.getLocked(degreeRegistration.getUserId());
 
         List<DegreeRegistration> userLevelDegrees = degreeRegistrationDao.getUserLevelDegrees(degreeRegistration.getUserId(), ACTIVITY_TAG);
-        long levelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getSporadicId())).count();
-        long theoryLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getTheoryLevel())).count();
+        long endLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getSporadicId())&&d.getStatus().equals(2)).count();
+        long ingLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getSporadicId())&&d.getStatus().equals(1)).count();
+        long endTheoryLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getTheoryLevel())&&d.getStatus().equals(2)).count();
+        long ingTheoryLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getTheoryLevel())&&d.getStatus().equals(1)).count();
 
-        if(Objects.nonNull(degreeRegistration.getSporadicId())&&levelNum>0){
+        if(Objects.nonNull(degreeRegistration.getSporadicId())&&endLevelNum>0){
             throw new BizException("您已报考过选择的考级项目");
         }
-        if(Objects.nonNull(degreeRegistration.getTheoryLevel())&&theoryLevelNum>0){
+        if(Objects.nonNull(degreeRegistration.getTheoryLevel())&&endTheoryLevelNum>0){
             throw new BizException("您已报考过选择的考级项目");
         }
 
         degreeRegistration.setActivityTag(ACTIVITY_TAG);
-        DegreeRegistration degree = degreeRegistrationDao.getWithLevel(degreeRegistration);
 
         Date nowDate = new Date();
 
@@ -139,33 +140,26 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
         }
 
         if(Objects.nonNull(degreeRegistration.getSporadicId())||Objects.nonNull(degreeRegistration.getTheoryLevel())){
-            if (degree == null) {
-                degreeRegistration.setStatus(1);
-                degreeRegistration.setCreateTime(nowDate);
-                degreeRegistration.setUpdateTime(nowDate);
-                degreeRegistrationDao.insert(degreeRegistration);
-            } else if (degree.getStatus().equals(2)) {
-                throw new BizException("您已报考过选择的考级项目");
-            } else {
-                if (!degreeRegistration.getIsRepay() && degree.getStatus().equals(1)) {
-                    List<StudentPaymentOrder> orders = studentPaymentOrderDao.findPaymentOrderByGroupType(degreeRegistration.getUserId(), degreeRegistration.getSporadicId(), "SPORADIC", DealStatusEnum.ING);
-                    if (orders != null && orders.size() > 0) {
-                        List<StudentPaymentOrderDetail> studentPaymentOrderDetails = studentPaymentOrderDetailDao.getOrderDetail(orders.get(0).getId());
-                        Map<String, Object> result = new HashMap<>();
-                        result.put("degree", degree);
-                        if(!CollectionUtils.isEmpty(studentPaymentOrderDetails)){
-                            result.put("additionCourseInfo", studentPaymentOrderDetails.get(0).getGoodsIdList());
-                        }
-                        return BaseController.failed(HttpStatus.CONTINUE, result, "");
+            degreeRegistration.setStatus(1);
+            degreeRegistration.setCreateTime(nowDate);
+            degreeRegistration.setUpdateTime(nowDate);
+            degreeRegistrationDao.insert(degreeRegistration);
+
+            List<DegreeRegistration> updateDegrees = new ArrayList<>();
+            if(ingLevelNum>0||ingTheoryLevelNum>0){
+                for (DegreeRegistration userLevelDegree : userLevelDegrees) {
+                    if(Objects.nonNull(userLevelDegree.getSporadicId())&&userLevelDegree.getSporadicId().equals(degreeRegistration.getSporadicId())){
+                        userLevelDegree.setStatus(0);
+                        updateDegrees.add(userLevelDegree);
                     }
+                    if(Objects.nonNull(userLevelDegree.getTheoryLevel())&&userLevelDegree.getTheoryLevel().equals(degreeRegistration.getTheoryLevel())){
+                        userLevelDegree.setStatus(0);
+                        updateDegrees.add(userLevelDegree);
+                    }
+                }
+                if(!CollectionUtils.isEmpty(updateDegrees)){
+                    degreeRegistrationDao.batchUpdate(updateDegrees);
                 }
-                degreeRegistration.setMoney(degree.getMoney());
-                degreeRegistration.setTheoryMoney(degree.getTheoryMoney());
-                degreeRegistration.setId(degree.getId());
-                degreeRegistration.setStatus(1);
-                degreeRegistration.setCreateTime(nowDate);
-                degreeRegistration.setUpdateTime(nowDate);
-                degreeRegistrationDao.update(degreeRegistration);
             }
         }
 
@@ -201,6 +195,10 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
 
             BigDecimal practiceUnitPrice = practiceGroupSellPrice.getOnceOriginalPrice(),
                     vipUnitPrice = practiceGroupSellPrice.getVipOneStudentTwelveCourseActivityPriceWithNewUser(), highUnitPrice;
+
+            if(additionCourseInfo.containsKey(CourseSchedule.CourseScheduleType.HIGH)){
+                historyHighNum = historyHighNum + additionCourseInfo.get(CourseSchedule.CourseScheduleType.HIGH);
+            }
             if(student.getIsNewUser()){
                 highUnitPrice = practiceGroupSellPrice.getHighOnlineTenCourseOriginalPriceWithNewUser();
                 if(additionCourseInfo.containsKey(CourseSchedule.CourseScheduleType.VIP)){
@@ -209,9 +207,6 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
                 if(historyVipNum<=0){
                     additionCourseInfo.remove(CourseSchedule.CourseScheduleType.PRACTICE);
                 }
-                if(additionCourseInfo.containsKey(CourseSchedule.CourseScheduleType.HIGH)){
-                    historyHighNum = historyHighNum + additionCourseInfo.get(CourseSchedule.CourseScheduleType.HIGH);
-                }
                 boolean vipMoreThan2 = historyVipNum>=2;
                 if(vipMoreThan2){
                     if(FREE_PRICE_LEVEL.contains(degreeRegistration.getLevel())){
@@ -334,7 +329,9 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
             throw new BizException("订单更新失败");
         }
 
-        if (degree == null || degree.getStatus().equals(2)) {
+        if (degree == null || !degree.getStatus().equals(1)) {
+            studentPaymentOrder.setMemo("订单状态已变更");
+            studentPaymentOrderService.update(studentPaymentOrder);
             return true;
         }
         degree.setOrderNo(studentPaymentOrder.getOrderNo());

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

@@ -799,7 +799,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 					musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderDetailId(musicGroupPaymentCalenderDetail.getId());
 					musicGroupPaymentStudentCourseDetail.setTotalCourseMinutes(courseSettings.getCourseTotalMinuties());
 					musicGroupPaymentStudentCourseDetail.setUpdateTime(date);
-					musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(0);
+					musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(courseSettings.getCourseTotalMinuties());
 					musicGroupPaymentStudentCourseDetail.setUserId(Integer.parseInt(studentId));
 
 					musicGroupPaymentStudentCourseDetailList.add(musicGroupPaymentStudentCourseDetail);

+ 18 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -6,15 +6,7 @@ import static com.ym.mec.biz.dal.enums.DealStatusEnum.SUCCESS;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.StringUtils;
@@ -1613,8 +1605,15 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             
             //操作人
             SysUser operator = sysUserFeignService.queryUserInfo();
+
+            BigDecimal price = courseScheduleStudentPaymentDao.countFinishCoursePriceWithMusicGroup(musicGroupId, GroupType.MUSIC);
+            BigDecimal subtractAmount = studentRegistration.getSurplusCourseFee();
+            if(Objects.isNull(price)){
+                price = new BigDecimal(0);
+            }
+            subtractAmount = subtractAmount.subtract(price);
             
-            studentRegistrationService.updateUserSurplusCourseFee(userId, musicGroupId, studentRegistration.getSurplusCourseFee().negate(), reason, operator.getId());
+            studentRegistrationService.updateUserSurplusCourseFee(userId, musicGroupId, subtractAmount.negate(), reason, operator.getId());
             
             
             //更新服务指标、运营指标
@@ -1756,8 +1755,15 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         
         //操作人
         SysUser operator = sysUserFeignService.queryUserInfo();
-        
-        studentRegistrationService.updateUserSurplusCourseFee(userId, musicGroupId, studentRegistration.getSurplusCourseFee().negate(), reason, operator.getId());
+
+        BigDecimal price = courseScheduleStudentPaymentDao.countFinishCoursePriceWithMusicGroup(musicGroupId, GroupType.MUSIC);
+        BigDecimal subtractAmount = studentRegistration.getSurplusCourseFee();
+        if(Objects.isNull(price)){
+            price = new BigDecimal(0);
+        }
+        subtractAmount = subtractAmount.subtract(price);
+
+        studentRegistrationService.updateUserSurplusCourseFee(userId, musicGroupId, subtractAmount.negate(), reason, operator.getId());
         
         //更新服务指标、运营指标
         int remainCourseNum = courseScheduleStudentPaymentDao.countStudentNotStartCourseNumWithCourseType(userId, null);

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

@@ -1076,7 +1076,7 @@
           #{classGroupId}
       </foreach>
       <if test="lockFlag != null">
-          lock_flag_ = #{lockFlag}
+          AND lock_flag_ = #{lockFlag}
       </if>
     </select>
 

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

@@ -3425,6 +3425,15 @@
         </foreach>
         GROUP BY cssp.course_schedule_id_,cs.id_  HAVING COUNT(cssp.id_) = 0
     </select>
+    <select id="findNoStartMasterCourseNum" resultType="int">
+        SELECT count(new_course_id_) FROM course_schedule
+        WHERE new_course_id_ IN (SELECT id_ FROM course_schedule
+        WHERE class_group_id_ IN
+        <foreach collection="classGroupIds" open="(" close=")" separator="," item="item">
+            #{item}
+        </foreach>
+        AND CONCAT(class_date_,' ',start_class_time_) > NOW())
+    </select>
     <select id="getLock" resultMap="CourseSchedule">
         SELECT * FROM course_schedule WHERE id_ = #{courseId} FOR UPDATE
     </select>

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

@@ -669,4 +669,9 @@
 		</foreach>
 		AND cssp.user_id_ = #{studentId} AND cs.type_ = #{courseType}
 	</select>
+
+	<select id="countFinishCoursePriceWithMusicGroup" resultType="java.math.BigDecimal">
+		SELECT SUM(expect_price_)-SUM(actual_price_) FROM course_schedule_student_payment
+		WHERE music_group_id_=#{groupId} AND group_type_=#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+	</select>
 </mapper>

+ 74 - 13
mec-biz/src/main/resources/config/mybatis/DegreeRegistrationMapper.xml

@@ -196,19 +196,90 @@
             <if test="createTime != null">
                 create_time_ = #{createTime},
             </if>
-            <if test="updateTime != null">
-                update_time_ = #{updateTime},
-            </if>
             <if test="status != null">
                 status_ = #{status,jdbcType=INTEGER},
             </if>
             <if test="activityTag != null">
                 activity_tag_ = #{activityTag},
             </if>
+                update_time_ = NOW()
         </set>
         where id_ = #{id,jdbcType=INTEGER}
     </update>
 
+    <update id="batchUpdate" parameterType="com.ym.mec.biz.dal.entity.DegreeRegistration">
+        <foreach collection="degrees" item="degree" separator=";">
+            update degree_registration
+            <set>
+                <if test="degree.userId != null">
+                    user_id_ = #{degree.userId},
+                </if>
+                <if test="degree.organId != null">
+                    organ_id_ = #{degree.organId,jdbcType=INTEGER},
+                </if>
+                <if test="degree.sporadicId != null">
+                    sporadic_id_ = #{degree.sporadicId,jdbcType=INTEGER},
+                </if>
+                <if test="degree.orderNo != null">
+                    order_no_ = #{degree.orderNo,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.transNo != null">
+                    trans_no_ = #{degree.transNo,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.name != null">
+                    name_ = #{degree.name,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.gender != null">
+                    gender_ = #{degree.gender,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.idcard != null">
+                    idcard_ = #{degree.idcard,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.city != null">
+                    city_ = #{degree.city,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.school != null">
+                    school_ = #{degree.school,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.subject != null">
+                    subject_ = #{degree.subject,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.level != null">
+                    level_ = #{degree.level,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.theoryLevel != null">
+                    theory_level_ = #{degree.theoryLevel,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.theoryLevel != null">
+                    theory_money_ = #{degree.theoryMoney,jdbcType=DECIMAL},
+                </if>
+                <if test="degree.theoryLevel != null">
+                    theory_cert_ = #{degree.theoryCert,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.mobile != null">
+                    mobile_ = #{degree.mobile,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.money != null">
+                    money_ = #{degree.money,jdbcType=DECIMAL},
+                </if>
+                <if test="degree.memo != null">
+                    memo_ = #{degree.memo,jdbcType=VARCHAR},
+                </if>
+                <if test="degree.createTime != null">
+                    create_time_ = #{degree.createTime},
+                </if>
+                <if test="degree.status != null">
+                    status_ = #{degree.status,jdbcType=INTEGER},
+                </if>
+                <if test="degree.activityTag != null">
+                    activity_tag_ = #{degree.activityTag},
+                </if>
+                    update_time_ = NOW()
+            </set>
+            where id_ = #{degree.id,jdbcType=INTEGER}
+        </foreach>
+    </update>
+
     <select id="findByMobileAndSporadicId" resultMap="DegreeRegistration">
         SELECT *
         FROM degree_registration
@@ -240,15 +311,6 @@
             </if>
     </select>
 
-    <select id="getWithLevel" resultMap="DegreeRegistration">
-        select *
-            from degree_registration
-        where
-            user_id_ = #{degree.userId}
-            AND activity_tag_=#{degree.activityTag}
-            AND (sporadic_id_ = #{degree.sporadicId} OR theory_level_ = #{degree.theoryLevel})
-    </select>
-
     <select id="getUserLevelDegrees" resultMap="DegreeRegistration">
         select *
             from degree_registration
@@ -256,6 +318,5 @@
             user_id_ = #{userId}
             AND activity_tag_=#{activityTag}
             AND (sporadic_id_ IS NOT NULL OR theory_level_ IS NOT NULL)
-            AND status_=2
     </select>
 </mapper>

+ 0 - 8
mec-biz/src/main/resources/config/mybatis/MusicGroupOrganizationCourseSettingsDetailMapper.xml

@@ -117,12 +117,4 @@
         SELECT * FROM music_group_organization_course_settings_detail
         where music_group_organization_course_settings_id_ = #{musicGroupOrganizationCourseSettingsId}
     </select>
-    <select id="getClassLastSetting" resultMap="MusicGroupOrganizationCourseSettingsDetail">
-        SELECT cssp.original_price_ course_original_price_,cssp.expect_price_ course_current_price_
-		FROM course_schedule cs
-		LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
-		WHERE cs.class_group_id_ = #{classGroupId} AND cs.type_ = #{courseType} AND cssp.original_price_ IS NOT NULL
-		ORDER BY cs.class_date_,cs.start_class_time_ DESC
-		LIMIT 1
-    </select>
 </mapper>

+ 0 - 2
mec-im/src/main/java/com/ym/controller/RoomController.java

@@ -22,8 +22,6 @@ public class RoomController{
     RoomService roomService;
     @Autowired
     MessageService messageService;
-    @Autowired
-    private RedisTemplate<String,String> redisTemplate;
 
     @RequestMapping(value = "/join", method = RequestMethod.POST)
     public Object joinRoom(@RequestBody ReqUserData data) throws Exception {

+ 3 - 3
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -157,7 +157,7 @@ public class RoomServiceImpl implements RoomService {
         }else {
             roomId = "S" + roomId;
         }
-        redisTemplate.opsForValue().set(roomId + userId,courseSchedule.getId().toString());
+        redisTemplate.opsForValue().setIfAbsent(roomId + userId,courseSchedule.getId().toString());
         log.info("joinRoom current: roomId={}, userId={}", roomId, userId);
         Date curTime = DateTimeUtils.currentUTC();
 
@@ -279,7 +279,7 @@ public class RoomServiceImpl implements RoomService {
         if(redisTemplate.hasKey(leaveSuccessKey)){
             redisTemplate.delete(leaveSuccessKey);
         }
-        redisTemplate.opsForValue().set(joinSuccessKey,roomId,2l,TimeUnit.SECONDS);
+        redisTemplate.opsForValue().setIfAbsent(joinSuccessKey,roomId,2l,TimeUnit.SECONDS);
         log.info("joinRoomSuccess : roomId={}, userId={}", roomId, userId);
 
         RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
@@ -412,7 +412,7 @@ public class RoomServiceImpl implements RoomService {
         if(redisTemplate.hasKey(joinSuccessKey)){
             redisTemplate.delete(joinSuccessKey);
         }
-        redisTemplate.opsForValue().set(leaveSuccessKey,roomId,2,TimeUnit.SECONDS);
+        redisTemplate.opsForValue().setIfAbsent(leaveSuccessKey,roomId,2,TimeUnit.SECONDS);
         //记录
         log.info("leaveRoomSuccess: roomId={}, userId={}", roomId,userId);
         RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());

+ 4 - 4
mec-student/src/main/java/com/ym/mec/student/controller/DegreeController.java

@@ -105,8 +105,8 @@ public class DegreeController extends BaseController {
         degreeRegistration.setActivityTag(DegreeRegistrationService.ACTIVITY_TAG);
         studentDao.getLocked(degreeRegistration.getUserId());
         List<DegreeRegistration> userLevelDegrees = degreeRegistrationDao.getUserLevelDegrees(degreeRegistration.getUserId(), DegreeRegistrationService.ACTIVITY_TAG);
-        long levelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getSporadicId())).count();
-        long theoryLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getTheoryLevel())).count();
+        long levelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getSporadicId())&&d.getStatus().equals(2)).count();
+        long theoryLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getTheoryLevel())&&d.getStatus().equals(2)).count();
 
         if(Objects.nonNull(degreeRegistration.getSporadicId())&&levelNum>0){
             return failed(HttpStatus.CREATED, "您已报考过选择的考级项目");
@@ -154,8 +154,8 @@ public class DegreeController extends BaseController {
         result.put("sporadicChargeInfo", sporadicChargeInfoService.queryDetailPage(queryInfo));
 
         List<DegreeRegistration> userLevelDegrees = degreeRegistrationDao.getUserLevelDegrees(user.getId(), DegreeRegistrationService.ACTIVITY_TAG);
-        long levelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getSporadicId())).count();
-        long theoryLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getTheoryLevel())).count();
+        long levelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getSporadicId())&&d.getStatus().equals(2)).count();
+        long theoryLevelNum = userLevelDegrees.stream().filter(d -> Objects.nonNull(d.getTheoryLevel())&&d.getStatus().equals(2)).count();
 
         result.put("levelApplied", levelNum>0?1:0);
         result.put("theoryLevelApplied", theoryLevelNum>0?1:0);

+ 1 - 2
mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

@@ -354,8 +354,7 @@ public class ClassGroupController extends BaseController {
     @PostMapping("/mergeClassSplitClassAffirm")
     @PreAuthorize("@pcs.hasPermissions('classGroup/mergeClassSplitClassAffirm')")
     public HttpResponseResult mergeClassSplitClassAffirm(@RequestBody MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) throws Exception {
-        classGroupService.mergeClassSplitClassAffirm(mergeClassSplitClassAffirmDto);
-        return succeed();
+        return succeed(classGroupService.mergeClassSplitClassAffirm(mergeClassSplitClassAffirmDto));
     }
 
     @ApiOperation(value = "进行中乐团-修改-班级详情-学员班级调整-合并结果确认-获取新班级可排课时长")