Browse Source

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

yonge 5 years ago
parent
commit
5dc9d25ba9

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

@@ -22,7 +22,8 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @param courseID
      * @return
      */
-    TeacherAttendanceDto getCurrentCourseDetail(@Param("courseID") Long courseID);
+    TeacherAttendanceDto getCurrentCourseDetail(@Param("courseID") Long courseID,
+                                                @Param("teacherId") Integer teacherId);
 
     /**
      * @param startTime:
@@ -58,6 +59,17 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     int batchDeleteCourseSchedules(@Param("courseScheduleIds") List<Long> courseScheduleIds);
 
     /**
+     * @describe 获取指定乐团下对应状态的课程编号列表
+     * @author Joburgess
+     * @date 2019/11/16
+     * @param musicGroupId:乐团编号
+     * @param status: 状态
+     * @return java.util.List<java.lang.Integer>
+     */
+    List<CourseSchedule> findMusicGroupCourseSchedules(@Param("musicGroupId") String musicGroupId,
+                                               @Param("status") String status);
+
+    /**
      * @param teacherId: 教师编号
      * @param classDate: 上课日期
      * @param startTime: 开始时间

+ 11 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -13,7 +13,6 @@ import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
-import org.apache.commons.collections.iterators.ObjectGraphIterator;
 
 import java.util.Date;
 import java.util.List;
@@ -29,15 +28,24 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	TeacherAttendanceDto getCurrentCourseDetail(Long courseID);
 
 	/**
-	 * @describe 根据课程编号删除课程计划及对应的学生缴费、教师课酬记录
+	 * @describe 根据课程编号删除课程计划及对应的学生缴费、教师课酬记录、教师签到记录
 	 * @author Joburgess
 	 * @date 2019/10/31
-	 * @param courseScheduleIds:
+	 * @param courseScheduleIds: 课程计划编号列表
 	 * @return int
 	 */
 	void deleteCourseSchedules(List<Long> courseScheduleIds);
 
 	/**
+	 * @describe 删除乐团下所有未上的课时
+	 * @author Joburgess
+	 * @date 2019/11/16
+	 * @param musicGroupId:
+	 * @return void
+	 */
+	void batchDeleteMusicGroupNotStartCourse(String musicGroupId);
+
+	/**
 	 * @describe 判断该课程是否只能进行正常签到
 	 * @author Joburgess
 	 * @date 2019/11/5

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderDetailService.java

@@ -48,4 +48,12 @@ public interface StudentPaymentOrderDetailService extends BaseService<Long, Stud
      */
     List<Goods> findApplyOrderGoods(Long orderId);
 
+    /**
+     * 获取订单详情
+     * @param userId
+     * @param status
+     * @return
+     */
+    List<StudentPaymentOrderDetail>findUserApplyOrder(Integer userId,DealStatusEnum status);
+
 }

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

@@ -92,7 +92,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if(Objects.isNull(courseID)){
 			throw new BizException("参数错误!");
 		}
-		TeacherAttendanceDto currentCourseDetail = courseScheduleDao.getCurrentCourseDetail(courseID);
+		TeacherAttendanceDto currentCourseDetail = courseScheduleDao.getCurrentCourseDetail(courseID,user.getId());
 		if(Objects.isNull(currentCourseDetail)){
 		    throw new BizException("课程不存在");
         }
@@ -118,6 +118,21 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	}
 
 	@Override
+	public void batchDeleteMusicGroupNotStartCourse(String musicGroupId) {
+		if(StringUtils.isBlank(musicGroupId)){
+			throw new BizException("请指定乐团");
+		}
+		List<CourseSchedule> musicGroupCourseSchedules = courseScheduleDao.findMusicGroupCourseSchedules(musicGroupId, CourseStatusEnum.NOT_START.getCode());
+		if(CollectionUtils.isEmpty(musicGroupCourseSchedules)){
+			throw new BizException("此乐团不存在未上课程");
+		}
+		List<Long> courseScheduleIds = musicGroupCourseSchedules.stream()
+								.map(CourseSchedule::getId)
+								.collect(Collectors.toList());
+		deleteCourseSchedules(courseScheduleIds);
+	}
+
+	@Override
 	public YesOrNoEnum enableOnlyNormalAttendance(Date startClassTime,Long userId,boolean checkSchool,Integer schoolId){
 		Date endTime=startClassTime;
 		Date startTime=DateUtil.addHours(endTime,-1);

+ 24 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.dto.MusicGroupSubjectGoodsAndInfoDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.GoodsType;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.util.collection.MapUtil;
 import org.snaker.engine.core.OrderService;
@@ -18,6 +19,7 @@ import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -142,13 +144,28 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
         //乐团计划及收费信息
         MusicGroupSubjectPlan musicOneSubjectClassPlan = this.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
         musicOneSubjectClassPlan.setFee(studentRegistration.getTemporaryCourseFee());
+        
+        //乐团乐器及辅件信息
+        List<MusicGroupSubjectGoodsGroup> goodsGroups = new ArrayList<>();
 
         List<StudentPaymentOrderDetail> orderDetails = studentPaymentOrderDetailDao.findUserApplyOrder(studentRegistration.getUserId(), DealStatusEnum.WAIT_PAY);
-
-        String goodsIds = orderDetails.stream().filter(orderDetail -> orderDetail.getGoodsIdList() != null).map(orderDetail -> orderDetail.getGoodsIdList()).collect(Collectors.joining(","));
-
-        List<Goods> goodies = goodsService.findGoodsByIds(goodsIds);
-
+        for (StudentPaymentOrderDetail orderDetail : orderDetails) {
+            if (orderDetail.getGoodsIdList() == null || orderDetail.getGoodsIdList().isEmpty()) continue;
+            MusicGroupSubjectGoodsGroup musicGroupSubjectGoodsGroup = new MusicGroupSubjectGoodsGroup();
+            if (orderDetail.getType().equals(OrderDetailTypeEnum.MUSICAL)) {
+                musicGroupSubjectGoodsGroup.setName("乐器");
+                musicGroupSubjectGoodsGroup.setType(GoodsType.INSTRUMENT);
+            } else {
+                musicGroupSubjectGoodsGroup.setName("辅件");
+                musicGroupSubjectGoodsGroup.setType(GoodsType.ACCESSORIES);
+            }
+            musicGroupSubjectGoodsGroup.setId(orderDetail.getId());
+            musicGroupSubjectGoodsGroup.setMusicGroupId(musicGroupId);
+            musicGroupSubjectGoodsGroup.setPrice(orderDetail.getPrice());
+            List<Goods> goodies = goodsService.findGoodsByIds(orderDetail.getGoodsIdList());
+            musicGroupSubjectGoodsGroup.setGoodsList(goodies);
+            goodsGroups.add(musicGroupSubjectGoodsGroup);
+        }
 
         //获取声部(科目)下其他商品
         List<Goods> otherGoods = goodsService.findTypeGoods("OTHER");
@@ -156,7 +173,7 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
         MusicGroupSubjectGoodsAndInfoDto musicGroupSubjectGoodsAndInfo = new MusicGroupSubjectGoodsAndInfoDto();
         musicGroupSubjectGoodsAndInfo.setMusicGroupSubjectPlan(musicOneSubjectClassPlan);
         musicGroupSubjectGoodsAndInfo.setCourseScheduleInfo(courseForm);
-        musicGroupSubjectGoodsAndInfo.setStudentGoods(goodies);
+        musicGroupSubjectGoodsAndInfo.setMusicGroupSubjectGoodsGroupList(goodsGroups);
         musicGroupSubjectGoodsAndInfo.setOtherGoods(otherGoods);
         return musicGroupSubjectGoodsAndInfo;
     }
@@ -164,6 +181,6 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
 
     @Override
     public MusicGroupSubjectPlan findSubjectPlan(String musicGroupId, Integer subjectId) {
-        return musicGroupSubjectPlanDao.findSubjectPlan(musicGroupId,subjectId);
+        return musicGroupSubjectPlanDao.findSubjectPlan(musicGroupId, subjectId);
     }
 }

+ 10 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -199,7 +199,10 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 			throw new BizException("开课2个小时之前才可以请假");
 		}
 		
-		StudentAttendance studentAttendance  = new StudentAttendance();
+		StudentAttendance studentAttendance  = studentAttendanceDao.findByStatusAndCourseScheduleId(userId,courseScheduleId.intValue());
+		if(Objects.isNull(studentAttendance)){
+			studentAttendance=new StudentAttendance();
+		}
 		studentAttendance.setClassGroupId(courseSchedule.getClassGroupId());
 		studentAttendance.setCourseScheduleId(courseScheduleId);
 		studentAttendance.setCreateTime(date);
@@ -207,8 +210,12 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 		studentAttendance.setRemark(remark);
 		studentAttendance.setStatus(StudentAttendanceStatusEnum.LEAVE);
 		studentAttendance.setUserId(userId);
-		
-		studentAttendanceDao.insert(studentAttendance);
+
+		if(Objects.nonNull(studentAttendance.getId())){
+			studentAttendanceDao.update(studentAttendance);
+		}else{
+			studentAttendanceDao.insert(studentAttendance);
+		}
 		
 		ClassGroupStudentMapper classGroupStudentMapper = classGroupStudentMapperDao.query(courseSchedule.getClassGroupId(), userId);
 		if(Objects.isNull(classGroupStudentMapper)){

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java

@@ -120,4 +120,9 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
         }
         return goodies;
     }
+
+    @Override
+    public List<StudentPaymentOrderDetail> findUserApplyOrder(Integer userId, DealStatusEnum status) {
+        return studentPaymentOrderDetailDao.findUserApplyOrder(userId,status);
+    }
 }

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

@@ -191,8 +191,6 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             userId = sysUser.getId();
             //添加用户现金账户
             sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
-            // 添加用户电子签章账户
-            //contractService.register(userId, sysUser.getRealName(), sysUser.getIdCardNo(), sysUser.getPhone());
             //注册到融云
             if (StringUtils.isEmpty(sysUser.getAvatar())) {
                 sysUser.setAvatar(sysConfigDao.findConfigValue(SysConfigService.USER_DEFAULT_HEAD_URL));
@@ -729,6 +727,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         student.setIdCardNo(studentRegistration.getIdCardNo());
         update(student);
         studentRegistrationDao.updateUser(student.getUserId(), student.getParentsName(), student.getIdCardNo());
+        // 添加用户电子签章账户
+        contractService.register(student.getUserId(),student.getParentsName(), student.getIdCardNo(), student.getParentsPhone());
         return student;
     }
 }

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

@@ -85,7 +85,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			isAttendance=true;
 		}
 
-		TeacherAttendanceDto currentCourseDetail = courseScheduleDao.getCurrentCourseDetail(teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId());
+		TeacherAttendanceDto currentCourseDetail = courseScheduleDao.getCurrentCourseDetail(teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId(),user.getId());
 		if(Objects.isNull(currentCourseDetail)){
 			throw new BizException("课程不存在");
 		}

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

@@ -248,7 +248,7 @@
         LEFT JOIN school s ON mg.school_id_=s.id_
         LEFT JOIN sys_user su ON cs.actual_teacher_id_=su.id_
         LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_
-        WHERE cs.id_= #{courseID}
+        WHERE cs.id_= #{courseID} AND ta.teacher_id_=#{teacherId}
     </select>
 
     <select id="getTeacherCourseByDateSpeed"
@@ -1258,6 +1258,7 @@
         <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
             #{classGroupId}
         </foreach>
+        AND csts.teacher_role_='BISHOP'
         ORDER BY start_class_time_
     </select>
     <select id="findStudentMap" resultType="java.util.Map">
@@ -1310,6 +1311,16 @@
 
         GROUP BY class_group_id_
     </select>
+    <select id="findMusicGroupCourseSchedules" resultMap="CourseSchedule">
+        SELECT
+            cs.*
+        FROM
+            course_schedule cs
+            LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
+        WHERE
+            cg.music_group_id_=#{musicGroupId}
+            AND status_ = #{status}
+    </select>
     <delete id="deleteCourseSchedulesByClassGroupIds">
         DELETE FROM course_schedule WHERE class_group_id_ IN
         <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">

+ 19 - 2
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -232,7 +232,16 @@ public class MusicGroupController extends BaseController {
 
         //乐器及打包辅件
         List<MusicGroupSubjectGoodsGroup> goodsGroups = null;
-        if (registerPayDto.getGoodsGroupIds() != null && !registerPayDto.getGoodsGroupIds().equals("")) {
+        if (registerPayDto.getGoodsGroupIds() != null && !registerPayDto.getGoodsGroupIds().equals("")) GROUP: {
+            if(studentRegistration.getTemporaryCourseFee() != null){
+                List<StudentPaymentOrderDetail> orderDetails = studentPaymentOrderDetailService.findUserApplyOrder(studentRegistration.getUserId(), DealStatusEnum.WAIT_PAY);
+                for (StudentPaymentOrderDetail orderDetail : orderDetails) {
+                    orderAmount = orderAmount.add(orderDetail.getPrice());
+                    continue;
+                }
+                break GROUP;
+            }
+
             goodsGroups = musicGroupSubjectGoodsGroupService.findGoodsGroupByIds(registerPayDto.getGoodsGroupIds());
             for (MusicGroupSubjectGoodsGroup goodsGroup : goodsGroups) {
                 if (goodsGroup.getType().equals(GoodsType.INSTRUMENT) && musicOneSubjectClassPlan.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
@@ -323,7 +332,15 @@ public class MusicGroupController extends BaseController {
 
         //乐器及打包辅件
         List<MusicGroupSubjectGoodsGroup> goodsGroups = null;
-        if (registerPayDto.getGoodsGroupIds() != null && !registerPayDto.getGoodsGroupIds().equals("")) {
+        if (registerPayDto.getGoodsGroupIds() != null && !registerPayDto.getGoodsGroupIds().equals("")) GROUP: {
+            if(studentRegistration.getTemporaryCourseFee() != null){
+                List<StudentPaymentOrderDetail> orderDetails = studentPaymentOrderDetailService.findUserApplyOrder(studentRegistration.getUserId(), DealStatusEnum.WAIT_PAY);
+                for (StudentPaymentOrderDetail orderDetail : orderDetails) {
+                    orderAmount = orderAmount.add(orderDetail.getPrice());
+                    continue;
+                }
+                break GROUP;
+            }
             goodsGroups = musicGroupSubjectGoodsGroupService.findGoodsGroupByIds(registerPayDto.getGoodsGroupIds());
             for (MusicGroupSubjectGoodsGroup goodsGroup : goodsGroups) {
                 if (goodsGroup.getType().equals(GoodsType.INSTRUMENT) && musicOneSubjectClassPlan.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {

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

@@ -210,6 +210,14 @@ public class CourseScheduleController extends BaseController {
 		return succeed();
 	}
 
+    @ApiOperation(value = "删除乐团下所有未上的课时")
+    @GetMapping("/batchDeleteMusicGroupNotStartCourse")
+    @PreAuthorize("@pcs.hasPermissions('courseSchedule/batchDeleteMusicGroupNotStartCourse')")
+	public Object batchDeleteMusicGroupNotStartCourse(String musicGroupId){
+        scheduleService.batchDeleteMusicGroupNotStartCourse(musicGroupId);
+        return succeed();
+    }
+
 	@ApiOperation(value = "乐团详情--课酬调整--课程教师列表")
 	@GetMapping("/queryTeacherSalary")
     @PreAuthorize("@pcs.hasPermissions('courseSchedule/queryTeacherSalary')")