Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java
周箭河 5 years ago
parent
commit
fb93243ff4

+ 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);
 
     /**
      * 查询班级某状态下所有的学生

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

@@ -494,7 +494,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         courseListDtos.addAll(classGroupDao.queryStudentMusicGroupCourses(StringUtils.join(musicGroupIds, ",")));
         courseListDtos.addAll(vipCourses);
         //检测对应乐团是否已申请退费
-        List<Map<String, Integer>> isApplyMaps = studentApplyRefundsDao.checkIsApplyRefund(musicGroupIds, userId);
+        List<Map<String, Integer>> isApplyMaps;
+        if(musicGroupIds != null && musicGroupIds.size() > 0){
+            isApplyMaps = studentApplyRefundsDao.checkIsApplyRefund(musicGroupIds, userId);
+        }else {
+            isApplyMaps = new ArrayList<>();
+        }
         Map<String, Integer> isApplyMap = MapUtil.convertIntegerMap(isApplyMaps);
         //获取所有教学点名称列表
         Set<Integer> schoolIds = courseListDtos.stream().map(CourseListDto::getTeacherSchoolId).collect(Collectors.toSet());

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

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUserRole;
+import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
@@ -543,6 +544,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	@Transactional(rollbackFor = Exception.class)
 	@Override
 	public void classStartDateAdjust(List<CourseSchedule> newCourseSchedules) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		List<Long> newCourseScheduleIds = newCourseSchedules.stream().map(CourseSchedule::getId).collect(Collectors.toList());
 		//获取对应未修改的课程列表
 		List<CourseSchedule> oldCourseScheduleList = courseScheduleDao.findByCourseScheduleIds(newCourseScheduleIds);
@@ -565,15 +567,15 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		Map<Long, CourseSchedule> oldCourseSchedules = oldCourseScheduleList.stream().collect(Collectors.toMap(CourseSchedule::getId,courseSchedule -> courseSchedule));
 		newCourseSchedules.forEach(newCourseSchedule -> {
 
-			if(newCourseSchedule.getStartClassTime().before(tomorrow)){
+			if(newCourseSchedule.getStartClassTime().before(tomorrow)&&sysUser.getUserType().equals(SysUserType.TEACHER)){
 			    throw new BizException("调整时间必须为明天以后");
             }
 
 			CourseSchedule oldCourseSchedule = oldCourseSchedules.get(newCourseSchedule.getId());
 
-//            if(oldCourseSchedule.getStartClassTime().before(now)){
-//                throw new BizException("不能调整今天及以前的课程");
-//            }
+            if(oldCourseSchedule.getStartClassTime().before(now)&&sysUser.getUserType().equals(SysUserType.TEACHER)){
+                throw new BizException("不能调整今天及以前的课程");
+            }
 
 			oldCourseSchedule.setClassDate(newCourseSchedule.getClassDate());
 			oldCourseSchedule.setStartClassTime(newCourseSchedule.getStartClassTime());

+ 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)){

+ 33 - 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,9 +253,24 @@ 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);
 
+		try {
+			//创建融云班级群
+			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());
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
 	}
 
 	@Override
@@ -505,10 +521,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 +751,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,18 +769,11 @@ 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());
 		}
 	}
 
@@ -811,6 +825,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 +844,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 +902,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");