Browse Source

活动排课

zouxuan 3 years ago
parent
commit
04a389f715
22 changed files with 125 additions and 973 deletions
  1. 0 10
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ActivityUserMapperDao.java
  2. 10 9
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java
  3. 17 12
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SurplusCourseFeeDto.java
  4. 11 9
      mec-biz/src/main/java/com/ym/mec/biz/service/ActivityUserMapperService.java
  5. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/GroupClassService.java
  6. 0 9
      mec-biz/src/main/java/com/ym/mec/biz/service/PracticeGroupService.java
  7. 0 16
      mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java
  8. 21 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityUserMapperServiceImpl.java
  9. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java
  10. 4 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/GroupClassServiceImpl.java
  11. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java
  12. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java
  13. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  14. 2 294
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  15. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  16. 40 453
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  17. 0 3
      mec-biz/src/main/resources/config/mybatis/ActivityUserMapperMapper.xml
  18. 11 25
      mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  19. 0 16
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherPracticeGroupController.java
  20. 0 31
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherVipGroupController.java
  21. 0 7
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java
  22. 0 54
      mec-web/src/main/java/com/ym/mec/web/controller/education/ActivityController.java

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

@@ -39,16 +39,6 @@ public interface ActivityUserMapperDao extends BaseDAO<Integer, ActivityUserMapp
     int countActivityBuyNum(@Param("activityId") Integer activityId, @Param("userId") Integer userId);
 
     /**
-    * @description:
-     * @param groupId
-     * @param studentId
-    * @return com.ym.mec.biz.dal.entity.ActivityUserMapper
-    * @author zx
-    * @date 2021/10/14 15:40
-    */
-    ActivityUserMapper findByStudentId(@Param("groupId") Long groupId, @Param("studentId") Integer studentId);
-
-    /**
      * @description: 消耗排课资格
      * @param activityUserMapperIds
      * @param studentIds

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

@@ -116,6 +116,16 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      */
     List<Integer> findNotStartCourseStudentPaymentIdsWithClassGroupAndStudent(@Param("classGroupId") Integer classGroupId,
                                                                               @Param("userId") Integer userId);
+    /**
+     * @param classGroupId:
+     * @param userId:
+     * @return java.util.List<java.lang.Integer>
+     * @describe 获取用户在指定班级上缴费记录编号
+     * @author Joburgess
+     * @date 2019/12/3
+     */
+    List<CourseScheduleStudentPayment> findNotStartCourseStudentPaymentsWithClassGroupAndStudent(@Param("classGroupId") Integer classGroupId,
+                                                                              @Param("userId") Integer userId);
 
     /**
      * @param groupId:
@@ -608,13 +618,4 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      */
     List<StudentOrganDto> queryRemainCourseStudent(@Param("organIds") List<Integer> organIds);
 
-    /**
-    * @description: 获取所有关联的课程组
-     * @param feeDto
-    * @return java.lang.String
-    * @author zx
-    * @date 2022/7/27 17:22
-    */
-    List<SurplusCourseFeeDto> getAllAssociatedCourseGroups(@Param("feeDto") SurplusCourseFeeDto feeDto);
-
 }

+ 17 - 12
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SurplusCourseFeeDto.java

@@ -12,34 +12,39 @@ public class SurplusCourseFeeDto {
     @ApiModelProperty(value = "课程组编号",required = true)
     private String groupId;
 
-    @ApiModelProperty(value = "课程类型 VIP/PRACTICE",required = true)
+    @ApiModelProperty(value = "课程类型 VIP/PRACTICE/ACTIVITY",required = true)
     private String groupType;
 
     @ApiModelProperty(value = "可退课程费用",required = true)
-    private BigDecimal actualPrice;
-
-    @ApiModelProperty(value = "可退未排课费用",required = true)
-    private BigDecimal coursePrice;
+    private BigDecimal actualPrice = BigDecimal.ZERO;
 
     @ApiModelProperty(value = "课程组编号",required = true)
     private String name;
 
     private String activityUserMapperId;
 
-    public BigDecimal getActualPrice() {
-        return actualPrice;
+    public SurplusCourseFeeDto() {
     }
 
-    public void setActualPrice(BigDecimal actualPrice) {
+    public SurplusCourseFeeDto(String groupId, String groupType, BigDecimal actualPrice, String name) {
+        this.groupId = groupId;
+        this.groupType = groupType;
         this.actualPrice = actualPrice;
+        this.name = name;
+    }
+
+    public SurplusCourseFeeDto(Integer studentId, String groupId, String groupType) {
+        this.studentId = studentId;
+        this.groupId = groupId;
+        this.groupType = groupType;
     }
 
-    public BigDecimal getCoursePrice() {
-        return coursePrice;
+    public BigDecimal getActualPrice() {
+        return actualPrice;
     }
 
-    public void setCoursePrice(BigDecimal coursePrice) {
-        this.coursePrice = coursePrice;
+    public void setActualPrice(BigDecimal actualPrice) {
+        this.actualPrice = actualPrice;
     }
 
     public String getName() {

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

@@ -37,15 +37,6 @@ public interface ActivityUserMapperService extends BaseService<Integer, Activity
     */
     int use(String activityUserMapperIds, String studentIds, String type,Long groupId);
 
-    /**
-    * @description:
-     * @param groupId
-     * @param studentId
-    * @return com.ym.mec.biz.dal.entity.ActivityUserMapper
-    * @author zx
-    * @date 2021/10/15 16:16
-    */
-    ActivityUserMapper findByStudentId(Long groupId, Integer studentId);
 
     /**
     * @description: 获取活动购买次数
@@ -200,4 +191,15 @@ public interface ActivityUserMapperService extends BaseService<Integer, Activity
     HttpResponseResult createActivityPracticeGroup(PracticeGroupApplyDto practiceGroupApplyDto);
 
     List<ActivityUserMapper> findByIds(String activityUserMapperIds);
+
+    /**
+    * @description: 学员剩余课程转化排课资格
+     * @param studentPayments
+     * @param studentId
+     * @param singleClassMinutes
+    * @return void
+    * @author zx
+    * @date 2022/8/3 13:44
+    */
+    void subCourseConvert(List<CourseScheduleStudentPayment> studentPayments, Integer studentId, Integer singleClassMinutes,Integer categoryId);
 }

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

@@ -91,4 +91,5 @@ public interface GroupClassService {
     * @date 2021/10/13 13:59
     */
     HttpResponseResult quitActivityGive(ActivityUserMapper activityUserMapper, boolean confirmReturnActivityGive,Long groupId,GroupType groupType);
+
 }

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

@@ -340,15 +340,6 @@ public interface PracticeGroupService extends BaseService<Long, PracticeGroup> {
     Object createPracticeGroup(PracticeGroupApplyDto practiceGroupApplyDto);
 
     /**
-    * @description: 创建网管课
-     * @param practiceGroupApplyDto
-    * @return java.lang.Object
-    * @author zx
-    * @date 2021/10/11 19:17
-    */
-    Object createActivityPracticeGroup(PracticeGroupApplyDto practiceGroupApplyDto);
-
-    /**
     * @description: 购买指导老师创建的网管课
      * @param practiceGroupBuyParams
     * @return java.lang.Object

+ 0 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java

@@ -42,14 +42,6 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      */
     HttpResponseResult createActivityVipGroup(VipGroupApplyDto vipGroup);
 
-    /**
-    * @description: 教师端活动排课
-     * @param vipGroup
-    * @return com.ym.mec.common.entity.HttpResponseResult
-    * @author zx
-    * @date 2021/10/21 11:17
-    */
-    HttpResponseResult createActivityVipGroup1(VipGroupApplyDto vipGroup);
 
     HttpResponseResult importActivityVipGroup(String data);
 
@@ -328,14 +320,6 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      */
     Map<String,BigDecimal> getStudentSurplusCourseFee(Long vipGroupId, Integer studentId);
 
-    /**
-    * @description: 获取指定学生的剩余课时费用
-     * @param feeDto
-    * @return java.util.Map<java.lang.String,java.math.BigDecimal>
-    * @author zx
-    * @date 2022/7/28 09:45
-    */
-    List<SurplusCourseFeeDto> getStudentSurplusCourseFee1(SurplusCourseFeeDto feeDto);
 
     /**
      * @Author: Joburgess

+ 21 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ActivityUserMapperServiceImpl.java

@@ -32,6 +32,7 @@ import java.util.stream.Collectors;
 
 import static com.ym.mec.biz.dal.enums.GroupType.ACTIVITY;
 import static java.math.BigDecimal.ROUND_DOWN;
+import static java.math.BigDecimal.ZERO;
 
 @Service
 public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, ActivityUserMapper>  implements ActivityUserMapperService {
@@ -105,11 +106,6 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
 	}
 
 	@Override
-	public ActivityUserMapper findByStudentId(Long groupId, Integer studentId) {
-		return activityUserMapperDao.findByStudentId(groupId,studentId);
-	}
-
-	@Override
 	public int countActivityBuyNum(Integer activityId, Integer userId) {
 		return activityUserMapperDao.countActivityBuyNum(activityId,userId);
 	}
@@ -1028,4 +1024,24 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
         return activityUserMapperDao.findByIds(activityUserMapperIds);
     }
 
+	@Override
+	public void subCourseConvert(List<CourseScheduleStudentPayment> studentPayments, Integer studentId, Integer singleClassMinutes,Integer categoryId) {
+		ActivityUserMapper activityUserMapper = new ActivityUserMapper();
+		activityUserMapper.setReturnFee(false);
+		activityUserMapper.setSingleCourseTime(singleClassMinutes);
+		activityUserMapper.setTotalCourseNum(studentPayments.size());
+		activityUserMapper.setSubCourseNum(studentPayments.size());
+		activityUserMapper.setVipFlag(1);
+		BigDecimal reduce = studentPayments.stream().map(e -> e.getActualPrice()).reduce(ZERO, BigDecimal::add);
+		activityUserMapper.setActualPrice(reduce);
+		activityUserMapper.setSubNoCoursePrice(reduce);
+		Student student = studentDao.get(studentId);
+		activityUserMapper.setTenantId(student.getTenantId());
+		activityUserMapper.setTeacherId(student.getTeacherId());
+		activityUserMapper.setUserId(studentId);
+		activityUserMapper.setAddMemo("学员休学转化排课资格");
+		activityUserMapper.setCategoryId(categoryId);
+		activityUserMapperDao.insert(activityUserMapper);
+	}
+
 }

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

@@ -284,7 +284,7 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         cloudTeacherOrder.setStudentId(order.getUserId());
         cloudTeacherOrder.setStatus(1);
         //保存云教练订单
-        this.save(cloudTeacherOrder,order.getGroupType() == GroupType.MUSIC ? false:calenderMember.getAutoActivationFlag());
+        this.save(cloudTeacherOrder,calenderMember.getAutoActivationFlag());
     }
 
     @Override

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

@@ -18,6 +18,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -166,15 +167,10 @@ public class GroupClassServiceImpl implements GroupClassService {
         }
         Date now = new Date();
         if (groupType.equals(GroupType.PRACTICE)) {
-//            BigDecimal refundAmount = returnFeeDto.getAmount();
             PracticeGroup practiceGroup = practiceGroupDao.get(groupId);
             if (Objects.isNull(practiceGroup)) {
                 throw new BizException("指定的课程组不存在");
             }
-//            List<StudentPaymentOrder> orders = studentPaymentOrderDao.findOrderByGroup(practiceGroup.getId().toString(), GroupType.PRACTICE, DealStatusEnum.SUCCESS);
-//            if (CollectionUtils.isEmpty(orders)) {
-//                throw new BizException("未获取到订单");
-//            }
             if (!practiceGroup.getGroupStatus().equals(GroupStatusEnum.NORMAL) || practiceGroup.getCoursesExpireDate().before(now)) {
                 throw new BizException("当前课程组不可关闭");
             }
@@ -194,11 +190,6 @@ public class GroupClassServiceImpl implements GroupClassService {
                 sysUserCashAccountLog.setComment("后台关闭网管课");
                 sysUserCashAccountLogDao.insert(sysUserCashAccountLog);
             }
-            ActivityUserMapper activityUserMapper = activityUserMapperDao.findVipUserMapper(practiceGroup.getId(),"PRACTICE",null);
-            HttpResponseResult result = quitActivityGive(activityUserMapper, returnFeeDto.getConfirmReturnActivityGive(), practiceGroup.getId(),GroupType.PRACTICE);
-            if(result.getCode() != 200){
-                return result;
-            }
             cleanGroupInfo(groupId.toString(), GroupType.PRACTICE);
             practiceGroup.setMemo("后台关闭网管课");
             practiceGroup.setGroupStatus(GroupStatusEnum.CANCEL);
@@ -263,8 +254,8 @@ public class GroupClassServiceImpl implements GroupClassService {
                 sysUserCashAccountLog.setComment("OA审批关闭网管课");
                 sysUserCashAccountLogDao.insert(sysUserCashAccountLog);
             }
-            ActivityUserMapper activityUserMapper = activityUserMapperDao.findVipUserMapper(practiceGroup.getId(),"PRACTICE",null);
-            quitActivityGive(activityUserMapper, returnFeeDto.getConfirmReturnActivityGive(), practiceGroup.getId(),GroupType.PRACTICE);
+//            ActivityUserMapper activityUserMapper = activityUserMapperDao.findVipUserMapper(practiceGroup.getId(),"PRACTICE",null);
+//            quitActivityGive(activityUserMapper, returnFeeDto.getConfirmReturnActivityGive(), practiceGroup.getId(),GroupType.PRACTICE);
             cleanGroupInfo(groupId.toString(), GroupType.PRACTICE);
             practiceGroup.setMemo("OA审批关闭网管课");
             practiceGroup.setGroupStatus(GroupStatusEnum.CANCEL);
@@ -531,4 +522,5 @@ public class GroupClassServiceImpl implements GroupClassService {
         }*/
         return BaseController.succeed();
     }
+
 }

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

@@ -694,7 +694,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
             cloudTeacherOrder.setStudentId(studentPaymentOrder.getUserId());
             cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
             cloudTeacherOrder.setAmount(studentPaymentOrder.getExpectAmount());
-            cloudTeacherOrderService.save(cloudTeacherOrder,studentPaymentOrder.getGroupType() == GroupType.MUSIC ? false:tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId()));
+            cloudTeacherOrderService.save(cloudTeacherOrder,tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId()));
             //赠送陪练课
             ActivityUserMapper activityUserMapper = new ActivityUserMapper();
             activityUserMapper.setTeacherId(student.getTeacherId());
@@ -796,7 +796,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
                 cloudTeacherOrder.setStudentId(studentPaymentOrder.getUserId());
                 cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
                 cloudTeacherOrder.setAmount(studentPaymentOrder.getExpectAmount());
-                cloudTeacherOrderService.save(cloudTeacherOrder,studentPaymentOrder.getGroupType() == GroupType.MUSIC?false:tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId()));
+                cloudTeacherOrderService.save(cloudTeacherOrder,tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId()));
                 //赠送陪练课
 //                ActivityUserMapper activityUserMapper = new ActivityUserMapper();
 //                activityUserMapper.setTeacherId(student.getTeacherId());
@@ -876,7 +876,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
                         cloudTeacherOrder.setStudentId(coachPaymentDetails.getUserId());
                         cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
                         cloudTeacherOrder.setAmount(studentPaymentOrder.getExpectAmount());
-                        cloudTeacherOrderService.save(cloudTeacherOrder,studentPaymentOrder.getGroupType() == GroupType.MUSIC?false:cloudCoachPaymentProgram.getAutoActivationFlag());
+                        cloudTeacherOrderService.save(cloudTeacherOrder,cloudCoachPaymentProgram.getAutoActivationFlag());
 
                         //修改缴费状态
                         coachPaymentDetails.setPaymentStatus(1);
@@ -896,7 +896,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
                         if(cloudTeacherOrder.getStatus() == 1){
                             throw new BizException("该云教练订单已经支付");
                         }
-                        cloudTeacherOrderService.save(cloudTeacherOrder,studentPaymentOrder.getGroupType() == GroupType.MUSIC?false:true);
+                        cloudTeacherOrderService.save(cloudTeacherOrder,true);
                     }
                 }
             }

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

@@ -281,7 +281,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
                     cloudTeacherOrder.setStatus(1);
                     cloudTeacherOrder.setRemark("缴费项目0元新增学员");
                     cloudTeacherOrder.setMusicGroupId(musicGroupId);
-                    cloudTeacherOrderService.save(cloudTeacherOrder,false);
+                    cloudTeacherOrderService.save(cloudTeacherOrder,calenderMember.getAutoActivationFlag());
                 }
                 //添加小课包
                 if (calenderActivities != null && calenderActivities.size() > 0) {

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

@@ -742,7 +742,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
                         cloudTeacherOrder.setStatus(1);
                         cloudTeacherOrder.setRemark("进行中乐团0元加学生");
                         cloudTeacherOrder.setMusicGroupId(musicGroup.getId());
-                        cloudTeacherOrderService.save(cloudTeacherOrder,false);
+                        cloudTeacherOrderService.save(cloudTeacherOrder,calenderMember.getAutoActivationFlag());
                     }
                     //添加小课包
                     if (calenderActivities != null && calenderActivities.size() > 0) {

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

@@ -4164,265 +4164,6 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
-    public Object createActivityPracticeGroup(PracticeGroupApplyDto practice) {
-        PracticeGroupApplyBaseInfoDto applyBaseInfo = practice.getPracticeGroupApplyBaseInfoDto();
-        if (applyBaseInfo.getVipGroupActivityId() == null) {
-            throw new BizException("请选择活动");
-        }
-        VipGroupActivity activity = vipGroupActivityDao.get(applyBaseInfo.getVipGroupActivityId());
-        if (Objects.isNull(activity)) {
-            throw new BizException("活动信息不存在");
-        }
-        if (Objects.isNull(applyBaseInfo.getUserId())) {
-            throw new BizException("请选择指导老师");
-        }
-
-        List<CourseSchedule> courseSchedules = practice.getCourseSchedules();
-        if (courseSchedules.size() != applyBaseInfo.getAllCourseNum()) {
-            throw new BizException("建课失败,当前课程存在未排课课程,请调整相关设置");
-        }
-
-        if (applyBaseInfo.getSubjectId() == null) {
-            throw new BizException("请选择声部");
-        }
-
-        Integer studentId = applyBaseInfo.getStudentId();
-        if (studentId == null) {
-            throw new BizException("请选择学员");
-        }
-        Boolean giveFlag = practice.getGiveFlag();
-        //获取学员排课资格
-        List<ActivityUserMapper> activityUserMappers = activityUserMapperService.findByStudentIdList(activity.getId(), studentId.toString(), giveFlag ? "GIVE_PRACTICE" : "PRACTICE");
-        if (activityUserMappers.size() == 0) {
-            throw new BizException("所选学员暂无排课资格");
-        }
-
-        Date now = new Date();
-
-        //获取第一节课
-        CourseSchedule firstCourseSchedule = courseSchedules.stream().min(Comparator.comparing(CourseSchedule::getStartClassTime)).get();
-        //获取最后一节课
-        CourseSchedule latestCourseSchedule = courseSchedules.stream().max(Comparator.comparing(CourseSchedule::getEndClassTime)).get();
-
-        if (firstCourseSchedule.getStartClassTime().before(now)) {
-            throw new BizException("开课时间不能小于当前时间");
-        }
-
-        applyBaseInfo.setRegistrationStartTime(now);
-        applyBaseInfo.setPaymentExpireDate(now);
-
-        if (applyBaseInfo.getRegistrationStartTime().after(applyBaseInfo.getPaymentExpireDate())) {
-            throw new BizException("报名开始时间必须在报名截至时间之前");
-        }
-
-        //判断课程安排是否超出范围
-        if ((Objects.nonNull(activity.getCoursesEndTime()) || Objects.nonNull(activity.getCoursesStartTime()))) {
-            if (latestCourseSchedule.getEndClassTime().after(activity.getCoursesEndTime())
-                    || firstCourseSchedule.getStartClassTime().before(activity.getCoursesStartTime())) {
-                throw new BizException("课时安排时间超出范围!");
-            }
-        }
-        Integer allCourseNum = applyBaseInfo.getAllCourseNum();
-        if (giveFlag) {
-            if (allCourseNum != activity.getGiveCourseNum()) {
-                throw new BizException("该活动赠送课时数为{}节", activity.getGiveCourseNum());
-            }
-        } else {
-            if (Objects.nonNull(activity.getMinCourseNum()) && activity.getMinCourseNum() != -1 && Objects.nonNull(activity.getMaxCourseNum())
-                    && activity.getMaxCourseNum() != -1) {
-                if (allCourseNum.compareTo(activity.getMinCourseNum()) < 0 || allCourseNum.compareTo(activity.getMaxCourseNum()) > 0) {
-                    throw new BizException("该活动课时数为{}节~{}节", activity.getMinCourseNum(), activity.getMaxCourseNum());
-                }
-            }
-        }
-
-        int repeatVipGroups = practiceGroupDao.countUserRepeatPracticeGroupInCourseStartEndTime(applyBaseInfo.getUserId(), firstCourseSchedule.getStartClassTime(), latestCourseSchedule.getEndClassTime());
-        if (repeatVipGroups > 0) {
-            SysUser sysUser = sysUserService.queryUserById(applyBaseInfo.getUserId());
-            throw new BizException("{}课程时间冲突({}-{})", sysUser.getRealName(), DateUtil.dateToString(firstCourseSchedule.getStartClassTime(), "yyyy-MM-dd HH:mm:ss"), DateUtil.dateToString(latestCourseSchedule.getEndClassTime(), "HH:mm:ss"));
-        }
-
-        //生成网管课信息
-        Subject subject = subjectDao.get(applyBaseInfo.getSubjectId());
-        SysUser user = teacherDao.getUser(studentId);
-        StringBuffer className = new StringBuffer(subject.getName()).append("•").append(user.getUsername());
-        applyBaseInfo.setName(className.toString());
-        applyBaseInfo.setAuditStatus(AuditStatusEnum.PASS);
-        applyBaseInfo.setGroupStatus(GroupStatusEnum.NORMAL);
-
-        Teacher teacher = teacherService.get(applyBaseInfo.getUserId());
-        if (Objects.isNull(teacher)) {
-            throw new BizException("教师不存在");
-        }
-
-        //开课时间为排课的第一节课的开始时间
-        applyBaseInfo.setCoursesStartDate(firstCourseSchedule.getStartClassTime());
-        //课程结束时间为排课的最后一节课的结束时间
-        applyBaseInfo.setCoursesExpireDate(latestCourseSchedule.getEndClassTime());
-
-        applyBaseInfo.setPaymentExpireDate(DateUtil.getLastSecondWithDay(applyBaseInfo.getPaymentExpireDate()));
-        applyBaseInfo.setType(giveFlag ? PracticeGroupType.FREE : PracticeGroupType.CHARGE);
-        applyBaseInfo.setMemo(activity.getName());
-        practiceGroupDao.insert(applyBaseInfo);
-        //消耗排课资格
-        List<Integer> activityUserMapperIds = activityUserMappers.stream().map(e -> e.getId()).collect(Collectors.toList());
-        int use = activityUserMapperService.use(StringUtils.join(activityUserMapperIds, ","), studentId.toString(), giveFlag ? "GIVE_PRACTICE" : "PRACTICE", applyBaseInfo.getId());
-        if (use != 1) {
-            throw new BizException("网管课创建失败,请联系管理员");
-        }
-        //是否消耗课程余额
-        if (activity.isPayToBalance() && !giveFlag) {
-            ActivityUserMapper activityUserMapper = activityUserMappers.get(0);
-            sysUserCashAccountService.appendCourseBalance(studentId, activityUserMapper.getActualPrice().negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "活动排课消耗课程余额");
-        }
-
-        //创建班级信息
-        ClassGroup classGroup = new ClassGroup();
-        classGroup.setSubjectIdList(applyBaseInfo.getSubjectId().toString());
-        classGroup.setExpectStudentNum(1);
-        classGroup.setStudentNum(1);
-        classGroup.setName(applyBaseInfo.getName());
-        classGroup.setTotalClassTimes(allCourseNum);
-        classGroup.setType(ClassGroupTypeEnum.PRACTICE);
-        classGroup.setDelFlag(0);
-        classGroup.setGroupType(GroupType.PRACTICE);
-        classGroup.setMusicGroupId(applyBaseInfo.getId().toString());
-        classGroup.setCreateTime(now);
-        classGroup.setUpdateTime(now);
-        classGroupDao.insert(classGroup);
-
-        //班级学员关联记录
-        List<ClassGroupStudentMapper> classGroupStudentMapperList = new ArrayList<>();
-        ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
-        classGroupStudentMapper.setMusicGroupId(applyBaseInfo.getId().toString());
-        classGroupStudentMapper.setClassGroupId(classGroup.getId());
-        classGroupStudentMapper.setUserId(studentId);
-        classGroupStudentMapper.setCreateTime(now);
-        classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
-        classGroupStudentMapper.setGroupType(GroupType.PRACTICE);
-        classGroupStudentMapperList.add(classGroupStudentMapper);
-        classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMapperList);
-
-        //计算课程相关费用信息
-        Map<String, BigDecimal> costInfo = countPracticeGroupPredictFee(applyBaseInfo, applyBaseInfo.getUserId());
-        if (practice.getGiveFlag()) {
-            applyBaseInfo.setOnlineTeacherSalary(costInfo.get("giveTeacherDefaultSalary"));
-        } else {
-            applyBaseInfo.setOnlineTeacherSalary(costInfo.get("onlineTeacherSalary"));
-        }
-
-        //创建班级老师关联记录
-        ClassGroupTeacherMapper classGroupTeacherMapper = new ClassGroupTeacherMapper();
-        classGroupTeacherMapper.setMusicGroupId(applyBaseInfo.getId().toString());
-        classGroupTeacherMapper.setClassGroupId(classGroup.getId());
-        classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.BISHOP);
-        classGroupTeacherMapper.setUserId(applyBaseInfo.getUserId());
-        classGroupTeacherMapper.setGroupType(GroupType.PRACTICE);
-        classGroupTeacherMapper.setCreateTime(now);
-        classGroupTeacherMapper.setUpdateTime(now);
-        classGroupTeacherMapperDao.insert(classGroupTeacherMapper);
-
-        //创建班级与老师课酬记录
-        ClassGroupTeacherSalary classGroupTeacherSalary = new ClassGroupTeacherSalary();
-        classGroupTeacherSalary.setMusicGroupId(applyBaseInfo.getId().toString());
-        classGroupTeacherSalary.setClassGroupId(classGroup.getId());
-        classGroupTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
-        classGroupTeacherSalary.setUserId(applyBaseInfo.getUserId());
-        classGroupTeacherSalary.setSalary(BigDecimal.ZERO);
-        classGroupTeacherSalary.setOnlineClassesSalary(applyBaseInfo.getOnlineTeacherSalary());
-        classGroupTeacherSalary.setGroupType(GroupType.PRACTICE);
-        classGroupTeacherSalary.setCreateTime(now);
-        classGroupTeacherSalary.setUpdateTime(now);
-        classGroupTeacherSalaryDao.insert(classGroupTeacherSalary);
-
-        //课程信息调整
-        courseSchedules.forEach(courseSchedule -> {
-            courseSchedule.setGroupType(GroupType.PRACTICE);
-            courseSchedule.setMusicGroupId(applyBaseInfo.getId().toString());
-            courseSchedule.setTeacherId(applyBaseInfo.getUserId());
-            courseSchedule.setActualTeacherId(applyBaseInfo.getUserId());
-            courseSchedule.setStatus(CourseStatusEnum.NOT_START);
-            courseSchedule.setType(CourseSchedule.CourseScheduleType.PRACTICE);
-            courseSchedule.setClassGroupId(classGroup.getId());
-            courseSchedule.setName(applyBaseInfo.getName());
-            courseSchedule.setOrganId(applyBaseInfo.getOrganId());
-        });
-
-        applyBaseInfo.setCourseScheduleJson(JSON.toJSONString(courseSchedules));
-        practiceGroupDao.update(applyBaseInfo);
-
-        //创建课程
-        courseScheduleService.batchAddCourseSchedule(courseSchedules);
-
-        //创建老师单节课课酬信息
-        List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<>();
-        for (CourseSchedule courseSchedule : courseSchedules) {
-            //创建教师课程薪水记录
-            CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
-            courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
-            courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
-            courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
-            courseScheduleTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
-            courseScheduleTeacherSalary.setUserId(courseSchedule.getActualTeacherId().intValue());
-            courseScheduleTeacherSalary.setClassGroupId(courseSchedule.getClassGroupId());
-            courseScheduleTeacherSalary.setExpectSalary(classGroupTeacherSalary.getOnlineClassesSalary());
-            courseScheduleTeacherSalary.setActualSalary(null);
-            courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
-        }
-        if (courseScheduleTeacherSalaries.size() > 0) {
-            courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaries);
-        }
-
-        List<ClassGroupStudentMapper> classGroupStudents = classGroupStudentMapperDao.findByClassGroup(classGroup.getId());
-
-//        Map<Integer,String> userRoleMap = new HashMap<>();
-//        if(Objects.nonNull(applyBaseInfo.getEducationalTeacherId())){
-//            userRoleMap.put(applyBaseInfo.getEducationalTeacherId(),"乐团主管");
-//        }
-//        userRoleMap.put(applyBaseInfo.getUserId(),"指导老师");
-
-        PracticeGroupSellPrice practiceGroupSellPrice = practiceGroupSellPriceDao.get(applyBaseInfo.getOrganId());
-        BigDecimal singleClassMinutesPrice = practiceGroupSellPrice.getSingleClassMinutesPrice();
-        //生成学生单课缴费信息
-        Map<Integer, List<ActivityUserMapper>> collect = activityUserMappers.stream().collect(Collectors.groupingBy(ActivityUserMapper::getUserId));
-        for (ClassGroupStudentMapper classGroupStudent : classGroupStudents) {
-            List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
-            //实际支付金额,去除优惠券
-            ActivityUserMapper activityUserMapper = collect.get(classGroupStudent.getUserId()).get(0);
-            BigDecimal totalAmount = activityUserMapper.getActualPrice();
-            BigDecimal singleAmount = totalAmount.divide(new BigDecimal(courseSchedules.size()), ROUND_DOWN);
-            BigDecimal firstSingleAmount = totalAmount.subtract(singleAmount.multiply(new BigDecimal(courseSchedules.size()))).add(singleAmount);
-            for (int i = 0; i < courseSchedules.size(); i++) {
-                CourseSchedule courseSchedule = courseSchedules.get(i);
-                CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
-                courseScheduleStudentPayment.setUserId(classGroupStudent.getUserId());
-                courseScheduleStudentPayment.setGroupType(courseSchedule.getGroupType());
-                courseScheduleStudentPayment.setMusicGroupId(courseSchedule.getMusicGroupId());
-                courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
-                courseScheduleStudentPayment.setClassGroupId(courseSchedule.getClassGroupId());
-                if (practice.getGiveFlag()) {
-                    courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
-                } else {
-                    if (i == 1) {
-                        courseScheduleStudentPayment.setExpectPrice(firstSingleAmount);
-                    } else {
-                        courseScheduleStudentPayment.setExpectPrice(singleAmount);
-                    }
-                }
-                courseScheduleStudentPayment.setOriginalPrice(singleClassMinutesPrice);
-                courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
-                courseScheduleStudentPayments.add(courseScheduleStudentPayment);
-            }
-            courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
-//            userRoleMap.put(classGroupStudent.getUserId(),null);
-            studentDao.updateStudentServiceTag(classGroupStudent.getUserId(), null, YesOrNoEnum.YES.getCode());
-        }
-//        courseScheduleService.checkNewCourseSchedules(courseSchedules, false,false);
-        return BaseController.succeed(applyBaseInfo.getAuditStatus().getCode());
-    }
-
-    @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     public HttpResponseResult buyTeacherPracticeGroup(PracticeGroupBuyParamsDto practiceGroupBuyParams) throws Exception {
         SysUser user = sysUserService.getUser();
@@ -4823,34 +4564,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         Map<String, BigDecimal> result = new HashMap<>();
         Date now = new Date();
         BigDecimal bigDecimal;
-        List<StudentCourseInfoDto> userCourseInfos = new ArrayList<>();
-        VipGroupCategory vipGroupCategory = null;
-        //是否关联活动
-        if (practiceGroup.getVipGroupActivityId() != null) {
-            ActivityUserMapper activityUserMapper = activityUserMapperService.findVipUserMapper(practiceGroupId, "PRACTICE", studentId);
-            if (activityUserMapper != null && !activityUserMapper.getReturnFee()) {
-                if (Objects.nonNull(activityUserMapper.getVipGroupId())) {
-//                    VipGroup group = vipGroupDao.get(activityUserMapper.getVipGroupId());
-//                    vipGroupCategory = vipGroupCategoryDao.get(group.getVipGroupCategoryId().intValue());
-                    vipGroupCategory = vipGroupCategoryDao.get(activityUserMapper.getCategoryId());
-                    userCourseInfos.addAll(courseScheduleDao.findUserCourseInfos(GroupType.VIP, activityUserMapper.getVipGroupId().toString(), studentId, null));
-                }
-                if (Objects.nonNull(activityUserMapper.getGiveVipGroupId())) {
-                    userCourseInfos.addAll(courseScheduleDao.findUserCourseInfos(GroupType.VIP, activityUserMapper.getGiveVipGroupId().toString(), studentId, null));
-                }
-                if (Objects.nonNull(activityUserMapper.getPracticeGroupId())) {
-                    userCourseInfos.addAll(courseScheduleDao.findUserCourseInfos(GroupType.PRACTICE, activityUserMapper.getPracticeGroupId().toString(), studentId, null));
-                }
-                if (Objects.nonNull(activityUserMapper.getGivePracticeGroupId())) {
-                    userCourseInfos.addAll(courseScheduleDao.findUserCourseInfos(GroupType.PRACTICE, activityUserMapper.getGivePracticeGroupId().toString(), studentId, null));
-                }
-                userCourseInfos.removeAll(Collections.singleton(null));
-            } else {
-                userCourseInfos = courseScheduleDao.findUserCourseInfos(GroupType.PRACTICE, practiceGroupId.toString(), studentId, null);
-            }
-        } else {
-            userCourseInfos = courseScheduleDao.findUserCourseInfos(GroupType.PRACTICE, practiceGroupId.toString(), studentId, null);
-        }
+        List<StudentCourseInfoDto> userCourseInfos = courseScheduleDao.findUserCourseInfos(GroupType.PRACTICE, practiceGroupId.toString(), studentId, null);
 
         if (!CollectionUtils.isEmpty(userCourseInfos)) {
             BigDecimal historyPrice = ZERO;
@@ -4879,13 +4593,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         if (Objects.isNull(classGroup)) {
             throw new BizException("未找到对应班级");
         }
-        bigDecimal = sysUserCashAccountLogService.vipReturnFeeCharges(bigDecimal, vipGroupCategory == null ? 0 : vipGroupCategory.getStudentNum());
-
-//        if(vipGroupCategory == null || vipGroupCategory.getStudentNum() <= 1){
-//            bigDecimal = bigDecimal.multiply(new BigDecimal(0.8)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
-//        }else{
-//            bigDecimal = bigDecimal.multiply(new BigDecimal(0.7)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
-//        }
+        bigDecimal = sysUserCashAccountLogService.vipReturnFeeCharges(bigDecimal, 1);
         result.put("suplusCourseFee", bigDecimal);
         return result;
     }

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

@@ -814,7 +814,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
                 cloudTeacherOrder.setType(activity.getGivePeriodEnum());
                 cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
                 cloudTeacherOrder.setTime(activity.getGiveMemberTime());
-                cloudTeacherOrderService.save(cloudTeacherOrder,studentPaymentOrder.getGroupType() == GroupType.MUSIC?false:tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId()));
+                cloudTeacherOrderService.save(cloudTeacherOrder,tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId()));
                 // 添加会员有效时长
                 activityUserMapper.setGiveMemberFlag(2);
                 activityUserMapper.setGiveMemberOrderId(cloudTeacherOrder.getId());

+ 40 - 453
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -110,8 +110,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     @Autowired
     private ClassGroupStudentMapperDao classGroupStudentMapperDao;
     @Autowired
-    private CourseScheduleRewardsRulesService courseScheduleRewardsRulesService;
-    @Autowired
     private SysConfigDao sysConfigDao;
     @Autowired
     private SysUserCashAccountDetailService sysUserCashAccountDetailService;
@@ -1121,412 +1119,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
-    public HttpResponseResult createActivityVipGroup1(VipGroupApplyDto vipGroup) {
-        VipGroupApplyBaseInfoDto applyBaseInfo = vipGroup.getVipGroupApplyBaseInfo();
-        if (applyBaseInfo.getVipGroupActivityId() == null) {
-            throw new BizException("请选择活动");
-        }
-        VipGroupActivity activity = vipGroupActivityDao.get(applyBaseInfo.getVipGroupActivityId());
-        if (Objects.isNull(activity)) {
-            throw new BizException("活动信息不存在");
-        }
-        if (Objects.isNull(applyBaseInfo.getUserId())) {
-            throw new BizException("请选择指导老师");
-        }
-
-        if (vipGroup.getCourseSchedules().size() != (applyBaseInfo.getOfflineClassesNum() + applyBaseInfo.getOnlineClassesNum())) {
-            throw new BizException("建课失败,当前课程存在未排课课程,请调整相关设置");
-        }
-
-        Map<TeachModeEnum, List<CourseSchedule>> courseScheduleGroup;
-        try {
-            courseScheduleGroup = vipGroup.getCourseSchedules().stream().collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
-        } catch (Exception e) {
-            throw new BizException("教学模式错误");
-        }
-
-        if (StringUtils.isBlank(applyBaseInfo.getSubjectIdList())) {
-            throw new BizException("请选择声部");
-        }
-        if (vipGroup.getGiveFlag()) {
-            applyBaseInfo.setVipGroupCategoryId(Integer.parseInt(activity.getGiveCategoryId()));
-        } else {
-            applyBaseInfo.setVipGroupCategoryId(Integer.parseInt(activity.getVipGroupCategoryIdList()));
-        }
-
-        if ((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE)) && applyBaseInfo.getOfflineClassesNum() != 0)
-                || (!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE)) && (courseScheduleGroup.get(TeachModeEnum.OFFLINE).size() < applyBaseInfo.getOfflineClassesNum()))) {
-            throw new BizException("线下课课时数量安排有误");
-        }
-
-        if ((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.ONLINE)) && applyBaseInfo.getOnlineClassesNum() != 0)
-                || (!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.ONLINE)) && (courseScheduleGroup.get(TeachModeEnum.ONLINE).size() < applyBaseInfo.getOnlineClassesNum()))) {
-            throw new BizException("线上课课时数量安排有误");
-        }
-        //校验线上课学员上限
-        if (applyBaseInfo.getOnlineClassesNum() > 0) {
-            courseScheduleService.checkOnlineCategory(applyBaseInfo.getStudentNum());
-        }
-
-        if (applyBaseInfo.getOfflineClassesNum() > 0 && Objects.isNull(applyBaseInfo.getTeacherSchoolId())) {
-            throw new BizException("请设置教学点");
-        }
-
-        String studentIds = applyBaseInfo.getStudentIdList();
-        if (StringUtils.isBlank(studentIds)) {
-            throw new BizException("请选择学员");
-        }
-        VipGroupCategory vipGroupCategory = vipGroupCategoryService.get(applyBaseInfo.getVipGroupCategoryId());
-        if (Objects.isNull(vipGroupCategory)) {
-            throw new BizException("课程形式不存在");
-        }
-        Boolean giveFlag = vipGroup.getGiveFlag();
-        List<Integer> studentIdList = Arrays.stream(studentIds.split(",")).map(id -> Integer.valueOf(id)).collect(Collectors.toList());
-        if (!vipGroupCategory.getMusicTheory()) {
-            if (studentIdList.size() != vipGroupCategory.getStudentNum()) {
-                throw new BizException("学员数量异常");
-            }
-        } else {
-            if (studentIdList.size() > vipGroupCategory.getStudentNum()) {
-                throw new BizException("{}课程最多支持{}人", vipGroupCategory.getName(), vipGroupCategory.getStudentNum());
-            }
-        }
-
-        //获取学员排课资格
-        List<ActivityUserMapper> activityUserMappers = activityUserMapperService.findByStudentIdList(activity.getId(), studentIds, giveFlag ? "GIVE_VIP" : "VIP");
-        if (studentIdList.size() != activityUserMappers.size()) {
-            throw new BizException("所选学员暂无排课资格");
-        }
-
-        Date now = new Date();
-
-        if (Objects.isNull(applyBaseInfo.getOfflineClassesUnitPrice()) && Objects.isNull(applyBaseInfo.getOnlineClassesUnitPrice())) {
-            throw new BizException("请设置课程单价");
-        }
-
-        if (StringUtils.isBlank(applyBaseInfo.getStudentIdList())) {
-            throw new BizException("请选择学员");
-        }
-
-        Integer totalClassTimes = applyBaseInfo.getOnlineClassesNum() + applyBaseInfo.getOfflineClassesNum();
-        //获取第一节课
-        CourseSchedule firstCourseSchedule = vipGroup.getCourseSchedules().stream().min(Comparator.comparing(CourseSchedule::getStartClassTime)).get();
-        //获取最后一节课
-        CourseSchedule latestCourseSchedule = vipGroup.getCourseSchedules().stream().max(Comparator.comparing(CourseSchedule::getEndClassTime)).get();
-
-        if (firstCourseSchedule.getStartClassTime().before(now)) {
-            throw new BizException("开课时间不能小于当前时间");
-        }
-
-        applyBaseInfo.setRegistrationStartTime(now);
-        applyBaseInfo.setPaymentExpireDate(now);
-
-        if (applyBaseInfo.getRegistrationStartTime().after(applyBaseInfo.getPaymentExpireDate())) {
-            throw new BizException("报名开始时间必须在报名截至时间之前");
-        }
-
-        List<Integer> canBuyStudentIds = Arrays.stream(applyBaseInfo.getStudentIdList().split(",")).map(e -> Integer.valueOf(e)).collect(Collectors.toList());
-        List<VipGroupStudentCoursePrice> vscps = vipGroup.getVipGroupApplyBaseInfo().getVipGroupStudentCoursePrices();
-
-        //判断课程安排是否超出范围
-        if ((Objects.nonNull(activity.getCoursesEndTime()) || Objects.nonNull(activity.getCoursesStartTime()))) {
-            if (latestCourseSchedule.getEndClassTime().after(activity.getCoursesEndTime())
-                    || firstCourseSchedule.getStartClassTime().before(activity.getCoursesStartTime())) {
-                throw new BizException("课时安排时间超出范围!");
-            }
-        } else {
-            VipGroupDefaultClassesCycle vipGroupDefaultClassesCycle = vipGroupDefaultClassesCycleDao.findByOrganAndClassTimes(totalClassTimes, TenantContextHolder.getTenantId());
-
-            if (vipGroupDefaultClassesCycle != null) {
-                int month = DateUtil.monthsBetween(firstCourseSchedule.getStartClassTime(), latestCourseSchedule.getEndClassTime());
-                if (month > vipGroupDefaultClassesCycle.getMonth()) {
-                    throw new BizException("课时安排时间超出范围!");
-                }
-            }
-        }
-        if (giveFlag) {
-            if ((applyBaseInfo.getOfflineClassesNum() + applyBaseInfo.getOnlineClassesNum()) != activity.getGiveCourseNum()) {
-                throw new BizException("该活动赠送课时数为{}节", activity.getGiveCourseNum());
-            }
-        } else {
-            if (Objects.nonNull(activity.getMinCourseNum()) && activity.getMinCourseNum() != -1 && Objects.nonNull(activity.getMaxCourseNum())
-                    && activity.getMaxCourseNum() != -1) {
-                Integer requestCourseNum = applyBaseInfo.getOnlineClassesNum() + applyBaseInfo.getOfflineClassesNum();
-                if (requestCourseNum.compareTo(activity.getMinCourseNum()) < 0 || requestCourseNum.compareTo(activity.getMaxCourseNum()) > 0) {
-                    throw new BizException("该活动课时数为{}节~{}节", activity.getMinCourseNum(), activity.getMaxCourseNum());
-                }
-            }
-        }
-
-        int repeatVipGroups = vipGroupDao.countUserRepeatVipGroupInCourseStartEndTime(applyBaseInfo.getUserId(), firstCourseSchedule.getStartClassTime(), latestCourseSchedule.getEndClassTime());
-        if (repeatVipGroups > 0) {
-            SysUser sysUser = sysUserFeignService.queryUserById(applyBaseInfo.getUserId());
-            throw new BizException("{}课程时间冲突({}-{})", sysUser.getRealName(), DateUtil.dateToString(firstCourseSchedule.getStartClassTime(), "yyyy-MM-dd HH:mm:ss"), DateUtil.dateToString(latestCourseSchedule.getEndClassTime(), "HH:mm:ss"));
-        }
-
-        List<String> studentNames = studentDao.getStudentNames(canBuyStudentIds);
-
-        //生成vip课信息
-        List<String> bySubIds = subjectDao.findBySubIds(applyBaseInfo.getSubjectIdList());
-        StringBuffer className = new StringBuffer();
-        if (Objects.isNull(vipGroupCategory.getMusicTheory()) || !vipGroupCategory.getMusicTheory()) {
-            className.append(StringUtils.join(bySubIds, ","));
-            className.append(vipGroupCategory.getName());
-        } else {
-            className.append("乐理课•");
-        }
-        className.append(StringUtils.join(studentNames, ","));
-        applyBaseInfo.setName(className.toString());
-
-        applyBaseInfo.setAuditStatus(AuditStatusEnum.PASS);
-        applyBaseInfo.setStatus(VipGroupStatusEnum.PROGRESS);
-
-        if (CollectionUtils.isEmpty(vscps)) {
-            vscps = new ArrayList<>();
-            for (Integer canBuyStudentId : canBuyStudentIds) {
-                vscps.add(new VipGroupStudentCoursePrice(canBuyStudentId, applyBaseInfo.getOnlineClassesUnitPrice(), applyBaseInfo.getOfflineClassesUnitPrice(), applyBaseInfo.getTotalPrice()));
-            }
-        }
-        Teacher teacher = teacherService.get(applyBaseInfo.getUserId());
-        if (Objects.isNull(teacher)) {
-            throw new BizException("教师不存在");
-        }
-
-        //开课时间为排课的第一节课的开始时间
-        applyBaseInfo.setCourseStartDate(firstCourseSchedule.getStartClassTime());
-        //课程结束时间为排课的最后一节课的结束时间
-        applyBaseInfo.setCoursesExpireDate(latestCourseSchedule.getEndClassTime());
-        applyBaseInfo.setStudentNum(studentIdList.size());
-        applyBaseInfo.setPaymentExpireDate(DateUtil.getLastSecondWithDay(applyBaseInfo.getPaymentExpireDate()));
-
-        vipGroupDao.insert(applyBaseInfo);
-
-        //消耗排课资格
-        List<Integer> activityUserMapperIds = activityUserMappers.stream().map(e -> e.getId()).collect(Collectors.toList());
-        int use = activityUserMapperService.use(StringUtils.join(activityUserMapperIds, ","), studentIds, giveFlag ? "GIVE_VIP" : "VIP", applyBaseInfo.getId());
-        if (use != studentIdList.size()) {
-            throw new BizException("VIP课创建失败,请联系管理员");
-        }
-        //是否消耗课程余额
-        if (activity.isPayToBalance() && !giveFlag) {
-            for (ActivityUserMapper userMapper : activityUserMappers) {
-                sysUserCashAccountService.appendCourseBalance(userMapper.getUserId(), userMapper.getActualPrice().negate(),
-                        PlatformCashAccountDetailTypeEnum.PAY_FEE, "活动排课消耗课程余额");
-            }
-        }
-
-        vscps.forEach(e -> e.setVipGroupId(applyBaseInfo.getId()));
-        vipGroupStudentCoursePriceDao.batchInsert(vscps);
-
-        vipGroup.getVipGroupApplyBaseInfo().setId(applyBaseInfo.getId());
-
-        //创建班级信息
-        ClassGroup classGroup = new ClassGroup();
-        classGroup.setSubjectIdList(applyBaseInfo.getSubjectIdList());
-        classGroup.setExpectStudentNum(vipGroupCategory.getStudentNum());
-        classGroup.setStudentNum(studentIdList.size());
-        classGroup.setName(applyBaseInfo.getName());
-        classGroup.setTotalClassTimes(totalClassTimes);
-        classGroup.setType(ClassGroupTypeEnum.VIP);
-        classGroup.setDelFlag(0);
-        classGroup.setGroupType(GroupType.VIP);
-        classGroup.setMusicGroupId(applyBaseInfo.getId().toString());
-        classGroup.setCreateTime(now);
-        classGroup.setUpdateTime(now);
-        classGroupDao.insert(classGroup);
-
-        //班级学员关联记录
-        List<ClassGroupStudentMapper> classGroupStudentMapperList = new ArrayList<>();
-        for (Integer studentId : studentIdList) {
-            ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
-            classGroupStudentMapper.setMusicGroupId(applyBaseInfo.getId().toString());
-            classGroupStudentMapper.setClassGroupId(classGroup.getId());
-            classGroupStudentMapper.setUserId(studentId);
-            classGroupStudentMapper.setCreateTime(now);
-            classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
-            classGroupStudentMapper.setGroupType(GroupType.VIP);
-            classGroupStudentMapperList.add(classGroupStudentMapper);
-        }
-        classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMapperList);
-
-        //计算课程相关费用信息
-        Map<String, BigDecimal> costInfo = countVipGroupPredictFee1(applyBaseInfo, applyBaseInfo.getUserId(), null);
-        if (vipGroup.getGiveFlag()) {
-            applyBaseInfo.setOfflineTeacherSalary(costInfo.get("giveOfflineTeacherSalary"));
-        } else {
-            applyBaseInfo.setOfflineTeacherSalary(costInfo.get("offlineTeacherSalary"));
-        }
-        applyBaseInfo.setTotalPrice(costInfo.get("totalPrice"));
-
-        //创建班级老师关联记录
-        ClassGroupTeacherMapper classGroupTeacherMapper = new ClassGroupTeacherMapper();
-        classGroupTeacherMapper.setMusicGroupId(applyBaseInfo.getId().toString());
-        classGroupTeacherMapper.setClassGroupId(classGroup.getId());
-        classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.BISHOP);
-        classGroupTeacherMapper.setUserId(applyBaseInfo.getUserId());
-        classGroupTeacherMapper.setGroupType(GroupType.VIP);
-        classGroupTeacherMapper.setCreateTime(now);
-        classGroupTeacherMapper.setUpdateTime(now);
-        classGroupTeacherMapperDao.insert(classGroupTeacherMapper);
-
-        //创建班级与老师课酬记录
-        ClassGroupTeacherSalary classGroupTeacherSalary = new ClassGroupTeacherSalary();
-        classGroupTeacherSalary.setMusicGroupId(applyBaseInfo.getId().toString());
-        classGroupTeacherSalary.setClassGroupId(classGroup.getId());
-        classGroupTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
-        classGroupTeacherSalary.setUserId(applyBaseInfo.getUserId());
-        classGroupTeacherSalary.setSalary(applyBaseInfo.getOfflineTeacherSalary());
-        classGroupTeacherSalary.setOnlineClassesSalary(applyBaseInfo.getOfflineTeacherSalary());
-        classGroupTeacherSalary.setGroupType(GroupType.VIP);
-        classGroupTeacherSalary.setCreateTime(now);
-        classGroupTeacherSalary.setUpdateTime(now);
-        classGroupTeacherSalaryDao.insert(classGroupTeacherSalary);
-
-        //创建课程
-        List<CourseSchedule> courseSchedules = vipGroup.getCourseSchedules();
-        for (CourseSchedule courseSchedule : courseSchedules) {
-            courseSchedule.setGroupType(GroupType.VIP);
-            courseSchedule.setMusicGroupId(applyBaseInfo.getId().toString());
-            if (courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)) {
-                courseSchedule.setSchoolId(vipGroup.getVipGroupApplyBaseInfo().getTeacherSchoolId());
-            }
-            courseSchedule.setTeacherId(applyBaseInfo.getUserId());
-            courseSchedule.setActualTeacherId(applyBaseInfo.getUserId());
-            courseSchedule.setStatus(CourseStatusEnum.NOT_START);
-            courseSchedule.setType(CourseSchedule.CourseScheduleType.VIP);
-            courseSchedule.setClassGroupId(classGroup.getId());
-            courseSchedule.setName(applyBaseInfo.getName());
-            courseSchedule.setOrganId(applyBaseInfo.getOrganId());
-        }
-        courseScheduleService.batchAddCourseSchedule(courseSchedules);
-
-        //创建老师单节课课酬信息
-        List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<>();
-        //课程信息调整
-        for (CourseSchedule courseSchedule : courseSchedules) {
-            courseSchedule.setGroupType(GroupType.VIP);
-            courseSchedule.setMusicGroupId(applyBaseInfo.getId().toString());
-            if (courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)) {
-                courseSchedule.setSchoolId(vipGroup.getVipGroupApplyBaseInfo().getTeacherSchoolId());
-            }
-            courseSchedule.setTeacherId(applyBaseInfo.getUserId());
-            courseSchedule.setActualTeacherId(applyBaseInfo.getUserId());
-            courseSchedule.setStatus(CourseStatusEnum.NOT_START);
-            courseSchedule.setType(CourseSchedule.CourseScheduleType.VIP);
-            courseSchedule.setClassGroupId(classGroup.getId());
-            courseSchedule.setName(applyBaseInfo.getName());
-            courseSchedule.setOrganId(applyBaseInfo.getOrganId());
-
-            //创建教师课程薪水记录
-            CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
-            courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
-            courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
-            courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
-            courseScheduleTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
-            courseScheduleTeacherSalary.setUserId(courseSchedule.getActualTeacherId().intValue());
-            courseScheduleTeacherSalary.setClassGroupId(courseSchedule.getClassGroupId());
-            courseScheduleTeacherSalary.setExpectSalary(classGroupTeacherSalary.getSalary());
-            courseScheduleTeacherSalary.setActualSalary(null);
-            courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
-        }
-        if (courseScheduleTeacherSalaries.size() > 0) {
-            courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaries);
-        }
-
-        applyBaseInfo.setCourseSchedulesJson(JSON.toJSONString(vipGroup.getCourseSchedules()));
-        vipGroupDao.update(applyBaseInfo);
-
-        List<ClassGroupStudentMapper> classGroupStudents = classGroupStudentMapperDao.findByClassGroup(classGroup.getId());
-
-        Map<Integer, String> userRoleMap = new HashMap<>();
-        if (Objects.nonNull(applyBaseInfo.getEducationalTeacherId())) {
-            userRoleMap.put(applyBaseInfo.getEducationalTeacherId(), "乐团主管");
-        }
-        userRoleMap.put(applyBaseInfo.getUserId(), "指导老师");
-//		StudentPaymentOrder studentPaymentOrder = null;
-        VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.getByVipGroup(applyBaseInfo.getId());
-        if (Objects.isNull(vipGroupDefaultClassesUnitPrice)) {
-            throw new BizException("课程单价设置错误");
-        }
-//		if(!vipGroup.getGiveFlag()){
-//			studentPaymentOrder = studentPaymentOrderDao.get(activityUserMappers.get(0).getPaymentOrderId());
-//			studentPaymentOrder.setMusicGroupId(applyBaseInfo.getId().toString());
-//			studentPaymentOrder.setClassGroupId(classGroup.getId());
-//			studentPaymentOrderDao.update(studentPaymentOrder);
-//		}
-        //生成学生单课缴费信息
-        List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
-        Map<Integer, List<ActivityUserMapper>> collect = activityUserMappers.stream().collect(Collectors.groupingBy(ActivityUserMapper::getUserId));
-        for (ClassGroupStudentMapper classGroupStudent : classGroupStudents) {
-            if (vipGroup.getGiveFlag()) {
-                for (CourseSchedule courseSchedule : courseSchedules) {
-                    CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
-                    courseScheduleStudentPayment.setUserId(classGroupStudent.getUserId());
-                    courseScheduleStudentPayment.setGroupType(courseSchedule.getGroupType());
-                    courseScheduleStudentPayment.setMusicGroupId(courseSchedule.getMusicGroupId());
-                    courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
-                    courseScheduleStudentPayment.setClassGroupId(courseSchedule.getClassGroupId());
-                    courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
-                    courseScheduleStudentPayment.setOriginalPrice(TeachModeEnum.ONLINE.equals(courseSchedule.getTeachMode()) ? vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice() : vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice());
-                    courseScheduleStudentPayment.setActualPrice(BigDecimal.ZERO);
-                    courseScheduleStudentPayments.add(courseScheduleStudentPayment);
-                }
-            } else {
-                ActivityUserMapper activityUserMapper = collect.get(classGroupStudent.getUserId()).get(0);
-                //实际支付金额,去除优惠券
-                BigDecimal totalAmount = activityUserMapper.getActualPrice();
-                BigDecimal singleAmount = totalAmount.divide(new BigDecimal(courseSchedules.size()), ROUND_DOWN);
-                BigDecimal firstSingleAmount = totalAmount.subtract(singleAmount.multiply(new BigDecimal(courseSchedules.size()))).add(singleAmount);
-                for (int i = 0; i < courseSchedules.size(); i++) {
-                    CourseSchedule courseSchedule = courseSchedules.get(i);
-                    CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
-                    courseScheduleStudentPayment.setUserId(classGroupStudent.getUserId());
-                    courseScheduleStudentPayment.setGroupType(courseSchedule.getGroupType());
-                    courseScheduleStudentPayment.setMusicGroupId(courseSchedule.getMusicGroupId());
-                    courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
-                    courseScheduleStudentPayment.setClassGroupId(courseSchedule.getClassGroupId());
-                    if (i == 0) {
-                        courseScheduleStudentPayment.setExpectPrice(firstSingleAmount);
-                    } else {
-                        courseScheduleStudentPayment.setExpectPrice(singleAmount);
-                    }
-                    courseScheduleStudentPayment.setOriginalPrice(TeachModeEnum.ONLINE.equals(courseSchedule.getTeachMode()) ? vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice() : vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice());
-                    courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
-                    courseScheduleStudentPayments.add(courseScheduleStudentPayment);
-                }
-            }
-            userRoleMap.put(classGroupStudent.getUserId(), null);
-        }
-        if (courseScheduleStudentPayments.size() > 0) {
-            courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
-            studentDao.updateStudentServiceTag(null, studentIdList, YesOrNoEnum.YES.getCode());
-        }
-//		courseScheduleService.checkNewCourseSchedules(courseSchedules, false,false);
-        try {
-            imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), classGroup.getName(),
-                    applyBaseInfo.getName(), null, null, GroupType.VIP.getCode(), ImGroup.GroupTypeEnum.VIP);
-            imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
-            imUserFriendService.refreshGroupImUserFriend(classGroup.getMusicGroupId(), classGroup.getGroupType());
-//			SysUser sysUser = teacherDao.getUser(applyBaseInfo.getUserId());
-//			//发送推送
-//			Map<Integer,String> map = new HashMap<>(1);
-//			map.put(applyBaseInfo.getUserId(),sysUser.getPhone());
-//			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,MessageTypeEnum.CHILDREN_DAY_VIP_COURSE_TEACHER_PUSH,
-//					map,null,0,"","TEACHER", StringUtils.join(studentNames, ","),applyBaseInfo.getName());
-//
-//			Map<Integer,String> studentIdStrMap = new HashMap<>(1);
-//			studentIdList.forEach(id->studentIdStrMap.put(id, id.toString()));
-//			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.CHILDREN_DAY_VIP_COURSE_STUDENT_PUSH, studentIdStrMap, null, 0, "","STUDENT",
-//					applyBaseInfo.getName());
-        } catch (Exception e) {
-            e.printStackTrace();
-            LOGGER.error("消息发送失败:{}", e);
-        }
-        return BaseController.succeed(applyBaseInfo.getAuditStatus().getCode());
-    }
-
-    @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResponseResult importActivityVipGroup(String data) {
         if (StringUtils.isBlank(data)) {
@@ -3016,11 +2608,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
             }
         }
         //退还活动购买
-        ActivityUserMapper activityUserMapper = activityUserMapperService.findByStudentId(vipGroup.getId(), studentId);
-        HttpResponseResult result = groupClassService.quitActivityGive(activityUserMapper, returnFeeDto.getConfirmReturnActivityGive(), vipGroup.getId(), VIP);
-        if (result.getCode() != 200) {
-            return result;
-        }
+//        groupClassService.quitActivityGive(activityUserMapperService.findByStudentId(vipGroup.getId(), studentId));
 
         if (classStudentMapperByUserIdAndClassGroupId.getStatus().equals(ClassGroupStudentStatusEnum.QUIT_SCHOOL)) {
             classStudentMapperByUserIdAndClassGroupId.setStatus(ClassGroupStudentStatusEnum.QUIT);
@@ -3174,8 +2762,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 //			}
         }
         //退还活动购买
-        ActivityUserMapper activityUserMapper = activityUserMapperService.findByStudentId(vipGroup.getId(), studentId);
-        HttpResponseResult result = groupClassService.quitActivityGive(activityUserMapper, returnFeeDto.getConfirmReturnActivityGive(), vipGroup.getId(), VIP);
+//        ActivityUserMapper activityUserMapper = activityUserMapperService.findByStudentId(vipGroup.getId(), studentId);
+//        HttpResponseResult result = groupClassService.quitActivityGive(activityUserMapper, returnFeeDto.getConfirmReturnActivityGive(), vipGroup.getId(), VIP);
 
         if (classStudentMapperByUserIdAndClassGroupId.getStatus().equals(ClassGroupStudentStatusEnum.QUIT_SCHOOL)) {
             classStudentMapperByUserIdAndClassGroupId.setStatus(ClassGroupStudentStatusEnum.QUIT);
@@ -3286,7 +2874,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
         studentPauseInfoDao.insert(studentPauseInfo);
 
-        sysUserCashAccountService.appendCourseBalance(studentId, surplusCourseFee, PlatformCashAccountDetailTypeEnum.REFUNDS, "学生休学剩余课时转化为课程余额");
+//        sysUserCashAccountService.appendCourseBalance(studentId, surplusCourseFee, PlatformCashAccountDetailTypeEnum.REFUNDS, "学生休学剩余课时转化为课程余额");
+
         classStudentMapperByUserIdAndClassGroupId.setStatus(ClassGroupStudentStatusEnum.QUIT_SCHOOL);
         classGroupStudentMapperDao.update(classStudentMapperByUserIdAndClassGroupId);
 
@@ -3294,8 +2883,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
             studentAttendanceDao.deleteByCourseAndUser(courseScheduleIds, studentId);
         }
 
-        List<Integer> studentPaymentIds = courseScheduleStudentPaymentDao.findNotStartCourseStudentPaymentIdsWithClassGroupAndStudent(classGroup.getId(), studentId);
-        if (!CollectionUtils.isEmpty(studentPaymentIds)) {
+        List<CourseScheduleStudentPayment> studentPayments = courseScheduleStudentPaymentDao.findNotStartCourseStudentPaymentsWithClassGroupAndStudent(classGroup.getId(), studentId);
+        if (!CollectionUtils.isEmpty(studentPayments)) {
+            //学员休学转化排课资格
+            activityUserMapperService.subCourseConvert(studentPayments,studentId,vipGroup.getSingleClassMinutes(),vipGroup.getVipGroupCategoryId());
+            List<Integer> studentPaymentIds = studentPayments.stream().map(e -> e.getId().intValue()).collect(Collectors.toList());
             courseScheduleStudentPaymentDao.batchDeleteWithID(studentPaymentIds);
         }
 
@@ -3552,31 +3144,31 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         BigDecimal bigDecimal;
         List<StudentCourseInfoDto> userCourseInfos = new ArrayList<>();
         //是否关联活动
-        if (vipGroup.getVipGroupActivityId() != null) {
-            ActivityUserMapper activityUserMapper = activityUserMapperService.findByStudentId(vipGroupId, studentId);
-            if (activityUserMapper != null && !activityUserMapper.getReturnFee()) {
-                if (Objects.nonNull(activityUserMapper.getVipGroupId())) {
-                    VipGroup group = vipGroupDao.get(vipGroupId);
-                    vipGroupCategory = vipGroupCategoryService.get(group.getVipGroupCategoryId().intValue());
-                    userCourseInfos.addAll(courseScheduleDao.findUserCourseInfos(GroupType.VIP, activityUserMapper.getVipGroupId(), studentId, null));
-                }
-                if (Objects.nonNull(activityUserMapper.getGiveVipGroupId())) {
-                    userCourseInfos.addAll(courseScheduleDao.findUserCourseInfos(GroupType.VIP, activityUserMapper.getGiveVipGroupId(), studentId, null));
-                }
-                if (Objects.nonNull(activityUserMapper.getPracticeGroupId())) {
-                    vipGroupCategory = vipGroupCategoryService.get(1);
-                    userCourseInfos.addAll(courseScheduleDao.findUserCourseInfos(GroupType.PRACTICE, activityUserMapper.getPracticeGroupId(), studentId, null));
-                }
-                if (Objects.nonNull(activityUserMapper.getGivePracticeGroupId())) {
-                    userCourseInfos.addAll(courseScheduleDao.findUserCourseInfos(GroupType.PRACTICE, activityUserMapper.getGivePracticeGroupId(), studentId, null));
-                }
-                userCourseInfos.removeAll(Collections.singleton(null));
-            } else {
-                userCourseInfos = courseScheduleDao.findUserCourseInfos(GroupType.VIP, vipGroupId.toString(), studentId, null);
-            }
-        } else {
-            userCourseInfos = courseScheduleDao.findUserCourseInfos(GroupType.VIP, vipGroupId.toString(), studentId, null);
-        }
+//        if (vipGroup.getVipGroupActivityId() != null) {
+//            ActivityUserMapper activityUserMapper = activityUserMapperService.findByStudentId(vipGroupId, studentId);
+//            if (activityUserMapper != null && !activityUserMapper.getReturnFee()) {
+//                if (Objects.nonNull(activityUserMapper.getVipGroupId())) {
+//                    VipGroup group = vipGroupDao.get(vipGroupId);
+//                    vipGroupCategory = vipGroupCategoryService.get(group.getVipGroupCategoryId().intValue());
+//                    userCourseInfos.addAll(courseScheduleDao.findUserCourseInfos(GroupType.VIP, activityUserMapper.getVipGroupId(), studentId, null));
+//                }
+//                if (Objects.nonNull(activityUserMapper.getGiveVipGroupId())) {
+//                    userCourseInfos.addAll(courseScheduleDao.findUserCourseInfos(GroupType.VIP, activityUserMapper.getGiveVipGroupId(), studentId, null));
+//                }
+//                if (Objects.nonNull(activityUserMapper.getPracticeGroupId())) {
+//                    vipGroupCategory = vipGroupCategoryService.get(1);
+//                    userCourseInfos.addAll(courseScheduleDao.findUserCourseInfos(GroupType.PRACTICE, activityUserMapper.getPracticeGroupId(), studentId, null));
+//                }
+//                if (Objects.nonNull(activityUserMapper.getGivePracticeGroupId())) {
+//                    userCourseInfos.addAll(courseScheduleDao.findUserCourseInfos(GroupType.PRACTICE, activityUserMapper.getGivePracticeGroupId(), studentId, null));
+//                }
+//                userCourseInfos.removeAll(Collections.singleton(null));
+//            } else {
+//                userCourseInfos = courseScheduleDao.findUserCourseInfos(GroupType.VIP, vipGroupId.toString(), studentId, null);
+//            }
+//        } else {
+//            userCourseInfos = courseScheduleDao.findUserCourseInfos(GroupType.VIP, vipGroupId.toString(), studentId, null);
+//        }
 
         if (CollectionUtils.isEmpty(userCourseInfos) && vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING)) {
             StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, studentId, DealStatusEnum.SUCCESS.getCode());
@@ -3642,11 +3234,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         return result;
     }
 
-    @Override
-    public List<SurplusCourseFeeDto> getStudentSurplusCourseFee1(SurplusCourseFeeDto feeDto) {
-        //获取所有关联的课程组
-        return courseScheduleStudentPaymentDao.getAllAssociatedCourseGroups(feeDto);
-    }
 
     @Transactional(rollbackFor = Exception.class)
     @Override
@@ -3670,11 +3257,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         if (studentApplyRefunds.getStatus() == StudentApplyRefundsStatus.DONE) {
             //退还活动购买
 
-            ActivityUserMapper activityUserMapper = activityUserMapperService.findByStudentId(vipGroup.getId(), studentPaymentOrder.getUserId());
-            HttpResponseResult result = groupClassService.quitActivityGive(activityUserMapper, confirmReturnActivityGive, id, VIP);
-            if (result.getCode() != 200) {
-                return result;
-            }
+//            ActivityUserMapper activityUserMapper = activityUserMapperService.findByStudentId(vipGroup.getId(), studentPaymentOrder.getUserId());
+//            HttpResponseResult result = groupClassService.quitActivityGive(activityUserMapper, confirmReturnActivityGive, id, VIP);
+//            if (result.getCode() != 200) {
+//                return result;
+//            }
             studentApplyRefunds.setActualAmount(amount);
         } else {
             studentApplyRefunds.setActualAmount(new BigDecimal(0));

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

@@ -294,9 +294,6 @@
 		SELECT count(id_) FROM activity_user_mapper
 		WHERE activity_id_ = #{activityId} AND user_id_ = #{userId}
 	</select>
-    <select id="findByStudentId" resultMap="ActivityUserMapper">
-		SELECT * FROM activity_user_mapper WHERE (vip_group_id_ = #{groupId} OR give_vip_group_id_ = #{groupId}) AND user_id_ = #{studentId}
-	</select>
 	<select id="findVipUserMapper" resultMap="ActivityUserMapper">
 		SELECT * FROM activity_user_mapper
 		WHERE 1 = 1

+ 11 - 25
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -265,6 +265,17 @@
 			AND cssp.user_id_ = #{userId}
 			AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.pre_course_flag_ = 0
 	</select>
+	<select id="findNotStartCourseStudentPaymentsWithClassGroupAndStudent" resultMap="CourseScheduleStudentPayment">
+		SELECT
+			cssp.*
+		FROM
+			course_schedule_student_payment cssp
+			LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
+		WHERE
+			cssp.class_group_id_ = #{classGroupId}
+			AND cssp.user_id_ = #{userId}
+			AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.pre_course_flag_ = 0
+	</select>
 
     <select id="findVipGroupCoursePrice" resultType="java.math.BigDecimal">
 		SELECT
@@ -1083,29 +1094,4 @@
         </foreach>
         group by cssp.user_id_ , u.organ_id_
 	</select>
-	<resultMap id="SurplusCourseFeeDto" type="com.ym.mec.biz.dal.dto.SurplusCourseFeeDto">
-		<result property="studentId" column="user_id_"/>
-		<result property="groupType" column="group_type_"/>
-		<result property="groupId" column="group_id_"/>
-		<result property="actualPrice" column="actual_price_"/>
-		<result property="coursePrice" column="course_price_"/>
-		<result property="name" column="name_"/>
-		<result property="activityUserMapperId" column="activity_user_mapper_id_"/>
-	</resultMap>
-	<select id="getAllAssociatedCourseGroups" resultMap="SurplusCourseFeeDto">
-		SELECT cssp.group_type_,cssp.music_group_id_ group_id_,GROUP_CONCAT(DISTINCT cssp.activity_user_mapper_id_) activity_user_mapper_id_,
-		SUM(CASE WHEN cs.status_ = 'NOT_START' THEN am.actual_price_ ELSE 0 END) actual_price_,SUM(am.sub_no_course_price_) course_price_,
-		CASE WHEN vg.id_ IS NULL THEN pg.name_ ELSE vg.name_ END name_
-		FROM (SELECT group_type_,music_group_id_ FROM course_schedule_student_payment
-		WHERE activity_user_mapper_id_ IN (SELECT DISTINCT activity_user_mapper_id_
-		FROM course_schedule_student_payment
-		WHERE music_group_id_ = #{feeDto.groupId} AND group_type_ = #{feeDto.groupType} AND user_id_ = #{feeDto.studentId}) GROUP BY group_type_,music_group_id_) aum
-		LEFT JOIN course_schedule_student_payment cssp ON aum.music_group_id_ = cssp.music_group_id_ AND aum.group_type_ = cssp.group_type_
-		LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
-		LEFT JOIN activity_user_mapper am ON am.id_ = cssp.activity_user_mapper_id_
-		LEFT JOIN vip_group vg ON vg.id_ = cssp.music_group_id_ AND cssp.group_type_ = 'VIP'
-		LEFT JOIN practice_group pg on pg.id_ = cssp.music_group_id_ AND cssp.group_type_ = 'PRACTICE'
-		WHERE am.return_fee_ = 0 AND cssp.user_id_ = #{feeDto.studentId}
-		GROUP BY cssp.group_type_,cssp.music_group_id_
-	</select>
 </mapper>

+ 0 - 16
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherPracticeGroupController.java

@@ -57,22 +57,6 @@ public class TeacherPracticeGroupController extends BaseController {
 		return succeed(results);
 	}
 
-	@ApiOperation(value = "教师端网管课活动排课")
-	@PostMapping("/createPracticeGroup")
-	public Object createPracticeGroup(@RequestBody PracticeGroupApplyDto practiceGroupApplyDto){
-		PracticeGroupApplyBaseInfoDto applyBaseInfo = practiceGroupApplyDto.getPracticeGroupApplyBaseInfoDto();
-		applyBaseInfo.setUserId(sysUserService.getUserId());
-		SysUser student = teacherDao.getUser(applyBaseInfo.getStudentId());
-		if(Objects.isNull(student)||Objects.isNull(student.getOrganId())){
-			return failed("学员信息异常");
-		}
-		applyBaseInfo.setOrganId(student.getOrganId());
-		for (CourseSchedule courseSchedule : practiceGroupApplyDto.getCourseSchedules()) {
-			courseSchedule.setEndClassTime(DateUtil.addMinutes(courseSchedule.getStartClassTime(), applyBaseInfo.getSingleClassMinutes()));
-		}
-		return practiceGroupService.createActivityPracticeGroup(practiceGroupApplyDto);
-	}
-
 
 	@ApiOperation(value = "网管课申请")
 	@PostMapping("/practiceGroupApply")

+ 0 - 31
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherVipGroupController.java

@@ -244,35 +244,4 @@ public class TeacherVipGroupController extends BaseController {
 		vipGroupApplyDto.getVipGroupApplyBaseInfo().setEducationalTeacherId(sysUser.getId());
 		return vipGroupService.createActivityVipGroup(vipGroupApplyDto);
 	}
-
-	@ApiOperation(value = "教师端活动排课")
-	@PostMapping("/createVipGroup")
-	public Object createVipGroup(@RequestBody VipGroupApplyDto vipGroupApplyDto){
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed("用户信息获取失败");
-		}
-		VipGroupApplyBaseInfoDto applyBaseInfo = vipGroupApplyDto.getVipGroupApplyBaseInfo();
-		Integer userId = sysUser.getId();
-		applyBaseInfo.setUserId(userId);
-		Teacher teacher = teacherDao.get(userId);
-		if(Objects.isNull(teacher)){
-			return failed("请指定指导老师!");
-		}
-		Integer firstStudentId = applyBaseInfo.getFirstStudentId();
-		SysUser student = teacherDao.getUser(firstStudentId);
-		if(Objects.isNull(student)||Objects.isNull(student.getOrganId())){
-			return failed("学员信息异常");
-		}
-		applyBaseInfo.setOrganId(student.getOrganId());
-		for (CourseSchedule courseSchedule : vipGroupApplyDto.getCourseSchedules()) {
-			courseSchedule.setEndClassTime(DateUtil.addMinutes(courseSchedule.getStartClassTime(), applyBaseInfo.getSingleClassMinutes()));
-		}
-		VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.getByVipGroupCategory(applyBaseInfo.getVipGroupCategoryId(), applyBaseInfo.getOrganId());
-		if(Objects.nonNull(vipGroupDefaultClassesUnitPrice)){
-			applyBaseInfo.setOnlineClassesUnitPrice(vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice());
-			applyBaseInfo.setOfflineClassesUnitPrice(vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice());
-		}
-		return vipGroupService.createActivityVipGroup1(vipGroupApplyDto);
-	}
 }

+ 0 - 7
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

@@ -414,11 +414,4 @@ public class VipGroupManageController extends BaseController {
     public Object getStudentSurplusCourseFee(Long vipGroupId, Integer studentId){
         return succeed(vipGroupService.getStudentSurplusCourseFee(vipGroupId,studentId));
     }
-
-
-    @ApiOperation(value = "获取学生指定vip课的剩余课时费用")
-    @PostMapping(value = "/getStudentSurplusCourseFee1")
-    public HttpResponseResult<List<SurplusCourseFeeDto>> getStudentSurplusCourseFee(@RequestBody SurplusCourseFeeDto feeDto){
-        return succeed(vipGroupService.getStudentSurplusCourseFee1(feeDto));
-    }
 }

+ 0 - 54
mec-web/src/main/java/com/ym/mec/web/controller/education/ActivityController.java

@@ -106,60 +106,6 @@ public class ActivityController extends BaseController {
         return succeed(vipGroupActivityService.getActivityStudentCanCourseNum(queryInfo));
     }
 
-
-    @ApiOperation(value = "管理端活动排课")
-    @PostMapping("/createVipGroup")
-    public Object createVipGroup(@RequestBody VipGroupApplyDto vipGroupApplyDto){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        VipGroupApplyBaseInfoDto applyBaseInfo = vipGroupApplyDto.getVipGroupApplyBaseInfo();
-        if(applyBaseInfo.getUserId() == null){
-            return failed("请指定指导老师!");
-        }
-        Integer firstStudentId = applyBaseInfo.getFirstStudentId();
-        SysUser student = teacherDao.getUser(firstStudentId);
-        if(Objects.isNull(student) || Objects.isNull(student.getOrganId())){
-            return failed("学员信息异常");
-        }
-        applyBaseInfo.setOrganId(student.getOrganId());
-        for (CourseSchedule courseSchedule : vipGroupApplyDto.getCourseSchedules()) {
-            courseSchedule.setEndClassTime(DateUtil.addMinutes(courseSchedule.getStartClassTime(), applyBaseInfo.getSingleClassMinutes()));
-        }
-        VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.getByVipGroupCategory(applyBaseInfo.getVipGroupCategoryId(), applyBaseInfo.getOrganId());
-        if(Objects.nonNull(vipGroupDefaultClassesUnitPrice)){
-            applyBaseInfo.setOnlineClassesUnitPrice(vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice());
-            applyBaseInfo.setOfflineClassesUnitPrice(vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice());
-        }
-
-        applyBaseInfo.setEducationalTeacherId(sysUser.getId());
-        return vipGroupService.createActivityVipGroup1(vipGroupApplyDto);
-    }
-
-    @ApiOperation(value = "管理端网管课活动排课")
-    @PostMapping("/createPracticeGroup")
-    public Object createPracticeGroup(@RequestBody PracticeGroupApplyDto practiceGroupApplyDto){
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        PracticeGroupApplyBaseInfoDto applyBaseInfo = practiceGroupApplyDto.getPracticeGroupApplyBaseInfoDto();
-        if(applyBaseInfo.getUserId() == null){
-            return failed("请指定指导老师!");
-        }
-        SysUser student = teacherDao.getUser(applyBaseInfo.getStudentId());
-        if(Objects.isNull(student)||Objects.isNull(student.getOrganId())){
-            return failed("学员信息异常");
-        }
-        applyBaseInfo.setOrganId(student.getOrganId());
-        for (CourseSchedule courseSchedule : practiceGroupApplyDto.getCourseSchedules()) {
-            courseSchedule.setEndClassTime(DateUtil.addMinutes(courseSchedule.getStartClassTime(), applyBaseInfo.getSingleClassMinutes()));
-        }
-        applyBaseInfo.setEducationalTeacherId(sysUser.getId());
-        return practiceGroupService.createActivityPracticeGroup(practiceGroupApplyDto);
-    }
-
     @ApiOperation(value = "分部双11活动统计")
     @GetMapping("/organDoubleEleven2021Statis")
     public HttpResponseResult organDoubleEleven2021Statis(OrganDoubleEleven2021StatisDto queryInfo){