123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329 |
- <?php
- namespace App\Modules\OfficialAccount\Models;
- use Illuminate\Database\Eloquent\Model;
- use App\Modules\OfficialAccount\Models\TempForceSubscribeUsers;
- use DB;
- class ForceSubscribeUsers extends Model
- {
- protected $tables = 'force_subscribe_users';
- protected $fillable = ['uid', 'official_account_id', 'distribution_channel_id', 'appid', 'openid', 'is_subscribed', 'subscribe_time', 'unsubscribe_time', 'last_interactive_time', 'bid', 'send_order_id'];
- /**
- * 根据openid和appid获取强关用户
- */
- static function forceSubscribeUsersByAppidAndOpenId($appid, $openid)
- {
- return self::where(['appid' => isset($appid) ? $appid : '', 'openid' => isset($openid) ? $openid : ''])->first();
- }
- /**
- * 获取所有强关用户
- */
- static function forceSubscribeUsersAllOf()
- {
- return self::where('is_subscribed', 1)->get();
- }
-
- /**
- * 修改公众号迁移用户数据
- */
- static function updateSubscribeUserTransfer($distribution_channel_id,$uid,$from_appid,$to_appid,$to_openid){
- return self::where(['distribution_channel_id'=>$distribution_channel_id,'uid'=>$uid,'appid'=>$from_appid])->update(['appid'=>$to_appid,'openid'=>$to_openid,'updated_at'=>date('Y-m-d H:i:s')]);
- }
- /**
- * 根据uid获取强关用户
- */
- static function forceSubscribeUsersByUid($uid)
- {
- return self::where(['uid' => $uid, 'is_subscribed' => 1])->first();
- }
-
- /**
- * 根据uid获取强关用户
- */
- static function allForceSubscribeUsersByUid($uid)
- {
-
- return self::where(['uid' => $uid, 'is_subscribed' => 1])->get();
-
- }
- /**
- * 根据distribution_channel_id获取强关用户
- */
- static function forceSubscribeUsersByChannelidAndTimeset($distribution_channel_id, $timeset)
- {
- $lastTime = date('Y-m-d H:i:s', time() - $timeset);
- return self::where(['distribution_channel_id' => $distribution_channel_id, 'is_subscribed' => 1])->where('last_interactive_time', '<', $lastTime)->get();
- }
- /**
- * 根据distribution_channel_id获取强关用户
- */
- static function forceSubscribeNewUsersByTimeset($distribution_channel_id, $timeset)
- {
- $lastTime = date('Y-m-d H:i:s', time() - $timeset);
- return self::where(['distribution_channel_id' => $distribution_channel_id, 'is_subscribed' => 1])->where('created_at', '<', $lastTime)->where('created_at', '>', date('Y-m-d H:i:s', strtotime('-2 day')))->get();
- // return self::where(['distribution_channel_id'=>$distribution_channel_id,'is_subscribed'=>1])->where('created_at','<',$lastTime)->get();
- }
- /**
- * 根据distribution_channel_id获取未付费的强关用户
- */
- static function forceSubscribeNewUnpaidUsersByTime($distribution_channel_id, $start_time,$end_time)
- {
- $data = DB::select(
- "select force_subscribe_users.* from force_subscribe_users
- where distribution_channel_id = '{$distribution_channel_id}'
- and is_subscribed = 1
- and created_at < '{$end_time}'
- and created_at >= '{$start_time}'
- and not exists (select uid from orders where orders.uid=force_subscribe_users.uid and orders.status='PAID' limit 1 )
- limit 20000
- "
- );
- return object_to_array($data);
- }
-
- /**
- * 根据uid和appid获取强关用户
- */
- static function forceSubscribeUsersByUidAndAppidAndChannelId($uid, $appid, $distribution_channel_id)
- {
- $query = self::where(['uid' => $uid, 'distribution_channel_id' => $distribution_channel_id, 'is_subscribed' => 1]);
- $appidArray = explode(',', $appid);
- return $query->wherein('appid', $appidArray)->get();
- }
- /**
- * 根据uid获取强关用户包括取关的用户
- */
- static function forceSubscribeUsersByUidIncludeCancel($uid)
- {
- return self::where(['uid' => $uid])->first();
- }
- /**
- * 根据openid获取一个强关用户
- */
- static function forceSubscribeUsersByOpenid($openid, $appid = '')
- {
- return self::where(['openid' => $openid, 'is_subscribed' => 1])->first();
- }
- /**
- * openid获取强关用户
- */
- static function getOneForceSubscribeUsersByOpenid($openid)
- {
- return self::where('openid', $openid)->first();
- }
- /**
- * 根据openid获取所有强关用户
- */
- static function forceAllSubscribeUsersByOpenid($openid)
- {
- return self::where(['openid' => $openid, 'is_subscribed' => 1])->get();
- }
- /**
- * 根据openid获取强关用户
- */
- static function forceSubscribeUsersByOpenidAndAC($openid, $appid = '', $distribution_channel_id = '')
- {
- $query = self::where('openid', $openid);
- if ($appid) {
- # code...
- $query->where('appid', $appid);
- }
- if ($distribution_channel_id) {
- # code...
- $query->where('distribution_channel_id', $distribution_channel_id);
- }
- return $query->first();
- }
- /**
- * 根据渠道号和日期获取强关用户数量
- */
- static function forceSubscribeUserCountByChannelIdAndDate($distribution_channel_id, $startTime = '', $endTime = '')
- {
- $query = self::orderBy('id', 'desc');
- $distribution_channel_id && $query->where('distribution_channel_id', $distribution_channel_id);
- if ($startTime && $endTime) {
- $query->where('created_at', '>=', date('Y-m-d H:i:s', strtotime($startTime)))->where('created_at', '<', date('Y-m-d H:i:s', strtotime($endTime) + 1 * 86400));
- } elseif ($startTime) {
- # code...
- $end_time = date("Y-m-d",strtotime($startTime)+86400);
- //$query->whereDate('created_at', $startTime);
- $query->where('created_at', '>=',$startTime)->where('created_at', '<',$end_time);
- } elseif ($endTime) {
- # code...
- $end_time = date("Y-m-d",strtotime($endTime)+86400);
- //$query->whereDate('created_at', $endTime);
- $query->where('created_at', '>=',$endTime)->where('created_at', '<',$end_time);
- }
- return $query->count();
- }
- /**
- * 根据openid获取强关用户
- */
- static function forceSubscribeUsersByOpenidAndChannelId($openid, $distribution_channel_id)
- {
- return self::where(['openid' => $openid, 'distribution_channel_id' => $distribution_channel_id])->first();
- }
- /**
- * 根据openid获取一个取关用户
- */
- static function forceUnSubscribeUsersByOpenid($openid)
- {
- return self::where(['openid' => $openid, 'is_subscribed' => 0])->first();
- }
- /**
- * 根据openid获取全部取关用户
- */
- static function forceAllUnSubscribeUsersByOpenid($openid)
- {
- return self::where(['openid' => $openid, 'is_subscribed' => 0])->get();
- }
- /**
- * 根据appid获取强关用户
- */
- static function forceSubscribeUsersByAppid($appid)
- {
- return self::where(['appid' => $appid, 'is_subscribed' => 1])->get();
- }
-
- /**
- * 根据appid获取强关用户数量
- */
- static function forceSubscribeUsersCountByAppid($appid)
- {
-
- return self::where(['appid' => $appid, 'is_subscribed' => 1])->count();
-
- }
-
- /**
- * 根据appid获取今日新增粉丝数
- */
- static function todayForceSubscribeUsers($appid)
- {
- // dd($appid);
- // return 0;
- $subscribe_time = date("Y-m-d");
- $end_time = date("Y-m-d",strtotime($subscribe_time)+86400);
- //return self::where(['appid' => $appid, 'is_subscribed' => 1])->whereDate('subscribe_time', $subscribe_time)->count();
- return self::where(['appid' => $appid, 'is_subscribed' => 1])->where('subscribe_time', '>=',$subscribe_time)->where('subscribe_time', '<',$end_time)->count();
- }
- /**
- * 根据appid获取粉丝总数
- */
- static function allForceSubscribeUsers($appid)
- {
- return self::where(['appid' => $appid, 'is_subscribed' => 1])->count();
- }
- //获取推广带来的净关粉丝总数
- static function getFansNum($send_order_id)
- {
- return self::where('send_order_id', $send_order_id)->where('is_subscribed', 1)->count();
- }
- //获取推广带来的新关粉丝总数
- static function getNewFansNum($send_order_id)
- {
- return self::where('send_order_id', $send_order_id)->count();
- }
- //根据模板消息传的各项条件检索用户
- static function forceUserCountByTemplatePrams($appids, $distribution_channel_id, $subscribe_time = '', $sex = '', $balance = '', $category_id = '', $order_type = '', $skip = 0)
- {
- $query = self::leftJoin('users', 'users.id', '=', 'force_subscribe_users.uid')
- ->select('force_subscribe_users.id', 'force_subscribe_users.uid', 'force_subscribe_users.official_account_id', 'force_subscribe_users.distribution_channel_id', 'force_subscribe_users.appid', 'force_subscribe_users.openid', 'force_subscribe_users.is_subscribed', 'force_subscribe_users.subscribe_time', 'force_subscribe_users.unsubscribe_time', 'force_subscribe_users.last_interactive_time', 'force_subscribe_users.bid',
- 'users.nickname');
- $query->where('force_subscribe_users.distribution_channel_id', $distribution_channel_id);
- $query->where('force_subscribe_users.is_subscribed', 1);
- $appidArray = explode(',', $appids);
- $query->wherein('force_subscribe_users.appid', $appidArray);
- if ($subscribe_time) {
- # code...
- switch ($subscribe_time) {
- case 'a':
- # code...
- $selTime = date('Y-m-d H:i:s', strtotime('-5 day'));
- $query->where('subscribe_time', '>', $selTime);
- break;
- case 'b':
- # code...
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-5 day'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-15 day'));
- $query->where('subscribe_time', '<=', $selTimeStart);
- $query->where('subscribe_time', '>', $selTimeEnd);
- break;
- case 'c':
- # code...
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-15 day'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-30 day'));
- $query->where('subscribe_time', '<=', $selTimeStart);
- $query->where('subscribe_time', '>', $selTimeEnd);
- break;
- case 'd':
- # code...
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-30 day'));
- $query->where('subscribe_time', '<=', $selTimeStart);
- break;
- case 'e':
- # code...
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-1 day'));
- $selTimeEnd = date('Y-m-d H:i:s');
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- case 'f':
- # code...
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-2 day'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-1 day'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- default:
- # code...
- break;
- }
- }
- if ($sex || $balance) {
- if ($sex) {
- # code...
- switch ($sex) {
- case 'a':
- # code...
- $query->where('users.sex', 1);
- break;
- case 'b':
- # code...
- $query->where('users.sex', 2);
- break;
- default:
- # code...
- break;
- }
- }
- if ($balance) {
- # code...
- switch ($balance) {
- case 'a':
- # code...
- $query->where('users.balance', '<', 500);
- break;
- case 'b':
- # code...
- $query->where('users.balance', '>=', 500);
- $query->where('users.balance', '<', 2000);
- break;
- case 'c':
- # code...
- $query->where('users.balance', '>=', 2000);
- $query->where('users.balance', '<', 5000);
- break;
- default:
- # code...
- break;
- }
- }
- }
- if ($category_id) {
- if ($category_id != 'z') {
- # code...
- $query->join('books', 'force_subscribe_users.bid', 'books.id');
- $categoryArray = explode(',', $category_id);
- $query->wherein('books.category_id', $categoryArray);
- // $query->where('books.category_id',$category_id);
- }
- }
- if ($order_type) {
- switch ($order_type) {
- case 'a':
- # code...
- //未消费用户
- $query->whereNotExists(function ($query) {
- $query->select(DB::raw(1))
- ->from('orders')
- ->whereRaw('orders.uid =force_subscribe_users.uid')
- ->whereRaw('orders.status="PAID"')
- ->limit(1);
- });
- break;
- case 'b':
- # code...
- //已消费用户
- $query->whereExists(function ($query) {
- $query->select(DB::raw(1))
- ->from('orders')
- ->whereRaw('orders.uid=force_subscribe_users.uid')
- ->whereRaw('orders.status="PAID"')
- ->limit(1);
- });
- break;
- case 'c':
- # code...
- //包年用户
- $query->whereExists(function ($query) {
- $query->select('uid')
- ->from('year_orders')
- ->whereRaw('year_orders.uid = force_subscribe_users.uid')
- ->where('year_orders.begin_time', '<', date('Y-m-d H:i:s'))
- ->where('year_orders.end_time', '>', date('Y-m-d H:i:s'))
- ->limit(1);
- });
-
- break;
- case 'd':
- # code...
- //昨天消费用户
- $query->whereExists(function ($query) {
- $query->select('uid')
- ->from('orders')
- ->whereRaw('orders.uid=force_subscribe_users.uid')
- ->whereRaw('orders.status="PAID"')
- ->where('orders.created_at', '>=',date('Y-m-d',strtotime('-1 day')))
- ->where('orders.created_at', '<',date('Y-m-d'))
- ->limit(1);
- });
-
- break;
- default:
- # code...
- break;
- }
- }
- // dd($query->get());
- return $query->skip($skip)->take(10000)->get();
- }
- //根据客服消息传的各项条件检索用户,精确到appid级别
- static function forceUserCountByCustomPrams($appids, $distribution_channel_id, $subscribe_time = '', $sex = '', $balance = '', $category_id = '', $order_type = '', $sign_time = '', $skip = 0,$subscribe_time_attach='')
- {
- $canSendDate = date('Y-m-d H:i:s', strtotime('-2 day'));
- # 缓存表
- $query = TempForceSubscribeUsers::select('temp_force_subscribe_users.id', 'temp_force_subscribe_users.uid', 'temp_force_subscribe_users.distribution_channel_id', 'temp_force_subscribe_users.appid', 'temp_force_subscribe_users.openid',
- 'temp_force_subscribe_users.is_subscribed', 'temp_force_subscribe_users.subscribe_time', 'temp_force_subscribe_users.unsubscribe_time', 'temp_force_subscribe_users.last_interactive_time', 'temp_force_subscribe_users.bid');
- $query->where('temp_force_subscribe_users.last_interactive_time', '>', $canSendDate);
-
- $query->where('temp_force_subscribe_users.distribution_channel_id', $distribution_channel_id);
- $query->where('temp_force_subscribe_users.is_subscribed', 1);
- $appidArray = explode(',', $appids);
- $query->wherein('temp_force_subscribe_users.appid', $appidArray);
- //自定义关注时间
- $subscribe_time_list = self::subscribeTimeDeal($subscribe_time,$subscribe_time_attach);
- if($subscribe_time_list){
- $query->where(function ($q) use ($subscribe_time_list){
- foreach ($subscribe_time_list as $item){
- $q->orWhere(function ($qq) use ($item){
- if($item[0] != 0) $qq->where('subscribe_time','>',$item[0]);
- if($item[1] != -1)$qq->where('subscribe_time','<',$item[1]);
- });
- }
- });
- }
- if ($sex || $balance) {
- # code...
- $query->leftjoin('users', 'temp_force_subscribe_users.uid', '=', 'users.id');
- if ($sex) {
- # code...
- switch ($sex) {
- case 'a':
- # code...
- $query->where('users.sex', 1);
- break;
- case 'b':
- # code...
- $query->whereIn('users.sex', [0,2]);
- break;
- default:
- # code...
- break;
- }
- }
- if ($balance) {
- # code...
- $balance_list = explode(',',$balance);
- if(count($balance_list) >1){
- $true_balance_list = [];
- foreach ($balance_list as $balance_item){
- $temp_item = self::userbalance($balance_item);
- if($temp_item) $true_balance_list[] = $temp_item;
- }
- $query->where(function ($q) use ($true_balance_list){
- foreach ($true_balance_list as $true_balance_item){
- $q->orWhere(function ($qq) use ($true_balance_item){
- $qq->where('users.balance', '>=', $true_balance_item[0])
- ->where('users.balance','<',$true_balance_item[1]);
- });
- }
- });
- $balance = 'z';
- }
- switch ($balance) {
- case 'a':
- # code...
- $query->where('users.balance', '<', 500);
- break;
- case 'b':
- # code...
- $query->where('users.balance', '>=', 500);
- $query->where('users.balance', '<', 2000);
- break;
- case 'c':
- # code...
- $query->where('users.balance', '>=', 2000);
- $query->where('users.balance', '<', 5000);
- break;
- default:
- # code...
- break;
- }
- }
- }
- if ($category_id) {
- if ($category_id != 'z') {
- # code...
- $query->join('books', 'temp_force_subscribe_users.bid', 'books.id');
- $categoryArray = explode(',', $category_id);
- $query->wherein('books.category_id', $categoryArray);
- // $query->where('books.category_id',$category_id);
- }
- }
- if ($order_type) {
- switch ($order_type) {
- case 'a':
- # code...
- //未消费用户
- $query->whereNotNull('uid')->whereNotExists(function ($query) {
- $query->select(DB::raw(1))
- ->from('orders')
- ->whereRaw('orders.uid =temp_force_subscribe_users.uid')
- ->whereRaw('orders.status="PAID"')
- ->limit(1);
- });
- break;
- case 'b':
- # code...
- //已消费用户
- $query->whereExists(function ($query) {
- $query->select(DB::raw(1))
- ->from('orders')
- ->whereRaw('orders.uid =temp_force_subscribe_users.uid')
- ->whereRaw('orders.status="PAID"')
- ->limit(1);
- });
- break;
- case 'c':
- # code...
- //包年用户
- $query->whereExists(function ($query) {
- $query->select(DB::raw(1))
- ->from('year_orders')
- ->whereRaw('year_orders.uid = temp_force_subscribe_users.uid')
- ->where('year_orders.begin_time', '<', date('Y-m-d H:i:s'))
- ->where('year_orders.end_time', '>', date('Y-m-d H:i:s'))
- ->limit(1);
- });
- break;
- case 'd':
- # code...
- //6-13小时之间有过订阅记录
-
- $query->whereExists(function ($query) {
- $query->select(DB::raw(1))
- ->from('orders')
- ->whereRaw('orders.uid =temp_force_subscribe_users.uid')
- ->whereRaw('orders.status="PAID"')
- ->where('orders.created_at','>',date('Y-m-d H:i:s', strtotime('-13 hour')))
- ->where('orders.created_at','<=',date('Y-m-d H:i:s', strtotime('-6 hour')))
- ->limit(1);
- });
-
- break;
- default:
- # code...
- break;
- }
- }
-
- if ($sign_time) {
- switch ($sign_time) {
- case 'a':
- //签到 60-90分钟内
- $query->whereExists(function ($query) {
- $query->select(DB::raw(1))
- ->from('smart_push_user_sign')
- ->whereRaw('smart_push_user_sign.uid =temp_force_subscribe_users.uid')
- ->where('smart_push_user_sign.sign_time', '<', (microtime(true) - 60*60))
- ->where('smart_push_user_sign.sign_time', '>', (microtime(true) - 60*90))
- ->limit(1);
- });
-
- break;
- default:
- break;
- }
- }
- // 单次获取1w,改动此数值,必须更改CustomMsgService下SmartPush方法内对应数值
- return $query->skip($skip)->take(10000)->get();
- }
- private static function subscribeTimeDeal($subscribe_time,$subscribe_time_attach){
- $result = [];
- if($subscribe_time){
- $subscribe_time_list = explode(',',$subscribe_time);
- $data = self::subscribeTime();
- foreach ($subscribe_time_list as $subscribe_time_list_item){
- $temp = isset($data[$subscribe_time_list_item])?$data[$subscribe_time_list_item]:'';
- if($temp) $result[] = $temp;
- }
- }
- if($subscribe_time_attach){
- $subscribe_time_attach_list = explode(',',$subscribe_time_attach);
- foreach ($subscribe_time_attach_list as $subscribe_time_attach_item){
- list($min_item,$max_item) = explode('-',$subscribe_time_attach_item);
- if(!$min_item && !$max_item) continue;
- $min_item_time = -1;
- $max_item_time = 0;
- if($min_item){
- $min_item_time = date('Y-m-d H:i:s', strtotime(-$min_item.' hour'));
- }
- if($max_item){
- $max_item_time = date('Y-m-d H:i:s', strtotime(-$max_item.' hour'));
- }
- $result[] = [$max_item_time,$min_item_time];
- }
- }
- return $result;
- }
- private static function subscribeTime($key = ''){
- $now = date('Y-m-d H:i:s');
- $data = [
- 'a'=>[date('Y-m-d H:i:s', strtotime('-5 day')),-1],
- 'b'=>[date('Y-m-d H:i:s', strtotime('-15 day')),date('Y-m-d H:i:s', strtotime('-5 day'))],
- 'c'=>[date('Y-m-d H:i:s', strtotime('-30 day')),date('Y-m-d H:i:s', strtotime('-15 day'))],
- 'd'=>[0,date('Y-m-d H:i:s', strtotime('-30 day'))],
- 'e'=>[date('Y-m-d H:i:s', strtotime('-1 day')),$now],
- 'f'=>[date('Y-m-d H:i:s', strtotime('-2 day')),date('Y-m-d H:i:s', strtotime('-1 day'))],
- 'g'=>[0,date('Y-m-d H:i:s', strtotime('-1 day'))],
- 'h'=>[date('Y-m-d H:i:s', strtotime('-25 min')),date('Y-m-d H:i:s', strtotime('-10 min'))],
- 'i'=>[date('Y-m-d H:i:s', strtotime('-48 hour')),date('Y-m-d H:i:s', strtotime('-36 hour'))],
- 'j'=>[date('Y-m-d H:i:s', strtotime('-48 hour')),date('Y-m-d H:i:s', strtotime('-20 hour'))],
- 'k'=>[date('Y-m-d H:i:s', strtotime('-48 hour')),date('Y-m-d H:i:s', strtotime('-42 hour'))],
- 'l'=>[date('Y-m-d H:i:s', strtotime('-48 hour')),date('Y-m-d H:i:s', strtotime('-12 hour'))],
- 'n'=>[date('Y-m-d H:i:s', strtotime('-24 hour')),date('Y-m-d H:i:s', strtotime('-12 hour'))],
- 'o'=>[date('Y-m-d H:i:s', strtotime('-48 hour')),date('Y-m-d H:i:s', strtotime('-24 hour'))],
- 'p'=>[date('Y-m-d H:i:s', strtotime('-5 day')),date('Y-m-d H:i:s', strtotime('-48 hour'))]
- ];
- if($key){
- if(isset($data[$key])) return $data[$key];
- return [];
- }
- return $data;
- }
- private static function userbalance($key = ''){
- $data = [
- 'a'=>[0,500],
- 'b'=>[500,2000],
- 'c'=>[2000,5000]
- ];
- if($key){
- if(isset($data[$key])) return $data[$key];
- return [];
- }
- return $data;
- }
- //指定强关用户获取
- static function simpleForceUserCountByPrams($uids, $param=[],$skip = 0)
- {
- $query = ForceSubscribeUsers::leftjoin('wechat_templates','wechat_templates.appid','force_subscribe_users.appid');
-
- $query->select('force_subscribe_users.id', 'force_subscribe_users.uid', 'force_subscribe_users.distribution_channel_id', 'force_subscribe_users.appid', 'force_subscribe_users.openid',
- 'force_subscribe_users.is_subscribed', 'force_subscribe_users.subscribe_time','force_subscribe_users.unsubscribe_time', 'force_subscribe_users.last_interactive_time',
- 'force_subscribe_users.bid','wechat_templates.template_id');
-
- $query->where('force_subscribe_users.subscribe_time', '>=','2018-11-15');
- $query->where('force_subscribe_users.is_subscribed', 1);
- $query->wherein('force_subscribe_users.uid', $uids);
-
- $subscribe_time = isset($param['subscribe_time'])?$param['subscribe_time']:'z';
- $category_id = isset($param['category_id'])?$param['category_id']:'z';
- $sex = isset($param['sex'])?$param['sex']:'';// 不区分
- $balance = isset($param['balance'])?$param['balance']:'';
- $order_type = isset($param['order_type'])?$param['order_type']:'z';
- $sign_time = isset($param['sign_time'])?$param['sign_time']:'z';
- $common_template_id = isset($param['common_template_id'])?$param['common_template_id']:'';
-
- if($common_template_id){
- $query->where('wechat_templates.common_template_id', $common_template_id);
- // $query->select(DB::raw('(select template_id from wechat_templates where appid=force_subscribe_users.appid and common_template_id="'.$common_template_id.'" limit 1) as template_id'));
- }
- if ($subscribe_time) {
- # code...
- switch ($subscribe_time) {
- case 'a':
- # code...
- $selTime = date('Y-m-d H:i:s', strtotime('-5 day'));
- $query->where('subscribe_time', '>', $selTime);
- break;
- case 'b':
- # code...
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-5 day'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-15 day'));
- $query->where('subscribe_time', '<=', $selTimeStart);
- $query->where('subscribe_time', '>', $selTimeEnd);
- break;
- case 'c':
- # code...
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-15 day'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-30 day'));
- $query->where('subscribe_time', '<=', $selTimeStart);
- $query->where('subscribe_time', '>', $selTimeEnd);
- break;
- case 'd':
- # code...
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-30 day'));
- $query->where('subscribe_time', '<=', $selTimeStart);
- break;
- case 'e':
- # code...
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-1 day'));
- $selTimeEnd = date('Y-m-d H:i:s');
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- case 'f':
- # code...
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-2 day'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-1 day'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- case 'g':
- # 客服消息专用,24小时前的老用户,不发给新用户
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-1 day'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- break;
- case 'h':
- // 关注10-50分钟之间
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-50 min'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-10 min'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- case 'i':
- # 关注时间 36小时-48小时
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-36 hour'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- case 'j':
- # 关注时间 20小时-48小时
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-20 hour'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- case 'k':
- # 关注时间 42小时-48小时
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-42 hour'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- case 'l':
- # 关注时间 12小时-48小时
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-12 hour'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- case 'm':
- # 关注时间 60小时-80小时
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-80 hour'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-60 hour'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- case 'n':
- # 关注时间 12小时-24小时
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-24 hour'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-12 hour'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- case 'o':
- # 关注时间 24小时-48小时
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-24 hour'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- case 'p':
- # 关注时间 48小时-5天
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-5 day'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-48 hour'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- default:
- # code...
- break;
- }
-
- }
- if ($sex || $balance) {
- # code...
- $query->join('users', 'force_subscribe_users.uid', '=', 'users.id');
- if ($sex) {
- # code...
- switch ($sex) {
- case 'a':
- # code...
- $query->where('users.sex', 1);
- break;
- case 'b':
- # code...
- $query->where('users.sex', 2);
- break;
- default:
- # code...
- break;
- }
- }
- if ($balance) {
- # code...
- switch ($balance) {
- case 'a':
- # code...
- $query->where('users.balance', '<', 500);
- break;
- case 'b':
- # code...
- $query->where('users.balance', '>=', 500);
- $query->where('users.balance', '<', 2000);
- break;
- case 'c':
- # code...
- $query->where('users.balance', '>=', 2000);
- $query->where('users.balance', '<', 5000);
- break;
- default:
- # code...
- break;
- }
- }
- }
-
- if ($category_id) {
- if ($category_id != 'z') {
- # code...
- $query->join('books', 'force_subscribe_users.bid', 'books.id');
- $categoryArray = explode(',', $category_id);
- $query->wherein('books.category_id', $categoryArray);
- // $query->where('books.category_id',$category_id);
- }
-
-
- }
-
- if ($order_type) {
- switch ($order_type) {
- case 'a':
- # code...
- //未消费用户
- $query->whereNotExists(function ($query) {
- $query->select(DB::raw(1))
- ->from('orders')
- ->whereRaw('orders.uid =force_subscribe_users.uid')
- ->whereRaw('orders.status="PAID"')
- ->limit(1);
- });
-
- break;
- case 'b':
- # code...
- //已消费用户
- $query->whereExists(function ($query) {
- $query->select(DB::raw(1))
- ->from('orders')
- ->whereRaw('orders.uid =force_subscribe_users.uid')
- ->whereRaw('orders.status="PAID"')
- ->limit(1);
- });
-
- break;
- case 'c':
- # code...
- //包年用户
- $query->whereExists(function ($query) {
- $query->select(DB::raw(1))
- ->from('year_orders')
- ->whereRaw('year_orders.uid = force_subscribe_users.uid')
- ->where('year_orders.begin_time', '<', date('Y-m-d H:i:s'))
- ->where('year_orders.end_time', '>', date('Y-m-d H:i:s'))
- ->limit(1);
- });
-
- break;
- default:
- # code...
- break;
- }
- }
-
- if ($sign_time) {
- switch ($sign_time) {
- case 'a':
- //签到 60-90分钟内
- $query->whereExists(function ($query) {
- $query->select(DB::raw(1))
- ->from('user_sign')
- ->whereRaw('user_sign.uid =force_subscribe_users.uid')
- ->where('user_sign.sign_time', '<', (microtime(true) - 60*60))
- ->where('user_sign.sign_time', '>', (microtime(true) - 60*90))
- ->limit(1);
- });
-
- break;
- default:
- break;
- }
- }
-
- // 单次获取1w,改动此数值,必须更改CustomMsgService下SmartPush方法内对应数值
- return $query->skip($skip)->take(10000)->get();
-
- }
-
-
- //根据客服消息传的各项条件检索用户--老版
- static function forceUserCountByCustomPrams2($appids, $distribution_channel_id, $subscribe_time = '', $sex = '', $balance = '', $category_id = '', $order_type = '', $sign_time = '', $skip = 0)
- {
-
- $query = self::select('force_subscribe_users.id', 'force_subscribe_users.uid', 'force_subscribe_users.official_account_id', 'force_subscribe_users.distribution_channel_id', 'force_subscribe_users.appid', 'force_subscribe_users.openid', 'force_subscribe_users.is_subscribed', 'force_subscribe_users.subscribe_time', 'force_subscribe_users.unsubscribe_time', 'force_subscribe_users.last_interactive_time', 'force_subscribe_users.bid');
- $query->where('force_subscribe_users.distribution_channel_id', $distribution_channel_id);
- $query->where('force_subscribe_users.is_subscribed', 1);
- $appidArray = explode(',', $appids);
- $query->wherein('force_subscribe_users.appid', $appidArray);
- $canSendDate = date('Y-m-d H:i:s', strtotime('-2 day'));
- $query->where('force_subscribe_users.last_interactive_time', '>', $canSendDate);
- if ($subscribe_time) {
- # code...
- switch ($subscribe_time) {
- case 'a':
- # code...
- $selTime = date('Y-m-d H:i:s', strtotime('-5 day'));
- $query->where('subscribe_time', '>', $selTime);
- break;
- case 'b':
- # code...
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-5 day'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-15 day'));
- $query->where('subscribe_time', '<=', $selTimeStart);
- $query->where('subscribe_time', '>', $selTimeEnd);
- break;
- case 'c':
- # code...
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-15 day'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-30 day'));
- $query->where('subscribe_time', '<=', $selTimeStart);
- $query->where('subscribe_time', '>', $selTimeEnd);
- break;
- case 'd':
- # code...
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-30 day'));
- $query->where('subscribe_time', '<=', $selTimeStart);
- break;
- case 'e':
- # code...
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-1 day'));
- $selTimeEnd = date('Y-m-d H:i:s');
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- case 'f':
- # code...
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-2 day'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-1 day'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- case 'g':
- # 客服消息专用,24小时前的老用户,不发给新用户
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-1 day'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- break;
- case 'h':
- // 关注10-25分钟之间
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-25 min'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-10 min'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- case 'i':
- # 关注时间 36小时-48小时
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-36 hour'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- case 'j':
- # 关注时间 20小时-48小时
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-20 hour'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- case 'k':
- # 关注时间 42小时-48小时
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-42 hour'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- case 'l':
- # 关注时间 12小时-48小时
- $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
- $selTimeEnd = date('Y-m-d H:i:s', strtotime('-12 hour'));
- $query->where('subscribe_time', '<=', $selTimeEnd);
- $query->where('subscribe_time', '>', $selTimeStart);
- break;
- default:
- # code...
- break;
- }
-
- }
- if ($sex || $balance) {
- # code...
- $query->join('users', 'force_subscribe_users.uid', '=', 'users.id');
- if ($sex) {
- # code...
- switch ($sex) {
- case 'a':
- # code...
- $query->where('users.sex', 1);
- break;
- case 'b':
- # code...
- $query->where('users.sex', 2);
- break;
- default:
- # code...
- break;
- }
- }
- if ($balance) {
- # code...
- switch ($balance) {
- case 'a':
- # code...
- $query->where('users.balance', '<', 500);
- break;
- case 'b':
- # code...
- $query->where('users.balance', '>=', 500);
- $query->where('users.balance', '<', 2000);
- break;
- case 'c':
- # code...
- $query->where('users.balance', '>=', 2000);
- $query->where('users.balance', '<', 5000);
- break;
- default:
- # code...
- break;
- }
- }
- }
-
- if ($category_id) {
- if ($category_id != 'z') {
- # code...
- $query->join('books', 'force_subscribe_users.bid', 'books.id');
- $categoryArray = explode(',', $category_id);
- $query->wherein('books.category_id', $categoryArray);
- // $query->where('books.category_id',$category_id);
- }
-
-
- }
-
- if ($order_type) {
- switch ($order_type) {
- case 'a':
- # code...
- //未消费用户
- $query->whereNotExists(function ($query) {
- $query->select(DB::raw(1))
- ->from('orders')
- ->whereRaw('orders.uid =force_subscribe_users.uid')
- ->whereRaw('orders.status="PAID"')
- ->limit(1);
- });
-
- break;
- case 'b':
- # code...
- //已消费用户
- $query->whereExists(function ($query) {
- $query->select(DB::raw(1))
- ->from('orders')
- ->whereRaw('orders.uid =force_subscribe_users.uid')
- ->whereRaw('orders.status="PAID"')
- ->limit(1);
- });
-
- break;
- case 'c':
- # code...
- //包年用户
- $query->whereExists(function ($query) {
- $query->select(DB::raw(1))
- ->from('year_orders')
- ->whereRaw('year_orders.uid = force_subscribe_users.uid')
- ->where('year_orders.begin_time', '<', date('Y-m-d H:i:s'))
- ->where('year_orders.end_time', '>', date('Y-m-d H:i:s'))
- ->limit(1);
- });
-
- break;
- default:
- # code...
- break;
- }
- }
-
- if ($sign_time) {
- switch ($sign_time) {
- case 'a':
- //签到 60-90分钟内
- $query->whereExists(function ($query) {
- $query->select(DB::raw(1))
- ->from('user_sign')
- ->whereRaw('user_sign.uid =force_subscribe_users.uid')
- ->where('user_sign.sign_time', '<', (microtime(true) - 60*60))
- ->where('user_sign.sign_time', '>', (microtime(true) - 60*90))
- ->limit(1);
- });
-
- break;
- default:
- break;
- }
- }
-
- // 单次获取1w,改动此数值,必须更改CustomMsgService下SmartPush方法内对应数值
- return $query->skip($skip)->take(10000)->get();
-
- }
- /**
- * 通过uid获取用户关注的服务号名称
- * @param $uid
- * @return mixed
- */
- static function getOfficalAccountNickName($uid)
- {
- $search_obj = self::select('official_accounts.nickname')->leftjoin('official_accounts', 'force_subscribe_users.appid', '=', 'official_accounts.appid')->where('force_subscribe_users.uid', $uid);
- return $search_obj->first();
- }
- /**
- * 根据openid获取用户的性别信息
- * @param unknown_type $distribution_channel_id
- * @param unknown_type $openid
- */
- static function getSexByOpenid($distribution_channel_id,$openid){
- $sex = self::join('books','force_subscribe_users.bid','books.id')
- ->join('book_categories', 'books.category_id', 'book_categories.id')
- ->select('book_categories.channel_name','force_subscribe_users.bid')
- ->where('force_subscribe_users.openid',$openid)
- ->where('force_subscribe_users.distribution_channel_id',$distribution_channel_id)
- ->first();
- \Log::info('getSexByOpenid:'.$openid.' sex:'.json_encode($sex));
- if(isset($sex->channel_name) && $sex->channel_name){
- if($sex->channel_name == '男频'){
- return 1;
- }
- return 2;
- }else{
- // 判断用户性别
- $user = self::join('users','force_subscribe_users.uid','users.id')
- ->select('users.sex')
- ->where('force_subscribe_users.openid',$openid)
- ->where('force_subscribe_users.distribution_channel_id',$distribution_channel_id)
- ->first();
- \Log::info('getSexByOpenid_user_openid:'.$openid.' sex:'.json_encode($user));
- if(isset($user->sex) && $user->sex == 1){
- \Log::info('getSexByOpenid_by_user_sex:'.$user->sex);
- return 1;
- }
- return 2;
- }
- }
-
-
- /**
- * 根据openid获取用户的性别信息--无需判断性别
- */
- static function getSimpleSexByOpenid($distribution_channel_id,$openid){
- $sex = self::join('books','force_subscribe_users.bid','books.id')
- ->join('book_categories', 'books.category_id', 'book_categories.id')
- ->select('book_categories.channel_name','force_subscribe_users.bid')
- ->where('force_subscribe_users.openid',$openid)
- ->where('force_subscribe_users.distribution_channel_id',$distribution_channel_id)
- ->first();
- \Log::info('getSimpleSexByOpenid:'.$openid.' sex:'.json_encode($sex));
- if(isset($sex->channel_name) && $sex->channel_name){
- if($sex->channel_name == '男频'){
- return 1;
- }
- }
- return 2;
- }
-
- /**
- * 根据uid获取用户的性别信息--无需判断性别
- */
- static function getSimpleSexByUid($uid){
- if($uid == 0){
- return 2;
- }
- $sex = self::join('books','force_subscribe_users.bid','books.id')
- ->join('book_categories', 'books.category_id', 'book_categories.id')
- ->select('book_categories.channel_name','force_subscribe_users.bid')
- ->where('force_subscribe_users.uid',$uid)
- ->first();
- \Log::info('getSimpleSexByUid:'.$uid.' sex:'.json_encode($sex));
- if(isset($sex->channel_name) && $sex->channel_name){
- if($sex->channel_name == '男频'){
- return 1;
- }
- }
- return 2;
- }
- public static function getOldUserNewSubsribeNum($params){
- $obj = DB::table('official_accounts')->orderBy('id');
- //\Log::info('getOldUser:'.$obj->toSql().json_encode($params));
- if(isset($params['distribution_channel_id']) && $params['distribution_channel_id']){
- $obj->where('distribution_channel_id',$params['distribution_channel_id']);
- }
- $res = 0;
- $official_accounts = $obj->get();
- $date = date('Y-m-d');
- if(isset($params['start_time']) && $params['start_time']) {
- $date = date('Y-m-d',strtotime($params['start_time']));
- }
- foreach ($official_accounts as $official_account) {
- $count = \Redis::scard('gzh_old_sub:'.($official_account->appid).':'.$date);
- \Log::info('gzh_old_sub:'.($official_account->appid).':'.$date.$count);
- $res += $count;
- }
- return $res;
- }
- public static function getOldUserNewSubsribeNumV1($params){
- $obj = self::whereRaw('force_subscribe_users.subscribe_time > force_subscribe_users.created_at');
- if(isset($params['distribution_channel_id']) && $params['distribution_channel_id']){
- $obj->where('distribution_channel_id',$params['distribution_channel_id']);
- }
- if(isset($params['start_time']) && $params['start_time']){
- $obj->where('subscribe_time','>=',$params['start_time']);
- }
- if(isset($params['end_time']) && $params['end_time']){
- $obj->where('subscribe_time','<=',$params['end_time']);
- }
- //\Log::info('getOldUser:'.$obj->toSql().json_encode($params));
- return $obj->count('id');
- }
- }
|