| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- <?php
- namespace App\Services\PromptTemplate;
- use App\Consts\ErrorConst;
- use App\Exceptions\ApiException;
- use App\Facade\Site;
- use App\Libs\Utils;
- use Illuminate\Support\Facades\DB;
- class PromptTemplateService
- {
- /**
- * 获取提示词模板列表
- *
- * @param array $data
- * @return array
- */
- public function getTemplates($data = [])
- {
- $cpid = Site::getCpid();
- $templateId = getProp($data, 'template_id');
- $templateName = getProp($data, 'template_name');
- $remark = getProp($data, 'remark');
- $query = DB::table('mp_prompt_templates')->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')
- ]);
- }
- }
|