Browse Source

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

周箭河 5 years ago
parent
commit
af800a9e33
24 changed files with 291 additions and 236 deletions
  1. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  2. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  3. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupStudentFeeDao.java
  4. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentApplyRefundsDao.java
  5. 44 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentAddDto.java
  6. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ClassGroupStudentMapper.java
  7. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupStudentMapperService.java
  9. 9 9
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  10. 17 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  11. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java
  12. 13 16
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  13. 119 172
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  14. 13 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  15. 3 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  16. 4 2
      mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml
  17. 8 8
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  18. 1 1
      mec-biz/src/main/resources/config/mybatis/MusicGroupStudentFeeMapper.xml
  19. 17 1
      mec-biz/src/main/resources/config/mybatis/StudentApplyRefundsMapper.xml
  20. 1 1
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  21. 2 0
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  22. 0 3
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherController.java
  23. 4 2
      mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java
  24. 0 1
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupController.java

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

@@ -37,7 +37,7 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @params [musicGroupId]
      * @describe 获取所有班级
      */
-    List<ClassGroup> findAllClassGroupByMusicGroup(@Param("musicGroupId") String musicGroupId);
+    List<ClassGroup> findAllClassGroupByMusicGroup(@Param("musicGroupId") String musicGroupId,@Param("classGroupType") String classGroupType);
 
     /**
      * 根据合奏班ID查询该合奏班下的子班级

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

@@ -711,4 +711,6 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @param schoolId
      */
     void updateCourseScheduleSchool(@Param("groupType") String groupType,@Param("musicGroupId") String musicGroupId,@Param("schoolId") Integer schoolId);
+
+    int countCourseScheduleByMusicGroupId(@Param("musicGroupId") String musicGroupId);
 }

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

@@ -118,5 +118,6 @@ public interface MusicGroupStudentFeeDao extends BaseDAO<Long, MusicGroupStudent
 	 * @param musicGroupStudentFees
 	 * @param nextPaymentDate
 	 */
-	void batchInsert(@Param("musicGroupStudentFees") List<MusicGroupStudentFee> musicGroupStudentFees, @Param("nextPaymentDate") Date nextPaymentDate);
+	void batchInsert(@Param("musicGroupStudentFees") List<MusicGroupStudentFee> musicGroupStudentFees
+			, @Param("nextPaymentDate") Date nextPaymentDate, @Param("paymentStatus") String paymentStatus);
 }

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentApplyRefundsDao.java

@@ -29,5 +29,18 @@ public interface StudentApplyRefundsDao extends BaseDAO<Long, StudentApplyRefund
      */
     List<StudentApplyRefunds> findByGroupAndType(@Param("groupId") String groupId,
                                                  @Param("groupType") String groupType);
+
+    /**
+     * @describe 获取用户退课中的申请
+     * @author Joburgess
+     * @date 2019/12/9
+     * @param groupId: 乐团或vip课编号
+     * @param groupType: 乐团类型
+     * @param userId: 用户编号
+     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentApplyRefunds>
+     */
+    List<StudentApplyRefunds> findByGroupAndUser(@Param("groupId") String groupId,
+                                                 @Param("groupType") String groupType,
+                                                 @Param("userId") Integer userId);
 	
 }

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentAddDto.java

@@ -15,6 +15,50 @@ public class StudentAddDto{
     @ApiModelProperty(value = "课程费用", required = false)
     private BigDecimal courseFee;
 
+    @ApiModelProperty(value = "单技班编号", required = false)
+    private Integer signClassId;
+
+    @ApiModelProperty(value = "合奏班编号", required = false)
+    private Integer mixClassId;
+
+    @ApiModelProperty(value = "零时班编号", required = false)
+    private String snapClassIds;
+
+    @ApiModelProperty(value = "基础技能训练班", required = false)
+    private Integer highClassId;
+
+    public Integer getSignClassId() {
+        return signClassId;
+    }
+
+    public void setSignClassId(Integer signClassId) {
+        this.signClassId = signClassId;
+    }
+
+    public Integer getMixClassId() {
+        return mixClassId;
+    }
+
+    public void setMixClassId(Integer mixClassId) {
+        this.mixClassId = mixClassId;
+    }
+
+    public String getSnapClassIds() {
+        return snapClassIds;
+    }
+
+    public void setSnapClassIds(String snapClassIds) {
+        this.snapClassIds = snapClassIds;
+    }
+
+    public Integer getHighClassId() {
+        return highClassId;
+    }
+
+    public void setHighClassId(Integer highClassId) {
+        this.highClassId = highClassId;
+    }
+
     @ApiModelProperty(value = "订单详情", required = false)
     private List<StudentPaymentOrderDetail> studentPaymentOrderDetails;
 

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ClassGroupStudentMapper.java

@@ -7,6 +7,8 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
 import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 
+import java.util.Date;
+
 /**
  * 对应数据库表(class_group_student_mapper):
  */
@@ -38,6 +40,16 @@ public class ClassGroupStudentMapper {
 
 	private String userName;
 
+	private Date updateTime;
+
+	public Date getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(Date updateTime) {
+		this.updateTime = updateTime;
+	}
+
 	public String getUserName() {
 		return userName;
 	}

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

@@ -59,7 +59,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @return java.util.List<com.ym.mec.biz.dal.entity.ClassGroup>
      * @describe 获取乐团下所有班级
      */
-    List<ClassGroup> findAllClassGroupByMusicGroup(String musicGroupId);
+    List<ClassGroup> findAllClassGroupByMusicGroup(String musicGroupId,String type);
 
     /**
      * 添加单技班

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

@@ -18,7 +18,7 @@ public interface ClassGroupStudentMapperService extends BaseService<Long, ClassG
      * @param classGroupId
      * @return
      */
-    ClassGroupStudentMapper findClassStudentMapperByUserIdAndClassGroupId(Integer userId, Integer classGroupId);
+    ClassGroupStudentMapper findClassStudentMapperByUserIdAndClassGroupId(Integer userId, Integer classGroupId,String status);
 
     /**
      * 删除班级学生

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

@@ -1,19 +1,19 @@
 package com.ym.mec.biz.service;
 
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.dto.StudentAddDto;
+import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
+import com.ym.mec.biz.dal.dto.StudentFeeDetailDto;
+import com.ym.mec.biz.dal.dto.StudentInfo;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
-import org.apache.ibatis.annotations.Param;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
 
 public interface StudentRegistrationService extends BaseService<Long, StudentRegistration> {
 

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

@@ -143,8 +143,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public List<ClassGroup> findAllClassGroupByMusicGroup(String musicGroupId) {
-        return classGroupDao.findAllClassGroupByMusicGroup(musicGroupId);
+    public List<ClassGroup> findAllClassGroupByMusicGroup(String musicGroupId,String type) {
+        return classGroupDao.findAllClassGroupByMusicGroup(musicGroupId,type);
     }
 
     @Override
@@ -1131,7 +1131,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 courseSchedule.setTeachMode(TeachModeEnum.OFFLINE);
                 courseSchedule.setType(classGroup4MixDto.getCourseType());
                 courseSchedule.setGroupType(GroupType.MUSIC);
-                courseSchedule.setName(subjectNames + "-" + CourseSchedule.CourseScheduleType.SINGLE.getMsg());
+                if(classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MIX)){
+                    courseSchedule.setName(classGroup4MixDto.getCourseType().getMsg());
+                }else{
+                    courseSchedule.setName(subjectNames + "-" + CourseSchedule.CourseScheduleType.SINGLE.getMsg());
+                }
                 courseSchedule.setTeacherId(teacherId);
                 courseSchedule.setActualTeacherId(teacherId);
                 courseScheduleDao.insert(courseSchedule);
@@ -1328,7 +1332,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 courseSchedule.setTeachMode(TeachModeEnum.OFFLINE);
                 courseSchedule.setMusicGroupId(classGroup.getMusicGroupId());
                 courseSchedule.setType(classGroup4MixDto.getCourseType());
-                courseSchedule.setName(subjectNames + "-" + classGroup4MixDto.getCourseType().getMsg());
+                if(classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MIX)){
+                    courseSchedule.setName(classGroup4MixDto.getCourseType().getMsg());
+                }else{
+                    courseSchedule.setName(subjectNames + "-" + classGroup4MixDto.getCourseType().getMsg());
+                }
                 courseSchedule.setGroupType(GroupType.MUSIC);
                 courseSchedule.setTeacherId(teacherId);
                 courseSchedule.setActualTeacherId(teacherId);
@@ -1548,7 +1556,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 courseSchedule.setType(classGroup4MixDto.getCourseType());
                 courseSchedule.setGroupType(GroupType.MUSIC);
                 courseSchedule.setMusicGroupId(classGroup.getMusicGroupId());
-                courseSchedule.setName(subjectNames + "-" + classGroup4MixDto.getCourseType().getMsg());
+                if(classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.MIX)){
+                    courseSchedule.setName(classGroup4MixDto.getCourseType().getMsg());
+                }else{
+                    courseSchedule.setName(subjectNames + "-" + classGroup4MixDto.getCourseType().getMsg());
+                }
                 courseSchedule.setTeacherId(teacherId);
                 courseSchedule.setActualTeacherId(teacherId);
 

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

@@ -48,14 +48,14 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
     }
 
     @Override
-    public ClassGroupStudentMapper findClassStudentMapperByUserIdAndClassGroupId(Integer userId, Integer classGroupId) {
-        return classGroupStudentMapperDao.findClassStudentMapperByUserIdAndClassGroupId(userId, classGroupId, "NORMAL");
+    public ClassGroupStudentMapper findClassStudentMapperByUserIdAndClassGroupId(Integer userId, Integer classGroupId,String status) {
+        return classGroupStudentMapperDao.findClassStudentMapperByUserIdAndClassGroupId(userId, classGroupId, status);
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean delClassGroupStudent(Integer userId, Integer classGroupId) throws Exception {
-        ClassGroupStudentMapper classStudentMapper = findClassStudentMapperByUserIdAndClassGroupId(userId, classGroupId);
+        ClassGroupStudentMapper classStudentMapper = findClassStudentMapperByUserIdAndClassGroupId(userId, classGroupId,"NORMAL");
         if (classStudentMapper == null) {
             throw new Exception("班级学生不存在");
         }
@@ -94,7 +94,7 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean adjustClassGroup(Integer userId, Integer oldClassGroupId, Integer classGroupId) throws Exception {
-        ClassGroupStudentMapper classStudentMapper = findClassStudentMapperByUserIdAndClassGroupId(userId, oldClassGroupId);
+        ClassGroupStudentMapper classStudentMapper = findClassStudentMapperByUserIdAndClassGroupId(userId, oldClassGroupId,"NORMAL");
         if (classStudentMapper == null) {
             throw new Exception("原班级学生不存在");
         }

+ 13 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -318,7 +318,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             List<MusicGroupStudentFee> musicGroupStudentFees = musicGroupStudentFeeDao.initMusicGroupStudentFee(musicGroupId);
             if(musicGroupStudentFees != null && musicGroupStudentFees.size() > 0){
                 Date nextPaymentDate = musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId);
-                musicGroupStudentFeeDao.batchInsert(musicGroupStudentFees,nextPaymentDate);
+                musicGroupStudentFeeDao.batchInsert(musicGroupStudentFees,nextPaymentDate,"PAID_COMPLETED");
             }
             musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "跨团调整", sysUser.getId(),""));
         }
@@ -656,7 +656,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 List<MusicGroupStudentFee> musicGroupStudentFees = musicGroupStudentFeeDao.initMusicGroupStudentFee(musicGroupId);
                 if(musicGroupStudentFees != null && musicGroupStudentFees.size() > 0){
                     Date nextPaymentDate = musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId);
-                    musicGroupStudentFeeDao.batchInsert(musicGroupStudentFees,nextPaymentDate);
+                    musicGroupStudentFeeDao.batchInsert(musicGroupStudentFees,nextPaymentDate,"PAID_COMPLETED");
                 }
             }
             List<MusicGroupSubjectPlan> musicGroupSubjectPlans = subFeeSettingDto.getMusicGroupSubjectPlans();
@@ -699,10 +699,17 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             throw new Exception("采购清单未确认");
         }
         //课酬是否确认
-        if(classGroupService.checkSetSalary(musicGroupId) == false){
-        	throw new Exception("课酬未确认");
+        Integer courseScheduleNum = courseScheduleDao.countCourseScheduleByMusicGroupId(musicGroupId);
+        if(courseScheduleNum != null && courseScheduleNum > 0){
+            if(classGroupService.checkSetSalary(musicGroupId) == false){
+                throw new Exception("课酬未确认");
+            }
+        }
+        //生成学员费用表
+        List<MusicGroupStudentFee> musicGroupStudentFees = musicGroupStudentFeeDao.initMusicGroupStudentFee(musicGroupId);
+        if(musicGroupStudentFees != null && musicGroupStudentFees.size() > 0){
+            musicGroupStudentFeeDao.batchInsert(musicGroupStudentFees,musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId),"PAID_COMPLETED");
         }
-//        courseScheduleTeacherSalaryDao.queryCount();
         //记录操作日志
         musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId,"确认开团(筹备中 -> 进行中)",sysUser.getId(),""));
         musicGroup.setStatus(MusicGroupStatusEnum.PROGRESS);
@@ -711,16 +718,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         musicGroup.setGroupMemberNum(studentRegistrations == null?0:studentRegistrations.size());
         musicGroup.setBillStartDate(new Date());
         musicGroupDao.update(musicGroup);
-        //3.0发送该消息
-        /*if(new Integer(3).equals(musicGroup.getChargeTypeId())){
-            Map<Integer,String> studentMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(studentRegistrationDao.findIdMapByMusicGroupId(musicGroupId,2))),HashMap.class);
-            if(studentMap != null && studentMap.size() > 0){
-                String url = "http://mstudev.dayaedu.com/#/smallRegister?musicGroupId=" + musicGroupId;
-                String serverPhone = sysConfigDao.findConfigValue(SysConfigService.SERVER_PHONE);
-                sysMessageService.batchSendMessage(MessageSender.JIGUANG,MessageTypeEnum.SMS_BASICS_SKILL_APPLY_MESSAGE,
-                        studentMap,null,0,"5?" + url,musicGroup.getName(),HttpUtil.getSortUrl(url),serverPhone);
-            }
-        }*/
         //给老师发送乐团成立通知
         Map<Integer,String> map = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(musicGroupDao.queryTeacherIdMap(musicGroupId))),HashMap.class);
         if(map != null && map.size() > 0){
@@ -825,7 +822,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             for (String musicGroupId: musicGroupIds) {
                 musicGroupStudentFees = musicGroupStudentFeeDao.initMusicGroupStudentFee(musicGroupId);
                 if(musicGroupStudentFees != null && musicGroupStudentFees.size() > 0){
-                    musicGroupStudentFeeDao.batchInsert(musicGroupStudentFees,musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId));
+                    musicGroupStudentFeeDao.batchInsert(musicGroupStudentFees,musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId),"PAID_COMPLETED");
                 }
             }
         }

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

@@ -1,65 +1,19 @@
 package com.ym.mec.biz.service.impl;
 
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import javax.annotation.Resource;
-
-import com.ym.mec.biz.dal.enums.*;
-import com.ym.mec.biz.service.*;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
 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.auth.api.enums.SysUserType;
-import com.ym.mec.auth.api.enums.UserLockFlag;
-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.MusicGroupSubjectPlanDao;
-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.SysUserCashAccountDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.StudentAddDto;
 import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
 import com.ym.mec.biz.dal.dto.StudentFeeDetailDto;
 import com.ym.mec.biz.dal.dto.StudentInfo;
-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.CourseSchedule;
-import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
-import com.ym.mec.biz.dal.entity.Goods;
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
-import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
-import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
-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.Subject;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupMember;
 import com.ym.mec.common.entity.ImGroupModel;
@@ -74,6 +28,16 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 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.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, StudentRegistration> implements StudentRegistrationService {
@@ -512,6 +476,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         if (studentRegistration == null) {
             throw new Exception("参数校验失败");
         }
+        if(studentAddDto.getSignClassId() == null && studentAddDto.getMixClassId() == null){
+            throw new Exception("参数校验失败: 单技班或合奏班必填一项");
+        }
         String musicGroupId = studentRegistration.getMusicGroupId();
 
         StudentRegistration phoneAndMusicGroupId = studentRegistrationDao.getByPhoneAndMusicGroupId(musicGroupId, studentRegistration.getParentsPhone());
@@ -560,156 +527,134 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds, musicGroup.getOrganId() + ""), MessageTypeEnum.BACKSTAGE_MUSIC_GROUP_ADD_STUDENT, "", musicGroup.getName(), studentRegistration.getName());
             //增加报名学生数
             musicGroupSubjectPlanService.addApplyStudentNum(musicGroupId, studentRegistration.getSubjectId(), 1);
-            Integer classGroupId = studentRegistration.getClassGroupId();
-            if (classGroupId != null) {
-                ClassGroup classGroup = classGroupDao.get(classGroupId);
-                if (classGroup != null) {
-                    if (!classGroup.getMusicGroupId().equals(musicGroupId)) {
-                        throw new Exception("班级录入错误");
-                    } else {
-                        //修改实际学生人数
-                        classGroup.setStudentNum(classGroup.getStudentNum() + 1);
-                        classGroup.setUpdateTime(new Date());
-                        classGroupDao.update(classGroup);
-                    }
-                } else {
-                    throw new Exception("班级不存在");
-                }
-                //添加班级关联
-                addStudents(classGroup, userId);
-                Date date = new Date();
-                //保存乐团学生费用表
-                if (studentAddDto.getCourseFee() == null) {
-                    MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, studentRegistration.getActualSubjectId());
-                    studentAddDto.setCourseFee(musicOneSubjectClassPlan.getFee());
-                }
-                Date nextPaymentDate = musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId);
-                musicGroupStudentFeeDao.insert(new MusicGroupStudentFee(musicGroupId,
-                        userId, studentRegistration.getSubjectId(), studentAddDto.getCourseFee(),
-                        nextPaymentDate, studentAddDto.getTemporaryCourseFee()));
-                //生成订单
-                StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
-                studentPaymentOrder.setUserId(userId);
-                studentPaymentOrder.setGroupType(GroupType.MUSIC);
-                studentPaymentOrder.setType(OrderTypeEnum.APPLY);
-                studentPaymentOrder.setStatus(DealStatusEnum.WAIT_PAY);
-                studentPaymentOrder.setMusicGroupId(musicGroupId);
-                studentPaymentOrder.setClassGroupId(classGroupId);
-
-                //生成订单明细
-                List<StudentPaymentOrderDetail> studentPaymentOrderDetails = studentAddDto.getStudentPaymentOrderDetails();
-                if (studentPaymentOrderDetails == null) {
-                    studentPaymentOrderDetails = new ArrayList<>();
-                }
-                StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
-                studentPaymentOrderDetail.setPrice(studentAddDto.getTemporaryCourseFee());
-                studentPaymentOrderDetail.setType(OrderDetailTypeEnum.COURSE);
-                studentPaymentOrderDetails.add(studentPaymentOrderDetail);
-                //汇总金额
-                BigDecimal reduce = studentPaymentOrderDetails.stream().map(e -> e.getPrice()).reduce(BigDecimal.ZERO, BigDecimal::add);
-                if (reduce == BigDecimal.ZERO) {
-                    studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
-                    studentRegistration.setPaymentStatus(PaymentStatusEnum.YES);
-                    studentPaymentOrder.setActualAmount(reduce);
-                    studentPaymentOrder.setPayTime(date);
-                }
-                studentPaymentOrder.setExpectAmount(reduce);
-                //当前学员是否以前存在过当前乐团
+            //添加班级关联
+            addStudents(studentAddDto, userId);
+            Date date = new Date();
+            //保存乐团学生费用表
+            if (studentAddDto.getCourseFee() == null) {
+                MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, studentRegistration.getActualSubjectId());
+                studentAddDto.setCourseFee(musicOneSubjectClassPlan.getFee());
+            }
+            Date nextPaymentDate = musicGroupPaymentCalenderService.getNextPaymentDate(musicGroupId);
+            musicGroupStudentFeeDao.insert(new MusicGroupStudentFee(musicGroupId,
+                    userId, studentRegistration.getSubjectId(), studentAddDto.getCourseFee(),
+                    nextPaymentDate, studentAddDto.getTemporaryCourseFee()));
+            //生成订单
+            StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
+            studentPaymentOrder.setUserId(userId);
+            studentPaymentOrder.setGroupType(GroupType.MUSIC);
+            studentPaymentOrder.setType(OrderTypeEnum.APPLY);
+            studentPaymentOrder.setStatus(DealStatusEnum.WAIT_PAY);
+            studentPaymentOrder.setMusicGroupId(musicGroupId);
+            studentPaymentOrder.setClassGroupId(studentAddDto.getSignClassId());
+
+            //生成订单明细
+            List<StudentPaymentOrderDetail> studentPaymentOrderDetails = studentAddDto.getStudentPaymentOrderDetails();
+            if (studentPaymentOrderDetails == null) {
+                studentPaymentOrderDetails = new ArrayList<>();
+            }
+            StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
+            studentPaymentOrderDetail.setPrice(studentAddDto.getTemporaryCourseFee());
+            studentPaymentOrderDetail.setType(OrderDetailTypeEnum.COURSE);
+            studentPaymentOrderDetails.add(studentPaymentOrderDetail);
+            //汇总金额
+            BigDecimal reduce = studentPaymentOrderDetails.stream().map(e -> e.getPrice()).reduce(BigDecimal.ZERO, BigDecimal::add);
+            if (reduce == BigDecimal.ZERO) {
+                studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
+                studentRegistration.setPaymentStatus(PaymentStatusEnum.YES);
+                studentPaymentOrder.setActualAmount(reduce);
+                studentPaymentOrder.setPayTime(date);
+            }
+            studentPaymentOrder.setExpectAmount(reduce);
+            //当前学员是否以前存在过当前乐团
 //                StudentRegistration registration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
-                if(phoneAndMusicGroupId != null){
-                    studentRegistration.setId(phoneAndMusicGroupId.getId());
-                    studentRegistrationDao.update(studentRegistration);
-                }else {
-                    studentRegistrationDao.insertBasic(studentRegistration);
-                }
-                studentPaymentOrderService.insert(studentPaymentOrder);
-                studentPaymentOrderDetails.forEach(e -> {
-                    e.setPaymentOrderId(studentPaymentOrder.getId());
-                });
-                studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetails);
-                Map<Integer, String> receivers = new HashMap<>(1);
-                receivers.put(studentRegistration.getUserId(), studentRegistration.getParentsPhone());
-                if (reduce == BigDecimal.ZERO) {
-                    sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.SMS_MUSIC_GROUP_ADD_STUDENT_FREE,
-                            receivers, null, 0, null, studentRegistration.getParentsName(), studentRegistration.getName(), musicGroup.getName());
-                }else {
-                    String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + musicGroupId;
-                    sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.SMS_MUSIC_GROUP_ADD_STUDENT,
-                            receivers, null, 0, null, studentRegistration.getParentsName(), studentRegistration.getName(), musicGroup.getName(),HttpUtil.getSortUrl(studentApplyUrl));
-                }
+            if(phoneAndMusicGroupId != null){
+                studentRegistration.setId(phoneAndMusicGroupId.getId());
+                studentRegistrationDao.update(studentRegistration);
+            }else {
+                studentRegistrationDao.insertBasic(studentRegistration);
+            }
+            studentPaymentOrderService.insert(studentPaymentOrder);
+            studentPaymentOrderDetails.forEach(e -> {
+                e.setPaymentOrderId(studentPaymentOrder.getId());
+            });
+            studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetails);
+            Map<Integer, String> receivers = new HashMap<>(1);
+            receivers.put(studentRegistration.getUserId(), studentRegistration.getParentsPhone());
+            if (reduce == BigDecimal.ZERO) {
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.SMS_MUSIC_GROUP_ADD_STUDENT_FREE,
+                        receivers, null, 0, null, studentRegistration.getParentsName(), studentRegistration.getName(), musicGroup.getName());
+            }else {
+                String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + musicGroupId;
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.SMS_MUSIC_GROUP_ADD_STUDENT,
+                        receivers, null, 0, null, studentRegistration.getParentsName(), studentRegistration.getName(), musicGroup.getName(),HttpUtil.getSortUrl(studentApplyUrl));
             }
             return userId;
         }
     }
 
-    public void addStudents(ClassGroup classGroup, Integer userId) {
-        Date nowDate = new Date();
-        //1、班级关系添加
-//        List<ClassGroupStudentMapper> classGroupStudentMappers = new ArrayList<>();
-//        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
-        Integer classGroupId = classGroup.getId();
-
-        //校验是否存在历史记录
-        ClassGroupStudentMapper classGroupStudentMapper = classGroupStudentMapperDao.findClassStudentMapperByUserIdAndClassGroupId(userId, classGroupId);
+    private List<CourseSchedule> addStudent(Integer classGroupId,Integer userId,Date date,List<CourseSchedule> courseScheduleList){
+        ClassGroup classGroup = classGroupDao.get(classGroupId);
+        ClassGroupStudentMapper classGroupStudentMapper = classGroupStudentMapperDao.findClassStudentMapperByUserIdAndClassGroupId(userId, classGroupId,null);
         if(classGroupStudentMapper != null){
             classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
-            classGroupStudentMapper.setClassGroupId(classGroupId);
+            classGroupStudentMapper.setClassGroupId(classGroup.getId());
             classGroupStudentMapperDao.update(classGroupStudentMapper);
         }else {
             classGroupStudentMapper = new ClassGroupStudentMapper();
             classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
             classGroupStudentMapper.setClassGroupId(classGroupId);
             classGroupStudentMapper.setUserId(userId);
-            classGroupStudentMapper.setCreateTime(nowDate);
+            classGroupStudentMapper.setCreateTime(date);
             classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
             classGroupStudentMapper.setGroupType(GroupType.MUSIC);
             classGroupStudentMapperDao.insert(classGroupStudentMapper);
         }
-
-        //添加进IM群组
         ImGroupMember[] imGroupMembers = {new ImGroupMember(userId.toString())};
-        imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+        imFeignService.groupJoin(new ImGroupModel(classGroupId.toString(), imGroupMembers, classGroup.getName()));
         //2、班级人数调整
-        classGroupDao.updateClassStudentNum(classGroupId.longValue(), 1);
+//        classGroupDao.updateClassStudentNum(classGroupId.longValue(), 1);
         //3、学生加入新班级未开始课程
-        List<CourseSchedule> courseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroupId);
-
-        ClassGroupRelation classGroupRelation = classGroupRelationService.findClassGroupRelation(classGroupId);
-        if(classGroupRelation != null){
-            ClassGroupStudentMapper classGroupStudentMapperMix = classGroupStudentMapperDao.findClassStudentMapperByUserIdAndClassGroupId(userId, classGroupRelation.getClassGroupId());
-            if(classGroupStudentMapperMix != null){
-                classGroupStudentMapperMix.setStatus(ClassGroupStudentStatusEnum.NORMAL);
-                classGroupStudentMapperMix.setClassGroupId(classGroupRelation.getClassGroupId());
-                classGroupStudentMapperDao.update(classGroupStudentMapperMix);
-            }else {
-                classGroupStudentMapperMix = new ClassGroupStudentMapper();
-                classGroupStudentMapperMix.setMusicGroupId(classGroup.getMusicGroupId());
-                classGroupStudentMapperMix.setClassGroupId(classGroupRelation.getClassGroupId());
-                classGroupStudentMapperMix.setUserId(userId);
-                classGroupStudentMapperMix.setCreateTime(nowDate);
-                classGroupStudentMapperMix.setStatus(ClassGroupStudentStatusEnum.NORMAL);
-                classGroupStudentMapperMix.setGroupType(GroupType.MUSIC);
-                classGroupStudentMapperDao.insert(classGroupStudentMapperMix);
-            }
-            classGroupDao.updateClassStudentNum(classGroupRelation.getClassGroupId().longValue(), 1);
-            List<CourseSchedule> mixCourseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroupRelation.getClassGroupId());
-            courseScheduleList.addAll(mixCourseScheduleList);
-
-            //添加进合奏班IM群组
-            imFeignService.groupJoin(new ImGroupModel(classGroupRelation.getClassGroupId().toString(), imGroupMembers, null));
+        List<CourseSchedule> noStartCoursesByClassGroupId = courseScheduleService.findNoStartCoursesByClassGroupId(classGroupId);
+        if(noStartCoursesByClassGroupId != null && noStartCoursesByClassGroupId.size() > 0){
+            courseScheduleList.addAll(noStartCoursesByClassGroupId);
         }
+        return courseScheduleList;
+    }
 
-        BigDecimal coursePrice = new BigDecimal("0");
+    public void addStudents(StudentAddDto studentAddDto, Integer userId) {
+        Date nowDate = new Date();
 
+        String musicGroupId = studentAddDto.getStudentRegistration().getMusicGroupId();
+        Integer signClassId = studentAddDto.getSignClassId();
+        List<CourseSchedule> courseScheduleList = new ArrayList<>();
+        if(signClassId != null){
+            addStudent(signClassId,userId,nowDate,courseScheduleList);
+        }
+        Integer mixClassId = studentAddDto.getMixClassId();
+        if(mixClassId != null){
+            addStudent(mixClassId,userId,nowDate,courseScheduleList);
+        }
+        Integer highClassId = studentAddDto.getHighClassId();
+        if(highClassId != null){
+            addStudent(mixClassId,userId,nowDate,courseScheduleList);
+        }
+        String snapClassIds = studentAddDto.getSnapClassIds();
+        if(StringUtils.isNotEmpty(snapClassIds)){
+            String[] split = snapClassIds.split(",");
+            for (int i = 0;i < split.length;i++){
+                addStudent(Integer.parseInt(split[i]),userId,nowDate,courseScheduleList);
+            }
+        }
         List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
         for (CourseSchedule courseSchedule : courseScheduleList) {
             CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
-            courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
-            courseScheduleStudentPayment.setMusicGroupId(classGroup.getMusicGroupId());
+            courseScheduleStudentPayment.setGroupType(GroupType.MUSIC);
+            courseScheduleStudentPayment.setMusicGroupId(musicGroupId);
             courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
             courseScheduleStudentPayment.setUserId(userId);
-            courseScheduleStudentPayment.setExpectPrice(coursePrice);
-            courseScheduleStudentPayment.setClassGroupId(classGroupId);
+            courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
+            courseScheduleStudentPayment.setClassGroupId(signClassId);
             courseScheduleStudentPayment.setCreateTime(nowDate);
             courseScheduleStudentPayment.setUpdateTime(nowDate);
             courseScheduleStudentPayments.add(courseScheduleStudentPayment);
@@ -752,7 +697,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId());
 
         if (studentPaymentOrder.getStatus().equals(DealStatusEnum.SUCCESS)) {
-            studentRegistration.setTemporaryCourseFee(new BigDecimal(0));
+            if(studentRegistration.getTemporaryCourseFee() != null){
+                studentRegistration.setTemporaryCourseFee(new BigDecimal(0));
+            }
             studentRegistration.setPaymentStatus(PaymentStatusEnum.YES);
             studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.NORMAL);
             studentRegistrationDao.update(studentRegistration);

+ 13 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -565,10 +565,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 					StudentApplyRefunds studentApplyRefund = studentApplyRefunds.get(0);
 					if(data.getStudentStatus()==0&&studentApplyRefund.getStatus().equals(StudentApplyRefundsStatus.ING)){
 						data.setStudentStatus(2);
-						data.setRefundDate(studentApplyRefund.getUpdateTime());
-					}
-					if(data.getStudentStatus()==0){
-						data.setRefundDate(studentApplyRefund.getUpdateTime());
 					}
 				}
 			});
@@ -849,7 +845,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				default:
 					throw new BizException("活动类型错误!");
 			}
-			results.put("totalPrice",totalPrice);
+			results.put("totalPrice",totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
 		}
         return results;
     }
@@ -1187,9 +1183,15 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			throw new BizException("指定的课程不存在");
 		}
 		if(vipGroup.getStatus().equals(VipGroupStatusEnum.CANCEL)){
-			throw new BizException("不能已进行的课程进行此操作");
+			throw new BizException("不能对已停止的课程进行此操作");
 		}
-		ClassGroup classGroup = classGroupDao.findByVipGroup(vipGroupId, null);
+
+        List<StudentApplyRefunds> studentApplyRefunds = studentApplyRefundsDao.findByGroupAndUser(vipGroupId.toString(), GroupType.VIP.getCode(), studentId);
+		if(!CollectionUtils.isEmpty(studentApplyRefunds)){
+		    throw new BizException("此学生存在退课申请,请到系统日志中查看");
+        }
+
+        ClassGroup classGroup = classGroupDao.findByVipGroup(vipGroupId, null);
 
 		ClassGroupStudentMapper classStudentMapperByUserIdAndClassGroupId = classGroupStudentMapperDao.query(classGroup.getId(),
 				studentId);
@@ -1310,6 +1312,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				ClassGroupStudentMapper classStudentMapperByUserIdAndClassGroupId = classGroupStudentMapperDao.query(studentPaymentOrder.getClassGroupId(),
 						studentPaymentOrder.getUserId());
 
+				if(Objects.isNull(classStudentMapperByUserIdAndClassGroupId)){
+				    throw new BizException("此学员不在指定班级上");
+                }
+
 				classStudentMapperByUserIdAndClassGroupId.setStatus(ClassGroupStudentStatusEnum.QUIT);
 				classGroupStudentMapperDao.update(classStudentMapperByUserIdAndClassGroupId);
 

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

@@ -337,6 +337,9 @@
     <select id="findAllClassGroupByMusicGroup" resultMap="ClassGroup">
         SELECT * FROM class_group cg
         WHERE cg.music_group_id_=#{musicGroupId} AND del_flag_='0'
+        <if test="classGroupType != null">
+            AND cg.type_ = #{classGroupType}
+        </if>
     </select>
 
     <select id="queryTeacherIds" resultType="java.lang.Integer">

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

@@ -13,6 +13,7 @@
         <result column="class_group_id_" property="classGroupId"/>
         <result column="user_id_" property="userId"/>
         <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
         <result column="username_" property="userName"/>
         <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
@@ -30,8 +31,8 @@
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ClassGroupStudentMapper" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
-        INSERT INTO class_group_student_mapper (id_,group_type_,music_group_id_,class_group_id_,user_id_,status_,create_time_)
-        VALUES(#{id},#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{musicGroupId},#{classGroupId},#{userId},#{status},now())
+        INSERT INTO class_group_student_mapper (id_,group_type_,music_group_id_,class_group_id_,user_id_,status_,create_time_,update_time_)
+        VALUES(#{id},#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{musicGroupId},#{classGroupId},#{userId},#{status},now(),now())
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -50,6 +51,7 @@
             <if test="groupType != null">
                 group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
+            update_time_ = now(),
         </set>
         WHERE id_ = #{id}
     </update>

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

@@ -1498,15 +1498,12 @@
     </delete>
     
     <select id="queryUnsignedStudentList" resultMap="StudentAttendance">
-        SELECT a.*,cg.current_class_times_,sa.id_ FROM (SELECT cssp.user_id_,cs.actual_teacher_id_ teacher_id_,
-        cs.id_ course_schedule_id_,cs.class_group_id_,cs.music_group_id_,cs.group_type_
+        SELECT cssp.user_id_,cs.actual_teacher_id_ teacher_id_,
+        cs.id_ course_schedule_id_,cs.class_group_id_,cs.music_group_id_,cs.group_type_,cg.current_class_times_
         FROM course_schedule_student_payment cssp
-        LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
-        WHERE CONCAT(cs.class_date_,' ',cs.end_class_time_) &lt;= now() AND cssp.actual_price_ IS NOT NULL) a
-        LEFT JOIN class_group cg ON a.class_group_id_ = cg.id_
-        LEFT JOIN student_attendance sa ON sa.user_id_ = a.user_id_ AND a.teacher_id_ = sa.teacher_id_
-        AND sa.class_group_id_ = a.class_group_id_ AND sa.course_schedule_id_ = a.course_schedule_id_
-        WHERE sa.id_ IS NULL
+        LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_ LEFT JOIN class_group cg ON cg.id_=cs.class_group_id_
+        LEFT JOIN student_attendance sa ON sa.course_schedule_id_= cssp.course_schedule_id_
+        WHERE CONCAT(cs.class_date_,' ',cs.end_class_time_) &lt;= now() AND sa.id_ IS NULL
     </select>
     <select id="getNextCourseSchedule" resultMap="CourseSchedule">
         SELECT
@@ -1540,4 +1537,7 @@
     <select id="countCurrentTimes" resultType="int">
         SELECT COUNT(*) FROM course_schedule WHERE class_group_id_=#{classGroupId} AND CONCAT(class_date_,' ',end_class_time_)&lt;#{currentCourseDate}
     </select>
+    <select id="countCourseScheduleByMusicGroupId" resultType="java.lang.Integer">
+        SELECT count(cs.id_) FROM course_schedule cs WHERE cs.music_group_id_ = #{musicGroupId} LIMIT 1
+    </select>
 </mapper>

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

@@ -42,7 +42,7 @@
         INSERT INTO music_group_student_fee_ (music_group_id_,user_id_,create_time_,update_time_,next_payment_date_,subject_id_,payment_status_)
 		VALUES
 		<foreach collection="musicGroupStudentFees" item="item" separator=",">
-            (#{item.musicGroupId},#{item.userId},NOW(),NOW(),#{nextPaymentDate},#{item.subjectId},'NON_PAYMENT')
+            (#{item.musicGroupId},#{item.userId},NOW(),NOW(),#{nextPaymentDate},#{item.subjectId},#{paymentStatus})
         </foreach>
     </insert>
 

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

@@ -144,7 +144,7 @@
             sar.update_time_
         FROM
             student_payment_order spo
-            LEFT JOIN student_apply_refunds sar ON spo.user_id_
+            LEFT JOIN student_apply_refunds sar ON spo.user_id_=sar.user_id_
             AND spo.id_ = sar.orig_payment_order_id_
         WHERE
             spo.music_group_id_ = #{groupId}
@@ -155,4 +155,20 @@
             spo.update_time_ DESC
 
     </select>
+    <select id="findByGroupAndUser" resultMap="StudentApplyRefunds">
+        SELECT
+            sar.*
+        FROM
+            student_apply_refunds sar
+            LEFT JOIN student_payment_order spo ON spo.user_id_=sar.user_id_
+            AND spo.id_ = sar.orig_payment_order_id_
+        WHERE
+            spo.music_group_id_ = #{groupId}
+            AND spo.group_type_ = #{groupType}
+            AND spo.user_id_ = #{userId}
+            AND spo.status_ = 'SUCCESS'
+            AND sar.status_ = 'ING'
+        ORDER BY
+            spo.update_time_ DESC
+    </select>
 </mapper>

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

@@ -157,7 +157,7 @@
         SELECT spo.*,u.username_ FROM student_payment_order spo
         left join sys_user u on spo.user_id_ = u.id_
         <include refid="queryPaymentOrder"/>
-        ORDER BY spo.id_
+        ORDER BY spo.id_ DESC
         <include refid="global.limit"/>
     </select>
 

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

@@ -474,6 +474,7 @@
         <result column="current_class_times_" property="currentClassTimes"/>
         <result column="course_balance_" property="courseSalary"/>
         <result column="create_time_" property="applyDate"/>
+        <result column="update_time_" property="refundDate"/>
         <result column="student_status_" property="studentStatus"/>
     </resultMap>
 
@@ -486,6 +487,7 @@
             cg.current_class_times_,
             suaa.course_balance_,
             cgsm.create_time_,
+            cgsm.update_time_,
             CASE cgsm.status_ WHEN 'QUIT' THEN 1 ELSE 0 END student_status_
         FROM
             class_group cg

+ 0 - 3
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherController.java

@@ -2,10 +2,8 @@ package com.ym.mec.teacher.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.page.TeacherCloseQueryInfo;
-import com.ym.mec.biz.dal.page.TeacherQueryInfo;
 import com.ym.mec.biz.dal.page.VipClassQueryInfo;
 import com.ym.mec.biz.dal.page.queryMusicGroupStudentQueryInfo;
 import com.ym.mec.biz.service.ClassGroupService;
@@ -15,7 +13,6 @@ import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;

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

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.dto.HighClassGroupDto;
 import com.ym.mec.biz.dal.dto.TestDto;
 import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
@@ -128,8 +129,9 @@ public class ClassGroupController extends BaseController {
     @ApiOperation(value = "乐团所有班级列表")
     @GetMapping("/findAllClassGroupByMusicGroup")
     @PreAuthorize("@pcs.hasPermissions('classGroup/findAllClassGroupByMusicGroup')")
-    public HttpResponseResult findAllClassGroupByMusicGroup(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId) {
-        return succeed(classGroupService.findAllClassGroupByMusicGroup(musicGroupId));
+    public HttpResponseResult findAllClassGroupByMusicGroup(@ApiParam(value = "乐团编号", required = true) @RequestParam String musicGroupId,
+                                                            @ApiParam(value = "班级类型", required = false) @RequestParam String type) {
+        return succeed(classGroupService.findAllClassGroupByMusicGroup(musicGroupId,type));
     }
 
     @ApiOperation(value = "乐团详情--班级详情列表")

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

@@ -17,7 +17,6 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
-
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;