20 changed files with 330 additions and 48 deletions
@ -0,0 +1,111 @@ |
|||
# 服务器URL配置重构总结 |
|||
|
|||
## 概述 |
|||
将项目中硬编码的服务器地址 `https://server.gxwebsoft.com/api` 改为从配置文件读取,提高了代码的可维护性和灵活性。 |
|||
|
|||
## 修改的文件 |
|||
|
|||
### 1. RequestUtil.java |
|||
**文件路径**: `src/main/java/com/gxwebsoft/common/core/utils/RequestUtil.java` |
|||
|
|||
**修改内容**: |
|||
- 添加了 `ConfigProperties` 依赖注入 |
|||
- 移除了硬编码的 `host` 常量 |
|||
- 添加了 `getServerUrl()` 方法 |
|||
- 将所有 `host.concat(path)` 替换为 `getServerUrl().concat(path)` |
|||
|
|||
**影响的方法**: |
|||
- `balancePay()` |
|||
- `getUserByPhone()` |
|||
- `getByUserId()` |
|||
- `saveUserByPhone()` |
|||
- `updateUserBalance()` |
|||
- `getParent()` |
|||
- `updateUser()` |
|||
- `getMpOrderQrCode()` |
|||
- `getOrderQRCodeUnlimited()` |
|||
- `updateUserMerchantId()` |
|||
- `getWxConfig()` |
|||
|
|||
### 2. JwtAuthenticationFilter.java |
|||
**文件路径**: `src/main/java/com/gxwebsoft/common/core/security/JwtAuthenticationFilter.java` |
|||
|
|||
**修改内容**: |
|||
- 将硬编码的URL `"https://server.gxwebsoft.com/api/auth/user"` |
|||
- 改为 `configProperties.getServerUrl() + "/auth/user"` |
|||
|
|||
### 3. OaAppController.java |
|||
**文件路径**: `src/main/java/com/gxwebsoft/oa/controller/OaAppController.java` |
|||
|
|||
**修改内容**: |
|||
- 添加了 `ConfigProperties` 依赖注入 |
|||
- 将硬编码的URL `"https://server.gxwebsoft.com/api/file/page"` |
|||
- 改为 `configProperties.getServerUrl() + "/file/page"` |
|||
|
|||
### 4. SwaggerConfig.java |
|||
**文件路径**: `src/main/java/com/gxwebsoft/common/core/config/SwaggerConfig.java` |
|||
|
|||
**修改内容**: |
|||
- 将硬编码的URL `"https://server.gxwebsoft.com/api/system"` |
|||
- 改为 `config.getServerUrl() + "/system"` |
|||
|
|||
### 5. WxOfficialUtil.java |
|||
**文件路径**: `src/main/java/com/gxwebsoft/common/core/utils/WxOfficialUtil.java` |
|||
|
|||
**修改内容**: |
|||
- 将硬编码的URL `"https://server.gxwebsoft.com/api/open/wx-official/accessToken"` |
|||
- 改为 `pathConfig.getServerUrl() + "/open/wx-official/accessToken"` |
|||
|
|||
### 6. ShopOrderServiceImpl.java |
|||
**文件路径**: `src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderServiceImpl.java` |
|||
|
|||
**修改内容**: |
|||
- 将微信支付回调地址中的硬编码URL |
|||
- 从 `"https://server.gxwebsoft.com/api/system/wx-pay/notify/"` |
|||
- 改为 `config.getServerUrl() + "/system/wx-pay/notify/"` |
|||
|
|||
## 配置文件设置 |
|||
|
|||
### 开发环境 (application-dev.yml) |
|||
```yaml |
|||
config: |
|||
server-url: http://127.0.0.1:9091/api |
|||
``` |
|||
|
|||
### 生产环境 (application-prod.yml) |
|||
```yaml |
|||
config: |
|||
server-url: https://server.gxwebsoft.com/api |
|||
``` |
|||
|
|||
### 默认配置 (application.yml) |
|||
```yaml |
|||
config: |
|||
server-url: https://server.gxwebsoft.com/api |
|||
``` |
|||
|
|||
## 优势 |
|||
|
|||
1. **可维护性**: 服务器地址集中管理,修改时只需要更新配置文件 |
|||
2. **环境适配**: 不同环境可以使用不同的服务器地址 |
|||
3. **部署灵活**: 部署时可以通过环境变量或外部配置文件覆盖 |
|||
4. **代码清洁**: 移除了硬编码,提高了代码质量 |
|||
|
|||
## 测试验证 |
|||
|
|||
创建了测试类 `ServerUrlConfigTest` 来验证配置是否正确读取: |
|||
- 验证配置属性不为空 |
|||
- 验证URL格式正确 |
|||
- 验证开发环境使用本地地址 |
|||
|
|||
## 注意事项 |
|||
|
|||
1. 确保所有环境的配置文件都正确设置了 `server-url` |
|||
2. 部署时需要根据实际环境调整配置 |
|||
3. 如果有新的代码需要调用服务器API,应该使用 `ConfigProperties.getServerUrl()` 而不是硬编码 |
|||
|
|||
## 后续建议 |
|||
|
|||
1. 可以考虑将其他硬编码的URL也进行类似的重构 |
|||
2. 建立代码规范,禁止在代码中硬编码URL |
|||
3. 在CI/CD流程中添加检查,确保没有新的硬编码URL被引入 |
@ -0,0 +1,79 @@ |
|||
#!/bin/bash |
|||
cd /Users/gxwebsoft/frp/frp_0.63.0_darwin_arm64 |
|||
|
|||
echo "=== FRP客户端启动脚本 ===" |
|||
|
|||
# 检查是否已有frpc进程运行 |
|||
if pgrep -f "frpc" > /dev/null; then |
|||
echo "⚠️ 检测到frpc进程正在运行:" |
|||
ps aux | grep frpc | grep -v grep |
|||
echo "" |
|||
echo "正在停止现有进程..." |
|||
pkill -f frpc |
|||
sleep 3 |
|||
|
|||
# 再次检查是否还有进程 |
|||
if pgrep -f "frpc" > /dev/null; then |
|||
echo "❌ 无法停止现有进程,强制终止..." |
|||
pkill -9 -f frpc |
|||
sleep 2 |
|||
fi |
|||
fi |
|||
|
|||
# 检查配置文件是否存在(优先使用toml格式) |
|||
CONFIG_FILE="" |
|||
if [ -f "frpc.toml" ]; then |
|||
CONFIG_FILE="frpc.toml" |
|||
elif [ -f "frpc.ini" ]; then |
|||
CONFIG_FILE="frpc.ini" |
|||
else |
|||
echo "❌ 错误:配置文件不存在(frpc.toml 或 frpc.ini)" |
|||
echo "当前目录: $(pwd)" |
|||
echo "目录内容:" |
|||
ls -la |
|||
exit 1 |
|||
fi |
|||
|
|||
echo "📋 配置文件检查通过,使用: $CONFIG_FILE" |
|||
|
|||
# 清理旧的日志文件 |
|||
if [ -f "frpc.log" ]; then |
|||
mv frpc.log frpc.log.old |
|||
fi |
|||
|
|||
# 后台启动frpc客户端 |
|||
echo "🚀 正在启动FRP客户端..." |
|||
nohup ./frpc -c $CONFIG_FILE > frpc.log 2>&1 & |
|||
FRP_PID=$! |
|||
|
|||
# 等待启动 |
|||
sleep 3 |
|||
|
|||
# 检查是否启动成功 |
|||
if pgrep -f "frpc" > /dev/null; then |
|||
echo "✅ FRP客户端启动成功!" |
|||
echo "📊 进程信息:" |
|||
ps aux | grep frpc | grep -v grep |
|||
echo "" |
|||
echo "📄 日志文件: $(pwd)/frpc.log" |
|||
echo "🔍 查看实时日志: tail -f $(pwd)/frpc.log" |
|||
echo "" |
|||
echo "📋 最新日志内容:" |
|||
echo "----------------------------------------" |
|||
tail -10 frpc.log |
|||
echo "----------------------------------------" |
|||
else |
|||
echo "❌ FRP客户端启动失败!" |
|||
echo "📄 错误日志:" |
|||
echo "----------------------------------------" |
|||
cat frpc.log |
|||
echo "----------------------------------------" |
|||
exit 1 |
|||
fi |
|||
|
|||
echo "" |
|||
echo "🔧 常用管理命令:" |
|||
echo " 查看进程: ps aux | grep frpc" |
|||
echo " 停止服务: pkill -f frpc" |
|||
echo " 查看日志: tail -f $(pwd)/frpc.log" |
|||
echo " 检查端口: lsof -i | grep frp" |
@ -0,0 +1,51 @@ |
|||
package com.gxwebsoft.config; |
|||
|
|||
import com.gxwebsoft.common.core.config.ConfigProperties; |
|||
import org.junit.jupiter.api.Test; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.boot.test.context.SpringBootTest; |
|||
import org.springframework.test.context.ActiveProfiles; |
|||
|
|||
import static org.junit.jupiter.api.Assertions.*; |
|||
|
|||
/** |
|||
* 服务器URL配置测试 |
|||
* 验证server-url配置是否正确从配置文件读取 |
|||
*/ |
|||
@SpringBootTest |
|||
@ActiveProfiles("dev") |
|||
public class ServerUrlConfigTest { |
|||
|
|||
@Autowired |
|||
private ConfigProperties configProperties; |
|||
|
|||
@Test |
|||
public void testServerUrlConfiguration() { |
|||
// 验证配置属性不为空
|
|||
assertNotNull(configProperties, "ConfigProperties should not be null"); |
|||
|
|||
// 验证server-url配置正确读取
|
|||
String serverUrl = configProperties.getServerUrl(); |
|||
assertNotNull(serverUrl, "Server URL should not be null"); |
|||
assertFalse(serverUrl.isEmpty(), "Server URL should not be empty"); |
|||
|
|||
// 在开发环境下,应该是本地地址
|
|||
assertTrue(serverUrl.contains("127.0.0.1") || serverUrl.contains("localhost"), |
|||
"In dev environment, server URL should contain localhost or 127.0.0.1"); |
|||
|
|||
System.out.println("当前配置的服务器URL: " + serverUrl); |
|||
} |
|||
|
|||
@Test |
|||
public void testServerUrlFormat() { |
|||
String serverUrl = configProperties.getServerUrl(); |
|||
|
|||
// 验证URL格式
|
|||
assertTrue(serverUrl.startsWith("http://") || serverUrl.startsWith("https://"), |
|||
"Server URL should start with http:// or https://"); |
|||
assertTrue(serverUrl.endsWith("/api"), |
|||
"Server URL should end with /api"); |
|||
|
|||
System.out.println("服务器URL格式验证通过: " + serverUrl); |
|||
} |
|||
} |
Loading…
Reference in new issue