UserSpread.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  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\admin\model\wechat\WechatUser;
  10. use app\models\store\StoreOrder;
  11. use crmeb\services\WechatTemplateService;
  12. use think\Collection;
  13. use think\db\exception\DataNotFoundException;
  14. use think\db\exception\DbException;
  15. use think\db\exception\ModelNotFoundException;
  16. use think\facade\Cache;
  17. use crmeb\traits\ModelTrait;
  18. use crmeb\basic\BaseModel;
  19. use think\facade\Route as Url;
  20. /**
  21. * TODO 用户消费新增金额明细 model
  22. * Class UserBill
  23. * @package app\models\user
  24. */
  25. class UserSpread extends BaseModel
  26. {
  27. /**
  28. * 数据表主键
  29. * @var string
  30. */
  31. protected $pk = 'id';
  32. /**
  33. * 模型名称
  34. * @var string
  35. */
  36. protected $name = 'user_spread';
  37. use ModelTrait;
  38. /**
  39. * @param $uid
  40. * @param $spread_uid
  41. * @return bool|UserSpread
  42. * @throws DataNotFoundException
  43. * @throws DbException
  44. * @throws ModelNotFoundException
  45. */
  46. public static function setSpread($uid, $spread_uid)
  47. {
  48. if (!$spread_uid) {
  49. return true;
  50. }
  51. @file_put_contents('quanju.txt', $spread_uid."-触发用户绑定\r\n", 8);
  52. $sp = $spread_uid;
  53. $userlist = User::column('uid,spread_uid', 'uid');
  54. while ($sp) {
  55. if ($sp == $uid) {
  56. $spread_uid = 0;
  57. break;
  58. }
  59. $sp = $userlist[$sp]['spread_uid'] ?? 0;
  60. }
  61. $user = User::where('uid', $uid)->find();
  62. $spread_user = User::get($spread_uid);
  63. if (!$user || !$spread_user || !$spread_user['is_promoter']) {
  64. return true;
  65. }
  66. //首先获取绑定方式
  67. $bind_type = sys_config('bind_type', 1);
  68. // 通知上级
  69. $openid = WechatUser::where('uid', $spread_uid)->value('openid');
  70. if (!empty($openid)){
  71. // $url = Url::buildUrl('/order/detail/wx175446111846779570')->suffix('')->domain(true)->build();
  72. $group = [
  73. 'first' => '下级用户绑定成功通知',
  74. 'remark' => '点击查看订单详情'
  75. ];
  76. $time = date('Y-m-d H:i:s', time());
  77. $group = array_merge($group, [
  78. 'character_string7' => $user['account'], //用户账号
  79. 'time3' => $time, //绑定时间
  80. ]);
  81. @file_put_contents('quanju.txt', $openid."-openid\r\n", 8);
  82. @file_put_contents('quanju.txt', json_encode($group)."-模版消息3\r\n", 8);
  83. $res= WechatTemplateService::sendTemplate($openid, WechatTemplateService::SUBORDINATE_BINDING, $group);
  84. @file_put_contents('quanju.txt', json_encode($res)."-模版消息返回3\r\n", 8);
  85. }
  86. switch ($bind_type) {
  87. case 2:
  88. if (self::where('uid', $uid)->where('lock', 1)->find()) {
  89. return true;
  90. }
  91. return self::create([
  92. 'uid' => $uid,
  93. 'spread_uid' => $spread_uid,
  94. 'lock' => 0,
  95. 'spread_time' => time()
  96. ]);
  97. break;
  98. case 3:
  99. if (self::where('uid', $uid)->where('lock', 1)->find()) {
  100. return true;
  101. }
  102. self::create([
  103. 'uid' => $uid,
  104. 'spread_uid' => $spread_uid,
  105. 'lock' => 0,
  106. 'spread_time' => time()
  107. ]);
  108. $user['spread_uid'] = $spread_uid;
  109. $user['spread_time'] = time();
  110. return $user->save() && User::setUserSpreadCount($spread_uid);
  111. break;
  112. default:
  113. if (self::where('uid', $uid)->where('lock', 1)->find()) {
  114. return true;
  115. }
  116. self::create([
  117. 'uid' => $uid,
  118. 'spread_uid' => $spread_uid,
  119. 'lock' => 1,
  120. 'spread_time' => time()
  121. ]);
  122. $user['spread_uid'] = $spread_uid;
  123. $user['spread_time'] = time();
  124. return $user->save() && User::setUserSpreadCount($spread_uid);
  125. break;
  126. }
  127. }
  128. /**
  129. * @param $uid
  130. * @return bool
  131. * @throws DataNotFoundException
  132. * @throws DbException
  133. * @throws ModelNotFoundException
  134. */
  135. public static function setSpreadSure($uid)
  136. {
  137. //首先获取绑定方式
  138. $bind_type = sys_config('bind_type', 1);
  139. if ($bind_type != 2) {
  140. return true;
  141. }
  142. if (self::where('uid', $uid)->where('lock', 1)->find()) {
  143. return true;
  144. }
  145. $log = self::where('uid', $uid)->order('spread_time', 'desc')->find();
  146. if (!$log) {
  147. return true;
  148. }
  149. $sp = $log['spread_uid'];
  150. $userlist = User::column('uid,spread_uid', 'uid');
  151. while ($sp) {
  152. if ($sp == $uid) {
  153. $log['spread_uid'] = 0;
  154. break;
  155. }
  156. $sp = $userlist[$sp]['spread_uid'];
  157. }
  158. if (!$log['spread_uid']) {
  159. return true;
  160. }
  161. $log['lock'] = 1;
  162. return $log->save() && User::where('uid', $uid)->update(['spread_uid' => $log['spread_uid'], 'spread_time' => $log['spread_time']]) && User::setUserSpreadCount($log['spread_uid']);
  163. }
  164. }