From 0ab014198a8b4e40fa26da394373a4bcdb571148 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: 星期六, 06 七月 2024 17:23:15 +0800
Subject: [PATCH] 增加:群聊业务
---
ard-work/src/main/java/com/ruoyi/call/compare/ArdCallSessionUserComparator.java | 18
ard-work/src/main/java/com/ruoyi/call/domain/ArdCallGroup.java | 83 +
ard-work/src/main/java/com/ruoyi/call/service/IArdCallHistoryService.java | 61 +
ard-work/src/main/java/com/ruoyi/call/controller/ArdCallSessionUserController.java | 101 +
ard-work/src/main/java/com/ruoyi/call/domain/ArdCallGroupUser.java | 80 +
ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java | 152 ++
ard-work/src/main/resources/mapper/call/ArdCallGroupUserMapper.xml | 108 +
ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallSessionMapper.java | 62 +
ard-work/src/main/java/com/ruoyi/call/domain/ArdCallSessionUser.java | 107 +
ard-work/src/main/java/com/ruoyi/call/controller/ArdCallSessionController.java | 93 +
ard-work/src/main/java/com/ruoyi/call/service/IArdCallUnreadMessagesService.java | 70 +
ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallGroupMapper.java | 61 +
ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallSessionUserMapper.java | 68 +
ard-work/src/main/java/com/ruoyi/call/controller/ArdCallGroupUserController.java | 124 ++
ard-work/src/main/java/com/ruoyi/call/controller/ArdCallHistoryController.java | 88 +
ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallGroupUserMapper.java | 84 +
ard-work/src/main/java/com/ruoyi/call/service/IArdCallSessionService.java | 72 +
ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupUserServiceImpl.java | 167 ++
ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionServiceImpl.java | 174 +++
ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java | 19
ard-work/src/main/java/com/ruoyi/call/domain/ArdCallHistory.java | 104 +
ard-work/src/main/java/com/ruoyi/call/service/IArdCallGroupUserService.java | 97 +
ard-work/src/main/resources/mapper/call/ArdCallSessionMapper.xml | 81 +
ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallUnreadMessagesServiceImpl.java | 108 +
ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java | 32
ard-work/src/main/java/com/ruoyi/call/service/IArdCallGroupService.java | 61 +
ard-work/src/main/java/com/ruoyi/call/controller/ArdCallGroupController.java | 93 +
ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallHistoryMapper.java | 72 +
ard-work/src/main/java/com/ruoyi/call/domain/ArdCallSession.java | 86 +
ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupServiceImpl.java | 122 ++
ard-work/src/main/resources/mapper/call/ArdCallHistoryMapper.xml | 114 ++
ard-work/src/main/resources/mapper/call/ArdCallSessionUserMapper.xml | 94 +
ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallUnreadMessagesMapper.java | 68 +
ard-work/src/main/resources/mapper/call/ArdCallUnreadMessagesMapper.xml | 74 +
ard-work/src/main/resources/mapper/call/ArdCallGroupMapper.xml | 82 +
ard-work/src/main/java/com/ruoyi/call/domain/ArdCallUnreadMessages.java | 66 +
ard-work/src/main/java/com/ruoyi/call/service/IArdCallSessionUserService.java | 80 +
ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionUserServiceImpl.java | 147 ++
38 files changed, 3,353 insertions(+), 20 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/call/compare/ArdCallSessionUserComparator.java b/ard-work/src/main/java/com/ruoyi/call/compare/ArdCallSessionUserComparator.java
new file mode 100644
index 0000000..85c075f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/compare/ArdCallSessionUserComparator.java
@@ -0,0 +1,18 @@
+package com.ruoyi.call.compare;
+
+import com.ruoyi.call.domain.ArdCallSessionUser;
+import org.springframework.stereotype.Component;
+
+import java.util.Comparator;
+import java.util.Date;
+@Component
+public class ArdCallSessionUserComparator implements Comparator<ArdCallSessionUser> {
+
+ @Override
+ public int compare(ArdCallSessionUser o1, ArdCallSessionUser o2) {
+ Date createTime1 = o1.getArdCallHistory().getCreateTime();
+ Date createTime2 = o2.getArdCallHistory().getCreateTime();
+ // 鏍规嵁 createTime 杩涜姣旇緝
+ return createTime2.compareTo(createTime1);
+ }
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallGroupController.java b/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallGroupController.java
new file mode 100644
index 0000000..7a9e641
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallGroupController.java
@@ -0,0 +1,93 @@
+package com.ruoyi.call.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.ruoyi.common.annotation.Anonymous;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.call.domain.ArdCallGroup;
+import com.ruoyi.call.service.IArdCallGroupService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 浼氳瘽缇ょ粍Controller
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+@Api(tags = "缇よ亰-缇ょ粍鎺ュ彛")
+@RestController
+@RequestMapping("/call/group")
+@Anonymous
+public class ArdCallGroupController extends BaseController {
+ @Autowired
+ private IArdCallGroupService ardCallGroupService;
+
+ /**
+ * 鏌ヨ缇ょ粍鍒楄〃
+ */
+ @ApiOperation("鏌ヨ缇ょ粍鍒楄〃")
+ @ApiOperationSupport(ignoreParameters = {"ardCallGroupUsers","userIds","params"})
+ @GetMapping("/list")
+ public TableDataInfo list(ArdCallGroup ardCallGroup) {
+ startPage();
+ List<ArdCallGroup> list = ardCallGroupService.selectArdCallGroupList(ardCallGroup);
+ return getDataTable(list);
+ }
+
+
+ /**
+ * 鑾峰彇缇ょ粍璇︾粏淇℃伅
+ */
+ @ApiOperation("鑾峰彇缇ょ粍璇︾粏淇℃伅")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") String id) {
+ return success(ardCallGroupService.selectArdCallGroupById(id));
+ }
+
+ /**
+ * 鏂板缇ょ粍
+ */
+ @ApiOperation("鏂板缇ょ粍")
+ @ApiOperationSupport(includeParameters = {"param.userIds","param.name"})
+ @PostMapping
+ public AjaxResult add(@RequestBody ArdCallGroup ardCallGroup) {
+ return success(ardCallGroupService.insertArdCallGroup(ardCallGroup));
+ }
+
+ /**
+ * 淇敼缇ょ粍
+ */
+ @ApiOperation("淇敼缇ょ粍")
+ @PutMapping
+ public AjaxResult edit(@RequestBody ArdCallGroup ardCallGroup) {
+ return toAjax(ardCallGroupService.updateArdCallGroup(ardCallGroup));
+ }
+
+ /**
+ * 鍒犻櫎缇ょ粍
+ */
+ @ApiOperation("鍒犻櫎缇ょ粍")
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable String[] ids) {
+ return toAjax(ardCallGroupService.deleteArdCallGroupByIds(ids));
+ }
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallGroupUserController.java b/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallGroupUserController.java
new file mode 100644
index 0000000..607c2d7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallGroupUserController.java
@@ -0,0 +1,124 @@
+package com.ruoyi.call.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.annotation.Anonymous;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.call.domain.ArdCallGroupUser;
+import com.ruoyi.call.service.IArdCallGroupUserService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 缇ょ粍鐢ㄦ埛涓棿Controller
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+@Api(tags = "缇よ亰-缇ょ粍鐢ㄦ埛鎺ュ彛")
+@RestController
+@RequestMapping("/call/groupuser")
+@Anonymous
+public class ArdCallGroupUserController extends BaseController {
+ @Autowired
+ private IArdCallGroupUserService ardCallGroupUserService;
+
+ /**
+ * 鏌ヨ缇ょ粍鐢ㄦ埛涓棿鍒楄〃
+ */
+ @GetMapping("/list")
+ public TableDataInfo list(ArdCallGroupUser ardCallGroupUser) {
+ startPage();
+ List<ArdCallGroupUser> list = ardCallGroupUserService.selectArdCallGroupUserList(ardCallGroupUser);
+ return getDataTable(list);
+ }
+
+
+ /**
+ * 鑾峰彇缇ょ粍鐢ㄦ埛涓棿璇︾粏淇℃伅
+ */
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") String id) {
+ return success(ardCallGroupUserService.selectArdCallGroupUserById(id));
+ }
+
+ /**
+ * 鏂板缇ょ粍鐢ㄦ埛涓棿
+ */
+ @PreAuthorize("@ss.hasPermi('call:groupuser:add')")
+ @PostMapping
+ public AjaxResult add(@RequestBody ArdCallGroupUser ardCallGroupUser) {
+ return toAjax(ardCallGroupUserService.insertArdCallGroupUser(ardCallGroupUser));
+ }
+
+ /**
+ * 淇敼缇ょ粍鐢ㄦ埛涓棿
+ */
+ @PreAuthorize("@ss.hasPermi('call:groupuser:edit')")
+ @PutMapping
+ public AjaxResult edit(@RequestBody ArdCallGroupUser ardCallGroupUser) {
+ return toAjax(ardCallGroupUserService.updateArdCallGroupUser(ardCallGroupUser));
+ }
+
+ /**
+ * 鍒犻櫎缇ょ粍鐢ㄦ埛涓棿
+ */
+ @PreAuthorize("@ss.hasPermi('call:groupuser:remove')")
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable String[] ids) {
+ return toAjax(ardCallGroupUserService.deleteArdCallGroupUserByIds(ids));
+ }
+
+
+ /**
+ * 鏌ヨ鐢ㄦ埛鎵�鍦ㄧ兢缁�
+ */
+ @ApiOperation("鏌ヨ鐢ㄦ埛鎵�鍦ㄧ兢缁�")
+ @GetMapping(value = "/getGroupListByUserId/{userId}")
+ public AjaxResult getGroupListByUserId(@PathVariable("userId") String userId) {
+ return success(ardCallGroupUserService.getGroupListByUserId(userId));
+ }
+ /**
+ * 涓嶅湪缇ょ粍鐨勪汉鍛樺垪琛�
+ */
+ @ApiOperation("涓嶅湪缇ょ粍鐨勪汉鍛樺垪琛�")
+ @GetMapping(value = "/notInGroupUsers/{groupId}")
+ public AjaxResult notInGroupUsers (@PathVariable("groupId") String groupId) {
+ return success(ardCallGroupUserService.notInGroupUsers(groupId));
+ }
+
+ /**
+ * 閭�璇风兢缁勬垚鍛�
+ */
+ @ApiOperation("閭�璇风兢缁勬垚鍛�")
+ @PostMapping("/addGroupUser")
+ public AjaxResult addGroupUser(String groupId, String[] userIds) {
+ return toAjax(ardCallGroupUserService.addGroupUser(groupId, userIds));
+ }
+ /**
+ * 绉婚櫎缇ょ粍鎴愬憳
+ */
+ @ApiOperation("绉婚櫎缇ょ粍鎴愬憳")
+ @PostMapping("/removeGroupUser")
+ public AjaxResult removeGroupUser(String groupId, String[] userIds) {
+ return toAjax(ardCallGroupUserService.removeGroupUser(groupId, userIds));
+ }
+
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallHistoryController.java b/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallHistoryController.java
new file mode 100644
index 0000000..9f38bea
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallHistoryController.java
@@ -0,0 +1,88 @@
+package com.ruoyi.call.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.ruoyi.common.annotation.Anonymous;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.call.domain.ArdCallHistory;
+import com.ruoyi.call.service.IArdCallHistoryService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 浼氳瘽鍘嗗彶Controller
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+@Api(tags = "缇よ亰-鍘嗗彶娑堟伅鎺ュ彛")
+@RestController
+@RequestMapping("/call/history")
+@Anonymous
+public class ArdCallHistoryController extends BaseController {
+ @Autowired
+ private IArdCallHistoryService ardCallHistoryService;
+
+ /**
+ * 鏌ヨ浼氳瘽娑堟伅鍒楄〃
+ */
+ @ApiOperation("鏌ヨ浼氳瘽娑堟伅鍒楄〃")
+ @GetMapping("/list")
+ public TableDataInfo list(ArdCallHistory ardCallHistory) {
+ startPage();
+ List<ArdCallHistory> list = ardCallHistoryService.selectArdCallHistoryList(ardCallHistory);
+ return getDataTable(list);
+ }
+
+
+ /**
+ * 鑾峰彇浼氳瘽鍘嗗彶璇︾粏淇℃伅
+ */
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") String id) {
+ return success(ardCallHistoryService.selectArdCallHistoryById(id));
+ }
+
+ /**
+ * 鏂板浼氳瘽娑堟伅
+ */
+ @ApiOperation("鏂板浼氳瘽娑堟伅")
+ @ApiOperationSupport(includeParameters = {"param.userId","param.targetId", "param.sessionId", "param.content", "param.type"})
+ @PostMapping
+ public AjaxResult add(@RequestBody ArdCallHistory ardCallHistory) {
+ return toAjax(ardCallHistoryService.insertArdCallHistory(ardCallHistory));
+ }
+
+ /**
+ * 淇敼浼氳瘽娑堟伅
+ */
+ @PutMapping
+ public AjaxResult edit(@RequestBody ArdCallHistory ardCallHistory) {
+ return toAjax(ardCallHistoryService.updateArdCallHistory(ardCallHistory));
+ }
+
+ /**
+ * 鍒犻櫎浼氳瘽娑堟伅
+ */
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable String[] ids) {
+ return toAjax(ardCallHistoryService.deleteArdCallHistoryByIds(ids));
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallSessionController.java b/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallSessionController.java
new file mode 100644
index 0000000..1d00e92
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallSessionController.java
@@ -0,0 +1,93 @@
+package com.ruoyi.call.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.annotation.Anonymous;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.call.domain.ArdCallSession;
+import com.ruoyi.call.service.IArdCallSessionService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 瑙嗛浼氳瘽Controller
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+@Api(tags = "缇よ亰-浼氳瘽鎺ュ彛")
+@RestController
+@RequestMapping("/call/session")
+@Anonymous
+public class ArdCallSessionController extends BaseController {
+ @Autowired
+ private IArdCallSessionService ardCallSessionService;
+
+ /**
+ * 鏌ヨ浼氳瘽鍒楄〃
+ */
+ @GetMapping("/list")
+ public TableDataInfo list(ArdCallSession ardCallSession) {
+ startPage();
+ List<ArdCallSession> list = ardCallSessionService.selectArdCallSessionList(ardCallSession);
+ return getDataTable(list);
+ }
+
+
+ /**
+ * 鑾峰彇浼氳瘽璇︾粏淇℃伅
+ */
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") String id) {
+ return success(ardCallSessionService.selectArdCallSessionById(id));
+ }
+ /**
+ * 鑾峰彇浼氳瘽
+ */
+ @ApiOperation("鑾峰彇浼氳瘽")
+ @GetMapping(value = "/getSession")
+ public AjaxResult getSession(String type,String userId, String targetId) {
+ return success(ardCallSessionService.getSession(type,userId,targetId));
+ }
+ /**
+ * 鏂板浼氳瘽
+ */
+ @PostMapping
+ public AjaxResult add(@RequestBody ArdCallSession ardCallSession) {
+ return success(ardCallSessionService.insertArdCallSession(ardCallSession));
+ }
+
+ /**
+ * 淇敼浼氳瘽
+ */
+ @PutMapping
+ public AjaxResult edit(@RequestBody ArdCallSession ardCallSession) {
+ return toAjax(ardCallSessionService.updateArdCallSession(ardCallSession));
+ }
+
+ /**
+ * 鍒犻櫎浼氳瘽
+ */
+ @ApiOperation("鍒犻櫎浼氳瘽")
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable String[] ids) {
+ return toAjax(ardCallSessionService.deleteArdCallSessionByIds(ids));
+ }
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallSessionUserController.java b/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallSessionUserController.java
new file mode 100644
index 0000000..5d83e2e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/controller/ArdCallSessionUserController.java
@@ -0,0 +1,101 @@
+package com.ruoyi.call.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.ruoyi.call.service.IArdCallUnreadMessagesService;
+import com.ruoyi.common.annotation.Anonymous;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.call.domain.ArdCallSessionUser;
+import com.ruoyi.call.service.IArdCallSessionUserService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 浼氳瘽鐢ㄦ埛涓棿琛–ontroller
+ *
+ * @author ard
+ * @date 2024-07-04
+ */
+@Api(tags = "缇よ亰-浼氳瘽鎺ュ彛")
+@RestController
+@RequestMapping("/call/sessionuser")
+@Anonymous
+public class ArdCallSessionUserController extends BaseController {
+ @Autowired
+ private IArdCallSessionUserService ardCallSessionUserService;
+ @Autowired
+ private IArdCallUnreadMessagesService ardCallUnreadMessagesService;
+ /**
+ * 鑾峰彇浼氳瘽鍒楄〃
+ */
+ @ApiOperation("鑾峰彇浼氳瘽鍒楄〃")
+ @ApiOperationSupport(ignoreParameters = {"id","unReadCount","sessionId","targetId","type","params","ardCallHistory"})
+ @GetMapping("/list")
+ public TableDataInfo list(ArdCallSessionUser ardCallSessionUser) {
+ startPage();
+ List<ArdCallSessionUser> list = ardCallSessionUserService.selectArdCallSessionUserList(ardCallSessionUser);
+ return getDataTable(list);
+ }
+
+ /**
+ * 鑾峰彇浼氳瘽鐢ㄦ埛涓棿琛ㄨ缁嗕俊鎭�
+ */
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") String id) {
+ return success(ardCallSessionUserService.selectArdCallSessionUserById(id));
+ }
+
+ /**
+ * 鏂板浼氳瘽鐢ㄦ埛涓棿琛�
+ */
+ @PostMapping
+ public AjaxResult add(@RequestBody ArdCallSessionUser ardCallSessionUser) {
+ return toAjax(ardCallSessionUserService.insertArdCallSessionUser(ardCallSessionUser));
+ }
+
+ /**
+ * 淇敼浼氳瘽鐢ㄦ埛涓棿琛�
+ */
+ @PutMapping
+ public AjaxResult edit(@RequestBody ArdCallSessionUser ardCallSessionUser) {
+ return toAjax(ardCallSessionUserService.updateArdCallSessionUser(ardCallSessionUser));
+ }
+
+ /**
+ * 鍒犻櫎浼氳瘽鐢ㄦ埛涓棿琛�
+ */
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable String[] ids) {
+ return toAjax(ardCallSessionUserService.deleteArdCallSessionUserByIds(ids));
+ }
+
+ /**
+ * 娓呴櫎浼氳瘽鏈鏁伴噺
+ */
+ @ApiOperation("娓呴櫎浼氳瘽鏈鏁伴噺")
+ @PostMapping("/clearUnReadCount")
+ @ApiImplicitParams({@ApiImplicitParam(name = "sessionId", value = "浼氳瘽id", required = true, dataType = "String"),
+ @ApiImplicitParam(name = "userId", value = "鐢ㄦ埛id", required = true, dataType = "String")})
+ public AjaxResult clearUnReadCount(String sessionId, String userId) {
+ return toAjax(ardCallUnreadMessagesService.clearUnReadCount(sessionId, userId));
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallGroup.java b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallGroup.java
new file mode 100644
index 0000000..772a450
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallGroup.java
@@ -0,0 +1,83 @@
+package com.ruoyi.call.domain;
+
+import com.ruoyi.common.core.domain.entity.SysUser;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+import java.util.List;
+
+/**
+ * 浼氳瘽缇ょ粍瀵硅薄 ard_call_group
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+public class ArdCallGroup extends BaseEntity {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭
+ */
+ private String id;
+
+ /**
+ * 缇ゅ悕绉�
+ */
+ @Excel(name = "缇ゅ悕绉�")
+ private String name;
+ /**
+ * 缇ゆ垚鍛樺垪琛�
+ */
+ private List<ArdCallGroupUser> ArdCallGroupUsers;
+
+ /**
+ * 缇ゆ垚鍛榠d鍒楄〃
+ */
+ private List<String> userIds;
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public List<ArdCallGroupUser> getArdCallGroupUsers() {
+ return ArdCallGroupUsers;
+ }
+
+ public void setArdCallGroupUsers(List<ArdCallGroupUser> ardCallGroupUsers) {
+ ArdCallGroupUsers = ardCallGroupUsers;
+ }
+
+ public List<String> getUserIds() {
+ return userIds;
+ }
+
+ public void setUserIds(List<String> userIds) {
+ this.userIds = userIds;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("name", getName())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .toString();
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallGroupUser.java b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallGroupUser.java
new file mode 100644
index 0000000..1c4797d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallGroupUser.java
@@ -0,0 +1,80 @@
+package com.ruoyi.call.domain;
+
+import com.ruoyi.common.core.domain.entity.SysUser;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 缇ょ粍鐢ㄦ埛涓棿瀵硅薄 ard_call_group_user
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+public class ArdCallGroupUser extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 涓婚敭 */
+ private String id;
+
+ /** 缇ょ粍ID */
+ @Excel(name = "缇ょ粍ID")
+ private String groupId;
+
+ /** 鐢ㄦ埛ID */
+ @Excel(name = "鐢ㄦ埛ID")
+ private String userId;
+
+ private SysUser sysUser; // 宓屽鐨� SysUser 瀵硅薄
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+ public void setGroupId(String groupId)
+ {
+ this.groupId = groupId;
+ }
+
+ public String getGroupId()
+ {
+ return groupId;
+ }
+ public void setUserId(String userId)
+ {
+ this.userId = userId;
+ }
+
+ public String getUserId()
+ {
+ return userId;
+ }
+
+ public SysUser getSysUser() {
+ return sysUser;
+ }
+
+ public void setSysUser(SysUser sysUser) {
+ this.sysUser = sysUser;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("groupId", getGroupId())
+ .append("userId", getUserId())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .toString();
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallHistory.java b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallHistory.java
new file mode 100644
index 0000000..6bc1c2f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallHistory.java
@@ -0,0 +1,104 @@
+package com.ruoyi.call.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 浼氳瘽鍘嗗彶瀵硅薄 ard_call_history
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+public class ArdCallHistory extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 涓婚敭 */
+ private String id;
+
+ /** 浼氳瘽ID */
+ @Excel(name = "浼氳瘽ID")
+ private String sessionId;
+ /** 鐢ㄦ埛ID */
+ @Excel(name = "鐢ㄦ埛ID")
+ private String userId;
+ /** 娑堟伅绫诲瀷 */
+ @Excel(name = "娑堟伅绫诲瀷")
+ private String type;
+
+ /** 娑堟伅鍐呭 */
+ @Excel(name = "娑堟伅鍐呭")
+ private String content;
+
+ /** 鐩爣ID */
+ @Excel(name = "鐩爣ID")
+ private String targetId;
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+ public void setType(String type)
+ {
+ this.type = type;
+ }
+
+ public String getType()
+ {
+ return type;
+ }
+ public void setContent(String content)
+ {
+ this.content = content;
+ }
+
+ public String getContent()
+ {
+ return content;
+ }
+
+ public String getSessionId() {
+ return sessionId;
+ }
+
+ public void setSessionId(String sessionId) {
+ this.sessionId = sessionId;
+ }
+
+ public String getUserId() {
+ return userId;
+ }
+
+ public void setUserId(String userId) {
+ this.userId = userId;
+ }
+
+
+ public String getTargetId() {
+ return targetId;
+ }
+
+ public void setTargetId(String targetId) {
+ this.targetId = targetId;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("type", getType())
+ .append("content", getContent())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .toString();
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallSession.java b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallSession.java
new file mode 100644
index 0000000..d4116b3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallSession.java
@@ -0,0 +1,86 @@
+package com.ruoyi.call.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+import java.util.List;
+
+/**
+ * 瑙嗛浼氳瘽瀵硅薄 ard_call_session
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+public class ArdCallSession extends BaseEntity {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭
+ */
+ private String id;
+
+ /**
+ * 浼氳瘽绫诲瀷
+ */
+ @Excel(name = "浼氳瘽绫诲瀷")
+ private String type;
+
+ /**
+ * userId
+ */
+ @Excel(name = "鐢ㄦ埛Id")
+ private String userId;
+
+ /**
+ * 浼氳瘽鐢ㄦ埛鍒楄〃
+ */
+ private List<String> targetIds;
+
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public String getUserId() {
+ return userId;
+ }
+
+ public void setUserId(String userId) {
+ this.userId = userId;
+ }
+
+
+ public List<String> getTargetIds() {
+ return targetIds;
+ }
+
+ public void setTargetIds(List<String> targetIds) {
+ this.targetIds = targetIds;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("type", getType())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .toString();
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallSessionUser.java b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallSessionUser.java
new file mode 100644
index 0000000..610c7ee
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallSessionUser.java
@@ -0,0 +1,107 @@
+package com.ruoyi.call.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 浼氳瘽鐢ㄦ埛涓棿琛ㄥ璞� ard_call_session_user
+ *
+ * @author ard
+ * @date 2024-07-04
+ */
+public class ArdCallSessionUser extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 涓婚敭 */
+ private String id;
+
+ /** 浼氳瘽id */
+ @Excel(name = "浼氳瘽id")
+ private String sessionId;
+
+ /** 浼氳瘽绫诲瀷 */
+ @Excel(name = "浼氳瘽绫诲瀷")
+ private String type;
+
+
+ /** 褰撳墠鎴愬憳id */
+ @Excel(name = "褰撳墠鎴愬憳id")
+ private String userId;
+
+ /** 鐩爣鎴愬憳id */
+ @Excel(name = "鐩爣鎴愬憳id")
+ private String targetId;
+
+ /**
+ * 鏈�鍚庝竴鏉℃秷鎭�
+ */
+ private ArdCallHistory ardCallHistory;
+ /**
+ * 鏈娑堟伅鏁版嵁閲�
+ */
+ private Integer unReadCount;
+
+
+ public ArdCallHistory getArdCallHistory() {
+ return ardCallHistory;
+ }
+
+ public void setArdCallHistory(ArdCallHistory ardCallHistory) {
+ this.ardCallHistory = ardCallHistory;
+ }
+
+ public Integer getUnReadCount() {
+ return unReadCount;
+ }
+
+ public void setUnReadCount(Integer unReadCount) {
+ this.unReadCount = unReadCount;
+ }
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+ public void setSessionId(String sessionId)
+ {
+ this.sessionId = sessionId;
+ }
+
+ public String getSessionId()
+ {
+ return sessionId;
+ }
+ public void setType(String type)
+ {
+ this.type = type;
+ }
+
+ public String getType()
+ {
+ return type;
+ }
+
+ public String getTargetId() {
+ return targetId;
+ }
+
+ public void setTargetId(String targetId) {
+ this.targetId = targetId;
+ }
+
+ public String getUserId() {
+ return userId;
+ }
+
+ public void setUserId(String userId) {
+ this.userId = userId;
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallUnreadMessages.java b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallUnreadMessages.java
new file mode 100644
index 0000000..21de2da
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/domain/ArdCallUnreadMessages.java
@@ -0,0 +1,66 @@
+package com.ruoyi.call.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 鏈娑堟伅瀵硅薄 ard_call_unread_messages
+ *
+ * @author ard
+ * @date 2024-07-06
+ */
+public class ArdCallUnreadMessages extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 鐢ㄦ埛id */
+ @Excel(name = "鐢ㄦ埛id")
+ private String userId ;
+
+ /** 浼氳瘽id */
+ @Excel(name = "浼氳瘽id")
+ private String sessionId;
+
+ /** 鏈鏁伴噺 */
+ @Excel(name = "鏈鏁伴噺")
+ private Integer unreadCount;
+
+ public void setUserId (String userId )
+ {
+ this.userId = userId ;
+ }
+
+ public String getUserId ()
+ {
+ return userId ;
+ }
+ public void setSessionId(String sessionId)
+ {
+ this.sessionId = sessionId;
+ }
+
+ public String getSessionId()
+ {
+ return sessionId;
+ }
+ public void setUnreadCount(Integer unreadCount)
+ {
+ this.unreadCount = unreadCount;
+ }
+
+ public Integer getUnreadCount()
+ {
+ return unreadCount;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("userId ", getUserId ())
+ .append("sessionId", getSessionId())
+ .append("unreadCount", getUnreadCount())
+ .toString();
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallGroupMapper.java b/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallGroupMapper.java
new file mode 100644
index 0000000..a5033f6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallGroupMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.call.mapper;
+
+import java.util.List;
+import com.ruoyi.call.domain.ArdCallGroup;
+
+/**
+ * 浼氳瘽缇ょ粍Mapper鎺ュ彛
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+public interface ArdCallGroupMapper
+{
+ /**
+ * 鏌ヨ浼氳瘽缇ょ粍
+ *
+ * @param id 浼氳瘽缇ょ粍涓婚敭
+ * @return 浼氳瘽缇ょ粍
+ */
+ public ArdCallGroup selectArdCallGroupById(String id);
+
+ /**
+ * 鏌ヨ浼氳瘽缇ょ粍鍒楄〃
+ *
+ * @param ardCallGroup 浼氳瘽缇ょ粍
+ * @return 浼氳瘽缇ょ粍闆嗗悎
+ */
+ public List<ArdCallGroup> selectArdCallGroupList(ArdCallGroup ardCallGroup);
+
+ /**
+ * 鏂板浼氳瘽缇ょ粍
+ *
+ * @param ardCallGroup 浼氳瘽缇ょ粍
+ * @return 缁撴灉
+ */
+ public int insertArdCallGroup(ArdCallGroup ardCallGroup);
+
+ /**
+ * 淇敼浼氳瘽缇ょ粍
+ *
+ * @param ardCallGroup 浼氳瘽缇ょ粍
+ * @return 缁撴灉
+ */
+ public int updateArdCallGroup(ArdCallGroup ardCallGroup);
+
+ /**
+ * 鍒犻櫎浼氳瘽缇ょ粍
+ *
+ * @param id 浼氳瘽缇ょ粍涓婚敭
+ * @return 缁撴灉
+ */
+ public int deleteArdCallGroupById(String id);
+
+ /**
+ * 鎵归噺鍒犻櫎浼氳瘽缇ょ粍
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int deleteArdCallGroupByIds(String[] ids);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallGroupUserMapper.java b/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallGroupUserMapper.java
new file mode 100644
index 0000000..bd1cce6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallGroupUserMapper.java
@@ -0,0 +1,84 @@
+package com.ruoyi.call.mapper;
+
+import java.util.List;
+
+import com.ruoyi.call.domain.ArdCallGroup;
+import com.ruoyi.call.domain.ArdCallGroupUser;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 缇ょ粍鐢ㄦ埛涓棿Mapper鎺ュ彛
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+public interface ArdCallGroupUserMapper {
+ /**
+ * 鏌ヨ缇ょ粍鐢ㄦ埛涓棿
+ *
+ * @param id 缇ょ粍鐢ㄦ埛涓棿涓婚敭
+ * @return 缇ょ粍鐢ㄦ埛涓棿
+ */
+ public ArdCallGroupUser selectArdCallGroupUserById(String id);
+
+ /**
+ * 鏌ヨ缇ょ粍鐢ㄦ埛涓棿鍒楄〃
+ *
+ * @param ardCallGroupUser 缇ょ粍鐢ㄦ埛涓棿
+ * @return 缇ょ粍鐢ㄦ埛涓棿闆嗗悎
+ */
+ public List<ArdCallGroupUser> selectArdCallGroupUserList(ArdCallGroupUser ardCallGroupUser);
+
+ /**
+ * 鏂板缇ょ粍鐢ㄦ埛涓棿
+ *
+ * @param ardCallGroupUser 缇ょ粍鐢ㄦ埛涓棿
+ * @return 缁撴灉
+ */
+ public int insertArdCallGroupUser(ArdCallGroupUser ardCallGroupUser);
+
+ /**
+ * 淇敼缇ょ粍鐢ㄦ埛涓棿
+ *
+ * @param ardCallGroupUser 缇ょ粍鐢ㄦ埛涓棿
+ * @return 缁撴灉
+ */
+ public int updateArdCallGroupUser(ArdCallGroupUser ardCallGroupUser);
+
+ /**
+ * 鍒犻櫎缇ょ粍鐢ㄦ埛涓棿
+ *
+ * @param id 缇ょ粍鐢ㄦ埛涓棿涓婚敭
+ * @return 缁撴灉
+ */
+ public int deleteArdCallGroupUserById(String id);
+
+ /**
+ * 鎵归噺鍒犻櫎缇ょ粍鐢ㄦ埛涓棿
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int deleteArdCallGroupUserByIds(String[] ids);
+
+ /**
+ * 鍒犻櫎缇ょ粍鍏宠仈鐢ㄦ埛
+ *
+ * @param groupId 缇ょ粍涓婚敭
+ * @return 缁撴灉
+ */
+ public int clearArdCallGroupUsers(String groupId);
+
+ /**
+ * 绉婚櫎缇ょ粍鐢ㄦ埛
+ *
+ * @param groupId 缇ょ粍涓婚敭
+ * @param userIds 缇ょ粍鐢ㄦ埛鏁扮粍闆嗗悎
+ * @return 缁撴灉
+ */
+ public int removeGroupUser(@Param("groupId") String groupId, @Param("userIds") String[] userIds);
+
+ public List<ArdCallGroup> getGroupListByUserId(String userId);
+
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallHistoryMapper.java b/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallHistoryMapper.java
new file mode 100644
index 0000000..a5786f5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallHistoryMapper.java
@@ -0,0 +1,72 @@
+package com.ruoyi.call.mapper;
+
+import java.util.List;
+
+import com.ruoyi.call.domain.ArdCallHistory;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 浼氳瘽鍘嗗彶Mapper鎺ュ彛
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+public interface ArdCallHistoryMapper {
+ /**
+ * 鏌ヨ浼氳瘽鍘嗗彶
+ *
+ * @param id 浼氳瘽鍘嗗彶涓婚敭
+ * @return 浼氳瘽鍘嗗彶
+ */
+ public ArdCallHistory selectArdCallHistoryById(String id);
+
+ /**
+ * 鏌ヨ浼氳瘽鍘嗗彶鍒楄〃
+ *
+ * @param ardCallHistory 浼氳瘽鍘嗗彶
+ * @return 浼氳瘽鍘嗗彶闆嗗悎
+ */
+ public List<ArdCallHistory> selectArdCallHistoryList(ArdCallHistory ardCallHistory);
+
+ /**
+ * 鏂板浼氳瘽鍘嗗彶
+ *
+ * @param ardCallHistory 浼氳瘽鍘嗗彶
+ * @return 缁撴灉
+ */
+ public int insertArdCallHistory(ArdCallHistory ardCallHistory);
+
+ /**
+ * 淇敼浼氳瘽鍘嗗彶
+ *
+ * @param ardCallHistory 浼氳瘽鍘嗗彶
+ * @return 缁撴灉
+ */
+ public int updateArdCallHistory(ArdCallHistory ardCallHistory);
+
+ /**
+ * 鍒犻櫎浼氳瘽鍘嗗彶
+ *
+ * @param id 浼氳瘽鍘嗗彶涓婚敭
+ * @return 缁撴灉
+ */
+ public int deleteArdCallHistoryById(String id);
+
+ /**
+ * 鎵归噺鍒犻櫎浼氳瘽鍘嗗彶
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int deleteArdCallHistoryByIds(String[] ids);
+
+
+ /**
+ * 鑾峰彇鏈�鍚庝竴鏉′細璇濆巻鍙�
+ *
+ * @param sessionId 浼氳瘽id
+ * @return 缁撴灉
+ */
+ public ArdCallHistory selectLastArdCallHistory(@Param("sessionId") String sessionId);
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallSessionMapper.java b/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallSessionMapper.java
new file mode 100644
index 0000000..18fd125
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallSessionMapper.java
@@ -0,0 +1,62 @@
+package com.ruoyi.call.mapper;
+
+import java.util.List;
+import com.ruoyi.call.domain.ArdCallSession;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 瑙嗛浼氳瘽Mapper鎺ュ彛
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+public interface ArdCallSessionMapper {
+ /**
+ * 鏌ヨ瑙嗛浼氳瘽
+ *
+ * @param id 瑙嗛浼氳瘽涓婚敭
+ * @return 瑙嗛浼氳瘽
+ */
+ public ArdCallSession selectArdCallSessionById(String id);
+
+ /**
+ * 鏌ヨ瑙嗛浼氳瘽鍒楄〃
+ *
+ * @param ardCallSession 瑙嗛浼氳瘽
+ * @return 瑙嗛浼氳瘽闆嗗悎
+ */
+ public List<ArdCallSession> selectArdCallSessionList(ArdCallSession ardCallSession);
+
+ /**
+ * 鏂板瑙嗛浼氳瘽
+ *
+ * @param ardCallSession 瑙嗛浼氳瘽
+ * @return 缁撴灉
+ */
+ public int insertArdCallSession(ArdCallSession ardCallSession);
+
+ /**
+ * 淇敼瑙嗛浼氳瘽
+ *
+ * @param ardCallSession 瑙嗛浼氳瘽
+ * @return 缁撴灉
+ */
+ public int updateArdCallSession(ArdCallSession ardCallSession);
+
+ /**
+ * 鍒犻櫎瑙嗛浼氳瘽
+ *
+ * @param id 瑙嗛浼氳瘽涓婚敭
+ * @return 缁撴灉
+ */
+ public int deleteArdCallSessionById(String id);
+
+ /**
+ * 鎵归噺鍒犻櫎瑙嗛浼氳瘽
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int deleteArdCallSessionByIds(String[] ids);
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallSessionUserMapper.java b/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallSessionUserMapper.java
new file mode 100644
index 0000000..fd7d26e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallSessionUserMapper.java
@@ -0,0 +1,68 @@
+package com.ruoyi.call.mapper;
+
+import java.util.List;
+
+import com.ruoyi.call.domain.ArdCallSessionUser;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 浼氳瘽鐢ㄦ埛涓棿琛∕apper鎺ュ彛
+ *
+ * @author ard
+ * @date 2024-07-04
+ */
+public interface ArdCallSessionUserMapper {
+ /**
+ * 鏌ヨ浼氳瘽鐢ㄦ埛涓棿琛�
+ *
+ * @param id 浼氳瘽鐢ㄦ埛涓棿琛ㄤ富閿�
+ * @return 浼氳瘽鐢ㄦ埛涓棿琛�
+ */
+ public ArdCallSessionUser selectArdCallSessionUserById(String id);
+
+ /**
+ * 鏌ヨ浼氳瘽鐢ㄦ埛涓棿琛ㄥ垪琛�
+ *
+ * @param ardCallSessionUser 浼氳瘽鐢ㄦ埛涓棿琛�
+ * @return 浼氳瘽鐢ㄦ埛涓棿琛ㄩ泦鍚�
+ */
+ public List<ArdCallSessionUser> selectArdCallSessionUserList(ArdCallSessionUser ardCallSessionUser);
+
+ /**
+ * 鏂板浼氳瘽鐢ㄦ埛涓棿琛�
+ *
+ * @param ardCallSessionUser 浼氳瘽鐢ㄦ埛涓棿琛�
+ * @return 缁撴灉
+ */
+ public int insertArdCallSessionUser(ArdCallSessionUser ardCallSessionUser);
+
+ /**
+ * 淇敼浼氳瘽鐢ㄦ埛涓棿琛�
+ *
+ * @param ardCallSessionUser 浼氳瘽鐢ㄦ埛涓棿琛�
+ * @return 缁撴灉
+ */
+ public int updateArdCallSessionUser(ArdCallSessionUser ardCallSessionUser);
+
+ /**
+ * 鍒犻櫎浼氳瘽鐢ㄦ埛涓棿琛�
+ *
+ * @param id 浼氳瘽鐢ㄦ埛涓棿琛ㄤ富閿�
+ * @return 缁撴灉
+ */
+ public int deleteArdCallSessionUserById(String id);
+
+ /**
+ * 鎵归噺鍒犻櫎浼氳瘽鐢ㄦ埛涓棿琛�
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int deleteArdCallSessionUserByIds(String[] ids);
+
+ public String getSessionId(@Param("type") String type, @Param("userId") String userId, @Param("targetId") String targetId);
+ public String getGroupSessionId(@Param("type") String type, @Param("targetId") String targetId);
+ public int deleteArdCallSessionUserBySessionId(@Param("sessionId") String sessionId);
+
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallUnreadMessagesMapper.java b/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallUnreadMessagesMapper.java
new file mode 100644
index 0000000..81383ec
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/mapper/ArdCallUnreadMessagesMapper.java
@@ -0,0 +1,68 @@
+package com.ruoyi.call.mapper;
+
+import java.util.List;
+
+import com.ruoyi.call.domain.ArdCallUnreadMessages;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+/**
+ * 鏈娑堟伅Mapper鎺ュ彛
+ *
+ * @author ard
+ * @date 2024-07-06
+ */
+public interface ArdCallUnreadMessagesMapper {
+ /**
+ * 鏌ヨ鏈娑堟伅
+ *
+ * @param userId 鏈娑堟伅涓婚敭
+ * @return 鏈娑堟伅
+ */
+ public ArdCallUnreadMessages selectArdCallUnreadMessagesByUserId(String userId);
+
+ /**
+ * 鏌ヨ鏈娑堟伅鍒楄〃
+ *
+ * @param ardCallUnreadMessages 鏈娑堟伅
+ * @return 鏈娑堟伅闆嗗悎
+ */
+ public List<ArdCallUnreadMessages> selectArdCallUnreadMessagesList(ArdCallUnreadMessages ardCallUnreadMessages);
+
+ /**
+ * 鏂板鏈娑堟伅
+ *
+ * @param ardCallUnreadMessages 鏈娑堟伅
+ * @return 缁撴灉
+ */
+ public int insertArdCallUnreadMessages(ArdCallUnreadMessages ardCallUnreadMessages);
+
+ /**
+ * 淇敼鏈娑堟伅
+ *
+ * @param ardCallUnreadMessages 鏈娑堟伅
+ * @return 缁撴灉
+ */
+ public int updateArdCallUnreadMessages(ArdCallUnreadMessages ardCallUnreadMessages);
+
+ /**
+ * 鍒犻櫎鏈娑堟伅
+ *
+ * @param userId 鏈娑堟伅涓婚敭
+ * @return 缁撴灉
+ */
+ public int deleteArdCallUnreadMessagesByUserId(String userId);
+
+ /**
+ * 鎵归噺鍒犻櫎鏈娑堟伅
+ *
+ * @param userId s 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int deleteArdCallUnreadMessagesByUserId(String[] userId);
+
+ @Select("select count(*) from ard_call_unread_messages where session_id=#{sessionId} and target_id=#{targetId}")
+ int countBySessionIdAnduserId(String sessionId, String userId);
+
+ public ArdCallUnreadMessages getUnreadMessage(@Param("sessionId") String sessionId, @Param("targetId")String targetId);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/IArdCallGroupService.java b/ard-work/src/main/java/com/ruoyi/call/service/IArdCallGroupService.java
new file mode 100644
index 0000000..df1ff43
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/service/IArdCallGroupService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.call.service;
+
+import java.util.List;
+import com.ruoyi.call.domain.ArdCallGroup;
+
+/**
+ * 浼氳瘽缇ょ粍Service鎺ュ彛
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+public interface IArdCallGroupService
+{
+ /**
+ * 鏌ヨ浼氳瘽缇ょ粍
+ *
+ * @param id 浼氳瘽缇ょ粍涓婚敭
+ * @return 浼氳瘽缇ょ粍
+ */
+ public ArdCallGroup selectArdCallGroupById(String id);
+
+ /**
+ * 鏌ヨ浼氳瘽缇ょ粍鍒楄〃
+ *
+ * @param ardCallGroup 浼氳瘽缇ょ粍
+ * @return 浼氳瘽缇ょ粍闆嗗悎
+ */
+ public List<ArdCallGroup> selectArdCallGroupList(ArdCallGroup ardCallGroup);
+
+ /**
+ * 鏂板浼氳瘽缇ょ粍
+ *
+ * @param ardCallGroup 浼氳瘽缇ょ粍
+ * @return 缁撴灉
+ */
+ public String insertArdCallGroup(ArdCallGroup ardCallGroup);
+
+ /**
+ * 淇敼浼氳瘽缇ょ粍
+ *
+ * @param ardCallGroup 浼氳瘽缇ょ粍
+ * @return 缁撴灉
+ */
+ public int updateArdCallGroup(ArdCallGroup ardCallGroup);
+
+ /**
+ * 鎵归噺鍒犻櫎浼氳瘽缇ょ粍
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑浼氳瘽缇ょ粍涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int deleteArdCallGroupByIds(String[] ids);
+
+ /**
+ * 鍒犻櫎浼氳瘽缇ょ粍淇℃伅
+ *
+ * @param id 浼氳瘽缇ょ粍涓婚敭
+ * @return 缁撴灉
+ */
+ public int deleteArdCallGroupById(String id);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/IArdCallGroupUserService.java b/ard-work/src/main/java/com/ruoyi/call/service/IArdCallGroupUserService.java
new file mode 100644
index 0000000..78cfbfb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/service/IArdCallGroupUserService.java
@@ -0,0 +1,97 @@
+package com.ruoyi.call.service;
+
+import java.util.List;
+
+import com.ruoyi.call.domain.ArdCallGroup;
+import com.ruoyi.call.domain.ArdCallGroupUser;
+import com.ruoyi.common.core.domain.entity.SysUser;
+
+/**
+ * 缇ょ粍鐢ㄦ埛涓棿Service鎺ュ彛
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+public interface IArdCallGroupUserService {
+ /**
+ * 鏌ヨ缇ょ粍鐢ㄦ埛涓棿
+ *
+ * @param id 缇ょ粍鐢ㄦ埛涓棿涓婚敭
+ * @return 缇ょ粍鐢ㄦ埛涓棿
+ */
+ public ArdCallGroupUser selectArdCallGroupUserById(String id);
+
+ /**
+ * 鏌ヨ缇ょ粍鐢ㄦ埛涓棿鍒楄〃
+ *
+ * @param ardCallGroupUser 缇ょ粍鐢ㄦ埛涓棿
+ * @return 缇ょ粍鐢ㄦ埛涓棿闆嗗悎
+ */
+ public List<ArdCallGroupUser> selectArdCallGroupUserList(ArdCallGroupUser ardCallGroupUser);
+
+ /**
+ * 鏂板缇ょ粍鐢ㄦ埛涓棿
+ *
+ * @param ardCallGroupUser 缇ょ粍鐢ㄦ埛涓棿
+ * @return 缁撴灉
+ */
+ public int insertArdCallGroupUser(ArdCallGroupUser ardCallGroupUser);
+
+ /**
+ * 淇敼缇ょ粍鐢ㄦ埛涓棿
+ *
+ * @param ardCallGroupUser 缇ょ粍鐢ㄦ埛涓棿
+ * @return 缁撴灉
+ */
+ public int updateArdCallGroupUser(ArdCallGroupUser ardCallGroupUser);
+
+ /**
+ * 鎵归噺鍒犻櫎缇ょ粍鐢ㄦ埛涓棿
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑缇ょ粍鐢ㄦ埛涓棿涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int deleteArdCallGroupUserByIds(String[] ids);
+
+ /**
+ * 鍒犻櫎缇ょ粍鐢ㄦ埛涓棿淇℃伅
+ *
+ * @param id 缇ょ粍鐢ㄦ埛涓棿涓婚敭
+ * @return 缁撴灉
+ */
+ public int deleteArdCallGroupUserById(String id);
+
+ /**
+ * 鏌ヨ鐢ㄦ埛鎵�鍦ㄧ兢缁�
+ *
+ * @param userId 缇ょ粍鐢ㄦ埛
+ * @return 缁撴灉
+ */
+ List<ArdCallGroup> getGroupListByUserId(String userId);
+
+ /**
+ * 閭�璇风兢缁勭敤鎴�
+ *
+ * @param id 缇ょ粍涓婚敭
+ * @param userIds 缇ょ粍鐢ㄦ埛鏁扮粍闆嗗悎
+ * @return 缁撴灉
+ */
+ public int addGroupUser(String id, String[] userIds);
+
+ /**
+ * 绉婚櫎缇ょ粍鐢ㄦ埛
+ *
+ * @param id 缇ょ粍涓婚敭
+ * @param userIds 缇ょ粍鐢ㄦ埛鏁扮粍闆嗗悎
+ * @return 缁撴灉
+ */
+ public int removeGroupUser(String id, String[] userIds);
+
+ /**
+ * 涓嶅湪缇ょ粍鐨勪汉鍛樺垪琛�
+ *
+ * @param groupId 缇ょ粍涓婚敭
+ * @return 缁撴灉
+ */
+ List<SysUser> notInGroupUsers(String groupId);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/IArdCallHistoryService.java b/ard-work/src/main/java/com/ruoyi/call/service/IArdCallHistoryService.java
new file mode 100644
index 0000000..af86fb9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/service/IArdCallHistoryService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.call.service;
+
+import java.util.List;
+import com.ruoyi.call.domain.ArdCallHistory;
+
+/**
+ * 浼氳瘽鍘嗗彶Service鎺ュ彛
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+public interface IArdCallHistoryService
+{
+ /**
+ * 鏌ヨ浼氳瘽鍘嗗彶
+ *
+ * @param id 浼氳瘽鍘嗗彶涓婚敭
+ * @return 浼氳瘽鍘嗗彶
+ */
+ public ArdCallHistory selectArdCallHistoryById(String id);
+
+ /**
+ * 鏌ヨ浼氳瘽鍘嗗彶鍒楄〃
+ *
+ * @param ardCallHistory 浼氳瘽鍘嗗彶
+ * @return 浼氳瘽鍘嗗彶闆嗗悎
+ */
+ public List<ArdCallHistory> selectArdCallHistoryList(ArdCallHistory ardCallHistory);
+
+ /**
+ * 鏂板浼氳瘽鍘嗗彶
+ *
+ * @param ardCallHistory 浼氳瘽鍘嗗彶
+ * @return 缁撴灉
+ */
+ public int insertArdCallHistory(ArdCallHistory ardCallHistory);
+
+ /**
+ * 淇敼浼氳瘽鍘嗗彶
+ *
+ * @param ardCallHistory 浼氳瘽鍘嗗彶
+ * @return 缁撴灉
+ */
+ public int updateArdCallHistory(ArdCallHistory ardCallHistory);
+
+ /**
+ * 鎵归噺鍒犻櫎浼氳瘽鍘嗗彶
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑浼氳瘽鍘嗗彶涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int deleteArdCallHistoryByIds(String[] ids);
+
+ /**
+ * 鍒犻櫎浼氳瘽鍘嗗彶淇℃伅
+ *
+ * @param id 浼氳瘽鍘嗗彶涓婚敭
+ * @return 缁撴灉
+ */
+ public int deleteArdCallHistoryById(String id);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/IArdCallSessionService.java b/ard-work/src/main/java/com/ruoyi/call/service/IArdCallSessionService.java
new file mode 100644
index 0000000..af36f59
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/service/IArdCallSessionService.java
@@ -0,0 +1,72 @@
+package com.ruoyi.call.service;
+
+import java.util.List;
+
+import com.ruoyi.call.domain.ArdCallSession;
+
+/**
+ * 瑙嗛浼氳瘽Service鎺ュ彛
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+public interface IArdCallSessionService {
+ /**
+ * 鏌ヨ瑙嗛浼氳瘽
+ *
+ * @param id 瑙嗛浼氳瘽涓婚敭
+ * @return 瑙嗛浼氳瘽
+ */
+ public ArdCallSession selectArdCallSessionById(String id);
+
+ /**
+ * 鏌ヨ瑙嗛浼氳瘽鍒楄〃
+ *
+ * @param ardCallSession 瑙嗛浼氳瘽
+ * @return 瑙嗛浼氳瘽闆嗗悎
+ */
+ public List<ArdCallSession> selectArdCallSessionList(ArdCallSession ardCallSession);
+
+ /**
+ * 鏂板瑙嗛浼氳瘽
+ *
+ * @param ardCallSession 瑙嗛浼氳瘽
+ * @return 缁撴灉
+ */
+ public String insertArdCallSession(ArdCallSession ardCallSession);
+
+ /**
+ * 淇敼瑙嗛浼氳瘽
+ *
+ * @param ardCallSession 瑙嗛浼氳瘽
+ * @return 缁撴灉
+ */
+ public int updateArdCallSession(ArdCallSession ardCallSession);
+
+ /**
+ * 鎵归噺鍒犻櫎瑙嗛浼氳瘽
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑瑙嗛浼氳瘽涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int deleteArdCallSessionByIds(String[] ids);
+
+ /**
+ * 鍒犻櫎瑙嗛浼氳瘽淇℃伅
+ *
+ * @param id 瑙嗛浼氳瘽涓婚敭
+ * @return 缁撴灉
+ */
+ public int deleteArdCallSessionById(String id);
+
+
+ /**
+ * 鑾峰彇浼氳瘽
+ *
+ * @param type 浼氳瘽绫诲瀷 0鍗曡亰1缇よ亰
+ * @param userId 浼氳瘽鍙戦�佹柟
+ * @param targetId 浼氳瘽鎺ユ敹鏂�
+ * @return 缁撴灉
+ */
+ public String getSession(String type, String userId, String targetId);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/IArdCallSessionUserService.java b/ard-work/src/main/java/com/ruoyi/call/service/IArdCallSessionUserService.java
new file mode 100644
index 0000000..f8aa9e5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/service/IArdCallSessionUserService.java
@@ -0,0 +1,80 @@
+package com.ruoyi.call.service;
+
+import java.util.List;
+
+import com.ruoyi.call.domain.ArdCallSessionUser;
+
+/**
+ * 浼氳瘽鐢ㄦ埛涓棿琛⊿ervice鎺ュ彛
+ *
+ * @author ard
+ * @date 2024-07-04
+ */
+public interface IArdCallSessionUserService {
+ /**
+ * 鏌ヨ浼氳瘽鐢ㄦ埛涓棿琛�
+ *
+ * @param id 浼氳瘽鐢ㄦ埛涓棿琛ㄤ富閿�
+ * @return 浼氳瘽鐢ㄦ埛涓棿琛�
+ */
+ public ArdCallSessionUser selectArdCallSessionUserById(String id);
+
+ /**
+ * 鏌ヨ浼氳瘽鐢ㄦ埛涓棿琛ㄥ垪琛�
+ *
+ * @param ardCallSessionUser 浼氳瘽鐢ㄦ埛涓棿琛�
+ * @return 浼氳瘽鐢ㄦ埛涓棿琛ㄩ泦鍚�
+ */
+ public List<ArdCallSessionUser> selectArdCallSessionUserList(ArdCallSessionUser ardCallSessionUser);
+
+ /**
+ * 鏂板浼氳瘽鐢ㄦ埛涓棿琛�
+ *
+ * @param ardCallSessionUser 浼氳瘽鐢ㄦ埛涓棿琛�
+ * @return 缁撴灉
+ */
+ public int insertArdCallSessionUser(ArdCallSessionUser ardCallSessionUser);
+
+ /**
+ * 淇敼浼氳瘽鐢ㄦ埛涓棿琛�
+ *
+ * @param ardCallSessionUser 浼氳瘽鐢ㄦ埛涓棿琛�
+ * @return 缁撴灉
+ */
+ public int updateArdCallSessionUser(ArdCallSessionUser ardCallSessionUser);
+
+ /**
+ * 鎵归噺鍒犻櫎浼氳瘽鐢ㄦ埛涓棿琛�
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑浼氳瘽鐢ㄦ埛涓棿琛ㄤ富閿泦鍚�
+ * @return 缁撴灉
+ */
+ public int deleteArdCallSessionUserByIds(String[] ids);
+
+ /**
+ * 鍒犻櫎浼氳瘽鐢ㄦ埛涓棿琛ㄤ俊鎭�
+ *
+ * @param id 浼氳瘽鐢ㄦ埛涓棿琛ㄤ富閿�
+ * @return 缁撴灉
+ */
+ public int deleteArdCallSessionUserById(String id);
+
+
+ /**
+ * 鑾峰彇浼氳瘽
+ *
+ * @param type 浼氳瘽绫诲瀷
+ * @param userId 鐢ㄦ埛id
+ * @param targetId 鐩爣id
+ * @return 缁撴灉
+ */
+ public String getSessionId(String type, String userId, String targetId);
+ public String getGroupSessionId(String type,String targetId);
+ /**
+ * 閫氳繃sessionId鍒犻櫎鍏宠仈鐢ㄦ埛
+ *
+ * @param sessionId 鐩爣id
+ * @return 缁撴灉
+ */
+ public int deleteArdCallSessionUserBySessionId(String sessionId);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/IArdCallUnreadMessagesService.java b/ard-work/src/main/java/com/ruoyi/call/service/IArdCallUnreadMessagesService.java
new file mode 100644
index 0000000..f891eaa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/service/IArdCallUnreadMessagesService.java
@@ -0,0 +1,70 @@
+package com.ruoyi.call.service;
+
+import java.util.List;
+import com.ruoyi.call.domain.ArdCallUnreadMessages;
+
+/**
+ * 鏈娑堟伅Service鎺ュ彛
+ *
+ * @author ard
+ * @date 2024-07-06
+ */
+public interface IArdCallUnreadMessagesService
+{
+ /**
+ * 鏌ヨ鏈娑堟伅
+ *
+ * @param userId 鏈娑堟伅涓婚敭
+ * @return 鏈娑堟伅
+ */
+ public ArdCallUnreadMessages selectArdCallUnreadMessagesByUserId (String userId );
+
+ /**
+ * 鏌ヨ鏈娑堟伅鍒楄〃
+ *
+ * @param ardCallUnreadMessages 鏈娑堟伅
+ * @return 鏈娑堟伅闆嗗悎
+ */
+ public List<ArdCallUnreadMessages> selectArdCallUnreadMessagesList(ArdCallUnreadMessages ardCallUnreadMessages);
+
+ /**
+ * 鏂板鏈娑堟伅
+ *
+ * @param ardCallUnreadMessages 鏈娑堟伅
+ * @return 缁撴灉
+ */
+ public int insertArdCallUnreadMessages(ArdCallUnreadMessages ardCallUnreadMessages);
+
+ /**
+ * 淇敼鏈娑堟伅
+ *
+ * @param ardCallUnreadMessages 鏈娑堟伅
+ * @return 缁撴灉
+ */
+ public int updateArdCallUnreadMessages(ArdCallUnreadMessages ardCallUnreadMessages);
+
+ /**
+ * 鎵归噺鍒犻櫎鏈娑堟伅
+ *
+ * @param userId s 闇�瑕佸垹闄ょ殑鏈娑堟伅涓婚敭闆嗗悎
+ * @return 缁撴灉
+ */
+ public int deleteArdCallUnreadMessagesByUserId(String[] userId);
+
+ /**
+ * 鍒犻櫎鏈娑堟伅淇℃伅
+ *
+ * @param userId 鏈娑堟伅涓婚敭
+ * @return 缁撴灉
+ */
+ public int deleteArdCallUnreadMessagesByUserId (String userId );
+
+ /**
+ * 娓呴櫎浼氳瘽鏈鏁伴噺
+ *
+ * @param sessionId 浼氳瘽id
+ * @param userId 鐢ㄦ埛id
+ * @return 缁撴灉
+ */
+ public int clearUnReadCount(String sessionId,String userId);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupServiceImpl.java b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupServiceImpl.java
new file mode 100644
index 0000000..cde19dc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupServiceImpl.java
@@ -0,0 +1,122 @@
+package com.ruoyi.call.service.impl;
+
+import java.util.Arrays;
+import java.util.List;
+
+import com.ruoyi.call.domain.ArdCallGroupUser;
+import com.ruoyi.call.mapper.ArdCallGroupUserMapper;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.DateUtils;
+
+import com.ruoyi.common.utils.uuid.IdUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.call.mapper.ArdCallGroupMapper;
+import com.ruoyi.call.domain.ArdCallGroup;
+import com.ruoyi.call.service.IArdCallGroupService;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+
+/**
+ * 浼氳瘽缇ょ粍Service涓氬姟灞傚鐞�
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+@Service
+public class ArdCallGroupServiceImpl implements IArdCallGroupService {
+ @Resource
+ private ArdCallGroupMapper ardCallGroupMapper;
+ @Resource
+ private ArdCallGroupUserMapper ardCallGroupUserMapper;
+
+ /**
+ * 鏌ヨ浼氳瘽缇ょ粍
+ *
+ * @param id 浼氳瘽缇ょ粍涓婚敭
+ * @return 浼氳瘽缇ょ粍
+ */
+ @Override
+ public ArdCallGroup selectArdCallGroupById(String id) {
+ return ardCallGroupMapper.selectArdCallGroupById(id);
+ }
+
+ /**
+ * 鏌ヨ浼氳瘽缇ょ粍鍒楄〃
+ *
+ * @param ardCallGroup 浼氳瘽缇ょ粍
+ * @return 浼氳瘽缇ょ粍
+ */
+ @Override
+ public List<ArdCallGroup> selectArdCallGroupList(ArdCallGroup ardCallGroup) {
+ return ardCallGroupMapper.selectArdCallGroupList(ardCallGroup);
+ }
+
+ /**
+ * 鏂板浼氳瘽缇ょ粍
+ *
+ * @param ardCallGroup 浼氳瘽缇ょ粍
+ * @return 缁撴灉
+ */
+ @Transactional
+ @Override
+ public String insertArdCallGroup(ArdCallGroup ardCallGroup) {
+ ardCallGroup.setId(IdUtils.simpleUUID());
+ ardCallGroup.setCreateTime(DateUtils.getNowDate());
+ ardCallGroup.getUserIds().stream().forEach(userId -> {
+ ArdCallGroupUser groupUser = new ArdCallGroupUser();
+ groupUser.setId(IdUtils.simpleUUID());
+ groupUser.setGroupId(ardCallGroup.getId());
+ groupUser.setUserId(userId);
+ groupUser.setCreateTime(DateUtils.getNowDate());
+ ardCallGroupUserMapper.insertArdCallGroupUser(groupUser);
+ });
+ ardCallGroupMapper.insertArdCallGroup(ardCallGroup);
+ return ardCallGroup.getId();
+ }
+
+ /**
+ * 淇敼浼氳瘽缇ょ粍
+ *
+ * @param ardCallGroup 浼氳瘽缇ょ粍
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateArdCallGroup(ArdCallGroup ardCallGroup) {
+ ardCallGroup.setUpdateBy(SecurityUtils.getUsername());
+ ardCallGroup.setUpdateTime(DateUtils.getNowDate());
+ return ardCallGroupMapper.updateArdCallGroup(ardCallGroup);
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎浼氳瘽缇ょ粍
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑浼氳瘽缇ょ粍涓婚敭
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteArdCallGroupByIds(String[] ids) {
+ Arrays.stream(ids).forEach(id -> {
+ ardCallGroupUserMapper.clearArdCallGroupUsers(id);
+ });
+ return ardCallGroupMapper.deleteArdCallGroupByIds(ids);
+ }
+
+ /**
+ * 鍒犻櫎浼氳瘽缇ょ粍淇℃伅
+ *
+ * @param id 浼氳瘽缇ょ粍涓婚敭
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteArdCallGroupById(String id) {
+ ardCallGroupUserMapper.clearArdCallGroupUsers(id);
+ return ardCallGroupMapper.deleteArdCallGroupById(id);
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupUserServiceImpl.java b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupUserServiceImpl.java
new file mode 100644
index 0000000..a2962b4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallGroupUserServiceImpl.java
@@ -0,0 +1,167 @@
+package com.ruoyi.call.service.impl;
+
+import java.util.Arrays;
+import java.util.List;
+
+import com.ruoyi.call.domain.ArdCallGroup;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.DateUtils;
+
+import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.system.mapper.SysUserMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.call.mapper.ArdCallGroupUserMapper;
+import com.ruoyi.call.domain.ArdCallGroupUser;
+import com.ruoyi.call.service.IArdCallGroupUserService;
+
+import javax.annotation.Resource;
+
+/**
+ * 缇ょ粍鐢ㄦ埛涓棿Service涓氬姟灞傚鐞�
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+@Service
+public class ArdCallGroupUserServiceImpl implements IArdCallGroupUserService {
+ @Resource
+ private ArdCallGroupUserMapper ardCallGroupUserMapper;
+ @Resource
+ private SysUserMapper sysUserMapper;
+
+ /**
+ * 鏌ヨ缇ょ粍鐢ㄦ埛涓棿
+ *
+ * @param id 缇ょ粍鐢ㄦ埛涓棿涓婚敭
+ * @return 缇ょ粍鐢ㄦ埛涓棿
+ */
+ @Override
+ public ArdCallGroupUser selectArdCallGroupUserById(String id) {
+ return ardCallGroupUserMapper.selectArdCallGroupUserById(id);
+ }
+
+ /**
+ * 鏌ヨ缇ょ粍鐢ㄦ埛涓棿鍒楄〃
+ *
+ * @param ardCallGroupUser 缇ょ粍鐢ㄦ埛涓棿
+ * @return 缇ょ粍鐢ㄦ埛涓棿
+ */
+ @Override
+ public List<ArdCallGroupUser> selectArdCallGroupUserList(ArdCallGroupUser ardCallGroupUser) {
+ return ardCallGroupUserMapper.selectArdCallGroupUserList(ardCallGroupUser);
+ }
+
+ /**
+ * 鏂板缇ょ粍鐢ㄦ埛涓棿
+ *
+ * @param ardCallGroupUser 缇ょ粍鐢ㄦ埛涓棿
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertArdCallGroupUser(ArdCallGroupUser ardCallGroupUser) {
+ ardCallGroupUser.setId(IdUtils.simpleUUID());
+ ardCallGroupUser.setUserId(SecurityUtils.getUserId());
+ ardCallGroupUser.setCreateBy(SecurityUtils.getUsername());
+ ardCallGroupUser.setCreateTime(DateUtils.getNowDate());
+ return ardCallGroupUserMapper.insertArdCallGroupUser(ardCallGroupUser);
+ }
+
+ /**
+ * 淇敼缇ょ粍鐢ㄦ埛涓棿
+ *
+ * @param ardCallGroupUser 缇ょ粍鐢ㄦ埛涓棿
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateArdCallGroupUser(ArdCallGroupUser ardCallGroupUser) {
+ ardCallGroupUser.setUpdateBy(SecurityUtils.getUsername());
+ ardCallGroupUser.setUpdateTime(DateUtils.getNowDate());
+ return ardCallGroupUserMapper.updateArdCallGroupUser(ardCallGroupUser);
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎缇ょ粍鐢ㄦ埛涓棿
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑缇ょ粍鐢ㄦ埛涓棿涓婚敭
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteArdCallGroupUserByIds(String[] ids) {
+ return ardCallGroupUserMapper.deleteArdCallGroupUserByIds(ids);
+ }
+
+ /**
+ * 鍒犻櫎缇ょ粍鐢ㄦ埛涓棿淇℃伅
+ *
+ * @param id 缇ょ粍鐢ㄦ埛涓棿涓婚敭
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteArdCallGroupUserById(String id) {
+ return ardCallGroupUserMapper.deleteArdCallGroupUserById(id);
+ }
+
+ @Override
+ public List<ArdCallGroup> getGroupListByUserId(String userId) {
+ return ardCallGroupUserMapper.getGroupListByUserId(userId);
+ }
+
+ /**
+ * 閭�璇风兢缁勭敤鎴�
+ *
+ * @param id 缇ょ粍涓婚敭
+ * @param userIds 缇ょ粍鐢ㄦ埛鏁扮粍闆嗗悎
+ * @return 缁撴灉
+ */
+ @Override
+ public int addGroupUser(String id, String[] userIds) {
+ ArdCallGroupUser ardCallGroupUser = new ArdCallGroupUser();
+ ardCallGroupUser.setGroupId(id);
+ Arrays.stream(userIds).forEach(userId -> {
+ ardCallGroupUser.setId(IdUtils.simpleUUID());
+ ardCallGroupUser.setCreateTime(DateUtils.getNowDate());
+ ardCallGroupUser.setUserId(userId);
+ ardCallGroupUserMapper.insertArdCallGroupUser(ardCallGroupUser);
+ });
+ return userIds.length;
+ }
+
+ /**
+ * 绉婚櫎缇ょ粍鐢ㄦ埛
+ *
+ * @param id 缇ょ粍涓婚敭
+ * @param userIds 缇ょ粍鐢ㄦ埛鏁扮粍闆嗗悎
+ * @return 缁撴灉
+ */
+ @Override
+ public int removeGroupUser(String id, String[] userIds) {
+ return ardCallGroupUserMapper.removeGroupUser(id, userIds);
+ }
+
+ @Override
+ public List<SysUser> notInGroupUsers(String groupId) {
+ //鑾峰彇骞冲彴鎵�鏈夌敤鎴�
+ List<SysUser> userList = sysUserMapper.selectUserList(new SysUser());
+ //鑾峰彇缇ょ粍鍐呯敤鎴�
+ ArdCallGroupUser ardCallGroupUser=new ArdCallGroupUser();
+ ardCallGroupUser.setGroupId(groupId);
+ List<ArdCallGroupUser> ardCallGroupUsers = ardCallGroupUserMapper.selectArdCallGroupUserList(ardCallGroupUser);
+ // 鎻愬彇groupList涓殑userId鍒颁竴涓猄et涓�
+ Set<String> groupUserIds = ardCallGroupUsers.stream()
+ .map(ArdCallGroupUser::getUserId)
+ .collect(Collectors.toSet());
+ // 杩囨护userList锛屽彧淇濈暀閭d簺userId涓嶅湪groupUserIds涓殑User瀵硅薄
+ List<SysUser> filteredUserList = userList.stream()
+ .filter(user -> !groupUserIds.contains(user.getUserId()))
+ .collect(Collectors.toList());
+ return filteredUserList;
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java
new file mode 100644
index 0000000..8667806
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java
@@ -0,0 +1,152 @@
+package com.ruoyi.call.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.call.domain.*;
+import com.ruoyi.call.mapper.*;
+import com.ruoyi.common.utils.DateUtils;
+
+import com.ruoyi.common.utils.MessageUtils;
+import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.utils.websocket.util.WebSocketUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.call.service.IArdCallHistoryService;
+
+import javax.annotation.Resource;
+
+import static com.ruoyi.utils.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
+
+/**
+ * 浼氳瘽鍘嗗彶Service涓氬姟灞傚鐞�
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+@Service
+public class ArdCallHistoryServiceImpl implements IArdCallHistoryService {
+ @Resource
+ private ArdCallHistoryMapper ardCallHistoryMapper;
+ @Resource
+ private ArdCallSessionMapper ardCallSessionMapper;
+ @Resource
+ private ArdCallUnreadMessagesMapper ardCallUnreadMessagesMapper;
+ @Resource
+ private ArdCallGroupUserMapper ardCallGroupUserMapper;
+
+ /**
+ * 鏌ヨ浼氳瘽鍘嗗彶
+ *
+ * @param id 浼氳瘽鍘嗗彶涓婚敭
+ * @return 浼氳瘽鍘嗗彶
+ */
+ @Override
+ public ArdCallHistory selectArdCallHistoryById(String id) {
+ return ardCallHistoryMapper.selectArdCallHistoryById(id);
+ }
+
+ /**
+ * 鏌ヨ浼氳瘽鍘嗗彶鍒楄〃
+ *
+ * @param ardCallHistory 浼氳瘽鍘嗗彶
+ * @return 浼氳瘽鍘嗗彶
+ */
+ @Override
+ public List<ArdCallHistory> selectArdCallHistoryList(ArdCallHistory ardCallHistory) {
+ return ardCallHistoryMapper.selectArdCallHistoryList(ardCallHistory);
+ }
+
+ /**
+ * 鏂板浼氳瘽鍘嗗彶
+ *
+ * @param ardCallHistory 浼氳瘽鍘嗗彶
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertArdCallHistory(ArdCallHistory ardCallHistory) {
+ ardCallHistory.setId(IdUtils.simpleUUID());
+ ardCallHistory.setCreateTime(DateUtils.getNowDate());
+ ArdCallSession ardCallSession = ardCallSessionMapper.selectArdCallSessionById(ardCallHistory.getSessionId());
+ if (ardCallSession.getType().equals("0")) {
+ //鏇存柊鍗曡亰鐢ㄦ埛鏈娑堟伅璁℃暟
+ ArdCallUnreadMessages ardCallUnreadMessages = ardCallUnreadMessagesMapper.getUnreadMessage(ardCallHistory.getSessionId(), ardCallHistory.getTargetId());
+ if (ardCallUnreadMessages == null) {
+ ardCallUnreadMessages = new ArdCallUnreadMessages();
+ ardCallUnreadMessages.setUserId(ardCallHistory.getTargetId());
+ ardCallUnreadMessages.setSessionId(ardCallHistory.getSessionId());
+ ardCallUnreadMessages.setUnreadCount(1);
+ ardCallUnreadMessagesMapper.insertArdCallUnreadMessages(ardCallUnreadMessages);
+ } else {
+ ardCallUnreadMessages.setUnreadCount(ardCallUnreadMessages.getUnreadCount() + 1);
+ ardCallUnreadMessagesMapper.updateArdCallUnreadMessages(ardCallUnreadMessages);
+ }
+ //websocket鍙戦�佺粰targetId
+ WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(ardCallHistory.getTargetId()),ardCallHistory.getContent());
+ } else {
+ //鏇存柊缇よ亰鐢ㄦ埛鏈娑堟伅璁℃暟
+ ArdCallGroupUser ardCallGroupUser = new ArdCallGroupUser();
+ ardCallGroupUser.setGroupId(ardCallHistory.getTargetId());
+ List<ArdCallGroupUser> ardCallGroupUsers = ardCallGroupUserMapper.selectArdCallGroupUserList(ardCallGroupUser);
+ ardCallGroupUsers.stream().forEach(groupUser -> {
+ if (!ardCallHistory.getUserId().equals(groupUser.getUserId())) {
+ //瀵圭兢閲岄櫎浜嗚嚜宸卞鍏朵粬鐢ㄦ埛鏇存柊鏈娑堟伅
+ ArdCallUnreadMessages ardCallUnreadMessages = ardCallUnreadMessagesMapper.getUnreadMessage(ardCallHistory.getSessionId(), groupUser.getUserId());
+ if (ardCallUnreadMessages == null) {
+ ardCallUnreadMessages = new ArdCallUnreadMessages();
+ ardCallUnreadMessages.setUserId(groupUser.getUserId());
+ ardCallUnreadMessages.setSessionId(ardCallHistory.getSessionId());
+ ardCallUnreadMessages.setUnreadCount(1);
+ ardCallUnreadMessagesMapper.insertArdCallUnreadMessages(ardCallUnreadMessages);
+ } else {
+ ardCallUnreadMessages.setUnreadCount(ardCallUnreadMessages.getUnreadCount() + 1);
+ ardCallUnreadMessagesMapper.updateArdCallUnreadMessages(ardCallUnreadMessages);
+ }
+ }
+ //websocket鍙戦�佺粰targetId
+ WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(groupUser.getUserId()),ardCallHistory.getContent());
+ });
+
+ }
+ return ardCallHistoryMapper.insertArdCallHistory(ardCallHistory);
+ }
+
+ /**
+ * 淇敼浼氳瘽鍘嗗彶
+ *
+ * @param ardCallHistory 浼氳瘽鍘嗗彶
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateArdCallHistory(ArdCallHistory ardCallHistory) {
+ ardCallHistory.setUpdateBy(SecurityUtils.getUsername());
+ ardCallHistory.setUpdateTime(DateUtils.getNowDate());
+ return ardCallHistoryMapper.updateArdCallHistory(ardCallHistory);
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎浼氳瘽鍘嗗彶
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑浼氳瘽鍘嗗彶涓婚敭
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteArdCallHistoryByIds(String[] ids) {
+ return ardCallHistoryMapper.deleteArdCallHistoryByIds(ids);
+ }
+
+ /**
+ * 鍒犻櫎浼氳瘽鍘嗗彶淇℃伅
+ *
+ * @param id 浼氳瘽鍘嗗彶涓婚敭
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteArdCallHistoryById(String id) {
+ return ardCallHistoryMapper.deleteArdCallHistoryById(id);
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionServiceImpl.java b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionServiceImpl.java
new file mode 100644
index 0000000..7043f4f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionServiceImpl.java
@@ -0,0 +1,174 @@
+package com.ruoyi.call.service.impl;
+
+import com.ruoyi.call.domain.ArdCallGroup;
+import com.ruoyi.call.domain.ArdCallSession;
+import com.ruoyi.call.domain.ArdCallSessionUser;
+import com.ruoyi.call.mapper.ArdCallSessionMapper;
+import com.ruoyi.call.service.IArdCallGroupService;
+import com.ruoyi.call.service.IArdCallGroupUserService;
+import com.ruoyi.call.service.IArdCallSessionService;
+import com.ruoyi.call.service.IArdCallSessionUserService;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.uuid.IdUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 瑙嗛浼氳瘽Service涓氬姟灞傚鐞�
+ *
+ * @author ard
+ * @date 2024-07-03
+ */
+@Service
+public class ArdCallSessionServiceImpl implements IArdCallSessionService {
+ @Resource
+ private ArdCallSessionMapper ardCallSessionMapper;
+ @Resource
+ private IArdCallSessionUserService ardCallSessionUserService;
+ @Resource
+ private IArdCallGroupService ardCallGroupService;
+
+ /**
+ * 鏌ヨ瑙嗛浼氳瘽
+ *
+ * @param id 瑙嗛浼氳瘽涓婚敭
+ * @return 瑙嗛浼氳瘽
+ */
+ @Override
+ public ArdCallSession selectArdCallSessionById(String id) {
+ return ardCallSessionMapper.selectArdCallSessionById(id);
+ }
+
+ /**
+ * 鏌ヨ瑙嗛浼氳瘽鍒楄〃
+ *
+ * @param ardCallSession 瑙嗛浼氳瘽
+ * @return 瑙嗛浼氳瘽
+ */
+ @Override
+ public List<ArdCallSession> selectArdCallSessionList(ArdCallSession ardCallSession) {
+ List<ArdCallSession> ardCallSessions = ardCallSessionMapper.selectArdCallSessionList(ardCallSession);
+ return ardCallSessions;
+ }
+
+ /**
+ * 鏂板瑙嗛浼氳瘽
+ *
+ * @param ardCallSession 瑙嗛浼氳瘽
+ * @return 缁撴灉
+ */
+ @Override
+ public String insertArdCallSession(ArdCallSession ardCallSession) {
+ ardCallSession.setId(IdUtils.simpleUUID());
+ ardCallSession.setCreateTime(DateUtils.getNowDate());
+ ardCallSessionMapper.insertArdCallSession(ardCallSession);
+ return ardCallSession.getId();
+ }
+
+ /**
+ * 淇敼瑙嗛浼氳瘽
+ *
+ * @param ardCallSession 瑙嗛浼氳瘽
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateArdCallSession(ArdCallSession ardCallSession) {
+ ardCallSession.setUpdateBy(SecurityUtils.getUsername());
+ ardCallSession.setUpdateTime(DateUtils.getNowDate());
+ return ardCallSessionMapper.updateArdCallSession(ardCallSession);
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎瑙嗛浼氳瘽
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑瑙嗛浼氳瘽涓婚敭
+ * @return 缁撴灉
+ */
+ @Transactional
+ @Override
+ public int
+ deleteArdCallSessionByIds(String[] ids) {
+ Arrays.stream(ids).forEach(id -> {
+ ardCallSessionUserService.deleteArdCallSessionUserBySessionId(id);
+ });
+ return ardCallSessionMapper.deleteArdCallSessionByIds(ids);
+ }
+
+ /**
+ * 鍒犻櫎瑙嗛浼氳瘽淇℃伅
+ *
+ * @param id 瑙嗛浼氳瘽涓婚敭
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteArdCallSessionById(String id) {
+ return ardCallSessionMapper.deleteArdCallSessionById(id);
+ }
+
+
+ /**
+ * 鑾峰彇浼氳瘽
+ *
+ * @param type 浼氳瘽绫诲瀷
+ * @param userId 浼氳瘽鍙戣捣鏂�
+ * @param targetId 浼氳瘽鎺ユ敹鏂�
+ * @return 缁撴灉
+ */
+ @Override
+ public String getSession(String type, String userId, String targetId) {
+ String sessionId = "";
+ if (type.equals("0")) {
+ //鍗曡亰
+ sessionId = ardCallSessionUserService.getSessionId(type, userId, targetId);
+ if (StringUtils.isEmpty(sessionId)) {
+ //鍒涘缓鍗曡亰鍙屾柟鐨勪細璇�
+ ArdCallSession ardCallSession = new ArdCallSession();
+ ardCallSession.setType(type);
+ sessionId = insertArdCallSession(ardCallSession);
+ ArdCallSessionUser ardCallSessionUser = new ArdCallSessionUser();
+ ardCallSessionUser.setSessionId(sessionId);
+ ardCallSessionUser.setUserId(userId);
+ ardCallSessionUser.setTargetId(targetId);
+ ardCallSessionUser.setType(type);
+ ardCallSessionUserService.insertArdCallSessionUser(ardCallSessionUser);//鍒涘缓涓诲彨鍏宠仈
+ ardCallSessionUser.setUserId(targetId);
+ ardCallSessionUser.setTargetId(userId);
+ ardCallSessionUserService.insertArdCallSessionUser(ardCallSessionUser);//鍒涘缓琚彨鍏宠仈
+ }
+ } else {
+ //缇よ亰
+ sessionId = ardCallSessionUserService.getGroupSessionId(type, targetId);
+ if (StringUtils.isEmpty(sessionId)) {
+ //鑻ヤ笉瀛樺湪缇よ亰session鐩存帴鍒欏垎鍒垱寤烘墍鏈夌兢鐢ㄦ埛鐨剆ession
+ ArdCallSession ardCallSession = new ArdCallSession();
+ ardCallSession.setType(type);
+ sessionId = insertArdCallSession(ardCallSession);
+
+ //鑾峰彇缇ょ敤鎴峰垪琛�
+ ArdCallGroup ardCallGroup = ardCallGroupService.selectArdCallGroupById(targetId);
+ if(ardCallGroup!=null)
+ {
+ String finalSessionId = sessionId;
+ ardCallGroup.getArdCallGroupUsers().stream().forEach(groupUser -> {
+ ArdCallSessionUser ardCallSessionUser = new ArdCallSessionUser();
+ ardCallSessionUser.setSessionId(finalSessionId);
+ ardCallSessionUser.setType(type);
+ ardCallSessionUser.setUserId(groupUser.getUserId());
+ ardCallSessionUser.setTargetId(targetId);
+ ardCallSessionUserService.insertArdCallSessionUser(ardCallSessionUser);
+ });
+ }
+ } else {
+ //鑾峰彇鑷繁鐨剆ession
+ sessionId = ardCallSessionUserService.getSessionId(type, userId, targetId);
+ }
+ }
+ return sessionId;
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionUserServiceImpl.java b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionUserServiceImpl.java
new file mode 100644
index 0000000..13c2fdf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallSessionUserServiceImpl.java
@@ -0,0 +1,147 @@
+package com.ruoyi.call.service.impl;
+
+import java.util.Collections;
+import java.util.List;
+
+import com.ruoyi.call.compare.ArdCallSessionUserComparator;
+import com.ruoyi.call.domain.ArdCallGroupUser;
+import com.ruoyi.call.domain.ArdCallHistory;
+import com.ruoyi.call.domain.ArdCallUnreadMessages;
+import com.ruoyi.call.mapper.ArdCallGroupUserMapper;
+import com.ruoyi.call.mapper.ArdCallHistoryMapper;
+import com.ruoyi.call.mapper.ArdCallUnreadMessagesMapper;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.uuid.IdUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.stream.Collectors;
+
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.call.mapper.ArdCallSessionUserMapper;
+import com.ruoyi.call.domain.ArdCallSessionUser;
+import com.ruoyi.call.service.IArdCallSessionUserService;
+
+import javax.annotation.Resource;
+
+/**
+ * 浼氳瘽鐢ㄦ埛涓棿琛⊿ervice涓氬姟灞傚鐞�
+ *
+ * @author ard
+ * @date 2024-07-04
+ */
+@Service
+public class ArdCallSessionUserServiceImpl implements IArdCallSessionUserService {
+ @Resource
+ private ArdCallSessionUserMapper ardCallSessionUserMapper;
+ @Resource
+ private ArdCallHistoryMapper ardCallHistoryMapper;
+ @Resource
+ private ArdCallSessionUserComparator ardCallSessionUserComparator;
+ @Resource
+ private ArdCallUnreadMessagesMapper ardCallUnreadMessagesMapper;
+
+ /**
+ * 鏌ヨ浼氳瘽鐢ㄦ埛涓棿琛�
+ *
+ * @param id 浼氳瘽鐢ㄦ埛涓棿琛ㄤ富閿�
+ * @return 浼氳瘽鐢ㄦ埛涓棿琛�
+ */
+ @Override
+ public ArdCallSessionUser selectArdCallSessionUserById(String id) {
+ return ardCallSessionUserMapper.selectArdCallSessionUserById(id);
+ }
+
+ /**
+ * 鏌ヨ浼氳瘽鐢ㄦ埛涓棿琛ㄥ垪琛�
+ *
+ * @param ardCallSessionUser 浼氳瘽鐢ㄦ埛涓棿琛�
+ * @return 浼氳瘽鐢ㄦ埛涓棿琛�
+ */
+ @Override
+ public List<ArdCallSessionUser> selectArdCallSessionUserList(ArdCallSessionUser ardCallSessionUser) {
+ //鑾峰彇鐢ㄦ埛鐨勪細璇�/鏈娑堟伅鏁伴噺/鏈�鍚庝竴鏉℃秷鎭�
+ List<ArdCallSessionUser> ardCallSessionUsers = ardCallSessionUserMapper.selectArdCallSessionUserList(ardCallSessionUser);
+ ardCallSessionUsers.stream().forEach(callSessionUser -> {
+ ArdCallUnreadMessages ardCallUnreadMessages = ardCallUnreadMessagesMapper.getUnreadMessage(callSessionUser.getSessionId(), ardCallSessionUser.getUserId());
+ if (ardCallUnreadMessages != null) {
+ callSessionUser.setUnReadCount(ardCallUnreadMessages.getUnreadCount());
+ } else {
+ callSessionUser.setUnReadCount(0);
+ }
+ //鑾峰彇鏈�鍚庝竴鏉℃秷鎭疄浣�
+ ArdCallHistory ardCallHistory = ardCallHistoryMapper.selectLastArdCallHistory(callSessionUser.getSessionId());
+ callSessionUser.setArdCallHistory(ardCallHistory);
+ });
+ //杩囨护鎺夋病鏈夊巻鍙茶褰曠殑浼氳瘽
+ ardCallSessionUsers = ardCallSessionUsers.stream().filter(obj -> obj.getArdCallHistory() != null).collect(Collectors.toList());
+ // 浣跨敤瀹氫箟鐨� ardCallSessionUserComparator 杩涜鎺掑簭
+ Collections.sort(ardCallSessionUsers, ardCallSessionUserComparator);
+ return ardCallSessionUsers;
+ }
+
+ /**
+ * 鏂板浼氳瘽鐢ㄦ埛涓棿琛�
+ *
+ * @param ardCallSessionUser 浼氳瘽鐢ㄦ埛涓棿琛�
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertArdCallSessionUser(ArdCallSessionUser ardCallSessionUser) {
+ ardCallSessionUser.setId(IdUtils.simpleUUID());
+ ardCallSessionUser.setCreateTime(DateUtils.getNowDate());
+ return ardCallSessionUserMapper.insertArdCallSessionUser(ardCallSessionUser);
+ }
+
+ /**
+ * 淇敼浼氳瘽鐢ㄦ埛涓棿琛�
+ *
+ * @param ardCallSessionUser 浼氳瘽鐢ㄦ埛涓棿琛�
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateArdCallSessionUser(ArdCallSessionUser ardCallSessionUser) {
+ return ardCallSessionUserMapper.updateArdCallSessionUser(ardCallSessionUser);
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎浼氳瘽鐢ㄦ埛涓棿琛�
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑浼氳瘽鐢ㄦ埛涓棿琛ㄤ富閿�
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteArdCallSessionUserByIds(String[] ids) {
+ return ardCallSessionUserMapper.deleteArdCallSessionUserByIds(ids);
+ }
+
+ /**
+ * 鍒犻櫎浼氳瘽鐢ㄦ埛涓棿琛ㄤ俊鎭�
+ *
+ * @param id 浼氳瘽鐢ㄦ埛涓棿琛ㄤ富閿�
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteArdCallSessionUserById(String id) {
+ return ardCallSessionUserMapper.deleteArdCallSessionUserById(id);
+ }
+
+
+ @Override
+ public String getSessionId(String type, String userId, String targetId) {
+ return ardCallSessionUserMapper.getSessionId(type, userId, targetId);
+ }
+
+ @Override
+ public int deleteArdCallSessionUserBySessionId(String sessionId) {
+ return ardCallSessionUserMapper.deleteArdCallSessionUserBySessionId(sessionId);
+ }
+
+ @Override
+ public String getGroupSessionId(String type, String targetId) {
+ return ardCallSessionUserMapper.getGroupSessionId(type, targetId);
+ }
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallUnreadMessagesServiceImpl.java b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallUnreadMessagesServiceImpl.java
new file mode 100644
index 0000000..2a6644c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallUnreadMessagesServiceImpl.java
@@ -0,0 +1,108 @@
+package com.ruoyi.call.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.utils.uuid.IdUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.ArrayList;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.call.mapper.ArdCallUnreadMessagesMapper;
+import com.ruoyi.call.domain.ArdCallUnreadMessages;
+import com.ruoyi.call.service.IArdCallUnreadMessagesService;
+
+import javax.annotation.Resource;
+
+/**
+ * 鏈娑堟伅Service涓氬姟灞傚鐞�
+ *
+ * @author ard
+ * @date 2024-07-06
+ */
+@Service
+public class ArdCallUnreadMessagesServiceImpl implements IArdCallUnreadMessagesService {
+ @Resource
+ private ArdCallUnreadMessagesMapper ardCallUnreadMessagesMapper;
+
+ /**
+ * 鏌ヨ鏈娑堟伅
+ *
+ * @param userId 鏈娑堟伅涓婚敭
+ * @return 鏈娑堟伅
+ */
+ @Override
+ public ArdCallUnreadMessages selectArdCallUnreadMessagesByUserId (String userId ) {
+ return ardCallUnreadMessagesMapper.selectArdCallUnreadMessagesByUserId (userId );
+ }
+
+ /**
+ * 鏌ヨ鏈娑堟伅鍒楄〃
+ *
+ * @param ardCallUnreadMessages 鏈娑堟伅
+ * @return 鏈娑堟伅
+ */
+ @Override
+ public List<ArdCallUnreadMessages> selectArdCallUnreadMessagesList(ArdCallUnreadMessages ardCallUnreadMessages) {
+ return ardCallUnreadMessagesMapper.selectArdCallUnreadMessagesList(ardCallUnreadMessages);
+ }
+
+ /**
+ * 鏂板鏈娑堟伅
+ *
+ * @param ardCallUnreadMessages 鏈娑堟伅
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertArdCallUnreadMessages(ArdCallUnreadMessages ardCallUnreadMessages) {
+ return ardCallUnreadMessagesMapper.insertArdCallUnreadMessages(ardCallUnreadMessages);
+ }
+
+ /**
+ * 淇敼鏈娑堟伅
+ *
+ * @param ardCallUnreadMessages 鏈娑堟伅
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateArdCallUnreadMessages(ArdCallUnreadMessages ardCallUnreadMessages) {
+ return ardCallUnreadMessagesMapper.updateArdCallUnreadMessages(ardCallUnreadMessages);
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎鏈娑堟伅
+ *
+ * @param userId s 闇�瑕佸垹闄ょ殑鏈娑堟伅涓婚敭
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteArdCallUnreadMessagesByUserId(String[] userId) {
+ return ardCallUnreadMessagesMapper.deleteArdCallUnreadMessagesByUserId(userId);
+ }
+
+ /**
+ * 鍒犻櫎鏈娑堟伅淇℃伅
+ *
+ * @param userId 鏈娑堟伅涓婚敭
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteArdCallUnreadMessagesByUserId (String userId ) {
+ return ardCallUnreadMessagesMapper.deleteArdCallUnreadMessagesByUserId (userId );
+ }
+ /**
+ * 娓呴櫎鏈娑堟伅
+ *
+ * @param userId 娓呴櫎鏈娑堟伅
+ * @return 缁撴灉
+ */
+ @Override
+ public int clearUnReadCount(String sessionId, String userId) {
+ ArdCallUnreadMessages ardCallUnreadMessages = ardCallUnreadMessagesMapper.getUnreadMessage(sessionId,userId);
+ if (ardCallUnreadMessages != null) {
+ ardCallUnreadMessages.setUnreadCount(0);
+ ardCallUnreadMessagesMapper.updateArdCallUnreadMessages(ardCallUnreadMessages);
+ }
+ return 1;
+ }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java b/ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java
index 82af738..5b1dcb4 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/websocket/service/ChatServerEndpoint.java
@@ -1,26 +1,14 @@
package com.ruoyi.utils.websocket.service;
-import com.alibaba.fastjson2.JSONObject;
-import com.ruoyi.app.position.domain.ArdAppPosition;
-import com.ruoyi.app.position.service.IArdAppPositionService;
-import com.ruoyi.app.position.service.impl.AppPositionPush;
import com.ruoyi.app.position.service.impl.AppPositionPushService;
-import com.ruoyi.app.position.service.impl.ArdAppPositionServiceImpl;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.utils.spring.SpringUtils;
-import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.utils.websocket.util.WebSocketUtils;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import javax.annotation.Resource;
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
-import java.util.*;
-import java.util.stream.Collectors;
/**
* @ClassName ChatServerEndpoint
@@ -40,11 +28,6 @@
String message = "鐢ㄦ埛[" + userId + "] 鎴愬姛杩炴帴锛�";
log.info("鐢ㄦ埛鐧诲綍锛�" + message);
WebSocketUtils.sendMessage(session, message);
- //region 鏃ф柟娉�
-// //姣忎釜鐢ㄦ埛杩炴帴鏃讹紝鍚姩鍒濆鎵�鏈塧pp鐢ㄦ埛浣嶇疆鍙戦��
-// AppPositionPush.initDataMap.put(userId,AppPositionPush.getAppPositionList());
-// AppPositionPush.initPushTask(userId,session,3000);
- //endregion
}
@OnMessage
@@ -52,7 +35,7 @@
log.info("鏀跺埌娑堟伅锛�" + message);
Session session = WebSocketUtils.ONLINE_USER_SESSIONS.get(userId);
WebSocketUtils.sendMessage(session, message);
-// sendMessageAll("鐢ㄦ埛[" + userid + "] : " + message);
+ //sendMessageAll("鐢ㄦ埛[" + userid + "] : " + message);
// 鏍规嵁鐢ㄦ埛鏂扮殑棰戠巼閲嶆柊璋冩暣瀹氭椂浠诲姟
AppPositionPushService.messageHandler(userId,message);
}
diff --git a/ard-work/src/main/resources/mapper/call/ArdCallGroupMapper.xml b/ard-work/src/main/resources/mapper/call/ArdCallGroupMapper.xml
new file mode 100644
index 0000000..2d33545
--- /dev/null
+++ b/ard-work/src/main/resources/mapper/call/ArdCallGroupMapper.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.call.mapper.ArdCallGroupMapper">
+
+ <resultMap type="ArdCallGroup" id="ArdCallGroupResult">
+ <result property="id" column="id" />
+ <result property="name" column="name" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <collection property="ardCallGroupUsers" ofType="ArdCallGroupUser">
+ <result property="id" column="id" />
+ <result property="groupId" column="group_id" />
+ <result property="userId" column="user_id" />
+ <association property="sysUser" column="user_id" select="com.ruoyi.system.mapper.SysUserMapper.selectUserById"/>
+ </collection>
+ </resultMap>
+
+
+ <sql id="selectArdCallGroupVo">
+ select acg.*,acgu.* from ard_call_group acg
+ left join ard_call_group_user acgu on acg.id = acgu.group_id
+ </sql>
+
+ <select id="selectArdCallGroupList" parameterType="ArdCallGroup" resultMap="ArdCallGroupResult">
+ <include refid="selectArdCallGroupVo"/>
+ <where>
+ <if test="name != null and name != ''"> and name like '%'||#{name}||'%'</if>
+ </where>
+ </select>
+
+ <select id="selectArdCallGroupById" parameterType="String" resultMap="ArdCallGroupResult">
+ <include refid="selectArdCallGroupVo"/>
+ where acg.id = #{id}
+ </select>
+
+ <insert id="insertArdCallGroup" parameterType="ArdCallGroup">
+ insert into ard_call_group
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">id,</if>
+ <if test="name != null">name,</if>
+ <if test="createBy != null">create_by,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="updateBy != null">update_by,</if>
+ <if test="updateTime != null">update_time,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">#{id},</if>
+ <if test="name != null">#{name},</if>
+ <if test="createBy != null">#{createBy},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="updateBy != null">#{updateBy},</if>
+ <if test="updateTime != null">#{updateTime},</if>
+ </trim>
+ </insert>
+
+ <update id="updateArdCallGroup" parameterType="ArdCallGroup">
+ update ard_call_group
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="name != null">name = #{name},</if>
+ <if test="createBy != null">create_by = #{createBy},</if>
+ <if test="createTime != null">create_time = #{createTime},</if>
+ <if test="updateBy != null">update_by = #{updateBy},</if>
+ <if test="updateTime != null">update_time = #{updateTime},</if>
+ </trim>
+ where id = #{id}
+ </update>
+
+ <delete id="deleteArdCallGroupById" parameterType="String">
+ delete from ard_call_group where id = #{id}
+ </delete>
+
+ <delete id="deleteArdCallGroupByIds" parameterType="String">
+ delete from ard_call_group where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </delete>
+</mapper>
\ No newline at end of file
diff --git a/ard-work/src/main/resources/mapper/call/ArdCallGroupUserMapper.xml b/ard-work/src/main/resources/mapper/call/ArdCallGroupUserMapper.xml
new file mode 100644
index 0000000..9df089b
--- /dev/null
+++ b/ard-work/src/main/resources/mapper/call/ArdCallGroupUserMapper.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.call.mapper.ArdCallGroupUserMapper">
+
+ <resultMap type="ArdCallGroupUser" id="ArdCallGroupUserResult">
+ <result property="id" column="id"/>
+ <result property="groupId" column="group_id"/>
+ <result property="userId" column="user_id"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ </resultMap>
+ <resultMap type="ArdCallGroup" id="ArdCallGroupResult">
+ <result property="id" column="id"/>
+ <result property="name" column="name"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ </resultMap>
+ <sql id="selectArdCallGroupUserVo">
+ select id, group_id, user_id, create_by, create_time, update_by, update_time
+ from ard_call_group_user
+ </sql>
+
+ <select id="selectArdCallGroupUserList" parameterType="ArdCallGroupUser" resultMap="ArdCallGroupUserResult">
+ <include refid="selectArdCallGroupUserVo"/>
+ <where>
+ <if test="groupId != null and groupId != ''">and group_id = #{groupId}</if>
+ <if test="userId != null and userId != ''">and user_id = #{userId}</if>
+ </where>
+ </select>
+
+ <select id="selectArdCallGroupUserById" parameterType="String" resultMap="ArdCallGroupUserResult">
+ <include refid="selectArdCallGroupUserVo"/>
+ where id = #{id}
+ </select>
+
+ <insert id="insertArdCallGroupUser" parameterType="ArdCallGroupUser">
+ insert into ard_call_group_user
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">id,</if>
+ <if test="groupId != null">group_id,</if>
+ <if test="userId != null">user_id,</if>
+ <if test="createBy != null">create_by,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="updateBy != null">update_by,</if>
+ <if test="updateTime != null">update_time,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">#{id},</if>
+ <if test="groupId != null">#{groupId},</if>
+ <if test="userId != null">#{userId},</if>
+ <if test="createBy != null">#{createBy},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="updateBy != null">#{updateBy},</if>
+ <if test="updateTime != null">#{updateTime},</if>
+ </trim>
+ </insert>
+
+ <update id="updateArdCallGroupUser" parameterType="ArdCallGroupUser">
+ update ard_call_group_user
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="groupId != null">group_id = #{groupId},</if>
+ <if test="userId != null">user_id = #{userId},</if>
+ <if test="createBy != null">create_by = #{createBy},</if>
+ <if test="createTime != null">create_time = #{createTime},</if>
+ <if test="updateBy != null">update_by = #{updateBy},</if>
+ <if test="updateTime != null">update_time = #{updateTime},</if>
+ </trim>
+ where id = #{id}
+ </update>
+
+ <delete id="deleteArdCallGroupUserById" parameterType="String">
+ delete
+ from ard_call_group_user
+ where id = #{id}
+ </delete>
+
+ <delete id="deleteArdCallGroupUserByIds" parameterType="String">
+ delete from ard_call_group_user where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </delete>
+ <delete id="clearArdCallGroupUsers" parameterType="String">
+ delete
+ from ard_call_group_user
+ where group_id = #{groupId}
+ </delete>
+
+ <delete id="removeGroupUser">
+ delete from ard_call_group_user where group_id = #{groupId} and user_id in
+ <foreach item="userId" collection="userIds" open="(" separator="," close=")">
+ #{userId}
+ </foreach>
+ </delete>
+ <select id="getGroupListByUserId" resultMap="ArdCallGroupResult">
+ select acg.*
+ from ard_call_group_user acgu
+ left join ard_call_group acg on acg.id = acgu.group_id
+ where acgu.user_id = #{userId}
+ </select>
+
+</mapper>
\ No newline at end of file
diff --git a/ard-work/src/main/resources/mapper/call/ArdCallHistoryMapper.xml b/ard-work/src/main/resources/mapper/call/ArdCallHistoryMapper.xml
new file mode 100644
index 0000000..75c08a0
--- /dev/null
+++ b/ard-work/src/main/resources/mapper/call/ArdCallHistoryMapper.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.call.mapper.ArdCallHistoryMapper">
+
+ <resultMap type="ArdCallHistory" id="ArdCallHistoryResult">
+ <result property="id" column="id"/>
+ <result property="type" column="type"/>
+ <result property="content" column="content"/>
+ <result property="sessionId" column="session_id"/>
+ <result property="userId" column="user_id"/>
+ <result property="targetId" column="target_id"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ </resultMap>
+
+ <sql id="selectArdCallHistoryVo">
+ select id,
+ type,
+ content,
+ session_id,
+ user_id,
+ target_id,
+ create_by,
+ create_time,
+ update_by,
+ update_time
+ from ard_call_history
+ </sql>
+
+ <select id="selectArdCallHistoryList" parameterType="ArdCallHistory" resultMap="ArdCallHistoryResult">
+ <include refid="selectArdCallHistoryVo"/>
+ <where>
+ <if test="sessionId != null and sessionId != ''">and session_id= #{sessionId}</if>
+ <if test="userId != null and userId != ''">and user_id = #{userId}</if>
+ <if test="targetId != null and targetId != ''">and target_id = #{targetId}</if>
+ <if test="type != null and type != ''">and type = #{type}</if>
+ <if test="content != null and content != ''">and content = #{content}</if>
+ </where>
+ order by create_time desc
+ </select>
+
+ <select id="selectArdCallHistoryById" parameterType="String" resultMap="ArdCallHistoryResult">
+ <include refid="selectArdCallHistoryVo"/>
+ where id = #{id}
+ </select>
+
+ <insert id="insertArdCallHistory" parameterType="ArdCallHistory">
+ insert into ard_call_history
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">id,</if>
+ <if test="type != null">type,</if>
+ <if test="content != null">content,</if>
+ <if test="sessionId != null">session_id,</if>
+ <if test="userId != null">user_id,</if>
+ <if test="targetId != null">target_id,</if>
+ <if test="createBy != null">create_by,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="updateBy != null">update_by,</if>
+ <if test="updateTime != null">update_time,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">#{id},</if>
+ <if test="type != null">#{type},</if>
+ <if test="content != null">#{content},</if>
+ <if test="sessionId != null">#{sessionId},</if>
+ <if test="userId != null">#{userId},</if>
+ <if test="targetId != null">#{targetId},</if>
+ <if test="createBy != null">#{createBy},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="updateBy != null">#{updateBy},</if>
+ <if test="updateTime != null">#{updateTime},</if>
+ </trim>
+ </insert>
+
+ <update id="updateArdCallHistory" parameterType="ArdCallHistory">
+ update ard_call_history
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="type != null">type = #{type},</if>
+ <if test="content != null">content = #{content},</if>
+ <if test="sessionId != null">session_id = #{sessionId},</if>
+ <if test="userId != null">user_id = #{userId},</if>
+ <if test="createBy != null">create_by = #{createBy},</if>
+ <if test="createTime != null">create_time = #{createTime},</if>
+ <if test="updateBy != null">update_by = #{updateBy},</if>
+ <if test="updateTime != null">update_time = #{updateTime},</if>
+ </trim>
+ where id = #{id}
+ </update>
+
+ <delete id="deleteArdCallHistoryById" parameterType="String">
+ delete
+ from ard_call_history
+ where id = #{id}
+ </delete>
+
+ <delete id="deleteArdCallHistoryByIds" parameterType="String">
+ delete from ard_call_history where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </delete>
+
+ <select id="selectLastArdCallHistory" parameterType="String" resultType="ArdCallHistory">
+ select *
+ from ard_call_history
+ where session_id = #{sessionId}
+ order by create_time desc limit 1
+ </select>
+
+</mapper>
\ No newline at end of file
diff --git a/ard-work/src/main/resources/mapper/call/ArdCallSessionMapper.xml b/ard-work/src/main/resources/mapper/call/ArdCallSessionMapper.xml
new file mode 100644
index 0000000..899d30e
--- /dev/null
+++ b/ard-work/src/main/resources/mapper/call/ArdCallSessionMapper.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.call.mapper.ArdCallSessionMapper">
+
+ <resultMap type="ArdCallSession" id="ArdCallSessionResult">
+ <result property="id" column="id"/>
+ <result property="type" column="type"/>
+ <result property="userId" column="user_id"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ </resultMap>
+
+ <sql id="selectArdCallSessionVo">
+ select id, type, user_id, create_by, create_time, update_by, update_time
+ from ard_call_session
+ </sql>
+
+ <select id="selectArdCallSessionList" parameterType="ArdCallSession" resultMap="ArdCallSessionResult">
+ <include refid="selectArdCallSessionVo"/>
+ <where>
+ <if test="type != null and type != ''">and type = #{type}</if>
+ </where>
+ </select>
+
+ <select id="selectArdCallSessionById" parameterType="String" resultMap="ArdCallSessionResult">
+ <include refid="selectArdCallSessionVo"/>
+ where id = #{id}
+ </select>
+
+ <insert id="insertArdCallSession" parameterType="ArdCallSession">
+ insert into ard_call_session
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">id,</if>
+ <if test="type != null">type,</if>
+ <if test="userId != null">user_id,</if>
+ <if test="createBy != null">create_by,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="updateBy != null">update_by,</if>
+ <if test="updateTime != null">update_time,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">#{id},</if>
+ <if test="type != null">#{type},</if>
+ <if test="userId != null">#{userId},</if>
+ <if test="createBy != null">#{createBy},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="updateBy != null">#{updateBy},</if>
+ <if test="updateTime != null">#{updateTime},</if>
+ </trim>
+ </insert>
+
+ <update id="updateArdCallSession" parameterType="ArdCallSession">
+ update ard_call_session
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="type != null">type = #{type},</if>
+ <if test="userId != null">user_id = #{userId},</if>
+ <if test="createBy != null">create_by = #{createBy},</if>
+ <if test="createTime != null">create_time = #{createTime},</if>
+ <if test="updateBy != null">update_by = #{updateBy},</if>
+ <if test="updateTime != null">update_time = #{updateTime},</if>
+ </trim>
+ where id = #{id}
+ </update>
+
+ <delete id="deleteArdCallSessionById" parameterType="String">
+ delete
+ from ard_call_session
+ where id = #{id}
+ </delete>
+
+ <delete id="deleteArdCallSessionByIds" parameterType="String">
+ delete from ard_call_session where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </delete>
+</mapper>
\ No newline at end of file
diff --git a/ard-work/src/main/resources/mapper/call/ArdCallSessionUserMapper.xml b/ard-work/src/main/resources/mapper/call/ArdCallSessionUserMapper.xml
new file mode 100644
index 0000000..01cde9a
--- /dev/null
+++ b/ard-work/src/main/resources/mapper/call/ArdCallSessionUserMapper.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.call.mapper.ArdCallSessionUserMapper">
+
+ <resultMap type="ArdCallSessionUser" id="ArdCallSessionUserResult">
+ <result property="id" column="id"/>
+ <result property="sessionId" column="session_id"/>
+ <result property="type" column="type"/>
+ <result property="userId" column="user_id"/>
+ <result property="targetId" column="target_id"/>
+ </resultMap>
+
+ <sql id="selectArdCallSessionUserVo">
+ select id, session_id, type, user_id,target_id
+ from ard_call_session_user
+ </sql>
+
+ <select id="selectArdCallSessionUserList" parameterType="ArdCallSessionUser" resultMap="ArdCallSessionUserResult">
+ <include refid="selectArdCallSessionUserVo"/>
+ <where>
+ <if test="sessionId != null and sessionId != ''">and session_id = #{sessionId}</if>
+ <if test="type != null and type != ''">and type = #{type}</if>
+ <if test="userId != null and userId != ''">and user_id = #{userId}</if>
+ <if test="targetId != null and targetId != ''">and target_id = #{targetId}</if>
+ </where>
+ </select>
+
+ <select id="selectArdCallSessionUserById" parameterType="String" resultMap="ArdCallSessionUserResult">
+ <include refid="selectArdCallSessionUserVo"/>
+ where id = #{id}
+ </select>
+
+ <insert id="insertArdCallSessionUser" parameterType="ArdCallSessionUser">
+ insert into ard_call_session_user
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">id,</if>
+ <if test="sessionId != null">session_id,</if>
+ <if test="type != null">type,</if>
+ <if test="userId != null">user_id,</if>
+ <if test="targetId != null">target_id,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">#{id},</if>
+ <if test="sessionId != null">#{sessionId},</if>
+ <if test="type != null">#{type},</if>
+ <if test="userId != null">#{userId},</if>
+ <if test="targetId != null">#{targetId},</if>
+ </trim>
+ </insert>
+
+ <update id="updateArdCallSessionUser" parameterType="ArdCallSessionUser">
+ update ard_call_session_user
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="sessionId != null">session_id = #{sessionId},</if>
+ <if test="type != null">type = #{type},</if>
+ <if test="userId != null">user_id = #{userId},</if>
+ <if test="targetId != null">target_id = #{targetId},</if>
+ </trim>
+ where id = #{id}
+ </update>
+
+ <delete id="deleteArdCallSessionUserById" parameterType="String">
+ delete
+ from ard_call_session_user
+ where id = #{id}
+ </delete>
+
+ <delete id="deleteArdCallSessionUserByIds" parameterType="String">
+ delete from ard_call_session_user where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </delete>
+ <select id="getSessionId" parameterType="String" resultType="String">
+ select session_id
+ from ard_call_session_user
+ where user_id = #{userId}
+ and target_id = #{targetId}
+ and type = #{type}
+ </select>
+ <select id="getGroupSessionId" parameterType="String" resultType="String">
+ select session_id
+ from ard_call_session_user
+ where target_id = #{targetId}
+ limit 1
+ </select>
+ <delete id="deleteArdCallSessionUserBySessionId" parameterType="String">
+ delete
+ from ard_call_session_user
+ where session_id = #{sessionId}
+ </delete>
+</mapper>
\ No newline at end of file
diff --git a/ard-work/src/main/resources/mapper/call/ArdCallUnreadMessagesMapper.xml b/ard-work/src/main/resources/mapper/call/ArdCallUnreadMessagesMapper.xml
new file mode 100644
index 0000000..8708431
--- /dev/null
+++ b/ard-work/src/main/resources/mapper/call/ArdCallUnreadMessagesMapper.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.call.mapper.ArdCallUnreadMessagesMapper">
+
+ <resultMap type="ArdCallUnreadMessages" id="ArdCallUnreadMessagesResult">
+ <result property="userId" column="user_id "/>
+ <result property="sessionId" column="session_id"/>
+ <result property="unreadCount" column="unread_count"/>
+ </resultMap>
+
+ <sql id="selectArdCallUnreadMessagesVo">
+ select user_id, session_id, unread_count
+ from ard_call_unread_messages
+ </sql>
+
+ <select id="selectArdCallUnreadMessagesList" parameterType="ArdCallUnreadMessages"
+ resultMap="ArdCallUnreadMessagesResult">
+ <include refid="selectArdCallUnreadMessagesVo"/>
+ <where>
+ <if test="userId != null and userId != ''">and user_id = #{userId }</if>
+ <if test="sessionId != null and sessionId != ''">and session_id = #{sessionId}</if>
+ <if test="unreadCount != null and unreadCount != ''">and unread_count = #{unreadCount}</if>
+ </where>
+ </select>
+
+ <select id="selectArdCallUnreadMessagesByUserId" parameterType="String" resultMap="ArdCallUnreadMessagesResult">
+ <include refid="selectArdCallUnreadMessagesVo"/>
+ where user_id = #{userId }
+ </select>
+
+ <insert id="insertArdCallUnreadMessages" parameterType="ArdCallUnreadMessages">
+ insert into ard_call_unread_messages
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="userId != null">user_id ,</if>
+ <if test="sessionId != null">session_id,</if>
+ <if test="unreadCount != null">unread_count,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="userId != null">#{userId },</if>
+ <if test="sessionId != null">#{sessionId},</if>
+ <if test="unreadCount != null">#{unreadCount},</if>
+ </trim>
+ ON CONFLICT (session_id, user_id) DO NOTHING
+ </insert>
+
+ <update id="updateArdCallUnreadMessages" parameterType="ArdCallUnreadMessages">
+ update ard_call_unread_messages
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="unreadCount != null">unread_count = #{unreadCount},</if>
+ </trim>
+ where user_id = #{userId } and session_id = #{sessionId}
+ </update>
+
+ <delete id="deleteArdCallUnreadMessagesByUserId " parameterType="String">
+ delete
+ from ard_call_unread_messages
+ where user_id = #{userId }
+ </delete>
+
+ <delete id="deleteArdCallUnreadMessagesByUserId" parameterType="String">
+ delete from ard_call_unread_messages where user_id in
+ <foreach item="userId" collection="array" open="(" separator="," close=")">
+ #{userId }
+ </foreach>
+ </delete>
+ <select id="getUnreadMessage" resultType="ArdCallUnreadMessages">
+ select *
+ from ard_call_unread_messages
+ where user_id = #{targetId}
+ and session_id = #{sessionId}
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java
index 85f1e4c..e1a9568 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java
@@ -35,12 +35,14 @@
/**
* 鍒涘缓API
*/
- @Bean
+ @Bean("baseApi")
public Docket createRestApi()
{
return new Docket(DocumentationType.SWAGGER_2)
// 鏄惁鍚敤Swagger
.enable(true)
+ //鍒嗙粍鍚嶇О
+ .groupName("baseApi")
// 鐢ㄦ潵鍒涘缓璇PI鐨勫熀鏈俊鎭紝灞曠ず鍦ㄦ枃妗g殑椤甸潰涓紙鑷畾涔夊睍绀虹殑淇℃伅锛�
.apiInfo(apiInfo())
// 璁剧疆鍝簺鎺ュ彛鏆撮湶缁橲wagger灞曠ず
@@ -57,7 +59,33 @@
.securityContexts(securityContexts())
.pathMapping("/");
}
-
+ /**
+ * 鍒涘缓API-VideoCall
+ */
+ @Bean("VideoCallApi")
+ public Docket createRestApiVideoCall()
+ {
+ return new Docket(DocumentationType.SWAGGER_2)
+ // 鏄惁鍚敤Swagger
+ .enable(true)
+ //鍒嗙粍鍚嶇О
+ .groupName("VideoCallApi")
+ // 鐢ㄦ潵鍒涘缓璇PI鐨勫熀鏈俊鎭紝灞曠ず鍦ㄦ枃妗g殑椤甸潰涓紙鑷畾涔夊睍绀虹殑淇℃伅锛�
+ .apiInfo(apiInfo())
+ // 璁剧疆鍝簺鎺ュ彛鏆撮湶缁橲wagger灞曠ず
+ .select()
+ // 鎵弿鎵�鏈夋湁娉ㄨВ鐨刟pi锛岀敤杩欑鏂瑰紡鏇寸伒娲�
+ .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+ // 鎵弿鎸囧畾鍖呬腑鐨剆wagger娉ㄨВ
+ .apis(RequestHandlerSelectors.basePackage("com.ruoyi.call.controller"))
+ // 鎵弿鎵�鏈� .apis(RequestHandlerSelectors.any())
+ .paths(PathSelectors.any())
+ .build()
+ /* 璁剧疆瀹夊叏妯″紡锛宻wagger鍙互璁剧疆璁块棶token */
+ .securitySchemes(securitySchemes())
+ .securityContexts(securityContexts())
+ .pathMapping("/");
+ }
/**
* 瀹夊叏妯″紡锛岃繖閲屾寚瀹歵oken閫氳繃Authorization澶磋姹傚ご浼犻��
*/
--
Gitblit v1.9.3