From e24fa32417f284d3da8eba6dc906923a5f361456 Mon Sep 17 00:00:00 2001 From: Mlxa0324 Date: Sat, 14 Jan 2023 21:37:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=92=E5=8A=A8=E6=9C=AA=E8=AF=BB=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jlw/dao/TeacherOpenCourseChatLogDao.java | 8 ++++ .../jlw/entity/dto/ChatLogUnReadNumDTO.java | 29 ++++++++++++++ .../TeacherOpenCourseChatLogService.java | 37 ++++++++++++++++++ .../TeacherOpenCourseChatLogController.java | 16 ++++++++ .../sql/jlw/teacherOpenCourseChatLog.md | 38 +++++++++++++++++++ 5 files changed, 128 insertions(+) create mode 100644 web/src/main/java/com/ibeetl/jlw/entity/dto/ChatLogUnReadNumDTO.java diff --git a/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseChatLogDao.java b/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseChatLogDao.java index a85c6699..4aaf9fb8 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseChatLogDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseChatLogDao.java @@ -2,6 +2,7 @@ package com.ibeetl.jlw.dao; import com.ibeetl.jlw.entity.TeacherOpenCourseChatLog; import com.ibeetl.jlw.entity.TeacherOpenCourseChatLogAnalysis; +import com.ibeetl.jlw.entity.dto.ChatLogUnReadNumDTO; import com.ibeetl.jlw.entity.vo.TeacherOpenCourseChatLogGroupInfoVO; import com.ibeetl.jlw.web.query.TeacherOpenCourseChatLogQuery; import org.beetl.sql.core.engine.PageQuery; @@ -44,4 +45,11 @@ public interface TeacherOpenCourseChatLogDao extends BaseMapper groupInfo(Long teacherOpenCourseId); + + /** + * 根据登录身份,互动获取未读数 + * @param dto + * @return + */ + int getUnReadNum(ChatLogUnReadNumDTO dto); } diff --git a/web/src/main/java/com/ibeetl/jlw/entity/dto/ChatLogUnReadNumDTO.java b/web/src/main/java/com/ibeetl/jlw/entity/dto/ChatLogUnReadNumDTO.java new file mode 100644 index 00000000..3a1b90b8 --- /dev/null +++ b/web/src/main/java/com/ibeetl/jlw/entity/dto/ChatLogUnReadNumDTO.java @@ -0,0 +1,29 @@ +package com.ibeetl.jlw.entity.dto; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * 功能描述:
+ * + * @author: mlx + * @description: + * @date: 2023/1/14 21:24 + * @version: 1.0 + */ +@Data +public class ChatLogUnReadNumDTO { + + @NotBlank(message = "开课ID不能为空!") + private Long teacherOpenCourseId; + + /** + * 学生ID + */ + private Long studentId; + /** + * 教师ID + */ + private Long teacherId; +} diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseChatLogService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseChatLogService.java index d317bdf6..7700669e 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseChatLogService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseChatLogService.java @@ -7,13 +7,19 @@ import cn.hutool.json.JSONUtil; import cn.jlw.util.ToolUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.ibeetl.admin.core.entity.CoreUser; import com.ibeetl.admin.core.service.CoreBaseService; import com.ibeetl.admin.core.util.PlatformException; import com.ibeetl.admin.core.web.JsonResult; import com.ibeetl.admin.core.web.JsonReturnCode; +import com.ibeetl.jlw.dao.StudentDao; +import com.ibeetl.jlw.dao.TeacherDao; import com.ibeetl.jlw.dao.TeacherOpenCourseChatLogDao; +import com.ibeetl.jlw.entity.Student; +import com.ibeetl.jlw.entity.Teacher; import com.ibeetl.jlw.entity.TeacherOpenCourseChatLog; import com.ibeetl.jlw.entity.TeacherOpenCourseChatLogAnalysis; +import com.ibeetl.jlw.entity.dto.ChatLogUnReadNumDTO; import com.ibeetl.jlw.entity.vo.TeacherOpenCourseChatLogGroupInfoVO; import com.ibeetl.jlw.web.query.TeacherOpenCourseChatLogQuery; import lombok.extern.slf4j.Slf4j; @@ -23,12 +29,15 @@ import org.beetl.sql.core.engine.PageQuery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.Date; import java.util.List; +import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser; + /** * 开课互动 Service * 当分布式ID开启后请勿使用insert(*,true) @@ -40,6 +49,10 @@ import java.util.List; public class TeacherOpenCourseChatLogService extends CoreBaseService implements DeleteResourcesBy{ @Autowired private TeacherOpenCourseChatLogDao teacherOpenCourseChatLogDao; + @Autowired + private TeacherDao teacherDao; + @Autowired + private StudentDao studentDao; public PageQueryqueryByCondition(PageQuery query){ PageQuery ret = teacherOpenCourseChatLogDao.queryByCondition(query); @@ -216,4 +229,28 @@ public class TeacherOpenCourseChatLogService extends CoreBaseService groupInfo(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId) { return teacherOpenCourseChatLogDao.groupInfo(teacherOpenCourseId); } + + /** + * 根据登录身份,互动获取未读数 + * @param dto + * @return + */ + public Integer getUnReadNum(@Validated ChatLogUnReadNumDTO dto) { + CoreUser user = getUser(); + // 学生或者教师身份才能看到真正的数字 + if (user != null && user.isTeacher()) { + Teacher teacher = teacherDao.getByUserId(user.getId()); + if (teacher != null) { + dto.setTeacherId(teacher.getTeacherId()); + } + } + if (user != null && user.isStudent()) { + Student student = studentDao.getByUserId(user.getId()); + if (student != null) { + dto.setStudentId(student.getStudentId()); + } + } + + return teacherOpenCourseChatLogDao.getUnReadNum(dto); + } } diff --git a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseChatLogController.java b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseChatLogController.java index b7562cc8..aeb77fdb 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseChatLogController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseChatLogController.java @@ -18,6 +18,7 @@ import com.ibeetl.admin.core.web.JsonResult; import com.ibeetl.jlw.entity.Student; import com.ibeetl.jlw.entity.Teacher; import com.ibeetl.jlw.entity.TeacherOpenCourseChatLog; +import com.ibeetl.jlw.entity.dto.ChatLogUnReadNumDTO; import com.ibeetl.jlw.entity.dto.TeacherOpenCourseChatLogStudentDTO; import com.ibeetl.jlw.entity.dto.TeacherOpenCourseChatLogTeacherDTO; import com.ibeetl.jlw.entity.vo.TeacherOpenCourseChatLogGroupInfoVO; @@ -497,4 +498,19 @@ public class TeacherOpenCourseChatLogController extends BaseController { String filename = StrUtil.format("讨论分组-汇总数据导出{}.xlsx", DateUtil.now()); write(response, filename,"Sheet1", TeacherOpenCourseChatLogGroupInfoVO.class, list); } + + /** + * 根据登录身份,互动获取未读数 + * + * @param teacherOpenCourseId 开课ID + * @param coreUser + * @return + */ + @SneakyThrows + @GetMapping(API + "/getUnReadNum.do") + public JsonResult getUnReadNum(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, @SCoreUser CoreUser coreUser) { + ChatLogUnReadNumDTO dto = new ChatLogUnReadNumDTO(); + dto.setTeacherOpenCourseId(teacherOpenCourseId); + return JsonResult.success(teacherOpenCourseChatLogService.getUnReadNum(dto)); + } } \ No newline at end of file diff --git a/web/src/main/resources/sql/jlw/teacherOpenCourseChatLog.md b/web/src/main/resources/sql/jlw/teacherOpenCourseChatLog.md index 6ffe2db3..acf42fd0 100644 --- a/web/src/main/resources/sql/jlw/teacherOpenCourseChatLog.md +++ b/web/src/main/resources/sql/jlw/teacherOpenCourseChatLog.md @@ -587,3 +587,41 @@ groupInfo and t.chat_log_send_type is not null and t.teacher_open_course_id = #teacherOpenCourseId# group by t.chat_log_send_type + +getUnReadNum +=== +* 获取没有回复的消息 + + SELECT + count( 1 ) + FROM + teacher_open_course_chat_log t + WHERE + 1 + @if(isNotEmpty(teacherOpenCourseId)) { + AND t.teacher_open_course_id = #teacherOpenCourseId# + @} + @if(isNotEmpty(studentId)) { + AND t.student_id = #studentId# + @} + @if(isNotEmpty(teacherId)) { + AND t.teacher_id = #teacherId# + @} + AND NOT EXISTS ( + SELECT + 1 + FROM + teacher_open_course_chat_log ta + WHERE + 1 + @if(isNotEmpty(studentId)) { + AND t.student_id = #studentId# + @} + @if(isNotEmpty(teacherId)) { + AND t.teacher_id = #teacherId# + @} + @if(isNotEmpty(teacherOpenCourseId)) { + AND t.teacher_open_course_id = #teacherOpenCourseId# + @} + AND ta.teacher_open_course_chat_log_parent_id = teacher_open_course_chat_log_id + ) \ No newline at end of file