Bläddra i källkod

Merge remote-tracking branch 'origin/master'

liweifan 3 år sedan
förälder
incheckning
a7ff156511

+ 2 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsCartItemServiceImpl.java

@@ -56,6 +56,7 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
             if (pmsProduct == null) {
                 throw new BizException("商品不存在");
             }
+            cartItem.setPrice(pmsProduct.getPrice());
             cartItem.setProductPic(pmsProduct.getPic());
             cartItem.setProductName(pmsProduct.getName());
             cartItem.setProductSubTitle(pmsProduct.getSubTitle());
@@ -70,6 +71,7 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
                 }
                 cartItem.setProductSkuCode(pmsSkuStock.getSkuCode());
                 cartItem.setProductAttr(pmsSkuStock.getSpData());
+                cartItem.setPrice(pmsSkuStock.getPrice());
             }
 
             cartItem.setCreateDate(new Date());

+ 2 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImNetworkRoomService.java

@@ -18,7 +18,7 @@ public interface ImNetworkRoomService extends IService<ImNetworkRoom> {
     ImNetworkRoomDao getDao();
 
     //加入网络教室
-    HttpResponseResult<ImNetworkRoomResult> joinRoom(Long courseScheduleId, UserRoleEnum userRole) throws Exception;
+    HttpResponseResult<ImNetworkRoomResult> joinRoom(Long courseScheduleId) throws Exception;
 
     //加入网络教室成功
     void joinRoomSuccess(String roomId,Long userId) throws Exception;
@@ -27,7 +27,7 @@ public interface ImNetworkRoomService extends IService<ImNetworkRoom> {
     void joinRoomFailure(String roomId);
 
     //退出房间
-    void leaveRoom(String roomId,UserRoleEnum userRole) throws Exception;
+    void leaveRoom(String roomId) throws Exception;
 
     //退出房间成功
     void leaveRoomSuccess(String roomId, Long userId) throws Exception;

+ 8 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java

@@ -540,8 +540,14 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
 
         // 获取课程组声部
         List<LiveCourseGroupVo> subjectList = baseMapper.selectCourseGroupSubject(courseGroupIdList);
-        for (int i = 0; i < records.size(); i++) {
-            records.get(i).setSubjectName(subjectList.get(i).getSubjectName());
+        Map<Long, List<LiveCourseGroupVo>> collect = subjectList.stream()
+                                .collect(Collectors.groupingBy( LiveCourseGroupVo::getCourseGroupId));
+        for (LiveCourseGroupVo record : records) {
+            List<LiveCourseGroupVo> liveCourseGroupVos = collect.get(record.getCourseGroupId());
+            if (CollectionUtils.isEmpty(liveCourseGroupVos)) {
+                continue;
+            }
+            record.setSubjectName(liveCourseGroupVos.get(0).getSubjectName());
         }
 
         return liveCourseGroupVoIPage;

+ 38 - 15
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImNetworkRoomServiceImpl.java

@@ -57,8 +57,6 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
     private IMHelper imHelper;
     @Resource
     private MusicSheetAccompanimentService musicSheetAccompanimentService;
-    @Resource
-    private MusicSheetService musicSheetService;
 
     @Override
     public ImNetworkRoomDao getDao() {
@@ -67,13 +65,17 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public HttpResponseResult<ImNetworkRoomResult> joinRoom(Long courseScheduleId, UserRoleEnum userRole) throws Exception {
-        log.info("joinRoom params:courseScheduleId:{},userRole:{}",courseScheduleId,userRole);
+    public HttpResponseResult<ImNetworkRoomResult> joinRoom(Long courseScheduleId) throws Exception {
         Long userId = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
                 map(SysUser::getId).
                 orElseThrow(()-> new BizException("请登录"));
         CourseSchedule courseSchedule = Optional.ofNullable(courseScheduleService.getById(courseScheduleId)).
                 orElseThrow(()->new BizException("房间信息不存在"));
+        UserRoleEnum userRole = UserRoleEnum.STUDENT;
+        if(courseSchedule.getTeacherId().equals(userId)){
+            userRole = UserRoleEnum.TEACHER;
+        }
+        log.info("joinRoom params:courseScheduleId:{},userRole:{},userId:{}",courseScheduleId,userRole,userId);
         BasicUserInfo sysUser = Optional.ofNullable(teacherDao.getBasicUserInfo(userId)).
                 orElseThrow(()-> new BizException("用户信息不存在"));
         Date now = new Date();
@@ -137,16 +139,21 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         this.initRoom(roomId, Long.parseLong(roomId), userRole, userId, now);
         //获取房间用户信息
         ImNetworkRoomMember roomMember = imNetworkRoomMemberService.initRoomMember(roomId,sysUser,userRole);
-        //发送加入房间的消息
+        //发送人员变动消息
+        publishMemberChangedMessage(roomMember);
+        //记录考勤
+    }
+
+    //发送人员变动消息
+    private void publishMemberChangedMessage(ImNetworkRoomMember roomMember) throws Exception {
         ImNetworkRoomMemberChangedMessage msg = new ImNetworkRoomMemberChangedMessage(roomMember,ImNetworkRoomMemberChangedEnum.JOIN);
         //获取节拍器信息
-        ImNetworkCustomMessage imNetworkCustomMessage = courseScheduleStudentPaymentService.getMemberMidi(Long.parseLong(roomId), userId);
+        ImNetworkCustomMessage imNetworkCustomMessage = courseScheduleStudentPaymentService.getMemberMidi(Long.parseLong(roomMember.getRoomId()), roomMember.getUserId());
         msg.setMetronomeSwitch(imNetworkCustomMessage.getEnable());
         //获取伴奏信息
-        ImNetworkRoomMusicSheetDownloadData musicSheetDownloadData = courseScheduleStudentPaymentService.getMemberExamSong(Long.parseLong(roomId), userId);
+        ImNetworkRoomMusicSheetDownloadData musicSheetDownloadData = courseScheduleStudentPaymentService.getMemberExamSong(Long.parseLong(roomMember.getRoomId()), roomMember.getUserId());
         msg.setExamSongSwitch(musicSheetDownloadData.getEnable());
-        imHelper.publishMessage(userId.toString(), roomId, msg);
-        //记录考勤
+        imHelper.publishMessage(roomMember.getUserId().toString(), roomMember.getRoomId(), msg);
     }
 
     @Override
@@ -161,12 +168,19 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void leaveRoom(String roomId,UserRoleEnum userRole) throws Exception {
+    public void leaveRoom(String roomId) throws Exception {
         Long userId = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
                 map(SysUser::getId).
                 orElseThrow(()-> new BizException("请登录"));
         log.info("leaveRoom: roomId={}, userId={}", roomId, userId);
         long courseScheduleId = Long.parseLong(roomId);
+        Long teacherId = Optional.ofNullable(courseScheduleService.getById(courseScheduleId)).
+                map(CourseSchedule::getTeacherId).
+                orElseThrow(()->new BizException("房间信息不存在"));
+        UserRoleEnum userRole = UserRoleEnum.STUDENT;
+        if(teacherId.equals(userId)){
+            userRole = UserRoleEnum.TEACHER;
+        }
         if (userRole == UserRoleEnum.TEACHER){
             //如果老师退出房间,关闭伴奏
             courseScheduleStudentMusicSheetService.getDao().closePlayStatus(courseScheduleId,null);
@@ -462,7 +476,11 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         msg.setType(deviceControl.getDeviceType().ordinal());
         msg.setOpUserId(sysUser.getId().toString());
         msg.setOpUserName(sysUser.getUsername());
-        imHelper.publishMessage(sysUser.getId().toString(),deviceControl.getUserId().toString(), deviceControl.getRoomId(), msg);
+        //获取老师编号
+        Long teacherId = Optional.ofNullable(courseScheduleService.getById(deviceControl.getRoomId())).
+                map(CourseSchedule::getTeacherId).
+                orElseThrow(()->new BizException("房间信息不存在"));
+        imHelper.publishMessage(sysUser.getId().toString(),teacherId.toString(), deviceControl.getRoomId(), msg);
 
         ImNetworkDeviceStateChangedMessage deviceResourceMessage = new ImNetworkDeviceStateChangedMessage(deviceControl.getDeviceType().ordinal(),deviceControl.getEnable());
         deviceResourceMessage.setUserId(sysUser.getId().toString());
@@ -523,17 +541,22 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         msg.setType(deviceControl.getDeviceType().ordinal());
         msg.setOpUserId(sysUser.getId().toString());
         msg.setOpUserName(sysUser.getUsername());
-        imHelper.publishMessage(sysUser.getId().toString(),deviceControl.getUserId().toString(), deviceControl.getRoomId(), msg);
+        //获取老师编号
+        Long teacherId = Optional.ofNullable(courseScheduleService.getById(deviceControl.getRoomId())).
+                map(CourseSchedule::getTeacherId).
+                orElseThrow(()->new BizException("房间信息不存在"));
+        imHelper.publishMessage(sysUser.getId().toString(),teacherId.toString(), deviceControl.getRoomId(), msg);
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void musicSheetDownNotify(String roomId, Long accompanimentId, Integer status) throws Exception {
         log.info("musicSheetDownNotify: roomId={},accompanimentId={},status={}", roomId,accompanimentId,status);
-        SysUser sysUser = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
+        Long userId = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
+                map(SysUser::getId).
                 orElseThrow(()-> new BizException("请登录"));
         Long scheduleId = Long.parseLong(roomId);
-        List<CourseScheduleStudentMusicSheetResult> studentMusicSheetResults = courseScheduleStudentMusicSheetService.getDao().queryBySheetIdAndCourseId(accompanimentId, scheduleId, sysUser.getId(), null, null);
+        List<CourseScheduleStudentMusicSheetResult> studentMusicSheetResults = courseScheduleStudentMusicSheetService.getDao().queryBySheetIdAndCourseId(accompanimentId, scheduleId,userId, null, null);
         if(CollectionUtils.isEmpty(studentMusicSheetResults)){
             return;
         }
@@ -548,7 +571,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         //给老师发送学员曲目下载状态
         CourseSchedule courseSchedule = courseScheduleService.getById(scheduleId);
         ImNetworkMusicSheetDownloadStatusMessage statusMessage = new ImNetworkMusicSheetDownloadStatusMessage(status,studentMusicSheetResults);
-        imHelper.publishMessage(sysUser.getId().toString(), courseSchedule.getTeacherId().toString(), roomId, statusMessage);
+        imHelper.publishMessage(userId.toString(), courseSchedule.getTeacherId().toString(), roomId, statusMessage);
     }
 
     //校验用户是否提前进入教室

+ 22 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/LiveCourseGroupStudentVo.java

@@ -16,6 +16,9 @@ import java.util.Date;
 @ApiModel("直播课签署学生信息")
 public class LiveCourseGroupStudentVo {
 
+    @ApiModelProperty("支付记录id")
+    private Long paymentId;
+
     @ApiModelProperty("学生id")
     private Long studentId;
 
@@ -32,6 +35,9 @@ public class LiveCourseGroupStudentVo {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date payTime;
 
+    @ApiModelProperty("学生手机号")
+    private String phone;
+
 
     public Long getStudentId() {
         return studentId;
@@ -72,4 +78,20 @@ public class LiveCourseGroupStudentVo {
     public void setPayTime(Date payTime) {
         this.payTime = payTime;
     }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public Long getPaymentId() {
+        return paymentId;
+    }
+
+    public void setPaymentId(Long paymentId) {
+        this.paymentId = paymentId;
+    }
 }

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/LiveCourseGroupVo.java

@@ -57,6 +57,9 @@ public class LiveCourseGroupVo {
     @ApiModelProperty(value = "手机号")
     private String phone;
 
+    @ApiModelProperty("订单号")
+    private String orderNo;
+
     public Long getCourseNum() {
         return courseNum;
     }
@@ -160,4 +163,12 @@ public class LiveCourseGroupVo {
     public void setPhone(String phone) {
         this.phone = phone;
     }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
 }

+ 6 - 8
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml

@@ -156,8 +156,10 @@
         cg.course_num_ as courseNum,
         cg.created_time_ as createTime,
         cg.course_introduce_ as courseIntroduce,
-        cg.im_group_id_  as imGroupId,
-        su.phone_ as phone
+        <if test="param.studentId != null">
+            cssp.order_no_ as orderNo,
+        </if>
+        cg.im_group_id_  as imGroupId
         from course_group cg
         left join course_schedule_student_payment cssp on cg.id_ = cssp.course_group_id_
         left join sys_user su on su.id_ = cssp.user_id_
@@ -212,20 +214,16 @@
                 </foreach>
             </if>
         </where>
-        <if test="courseGroupIdList != null and courseGroupIdList.size() != 0">
-            order by  field(cg.id_,
-            <foreach collection="courseGroupIdList" item="item" open="" close=")" separator=",">
-                #{item}
-            </foreach>
-        </if>
     </select>
 
     <select id="selectAdminLiveStudentPage" resultType="com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupStudentVo">
         select
+        cssp.id_ as paymentId,
         su.id_ as studentId,
         su.username_ as studentName,
         cssp.actual_price_ as price,
         cssp.order_no_ as orderNo,
+        su.phone_ as phone,
         cssp.created_time_ as payTime
         from course_schedule_student_payment cssp
         left join sys_user su on cssp.user_id_ = su.id_

+ 6 - 3
cooleshow-user/user-classroom/src/main/java/com/yonge/cooleshow/classroom/controller/ImNetworkRoomController.java

@@ -47,7 +47,7 @@ public class ImNetworkRoomController extends BaseController {
     public HttpResponseResult<ImNetworkRoomResult> joinRoom(Long roomId) throws Exception {
         roomId = Optional.ofNullable(roomId)
                 .orElseThrow(()->new BizException("房间号不可为空"));
-        return imNetworkRoomService.joinRoom(roomId, UserRoleEnum.TEACHER);
+        return imNetworkRoomService.joinRoom(roomId);
     }
 
 //    @ApiOperation("加入网络教室状态回调")
@@ -60,11 +60,13 @@ public class ImNetworkRoomController extends BaseController {
     @ApiOperation("加入网络教室状态回调")
     @PostMapping(value = "joinRoomFailure", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     public HttpResponseResult joinRoomFailure(Long roomId){
+        roomId = Optional.ofNullable(roomId).orElseThrow(()->new BizException("房间号不可为空"));
         imNetworkRoomService.joinRoomFailure(roomId.toString());
         return succeed();
     }
 
-    @RequestMapping(value = "/statusSync")
+    @PostMapping(value = "/statusSync")
+    @ApiOperation("加入网络教室状态回调")
     public void statusSync(@RequestBody String body) throws Exception {
         ImChannelStateNotify notify = JSONObject.parseObject(body, ImChannelStateNotify.class);
         log.info("statusSyncParam: {}",JSONObject.toJSON(notify));
@@ -84,7 +86,8 @@ public class ImNetworkRoomController extends BaseController {
     @ApiImplicitParam(name = "roomId", dataType = "Long", value = "课程编号")
     @PostMapping(value = "/leave", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     public HttpResponseResult leaveRoom(Long roomId) throws Exception {
-        imNetworkRoomService.leaveRoom(roomId.toString(),UserRoleEnum.TEACHER);
+        roomId = Optional.ofNullable(roomId).orElseThrow(()->new BizException("房间号不可为空"));
+        imNetworkRoomService.leaveRoom(roomId.toString());
         return succeed();
     }