Преглед изворни кода

Merge remote-tracking branch 'origin/master'

Joburgess пре 5 година
родитељ
комит
5a8c03dc4b
21 измењених фајлова са 213 додато и 82 уклоњено
  1. 11 3
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUser.java
  2. 2 2
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/enums/UserLockFlag.java
  3. 1 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/handler/AuthenticationFailureListener.java
  4. 2 2
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/service/DefaultUserDetailsService.java
  5. 1 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserLoginServiceImpl.java
  6. 2 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java
  7. 3 3
      mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  9. 13 5
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupStudentFeeDao.java
  10. 20 24
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java
  11. 9 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java
  12. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  13. 127 21
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  14. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  15. 1 1
      mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml
  16. 4 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupStudentFeeMapper.xml
  17. 4 4
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  18. 2 2
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  19. 2 2
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  20. 4 0
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImGroupModel.java
  21. 1 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java

+ 11 - 3
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUser.java

@@ -60,7 +60,7 @@ public class SysUser implements Serializable{
 
 	/** 0-正常,9-锁定 */
 	@ApiModelProperty(value = "0-正常,9-锁定",required = false)
-	private UserLockFlag lockFlag;
+	private Integer lockFlag;
 
 	/** 0-正常,1-删除 */
 	@ApiModelProperty(value = "0-正常,1-删除",required = false)
@@ -223,14 +223,22 @@ public class SysUser implements Serializable{
 		return this.updateTime;
 	}
 
-	public UserLockFlag getLockFlag() {
+	public Integer getLockFlag() {
 		return lockFlag;
 	}
 
-	public void setLockFlag(UserLockFlag lockFlag) {
+	public void setLockFlag(Integer lockFlag) {
 		this.lockFlag = lockFlag;
 	}
 
+	public Boolean getSuperAdmin() {
+		return isSuperAdmin;
+	}
+
+	public void setSuperAdmin(Boolean superAdmin) {
+		isSuperAdmin = superAdmin;
+	}
+
 	public YesOrNoEnum getDelFlag() {
 		return delFlag;
 	}

+ 2 - 2
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/enums/UserLockFlag.java

@@ -9,11 +9,11 @@ import com.ym.mec.common.enums.BaseEnum;
  */
 public enum UserLockFlag implements BaseEnum<Integer, UserLockFlag> {
 
-	NORMAL(0, "正常"), CANCELLED(1, "冻结"), LOCKED(9, "锁定");
+	NORMAL(0, "正常"), LOCKED(9, "锁定"), CANCELLED(1, "冻结");
 
 	private int code;
 
-	private UserLockFlag(int code, String remark) {
+	UserLockFlag(int code, String remark) {
 		this.code = code;
 		this.remark = remark;
 	}

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/handler/AuthenticationFailureListener.java

@@ -61,7 +61,7 @@ public class AuthenticationFailureListener implements ApplicationListener<Authen
                 if(userLogin.getFailCount() >= 5){
                     userLogin.setLockTime(30);
                     userLogin.setLockDate(date);
-                    sysUser.setLockFlag(UserLockFlag.LOCKED);
+                    sysUser.setLockFlag(9);
                     sysUser.setUpdateTime(date);
                     sysUserService.update(sysUser);
                 }

+ 2 - 2
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/service/DefaultUserDetailsService.java

@@ -51,7 +51,7 @@ public class DefaultUserDetailsService implements UserDetailsService {
 		}
 		if (userInfo == null) {
 			throw new UsernameNotFoundException("账户不存在");
-		} else if (userInfo.getSysUser().getLockFlag() == UserLockFlag.LOCKED) {
+		} else if (userInfo.getSysUser().getLockFlag() == 9) {
 			throw new LockedException("账户被锁定");
 		}
 
@@ -68,7 +68,7 @@ public class DefaultUserDetailsService implements UserDetailsService {
 
 		SysUser sysUser = userInfo.getSysUser();
 
-		return new AuthUser(sysUser.getId(), sysUser.getOrganId(), username, BCRYPT + sysUser.getPassword(), sysUser.getLockFlag() == UserLockFlag.NORMAL,
+		return new AuthUser(sysUser.getId(), sysUser.getOrganId(), username, BCRYPT + sysUser.getPassword(), sysUser.getLockFlag() == 0,
 				true, true, true, authorities);
 	}
 

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserLoginServiceImpl.java

@@ -60,7 +60,7 @@ public class SysUserLoginServiceImpl extends BaseServiceImpl<Integer, SysUserLog
 						userLogin.setLockTime(0);
 						update(userLogin);
 
-						user.setLockFlag(UserLockFlag.NORMAL);
+						user.setLockFlag(0);
 						user.setUpdateTime(currentDate);
 						sysUserDao.update(user);
 					}

+ 2 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java

@@ -59,7 +59,8 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 
 	@Override
 	public SysUser queryByPhone(String phone) {
-		return sysUserDao.queryByPhone(phone);
+		SysUser sysUser = sysUserDao.queryByPhone(phone);
+		return sysUser;
 	}
 
 	@Override

+ 3 - 3
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -17,7 +17,7 @@
         <result column="organ_id_" property="organId"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
-        <result column="lock_flag_" property="lockFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="lock_flag_" property="lockFlag"/>
         <result column="del_flag_" property="delFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="wx_openid_" property="wxOpenid"/>
         <result column="qq_openid_" property="qqOpenid"/>
@@ -108,7 +108,7 @@
                 update_time_ = NOW(),
             </if>
             <if test="lockFlag != null">
-                lock_flag_ = #{lockFlag, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+                lock_flag_ = #{lockFlag},
             </if>
             <if test="birthdate != null">
                 birthdate_ = #{birthdate},
@@ -186,7 +186,7 @@
     </select>
     
     <select id="queryByStatus" resultMap="SysUser">
-        select * from sys_user where lock_flag_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        select * from sys_user where lock_flag_ = #{status}
     </select>
     <select id="getOrganName" resultType="java.lang.String">
         SELECT GROUP_CONCAT(name_) FROM organization WHERE FIND_IN_SET(id_,#{organId})

+ 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);
 }

+ 20 - 24
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java

@@ -49,7 +49,7 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
     @Override
     public ClassGroupStudentMapper findClassStudentMapperByUserIdAndClassGroupId(Integer userId, Integer classGroupId) {
-        return classGroupStudentMapperDao.findClassStudentMapperByUserIdAndClassGroupId(userId, classGroupId,"NORMAL");
+        return classGroupStudentMapperDao.findClassStudentMapperByUserIdAndClassGroupId(userId, classGroupId, "NORMAL");
     }
 
     @Override
@@ -153,26 +153,22 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
         Iterator<String> iterator = userIdStrSet.iterator();
         while (iterator.hasNext()) {
-        	Integer userId = Integer.parseInt(iterator.next());
+            Integer userId = Integer.parseInt(iterator.next());
             List<ClassGroupStudentMapper> highClassGroupHasUser = classGroupStudentMapperDao.findHighClassGroupHasUser(classGroup.getMusicGroupId(), userId, classGroup.getType());
             if (!classGroup.getType().equals(ClassGroupTypeEnum.SNAP) && highClassGroupHasUser != null && highClassGroupHasUser.size() > 0) {
-            	iterator.remove();
+                iterator.remove();
                 continue;
             }
-            //校验是否存在历史记录
-            ClassGroupStudentMapper classGroupStudentMapper = classGroupStudentMapperDao.findClassStudentMapperByUserIdAndClassGroupId(userId, classGroupId, null);
-            if(classGroupStudentMapper != null){
-                classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
-            }else {
-                classGroupStudentMapper = new ClassGroupStudentMapper();
-                classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
-                classGroupStudentMapper.setClassGroupId(classGroupId);
-                classGroupStudentMapper.setUserId(userId);
-                classGroupStudentMapper.setCreateTime(nowDate);
-                classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
-                classGroupStudentMapper.setGroupType(GroupType.MUSIC);
-                classGroupStudentMappers.add(classGroupStudentMapper);
-            }
+            
+            ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
+            classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
+            classGroupStudentMapper.setClassGroupId(classGroupId);
+            classGroupStudentMapper.setUserId(userId);
+            classGroupStudentMapper.setCreateTime(nowDate);
+            classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
+            classGroupStudentMapper.setGroupType(GroupType.MUSIC);
+            classGroupStudentMappers.add(classGroupStudentMapper);
+
             if (classGroup.getType().equals(ClassGroupTypeEnum.NORMAL)) {
                 StudentRegistration studentRegistration = studentRegistrationService.queryByUserIdAndMusicGroupId(userId, classGroup.getMusicGroupId());
                 studentRegistration.setClassGroupId(classGroupId);
@@ -180,9 +176,9 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
             }
             imGroupMemberList.add(new ImGroupMember(userId.toString()));
         }
-		if (classGroupStudentMappers.size() > 0) {
-			classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMappers);
-		}
+        if (classGroupStudentMappers.size() > 0) {
+            classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMappers);
+        }
 
         //添加进IM群组
         ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
@@ -214,8 +210,8 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
             courseScheduleStudentPaymentService.batchInsert(courseScheduleStudentPayments);
         }
         //乐团在合奏班
-        if(classGroupRelation != null){
-            addStudents(classGroupRelation.getClassGroupId(),userIdsStr,GroupType.MUSIC);
+        if (classGroupRelation != null) {
+            addStudents(classGroupRelation.getClassGroupId(), userIdsStr, GroupType.MUSIC);
         }
 
         return true;
@@ -223,12 +219,12 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
     @Override
     public Object queryHoliday(String year) throws IOException {
-        return HttpUtil.get(holidayUrl + year,null);
+        return HttpUtil.get(holidayUrl + year, null);
     }
 
     @Override
     public List<ClassGroupStudentMapper> findMusicGroupClassGroupByType(String musicGroupId, ClassGroupTypeEnum type) {
-        return classGroupStudentMapperDao.findMusicGroupClassGroupByType(musicGroupId,type);
+        return classGroupStudentMapperDao.findMusicGroupClassGroupByType(musicGroupId, type);
     }
 
     @Override

+ 9 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java

@@ -64,7 +64,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
         List<ClassGroup> classGroups = classGroupService.findClassGroupByIds(classGroupIds);
 
-        List<ClassGroupTeacherMapper> oldClassGroupTeacherMapper = classGroupTeacherMapperDao.getClassGroupTeacherMapper(classGroupTeacherMapperList,GroupType.MUSIC);
+        List<ClassGroupTeacherMapper> oldClassGroupTeacherMapper = classGroupTeacherMapperDao.getClassGroupTeacherMapper(classGroupTeacherMapperList, GroupType.MUSIC);
 
         for (ClassGroup classGroup : classGroups) {
             imGroupMemberList.clear();
@@ -172,7 +172,10 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                 if (classGroupNoStartCourseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
                     //课程时长与结算单位时长占比
                     classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(45), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
-                    baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
+                    baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
+                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
+                        baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
+                    }
                 }
 
                 salary = baseSalary.multiply(classTimeDuty).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
@@ -197,13 +200,13 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
     @Override
     public void createMusicGroupTeacherMapper(List<CourseSchedule> courseSchedules, String musicGroupId) {
-        Date date=new Date();
+        Date date = new Date();
         MusicGroup musicGroup = musicGroupService.get(musicGroupId);
         //老师默认的课酬
 //        Map<String, TeacherDefaultMusicGroupSalary> teacherDefaultSalary = new HashMap<>();
         for (CourseSchedule classGroupNoStartCourseSchedule : courseSchedules) {
             List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
-            List<TeacherAttendance> teacherAttendances=new ArrayList<>();
+            List<TeacherAttendance> teacherAttendances = new ArrayList<>();
             //课时长度
             int duration = DateUtil.minutesBetween(classGroupNoStartCourseSchedule.getStartClassTime(), classGroupNoStartCourseSchedule.getEndClassTime());
             List<ClassGroupTeacherMapper> byClassGroup = classGroupTeacherMapperDao.findByClassGroup(classGroupNoStartCourseSchedule.getClassGroupId());
@@ -213,7 +216,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                 }
                 BigDecimal salary;
 
-                TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary=teacherDefaultMusicGroupSalaryDao.findByTeacherAndCourseType(classGroupTeacherMapper.getUserId(),
+                TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalary = teacherDefaultMusicGroupSalaryDao.findByTeacherAndCourseType(classGroupTeacherMapper.getUserId(),
                         classGroupNoStartCourseSchedule.getType().getCode());
 
                 if (teacherDefaultMusicGroupSalary == null) {
@@ -264,7 +267,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                 courseScheduleTeacherSalary.setClassGroupId(classGroupTeacherMapper.getClassGroupId());
                 courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
 
-                TeacherAttendance teacherAttendance=new TeacherAttendance();
+                TeacherAttendance teacherAttendance = new TeacherAttendance();
                 teacherAttendance.setMusicGroupId(courseScheduleTeacherSalary.getMusicGroupId());
                 teacherAttendance.setTeacherId(classGroupTeacherMapper.getUserId());
                 teacherAttendance.setClassGroupId(classGroupTeacherMapper.getClassGroupId());

+ 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);

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

@@ -262,7 +262,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             sysUser.setPhone(studentRegistration.getParentsPhone());
             sysUser.setCreateTime(date);
             sysUser.setUpdateTime(date);
-            sysUser.setLockFlag(UserLockFlag.NORMAL);
+            sysUser.setLockFlag(0);
             sysUser.setDelFlag(com.ym.mec.auth.api.enums.YesOrNoEnum.NO);
             sysUser.setUserType(SysUserType.STUDENT);
             sysUser.setGender(studentRegistration.getGender());

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

@@ -33,7 +33,7 @@
         <result column="organ_id_" property="organId"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
-        <result column="lock_flag_" property="lockFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="lock_flag_" property="lockFlag"/>
         <result column="del_flag_" property="delFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="wx_openid_" property="wxOpenid"/>
         <result column="qq_openid_" property="qqOpenid"/>

+ 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 - 4
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -57,7 +57,7 @@
         UPDATE sys_user
         <set>
             <if test="delFlag != null">
-                del_flag_ = #{delFlag, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+                del_flag_ = #{delFlag},
             </if>
             <if test="wxOpenid != null">
                 wx_openid_ = #{wxOpenid},
@@ -84,7 +84,7 @@
                 update_time_ = NOW(),
             </if>
             <if test="lockFlag != null">
-                lock_flag_ = #{lockFlag, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+                lock_flag_ = #{lockFlag},
             </if>
             <if test="birthdate != null">
                 birthdate_ = #{birthdate},
@@ -489,7 +489,7 @@
         LEFT JOIN vip_group vg ON cg.music_group_id_ = vg.id_
         LEFT JOIN class_group_teacher_mapper cgtm ON cgtm.class_group_id_ = cg.id_
         LEFT JOIN vip_group_activity vgc ON vgc.id_ = vg.vip_group_activity_id_
-        WHERE cg.group_type_ = 'VIP' AND cgtm.teacher_role_ = 'BISHOP' AND cgsm.status != 'QUIT' AND cgsm.user_id_ = #{studentId}
+        WHERE cg.group_type_ = 'VIP' AND cgtm.teacher_role_ = 'BISHOP' AND cgsm.status_ != 'QUIT' AND cgsm.user_id_ = #{studentId}
         <if test="vipGroupName != null">
             AND vg.name_ LIKE CONCAT('%',#{vipGroupName},'%')
         </if>
@@ -504,7 +504,7 @@
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
         LEFT JOIN vip_group vg ON cg.music_group_id_ = vg.id_
         LEFT JOIN class_group_teacher_mapper cgtm ON cgtm.class_group_id_ = cg.id_
-        WHERE cg.group_type_ = 'VIP' AND cgtm.teacher_role_ = 'BISHOP' AND cgsm.status != 'QUIT' AND cgsm.user_id_ = #{studentId}
+        WHERE cg.group_type_ = 'VIP' AND cgtm.teacher_role_ = 'BISHOP' AND cgsm.status_ != 'QUIT' AND cgsm.user_id_ = #{studentId}
         <if test="vipGroupName != null">
             AND vg.name_ LIKE CONCAT('%',#{vipGroupName},'%')
         </if>

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

@@ -46,7 +46,7 @@
         <result column="organ_id_" property="organId"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
-        <result column="lock_flag_" property="lockFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="lock_flag_" property="lockFlag"/>
         <result column="del_flag_" property="delFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="wx_openid_" property="wxOpenid"/>
         <result column="qq_openid_" property="qqOpenid"/>
@@ -363,7 +363,7 @@
         <result column="organ_id_" property="organId"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
-        <result column="lock_flag_" property="lockFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="lock_flag_" property="lockFlag"/>
         <result column="del_flag_" property="delFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="wx_openid_" property="wxOpenid"/>
         <result column="qq_openid_" property="qqOpenid"/>

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

@@ -36,7 +36,7 @@
         <result column="salt_" property="salt"/>
         <result column="phone_" property="phone"/>
         <result column="avatar_" property="avatar"/>
-        <result column="lock_flag_" property="lockFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="lock_flag_" property="lockFlag"/>
         <result column="del_flag_" property="delFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="wx_openid_" property="wxOpenid"/>
         <result column="qq_openid_" property="qqOpenid"/>
@@ -183,7 +183,7 @@
                 update_time_ = NOW(),
             </if>
             <if test="lockFlag != null">
-                lock_flag_ = #{lockFlag, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+                lock_flag_ = #{lockFlag},
             </if>
             <if test="birthdate != null">
                 birthdate_ = #{birthdate},

+ 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;

+ 1 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -4,6 +4,7 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.entity.ClassGroup;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.entity.VipGroup;
 import com.ym.mec.biz.dal.page.*;