You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.0 KiB
85 lines
2.0 KiB
<?php
|
|
|
|
namespace App\Model\v3;
|
|
|
|
use App\Constants\v3\Goods as GoodsConstants;
|
|
use App\Constants\v3\SsdbKeys;
|
|
use App\Model\Model;
|
|
use App\Service\v3\Interfaces\ShopCartServiceInterface;
|
|
use App\TaskWorker\SSDBTask;
|
|
use Hyperf\Database\Model\Builder;
|
|
use Hyperf\Database\Model\SoftDeletes;
|
|
use Hyperf\Utils\ApplicationContext;
|
|
use Hyperf\Di\Annotation\Inject;
|
|
|
|
class GoodsActivity extends Model
|
|
{
|
|
|
|
use SoftDeletes;
|
|
|
|
/**
|
|
* @Inject
|
|
* @var ShopCartServiceInterface
|
|
*/
|
|
protected $shopCartService;
|
|
|
|
protected $table = 'lanzu_goods_activity';
|
|
|
|
protected $casts = [
|
|
'details_imgs' => 'array',
|
|
'spec' => 'array',
|
|
'tags' => 'array',
|
|
];
|
|
|
|
protected $appends = [
|
|
'month_sales',
|
|
'cart_num',
|
|
'is_effective',
|
|
'noneffective_note',
|
|
'total_seconds',
|
|
];
|
|
|
|
protected $visible = [
|
|
'id', 'cover_img', 'name', 'original_price', 'price', 'inventory', 'store_id', 'spec', 'tags', 'sales',
|
|
'month_sales', 'cart_num', 'is_effective', 'noneffective_note', 'total_seconds',
|
|
];
|
|
|
|
protected function boot(): void
|
|
{
|
|
parent::boot();
|
|
self::addGlobalScope('normal', function (Builder $builder) {
|
|
$builder->where(['on_sale' => GoodsConstants::ON_SALE_YES]);
|
|
});
|
|
}
|
|
|
|
public function getMonthSalesAttribute()
|
|
{
|
|
$ssdb = ApplicationContext::getContainer()->get(SSDBTask::class);
|
|
return (integer)$ssdb->exec('get', SsdbKeys::GOODS_MONTH_SALES.date('YM').'_'.$this->id);
|
|
}
|
|
|
|
public function getCartNumAttribute()
|
|
{
|
|
return (integer)$this->shopCartService->check($this->id);
|
|
}
|
|
|
|
public function getIsEffectiveAttribute()
|
|
{
|
|
return 2;
|
|
}
|
|
|
|
public function getNoneffectiveNoteAttribute()
|
|
{
|
|
return '已抢光';
|
|
}
|
|
|
|
public function getTotalSecondsAttribute()
|
|
{
|
|
return $this->attributes['expire_time'] - time();
|
|
}
|
|
|
|
public function store()
|
|
{
|
|
return $this->belongsTo(Store::class, 'store_id', 'id');
|
|
}
|
|
}
|