'integer', 'status' => 'integer', 'feishu_enabled' => 'boolean', 'created_at' => 'datetime', 'updated_at' => 'datetime', ]; /** * 关联用户 */ public function users() { return $this->hasMany(User::class, 'company_id'); } /** * 获取启用的公司 */ public function scopeActive($query) { return $query->where('status', 1); } /** * 根据租户Key查找 */ public function scopeByTenantKey($query, string $tenantKey) { return $query->where('tenant_key', $tenantKey); } /** * 根据缩写查找 */ public function scopeByAbbr($query, string $abbr) { return $query->where('abbr', $abbr); } /** * 搜索公司 */ public function scopeSearch($query, ?string $keyword) { if (!$keyword) { return $query; } return $query->where(function ($q) use ($keyword) { $q->where('name', 'like', "%{$keyword}%") ->orWhere('abbr', 'like', "%{$keyword}%"); }); } /** * 获取默认飞书应用配置 */ public function getDefaultFeishuApp(): ?array { $sql = "SELECT * FROM company_feishu_apps WHERE company_id = ? AND system_id = 1 AND status = 1 ORDER BY sort ASC LIMIT 1"; $stmt = \app\util\Db::connection()->getPdo()->prepare($sql); $stmt->execute([$this->id]); return $stmt->fetch(\PDO::FETCH_ASSOC); } /** * 获取所有飞书应用配置 */ public function getFeishuApps(): array { $sql = "SELECT * FROM company_feishu_apps WHERE company_id = ? AND status = 1 ORDER BY sort"; $stmt = \app\util\Db::connection()->getPdo()->prepare($sql); $stmt->execute([$this->id]); return $stmt->fetchAll(\PDO::FETCH_ASSOC); } }