|
|
@@ -1,17 +1,31 @@
|
|
|
-# 新增URS注册农场用户WebHook
|
|
|
+# 修复农场灾害生成空指针异常
|
|
|
|
|
|
## 任务概述
|
|
|
-按照现有WebHook模式,新增一个URS注册农场用户的WebHook处理器,用于处理URS用户注册农场用户的请求。
|
|
|
+修复 DisasterLogic.php 中因访问不存在用户的buffs属性导致的空指针异常错误。
|
|
|
|
|
|
-## 任务要求
|
|
|
-- 传入参数:user_id (URS的用户ID), user_key (URS的用户密钥)
|
|
|
-- 处理逻辑:使用 UrsUserMappingService::getFarmUserIdByUserKeyWithAutoCreate($userKey, $ursUserId) 的公共逻辑
|
|
|
-- 返回结果:farm_user_id (农场的用户ID)
|
|
|
+## 错误详情
|
|
|
+- 错误位置:`app/Module/Farm/Logics/DisasterLogic.php` 第386行
|
|
|
+- 错误信息:`Attempt to read property "buffs" on null`
|
|
|
+- 涉及作物:ID 890,关联用户ID 9999(不存在)
|
|
|
+- 错误代码:`$activeBuffs = $crop->user->buffs->pluck('buff_type')->toArray();`
|
|
|
+
|
|
|
+## 修复方案
|
|
|
+在 `generateDisasters` 方法中添加用户存在性检查,跳过孤儿作物数据
|
|
|
|
|
|
## 工作计划
|
|
|
-- [x] 创建URS注册农场用户WebHook处理器
|
|
|
-- [x] 实现参数验证和业务逻辑
|
|
|
-- [x] 集成UrsUserMappingService逻辑
|
|
|
+- [x] 错误分析和定位
|
|
|
+- [x] 修复代码逻辑
|
|
|
+- [x] 测试修复效果
|
|
|
+
|
|
|
+## 修复详情
|
|
|
+- 在 `generateDisasters` 方法中添加了用户存在性检查
|
|
|
+- 如果 `$crop->user` 为 `null`,记录警告日志并跳过该作物
|
|
|
+- 仍然更新 `last_disaster_check_time` 避免重复处理
|
|
|
+
|
|
|
+## 测试结果
|
|
|
+- 命令执行成功:`docker exec -it kku_laravel php artisan farm:generate-disasters`
|
|
|
+- 日志显示正确处理:跳过了作物890(用户9999不存在)
|
|
|
+- 无空指针异常,系统稳定运行
|
|
|
- [x] 在UrsServiceProvider中注册WebHook
|
|
|
- [x] 测试WebHook功能
|
|
|
- [x] 提交代码到git仓库
|