Kaynağa Gözat

Merge remote-tracking branch 'origin/master'

Joburgess 4 yıl önce
ebeveyn
işleme
c29f477e31

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

@@ -1624,4 +1624,11 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     List<Map<String, Integer>> querySubCourseNumMap(@Param("classGroupId") Integer classGroupId);
+
+    /**
+     * 获取所选班级最大剩余课时
+     * @param classGroupIds
+     * @return
+     */
+    List<Map<String, Integer>> findClassMaxCourseNumMap(@Param("classGroupIds") List<Integer> classGroupIds);
 }

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

@@ -8,6 +8,10 @@ import java.util.List;
 
 public interface MusicGroupOrganizationCourseSettingsDetailDao extends BaseDAO<Integer, MusicGroupOrganizationCourseSettingsDetail> {
 
+    static MusicGroupOrganizationCourseSettingsDetail getClassLastSetting(Integer classGroupId, String courseType) {
+        return null;
+    }
+
     int batchInsert(@Param("settingDetails") List<MusicGroupOrganizationCourseSettingsDetail> settingDetails);
 
     int deleteBySettingId(@Param("settingId") Integer settingId);

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

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.MusicGroupOrganizationCourseSettingsDetail;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
@@ -80,4 +81,13 @@ public interface MusicGroupPaymentCalenderCourseSettingsDao extends BaseDAO<Inte
 	 * @time 16:04
 	 */
 	List<MusicGroupPaymentCalenderCourseSettings> queryCalenderCourseSettingsByBatchNo(String batchNo);
+
+	/**
+	 * 获取当前班级对应课程类型的价格
+	 * @author zouxuan
+	 * @param classGroupId
+	 * @param courseType
+	 * @return
+	 */
+    MusicGroupOrganizationCourseSettingsDetail getClassLastSetting(@Param("classGroupId") Integer classGroupId, @Param("courseType") String courseType);
 }

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

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.ClassGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
@@ -458,8 +459,16 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
     /**
      * 进行中乐团-修改-班级详情-学员班级调整详情
      * @author zouxuan
-     * @param musicGroupId
+     * @param classGroupId
+     * @return
+     */
+    Map<String,Integer> classGroupSubCourseNum(Integer classGroupId);
+
+    /**
+     * 进行中乐团-修改-班级详情-学员班级调整-生成默认缴费信息
+     * @author zouxuan
+     * @param classGroupIds
      * @return
      */
-    List<Map<String,Object>> studentClassAuditDetail(String musicGroupId);
+    List<MusicGroupPaymentCalender> getDefaultPaymentCalender(List<Integer> classGroupIds);
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderCourseSettingsService.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.entity.MusicGroupOrganizationCourseSettingsDetail;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
 import com.ym.mec.common.service.BaseService;
 
@@ -18,4 +19,12 @@ public interface MusicGroupPaymentCalenderCourseSettingsService extends BaseServ
      */
     Map<String, Integer> getMusicCourseSettingsWithStudents(String musicGroupId, List<Integer> studentIds);
 
+    /**
+     * 获取当前班级对应课程类型的价格
+     * @author zouxuan
+     * @param classGroupId
+     * @param courseType
+     * @return
+     */
+    MusicGroupOrganizationCourseSettingsDetail getClassLastSetting(Integer classGroupId, String courseType);
 }

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

@@ -25,6 +25,8 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.entity.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -36,31 +38,6 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.ClassGroupRelationDao;
-import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
-import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleEvaluateDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
-import com.ym.mec.biz.dal.dao.CoursesGroupDao;
-import com.ym.mec.biz.dal.dao.GroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupBuildLogDao;
-import com.ym.mec.biz.dal.dao.MusicGroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
-import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
-import com.ym.mec.biz.dal.dao.PracticeGroupDao;
-import com.ym.mec.biz.dal.dao.SchoolDao;
-import com.ym.mec.biz.dal.dao.StudentApplyRefundsDao;
-import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
-import com.ym.mec.biz.dal.dao.StudentDao;
-import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
-import com.ym.mec.biz.dal.dao.SubjectDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
-import com.ym.mec.biz.dal.dao.VipGroupDao;
 import com.ym.mec.biz.dal.dto.ClassGroup4MixDto;
 import com.ym.mec.biz.dal.dto.ClassGroupImGroupDto;
 import com.ym.mec.biz.dal.dto.ClassGroupTeacherMapDto;
@@ -79,27 +56,7 @@ import com.ym.mec.biz.dal.dto.TeacherClassHeadInfo;
 import com.ym.mec.biz.dal.dto.TeacherMusicClassInfoDto;
 import com.ym.mec.biz.dal.dto.TeacherVipClassInfoDto;
 import com.ym.mec.biz.dal.dto.UserMusicGroupQueryInfo;
-import com.ym.mec.biz.dal.entity.ClassGroup;
-import com.ym.mec.biz.dal.entity.ClassGroupRelation;
-import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
-import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
-import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
-import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
-import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
-import com.ym.mec.biz.dal.entity.CoursesGroup;
-import com.ym.mec.biz.dal.entity.Group;
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
-import com.ym.mec.biz.dal.entity.PracticeGroup;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
-import com.ym.mec.biz.dal.entity.Subject;
-import com.ym.mec.biz.dal.entity.SysConfig;
-import com.ym.mec.biz.dal.entity.Teacher;
-import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
-import com.ym.mec.biz.dal.entity.VipGroup;
 import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
@@ -3266,20 +3223,50 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 	}
 
     @Override
-    public List<Map<String,Object>> studentClassAuditDetail(String musicGroupId) {
-        List<Map<String,Object>> result = new ArrayList<>();
-        //获取班级列表
-        List<ClassGroup> classGroups = classGroupDao.queryClassGroups(musicGroupId, null);
-        for (ClassGroup classGroup : classGroups) {
-            Map<String,Object> resultMap = new HashMap();
-            resultMap.put("classGroup",classGroup);
-            //获取班级剩余的课程类型和课程数量
-            List<Map<String,Integer>> courseTypeNumMap = courseScheduleDao.querySubCourseNumMap(classGroup.getId());
-            resultMap.put("courseTypeNumMap",courseTypeNumMap);
-            //获取班级里学员列表
-            resultMap.put("students",classGroupStudentMapperDao.findCourseStudentNameAndPhoneByClassGroupId(classGroup.getId()));
-            result.add(resultMap);
-        }
-        return result;
+    public Map<String,Integer> classGroupSubCourseNum(Integer classGroupId) {
+        return MapUtil.convertIntegerMap(courseScheduleDao.querySubCourseNumMap(classGroupId));
+
+//        List<Map<String,Object>> result = new ArrayList<>();
+//        //获取班级列表
+//        List<ClassGroup> classGroups = classGroupDao.queryClassGroups(musicGroupId, null);
+//        for (ClassGroup classGroup : classGroups) {
+//            Map<String,Object> resultMap = new HashMap();
+//            resultMap.put("classGroup",classGroup);
+//            //获取班级剩余的课程类型和课程数量
+//            List<Map<String,Integer>> courseTypeNumMap = courseScheduleDao.querySubCourseNumMap(classGroup.getId());
+//            resultMap.put("courseTypeNumMap",courseTypeNumMap);
+//            //获取班级里学员列表
+//            resultMap.put("students",classGroupStudentMapperDao.findCourseStudentNameAndPhoneByClassGroupId(classGroup.getId()));
+//            result.add(resultMap);
+//        }
+//        return result;
+    }
+
+    @Override
+    public List<MusicGroupPaymentCalender> getDefaultPaymentCalender(List<Integer> classGroupIds) {
+        if(classGroupIds == null || classGroupIds.size() == 0){
+            throw new BizException("参数校验失败");
+        }
+        //获取所选班级最大剩余课时
+        Map<String,Integer> map = MapUtil.convertIntegerMap(courseScheduleDao.findClassMaxCourseNumMap(classGroupIds));
+        //获取每个班级对应课程类型最后一节课
+        Set<String> courseTypes = map.keySet();
+        for (Integer classGroupId : classGroupIds) {
+            //获取当前班级剩余课次
+            Map<String,Integer> subCourseNumMap = MapUtil.convertIntegerMap(courseScheduleDao.querySubCourseNumMap(classGroupId));
+            for (String courseType : courseTypes) {
+                Integer currentNum = subCourseNumMap.get(courseType);
+                Integer maxNum = map.get(courseType);
+                //如果当前课程类型不需要新增缴费项目
+                if(currentNum != null && currentNum >= maxNum){
+                    continue;
+                }
+                MusicGroupOrganizationCourseSettingsDetail settingsDetail = musicGroupPaymentCalenderCourseSettingsService.getClassLastSetting(classGroupId,courseType);
+                settingsDetail.setCourseType(CourseScheduleType.valueOf(courseType));
+            }
+        }
+        //获取最后一节课现价,原价
+        //生成缴费项目
+        return null;
     }
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderCourseSettingsServiceImpl.java

@@ -48,4 +48,9 @@ public class MusicGroupPaymentCalenderCourseSettingsServiceImpl extends BaseServ
 		}
 		return result;
 	}
+
+	@Override
+	public MusicGroupOrganizationCourseSettingsDetail getClassLastSetting(Integer classGroupId, String courseType) {
+		return musicGroupPaymentCalenderCourseSettingsDao.getClassLastSetting(classGroupId,courseType);
+	}
 }

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

@@ -3356,6 +3356,16 @@
         WHERE cs.class_group_id_ = #{classGroupId} AND CONCAT(cs.class_date_," ",cs.start_class_time_) > NOW()
         GROUP BY cs.type_
     </select>
+    <select id="findClassMaxCourseNumMap" resultType="java.util.Map">
+        SELECT c.type_ 'key',MAX(c.subCourseNum) 'vslue' FROM (SELECT cs.type_,COUNT(cs.id_) subCourseNum FROM course_schedule cs
+        WHERE cs.class_group_id_ IN
+        <foreach collection="classGroupIds" open="(" close=")" separator="," item="item">
+            #{item}
+        </foreach>
+        AND CONCAT(cs.class_date_," ",cs.start_class_time_) > NOW()
+        GROUP BY cs.class_group_id_,cs.type_)c
+        GROUP BY c.type_
+    </select>
     <select id="getLock" resultMap="CourseSchedule">
         SELECT * FROM course_schedule WHERE id_ = #{courseId} FOR UPDATE
     </select>

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderCourseSettingsMapper.xml

@@ -154,4 +154,11 @@
 		WHERE mgpc.batch_no_ = #{batchNo}
 		GROUP BY mgpccs.course_type_
 	</select>
+    <select id="getClassLastSetting" resultMap="MusicGroupPaymentCalenderCourseSettings">
+		SELECT cssp.original_price_,cssp.expect_price_,0 is_student_optional_ 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}
+		ORDER BY cs.class_date_,cs.start_class_time_ DESC
+		LIMIT 1
+	</select>
 </mapper>

+ 3 - 1
mec-im/src/main/java/com/ym/controller/RoomController.java

@@ -36,7 +36,9 @@ public class RoomController{
     }
 
     @RequestMapping(value = "/leave", method = RequestMethod.POST)
-    public Object leaveRoom(@RequestBody ReqUserData data){
+    public Object leaveRoom(@RequestBody RoomStatusNotify roomStatusNotify) throws Exception {
+        //成员退出
+        roomService.leaveRoomSuccess(roomStatusNotify.getRoomId(), roomStatusNotify.getUserId());
         return new BaseResponse<>();
     }
 

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

@@ -47,6 +47,7 @@ import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 import static com.ym.pojo.RoleEnum.RoleStudent;
@@ -272,7 +273,11 @@ public class RoomServiceImpl implements RoomService {
             redisTemplate.delete(joinSuccessKey);
             return;
         }
-        redisTemplate.opsForValue().set("joinRoomSuccess"+ roomId + userId,roomId);
+        String leaveSuccessKey = "leaveRoomSuccess"+ roomId + userId;
+        if(redisTemplate.hasKey(leaveSuccessKey)){
+            redisTemplate.delete(leaveSuccessKey);
+        }
+        redisTemplate.opsForValue().set(joinSuccessKey,roomId,2l,TimeUnit.SECONDS);
         log.info("joinRoomSuccess : roomId={}, userId={}", roomId, userId);
 
         RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
@@ -381,10 +386,17 @@ public class RoomServiceImpl implements RoomService {
         if(roomMember == null){
             return ;
         }
+        String leaveSuccessKey = "leaveRoomSuccess"+ roomId + userId;
+        if(redisTemplate.hasKey(leaveSuccessKey)){
+            redisTemplate.delete(leaveSuccessKey);
+            return;
+        }
         String joinSuccessKey = "joinRoomSuccess"+ roomId + userId;
         if(redisTemplate.hasKey(joinSuccessKey)){
             redisTemplate.delete(joinSuccessKey);
         }
+        redisTemplate.opsForValue().set(leaveSuccessKey,roomId,2,TimeUnit.SECONDS);
+        //记录
         log.info("leaveRoomSuccess: roomId={}, userId={}", roomId,userId);
         RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
         Integer firstCourseId = Integer.parseInt(roomId.substring(1));

+ 12 - 5
mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

@@ -334,10 +334,17 @@ public class ClassGroupController extends BaseController {
         return succeed(classGroupService.queryRemainCourseTypeDuration(classGroupIdList));
     }
 
-    @ApiOperation(value = "进行中乐团-修改-班级详情-学员班级调整详情")
-    @GetMapping("/studentClassAuditDetail")
-    @PreAuthorize("@pcs.hasPermissions('classGroup/studentClassAuditDetail')")
-    public HttpResponseResult studentClassAuditDetail(String musicGroupId){
-        return succeed(classGroupService.studentClassAuditDetail(musicGroupId));
+    @ApiOperation(value = "进行中乐团-修改-班级详情-学员班级调整-班级剩余课次")
+    @GetMapping("/classGroupSubCourseNum")
+    @PreAuthorize("@pcs.hasPermissions('classGroup/classGroupSubCourseNum')")
+    public HttpResponseResult classGroupSubCourseNum(Integer classGroupId){
+        return succeed(classGroupService.classGroupSubCourseNum(classGroupId));
+    }
+
+    @ApiOperation(value = "进行中乐团-修改-班级详情-学员班级调整-生成默认缴费信息")
+    @GetMapping("/getDefaultPaymentCalender")
+    @PreAuthorize("@pcs.hasPermissions('classGroup/getDefaultPaymentCalender')")
+    public HttpResponseResult studentClassAuditDetail(List<Integer> classGroupIds){
+        return succeed(classGroupService.getDefaultPaymentCalender(classGroupIds));
     }
 }