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();