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 f958a0b4..f47ccd14 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseChatLogDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseChatLogDao.java @@ -62,4 +62,12 @@ public interface TeacherOpenCourseChatLogDao extends BaseMapper { @Autowired private CourseLabelDao courseLabelDao; + @Autowired + private CourseInfoDao courseInfoDao; + + public PageQuery queryByCondition(PageQuery query) { PageQuery ret = courseLabelDao.queryByCondition(query); queryListAfter(ret.getList()); @@ -66,4 +78,32 @@ public class CourseLabelService extends CoreBaseService { List list = courseLabelDao.template(courseLabel); return CollectionUtils.isEmpty(list) ? null : list.get(0); } + + public JsonResult delCourseLabelHandler(CourseLabel courseLabel, CoreUser coreUser) { + Assert.isTrue(coreUser.isUniAdmin() || coreUser.isAdmin(), "只允许学校管理员和超管访问该接口!"); + CourseLabel cl = queryById(courseLabel.getCourseLabelId()); + // 只有超管才能修改系统分配的数据 + Assert.isFalse(ADMIN_ADD.equals(cl.getAddType()) && coreUser.isUniAdmin(), "用户无法修改系统分配的数据!"); + + CourseInfo courseInfo = new CourseInfo(); + courseInfo.setCourseLabelId(courseLabel.getCourseLabelId()); + courseInfo.setCourseInfoType(1); + + long count = courseInfoDao.createLambdaQuery() + .andEq(CourseInfo::getCourseLabelId, courseLabel.getCourseLabelId()) + .andEq(CourseInfo::getCourseInfoType, 1) + .andIn(CourseInfo::getCourseInfoStatus, Arrays.asList(1, 2)) + .count(); + + if (count>0){ + return JsonResult.failMessage("该标签下有课程,无法删除!"); + } + + boolean success = updateTemplate(courseLabel); + if (success) { + return JsonResult.success(); + } else { + return JsonResult.failMessage("更新失败"); + } + } } \ No newline at end of file diff --git a/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionService.java b/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionService.java index 5b77ebb4..a1e06b2f 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionService.java @@ -822,6 +822,17 @@ public class ResourcesQuestionService extends CoreBaseService return ""; } + + public String formatQuestion(String question) { + + if (StringUtils.isNotBlank(question)&&StringUtils.isNotBlank(question.replace("

","").replace("
","").replace("

","").replace("
","").trim())){ + return question; + }else { + return ""; + } + + } + public String getCellFormatValue(Cell cell) { String value = null; if (cell != null) { 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 f8b85ff2..9caf12e6 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseChatLogService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseChatLogService.java @@ -1,6 +1,7 @@ package com.ibeetl.jlw.service; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; @@ -38,6 +39,8 @@ import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser; @@ -49,9 +52,10 @@ import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser; @Service @Transactional @Slf4j -public class TeacherOpenCourseChatLogService extends CoreBaseService implements DeleteResourcesBy{ +public class TeacherOpenCourseChatLogService extends CoreBaseService implements DeleteResourcesBy { - @Autowired private TeacherOpenCourseChatLogDao teacherOpenCourseChatLogDao; + @Autowired + private TeacherOpenCourseChatLogDao teacherOpenCourseChatLogDao; @Autowired private TeacherDao teacherDao; @Autowired @@ -59,8 +63,8 @@ public class TeacherOpenCourseChatLogService extends CoreBaseServicequeryByCondition(PageQuery query){ - PageQuery ret = teacherOpenCourseChatLogDao.queryByCondition(query); + public PageQuery queryByCondition(PageQuery query) { + PageQuery ret = teacherOpenCourseChatLogDao.queryByCondition(query); CollectionUtil.emptyIfNull(ret.getList()).forEach(item -> { String headImg = webPlatformService.getHeadImgByIdentity(item.getUserId()); item.set("headImg", headImg); @@ -68,8 +72,9 @@ public class TeacherOpenCourseChatLogService extends CoreBaseService queryByCondition(PageQuery query, Boolean placeholder){ - PageQuery ret = teacherOpenCourseChatLogDao.queryByCondition2(query); + + public PageQuery queryByCondition(PageQuery query, Boolean placeholder) { + PageQuery ret = teacherOpenCourseChatLogDao.queryByCondition2(query); CollectionUtil.emptyIfNull(ret.getList()).forEach(item -> { String headImg = webPlatformService.getHeadImgByIdentity(item.getUserId()); item.set("headImg", headImg); @@ -78,8 +83,8 @@ public class TeacherOpenCourseChatLogService extends CoreBaseServicequeryByConditionQuery(PageQuery query){ - PageQuery ret = teacherOpenCourseChatLogDao.queryByConditionQuery(query); + public PageQuery queryByConditionQuery(PageQuery query) { + PageQuery ret = teacherOpenCourseChatLogDao.queryByConditionQuery(query); CollectionUtil.emptyIfNull(ret.getList()).forEach(item -> { String headImg = webPlatformService.getHeadImgByIdentity(item.getUserId()); item.set("headImg", headImg); @@ -88,18 +93,106 @@ public class TeacherOpenCourseChatLogService extends CoreBaseService queryByConditionQueryWithChangStatus(TeacherOpenCourseChatLogQuery query) { + PageQuery ret = teacherOpenCourseChatLogDao.queryByConditionQuery(query.getPageQuery()); + + if (CollUtil.isNotEmpty(ret.getList())) { + CoreUser user = getUser(); + Object bean = null; + // 学生或者教师身份才能看到真正的数字 + if (user != null && user.isTeacher()) { + Teacher teacher = teacherDao.getByUserId(user.getId()); + if (teacher != null) { + bean = teacher; + } + } else if (user != null && user.isStudent()) { + Student student = studentDao.getByUserId(user.getId()); + if (student != null) { + bean = student; + } + } + //remark /api/teacherOpenCourseChatLog/setScore.do 也有标记已读的逻辑 + if (bean != null) { + switch (query.getChatLogSendType()==null?ChatLogSendTypeEnum.normal:query.getChatLogSendType()) { + case normal: + if (query.getTeacherOpenCourseChatLogParentId()!=null){ + if (bean instanceof Student){ + List idList = ret.getList().stream().filter(e->Objects.equals(e.getStudentReadStatus(),0)).map(TeacherOpenCourseChatLog::getTeacherOpenCourseChatLogId).collect(Collectors.toList()); + readChatLogByIds(idList,1); + } + } + break; + case student_ask: + if (bean instanceof Teacher) { + List idList = ret.getList().stream().filter(e->Objects.equals(e.getTeacherReadStatus(),0)).map(TeacherOpenCourseChatLog::getTeacherOpenCourseChatLogId).collect(Collectors.toList()); + readChatLogByIds(idList,2); + } + break; + case specify_ask: + case random_ask: + //if (bean instanceof Student) { + // List idList = ret.getList().stream().filter(e->Objects.equals(e.getStudentReadStatus(),0)).map(TeacherOpenCourseChatLog::getTeacherOpenCourseChatLogId).collect(Collectors.toList()); + // readChatLogByIds(idList,1); + //} + break; + + default: + + break; + + } + + } + + } + + CollectionUtil.emptyIfNull(ret.getList()).forEach(item -> { + String headImg = webPlatformService.getHeadImgByIdentity(item.getUserId()); + item.set("headImg", headImg); + }); + queryListAfter(ret.getList()); + return ret; + } + + + /** + * 标记消息为已读 + * + * @param ids id + * @param type 类型 1学生 2教师 + * @author zhouzhao + * @date 2023/05/09 10:38:44 + */ + public void readChatLogByIds(List ids,int type) { + if (CollUtil.isEmpty(ids)) { + return; + } + for (Long id : ids) { + TeacherOpenCourseChatLog teacherOpenCourseChatLog = teacherOpenCourseChatLogDao.unique(id); + if (teacherOpenCourseChatLog != null) { + if (type==1) { + teacherOpenCourseChatLog.setStudentReadStatus(1); + }else { + teacherOpenCourseChatLog.setTeacherReadStatus(1); + } + teacherOpenCourseChatLog.setTeacherReadStatus(1); + teacherOpenCourseChatLogDao.updateById(teacherOpenCourseChatLog); + } + } + } + + public void deleteByList(List list) { String ids = ""; ToolUtils.deleteNullList(list); - for(int i=0;null != list && i teacherOpenCourseChatLogList = new ArrayList<>(); try { @@ -115,11 +208,12 @@ public class TeacherOpenCourseChatLogService extends CoreBaseService0){ - for(int i=0;i 0) { + for (int i = 0; i < teacherOpenCourseChatLogList.size(); i++) { TeacherOpenCourseChatLog teacherOpenCourseChatLog = teacherOpenCourseChatLogList.get(i); teacherOpenCourseChatLog.setTeacherOpenCourseChatLogAddTime(new Date()); teacherOpenCourseChatLog.setUserId(teacherOpenCourseChatLogQuery.getUserId()); @@ -130,7 +224,7 @@ public class TeacherOpenCourseChatLogService extends CoreBaseService 0; - if(!flag){ + if (!flag) { msg = "更新指定参数失败"; } - }else{ + } else { msg = "指定参数为空"; } return msg; } - public List getValues (Object paras){ + public List getValues(Object paras) { return sqlManager.select(SqlId.of("jlw.teacherOpenCourseChatLog.getTeacherOpenCourseChatLogValues"), TeacherOpenCourseChatLog.class, paras); } - public List getValuesByQuery (TeacherOpenCourseChatLogQuery teacherOpenCourseChatLogQuery){ + public List getValuesByQuery(TeacherOpenCourseChatLogQuery teacherOpenCourseChatLogQuery) { return teacherOpenCourseChatLogDao.getValuesByQuery(teacherOpenCourseChatLogQuery); } - public TeacherOpenCourseChatLog getInfo (Long teacherOpenCourseChatLogId){ + public TeacherOpenCourseChatLog getInfo(Long teacherOpenCourseChatLogId) { TeacherOpenCourseChatLogQuery teacherOpenCourseChatLogQuery = new TeacherOpenCourseChatLogQuery(); teacherOpenCourseChatLogQuery.setTeacherOpenCourseChatLogId(teacherOpenCourseChatLogId); teacherOpenCourseChatLogQuery.setTeacherOpenCourseChatLogStatusPlural("1,2");//需要根据实际情况来 List list = teacherOpenCourseChatLogDao.getValuesByQuery(teacherOpenCourseChatLogQuery); - if(null != list && list.size()>0){ + if (null != list && list.size() > 0) { return list.get(0); - }else{ + } else { return null; } } - public TeacherOpenCourseChatLog getInfo (TeacherOpenCourseChatLogQuery teacherOpenCourseChatLogQuery){ + public TeacherOpenCourseChatLog getInfo(TeacherOpenCourseChatLogQuery teacherOpenCourseChatLogQuery) { List list = teacherOpenCourseChatLogDao.getValuesByQuery(teacherOpenCourseChatLogQuery); - if(null != list && list.size()>0){ + if (null != list && list.size() > 0) { return list.get(0); - }else{ + } else { return null; } } @@ -279,7 +374,7 @@ public class TeacherOpenCourseChatLogService extends CoreBaseService * 讨论日志-分析 * - * @param teacherOpenCourseId 开课ID + * @param teacherOpenCourseId 开课ID * @return {@link TeacherOpenCourseChatLogAnalysis} * @Author: lx * @Date: 2022/12/12 23:14 @@ -292,7 +387,7 @@ public class TeacherOpenCourseChatLogService extends CoreBaseService * 评论添加的类型,分组汇总 * - * @param teacherOpenCourseId 开课ID + * @param teacherOpenCourseId 开课ID * @return {@link List< TeacherOpenCourseChatLogGroupInfoVO>} * @Author: lx * @Date: 2022/12/12 23:14 @@ -303,6 +398,7 @@ public class TeacherOpenCourseChatLogService extends CoreBaseService implements DeleteResourcesBy{ +public class TeacherOpenCourseMergeStudentService extends CoreBaseService implements DeleteResourcesBy { - @Autowired private UserConsoleService userConsoleService; - @Autowired private TeacherOpenCourseMergeStudentDao teacherOpenCourseMergeStudentDao; - @Autowired private TeacherOpenCourseMergeTeacherDao teacherOpenCourseMergeTeacherDao; - @Autowired private TeacherOpenCourseMergeSchoolClassDao teacherOpenCourseMergeSchoolClassDao; - @Autowired private StudentDao studentDao; - @Autowired private TeacherDao teacherDao; + @Autowired + private UserConsoleService userConsoleService; + @Autowired + private TeacherOpenCourseMergeStudentDao teacherOpenCourseMergeStudentDao; + @Autowired + private TeacherOpenCourseMergeTeacherDao teacherOpenCourseMergeTeacherDao; + @Autowired + private TeacherOpenCourseMergeSchoolClassDao teacherOpenCourseMergeSchoolClassDao; + @Autowired + private StudentDao studentDao; - public PageQueryqueryByCondition(PageQuery query){ - PageQuery ret = teacherOpenCourseMergeStudentDao.queryByCondition(query); + + @Autowired + private TeacherService teacherService; + + + public PageQuery queryByCondition(PageQuery query) { + PageQuery ret = teacherOpenCourseMergeStudentDao.queryByCondition(query); queryListAfter(ret.getList()); return ret; } - public PageQueryqueryByConditionQuery(PageQuery query){ - PageQuery ret = teacherOpenCourseMergeStudentDao.queryByConditionQuery(query); + public PageQuery queryByConditionQuery(PageQuery query) { + PageQuery ret = teacherOpenCourseMergeStudentDao.queryByConditionQuery(query); queryListAfter(ret.getList()); return ret; } - public void deleteByList(List list){ + public void deleteByList(List list) { String ids = ""; ToolUtils.deleteNullList(list); - for(int i=0;null != list && i teacherOpenCourseMergeStudentList = new ArrayList<>(); try { @@ -93,10 +104,11 @@ public class TeacherOpenCourseMergeStudentService extends CoreBaseService0){ - for(int i=0;i 0) { + for (int i = 0; i < teacherOpenCourseMergeStudentList.size(); i++) { TeacherOpenCourseMergeStudent teacherOpenCourseMergeStudent = teacherOpenCourseMergeStudentList.get(i); teacherOpenCourseMergeStudent.setOrgId(teacherOpenCourseMergeStudentQuery.getOrgId()); teacherOpenCourseMergeStudent.setTeacherOpenCourseSchoolClassMergeStudentAddTime(new Date()); @@ -129,7 +141,7 @@ public class TeacherOpenCourseMergeStudentService extends CoreBaseService 0; - if(!flag){ + if (!flag) { msg = "更新指定参数失败"; } - }else{ + } else { msg = "指定参数为空"; } return msg; } - public List getValues (Object paras){ + public List getValues(Object paras) { return sqlManager.select(SqlId.of("jlw.teacherOpenCourseMergeStudent.getTeacherOpenCourseMergeStudentValues"), TeacherOpenCourseMergeStudent.class, paras); } - public List getValuesByQuery (TeacherOpenCourseMergeStudentQuery teacherOpenCourseMergeStudentQuery){ + public List getValuesByQuery(TeacherOpenCourseMergeStudentQuery teacherOpenCourseMergeStudentQuery) { List valuesByQuery = teacherOpenCourseMergeStudentDao.getValuesByQuery(teacherOpenCourseMergeStudentQuery); queryListAfter(valuesByQuery); return valuesByQuery; } - public List getValuesByQueryNotWithPermission (TeacherOpenCourseMergeStudentQuery teacherOpenCourseMergeStudentQuery){ + public List getValuesByQueryNotWithPermission(TeacherOpenCourseMergeStudentQuery teacherOpenCourseMergeStudentQuery) { List valuesByQueryNotWithPermission = teacherOpenCourseMergeStudentDao.getValuesByQueryNotWithPermission(teacherOpenCourseMergeStudentQuery); queryListAfter(valuesByQueryNotWithPermission); return valuesByQueryNotWithPermission; } - public TeacherOpenCourseMergeStudent getInfo (Long teacherOpenCourseSchoolClassMergeStudentId){ + public TeacherOpenCourseMergeStudent getInfo(Long teacherOpenCourseSchoolClassMergeStudentId) { TeacherOpenCourseMergeStudentQuery teacherOpenCourseMergeStudentQuery = new TeacherOpenCourseMergeStudentQuery(); teacherOpenCourseMergeStudentQuery.setTeacherOpenCourseSchoolClassMergeStudentId(teacherOpenCourseSchoolClassMergeStudentId); teacherOpenCourseMergeStudentQuery.setTeacherOpenCourseSchoolClassMergeStudentStatusPlural("1,2");//需要根据实际情况来 List list = teacherOpenCourseMergeStudentDao.getValuesByQuery(teacherOpenCourseMergeStudentQuery); - if(null != list && list.size()>0){ + if (null != list && list.size() > 0) { return list.get(0); - }else{ + } else { return null; } } - public TeacherOpenCourseMergeStudent getInfo (TeacherOpenCourseMergeStudentQuery teacherOpenCourseMergeStudentQuery){ + public TeacherOpenCourseMergeStudent getInfo(TeacherOpenCourseMergeStudentQuery teacherOpenCourseMergeStudentQuery) { List list = teacherOpenCourseMergeStudentDao.getValuesByQuery(teacherOpenCourseMergeStudentQuery); - if(null != list && list.size()>0){ + if (null != list && list.size() > 0) { return list.get(0); - }else{ + } else { return null; } } @@ -215,7 +227,7 @@ public class TeacherOpenCourseMergeStudentService extends CoreBaseService studentIdList = teacherOpenCourseMergeStudentDao.selectStudentIdListByTeacherId(teacher.getTeacherId()); diff --git a/web/src/main/java/com/ibeetl/jlw/web/CourseLabelController.java b/web/src/main/java/com/ibeetl/jlw/web/CourseLabelController.java index db29c67f..c63d5aca 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/CourseLabelController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/CourseLabelController.java @@ -125,17 +125,7 @@ public class CourseLabelController{ if(result.hasErrors()){ return JsonResult.failMessage(result); }else { - Assert.isTrue(coreUser.isUniAdmin() || coreUser.isAdmin(), "只允许学校管理员和超管访问该接口!"); - CourseLabel cl = courseLabelService.queryById(courseLabel.getCourseLabelId()); - // 只有超管才能修改系统分配的数据 - Assert.isFalse(ADMIN_ADD.equals(cl.getAddType()) && coreUser.isUniAdmin(), "用户无法修改系统分配的数据!"); - - boolean success = courseLabelService.updateTemplate(courseLabel); - if (success) { - return JsonResult.success(); - } else { - return JsonResult.failMessage("更新失败"); - } + return courseLabelService.delCourseLabelHandler(courseLabel,coreUser); } } diff --git a/web/src/main/java/com/ibeetl/jlw/web/ResourcesQuestionController.java b/web/src/main/java/com/ibeetl/jlw/web/ResourcesQuestionController.java index 6fac3cf1..4102362b 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/ResourcesQuestionController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/ResourcesQuestionController.java @@ -294,11 +294,21 @@ public class ResourcesQuestionController{ BigDecimal questionScore = resourcesQuestion.getQuestionScore(); String questionStem = resourcesQuestion.getQuestionStem(); - String questionOptionA = resourcesQuestion.getQuestionOptionA(); - String questionOptionB = resourcesQuestion.getQuestionOptionB(); - String questionOptionC = resourcesQuestion.getQuestionOptionC(); - String questionOptionD = resourcesQuestion.getQuestionOptionD(); - String questionOptionE = resourcesQuestion.getQuestionOptionE(); + String questionOptionA = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionA()); + resourcesQuestion.setQuestionOptionA(questionOptionA); + + String questionOptionB = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionB()); + resourcesQuestion.setQuestionOptionB(questionOptionB); + + String questionOptionC = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionC()); + resourcesQuestion.setQuestionOptionC(questionOptionC); + + String questionOptionD = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionD()); + resourcesQuestion.setQuestionOptionD(questionOptionD); + + String questionOptionE = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionE()); + resourcesQuestion.setQuestionOptionE(questionOptionE); + String questionAnswer = resourcesQuestion.getQuestionAnswer(); questionAnswer = resourcesQuestionService.answerFormat(questionType,questionAnswer);//格式化 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 47af20da..88fc554f 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseChatLogController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseChatLogController.java @@ -1,6 +1,7 @@ package com.ibeetl.jlw.web; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -40,6 +41,7 @@ import java.math.BigDecimal; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; import static com.ibeetl.admin.core.util.ExcelUtil.convertData; @@ -74,9 +76,7 @@ public class TeacherOpenCourseChatLogController extends BaseController { if (null == coreUser) { return JsonResult.failMessage("请登录后再操作"); } else { - PageQuery page = condition.getPageQuery(); - teacherOpenCourseChatLogService.queryByConditionQuery(page); - return JsonResult.success(page); + return JsonResult.success(teacherOpenCourseChatLogService.queryByConditionQueryWithChangStatus(condition)); } } @@ -134,7 +134,6 @@ public class TeacherOpenCourseChatLogController extends BaseController { if (result.hasErrors()) { return JsonResult.failMessage(result); } else { - teacherOpenCourseChatLogQuery.setUserId(coreUser.getId()); teacherOpenCourseChatLogQuery.setOrgId(coreUser.getOrgId()); if (ObjectUtil.isNotEmpty(teacher)) { @@ -143,6 +142,8 @@ public class TeacherOpenCourseChatLogController extends BaseController { if (ObjectUtil.isNotEmpty(student)) { teacherOpenCourseChatLogQuery.setStudentId(student.getStudentId()); } + teacherOpenCourseChatLogQuery.setTeacherReadStatus(0); + teacherOpenCourseChatLogQuery.setStudentReadStatus(0); return teacherOpenCourseChatLogService.add(teacherOpenCourseChatLogQuery); } } @@ -228,7 +229,16 @@ public class TeacherOpenCourseChatLogController extends BaseController { teacherOpenCourseChatLogQuery.setTeacherOpenCourseChatLogId(teacherOpenCourseChatLogId); teacherOpenCourseChatLogQuery.setStudentScore(studentScore); String msg = teacherOpenCourseChatLogService.edit(teacherOpenCourseChatLogQuery); + if (StringUtils.isBlank(msg)) { + TeacherOpenCourseChatLog teacherOpenCourseChatLog = new TeacherOpenCourseChatLog(); + teacherOpenCourseChatLog.setTeacherOpenCourseChatLogParentId(teacherOpenCourseChatLogId); + //获取所有子评论 + List values = teacherOpenCourseChatLogService.getValues(teacherOpenCourseChatLog); + if (CollUtil.isNotEmpty(values)){ + List idList = values.stream().filter(e-> Objects.equals(e.getTeacherReadStatus(),0)).map(TeacherOpenCourseChatLog::getTeacherOpenCourseChatLogId).collect(Collectors.toList()); + teacherOpenCourseChatLogService.readChatLogByIds(idList,2); + } return JsonResult.success(); } else { return JsonResult.failMessage("更新失败," + msg); @@ -551,12 +561,11 @@ public class TeacherOpenCourseChatLogController extends BaseController { * 根据登录身份,互动获取未读数 * * @param teacherOpenCourseId 开课ID - * @param coreUser * @return */ @SneakyThrows @GetMapping(API + "/getUnReadNum.do") - public JsonResult getUnReadNum(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId, @SCoreUser CoreUser coreUser) { + public JsonResult getUnReadNum(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId) { ChatLogUnReadNumDTO dto = new ChatLogUnReadNumDTO(); dto.setTeacherOpenCourseId(teacherOpenCourseId); return JsonResult.success(teacherOpenCourseChatLogService.getUnReadNum(dto)); @@ -574,4 +583,34 @@ public class TeacherOpenCourseChatLogController extends BaseController { public JsonResult chatLogAnalysis(TeacherOpenCourseChatLogAnalysisDTO dto, @SCoreUser CoreUser coreUser) { return JsonResult.success(teacherOpenCourseChatLogService.chatLogAnalysis(dto)); } + + /** + * 得到老师提问模块的未读数 + * + * @param teacherOpenCourseId 老师公开课id + * @author zhouzhao + * @date 2023/05/06 02:05:07 + */ + @GetMapping(API+"/getTeacherAskUnReadCount.do") + public JsonResult getTeacherAskUnReadCount(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId){ + ChatLogUnReadNumDTO dto = new ChatLogUnReadNumDTO(); + dto.setTeacherOpenCourseId(teacherOpenCourseId); + return JsonResult.success(teacherOpenCourseChatLogService.getTeacherAskUnReadCount(dto)); + } + + + /** + * 得到学生提问模块的未读数 + * + * @param teacherOpenCourseId 老师公开课id + * @author zhouzhao + * @date 2023/05/06 02:05:07 + */ + @GetMapping(API+"/getStudentAskUnReadCount.do") + public JsonResult getStudentAskUnReadCount(@NotNull(message = "开课ID不能为空!") Long teacherOpenCourseId){ + ChatLogUnReadNumDTO dto = new ChatLogUnReadNumDTO(); + dto.setTeacherOpenCourseId(teacherOpenCourseId); + return JsonResult.success(teacherOpenCourseChatLogService.getStudentAskUnReadCount(dto)); + } + } \ No newline at end of file diff --git a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseController.java b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseController.java index b2c44c19..41165e74 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseController.java @@ -2,6 +2,7 @@ package com.ibeetl.jlw.web; import cn.jlw.Interceptor.SCoreUser; import cn.jlw.Interceptor.TStudent; +import cn.jlw.Interceptor.TTeacher; import cn.jlw.validate.ValidateConfig; import com.ibeetl.admin.core.annotation.Function; import com.ibeetl.admin.core.entity.CoreUser; @@ -277,6 +278,16 @@ public class TeacherOpenCourseController{ } + @GetMapping(MODEL + "/getMyselfValues.json") + @Function("teacherOpenCourse.query") + @ResponseBody + public JsonResult> getMyselfValues(TeacherOpenCourseQuery param, @TTeacher Teacher teacher) { + param.setTeacherId(teacher.getTeacherId()); + Listlist = teacherOpenCourseService.getValuesByQuery(param); + return JsonResult.success(list); + } + + @PostMapping(MODEL + "/delete.json") @Function("teacherOpenCourse.delete") @ResponseBody diff --git a/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseChatLogQuery.java b/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseChatLogQuery.java index a4887763..8f324271 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseChatLogQuery.java +++ b/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseChatLogQuery.java @@ -82,6 +82,9 @@ public class TeacherOpenCourseChatLogQuery extends PageParam { @Query(name = "回复状态 1 待回复 2已回复", display = false) private Integer replyStatus; + private Integer teacherReadStatus; + + private Integer studentReadStatus; private String teacherOpenCourseChatLogIdPlural; private String teacherOpenCourseChatLogParentIdPlural; private String teacherOpenCourseIdPlural; @@ -198,6 +201,8 @@ public class TeacherOpenCourseChatLogQuery extends PageParam { pojo.setChatLogSendType(ObjectUtil.defaultIfNull(this.getChatLogSendType(), normal)); pojo.setOrgId(this.getOrgId()); pojo.setUserId(this.getUserId()); + pojo.setTeacherReadStatus(this.getTeacherReadStatus()); + pojo.setStudentReadStatus(this.getStudentReadStatus()); return pojo; } @@ -292,4 +297,20 @@ public class TeacherOpenCourseChatLogQuery extends PageParam { public void setChatLogSendTypePlural(String chatLogSendTypePlural) { this.chatLogSendTypePlural = chatLogSendTypePlural; } + + public Integer getTeacherReadStatus() { + return teacherReadStatus; + } + + public void setTeacherReadStatus(Integer teacherReadStatus) { + this.teacherReadStatus = teacherReadStatus; + } + + public Integer getStudentReadStatus() { + return studentReadStatus; + } + + public void setStudentReadStatus(Integer studentReadStatus) { + this.studentReadStatus = studentReadStatus; + } } diff --git a/web/src/main/resources/sql/jlw/studentClientLink.md b/web/src/main/resources/sql/jlw/studentClientLink.md index 1e470072..434edf69 100644 --- a/web/src/main/resources/sql/jlw/studentClientLink.md +++ b/web/src/main/resources/sql/jlw/studentClientLink.md @@ -385,6 +385,6 @@ getValuesByQueryNotWithPermission @if(!isEmpty(orgIdPlural)){ and find_in_set(t.org_id,#orgIdPlural#) @} - + order by t.student_client_link_order asc diff --git a/web/src/main/resources/sql/jlw/teacherOpenCourseChatLog.md b/web/src/main/resources/sql/jlw/teacherOpenCourseChatLog.md index 706f8bf4..41cfba5c 100644 --- a/web/src/main/resources/sql/jlw/teacherOpenCourseChatLog.md +++ b/web/src/main/resources/sql/jlw/teacherOpenCourseChatLog.md @@ -132,6 +132,10 @@ queryByConditionQuery @pageTag(){ t.*, tc.class_name, + ifnull((select count(1) from teacher_open_course_chat_log a + where a.teacher_open_course_chat_log_status = 1 + and a.teacher_open_course_chat_log_parent_id = t.teacher_open_course_chat_log_id + ), 0) as comment_count, @// 指定提问,随机提问类型,查询学生回答的数据。只查询一级 (case when find_in_set(t.chat_log_send_type, 'specify_ask,random_ask') then (select chat_content @@ -686,4 +690,80 @@ chatLogAnalysis @if(isNotEmpty(teacherOpenCourseId)) { AND t.teacher_open_course_id = #teacherOpenCourseId# @} - AND t.teacher_open_course_chat_log_status = 1 \ No newline at end of file + AND t.teacher_open_course_chat_log_status = 1 + + + +getTeacherAskUnReadCountByTeacher +=== + * 获取老师提问模块未读数量,对于老师来说 + SELECT IFNULL(sum( + IF((select count(*) + from teacher_open_course_chat_log t2 + where t2.teacher_open_course_chat_log_parent_id = t.teacher_open_course_chat_log_id + and t2.teacher_read_status = 0)>0,1,0) + ),0) + FROM teacher_open_course_chat_log t + WHERE 1 + AND t.teacher_open_course_id = #teacherOpenCourseId# + AND t.teacher_id = #teacherId# + AND t.chat_log_send_type in ('specify_ask', 'random_ask') + + + + +getTeacherAskUnReadCountByStudent +=== + * 获取老师提问模块未读数量,对于学生来说 + + SELECT count(*) + FROM teacher_open_course_chat_log t + WHERE 1 + AND t.teacher_open_course_id = #teacherOpenCourseId# + AND t.student_id = #studentId# + AND t.chat_log_send_type in ('specify_ask','random_ask') + @//这里的未读我们可以认为就是不存在回复 + AND NOT EXISTS( + SELECT 1 + FROM teacher_open_course_chat_log ta + WHERE 1 + and ta.student_id = #studentId# + AND ta.teacher_open_course_id = #teacherOpenCourseId# + AND ta.teacher_open_course_chat_log_parent_id = t.teacher_open_course_chat_log_id + ) + + +getStudentAskUnReadCountByTeacher +=== + * 获取学生提问模块未读数量,对于老师来说 + + SELECT count(*) + FROM teacher_open_course_chat_log t + WHERE 1 + AND t.teacher_open_course_id = #teacherOpenCourseId# + AND t.chat_log_send_type = 'student_ask' + AND NOT EXISTS( + SELECT 1 + FROM teacher_open_course_chat_log ta + WHERE 1 + and ta.teacher_id = #teacherId# + AND ta.teacher_open_course_id = #teacherOpenCourseId# + AND ta.teacher_open_course_chat_log_parent_id = t.teacher_open_course_chat_log_id + ) + + +getStudentAskUnReadCountByStudent +=== + * 获取学生提问模块未读数量,对于学生来说 + + SELECT IFNULL(sum( + (select count(*) + from teacher_open_course_chat_log t2 + where t2.teacher_open_course_chat_log_parent_id = t.teacher_open_course_chat_log_id + and t2.student_read_status = 0) + ),0) + FROM teacher_open_course_chat_log t + WHERE 1 + AND t.student_id = #studentId# + AND t.teacher_open_course_id = #teacherOpenCourseId# + AND t.chat_log_send_type = 'student_ask' \ No newline at end of file diff --git a/web/src/main/resources/static/js/jlw/teacherOpenCourseScheduleSession/add.js b/web/src/main/resources/static/js/jlw/teacherOpenCourseScheduleSession/add.js index f69b5193..ad39b2fd 100644 --- a/web/src/main/resources/static/js/jlw/teacherOpenCourseScheduleSession/add.js +++ b/web/src/main/resources/static/js/jlw/teacherOpenCourseScheduleSession/add.js @@ -11,6 +11,8 @@ layui.define(['form', 'laydate', 'table', 'xmSelect', 'teacherOpenCourseSchedule window.classList = Common.postAjax('/jlw/teacherOpenCourseScheduleSessionClass/levelList.json').data; var teacherOpenCourseScheduleSessionId = $("input[name='teacherOpenCourseScheduleSessionId']").val();//排课id + + //?universitySystemId=TODO姚丹,这里要获取教师所在的专业ID var classData = Common.getAjax('/jlw/schoolClass/getValues.json').data;//上课班级多选框data @@ -57,12 +59,14 @@ layui.define(['form', 'laydate', 'table', 'xmSelect', 'teacherOpenCourseSchedule item.teacherOpenCourseScheduleSessionClassId = ''; }); var kkJieciTableValue = $('#kkJieciTable').data('value'); + if (!$.isEmpty(kkJieciTableValue)) { if (Object.keys(kkJieciTableValue).length > 1) { $("#moreRoom").attr('checked', 'true'); } else { $("#oneRoom").attr('checked', 'true'); } + var teacherOpenCourseScheduleSessionClassIdValue=''; var data = Object.values(kkJieciTableValue); kkJieciTableData.forEach(function (item, index) { data.forEach(function (t, i) { @@ -70,11 +74,15 @@ layui.define(['form', 'laydate', 'table', 'xmSelect', 'teacherOpenCourseSchedule if (item.teacherOpenCourseScheduleSessionTagName == e.teacherOpenCourseScheduleSessionTagName) { item.teacherOpenCourseScheduleSessionTagStartTime = e.teacherOpenCourseScheduleSessionTagStartTime; item.teacherOpenCourseScheduleSessionTagEndTime = e.teacherOpenCourseScheduleSessionTagEndTime; - item.teacherOpenCourseScheduleSessionClassId = Object.keys(kkJieciTableValue)[i] + item.teacherOpenCourseScheduleSessionClassId = Object.keys(kkJieciTableValue)[i]; item.LAY_CHECKED = true; } + if(Object.keys(kkJieciTableValue).length == 1){ + item.teacherOpenCourseScheduleSessionClassId = Object.keys(kkJieciTableValue)[0] + } }); }); + }); if (Object.keys(kkJieciTableValue).length === 0) { merge(kkJieciTableData) @@ -110,13 +118,15 @@ layui.define(['form', 'laydate', 'table', 'xmSelect', 'teacherOpenCourseSchedule field: 'teacherOpenCourseScheduleSessionTagStartTime', title: '开始时间', align: "center", - edit: 'text' + templet: StartTime, + event: "startTime" }, { field: 'teacherOpenCourseScheduleSessionTagEndTime', title: '结束时间', align: "center", - edit: 'text' + templet: EndTime, + event: "endTime" }, { field: 'teacherOpenCourseScheduleSessionClassId', @@ -163,6 +173,7 @@ layui.define(['form', 'laydate', 'table', 'xmSelect', 'teacherOpenCourseSchedule } }; + /*教师关联班级下拉选项*/ form.on('select(select_teacherId)', function (obj) { classData = Common.getAjax('/jlw/schoolClass/getValues.json', {teacherId: obj.value}).data;//上课班级多选框data demo1.update({ @@ -221,7 +232,7 @@ layui.define(['form', 'laydate', 'table', 'xmSelect', 'teacherOpenCourseSchedule offset: 'auto', title: '设置时间', shadeClose: 'true', - area: ['700px', '260px'], + area: ['700px', '280px'], scrollbar: 'false', btnAlign: 'c', content: $("#setTime_demo"), @@ -310,16 +321,83 @@ layui.define(['form', 'laydate', 'table', 'xmSelect', 'teacherOpenCourseSchedule }); }); + /*表单编辑*/ + function StartTime(obj) { + var teacherOpenCourseScheduleSessionTagStartTime = obj.teacherOpenCourseScheduleSessionTagStartTime; + var id = "startTime" + obj.LAY_INDEX; + return ''; + } + + function EndTime(obj) { + var teacherOpenCourseScheduleSessionTagEndTime = obj.teacherOpenCourseScheduleSessionTagEndTime; + var id = "endTime" + obj.LAY_INDEX; + return ''; + } + /*表格编辑*/ - /*table.on('edit(kkJieciTable)', function (obj) { //注:edit是固定事件名,test是table原始容器的属性 lay-filter="对应的值" - (obj.value); //得到修改后的值 - (obj.field); //当前编辑的字段名 - (obj.data); //所在行的所有相关数据 - (table.cache["kkJieciTable"]) - (kkJieciTableData) - kkJieciTableData.forEach(function (item, index) { - }); - });*/ + table.on('tool(kkJieciTable)', function (obj) { //注:edit是固定事件名,test是table原始容器的属性 lay-filter="对应的值" + /* (obj.value); //得到修改后的值 + (obj.field); //当前编辑的字段名 + (obj.data); //所在行的所有相关数据 + (table.cache["kkJieciTable"]) + (kkJieciTableData) + kkJieciTableData.forEach(function (item, index) { + });*/ + var data = obj.data; + var index = Number($(obj.tr[0]).attr('data-index')); + if (obj.event === 'startTime') { + var id = '#startTime' + (index + 1); + laydate.render({ + elem: id + , type: 'time' + , trigger: 'click' + , format: 'HH:mm' + , done: function (value, date, endDate) { + kkJieciTableData[index].teacherOpenCourseScheduleSessionTagStartTime = value; + var endTime = data.teacherOpenCourseScheduleSessionTagEndTime; + var eHh = 0; + var eMm = 0; + if (!$.isEmpty(endTime)) { + eHh = Number(endTime.split(":")[0]); + eMm = Number(endTime.split(":")[1]); + } + var starDate = new Date(date.year, date.month, date.date, date.hours, date.minutes, 0); //开始时间 + var endDate = new Date(date.year, date.month, date.date, eHh, eMm, 0); //结束时间 + var resultDate = endDate.getTime() - starDate.getTime() //时间差的毫秒数 + var minutes = Math.floor(resultDate / (60 * 1000)); + kkJieciTableData[index].teacherOpenCourseScheduleSessionTagDuration = minutes; + table.reload('kkJieciTable', {data: kkJieciTableData}); + } + }); + } else if (obj.event == 'endTime') { + var id = '#endTime' + (index + 1); + laydate.render({ + elem: id + , type: 'time' + , trigger: 'click' + , format: 'HH:mm' + , min: data.teacherOpenCourseScheduleSessionTagStartTime + , show: true + , done: function (value, date, endDate) { + kkJieciTableData[index].teacherOpenCourseScheduleSessionTagEndTime = value; + var starTime = data.teacherOpenCourseScheduleSessionTagStartTime; + var starHh = 0; + var starMm = 0; + if (!$.isEmpty(starTime)) { + starHh = Number(starTime.split(":")[0]); + starMm = Number(starTime.split(":")[1]); + } + var endDate = new Date(date.year, date.month, date.date, date.hours, date.minutes, 0); //开始时间 + var starDate = new Date(date.year, date.month, date.date, starHh, starMm, 0); //结束时间 + var resultDate = endDate.getTime() - starDate.getTime() //时间差的毫秒数 + var minutes = Math.floor(resultDate / (60 * 1000)); + kkJieciTableData[index].teacherOpenCourseScheduleSessionTagDuration = minutes; + table.reload('kkJieciTable', {data: kkJieciTableData}); + + } + }); + } + }); /*课程时间增加*/ $("#add").click(function () { @@ -392,7 +470,7 @@ layui.define(['form', 'laydate', 'table', 'xmSelect', 'teacherOpenCourseSchedule $("#teacherId option[value='" + data.teacherId + "']").attr("selected", "selected"); var xmSeValue = data.schoolClassIds; - if(!$.isEmpty(xmSeValue)){ + if (!$.isEmpty(xmSeValue)) { demo1.setValue(xmSeValue.split(","))//xmselect多选下拉 取值 回显 } @@ -413,7 +491,7 @@ layui.define(['form', 'laydate', 'table', 'xmSelect', 'teacherOpenCourseSchedule //课程来源:0:教师开课课程,1:授权课程 var courseType = $("#addForm select[name='teacherOpenCourseId']").find("option:selected").attr("status"); var teacherOpenCourseId = $("#addForm select[name='teacherOpenCourseId']").val(); - if(!$.isEmpty(teacherOpenCourseId_default)){ + if (!$.isEmpty(teacherOpenCourseId_default)) { teacherOpenCourseId = teacherOpenCourseId_default; courseType = '0'; } @@ -493,7 +571,6 @@ layui.define(['form', 'laydate', 'table', 'xmSelect', 'teacherOpenCourseSchedule return; } - var param = { scheduleSessionTitle: scheduleSessionTitle, teacherOpenCourseScheduleSessionId: teacherOpenCourseScheduleSessionId, diff --git a/web/src/main/resources/static/js/jlw/teacherOpenCourseScheduleSessionTag/initSetCourseScheduleCondition.js b/web/src/main/resources/static/js/jlw/teacherOpenCourseScheduleSessionTag/initSetCourseScheduleCondition.js index d3252a64..c8a191e1 100644 --- a/web/src/main/resources/static/js/jlw/teacherOpenCourseScheduleSessionTag/initSetCourseScheduleCondition.js +++ b/web/src/main/resources/static/js/jlw/teacherOpenCourseScheduleSessionTag/initSetCourseScheduleCondition.js @@ -286,8 +286,7 @@ layui.define(['laydate', 'layer', 'form', 'table', 'treetable', 'element'], func submitTag(teacherOpenCourseScheduleSessionTagId, data);//修改课次 } }); - } - if (obj.event == 'endTime') { + }else if (obj.event == 'endTime') { var id = '#endTime' + (Number($(obj.tr[0]).attr('data-index')) + 1); laydate.render({ elem: id diff --git a/web/src/main/resources/templates/jlw/courseLabel/index.html b/web/src/main/resources/templates/jlw/courseLabel/index.html index 494851a2..ab8c61c8 100644 --- a/web/src/main/resources/templates/jlw/courseLabel/index.html +++ b/web/src/main/resources/templates/jlw/courseLabel/index.html @@ -255,6 +255,7 @@ //删除相应的分类 function classDel() { var this_ = $(this); + var value = $(this).val(); layer.confirm('是否确定删除该分类?', function (index) { var ret = Common.postAjax("/jlw/courseLabel/edit.json", { courseLabelId: this_.parents(".layui-form-item").attr("courseLabelId"), @@ -267,10 +268,11 @@ }, function () { if (ret.code == 0) { this_.parent().prev().text(value); + this_.parents(".layui-form-item").remove(); layer.close(index); } }); - this_.parents(".layui-form-item").remove(); + layer.close(index); }); } diff --git a/web/src/main/resources/templates/jlw/teacher/statisticalReport.html b/web/src/main/resources/templates/jlw/teacher/statisticalReport.html index 5e46376e..17916f2a 100644 --- a/web/src/main/resources/templates/jlw/teacher/statisticalReport.html +++ b/web/src/main/resources/templates/jlw/teacher/statisticalReport.html @@ -169,7 +169,7 @@ hide: "${isSignRole.get()!''}" != 2 ? false : true, }, { - field: 'loginCount', title: '登录人数', align: "center" + field: 'loginCount', title: '登录人次', align: "center" }, { field: 'onLineCount', title: '实时在线人数', align: "center" @@ -196,10 +196,10 @@ type: 'numbers', title: '序号', align: "center", }, { - field: 'secondName', title: '子系统名称', align: "center", + field: 'secondName', title: '子系统名称', align: "center",hide:'false' }, { - field: 'firstName', title: '归属模块', align: "center", + field: 'firstName', title: '模块名称', align: "center", }, { field: 'universitiesCollegesName', title: '使用院校', align: "center", diff --git a/web/src/main/resources/templates/jlw/teacher/studentUsageLog.html b/web/src/main/resources/templates/jlw/teacher/studentUsageLog.html index d18c4d11..fe84057b 100644 --- a/web/src/main/resources/templates/jlw/teacher/studentUsageLog.html +++ b/web/src/main/resources/templates/jlw/teacher/studentUsageLog.html @@ -135,13 +135,13 @@ hide: "${isSignRole.get()!''}" != 2 ? true: false }, { - field: 'platform', title: '使用子系统名称', align: "center", + field: 'platform', title: '使用模块名称', align: "center", }, { - field: 'loginTime', title: '登入子系统时间', align: "center", + field: 'loginTime', title: '登入时间', align: "center", }, { - field: 'logoutTime', title: '登出子系统时间', align: "center", + field: 'logoutTime', title: '登出时间', align: "center", }, { field: 'onlineDuration', title: '使用时长', align: "center", diff --git a/web/src/main/resources/templates/jlw/teacherOpenCourseScheduleSession/add.html b/web/src/main/resources/templates/jlw/teacherOpenCourseScheduleSession/add.html index fea1f84e..977a6f4b 100644 --- a/web/src/main/resources/templates/jlw/teacherOpenCourseScheduleSession/add.html +++ b/web/src/main/resources/templates/jlw/teacherOpenCourseScheduleSession/add.html @@ -238,10 +238,9 @@ {{# layui.each(window.classList, function(index, item){ }} {{# layui.each(item.children, function(i, e){ }} - + {{# }); }} {{# }); }}