🔧 完成前后端配置优化和部署修复

 后端配置优化:
- 优化application.yml配置文件结构
- 统一Coze API配置到所有环境
- 删除重复的SimpleAuthController和SimpleHealthController
- 创建独立的HealthController
- 修复SASS变量未定义问题
- 优化数据库连接池配置

 前端配置修复:
- 修复Vite配置中SASS变量全局导入
- 更新API代理配置指向正确端口(8080)
- 解决Dashboard组件SASS变量未定义错误

 部署配置完善:
- 创建详细的部署状态报告
- 优化生产环境和本地环境配置
- 修复Nginx反向代理配置
- 完善防火墙和MySQL远程连接配置

🚀 功能状态:
- 前端: Vue3 + Vite开发服务器正常启动
- 后端: Spring Boot服务正常运行(8080端口)
- 数据库: MySQL连接配置完善
- API: 健康检查和基础接口就绪

📊 技术改进:
- 配置文件结构优化
- 开发环境和生产环境配置分离
- 前后端联调环境就绪
- 部署文档完善
This commit is contained in:
2025-07-23 18:07:20 +08:00
parent 48df1d68d7
commit 645036fcd2
13 changed files with 1142 additions and 233 deletions
@@ -0,0 +1,58 @@
package com.emotion.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
/**
* 健康检查控制器
*
* @author emotion-museum
* @date 2025-07-23
*/
@RestController
public class HealthController {
private static final Logger log = LoggerFactory.getLogger(HealthController.class);
/**
* 健康检查
*/
@GetMapping("/health")
public Map<String, Object> health() {
log.info("健康检查请求");
Map<String, Object> response = new HashMap<>();
response.put("service", "emotion-single");
response.put("message", "情感博物馆单体服务运行正常");
response.put("version", "1.0.0");
response.put("status", "UP");
response.put("timestamp", LocalDateTime.now());
return response;
}
/**
* 服务信息
*/
@GetMapping("/health/info")
public Map<String, Object> info() {
log.info("服务信息请求");
Map<String, Object> response = new HashMap<>();
response.put("service", "emotion-single");
response.put("description", "情感博物馆单体服务");
response.put("version", "1.0.0");
response.put("author", "emotion-museum");
response.put("buildTime", "2025-07-23");
response.put("javaVersion", System.getProperty("java.version"));
response.put("timestamp", LocalDateTime.now());
return response;
}
}
@@ -1,126 +0,0 @@
package com.emotion.controller;
import com.emotion.common.Result;
import com.emotion.entity.SimpleUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
/**
* 简化认证控制器
*
* @author emotion-museum
* @date 2025-07-22
*/
@RestController
@RequestMapping("/auth")
public class SimpleAuthController {
private static final Logger log = LoggerFactory.getLogger(SimpleAuthController.class);
/**
* 用户登录(模拟)
*/
@PostMapping("/login")
public Result<Map<String, Object>> login(@RequestBody Map<String, String> request) {
log.info("用户登录请求: {}", request.get("account"));
try {
String account = request.get("account");
String password = request.get("password");
if (account == null || password == null) {
return Result.error("账号和密码不能为空");
}
// 模拟用户验证
if ("admin".equals(account) && "123456".equals(password)) {
Map<String, Object> response = new HashMap<>();
response.put("accessToken", "mock-token-" + System.currentTimeMillis());
response.put("expiresIn", 86400L);
Map<String, Object> userInfo = new HashMap<>();
userInfo.put("id", "1");
userInfo.put("username", "admin");
userInfo.put("account", "admin");
userInfo.put("nickname", "管理员");
userInfo.put("status", 1);
response.put("userInfo", userInfo);
response.put("loginTime", LocalDateTime.now());
return Result.success("登录成功", response);
} else {
return Result.error("账号或密码错误");
}
} catch (Exception e) {
log.error("用户登录失败: {}", e.getMessage());
return Result.error("登录失败");
}
}
/**
* 用户注册(模拟)
*/
@PostMapping("/register")
public Result<Map<String, Object>> register(@RequestBody Map<String, String> request) {
log.info("用户注册请求: {}", request.get("account"));
try {
String account = request.get("account");
String password = request.get("password");
String username = request.get("username");
if (account == null || password == null) {
return Result.error("账号和密码不能为空");
}
// 模拟用户创建
Map<String, Object> userInfo = new HashMap<>();
userInfo.put("id", "user-" + System.currentTimeMillis());
userInfo.put("username", username != null ? username : account);
userInfo.put("account", account);
userInfo.put("status", 1);
userInfo.put("createTime", LocalDateTime.now());
return Result.success("注册成功", userInfo);
} catch (Exception e) {
log.error("用户注册失败: {}", e.getMessage());
return Result.error("注册失败");
}
}
/**
* 获取验证码(模拟)
*/
@GetMapping("/captcha")
public Result<Map<String, Object>> getCaptcha() {
log.info("获取验证码请求");
try {
Map<String, Object> response = new HashMap<>();
response.put("captchaId", "captcha-" + System.currentTimeMillis());
response.put("captchaImage", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==");
response.put("type", "spec");
response.put("expireTime", 300);
return Result.success("获取验证码成功", response);
} catch (Exception e) {
log.error("获取验证码失败: {}", e.getMessage());
return Result.error("获取验证码失败");
}
}
/**
* 用户登出
*/
@PostMapping("/logout")
public Result<String> logout(@RequestBody Map<String, String> request) {
log.info("用户登出请求: {}", request.get("userId"));
return Result.success("登出成功");
}
}
@@ -1,44 +0,0 @@
package com.emotion.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
/**
* 简化健康检查控制器
*
* @author emotion-museum
* @date 2025-07-21
*/
@RestController
@RequestMapping("/health")
public class SimpleHealthController {
@GetMapping
public Map<String, Object> health() {
Map<String, Object> result = new HashMap<>();
result.put("status", "UP");
result.put("service", "emotion-single");
result.put("version", "1.0.0");
result.put("timestamp", LocalDateTime.now().toString());
result.put("message", "情感博物馆单体服务运行正常");
return result;
}
@GetMapping("/info")
public Map<String, Object> info() {
Map<String, Object> result = new HashMap<>();
result.put("name", "emotion-single");
result.put("description", "情感博物馆单体服务");
result.put("version", "1.0.0");
result.put("author", "emotion-museum");
result.put("build-time", LocalDateTime.now().toString());
return result;
}
}