|
@@ -1215,4 +1215,72 @@ class AccountService
|
|
|
'total_expense' => $coach->wallet->total_expense ?? 0, // 累计支出
|
|
|
];
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新技师基础信息
|
|
|
+ *
|
|
|
+ * 业务流程:
|
|
|
+ * 1. 获取最新的非拒绝记录
|
|
|
+ * 2. 如果是待审核状态,直接更新字段
|
|
|
+ * 3. 如果是已通过状态,创建新记录并复制字段
|
|
|
+ *
|
|
|
+ * @param CoachUser $coach 技师对象
|
|
|
+ * @param array $data 待更新的数据,可包含:
|
|
|
+ * - nickname: ?string 昵称
|
|
|
+ * - gender: ?int 性别(1:男 2:女)
|
|
|
+ * - mobile: ?string 手机号
|
|
|
+ * @return array 返回结果
|
|
|
+ */
|
|
|
+ public function updateBasicInfo(CoachUser $coach, array $data): array
|
|
|
+ {
|
|
|
+ return DB::transaction(function () use ($coach, $data) {
|
|
|
+ // 获取最新的非拒绝记录
|
|
|
+ $latestRecord = $coach->infoRecords()
|
|
|
+ ->where('state', '<>', TechnicianAuthStatus::REJECTED->value)
|
|
|
+ ->latest()
|
|
|
+ ->first();
|
|
|
+
|
|
|
+ abort_if(!$latestRecord, 404, '未找到有效的基础信息记录');
|
|
|
+
|
|
|
+ // 提取要更新的字段
|
|
|
+ $updateFields = array_intersect_key($data, [
|
|
|
+ 'nickname' => '',
|
|
|
+ 'gender' => '',
|
|
|
+ 'mobile' => '',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ // 如果没有要更新的字段,直接返回
|
|
|
+ abort_if(empty($updateFields), 422, '没有需要更新的字段');
|
|
|
+
|
|
|
+ // 如果最新记录是待审核状态,直接更新
|
|
|
+ if ($latestRecord->state === TechnicianAuthStatus::AUDITING->value) {
|
|
|
+ $latestRecord->update($updateFields);
|
|
|
+
|
|
|
+ return [
|
|
|
+ 'message' => '基础信息修改申请已更新',
|
|
|
+ 'record_id' => $latestRecord->id,
|
|
|
+ 'updated_fields' => array_keys($updateFields)
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建新的审核记录,复制其他字段
|
|
|
+ $newRecord = $coach->infoRecords()->create(array_merge([
|
|
|
+ 'avatar' => $latestRecord->avatar,
|
|
|
+ 'life_photos' => $latestRecord->life_photos,
|
|
|
+ 'gender' => $latestRecord->gender,
|
|
|
+ 'mobile' => $latestRecord->mobile,
|
|
|
+ 'birthday' => $latestRecord->birthday,
|
|
|
+ 'work_years' => $latestRecord->work_years,
|
|
|
+ 'intention_city' => $latestRecord->intention_city,
|
|
|
+ 'introduction' => $latestRecord->introduction,
|
|
|
+ 'state' => TechnicianAuthStatus::AUDITING->value,
|
|
|
+ ], $updateFields)); // 使用新的字段值覆盖
|
|
|
+
|
|
|
+ return [
|
|
|
+ 'message' => '基础信息修改申请已提交',
|
|
|
+ 'record_id' => $newRecord->id,
|
|
|
+ 'updated_fields' => array_keys($updateFields)
|
|
|
+ ];
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|