Pārlūkot izejas kodu

增加手动关系直播间功能

hgw 3 gadi atpakaļ
vecāks
revīzija
5c29ad3301

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/LiveRoomService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dao.LiveRoomDao;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.vo.RoomVo;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Map;
@@ -52,6 +53,13 @@ public interface LiveRoomService extends IService<LiveRoom> {
     void destroyExpiredLiveRoom();
 
     /**
+     * 手动关闭直播间
+     *
+     * @param roomUId 房间uid
+     */
+    void destroyLiveRoom(String roomUId);
+
+    /**
      * 定时任务-清理过期的房间-陪练课
      */
     void destroyExpiredPracticeRoom();

+ 58 - 34
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/LiveRoomServiceImpl.java

@@ -337,40 +337,64 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
             Date expiredDate = DateUtil.addMinutes(room.getLiveEndTime(), Integer.parseInt(expiredMinuteStr));
             //当前时间 大于(结束播时间 + 设置的过期分钟数)
             if (now.getTime() >= expiredDate.getTime()) {
-                //删除房间
-                destroyLiveRoom(room.getRoomUid());
-                //查询老师分润表
-                List<CourseScheduleTeacherSalary> salaryList = courseScheduleTeacherSalaryService.list(Wrappers.<CourseScheduleTeacherSalary>lambdaQuery()
-                        .eq(CourseScheduleTeacherSalary::getCourseScheduleId, room.getCourseId())
-                );
-                if (CollectionUtils.isEmpty(salaryList)) {
-                    return;
-                }
-                salaryList.forEach(salary -> {
-                    //查询该学生及课程id 对应的支付订单号
-                    CourseScheduleStudentPayment payment = courseScheduleStudentPaymentService.getOne(Wrappers.<CourseScheduleStudentPayment>lambdaQuery()
-                            .eq(CourseScheduleStudentPayment::getCourseId, room.getCourseId())
-                            .eq(CourseScheduleStudentPayment::getUserId, salary.getStudentId())
-                    );
-                    if (Objects.isNull(payment)) {
-                        return;
-                    }
-                    //获取教师课酬写入到金额变更表
-                    UserAccountRecordDto userAccountRecord = new UserAccountRecordDto();
-                    userAccountRecord.setUserId(room.getSpeakerId());
-                    userAccountRecord.setInOrOut(InOrOutEnum.IN);
-                    userAccountRecord.setBizType(AccountBizTypeEnum.LIVE);
-                    userAccountRecord.setBizId(room.getCourseId());
-                    userAccountRecord.setBizName(room.getRoomTitle());
-                    userAccountRecord.setTransAmount(salary.getActualSalary());//扣除手续费后所得金额
-                    userAccountRecord.setOrderNo(payment.getOrderNo());
-                    userAccountService.accountChange(userAccountRecord);
-                    //修改教师课酬状态-已结算
-                    salary.setStatus(TeacherSalaryEnum.COMPLETE.getCode());
-                    courseScheduleTeacherSalaryService.updateById(salary);
-                });
+                destroyLiveRoom(room);
+            }
+        });
+    }
+
+    /**
+     * 关闭直播间
+     *
+     * @param roomUId 房间uid
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void destroyLiveRoom(String roomUId) {
+        LiveRoom liveRoom = this.getOne(Wrappers.<LiveRoom>lambdaQuery().eq(LiveRoom::getRoomUid, roomUId));
+        destroyLiveRoom(liveRoom);
+    }
+
+    /**
+     * 关闭直播间
+     *
+     * @param room 房间信息
+     */
+    private void destroyLiveRoom(LiveRoom room) {
+        if (Objects.isNull(room)) {
+            return;
+        }
+        //查询老师分润表
+        List<CourseScheduleTeacherSalary> salaryList = courseScheduleTeacherSalaryService.list(Wrappers.<CourseScheduleTeacherSalary>lambdaQuery()
+                .eq(CourseScheduleTeacherSalary::getCourseScheduleId, room.getCourseId())
+        );
+        if (CollectionUtils.isEmpty(salaryList)) {
+            return;
+        }
+        salaryList.forEach(salary -> {
+            //查询该学生及课程id 对应的支付订单号
+            CourseScheduleStudentPayment payment = courseScheduleStudentPaymentService.getOne(Wrappers.<CourseScheduleStudentPayment>lambdaQuery()
+                    .eq(CourseScheduleStudentPayment::getCourseId, room.getCourseId())
+                    .eq(CourseScheduleStudentPayment::getUserId, salary.getStudentId())
+            );
+            if (Objects.isNull(payment)) {
+                return;
             }
+            //获取教师课酬写入到金额变更表
+            UserAccountRecordDto userAccountRecord = new UserAccountRecordDto();
+            userAccountRecord.setUserId(room.getSpeakerId());
+            userAccountRecord.setInOrOut(InOrOutEnum.IN);
+            userAccountRecord.setBizType(AccountBizTypeEnum.LIVE);
+            userAccountRecord.setBizId(room.getCourseId());
+            userAccountRecord.setBizName(room.getRoomTitle());
+            userAccountRecord.setTransAmount(salary.getActualSalary());//扣除手续费后所得金额
+            userAccountRecord.setOrderNo(payment.getOrderNo());
+            userAccountService.accountChange(userAccountRecord);
+            //修改教师课酬状态-已结算
+            salary.setStatus(TeacherSalaryEnum.COMPLETE.getCode());
+            courseScheduleTeacherSalaryService.updateById(salary);
         });
+        //删除房间
+        ImDestroyLiveRoom(room.getRoomUid());
     }
 
     /**
@@ -398,7 +422,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
             //当前时间 大于(结束播时间 + 设置的过期分钟数)
             if (now.getTime() >= expiredDate.getTime()) {
                 //删除房间
-                destroyLiveRoom(room.getRoomUid());
+                ImDestroyLiveRoom(room.getRoomUid());
                 //查询老师分润表
                 CourseScheduleTeacherSalary salary = courseScheduleTeacherSalaryService.getOne(Wrappers.<CourseScheduleTeacherSalary>lambdaQuery()
                         .eq(CourseScheduleTeacherSalary::getCourseScheduleId, room.getCourseId())
@@ -433,7 +457,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
      *
      * @param roomId 房间Uid
      */
-    private void destroyLiveRoom(String roomId) {
+    private void ImDestroyLiveRoom(String roomId) {
         try {
             //删除服务器房间
             List<String> deleteRoomIds = Lists.newArrayList(roomId);