86 lines
2.0 KiB
PHP
86 lines
2.0 KiB
PHP
<?php
|
||
namespace app\model;
|
||
|
||
use think\Model;
|
||
use think\model\relation\HasOne;
|
||
|
||
class Sku extends Base
|
||
{
|
||
// SKU 状态
|
||
public const STATUS_ON = '1'; // 出售中
|
||
public const STATUS_OFF = '0'; // 已下架
|
||
|
||
// SKU 积分兑换限制
|
||
public const ALLOW_ONLY_BUY = '0';
|
||
public const ALLOW_BUY_AND_SCORE = '1';
|
||
public const ALLOW_ONLY_SCORE = '2';
|
||
|
||
|
||
public static function statusTextList(): array
|
||
{
|
||
return [
|
||
(string)self::STATUS_ON => '在售',
|
||
(string)self::STATUS_OFF => '已下架',
|
||
];
|
||
}
|
||
|
||
public static function allowScoreTextList(): array
|
||
{
|
||
return [
|
||
(string)self::ALLOW_ONLY_BUY => '购买',
|
||
(string)self::ALLOW_BUY_AND_SCORE => '购买或积分兑换',
|
||
(string)self::ALLOW_ONLY_SCORE => '积分兑换',
|
||
];
|
||
}
|
||
|
||
public static function onAfterInsert(Model $item)
|
||
{
|
||
$item->sort = $item->id;
|
||
$item->save();
|
||
}
|
||
|
||
/**
|
||
* 模型关联:商品分类
|
||
*
|
||
* @return HasOne
|
||
*/
|
||
public function category(): HasOne
|
||
{
|
||
return $this->hasOne(SkuCategory::class, 'id', 'category_id');
|
||
}
|
||
|
||
/**
|
||
* 生成 SKU coding
|
||
* 年份 + 2位随机码 + 时间戳(秒[10位] + 微妙[4位])
|
||
* @length 18
|
||
*/
|
||
public static function generateCoding(): string
|
||
{
|
||
$randStr = str_pad(mt_rand(1,99), 2, '0', STR_PAD_LEFT);
|
||
$prefix = date('y').$randStr;
|
||
$mt = microtime(true);
|
||
list($time, $micro) = explode('.', $mt);
|
||
$micro = str_pad($micro, 4, '0', STR_PAD_RIGHT);
|
||
$micro = substr($micro, 0, 4);
|
||
|
||
return $prefix.$time.$micro;
|
||
}
|
||
|
||
/**
|
||
* @return HasOne
|
||
*/
|
||
public function spu(): HasOne
|
||
{
|
||
return $this->hasOne(Spu::class, 'id', 'spu_id');
|
||
}
|
||
|
||
/**
|
||
* 关联活动商品
|
||
*
|
||
* @return HasOne
|
||
*/
|
||
public function activity(): HasOne
|
||
{
|
||
return $this->hasOne(SpuActivity::class, 'id', 'spu_activity_id');
|
||
}
|
||
} |