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');
|
|||
|
}
|
|||
|
}
|