Jelajahi Sumber

考勤数据

liujc 2 tahun lalu
induk
melakukan
08ef10bed5

+ 24 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentAttendanceViewDto.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dto;
 
+import com.ym.mec.biz.dal.enums.JoinCourseType;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.StringUtils;
@@ -56,6 +57,29 @@ public class StudentAttendanceViewDto {
     @ApiModelProperty(value = "是否有待审核的退团申请",required = false)
     private Integer quitFlag;
 
+
+    @ApiModelProperty(value = "学员加入课程类型",required = false)
+    private JoinCourseType joinCourseType;
+
+    @ApiModelProperty(value = "观看时长",required = false)
+    private Integer watchTime;
+
+    public JoinCourseType getJoinCourseType() {
+        return joinCourseType;
+    }
+
+    public void setJoinCourseType(JoinCourseType joinCourseType) {
+        this.joinCourseType = joinCourseType;
+    }
+
+    public Integer getWatchTime() {
+        return watchTime;
+    }
+
+    public void setWatchTime(Integer watchTime) {
+        this.watchTime = watchTime;
+    }
+
     public String getCurrentClass() {
         return currentClass;
     }

+ 39 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/JoinCourseType.java

@@ -0,0 +1,39 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+//职务类型(指导老师、教务老师、教学主管)
+public enum JoinCourseType implements BaseEnum<String, JoinCourseType> {
+    // 购买
+    PURCHASE("PURCHASE", "购买"),
+
+    // 分享
+    SHARE("SHARE", "分享"),
+    ;
+
+	private String code;
+
+	private String msg;
+
+	JoinCourseType(String code, String msg) {
+		this.code = code;
+		this.msg = msg;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+
+	@Override
+	public String getCode() {
+		return this.code;
+	}
+}

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImLiveBroadcastRoomMemberService.java

@@ -10,6 +10,7 @@ import com.ym.mec.common.page.PageInfo;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * 直播间人员关系表(ImLiveBroadcastRoomMember)表服务接口
@@ -35,5 +36,7 @@ public interface ImLiveBroadcastRoomMemberService extends IService<ImLiveBroadca
      * 查询在房间人员
      */
     List<Integer> getLiveRoomMember(String roomUid);
+
+    List<ImLiveBroadcastRoomMember> getByRoomUidAndUserIds(String liveRoomId, Set<Long> userIds);
 }
 

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

@@ -43,6 +43,7 @@ import java.math.BigDecimal;
 import java.time.*;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import static com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType.*;
@@ -164,6 +165,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private CooperationOrganService cooperationOrganService;
     @Autowired
     private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
+
+    @Autowired
+    private ImLiveBroadcastRoomMemberService imLiveBroadcastRoomMemberService;
+
     @Override
     public BaseDAO<Integer, ClassGroup> getDAO() {
         return classGroupDao;
@@ -1898,8 +1903,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         truantStudent.addAll(otherStudent);
         truantStudent.addAll(leaveStudent);
         Set<Long> collect = truantStudent.stream().map(e -> e.getStudentId()).collect(Collectors.toSet());
+        CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId);
         if (!CollectionUtils.isEmpty(truantStudent)) {
-            CourseSchedule schedule = courseScheduleDao.get(courseScheduleId);
+            CourseSchedule schedule = courseSchedule;
             if (schedule.getGroupType() == MUSIC) {
                 Map<Integer, String> paymentStatusMap = MapUtil.convertIntegerMap(musicGroupPaymentCalenderDao.queryUserCoursePaymentStatus(collect, schedule.getMusicGroupId()));
 
@@ -1949,6 +1955,22 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 }
             });
         }
+
+        // 如果是直播课  查询观看时长
+        if(courseSchedule.getGroupType().equals(GroupType.LIVE)) {
+            List<ImLiveBroadcastRoomMember> memberList = imLiveBroadcastRoomMemberService.getByRoomUidAndUserIds(courseSchedule.getLiveRoomId(), collect);
+            if (!CollectionUtils.isEmpty(memberList)) {
+                Map<Integer, ImLiveBroadcastRoomMember> memberMap = memberList.stream().collect(Collectors.toMap(ImLiveBroadcastRoomMember::getUserId, Function.identity()));
+                truantStudent.forEach(studentAttendanceViewDto -> {
+                    ImLiveBroadcastRoomMember member = memberMap.get(studentAttendanceViewDto.getStudentId().intValue());
+                    if (member != null) {
+                        studentAttendanceViewDto.setWatchTime(member.getTotalTime());
+                    }else {
+                        studentAttendanceViewDto.setWatchTime(0);
+                    }
+                });
+            }
+        }
         return truantStudent;
     }
 

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomMemberServiceImpl.java

@@ -177,5 +177,18 @@ public class ImLiveBroadcastRoomMemberServiceImpl extends ServiceImpl<ImLiveBroa
         return list.stream().map(ImLiveBroadcastRoomMember::getUserId).collect(Collectors.toList());
     }
 
+    @Override
+    public List<ImLiveBroadcastRoomMember> getByRoomUidAndUserIds(String liveRoomId, Set<Long> userIds) {
+
+        if (StringUtils.isBlank(liveRoomId) || CollectionUtils.isEmpty(userIds)) {
+            return new ArrayList<>();
+        }
+        return this.lambdaQuery()
+                .eq(ImLiveBroadcastRoomMember::getRoomUid, liveRoomId)
+                .in(ImLiveBroadcastRoomMember::getUserId, userIds)
+                .list();
+
+    }
+
 }