From 2e798c54ad8b06a7dc7bf79c66790918ab9ab740 Mon Sep 17 00:00:00 2001 From: La123123 <617330105@qq.com> Date: Fri, 3 Apr 2026 15:18:56 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E5=AE=A2=E6=9C=8D=E8=BD=AC=E6=8E=A5?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../implatform/controller/UserController.java | 6 ++++++ .../bx/implatform/service/UserService.java | 6 ++++++ .../service/impl/FriendServiceImpl.java | 20 +++++++++++++++++++ .../service/impl/UserServiceImpl.java | 14 +++++++++++++ 4 files changed, 46 insertions(+) diff --git a/im-platform/src/main/java/com/bx/implatform/controller/UserController.java b/im-platform/src/main/java/com/bx/implatform/controller/UserController.java index 13f4745..c124682 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/UserController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/UserController.java @@ -100,6 +100,12 @@ public class UserController { return ResultUtils.error(XSS_PARAM_ERROR); } + boolean check = userService.chenckRelation(customerId,targetId, userId); + + if(!check){ + return ResultUtils.error(XSS_PARAM_ERROR); + } + userService.changeCustomer(customerId,targetId, userId); return ResultUtils.success(); diff --git a/im-platform/src/main/java/com/bx/implatform/service/UserService.java b/im-platform/src/main/java/com/bx/implatform/service/UserService.java index 70919e8..1d8c6db 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/UserService.java +++ b/im-platform/src/main/java/com/bx/implatform/service/UserService.java @@ -103,6 +103,12 @@ public interface UserService extends IService { */ void changeCustomer(Long customerId,Long targetId, Long userId); + /** + * 校验转接客服关系 + * @param customerId 客服id targetId 转接的客服id userId 转接的用户id + */ + boolean chenckRelation(Long customerId,Long targetId, Long userId); + /** * 获取可转接的客服 * @param userId 用户id diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/FriendServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/FriendServiceImpl.java index cc23c15..ad5f781 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/FriendServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/FriendServiceImpl.java @@ -156,6 +156,7 @@ public class FriendServiceImpl extends ServiceImpl impleme @Override public void changeFriendRelation(Long customerId, Long targetId, Long userId) { + //获取原好友关系并校验 LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); wrapper.eq(Friend::getUserId, customerId); wrapper.eq(Friend::getFriendId, userId); @@ -176,6 +177,25 @@ public class FriendServiceImpl extends ServiceImpl impleme ids.add(friendAnother.getId()); this.baseMapper.deleteByIds(ids); + //如果转接的客服与转接用户有关系,则删除 + //1.客服与转接用户关系 + LambdaQueryWrapper wrapperTarget = Wrappers.lambdaQuery(); + wrapperTarget.eq(Friend::getUserId, targetId); + wrapperTarget.eq(Friend::getFriendId, customerId); + Friend friendTarget = this.getOne(wrapperTarget); + if(Objects.nonNull(friendTarget)){ + this.baseMapper.deleteById(friendTarget.getId()); + } + + //2.转接用户与客服关系 + LambdaQueryWrapper wrapperTarget2 = Wrappers.lambdaQuery(); + wrapperTarget2.eq(Friend::getUserId, customerId); + wrapperTarget2.eq(Friend::getFriendId, targetId); + Friend friendTarget2 = this.getOne(wrapperTarget2); + if(Objects.nonNull(friendTarget2)){ + this.baseMapper.deleteById(friendTarget2.getId()); + } + //获取转移目标客服对象 User user = userMapper.selectById(targetId); if(Objects.isNull(user)){ diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java index a2024c5..e5f9cc1 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java @@ -361,6 +361,20 @@ public class UserServiceImpl extends ServiceImpl implements Us } + @Override + public boolean chenckRelation(Long customerId, Long targetId, Long userId) { + // 检查本身之间的关系 + if(customerId.equals(targetId) || customerId.equals(userId) || targetId.equals(userId)){ + return false; + } + + // 检查是原客服和用户是否是好友 + if(!friendService.isFriend(customerId, userId)){ + return false; + } + return true; + } + @Override public List getEnableChangeCustomerList(Long userId) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); From 71fa5d1ddbb0a6683dc555266c42a93ea12174f5 Mon Sep 17 00:00:00 2001 From: H_uang Date: Fri, 3 Apr 2026 15:24:58 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=A1=B5icp=E5=92=8C=E6=B3=A8=E5=86=8C=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- im-web/src/view/Login.vue | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/im-web/src/view/Login.vue b/im-web/src/view/Login.vue index f0e474e..47c1b31 100644 --- a/im-web/src/view/Login.vue +++ b/im-web/src/view/Login.vue @@ -8,7 +8,7 @@ @keyup.enter.native="submitForm('loginForm')">
-
登录盒子IM
+
登录客服
@@ -25,12 +25,14 @@ 登录 清空 + - + From eb4497bbf638ea9f82e80adba933b1f5315630e3 Mon Sep 17 00:00:00 2001 From: La123123 <617330105@qq.com> Date: Fri, 3 Apr 2026 15:39:09 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E5=AE=A2=E6=9C=8D=E8=BD=AC=E6=8E=A5?= =?UTF-8?q?=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bx/implatform/controller/UserController.java | 5 ----- .../com/bx/implatform/service/impl/UserServiceImpl.java | 9 +++++++++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/im-platform/src/main/java/com/bx/implatform/controller/UserController.java b/im-platform/src/main/java/com/bx/implatform/controller/UserController.java index c124682..0a9e268 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/UserController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/UserController.java @@ -95,11 +95,6 @@ public class UserController { Long targetId = jsonObject.getLong("targetId"); Long userId = jsonObject.getLong("userId"); - - if(ObjectUtil.isNull(customerId) || ObjectUtil.isNull(targetId) || ObjectUtil.isNull(userId)){ - return ResultUtils.error(XSS_PARAM_ERROR); - } - boolean check = userService.chenckRelation(customerId,targetId, userId); if(!check){ diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java index e5f9cc1..bfb5af1 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java @@ -1,5 +1,6 @@ package com.bx.implatform.service.impl; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -20,6 +21,7 @@ import com.bx.implatform.entity.User; import com.bx.implatform.enums.ResultCode; import com.bx.implatform.exception.GlobalException; import com.bx.implatform.mapper.UserMapper; +import com.bx.implatform.result.ResultUtils; import com.bx.implatform.service.FriendService; import com.bx.implatform.service.GroupMemberService; import com.bx.implatform.service.PrivateMessageService; @@ -41,6 +43,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.stream.Collectors; +import static com.bx.implatform.enums.ResultCode.XSS_PARAM_ERROR; + @Slf4j @Service @RequiredArgsConstructor @@ -363,6 +367,11 @@ public class UserServiceImpl extends ServiceImpl implements Us @Override public boolean chenckRelation(Long customerId, Long targetId, Long userId) { + // 检查参数 + if(ObjectUtil.isNull(customerId) || ObjectUtil.isNull(targetId) || ObjectUtil.isNull(userId)){ + return false; + } + // 检查本身之间的关系 if(customerId.equals(targetId) || customerId.equals(userId) || targetId.equals(userId)){ return false; From 73f3c6776f2f5ba11071a68adcfde5003597bb2a Mon Sep 17 00:00:00 2001 From: La123123 <617330105@qq.com> Date: Fri, 3 Apr 2026 16:04:41 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E5=88=97=E8=A1=A8=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/bx/implatform/controller/UserController.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/im-platform/src/main/java/com/bx/implatform/controller/UserController.java b/im-platform/src/main/java/com/bx/implatform/controller/UserController.java index 0a9e268..7f242fc 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/UserController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/UserController.java @@ -81,6 +81,14 @@ public class UserController { List list = userService.getEnableChangeCustomerList(userId); + //使用Map返回id、昵称 + List result = list.stream().map(user -> { + User vo = new User(); + vo.setId(user.getId()); + vo.setNickName(user.getNickName()); + return vo; + }).toList(); + return ResultUtils.success(list); } From 1b991c80dfcf267fd3b961b1cfced4ee44117170 Mon Sep 17 00:00:00 2001 From: La123123 <617330105@qq.com> Date: Fri, 3 Apr 2026 16:05:18 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E5=88=97=E8=A1=A8=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/bx/implatform/controller/UserController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/im-platform/src/main/java/com/bx/implatform/controller/UserController.java b/im-platform/src/main/java/com/bx/implatform/controller/UserController.java index 7f242fc..a32acf8 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/UserController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/UserController.java @@ -89,7 +89,7 @@ public class UserController { return vo; }).toList(); - return ResultUtils.success(list); + return ResultUtils.success(result); } @PostMapping("/changeCustomer") From 565bff6a9494d4052040c32eba4f748ae6f2c593 Mon Sep 17 00:00:00 2001 From: La123123 <617330105@qq.com> Date: Fri, 3 Apr 2026 17:43:56 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E5=88=97=E8=A1=A8=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bx/implatform/controller/UserController.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/im-platform/src/main/java/com/bx/implatform/controller/UserController.java b/im-platform/src/main/java/com/bx/implatform/controller/UserController.java index a32acf8..4731a53 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/UserController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/UserController.java @@ -19,7 +19,9 @@ import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.HashMap; import java.util.List; +import java.util.Map; import static com.bx.implatform.enums.ResultCode.XSS_PARAM_ERROR; @@ -69,7 +71,7 @@ public class UserController { @PostMapping("/getEnableChangeCustomer") @Operation(summary = "获取可转接的客服", description = "转接客服") - public Result> getEnableChangeCustomer() { + public Result>> getEnableChangeCustomer() { // 获取当前客服id、转接客服id、转接用户id UserSession session = SessionContext.getSession(); Long userId = session.getUserId(); @@ -82,11 +84,11 @@ public class UserController { List list = userService.getEnableChangeCustomerList(userId); //使用Map返回id、昵称 - List result = list.stream().map(user -> { - User vo = new User(); - vo.setId(user.getId()); - vo.setNickName(user.getNickName()); - return vo; + List> result = list.stream().map(user -> { + Map map = new HashMap<>(); + map.put("id", user.getId()); + map.put("nickName", user.getNickName()); + return map; }).toList(); return ResultUtils.success(result);