From f8515a5bb091e6775f5cf497f159402f7ec97490 Mon Sep 17 00:00:00 2001 From: GoCo Date: Thu, 11 Sep 2025 09:07:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20=E8=AF=BE=E7=A8=8B=20?= =?UTF-8?q?=E7=8F=AD=E7=BA=A7=E5=AD=97=E6=AE=B5=E8=A1=A5=E5=85=85=20&=20?= =?UTF-8?q?=E4=BC=9A=E8=AF=9D=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aiol/controller/AiolChatController.java | 182 +++++++++++ .../controller/AiolChatMemberController.java | 182 +++++++++++ .../controller/AiolChatMessageController.java | 182 +++++++++++ .../controller/AiolUserFollowController.java | 182 +++++++++++ .../jeecg/modules/aiol/entity/AiolChat.java | 80 +++++ .../modules/aiol/entity/AiolChatMember.java | 80 +++++ .../modules/aiol/entity/AiolChatMessage.java | 88 +++++ .../jeecg/modules/aiol/entity/AiolClass.java | 14 +- .../jeecg/modules/aiol/entity/AiolCourse.java | 14 +- .../modules/aiol/entity/AiolUserFollow.java | 64 ++++ .../modules/aiol/mapper/AiolChatMapper.java | 17 + .../aiol/mapper/AiolChatMemberMapper.java | 17 + .../aiol/mapper/AiolChatMessageMapper.java | 17 + .../aiol/mapper/AiolUserFollowMapper.java | 17 + .../aiol/mapper/xml/AiolChatMapper.xml | 5 + .../aiol/mapper/xml/AiolChatMemberMapper.xml | 5 + .../aiol/mapper/xml/AiolChatMessageMapper.xml | 5 + .../aiol/mapper/xml/AiolUserFollowMapper.xml | 5 + .../aiol/service/IAiolChatMemberService.java | 14 + .../aiol/service/IAiolChatMessageService.java | 14 + .../aiol/service/IAiolChatService.java | 14 + .../aiol/service/IAiolUserFollowService.java | 14 + .../impl/AiolChatMemberServiceImpl.java | 19 ++ .../impl/AiolChatMessageServiceImpl.java | 19 ++ .../service/impl/AiolChatServiceImpl.java | 19 ++ .../impl/AiolUserFollowServiceImpl.java | 19 ++ .../modules/aiol/uniapp/AiolChatForm.vue | 113 +++++++ .../modules/aiol/uniapp/AiolChatList.vue | 44 +++ .../aiol/uniapp/AiolChatMemberForm.vue | 113 +++++++ .../aiol/uniapp/AiolChatMemberList.vue | 44 +++ .../aiol/uniapp/AiolChatMessageForm.vue | 125 ++++++++ .../aiol/uniapp/AiolChatMessageList.vue | 44 +++ .../aiol/uniapp/AiolUserFollowForm.vue | 89 ++++++ .../aiol/uniapp/AiolUserFollowList.vue | 44 +++ .../modules/aiol/uniapp3/AiolChatData.ts | 34 ++ .../modules/aiol/uniapp3/AiolChatForm.vue | 277 ++++++++++++++++ .../modules/aiol/uniapp3/AiolChatList.vue | 148 +++++++++ .../aiol/uniapp3/AiolChatMemberData.ts | 34 ++ .../aiol/uniapp3/AiolChatMemberForm.vue | 278 ++++++++++++++++ .../aiol/uniapp3/AiolChatMemberList.vue | 148 +++++++++ .../aiol/uniapp3/AiolChatMessageData.ts | 44 +++ .../aiol/uniapp3/AiolChatMessageForm.vue | 302 ++++++++++++++++++ .../aiol/uniapp3/AiolChatMessageList.vue | 148 +++++++++ .../aiol/uniapp3/AiolUserFollowData.ts | 14 + .../aiol/uniapp3/AiolUserFollowForm.vue | 222 +++++++++++++ .../aiol/uniapp3/AiolUserFollowList.vue | 148 +++++++++ .../jeecg/modules/aiol/vue3/AiolChat.api.ts | 64 ++++ .../jeecg/modules/aiol/vue3/AiolChat.data.ts | 100 ++++++ .../jeecg/modules/aiol/vue3/AiolChatList.vue | 206 ++++++++++++ .../modules/aiol/vue3/AiolChatMember.api.ts | 64 ++++ .../modules/aiol/vue3/AiolChatMember.data.ts | 100 ++++++ .../modules/aiol/vue3/AiolChatMemberList.vue | 206 ++++++++++++ .../modules/aiol/vue3/AiolChatMessage.api.ts | 64 ++++ .../modules/aiol/vue3/AiolChatMessage.data.ts | 122 +++++++ .../modules/aiol/vue3/AiolChatMessageList.vue | 206 ++++++++++++ .../modules/aiol/vue3/AiolUserFollow.api.ts | 64 ++++ .../modules/aiol/vue3/AiolUserFollow.data.ts | 56 ++++ .../modules/aiol/vue3/AiolUserFollowList.vue | 206 ++++++++++++ .../V20250911_1__menu_insert_AiolChat.sql | 26 ++ ...20250911_1__menu_insert_AiolChatMember.sql | 26 ++ ...0250911_1__menu_insert_AiolChatMessage.sql | 26 ++ ...20250911_1__menu_insert_AiolUserFollow.sql | 26 ++ .../aiol/vue3/components/AiolChatForm.vue | 70 ++++ .../vue3/components/AiolChatMemberForm.vue | 70 ++++ .../vue3/components/AiolChatMemberModal.vue | 99 ++++++ .../vue3/components/AiolChatMessageForm.vue | 70 ++++ .../vue3/components/AiolChatMessageModal.vue | 99 ++++++ .../aiol/vue3/components/AiolChatModal.vue | 99 ++++++ .../vue3/components/AiolUserFollowForm.vue | 70 ++++ .../vue3/components/AiolUserFollowModal.vue | 99 ++++++ .../src/main/resources/application-dev.yml | 6 +- jeecgboot-vue3/src/views/aiol/AiolChat.api.ts | 64 ++++ .../src/views/aiol/AiolChat.data.ts | 100 ++++++ .../src/views/aiol/AiolChatList.vue | 206 ++++++++++++ .../src/views/aiol/AiolChatMember.api.ts | 64 ++++ .../src/views/aiol/AiolChatMember.data.ts | 100 ++++++ .../src/views/aiol/AiolChatMemberList.vue | 206 ++++++++++++ .../src/views/aiol/AiolChatMessage.api.ts | 64 ++++ .../src/views/aiol/AiolChatMessage.data.ts | 122 +++++++ .../src/views/aiol/AiolChatMessageList.vue | 206 ++++++++++++ .../src/views/aiol/AiolClass.data.ts | 11 + .../src/views/aiol/AiolClassList.vue | 4 +- .../src/views/aiol/AiolCourse.data.ts | 33 ++ .../src/views/aiol/AiolUserFollow.api.ts | 64 ++++ .../src/views/aiol/AiolUserFollow.data.ts | 56 ++++ .../src/views/aiol/AiolUserFollowList.vue | 206 ++++++++++++ .../V20250911_1__menu_insert_AiolChat.sql | 26 ++ ...20250911_1__menu_insert_AiolChatMember.sql | 26 ++ ...0250911_1__menu_insert_AiolChatMessage.sql | 26 ++ ...20250911_1__menu_insert_AiolUserFollow.sql | 26 ++ .../views/aiol/components/AiolChatForm.vue | 70 ++++ .../aiol/components/AiolChatMemberForm.vue | 70 ++++ .../aiol/components/AiolChatMemberModal.vue | 99 ++++++ .../aiol/components/AiolChatMessageForm.vue | 70 ++++ .../aiol/components/AiolChatMessageModal.vue | 99 ++++++ .../views/aiol/components/AiolChatModal.vue | 99 ++++++ .../aiol/components/AiolUserFollowForm.vue | 70 ++++ .../aiol/components/AiolUserFollowModal.vue | 99 ++++++ 98 files changed, 8220 insertions(+), 11 deletions(-) create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolChatController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolChatMemberController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolChatMessageController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolUserFollowController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolChat.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolChatMember.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolChatMessage.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolUserFollow.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolChatMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolChatMemberMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolChatMessageMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolUserFollowMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolChatMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolChatMemberMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolChatMessageMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolUserFollowMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolChatMemberService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolChatMessageService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolChatService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolUserFollowService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolChatMemberServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolChatMessageServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolChatServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolUserFollowServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatMemberForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatMemberList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatMessageForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatMessageList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolUserFollowForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolUserFollowList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMemberData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMemberForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMemberList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMessageData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMessageForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMessageList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserFollowData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserFollowForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserFollowList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChat.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChat.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMember.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMember.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMemberList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMessage.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMessage.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMessageList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserFollow.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserFollow.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserFollowList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250911_1__menu_insert_AiolChat.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250911_1__menu_insert_AiolChatMember.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250911_1__menu_insert_AiolChatMessage.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250911_1__menu_insert_AiolUserFollow.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatMemberForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatMemberModal.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatMessageForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatMessageModal.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatModal.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolUserFollowForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolUserFollowModal.vue create mode 100644 jeecgboot-vue3/src/views/aiol/AiolChat.api.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolChat.data.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolChatList.vue create mode 100644 jeecgboot-vue3/src/views/aiol/AiolChatMember.api.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolChatMember.data.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolChatMemberList.vue create mode 100644 jeecgboot-vue3/src/views/aiol/AiolChatMessage.api.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolChatMessage.data.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolChatMessageList.vue create mode 100644 jeecgboot-vue3/src/views/aiol/AiolUserFollow.api.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolUserFollow.data.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolUserFollowList.vue create mode 100644 jeecgboot-vue3/src/views/aiol/V20250911_1__menu_insert_AiolChat.sql create mode 100644 jeecgboot-vue3/src/views/aiol/V20250911_1__menu_insert_AiolChatMember.sql create mode 100644 jeecgboot-vue3/src/views/aiol/V20250911_1__menu_insert_AiolChatMessage.sql create mode 100644 jeecgboot-vue3/src/views/aiol/V20250911_1__menu_insert_AiolUserFollow.sql create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolChatForm.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolChatMemberForm.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolChatMemberModal.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolChatMessageForm.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolChatMessageModal.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolChatModal.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolUserFollowForm.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolUserFollowModal.vue diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolChatController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolChatController.java new file mode 100644 index 00000000..3707f655 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolChatController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.aiol.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.aiol.entity.AiolChat; +import org.jeecg.modules.aiol.service.IAiolChatService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 会话 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +@Tag(name="会话") +@RestController +@RequestMapping("/aiol/aiolChat") +@Slf4j +public class AiolChatController extends JeecgController { + @Autowired + private IAiolChatService aiolChatService; + + /** + * 分页列表查询 + * + * @param aiolChat + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "会话-分页列表查询") + @Operation(summary="会话-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AiolChat aiolChat, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(aiolChat, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = aiolChatService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param aiolChat + * @return + */ + @AutoLog(value = "会话-添加") + @Operation(summary="会话-添加") + @RequiresPermissions("aiol:aiol_chat:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AiolChat aiolChat) { + aiolChatService.save(aiolChat); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param aiolChat + * @return + */ + @AutoLog(value = "会话-编辑") + @Operation(summary="会话-编辑") + @RequiresPermissions("aiol:aiol_chat:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AiolChat aiolChat) { + aiolChatService.updateById(aiolChat); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "会话-通过id删除") + @Operation(summary="会话-通过id删除") + @RequiresPermissions("aiol:aiol_chat:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + aiolChatService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "会话-批量删除") + @Operation(summary="会话-批量删除") + @RequiresPermissions("aiol:aiol_chat:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.aiolChatService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "会话-通过id查询") + @Operation(summary="会话-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AiolChat aiolChat = aiolChatService.getById(id); + if(aiolChat==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(aiolChat); + } + + /** + * 导出excel + * + * @param request + * @param aiolChat + */ + @RequiresPermissions("aiol:aiol_chat:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AiolChat aiolChat) { + return super.exportXls(request, aiolChat, AiolChat.class, "会话"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("aiol:aiol_chat:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AiolChat.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolChatMemberController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolChatMemberController.java new file mode 100644 index 00000000..adfe293f --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolChatMemberController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.aiol.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.aiol.entity.AiolChatMember; +import org.jeecg.modules.aiol.service.IAiolChatMemberService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 会话用户 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +@Tag(name="会话用户") +@RestController +@RequestMapping("/aiol/aiolChatMember") +@Slf4j +public class AiolChatMemberController extends JeecgController { + @Autowired + private IAiolChatMemberService aiolChatMemberService; + + /** + * 分页列表查询 + * + * @param aiolChatMember + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "会话用户-分页列表查询") + @Operation(summary="会话用户-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AiolChatMember aiolChatMember, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(aiolChatMember, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = aiolChatMemberService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param aiolChatMember + * @return + */ + @AutoLog(value = "会话用户-添加") + @Operation(summary="会话用户-添加") + @RequiresPermissions("aiol:aiol_chat_member:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AiolChatMember aiolChatMember) { + aiolChatMemberService.save(aiolChatMember); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param aiolChatMember + * @return + */ + @AutoLog(value = "会话用户-编辑") + @Operation(summary="会话用户-编辑") + @RequiresPermissions("aiol:aiol_chat_member:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AiolChatMember aiolChatMember) { + aiolChatMemberService.updateById(aiolChatMember); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "会话用户-通过id删除") + @Operation(summary="会话用户-通过id删除") + @RequiresPermissions("aiol:aiol_chat_member:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + aiolChatMemberService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "会话用户-批量删除") + @Operation(summary="会话用户-批量删除") + @RequiresPermissions("aiol:aiol_chat_member:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.aiolChatMemberService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "会话用户-通过id查询") + @Operation(summary="会话用户-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AiolChatMember aiolChatMember = aiolChatMemberService.getById(id); + if(aiolChatMember==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(aiolChatMember); + } + + /** + * 导出excel + * + * @param request + * @param aiolChatMember + */ + @RequiresPermissions("aiol:aiol_chat_member:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AiolChatMember aiolChatMember) { + return super.exportXls(request, aiolChatMember, AiolChatMember.class, "会话用户"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("aiol:aiol_chat_member:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AiolChatMember.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolChatMessageController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolChatMessageController.java new file mode 100644 index 00000000..7f8988e7 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolChatMessageController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.aiol.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.aiol.entity.AiolChatMessage; +import org.jeecg.modules.aiol.service.IAiolChatMessageService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 会话消息 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +@Tag(name="会话消息") +@RestController +@RequestMapping("/aiol/aiolChatMessage") +@Slf4j +public class AiolChatMessageController extends JeecgController { + @Autowired + private IAiolChatMessageService aiolChatMessageService; + + /** + * 分页列表查询 + * + * @param aiolChatMessage + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "会话消息-分页列表查询") + @Operation(summary="会话消息-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AiolChatMessage aiolChatMessage, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(aiolChatMessage, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = aiolChatMessageService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param aiolChatMessage + * @return + */ + @AutoLog(value = "会话消息-添加") + @Operation(summary="会话消息-添加") + @RequiresPermissions("aiol:aiol_chat_message:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AiolChatMessage aiolChatMessage) { + aiolChatMessageService.save(aiolChatMessage); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param aiolChatMessage + * @return + */ + @AutoLog(value = "会话消息-编辑") + @Operation(summary="会话消息-编辑") + @RequiresPermissions("aiol:aiol_chat_message:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AiolChatMessage aiolChatMessage) { + aiolChatMessageService.updateById(aiolChatMessage); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "会话消息-通过id删除") + @Operation(summary="会话消息-通过id删除") + @RequiresPermissions("aiol:aiol_chat_message:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + aiolChatMessageService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "会话消息-批量删除") + @Operation(summary="会话消息-批量删除") + @RequiresPermissions("aiol:aiol_chat_message:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.aiolChatMessageService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "会话消息-通过id查询") + @Operation(summary="会话消息-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AiolChatMessage aiolChatMessage = aiolChatMessageService.getById(id); + if(aiolChatMessage==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(aiolChatMessage); + } + + /** + * 导出excel + * + * @param request + * @param aiolChatMessage + */ + @RequiresPermissions("aiol:aiol_chat_message:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AiolChatMessage aiolChatMessage) { + return super.exportXls(request, aiolChatMessage, AiolChatMessage.class, "会话消息"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("aiol:aiol_chat_message:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AiolChatMessage.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolUserFollowController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolUserFollowController.java new file mode 100644 index 00000000..1fbbc36a --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolUserFollowController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.aiol.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.aiol.entity.AiolUserFollow; +import org.jeecg.modules.aiol.service.IAiolUserFollowService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 关注关系 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +@Tag(name="关注关系") +@RestController +@RequestMapping("/aiol/aiolUserFollow") +@Slf4j +public class AiolUserFollowController extends JeecgController { + @Autowired + private IAiolUserFollowService aiolUserFollowService; + + /** + * 分页列表查询 + * + * @param aiolUserFollow + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "关注关系-分页列表查询") + @Operation(summary="关注关系-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AiolUserFollow aiolUserFollow, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(aiolUserFollow, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = aiolUserFollowService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param aiolUserFollow + * @return + */ + @AutoLog(value = "关注关系-添加") + @Operation(summary="关注关系-添加") + @RequiresPermissions("aiol:aiol_user_follow:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AiolUserFollow aiolUserFollow) { + aiolUserFollowService.save(aiolUserFollow); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param aiolUserFollow + * @return + */ + @AutoLog(value = "关注关系-编辑") + @Operation(summary="关注关系-编辑") + @RequiresPermissions("aiol:aiol_user_follow:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AiolUserFollow aiolUserFollow) { + aiolUserFollowService.updateById(aiolUserFollow); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "关注关系-通过id删除") + @Operation(summary="关注关系-通过id删除") + @RequiresPermissions("aiol:aiol_user_follow:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + aiolUserFollowService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "关注关系-批量删除") + @Operation(summary="关注关系-批量删除") + @RequiresPermissions("aiol:aiol_user_follow:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.aiolUserFollowService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "关注关系-通过id查询") + @Operation(summary="关注关系-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AiolUserFollow aiolUserFollow = aiolUserFollowService.getById(id); + if(aiolUserFollow==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(aiolUserFollow); + } + + /** + * 导出excel + * + * @param request + * @param aiolUserFollow + */ + @RequiresPermissions("aiol:aiol_user_follow:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AiolUserFollow aiolUserFollow) { + return super.exportXls(request, aiolUserFollow, AiolUserFollow.class, "关注关系"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("aiol:aiol_user_follow:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AiolUserFollow.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolChat.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolChat.java new file mode 100644 index 00000000..b161b961 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolChat.java @@ -0,0 +1,80 @@ +package org.jeecg.modules.aiol.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 会话 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +@Data +@TableName("aiol_chat") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="会话") +public class AiolChat implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**会话类型*/ + @Excel(name = "会话类型", width = 15) + @Schema(description = "会话类型") + private java.lang.Integer type; + /**群聊名称*/ + @Excel(name = "群聊名称", width = 15) + @Schema(description = "群聊名称") + private java.lang.String name; + /**群聊头像*/ + @Excel(name = "群聊头像", width = 15) + @Schema(description = "群聊头像") + private java.lang.String avatar; + /**关联id*/ + @Excel(name = "关联id", width = 15) + @Schema(description = "关联id") + private java.lang.String refId; + /**是否全员禁言*/ + @Excel(name = "是否全员禁言", width = 15) + @Schema(description = "是否全员禁言") + private java.lang.Integer izAllMuted; + /**是否显示教师标签*/ + @Excel(name = "是否显示教师标签", width = 15) + @Schema(description = "是否显示教师标签") + private java.lang.Integer showLabel; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolChatMember.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolChatMember.java new file mode 100644 index 00000000..4e442739 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolChatMember.java @@ -0,0 +1,80 @@ +package org.jeecg.modules.aiol.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 会话用户 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +@Data +@TableName("aiol_chat_member") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="会话用户") +public class AiolChatMember implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**会话id*/ + @Excel(name = "会话id", width = 15) + @Schema(description = "会话id") + private java.lang.String chatId; + /**用户id*/ + @Excel(name = "用户id", width = 15) + @Schema(description = "用户id") + private java.lang.String userId; + /**成员角色*/ + @Excel(name = "成员角色", width = 15) + @Schema(description = "成员角色") + private java.lang.Integer role; + /**是否禁言*/ + @Excel(name = "是否禁言", width = 15) + @Schema(description = "是否禁言") + private java.lang.Integer izMuted; + /**是否免打扰*/ + @Excel(name = "是否免打扰", width = 15) + @Schema(description = "是否免打扰") + private java.lang.Integer izNotDisturb; + /**最后已读消息id*/ + @Excel(name = "最后已读消息id", width = 15) + @Schema(description = "最后已读消息id") + private java.lang.Integer lastReadMsgId; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolChatMessage.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolChatMessage.java new file mode 100644 index 00000000..50dd2537 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolChatMessage.java @@ -0,0 +1,88 @@ +package org.jeecg.modules.aiol.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 会话消息 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +@Data +@TableName("aiol_chat_message") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="会话消息") +public class AiolChatMessage implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**会话id*/ + @Excel(name = "会话id", width = 15) + @Schema(description = "会话id") + private java.lang.String chatId; + /**发送者id*/ + @Excel(name = "发送者id", width = 15) + @Schema(description = "发送者id") + private java.lang.String senderId; + /**内容*/ + @Excel(name = "内容", width = 15) + @Schema(description = "内容") + private java.lang.String content; + /**消息类型*/ + @Excel(name = "消息类型", width = 15) + @Schema(description = "消息类型") + private java.lang.Integer messageType; + /**状态*/ + @Excel(name = "状态", width = 15) + @Schema(description = "状态") + private java.lang.Integer status; + /**文件url*/ + @Excel(name = "文件url", width = 15) + @Schema(description = "文件url") + private java.lang.String fileUrl; + /**文件名*/ + @Excel(name = "文件名", width = 15) + @Schema(description = "文件名") + private java.lang.String fileName; + /**文件大小*/ + @Excel(name = "文件大小", width = 15) + @Schema(description = "文件大小") + private java.lang.String fileSize; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolClass.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolClass.java index beda9945..6e9cc95b 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolClass.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolClass.java @@ -20,22 +20,22 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** - * @Description: 班级 + * @Description: aiol_class * @Author: jeecg-boot - * @Date: 2025-09-04 + * @Date: 2025-09-11 * @Version: V1.0 */ @Data @TableName("aiol_class") @Accessors(chain = true) @EqualsAndHashCode(callSuper = false) -@Schema(description="班级") +@Schema(description="aiol_class") public class AiolClass implements Serializable { private static final long serialVersionUID = 1L; - /**主键*/ + /**id*/ @TableId(type = IdType.ASSIGN_ID) - @Schema(description = "主键") + @Schema(description = "id") private java.lang.String id; /**班级名*/ @Excel(name = "班级名", width = 15) @@ -45,6 +45,10 @@ public class AiolClass implements Serializable { @Excel(name = "课程id", width = 15) @Schema(description = "课程id") private java.lang.String courseId; + /**邀请码*/ + @Excel(name = "邀请码", width = 15) + @Schema(description = "邀请码") + private java.lang.String inviteCode; /**创建人*/ @Schema(description = "创建人") private java.lang.String createBy; diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourse.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourse.java index e4bb2766..796d1edb 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourse.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourse.java @@ -22,7 +22,7 @@ import lombok.experimental.Accessors; /** * @Description: 课程 * @Author: jeecg-boot - * @Date: 2025-09-02 + * @Date: 2025-09-11 * @Version: V1.0 */ @Data @@ -125,6 +125,18 @@ public class AiolCourse implements Serializable { @Excel(name = "是否ai伴学模式", width = 15) @Schema(description = "是否ai伴学模式") private java.lang.Integer izAi; + /**离开页面是否暂停视频播放*/ + @Excel(name = "离开页面是否暂停视频播放", width = 15) + @Schema(description = "离开页面是否暂停视频播放") + private java.lang.Integer pauseExit; + /**是否允许倍速播放*/ + @Excel(name = "是否允许倍速播放", width = 15) + @Schema(description = "是否允许倍速播放") + private java.lang.Integer allowSpeed; + /**是否显示字幕*/ + @Excel(name = "是否显示字幕", width = 15) + @Schema(description = "是否显示字幕") + private java.lang.Integer showSubtitle; /**创建人*/ @Schema(description = "创建人") private java.lang.String createBy; diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolUserFollow.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolUserFollow.java new file mode 100644 index 00000000..ee7fcc91 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolUserFollow.java @@ -0,0 +1,64 @@ +package org.jeecg.modules.aiol.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 关注关系 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +@Data +@TableName("aiol_user_follow") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="关注关系") +public class AiolUserFollow implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**关注者id*/ + @Excel(name = "关注者id", width = 15) + @Schema(description = "关注者id") + private java.lang.String followerId; + /**被关注者id*/ + @Excel(name = "被关注者id", width = 15) + @Schema(description = "被关注者id") + private java.lang.String followedId; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolChatMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolChatMapper.java new file mode 100644 index 00000000..c762577a --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolChatMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.aiol.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.aiol.entity.AiolChat; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 会话 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +public interface AiolChatMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolChatMemberMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolChatMemberMapper.java new file mode 100644 index 00000000..4ba988ad --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolChatMemberMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.aiol.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.aiol.entity.AiolChatMember; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 会话用户 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +public interface AiolChatMemberMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolChatMessageMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolChatMessageMapper.java new file mode 100644 index 00000000..ae6bb190 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolChatMessageMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.aiol.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.aiol.entity.AiolChatMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 会话消息 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +public interface AiolChatMessageMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolUserFollowMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolUserFollowMapper.java new file mode 100644 index 00000000..ce1a7771 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolUserFollowMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.aiol.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.aiol.entity.AiolUserFollow; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 关注关系 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +public interface AiolUserFollowMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolChatMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolChatMapper.xml new file mode 100644 index 00000000..8f3b395d --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolChatMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolChatMemberMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolChatMemberMapper.xml new file mode 100644 index 00000000..890d18da --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolChatMemberMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolChatMessageMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolChatMessageMapper.xml new file mode 100644 index 00000000..a0573b45 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolChatMessageMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolUserFollowMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolUserFollowMapper.xml new file mode 100644 index 00000000..1acdd7c6 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolUserFollowMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolChatMemberService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolChatMemberService.java new file mode 100644 index 00000000..36cd03db --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolChatMemberService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.aiol.service; + +import org.jeecg.modules.aiol.entity.AiolChatMember; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 会话用户 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +public interface IAiolChatMemberService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolChatMessageService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolChatMessageService.java new file mode 100644 index 00000000..0b729b8c --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolChatMessageService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.aiol.service; + +import org.jeecg.modules.aiol.entity.AiolChatMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 会话消息 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +public interface IAiolChatMessageService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolChatService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolChatService.java new file mode 100644 index 00000000..050a8267 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolChatService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.aiol.service; + +import org.jeecg.modules.aiol.entity.AiolChat; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 会话 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +public interface IAiolChatService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolUserFollowService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolUserFollowService.java new file mode 100644 index 00000000..dd0cd556 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolUserFollowService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.aiol.service; + +import org.jeecg.modules.aiol.entity.AiolUserFollow; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 关注关系 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +public interface IAiolUserFollowService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolChatMemberServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolChatMemberServiceImpl.java new file mode 100644 index 00000000..45d57d68 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolChatMemberServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.aiol.service.impl; + +import org.jeecg.modules.aiol.entity.AiolChatMember; +import org.jeecg.modules.aiol.mapper.AiolChatMemberMapper; +import org.jeecg.modules.aiol.service.IAiolChatMemberService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 会话用户 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +@Service +public class AiolChatMemberServiceImpl extends ServiceImpl implements IAiolChatMemberService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolChatMessageServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolChatMessageServiceImpl.java new file mode 100644 index 00000000..e6f98b42 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolChatMessageServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.aiol.service.impl; + +import org.jeecg.modules.aiol.entity.AiolChatMessage; +import org.jeecg.modules.aiol.mapper.AiolChatMessageMapper; +import org.jeecg.modules.aiol.service.IAiolChatMessageService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 会话消息 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +@Service +public class AiolChatMessageServiceImpl extends ServiceImpl implements IAiolChatMessageService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolChatServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolChatServiceImpl.java new file mode 100644 index 00000000..98f35693 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolChatServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.aiol.service.impl; + +import org.jeecg.modules.aiol.entity.AiolChat; +import org.jeecg.modules.aiol.mapper.AiolChatMapper; +import org.jeecg.modules.aiol.service.IAiolChatService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 会话 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +@Service +public class AiolChatServiceImpl extends ServiceImpl implements IAiolChatService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolUserFollowServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolUserFollowServiceImpl.java new file mode 100644 index 00000000..8b1a314b --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolUserFollowServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.aiol.service.impl; + +import org.jeecg.modules.aiol.entity.AiolUserFollow; +import org.jeecg.modules.aiol.mapper.AiolUserFollowMapper; +import org.jeecg.modules.aiol.service.IAiolUserFollowService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 关注关系 + * @Author: jeecg-boot + * @Date: 2025-09-11 + * @Version: V1.0 + */ +@Service +public class AiolUserFollowServiceImpl extends ServiceImpl implements IAiolUserFollowService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatForm.vue new file mode 100644 index 00000000..de706d98 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatForm.vue @@ -0,0 +1,113 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatList.vue new file mode 100644 index 00000000..71016160 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatMemberForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatMemberForm.vue new file mode 100644 index 00000000..b491f427 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatMemberForm.vue @@ -0,0 +1,113 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatMemberList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatMemberList.vue new file mode 100644 index 00000000..870dbf95 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatMemberList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatMessageForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatMessageForm.vue new file mode 100644 index 00000000..85564ad8 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatMessageForm.vue @@ -0,0 +1,125 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatMessageList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatMessageList.vue new file mode 100644 index 00000000..235dffec --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolChatMessageList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolUserFollowForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolUserFollowForm.vue new file mode 100644 index 00000000..441ddbaa --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolUserFollowForm.vue @@ -0,0 +1,89 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolUserFollowList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolUserFollowList.vue new file mode 100644 index 00000000..387c3a3d --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolUserFollowList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatData.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatData.ts new file mode 100644 index 00000000..61965dd8 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatData.ts @@ -0,0 +1,34 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '会话类型', + align:"center", + dataIndex: 'type' + }, + { + title: '群聊名称', + align:"center", + dataIndex: 'name' + }, + { + title: '群聊头像', + align:"center", + dataIndex: 'avatar' + }, + { + title: '关联id', + align:"center", + dataIndex: 'refId' + }, + { + title: '是否全员禁言', + align:"center", + dataIndex: 'izAllMuted' + }, + { + title: '是否显示教师标签', + align:"center", + dataIndex: 'showLabel' + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatForm.vue new file mode 100644 index 00000000..1060709f --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatForm.vue @@ -0,0 +1,277 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '会话', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatList.vue new file mode 100644 index 00000000..511f554e --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '会话', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMemberData.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMemberData.ts new file mode 100644 index 00000000..09e66d4e --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMemberData.ts @@ -0,0 +1,34 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '会话id', + align:"center", + dataIndex: 'chatId' + }, + { + title: '用户id', + align:"center", + dataIndex: 'userId' + }, + { + title: '成员角色', + align:"center", + dataIndex: 'role' + }, + { + title: '是否禁言', + align:"center", + dataIndex: 'izMuted' + }, + { + title: '是否免打扰', + align:"center", + dataIndex: 'izNotDisturb' + }, + { + title: '最后已读消息id', + align:"center", + dataIndex: 'lastReadMsgId' + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMemberForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMemberForm.vue new file mode 100644 index 00000000..276c23df --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMemberForm.vue @@ -0,0 +1,278 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '会话用户', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMemberList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMemberList.vue new file mode 100644 index 00000000..bb584603 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMemberList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '会话用户', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMessageData.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMessageData.ts new file mode 100644 index 00000000..f15068aa --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMessageData.ts @@ -0,0 +1,44 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '会话id', + align:"center", + dataIndex: 'chatId' + }, + { + title: '发送者id', + align:"center", + dataIndex: 'senderId' + }, + { + title: '内容', + align:"center", + dataIndex: 'content' + }, + { + title: '消息类型', + align:"center", + dataIndex: 'messageType' + }, + { + title: '状态', + align:"center", + dataIndex: 'status' + }, + { + title: '文件url', + align:"center", + dataIndex: 'fileUrl' + }, + { + title: '文件名', + align:"center", + dataIndex: 'fileName' + }, + { + title: '文件大小', + align:"center", + dataIndex: 'fileSize' + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMessageForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMessageForm.vue new file mode 100644 index 00000000..d2502d20 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMessageForm.vue @@ -0,0 +1,302 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '会话消息', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMessageList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMessageList.vue new file mode 100644 index 00000000..151769bb --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolChatMessageList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '会话消息', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserFollowData.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserFollowData.ts new file mode 100644 index 00000000..84947f93 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserFollowData.ts @@ -0,0 +1,14 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '关注者id', + align:"center", + dataIndex: 'followerId' + }, + { + title: '被关注者id', + align:"center", + dataIndex: 'followedId' + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserFollowForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserFollowForm.vue new file mode 100644 index 00000000..9c069cb0 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserFollowForm.vue @@ -0,0 +1,222 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '关注关系', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserFollowList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserFollowList.vue new file mode 100644 index 00000000..138aebcd --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserFollowList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '关注关系', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChat.api.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChat.api.ts new file mode 100644 index 00000000..c630bffc --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChat.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolChat/list', + save='/aiol/aiolChat/add', + edit='/aiol/aiolChat/edit', + deleteOne = '/aiol/aiolChat/delete', + deleteBatch = '/aiol/aiolChat/deleteBatch', + importExcel = '/aiol/aiolChat/importExcel', + exportXls = '/aiol/aiolChat/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChat.data.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChat.data.ts new file mode 100644 index 00000000..89d4a1e3 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChat.data.ts @@ -0,0 +1,100 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '会话类型', + align:"center", + dataIndex: 'type' + }, + { + title: '群聊名称', + align:"center", + dataIndex: 'name' + }, + { + title: '群聊头像', + align:"center", + dataIndex: 'avatar' + }, + { + title: '关联id', + align:"center", + dataIndex: 'refId' + }, + { + title: '是否全员禁言', + align:"center", + dataIndex: 'izAllMuted' + }, + { + title: '是否显示教师标签', + align:"center", + dataIndex: 'showLabel' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '会话类型', + field: 'type', + component: 'InputNumber', + }, + { + label: '群聊名称', + field: 'name', + component: 'Input', + }, + { + label: '群聊头像', + field: 'avatar', + component: 'Input', + }, + { + label: '关联id', + field: 'refId', + component: 'Input', + }, + { + label: '是否全员禁言', + field: 'izAllMuted', + component: 'InputNumber', + }, + { + label: '是否显示教师标签', + field: 'showLabel', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + type: {title: '会话类型',order: 0,view: 'number', type: 'number',}, + name: {title: '群聊名称',order: 1,view: 'text', type: 'string',}, + avatar: {title: '群聊头像',order: 2,view: 'text', type: 'string',}, + refId: {title: '关联id',order: 3,view: 'text', type: 'string',}, + izAllMuted: {title: '是否全员禁言',order: 4,view: 'number', type: 'number',}, + showLabel: {title: '是否显示教师标签',order: 5,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatList.vue new file mode 100644 index 00000000..ffbbe768 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMember.api.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMember.api.ts new file mode 100644 index 00000000..8035f383 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMember.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolChatMember/list', + save='/aiol/aiolChatMember/add', + edit='/aiol/aiolChatMember/edit', + deleteOne = '/aiol/aiolChatMember/delete', + deleteBatch = '/aiol/aiolChatMember/deleteBatch', + importExcel = '/aiol/aiolChatMember/importExcel', + exportXls = '/aiol/aiolChatMember/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMember.data.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMember.data.ts new file mode 100644 index 00000000..e8b4ae7a --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMember.data.ts @@ -0,0 +1,100 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '会话id', + align:"center", + dataIndex: 'chatId' + }, + { + title: '用户id', + align:"center", + dataIndex: 'userId' + }, + { + title: '成员角色', + align:"center", + dataIndex: 'role' + }, + { + title: '是否禁言', + align:"center", + dataIndex: 'izMuted' + }, + { + title: '是否免打扰', + align:"center", + dataIndex: 'izNotDisturb' + }, + { + title: '最后已读消息id', + align:"center", + dataIndex: 'lastReadMsgId' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '会话id', + field: 'chatId', + component: 'Input', + }, + { + label: '用户id', + field: 'userId', + component: 'Input', + }, + { + label: '成员角色', + field: 'role', + component: 'InputNumber', + }, + { + label: '是否禁言', + field: 'izMuted', + component: 'InputNumber', + }, + { + label: '是否免打扰', + field: 'izNotDisturb', + component: 'InputNumber', + }, + { + label: '最后已读消息id', + field: 'lastReadMsgId', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + chatId: {title: '会话id',order: 0,view: 'text', type: 'string',}, + userId: {title: '用户id',order: 1,view: 'text', type: 'string',}, + role: {title: '成员角色',order: 2,view: 'number', type: 'number',}, + izMuted: {title: '是否禁言',order: 3,view: 'number', type: 'number',}, + izNotDisturb: {title: '是否免打扰',order: 4,view: 'number', type: 'number',}, + lastReadMsgId: {title: '最后已读消息id',order: 5,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMemberList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMemberList.vue new file mode 100644 index 00000000..6d01fd97 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMemberList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMessage.api.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMessage.api.ts new file mode 100644 index 00000000..05805be8 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMessage.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolChatMessage/list', + save='/aiol/aiolChatMessage/add', + edit='/aiol/aiolChatMessage/edit', + deleteOne = '/aiol/aiolChatMessage/delete', + deleteBatch = '/aiol/aiolChatMessage/deleteBatch', + importExcel = '/aiol/aiolChatMessage/importExcel', + exportXls = '/aiol/aiolChatMessage/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMessage.data.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMessage.data.ts new file mode 100644 index 00000000..d717b06a --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMessage.data.ts @@ -0,0 +1,122 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '会话id', + align:"center", + dataIndex: 'chatId' + }, + { + title: '发送者id', + align:"center", + dataIndex: 'senderId' + }, + { + title: '内容', + align:"center", + dataIndex: 'content' + }, + { + title: '消息类型', + align:"center", + dataIndex: 'messageType' + }, + { + title: '状态', + align:"center", + dataIndex: 'status' + }, + { + title: '文件url', + align:"center", + dataIndex: 'fileUrl' + }, + { + title: '文件名', + align:"center", + dataIndex: 'fileName' + }, + { + title: '文件大小', + align:"center", + dataIndex: 'fileSize' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '会话id', + field: 'chatId', + component: 'Input', + }, + { + label: '发送者id', + field: 'senderId', + component: 'Input', + }, + { + label: '内容', + field: 'content', + component: 'Input', + }, + { + label: '消息类型', + field: 'messageType', + component: 'InputNumber', + }, + { + label: '状态', + field: 'status', + component: 'InputNumber', + }, + { + label: '文件url', + field: 'fileUrl', + component: 'Input', + }, + { + label: '文件名', + field: 'fileName', + component: 'Input', + }, + { + label: '文件大小', + field: 'fileSize', + component: 'Input', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + chatId: {title: '会话id',order: 0,view: 'text', type: 'string',}, + senderId: {title: '发送者id',order: 1,view: 'text', type: 'string',}, + content: {title: '内容',order: 2,view: 'text', type: 'string',}, + messageType: {title: '消息类型',order: 3,view: 'number', type: 'number',}, + status: {title: '状态',order: 4,view: 'number', type: 'number',}, + fileUrl: {title: '文件url',order: 5,view: 'text', type: 'string',}, + fileName: {title: '文件名',order: 6,view: 'text', type: 'string',}, + fileSize: {title: '文件大小',order: 7,view: 'text', type: 'string',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMessageList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMessageList.vue new file mode 100644 index 00000000..808e3d00 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolChatMessageList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserFollow.api.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserFollow.api.ts new file mode 100644 index 00000000..5446b88c --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserFollow.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolUserFollow/list', + save='/aiol/aiolUserFollow/add', + edit='/aiol/aiolUserFollow/edit', + deleteOne = '/aiol/aiolUserFollow/delete', + deleteBatch = '/aiol/aiolUserFollow/deleteBatch', + importExcel = '/aiol/aiolUserFollow/importExcel', + exportXls = '/aiol/aiolUserFollow/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserFollow.data.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserFollow.data.ts new file mode 100644 index 00000000..9fb3e173 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserFollow.data.ts @@ -0,0 +1,56 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '关注者id', + align:"center", + dataIndex: 'followerId' + }, + { + title: '被关注者id', + align:"center", + dataIndex: 'followedId' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '关注者id', + field: 'followerId', + component: 'Input', + }, + { + label: '被关注者id', + field: 'followedId', + component: 'Input', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + followerId: {title: '关注者id',order: 0,view: 'text', type: 'string',}, + followedId: {title: '被关注者id',order: 1,view: 'text', type: 'string',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserFollowList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserFollowList.vue new file mode 100644 index 00000000..796245a0 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserFollowList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250911_1__menu_insert_AiolChat.sql b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250911_1__menu_insert_AiolChat.sql new file mode 100644 index 00000000..a8dec869 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250911_1__menu_insert_AiolChat.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025091109026120430', NULL, '会话', '/aiol/aiolChatList', 'aiol/AiolChatList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-09-11 09:02:43', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026120431', '2025091109026120430', '添加会话', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:43', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026120432', '2025091109026120430', '编辑会话', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:43', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026120433', '2025091109026120430', '删除会话', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:43', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026120434', '2025091109026120430', '批量删除会话', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:43', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026120435', '2025091109026120430', '导出excel_会话', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:43', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026120436', '2025091109026120430', '导入excel_会话', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:43', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250911_1__menu_insert_AiolChatMember.sql b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250911_1__menu_insert_AiolChatMember.sql new file mode 100644 index 00000000..84e437cf --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250911_1__menu_insert_AiolChatMember.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025091109026150480', NULL, '会话用户', '/aiol/aiolChatMemberList', 'aiol/AiolChatMemberList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-09-11 09:02:48', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026150481', '2025091109026150480', '添加会话用户', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_member:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:48', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026150482', '2025091109026150480', '编辑会话用户', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_member:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:48', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026150483', '2025091109026150480', '删除会话用户', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_member:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:48', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026150484', '2025091109026150480', '批量删除会话用户', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_member:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:48', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026150485', '2025091109026150480', '导出excel_会话用户', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_member:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:48', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026150486', '2025091109026150480', '导入excel_会话用户', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_member:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:48', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250911_1__menu_insert_AiolChatMessage.sql b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250911_1__menu_insert_AiolChatMessage.sql new file mode 100644 index 00000000..f8d334e1 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250911_1__menu_insert_AiolChatMessage.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025091109021940530', NULL, '会话消息', '/aiol/aiolChatMessageList', 'aiol/AiolChatMessageList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-09-11 09:02:53', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109021940531', '2025091109021940530', '添加会话消息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_message:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:53', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109021940532', '2025091109021940530', '编辑会话消息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_message:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:53', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109021940533', '2025091109021940530', '删除会话消息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_message:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:53', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109021940534', '2025091109021940530', '批量删除会话消息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_message:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:53', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109021940535', '2025091109021940530', '导出excel_会话消息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_message:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:53', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109021940536', '2025091109021940530', '导入excel_会话消息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_message:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:53', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250911_1__menu_insert_AiolUserFollow.sql b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250911_1__menu_insert_AiolUserFollow.sql new file mode 100644 index 00000000..698dbf61 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250911_1__menu_insert_AiolUserFollow.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025091109029930370', NULL, '关注关系', '/aiol/aiolUserFollowList', 'aiol/AiolUserFollowList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-09-11 09:02:37', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109029930371', '2025091109029930370', '添加关注关系', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_follow:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:37', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109029930372', '2025091109029930370', '编辑关注关系', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_follow:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:37', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109029930373', '2025091109029930370', '删除关注关系', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_follow:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:37', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109029930374', '2025091109029930370', '批量删除关注关系', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_follow:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:37', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109029930375', '2025091109029930370', '导出excel_关注关系', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_follow:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:37', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109029930376', '2025091109029930370', '导入excel_关注关系', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_follow:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:37', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatForm.vue new file mode 100644 index 00000000..a06b9208 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatMemberForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatMemberForm.vue new file mode 100644 index 00000000..9d63a8c7 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatMemberForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatMemberModal.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatMemberModal.vue new file mode 100644 index 00000000..380f7b12 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatMemberModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatMessageForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatMessageForm.vue new file mode 100644 index 00000000..bf8aa229 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatMessageForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatMessageModal.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatMessageModal.vue new file mode 100644 index 00000000..2e30f781 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatMessageModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatModal.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatModal.vue new file mode 100644 index 00000000..03b12e9e --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolChatModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolUserFollowForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolUserFollowForm.vue new file mode 100644 index 00000000..fefcb2d5 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolUserFollowForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolUserFollowModal.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolUserFollowModal.vue new file mode 100644 index 00000000..0250e3a8 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolUserFollowModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml index bce4cf2d..438b23db 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml @@ -151,10 +151,10 @@ spring: slow-sql-millis: 5000 datasource: master: -# url: jdbc:mysql://127.0.0.1:33061/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai - url: jdbc:mysql://103.40.14.23:25523/aiol?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + url: jdbc:mysql://127.0.0.1:33061/aiol2?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + # url: jdbc:mysql://103.40.14.23:25523/aiol?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root - password: root + password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver # 多数据源配置 #multi-datasource1: diff --git a/jeecgboot-vue3/src/views/aiol/AiolChat.api.ts b/jeecgboot-vue3/src/views/aiol/AiolChat.api.ts new file mode 100644 index 00000000..c630bffc --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolChat.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolChat/list', + save='/aiol/aiolChat/add', + edit='/aiol/aiolChat/edit', + deleteOne = '/aiol/aiolChat/delete', + deleteBatch = '/aiol/aiolChat/deleteBatch', + importExcel = '/aiol/aiolChat/importExcel', + exportXls = '/aiol/aiolChat/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/aiol/AiolChat.data.ts b/jeecgboot-vue3/src/views/aiol/AiolChat.data.ts new file mode 100644 index 00000000..89d4a1e3 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolChat.data.ts @@ -0,0 +1,100 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '会话类型', + align:"center", + dataIndex: 'type' + }, + { + title: '群聊名称', + align:"center", + dataIndex: 'name' + }, + { + title: '群聊头像', + align:"center", + dataIndex: 'avatar' + }, + { + title: '关联id', + align:"center", + dataIndex: 'refId' + }, + { + title: '是否全员禁言', + align:"center", + dataIndex: 'izAllMuted' + }, + { + title: '是否显示教师标签', + align:"center", + dataIndex: 'showLabel' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '会话类型', + field: 'type', + component: 'InputNumber', + }, + { + label: '群聊名称', + field: 'name', + component: 'Input', + }, + { + label: '群聊头像', + field: 'avatar', + component: 'Input', + }, + { + label: '关联id', + field: 'refId', + component: 'Input', + }, + { + label: '是否全员禁言', + field: 'izAllMuted', + component: 'InputNumber', + }, + { + label: '是否显示教师标签', + field: 'showLabel', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + type: {title: '会话类型',order: 0,view: 'number', type: 'number',}, + name: {title: '群聊名称',order: 1,view: 'text', type: 'string',}, + avatar: {title: '群聊头像',order: 2,view: 'text', type: 'string',}, + refId: {title: '关联id',order: 3,view: 'text', type: 'string',}, + izAllMuted: {title: '是否全员禁言',order: 4,view: 'number', type: 'number',}, + showLabel: {title: '是否显示教师标签',order: 5,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolChatList.vue b/jeecgboot-vue3/src/views/aiol/AiolChatList.vue new file mode 100644 index 00000000..ffbbe768 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolChatList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolChatMember.api.ts b/jeecgboot-vue3/src/views/aiol/AiolChatMember.api.ts new file mode 100644 index 00000000..8035f383 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolChatMember.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolChatMember/list', + save='/aiol/aiolChatMember/add', + edit='/aiol/aiolChatMember/edit', + deleteOne = '/aiol/aiolChatMember/delete', + deleteBatch = '/aiol/aiolChatMember/deleteBatch', + importExcel = '/aiol/aiolChatMember/importExcel', + exportXls = '/aiol/aiolChatMember/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/aiol/AiolChatMember.data.ts b/jeecgboot-vue3/src/views/aiol/AiolChatMember.data.ts new file mode 100644 index 00000000..e8b4ae7a --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolChatMember.data.ts @@ -0,0 +1,100 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '会话id', + align:"center", + dataIndex: 'chatId' + }, + { + title: '用户id', + align:"center", + dataIndex: 'userId' + }, + { + title: '成员角色', + align:"center", + dataIndex: 'role' + }, + { + title: '是否禁言', + align:"center", + dataIndex: 'izMuted' + }, + { + title: '是否免打扰', + align:"center", + dataIndex: 'izNotDisturb' + }, + { + title: '最后已读消息id', + align:"center", + dataIndex: 'lastReadMsgId' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '会话id', + field: 'chatId', + component: 'Input', + }, + { + label: '用户id', + field: 'userId', + component: 'Input', + }, + { + label: '成员角色', + field: 'role', + component: 'InputNumber', + }, + { + label: '是否禁言', + field: 'izMuted', + component: 'InputNumber', + }, + { + label: '是否免打扰', + field: 'izNotDisturb', + component: 'InputNumber', + }, + { + label: '最后已读消息id', + field: 'lastReadMsgId', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + chatId: {title: '会话id',order: 0,view: 'text', type: 'string',}, + userId: {title: '用户id',order: 1,view: 'text', type: 'string',}, + role: {title: '成员角色',order: 2,view: 'number', type: 'number',}, + izMuted: {title: '是否禁言',order: 3,view: 'number', type: 'number',}, + izNotDisturb: {title: '是否免打扰',order: 4,view: 'number', type: 'number',}, + lastReadMsgId: {title: '最后已读消息id',order: 5,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolChatMemberList.vue b/jeecgboot-vue3/src/views/aiol/AiolChatMemberList.vue new file mode 100644 index 00000000..6d01fd97 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolChatMemberList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolChatMessage.api.ts b/jeecgboot-vue3/src/views/aiol/AiolChatMessage.api.ts new file mode 100644 index 00000000..05805be8 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolChatMessage.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolChatMessage/list', + save='/aiol/aiolChatMessage/add', + edit='/aiol/aiolChatMessage/edit', + deleteOne = '/aiol/aiolChatMessage/delete', + deleteBatch = '/aiol/aiolChatMessage/deleteBatch', + importExcel = '/aiol/aiolChatMessage/importExcel', + exportXls = '/aiol/aiolChatMessage/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/aiol/AiolChatMessage.data.ts b/jeecgboot-vue3/src/views/aiol/AiolChatMessage.data.ts new file mode 100644 index 00000000..d717b06a --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolChatMessage.data.ts @@ -0,0 +1,122 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '会话id', + align:"center", + dataIndex: 'chatId' + }, + { + title: '发送者id', + align:"center", + dataIndex: 'senderId' + }, + { + title: '内容', + align:"center", + dataIndex: 'content' + }, + { + title: '消息类型', + align:"center", + dataIndex: 'messageType' + }, + { + title: '状态', + align:"center", + dataIndex: 'status' + }, + { + title: '文件url', + align:"center", + dataIndex: 'fileUrl' + }, + { + title: '文件名', + align:"center", + dataIndex: 'fileName' + }, + { + title: '文件大小', + align:"center", + dataIndex: 'fileSize' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '会话id', + field: 'chatId', + component: 'Input', + }, + { + label: '发送者id', + field: 'senderId', + component: 'Input', + }, + { + label: '内容', + field: 'content', + component: 'Input', + }, + { + label: '消息类型', + field: 'messageType', + component: 'InputNumber', + }, + { + label: '状态', + field: 'status', + component: 'InputNumber', + }, + { + label: '文件url', + field: 'fileUrl', + component: 'Input', + }, + { + label: '文件名', + field: 'fileName', + component: 'Input', + }, + { + label: '文件大小', + field: 'fileSize', + component: 'Input', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + chatId: {title: '会话id',order: 0,view: 'text', type: 'string',}, + senderId: {title: '发送者id',order: 1,view: 'text', type: 'string',}, + content: {title: '内容',order: 2,view: 'text', type: 'string',}, + messageType: {title: '消息类型',order: 3,view: 'number', type: 'number',}, + status: {title: '状态',order: 4,view: 'number', type: 'number',}, + fileUrl: {title: '文件url',order: 5,view: 'text', type: 'string',}, + fileName: {title: '文件名',order: 6,view: 'text', type: 'string',}, + fileSize: {title: '文件大小',order: 7,view: 'text', type: 'string',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolChatMessageList.vue b/jeecgboot-vue3/src/views/aiol/AiolChatMessageList.vue new file mode 100644 index 00000000..808e3d00 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolChatMessageList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolClass.data.ts b/jeecgboot-vue3/src/views/aiol/AiolClass.data.ts index 3639e92c..82b47ba5 100644 --- a/jeecgboot-vue3/src/views/aiol/AiolClass.data.ts +++ b/jeecgboot-vue3/src/views/aiol/AiolClass.data.ts @@ -15,6 +15,11 @@ export const columns: BasicColumn[] = [ align:"center", dataIndex: 'courseId' }, + { + title: '邀请码', + align:"center", + dataIndex: 'inviteCode' + }, ]; //查询数据 export const searchFormSchema: FormSchema[] = [ @@ -30,6 +35,11 @@ export const formSchema: FormSchema[] = [ label: '课程id', field: 'courseId', component: 'Input', + }, + { + label: '邀请码', + field: 'inviteCode', + component: 'Input', }, // TODO 主键隐藏字段,目前写死为ID { @@ -44,6 +54,7 @@ export const formSchema: FormSchema[] = [ export const superQuerySchema = { name: {title: '班级名',order: 0,view: 'text', type: 'string',}, courseId: {title: '课程id',order: 1,view: 'text', type: 'string',}, + inviteCode: {title: '邀请码',order: 2,view: 'text', type: 'string',}, }; /** diff --git a/jeecgboot-vue3/src/views/aiol/AiolClassList.vue b/jeecgboot-vue3/src/views/aiol/AiolClassList.vue index 8536d94c..6ca75597 100644 --- a/jeecgboot-vue3/src/views/aiol/AiolClassList.vue +++ b/jeecgboot-vue3/src/views/aiol/AiolClassList.vue @@ -61,7 +61,7 @@ //注册table数据 const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({ tableProps:{ - title: '班级', + title: 'aiol_class', api: list, columns, canResize:true, @@ -91,7 +91,7 @@ }, }, exportConfig: { - name:"班级", + name:"aiol_class", url: getExportUrl, params: queryParam, }, diff --git a/jeecgboot-vue3/src/views/aiol/AiolCourse.data.ts b/jeecgboot-vue3/src/views/aiol/AiolCourse.data.ts index cf66f477..d10e62ab 100644 --- a/jeecgboot-vue3/src/views/aiol/AiolCourse.data.ts +++ b/jeecgboot-vue3/src/views/aiol/AiolCourse.data.ts @@ -106,6 +106,21 @@ export const columns: BasicColumn[] = [ align:"center", dataIndex: 'izAi' }, + { + title: '离开页面是否暂停视频播放', + align:"center", + dataIndex: 'pauseExit' + }, + { + title: '是否允许倍速播放', + align:"center", + dataIndex: 'allowSpeed' + }, + { + title: '是否显示字幕', + align:"center", + dataIndex: 'showSubtitle' + }, ]; //查询数据 export const searchFormSchema: FormSchema[] = [ @@ -238,6 +253,21 @@ export const formSchema: FormSchema[] = [ label: '是否ai伴学模式', field: 'izAi', component: 'InputNumber', + }, + { + label: '离开页面是否暂停视频播放', + field: 'pauseExit', + component: 'InputNumber', + }, + { + label: '是否允许倍速播放', + field: 'allowSpeed', + component: 'InputNumber', + }, + { + label: '是否显示字幕', + field: 'showSubtitle', + component: 'InputNumber', }, // TODO 主键隐藏字段,目前写死为ID { @@ -270,6 +300,9 @@ export const superQuerySchema = { 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',}, + pauseExit: {title: '离开页面是否暂停视频播放',order: 20,view: 'number', type: 'number',}, + allowSpeed: {title: '是否允许倍速播放',order: 21,view: 'number', type: 'number',}, + showSubtitle: {title: '是否显示字幕',order: 22,view: 'number', type: 'number',}, }; /** diff --git a/jeecgboot-vue3/src/views/aiol/AiolUserFollow.api.ts b/jeecgboot-vue3/src/views/aiol/AiolUserFollow.api.ts new file mode 100644 index 00000000..5446b88c --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolUserFollow.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolUserFollow/list', + save='/aiol/aiolUserFollow/add', + edit='/aiol/aiolUserFollow/edit', + deleteOne = '/aiol/aiolUserFollow/delete', + deleteBatch = '/aiol/aiolUserFollow/deleteBatch', + importExcel = '/aiol/aiolUserFollow/importExcel', + exportXls = '/aiol/aiolUserFollow/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/aiol/AiolUserFollow.data.ts b/jeecgboot-vue3/src/views/aiol/AiolUserFollow.data.ts new file mode 100644 index 00000000..9fb3e173 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolUserFollow.data.ts @@ -0,0 +1,56 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '关注者id', + align:"center", + dataIndex: 'followerId' + }, + { + title: '被关注者id', + align:"center", + dataIndex: 'followedId' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '关注者id', + field: 'followerId', + component: 'Input', + }, + { + label: '被关注者id', + field: 'followedId', + component: 'Input', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + followerId: {title: '关注者id',order: 0,view: 'text', type: 'string',}, + followedId: {title: '被关注者id',order: 1,view: 'text', type: 'string',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolUserFollowList.vue b/jeecgboot-vue3/src/views/aiol/AiolUserFollowList.vue new file mode 100644 index 00000000..796245a0 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolUserFollowList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/V20250911_1__menu_insert_AiolChat.sql b/jeecgboot-vue3/src/views/aiol/V20250911_1__menu_insert_AiolChat.sql new file mode 100644 index 00000000..a8dec869 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/V20250911_1__menu_insert_AiolChat.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025091109026120430', NULL, '会话', '/aiol/aiolChatList', 'aiol/AiolChatList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-09-11 09:02:43', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026120431', '2025091109026120430', '添加会话', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:43', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026120432', '2025091109026120430', '编辑会话', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:43', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026120433', '2025091109026120430', '删除会话', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:43', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026120434', '2025091109026120430', '批量删除会话', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:43', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026120435', '2025091109026120430', '导出excel_会话', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:43', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026120436', '2025091109026120430', '导入excel_会话', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:43', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/V20250911_1__menu_insert_AiolChatMember.sql b/jeecgboot-vue3/src/views/aiol/V20250911_1__menu_insert_AiolChatMember.sql new file mode 100644 index 00000000..84e437cf --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/V20250911_1__menu_insert_AiolChatMember.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025091109026150480', NULL, '会话用户', '/aiol/aiolChatMemberList', 'aiol/AiolChatMemberList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-09-11 09:02:48', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026150481', '2025091109026150480', '添加会话用户', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_member:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:48', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026150482', '2025091109026150480', '编辑会话用户', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_member:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:48', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026150483', '2025091109026150480', '删除会话用户', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_member:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:48', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026150484', '2025091109026150480', '批量删除会话用户', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_member:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:48', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026150485', '2025091109026150480', '导出excel_会话用户', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_member:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:48', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109026150486', '2025091109026150480', '导入excel_会话用户', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_member:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:48', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/V20250911_1__menu_insert_AiolChatMessage.sql b/jeecgboot-vue3/src/views/aiol/V20250911_1__menu_insert_AiolChatMessage.sql new file mode 100644 index 00000000..f8d334e1 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/V20250911_1__menu_insert_AiolChatMessage.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025091109021940530', NULL, '会话消息', '/aiol/aiolChatMessageList', 'aiol/AiolChatMessageList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-09-11 09:02:53', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109021940531', '2025091109021940530', '添加会话消息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_message:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:53', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109021940532', '2025091109021940530', '编辑会话消息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_message:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:53', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109021940533', '2025091109021940530', '删除会话消息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_message:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:53', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109021940534', '2025091109021940530', '批量删除会话消息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_message:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:53', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109021940535', '2025091109021940530', '导出excel_会话消息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_message:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:53', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109021940536', '2025091109021940530', '导入excel_会话消息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_chat_message:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:53', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/V20250911_1__menu_insert_AiolUserFollow.sql b/jeecgboot-vue3/src/views/aiol/V20250911_1__menu_insert_AiolUserFollow.sql new file mode 100644 index 00000000..698dbf61 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/V20250911_1__menu_insert_AiolUserFollow.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025091109029930370', NULL, '关注关系', '/aiol/aiolUserFollowList', 'aiol/AiolUserFollowList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-09-11 09:02:37', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109029930371', '2025091109029930370', '添加关注关系', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_follow:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:37', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109029930372', '2025091109029930370', '编辑关注关系', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_follow:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:37', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109029930373', '2025091109029930370', '删除关注关系', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_follow:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:37', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109029930374', '2025091109029930370', '批量删除关注关系', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_follow:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:37', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109029930375', '2025091109029930370', '导出excel_关注关系', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_follow:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:37', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025091109029930376', '2025091109029930370', '导入excel_关注关系', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_follow:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-09-11 09:02:37', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolChatForm.vue b/jeecgboot-vue3/src/views/aiol/components/AiolChatForm.vue new file mode 100644 index 00000000..a06b9208 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolChatForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolChatMemberForm.vue b/jeecgboot-vue3/src/views/aiol/components/AiolChatMemberForm.vue new file mode 100644 index 00000000..9d63a8c7 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolChatMemberForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolChatMemberModal.vue b/jeecgboot-vue3/src/views/aiol/components/AiolChatMemberModal.vue new file mode 100644 index 00000000..380f7b12 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolChatMemberModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolChatMessageForm.vue b/jeecgboot-vue3/src/views/aiol/components/AiolChatMessageForm.vue new file mode 100644 index 00000000..bf8aa229 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolChatMessageForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolChatMessageModal.vue b/jeecgboot-vue3/src/views/aiol/components/AiolChatMessageModal.vue new file mode 100644 index 00000000..2e30f781 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolChatMessageModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolChatModal.vue b/jeecgboot-vue3/src/views/aiol/components/AiolChatModal.vue new file mode 100644 index 00000000..03b12e9e --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolChatModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolUserFollowForm.vue b/jeecgboot-vue3/src/views/aiol/components/AiolUserFollowForm.vue new file mode 100644 index 00000000..fefcb2d5 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolUserFollowForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolUserFollowModal.vue b/jeecgboot-vue3/src/views/aiol/components/AiolUserFollowModal.vue new file mode 100644 index 00000000..0250e3a8 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolUserFollowModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file