Files

126 lines
3.1 KiB
PHP

<?php
namespace app\api\model\app\vip;
use think\Model;
class CardPrivilege extends Model
{
// 表名
protected $name = 'app_vip_card_privilege';
// 自动写入时间戳字段
protected $autoWriteTimestamp = 'integer';
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = false;
protected $deleteTime = false;
// 追加属性
protected $append = [
];
/**
* 获取批次包含的商品
* @return void
*/
public function getPrivilegeGoods($cardId,$type){
$list = self::with('course')->where([
'card_id'=>$cardId,
'card_privilege.type'=>$type,
'course.status'=>1,
'course.sales_type'=>['like',"%alone%"],
'course.hide'=>0
])->limit(6)->select();
$data = [];
if(!empty($list)){
foreach ($list as &$row){
$row->course->visible(['name','cover','price','price_marking','pay_type','type','id','is_vip_goods']);
$row->course->is_vip_goods = true;
$data[] = $row->course;
}
}
return $data;
}
/**
* 获取折扣后的商品价格
* @param $price 价格
* @param $discountVal 折扣
* @return array
*/
public static function getDiscountPrice($price,$discountVal){
$data = [
'price_marking' => $price
];
$data['price'] = number_format(($price * $discountVal / 10), 2, '.', '');;
return $data;
}
/**
* 检查是否为会员权益商品
* 1. 该商品被指定为某张启用中会员卡的指定课程权益
* 2. 商品类型属于 article/video/audio/live/column,且存在启用了「全部课程」作用域的会员卡
* @param $goodsId 商品ID
* @return Boolean
*/
public static function checkVipGoods($goodsId){
$vipLog = self::with(['card'])->where([
'card.status'=>1,
'goods_id'=>$goodsId
])->find();
if($vipLog){
return true;
}
//再判断「全部课程」作用域:只要存在启用中的卡,且课程类型受作用,则认为是 VIP 权益商品
if (\app\common\model\app\vip\CardPrivilege::isCourseInScopeAll($goodsId)) {
$cardModel = new \app\api\model\app\vip\Card();
$hasScopeAllCard = $cardModel->where('status', 1)
->where('uniacid', UNIACID)
->where(function ($query) {
$query->where(['privilege_free' => 1, 'privilege_free_scope' => 'all'])
->whereOr(['privilege_discount' => 1, 'privilege_discount_scope' => 'all']);
})->find();
if ($hasScopeAllCard) {
return true;
}
}
return false;
}
public function card()
{
return $this->belongsTo('Card', 'card_id', 'id', [], 'LEFT')->setEagerlyType(0);
}
public function course()
{
return $this->belongsTo('app\admin\model\Course', 'goods_id', 'id', [], 'LEFT')->setEagerlyType(0);
}
}