소스 검색

bugfix:退团

yonge 5 년 전
부모
커밋
7e1235fe5a

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

@@ -97,7 +97,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @param userId: 用户编号
      * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
      */
-    int deleteMusicGroupCourseSchedulesWithStudent(@Param("courseScheduleIds") List<Integer> courseScheduleIds,
+    int deleteMusicGroupCourseSchedulesWithStudent(@Param("courseScheduleIds") List<Long> courseScheduleIds,
                                                                   @Param("userId") Integer userId);
 
     /**

+ 13 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupStudentFeeDao.java

@@ -18,6 +18,14 @@ public interface MusicGroupStudentFeeDao extends BaseDAO<Long, MusicGroupStudent
 	MusicGroupStudentFee findByUser(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId);
 
 	/**
+	 * 删除缴费记录
+	 * @param userId
+	 * @param musicGroupId
+	 * @return
+	 */
+	int deleteByUserIdAndMusicGroupId(@Param("userId") Integer userId, @Param("musicGroupId") String musicGroupId);
+
+	/**
 	 * @describe 根据学生编号和乐团编号更新旷课次数
 	 * @author Joburgess
 	 * @date 2019/10/19
@@ -57,14 +65,14 @@ public interface MusicGroupStudentFeeDao extends BaseDAO<Long, MusicGroupStudent
 	 * @return java.util.List<java.util.Map<java.lang.Long,java.lang.Integer>>
 	 * @describe 统计乐团下连续旷课超过次数的学生人数
 	 */
-	List<Map<Long,Integer>> countContinuosAbsenteeismStudentNum(@Param("musicGroupIds") List<String> musicGroupIds);
+	List<Map<Long, Integer>> countContinuosAbsenteeismStudentNum(@Param("musicGroupIds") List<String> musicGroupIds);
 
 	/**
 	 * 根据乐团编号列表和学员编号获取学员缴费状态
 	 * @param userId
 	 * @return
 	 */
-	List<Map<String,String>> queryUserPaymentStatus(@Param("userId") Integer userId, @Param("musicGroupIds") String musicGroupIds);
+	List<Map<String, String>> queryUserPaymentStatus(@Param("userId") Integer userId, @Param("musicGroupIds") String musicGroupIds);
 
 	/**
 	 * @describe 获取学生对应乐团下的连续旷课次数
@@ -74,13 +82,13 @@ public interface MusicGroupStudentFeeDao extends BaseDAO<Long, MusicGroupStudent
 	 * @param userIds: 用户编号列表
 	 * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
 	 */
-	List<Map<Integer,Integer>> findContinuousAbsenteeismTimesByUsersAndMusicGroup(@Param("musicGroupId") String musicGroupId,
-																				  @Param("userIds") List<Integer> userIds);
+	List<Map<Integer, Integer>> findContinuousAbsenteeismTimesByUsersAndMusicGroup(@Param("musicGroupId") String musicGroupId,
+			@Param("userIds") List<Integer> userIds);
 
 	/**
 	 * 获取当前乐团未缴费的学员人数
 	 * @param musicGroupId
 	 * @return
 	 */
-    Integer countStudentNoPayNum(String musicGroupId);
+	Integer countStudentNoPayNum(String musicGroupId);
 }

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

@@ -296,9 +296,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 courseScheduleDao.deleteCourseSchedulesByClassGroupIds(courseScheduleIds);
             }
 
+			//删除融云群
+			List<ImGroupModel> imGroupModels = new ArrayList<ImGroupModel>();
             for (ClassGroup classGroup : classGroups) {
-                imFeignService.groupDismiss(new ImGroupModel(classGroup.getId().toString(), null, classGroup.getName()));
+            	imGroupModels.add(new ImGroupModel(classGroup.getId().toString()));
             }
+			imFeignService.groupBatchDismiss(imGroupModels);
         }
 
         List<CourseSchedule> courseScheduleList = new ArrayList<>();

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

@@ -141,8 +141,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		}
 		List<CourseSchedule> musicGroupCourseSchedules = courseScheduleDao.findMusicGroupCourseSchedulesWithStudent(musicGroupId,groupType.getCode(), CourseStatusEnum.NOT_START.getCode(),userId);
 		if(!CollectionUtils.isEmpty(musicGroupCourseSchedules)){
-            List<Integer> courseScheduleIds = musicGroupCourseSchedules.stream()
-                    .map(courseSchedule -> courseSchedule.getId().intValue())
+            List<Long> courseScheduleIds = musicGroupCourseSchedules.stream()
+                    .map(courseSchedule -> courseSchedule.getId())
                     .collect(Collectors.toList());
             courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudent(courseScheduleIds,userId);
 		}

+ 127 - 21
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1,40 +1,122 @@
 package com.ym.mec.biz.service.impl;
 
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+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.stream.Collectors;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
 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.auth.api.entity.SysUserRole;
-import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.dao.ChargeTypeDao;
+import com.ym.mec.biz.dal.dao.ClassGroupDao;
+import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
+import com.ym.mec.biz.dal.dao.CooperationOrganDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+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.MusicGroupPaymentEntitiesDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPurchaseListDao;
+import com.ym.mec.biz.dal.dao.MusicGroupQuitDao;
+import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
+import com.ym.mec.biz.dal.dao.MusicGroupSubjectGoodsGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
+import com.ym.mec.biz.dal.dao.OrganizationDao;
+import com.ym.mec.biz.dal.dao.SchoolDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
+import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
+import com.ym.mec.biz.dal.dto.MusicCardDto;
+import com.ym.mec.biz.dal.dto.RegisterPayDto;
+import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
+import com.ym.mec.biz.dal.dto.SubjectRegisterDto;
+import com.ym.mec.biz.dal.dto.UpdateExpectedNumDto;
+import com.ym.mec.biz.dal.entity.ApprovalStatus;
+import com.ym.mec.biz.dal.entity.ChargeType;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
+import com.ym.mec.biz.dal.entity.MusicGroupQuit;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
-import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
+import com.ym.mec.biz.dal.entity.Organization;
+import com.ym.mec.biz.dal.entity.School;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.entity.SysUserCashAccount;
+import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
+import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
+import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.GoodsType;
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.OrderTypeEnum;
+import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
+import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
-import com.ym.mec.biz.service.*;
+import com.ym.mec.biz.service.ClassGroupService;
+import com.ym.mec.biz.service.CourseScheduleService;
+import com.ym.mec.biz.service.GoodsService;
+import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
+import com.ym.mec.biz.service.MusicGroupService;
+import com.ym.mec.biz.service.MusicGroupSubjectGoodsGroupService;
+import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
+import com.ym.mec.biz.service.PayService;
+import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
+import com.ym.mec.biz.service.StudentPaymentOrderService;
+import com.ym.mec.biz.service.StudentRegistrationService;
+import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.SysMessageService;
+import com.ym.mec.biz.service.SysUserCashAccountDetailService;
+import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupMember;
+import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.im.ImFeignService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
 
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.stream.Collectors;
-
 @Service
 public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> implements MusicGroupService {
 
@@ -97,6 +179,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
     @Autowired
     private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
+    
+    @Autowired
+    private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
 
     @Autowired
     private CooperationOrganDao cooperationOrganDao;
@@ -137,6 +222,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     @Autowired
     private GoodsService goodsService;
     
+    @Autowired
+    private ImFeignService imFeignService;
+    
     private SimpleDateFormat sdf_ymd = new SimpleDateFormat("yyyy-MM-dd");
     
     private SimpleDateFormat sdf_hms=new SimpleDateFormat("HH:mm:ss");
@@ -936,14 +1024,32 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 			//更新学员在班级的状态
 			classGroupStudentMapperDao.deleteStudentByMusicGroupId(musicGroupId, userId);
 			
-			//更新班级人数
 			List<Integer> classGroupIdList = classGroupStudentMapperDao.queryClassGroupIdList(musicGroupId, userId, GroupType.MUSIC);
 			if (classGroupIdList != null && classGroupIdList.size() > 0) {
+				//更新班级人数
 				classGroupDao.batchUpdateStudentNumMinusOne(classGroupIdList);
+
+				//删除融云群
+				List<ImGroupModel> imGroupModels = new ArrayList<ImGroupModel>();
+				for (Integer classGroupId : classGroupIdList) {
+					imGroupModels.add(new ImGroupModel(classGroupId + ""));
+				}
+				imFeignService.groupBatchDismiss(imGroupModels);
+			}
+			
+			List<CourseSchedule> musicGroupCourseSchedules = courseScheduleDao.findMusicGroupCourseSchedulesWithStudent(musicGroupId,GroupType.MUSIC.getCode(), CourseStatusEnum.NOT_START.getCode(),userId);
+			if(!CollectionUtils.isEmpty(musicGroupCourseSchedules)){
+				List<Long> courseScheduleIds = musicGroupCourseSchedules.stream().map(courseSchedule -> courseSchedule.getId()).collect(Collectors.toList());
+
+				// 删除未上课
+	            courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudent(courseScheduleIds,userId);
+				
+				//删除学生缴费表
+	            courseScheduleStudentPaymentDao.deleteByCourseSchedule(courseScheduleIds);
 			}
 			
-			// 删除未上课
-			courseScheduleService.batchDeleteMusicGroupCourseWithStudent(musicGroupId, userId, GroupType.MUSIC);
+			//删除续费周期
+			musicGroupStudentFeeDao.deleteByUserIdAndMusicGroupId(userId, musicGroupId);
 			
 			// 退团
 			studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupStudentFeeMapper.xml

@@ -91,6 +91,10 @@
     <delete id="delete">
 		DELETE FROM music_group_student_fee_ WHERE id_ = #{id} 
 	</delete>
+	
+    <delete id="deleteByUserIdAndMusicGroupId" parameterType="map">
+		DELETE FROM music_group_student_fee_ WHERE userId = #{userId} and music_group_id_ = #{musicGroupId}
+	</delete>
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="MusicGroupStudentFee" parameterType="map">

+ 4 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImGroupModel.java

@@ -16,6 +16,10 @@ public class ImGroupModel {
     public ImGroupModel() {
     }
 
+    public ImGroupModel(String id) {
+        this.id = id;
+    }
+
     public ImGroupModel(String id, String name) {
         this.id = id;
         this.name = name;