浏览代码

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

zouxuan 5 年之前
父节点
当前提交
1f823a8bd8

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

@@ -1,8 +1,24 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.PracticeGroup;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
 
 public interface PracticeGroupDao extends com.ym.mec.common.dal.BaseDAO<Long, PracticeGroup> {
 
+    /**
+     * @describe 获取学生指定日期内预约的陪练课
+     * @author Joburgess
+     * @date 2020/1/31
+     * @param userId: 用户编号
+     * @param startDate: 开始时间
+     * @param endDate: 结束时间
+     * @return java.util.List<com.ym.mec.biz.dal.entity.PracticeGroup>
+     */
+    List<PracticeGroup> getUserPracticeCoursesWithDateRange(@Param("userId") Integer userId,
+                                                            @Param("startDate") Date startDate,
+                                                            @Param("endDate") Date endDate);
 	
-}
+}

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ClassGroupTypeEnum.java

@@ -11,6 +11,7 @@ public enum ClassGroupTypeEnum implements BaseEnum<String, ClassGroupTypeEnum> {
 	HIGH("HIGH", "提高班"),
 	VIP("VIP", "vip课"),
 	DEMO("DEMO", "试听课"),
+	PRACTICE("PRACTICE", "陪练课"),
 	SNAP("SNAP", "临时班级");
 
 	private String code;

+ 155 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -1,19 +1,22 @@
 package com.ym.mec.biz.service.impl;
 
-import com.ym.mec.biz.dal.dao.PracticeGroupDao;
-import com.ym.mec.biz.dal.dao.SubjectDao;
-import com.ym.mec.biz.dal.entity.PracticeGroup;
-import com.ym.mec.biz.dal.entity.Subject;
-import com.ym.mec.biz.dal.entity.SysConfig;
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.service.PracticeGroupService;
 import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.TeacherService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.date.DateUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.util.*;
 
 @Service
@@ -25,6 +28,24 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 	private SysConfigService sysConfigService;
 	@Autowired
 	private SubjectDao subjectDao;
+	@Autowired
+    private TeacherService teacherService;
+	@Autowired
+    private EmployeeDao employeeDao;
+	@Autowired
+    private ClassGroupDao classGroupDao;
+	@Autowired
+    private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
+	@Autowired
+    private ClassGroupTeacherSalaryDao classGroupTeacherSalaryDao;
+	@Autowired
+    private CourseScheduleDao courseScheduleDao;
+	@Autowired
+    private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
+	@Autowired
+    private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
+	@Autowired
+    private TeacherAttendanceDao teacherAttendanceDao;
 
 	@Override
 	public BaseDAO<Long, PracticeGroup> getDAO() {
@@ -48,16 +69,19 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 		result.put("subjects", subjects);
 		result.put("practiceApplyStartTime",practiceApplyStartTimeConfig.getParanValue());
 		result.put("practiceApplyEndTime",practiceApplyEndTimeConfig.getParanValue());
+		result.put("userDefaultSubjectIds",null);
 		return result;
 	}
 
 	@Override
+    @Transactional(rollbackFor = Exception.class)
 	public Map practiceApply(PracticeGroup practiceGroup) {
 		Integer practiceCourseMinutes=25;
 		SysConfig practiceCourseMinutesConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_MINUTES);
 		if(Objects.nonNull(practiceCourseMinutesConfig)){
 			practiceCourseMinutes=practiceCourseMinutesConfig.getParanValue(Integer.class);
 		}
+        SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
 		Date now=new Date();
 		Date nextWeekMonday = DateUtil.getNextWeekMonday(now);
 		Date nextWeekFriday = DateUtil.getNextWeekDay(now,11);
@@ -66,7 +90,131 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 				&&!DateUtil.isSameDay(practiceGroup.getCoursesStartDate(),nextWeekFriday))){
 			throw new BizException("预约时间超过范围");
 		}
-		practiceGroup.setCoursesExpireDate(DateUtil.addMinutes(practiceGroup.getCoursesStartDate(),practiceCourseMinutes));
-		return null;
+
+		Integer applyTimes=0;
+        List<PracticeGroup> userPracticeCoursesWithDateRange = practiceGroupDao.getUserPracticeCoursesWithDateRange(practiceGroup.getUserId(), nextWeekMonday, nextWeekFriday);
+        if(!CollectionUtils.isEmpty(userPracticeCoursesWithDateRange)){
+            applyTimes=userPracticeCoursesWithDateRange.size();
+        }
+
+        if(applyTimes>=2){
+            throw new BizException("您的预约次数已经达到限制");
+        }
+
+        practiceGroup.setCoursesExpireDate(DateUtil.addMinutes(practiceGroup.getCoursesStartDate(),practiceCourseMinutes));
+		Integer teacherId = searchTeacherId(practiceGroup.getUserId(),practiceGroup.getSubjectId(),practiceGroup.getCoursesStartDate(),practiceGroup.getCoursesExpireDate());
+        if(Objects.isNull(teacherId)){
+            throw new BizException("教师指派错误");
+        }
+		Teacher teacher = teacherService.getDetail(teacherId);
+        Employee employee = employeeDao.get(teacherId);
+        if(StringUtils.isEmpty(employee.getOrganIdList()) || employee.getOrganIdList().contains(",")){
+            practiceGroup.setOrganId(teacher.getTeacherOrganId());
+        }else {
+            practiceGroup.setOrganId(Integer.parseInt(employee.getOrganIdList()));
+        }
+        Subject subject=subjectDao.get(practiceGroup.getSubjectId());
+        if(Objects.isNull(subject)){
+            throw new BizException("声部不存在");
+        }
+        practiceGroup.setName(subject.getName()+"•陪练课");
+        practiceGroup.setSingleClassMinutes(practiceCourseMinutes);
+        practiceGroupDao.insert(practiceGroup);
+
+        //创建班级信息
+        ClassGroup classGroup=new ClassGroup();
+        classGroup.setSubjectIdList(practiceGroup.getSubjectId().toString());
+        classGroup.setExpectStudentNum(1);
+        classGroup.setName(practiceGroup.getName());
+        classGroup.setTotalClassTimes(1);
+        classGroup.setType(ClassGroupTypeEnum.PRACTICE);
+        classGroup.setDelFlag(0);
+        classGroup.setGroupType(GroupType.PRACTICE);
+        classGroup.setMusicGroupId(practiceGroup.getId().toString());
+        classGroup.setCreateTime(now);
+        classGroup.setUpdateTime(now);
+        classGroupDao.insert(classGroup);
+
+        //创建班级老师关联记录
+        ClassGroupTeacherMapper classGroupTeacherMapper=new ClassGroupTeacherMapper();
+        classGroupTeacherMapper.setMusicGroupId(practiceGroup.getId().toString());
+        classGroupTeacherMapper.setClassGroupId(classGroup.getId());
+        classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.BISHOP);
+        classGroupTeacherMapper.setUserId(teacherId);
+        classGroupTeacherMapper.setGroupType(GroupType.PRACTICE);
+        classGroupTeacherMapper.setCreateTime(now);
+        classGroupTeacherMapper.setUpdateTime(now);
+        classGroupTeacherMapperDao.insert(classGroupTeacherMapper);
+
+        //创建班级与老师课酬记录
+        ClassGroupTeacherSalary classGroupTeacherSalary=new ClassGroupTeacherSalary();
+        classGroupTeacherSalary.setMusicGroupId(practiceGroup.getId().toString());
+        classGroupTeacherSalary.setClassGroupId(classGroup.getId());
+        classGroupTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
+        classGroupTeacherSalary.setUserId(teacherId);
+        classGroupTeacherSalary.setSalary(new BigDecimal(practiceCourseSalaryConfig.getParanValue(Integer.class)));
+        classGroupTeacherSalary.setOnlineClassesSalary(new BigDecimal(practiceCourseSalaryConfig.getParanValue(Integer.class)));
+        classGroupTeacherSalary.setGroupType(GroupType.PRACTICE);
+        classGroupTeacherSalary.setCreateTime(now);
+        classGroupTeacherSalary.setUpdateTime(now);
+        classGroupTeacherSalaryDao.insert(classGroupTeacherSalary);
+
+        //课表
+        CourseSchedule courseSchedule = new CourseSchedule();
+        courseSchedule.setMusicGroupId(practiceGroup.getId().toString());
+        courseSchedule.setClassGroupId(classGroup.getId());
+        courseSchedule.setStatus(CourseStatusEnum.NOT_START);
+        courseSchedule.setClassDate(practiceGroup.getCoursesStartDate());
+        courseSchedule.setStartClassTime(practiceGroup.getCoursesStartDate());
+        courseSchedule.setEndClassTime(practiceGroup.getCoursesExpireDate());
+        courseSchedule.setTeacherId(teacherId);
+        courseSchedule.setActualTeacherId(teacherId);
+        courseSchedule.setCreateTime(now);
+        courseSchedule.setUpdateTime(now);
+        courseSchedule.setTeachMode(TeachModeEnum.ONLINE);
+        courseSchedule.setType(CourseSchedule.CourseScheduleType.PRACTICE);
+        courseSchedule.setGroupType(GroupType.PRACTICE);
+        courseSchedule.setName(practiceGroup.getName());
+        courseScheduleDao.insert(courseSchedule);
+
+        //课程与老师薪水表
+        CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
+        courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
+        courseScheduleTeacherSalary.setGroupType(GroupType.PRACTICE);
+        courseScheduleTeacherSalary.setMusicGroupId(practiceGroup.getId().toString());
+        courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
+        courseScheduleTeacherSalary.setUserId(teacherId);
+        courseScheduleTeacherSalary.setExpectSalary(new BigDecimal(practiceCourseSalaryConfig.getParanValue()));
+        courseScheduleTeacherSalary.setCreateTime(now);
+        courseScheduleTeacherSalary.setUpdateTime(now);
+        courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
+        courseScheduleTeacherSalaryDao.insert(courseScheduleTeacherSalary);
+
+        //学生缴费记录
+        CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
+        courseScheduleStudentPayment.setGroupType(GroupType.PRACTICE);
+        courseScheduleStudentPayment.setMusicGroupId(practiceGroup.getId().toString());
+        courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
+        courseScheduleStudentPayment.setUserId(practiceGroup.getUserId());
+        courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
+        courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
+        courseScheduleStudentPayment.setCreateTime(now);
+        courseScheduleStudentPayment.setUpdateTime(now);
+        courseScheduleStudentPaymentDao.insert(courseScheduleStudentPayment);
+
+        //教师签到记录
+        TeacherAttendance teacherAttendance = new TeacherAttendance();
+        teacherAttendance.setMusicGroupId(practiceGroup.getId().toString());
+        teacherAttendance.setTeacherId(teacherId);
+        teacherAttendance.setClassGroupId(classGroup.getId());
+        teacherAttendance.setGroupType(GroupType.PRACTICE);
+        teacherAttendance.setCourseScheduleId(courseSchedule.getId());
+        teacherAttendance.setCreateTime(now);
+        teacherAttendanceDao.insert(teacherAttendance);
+
+        Map result=new HashMap();
+        result.put("teacherName",teacher.getRealName());
+        result.put("enableApply",applyTimes<2?1:0);
+        return result;
 	}
 }

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

@@ -47,4 +47,7 @@
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM practice_group
 	</select>
+    <select id="getUserPracticeCoursesWithDateRange" resultMap="PracticeGroup">
+		SELECT * FROM practice_group WHERE user_id_=#{userId} AND (courses_start_date_ BETWEEN DATE_FORMAT(#{startDate},'%Y-%m-%d') AND DATE_FORMAT(#{endDate},'%Y-%m-%d'))
+	</select>
 </mapper>

+ 7 - 0
mec-student/src/main/java/com/ym/mec/student/controller/PracticeGroupController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.student.controller;
 
+import com.ym.mec.biz.dal.entity.PracticeGroup;
 import com.ym.mec.biz.service.PracticeGroupService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
@@ -27,4 +28,10 @@ public class PracticeGroupController extends BaseController {
         return succeed(practiceGroupService.getPracticeApplyParams());
     }
 
+    @ApiOperation("陪练课预约")
+    @GetMapping(value = "/practiceApply")
+    public Object practiceApply(PracticeGroup practiceGroup){
+        return succeed(practiceGroupService.practiceApply(practiceGroup));
+    }
+
 }