Referee.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace app\api\model\plus\agent;
  3. use app\common\model\plus\agent\Referee as RefereeModel;
  4. /**
  5. * 分销商推荐关系模型
  6. */
  7. class Referee extends RefereeModel
  8. {
  9. /**
  10. * 隐藏字段
  11. */
  12. protected $hidden = [];
  13. /**
  14. * 创建推荐关系
  15. */
  16. public static function createRelation($user_id, $referee_id)
  17. {
  18. // 分销商基本设置
  19. $setting = Setting::getItem('basic');
  20. // 是否开启分销功能
  21. if (!$setting['is_open']) {
  22. return false;
  23. }
  24. // 自分享
  25. if ($user_id == $referee_id) {
  26. return false;
  27. }
  28. // # 记录一级推荐关系
  29. // 判断当前用户是否已存在推荐关系
  30. if (self::isExistReferee($user_id)) {
  31. return false;
  32. }
  33. // 判断推荐人是否为分销商
  34. if (!User::isAgentUser($referee_id)) {
  35. return false;
  36. }
  37. // 新增关系记录
  38. $model = new self;
  39. $model->add($referee_id, $user_id, 1);
  40. // # 记录二级推荐关系
  41. if ($setting['level'] >= 2) {
  42. // 二级分销商id
  43. $referee_2_id = self::getRefereeUserId($referee_id, 1, true);
  44. // 新增关系记录
  45. $referee_2_id > 0 && $model->add($referee_2_id, $user_id, 2);
  46. }
  47. // # 记录三级推荐关系
  48. if ($setting['level'] == 3) {
  49. // 三级分销商id
  50. $referee_3_id = self::getRefereeUserId($referee_id, 2, true);
  51. // 新增关系记录
  52. $referee_3_id > 0 && $model->add($referee_3_id, $user_id, 3);
  53. }
  54. return true;
  55. }
  56. /**
  57. * 新增关系记录
  58. */
  59. private function add($agent_id, $user_id, $level = 1)
  60. {
  61. // 新增推荐关系
  62. $app_id = self::$app_id;
  63. $create_time = time();
  64. $this->insert(compact('agent_id', 'user_id', 'level', 'app_id', 'create_time'));
  65. // 记录分销商成员数量
  66. User::setMemberInc($agent_id, $level);
  67. return true;
  68. }
  69. /**
  70. * 是否已存在推荐关系
  71. */
  72. private static function isExistReferee($user_id)
  73. {
  74. return !!(new static())->where(['user_id' => $user_id])->find();
  75. }
  76. }