UserSpread.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <?php
  2. /**
  3. * Created by CRMEB.
  4. * Copyright (c) 2017~2019 http://www.crmeb.com All rights reserved.
  5. * Author: liaofei <136327134@qq.com>
  6. * Date: 2019/3/27 21:44
  7. */
  8. namespace app\models\user;
  9. use app\models\store\StoreOrder;
  10. use app\models\system\Message;
  11. use think\Collection;
  12. use think\db\exception\DataNotFoundException;
  13. use think\db\exception\DbException;
  14. use think\db\exception\ModelNotFoundException;
  15. use think\facade\Cache;
  16. use crmeb\traits\ModelTrait;
  17. use crmeb\basic\BaseModel;
  18. /**
  19. * TODO 用户消费新增金额明细 model
  20. * Class UserBill
  21. * @package app\models\user
  22. */
  23. class UserSpread extends BaseModel
  24. {
  25. /**
  26. * 数据表主键
  27. * @var string
  28. */
  29. protected $pk = 'id';
  30. /**
  31. * 模型名称
  32. * @var string
  33. */
  34. protected $name = 'user_spread';
  35. use ModelTrait;
  36. /**
  37. * @param $uid
  38. * @param $spread_uid
  39. * @return bool|UserSpread
  40. * @throws DataNotFoundException
  41. * @throws DbException
  42. * @throws ModelNotFoundException
  43. */
  44. public static function setSpread($uid, $spread_uid)
  45. {
  46. if (!$spread_uid) {
  47. return true;
  48. }
  49. $sp = $spread_uid;
  50. $userlist = User::column('uid,spread_uid', 'uid');
  51. while ($sp) {
  52. if ($sp == $uid) {
  53. $spread_uid = 0;
  54. break;
  55. }
  56. $sp = $userlist[$sp]['spread_uid'];
  57. }
  58. $user = User::where('uid', $uid)->find();
  59. $spread_user = User::get($spread_uid);
  60. if ($user['site_id'] != $spread_user['site_id']) return true;
  61. if (!$user || !$spread_user || !$spread_user['is_promoter']) {
  62. return true;
  63. }
  64. //首先获取绑定方式
  65. $bind_type = sys_config('bind_type', 1);
  66. switch ($bind_type) {
  67. case 2:
  68. if (self::where('uid', $uid)->where('lock', 1)->find()) {
  69. return true;
  70. }
  71. return self::create([
  72. 'uid' => $uid,
  73. 'spread_uid' => $spread_uid,
  74. 'lock' => 0,
  75. 'spread_time' => time()
  76. ]);
  77. break;
  78. case 3:
  79. if (self::where('uid', $uid)->where('lock', 1)->find()) {
  80. return true;
  81. }
  82. self::create([
  83. 'uid' => $uid,
  84. 'spread_uid' => $spread_uid,
  85. 'lock' => 0,
  86. 'spread_time' => time()
  87. ]);
  88. $user['spread_uid'] = $spread_uid;
  89. $user['spread_time'] = time();
  90. return $user->save() && User::setUserSpreadCount($spread_uid);
  91. break;
  92. default:
  93. if (self::where('uid', $uid)->where('lock', 1)->find()) {
  94. return true;
  95. }
  96. self::create([
  97. 'uid' => $uid,
  98. 'spread_uid' => $spread_uid,
  99. 'lock' => 1,
  100. 'spread_time' => time()
  101. ]);
  102. $user['spread_uid'] = $spread_uid;
  103. $user['spread_time'] = time();
  104. $res = $user->save() && User::setUserSpreadCount($spread_uid) && Message::addMessage($spread_uid, '恭喜你,[' . $user['nickname'] . '](ID:' . $uid . ')在[' . date('Y-m-d H:i:s') . ']成为你的下线!', 199);
  105. $uper = User::getUserInfo($uid);
  106. while ($uper) {
  107. UserLevel::setLevelComplete($uper['uid']);
  108. $uper = User::getUserInfo($uper['spread_uid']);
  109. }
  110. return $res;
  111. break;
  112. }
  113. }
  114. /**
  115. * @param $uid
  116. * @return bool
  117. * @throws DataNotFoundException
  118. * @throws DbException
  119. * @throws ModelNotFoundException
  120. */
  121. public static function setSpreadSure($uid)
  122. {
  123. //首先获取绑定方式
  124. $bind_type = sys_config('bind_type', 1);
  125. if ($bind_type != 2) {
  126. return true;
  127. }
  128. if (self::where('uid', $uid)->where('lock', 1)->find()) {
  129. return true;
  130. }
  131. $log = self::where('uid', $uid)->order('spread_time', 'desc')->find();
  132. if (!$log) {
  133. return true;
  134. }
  135. $sp = $log['spread_uid'];
  136. $userlist = User::column('uid,spread_uid', 'uid');
  137. while ($sp) {
  138. if ($sp == $uid) {
  139. $log['spread_uid'] = 0;
  140. break;
  141. }
  142. $sp = $userlist[$sp]['spread_uid'];
  143. }
  144. if (!$log['spread_uid']) {
  145. return true;
  146. }
  147. $log['lock'] = 1;
  148. $uper = User::getUserInfo($uid);
  149. $res = $log->save() && User::where('uid', $uid)->update(['spread_uid' => $log['spread_uid'], 'spread_time' => $log['spread_time']]) && User::setUserSpreadCount($log['spread_uid']) && User::setUserSpreadCount($log['spread_uid']) && Message::addMessage($log['spread_uid'], '恭喜你,[' . $uper['nickname'] . '](ID:' . $uid . ')在[' . date('Y-m-d H:i:s') . ']成为你的下线!', 199);
  150. while ($uper) {
  151. UserLevel::setLevelComplete($uper['uid']);
  152. $uper = User::getUserInfo($uper['spread_uid']);
  153. }
  154. return $res;
  155. }
  156. }