where('cpid', $cpid)->where('is_deleted', 0)->select('id as template_id', 'template_name', 'template_prompt', 'remark'); // 模板ID精确查询 if (!empty($templateId)) { $query->where('id', $templateId); } // 模板名称模糊查询 if (!empty($templateName)) { $query->where('template_name', 'like', "%{$templateName}%"); } // 备注标签模糊查询 if (!empty($remark)) { $query->where('remark', 'like', "%{$remark}%"); } // 查询所有数据 $list = $query->orderBy('id', 'desc')->get(); return $list; } /** * 创建提示词模板 * * @param array $data * @return array * @throws ApiException */ public function createTemplate($data) { $cpid = Site::getCpid(); $templateName = trim($data['template_name']); $templatePrompt = trim($data['template_prompt']); $remark = $data['remark'] ?? ''; // 检查模板名称是否已存在(同cpid下) $exists = DB::table('mp_prompt_templates') ->where('cpid', $cpid) ->where('template_name', $templateName) ->where('is_deleted', 0) ->exists(); if ($exists) { Utils::throwError('20003:模版名已存在,请调整'); } $insertData = [ 'cpid' => $cpid, 'template_name' => $templateName, 'template_prompt' => $templatePrompt, 'remark' => $remark, 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'), ]; $templateId = DB::table('mp_prompt_templates')->insertGetId($insertData); return [ 'template_id' => $templateId, 'template_name' => $templateName, 'template_prompt' => $templatePrompt, 'remark' => $remark, ]; } /** * 编辑提示词模板 * * @param array $data * @return array * @throws ApiException */ public function editTemplate($data) { $cpid = Site::getCpid(); $templateId = $data['template_id']; // 检查模板是否存在 $template = DB::table('mp_prompt_templates') ->where('id', $templateId) ->where('is_deleted', 0) ->first(); if (!$template) { Utils::throwError('20003:模板不存在'); } // 验证cpid权限 if ($template->cpid != $cpid) { Utils::throwError('20003:没有权限操作此模板'); } $updateData = ['updated_at' => date('Y-m-d H:i:s')]; // 如果要更新模板名称,检查是否重复(同cpid下) if (isset($data['template_name'])) { $templateName = trim($data['template_name']); $exists = DB::table('mp_prompt_templates') ->where('cpid', $cpid) ->where('template_name', $templateName) ->where('id', '<>', $templateId) ->where('is_deleted', 0) ->exists(); if ($exists) { Utils::throwError('20003:模版名已存在,请调整'); } $updateData['template_name'] = $templateName; } if (isset($data['template_prompt'])) { $updateData['template_prompt'] = trim($data['template_prompt']); } if (isset($data['remark'])) { $updateData['remark'] = $data['remark']; } DB::table('mp_prompt_templates') ->where('id', $templateId) ->update($updateData); // 返回更新后的数据 $updatedTemplate = DB::table('mp_prompt_templates') ->where('id', $templateId) ->first(); return [ 'template_id' => $updatedTemplate->id, 'template_name' => $updatedTemplate->template_name, 'template_prompt' => $updatedTemplate->template_prompt, 'remark' => $updatedTemplate->remark ?? '', 'updated_at' => $updatedTemplate->updated_at, ]; } /** * 删除提示词模板 * * @param int $templateId * @return array * @throws ApiException */ public function deleteTemplate($templateId) { $cpid = Site::getCpid(); // 检查模板是否存在 $template = DB::table('mp_prompt_templates') ->where('id', $templateId) ->where('is_deleted', 0) ->first(); if (!$template) { Utils::throwError('20003:模板不存在'); } // 验证cpid权限 if ($template->cpid != $cpid) { Utils::throwError('20003:没有权限操作此模板'); } return DB::table('mp_prompt_templates') ->where('id', $templateId) ->update([ 'is_deleted' => 1, 'updated_at' => date('Y-m-d H:i:s') ]); } }