| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <?php
- namespace App\Models;
- use Illuminate\Database\Eloquent\Factories\HasFactory;
- use Illuminate\Database\Eloquent\Model;
- class ScriptRecord extends Model
- {
- use HasFactory;
- protected $table = 'mp_script_records';
- protected $fillable = [
- 'uid',
- 'script_id',
- 'sequence',
- 'role',
- 'content',
- ];
- /**
- * 角色常量
- */
- const ROLE_USER = 'user';
- const ROLE_ASSISTANT = 'assistant';
- /**
- * 批量插入对话记录
- *
- * @param int $uid 用户ID
- * @param int $scriptId 剧本ID
- * @param int $sequence 剧集序号
- * @param array $messages 消息数组
- * @return bool
- */
- public static function batchInsertRecords($uid, $scriptId, $sequence, $messages)
- {
- $records = [];
- $now = now();
- foreach ($messages as $message) {
- if (!isset($message['role']) || !isset($message['content'])) {
- continue;
- }
- // 只处理 user 和 assistant 角色
- if (!in_array($message['role'], [self::ROLE_USER, self::ROLE_ASSISTANT])) {
- continue;
- }
- $records[] = [
- 'uid' => $uid,
- 'script_id' => $scriptId,
- 'sequence' => $sequence,
- 'role' => $message['role'],
- 'content' => is_array($message['content']) ? json_encode($message['content'], JSON_UNESCAPED_UNICODE) : $message['content'],
- 'created_at' => $now,
- 'updated_at' => $now,
- ];
- }
- if (empty($records)) {
- return false;
- }
- return self::insert($records);
- }
- }
|