Merge remote-tracking branch 'origin/dev2' into dev2
This commit is contained in:
commit
06063b975a
@ -114,7 +114,7 @@ public class AiolCourseSectionController extends JeecgController<AiolCourseSecti
|
||||
aiolEntityLinkMapper.insert(entityLink);
|
||||
}
|
||||
|
||||
return Result.OK("添加成功!");
|
||||
return Result.OK(sectionDTO.getId());
|
||||
} catch (Exception e) {
|
||||
log.error("添加课程章节失败: {}", e.getMessage(), e);
|
||||
return Result.error("添加课程章节失败: " + e.getMessage());
|
||||
|
@ -0,0 +1,116 @@
|
||||
package org.jeecg.modules.aiol.controller;
|
||||
|
||||
import org.jeecg.common.api.dto.message.MessageDTO;
|
||||
import org.jeecg.common.constant.enums.MessageTypeEnum;
|
||||
import org.jeecg.common.system.api.ISysBaseAPI;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.jeecg.modules.system.model.AnnouncementSendModel;
|
||||
import org.jeecg.modules.system.service.ISysAnnouncementSendService;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/aiol/message")
|
||||
public class AiolMessageController {
|
||||
@Autowired
|
||||
private ISysBaseAPI sysBaseApi;
|
||||
|
||||
@Autowired
|
||||
private ISysAnnouncementSendService sysAnnouncementSendService;
|
||||
|
||||
@GetMapping("/test")
|
||||
public void test() {
|
||||
// //推送消息
|
||||
// MessageDTO messageDTO = new MessageDTO();
|
||||
// messageDTO.setToAll(false);
|
||||
// messageDTO.setToUser("202121200873");
|
||||
// messageDTO.setTitle("评论和@");
|
||||
// messageDTO.setCategory("3");
|
||||
// //推送消息类型
|
||||
// messageDTO.setType(MessageTypeEnum.XT.getType());
|
||||
// messageDTO.setIsMarkdown(false);
|
||||
// messageDTO.setFromUser("202121200874");
|
||||
// messageDTO.setContent("{\"sender\":{\"id\":\"1966804797404344321\",\"username\":\"小明\"},\"comment\":{\"id\":456,\"content\":\"老师讲得真棒![user:789:李四] 快来看这个课程!\"},\"entity\":{\"type\":\"course\",\"id\":\"1954463468539371522\",\"title\":\"python语言基础与应用\"},\"actionTime\":\"2025-09-16T15:30:00Z\"}");
|
||||
// sysBaseApi.sendTemplateMessage(messageDTO);
|
||||
|
||||
//推送消息
|
||||
MessageDTO messageDTO = new MessageDTO();
|
||||
messageDTO.setToAll(false);
|
||||
messageDTO.setToUser("202121200873");
|
||||
messageDTO.setTitle("赞和收藏");
|
||||
messageDTO.setCategory("4");
|
||||
//推送消息类型
|
||||
messageDTO.setType(MessageTypeEnum.XT.getType());
|
||||
messageDTO.setIsMarkdown(false);
|
||||
messageDTO.setFromUser("202121200874");
|
||||
messageDTO.setContent("{\"sender\":{\"id\":\"202121200874\",\"username\":\"202121200874\"},\"entity\":{\"type\":\"course\",\"id\":\"1954463468539371522\",\"title\":\"python语言基础与应用\"},\"action\":\"like\",\"actionTime\":\"2025-09-16T15:35:00Z\"}");
|
||||
sysBaseApi.sendTemplateMessage(messageDTO);
|
||||
}
|
||||
|
||||
@GetMapping("/comments_at")
|
||||
public Result<IPage<AnnouncementSendModel>> queryCommentsAndAt(
|
||||
AnnouncementSendModel model,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
try {
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String userId = sysUser.getId();
|
||||
model.setUserId(userId);
|
||||
model.setPageNo((pageNo - 1) * pageSize);
|
||||
model.setPageSize(pageSize);
|
||||
// 处理时间范围与SysAnnouncementSendController一致
|
||||
if (StringUtils.isNotEmpty(model.getSendTimeBegin())) {
|
||||
model.setSendTimeBegin(model.getSendTimeBegin() + " 00:00:00");
|
||||
}
|
||||
if (StringUtils.isNotEmpty(model.getSendTimeEnd())) {
|
||||
model.setSendTimeEnd(model.getSendTimeEnd() + " 23:59:59");
|
||||
}
|
||||
// 评论和@ 消息类别 = 3
|
||||
model.setMsgCategory("3");
|
||||
|
||||
Page<AnnouncementSendModel> page = new Page<>(pageNo, pageSize);
|
||||
IPage<AnnouncementSendModel> pageList = sysAnnouncementSendService.getMyAnnouncementSendPage(page, model);
|
||||
return Result.OK(pageList);
|
||||
} catch (Exception e) {
|
||||
return Result.error("查询评论/@消息失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@GetMapping("/likes")
|
||||
public Result<IPage<AnnouncementSendModel>> queryLikes(
|
||||
AnnouncementSendModel model,
|
||||
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
try {
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String userId = sysUser.getId();
|
||||
model.setUserId(userId);
|
||||
model.setPageNo((pageNo - 1) * pageSize);
|
||||
model.setPageSize(pageSize);
|
||||
if (StringUtils.isNotEmpty(model.getSendTimeBegin())) {
|
||||
model.setSendTimeBegin(model.getSendTimeBegin() + " 00:00:00");
|
||||
}
|
||||
if (StringUtils.isNotEmpty(model.getSendTimeEnd())) {
|
||||
model.setSendTimeEnd(model.getSendTimeEnd() + " 23:59:59");
|
||||
}
|
||||
// 点赞 消息类别 = 4
|
||||
model.setMsgCategory("4");
|
||||
|
||||
Page<AnnouncementSendModel> page = new Page<>(pageNo, pageSize);
|
||||
IPage<AnnouncementSendModel> pageList = sysAnnouncementSendService.getMyAnnouncementSendPage(page, model);
|
||||
return Result.OK(pageList);
|
||||
} catch (Exception e) {
|
||||
return Result.error("查询点赞消息失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
@ -22,7 +22,7 @@ import lombok.experimental.Accessors;
|
||||
/**
|
||||
* @Description: 课程
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2025-09-13
|
||||
* @Date: 2025-09-17
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Data
|
||||
@ -141,6 +141,14 @@ public class AiolCourse implements Serializable {
|
||||
@Excel(name = "上架状态", width = 15)
|
||||
@Schema(description = "上架状态")
|
||||
private java.lang.Integer publishStatus;
|
||||
/**学期*/
|
||||
@Excel(name = "学期", width = 15)
|
||||
@Schema(description = "学期")
|
||||
private java.lang.String semester;
|
||||
/**是否允许下载*/
|
||||
@Excel(name = "是否允许下载", width = 15)
|
||||
@Schema(description = "是否允许下载")
|
||||
private java.lang.Integer allowDownload;
|
||||
/**创建人*/
|
||||
@Schema(description = "创建人")
|
||||
private java.lang.String createBy;
|
||||
|
@ -76,7 +76,7 @@ public class SystemSendMsgHandle implements ISendMsgHandle {
|
||||
String[] arr = messageDTO.getToUser().split(",");
|
||||
for(String username: arr){
|
||||
//update-begin---author:wangshuai---date:2025-06-26---for:【QQYUN-12162】OA项目改造,系统重消息拆分,目前消息都在一起 需按分类进行拆分---
|
||||
doSend(title, content, fromUser, username, data, messageDTO.getNoticeType());
|
||||
doSend(title, content, fromUser, username, data, messageDTO.getNoticeType(), messageDTO.getCategory());
|
||||
//update-end---author:wangshuai---date:2025-06-26---for:【QQYUN-12162】OA项目改造,系统重消息拆分,目前消息都在一起 需按分类进行拆分---
|
||||
}
|
||||
}
|
||||
@ -145,4 +145,70 @@ public class SystemSendMsgHandle implements ISendMsgHandle {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 扩展msgCategory
|
||||
private void doSend(String title, String msgContent, String fromUser, String toUser, Map<String, Object> data, String noticeType, String msgCategory){
|
||||
SysAnnouncement announcement = new SysAnnouncement();
|
||||
if(data!=null){
|
||||
//摘要信息
|
||||
Object msgAbstract = data.get(CommonConstant.NOTICE_MSG_SUMMARY);
|
||||
if(msgAbstract!=null){
|
||||
announcement.setMsgAbstract(msgAbstract.toString());
|
||||
}
|
||||
// 任务节点ID
|
||||
Object taskId = data.get(CommonConstant.NOTICE_MSG_BUS_ID);
|
||||
if(taskId!=null){
|
||||
announcement.setBusId(taskId.toString());
|
||||
announcement.setBusType(Vue3MessageHrefEnum.BPM_TASK.getBusType());
|
||||
noticeType = NoticeTypeEnum.NOTICE_TYPE_FLOW.getValue();
|
||||
}
|
||||
|
||||
// 流程内消息节点 发消息会传一个busType
|
||||
Object busType = data.get(CommonConstant.NOTICE_MSG_BUS_TYPE);
|
||||
if(busType!=null){
|
||||
announcement.setBusType(busType.toString());
|
||||
noticeType = NoticeTypeEnum.NOTICE_TYPE_FLOW.getValue();
|
||||
}
|
||||
}
|
||||
announcement.setTitile(title);
|
||||
announcement.setMsgContent(msgContent);
|
||||
announcement.setSender(fromUser);
|
||||
announcement.setPriority(CommonConstant.PRIORITY_M);
|
||||
announcement.setMsgType(CommonConstant.MSG_TYPE_UESR);
|
||||
announcement.setSendStatus(CommonConstant.HAS_SEND);
|
||||
announcement.setSendTime(new Date());
|
||||
//系统消息
|
||||
announcement.setMsgCategory(msgCategory);
|
||||
announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0));
|
||||
if(oConvertUtils.isEmpty(noticeType)){
|
||||
noticeType = NoticeTypeEnum.NOTICE_TYPE_SYSTEM.getValue();
|
||||
}
|
||||
announcement.setNoticeType(noticeType);
|
||||
announcement.setIzTop(CommonConstant.IZ_TOP_0);
|
||||
sysAnnouncementMapper.insert(announcement);
|
||||
// 2.插入用户通告阅读标记表记录
|
||||
String userId = toUser;
|
||||
String[] userIds = userId.split(",");
|
||||
String anntId = announcement.getId();
|
||||
for(int i=0;i<userIds.length;i++) {
|
||||
if(oConvertUtils.isNotEmpty(userIds[i])) {
|
||||
SysUser sysUser = userMapper.getUserByName(userIds[i]);
|
||||
if(sysUser==null) {
|
||||
continue;
|
||||
}
|
||||
SysAnnouncementSend announcementSend = new SysAnnouncementSend();
|
||||
announcementSend.setAnntId(anntId);
|
||||
announcementSend.setUserId(sysUser.getId());
|
||||
announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG);
|
||||
sysAnnouncementSendMapper.insert(announcementSend);
|
||||
JSONObject obj = new JSONObject();
|
||||
obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_USER);
|
||||
obj.put(WebsocketConst.MSG_USER_ID, sysUser.getId());
|
||||
obj.put(WebsocketConst.MSG_ID, announcement.getId());
|
||||
obj.put(WebsocketConst.MSG_TXT, announcement.getTitile());
|
||||
obj.put(CommonConstant.NOTICE_TYPE,noticeType);
|
||||
webSocket.sendMessage(sysUser.getId(), obj.toJSONString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -102,7 +102,7 @@ export const columns: BasicColumn[] = [
|
||||
dataIndex: 'question',
|
||||
},
|
||||
{
|
||||
title: '是否ai伴学模式',
|
||||
title: '是否ai伴学模式1',
|
||||
align:"center",
|
||||
dataIndex: 'izAi'
|
||||
},
|
||||
@ -126,6 +126,16 @@ export const columns: BasicColumn[] = [
|
||||
align:"center",
|
||||
dataIndex: 'publishStatus'
|
||||
},
|
||||
{
|
||||
title: '学期',
|
||||
align:"center",
|
||||
dataIndex: 'semester'
|
||||
},
|
||||
{
|
||||
title: '是否允许下载',
|
||||
align:"center",
|
||||
dataIndex: 'allowDownload'
|
||||
},
|
||||
];
|
||||
//查询数据
|
||||
export const searchFormSchema: FormSchema[] = [
|
||||
@ -255,7 +265,7 @@ export const formSchema: FormSchema[] = [
|
||||
component: 'JEditor',
|
||||
},
|
||||
{
|
||||
label: '是否ai伴学模式',
|
||||
label: '是否ai伴学模式1',
|
||||
field: 'izAi',
|
||||
component: 'InputNumber',
|
||||
},
|
||||
@ -278,6 +288,16 @@ export const formSchema: FormSchema[] = [
|
||||
label: '上架状态',
|
||||
field: 'publishStatus',
|
||||
component: 'InputNumber',
|
||||
},
|
||||
{
|
||||
label: '学期',
|
||||
field: 'semester',
|
||||
component: 'Input',
|
||||
},
|
||||
{
|
||||
label: '是否允许下载',
|
||||
field: 'allowDownload',
|
||||
component: 'InputNumber',
|
||||
},
|
||||
// TODO 主键隐藏字段,目前写死为ID
|
||||
{
|
||||
@ -309,11 +329,13 @@ export const superQuerySchema = {
|
||||
maxEnroll: {title: '最大报名人数',order: 16,view: 'number', type: 'number',},
|
||||
status: {title: '状态',order: 17,view: 'number', type: 'number',dictCode: 'course_status',},
|
||||
question: {title: '常见问题',order: 18,view: 'umeditor', type: 'string',},
|
||||
izAi: {title: '是否ai伴学模式',order: 19,view: 'number', type: 'number',},
|
||||
izAi: {title: '是否ai伴学模式1',order: 19,view: 'number', type: 'number',},
|
||||
pauseExit: {title: '离开页面是否暂停视频播放',order: 20,view: 'number', type: 'number',},
|
||||
allowSpeed: {title: '是否允许倍速播放',order: 21,view: 'number', type: 'number',},
|
||||
showSubtitle: {title: '是否显示字幕',order: 22,view: 'number', type: 'number',},
|
||||
publishStatus: {title: '上架状态',order: 23,view: 'number', type: 'number',},
|
||||
semester: {title: '学期',order: 24,view: 'text', type: 'string',},
|
||||
allowDownload: {title: '是否允许下载',order: 25,view: 'number', type: 'number',},
|
||||
};
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user