MemberLevel.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Author: 芸众商城 www.yunzshop.com
  5. * Date: 2017/2/27
  6. * Time: 上午11:22
  7. */
  8. namespace app\backend\modules\member\models;
  9. use app\common\facades\Setting;
  10. class MemberLevel extends \app\common\models\MemberLevel
  11. {
  12. static protected $needLog = true;
  13. public $guarded = [''];
  14. // protected $attributes = [];
  15. public function getLevelNameAttribute()
  16. {
  17. return static::defaultLevelName($this->attributes['level_name']);
  18. }
  19. public static function defaultLevelName($levelName)
  20. {
  21. return $levelName ?: Setting::get('shop.member')['level_name'];
  22. }
  23. /**
  24. * Get membership list
  25. *
  26. * @return
  27. */
  28. public static function getMemberLevelList()
  29. {
  30. return static::uniacid()->orderBy('level')->get()->toArray();
  31. }
  32. /**
  33. * 查询等级名称通过等级ID
  34. * @Author::yitian 2017-02-27 qq:751818588
  35. * @access public
  36. * @param int $levelId 等级id
  37. *
  38. * @return mixed
  39. */
  40. public static function getMemberLevelNameById($levelId)
  41. {
  42. $level = MemberLevel::when($levelId, function ($query) use ($levelId) {
  43. return $query->select('level_name')->where('id', $levelId);
  44. })
  45. ->first()->levelname;
  46. return $level ? $level : '';
  47. }
  48. /*
  49. * 获取等级分页列表
  50. *
  51. * @param int $pageSize
  52. *
  53. * @return object */
  54. public static function getLevelPageList($pageSize)
  55. {
  56. //todo 需要关联商品去title值
  57. return static::select(['id', 'level', 'level_name', 'order_money', 'order_count', 'goods_id', 'team_performance', 'balance_recharge','validity'])
  58. ->uniacid()
  59. ->with(['goods' => function ($query) {
  60. return $query->select('id', 'title');
  61. }])
  62. ->orderBy('level', 'asc')
  63. ->paginate($pageSize);
  64. }
  65. /**
  66. * Get rank information by level ID
  67. *
  68. * @param int $levelId
  69. *
  70. * @return object
  71. */
  72. public static function getMemberLevelById($levelId)
  73. {
  74. return static::select(['id','level', 'level_name', 'order_money', 'order_count', 'goods_id', 'discount', 'validity','freight_reduction', 'interests_rules', 'description', 'team_performance', 'balance_recharge', 'give_integral', 'give_point_today'])
  75. ->where('id', $levelId)
  76. ->first();
  77. }
  78. /**
  79. * get members by definite member_level
  80. * @param $level member_level的level值,而不是其主键ID
  81. * @return mixed
  82. * 不是主键ID是什么,怎么可能是level值,没看懂!
  83. */
  84. public static function getMembersByLevel($level)
  85. {
  86. return static::uniacid()
  87. ->select(['id', 'level'])
  88. ->where('id', $level)
  89. ->with(['member' => function ($query) {
  90. return $query->select('member_id', 'level_id')
  91. ->where('uniacid', \YunShop::app()->uniacid);
  92. }])
  93. ->first();
  94. }
  95. /**
  96. * 定义字段名
  97. *
  98. * @return array
  99. */
  100. public function atributeNames()
  101. {
  102. return [
  103. 'level' => '等级权重',
  104. 'level_name' => '等级名称',
  105. 'order_money' => '订单金额',
  106. 'order_count' => '订单数量',
  107. 'goods_id' => '商品ID',
  108. 'discount' => '折扣',
  109. 'freight_reduction' => '运费减免'
  110. ];
  111. }
  112. /**
  113. * 字段规则
  114. *
  115. * @return array
  116. */
  117. public function rules()
  118. {
  119. $rule = [
  120. 'level' => [
  121. 'required',
  122. \Illuminate\Validation\Rule::unique($this->table)->where('uniacid', \YunShop::app()->uniacid)->where('deleted_at', '')->ignore($this->id),
  123. 'numeric',
  124. 'between:1,9999'
  125. ],
  126. 'level_name' => 'required',
  127. 'discount' => 'numeric|between:0,999',
  128. 'freight_reduction' => 'numeric|between:0,100'
  129. ];
  130. $levelSet = Setting::get('shop.member');
  131. switch ($levelSet['level_type']) {
  132. case 0:
  133. $rule = array_merge(['order_money' => 'numeric|between:1,9999999999'], $rule);
  134. break;
  135. case 1:
  136. $rule = array_merge(['order_count' => 'integer|numeric|between:0,9999999999'], $rule);
  137. break;
  138. case 2:
  139. // $rule = array_merge(['goods_id' => 'integer|numeric'], $rule);
  140. $rule = array_merge(['goods_id' => ''], $rule);
  141. break;
  142. }
  143. return $rule;
  144. }
  145. //模型关联 关联商品
  146. public function goods()
  147. {
  148. return $this->belongsTo('app\common\models\Goods');
  149. }
  150. //关联会员
  151. public function member()
  152. {
  153. return $this->hasMany('app\common\models\MemberShopInfo', 'level_id', 'id'); //注意yz_member数据表记录和关联的是member_level表的主键id, 而不是level值
  154. }
  155. //id column
  156. //get array goods.id
  157. public function getGoodsId($id)
  158. {
  159. $ids = explode(',', $id);
  160. $goods = \app\common\models\Goods::whereIn('id', $ids)->select('id', 'thumb', 'title')->get();
  161. if (!$goods) {
  162. \Log::debug('无该' . $ids . '商品数据信息');
  163. exit;
  164. }
  165. foreach ($goods->toArray() as $k => $v) {
  166. $goods[$k]['thumb'] = yz_tomedia($v['thumb']);
  167. }
  168. return $goods;
  169. }
  170. }