Browse Source

客服转接校验添加

master
La123123 9 hours ago
parent
commit
2e798c54ad
  1. 6
      im-platform/src/main/java/com/bx/implatform/controller/UserController.java
  2. 6
      im-platform/src/main/java/com/bx/implatform/service/UserService.java
  3. 20
      im-platform/src/main/java/com/bx/implatform/service/impl/FriendServiceImpl.java
  4. 14
      im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java

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

6
im-platform/src/main/java/com/bx/implatform/service/UserService.java

@ -103,6 +103,12 @@ public interface UserService extends IService<User> {
*/
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

20
im-platform/src/main/java/com/bx/implatform/service/impl/FriendServiceImpl.java

@ -156,6 +156,7 @@ public class FriendServiceImpl extends ServiceImpl<FriendMapper, Friend> impleme
@Override
public void changeFriendRelation(Long customerId, Long targetId, Long userId) {
//获取原好友关系并校验
LambdaQueryWrapper<Friend> wrapper = Wrappers.lambdaQuery();
wrapper.eq(Friend::getUserId, customerId);
wrapper.eq(Friend::getFriendId, userId);
@ -176,6 +177,25 @@ public class FriendServiceImpl extends ServiceImpl<FriendMapper, Friend> impleme
ids.add(friendAnother.getId());
this.baseMapper.deleteByIds(ids);
//如果转接的客服与转接用户有关系,则删除
//1.客服与转接用户关系
LambdaQueryWrapper<Friend> 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<Friend> 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)){

14
im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java

@ -361,6 +361,20 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> 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<User> getEnableChangeCustomerList(Long userId) {
LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();

Loading…
Cancel
Save