POINT_TYPE::class, ]; // 状态常量 const STATUS_PENDING = 0; // 待处理 const STATUS_COMPLETED = 1; // 已完成 const STATUS_FAILED = 2; // 已失败 /** * 创建管理员操作记录 * * @param int $userId 用户ID * @param int $pointId 积分类型ID * @param int $adminId 管理员ID * @param int $totalPoints 操作积分数量 * @param string $remark 备注 * @return PointAdminModel|false 成功返回模型,失败返回false */ public static function createRecord( int $userId, int $pointId, int $adminId, int $totalPoints, string $remark ) { $record = new self(); $record->user_id = $userId; $record->point_id = $pointId; $record->admin_id = $adminId; $record->total_points = $totalPoints; $record->status = self::STATUS_PENDING; $record->remark = $remark; $record->create_time = time(); $record->update_time = time(); if ($record->save()) { return $record; } return false; } /** * 更新记录状态 * * @param int $status 状态 * @return bool 是否成功 */ public function updateStatus(int $status): bool { $this->status = $status; $this->update_time = time(); return $this->save(); } /** * 标记为已完成 * * @return bool 是否成功 */ public function markCompleted(): bool { return $this->updateStatus(self::STATUS_COMPLETED); } /** * 标记为已失败 * * @return bool 是否成功 */ public function markFailed(): bool { return $this->updateStatus(self::STATUS_FAILED); } /** * 获取管理员操作记录 * * @param int $adminId 管理员ID * @param int $limit 限制数量 * @return \Illuminate\Database\Eloquent\Collection 记录集合 */ public static function getAdminRecords(int $adminId, int $limit = 50) { return self::where('admin_id', $adminId) ->orderBy('create_time', 'desc') ->limit($limit) ->get(); } /** * 获取用户相关的管理员操作记录 * * @param int $userId 用户ID * @param int $limit 限制数量 * @return \Illuminate\Database\Eloquent\Collection 记录集合 */ public static function getUserRecords(int $userId, int $limit = 50) { return self::where('user_id', $userId) ->orderBy('create_time', 'desc') ->limit($limit) ->get(); } /** * 获取状态名称 * * @return string 状态名称 */ public function getStatusName(): string { return match($this->status) { self::STATUS_PENDING => '待处理', self::STATUS_COMPLETED => '已完成', self::STATUS_FAILED => '已失败', default => '未知状态', }; } /** * 判断是否为待处理状态 * * @return bool 是否为待处理 */ public function isPending(): bool { return $this->status === self::STATUS_PENDING; } /** * 判断是否为已完成状态 * * @return bool 是否为已完成 */ public function isCompleted(): bool { return $this->status === self::STATUS_COMPLETED; } /** * 判断是否为已失败状态 * * @return bool 是否为已失败 */ public function isFailed(): bool { return $this->status === self::STATUS_FAILED; } /** * 获取积分类型名称 * * @return string 积分类型名称 */ public function getPointTypeName(): string { return $this->point_id->getTypeName(); } /** * 判断是否为增加积分操作 * * @return bool 是否为增加操作 */ public function isIncrease(): bool { return $this->total_points > 0; } /** * 判断是否为减少积分操作 * * @return bool 是否为减少操作 */ public function isDecrease(): bool { return $this->total_points < 0; } }