Referee.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. /**
  3. *
  4. * @copyright ©2020 点小铺
  5. * @author hanj
  6. * @link: https://dyuit.com
  7. * Created by VSCode
  8. */
  9. namespace app\api\model\dealer;
  10. use app\common\model\dealer\Referee as RefereeModel;
  11. /**
  12. * 分销商推荐关系模型
  13. * Class Apply
  14. * @package app\api\model\dealer
  15. */
  16. class Referee extends RefereeModel
  17. {
  18. /**
  19. * 隐藏字段
  20. * @var array
  21. */
  22. protected $hidden = [];
  23. /**
  24. * 创建推荐关系
  25. * @param $user_id
  26. * @param $referee_id
  27. * @return bool
  28. * @throws \think\Exception
  29. * @throws \think\exception\DbException
  30. */
  31. public static function createRelation($user_id, $referee_id)
  32. {
  33. // 分销商基本设置
  34. $setting = Setting::getItem('basic');
  35. // 是否开启分销功能
  36. if (!$setting['is_open']) {
  37. return false;
  38. }
  39. // 自分享
  40. if ($user_id == $referee_id) {
  41. return false;
  42. }
  43. // # 记录一级推荐关系
  44. // 判断当前用户是否已存在推荐关系
  45. if (self::isExistReferee($user_id)) {
  46. return false;
  47. }
  48. // 判断推荐人是否为分销商
  49. if (!User::isDealerUser($referee_id)) {
  50. return false;
  51. }
  52. // 新增关系记录
  53. $model = new self;
  54. $model->add($referee_id, $user_id, 1);
  55. // # 记录二级推荐关系
  56. if ($setting['level'] >= 2) {
  57. // 二级分销商id
  58. $referee_2_id = self::getRefereeUserId($referee_id, 1, true);
  59. // 新增关系记录
  60. $referee_2_id > 0 && $model->add($referee_2_id, $user_id, 2);
  61. }
  62. // # 记录三级推荐关系
  63. if ($setting['level'] == 3) {
  64. // 三级分销商id
  65. $referee_3_id = self::getRefereeUserId($referee_id, 2, true);
  66. // 新增关系记录
  67. $referee_3_id > 0 && $model->add($referee_3_id, $user_id, 3);
  68. }
  69. return true;
  70. }
  71. /**
  72. * 新增关系记录
  73. * @param $dealer_id
  74. * @param $user_id
  75. * @param int $level
  76. * @return bool
  77. * @throws \think\Exception
  78. * @throws \think\exception\DbException
  79. */
  80. private function add($dealer_id, $user_id, $level = 1)
  81. {
  82. // 新增推荐关系
  83. $wxapp_id = self::$wxapp_id;
  84. $create_time = time();
  85. $this->insert(compact('dealer_id', 'user_id', 'level', 'wxapp_id', 'create_time'));
  86. // 记录分销商成员数量
  87. User::setMemberInc($dealer_id, $level);
  88. return true;
  89. }
  90. /**
  91. * 是否已存在推荐关系
  92. * @param $user_id
  93. * @return bool
  94. * @throws \think\exception\DbException
  95. */
  96. private static function isExistReferee($user_id)
  97. {
  98. return !!self::get(['user_id' => $user_id]);
  99. }
  100. }