Browse Source

feat:技师端- 获取项目参数设置

刘学玺 3 months ago
parent
commit
9c6c2f098f

+ 38 - 0
app/Http/Controllers/Coach/ProjectController.php

@@ -150,4 +150,42 @@ class ProjectController extends Controller
             $this->service->setProject(Auth::user()->coach, $request->validated())
         );
     }
+
+    /**
+     * [项目]获取项目设置
+     *
+     * @description 获取技师已开通项目的相关参数设置,包括代金券、顾客性别和交通费设置
+     *
+     * @authenticated 需要技师身份认证
+     *
+     * @queryParam project_id integer required 项目ID Example: 1
+     *
+     * @response {
+     *   "status": true,
+     *   "message": "获取成功",
+     *   "data": {
+     *     "project_id": 1,
+     *     "project_name": "精油推拿",
+     *     "settings": {
+     *       "voucher": "5.00",         // 代金券金额
+     *       "gender": 0,               // 顾客性别(0:不限 1:男 2:女)
+     *       "traffic_fee_type": 2      // 交通费类型(0:免费 1:单程 2:双程)
+     *     }
+     *   }
+     * }
+     *
+     * @response 404 {
+     *   "message": "未开通该项目"
+     * }
+     */
+    public function getProjectSettings(Request $request)
+    {
+        $validated = $request->validate([
+            'project_id' => 'required|integer|exists:project,id'
+        ]);
+
+        return $this->success(
+            $this->service->getProjectSettings(Auth::user()->coach, $validated['project_id'])
+        );
+    }
 }

+ 39 - 0
app/Services/Coach/ProjectService.php

@@ -227,4 +227,43 @@ class ProjectService
             ],
         ];
     }
+
+    /**
+     * 获取项目参数设置
+     *
+     * 业务流程:
+     * 1. 验证项目开通状态
+     * 2. 获取项目设置
+     * 3. 返回格式化结果
+     *
+     * @param CoachUser $coach 技师对象
+     * @param int $projectId 项目ID
+     * @return array 项目设置,包含:
+     *        - project_id: int 项目ID
+     *        - project_name: string 项目名称
+     *        - settings: array 设置值
+     *            - voucher: string 代金券金额
+     *            - gender: int 顾客性别设置
+     *            - traffic_fee_type: int 交通费类型
+     * @throws \Illuminate\Http\Exceptions\HttpResponseException 当项目未开通时抛出异常
+     */
+    public function getProjectSettings(CoachUser $coach, int $projectId): array
+    {
+        // 获取并验证已开通的项目
+        $coachProject = $this->getValidatedCoachProject($coach, $projectId);
+
+        // 获取项目基本信息
+        $project = Project::findOrFail($projectId);
+
+        // 返回格式化的设置
+        return [
+            'project_id' => $projectId,
+            'project_name' => $project->title,
+            'settings' => [
+                'voucher' => $coachProject->discount_amount,
+                'gender' => $coachProject->service_gender,
+                'traffic_fee_type' => $coachProject->traffic_fee_type,
+            ]
+        ];
+    }
 }

+ 2 - 0
routes/api.php

@@ -233,6 +233,8 @@ Route::middleware(['auth:sanctum', 'coach'])->prefix('coach')->group(function ()
         Route::get('/available', [CoachProjectController::class, 'getAvailableProjects']);
         Route::post('/open', [CoachProjectController::class, 'openProject']);
         Route::post('/set', [CoachProjectController::class, 'setProject']);
+        // 获取项目设置
+        Route::get('/set', [CoachProjectController::class, 'getProjectSettings']);
     });
 
     // 钱包相关路由