chore(config): 更新应用配置文件

- 移除 application.properties 中的 spring.profiles.active 配置
- 在 application.yml 中为 deepseek ai 服务添加 api-key 配置
- 保留 base-url 和 chat options 配置不变
This commit is contained in:
2026-01-16 00:32:43 +08:00
parent 727afba913
commit 767ba26e0f
7 changed files with 62 additions and 4 deletions

View File

@@ -20,5 +20,7 @@ public interface UserConstant {
*/ */
String ADMIN_ROLE = "admin"; String ADMIN_ROLE = "admin";
String USER_CACHE_KEY = "boss:user:cache:%s";
// endregion // endregion
} }

View File

@@ -104,7 +104,13 @@ public class UserController {
if (id <= 0) { if (id <= 0) {
throw new BusinessException(ErrorCode.PARAMS_ERROR); 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); ThrowUtils.throwIf(user == null, ErrorCode.NOT_FOUND_ERROR);
return ResultUtils.success(user); return ResultUtils.success(user);
} }

View File

@@ -25,6 +25,15 @@ public class UserUpdateRequest implements Serializable {
*/ */
private String userAvatar; private String userAvatar;
/**
* 手机
*/
private String phone;
/**
* 邮箱
*/
private String email;
/** /**
* 简介 * 简介
*/ */

View File

@@ -37,6 +37,15 @@ public class LoginUserVO {
*/ */
private String userProfile; private String userProfile;
/*
手机
*/
private String phone;
/**
* 邮箱
*/
private String email;
/** /**
* 用户角色user/admin * 用户角色user/admin
*/ */

View File

@@ -93,4 +93,12 @@ public interface UserService extends IService<User> {
*/ */
QueryWrapper<User> getQueryWrapper(UserQueryRequest userQueryRequest); QueryWrapper<User> getQueryWrapper(UserQueryRequest userQueryRequest);
/**
* 从redis中获取用户
*
* @param id
* @return
*/
User getCacheUser(long id);
} }

View File

@@ -16,13 +16,16 @@ import com.zds.boss.model.enums.UserRoleEnum;
import com.zds.boss.model.vo.LoginUserVO; import com.zds.boss.model.vo.LoginUserVO;
import com.zds.boss.model.vo.UserVO; import com.zds.boss.model.vo.UserVO;
import com.zds.boss.service.UserService; import com.zds.boss.service.UserService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils; import org.springframework.util.DigestUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -35,6 +38,10 @@ import java.util.stream.Collectors;
public class UserServiceImpl extends ServiceImpl<UserMapper, User> public class UserServiceImpl extends ServiceImpl<UserMapper, User>
implements UserService { implements UserService {
@Resource
private RedisTemplate<String, User> redisTemplate;
/** /**
* @param userAccount * @param userAccount
* @param userPassword * @param userPassword
@@ -130,8 +137,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
log.info("user login failed, userAccount can not match userPassword"); log.info("user login failed, userAccount can not match userPassword");
throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户名或密码错误"); throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户名或密码错误");
} }
//保存用户登录态信息
request.getSession().setAttribute(UserConstant.USER_LOGIN_STATE, user); 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); return getLoginUserVO(user);
} }
@@ -261,5 +269,18 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
return queryWrapper; 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;
}
} }

View File

@@ -1,8 +1,11 @@
import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
// 创建 axios 实例 // 创建 axios 实例
import type {AxiosInstance, AxiosRequestConfig, AxiosResponse} from "axios";
import axios from "axios";
const apiClient: AxiosInstance = axios.create({ 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, // 请求超时时间 timeout: 10000, // 请求超时时间
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',