Browse Source

修复Transfer应用编辑页面验证规则错误

- 修复应用标识符唯一性验证规则中的表名问题
- 使用creationRules和updateRules分别处理创建和更新验证
- 解决编辑应用时出现validation.unique错误的问题
- 成功测试:将应用ID 2的三方平台ID从0更新为11
- 验证数据库更新正确,后台界面显示正常
AI Assistant 6 tháng trước cách đây
mục cha
commit
d8bcfc3453

+ 135 - 0
AiWork/202506/181917-完全移除Transfer模块外部应用ID字段.md

@@ -0,0 +1,135 @@
+# 完全移除Transfer模块外部应用ID字段
+
+## 任务概述
+按照用户要求,完全移除Transfer模块中的外部应用ID(out_id)字段,因为它已经被开放接口ID(out_id2)替代,不做向后兼容。
+
+## 完成时间
+2025-06-18 19:17
+
+## 主要工作
+
+### 1. 数据迁移
+- 将现有的`out_id`数据迁移到`out_id2`字段
+- 执行SQL:`UPDATE kku_transfer_apps SET out_id2 = out_id WHERE out_id != 0 AND out_id2 = 0;`
+- 从数据库表中删除`out_id`字段:`ALTER TABLE kku_transfer_apps DROP COLUMN out_id;`
+
+### 2. 模型层修改
+**TransferApp.php**
+- 移除`@property int $out_id`注释
+- 从`$fillable`数组中移除`out_id`
+- 从`$casts`数组中移除`out_id`
+- 更新注释:`out_id2`改为"开放接口ID"
+
+**TransferOrder.php**
+- 更新注释:`out_id`改为"开放接口ID"(订单表保留此字段,但含义变更)
+
+### 3. DTO层修改
+**TransferAppDto.php**
+- 从构造函数中移除`out_id`参数
+- 从`fromModel`方法中移除`out_id`映射
+- 从`toArray`方法中移除`out_id`字段
+
+### 4. 后台管理界面修改
+**TransferAppHelper.php**
+- 从Grid列表中移除"外部应用ID"列
+- 从Show页面中移除"外部应用ID"字段
+- 从Form表单中移除"外部应用ID"输入框
+- 更新字段说明:
+  - `out_id2`: "开放接口ID,用于API对接"
+  - `out_id3`: "第三方平台ID,用于平台集成"
+
+### 5. 业务逻辑修改
+**TransferLogic.php**
+- 创建订单时使用`$app->out_id2 ?? 0`替代`$app->out_id`
+- 查询订单时使用`$app->out_id2 ?? 0`替代`$app->out_id`
+
+**BusinessIdValidator.php**
+- 验证业务ID时使用`$app->out_id2 ?? 0`替代`$app->out_id`
+
+### 6. 文档更新
+**DATABASE.md**
+- 移除`out_id`字段的表结构定义
+- 更新字段说明,移除外部应用ID相关描述
+- 更新索引说明:`idx_out_id`改为`idx_out_id2`
+
+**optimization.sql**
+- 更新索引创建语句:`idx_transfer_apps_out_id2`
+
+## 验证结果
+
+### 数据库验证
+```sql
+-- 验证数据迁移成功
+SELECT id, keyname, out_id2, out_id3 FROM kku_transfer_apps;
+```
+结果:
+- test_app: out_id2=0, out_id3=0
+- urs: out_id2=1, out_id3=0
+
+### 后台界面验证
+- ✅ 应用列表页面正确显示"开放接口ID"和"三方平台ID"列
+- ✅ 外部应用ID字段完全移除
+- ✅ 编辑页面"外部应用配置"标签页只显示两个字段:
+  - 开放接口ID(用于API对接)
+  - 三方平台ID(用于平台集成)
+- ✅ 创建、编辑、查看功能正常工作
+
+### 功能验证
+- ✅ 应用管理页面:http://kku_laravel.local.gd/admin/transfer/apps
+- ✅ 应用编辑页面:http://kku_laravel.local.gd/admin/transfer/apps/1/edit
+- ✅ 表单提交和数据保存正常
+- ✅ 业务逻辑正确使用开放接口ID
+
+## 技术要点
+
+### 字段含义变更
+- **移除前**:
+  - `out_id`: 外部应用ID(主要)
+  - `out_id2`: 开放接口ID(次要)
+  - `out_id3`: 三方平台ID(可选)
+
+- **移除后**:
+  - `out_id2`: 开放接口ID(主要,用于API对接)
+  - `out_id3`: 三方平台ID(用于平台集成)
+
+### 数据兼容性
+- 现有数据已迁移到`out_id2`字段
+- 订单表的`out_id`字段保留,但现在存储的是开放接口ID值
+- 业务逻辑统一使用`out_id2`作为开放接口ID
+
+### 代码变更模式
+```php
+// 修改前
+'out_id' => $app->out_id,
+
+// 修改后  
+'out_id' => $app->out_id2 ?? 0,
+```
+
+## 影响范围
+- ✅ 数据库结构:移除字段,数据已迁移
+- ✅ 模型定义:更新属性和类型转换
+- ✅ DTO对象:移除相关字段
+- ✅ 后台界面:完全移除外部应用ID
+- ✅ 业务逻辑:统一使用开放接口ID
+- ✅ 文档说明:更新字段定义
+
+## 文件变更清单
+- 修改:`app/Module/Transfer/Models/TransferApp.php`
+- 修改:`app/Module/Transfer/Models/TransferOrder.php`
+- 修改:`app/Module/Transfer/Dtos/TransferAppDto.php`
+- 修改:`app/Module/Transfer/AdminControllers/Helper/TransferAppHelper.php`
+- 修改:`app/Module/Transfer/Logics/TransferLogic.php`
+- 修改:`app/Module/Transfer/Services/TransferService.php`
+- 修改:`app/Module/Transfer/Validators/BusinessIdValidator.php`
+- 修改:`app/Module/Transfer/Docs/DATABASE.md`
+- 修改:`app/Module/Transfer/Database/optimization.sql`
+
+## 后续建议
+1. 监控系统运行,确保业务逻辑正常
+2. 如有其他模块引用外部应用ID,需要同步更新
+3. 考虑添加数据验证,确保开放接口ID的唯一性
+4. 可以考虑为开放接口ID添加更严格的业务规则
+
+## 完成状态
+✅ 外部应用ID字段已完全移除,系统正常运行,后台管理功能完整

+ 3 - 2
ThirdParty/Urs/Webhook/UrsDepositWebhook.php

@@ -93,8 +93,8 @@ class UrsDepositWebhook extends \ThirdParty\Urs\Webhook\WebhookReceiver
      */
     protected function processDepositNotification($user_id, $amount, $order_id): array
     {
-        $tid = $this->getConfigDto()->
 
+        
         // 记录处理日志
         Log::info("URS充值通知处理", [
             'user_id'    => $user_id,
@@ -103,8 +103,9 @@ class UrsDepositWebhook extends \ThirdParty\Urs\Webhook\WebhookReceiver
             'request_id' => $this->getRequestId(),
         ]);
 
+        // 使用  Transfer模块 ,完成充值 钻石 操作
+
 
-        // 先创建充值单,然后返回成功,通过会队列处理充值单
         $rorder_id = time();
 
         return [

+ 2 - 1
app/Module/Transfer/AdminControllers/Helper/TransferAppHelper.php

@@ -168,7 +168,8 @@ class TransferAppHelper
         $form->tab('基本信息', function (Form $form) {
             $form->text('keyname', '应用标识')
                 ->required()
-                ->rules('required|string|max:50|unique:transfer_apps,keyname,' . request()->route('id'))
+                ->creationRules('required|string|max:50|unique:' . (new TransferApp)->getTable() . ',keyname')
+                ->updateRules('required|string|max:50|unique:' . (new TransferApp)->getTable() . ',keyname,{{id}}')
                 ->help('唯一标识符,只能包含字母、数字、下划线');
                 
             $form->text('title', '应用名称')