$params['id'], 'user_id' => self::$uid]); } else { MindMap::whereIn('id', $params['id'])->where('user_id', self::$uid)->select()->delete(); } return true; } catch (\Exception $exception) { self::setError($exception->getMessage()); return false; } } /** * 编辑 * @param array $params * @return bool * @author L * @data 2024/7/1 15:08 */ public static function edit(array $params): bool { //设置不超时 set_time_limit(0); //计费单价 $unit = TokenLogService::checkToken(self::$uid, 'mind_map'); try { $mindMapInfo = MindMap::where('user_id', self::$uid)->findOrEmpty($params['id']); if ($mindMapInfo->isEmpty()) { throw new \Exception("信息异常"); } $prompt = ChatPrompt::where('id', 2)->value('prompt_text') ?? ''; if (!$prompt) { throw new \Exception("关键词丢失"); } $request = [ "messages" => [ [ 'role' => "system", 'content' => $prompt ], [ 'role' => "user", 'content' => $params['message'] ] ], 'stream' => false, 'message' => $params['message'], 'task_id' => $mindMapInfo->task_id, 'user_id' => self::$uid, 'assistant_id' => 0, 'chat_type' => AccountLogEnum::TOKENS_DEC_MIND_MAP, 'now' => time(), ]; $response = \app\common\service\ToolsService::Chat()->message($request); $reply = $response['data']['choices'][0]['message']['content'] ?? ''; //计费 $tokens = $response['data']['usage']['total_tokens'] ?? 0; if (!$reply || $tokens == 0) { throw new \Exception("分析失败"); } $response = [ 'reply' => $reply, 'usage_tokens' => $response['data']['usage'] ?? [], ]; // 保存聊天记录 ChatLogic::saveChatResponseLog($request, $response); //计算消耗tokens $points = $unit > 0 ? ceil($tokens / $unit) : 0; //token扣除 User::userTokensChange(self::$uid, $points); $extra = ['总消耗tokens数' => $tokens, '算力单价' => $unit, '实际消耗算力' => $points]; //扣费记录 AccountLogLogic::recordUserTokensLog(true, self::$uid, AccountLogEnum::TOKENS_DEC_MIND_MAP, $points, $mindMapInfo->task_id, $extra); $mindMapInfo->ask = $request['message']; $mindMapInfo->reply = $reply; $mindMapInfo->task_time = time() - $request['now']; $mindMapInfo->save(); self::$returnData = $mindMapInfo->toArray(); return true; } catch (\think\exception\HttpResponseException $exception) { throw $exception; } catch (\Throwable $exception) { self::setError($exception->getMessage()); return false; } } /** * 详情 * @param array $params * @return bool * @author L * @data 2024/7/1 15:30 */ public static function detail(array $params): bool { try { self::$returnData = MindMap::where('user_id', self::$uid)->findOrEmpty($params['id'])->toArray(); return true; } catch (\Exception $exception) { self::setError($exception->getMessage()); return false; } } }