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.
154 lines
4.2 KiB
154 lines
4.2 KiB
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
class ShopGoods extends Model
|
|
{
|
|
const STATE_ON_SALE = 1;// 上架中
|
|
const STATE_NOT_SALE = 0;// 已下架
|
|
|
|
const STATE_NOT_DELETE = 0;// 正常
|
|
const STATE_DELETE = 1;// 已删除
|
|
|
|
const STATE_SALE_LIMIT = 1;// 限购商品
|
|
const STATE_SALE_NOT_LIMIT = 0;// 非限购商品
|
|
|
|
const STATE_SALE_RECOMMEND = 1;// 推荐商品
|
|
const STATE_SALE_NOT_RECOMMEND = 0;// 非推荐商品
|
|
|
|
const STATE_SALE_NEW = 1;// 新品
|
|
const STATE_SALE_NOT_NEW = 0;// 非新品
|
|
|
|
const STATE_VIP = 1;// 会员专属
|
|
const STATE_NOT_VIP = 0;// 非会员专属
|
|
|
|
const STATE_ON_SALE_STRING = '上架中';
|
|
const STATE_NOT_SALE_STRING = '已下架';
|
|
|
|
const STATE_NOT_DELETE_STRING = '正常';
|
|
const STATE_DELETE_STRING = '已删除';
|
|
|
|
const STATE_SALE_LIMIT_STRING = '限购商品';
|
|
const STATE_SALE_NOT_LIMIT_STRING = '非限购商品';
|
|
|
|
const STATE_SALE_RECOMMEND_STRING = '推荐商品';
|
|
const STATE_SALE_NOT_RECOMMEND_STRING = '非推荐商品';
|
|
|
|
const STATE_SALE_NEW_STRING = '新品';
|
|
const STATE_SALE_NOT_NEW_STRING = '非新品';
|
|
|
|
const STATE_VIP_STRING = '会员专属';
|
|
const STATE_NOT_VIP_STRING = '非会员专属';
|
|
|
|
//
|
|
public function shop_category()
|
|
{
|
|
return $this->belongsTo(ShopCategory::class);
|
|
}
|
|
|
|
public function products()
|
|
{
|
|
return $this->hasMany(ShopProduct::class, 'goods_id');
|
|
}
|
|
|
|
public function specifications()
|
|
{
|
|
return $this->hasMany(ShopGoodsSpecification::class, 'goods_id');
|
|
}
|
|
|
|
public function goods_attribute()
|
|
{
|
|
return $this->hasMany(ShopGoodsAttribute::class, 'goods_id');
|
|
}
|
|
|
|
// 是否上架
|
|
public static function getSaleDispayMap()
|
|
{
|
|
return [
|
|
self::STATE_ON_SALE => self::STATE_ON_SALE_STRING,
|
|
self::STATE_NOT_SALE => self::STATE_NOT_SALE_STRING,
|
|
];
|
|
}
|
|
|
|
// 商品删除状态
|
|
public static function getDeleteDispayMap()
|
|
{
|
|
return [
|
|
self::STATE_NOT_DELETE => self::STATE_NOT_DELETE_STRING,
|
|
self::STATE_DELETE => self::STATE_DELETE_STRING,
|
|
];
|
|
}
|
|
// 是否限购
|
|
public static function getLimitDispayMap()
|
|
{
|
|
return [
|
|
self::STATE_SALE_LIMIT => self::STATE_SALE_LIMIT_STRING,
|
|
self::STATE_SALE_NOT_LIMIT => self::STATE_SALE_NOT_LIMIT_STRING,
|
|
];
|
|
}
|
|
// 是否推荐
|
|
public static function getRecommendDispayMap()
|
|
{
|
|
return [
|
|
self::STATE_SALE_RECOMMEND => self::STATE_SALE_RECOMMEND_STRING,
|
|
self::STATE_SALE_NOT_RECOMMEND => self::STATE_SALE_NOT_RECOMMEND_STRING,
|
|
];
|
|
}
|
|
|
|
// 是否新品
|
|
public static function getNewDispayMap()
|
|
{
|
|
return [
|
|
self::STATE_SALE_NEW => self::STATE_SALE_NEW_STRING,
|
|
self::STATE_SALE_NOT_NEW => self::STATE_SALE_NOT_NEW_STRING,
|
|
];
|
|
}
|
|
|
|
// 是否是会员专属
|
|
public static function getVipDispayMap()
|
|
{
|
|
return [
|
|
self::STATE_VIP => self::STATE_VIP_STRING,
|
|
self::STATE_NOT_VIP => self::STATE_NOT_VIP_STRING,
|
|
];
|
|
}
|
|
|
|
// 多图上传处理
|
|
public function getListPicUrlAttribute($pictures)
|
|
{
|
|
if (is_string($pictures)) {
|
|
return json_decode($pictures, true);
|
|
}
|
|
|
|
return $pictures;
|
|
}
|
|
|
|
public function setListPicUrlAttribute($pictures)
|
|
{
|
|
if (is_array($pictures)) {
|
|
$this->attributes['list_pic_url'] = json_encode($pictures);
|
|
}
|
|
}
|
|
// 获取商品列表
|
|
public static function getGoodsList($where= [],$pagesize='' ,$order='sort_order asc'){
|
|
$model = static::where(array_merge([
|
|
['is_delete', '=', static::STATE_NOT_DELETE],
|
|
['is_on_sale', '=', static::STATE_ON_SALE],
|
|
], $where))->orderByRaw($order);
|
|
if($pagesize){
|
|
return $model->paginate($pagesize);
|
|
}
|
|
return $model->get();
|
|
}
|
|
|
|
// 获取商品详情
|
|
public static function getGoodsDetail($where){
|
|
return static::where(array_merge([
|
|
['is_delete', '=', static::STATE_NOT_DELETE],
|
|
['is_on_sale', '=', static::STATE_ON_SALE],
|
|
], $where))->first();
|
|
}
|
|
}
|