Referee.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace app\common\model\plus\agent;
  3. use app\common\model\BaseModel;
  4. /**
  5. * 分销商推荐关系模型
  6. */
  7. class Referee extends BaseModel
  8. {
  9. protected $name = 'agent_referee';
  10. protected $pk = 'id';
  11. /**
  12. * 关联用户表
  13. */
  14. public function user()
  15. {
  16. return $this->belongsTo('app\\common\\model\\user\\User');
  17. }
  18. /**
  19. * 关联分销商用户表
  20. */
  21. public function agent()
  22. {
  23. return $this->belongsTo('app\\common\\model\\plus\\agent\\User')->where('is_delete', '=', 0);
  24. }
  25. /**
  26. * 关联分销商用户表
  27. */
  28. public function agent1()
  29. {
  30. return $this->belongsTo('app\\common\\model\\plus\\agent\\User', 'agent_id')->where('is_delete', '=', 0);
  31. }
  32. /**
  33. * 获取上级用户id
  34. */
  35. public static function getRefereeUserId($user_id, $level, $is_agent = false)
  36. {
  37. $agent_id = (new self)->where(compact('user_id', 'level'))
  38. ->value('agent_id');
  39. if (!$agent_id) return 0;
  40. return $is_agent ? (User::isAgentUser($agent_id) ? $agent_id : 0) : $agent_id;
  41. }
  42. /**
  43. * 获取我的团队列表
  44. */
  45. public function getList($user_id, $level = -1)
  46. {
  47. $model = $this;
  48. if($level > -1){
  49. $model = $model->where('referee.level', '=', $level);
  50. }
  51. return $model->with(['agent', 'user'])
  52. ->alias('referee')
  53. ->field('referee.*')
  54. ->join('user', 'user.user_id = referee.user_id','left')
  55. ->where('referee.agent_id', '=', $user_id)
  56. ->where('user.is_delete', '=', 0)
  57. ->order(['referee.create_time' => 'desc'])
  58. ->paginate(15);
  59. }
  60. /**
  61. * 创建推荐关系
  62. */
  63. public static function updateRelation($user_id, $referee_id)
  64. {
  65. // 自分享
  66. if ($user_id == $referee_id) {
  67. return false;
  68. }
  69. // 新增关系记录
  70. $model = new self;
  71. $model->add($referee_id, $user_id, 1);
  72. // # 记录二级推荐关系
  73. // 二级分销商id
  74. $referee_2_id = self::getRefereeUserId($referee_id, 1, true);
  75. // 新增关系记录
  76. $referee_2_id > 0 && $model->add($referee_2_id, $user_id, 2);
  77. // # 记录三级推荐关系
  78. // 三级分销商id
  79. $referee_3_id = self::getRefereeUserId($referee_id, 2, true);
  80. // 新增关系记录
  81. $referee_3_id > 0 && $model->add($referee_3_id, $user_id, 3);
  82. return true;
  83. }
  84. /**
  85. * 新增关系记录
  86. */
  87. private function add($agent_id, $user_id, $level = 1)
  88. {
  89. // 新增推荐关系
  90. $app_id = self::$app_id;
  91. $create_time = time();
  92. $this->insert(compact('agent_id', 'user_id', 'level', 'app_id', 'create_time'));
  93. // 记录分销商成员数量
  94. User::setMemberInc($agent_id, $level);
  95. return true;
  96. }
  97. }