Quellcode durchsuchen

Merge remote-tracking branch 'origin/master'

Joburgess vor 4 Jahren
Ursprung
Commit
5dd8184e4b

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/PhoneLoginAuthenticationFilter.java

@@ -46,7 +46,7 @@ public class PhoneLoginAuthenticationFilter extends AbstractAuthenticationProces
 		// 是否是租户
 		String isLessee = obtainParameter(request, IS_LESSEE);
 		
-		boolean isRegister = StringUtils.equals("1", isLessee);
+		boolean isRegister = StringUtils.equals("1", isLessee) || StringUtils.equals("true", isLessee);
 
 		String clientId = request.getParameter(clientIdParameter).toUpperCase();
 		

+ 27 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -301,6 +301,14 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
     List<Map<Integer, String>> queryMidiByUserIdsAndCourseId(@Param("userIds") Set<String> userIds, @Param("courseScheduleId") String courseScheduleId);
 
     /**
+     * 获取用户的节拍器信息
+     * @param userIds
+     * @param courseScheduleId
+     * @return
+     */
+    List<Map<Integer, Integer>> queryExamSongByUserIdsAndCourseId(@Param("userIds") Set<String> userIds, @Param("courseScheduleId") String courseScheduleId);
+
+    /**
      * 获取单个用户的midi
      * @param courseScheduleId
      * @param userId
@@ -352,9 +360,28 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
     List<Map<Integer, Date>> findStudentLastCourseSchedule(@Param("studentIds") List<Integer> StudentIds);
 
     List<CourseScheduleStudentPayment> queryAll(Map<String, Object> params);
+
     int countAll(Map<String, Object> params);
 
     /**
+     * 修改学员曲目下载状态
+     * @author zouxuan
+     * @param roomId
+     */
+    void adjustExamSong(@Param("roomId") Long roomId, @Param("userId") Integer userId, @Param("status") Integer status);
+
+    /**
+     * 获取学员的曲目下载状态
+     * @author zouxuan
+     * @param roomId
+     * @param userId
+     * @return
+     */
+    Boolean getExamSongDownloadStatus(@Param("roomId") Long roomId,
+                                      @Param("userId") String userId);
+
+
+    /**
      * @describe 统计学员通过双十一活动排课的数量
      * @author qnc99
      * @date 2020/11/25 0025

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

@@ -6,5 +6,4 @@ import com.ym.mec.common.dal.BaseDAO;
 
 public interface SysExamSongDao extends BaseDAO<Integer, SysExamSong> {
 
-	
 }

+ 2 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -1,11 +1,8 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.entity.CourseGenerateDto;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
-import com.ym.mec.biz.dal.entity.CourseScheduleAuditDetailDto;
-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.TeachModeEnum;
@@ -609,7 +606,7 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	 * @param courseScheduleId
 	 * @return
 	 */
-	List<CourseScheduleAuditDetailDto> queryCourseAdjustDetail(Long courseScheduleId);
+	List<CourseScheduleModifyLog> queryCourseAdjustDetail(Long courseScheduleId);
 
 
 	/**

+ 40 - 39
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -5118,48 +5118,49 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	}
 
 	@Override
-	public List<CourseScheduleAuditDetailDto> queryCourseAdjustDetail(Long courseScheduleId) {
+	public List<CourseScheduleModifyLog> queryCourseAdjustDetail(Long courseScheduleId) {
+
 		//获取所有的更改记录
 		Map<String,Object> param = new HashMap(1);
 		param.put("courseScheduleId",courseScheduleId);
-		List<CourseScheduleModifyLog> scheduleModifyLogs = courseScheduleModifyLogDao.findAll(param);
-		if(scheduleModifyLogs == null || scheduleModifyLogs.size() == 0){
-			return null;
-		}
-		List<CourseScheduleAuditDetailDto> courseSchedules = new ArrayList<>();
-		for (int i = scheduleModifyLogs.size() - 1; i >= 0; i--) {
-			CourseScheduleModifyLog modifyLog = scheduleModifyLogs.get(i);
-			CourseScheduleAuditDetailDto detailDto = JSON.parseObject(modifyLog.getCurrentCourseSchedule(), CourseScheduleAuditDetailDto.class);
-			detailDto.setOperatorId(modifyLog.getOperatorId());
-			detailDto.setAuditTime(modifyLog.getCreateTime());
-			courseSchedules.add(detailDto);
-			if(i == 0){
-				//如果是第一次调整
-				CourseScheduleAuditDetailDto dto = JSON.parseObject(modifyLog.getPreviousCourseSchedule(), CourseScheduleAuditDetailDto.class);
-				dto.setOperatorId(modifyLog.getOperatorId());
-				dto.setAuditTime(modifyLog.getCreateTime());
-				courseSchedules.add(dto);
-			}
-		}
-		if(courseSchedules.size() > 0){
-			Set<Integer> actualTeacherIds = courseSchedules.stream().map(e -> e.getActualTeacherId()).collect(Collectors.toSet());
-			actualTeacherIds.addAll(courseSchedules.stream().map(e -> e.getTeacherId()).collect(Collectors.toSet()));
-			actualTeacherIds.addAll(courseSchedules.stream().map(e -> e.getOperatorId()).collect(Collectors.toSet()));
-			Set<Integer> schoolIds = courseSchedules.stream().map(e -> e.getSchoolId()).collect(Collectors.toSet());
-			Map<Integer, String> actualTeacherMap = getMap("sys_user", "id_", "real_name_", actualTeacherIds, Integer.class, String.class);
-			Map<Integer, String> schoolMap = new HashMap<>();
-			if(schoolIds != null && schoolIds.size() > 0){
-				schoolMap = getMap("school", "id_", "name_", schoolIds, Integer.class, String.class);
-			}
-			for (CourseScheduleAuditDetailDto e : courseSchedules) {
-				e.setTeacherName(actualTeacherMap.get(e.getTeacherId()));
-				e.setActualTeacherName(actualTeacherMap.get(e.getActualTeacherId()));
-				e.setSchoolName(schoolMap.get(e.getSchoolId()));
-				e.setOperatorName(actualTeacherMap.get(e.getOperatorId()));
-			}
-			return courseSchedules;
-		}
-		return null;
+		return courseScheduleModifyLogDao.findAll(param);
+//		if(scheduleModifyLogs == null || scheduleModifyLogs.size() == 0){
+//			return null;
+//		}
+//		List<CourseScheduleAuditDetailDto> courseSchedules = new ArrayList<>();
+//		for (int i = scheduleModifyLogs.size() - 1; i >= 0; i--) {
+//			CourseScheduleModifyLog modifyLog = scheduleModifyLogs.get(i);
+//			CourseScheduleAuditDetailDto detailDto = JSON.parseObject(modifyLog.getCurrentCourseSchedule(), CourseScheduleAuditDetailDto.class);
+//			detailDto.setOperatorId(modifyLog.getOperatorId());
+//			detailDto.setAuditTime(modifyLog.getCreateTime());
+//			courseSchedules.add(detailDto);
+//			if(i == 0){
+//				//如果是第一次调整
+//				CourseScheduleAuditDetailDto dto = JSON.parseObject(modifyLog.getPreviousCourseSchedule(), CourseScheduleAuditDetailDto.class);
+//				dto.setOperatorId(modifyLog.getOperatorId());
+//				dto.setAuditTime(modifyLog.getCreateTime());
+//				courseSchedules.add(dto);
+//			}
+//		}
+//		if(courseSchedules.size() > 0){
+//			Set<Integer> actualTeacherIds = courseSchedules.stream().map(e -> e.getActualTeacherId()).collect(Collectors.toSet());
+//			actualTeacherIds.addAll(courseSchedules.stream().map(e -> e.getTeacherId()).collect(Collectors.toSet()));
+//			actualTeacherIds.addAll(courseSchedules.stream().map(e -> e.getOperatorId()).collect(Collectors.toSet()));
+//			Set<Integer> schoolIds = courseSchedules.stream().map(e -> e.getSchoolId()).collect(Collectors.toSet());
+//			Map<Integer, String> actualTeacherMap = getMap("sys_user", "id_", "real_name_", actualTeacherIds, Integer.class, String.class);
+//			Map<Integer, String> schoolMap = new HashMap<>();
+//			if(schoolIds != null && schoolIds.size() > 0){
+//				schoolMap = getMap("school", "id_", "name_", schoolIds, Integer.class, String.class);
+//			}
+//			for (CourseScheduleAuditDetailDto e : courseSchedules) {
+//				e.setTeacherName(actualTeacherMap.get(e.getTeacherId()));
+//				e.setActualTeacherName(actualTeacherMap.get(e.getActualTeacherId()));
+//				e.setSchoolName(schoolMap.get(e.getSchoolId()));
+//				e.setOperatorName(actualTeacherMap.get(e.getOperatorId()));
+//			}
+//			return courseSchedules;
+//		}
+//		return null;
 	}
 
 	@Override

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

@@ -27,79 +27,12 @@ import com.alibaba.fastjson.JSONObject;
 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.biz.dal.dao.GoodsDao;
-import com.ym.mec.biz.dal.dao.MusicGroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderCourseSettingsDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentStudentCourseDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
-import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
-import com.ym.mec.biz.dal.dao.StudentDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
-import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
-import com.ym.mec.biz.dal.dao.SubjectChangeDao;
-import com.ym.mec.biz.dal.dao.SubjectDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
-import com.ym.mec.biz.dal.dto.CourseFormDto;
-import com.ym.mec.biz.dal.dto.StudentAddDto;
-import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
-import com.ym.mec.biz.dal.dto.StudentFeeDetailDto;
-import com.ym.mec.biz.dal.dto.StudentInfo;
-import com.ym.mec.biz.dal.dto.StudentMusicDetailDto;
-import com.ym.mec.biz.dal.entity.ClassGroup;
-import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
-import com.ym.mec.biz.dal.entity.CooperationOrgan;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
-import com.ym.mec.biz.dal.entity.Goods;
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail;
-import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
-import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
-import com.ym.mec.biz.dal.entity.Student;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
-import com.ym.mec.biz.dal.entity.Subject;
-import com.ym.mec.biz.dal.entity.SubjectChange;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
-import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
-import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.GoodsType;
-import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
-import com.ym.mec.biz.dal.enums.MessageTypeEnum;
-import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.OrderTypeEnum;
-import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
-import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
+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.StudentRegistrationQueryInfo;
-import com.ym.mec.biz.service.ClassGroupService;
-import com.ym.mec.biz.service.ClassGroupStudentMapperService;
-import com.ym.mec.biz.service.ContractService;
-import com.ym.mec.biz.service.CourseScheduleService;
-import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
-import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
-import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
-import com.ym.mec.biz.service.SellOrderService;
-import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
-import com.ym.mec.biz.service.StudentPaymentOrderService;
-import com.ym.mec.biz.service.StudentRegistrationService;
-import com.ym.mec.biz.service.SubjectService;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.SysMessageService;
-import com.ym.mec.biz.service.SysUserCashAccountDetailService;
-import com.ym.mec.biz.service.SysUserCashAccountService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupMember;
 import com.ym.mec.common.entity.ImGroupModel;
@@ -114,6 +47,7 @@ import com.ym.mec.thirdparty.eseal.ESealPlugin;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.http.HttpUtil;
+import org.springframework.transaction.annotation.Isolation;
 
 @Service
 public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, StudentRegistration> implements StudentRegistrationService {
@@ -169,12 +103,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Autowired
     private SysUserFeignService sysUserFeignService;
     @Autowired
-    private RedisCache<String, Object> redisCache;
-    @Autowired
     private SellOrderService sellOrderService;
     @Autowired
-    private ESealPlugin eSealPlugin;
-    @Autowired
     private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
     @Autowired
     private SubjectChangeDao subjectChangeDao;
@@ -300,7 +230,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Transactional(rollbackFor = Exception.class)
     public StudentRegistration addStudent(StudentRegistration studentRegistration) throws Exception {
     	Integer userId = studentRegistration.getUserId();
-    	
+
     	Student student = studentDao.getLocked(userId);
     	if (student == null) {
         	throw new BizException("查询学生信息失败");
@@ -310,13 +240,13 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         if (hasReg != null) {
         	throw new BizException("该乐团您已报名");
         }
-        
+
         Date date = new Date();
         SysUser sysUser = sysUserFeignService.queryUserByMobile(studentRegistration.getParentsPhone());
         if (sysUser == null) {
             throw new BizException("用户信息查询失败");
         }
-        
+
         if (!sysUser.getUserType().contains("STUDENT")) {
             sysUser.setUserType(sysUser.getUserType() + ",STUDENT");
         }
@@ -330,7 +260,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         sysUser.setCreateTime(date);
         sysUser.setUpdateTime(date);
         teacherDao.updateUser(sysUser);
-        
+
         studentRegistration.setActualSubjectId(studentRegistration.getSubjectId());
         studentRegistration.setCreateTime(date);
         studentRegistration.setUpdateTime(date);
@@ -350,7 +280,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         map.put(studentRegistration.getUserId(), studentRegistration.getParentsPhone());
         sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_APPLY_MESSAGE, map, null, 0, "", "",
                 studentRegistration.getParentsName(), subject.getName(), serverPhone);
-        
+
         return studentRegistration;
     }
 

+ 29 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -161,8 +161,28 @@
 			</if>
 		</where>
 	</update>
+	<update id="adjustExamSong">
+		UPDATE course_schedule_student_payment
+		<set>
+			<if test="status != null">
+				exam_song_download_status_ = #{status}
+			</if>
+		</set>
+		WHERE course_schedule_id_ = #{roomId}
+		<if test="userId != null">
+			AND user_id_ = #{userId}
+		</if>
+	</update>
+	<select id="getExamSongDownloadStatus" resultType="boolean">
+		SELECT CASE WHEN exam_song_download_status_ IS NULL THEN 0 ELSE exam_song_download_status_ END
+		FROM course_schedule_student_payment
+		WHERE course_schedule_id_ = #{roomId}
+		<if test="userId != null">
+			AND user_id_ = #{userId}
+		</if>
+	</select>
 
-    <!-- 根据主键删除一条记录 -->
+	<!-- 根据主键删除一条记录 -->
 	<delete id="delete" >
 		DELETE FROM course_schedule_student_payment WHERE id_ = #{id}
 	</delete>
@@ -476,6 +496,14 @@
 		</foreach>
 		AND cssp.course_schedule_id_ = #{courseScheduleId}
 	</select>
+	<select id="queryExamSongByUserIdsAndCourseId" resultType="java.util.Map">
+		SELECT user_id_ 'key',CASE WHEN exam_song_download_status_ IS NULL THEN 0 ELSE exam_song_download_status_ END 'value' FROM course_schedule_student_payment
+		WHERE user_id_ IN
+		<foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+			#{userId}
+		</foreach>
+		AND course_schedule_id_ = #{courseScheduleId}
+	</select>
 	<select id="getMidiByCourseIdAndUserId" resultType="java.lang.String">
 		SELECT cssp.open_play_midi_ FROM course_schedule_student_payment cssp
 		WHERE cssp.user_id_ = #{userId} AND cssp.course_schedule_id_ = #{courseScheduleId}

+ 12 - 9
mec-im/src/main/java/com/ym/controller/RoomController.java

@@ -13,9 +13,6 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-/**
- * Created by weiqinxiao on 2019/2/25.
- */
 @RestController
 @RequestMapping("/room")
 @Slf4j
@@ -51,11 +48,6 @@ public class RoomController{
         return new BaseResponse<>();
     }
 
-    @RequestMapping(value = "/leaveRoomSuccess")
-    public void leaveRoomSuccess() throws Exception {
-        roomService.leaveRoomSuccess("S1560287", "100136");
-    }
-
     @RequestMapping(value = "/statusSync")
     public void statusSync(@RequestBody String body) throws Exception {
         ChannelStateNotify notify = JSONObject.parseObject(body, ChannelStateNotify.class);
@@ -72,7 +64,6 @@ public class RoomController{
                 roomService.leaveRoomSuccess(roomId, userId);
                 break;
         }
-//        roomService.statusSync(notify);
     }
 
     @RequestMapping(value = "/downgrade", method = RequestMethod.POST)
@@ -153,6 +144,18 @@ public class RoomController{
         return new BaseResponse<>(result);
     }
 
+    @RequestMapping(value = "pushDownloadExamSongMsg", method = RequestMethod.POST)
+    public Object pushDownloadExamSongMsg(Long roomId,Integer examSongId) throws Exception {
+        roomService.pushDownloadExamSongMsg(roomId,examSongId);
+        return new BaseResponse<>();
+    }
+
+    @RequestMapping(value = "adjustExamSong", method = RequestMethod.POST)
+    public Object adjustExamSong(Long roomId,Integer status) throws Exception {
+        roomService.adjustExamSong(roomId,status);
+        return new BaseResponse<>();
+    }
+
     @RequestMapping(value = "/device/batchControl", method = RequestMethod.POST)
     public Object batchControlDevice(@RequestBody ReqDeviceControlData data)throws Exception {
         log.info("batchControl: {}",JSONObject.toJSON(data));

+ 42 - 0
mec-im/src/main/java/com/ym/mec/im/message/ExamSongDownloadMessageMessage.java

@@ -0,0 +1,42 @@
+package com.ym.mec.im.message;
+
+import com.ym.mec.im.BaseMessage;
+
+public class ExamSongDownloadMessageMessage extends BaseMessage {
+    private String url;
+    private String songName;
+    private static final transient String TYPE = "DY:examSongDownloadMessage";
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getSongName() {
+        return songName;
+    }
+
+    public void setSongName(String songName) {
+        this.songName = songName;
+    }
+
+    public static String getTYPE() {
+        return TYPE;
+    }
+
+    @Override
+    public String toString() {
+        return "{" +
+                "url='" + url + '\'' +
+                ", songName='" + songName + '\'' +
+                '}';
+    }
+
+    @Override
+    public String getObjectName() {
+        return TYPE;
+    }
+}

+ 0 - 3
mec-im/src/main/java/com/ym/mec/im/message/MetronomeMessageMessage.java

@@ -4,9 +4,6 @@ import com.ym.mec.im.BaseMessage;
 import com.ym.pojo.CustomMessage;
 import org.apache.commons.lang3.StringUtils;
 
-/**
- * Created by weiqinxiao on 2019/3/6.
- */
 public class MetronomeMessageMessage extends BaseMessage {
     private CustomMessage content;
     private static final transient String TYPE = "DY:PlayMidiMessage";

+ 1 - 0
mec-im/src/main/java/com/ym/pojo/DeviceTypeEnum.java

@@ -8,5 +8,6 @@ public enum DeviceTypeEnum {
     Camera,
     MusicMode,
     HandUp,
+    ExamSong,
     PlayMidi,
 }

+ 41 - 0
mec-im/src/main/java/com/ym/pojo/ExamSongDownloadData.java

@@ -0,0 +1,41 @@
+package com.ym.pojo;
+
+import lombok.Data;
+
+@Data
+public class ExamSongDownloadData {
+	private Boolean examSongDownloadOn;
+	private String roomId;
+	private String userId;
+	private String ticket;
+
+	public Boolean getExamSongDownloadOn() {
+		return examSongDownloadOn;
+	}
+
+	public void setExamSongDownloadOn(Boolean examSongDownloadOn) {
+		this.examSongDownloadOn = examSongDownloadOn;
+	}
+
+	public String getRoomId() {
+		return roomId;
+	}
+	public void setRoomId(String roomId) {
+		this.roomId = roomId;
+	}
+	public String getUserId() {
+		return userId;
+	}
+	public void setUserId(String userId) {
+		this.userId = userId;
+	}
+	public String getTicket() {
+		return ticket;
+	}
+	public void setTicket(String ticket) {
+		this.ticket = ticket;
+	}
+
+
+
+}

+ 0 - 3
mec-im/src/main/java/com/ym/pojo/PlayMidiMessageData.java

@@ -2,9 +2,6 @@ package com.ym.pojo;
 
 import lombok.Data;
 
-/**
- * Created by weiqinxiao on 2019/3/1.
- */
 @Data
 public class PlayMidiMessageData {
 	private String content;

+ 3 - 1
mec-im/src/main/java/com/ym/pojo/RoomResult.java

@@ -34,6 +34,7 @@ public class RoomResult {
         boolean camera;
         boolean microphone;
         boolean handUpOn;
+        boolean examSongDownloadOn;
         CustomMessage playMidiJson;
     }
 
@@ -44,7 +45,7 @@ public class RoomResult {
         int curPg;
     }
 
-    public void setMembers(List<RoomMember> roomMemberList, Map<Integer,String> midiMap) {
+    public void setMembers(List<RoomMember> roomMemberList, Map<Integer,String> midiMap,Map<Integer,String> examSongMap) {
         for (RoomMember member : roomMemberList) {
             MemberResult result = new MemberResult();
             result.setUserId(member.getUid());
@@ -56,6 +57,7 @@ public class RoomResult {
             result.setHandUpOn(member.isHand());
             result.setHeadUrl(member.getHeadUrl());
             result.setPlayMidiJson(JSONObject.parseObject(midiMap.get(Integer.parseInt(member.getUid())),CustomMessage.class));
+            result.setExamSongDownloadOn(examSongMap.get(member.getRid())=="0"?false:true);
             members.add(result);
         }
     }

+ 41 - 6
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -13,12 +13,10 @@ import com.ym.dao.WhiteboardDao;
 import com.ym.job.ScheduleManager;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.CourseScheduleDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.RongyunBasicUserDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.SysExamSong;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.TeachModeEnum;
@@ -89,6 +87,8 @@ public class RoomServiceImpl implements RoomService {
     @Autowired
     private SysUserFeignService sysUserFeignService;
     @Autowired
+    private SysExamSongDao sysExamSongDao;
+    @Autowired
     private SysConfigDao sysConfigDao;
     @Autowired
     private RedisTemplate<String,String> redisTemplate;
@@ -200,6 +200,8 @@ public class RoomServiceImpl implements RoomService {
         } else if (roleEnum == RoleEnum.RoleAssistant && display.isEmpty()) {
             display = "display://type=0?userId=" + userId + "?uri=";
         }else {
+            //获取学员曲目下载状态
+            userResult.setExamSongDownloadOn(courseScheduleStudentPaymentDao.getExamSongDownloadStatus(courseId,userId));
             Room room = roomDao.findByRid(roomId);
             if (room != null) {
                 display = room.getDisplay();
@@ -226,7 +228,8 @@ public class RoomServiceImpl implements RoomService {
         if(roomMemberList != null && roomMemberList.size() > 0){
             Set<String> userIds = roomMemberList.stream().map(e -> e.getUid()).collect(Collectors.toSet());
             Map<Integer,String> midiMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.queryMidiByUserIdsAndCourseId(userIds,courseId.toString()));
-            roomResult.setMembers(roomMemberList,midiMap);
+            Map<Integer,String> examSongMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.queryExamSongByUserIdsAndCourseId(userIds,courseId.toString()));
+            roomResult.setMembers(roomMemberList,midiMap,examSongMap);
         }
         roomResult.setWhiteboards(whiteboardDao.findByRid(roomId));
         log.info("join room: roomId = {}, userId = {}, userName={}, role = {}", roomId, userId, userName, roleEnum);
@@ -850,7 +853,8 @@ public class RoomServiceImpl implements RoomService {
             RoomResult roomResult = new RoomResult();
             Set<String> userIds = roomMemberList.stream().map(e -> e.getUid()).collect(Collectors.toSet());
             Map<Integer,String> midiMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.queryMidiByUserIdsAndCourseId(userIds,roomId.substring(1)));
-            roomResult.setMembers(roomMemberList,midiMap);
+            Map<Integer,String> examSongMap = MapUtil.convertMybatisMap(courseScheduleStudentPaymentDao.queryExamSongByUserIdsAndCourseId(userIds,roomId.substring(1)));
+            roomResult.setMembers(roomMemberList,midiMap,examSongMap);
             return roomResult.getMembers();
         }
         return null;
@@ -1273,6 +1277,37 @@ public class RoomServiceImpl implements RoomService {
         return courseScheduleStudentPaymentDao.queryNoJoinStu(roomId,roomId.substring(1));
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void pushDownloadExamSongMsg(Long roomId, Integer examSongId) throws Exception {
+        SysUser authUser = sysUserFeignService.queryUserInfo();
+        ExamSongDownloadMessageMessage msg = new ExamSongDownloadMessageMessage();
+        SysExamSong sysExamSong = sysExamSongDao.get(examSongId);
+        if(sysExamSong == null){
+            throw new BizException("曲目信息不存在");
+        }
+        msg.setSongName(sysExamSong.getName());
+        msg.setUrl(sysExamSong.getUrl());
+        imHelper.publishMessage(authUser.getId().toString(), roomId.toString(), msg, 1);
+        //学员曲目下载状态改为未下载
+        courseScheduleStudentPaymentDao.adjustExamSong(roomId,null,0);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void adjustExamSong(Long roomId, Integer status) throws Exception {
+        if(roomId == null || status == null){
+            throw new BizException("参数校验失败");
+        }
+        SysUser authUser = sysUserFeignService.queryUserInfo();
+        CourseSchedule courseSchedule = courseScheduleDao.get(roomId);
+        courseScheduleStudentPaymentDao.adjustExamSong(roomId,authUser.getId(),status);
+        //给老师发送学员曲目下载状态
+        DeviceStateChangedMessage deviceResourceMessage = new DeviceStateChangedMessage(DeviceTypeEnum.ExamSong.ordinal(), status==0?false:true);
+        deviceResourceMessage.setUserId(courseSchedule.getActualTeacherId().toString());
+        imHelper.publishMessage(authUser.getId().toString(), roomId.toString(), deviceResourceMessage, 1);
+    }
+
     public void updateDisplay(String roomId, String senderId, String display, Integer isIncludeSender) throws Exception {
         roomDao.updateDisplayByRid(roomId, display);
         DisplayMessage displayMessage = new DisplayMessage(display);

+ 17 - 1
mec-im/src/main/java/com/ym/service/RoomService.java

@@ -2,6 +2,7 @@ package com.ym.service;
 
 import com.ym.mec.biz.dal.dto.RongyunBasicUserDto;
 import com.ym.pojo.*;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -51,7 +52,6 @@ public interface RoomService {
 
     Boolean rejectSpeech(String roomId, String requestId) throws  Exception;
 
-
     Boolean transfer(String roomId, String userId) throws Exception;
 
     Boolean inviteUpgradeRole(String roomId, String userId, int role) throws  Exception;
@@ -77,4 +77,20 @@ public interface RoomService {
      * @return
      */
     List<RongyunBasicUserDto> queryNoJoinStu(String roomId);
+
+    /**
+     * 推送学员开始下载伴奏的通知
+     * @author zouxuan
+     * @param roomId
+     * @param examSongId
+     */
+    void pushDownloadExamSongMsg(Long roomId, Integer examSongId) throws Exception;
+
+    /**
+     * 修改学员伴奏下载状态
+     * @author zouxuan
+     * @param roomId
+     * @param status
+     */
+    void adjustExamSong(Long roomId,Integer status) throws Exception;
 }