Selaa lähdekoodia

Merge remote-tracking branch 'origin/feature/0529-live' into feature/0529-live

shangke 2 vuotta sitten
vanhempi
commit
a6b2d4233b

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/BasicUserDto.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dto;
 
+import com.ym.mec.biz.dal.enums.JoinCourseType;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Objects;
@@ -46,6 +47,18 @@ public class BasicUserDto {
     @ApiModelProperty(value = "是否需要乐器维修")
     private Boolean repairFlag = false;
 
+
+    @ApiModelProperty(value = "加入课程类型 PURCHASE:购买 SHARE:分享")
+    private String joinCourseType;
+
+    public String getJoinCourseType() {
+        return joinCourseType;
+    }
+
+    public void setJoinCourseType(String joinCourseType) {
+        this.joinCourseType = joinCourseType;
+    }
+
     public String getTeacherType() {
         return teacherType;
     }

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

@@ -69,7 +69,7 @@ public class CourseScheduleStudentPayment extends BaseEntity implements Comparab
 	@ApiModelProperty(value = "关联的云教练缴费项目编号",required = false)
 	private Long calenderId;
 
-	@ApiModelProperty(value = "加入课程类型")
+	@ApiModelProperty(value = "加入课程类型 PURCHASE:购买 SHARE:分享")
 	private JoinCourseType joinCourseType;
 
 	public BigDecimal getExpectPriceBak() {

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

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.entity;
 
 import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.JoinCourseType;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.common.entity.BaseEntity;
@@ -107,7 +108,18 @@ public class StudentAttendance extends BaseEntity {
 	@ApiModelProperty(value = "是否达标1是0否")
 	private Integer qualifiedFlag;
 
-	public String getClassTimeStr() {
+    @ApiModelProperty(value = "加入课程类型 PURCHASE:购买 SHARE:分享")
+    private JoinCourseType joinCourseType;
+
+    public JoinCourseType getJoinCourseType() {
+        return joinCourseType;
+    }
+
+    public void setJoinCourseType(JoinCourseType joinCourseType) {
+        this.joinCourseType = joinCourseType;
+    }
+
+    public String getClassTimeStr() {
 		return classTimeStr;
 	}
 

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1423,6 +1423,20 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         // roomId
         List<String> roomIdList = teacherCourseSchedulesWithDate.stream().map(CourseScheduleDto::getLiveRoomId).collect(Collectors.toList());
 
+
+        Map<String, List<ImLiveRoomVideoVo>> imLiveRoomVideoVoMap = getLiveRecord(roomIdList);
+
+        for (CourseScheduleDto courseScheduleDto : teacherCourseSchedulesWithDate) {
+            if (StringUtils.isNotEmpty(courseScheduleDto.getLiveRoomId())) {
+                List<ImLiveRoomVideoVo> imLiveRoomVideoVoList = imLiveRoomVideoVoMap.get(courseScheduleDto.getLiveRoomId());
+                if (CollectionUtils.isNotEmpty(imLiveRoomVideoVoList)) {
+                    courseScheduleDto.setHasVideoRecord(true);
+                    continue;
+                }
+                courseScheduleDto.setHasVideoRecord(false);
+            }
+        }
+
         // 查询直播间视频数
         Map<String, Integer> uidCountMap = imLiveRoomVideoService.queryRoomUidCountMap(roomIdList);
         for (CourseScheduleDto record : teacherCourseSchedulesWithDate) {

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

@@ -16,6 +16,7 @@ import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.mapper.LiveGroupPlusMapper;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
+import com.ym.mec.biz.dal.vo.ImLiveRoomVideoVo;
 import com.ym.mec.biz.dal.wrapper.LiveGroupWrapper;
 import com.ym.mec.biz.event.source.SendSeoMessageSource;
 import com.ym.mec.biz.service.*;
@@ -211,6 +212,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     @Autowired
     private VipGroupService vipGroupService;
 
+    @Autowired
+    private ImLiveRoomVideoService imLiveRoomVideoService;
+
     private static final Logger LOGGER = LoggerFactory.getLogger(VipGroup.class);
 
     @Override
@@ -4922,12 +4926,17 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         }
         // 报名中的课程直接返回json数据
         List<CourseSchedule> courseSchedules;
-        if (vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING)) {
+        if (VipGroupStatusEnum.APPLYING.equals(vipGroup.getStatus()) ||VipGroupStatusEnum.NOT_START.equals(vipGroup.getStatus())) {
             courseSchedules =  JSON.parseArray(vipGroup.getCourseSchedulesJson(), CourseSchedule.class);
             // 报名中的课程默认未分享,不能修改
             courseSchedules.forEach(next->next.setShareMode(ShareModeEnum.NO_SHARE));
         } else {
             courseSchedules =  courseScheduleDao.findGroupCourseSchedules(vipGroup.getId().toString(), GroupType.LIVE.getCode());
+            if (CollectionUtils.isEmpty(courseSchedules)) {
+                courseSchedules =  JSON.parseArray(vipGroup.getCourseSchedulesJson(), CourseSchedule.class);
+                // 报名中的课程默认未分享,不能修改
+                courseSchedules.forEach(next->next.setShareMode(ShareModeEnum.NO_SHARE));
+            }
         }
         // 添加共享方式过滤
         ShareModeEnum shareMode = query.getShareMode();
@@ -4935,9 +4944,28 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
             courseSchedules.removeIf(next -> !shareMode.equals(next.getShareMode()));
         }
 
+        List<CourseScheduleDto> courseScheduleDtos = JSON.parseArray(JSON.toJSONString(courseSchedules), CourseScheduleDto.class);
+
+        // roomId
+        List<String> roomIdList = courseScheduleDtos.stream().map(CourseScheduleDto::getLiveRoomId).collect(Collectors.toList());
+
+        // 查询直播间视频数
+        Map<String, Integer> uidCountMap = imLiveRoomVideoService.queryRoomUidCountMap(roomIdList);
+        for (CourseScheduleDto record : courseScheduleDtos) {
+            if (Objects.isNull(record.getLiveRoomId())) {
+                continue;
+            }
+            Integer count = uidCountMap.get(record.getLiveRoomId());
+            if (count == null) {
+                record.setVideoNum(0);
+            }
+            record.setVideoNum(count);
+        }
+
+
 
         Map<String, Object> result = new HashMap<>();
-        result.put("list", courseSchedules);
+        result.put("list", courseScheduleDtos);
         result.put("singleClassMinutes", vipGroup.getSingleClassMinutes());
         return result;
     }

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

@@ -1290,6 +1290,7 @@
                cs.student_num_,
                cs.leave_student_num_,
                cs.schoole_id_,
+        cs.live_room_id_,
                cs.share_mode_,
                s.name_                                           schoole_name_
         FROM course_schedule cs

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

@@ -835,7 +835,7 @@
     <select id="getCourseStudents" resultType="com.ym.mec.biz.dal.dto.BasicUserDto">
 		SELECT cssp.user_id_ userId,st.member_rank_setting_id_ memberRankSettingId,
 		       s.name_ subjectName,su.avatar_ headUrl,su.username_ name,
-                s.id_ subjectIdList,st.repair_flag_ repairFlag
+                s.id_ subjectIdList,st.repair_flag_ repairFlag,cssp.join_course_type_ as joinCourseType
 		FROM course_schedule_student_payment cssp
 		LEFT JOIN sys_user su ON su.id_ = cssp.user_id_
 		LEFT JOIN student st ON st.user_id_ = cssp.user_id_

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

@@ -44,6 +44,7 @@
         <result column="new_course_id_" property="courseSchedule.newCourseId"/>
         <result column="tenant_id_" property="tenantId"/>
         <result column="qualified_flag_" property="qualifiedFlag"/>
+        <result column="join_course_type_" property="joinCourseType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -475,7 +476,7 @@
                CASE WHEN sa.status_ IS NULL and cs.status_ = 'OVER' THEN 'TRUANT' ELSE sa.status_ END status_,
         su.username_,su.phone_,su.avatar_,cs.teach_mode_,cs.type_ course_type_,o.name_ organ_name_,tu.real_name_ teacher_name_,tu.avatar_ teacher_avatar_,
         cs.name_ course_schedule_name_,cs.status_ course_status_,
-        cs.actual_teacher_id_ teacher_id_,
+        cs.actual_teacher_id_ teacher_id_,cssp.join_course_type_ as join_course_type_,
         CONCAT(cs.class_date_,' ',cs.start_class_time_,'-',cs.end_class_time_) classTimeStr,
         cs.class_date_ ,cs.start_class_time_,cs.end_class_time_ ,cs.new_course_id_,
         CASE WHEN sa.visit_flag_ IS NULL THEN 0 ELSE sa.visit_flag_ END visitFlag,