Joburgess 5 år sedan
förälder
incheckning
f418641017

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

@@ -388,6 +388,15 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     List<ImUserModel> findGroupTeacher(Integer groupId);
 
     /**
+     * @param courseScheduleIds: 课程编号列表
+     * @return com.ym.mec.biz.dal.entity.ClassGroup
+     * @describe 根据课程获取班级信息
+     * @author Joburgess
+     * @date 2019/11/4
+     */
+    List<ClassGroup> findByCourseSchedules(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
+    /**
      * @param courseScheduleId: 课程编号
      * @return com.ym.mec.biz.dal.entity.ClassGroup
      * @describe 根据课程获取班级信息

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

@@ -109,6 +109,14 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
      */
     List<ClassGroupStudentMapper> findByClassGroups(@Param("classGroupIds") List<Integer> classGroupIds);
 
+    /**
+     * @param classGroupId: 班级编号列表
+     * @return java.util.List<com.ym.mec.biz.dal.entity.ClassGroupStudentMapper>
+     * @describe 根据班级获取学员
+     * @author Joburgess
+     * @date 2019/10/24
+     */
+    List<ClassGroupStudentMapper> findByClassGroup(@Param("classGroupId") Integer classGroupId);
 
     /**
      * 查询班级某状态下所有的学生

+ 14 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -47,6 +47,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     private SysConfigService sysConfigDao;
     @Autowired
     private TeacherAttendanceDao teacherAttendanceDao;
+    @Autowired
+    private ClassGroupDao classGroupDao;
 
     private static final Logger LOGGER = LoggerFactory
             .getLogger(CourseScheduleTeacherSalaryServiceImpl.class);
@@ -127,19 +129,29 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         List<Long> courseScheduleIds = courseScheduleTeacherSalaries.stream()
                 .map(CourseScheduleTeacherSalary::getCourseScheduleId)
                 .collect(Collectors.toList());
+        List<ClassGroup> byCourseSchedules = classGroupDao.findByCourseSchedules(courseScheduleIds);
+        Map<Integer, ClassGroup> classGroupMap = byCourseSchedules.stream()
+                .collect(Collectors.toMap(ClassGroup::getId,classGroup -> classGroup));
         List<TeacherAttendance> teacherIdByCourseSchedule = teacherAttendanceDao.findTeacherIdByCourseSchedule(courseScheduleIds);
         Map<Long, List<TeacherAttendance>> courseScheduleTeacherAttendanceMap = teacherIdByCourseSchedule.stream()
                 .collect(Collectors.groupingBy(TeacherAttendance::getCourseScheduleId));
         List<TeacherAttendance> teacherAttendances=new ArrayList<>();
         courseScheduleTeacherSalaries.forEach(courseScheduleTeacherSalary -> {
             List<TeacherAttendance> teacherAttendancesTemp=courseScheduleTeacherAttendanceMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
-
+            ClassGroup classGroup = classGroupMap.get(courseScheduleTeacherSalary.getClassGroupId());
             List<Integer> collect = new ArrayList<>();
             if(!CollectionUtils.isEmpty(teacherAttendancesTemp)){
                 collect = teacherAttendancesTemp.stream().map(TeacherAttendance::getTeacherId).collect(Collectors.toList());
             }
+            TeacherAttendance teacherAttendance=new TeacherAttendance();
+            if(Objects.nonNull(classGroup)){
+                teacherAttendance.setClassGroupId(classGroup.getId());
+                teacherAttendance.setMusicGroupId(classGroup.getMusicGroupId());
+            }
             if(CollectionUtils.isEmpty(collect)||!collect.contains(courseScheduleTeacherSalary.getUserId())){
-                teacherAttendances.add(new TeacherAttendance(courseScheduleTeacherSalary.getUserId(),courseScheduleTeacherSalary.getCourseScheduleId()));
+                teacherAttendance.setTeacherId(courseScheduleTeacherSalary.getUserId());
+                teacherAttendance.setCourseScheduleId(courseScheduleTeacherSalary.getCourseScheduleId());
+                teacherAttendances.add(teacherAttendance);
             }
         });
         if(!CollectionUtils.isEmpty(teacherAttendances)){

+ 30 - 19
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -199,6 +199,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		vipGroupApplyBaseInfoDto.setCourseStartDate(firstCourseSchedule.getStartClassTime());
 		//课程结束时间为排课的最后一节课的结束时间
 		vipGroupApplyBaseInfoDto.setCoursesExpireDate(latestCourseSchedule.getEndClassTime());
+		vipGroupDao.insert(vipGroupApplyBaseInfoDto);
 
 		//获取vip课类型信息
 		VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupCategoryId().intValue());
@@ -252,8 +253,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		    courseSchedule.setType(CourseSchedule.CourseScheduleType.VIP);
 			courseSchedule.setClassGroupId(classGroup.getId());
 		});
+		courseScheduleService.checkNewCourseSchedules(vipGroup.getCourseSchedules(),false);
 		vipGroupApplyBaseInfoDto.setCourseSchedulesJson(JSON.toJSONString(vipGroup.getCourseSchedules()));
-		vipGroupDao.insert(vipGroupApplyBaseInfoDto);
+		vipGroupDao.update(vipGroupApplyBaseInfoDto);
 
 	}
 
@@ -505,10 +507,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(Objects.isNull(vipGroupId)){
 			throw new BizException("请指定vip课程");
 		}
-        StudentVipGroupDetailDto vipGroupDetail = vipGroupDao.getVipGroupDetail(vipGroupId);
-		if(Objects.isNull(vipGroupDetail)){
+		VipGroup vipGroup = vipGroupDao.get(vipGroupId);
+		if(Objects.isNull(vipGroup)){
 			throw new BizException("未找到指定课程");
 		}
+		StudentVipGroupDetailDto vipGroupDetail = vipGroupDao.getVipGroupDetail(vipGroupId);
+		if(CollectionUtils.isEmpty(vipGroupDetail.getCourseSchedules())){
+			vipGroupDetail.setCourseSchedules(JSON.parseArray(vipGroup.getCourseSchedulesJson(),CourseSchedule.class));
+		}
 
         vipGroupDetail.setNumberOfClasses(vipGroupDao.countTeacherVipGroups(vipGroupDetail.getTeacherId().longValue()));
         return vipGroupDetail;
@@ -731,6 +737,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public void createVipGroupCourseScheInfo(Long vipGroupId){
 		VipGroup vipGroupApplyBaseInfoDto = vipGroupDao.get(vipGroupId);
 		List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroupApplyBaseInfoDto.getCourseSchedulesJson(),CourseSchedule.class);
@@ -748,19 +755,23 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				classGroupTeacherSalary.getOnlineClassesSalary(),
 				classGroupTeacherSalary.getSalary());
 
-		//不需要审核
-		if(vipGroupApplyBaseInfoDto.getAuditStatus() == AuditStatusEnum.PASS){
-			//创建融云班级群
-			ImGroupMember[] imGroupMembers = { new ImGroupMember(vipGroupApplyBaseInfoDto.getUserId().toString())};
-			// 创建群组
-			imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+		List<ClassGroupStudentMapper> classGroupStudents = classGroupStudentMapperDao.findByClassGroup(classGroup.getId());
 
-			//发送推送短信
-			Map<Integer,String> map = new HashMap<>(1);
-			map.put(vipGroupApplyBaseInfoDto.getUserId(),sysUser.getPhone());
-			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI,MessageTypeEnum.TEACHER_SMS_VIP_COURSE_ADD,
-					map,null,0,"",vipGroupApplyBaseInfoDto.getName());
+		//生成学生单课缴费信息
+		for (ClassGroupStudentMapper classGroupStudent : classGroupStudents) {
+			courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentForVipGroup(vipGroupId,classGroupStudent.getUserId());
 		}
+
+		//创建融云班级群
+		ImGroupMember[] imGroupMembers = { new ImGroupMember(vipGroupApplyBaseInfoDto.getUserId().toString())};
+		// 创建群组
+		imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+
+		//发送推送短信
+		Map<Integer,String> map = new HashMap<>(1);
+		map.put(vipGroupApplyBaseInfoDto.getUserId(),sysUser.getPhone());
+		sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI,MessageTypeEnum.TEACHER_SMS_VIP_COURSE_ADD,
+				map,null,0,"",vipGroupApplyBaseInfoDto.getName());
 	}
 
 	@Transactional(rollbackFor = Exception.class)
@@ -811,6 +822,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			this.updateVipGroupStudentNumAndStatus(vipGroup.getId(),1,false);
 		}
 
+		List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(),CourseSchedule.class);
+		courseScheduleService.checkNewCourseSchedules(courseSchedules,false);
+
 		StudentPaymentOrder studentPaymentOrder=new StudentPaymentOrder();
 		studentPaymentOrder.setUserId(user.getId());
 		String orderNo=StringUtils.join(new String[]{user.getId().toString(),String.valueOf(System.currentTimeMillis())});
@@ -827,8 +841,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		Map<String,Object> payMap = payService.getPayMap(
 				vipGroup.getTotalPrice(),
 				orderNo,
-				"http://mstudev.dayaedu.com/api-student/studentOrder/notify",
-				"http://mstudev.dayaedu.com/#/paymentresult?orderNo="+orderNo,
+				"https://dyme.utools.club/api-student/studentOrder/notify",
+				"http://dyme.utools.club/#/paymentresult?orderNo="+orderNo,
 				"vip课购买",
 				vipGroup.getName());
 		studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
@@ -885,9 +899,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_VIP_BUY, map, null, 0, "2",
 				vipGroup.getName());
 
-		//生成学生单课缴费信息
-		courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentForVipGroup(vipGroupId,userId);
-
 		VipGroupClassGroupMapper vipGroupClassGroupMapper = vipGroupClassGroupMapperDao.findByVipGroupId(vipGroupId);
 
 		ClassGroupStudentMapper classGroupStudentMapper=new ClassGroupStudentMapper(vipGroupClassGroupMapper.getClassGroupId(),userId.intValue());

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

@@ -678,6 +678,18 @@
             </foreach>
         AND del_flag_ = 0
     </select>
+    <select id="findByCourseSchedules" resultMap="ClassGroup">
+        SELECT
+            cg.*
+        FROM
+            course_schedule cs
+            LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
+        WHERE cs.id_ IN
+        <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+            #{courseScheduleId}
+        </foreach>
+        AND cg.del_flag_ = 0
+    </select>
     <select id="findByCourseSchedule" resultMap="ClassGroup">
         SELECT
             cg.*

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

@@ -153,6 +153,10 @@
         </foreach>
         AND status_ = 'NORMAL'
     </select>
+    <select id="findByClassGroup" resultMap="ClassGroupStudentMapper">
+        SELECT * FROM class_group_student_mapper WHERE class_group_id_ = #{classGroupId}
+        AND status_ = 'NORMAL'
+    </select>
 
     <!-- 查询班级某状态的所有学生 -->
     <select id="findClassStudentList" resultMap="com.ym.mec.biz.dal.dao.StudentRegistrationDao.StudentRegistration">

+ 1 - 1
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -351,7 +351,7 @@ public class StudentOrderController extends BaseController {
 
     }
 
-   // @Scheduled(cron = "0/30 * * * * ?")
+    @Scheduled(cron = "0/30 * * * * ?")
     public void setSuccessStatus() throws Exception {
         List<StudentPaymentOrder> payingOrders = studentPaymentOrderService.findOrdersByStatus(DealStatusEnum.ING, "YQPAY");