ForceSubscribeUsers.php 46 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262
  1. <?php
  2. namespace App\Modules\OfficialAccount\Models;
  3. use Illuminate\Database\Eloquent\Model;
  4. use App\Modules\OfficialAccount\Models\TempForceSubscribeUsers;
  5. use DB;
  6. class ForceSubscribeUsers extends Model
  7. {
  8. protected $tables = 'force_subscribe_users';
  9. protected $fillable = ['uid', 'official_account_id', 'distribution_channel_id', 'appid', 'openid', 'is_subscribed', 'subscribe_time', 'unsubscribe_time', 'last_interactive_time', 'bid', 'send_order_id'];
  10. /**
  11. * 根据openid和appid获取强关用户
  12. */
  13. static function forceSubscribeUsersByAppidAndOpenId($appid, $openid)
  14. {
  15. return self::where(['appid' => isset($appid) ? $appid : '', 'openid' => isset($openid) ? $openid : ''])->first();
  16. }
  17. /**
  18. * 获取所有强关用户
  19. */
  20. static function forceSubscribeUsersAllOf()
  21. {
  22. return self::where('is_subscribed', 1)->get();
  23. }
  24. /**
  25. * 修改公众号迁移用户数据
  26. */
  27. static function updateSubscribeUserTransfer($distribution_channel_id,$uid,$from_appid,$to_appid,$to_openid){
  28. 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')]);
  29. }
  30. /**
  31. * 根据uid获取强关用户
  32. */
  33. static function forceSubscribeUsersByUid($uid)
  34. {
  35. return self::where(['uid' => $uid, 'is_subscribed' => 1])->first();
  36. }
  37. /**
  38. * 根据distribution_channel_id获取强关用户
  39. */
  40. static function forceSubscribeUsersByChannelidAndTimeset($distribution_channel_id, $timeset)
  41. {
  42. $lastTime = date('Y-m-d H:i:s', time() - $timeset);
  43. return self::where(['distribution_channel_id' => $distribution_channel_id, 'is_subscribed' => 1])->where('last_interactive_time', '<', $lastTime)->get();
  44. }
  45. /**
  46. * 根据distribution_channel_id获取强关用户
  47. */
  48. static function forceSubscribeNewUsersByTimeset($distribution_channel_id, $timeset)
  49. {
  50. $lastTime = date('Y-m-d H:i:s', time() - $timeset);
  51. 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();
  52. // return self::where(['distribution_channel_id'=>$distribution_channel_id,'is_subscribed'=>1])->where('created_at','<',$lastTime)->get();
  53. }
  54. /**
  55. * 根据distribution_channel_id获取未付费的强关用户
  56. */
  57. static function forceSubscribeNewUnpaidUsersByTime($distribution_channel_id, $start_time,$end_time)
  58. {
  59. // return self::where('distribution_channel_id',$distribution_channel_id)
  60. // ->where('is_subscribed', 1)
  61. // ->where('created_at', '<', $end_time)
  62. // ->where('created_at', '>=', $start_time)
  63. // ->whereNotExists(function ($query) {
  64. // $query->select('uid')
  65. // ->from('orders')
  66. // ->where('orders.uid', '=', 'force_subscribe_users.uid') // TODO用框架这里有bug
  67. // ->where('orders.status', 'PAID')
  68. // ->limit(1);
  69. // })->skip(0)->take(20000)->get();
  70. $data = DB::select(
  71. "select force_subscribe_users.* from force_subscribe_users
  72. where distribution_channel_id = '{$distribution_channel_id}'
  73. and is_subscribed = 1
  74. and created_at < '{$end_time}'
  75. and created_at >= '{$start_time}'
  76. and not exists (select uid from orders where orders.uid=force_subscribe_users.uid and orders.status='PAID' limit 1 )
  77. limit 20000
  78. "
  79. );
  80. return object_to_array($data);
  81. }
  82. /**
  83. * 根据uid和appid获取强关用户
  84. */
  85. static function forceSubscribeUsersByUidAndAppidAndChannelId($uid, $appid, $distribution_channel_id)
  86. {
  87. $query = self::where(['uid' => $uid, 'distribution_channel_id' => $distribution_channel_id, 'is_subscribed' => 1]);
  88. $appidArray = explode(',', $appid);
  89. return $query->wherein('appid', $appidArray)->get();
  90. }
  91. /**
  92. * 根据uid获取强关用户包括取关的用户
  93. */
  94. static function forceSubscribeUsersByUidIncludeCancel($uid)
  95. {
  96. return self::where(['uid' => $uid])->first();
  97. }
  98. /**
  99. * 根据openid获取一个强关用户
  100. */
  101. static function forceSubscribeUsersByOpenid($openid, $appid = '')
  102. {
  103. return self::where(['openid' => $openid, 'is_subscribed' => 1])->first();
  104. }
  105. /**
  106. * openid获取强关用户
  107. */
  108. static function getOneForceSubscribeUsersByOpenid($openid)
  109. {
  110. return self::where('openid', $openid)->first();
  111. }
  112. /**
  113. * 根据openid获取所有强关用户
  114. */
  115. static function forceAllSubscribeUsersByOpenid($openid)
  116. {
  117. return self::where(['openid' => $openid, 'is_subscribed' => 1])->get();
  118. }
  119. /**
  120. * 根据openid获取强关用户
  121. */
  122. static function forceSubscribeUsersByOpenidAndAC($openid, $appid = '', $distribution_channel_id = '')
  123. {
  124. $query = self::where('openid', $openid);
  125. if ($appid) {
  126. # code...
  127. $query->where('appid', $appid);
  128. }
  129. if ($distribution_channel_id) {
  130. # code...
  131. $query->where('distribution_channel_id', $distribution_channel_id);
  132. }
  133. return $query->first();
  134. }
  135. /**
  136. * 根据渠道号和日期获取强关用户数量
  137. */
  138. static function forceSubscribeUserCountByChannelIdAndDate($distribution_channel_id, $startTime = '', $endTime = '')
  139. {
  140. $query = self::orderBy('id', 'desc');
  141. $distribution_channel_id && $query->where('distribution_channel_id', $distribution_channel_id);
  142. if ($startTime && $endTime) {
  143. $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));
  144. } elseif ($startTime) {
  145. # code...
  146. $end_time = date("Y-m-d",strtotime($startTime)+86400);
  147. //$query->whereDate('created_at', $startTime);
  148. $query->where('created_at', '>=',$startTime)->where('created_at', '<',$end_time);
  149. } elseif ($endTime) {
  150. # code...
  151. $end_time = date("Y-m-d",strtotime($endTime)+86400);
  152. //$query->whereDate('created_at', $endTime);
  153. $query->where('created_at', '>=',$endTime)->where('created_at', '<',$end_time);
  154. }
  155. return $query->count();
  156. }
  157. /**
  158. * 根据openid获取强关用户
  159. */
  160. static function forceSubscribeUsersByOpenidAndChannelId($openid, $distribution_channel_id)
  161. {
  162. return self::where(['openid' => $openid, 'distribution_channel_id' => $distribution_channel_id])->first();
  163. }
  164. /**
  165. * 根据openid获取一个取关用户
  166. */
  167. static function forceUnSubscribeUsersByOpenid($openid)
  168. {
  169. return self::where(['openid' => $openid, 'is_subscribed' => 0])->first();
  170. }
  171. /**
  172. * 根据openid获取全部取关用户
  173. */
  174. static function forceAllUnSubscribeUsersByOpenid($openid)
  175. {
  176. return self::where(['openid' => $openid, 'is_subscribed' => 0])->get();
  177. }
  178. /**
  179. * 根据appid获取强关用户
  180. */
  181. static function forceSubscribeUsersByAppid($appid)
  182. {
  183. return self::where(['appid' => $appid, 'is_subscribed' => 1])->get();
  184. }
  185. /**
  186. * 根据appid获取强关用户数量
  187. */
  188. static function forceSubscribeUsersCountByAppid($appid)
  189. {
  190. return self::where(['appid' => $appid, 'is_subscribed' => 1])->count();
  191. }
  192. /**
  193. * 根据appid获取今日新增粉丝数
  194. */
  195. static function todayForceSubscribeUsers($appid)
  196. {
  197. // dd($appid);
  198. // return 0;
  199. $subscribe_time = date("Y-m-d");
  200. $end_time = date("Y-m-d",strtotime($subscribe_time)+86400);
  201. //return self::where(['appid' => $appid, 'is_subscribed' => 1])->whereDate('subscribe_time', $subscribe_time)->count();
  202. return self::where(['appid' => $appid, 'is_subscribed' => 1])->where('subscribe_time', '>=',$subscribe_time)->where('subscribe_time', '<',$end_time)->count();
  203. }
  204. /**
  205. * 根据appid获取粉丝总数
  206. */
  207. static function allForceSubscribeUsers($appid)
  208. {
  209. return self::where(['appid' => $appid, 'is_subscribed' => 1])->count();
  210. }
  211. //获取推广带来的净关粉丝总数
  212. static function getFansNum($send_order_id)
  213. {
  214. return self::where('send_order_id', $send_order_id)->where('is_subscribed', 1)->count();
  215. }
  216. //获取推广带来的新关粉丝总数
  217. static function getNewFansNum($send_order_id)
  218. {
  219. return self::where('send_order_id', $send_order_id)->count();
  220. }
  221. //根据模板消息传的各项条件检索用户
  222. static function forceUserCountByTemplatePrams($appids, $distribution_channel_id, $subscribe_time = '', $sex = '', $balance = '', $category_id = '', $order_type = '', $skip = 0)
  223. {
  224. $query = self::leftJoin('users', 'users.id', '=', 'force_subscribe_users.uid')
  225. ->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',
  226. 'users.nickname');
  227. $query->where('force_subscribe_users.distribution_channel_id', $distribution_channel_id);
  228. $query->where('force_subscribe_users.is_subscribed', 1);
  229. $appidArray = explode(',', $appids);
  230. $query->wherein('force_subscribe_users.appid', $appidArray);
  231. if ($subscribe_time) {
  232. # code...
  233. switch ($subscribe_time) {
  234. case 'a':
  235. # code...
  236. $selTime = date('Y-m-d H:i:s', strtotime('-5 day'));
  237. $query->where('subscribe_time', '>', $selTime);
  238. break;
  239. case 'b':
  240. # code...
  241. $selTimeStart = date('Y-m-d H:i:s', strtotime('-5 day'));
  242. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-15 day'));
  243. $query->where('subscribe_time', '<=', $selTimeStart);
  244. $query->where('subscribe_time', '>', $selTimeEnd);
  245. break;
  246. case 'c':
  247. # code...
  248. $selTimeStart = date('Y-m-d H:i:s', strtotime('-15 day'));
  249. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-30 day'));
  250. $query->where('subscribe_time', '<=', $selTimeStart);
  251. $query->where('subscribe_time', '>', $selTimeEnd);
  252. break;
  253. case 'd':
  254. # code...
  255. $selTimeStart = date('Y-m-d H:i:s', strtotime('-30 day'));
  256. $query->where('subscribe_time', '<=', $selTimeStart);
  257. break;
  258. case 'e':
  259. # code...
  260. $selTimeStart = date('Y-m-d H:i:s', strtotime('-1 day'));
  261. $selTimeEnd = date('Y-m-d H:i:s');
  262. $query->where('subscribe_time', '<=', $selTimeEnd);
  263. $query->where('subscribe_time', '>', $selTimeStart);
  264. break;
  265. case 'f':
  266. # code...
  267. $selTimeStart = date('Y-m-d H:i:s', strtotime('-2 day'));
  268. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-1 day'));
  269. $query->where('subscribe_time', '<=', $selTimeEnd);
  270. $query->where('subscribe_time', '>', $selTimeStart);
  271. break;
  272. default:
  273. # code...
  274. break;
  275. }
  276. }
  277. if ($sex || $balance) {
  278. if ($sex) {
  279. # code...
  280. switch ($sex) {
  281. case 'a':
  282. # code...
  283. $query->where('users.sex', 1);
  284. break;
  285. case 'b':
  286. # code...
  287. $query->where('users.sex', 2);
  288. break;
  289. default:
  290. # code...
  291. break;
  292. }
  293. }
  294. if ($balance) {
  295. # code...
  296. switch ($balance) {
  297. case 'a':
  298. # code...
  299. $query->where('users.balance', '<', 500);
  300. break;
  301. case 'b':
  302. # code...
  303. $query->where('users.balance', '>=', 500);
  304. $query->where('users.balance', '<', 2000);
  305. break;
  306. case 'c':
  307. # code...
  308. $query->where('users.balance', '>=', 2000);
  309. $query->where('users.balance', '<', 5000);
  310. break;
  311. default:
  312. # code...
  313. break;
  314. }
  315. }
  316. }
  317. if ($category_id) {
  318. if ($category_id != 'z') {
  319. # code...
  320. $query->join('books', 'force_subscribe_users.bid', 'books.id');
  321. $categoryArray = explode(',', $category_id);
  322. $query->wherein('books.category_id', $categoryArray);
  323. // $query->where('books.category_id',$category_id);
  324. }
  325. }
  326. if ($order_type) {
  327. switch ($order_type) {
  328. case 'a':
  329. # code...
  330. //未消费用户
  331. $query->whereNotExists(function ($query) {
  332. $query->select(DB::raw(1))
  333. ->from('orders')
  334. ->whereRaw('orders.uid =force_subscribe_users.uid')
  335. ->whereRaw('orders.status="PAID"')
  336. ->limit(1);
  337. });
  338. break;
  339. case 'b':
  340. # code...
  341. //已消费用户
  342. $query->whereExists(function ($query) {
  343. $query->select(DB::raw(1))
  344. ->from('orders')
  345. ->whereRaw('orders.uid=force_subscribe_users.uid')
  346. ->whereRaw('orders.status="PAID"')
  347. ->limit(1);
  348. });
  349. break;
  350. case 'c':
  351. # code...
  352. //包年用户
  353. $query->whereExists(function ($query) {
  354. $query->select('uid')
  355. ->from('year_orders')
  356. ->whereRaw('year_orders.uid = force_subscribe_users.uid')
  357. ->where('year_orders.begin_time', '<', date('Y-m-d H:i:s'))
  358. ->where('year_orders.end_time', '>', date('Y-m-d H:i:s'))
  359. ->limit(1);
  360. });
  361. break;
  362. case 'd':
  363. # code...
  364. //昨天消费用户
  365. $query->whereExists(function ($query) {
  366. $query->select('uid')
  367. ->from('orders')
  368. ->whereRaw('orders.uid=force_subscribe_users.uid')
  369. ->whereRaw('orders.status="PAID"')
  370. ->where('orders.created_at', '>=',date('Y-m-d',strtotime('-1 day')))
  371. ->where('orders.created_at', '<',date('Y-m-d'))
  372. ->limit(1);
  373. });
  374. break;
  375. default:
  376. # code...
  377. break;
  378. }
  379. }
  380. // dd($query->get());
  381. return $query->skip($skip)->take(10000)->get();
  382. }
  383. //根据客服消息传的各项条件检索用户
  384. static function forceUserCountByCustomPrams($appids, $distribution_channel_id, $subscribe_time = '', $sex = '', $balance = '', $category_id = '', $order_type = '', $sign_time = '', $skip = 0)
  385. {
  386. $canSendDate = date('Y-m-d H:i:s', strtotime('-2 day'));
  387. # 缓存表
  388. $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',
  389. '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');
  390. $query->where('temp_force_subscribe_users.last_interactive_time', '>', $canSendDate);
  391. $query->where('temp_force_subscribe_users.distribution_channel_id', $distribution_channel_id);
  392. $query->where('temp_force_subscribe_users.is_subscribed', 1);
  393. $appidArray = explode(',', $appids);
  394. $query->wherein('temp_force_subscribe_users.appid', $appidArray);
  395. if ($subscribe_time) {
  396. # code...
  397. switch ($subscribe_time) {
  398. case 'a':
  399. # code...
  400. $selTime = date('Y-m-d H:i:s', strtotime('-5 day'));
  401. $query->where('subscribe_time', '>', $selTime);
  402. break;
  403. case 'b':
  404. # code...
  405. $selTimeStart = date('Y-m-d H:i:s', strtotime('-5 day'));
  406. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-15 day'));
  407. $query->where('subscribe_time', '<=', $selTimeStart);
  408. $query->where('subscribe_time', '>', $selTimeEnd);
  409. break;
  410. case 'c':
  411. # code...
  412. $selTimeStart = date('Y-m-d H:i:s', strtotime('-15 day'));
  413. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-30 day'));
  414. $query->where('subscribe_time', '<=', $selTimeStart);
  415. $query->where('subscribe_time', '>', $selTimeEnd);
  416. break;
  417. case 'd':
  418. # code...
  419. $selTimeStart = date('Y-m-d H:i:s', strtotime('-30 day'));
  420. $query->where('subscribe_time', '<=', $selTimeStart);
  421. break;
  422. case 'e':
  423. # code...
  424. $selTimeStart = date('Y-m-d H:i:s', strtotime('-1 day'));
  425. $selTimeEnd = date('Y-m-d H:i:s');
  426. $query->where('subscribe_time', '<=', $selTimeEnd);
  427. $query->where('subscribe_time', '>', $selTimeStart);
  428. break;
  429. case 'f':
  430. # code...
  431. $selTimeStart = date('Y-m-d H:i:s', strtotime('-2 day'));
  432. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-1 day'));
  433. $query->where('subscribe_time', '<=', $selTimeEnd);
  434. $query->where('subscribe_time', '>', $selTimeStart);
  435. break;
  436. case 'g':
  437. # 客服消息专用,24小时前的老用户,不发给新用户
  438. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-1 day'));
  439. $query->where('subscribe_time', '<=', $selTimeEnd);
  440. break;
  441. case 'h':
  442. // 关注10-25分钟之间
  443. $selTimeStart = date('Y-m-d H:i:s', strtotime('-25 min'));
  444. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-10 min'));
  445. $query->where('subscribe_time', '<=', $selTimeEnd);
  446. $query->where('subscribe_time', '>', $selTimeStart);
  447. break;
  448. case 'i':
  449. # 关注时间 36小时-48小时
  450. $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
  451. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-36 hour'));
  452. $query->where('subscribe_time', '<=', $selTimeEnd);
  453. $query->where('subscribe_time', '>', $selTimeStart);
  454. break;
  455. case 'j':
  456. # 关注时间 20小时-48小时
  457. $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
  458. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-20 hour'));
  459. $query->where('subscribe_time', '<=', $selTimeEnd);
  460. $query->where('subscribe_time', '>', $selTimeStart);
  461. break;
  462. case 'k':
  463. # 关注时间 42小时-48小时
  464. $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
  465. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-42 hour'));
  466. $query->where('subscribe_time', '<=', $selTimeEnd);
  467. $query->where('subscribe_time', '>', $selTimeStart);
  468. break;
  469. case 'l':
  470. # 关注时间 12小时-48小时
  471. $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
  472. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-12 hour'));
  473. $query->where('subscribe_time', '<=', $selTimeEnd);
  474. $query->where('subscribe_time', '>', $selTimeStart);
  475. break;
  476. default:
  477. # code...
  478. break;
  479. }
  480. }
  481. if ($sex || $balance) {
  482. # code...
  483. $query->join('users', 'temp_force_subscribe_users.uid', '=', 'users.id');
  484. if ($sex) {
  485. # code...
  486. switch ($sex) {
  487. case 'a':
  488. # code...
  489. $query->where('users.sex', 1);
  490. break;
  491. case 'b':
  492. # code...
  493. $query->where('users.sex', 2);
  494. break;
  495. default:
  496. # code...
  497. break;
  498. }
  499. }
  500. if ($balance) {
  501. # code...
  502. switch ($balance) {
  503. case 'a':
  504. # code...
  505. $query->where('users.balance', '<', 500);
  506. break;
  507. case 'b':
  508. # code...
  509. $query->where('users.balance', '>=', 500);
  510. $query->where('users.balance', '<', 2000);
  511. break;
  512. case 'c':
  513. # code...
  514. $query->where('users.balance', '>=', 2000);
  515. $query->where('users.balance', '<', 5000);
  516. break;
  517. default:
  518. # code...
  519. break;
  520. }
  521. }
  522. }
  523. if ($category_id) {
  524. if ($category_id != 'z') {
  525. # code...
  526. $query->join('books', 'temp_force_subscribe_users.bid', 'books.id');
  527. $categoryArray = explode(',', $category_id);
  528. $query->wherein('books.category_id', $categoryArray);
  529. // $query->where('books.category_id',$category_id);
  530. }
  531. }
  532. if ($order_type) {
  533. switch ($order_type) {
  534. case 'a':
  535. # code...
  536. //未消费用户
  537. $query->whereNotExists(function ($query) {
  538. $query->select(DB::raw(1))
  539. ->from('orders')
  540. ->whereRaw('orders.uid =temp_force_subscribe_users.uid')
  541. ->whereRaw('orders.status="PAID"')
  542. ->limit(1);
  543. });
  544. break;
  545. case 'b':
  546. # code...
  547. //已消费用户
  548. $query->whereExists(function ($query) {
  549. $query->select(DB::raw(1))
  550. ->from('orders')
  551. ->whereRaw('orders.uid =temp_force_subscribe_users.uid')
  552. ->whereRaw('orders.status="PAID"')
  553. ->limit(1);
  554. });
  555. break;
  556. case 'c':
  557. # code...
  558. //包年用户
  559. $query->whereExists(function ($query) {
  560. $query->select(DB::raw(1))
  561. ->from('year_orders')
  562. ->whereRaw('year_orders.uid = temp_force_subscribe_users.uid')
  563. ->where('year_orders.begin_time', '<', date('Y-m-d H:i:s'))
  564. ->where('year_orders.end_time', '>', date('Y-m-d H:i:s'))
  565. ->limit(1);
  566. });
  567. break;
  568. case 'd':
  569. # code...
  570. //6-13小时之间有过订阅记录
  571. $query->whereExists(function ($query) {
  572. $query->select(DB::raw(1))
  573. ->from('orders')
  574. ->whereRaw('orders.uid =temp_force_subscribe_users.uid')
  575. ->whereRaw('orders.status="PAID"')
  576. ->where('orders.created_at','>',date('Y-m-d H:i:s', strtotime('-13 hour')))
  577. ->where('orders.created_at','<=',date('Y-m-d H:i:s', strtotime('-6 hour')))
  578. ->limit(1);
  579. });
  580. break;
  581. default:
  582. # code...
  583. break;
  584. }
  585. }
  586. if ($sign_time) {
  587. switch ($sign_time) {
  588. case 'a':
  589. //签到 60-90分钟内
  590. $query->whereExists(function ($query) {
  591. $query->select(DB::raw(1))
  592. ->from('user_sign')
  593. ->whereRaw('user_sign.uid =temp_force_subscribe_users.uid')
  594. ->where('user_sign.sign_time', '<', (microtime(true) - 60*60))
  595. ->where('user_sign.sign_time', '>', (microtime(true) - 60*90))
  596. ->limit(1);
  597. });
  598. break;
  599. default:
  600. break;
  601. }
  602. }
  603. // 单次获取1w,改动此数值,必须更改CustomMsgService下SmartPush方法内对应数值
  604. return $query->skip($skip)->take(10000)->get();
  605. }
  606. //指定强关用户获取
  607. static function simpleForceUserCountByPrams($uids, $param=[],$skip = 0)
  608. {
  609. $query = ForceSubscribeUsers::leftjoin('wechat_templates','wechat_templates.appid','force_subscribe_users.appid');
  610. $query->select('force_subscribe_users.id', 'force_subscribe_users.uid', 'force_subscribe_users.distribution_channel_id', 'force_subscribe_users.appid', 'force_subscribe_users.openid',
  611. 'force_subscribe_users.is_subscribed', 'force_subscribe_users.subscribe_time','force_subscribe_users.unsubscribe_time', 'force_subscribe_users.last_interactive_time',
  612. 'force_subscribe_users.bid','wechat_templates.template_id');
  613. $query->where('force_subscribe_users.subscribe_time', '>=','2018-11-15');
  614. $query->where('force_subscribe_users.is_subscribed', 1);
  615. $query->wherein('force_subscribe_users.uid', $uids);
  616. $subscribe_time = isset($param['subscribe_time'])?$param['subscribe_time']:'z';
  617. $category_id = isset($param['category_id'])?$param['category_id']:'z';
  618. $sex = isset($param['sex'])?$param['sex']:'';// 不区分
  619. $balance = isset($param['balance'])?$param['balance']:'';
  620. $order_type = isset($param['order_type'])?$param['order_type']:'z';
  621. $sign_time = isset($param['sign_time'])?$param['sign_time']:'z';
  622. $common_template_id = isset($param['common_template_id'])?$param['common_template_id']:'';
  623. if($common_template_id){
  624. $query->where('wechat_templates.common_template_id', $common_template_id);
  625. // $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'));
  626. }
  627. if ($subscribe_time) {
  628. # code...
  629. switch ($subscribe_time) {
  630. case 'a':
  631. # code...
  632. $selTime = date('Y-m-d H:i:s', strtotime('-5 day'));
  633. $query->where('subscribe_time', '>', $selTime);
  634. break;
  635. case 'b':
  636. # code...
  637. $selTimeStart = date('Y-m-d H:i:s', strtotime('-5 day'));
  638. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-15 day'));
  639. $query->where('subscribe_time', '<=', $selTimeStart);
  640. $query->where('subscribe_time', '>', $selTimeEnd);
  641. break;
  642. case 'c':
  643. # code...
  644. $selTimeStart = date('Y-m-d H:i:s', strtotime('-15 day'));
  645. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-30 day'));
  646. $query->where('subscribe_time', '<=', $selTimeStart);
  647. $query->where('subscribe_time', '>', $selTimeEnd);
  648. break;
  649. case 'd':
  650. # code...
  651. $selTimeStart = date('Y-m-d H:i:s', strtotime('-30 day'));
  652. $query->where('subscribe_time', '<=', $selTimeStart);
  653. break;
  654. case 'e':
  655. # code...
  656. $selTimeStart = date('Y-m-d H:i:s', strtotime('-1 day'));
  657. $selTimeEnd = date('Y-m-d H:i:s');
  658. $query->where('subscribe_time', '<=', $selTimeEnd);
  659. $query->where('subscribe_time', '>', $selTimeStart);
  660. break;
  661. case 'f':
  662. # code...
  663. $selTimeStart = date('Y-m-d H:i:s', strtotime('-2 day'));
  664. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-1 day'));
  665. $query->where('subscribe_time', '<=', $selTimeEnd);
  666. $query->where('subscribe_time', '>', $selTimeStart);
  667. break;
  668. case 'g':
  669. # 客服消息专用,24小时前的老用户,不发给新用户
  670. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-1 day'));
  671. $query->where('subscribe_time', '<=', $selTimeEnd);
  672. break;
  673. case 'h':
  674. // 关注10-25分钟之间
  675. $selTimeStart = date('Y-m-d H:i:s', strtotime('-25 min'));
  676. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-10 min'));
  677. $query->where('subscribe_time', '<=', $selTimeEnd);
  678. $query->where('subscribe_time', '>', $selTimeStart);
  679. break;
  680. case 'i':
  681. # 关注时间 36小时-48小时
  682. $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
  683. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-36 hour'));
  684. $query->where('subscribe_time', '<=', $selTimeEnd);
  685. $query->where('subscribe_time', '>', $selTimeStart);
  686. break;
  687. case 'j':
  688. # 关注时间 20小时-48小时
  689. $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
  690. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-20 hour'));
  691. $query->where('subscribe_time', '<=', $selTimeEnd);
  692. $query->where('subscribe_time', '>', $selTimeStart);
  693. break;
  694. case 'k':
  695. # 关注时间 42小时-48小时
  696. $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
  697. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-42 hour'));
  698. $query->where('subscribe_time', '<=', $selTimeEnd);
  699. $query->where('subscribe_time', '>', $selTimeStart);
  700. break;
  701. case 'l':
  702. # 关注时间 12小时-48小时
  703. $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
  704. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-12 hour'));
  705. $query->where('subscribe_time', '<=', $selTimeEnd);
  706. $query->where('subscribe_time', '>', $selTimeStart);
  707. break;
  708. case 'm':
  709. # 关注时间 60小时-80小时
  710. $selTimeStart = date('Y-m-d H:i:s', strtotime('-80 hour'));
  711. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-60 hour'));
  712. $query->where('subscribe_time', '<=', $selTimeEnd);
  713. $query->where('subscribe_time', '>', $selTimeStart);
  714. break;
  715. default:
  716. # code...
  717. break;
  718. }
  719. }
  720. if ($sex || $balance) {
  721. # code...
  722. $query->join('users', 'force_subscribe_users.uid', '=', 'users.id');
  723. if ($sex) {
  724. # code...
  725. switch ($sex) {
  726. case 'a':
  727. # code...
  728. $query->where('users.sex', 1);
  729. break;
  730. case 'b':
  731. # code...
  732. $query->where('users.sex', 2);
  733. break;
  734. default:
  735. # code...
  736. break;
  737. }
  738. }
  739. if ($balance) {
  740. # code...
  741. switch ($balance) {
  742. case 'a':
  743. # code...
  744. $query->where('users.balance', '<', 500);
  745. break;
  746. case 'b':
  747. # code...
  748. $query->where('users.balance', '>=', 500);
  749. $query->where('users.balance', '<', 2000);
  750. break;
  751. case 'c':
  752. # code...
  753. $query->where('users.balance', '>=', 2000);
  754. $query->where('users.balance', '<', 5000);
  755. break;
  756. default:
  757. # code...
  758. break;
  759. }
  760. }
  761. }
  762. if ($category_id) {
  763. if ($category_id != 'z') {
  764. # code...
  765. $query->join('books', 'force_subscribe_users.bid', 'books.id');
  766. $categoryArray = explode(',', $category_id);
  767. $query->wherein('books.category_id', $categoryArray);
  768. // $query->where('books.category_id',$category_id);
  769. }
  770. }
  771. if ($order_type) {
  772. switch ($order_type) {
  773. case 'a':
  774. # code...
  775. //未消费用户
  776. $query->whereNotExists(function ($query) {
  777. $query->select(DB::raw(1))
  778. ->from('orders')
  779. ->whereRaw('orders.uid =force_subscribe_users.uid')
  780. ->whereRaw('orders.status="PAID"')
  781. ->limit(1);
  782. });
  783. break;
  784. case 'b':
  785. # code...
  786. //已消费用户
  787. $query->whereExists(function ($query) {
  788. $query->select(DB::raw(1))
  789. ->from('orders')
  790. ->whereRaw('orders.uid =force_subscribe_users.uid')
  791. ->whereRaw('orders.status="PAID"')
  792. ->limit(1);
  793. });
  794. break;
  795. case 'c':
  796. # code...
  797. //包年用户
  798. $query->whereExists(function ($query) {
  799. $query->select(DB::raw(1))
  800. ->from('year_orders')
  801. ->whereRaw('year_orders.uid = force_subscribe_users.uid')
  802. ->where('year_orders.begin_time', '<', date('Y-m-d H:i:s'))
  803. ->where('year_orders.end_time', '>', date('Y-m-d H:i:s'))
  804. ->limit(1);
  805. });
  806. break;
  807. default:
  808. # code...
  809. break;
  810. }
  811. }
  812. if ($sign_time) {
  813. switch ($sign_time) {
  814. case 'a':
  815. //签到 60-90分钟内
  816. $query->whereExists(function ($query) {
  817. $query->select(DB::raw(1))
  818. ->from('user_sign')
  819. ->whereRaw('user_sign.uid =force_subscribe_users.uid')
  820. ->where('user_sign.sign_time', '<', (microtime(true) - 60*60))
  821. ->where('user_sign.sign_time', '>', (microtime(true) - 60*90))
  822. ->limit(1);
  823. });
  824. break;
  825. default:
  826. break;
  827. }
  828. }
  829. // 单次获取1w,改动此数值,必须更改CustomMsgService下SmartPush方法内对应数值
  830. return $query->skip($skip)->take(10000)->get();
  831. }
  832. //根据客服消息传的各项条件检索用户--老版
  833. static function forceUserCountByCustomPrams2($appids, $distribution_channel_id, $subscribe_time = '', $sex = '', $balance = '', $category_id = '', $order_type = '', $sign_time = '', $skip = 0)
  834. {
  835. $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');
  836. $query->where('force_subscribe_users.distribution_channel_id', $distribution_channel_id);
  837. $query->where('force_subscribe_users.is_subscribed', 1);
  838. $appidArray = explode(',', $appids);
  839. $query->wherein('force_subscribe_users.appid', $appidArray);
  840. $canSendDate = date('Y-m-d H:i:s', strtotime('-2 day'));
  841. $query->where('force_subscribe_users.last_interactive_time', '>', $canSendDate);
  842. if ($subscribe_time) {
  843. # code...
  844. switch ($subscribe_time) {
  845. case 'a':
  846. # code...
  847. $selTime = date('Y-m-d H:i:s', strtotime('-5 day'));
  848. $query->where('subscribe_time', '>', $selTime);
  849. break;
  850. case 'b':
  851. # code...
  852. $selTimeStart = date('Y-m-d H:i:s', strtotime('-5 day'));
  853. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-15 day'));
  854. $query->where('subscribe_time', '<=', $selTimeStart);
  855. $query->where('subscribe_time', '>', $selTimeEnd);
  856. break;
  857. case 'c':
  858. # code...
  859. $selTimeStart = date('Y-m-d H:i:s', strtotime('-15 day'));
  860. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-30 day'));
  861. $query->where('subscribe_time', '<=', $selTimeStart);
  862. $query->where('subscribe_time', '>', $selTimeEnd);
  863. break;
  864. case 'd':
  865. # code...
  866. $selTimeStart = date('Y-m-d H:i:s', strtotime('-30 day'));
  867. $query->where('subscribe_time', '<=', $selTimeStart);
  868. break;
  869. case 'e':
  870. # code...
  871. $selTimeStart = date('Y-m-d H:i:s', strtotime('-1 day'));
  872. $selTimeEnd = date('Y-m-d H:i:s');
  873. $query->where('subscribe_time', '<=', $selTimeEnd);
  874. $query->where('subscribe_time', '>', $selTimeStart);
  875. break;
  876. case 'f':
  877. # code...
  878. $selTimeStart = date('Y-m-d H:i:s', strtotime('-2 day'));
  879. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-1 day'));
  880. $query->where('subscribe_time', '<=', $selTimeEnd);
  881. $query->where('subscribe_time', '>', $selTimeStart);
  882. break;
  883. case 'g':
  884. # 客服消息专用,24小时前的老用户,不发给新用户
  885. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-1 day'));
  886. $query->where('subscribe_time', '<=', $selTimeEnd);
  887. break;
  888. case 'h':
  889. // 关注10-25分钟之间
  890. $selTimeStart = date('Y-m-d H:i:s', strtotime('-25 min'));
  891. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-10 min'));
  892. $query->where('subscribe_time', '<=', $selTimeEnd);
  893. $query->where('subscribe_time', '>', $selTimeStart);
  894. break;
  895. case 'i':
  896. # 关注时间 36小时-48小时
  897. $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
  898. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-36 hour'));
  899. $query->where('subscribe_time', '<=', $selTimeEnd);
  900. $query->where('subscribe_time', '>', $selTimeStart);
  901. break;
  902. case 'j':
  903. # 关注时间 20小时-48小时
  904. $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
  905. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-20 hour'));
  906. $query->where('subscribe_time', '<=', $selTimeEnd);
  907. $query->where('subscribe_time', '>', $selTimeStart);
  908. break;
  909. case 'k':
  910. # 关注时间 42小时-48小时
  911. $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
  912. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-42 hour'));
  913. $query->where('subscribe_time', '<=', $selTimeEnd);
  914. $query->where('subscribe_time', '>', $selTimeStart);
  915. break;
  916. case 'l':
  917. # 关注时间 12小时-48小时
  918. $selTimeStart = date('Y-m-d H:i:s', strtotime('-48 hour'));
  919. $selTimeEnd = date('Y-m-d H:i:s', strtotime('-12 hour'));
  920. $query->where('subscribe_time', '<=', $selTimeEnd);
  921. $query->where('subscribe_time', '>', $selTimeStart);
  922. break;
  923. default:
  924. # code...
  925. break;
  926. }
  927. }
  928. if ($sex || $balance) {
  929. # code...
  930. $query->join('users', 'force_subscribe_users.uid', '=', 'users.id');
  931. if ($sex) {
  932. # code...
  933. switch ($sex) {
  934. case 'a':
  935. # code...
  936. $query->where('users.sex', 1);
  937. break;
  938. case 'b':
  939. # code...
  940. $query->where('users.sex', 2);
  941. break;
  942. default:
  943. # code...
  944. break;
  945. }
  946. }
  947. if ($balance) {
  948. # code...
  949. switch ($balance) {
  950. case 'a':
  951. # code...
  952. $query->where('users.balance', '<', 500);
  953. break;
  954. case 'b':
  955. # code...
  956. $query->where('users.balance', '>=', 500);
  957. $query->where('users.balance', '<', 2000);
  958. break;
  959. case 'c':
  960. # code...
  961. $query->where('users.balance', '>=', 2000);
  962. $query->where('users.balance', '<', 5000);
  963. break;
  964. default:
  965. # code...
  966. break;
  967. }
  968. }
  969. }
  970. if ($category_id) {
  971. if ($category_id != 'z') {
  972. # code...
  973. $query->join('books', 'force_subscribe_users.bid', 'books.id');
  974. $categoryArray = explode(',', $category_id);
  975. $query->wherein('books.category_id', $categoryArray);
  976. // $query->where('books.category_id',$category_id);
  977. }
  978. }
  979. if ($order_type) {
  980. switch ($order_type) {
  981. case 'a':
  982. # code...
  983. //未消费用户
  984. $query->whereNotExists(function ($query) {
  985. $query->select(DB::raw(1))
  986. ->from('orders')
  987. ->whereRaw('orders.uid =force_subscribe_users.uid')
  988. ->whereRaw('orders.status="PAID"')
  989. ->limit(1);
  990. });
  991. break;
  992. case 'b':
  993. # code...
  994. //已消费用户
  995. $query->whereExists(function ($query) {
  996. $query->select(DB::raw(1))
  997. ->from('orders')
  998. ->whereRaw('orders.uid =force_subscribe_users.uid')
  999. ->whereRaw('orders.status="PAID"')
  1000. ->limit(1);
  1001. });
  1002. break;
  1003. case 'c':
  1004. # code...
  1005. //包年用户
  1006. $query->whereExists(function ($query) {
  1007. $query->select(DB::raw(1))
  1008. ->from('year_orders')
  1009. ->whereRaw('year_orders.uid = force_subscribe_users.uid')
  1010. ->where('year_orders.begin_time', '<', date('Y-m-d H:i:s'))
  1011. ->where('year_orders.end_time', '>', date('Y-m-d H:i:s'))
  1012. ->limit(1);
  1013. });
  1014. break;
  1015. default:
  1016. # code...
  1017. break;
  1018. }
  1019. }
  1020. if ($sign_time) {
  1021. switch ($sign_time) {
  1022. case 'a':
  1023. //签到 60-90分钟内
  1024. $query->whereExists(function ($query) {
  1025. $query->select(DB::raw(1))
  1026. ->from('user_sign')
  1027. ->whereRaw('user_sign.uid =force_subscribe_users.uid')
  1028. ->where('user_sign.sign_time', '<', (microtime(true) - 60*60))
  1029. ->where('user_sign.sign_time', '>', (microtime(true) - 60*90))
  1030. ->limit(1);
  1031. });
  1032. break;
  1033. default:
  1034. break;
  1035. }
  1036. }
  1037. // 单次获取1w,改动此数值,必须更改CustomMsgService下SmartPush方法内对应数值
  1038. return $query->skip($skip)->take(10000)->get();
  1039. }
  1040. /**
  1041. * 通过uid获取用户关注的服务号名称
  1042. * @param $uid
  1043. * @return mixed
  1044. */
  1045. static function getOfficalAccountNickName($uid)
  1046. {
  1047. $search_obj = self::select('official_accounts.nickname')->leftjoin('official_accounts', 'force_subscribe_users.appid', '=', 'official_accounts.appid')->where('force_subscribe_users.uid', $uid);
  1048. return $search_obj->first();
  1049. }
  1050. /**
  1051. * 根据openid获取用户的性别信息
  1052. * @param unknown_type $distribution_channel_id
  1053. * @param unknown_type $openid
  1054. */
  1055. static function getSexByOpenid($distribution_channel_id,$openid){
  1056. $sex = self::join('books','force_subscribe_users.bid','books.id')
  1057. ->join('book_categories', 'books.category_id', 'book_categories.id')
  1058. ->select('book_categories.channel_name','force_subscribe_users.bid')
  1059. ->where('force_subscribe_users.openid',$openid)
  1060. ->where('force_subscribe_users.distribution_channel_id',$distribution_channel_id)
  1061. ->first();
  1062. \Log::info('getSexByOpenid:'.$openid.' sex:'.json_encode($sex));
  1063. if(isset($sex->channel_name) && $sex->channel_name){
  1064. if($sex->channel_name == '男频'){
  1065. return 1;
  1066. }
  1067. return 2;
  1068. }else{
  1069. // 判断用户性别
  1070. $user = self::join('users','force_subscribe_users.uid','users.id')
  1071. ->select('users.sex')
  1072. ->where('force_subscribe_users.openid',$openid)
  1073. ->where('force_subscribe_users.distribution_channel_id',$distribution_channel_id)
  1074. ->first();
  1075. \Log::info('getSexByOpenid_user_openid:'.$openid.' sex:'.json_encode($user));
  1076. if(isset($user->sex) && $user->sex == 1){
  1077. \Log::info('getSexByOpenid_by_user_sex:'.$user->sex);
  1078. return 1;
  1079. }
  1080. return 2;
  1081. }
  1082. }
  1083. /**
  1084. * 根据openid获取用户的性别信息--无需判断性别
  1085. */
  1086. static function getSimpleSexByOpenid($distribution_channel_id,$openid){
  1087. $sex = self::join('books','force_subscribe_users.bid','books.id')
  1088. ->join('book_categories', 'books.category_id', 'book_categories.id')
  1089. ->select('book_categories.channel_name','force_subscribe_users.bid')
  1090. ->where('force_subscribe_users.openid',$openid)
  1091. ->where('force_subscribe_users.distribution_channel_id',$distribution_channel_id)
  1092. ->first();
  1093. \Log::info('getSimpleSexByOpenid:'.$openid.' sex:'.json_encode($sex));
  1094. if(isset($sex->channel_name) && $sex->channel_name){
  1095. if($sex->channel_name == '男频'){
  1096. return 1;
  1097. }
  1098. }
  1099. return 2;
  1100. }
  1101. /**
  1102. * 根据uid获取用户的性别信息--无需判断性别
  1103. */
  1104. static function getSimpleSexByUid($uid){
  1105. if($uid == 0){
  1106. return 2;
  1107. }
  1108. $sex = self::join('books','force_subscribe_users.bid','books.id')
  1109. ->join('book_categories', 'books.category_id', 'book_categories.id')
  1110. ->select('book_categories.channel_name','force_subscribe_users.bid')
  1111. ->where('force_subscribe_users.uid',$uid)
  1112. ->first();
  1113. \Log::info('getSimpleSexByUid:'.$uid.' sex:'.json_encode($sex));
  1114. if(isset($sex->channel_name) && $sex->channel_name){
  1115. if($sex->channel_name == '男频'){
  1116. return 1;
  1117. }
  1118. }
  1119. return 2;
  1120. }
  1121. }