|
@@ -31,13 +31,14 @@ class AccountService
|
|
|
* 业务流程:
|
|
|
* 1. 验证技师信息存在性
|
|
|
* 2. 检查是否有待审核的记录
|
|
|
- * 3. 创建新的基本信息记录
|
|
|
- * 4. 清除相关缓存
|
|
|
+ * 3. 处理生活照片数据
|
|
|
+ * 4. 创建新的基本信息记录
|
|
|
+ * 5. 清除相关缓存
|
|
|
*
|
|
|
* 注意事项:
|
|
|
* - 同一时间只能有一条待审核记录
|
|
|
* - 审核不通过可以重新提交
|
|
|
- * - 头像图片数据不限制格式
|
|
|
+ * - 头像和生活照片不限制格式
|
|
|
* - 除性别和手机号外,其他字段均为可选
|
|
|
* - 手机号会进行脱敏处理
|
|
|
*
|
|
@@ -45,42 +46,57 @@ class AccountService
|
|
|
* @param array $data 基本信息数据,包含:
|
|
|
* - nickname: string|null 昵称(可选)
|
|
|
* - avatar: string|null 头像图片(可选)
|
|
|
+ * - life_photos: array|null 生活照片数组(可选)
|
|
|
* - gender: string 性别(1:男 2:女)
|
|
|
* - mobile: string 手机号
|
|
|
* - birthday: string|null 出生日期(可选)
|
|
|
* - work_years: int|null 工作年限(可选)
|
|
|
* - intention_city: string|null 意向城市(可选)
|
|
|
* - introduction: string|null 个人简介(可选)
|
|
|
- * @return array 返回结果
|
|
|
+ * @return array 返回结果,包含:
|
|
|
+ * - message: string 提示信息
|
|
|
* @throws \Exception 当验证失败或保存失败时抛出异常
|
|
|
*/
|
|
|
public function submitBaseInfo($user, array $data)
|
|
|
{
|
|
|
+ // 开启数据库事务,确保数据一致性
|
|
|
DB::beginTransaction();
|
|
|
try {
|
|
|
- // 验证技师信息是否存在
|
|
|
+ // 验证技师信息是否存在,不存在则抛出404异常
|
|
|
abort_if(!$user->coach, 404, '技师信息不存在');
|
|
|
|
|
|
// 检查是否有待审核的记录,避免重复提交
|
|
|
+ // 如果存在待审核记录,则抛出422异常
|
|
|
$pendingRecord = $this->hasPendingRecord($user->coach, 'info');
|
|
|
abort_if($pendingRecord, 422, '已有待审核的基本信息记录');
|
|
|
|
|
|
- // 创建技师信息
|
|
|
+ // 处理生活照片数据:将数组转换为JSON格式存储
|
|
|
+ // 如果没有生活照片数据,则保持原样
|
|
|
+ if (isset($data['life_photos'])) {
|
|
|
+ // 使用array_values确保数组索引连续
|
|
|
+ $data['life_photos'] = json_encode(array_values($data['life_photos']));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建新的基本信息记录,设置为待审核状态
|
|
|
+ // 合并用户提交的数据和审核状态
|
|
|
$user->coach->infoRecords()->create(array_merge($data, [
|
|
|
- 'state' => TechnicianAuthStatus::AUDITING->value,
|
|
|
+ 'state' => TechnicianAuthStatus::AUDITING->value, // 设置为待审核状态
|
|
|
]));
|
|
|
|
|
|
// 清除技师信息缓存,确保数据一致性
|
|
|
+ // 避免用户获取到旧的缓存数据
|
|
|
$this->clearCoachCache($user->coach->id);
|
|
|
|
|
|
- // 提交事务
|
|
|
+ // 提交事务,确保所有操作成功
|
|
|
DB::commit();
|
|
|
|
|
|
// 返回成功结果
|
|
|
return ['message' => '基本信息提交成功'];
|
|
|
} catch (\Exception $e) {
|
|
|
- // 发生异常时回滚事务
|
|
|
+ // 发生异常时回滚事务,确保数据一致性
|
|
|
DB::rollBack();
|
|
|
+
|
|
|
+ // 向上抛出异常,由调用方处理
|
|
|
throw $e;
|
|
|
}
|
|
|
}
|
|
@@ -285,6 +301,7 @@ class AccountService
|
|
|
return [
|
|
|
'nickname' => $info->nickname,
|
|
|
'avatar' => $info->avatar, // 支持任意格式的图片数据
|
|
|
+ 'life_photos' => json_decode($info->life_photos, true) ?? [], // 生活照片数组
|
|
|
'gender' => $info->gender,
|
|
|
'mobile' => $this->maskMobile($info->mobile), // 手机号脱敏处理
|
|
|
'birthday' => $info->birthday,
|