Files
x-server-mobile/backend/app/Model/Company.php
T
root 348885a51c feat: add simplified Feishu configuration and workflow docs
- Update .gitignore to exclude large SQL files except migrations
- Add GIT_WORKFLOW.md documenting branch strategy
- Update Company model with Feishu app retrieval methods
- Update User model with Feishu-related scopes
- Update FeishuService to support multi-app configuration

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 18:16:42 +08:00

97 lines
2.2 KiB
PHP

<?php
namespace App\Model;
use support\Model;
class Company extends Model
{
protected $table = 'companies';
protected $fillable = [
'name',
'abbr',
'tenant_key',
'sort',
'status',
'feishu_enabled',
];
protected $casts = [
'sort' => '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);
}
}