فهرست منبع

Merge branch 'feature/0529-live' of http://git.dayaedu.com/yonge/mec into feature/0529-live

liujc 2 سال پیش
والد
کامیت
e8a0f7c532

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

@@ -478,7 +478,7 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
 
     Integer countByUserIdsAndClassIds(@Param("studentIds") String studentIds, @Param("oldClassId") Integer oldClassId);
     
-    List<VipGroupClassGroupMapper> queryWaitCancelVipGroup();
+    List<VipGroupClassGroupMapper> queryWaitCancelVipGroup(@Param("groupType") String groupType);
 
     List<ClassGroupStudentMapper> findByVipGroups(@Param("groupIds") List<Long> groupIds);
 

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

@@ -317,7 +317,7 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
      *
      * @return
      */
-    List<VipGroup> queryRequiredOverList();
+    List<VipGroup> queryRequiredOverList(@Param("groupType") String groupType);
 
     /**
      * @return java.util.List<com.ym.mec.biz.dal.entity.VipGroup>
@@ -325,7 +325,7 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
      * @author Joburgess
      * @date 2019/12/3
      */
-    List<VipGroup> queryNormalStatusList();
+    List<VipGroup> queryNormalStatusList(@Param("groupType") String groupType);
 
     int countUserRepeatVipGroupInCourseStartEndTime(@Param("userId") Integer userId,
                                                     @Param("courseStartDate") Date courseStartDate,

+ 5 - 132
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentAttendanceQueryInfo.java

@@ -1,17 +1,18 @@
 package com.ym.mec.biz.dal.page;
 
-import io.swagger.annotations.ApiModelProperty;
-
-import java.util.Date;
-
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
 
 /**
  * @Author Joburgess
  * @Date 2019/9/12
  */
+@Data
 public class StudentAttendanceQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "学生ID",required = false)
@@ -60,132 +61,4 @@ public class StudentAttendanceQueryInfo extends QueryInfo {
     private Boolean visitFlag;
 
     private Boolean orderFlag;
-
-    public Boolean getOrderFlag() {
-        return orderFlag;
-    }
-
-    public void setOrderFlag(Boolean orderFlag) {
-        this.orderFlag = orderFlag;
-    }
-
-    public Boolean getVisitFlag() {
-        return visitFlag;
-    }
-
-    public void setVisitFlag(Boolean visitFlag) {
-        this.visitFlag = visitFlag;
-    }
-
-    public String getIds() {
-        return ids;
-    }
-
-    public void setIds(String ids) {
-        this.ids = ids;
-    }
-
-    public Long getCourseScheduleId() {
-        return courseScheduleId;
-    }
-
-    public void setCourseScheduleId(Long courseScheduleId) {
-        this.courseScheduleId = courseScheduleId;
-    }
-
-    public StudentAttendanceStatusEnum getFilterStatus() {
-        return filterStatus;
-    }
-
-    public void setFilterStatus(StudentAttendanceStatusEnum filterStatus) {
-        this.filterStatus = filterStatus;
-    }
-
-    public Integer getStudentID() {
-		return studentID;
-	}
-
-	public void setStudentID(Integer studentID) {
-		this.studentID = studentID;
-	}
-
-	public Integer getTeacherId() {
-		return teacherId;
-	}
-
-	public void setTeacherId(Integer teacherId) {
-		this.teacherId = teacherId;
-	}
-
-	public String getCourseScheduleType() {
-		return courseScheduleType;
-	}
-
-	public void setCourseScheduleType(String courseScheduleType) {
-		this.courseScheduleType = courseScheduleType;
-	}
-
-	public Long getMusicGroupId() {
-        return musicGroupId;
-    }
-
-    public void setMusicGroupId(Long musicGroupId) {
-        this.musicGroupId = musicGroupId;
-    }
-
-    public String getGroupType() {
-		return groupType;
-	}
-
-	public void setGroupType(String groupType) {
-		this.groupType = groupType;
-	}
-
-	public Long getClassGroupId() {
-        return classGroupId;
-    }
-
-    public void setClassGroupId(Long classGroupId) {
-        this.classGroupId = classGroupId;
-    }
-
-    public StudentAttendanceStatusEnum getStatus() {
-        return status;
-    }
-
-    public void setStatus(StudentAttendanceStatusEnum status) {
-        this.status = status;
-    }
-
-	public CourseStatusEnum getCourseStatus() {
-		return courseStatus;
-	}
-
-	public void setCourseStatus(CourseStatusEnum courseStatus) {
-		this.courseStatus = courseStatus;
-	}
-
-	public Date getStartDateOfCourse() {
-		return startDateOfCourse;
-	}
-
-	public void setStartDateOfCourse(Date startDateOfCourse) {
-		this.startDateOfCourse = startDateOfCourse;
-	}
-
-	public Date getEndDateOfCourse() {
-		return endDateOfCourse;
-	}
-
-	public void setEndDateOfCourse(Date endDateOfCourse) {
-		this.endDateOfCourse = endDateOfCourse;
-	}
-
-	public String getOrganId() {
-		return organId;
-	}
-
-	public void setOrganId(String organId) {
-		this.organId = organId;
-	}
 }

+ 3 - 23
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentManageVipClassQueryInfo.java

@@ -2,7 +2,9 @@ package com.ym.mec.biz.dal.page;
 
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
+@Data
 public class StudentManageVipClassQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "学生id",required = true)
@@ -14,27 +16,5 @@ public class StudentManageVipClassQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "vip课状态",required = true)
     private String vipGroupStatus;
 
-    public Integer getStudentId() {
-        return studentId;
-    }
-
-    public void setStudentId(Integer studentId) {
-        this.studentId = studentId;
-    }
-
-    public String getVipGroupName() {
-        return vipGroupName;
-    }
-
-    public void setVipGroupName(String vipGroupName) {
-        this.vipGroupName = vipGroupName;
-    }
-
-    public String getVipGroupStatus() {
-        return vipGroupStatus;
-    }
-
-    public void setVipGroupStatus(String vipGroupStatus) {
-        this.vipGroupStatus = vipGroupStatus;
-    }
+    private String groupType = "VIP";
 }

+ 2 - 104
mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherCloseQueryInfo.java

@@ -3,7 +3,9 @@ package com.ym.mec.biz.dal.page;
 import com.ym.mec.biz.dal.enums.JobNatureEnum;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
+@Data
 public class TeacherCloseQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "考勤编号列表")
     private String teacherAttendanceId;
@@ -43,108 +45,4 @@ public class TeacherCloseQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "考勤状态,ERR_ATTENDANCE,NO_ATTENDANCE")
     private String attendanceStatus;
-
-    public String getAttendanceStatus() {
-        return attendanceStatus;
-    }
-
-    public void setAttendanceStatus(String attendanceStatus) {
-        this.attendanceStatus = attendanceStatus;
-    }
-
-    public JobNatureEnum getJobNature() {
-        return jobNature;
-    }
-
-    public void setJobNature(JobNatureEnum jobNature) {
-        this.jobNature = jobNature;
-    }
-
-    public String getTeacherAttendanceId() {
-        return teacherAttendanceId;
-    }
-
-    public void setTeacherAttendanceId(String teacherAttendanceId) {
-        this.teacherAttendanceId = teacherAttendanceId;
-    }
-
-    public String getCourseScheduleStatus() {
-        return courseScheduleStatus;
-    }
-
-    public void setCourseScheduleStatus(String courseScheduleStatus) {
-        this.courseScheduleStatus = courseScheduleStatus;
-    }
-
-    public String getSignOutStatus() {
-        return signOutStatus;
-    }
-
-    public void setSignOutStatus(String signOutStatus) {
-        this.signOutStatus = signOutStatus;
-    }
-
-    public String getOrganId() {
-        return organId;
-    }
-
-    public void setOrganId(String organId) {
-        this.organId = organId;
-    }
-
-    public String getSignInStatus() {
-        return signInStatus;
-    }
-
-    public void setSignInStatus(String signInStatus) {
-        this.signInStatus = signInStatus;
-    }
-
-    public String getClassGroupName() {
-        return classGroupName;
-    }
-
-    public void setClassGroupName(String classGroupName) {
-        this.classGroupName = classGroupName;
-    }
-
-    public String getCourseStartDate() {
-        return courseStartDate;
-    }
-
-    public void setCourseStartDate(String courseStartDate) {
-        this.courseStartDate = courseStartDate;
-    }
-
-    public String getCourseEndDate() {
-        return courseEndDate;
-    }
-
-    public void setCourseEndDate(String courseEndDate) {
-        this.courseEndDate = courseEndDate;
-    }
-
-    public String getTeacherRole() {
-        return teacherRole;
-    }
-
-    public void setTeacherRole(String teacherRole) {
-        this.teacherRole = teacherRole;
-    }
-
-    public String getCourseScheduleType() {
-        return courseScheduleType;
-    }
-
-    public void setCourseScheduleType(String courseScheduleType) {
-        this.courseScheduleType = courseScheduleType;
-    }
-
-    public Integer getTeacherId() {
-        return teacherId;
-    }
-
-    public void setTeacherId(Integer teacherId) {
-        this.teacherId = teacherId;
-    }
 }

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

@@ -3853,7 +3853,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             queryInfo.setGroupType(MUSIC);
         }
         PageInfo<ClassGroupTeachersDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-        Map<String, Object> params = new HashMap<String, Object>();
         if(queryInfo.getMainTeacherUserId() != null){
             //获取主教老师对应的班级编号列表
             List<Integer> classIdList = classGroupTeacherMapperService.getDao().queryClassIdByTeacher(queryInfo.getGroupType(),queryInfo.getMainTeacherUserId());
@@ -3862,6 +3861,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
             queryInfo.setClassGroupIdList(classIdList);
         }
+        Map<String, Object> params = new HashMap<String, Object>();
         int count = this.countClassGroupPage(params,queryInfo);
 
         List<ClassGroupTeachersDto> dataList = null;

+ 102 - 90
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -4551,98 +4551,110 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         if(!CollectionUtils.isEmpty(vipGroups)){
             //排课
             for (VipGroup vipGroup : vipGroups) {
-                ClassGroup classGroup = classGroupDao.findByVipGroup(vipGroup.getId(),vipGroup.getGroupType());
-                List<ClassGroupStudentMapper> classGroupStudents = classGroupStudentMapperDao.findByClassGroup(classGroup.getId());
-                if(CollectionUtils.isEmpty(classGroupStudents)){
-                    vipGroup.setStatus(VipGroupStatusEnum.CANCEL);
-                }else {
-                    vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
-                    Integer tenantId = vipGroup.getTenantId();
-                    classGroup.setDelFlag(0);
-                    VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.getByVipGroupCategory(vipGroup.getVipGroupCategoryId(),
-                            null, vipGroup.getGroupType(),tenantId);
-                    //生成课表
-                    List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(), CourseSchedule.class);
-                    classGroup.setTotalClassTimes(courseSchedules.size());
-                    courseScheduleService.batchAddCourseSchedule1(courseSchedules);
-                    //考勤信息
-                    List<TeacherAttendance> teacherAttendances = new ArrayList<>();
-                    //创建课酬信息
-                    List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<>();
-                    Map<String, BigDecimal> stringBigDecimalMap = countVipGroupPredictFee1(vipGroup, vipGroup.getUserId());
-                    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(stringBigDecimalMap.get("offlineTeacherSalary"));
-                        courseScheduleTeacherSalary.setActualSalary(null);
-                        courseScheduleTeacherSalary.setTenantId(tenantId);
-                        courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
-
-                        TeacherAttendance teacherAttendance = new TeacherAttendance();
-                        teacherAttendance.setGroupType(courseSchedule.getGroupType());
-                        teacherAttendance.setClassGroupId(courseSchedule.getClassGroupId());
-                        teacherAttendance.setMusicGroupId(courseSchedule.getMusicGroupId());
-                        teacherAttendance.setTeacherId(courseSchedule.getActualTeacherId());
-                        teacherAttendance.setCourseScheduleId(courseSchedule.getId());
-                        teacherAttendance.setTenantId(tenantId);
-                        teacherAttendances.add(teacherAttendance);
-                    }
-                    courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
-                    teacherAttendanceDao.batchInsert(teacherAttendances);
-
-                    //群聊数据
-                    Map<Integer, String> userRoleMap = new HashMap<Integer, String>(5);
-                    if (Objects.nonNull(vipGroup.getEducationalTeacherId())) {
-                        userRoleMap.put(vipGroup.getEducationalTeacherId(), "乐团主管");
-                    }
-                    userRoleMap.put(vipGroup.getUserId(), "指导老师");
-                    //生成课程学员关联
-                    List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
-                    List<Integer> studentIdList = classGroupStudents.stream().map(e -> e.getUserId()).collect(Collectors.toList());
-                    for (ClassGroupStudentMapper classGroupStudent : classGroupStudents) {
-                        StudentPaymentOrder successOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroup.getId(), classGroupStudent.getUserId(), "SUCCESS","VIP".equals(vipGroup.getGroupType())?"SMALL_CLASS_TO_BUY":"LIVE_GROUP_BUY");
-                        //实际支付金额,去除优惠券
-                        BigDecimal actualPrice = successOrder.getExpectAmount();
-                        BigDecimal divide = actualPrice.divide(new BigDecimal(courseSchedules.size()), ROUND_DOWN);
-                        BigDecimal firstAmount = actualPrice.subtract(divide.multiply(new BigDecimal(courseSchedules.size()))).add(divide);
-                        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(firstAmount);
-                            } else {
-                                courseScheduleStudentPayment.setExpectPrice(divide);
-                            }
-                            courseScheduleStudentPayment.setOriginalPrice(vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice());
-                            courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
-                            courseScheduleStudentPayments.add(courseScheduleStudentPayment);
-                        }
-                        userRoleMap.put(classGroupStudent.getUserId(), null);
+                try {
+                    ClassGroup classGroup = classGroupDao.findByVipGroup(vipGroup.getId(),vipGroup.getGroupType());
+                    List<ClassGroupStudentMapper> classGroupStudents = classGroupStudentMapperDao.findByClassGroup(classGroup.getId());
+                    if(CollectionUtils.isEmpty(classGroupStudents)){
+                        vipGroup.setStatus(VipGroupStatusEnum.CANCEL);
+                    }else {
+                        //生成课程群聊相关信息
+                        this.liveProgress(vipGroup,classGroup,classGroupStudents);
+                        //推送
+//                        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_VIP_STOP,
+//                                map2, null, 0, 2, "TEACHER", vipGroupName);
                     }
-                    studentDao.updateStudentServiceTag(null, studentIdList, YesOrNoEnum.YES.getCode());
-
-                    courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
+                    vipGroupDao.update(vipGroup);
+                }catch (Exception e){
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
 
-                    imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), classGroup.getName(),
-                            vipGroup.getName(), null, null, vipGroup.getGroupType(), ImGroup.GroupTypeEnum.valueOf(vipGroup.getGroupType()));
-                    imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
-                    imUserFriendService.refreshGroupImUserFriend(classGroup.getMusicGroupId(), classGroup.getGroupType());
-                    classGroupDao.update(classGroup);
+    private void liveProgress(VipGroup vipGroup,ClassGroup classGroup,List<ClassGroupStudentMapper> classGroupStudents){
+        vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
+        Integer tenantId = vipGroup.getTenantId();
+        classGroup.setDelFlag(0);
+        VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.getByVipGroupCategory(vipGroup.getVipGroupCategoryId(),
+                null, vipGroup.getGroupType(),tenantId);
+        //生成课表
+        List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(), CourseSchedule.class);
+        classGroup.setTotalClassTimes(courseSchedules.size());
+        courseScheduleService.batchAddCourseSchedule1(courseSchedules);
+        //考勤信息
+        List<TeacherAttendance> teacherAttendances = new ArrayList<>();
+        //创建课酬信息
+        List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<>();
+        Map<String, BigDecimal> stringBigDecimalMap = countVipGroupPredictFee1(vipGroup, vipGroup.getUserId());
+        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(stringBigDecimalMap.get("offlineTeacherSalary"));
+            courseScheduleTeacherSalary.setActualSalary(null);
+            courseScheduleTeacherSalary.setTenantId(tenantId);
+            courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
+
+            TeacherAttendance teacherAttendance = new TeacherAttendance();
+            teacherAttendance.setGroupType(courseSchedule.getGroupType());
+            teacherAttendance.setClassGroupId(courseSchedule.getClassGroupId());
+            teacherAttendance.setMusicGroupId(courseSchedule.getMusicGroupId());
+            teacherAttendance.setTeacherId(courseSchedule.getActualTeacherId());
+            teacherAttendance.setCourseScheduleId(courseSchedule.getId());
+            teacherAttendance.setTenantId(tenantId);
+            teacherAttendances.add(teacherAttendance);
+        }
+        courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
+        teacherAttendanceDao.batchInsert(teacherAttendances);
+
+        //群聊数据
+        Map<Integer, String> userRoleMap = new HashMap<Integer, String>(5);
+        if (Objects.nonNull(vipGroup.getEducationalTeacherId())) {
+            userRoleMap.put(vipGroup.getEducationalTeacherId(), "乐团主管");
+        }
+        userRoleMap.put(vipGroup.getUserId(), "指导老师");
+        //生成课程学员关联
+        List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
+        List<Integer> studentIdList = classGroupStudents.stream().map(e -> e.getUserId()).collect(Collectors.toList());
+        for (ClassGroupStudentMapper classGroupStudent : classGroupStudents) {
+            StudentPaymentOrder successOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroup.getId(), classGroupStudent.getUserId(), "SUCCESS","VIP".equals(vipGroup.getGroupType())?"SMALL_CLASS_TO_BUY":"LIVE_GROUP_BUY");
+            //实际支付金额,去除优惠券
+            BigDecimal actualPrice = successOrder.getExpectAmount();
+            BigDecimal divide = actualPrice.divide(new BigDecimal(courseSchedules.size()), ROUND_DOWN);
+            BigDecimal firstAmount = actualPrice.subtract(divide.multiply(new BigDecimal(courseSchedules.size()))).add(divide);
+            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(firstAmount);
+                } else {
+                    courseScheduleStudentPayment.setExpectPrice(divide);
                 }
-                vipGroupDao.update(vipGroup);
+                courseScheduleStudentPayment.setOriginalPrice(vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice());
+                courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
+                courseScheduleStudentPayments.add(courseScheduleStudentPayment);
             }
+            userRoleMap.put(classGroupStudent.getUserId(), null);
         }
+        studentDao.updateStudentServiceTag(null, studentIdList, YesOrNoEnum.YES.getCode());
+
+        courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
+
+        imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), classGroup.getName(),
+                vipGroup.getName(), null, null, vipGroup.getGroupType(), ImGroup.GroupTypeEnum.valueOf(vipGroup.getGroupType()));
+        imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
+        imUserFriendService.refreshGroupImUserFriend(classGroup.getMusicGroupId(), classGroup.getGroupType());
+        classGroupDao.update(classGroup);
     }
 
 
@@ -4652,7 +4664,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     public void updateVipGroupStatusToFinished() {
         Date now = new Date();
         //更新至已结束
-        List<VipGroup> vipGroupList = vipGroupDao.queryRequiredOverList();
+        List<VipGroup> vipGroupList = vipGroupDao.queryRequiredOverList("VIP");
         if (vipGroupList != null && vipGroupList.size() > 0) {
             for (VipGroup vipGroup : vipGroupList) {
                 if (Objects.nonNull(vipGroup.getCoursesExpireDate()) && (vipGroup.getCoursesExpireDate().compareTo(now) > 0 || DateUtil.isSameDay(vipGroup.getCoursesExpireDate(), now))) {
@@ -4673,7 +4685,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         }
         
         //关闭没有学生的课程组
-        List<VipGroupClassGroupMapper> vipGroupClassGroupMapperList = classGroupStudentMapperDao.queryWaitCancelVipGroup();
+        List<VipGroupClassGroupMapper> vipGroupClassGroupMapperList = classGroupStudentMapperDao.queryWaitCancelVipGroup("VIP");
         if(vipGroupClassGroupMapperList != null && vipGroupClassGroupMapperList.size() > 0){
             vipGroupList = vipGroupDao.queryByIds(vipGroupClassGroupMapperList.stream().map(t -> t.getId().toString()).collect(Collectors.joining(",")));
             for(VipGroup vipGroup : vipGroupList){
@@ -4694,7 +4706,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         }
         
         //更新到报名中
-        List<VipGroup> normalVipGroupList = vipGroupDao.queryNormalStatusList();
+        List<VipGroup> normalVipGroupList = vipGroupDao.queryNormalStatusList("VIP");
         if (!CollectionUtils.isEmpty(normalVipGroupList)) {
             List<VipGroup> needUpdateVipGroups = new ArrayList<>();
             for (VipGroup vipGroup : normalVipGroupList) {

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

@@ -1562,7 +1562,12 @@
                 AND type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
             </if>
             <if test="organIds != null and organIds != ''">
-                AND FIND_IN_SET(mg.organ_id_,#{organIds})
+                <if test="groupType == 'LIVE'">
+                    AND INTE_ARRAY(mg.organ_id_list_,#{organIds})
+                </if>
+                <if test="groupType != 'LIVE'">
+                    FIND_IN_SET(mg.organ_id_,#{organIds})
+                </if>
             </if>
             <if test="educationUserId != null">
                 AND mg.educational_teacher_id_ = #{educationUserId}

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

@@ -715,7 +715,7 @@
 		select vg.id_,cgsm.class_group_id_,count(cgsm.user_id_) total_student_num_,sum(case when cgsm.status_ = 'QUIT' then 1 else 0 end ) quit_student_num_ 
 		from class_group_student_mapper cgsm LEFT JOIN class_group cg on cgsm.class_group_id_ = cg.id_
 		LEFT JOIN vip_group vg on vg.id_ = cgsm.music_group_id_
-		WHERE cgsm.group_type_ IN ('VIP','LIVE') and vg.group_status_ in (2,6) and cg.del_flag_ != 1 GROUP BY cgsm.class_group_id_
+		WHERE cgsm.group_type_ = #{groupType} and vg.group_status_ in (2,6) and cg.del_flag_ != 1 GROUP BY cgsm.class_group_id_
 		) a WHERE a.total_student_num_ = a.quit_student_num_
     </select>
     <select id="findByVipGroups" resultMap="ClassGroupStudentMapper">

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

@@ -698,7 +698,7 @@
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
         LEFT JOIN vip_group vg ON cg.music_group_id_ = vg.id_
         LEFT JOIN vip_group_activity vgc ON vgc.id_ = vg.vip_group_activity_id_
-        WHERE cg.group_type_ = 'VIP' AND cgsm.user_id_ = #{studentId} AND vg.group_status_ NOT IN (3,7)
+        WHERE cg.group_type_ = #{groupType} AND cgsm.user_id_ = #{studentId} AND vg.group_status_ NOT IN (3,7)
         <if test="vipGroupName != null">
             AND vg.name_ LIKE CONCAT('%',#{vipGroupName},'%')
         </if>
@@ -713,7 +713,7 @@
         FROM class_group_student_mapper cgsm
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
         LEFT JOIN vip_group vg ON cg.music_group_id_ = vg.id_
-        WHERE cg.group_type_ = 'VIP' AND cgsm.user_id_ = #{studentId} AND vg.group_status_ != 3
+        WHERE cg.group_type_ = #{groupType} AND cgsm.user_id_ = #{studentId} AND vg.group_status_ NOT IN (3,7)
         <if test="vipGroupName != null">
             AND vg.name_ LIKE CONCAT('%',#{vipGroupName},'%')
         </if>

+ 3 - 4
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -1075,15 +1075,14 @@
             vip_group vg
             LEFT JOIN course_schedule cs ON cs.group_type_ = vg.group_type_ AND CONCAT(vg.id_, '') = cs.music_group_id_
         WHERE
-            vg.group_status_ = 2
-            GROUP BY
-            vg.id_
+            vg.group_status_ = 2 AND vg.group_type_ = #{groupType}
+            GROUP BY vg.id_
         HAVING COUNT( CASE WHEN cs.status_ != 'OVER' THEN 1 ELSE NULL END )&lt;=0
     </select>
     <select id="queryNormalStatusList" resultMap="VipGroup">
         SELECT *
         FROM vip_group
-        WHERE group_status_ = 0
+        WHERE group_status_ = 0 AND group_type_ = #{groupType}
     </select>
 
     <select id="findVipGroupInfo" resultMap="VipGroup">

+ 2 - 1
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -281,8 +281,9 @@ public class TaskController extends BaseController {
 	@GetMapping("/updateVipGroupToFinishedStatus")
 	// 更新VIP课程状态至已结束
 	public void updateVipGroupToFinishedStatus() {
+		//更新vip课程状态
 		vipGroupService.updateVipGroupStatusToFinished();
-		//直播课排课
+		//更新直播课状态
 		vipGroupService.createLiveCourse();
 	}
 

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

@@ -141,25 +141,29 @@ public class VipGroupManageController extends BaseController {
     @PostMapping("/vipGroupApply")
     @PreAuthorize("@pcs.hasPermissions('vipGroupManage/vipGroupApply')")
     public Object vipGroupApply(@RequestBody VipGroupApplyDto vipGroupApplyDto){
-        Integer userId = vipGroupApplyDto.getVipGroupApplyBaseInfo().getUserId();
+        VipGroupApplyBaseInfoDto applyBaseInfo = vipGroupApplyDto.getVipGroupApplyBaseInfo();
+        Integer userId = applyBaseInfo.getUserId();
         Teacher teacher = teacherDao.get(userId);
         if(Objects.isNull(teacher)){
             return failed("请指定指导老师!");
         }
         // 设置默认参数VIP
-        if (StringUtils.isBlank(vipGroupApplyDto.getVipGroupApplyBaseInfo().getGroupType())) {
-            vipGroupApplyDto.getVipGroupApplyBaseInfo().setGroupType(CourseSchedule.CourseScheduleType.VIP.getCode());
+        if (StringUtils.isBlank(applyBaseInfo.getGroupType())) {
+            applyBaseInfo.setGroupType(CourseSchedule.CourseScheduleType.VIP.getCode());
         }
         // VIP课参数校验
-        if (CourseSchedule.CourseScheduleType.VIP.getCode().equals(vipGroupApplyDto.getVipGroupApplyBaseInfo().getGroupType())) {
-            if(Objects.isNull(vipGroupApplyDto.getVipGroupApplyBaseInfo().getOrganId())){
-                Integer firstStudentId = vipGroupApplyDto.getVipGroupApplyBaseInfo().getFirstStudentId();
+        if (CourseSchedule.CourseScheduleType.VIP.getCode().equals(applyBaseInfo.getGroupType())) {
+            if(Objects.isNull(applyBaseInfo.getOrganId())){
+                Integer firstStudentId = applyBaseInfo.getFirstStudentId();
                 SysUser student = teacherDao.getUser(firstStudentId);
                 if(Objects.isNull(student)||Objects.isNull(student.getOrganId())){
                     return failed("学员信息异常");
                 }
-                vipGroupApplyDto.getVipGroupApplyBaseInfo().setOrganId(student.getOrganId());
+                applyBaseInfo.setOrganId(student.getOrganId());
             }
+        }else {
+            //直播课分部跟随创建时的授课老师
+            applyBaseInfo.setOrganId(teacher.getTeacherOrganId());
         }
         return vipGroupService.createVipGroup(vipGroupApplyDto);
     }