OilLevel.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace app\common\model\user;
  3. use app\common\model\BaseModel;
  4. use app\common\model\store\order\StoreOrder;
  5. //include_once app_path('common.php');
  6. class OilLevel extends BaseModel
  7. {
  8. public static function tablePk(): ?string
  9. {
  10. return 'id';
  11. }
  12. public static function tableName(): string
  13. {
  14. return 'oil_level';
  15. }
  16. //买节能油商品的时候触发 检测升级
  17. public function checkLevel($uid, $pass = [])
  18. {
  19. if (in_array($uid, $pass)) return true;
  20. $user = User::find($uid);
  21. $group_users = $this->get_group_user($uid);
  22. //Todo 获取在$group_users内所有用户的消费情况
  23. $achievement = 0;
  24. //获取该用户和下级团队购买过的节能油商品的全部订单
  25. $achievement1 = StoreOrder::where('uid', 'in',$group_users)->where('paid', 1)->where('product_type',1)->whereNotIn('status',-1)->sum('pay_price');
  26. $achievement2 = StoreOrder::where('uid', $uid)->where('paid', 1)->where('product_type',1)->whereNotIn('status',-1)->sum('pay_price');
  27. $achievement = bcadd($achievement1, $achievement2, 2);
  28. @file_put_contents('quanju2.txt', $achievement."-节能油订单总额\r\n", 8);
  29. $old_level = self::where('id', $user['oil_level'])->find();
  30. if (!$old_level) $old_level = [
  31. 'grade' => 0,
  32. 'name' => '普通会员'
  33. ];
  34. // if ($old_level['oil_level']!=99){ //如果用户不是服务中心
  35. $level = self::where('grade', '>', $old_level['grade'])->where('achievement', '<=', $achievement)
  36. ->order('grade', 'desc')->find();
  37. @file_put_contents('quanju2.txt', json_encode($level)."-等级信息\r\n", 8);
  38. if ($level) {
  39. $user->old_level = $level['id'];
  40. // $user->save();
  41. $user->where('uid', $user['uid'])->update(['oil_level' => $level['id']]);
  42. }
  43. // }
  44. $pass[] = $uid;
  45. $spread = User::where('uid', $user['spread_uid'])->find();
  46. if ($spread) return $this->checkLevel($spread['uid'], $pass);
  47. return true;
  48. }
  49. public function get_group_user($id, $init = true, $members = null){
  50. if ($init) {
  51. $us = \app\common\model\user\User::column('spread_uid', 'uid');
  52. $members = [];
  53. foreach ($us as $k => $v) {
  54. if ($v > 0)
  55. $members[$v][] = $k;
  56. }
  57. $id = [$id];
  58. }
  59. $arr = array();
  60. foreach ($id as $v) {
  61. $child = $members[$v] ?? [];
  62. $arr = array_merge($arr, $child);
  63. }
  64. if (count($arr)) {
  65. return array_merge($arr, $this->get_group_user($arr, false, $members));
  66. } else {
  67. return $arr;
  68. }
  69. }
  70. }