123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- <?php
- namespace App\Modules\OfficialAccount\Models;
- use Illuminate\Database\Eloquent\Model;
- use DB;
- class TempForceSubscribeUsers extends Model
- {
- protected $connection = 'api_mysql';
-
- protected $tables = 'temp_force_subscribe_users';
- protected $fillable = ['uid', 'distribution_channel_id', 'bid','is_subscribed','subscribe_time','unsubscribe_time','appid', 'openid', 'last_interactive_time'];
- /**
- * 根据openid和appid获取强关用户
- */
- static function forceSubscribeUsersByAppidAndOpenId($appid, $openid)
- {
- return self::where(['appid' => isset($appid) ? $appid : '', 'openid' => isset($openid) ? $openid : ''])->first();
- }
-
- /**
- * 根据openid和appid获取强关用户
- */
- static function get_user_by_offset($distribution_channel_id,$limit,$offset,$start_time)
- {
- return self::where('distribution_channel_id', $distribution_channel_id)
- ->where('last_interactive_time','>=',$start_time)
- ->select('uid','openid')
- ->limit($limit)
- ->offset($offset)
- ->get();
- }
-
-
- /**
- * 删除N天前的数据,保持最近几天热数据
- */
- static function deleteTempForceSubscribeUsersByTime($end_time)
- {
- while (true)
- {
- $affect_rows = self::where('last_interactive_time','<=',$end_time)->limit(50000)->delete();
- if(!$affect_rows) break;
- sleep(1);
- }
- return true;
- //return self::where('last_interactive_time','<=',$end_time)->delete();
- }
- /**
- * 获取所有强关用户
- */
- static function forceSubscribeUsersAllOf()
- {
- return self::where('is_subscribed', 1)->get();
- }
-
- /**
- * 根据uid获取强关用户
- */
- static function forceSubscribeUsersByUid($uid)
- {
- return self::where(['uid' => $uid, 'is_subscribed' => 1])->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 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();
-
- }
- /**
- * 根据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();
-
- }
-
- }
|