TempForceSubscribeUsers.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php
  2. namespace App\Modules\OfficialAccount\Models;
  3. use Illuminate\Database\Eloquent\Model;
  4. use DB;
  5. class TempForceSubscribeUsers extends Model
  6. {
  7. protected $tables = 'temp_force_subscribe_users';
  8. protected $fillable = ['uid', 'distribution_channel_id', 'bid','is_subscribed','subscribe_time','unsubscribe_time','appid', 'openid', 'last_interactive_time'];
  9. /**
  10. * 根据openid和appid获取强关用户
  11. */
  12. static function forceSubscribeUsersByAppidAndOpenId($appid, $openid)
  13. {
  14. return self::where(['appid' => isset($appid) ? $appid : '', 'openid' => isset($openid) ? $openid : ''])->first();
  15. }
  16. /**
  17. * 根据openid和appid获取强关用户
  18. */
  19. static function get_user_by_offset($distribution_channel_id,$limit,$offset,$start_time)
  20. {
  21. return self::where('distribution_channel_id', $distribution_channel_id)
  22. ->where('last_interactive_time','>=',$start_time)
  23. ->select('uid','openid')
  24. ->limit($limit)
  25. ->offset($offset)
  26. ->get();
  27. }
  28. /**
  29. * 删除N天前的数据,保持最近几天热数据
  30. */
  31. static function deleteTempForceSubscribeUsersByTime($end_time)
  32. {
  33. while (true)
  34. {
  35. $affect_rows = self::where('last_interactive_time','<=',$end_time)->limit(50000)->delete();
  36. if(!$affect_rows) break;
  37. sleep(1);
  38. }
  39. return true;
  40. //return self::where('last_interactive_time','<=',$end_time)->delete();
  41. }
  42. /**
  43. * 获取所有强关用户
  44. */
  45. static function forceSubscribeUsersAllOf()
  46. {
  47. return self::where('is_subscribed', 1)->get();
  48. }
  49. /**
  50. * 根据uid获取强关用户
  51. */
  52. static function forceSubscribeUsersByUid($uid)
  53. {
  54. return self::where(['uid' => $uid, 'is_subscribed' => 1])->first();
  55. }
  56. /**
  57. * 根据openid获取一个强关用户
  58. */
  59. static function forceSubscribeUsersByOpenid($openid, $appid = '')
  60. {
  61. return self::where(['openid' => $openid, 'is_subscribed' => 1])->first();
  62. }
  63. /**
  64. * openid获取强关用户
  65. */
  66. static function getOneForceSubscribeUsersByOpenid($openid)
  67. {
  68. return self::where('openid', $openid)->first();
  69. }
  70. /**
  71. * 根据openid获取强关用户
  72. */
  73. static function forceSubscribeUsersByOpenidAndAC($openid, $appid = '', $distribution_channel_id = '')
  74. {
  75. $query = self::where('openid', $openid);
  76. if ($appid) {
  77. # code...
  78. $query->where('appid', $appid);
  79. }
  80. if ($distribution_channel_id) {
  81. # code...
  82. $query->where('distribution_channel_id', $distribution_channel_id);
  83. }
  84. return $query->first();
  85. }
  86. /**
  87. * 根据openid获取强关用户
  88. */
  89. static function forceSubscribeUsersByOpenidAndChannelId($openid, $distribution_channel_id)
  90. {
  91. return self::where(['openid' => $openid, 'distribution_channel_id' => $distribution_channel_id])->first();
  92. }
  93. /**
  94. * 根据openid获取一个取关用户
  95. */
  96. static function forceUnSubscribeUsersByOpenid($openid)
  97. {
  98. return self::where(['openid' => $openid, 'is_subscribed' => 0])->first();
  99. }
  100. /**
  101. * 根据openid获取全部取关用户
  102. */
  103. static function forceAllUnSubscribeUsersByOpenid($openid)
  104. {
  105. return self::where(['openid' => $openid, 'is_subscribed' => 0])->get();
  106. }
  107. /**
  108. * 根据appid获取强关用户
  109. */
  110. static function forceSubscribeUsersByAppid($appid)
  111. {
  112. return self::where(['appid' => $appid, 'is_subscribed' => 1])->get();
  113. }
  114. /**
  115. * 根据appid获取强关用户数量
  116. */
  117. static function forceSubscribeUsersCountByAppid($appid)
  118. {
  119. return self::where(['appid' => $appid, 'is_subscribed' => 1])->count();
  120. }
  121. /*
  122. * 更新信息
  123. */
  124. static function updateInfo($params)
  125. {
  126. $openid = $params['openid'];
  127. $appid = $params['appid'];
  128. $distribution_channel_id = $params['distribution_channel_id'];
  129. unset($params['openid']);
  130. unset($params['appid']);
  131. unset($params['distribution_channel_id']);
  132. return self::where('openid',$openid)->where('appid',$appid)->where('distribution_channel_id',$distribution_channel_id)->update($params);
  133. }
  134. }