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