bztang-admin/app/frontend/models/Member.php

78 lines
2.0 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Created by PhpStorm.
* Author:
* Date: 17/2/23
* Time: 下午5:40
*/
namespace app\frontend\models;
use app\common\exceptions\AppException;
use app\common\exceptions\MemberNotLoginException;
use app\common\models\MemberCoupon;
use app\frontend\modules\member\models\MemberAddress;
use app\frontend\modules\member\services\MemberService;
use app\frontend\repositories\MemberAddressRepository;
use Illuminate\Database\Eloquent\Collection;
/**
* Class Member
* @package app\frontend\models
* @property Collection memberCarts
* @property MemberAddress defaultAddress
*/
class Member extends \app\common\models\Member
{
/**
* @return self
* @throws AppException
*/
public static function current()
{
if (!isset(static::$current)) {
static::$current = self::find(\YunShop::app()->getMemberId());
if(!static::$current){
throw new MemberNotLoginException('请登录', $_SERVER['QUERY_STRING']);
}
}
return static::$current;
}
/**
* 会员会员优惠券1:多关系
* @param null $backType
* @return mixed
*/
public function hasManyMemberCoupon($backType = null)
{
return $this->hasMany(MemberCoupon::class, 'uid', 'uid')
->where('used', 0)->with(['belongsToCoupon'=> function ($query) use ($backType) {
if (isset($backType)) {
$query->where('coupon_method', $backType);
}
}]);
}
public function defaultAddress()
{
return $this->hasOne(app(MemberAddressRepository::class)->model(), 'uid', 'uid')->where('isdefault', 1);
}
public function orderGoods()
{
return $this->hasMany(OrderGoods::class, 'uid', 'uid');
}
public function yzMember()
{
return $this->hasOne(self::getNearestModel('MemberShopInfo'), 'member_id', 'uid');
}
public function memberCarts()
{
return $this->hasMany(app('OrderManager')->make('MemberCart'), 'member_id', 'uid')->with('member');
}
}