Browse Source

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

zouxuan 5 years ago
parent
commit
970f5319a0

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -179,4 +179,13 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
     Map<String,Integer> queryOrganTeacherNum(@Param("organId") String organId);
 
     List<Teacher> findByFlowOrganRange(Map<String, Object> params);
+
+    /**
+     * @describe 根据教师编号获取教师信息
+     * @author Joburgess
+     * @date 2019/12/10
+     * @param teacherIds: 教师编号里列表
+     * @return java.util.List<com.ym.mec.biz.dal.entity.Teacher>
+     */
+    List<Teacher> findByTeacherIds(@Param("teacherIds") List<Integer> teacherIds);
 }

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

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -13,7 +14,7 @@ public interface VipGroupActivityDao extends BaseDAO<Integer, VipGroupActivity>
      * @Date: 2019/10/2
      * 根据课程类型获取vip课 活动方案
      */
-    List<VipGroupActivity> findByCategory(Long categoryId);
+    List<VipGroupActivity> findByCategory(@Param("categoryId") Long categoryId,@Param("organIds") String organIds);
 
     /**
      * 根据活动方案编号列表获取名称
@@ -21,4 +22,4 @@ public interface VipGroupActivityDao extends BaseDAO<Integer, VipGroupActivity>
      * @return
      */
     List<Map<Integer, String>> queryNamesById(String activityIds);
-}
+}

+ 101 - 94
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -5,98 +5,105 @@ import com.ym.mec.common.service.BaseService;
 
 public interface SysConfigService extends BaseService<Long, SysConfig> {
 
-	/**
-	 * 缴费状态提前{}天刷新
-	 */
-	public static final String REFRESH_PAYMENT_STATUS_EARLY_DAYS = "refresh_payment_status_early_days";
-
-	/**
-	 * VIP课结束后,用户可申诉时间,为课程结束后的{}天
-	 */
-	public static final String VIP_APPEAL_DAYS_RANGE = "vip_appeal_days_range";
-
-	/**
-	 * VIP课的结算周期,为课程完成后{}天
-	 */
-	public static final String VIP_SETTLEMENT_CYCLE = "vip_settlement_cycle";
-
-	/**
-	 * 课酬结算周期,为每个月的{}日
-	 */
-	public static final String COURSES_SETTLEMENT_CYCLE = "courses_settlement_cycle";
-
-	/**
-	 * 老师正常打卡时间,为课程当天,距离开课时间前{}分钟
-	 */
-	public static final String ADVANCE_SIGN_IN_MINUTES = "advance_sign_in_minutes";
-
-	/**
-	 * 乐团课,签退时间,为课程结束后开始,至结束后的{}小时
-	 */
-	public static final String SIGN_OUT_DELAY_HOURS = "sign_out_delay_hours";
-
-	/**
-	 * 老师可以打卡范围,为教学定位方圆{}米
-	 */
-	public static final String ATTENDANCE_RANGE = "attendance_range";
-
-	/**
-	 * 学生允许请假的时间,为开课前{}小时
-	 */
-	public static final String ADVANCE_LEAVE_HOURS = "advance_leave_hours";
-
-	/**
-	 * 移动端「课程调整」调整的课程时间,为开课前{}天
-	 */
-	public static final String ADVANCE_UPDATE_COURSES_DAYS = "advance_update_courses_days";
-
-	/**
-	 * 密码重置后的默认密码为{}
-	 */
-	public static final String DEFAULT_PASSWORD = "default_password";
-
-	/**
-	 * 单技课梯度结算规则设置
-	 */
-	public static final String SIGLE_GRADIENT_SETTLEMENT_RULE = "sigle_gradient_settlement_rule";
-
-	/**
-	 * 合奏课梯度结算规则设置
-	 */
-	public static final String MAX_GRADIENT_SETTLEMENT_RULE = "max_gradient_settlement_rule";
-
-	/**
-	 * 小班课梯度结算规则设置
-	 */
-	public static final String HIGH_GRADIENT_SETTLEMENT_RULE = "high_gradient_settlement_rule";
-
-	/**
-	 * 如果没有签退,{}分钟后自动发送推送信息
-	 */
-	public static final String SIGN_OUT_MESSAGE_PUSH_MINUTE = "sign_out_message_push_minute";
-
-	/**
-	 * 试听课默认单节课时长
-	 */
-	String DEMO_GROUP_SINGLE_CLASS_MINUTES_="demo_group_single_class_minutes_";
-	String USER_DEFAULT_HEAD_URL = "user_default_head_url";
-	String STUDENT_APPLY_URL = "student_apply_url";
-	String STUDENT_APPLY_PAYMENT_DETAIL_URL = "student_apply_payment_detail_url";
-	String SERVER_PHONE = "server_phone";
-
-	/** 乐团课90分钟课酬计算时的收费类型 */
-	String MUSIC_GROUP_CHARGE_TYPE_90_="music_group_charge_type_90_";
-
-	String MUSIC_GROUP_SETTLEMENT_CLASS_MINUTES="music_group_settlement_class_minutes";
-
-	String MUSIC_GROUP_SETTLEMENT_SINGLE_CLASS_MINUTES="music_group_settlement_single_class_minutes";
-
-	String REFUND_PERIOD = "refund_period";
-
-	/**
-	 * @params paramName
-	 * @return com.ym.mec.biz.dal.entity.SysConfig
-	 * @describe 根据配置名称获取配置信息
-	 */
-	SysConfig findByParamName(String paramName);
+    /**
+     * 缴费状态提前{}天刷新
+     */
+    public static final String REFRESH_PAYMENT_STATUS_EARLY_DAYS = "refresh_payment_status_early_days";
+
+    /**
+     * VIP课结束后,用户可申诉时间,为课程结束后的{}天
+     */
+    public static final String VIP_APPEAL_DAYS_RANGE = "vip_appeal_days_range";
+
+    /**
+     * VIP课的结算周期,为课程完成后{}天
+     */
+    public static final String VIP_SETTLEMENT_CYCLE = "vip_settlement_cycle";
+
+    /**
+     * 课酬结算周期,为每个月的{}日
+     */
+    public static final String COURSES_SETTLEMENT_CYCLE = "courses_settlement_cycle";
+
+    /**
+     * 老师正常打卡时间,为课程当天,距离开课时间前{}分钟
+     */
+    public static final String ADVANCE_SIGN_IN_MINUTES = "advance_sign_in_minutes";
+
+    /**
+     * 乐团课,签退时间,为课程结束后开始,至结束后的{}小时
+     */
+    public static final String SIGN_OUT_DELAY_HOURS = "sign_out_delay_hours";
+
+    /**
+     * 老师可以打卡范围,为教学定位方圆{}米
+     */
+    public static final String ATTENDANCE_RANGE = "attendance_range";
+
+    /**
+     * 学生允许请假的时间,为开课前{}小时
+     */
+    public static final String ADVANCE_LEAVE_HOURS = "advance_leave_hours";
+
+    /**
+     * 移动端「课程调整」调整的课程时间,为开课前{}天
+     */
+    public static final String ADVANCE_UPDATE_COURSES_DAYS = "advance_update_courses_days";
+
+    /**
+     * 密码重置后的默认密码为{}
+     */
+    public static final String DEFAULT_PASSWORD = "default_password";
+
+    /**
+     * 单技课梯度结算规则设置
+     */
+    public static final String SIGLE_GRADIENT_SETTLEMENT_RULE = "sigle_gradient_settlement_rule";
+
+    /**
+     * 合奏课梯度结算规则设置
+     */
+    public static final String MAX_GRADIENT_SETTLEMENT_RULE = "max_gradient_settlement_rule";
+
+    /**
+     * 小班课梯度结算规则设置
+     */
+    public static final String HIGH_GRADIENT_SETTLEMENT_RULE = "high_gradient_settlement_rule";
+
+    /**
+     * 如果没有签退,{}分钟后自动发送推送信息
+     */
+    public static final String SIGN_OUT_MESSAGE_PUSH_MINUTE = "sign_out_message_push_minute";
+
+    /**
+     * 试听课默认单节课时长
+     */
+    String DEMO_GROUP_SINGLE_CLASS_MINUTES_ = "demo_group_single_class_minutes_";
+    String USER_DEFAULT_HEAD_URL = "user_default_head_url";
+    String STUDENT_APPLY_URL = "student_apply_url";
+    String STUDENT_APPLY_PAYMENT_DETAIL_URL = "student_apply_payment_detail_url";
+    String SERVER_PHONE = "server_phone";
+
+    /**
+     * 乐团课90分钟课酬计算时的收费类型
+     */
+    String MUSIC_GROUP_CHARGE_TYPE_90_ = "music_group_charge_type_90_";
+
+    String MUSIC_GROUP_SETTLEMENT_CLASS_MINUTES = "music_group_settlement_class_minutes";
+
+    String MUSIC_GROUP_SETTLEMENT_SINGLE_CLASS_MINUTES = "music_group_settlement_single_class_minutes";
+
+    String REFUND_PERIOD = "refund_period";
+
+    /**
+     * 教师入职时间为此时间之后的,按照3.0的课酬结算
+     */
+    String TEACHER_ENTRY_DATE = "teacher_entry_date";
+
+    /**
+     * @return com.ym.mec.biz.dal.entity.SysConfig
+     * @params paramName
+     * @describe 根据配置名称获取配置信息
+     */
+    SysConfig findByParamName(String paramName);
 }

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

@@ -27,6 +27,6 @@ public interface VipGroupActivityService extends BaseService<Integer, VipGroupAc
      * @Date: 2019/10/2
      * 根据课程类型获取VIP课相关活动方案
      */
-    List<VipGroupActivity> findByVipGroupCategory(Long categoryId);
+    List<VipGroupActivity> findByVipGroupCategory(Long categoryId, Integer teacherId);
 
-}
+}

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

@@ -100,6 +100,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private RedisCache<String, Object> redisCache;
     @Autowired
     private ClassGroupService classGroupService;
+    @Autowired
+    private TeacherDao teacherDao;
+    @Autowired
+    private SysConfigDao sysConfigDao;
 
     @Override
     public BaseDAO<Integer, ClassGroup> getDAO() {
@@ -1037,7 +1041,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
         if (musicGroup == null) {
             throw new Exception("乐团不存在");
-        }
+        }Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue());
         Integer schoolId = musicGroup.getSchoolId();
 
         List<Integer> studentIdList = classGroup4MixDto.getStudents();
@@ -1108,6 +1112,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         }
         classGroupTeacherMapperDao.classGroupTeachersInsert(classGroupTeacherMapperList);
 
+        List<Integer> allTeacherIds = classGroupTeacherMapperList.stream()
+                .map(ClassGroupTeacherMapper::getUserId)
+                .collect(Collectors.toList());
+
+        //所有教师列表
+        List<Teacher> teachers = teacherDao.findByTeacherIds(allTeacherIds);
+        Map<Integer, Teacher> teacherMap = teachers.stream()
+                .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
+
         //创建IM群组
         addImGroup(classGroup, userIds);
 
@@ -1193,14 +1206,20 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     //对应基准课酬
                     BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0);
 
+                    Teacher teacher = teacherMap.get(classGroupTeacherMapper.getUserId());
+                    SalarySettlementTypeEnum settlementType = musicGroup.getSettlementType();
+                    if(teacher.getEntryDate().after(entryDate)){
+                        settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY;
+                    }
+
                     //基准课酬
-                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary != null) {
+                    if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary != null) {
                         //课程时长与结算单位时长占比
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(30), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                     }
                     //阶梯课酬
-                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary != null) {
+                    if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary != null) {
                         //课程时长与结算单位时长占比
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
@@ -1217,7 +1236,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                         //课程时长与结算单位时长占比
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(45), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
-                        if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
+                        if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
                             baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
                         }
                     }
@@ -1275,6 +1294,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         }
         Integer courseTimes = classGroup4MixDto.getCourseTimes();
 
+        Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue());
+
         if (classGroup4MixDto.getCourseAddType().equals("renew")) {
             List<CourseSchedule> noStartCourses = courseScheduleService.findNoStartCoursesByClassGroupId(classGroup.getId());
             if (noStartCourses.size() > 0) {
@@ -1309,6 +1330,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
         }
 
+        List<Integer> allTeacherIds = newClassGroupTeacherMapperList.stream()
+                .map(ClassGroupTeacherMapper::getUserId)
+                .collect(Collectors.toList());
+
+        //所有教师列表
+        List<Teacher> teachers = teacherDao.findByTeacherIds(allTeacherIds);
+        Map<Integer, Teacher> teacherMap = teachers.stream()
+                .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
+
         Set<String> newTeacher = newClassGroupTeacherMapperList.stream().map(
                 classGroupTeacherMapper -> classGroupTeacherMapper.getTeacherRole().getCode() + classGroupTeacherMapper.getUserId()
         ).collect(Collectors.toSet());
@@ -1407,14 +1437,20 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     //对应基准课酬
                     BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0);
 
+                    Teacher teacher = teacherMap.get(classGroupTeacherMapper.getUserId());
+                    SalarySettlementTypeEnum settlementType = musicGroup.getSettlementType();
+                    if(teacher.getEntryDate().after(entryDate)){
+                        settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY;
+                    }
+
                     //基准课酬
-                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary != null) {
+                    if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary != null) {
                         //课程时长与结算单位时长占比
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(30), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                     }
                     //阶梯课酬
-                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary != null) {
+                    if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary != null) {
                         //课程时长与结算单位时长占比
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
@@ -1430,7 +1466,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                         //课程时长与结算单位时长占比
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(45), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
-                        if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
+                        if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
                             baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
                         }
                     }
@@ -1497,6 +1533,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         }
         Integer schoolId = musicGroup.getSchoolId();
 
+        Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue());
+
         List<Integer> studentIdList = classGroup4MixDto.getStudents();
 
         List<StudentRegistration> studentList = studentRegistrationService.findStudentListByUserIdList(musicGroupId, studentIdList);
@@ -1556,6 +1594,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         }
         classGroupTeacherMapperDao.classGroupTeachersInsert(classGroupTeacherMapperList);
 
+        List<Integer> allTeacherIds = classGroupTeacherMapperList.stream()
+                .map(ClassGroupTeacherMapper::getUserId)
+                .collect(Collectors.toList());
+
+        //所有教师列表
+        List<Teacher> teachers = teacherDao.findByTeacherIds(allTeacherIds);
+        Map<Integer, Teacher> teacherMap = teachers.stream()
+                .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
+
         //创建IM群组
         addImGroup(classGroup, userIds);
 
@@ -1643,14 +1690,20 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     //对应基准课酬
                     BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0);
 
+                    Teacher teacher = teacherMap.get(classGroupTeacherMapper.getUserId());
+                    SalarySettlementTypeEnum settlementType = musicGroup.getSettlementType();
+                    if(teacher.getEntryDate().after(entryDate)){
+                        settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY;
+                    }
+
                     //基准课酬
-                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary != null) {
+                    if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT) && teacherDefaultMusicGroupSalary != null) {
                         //课程时长与结算单位时长占比
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(30), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                     }
                     //阶梯课酬
-                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary != null) {
+                    if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY) && teacherDefaultMusicGroupSalary != null) {
                         //课程时长与结算单位时长占比
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
@@ -1666,7 +1719,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                         //课程时长与结算单位时长占比
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(45), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
-                        if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
+                        if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
                             baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
                         }
                     }

+ 51 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java

@@ -52,6 +52,8 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
     private TeacherAttendanceDao teacherAttendanceDao;
     @Autowired
     private CourseScheduleDao courseScheduleDao;
+    @Autowired
+    private TeacherDao teacherDao;
 
     @Override
     public BaseDAO<Long, ClassGroupTeacherMapper> getDAO() {
@@ -155,6 +157,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
     public boolean classGroupTeacherMapperUpdate(List<ClassGroupTeacherMapper> classGroupTeacherMapperList) throws Exception {
         Date date = new Date();
+        Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue());
         List<Integer> classGroupIds = classGroupTeacherMapperList.stream().map(classGroupTeacherMapper -> classGroupTeacherMapper.getClassGroupId()).collect(Collectors.toList());
 
         List<CourseSchedule> classGroupNoStartCourseSchedules = courseScheduleService.findClassGroupNoStartCourseSchedules(classGroupIds, GroupType.MUSIC);
@@ -174,6 +177,11 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
         String musicGroupId = classGroupTeacherMapperList.get(0).getMusicGroupId();
         MusicGroup musicGroup = musicGroupService.get(musicGroupId);
 
+        //所有教师列表
+        List<Teacher> teachers = teacherDao.findByTeacherIds(teacherUserIds);
+        Map<Integer, Teacher> teacherMap = teachers.stream()
+                .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
+
         //删除未开始的课程老师课酬,和签到
         List<Long> courseScheduleIds = classGroupNoStartCourseSchedules.stream().map(CourseSchedule::getId).collect(Collectors.toList());
         courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
@@ -186,7 +194,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                 if (!classGroupTeacherMapper.getClassGroupId().equals(classGroupNoStartCourseSchedule.getClassGroupId())) {
                     continue;
                 }
-                BigDecimal salary = new BigDecimal("0");
+                BigDecimal salary;
                 List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaryList = classGroupTeacherMapper.getTeacherDefaultMusicGroupSalaryList();
 
                 Map<CourseSchedule.CourseScheduleType, TeacherDefaultMusicGroupSalary> collect = teacherDefaultMusicGroupSalaryList.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getCourseScheduleType, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
@@ -202,15 +210,21 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                 //对应基准课酬
                 BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0);
 
+                Teacher teacher = teacherMap.get(classGroupTeacherMapper.getUserId());
+                SalarySettlementTypeEnum settlementType = musicGroup.getSettlementType();
+                if(teacher.getEntryDate().after(entryDate)){
+                    settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY;
+                }
+
 
                 //2.0课酬
-                if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
+                if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
                     //课程时长与结算单位时长占比
                     classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(30), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                     baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                 }
                 //3.0课酬
-                if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
+                if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
                     //课程时长与结算单位时长占比
                     classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                     baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
@@ -226,7 +240,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                     //课程时长与结算单位时长占比
                     classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(45), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                     baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
-                    if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
+                    if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
                     }
                 }
@@ -255,6 +269,14 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
     public void createMusicGroupTeacherMapper(List<CourseSchedule> courseSchedules, String musicGroupId) {
         Date date = new Date();
         MusicGroup musicGroup = musicGroupService.get(musicGroupId);
+        Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue());
+        List<Integer> teacherUserIds = courseSchedules.stream()
+                                        .map(CourseSchedule::getActualTeacherId)
+                                        .collect(Collectors.toList());
+        //所有教师列表
+        List<Teacher> teachers = teacherDao.findByTeacherIds(teacherUserIds);
+        Map<Integer, Teacher> teacherMap = teachers.stream()
+                .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
         //老师默认的课酬
 //        Map<String, TeacherDefaultMusicGroupSalary> teacherDefaultSalary = new HashMap<>();
         for (CourseSchedule classGroupNoStartCourseSchedule : courseSchedules) {
@@ -279,15 +301,21 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                 //对应基准课酬
                 BigDecimal baseSalary = new BigDecimal(0), classTimeDuty = new BigDecimal(0);
 
+                Teacher teacher = teacherMap.get(classGroupTeacherMapper.getUserId());
+                SalarySettlementTypeEnum settlementType = musicGroup.getSettlementType();
+                if(teacher.getEntryDate().after(entryDate)){
+                    settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY;
+                }
+
 
                 //2.0课酬
-                if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
+                if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT)) {
                     //课程时长与结算单位时长占比
                     classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(30), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                     baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
                 }
                 //3.0课酬
-                if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
+                if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
                     //课程时长与结算单位时长占比
                     classTimeDuty = new BigDecimal(duration).divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                     baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
@@ -341,6 +369,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
     @Transactional(rollbackFor = Exception.class)
     public void createCourseScheduleTeacherSalary(List<CourseSchedule> courseSchedules, Map<Long, CourseSchedule> oldCourseSchedules) {
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
+        Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue());
 
         //课程编号列表
         List<Long> courseScheduleIds = courseSchedules.stream().map(CourseSchedule::getId).collect(Collectors.toList());
@@ -353,6 +382,11 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
         //所有老师列表
         allTeacherIds = allTeacherIds.stream().distinct().collect(Collectors.toList());
 
+        //所有教师列表
+        List<Teacher> teachers = teacherDao.findByTeacherIds(allTeacherIds);
+        Map<Integer, Teacher> teacherMap = teachers.stream()
+                .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
+
         //所有老师默认乐团课酬
         List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(allTeacherIds);
         Map<CourseSchedule.CourseScheduleType, List<TeacherDefaultMusicGroupSalary>> teacherDefaultMusicGroupSalariesGroupByCourseType = teacherDefaultMusicGroupSalaries.stream().collect(Collectors.groupingBy(TeacherDefaultMusicGroupSalary::getCourseScheduleType));
@@ -386,6 +420,11 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
             Map<Integer, TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesGroupByTeacherId = teacherDefaultMusicGroupSalariesWithCourseType.stream().collect(Collectors.toMap(TeacherDefaultMusicGroupSalary::getUserId, teacherDefaultMusicGroupSalary -> teacherDefaultMusicGroupSalary));
 
             if (!courseSchedule.isBishopTeacherSalaryNotCreate()) {
+                Teacher teacher = teacherMap.get(courseSchedule.getActualTeacherId());
+                if(teacher.getEntryDate().after(entryDate)){
+                    settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY.getCode();
+                }
+
                 //根据课程获取主教的默认课酬设置列表
                 TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalaryWithTeacherId = teacherDefaultMusicGroupSalariesGroupByTeacherId.get(courseSchedule.getActualTeacherId());
                 courseScheduleTeacherSalaryList.add(countMusicGroupTeacherSalary(
@@ -403,7 +442,11 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
             if (CollectionUtils.isEmpty(teachingTeacherIdList)) {
                 return;
             }
-            teachingTeacherIdList.forEach(teacherId -> {
+            for (Integer teacherId : teachingTeacherIdList) {
+                Teacher teacher = teacherMap.get(teacherId);
+                if(teacher.getEntryDate().after(entryDate)){
+                    settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY.getCode();
+                }
                 TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalaryWithTeacherId = teacherDefaultMusicGroupSalariesGroupByTeacherId.get(teacherId);
                 courseScheduleTeacherSalaryList.add(countMusicGroupTeacherSalary(
                         courseSchedule,
@@ -412,7 +455,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                         courseSubsidyMap.get(courseSchedule.getId()),
                         teacherId,
                         teacherDefaultMusicGroupSalaryWithTeacherId));
-            });
+            }
         });
         courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
     }

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

@@ -435,21 +435,21 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         System.out.println(DateUtil.dateToString(new Date(), "HH:mm:ss"));
 		if(allCourseSchedules.size()>1){
 		    //记录连续冲突的次数
-		    Integer repeatTimes=0;
+		    Integer repeatTimes=1;
 			for (int i=1;i<allCourseSchedules.size();i++){
-				for(int j=1;j<=repeatTimes+1&&j<=i;j++){
+				for(int j=repeatTimes;j>0;j--){
                     //当前课程
                     CourseSchedule preCourseSchedule = allCourseSchedules.get(i-j);
                     //后面一节课程
                     CourseSchedule backCourseSchedule = allCourseSchedules.get(i);
                     //判断前后两节课是否存在冲突
                     if(backCourseSchedule.getStartClassTime().before(preCourseSchedule.getEndClassTime())){
+                        if(j==repeatTimes){
+                            repeatTimes+=1;
+                        }
 						if(!checkExistCourseSchedule
 								&&courseScheduleIdsSet.contains(preCourseSchedule.getId())
 								&&courseScheduleIdsSet.contains(backCourseSchedule.getId())){
-							if(j==repeatTimes){
-								repeatTimes+=1;
-							}
 							continue;
 						}
 
@@ -518,9 +518,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                         if(!CollectionUtils.isEmpty(repeatStudentIds)){
                             throw new BizException(courseCheckInfo(preCourseSchedule,backCourseSchedule,existCourseScheduleIds,3));
                         }
-                        if(j==repeatTimes){
-                            repeatTimes+=1;
-                        }
+//                        if(j==repeatTimes){
+//                            repeatTimes+=1;
+//                        }
                     }else{
 						repeatTimes=j;
 						break;
@@ -1079,7 +1079,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		VipGroupApplyDto vipGroupApplyDto=new VipGroupApplyDto();
 		VipGroupApplyBaseInfoDto vipGroupApplyBaseInfoDto=new VipGroupApplyBaseInfoDto();
 		vipGroupApplyBaseInfoDto.setId(vipGroup.getId());
+		vipGroupApplyDto.setVipGroupApplyBaseInfo(vipGroupApplyBaseInfoDto);
 		vipGroupApplyDto.setCourseSchedules(courseSchedules);
+		vipGroupService.appendVipGroupCourseSchedules(vipGroupApplyDto);
 		classGroupService.updateClassGroupInfo(classGroup.getId());
 	}
 

+ 22 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -53,6 +53,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     private TeacherAttendanceDao teacherAttendanceDao;
     @Autowired
     private ClassGroupDao classGroupDao;
+    @Autowired
+    private TeacherDao teacherDao;
 
     private static final Logger LOGGER = LoggerFactory
             .getLogger(CourseScheduleTeacherSalaryServiceImpl.class);
@@ -77,10 +79,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         //获取活动信息
         VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
 
-        if(Objects.isNull(vipGroupActivity)){
-            throw new BizException("未找到活动方案");
-        }
-
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<>();
         Map<TeachModeEnum, List<CourseSchedule>> courseScheduleGroupByTeachMode = vipCourseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
 
@@ -102,7 +100,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 courseScheduleTeacherSalary.setClassGroupId(courseSchedules.get(i).getClassGroupId());
                 courseScheduleTeacherSalary.setSubsidy(subsidy);
 
-                if (vipGroupActivity.getType() == VipGroupActivityTypeEnum.GIVE_CLASS
+                if (Objects.nonNull(vipGroupActivity)
+                        &&vipGroupActivity.getType() == VipGroupActivityTypeEnum.GIVE_CLASS
                         && vipGroup.getGiveTeachMode() == teachModeEnum
                         && i >= Integer.parseInt(vipGroupActivity.getAttribute1())
                         && "0".equals(vipGroupActivity.getGiveClassPaySalaryFlag())) {
@@ -344,6 +343,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         Date yesterday = DateUtil.addDays1(now, -1);
         Integer settlementClassMinutes = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.MUSIC_GROUP_SETTLEMENT_CLASS_MINUTES).getParanValue());
         Integer singleClassTime = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.MUSIC_GROUP_SETTLEMENT_SINGLE_CLASS_MINUTES).getParanValue());
+        Date entryDate = DateUtil.stringToDate(sysConfigDao.findByParamName(SysConfigService.TEACHER_ENTRY_DATE).getParanValue());
         //获取昨天的课程计划
         List<CourseSchedule> yesterdayCourseSchedules = courseScheduleDao.findCourseScheduleWithDate(yesterday);
         //课程编号列表
@@ -379,6 +379,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 .map(CourseScheduleTeacherSalary::getUserId)
                 .collect(Collectors.toList());
 
+        //所有教师列表
+        List<Teacher> teachers = teacherDao.findByTeacherIds(allTeacherIds);
+        Map<Integer, Teacher> teacherMap = teachers.stream()
+                .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
+
         //所有老师默认乐团课酬
         List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(allTeacherIds);
         Map<CourseSchedule.CourseScheduleType, List<TeacherDefaultMusicGroupSalary>> teacherDefaultMusicGroupSalariesGroupByCourseType = teacherDefaultMusicGroupSalaries.stream().collect(Collectors.groupingBy(TeacherDefaultMusicGroupSalary::getCourseScheduleType));
@@ -429,11 +434,20 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             CourseSchedule courseSchedule = courseScheduleIdMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
             Map<Integer, Integer> schoolClassMinutesMap = teacherClassMinutesMap.get(courseScheduleTeacherSalary.getUserId());
             Integer schoolClassMinutes = schoolClassMinutesMap.get(courseSchedule.getSchoolId());
+            //结算方式
+            String settlementType = musicGroupSettlementsMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
+            Teacher teacher=teacherMap.get(courseScheduleTeacherSalary.getUserId());
+            //如果当前教师是在指定日期之后入职的,则按照3.0的方式结算
+            if(teacher.getEntryDate().after(entryDate)){
+                settlementType = SalarySettlementTypeEnum.GRADIENT_SALARY.getCode();
+            }
+
             //当前课程的时长
             int duration = DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime());
-            //如果是单技课或者合奏课
-            if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.SINGLE)
-                    || courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.MIX)) {
+            //如果是单技课或者合奏课并且结算方式为3.0
+            if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY.getCode())
+                    &&(courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.SINGLE)
+                    || courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.MIX))) {
                 if (schoolClassMinutes >= settlementClassMinutes && duration < singleClassTime) {
                     duration = singleClassTime;
                     durationIsChange = true;
@@ -456,7 +470,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
                 TeacherDefaultMusicGroupSalary teacherDefaultMusicGroupSalaryWithTeacherId = teacherDefaultMusicGroupSalariesGroupByTeacherId.get(courseScheduleTeacherSalary.getUserId());
 
-                String settlementType = musicGroupSettlementsMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
                 //如果结算方式是教师默认课酬
                 if (settlementType.equals(SalarySettlementTypeEnum.TEACHER_DEFAULT.getCode())) {
                     //课程时长与结算单位时长占比

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

@@ -88,10 +88,13 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
 
         //乐团乐器及辅件信息
         List<MusicGroupSubjectGoodsGroup> goodsGroups = musicGroupSubjectGoodsGroupService.findGoodsGroup(musicGroupId, subjectId);
+        
+        List<Goods> accessoriesList = goodsService.findGoodsBySubId(subjectId,GoodsType.ACCESSORIES.getCode());
+        
         goodsGroups.forEach(goodsGroup -> {
             if (goodsGroup.getType().equals(GoodsType.INSTRUMENT)) {
                 goodsGroup.getGoodsList().forEach(goods -> {
-                    goods.setGoodsList(goodsService.findGoodsByIds(goods.getComplementGoodsIdList()));
+                    goods.setGoodsList(accessoriesList);
                 });
             }
         });

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

@@ -1,9 +1,11 @@
 package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dao.VipGroupActivityDao;
 import com.ym.mec.biz.dal.dto.VipGroupActivityAddDto;
 import com.ym.mec.biz.dal.dto.VipGroupSalarySettlementDto;
+import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.entity.VipGroupActivity;
 import com.ym.mec.biz.service.VipGroupActivityService;
 import com.ym.mec.common.dal.BaseDAO;
@@ -20,6 +22,8 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 	
 	@Autowired
 	private VipGroupActivityDao vipGroupActivityDao;
+	@Autowired
+	private TeacherDao teacherDao;
 
 	@Override
 	public BaseDAO<Integer, VipGroupActivity> getDAO() {
@@ -90,10 +94,24 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 	}
 
 	@Override
-	public List<VipGroupActivity> findByVipGroupCategory(Long categoryId) {
+	public List<VipGroupActivity> findByVipGroupCategory(Long categoryId, Integer teacherId) {
 		if(Objects.isNull(categoryId)){
 			throw new BizException("请选择课程形态!");
 		}
-		return vipGroupActivityDao.findByCategory(categoryId);
+		if(Objects.isNull(teacherId)){
+			throw new BizException("请指定教师");
+		}
+		Teacher teacher = teacherDao.get(teacherId);
+		if(Objects.isNull(teacher)){
+			throw new BizException("未找到指定教师");
+		}
+		String organIds = "";
+		if(Objects.nonNull(teacher.getOrganId())){
+			organIds = teacher.getOrganId();
+		}
+		if(Objects.nonNull(teacher.getFlowOrganRange())){
+			organIds=teacherId+","+teacher.getFlowOrganRange();
+		}
+		return vipGroupActivityDao.findByCategory(categoryId,organIds);
 	}
 }

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

@@ -890,6 +890,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			vipGroupDao.update(vipGroup);
 		}
 		if(num!=0||updateVipStatus){
+			int i = courseScheduleDao.countVipGroupCourses(vipGroupId.intValue());
+			classGroup.setTotalClassTimes(i);
 			classGroupDao.update(classGroup);
 		}
 	}
@@ -1747,7 +1749,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		Date now=new Date();
 
-		if(vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING_END)){
+		if(vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING)){
 			List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(),CourseSchedule.class);
 			int courseNum = courseScheduleDao.countVipGroupCourses(vipGroupId.intValue());
 			if(courseNum==0){

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

@@ -551,4 +551,11 @@
             </if>
         </where>
     </select>
+
+    <select id="findByTeacherIds" resultType="com.ym.mec.biz.dal.entity.Teacher">
+        SELECT * FROM teacher WHERE id_ IN
+        <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
+            #{teacherId}
+        </foreach>
+    </select>
 </mapper>

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

@@ -155,6 +155,7 @@
 			FIND_IN_SET( #{categoryId}, vip_group_category_id_list_ )
 			AND (NOW() &lt; end_time_ OR end_time_ IS NULL)
 			AND del_flag_=0
+			AND INTE_ARRAY(organ_id_,#{organIds})
 	</select>
     <select id="queryNamesById" resultType="java.util.Map">
 		SELECT vga.id_ `key`,vga.name_ `value` FROM vip_group_activity vga WHERE FIND_IN_SET(vga.id_,#{activityIds}) AND vga.del_flag_=0

+ 9 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/VipGroupActivityController.java

@@ -1,5 +1,7 @@
 package com.ym.mec.teacher.controller;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.VipGroupActivityAddDto;
 import com.ym.mec.biz.dal.page.VipGroupActivityQueryInfo;
 import com.ym.mec.biz.service.VipGroupActivityService;
@@ -21,6 +23,8 @@ public class VipGroupActivityController extends BaseController {
 
     @Autowired
     private VipGroupActivityService vipGroupActivityService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
 
     @ApiOperation(value = "新增vip课活动方案")
     @PostMapping("/addVipGroupActivity")
@@ -45,7 +49,11 @@ public class VipGroupActivityController extends BaseController {
     @ApiOperation(value = "根据课程类型获取对应课程活动方案")
     @GetMapping("/findByVipGroupCategory")
     public Object findByVipGroupCategory(Long categoryId){
-        return succeed(vipGroupActivityService.findByVipGroupCategory(categoryId));
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            return failed("用户信息获取失败");
+        }
+        return succeed(vipGroupActivityService.findByVipGroupCategory(categoryId,sysUser.getId()));
     }
 
 }

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

@@ -267,12 +267,12 @@ public class CourseScheduleController extends BaseController {
         return succeed();
     }
 
-//    @ApiOperation(value = "vip课批量新增")
-//    @PostMapping("/batchAppendVipGroupCourses")
-//    @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchAppendVipGroupCourses')")
-//    public Object batchAppendVipGroupCourses(@RequestBody VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo){
-//        scheduleService.batchAppendVipGroupCourses(vipGroupCourseAdjustInfo);
-//        return succeed();
-//    }
+    @ApiOperation(value = "vip课批量新增")
+    @PostMapping("/batchAppendVipGroupCourses")
+    @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchAppendVipGroupCourses')")
+    public Object batchAppendVipGroupCourses(@RequestBody VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo){
+        scheduleService.batchAppendVipGroupCourses(vipGroupCourseAdjustInfo);
+        return succeed();
+    }
 
 }

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

@@ -93,8 +93,8 @@ public class VipGroupActivityController extends BaseController {
     @ApiOperation(value = "根据课程类型获取对应课程活动方案")
     @GetMapping("/findByVipGroupCategory")
     @PreAuthorize("@pcs.hasPermissions('vipGroupActivity/findByVipGroupCategory')")
-    public Object findByVipGroupCategory(Long categoryId){
-        return succeed(vipGroupActivityService.findByVipGroupCategory(categoryId));
+    public Object findByVipGroupCategory(Long categoryId, Integer teacherId){
+        return succeed(vipGroupActivityService.findByVipGroupCategory(categoryId, teacherId));
     }
 
 }