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