Browse Source

fixed:技师端-提交资质记录-修改入参

刘学玺 3 months ago
parent
commit
f4a13d9531

+ 15 - 4
app/Http/Controllers/Coach/AccountController.php

@@ -105,12 +105,23 @@ class AccountController extends Controller
      * @authenticated
      *
      * @bodyParam qual_type int required 资质类型(1:初级按摩师 2:中级按摩师 3:高级按摩师) Example: 1
-     * @bodyParam qual_photo string required 资质证书照片 Example: base64或其他格式的图片数据
-     * @bodyParam business_license string required 营业执照照片 Example: base64或其他格式的图片数据
-     * @bodyParam health_cert string required 健康证照片 Example: base64或其他格式的图片数据
+     * @bodyParam qual_photo array required 资质证书照片数组
+     * @bodyParam qual_photo.* string required 资质证书照片 Example: base64或其他格式的图片数据
+     * @bodyParam business_license array required 营业执照照片数组
+     * @bodyParam business_license.* string required 营业执照照片 Example: base64或其他格式的图片数据
+     * @bodyParam health_cert array required 健康证照片数组
+     * @bodyParam health_cert.* string required 健康证照片 Example: base64或其他格式的图片数据
      *
      * @response {
-     *  "message": "资质信息提交成功"
+     *  "message": "资质信息提交成功",
+     *  "data": {
+     *    "qual_type": 1,
+     *    "qual_photo": ["path/to/photo1.jpg", "path/to/photo2.jpg"],
+     *    "business_license": ["path/to/license1.jpg", "path/to/license2.jpg"],
+     *    "health_cert": ["path/to/cert1.jpg", "path/to/cert2.jpg"],
+     *    "state": 1,
+     *    "updated_at": "2024-03-22 10:00:00"
+     *  }
      * }
      */
     public function submitQualification(SubmitQualificationRequest $request)

+ 15 - 13
app/Http/Requests/Coach/SubmitQualificationRequest.php

@@ -11,31 +11,33 @@ class SubmitQualificationRequest extends FormRequest
         return true;
     }
 
-    public function rules()
+    public function rules(): array
     {
         return [
             'qual_type' => 'required|integer|in:1,2,3',
-            'qual_photo' => 'required|string|max:2048',
-            'business_license' => 'required|string|max:2048',
-            'health_cert' => 'required|string|max:2048',
+            'qual_photo' => 'required|array',
+            'qual_photo.*' => 'required|string',
+            'business_license' => 'required|array',
+            'business_license.*' => 'required|string',
+            'health_cert' => 'required|array',
+            'health_cert.*' => 'required|string',
         ];
     }
 
-    public function messages()
+    public function messages(): array
     {
         return [
             'qual_type.required' => '资质类型不能为空',
-            'qual_type.integer' => '资质类型必须是整数',
-            'qual_type.in' => '资质类型只能是1(初级)、2(中级)或3(高级)',
+            'qual_type.in' => '无效的资质类型',
             'qual_photo.required' => '资质证书照片不能为空',
-            'qual_photo.string' => '资质证书照片格式不正确',
-            'qual_photo.max' => '资质证书照片数据过大',
+            'qual_photo.array' => '资质证书照片必须是数组',
+            'qual_photo.*.required' => '资质证书照片不能为空',
             'business_license.required' => '营业执照照片不能为空',
-            'business_license.string' => '营业执照照片格式不正确',
-            'business_license.max' => '营业执照照片数据过大',
+            'business_license.array' => '营业执照照片必须是数组',
+            'business_license.*.required' => '营业执照照片不能为空',
             'health_cert.required' => '健康证照片不能为空',
-            'health_cert.string' => '健康证照片格式不正确',
-            'health_cert.max' => '健康证照片数据过大',
+            'health_cert.array' => '健康证照片必须是数组',
+            'health_cert.*.required' => '健康证照片不能为空',
         ];
     }
 }

+ 17 - 15
app/Services/Coach/AccountService.php

@@ -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()