This commit is contained in:
dzc committed 2026-07-30 11:41:49 +08:00
1 parent afe6a01a19
commit f2e2469b61
5 files changed
+83

No files matched your search

@@ -3,11 +3,13 @@ package com.bx.implatform.controller.third;
import com.bx.implatform.dto.third.user.ThirdCreateOrUpdateUserDTO;
import com.bx.implatform.dto.third.user.ThirdGetUserByUserIdDTO;
import com.bx.implatform.dto.third.user.ThirdLoginDTO;
import com.bx.implatform.dto.third.user.ThirdUserOnLineStatusDto;
import com.bx.implatform.result.Result;
import com.bx.implatform.result.ResultUtils;
import com.bx.implatform.service.third.ThirdUserService;
import com.bx.implatform.vo.third.user.ThirdGetUserByUserIdVO;
import com.bx.implatform.vo.third.user.ThirdLoginVO;
import com.bx.implatform.vo.third.user.ThirdUserOnLineStatusVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
@@ -15,6 +17,8 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Slf4j
@RestController
@RequestMapping("/third/user")
@@ -44,4 +48,10 @@ public class ThirdUserController {
return ResultUtils.success();
}
@PostMapping("/getUserOnlineStatusById")
@Operation(summary = "查询用户在线状态", description = "查询用户在线状态")
public Result<List<ThirdUserOnLineStatusVo>> getUserOnlineStatusById(@Valid @RequestBody ThirdUserOnLineStatusDto dto) {
return ResultUtils.success(thirdUserService.getUserOnlineStatusById(dto));
}
}
@@ -0,0 +1,17 @@
package com.bx.implatform.dto.third.user;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
/**
* 查询用户在线状态
*/
@Data
public class ThirdUserOnLineStatusDto {
@Schema(description = "用户ids")
private List<Long> userIdList;
}
@@ -4,11 +4,15 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.bx.implatform.dto.third.user.ThirdCreateOrUpdateUserDTO;
import com.bx.implatform.dto.third.user.ThirdGetUserByUserIdDTO;
import com.bx.implatform.dto.third.user.ThirdLoginDTO;
import com.bx.implatform.dto.third.user.ThirdUserOnLineStatusDto;
import com.bx.implatform.entity.User;
import com.bx.implatform.vo.third.user.ThirdGetUserByUserIdVO;
import com.bx.implatform.vo.third.user.ThirdLoginVO;
import com.bx.implatform.vo.third.user.ThirdUserOnLineStatusVo;
import jakarta.validation.Valid;
import java.util.List;
public interface ThirdUserService extends IService<User> {
/**
@@ -25,4 +29,9 @@ public interface ThirdUserService extends IService<User> {
* 根据userId查询用户详情
*/
ThirdGetUserByUserIdVO getUserByUserId(@Valid ThirdGetUserByUserIdDTO dto);
/**
* 查询用户在线状态
*/
List<ThirdUserOnLineStatusVo> getUserOnlineStatusById(@Valid ThirdUserOnLineStatusDto dto);
}
@@ -2,12 +2,15 @@ package com.bx.implatform.service.third.impl;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bx.imclient.IMClient;
import com.bx.imcommon.util.JwtUtil;
import com.bx.implatform.config.props.JwtProperties;
import com.bx.implatform.dto.third.user.ThirdCreateOrUpdateUserDTO;
import com.bx.implatform.dto.third.user.ThirdGetUserByUserIdDTO;
import com.bx.implatform.dto.third.user.ThirdLoginDTO;
import com.bx.implatform.dto.third.user.ThirdUserOnLineStatusDto;
import com.bx.implatform.entity.User;
import com.bx.implatform.exception.GlobalException;
import com.bx.implatform.mapper.UserMapper;
@@ -16,11 +19,15 @@ import com.bx.implatform.session.UserSession;
import com.bx.implatform.util.BeanUtils;
import com.bx.implatform.vo.third.user.ThirdGetUserByUserIdVO;
import com.bx.implatform.vo.third.user.ThirdLoginVO;
import com.bx.implatform.vo.third.user.ThirdUserOnLineStatusVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* 第三方用户
*/
@@ -32,6 +39,8 @@ public class ThirdUserServiceImpl extends ServiceImpl<UserMapper, User> implemen
private final PasswordEncoder passwordEncoder;
private final JwtProperties jwtProperties;
private final IMClient imClient;
/**
* 用户登录
*/
@@ -90,4 +99,24 @@ public class ThirdUserServiceImpl extends ServiceImpl<UserMapper, User> implemen
return BeanUtils.copyProperties(user, ThirdGetUserByUserIdVO.class);
}
/**
* 查询用户在线状态
*/
@Override
public List<ThirdUserOnLineStatusVo> getUserOnlineStatusById(ThirdUserOnLineStatusDto dto) {
if (ObjectUtil.isEmpty(dto.getUserIdList())) {
return new ArrayList<>();
}
List<User> userIdList = baseMapper.selectList(new LambdaQueryWrapper<User>()
.select(User::getId)
.in(User::getId, dto.getUserIdList())
);
return userIdList.stream().map(item -> {
ThirdUserOnLineStatusVo entity = new ThirdUserOnLineStatusVo();
entity.setId(item.getId());
entity.setOnline(imClient.isOnline(item.getId()));
return entity;
}).toList();
}
}
@@ -0,0 +1,18 @@
package com.bx.implatform.vo.third.user;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 查询用户在线状态
*/
@Data
public class ThirdUserOnLineStatusVo {
@Schema(description = "用户id")
private Long id;
@Schema(description = "是否在线")
private Boolean online;
}