Member.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Author: 芸众商城 www.yunzshop.com
  5. * Date: 17/2/23
  6. * Time: 下午5:40
  7. */
  8. namespace app\frontend\models;
  9. use app\common\exceptions\AppException;
  10. use app\common\exceptions\MemberNotLoginException;
  11. use app\common\models\MemberCoupon;
  12. use app\frontend\modules\member\models\MemberAddress;
  13. use app\frontend\modules\member\services\MemberService;
  14. use app\frontend\repositories\MemberAddressRepository;
  15. use Illuminate\Database\Eloquent\Collection;
  16. /**
  17. * Class Member
  18. * @package app\frontend\models
  19. * @property Collection memberCarts
  20. * @property MemberAddress defaultAddress
  21. */
  22. class Member extends \app\common\models\Member
  23. {
  24. /**
  25. * @return self
  26. * @throws AppException
  27. */
  28. public static function current()
  29. {
  30. if (!isset(static::$current)) {
  31. static::$current = self::find(\YunShop::app()->getMemberId());
  32. if(!static::$current){
  33. throw new MemberNotLoginException('请登录', $_SERVER['QUERY_STRING']);
  34. }
  35. }
  36. return static::$current;
  37. }
  38. /**
  39. * 会员-会员优惠券1:多关系
  40. * @param null $backType
  41. * @return mixed
  42. */
  43. public function hasManyMemberCoupon($backType = null)
  44. {
  45. return $this->hasMany(MemberCoupon::class, 'uid', 'uid')
  46. ->where('used', 0)->with(['belongsToCoupon'=> function ($query) use ($backType) {
  47. if (isset($backType)) {
  48. $query->where('coupon_method', $backType);
  49. }
  50. }]);
  51. }
  52. public function defaultAddress()
  53. {
  54. return $this->hasOne(app(MemberAddressRepository::class)->model(), 'uid', 'uid')->where('isdefault', 1);
  55. }
  56. public function orderGoods()
  57. {
  58. return $this->hasMany(OrderGoods::class, 'uid', 'uid');
  59. }
  60. public function yzMember()
  61. {
  62. return $this->hasOne(self::getNearestModel('MemberShopInfo'), 'member_id', 'uid');
  63. }
  64. public function memberCarts()
  65. {
  66. return $this->hasMany(app('OrderManager')->make('MemberCart'), 'member_id', 'uid')->with('member');
  67. }
  68. }