CoflController.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615
  1. <?php
  2. namespace App\Http\Controllers\Wap\User;
  3. use App\Modules\Activity\Services\ActivityService;
  4. use App\Modules\Book\Services\BookConfigService;
  5. use App\Modules\Channel\Models\Channel;
  6. use App\Modules\Subscribe\Models\BookOrder;
  7. use App\Modules\Subscribe\Models\YearOrder;
  8. use App\Modules\Subscribe\Services\YearOrderService;
  9. use App\Modules\User\Models\User;
  10. use App\Modules\User\Services\ReadRecordService;
  11. use App\Modules\User\Services\UserBindHkWelfareService;
  12. use App\Modules\User\Services\UserService;
  13. use Illuminate\Http\Request;
  14. use App\Http\Controllers\Controller;
  15. use Hashids;
  16. use EasyWeChat\Foundation\Application;
  17. use Log;
  18. use Exception;
  19. use Redis;
  20. use Cookie;
  21. use DB;
  22. /**
  23. * 朋友圈链接
  24. * Class CoflController
  25. * @package App\Http\Controllers\Wap\User
  26. */
  27. class CoflController extends Controller
  28. {
  29. public function index(Request $request){
  30. $bid = $request->get('bid');
  31. if(empty($bid)){
  32. $default_ink = $this->getLink();
  33. return redirect()->to($default_ink);
  34. }
  35. $openid = $request->get('openid');
  36. //授权
  37. $params = $request->except('_url');
  38. if(empty($openid)){
  39. //$url = str_replace('http://', env('PROTOCOL') . '://', url()->current() . '?' . http_build_query($params));
  40. $url = url()->current() . '?' . http_build_query($params);
  41. $params['redirect_url'] = urlencode($url);
  42. $app = new Application($this->auth($params));
  43. return $app->oauth->redirect();
  44. }
  45. try{
  46. $bid = Hashids::decode($bid)[0];
  47. }catch (Exception $e){
  48. return redirect()->to($this->getLink());
  49. }
  50. $crm = $request->get('crm');
  51. //获取用户
  52. //$user = $this->getUsers($openid);
  53. $test_param = $request->input('test',0);
  54. //if($test_param ==1 || $test_param =='1' ) {
  55. $user = $this->getUsersV2($openid);
  56. //}
  57. if(!$user[0]){
  58. $user[1] = 123;
  59. }
  60. //有阅读纪录的跳转
  61. $read_record = ReadRecordService::getByField($user[0],$bid);
  62. if($read_record){
  63. $cid = explode('_',$read_record)[0];
  64. }else{
  65. //没有阅读记录的跳转
  66. $book_info = BookConfigService::getBookById($bid);
  67. $cid = $book_info->first_cid;
  68. }
  69. $params['cid'] = $cid;
  70. if(isset($params['openid'])) unset($params['openid']);
  71. if(isset($params['unionid'])) unset($params['unionid']);
  72. $url = $this->getLink($user[1]).'reader?'.http_build_query($params);
  73. $this->stats('book',$crm);
  74. $this->statsDetail($user[0],'book',$bid);
  75. return redirect()->to($url);
  76. }
  77. public function freeCurrencyView(Request $request){
  78. $openid = $request->get('openid');
  79. //授权
  80. $params = $request->except('_url');
  81. if(empty($openid)){
  82. //$url = str_replace('http://', env('PROTOCOL') . '://', url()->current() . '?' . http_build_query($params));
  83. $url = url()->current() . '?' . http_build_query($params);
  84. $params['redirect_url'] = urlencode($url);
  85. $app = new Application($this->auth($params));
  86. return $app->oauth->redirect();
  87. }
  88. $uri = $request->path();
  89. $token = $request->get('token');
  90. $rfee = $request->get('amount');
  91. $crm = $request->get('crm','reward');
  92. $source = $request->get('wx','none');
  93. $type = 'CRM';
  94. if($uri == 'freethrhcurrency'){
  95. $fee = 300;
  96. $this->stats('reward_300',$crm);
  97. }elseif($uri == 'wfreecurrency'){
  98. $fee = 200;
  99. $type = 'WCRM';
  100. }elseif ($uri == 'frocefreethrhcurrency'){
  101. $fee = 200;
  102. $type = 'CRM_FORCE';
  103. }
  104. else{
  105. $this->stats('reward_200',$crm);
  106. $fee = $this->freeCurrencyFee($token,$rfee);
  107. }
  108. //$user = $this->getUsers($openid);
  109. $user = $this->getUsersV2($openid);
  110. if(!$user || !$user[0] || !$user[1]) return redirect()->to($this->getLink().'?'.http_build_query($params));
  111. if($type == 'CRM'){
  112. $this->statsDetail($user[0],'reward',0);
  113. }elseif ($type == 'CRM_FORCE'){
  114. $this->statsDetail($user[0],'forcereward',0);
  115. } else{
  116. $this->statsDetail($user[0],'wreward',0);
  117. }
  118. $get_free_currency = UserBindHkWelfareService::isHasGet($user[0]);
  119. if($get_free_currency){
  120. //已经领过
  121. if(isset($user[2]) && !empty($user[2]) && isset($user[3]) && !empty($user[3])){
  122. $bid = Hashids::encode($user[2]);
  123. $cid = $user[3];
  124. $params['bid'] = $bid;
  125. $params['cid'] = $cid;
  126. $link = $this->getLink($get_free_currency->distribution_channel_id).'reader?'.http_build_query($params);
  127. }else{
  128. $link = $this->getLink($get_free_currency->distribution_channel_id).'?'.http_build_query($params);
  129. }
  130. return view('jump.bindHkFreeCurrency',['fee'=>$fee,'url'=>$link,'is_get'=>1,'uid'=>$get_free_currency->uid,'source'=>$source]);
  131. }else{
  132. if(isset($user[2]) && !empty($user[2]) && isset($user[3]) && !empty($user[3])){
  133. $bid = Hashids::encode($user[2]);
  134. $cid = $user[3];
  135. $params['bid'] = $bid;
  136. $params['cid'] = $cid;
  137. $link = $this->getLink($user[1]).'reader?'.http_build_query($params);
  138. }else{
  139. $link = $this->getLink($user[1]).'?'.http_build_query($params);
  140. }
  141. $this->getReward($user[0],$fee,$source,$type);
  142. return view('jump.bindHkFreeCurrency',['fee'=>$fee,'url'=>$link,'is_get'=>0,'uid'=>$user[0],'source'=>$source]);
  143. }
  144. }
  145. private function freeCurrencyFee($token,$fee){
  146. if(!$token || !$fee) return 200;
  147. $param['fee'] = $fee;
  148. if( _sign($param,env('SECRET_KEY')) == $token) return $fee;
  149. return 200;
  150. }
  151. public function freeCurrencyPost(Request $request){
  152. $uid = $request->post('uid');
  153. $fee = $request->post('fee',200);
  154. $source = $request->post('source','');
  155. $result = UserBindHkWelfareService::getfreeCurrency($uid,$fee,'CRM',$source);
  156. if($result){
  157. UserService::addBalance($uid,$fee,0,$fee);
  158. }
  159. return response()->success(['uid'=>$uid,'result'=>$result]);
  160. }
  161. private function getReward($uid,$fee,$source,$crm='CRM'){
  162. $result = UserBindHkWelfareService::getfreeCurrency($uid,$fee,$crm,$source);
  163. if($result){
  164. UserService::addBalance($uid,$fee,0,$fee);
  165. }
  166. }
  167. public function activity(Request $request){
  168. $token = $request->get('token');
  169. if(empty($token)){
  170. $default_ink = $this->getLink();
  171. return redirect()->to($default_ink);
  172. }
  173. $openid = $request->get('openid');
  174. //授权
  175. $params = $request->except('_url');
  176. if(empty($openid)){
  177. $url = url()->current() . '?' . http_build_query($params);
  178. $params['redirect_url'] = urlencode($url);
  179. $app = new Application($this->auth($params));
  180. return $app->oauth->redirect();
  181. }
  182. $crm = $request->get('crm');
  183. $this->stats('activity',$crm);
  184. $activity = ActivityService::getByToken($token);
  185. if($activity){
  186. $user = $this->getUsers($openid);
  187. $distribution_channel_id = (isset($user[1]) && !empty($user[1]))?$user[1]:123;
  188. $url_format = '%s://site%s.%s.com%s';
  189. $activity_page = $activity->activity_page ;
  190. if($activity->id == 6000){
  191. $activity_page = '/activity/common?token=LNyAqbFMgvkmvnHP8PXV3DYPIIhQm3oe';
  192. }
  193. $url = sprintf($url_format, env('PROTOCOL'), encodeDistributionChannelId($distribution_channel_id),
  194. env('CUSTOM_HOST'),
  195. $activity_page
  196. );
  197. return redirect()->to($url);
  198. }
  199. $default_ink = $this->getLink();
  200. return redirect()->to($default_ink);
  201. }
  202. public function recent(Request $request){
  203. $openid = $request->get('openid');
  204. //授权
  205. $params = $request->except('_url');
  206. if(empty($openid)){
  207. $url = url()->current() . '?' . http_build_query($params);
  208. $params['redirect_url'] = urlencode($url);
  209. $app = new Application($this->auth($params));
  210. return $app->oauth->redirect();
  211. }
  212. $user = $this->getUsers($openid);
  213. if(!$user[0]){
  214. $distribution_channel_id = 123;
  215. }else{
  216. $distribution_channel_id = $user[1];
  217. }
  218. $crm = $request->get('crm');
  219. $this->stats('recent',$crm);
  220. $this->statsDetail($user[0],'recent',0);
  221. $link = $this->getLink($distribution_channel_id).'recent?'.http_build_query($params);
  222. return redirect()->to($link);
  223. }
  224. public function person(Request $request){
  225. $openid = $request->get('openid');
  226. //授权
  227. $params = $request->except('_url');
  228. if(empty($openid)){
  229. $url = url()->current() . '?' . http_build_query($params);
  230. $params['redirect_url'] = urlencode($url);
  231. $app = new Application($this->auth($params));
  232. return $app->oauth->redirect();
  233. }
  234. $user = $this->getUsers($openid);
  235. if(!$user[0]){
  236. $distribution_channel_id = 123;
  237. }else{
  238. $distribution_channel_id = $user[1];
  239. }
  240. $crm = $request->get('crm');
  241. $this->stats('person',$crm);
  242. $this->statsDetail($user[0],'person',0);
  243. $link = $this->getLink($distribution_channel_id).'person?'.http_build_query($params);
  244. return redirect()->to($link);
  245. }
  246. public function sign(Request $request){
  247. $openid = $request->get('openid');
  248. //授权
  249. $params = $request->except('_url');
  250. if(empty($openid)){
  251. $url = url()->current() . '?' . http_build_query($params);
  252. $params['redirect_url'] = urlencode($url);
  253. $app = new Application($this->auth($params));
  254. return $app->oauth->redirect();
  255. }
  256. $user = $this->getUsers($openid);
  257. if(!$user[0]){
  258. $distribution_channel_id = 123;
  259. }else{
  260. $distribution_channel_id = $user[1];
  261. }
  262. $crm = $request->get('crm');
  263. $uri = $request->path();
  264. if($uri == 'sign'){
  265. $this->stats('sign',$crm);
  266. $this->statsDetail($user[0],'sign',0);
  267. }elseif($uri == 'wsign'){
  268. $this->stats('wsign',$crm);
  269. $this->statsDetail($user[0],'wsign',0);
  270. }
  271. $link = $this->getLink($distribution_channel_id).'sign?'.http_build_query($params);
  272. return redirect()->to($link);
  273. }
  274. private function getUsers($openid){
  275. $users = User::where('openid',$openid)->select('id','distribution_channel_id')->get();
  276. if($users->isEmpty()) return [0,0,0,0];
  277. $temp = null;
  278. $distribution_channel_id = 0;
  279. $uid = 0;
  280. $bid = 0;
  281. $cid = 0;
  282. foreach ($users as $user){
  283. $last_read = ReadRecordService::getByField($user->id,'last_read');
  284. if(!$last_read) continue;
  285. if(!$temp ){
  286. $distribution_channel_id = $user->distribution_channel_id;
  287. $uid = $user->id;
  288. $temp = $last_read;
  289. }else{
  290. $temp_last_read_info = explode('_',$temp);
  291. $last_read_info = explode('_',$last_read);
  292. if($last_read_info[2] > $temp_last_read_info[2]){
  293. $uid = $user->id;
  294. $distribution_channel_id = $user->distribution_channel_id;
  295. $temp = $last_read;
  296. $bid = $last_read_info[0];
  297. $cid = $last_read_info[1];
  298. }
  299. }
  300. }
  301. return [$uid,$distribution_channel_id,$bid,$cid];
  302. }
  303. /**
  304. * @param $openid
  305. * @return array
  306. */
  307. private function getUsersV2($openid){
  308. $friend_link_uid_bind = DB::table('friend_link_uid_bind')->where('openid',$openid)->first();
  309. if($friend_link_uid_bind) {
  310. $user = User::where('id',$friend_link_uid_bind->uid)->select('id','distribution_channel_id')->first();
  311. if($user) {
  312. \Log::info('user;'.json_encode($user));
  313. return [$user->id,$user->distribution_channel_id];
  314. }
  315. }
  316. $inner_channels = Channel::join('channel_users','channel_users.id','=','distribution_channels.channel_user_id')
  317. ->select('distribution_channels.id')
  318. ->whereIn('channel_users.id',explode(',',redisEnv('PROMOTION_GROUP_CHANNEL_USER_ID')))
  319. ->get()
  320. ->pluck('id')
  321. ->toArray();
  322. //\Log::info($inner_channels);
  323. $users = User::where('openid',$openid)->select('id','distribution_channel_id')->get();
  324. \Log::info('users:openid:'.$openid);
  325. if($users->isEmpty()) return [0,0];
  326. $temp = null;
  327. $distribution_channel_id = 0;
  328. $uid = 0;
  329. $inner_channel_uid_list = [];
  330. //先筛网站运营部UID
  331. foreach ($users as $user){
  332. if(in_array($user->distribution_channel_id,$inner_channels)) {
  333. $inner_channel_uid_list[] = $user;
  334. }
  335. }
  336. if(count($inner_channel_uid_list) == 1) {
  337. $insert_data = ['uid'=>$inner_channel_uid_list[0]->id,'openid'=>$openid ,'created_at'=>date('Y-m-d H:i:s'),'updated_at'=>date('Y-m-d H:i:s')];
  338. \Log::info('anchor:count $inner_channel_uid_list =1');
  339. DB::table('friend_link_uid_bind')->insert($insert_data);
  340. return [$inner_channel_uid_list[0]->id,$inner_channel_uid_list[0]->distribution_channel_id];
  341. }
  342. if(count($inner_channel_uid_list)>1) {
  343. //有多个网站运营部UID,针对网站运营部UID进入到下一步筛选
  344. $users = $inner_channel_uid_list;
  345. }
  346. //筛选包年UID
  347. $uid_list = [];
  348. foreach ($users as $item) {
  349. $uid_list[] =$item->id;
  350. }
  351. $year_order = YearOrder::whereIn('uid',$uid_list)->orderBy('end_time','desc')->first();
  352. if($year_order) {
  353. foreach ($users as $item) {
  354. if($item->id == $year_order->uid) {
  355. //筛选包年结束时间最后的UID
  356. $insert_data = ['uid'=>$item->id,'openid'=>$openid ,'created_at'=>date('Y-m-d H:i:s'),'updated_at'=>date('Y-m-d H:i:s')];
  357. \Log::info('anchor:year_order');
  358. DB::table('friend_link_uid_bind')->insert($insert_data);
  359. return [$item->id,$item->distribution_channel_id];
  360. }
  361. }
  362. }
  363. //按订阅章节数最多的筛选
  364. $users_select = ['id'=>0,'count'=>0,'user'=>null,'create_time'=>0];
  365. foreach ($users as $each){
  366. $table_prefix = ($each->id)%512;
  367. $chapter_count = DB::connection('chapter_order_mysql')
  368. ->table('chapter_orders'.$table_prefix)
  369. ->where('created_at','>=',date('Y-m-d H:i:s',strtotime('-3 day')))
  370. ->where('uid',$each->id)
  371. //->where('bid',$bid)
  372. ->count('id');
  373. $book_order = BookOrder::where('uid',$each->id)
  374. //->where('bid',$bid)
  375. ->where('created_at','>=',date('Y-m-d H:i:s',strtotime('-3 day')))
  376. ->first();
  377. if($book_order) {
  378. $chapter_count += 30;
  379. }
  380. //$each->chapter_count = $chapter_count;
  381. if($chapter_count>$users_select['count']) {
  382. $users_select['id'] = $each->id;
  383. $users_select['count'] = $chapter_count;
  384. $users_select['user'] = $each;
  385. }
  386. }
  387. if($users_select['id'] >0) {
  388. $insert_data = ['uid'=>$users_select['user']->id,'openid'=>$openid ,'created_at'=>date('Y-m-d H:i:s'),'updated_at'=>date('Y-m-d H:i:s')];
  389. \Log::info('anchor:subs_chapter');
  390. DB::table('friend_link_uid_bind')->insert($insert_data);
  391. return [$users_select['user']->id,$users_select['user']->distribution_channel_id];
  392. }
  393. //有订阅记录的
  394. foreach ($users as $value) {
  395. $table_prefix = ($value->id)%512;
  396. $chapter_order = DB::connection('chapter_order_mysql')
  397. ->table('chapter_orders'.$table_prefix)
  398. ->where('uid',$value->id)
  399. //->where('bid',$bid)
  400. ->orderBy('created_at','desc')
  401. ->first();
  402. $book_order = BookOrder::where('uid',$value->id)
  403. //->where('bid',$bid)
  404. ->first();
  405. if($chapter_order ){
  406. if(strtotime($chapter_order->created_at) > $users_select['create_time']) {
  407. $users_select['id'] = $value->id;
  408. $users_select['create_time'] = strtotime($chapter_order->created_at);
  409. $users_select['user'] = $value;
  410. }
  411. }
  412. if($book_order){
  413. if(strtotime($book_order->created_at) > $users_select['create_time']){
  414. $users_select['id']=$value->id;
  415. $users_select['create_time']= strtotime($book_order->created_at);
  416. $users_select['user']= $value;
  417. }
  418. }
  419. }
  420. if($users_select['id'] >0) {
  421. $insert_data = ['uid'=>$users_select['user']->id,'openid'=>$openid ,'created_at'=>date('Y-m-d H:i:s'),'updated_at'=>date('Y-m-d H:i:s')];
  422. \Log::info('anchor:subs_');
  423. DB::table('friend_link_uid_bind')->insert($insert_data);
  424. return [$users_select['user']->id,$users_select['user']->distribution_channel_id];
  425. }
  426. if(count($inner_channel_uid_list)>1) {
  427. //有多个网站运营部UID,针对网站运营部UID进入到下一步筛选
  428. $insert_data = ['uid'=>$inner_channel_uid_list[0]->id,'openid'=>$openid ,'created_at'=>date('Y-m-d H:i:s'),'updated_at'=>date('Y-m-d H:i:s')];
  429. \Log::info('anchor:count $inner_channel_uid_list >1');
  430. DB::table('friend_link_uid_bind')->insert($insert_data);
  431. return [$inner_channel_uid_list[0]['id'],$inner_channel_uid_list[0]['distribution_channel_id']];
  432. }
  433. \Log::info('anchor:over');
  434. return [0,0];
  435. }
  436. private function getLink($distribution_channel_id=123){
  437. $url_format = '%s://site%s.%s.com/';
  438. return sprintf(
  439. $url_format,
  440. env('PROTOCOL'),
  441. encodeDistributionChannelId($distribution_channel_id),
  442. env('CUSTOM_HOST')
  443. );
  444. }
  445. private function auth($param){
  446. $param['appid'] = 'wx9d389a73b88bbeae';
  447. $options = [
  448. 'app_id' => 'wx9d389a73b88bbeae',
  449. 'secret' => '2f6594bb595dfa256b5512e43a32a3d3',
  450. 'oauth' => [
  451. 'scopes' => ['snsapi_base'],
  452. 'callback' => env('AUTH_CALLBACK_URL') . '?' . http_build_query($param),
  453. ],
  454. ];
  455. return $options;
  456. }
  457. private function stats($page,$flag){
  458. if(!$page || !$flag) return ;
  459. //pv
  460. $day = date('Y-m-d');
  461. $pv_key = sprintf('crm:pv:%s',$flag);
  462. Redis::hincrby($pv_key, $day, 1);
  463. //Redis::hincrby($pv_key, 'total', 1);
  464. Redis::sadd('crm_'.$day,$flag);
  465. //uv
  466. $cookie_flag = Cookie::get('crm_flag');
  467. if(!$cookie_flag || $cookie_flag != $flag){
  468. $uv_key = sprintf('crm:uv:%s',$flag);
  469. Redis::hincrby($uv_key, $day, 1);
  470. //Redis::hincrby($uv_key, 'total', 1);
  471. }
  472. Cookie::queue('crm_flag', $flag, env('U_COOKIE_EXPIRE'), null, null, false, false);
  473. }
  474. private function statsDetail($uid,$page,$bid=0)
  475. {
  476. try{
  477. DB::table('crm_visit_detail')->insert([
  478. 'uid'=>$uid,'page'=>$page,
  479. 'bid'=>$bid,'day'=>date('Y-m-d'),
  480. 'created_at'=>date('Y-m-d H:i:s'),
  481. 'updated_at'=>date('Y-m-d H:i:s')
  482. ]);
  483. }catch (\Exception $e){}
  484. }
  485. public function longActivity(Request $request)
  486. {
  487. $openid = $request->get('openid');
  488. //授权
  489. $params = $request->except('_url');
  490. if(empty($openid)){
  491. $url = url()->current() . '?' . http_build_query($params);
  492. $params['redirect_url'] = urlencode($url);
  493. $app = new Application($this->auth($params));
  494. return $app->oauth->redirect();
  495. }
  496. $user = $this->getUsers($openid);
  497. if(!$user[0]){
  498. $distribution_channel_id = 123;
  499. }else{
  500. $distribution_channel_id = $user[1];
  501. }
  502. $crm = $request->get('crm');
  503. $this->stats('activity',$crm);
  504. $baselink = $this->getLink($distribution_channel_id).'activity/crm?'.http_build_query($params);
  505. if(isset($params['token']) && !empty($params['token'])){
  506. return redirect()->to($baselink.'activity/crm?'.http_build_query($params));
  507. }
  508. return redirect()->to($baselink);
  509. }
  510. public function guidePersonalAccount(Request $request,$channel_id){
  511. $uid = $request->get('uid',0);
  512. $env_config = redisEnvMulti('ACTIVE_GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE',
  513. 'ACTIVE_GUIDE_PERSONAL_ACCOUNT_MAX_UV','ACTIVE_GUIDE_PERSONAL_ACCOUNT_ID',
  514. 'ACTIVE_GUIDE_PERSONAL_ACCOUNT_MAX_EVERY_UV');
  515. $img = empty($env_config[0])?'https://cdn-novel.iycdm.com/h5/personal_account/chenchen.jpg':$env_config[0];
  516. $max = empty($env_config[1])?100:$env_config[1];
  517. $one_loop_max = empty($env_config[3])?10:$env_config[3];
  518. $now_id = (int)$env_config[2];
  519. $uv = Redis::scard('active_guide_personal_uv');
  520. $personal_info = DB::table('personal_account_list')->where('id',$now_id)->select('count')->first();
  521. $total_max = $personal_info->count+$uv;
  522. //Log::info('$total_max is: '.);
  523. if($uv >= $one_loop_max || $total_max>=$max){
  524. if($total_max>=$max){
  525. DB::table('personal_account_list')->where('id',$now_id)->update([
  526. 'status'=>2,
  527. 'count'=>$total_max,
  528. 'updated_at'=>date('Y-m-d H:i:s')
  529. ]);
  530. }else{
  531. DB::table('personal_account_list')->where('id',$now_id)->increment('count',$uv,[
  532. 'updated_at'=>date('Y-m-d H:i:s')
  533. ]);
  534. }
  535. $account = DB::table('personal_account_list')
  536. ->where('is_enable',1)
  537. ->whereIn('status',[1,0])
  538. ->select('id','url')
  539. ->where('group','ACTIVE')
  540. ->where('count','<',$max)
  541. ->orderBy('count','asc')
  542. ->orderBy('id')
  543. ->first();
  544. Redis::del('active_guide_personal_uv');
  545. if($account){
  546. DB::table('personal_account_list')->where('id',$account->id)->update([
  547. 'status'=>1,
  548. 'updated_at'=>date('Y-m-d H:i:s')
  549. ]);
  550. $img = $account->url;
  551. $now_id = $account->id;
  552. Redis::Hmset('env','ACTIVE_GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE',$account->url,'ACTIVE_GUIDE_PERSONAL_ACCOUNT_ID',$account->id);
  553. }else{
  554. Redis::Hmset('env','ACTIVE_GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE','','ACTIVE_GUIDE_PERSONAL_ACCOUNT_ID','');
  555. return back();
  556. }
  557. }
  558. Redis::sadd('active_guide_personal_uv',$uid);
  559. if($uid){
  560. DB::table('ad_pdd')->insert([
  561. 'uid'=>$uid,
  562. 'img'=>'GUIDE_PERSONAL_ACCOUNT_'.$now_id,
  563. 'date'=>date('Y-m-d'),
  564. 'created_at'=>date('Y-m-d H:i:s'),
  565. 'updated_at'=>date('Y-m-d H:i:s')
  566. ]);
  567. }
  568. /*if(in_array($channel_id,explode(',',redisEnv('GUIDE_PERSONAL_ACCOUNT_WEID_SITES')))){
  569. $imgs = redisEnv('GUIDE_PERSONAL_ACCOUNT_WEID_QRCODE',[]);
  570. if($imgs) $imgs = json_decode($imgs,1);
  571. $page = 'jump.guidePersonalAccount';
  572. }else{
  573. $imgs = redisEnv('GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE',[]);
  574. if($imgs) $imgs = json_decode($imgs,1);
  575. $page = 'jump.guidePersonalAccountOurs';
  576. }*/
  577. $page = 'jump.guidePersonalAccountOurs';
  578. //$page = 'jump.guidePersonalAccount';
  579. //$img = collect($imgs)->random();
  580. return view($page,['img'=>$img]);
  581. }
  582. }