OilLevel.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace app\common\model\user;
  3. use app\common\model\BaseModel;
  4. use app\common\model\store\order\StoreOrder;
  5. class OilLevel extends BaseModel
  6. {
  7. public static function tablePk(): ?string
  8. {
  9. return 'id';
  10. }
  11. public static function tableName(): string
  12. {
  13. return 'award_integral_price';
  14. }
  15. //买节能油商品的时候触发
  16. public function checkLevel($uid, $pass = [])
  17. {
  18. if (in_array($uid, $pass)) return true;
  19. $user = User::find($uid);
  20. $group_users = get_group_user($user);
  21. //Todo 获取在$group_users内所有用户的消费情况
  22. $achievement = 0;
  23. //获取该用户购买过的节能油商品的全部订单
  24. $achievement = StoreOrder::wher('uid', 'in',$group_users)->where('paid', 1)->where('product_type',5)->whereNotIn('status',-1)->sum('pay_price');
  25. $old_level = self::where('id', $user['level'])->find();
  26. if (!$old_level) $old_level = [
  27. 'grade' => 0,
  28. 'name' => '普通会员'
  29. ];
  30. $level = self::where('grade', '>', $old_level['grade'])->where('achievement', '<=', $achievement)
  31. ->order('grade', 'desc')->find();
  32. if ($level) {
  33. $user->level = $level['id'];
  34. $user->save();
  35. }
  36. $pass[] = $uid;
  37. $spread = User::where('uid', $user['spread_uid'])->find();
  38. if ($spread) return $this->checkLevel($spread['id'], $pass);
  39. return true;
  40. }
  41. }