|
@@ -39,7 +39,7 @@ class AccountService
|
|
|
*
|
|
|
* 业务流程:
|
|
|
* 1. 验证技师信息存在性
|
|
|
- * 2. 检查是否有待审核的记录
|
|
|
+ * 2. 检查是否待审核的记录
|
|
|
* 3. 处理生活照片数据
|
|
|
* 4. 创建新的基本信息记录
|
|
|
* 5. 清除相关缓存
|
|
@@ -99,7 +99,7 @@ class AccountService
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 提交技师资质信息
|
|
|
+ * 提���技师资质信息
|
|
|
* 包括资质证书照片、营业执照和健康证照片的提交和审核
|
|
|
*
|
|
|
* 业务流程:
|
|
@@ -112,19 +112,16 @@ class AccountService
|
|
|
* - 同一时间只能有一条待审核记录
|
|
|
* - 审核不通过可以重新提交
|
|
|
* - 所有图片数据不限制格式
|
|
|
+ * - 所有图片支持多张上传
|
|
|
+ * - 图片数据以JSON数组格式存储
|
|
|
*
|
|
|
* @param User $user 当前认证用户
|
|
|
* @param array $data 资质信息数据,包含:
|
|
|
* - qual_type: int 资质类型(1:初级 2:中级 3:高级)
|
|
|
- * - qual_photo: string 资质证书照片
|
|
|
- * - business_license: string 营业执照照片
|
|
|
- * - health_cert: string 健康证照片
|
|
|
- * @return array 返回结果,包含:
|
|
|
- * - message: string 提示信息
|
|
|
- * - data: array 详细数据
|
|
|
- * - record_id: int 记录ID
|
|
|
- * - state: int 状态值
|
|
|
- * - state_text: string 状态文本
|
|
|
+ * - qual_photo: array 资质证书照片数组
|
|
|
+ * - business_license: array 营业执照照片数组
|
|
|
+ * - health_cert: array 健康证照片数组
|
|
|
+ * @return array 返回结果
|
|
|
* @throws \Exception 当验证失败或保存失败时抛出异常
|
|
|
*/
|
|
|
public function submitQualification($user, array $data)
|
|
@@ -139,6 +136,11 @@ class AccountService
|
|
|
$pendingRecord = $this->hasPendingRecord($user->coach, 'qual');
|
|
|
abort_if($pendingRecord, 422, '已有待审核的资质信息记录');
|
|
|
|
|
|
+ // 确保图片数据以JSON格式存储
|
|
|
+ $data['qual_photo'] = json_encode(array_values($data['qual_photo']));
|
|
|
+ $data['business_license'] = json_encode(array_values($data['business_license']));
|
|
|
+ $data['health_cert'] = json_encode(array_values($data['health_cert']));
|
|
|
+
|
|
|
// 创建新的资质审核记录,设置为待审核状态
|
|
|
$record = $user->coach->qualRecords()->create(array_merge($data, [
|
|
|
'state' => TechnicianAuthStatus::AUDITING->value,
|
|
@@ -558,7 +560,7 @@ class AccountService
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- // 返回格式化后的实名信息,包含状态文本和脱敏处理
|
|
|
+ // 返回格式��后的实名信息,包含状态文本和脱敏处理
|
|
|
return [
|
|
|
'real_name' => $real->real_name,
|
|
|
'id_card' => $this->maskIdCard($real->id_card),
|
|
@@ -712,7 +714,7 @@ class AccountService
|
|
|
* 格式化位置响应数据
|
|
|
*
|
|
|
* @param CoachLocation $location 位置记录
|
|
|
- * @return array 格式化后的位置信息,包含:
|
|
|
+ * @return array 格式化后���位置信息,包含:
|
|
|
* - province: string 省份
|
|
|
* - city: string 城市
|
|
|
* - district: string 区县
|
|
@@ -783,7 +785,7 @@ class AccountService
|
|
|
// 验证时间段数组
|
|
|
abort_if(empty($timeRanges), 400, '必须至少设置一个时间段');
|
|
|
|
|
|
- // 验证每个时间段格式并转换为分钟数进行比较
|
|
|
+ // 验证每个时间段格式并转换为分钟���进行比较
|
|
|
$ranges = collect($timeRanges)->map(function ($range) {
|
|
|
abort_if(
|
|
|
!isset($range['start_time'], $range['end_time']),
|
|
@@ -1166,7 +1168,7 @@ class AccountService
|
|
|
*/
|
|
|
private function getLatestBaseInfo(CoachUser $coach): CoachInfoRecord
|
|
|
{
|
|
|
- // 获取最新的技师信息记录(排除审核拒绝的记录)
|
|
|
+ // 获取最新的��师信息记录(排除审核拒绝的记录)
|
|
|
$latestInfo = $coach->infoRecords()
|
|
|
->where('state', '<>', TechnicianAuthStatus::REJECTED->value)
|
|
|
->latest()
|