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 4aaf9fb8..3fba953a 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.TeacherOpenCourseChatLogTree; import com.ibeetl.jlw.entity.dto.ChatLogUnReadNumDTO; import com.ibeetl.jlw.entity.vo.TeacherOpenCourseChatLogGroupInfoVO; import com.ibeetl.jlw.web.query.TeacherOpenCourseChatLogQuery; @@ -21,6 +22,7 @@ import java.util.List; @SqlResource("jlw.teacherOpenCourseChatLog") public interface TeacherOpenCourseChatLogDao extends BaseMapper{ PageQuery queryByCondition(PageQuery query); + PageQuery queryByCondition(PageQuery query, Boolean placeholder); PageQuery queryByConditionQuery(PageQuery query); @Update void deleteTeacherOpenCourseChatLogByIds(String ids); diff --git a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseChatLog.java b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseChatLog.java index 8bb4767c..08d4583f 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseChatLog.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseChatLog.java @@ -10,13 +10,11 @@ import lombok.EqualsAndHashCode; import org.beetl.sql.annotation.entity.AssignID; import org.beetl.sql.annotation.entity.InsertIgnore; import org.beetl.sql.annotation.entity.UpdateIgnore; -import org.beetl.sql.fetch.annotation.Fetch; import org.beetl.sql.fetch.annotation.FetchSql; import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.Date; -import java.util.List; /* * 课程开课-互动-评论日志 @@ -25,7 +23,6 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper=false) // 递归数据。最多支持1000层级,再深层级的就无法查询了 -@Fetch(level=1000) public class TeacherOpenCourseChatLog extends BaseEntity{ //课程开课--讨论-日志ID @@ -39,14 +36,6 @@ public class TeacherOpenCourseChatLog extends BaseEntity{ private Long teacherOpenCourseChatLogParentId; - @FetchSql("select * from teacher_open_course_chat_log t " + - "where t.teacher_open_course_id = #teacherOpenCourseId# " + - "and t.teacher_open_course_chat_log_parent_id = #teacherOpenCourseChatLogId# " + - "and t.teacher_open_course_chat_log_parent_id != 0") - @UpdateIgnore - @InsertIgnore - private List children; - //课程开课ID @Dict(type="teacher_open_course.teacher_open_course_title.teacher_open_course_status=1") diff --git a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseChatLogTree.java b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseChatLogTree.java new file mode 100644 index 00000000..f97159e1 --- /dev/null +++ b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseChatLogTree.java @@ -0,0 +1,112 @@ +package com.ibeetl.jlw.entity; + +import com.ibeetl.admin.core.annotation.Dict; +import com.ibeetl.admin.core.annotation.DictEnum; +import com.ibeetl.admin.core.entity.BaseEntity; +import com.ibeetl.admin.core.util.ValidateConfig; +import com.ibeetl.jlw.enums.ChatLogSendTypeEnum; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.beetl.sql.annotation.entity.AssignID; +import org.beetl.sql.annotation.entity.InsertIgnore; +import org.beetl.sql.annotation.entity.Table; +import org.beetl.sql.annotation.entity.UpdateIgnore; +import org.beetl.sql.fetch.annotation.Fetch; +import org.beetl.sql.fetch.annotation.FetchSql; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/* +* 课程开课-互动-评论日志 +* gen by Spring Boot2 Admin 2022-09-18 +*/ +@Data +@EqualsAndHashCode(callSuper=false) +// 递归数据。最多支持1000层级,再深层级的就无法查询了 +@Fetch(level=1000) +@Table(name = "teacher_open_course_chat_log") +public class TeacherOpenCourseChatLogTree extends BaseEntity{ + + //课程开课--讨论-日志ID + @NotNull(message = "ID不能为空", groups =ValidateConfig.UPDATE.class) + // @SeqID(name = ORACLE_CORE_SEQ_NAME) + @AssignID(value = "maskAutoID",param = "com.ibeetl.jlw.entity.TeacherOpenCourseChatLog") + + private Long teacherOpenCourseChatLogId ; + + //上级ID, 默认0L 顶级:0L + + private Long teacherOpenCourseChatLogParentId; + + @FetchSql("select * from teacher_open_course_chat_log t " + + "where t.teacher_open_course_id = #teacherOpenCourseId# " + + "and t.teacher_open_course_chat_log_parent_id = #teacherOpenCourseChatLogId# " + + "and t.teacher_open_course_chat_log_parent_id != 0") + @UpdateIgnore + @InsertIgnore + private List children; + + //课程开课ID + @Dict(type="teacher_open_course.teacher_open_course_title.teacher_open_course_status=1") + + private Long teacherOpenCourseId ; + + //班级ID集合 + private String schoolClassIds ; + + @UpdateIgnore + @InsertIgnore + @FetchSql("select group_concat(t.class_name) from school_class t where find_in_set(t.class_id, #schoolClassIds#) and t.class_status = 1") + private String schoolClassIdsText; + + //教师ID + @Dict(type="teacher.teacher_name.teacher_status=1") + + private Long teacherId ; + + //学生ID + @Dict(type="student.student_name.student_status=1") + + private Long studentId ; + + //讨论内容 + + private String chatContent ; + + //关键字(多个逗号隔开) + + private String keywords ; + + //学生得分 + + private BigDecimal studentScore ; + + // 提问方式 + @DictEnum + private ChatLogSendTypeEnum chatLogSendType; + + //附件上传(仅支持图片,多个逗号隔开) + + private String chatFiles ; + + //状态 (1正常 2删除) + @Dict(type="global_status") + + private Integer teacherOpenCourseChatLogStatus ; + + //创建时间 + + private Date teacherOpenCourseChatLogAddTime ; + + //组织ID + + private Long orgId ; + + //用户ID + + private Long userId ; + +} 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 7700669e..cbb65937 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseChatLogService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseChatLogService.java @@ -1,5 +1,6 @@ package com.ibeetl.jlw.service; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import cn.hutool.extra.validation.BeanValidationResult; import cn.hutool.extra.validation.ValidationUtil; @@ -15,10 +16,7 @@ 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.*; import com.ibeetl.jlw.entity.dto.ChatLogUnReadNumDTO; import com.ibeetl.jlw.entity.vo.TeacherOpenCourseChatLogGroupInfoVO; import com.ibeetl.jlw.web.query.TeacherOpenCourseChatLogQuery; @@ -53,12 +51,23 @@ public class TeacherOpenCourseChatLogService extends CoreBaseServicequeryByCondition(PageQuery query){ PageQuery ret = teacherOpenCourseChatLogDao.queryByCondition(query); queryListAfter(ret.getList()); return ret; } + public PageQuery queryByCondition(PageQuery query, Boolean placeholder){ + PageQuery ret = teacherOpenCourseChatLogDao.queryByCondition(query, placeholder); + CollectionUtil.emptyIfNull(ret.getList()).forEach(item -> { + String headImg = webPlatformService.getHeadImgByIdentity(item.getUserId()); + item.set("headImg", headImg); + }); + queryListAfter(ret.getList()); + return ret; + } public PageQueryqueryByConditionQuery(PageQuery query){ PageQuery ret = teacherOpenCourseChatLogDao.queryByConditionQuery(query); diff --git a/web/src/main/java/com/ibeetl/jlw/service/WebPlatformService.java b/web/src/main/java/com/ibeetl/jlw/service/WebPlatformService.java index ff94cebd..686a23ae 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/WebPlatformService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/WebPlatformService.java @@ -16,11 +16,13 @@ import com.ibeetl.jlw.entity.StudentExtendSchoolInfo; import com.ibeetl.jlw.entity.Teacher; import com.ibeetl.jlw.entity.TeacherExtendSchoolInfo; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import javax.validation.constraints.NotNull; import java.util.List; +import static cn.hutool.core.util.ObjectUtil.defaultIfBlank; import static com.ibeetl.admin.core.service.CorePlatformService.*; @@ -199,4 +201,39 @@ public class WebPlatformService { Assert.notBlank(teacherExtendSchoolInfo.getUniversitySystemName(), "所在专业已不存在!"); } } + + /** + * 根据不同的身份,来获取不同表的头像信息。这里其实设计的不太到位,用户表没必要添加头像字段吧 + * @param userId + * @return + */ + @Cacheable(value = "cache:core:headImgs", key = "#userId", unless = "#userId == null || #result == ''") + public String getHeadImgByIdentity(Long userId) { + if (userId == null) { + return ""; + } + + CoreUser user = coreUserService.getUserById(userId); + if (user == null) { + return ""; + } + + // 系统用户表的头像 + String headImg = user.getHeadImg(); + + if (user.isStudent()) { + Student student = studentService.getByUserId(userId); + if (student != null) { + return defaultIfBlank( student.getHeadImg(), headImg); + } + } + if (user.isTeacher()) { + Teacher teacher = teacherService.getByUserId(userId); + if (teacher != null) { + return defaultIfBlank(headImg, ""); + } + } + + return headImg; + } } 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 d81ddb81..dad2621a 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseChatLogController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseChatLogController.java @@ -240,7 +240,7 @@ public class TeacherOpenCourseChatLogController extends BaseController { PageQuery page = condition.getPageQuery(); // 为空则查询顶级 condition.setTeacherOpenCourseChatLogParentId(ObjectUtil.defaultIfNull(condition.getTeacherOpenCourseChatLogParentId(), 0L)); - teacherOpenCourseChatLogService.queryByCondition(page); + teacherOpenCourseChatLogService.queryByCondition(page, true); return JsonResult.success(page); }