소스 검색

Merge remote-tracking branch 'origin/master'

Joburgess 5 년 전
부모
커밋
020d3feaaf

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

@@ -388,7 +388,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @params [vipGroupId]
      * @describe 获取vip课排课计划
      */
-    List<CourseSchedule> findVipGroupCourseSchedules(@Param("vipGroupId") Long vipGroupId);
+    List<CourseSchedule> findGroupCourseSchedules(@Param("groupId") Long groupId,@Param("groupType")String groupType);
 
     /**
      * @describe 获取对应乐团下未开始的排课计划编号列表

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java

@@ -127,7 +127,7 @@ public class CourseSchedule {
 
 	private String classGroupName;
 
-	private Integer isSettlement;
+	private Integer isSettlement = 0;
 
 	private String classGroupType;
 

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/PracticeGroupQueryInfo.java

@@ -12,6 +12,16 @@ public class PracticeGroupQueryInfo extends QueryInfo {
 
     private Integer teacherId;
 
+    private Long practiceId;
+
+    public Long getPracticeId() {
+        return practiceId;
+    }
+
+    public void setPracticeId(Long practiceId) {
+        this.practiceId = practiceId;
+    }
+
     public Integer getTeacherId() {
         return teacherId;
     }

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

@@ -7,10 +7,7 @@ import com.ym.mec.biz.dal.entity.CourseScheduleComplaints;
 import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
-import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
-import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
-import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
+import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/PracticeGroupService.java

@@ -93,4 +93,11 @@ public interface PracticeGroupService extends BaseService<Long, PracticeGroup> {
 	 * @return
 	 */
 	PageInfo<PracticeGroupDto> findPracticeGroups(PracticeGroupQueryInfo queryInfo);
+
+	/**
+	 * 获取陪练课课程计划
+	 * @param queryInfo
+	 * @return
+	 */
+	Object findPracticeGroupCourseSchedules(PracticeGroupQueryInfo queryInfo);
 }

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

@@ -9,10 +9,7 @@ import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
-import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
-import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
-import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
-import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
+import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
@@ -411,7 +408,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         List<CourseScheduleDto> teacherCourseSchedulesWithDate = courseScheduleDao.getTeacherCourseSchedulesWithDate(classDate, userId.longValue(), type);
         List<Long> allCourseScheduleIds = teacherCourseSchedulesWithDate.stream().map(CourseScheduleDto::getId).collect(Collectors.toList());
         List<Long> courseScheduleIds = teacherCourseSchedulesWithDate.stream()
-                .filter(cs -> cs.getType().equals(CourseSchedule.CourseScheduleType.VIP) || cs.getType().equals(CourseSchedule.CourseScheduleType.DEMO))
+                .filter(cs -> cs.getType().equals(CourseSchedule.CourseScheduleType.VIP) ||
+                        cs.getType().equals(CourseSchedule.CourseScheduleType.DEMO) ||
+                        cs.getType().equals(CourseSchedule.CourseScheduleType.PRACTICE))
                 .map(CourseScheduleDto::getId).collect(Collectors.toList());
 
         Map<Integer, String> subjectNameCourseMap = new HashMap<>();
@@ -2169,7 +2168,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         if (vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING)) {
             dataList = JSON.parseArray(vipGroup.getCourseSchedulesJson(), CourseSchedule.class);
         } else {
-            dataList = courseScheduleDao.findVipGroupCourseSchedules(vipGroup.getId());
+            dataList = courseScheduleDao.findGroupCourseSchedules(vipGroup.getId(),GroupType.VIP.getCode());
         }
 
         int count = dataList.size();

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

@@ -54,7 +54,7 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 		//获取活动信息
 		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroupApplyBaseInfoDto.getVipGroupActivityId().intValue());
 
-		List<CourseSchedule> vipGroupCourseSchedules=courseScheduleDao.findVipGroupCourseSchedules(vipGroupId);
+		List<CourseSchedule> vipGroupCourseSchedules=courseScheduleDao.findGroupCourseSchedules(vipGroupId,GroupType.VIP.getCode());
 
 		if(CollectionUtils.isEmpty(vipGroupCourseSchedules)){
 			throw new BizException("未获取到排课信息");

+ 48 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
@@ -25,6 +26,7 @@ import com.ym.mec.im.ImFeignService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import io.swagger.models.auth.In;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -46,6 +48,8 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
     @Autowired
     private SubjectDao subjectDao;
     @Autowired
+    private OrganizationDao organizationDao;
+    @Autowired
     private TeacherService teacherService;
     @Autowired
     private EmployeeDao employeeDao;
@@ -1371,6 +1375,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             dataList = practiceGroupDao.findAllByOrgan(params);
             if(dataList != null && dataList.size() > 0){
                 List<Integer> subjectIds = dataList.stream().map(practiceGroup -> practiceGroup.getSubjectId()).distinct().collect(Collectors.toList());
+                List<Integer> organIds = dataList.stream().map(practiceGroup -> practiceGroup.getOrganId()).distinct().collect(Collectors.toList());
                 List<String> practiceGroupIds = dataList.stream().map(e -> String.valueOf(e.getId())).distinct().collect(Collectors.toList());
 
                 List<ClassGroup> classGroupsByVipGroups = classGroupDao
@@ -1382,10 +1387,11 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
                 Map<String,Long> totalClassTimeMap = MapUtil.convertIntegerMap(courseScheduleDao.countTotalCourseScheduleNum(practiceGroupIds,GroupType.PRACTICE.getCode()));
                 Map<String,Long> currentClassTimeMap = MapUtil.convertIntegerMap(courseScheduleDao.countCourseScheduleNum(practiceGroupIds,GroupType.PRACTICE.getCode()));
                 //声部名称列表
-                List<Map<Long, String>> subjectNames = subjectDao.findBySubjecIds(StringUtils.join(subjectIds, ","));
-                Map<Long, String> map = MapUtil.convertMybatisMap(subjectNames);
+                Map<Long, String> subjectNames = MapUtil.convertMybatisMap(subjectDao.findBySubjecIds(StringUtils.join(subjectIds, ",")));
+                Map<Integer, String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMap(StringUtils.join(organIds, ",")));
                 dataList.forEach(e -> {
-                    e.setSubjectName(map.get(e.getSubjectId().intValue()));
+                    e.setSubjectName(subjectNames.get(e.getSubjectId().intValue()));
+                    e.setOrganName(organNames.get(e.getOrganId()));
                     ClassGroup classGroup = vipGroupClassGroupMap.get(e.getId().toString());
                     if(Objects.nonNull(classGroup)){
                         e.setStudentNum(classGroup.getStudentNum());
@@ -1404,4 +1410,43 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         return pageInfo;
     }
 
+    @Override
+    public Object findPracticeGroupCourseSchedules(PracticeGroupQueryInfo queryInfo) {
+        PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        if (Objects.isNull(queryInfo.getPracticeId())) {
+            throw new BizException("请指定陪练课课程");
+        }
+
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        PracticeGroup practiceGroup = practiceGroupDao.get(queryInfo.getPracticeId());
+        if (Objects.isNull(practiceGroup)) {
+            throw new BizException("指定的陪练课不存在");
+        }
+
+        List<CourseSchedule> dataList = courseScheduleDao.findGroupCourseSchedules(practiceGroup.getId(),GroupType.PRACTICE.getCode());
+        int count = dataList.size();
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            List<Long> courseScheduleIds = dataList.stream()
+                    .map(courseSchedule -> courseSchedule.getId())
+                    .distinct().collect(Collectors.toList());
+            List<Map<Long, Integer>> courseSettlementMaps = courseScheduleTeacherSalaryDao.checkCoursesIsSettlement(courseScheduleIds);
+            Map<Long, Long> courseSettlementMap = MapUtil.convertIntegerMap(courseSettlementMaps);
+            dataList.forEach(courseSchedule -> {
+                Long isSettlement = courseSettlementMap.get(courseSchedule.getId().longValue());
+                if (Objects.isNull(isSettlement) || isSettlement <= 0) {
+                    courseSchedule.setIsSettlement(0);
+                } else {
+                    courseSchedule.setIsSettlement(1);
+                }
+            });
+        }
+        pageInfo.setRows(dataList);
+        Map<String, Object> result = new HashMap<>();
+        result.put("pageInfo", pageInfo);
+        return result;
+    }
+
 }

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

@@ -453,7 +453,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				.collect(Collectors.toList());
 
 		//指定VIP课原有的课程列表
-		List<CourseSchedule> vipGroupCourseSchedules = courseScheduleDao.findVipGroupCourseSchedules(vipGroupUpdateInfo.getId());
+		List<CourseSchedule> vipGroupCourseSchedules = courseScheduleDao.findGroupCourseSchedules(vipGroupUpdateInfo.getId(),GroupType.VIP.getCode());
 
 		if(!CollectionUtils.isEmpty(updateCourseSchedules)){
 			//需要删除的课程编号列表

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

@@ -942,7 +942,7 @@
         LEFT JOIN sys_user su ON sa.user_id_=su.id_
         WHERE sa.course_schedule_id_=#{courseScheduleId} AND status_ = 'NORMAL'
     </select>
-    <select id="findVipGroupCourseSchedules" resultMap="CourseSchedule">
+    <select id="findGroupCourseSchedules" resultMap="CourseSchedule">
         SELECT
             cs.id_,
             cs.group_type_,
@@ -969,7 +969,7 @@
         	course_schedule cs
         	LEFT JOIN school s ON cs.schoole_id_=s.id_
         WHERE
-          cs.music_group_id_ =#{vipGroupId} AND cs.group_type_ = 'VIP'
+          cs.music_group_id_ =#{groupId} AND cs.group_type_ = #{groupType}
         ORDER BY start_class_time_
     </select>
     <select id="findVipGroupNotStartCourseScheduleIds" resultType="long">

+ 3 - 0
mec-im/src/main/java/com/ym/dao/RoomMemberDao.java

@@ -2,11 +2,13 @@ package com.ym.dao;
 
 import com.ym.pojo.RoomMember;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Lock;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.persistence.LockModeType;
 import java.util.List;
 
 /**
@@ -16,6 +18,7 @@ import java.util.List;
 public interface RoomMemberDao extends JpaRepository<RoomMember, Long> {
     public List<RoomMember> findByRid(String rid);
 
+    @Lock(value = LockModeType.PESSIMISTIC_WRITE)
     public List<RoomMember> findByRidAndUid(String rid, String uid);
 
     public List<RoomMember> findByRidAndRole(String rid, int role);

+ 0 - 1
mec-im/src/main/java/com/ym/job/ScheduleManager.java

@@ -88,7 +88,6 @@ public class ScheduleManager implements SchedulingConfigurer {
                 ScheduledTask task = roomCacheTasks.remove(roomId);
                 task.cancel();
                 roomService.destroyRoom(roomId);
-
             }
         }, roomProperties.getRoomTtl() * 10, roomProperties.getRoomTtl(), null));
         roomCacheTasks.put(roomId, task);

+ 5 - 3
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -236,6 +236,7 @@ public class RoomServiceImpl implements RoomService {
         roomMemberDao.save(roomMember);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public Boolean leaveRoom(String roomId) throws Exception {
         SysUser user = sysUserFeignService.queryUserInfo();
@@ -254,13 +255,14 @@ public class RoomServiceImpl implements RoomService {
         List<Room> roomList = roomDao.findByRid(roomId);
         if (roomList.size() == 0) {
             log.error("room : {} not exist ", roomId);
-            throw new ApiException(ErrorEnum.ERR_ROOM_NOT_EXIST);
+            return false;
+//            throw new ApiException(ErrorEnum.ERR_ROOM_NOT_EXIST);
         }
-
         List<RoomMember> roomMemberList = roomMemberDao.findByRidAndUid(roomId, userId);
         if (roomMemberList.size() == 0) {
             log.error("{} not exist in room: {}", userId, roomId);
-            throw new ApiException(ErrorEnum.ERR_USER_NOT_EXIST_IN_ROOM);
+            return false;
+//            throw new ApiException(ErrorEnum.ERR_USER_NOT_EXIST_IN_ROOM);
         }
 
         int userRole = roomMemberList.get(0).getRole();

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

@@ -12,6 +12,7 @@ import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.TeachModeEnum;
 import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
+import com.ym.mec.biz.dal.page.PracticeGroupQueryInfo;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleComplaintsService;

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

@@ -95,9 +95,9 @@ public class ExportController extends BaseController {
             });
         }
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"陪练课编号", "课程名称", "指导老师", "班级人数", "先上课单价", "线下课单价",
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部","陪练课编号", "课程名称", "指导老师", "班级人数", "先上课单价", "线下课单价",
                     "当前课次", "总课次", "剩余课次","开课时间", "结束时间"}, new String[]{
-                    "id", "name", "teacherName", "studentNum", "onlineClassesUnitPrice",
+                    "organName","id", "name", "teacherName", "studentNum", "onlineClassesUnitPrice",
                     "offlineClassesUnitPrice", "currentClassTimes", "totalClassTimes", "subClassTimes","coursesStartDate", "coursesExpireDate"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");

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

@@ -64,4 +64,11 @@ public class PracticeGroupManageController extends BaseController {
         }
         return succeed(practiceGroupService.findPracticeGroups(queryInfo));
     }
+
+    @ApiOperation(value = "获取陪练课课程计划")
+    @GetMapping(value = "/findPracticeGroupCourseSchedules")
+    @PreAuthorize("@pcs.hasPermissions('practiceGroupManage/findPracticeGroupCourseSchedules')")
+    public Object findPracticeGroupCourseSchedules(PracticeGroupQueryInfo queryInfo){
+        return succeed(practiceGroupService.findPracticeGroupCourseSchedules(queryInfo));
+    }
 }