webman_ad/app/model/Ad.php

92 lines
2.4 KiB
PHP

<?php
namespace app\model;
use think\Model;
class Ad extends Model
{
// 设置当前模型对应的完整数据表名称
protected $table = 'bps.bps_google_ads_ad';
// 设置主键
protected $pk = 'ad_id';
// 设置自动时间戳
protected $autoWriteTimestamp = true;
// 定义时间戳字段
protected $createTime = 'create_at';
protected $updateTime = 'update_at';
// 设置字段类型和默认值
protected $casts = [
'ad_id' => 'int',
'ad_group_id' => 'int',
'customer_id' => 'int',
];
// 默认值设置
protected $defaults = [
'status' => 1, // 广告状态默认值为 'ENABLED'
];
// 状态判断常量
const STATUS_UNSPECIFIED = 0;
const STATUS_UNKNOWN = 1;
const STATUS_ENABLED = 2;
const STATUS_PAUSED = 3;
const STATUS_REMOVED = 4;
// 获取广告状态
public function getStatusTextAttr($value, $data)
{
$statusMap = [
self::STATUS_UNSPECIFIED => 'UNSPECIFIED',
self::STATUS_UNKNOWN => 'UNKNOWN',
self::STATUS_ENABLED => 'ENABLED',
self::STATUS_PAUSED => 'PAUSED',
self::STATUS_REMOVED => 'REMOVED',
];
return $statusMap[$data['status']] ?? 'UNKNOWN';
}
// 更新广告状态
// public function updateStatus($status)
// {
// if (!in_array($status, [self::STATUS_ENABLED, self::STATUS_PAUSED, self::STATUS_REMOVED])) {
//// throw new \think\exception\ValidateException('Invalid status');
// }
//
// $this->status = $status;
// return $this->save();
// }
// 判断广告状态
public function isEnabled()
{
return $this->status == self::STATUS_ENABLED;
}
public function isPaused()
{
return $this->status == self::STATUS_PAUSED;
}
public function isRemoved()
{
return $this->status == self::STATUS_REMOVED;
}
// 关联 AdGroup 模型(广告属于广告组)
// 即使没有外键约束,依然可以使用 belongsTo 访问 AdGroup 数据
public function adGroup()
{
return $this->belongsTo(AdGroup::class, 'ad_group_id', 'ad_group_id');
}
// 关联 Customer 模型(广告属于客户)
// public function customer()
// {
// return $this->belongsTo(GoogleAdsCustomer::class, 'customer_id', 'customer_id');
// }
}