diff --git a/BOSSBackEnd/src/main/java/com/zds/boss/constant/UserConstant.java b/BOSSBackEnd/src/main/java/com/zds/boss/constant/UserConstant.java index 4e1ae2d..5ea5359 100644 --- a/BOSSBackEnd/src/main/java/com/zds/boss/constant/UserConstant.java +++ b/BOSSBackEnd/src/main/java/com/zds/boss/constant/UserConstant.java @@ -20,5 +20,7 @@ public interface UserConstant { */ String ADMIN_ROLE = "admin"; + String USER_CACHE_KEY = "boss:user:cache:%s"; + // endregion } diff --git a/BOSSBackEnd/src/main/java/com/zds/boss/controller/UserController.java b/BOSSBackEnd/src/main/java/com/zds/boss/controller/UserController.java index 8ecbe47..e38be03 100644 --- a/BOSSBackEnd/src/main/java/com/zds/boss/controller/UserController.java +++ b/BOSSBackEnd/src/main/java/com/zds/boss/controller/UserController.java @@ -104,7 +104,13 @@ public class UserController { if (id <= 0) { throw new BusinessException(ErrorCode.PARAMS_ERROR); } - User user = userService.getById(id); + // 先从redis中查找 + User user = userService.getCacheUser(id); + if (user != null) { + return ResultUtils.success(user); + } + // 从数据库中查找 + user = userService.getById(id); ThrowUtils.throwIf(user == null, ErrorCode.NOT_FOUND_ERROR); return ResultUtils.success(user); } diff --git a/BOSSBackEnd/src/main/java/com/zds/boss/model/dto/user/UserUpdateRequest.java b/BOSSBackEnd/src/main/java/com/zds/boss/model/dto/user/UserUpdateRequest.java index c54c487..a204bf2 100644 --- a/BOSSBackEnd/src/main/java/com/zds/boss/model/dto/user/UserUpdateRequest.java +++ b/BOSSBackEnd/src/main/java/com/zds/boss/model/dto/user/UserUpdateRequest.java @@ -25,6 +25,15 @@ public class UserUpdateRequest implements Serializable { */ private String userAvatar; + /** + * 手机 + */ + private String phone; + /** + * 邮箱 + */ + private String email; + /** * 简介 */ diff --git a/BOSSBackEnd/src/main/java/com/zds/boss/model/vo/LoginUserVO.java b/BOSSBackEnd/src/main/java/com/zds/boss/model/vo/LoginUserVO.java index 8a0c21d..f854eb0 100644 --- a/BOSSBackEnd/src/main/java/com/zds/boss/model/vo/LoginUserVO.java +++ b/BOSSBackEnd/src/main/java/com/zds/boss/model/vo/LoginUserVO.java @@ -37,6 +37,15 @@ public class LoginUserVO { */ private String userProfile; + /* + 手机 + */ + private String phone; + /** + * 邮箱 + */ + private String email; + /** * 用户角色:user/admin */ diff --git a/BOSSBackEnd/src/main/java/com/zds/boss/service/UserService.java b/BOSSBackEnd/src/main/java/com/zds/boss/service/UserService.java index df37b0c..4012b1a 100644 --- a/BOSSBackEnd/src/main/java/com/zds/boss/service/UserService.java +++ b/BOSSBackEnd/src/main/java/com/zds/boss/service/UserService.java @@ -93,4 +93,12 @@ public interface UserService extends IService { */ QueryWrapper getQueryWrapper(UserQueryRequest userQueryRequest); + /** + * 从redis中获取用户 + * + * @param id + * @return + */ + User getCacheUser(long id); + } diff --git a/BOSSBackEnd/src/main/java/com/zds/boss/service/impl/UserServiceImpl.java b/BOSSBackEnd/src/main/java/com/zds/boss/service/impl/UserServiceImpl.java index 7ed62be..917421d 100644 --- a/BOSSBackEnd/src/main/java/com/zds/boss/service/impl/UserServiceImpl.java +++ b/BOSSBackEnd/src/main/java/com/zds/boss/service/impl/UserServiceImpl.java @@ -16,13 +16,16 @@ import com.zds.boss.model.enums.UserRoleEnum; import com.zds.boss.model.vo.LoginUserVO; import com.zds.boss.model.vo.UserVO; import com.zds.boss.service.UserService; +import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.util.DigestUtils; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -35,6 +38,10 @@ import java.util.stream.Collectors; public class UserServiceImpl extends ServiceImpl implements UserService { + @Resource + private RedisTemplate redisTemplate; + + /** * @param userAccount * @param userPassword @@ -130,8 +137,9 @@ public class UserServiceImpl extends ServiceImpl log.info("user login failed, userAccount can not match userPassword"); throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户名或密码错误"); } - //保存用户登录态信息 request.getSession().setAttribute(UserConstant.USER_LOGIN_STATE, user); + String redisKey = String.format(UserConstant.USER_CACHE_KEY, user.getId()); + redisTemplate.opsForValue().set(redisKey, user, 10, TimeUnit.MINUTES); return getLoginUserVO(user); } @@ -261,5 +269,18 @@ public class UserServiceImpl extends ServiceImpl return queryWrapper; } + @Override + public User getCacheUser(long id) { + String redisKey = String.format(UserConstant.USER_CACHE_KEY, id); + User user = redisTemplate.opsForValue().get(redisKey); + if (user != null) { + return user; + } + user = this.getById(id); + if (user != null) { + redisTemplate.opsForValue().set(redisKey, user, 10, TimeUnit.MINUTES); + } + return user; + } } diff --git a/BOSSFrontEnd/src/services/api.ts b/BOSSFrontEnd/src/services/api.ts index e8936a8..cc39cfd 100644 --- a/BOSSFrontEnd/src/services/api.ts +++ b/BOSSFrontEnd/src/services/api.ts @@ -1,8 +1,11 @@ -import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'; + // 创建 axios 实例 +import type {AxiosInstance, AxiosRequestConfig, AxiosResponse} from "axios"; +import axios from "axios"; + const apiClient: AxiosInstance = axios.create({ - baseURL: import.meta.env.VITE_API_BASE_URL || 'http://localhost:8080/api', // 使用环境变量或默认值 + baseURL: import.meta.env.VITE_API_BASE_URL || 'http://127.0.0.1:8081/api', // 使用环境变量或默认值 timeout: 10000, // 请求超时时间 headers: { 'Content-Type': 'application/json',