Browse Source

feat:技师认证申请接口的的改动

景好勇win11 3 months ago
parent
commit
80531b7a83

+ 3 - 4
app/Admin/Controllers/CoachInfoRecordController.php

@@ -119,13 +119,13 @@ class CoachInfoRecordController extends AdminController
     public function audit(Request $request)
     {
         $validated = $request->validate([
-            'info_record_id' => 'required|integer|exists:coach_info_records,id',
+            'id' => 'required|integer|exists:coach_info_records,id',
             'info_record_state' => 'required|integer|in:2,3', // 2:通过 3:驳回
             'audit_remark' => 'nullable|string|max:255', // 改为可选
         ]);
 
         $result = $this->service->audit(
-            $validated['info_record_id'],
+            $validated['id'],
             $validated['info_record_state'],
             $validated['audit_remark'] ?? '', // 添加默认值
             Admin::user()->id
@@ -185,8 +185,7 @@ class CoachInfoRecordController extends AdminController
             'work_years' => 'nullable|integer|min:0|max:99',
             'intention_city' => 'nullable|string|max:50',
             'introduction' => 'nullable|string|max:255',
-            'life_photos' => 'nullable|array',
-            'life_photos.*' => 'required|string',
+            'life_photos' => 'nullable|string'
         ], [
             'nickname.min' => '昵称不能少于2个字符',
             'nickname.max' => '昵称不能超过20个字符',

+ 7 - 117
app/Models/VCoachAuthRecord.php

@@ -28,7 +28,7 @@ class VCoachAuthRecord extends Model
      *
      * @var string
      */
-    protected $table = 'v_coach_auth_record';
+    protected $table = 'v_coach_qual_record';
 
     /**
      * 表明模型是否应该被打上时间戳
@@ -45,124 +45,14 @@ class VCoachAuthRecord extends Model
     protected $guarded = [];
 
     /**
-     * 应该被追加到模型数组的访问器
+     * 应该被转换成原生类型的属性
      *
      * @var array
      */
-    protected $appends = [
-        'portrait_images_url',    // 技术形象照URL
-        'id_card_images_url',     // 身份证照片URL
-        'qual_photo_url',         // 从业资格证URL
-        'business_license_url',    // 营业执照URL
-        'health_certificate_url',  // 健康证URL
-        'avatar_url'              // 头像URL
+    protected $casts = [
+        'business_license' => 'array',
+        'health_certificate' => 'array',
+        'life_photos' => 'array',
+        'qual_photo' => 'array',
     ];
-
-    /**
-     * 获取技术形象照完整URL
-     */
-    public function getPortraitImagesUrlAttribute(): ?array
-    {
-        if (!$this->portrait_images) {
-            return null;
-        }
-
-        $images = is_string($this->portrait_images)
-            ? json_decode($this->portrait_images, true)
-            : $this->portrait_images;
-
-        return array_map(function ($image) {
-            return "/api/download?filename={$image}&bucket=user-avatar";
-        }, $images);
-    }
-
-    /**
-     * 获取身份证照片完整URL
-     */
-    public function getIdCardImagesUrlAttribute(): ?array
-    {
-        if (!$this->id_card_images) {
-            return null;
-        }
-
-        $images = is_string($this->id_card_images)
-            ? json_decode($this->id_card_images, true)
-            : $this->id_card_images;
-
-        return array_map(function ($image) {
-            return "/api/download?filename={$image}&bucket=user-avatar";
-        }, $images);
-    }
-
-    /**
-     * 获取从业资格证完整URL
-     */
-    public function getQualPhotoUrlAttribute(): ?array
-    {
-        if (!$this->qual_photo) {
-            return null;
-        }
-
-        $images = is_string($this->qual_photo)
-            ? json_decode($this->qual_photo, true)
-            : $this->qual_photo;
-
-        return array_map(function ($image) {
-            return "/api/download?filename={$image}&bucket=user-avatar";
-        }, $images);
-    }
-
-    /**
-     * 获取营业执照完整URL
-     */
-    public function getBusinessLicenseUrlAttribute(): ?array
-    {
-        if (!$this->business_license) {
-            return null;
-        }
-
-        $images = is_string($this->business_license)
-            ? json_decode($this->business_license, true)
-            : $this->business_license;
-
-        return array_map(function ($image) {
-            return "/api/download?filename={$image}&bucket=user-avatar";
-        }, $images);
-    }
-
-    /**
-     * 获取健康证完整URL
-     */
-    public function getHealthCertificateUrlAttribute(): ?array
-    {
-        if (!$this->health_certificate) {
-            return null;
-        }
-
-        $images = is_string($this->health_certificate)
-            ? json_decode($this->health_certificate, true)
-            : $this->health_certificate;
-
-        return array_map(function ($image) {
-            return "/api/download?filename={$image}&bucket=user-avatar";
-        }, $images);
-    }
-
-    /**
-     * 获取头像完整URL
-     */
-    public function getAvatarUrlAttribute(): ?string
-    {
-        return $this->avatar
-            ? "/api/download?filename={$this->avatar}&bucket=user-avatar"
-            : null;
-    }
-
-    /**
-     * 关联技师用户
-     */
-    public function coach()
-    {
-        return $this->belongsTo(CoachUser::class, 'coach_id', 'id');
-    }
 }

+ 1 - 0
app/Models/VCoachInfo.php

@@ -21,5 +21,6 @@ class VCoachInfo extends Model
         'life_photos' => 'array',
         'portrait_images' => 'array',
         'id_card_images' => 'array',
+        'avatar' => 'array',
     ];
 }

+ 8 - 3
app/Services/CoachInfoRecordService.php

@@ -7,8 +7,8 @@ use App\Enums\TechnicianStatus;
 use App\Models\CoachInfoRecord;
 use Illuminate\Support\Facades\DB;
 use App\Enums\TechnicianAuthStatus;
-use Slowlyo\OwlAdmin\Services\AdminService;
 use Illuminate\Support\Facades\Auth;
+use Slowlyo\OwlAdmin\Services\AdminService;
 
 /**
  * 技师信息记录
@@ -135,8 +135,13 @@ class CoachInfoRecordService extends AdminService
 
             // 如果有生活照片,转换为JSON
             if (isset($updateData['life_photos'])) {
-                // 保持原有格式,只确保是数组格式
-                $updateData['life_photos'] = json_encode(array_values($updateData['life_photos']));
+                // 将逗号分割的字符串转换为数组格式
+                $updateData['life_photos'] = explode(',', $updateData['life_photos']);
+            }
+
+            if (isset($updateData['avatar'])) {
+                // 将逗号分割的字符串转换为数组格式
+                $updateData['avatar'] = explode(',', $updateData['avatar']);
             }
 
             // 更新记录

+ 42 - 7
doc/系统设计/数据库设计/物理模型/分析后台设计增加/03技师认证.sql

@@ -93,8 +93,9 @@ SELECT
     cir.introduction AS introduction /* 个人简介 */,
     cu.state AS coach_state /* 技师状态 */,
     cir.state AS info_record_state /* 审核状态 */,
-    cir.portrait_images AS avatar /* 头像图片 */,
+    cir.avatar AS avatar /* 头像图片 */,
     cir.life_photos AS life_photos /* 生活照片数组 */,
+    cir.created_at AS created_at /* 申请时间 */,
     cir.auditor AS auditor /* 审核人 */,
     cir.audit_time AS audit_time /* 审核时间 */,
     cir.audit_remark AS audit_remark /* 审核备注 */,
@@ -106,12 +107,12 @@ WHERE
     cir.deleted_at IS NULL
     AND cu.deleted_at IS NULL;
 
-/* 技师认证记录视图 */
-DROP VIEW IF EXISTS v_coach_auth_record;
+/* 技师资质认证记录视图 */
+DROP VIEW IF EXISTS v_coach_qual_record;
 
-CREATE VIEW v_coach_auth_record AS
+CREATE VIEW v_coach_qual_record AS
 SELECT
-    cqr.id AS qualification_record_id /* 资质证书记录ID */,
+    cqr.id AS id /* 资质证书记录ID */,
     cu.id AS coach_id /* 技师ID */,
     cir.id AS info_record_id /* 技师信息记录ID */,
     cqr.qual_type AS qual_type /* 资质类型 */,
@@ -121,7 +122,7 @@ SELECT
     cqr.state AS qualification_record_state /* 审核状态 */,
     cir.nickname AS nickname /* 技师昵称 */,
     cir.gender AS gender /* 技师性别 */,
-    cir.mobile AS phone /* 技师手机号码 */,
+    cir.mobile AS mobile /* 技师手机号码 */,
     cir.intention_city AS intention_city /* 技师期望城市 */,
     cir.introduction AS introduction /* 技师个人简介 */,
     cir.portrait_images AS avatar /* 头像图片 */,
@@ -131,6 +132,7 @@ SELECT
     cr.id_card_front_photo AS id_card_front_photo /* 技师身份证照片正面 */,
     cr.id_card_back_photo AS id_card_back_photo /* 技师身份证照片反面 */,
     cr.id_card_hand_photo AS id_card_hand_photo /* 技师身份证手持照片 */,
+    cqr.created_at AS created_at /* 申请时间 */,
     cqr.auditor AS auditor /* 审核人 */,
     cqr.audit_time AS audit_time /* 审核时间 */,
     cqr.audit_remark AS audit_remark /* 审核备注 */
@@ -138,8 +140,41 @@ FROM
     coach_qual_records cqr
     LEFT JOIN coach_users cu ON cu.id = cqr.coach_id /* 先关联技师用户表 */
     LEFT JOIN coach_info_records cir ON cir.id = cu.info_record_id /* 再关联技师信息记录表 */
-    LEFT JOIN coach_real_records cr ON cr.id = cu.real_auth_record_id /* 最后关联实名认证记录表 */
+    LEFT JOIN coach_real_records cr ON cr.coach_id = cqr.coach_id /* 最后关联实名认证记录表 */
 WHERE
     cqr.deleted_at IS NULL
     AND cu.deleted_at IS NULL
     AND cir.deleted_at IS NULL;
+
+/* 技师实名认证记录视图 */
+DROP VIEW IF EXISTS v_coach_real_record;
+
+CREATE VIEW v_coach_real_record AS
+SELECT
+    cr.id AS id /* 实名认证记录ID */,
+    cu.id AS coach_id /* 技师ID */,
+    cir.id AS info_record_id /* 技师信息记录ID */,
+    cir.nickname AS nickname /* 技师昵称 */,
+    cir.portrait_images AS avatar /* 头像图片 */,
+    cir.gender AS gender /* 技师性别 */,
+    cir.mobile AS mobile /* 技师手机号码 */,
+    cir.intention_city AS intention_city /* 技师期望城市 */,
+    cr.real_name AS real_name /* 真实姓名 */,
+    cr.id_card AS id_card /* 身份证号码 */,
+    cu.state AS coach_state /* 技师状态 */,
+    cr.state AS state /* 审核状态 */,
+    cr.id_card_front_photo AS id_card_front_photo /* 身份证照片正面 */,
+    cr.id_card_back_photo AS id_card_back_photo /* 身份证照片反面 */,
+    cr.id_card_hand_photo AS id_card_hand_photo /* 身份证手持照片 */,
+    cr.created_at AS created_at /* 申请时间 */,
+    cr.auditor AS auditor /* 审核人 */,
+    cr.audit_time AS audit_time /* 审核时间 */,
+    cr.audit_remark AS audit_remark /* 审核备注 */
+FROM
+    coach_real_records cr
+    LEFT JOIN coach_users cu ON cu.id = cr.coach_id
+    LEFT JOIN coach_info_records cir ON cir.id = cu.info_record_id
+WHERE
+    cr.deleted_at IS NULL
+    AND cu.deleted_at IS NULL
+    AND cir.deleted_at IS NULL;