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