* Date: 2019/3/27 21:44 */ namespace app\models\user; use app\admin\model\wechat\WechatUser; use app\models\store\StoreOrder; use crmeb\services\WechatTemplateService; use think\Collection; use think\db\exception\DataNotFoundException; use think\db\exception\DbException; use think\db\exception\ModelNotFoundException; use think\facade\Cache; use crmeb\traits\ModelTrait; use crmeb\basic\BaseModel; use think\facade\Route as Url; /** * TODO 用户消费新增金额明细 model * Class UserBill * @package app\models\user */ class UserSpread extends BaseModel { /** * 数据表主键 * @var string */ protected $pk = 'id'; /** * 模型名称 * @var string */ protected $name = 'user_spread'; use ModelTrait; /** * @param $uid * @param $spread_uid * @return bool|UserSpread * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public static function setSpread($uid, $spread_uid) { if (!$spread_uid) { return true; } @file_put_contents('quanju.txt', $spread_uid."-触发用户绑定\r\n", 8); $sp = $spread_uid; $userlist = User::column('uid,spread_uid', 'uid'); while ($sp) { if ($sp == $uid) { $spread_uid = 0; break; } $sp = $userlist[$sp]['spread_uid'] ?? 0; } $user = User::where('uid', $uid)->find(); $spread_user = User::get($spread_uid); if (!$user || !$spread_user || !$spread_user['is_promoter']) { return true; } //首先获取绑定方式 $bind_type = sys_config('bind_type', 1); // 通知上级 $openid = WechatUser::where('uid', $spread_uid)->value('openid'); if (!empty($openid)){ $url = Url::buildUrl('/order/detail/wx175446111846779570')->suffix('')->domain(true)->build(); $group = [ 'first' => '下级用户绑定成功通知', 'remark' => '点击查看订单详情' ]; // $group = array_merge($group, [ // 'thing4' => 'cs', //商品名称 //// 'character_string2' => $order['pay_type'] == 'offline' ? '线下支付' : date('Y/m/d H:i', $order['pay_time']), //// 'phone_number21' => $order['user_address'], //// 'phone_number21' => '15356590576', // 'thing13' => 'cs', //快递公司 // 'character_string14' => 12345789//快递单号 // ]); // @file_put_contents('quanju.txt', json_encode($group)."-模版消息1\r\n", 8); // $res= WechatTemplateService::sendTemplate($openid, WechatTemplateService::ORDER_POSTAGE_SUCCESS, $group, $url); // @file_put_contents('quanju.txt', json_encode($res)."-模版消息返回1\r\n", 8); $group = array_merge($group, [ // 'thing1' => $user['nickname'], //用户姓名 // 'character_string2' => $order['pay_type'] == 'offline' ? '线下支付' : date('Y/m/d H:i', $order['pay_time']), // 'phone_number21' => $order['user_address'], // 'phone_number21' => '15356590576', 'character_string7' => $user['account'], //用户账号 'time3' => time(), //绑定时间 ]); @file_put_contents('quanju.txt', $openid."-openid\r\n", 8); @file_put_contents('quanju.txt', json_encode($group)."-模版消息3\r\n", 8); $res= WechatTemplateService::sendTemplate($openid, WechatTemplateService::BARGAIN_SUCCESS, $group); @file_put_contents('quanju.txt', json_encode($res)."-模版消息返回3\r\n", 8); } switch ($bind_type) { case 2: if (self::where('uid', $uid)->where('lock', 1)->find()) { return true; } return self::create([ 'uid' => $uid, 'spread_uid' => $spread_uid, 'lock' => 0, 'spread_time' => time() ]); break; case 3: if (self::where('uid', $uid)->where('lock', 1)->find()) { return true; } self::create([ 'uid' => $uid, 'spread_uid' => $spread_uid, 'lock' => 0, 'spread_time' => time() ]); $user['spread_uid'] = $spread_uid; $user['spread_time'] = time(); return $user->save() && User::setUserSpreadCount($spread_uid); break; default: if (self::where('uid', $uid)->where('lock', 1)->find()) { return true; } self::create([ 'uid' => $uid, 'spread_uid' => $spread_uid, 'lock' => 1, 'spread_time' => time() ]); $user['spread_uid'] = $spread_uid; $user['spread_time'] = time(); return $user->save() && User::setUserSpreadCount($spread_uid); break; } } /** * @param $uid * @return bool * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public static function setSpreadSure($uid) { //首先获取绑定方式 $bind_type = sys_config('bind_type', 1); if ($bind_type != 2) { return true; } if (self::where('uid', $uid)->where('lock', 1)->find()) { return true; } $log = self::where('uid', $uid)->order('spread_time', 'desc')->find(); if (!$log) { return true; } $sp = $log['spread_uid']; $userlist = User::column('uid,spread_uid', 'uid'); while ($sp) { if ($sp == $uid) { $log['spread_uid'] = 0; break; } $sp = $userlist[$sp]['spread_uid']; } if (!$log['spread_uid']) { return true; } $log['lock'] = 1; return $log->save() && User::where('uid', $uid)->update(['spread_uid' => $log['spread_uid'], 'spread_time' => $log['spread_time']]) && User::setUserSpreadCount($log['spread_uid']); } }