From 9fa390cd927c8b812410a64d7fd8adf3c92720e0 Mon Sep 17 00:00:00 2001 From: Hankin Date: Thu, 20 Aug 2026 17:56:59 +0800 Subject: [PATCH] user --- app/Console/Kernel.php | 334 +++++++++--------- .../Server/H5/MakeFriendsController.php | 257 +++++++++++--- app/Models/MerchantUsers.php | 16 +- routes/server/h5/api.php | 2 +- 4 files changed, 388 insertions(+), 221 deletions(-) diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 5699ca7..81d73c7 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -27,7 +27,7 @@ class Kernel extends ConsoleKernel \App\Console\Commands\CheckSmsComplete::class, ]; - protected $mobile='15872844805'; + protected $mobile = '15872844805'; /** * Define the application's command schedule. @@ -66,8 +66,8 @@ class Kernel extends ConsoleKernel //Log::info('start InterruptCall'); ///咨询通话-中断 $schedule->command('InterruptCall')->everyMinute(); - } catch(\Exception $e){ - $message = 'InterruptCall:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'InterruptCall:' . $e->getMessage(); //CronService::sentMessage($this->mobile, $message); Log::debug($e->getTraceAsString()); } @@ -78,8 +78,8 @@ class Kernel extends ConsoleKernel //Log::info('start signNotice'); //每日签到提醒 $schedule->command('signNotice')->dailyAt('09:00'); - } catch(\Exception $e){ - $message = 'signNotice:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'signNotice:' . $e->getMessage(); //CronService::sentMessage($this->mobile, $message); Log::debug($e->getTraceAsString()); } @@ -89,8 +89,8 @@ class Kernel extends ConsoleKernel //Log::info('start automatic_check_bad_word'); //敏感词校验 $schedule->command('automatic_check_bad_word')->dailyAt('5:30'); - } catch(\Exception $e){ - $message = 'automatic_check_bad_word:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'automatic_check_bad_word:' . $e->getMessage(); //CronService::sentMessage($this->mobile, $message); Log::debug($e->getTraceAsString()); } @@ -148,21 +148,21 @@ class Kernel extends ConsoleKernel //清除未支付订单 $schedule->call(function () { - try{ + try { \Log::info('check unpaid order'); CronService::checkUnpaidOrder(); \Log::info('end check unpaid order'); - }catch(\Exception $e){ - $message = 'check unpaid order:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'check unpaid order:' . $e->getMessage(); //CronService::sentMessage($this->mobile, $message); Log::debug($e->getTraceAsString()); } })->daily()->name('checkUnpaidOrder')->withoutOverlapping(60); $schedule->call(function () { - try{ + try { CronService::sendUserReportStatisticToMerchant(); - }catch(\Exception $e){ + } catch (\Exception $e) { Log::debug($e->getTraceAsString()); } })->hourly()->name('sendUserReportStatisticToMerchant')->withoutOverlapping(60); @@ -171,12 +171,12 @@ class Kernel extends ConsoleKernel //检查ios未支付订单 $schedule->call(function () { - try{ + try { \Log::info('check ios unpaid order'); CronService::checkIOSUnpaidOrder(); \Log::info('end check unpaid order'); - }catch(\Exception $e){ - $message = 'check ios unpaid order:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'check ios unpaid order:' . $e->getMessage(); //CronService::sentMessage($this->mobile, $message); Log::debug($e->getTraceAsString()); } @@ -197,12 +197,12 @@ class Kernel extends ConsoleKernel //检查推荐人和被推荐人是否是好友 $schedule->call(function () { - try{ + try { \Log::info('add Friend'); CronService::addFriend(); \Log::info('end add Friend'); - }catch(\Exception $e){ - $message = 'add Friend :'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'add Friend :' . $e->getMessage(); Log::debug($message); //CronService::sentMessage($this->mobile, $message); Log::debug($e->getTraceAsString()); @@ -240,12 +240,12 @@ class Kernel extends ConsoleKernel * 新用户圆图 */ $schedule->call(function () { - try{ + try { \Log::info('check user_circle_avatar'); CronService::addUserCircleAvatar(); \Log::info('end check user_circle_avatar'); - }catch(\Exception $e){ - $message = 'check user_circle_avatar :'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'check user_circle_avatar :' . $e->getMessage(); Log::debug($message); //CronService::sentMessage($this->mobile, $message); Log::debug($e->getTraceAsString()); @@ -256,12 +256,12 @@ class Kernel extends ConsoleKernel * 检查退款订单 */ $schedule->call(function () { - try{ + try { \Log::info('check refund order'); CronService::chechRefundOrder(); \Log::info('end refund order'); - }catch(\Exception $e){ - $message = 'check refund order:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'check refund order:' . $e->getMessage(); Log::debug($message); //CronService::sentMessage($this->mobile, $message); Log::debug($e->getTraceAsString()); @@ -289,7 +289,7 @@ class Kernel extends ConsoleKernel /** * 检查无渠道红包配额状态并通知 */ -// $schedule->call(function () { + // $schedule->call(function () { // try{ // \Log::info('check checkRedPacketQuota'); // CronService::checkRedPacketQuota(); @@ -353,7 +353,7 @@ class Kernel extends ConsoleKernel // } // })->everyMinute()->name('myShare')->withoutOverlapping(); -// $schedule->call(function () { + // $schedule->call(function () { // try{ // \Log::info('myShareQrcodeRect'); // // CronService::myShareQrcodeRect(); @@ -371,12 +371,12 @@ class Kernel extends ConsoleKernel * 检测临时会员 */ $schedule->call(function () { - try{ + try { \Log::info('check temp member'); CronService::checkTempMember(); \Log::info('end check temp member'); - }catch(\Exception $e){ - $message = 'check temp member:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'check temp member:' . $e->getMessage(); Log::debug($message); //CronService::sentMessage($this->mobile, $message); Log::debug($e->getTraceAsString()); @@ -397,13 +397,13 @@ class Kernel extends ConsoleKernel // // 檢查新用戶 $schedule->call(function () { - try{ + try { \Log::info('new day user'); CronService::newDayUser(); \Log::info('end new day user'); - }catch(\Exception $e){ + } catch (\Exception $e) { // throw new Exception($e->getMessage(), 500); - $message = 'new day user:'.$e->getMessage(); + $message = 'new day user:' . $e->getMessage(); Log::debug($message); //CronService::sentMessage($this->mobile, $message); Log::debug($e->getTraceAsString()); @@ -413,13 +413,13 @@ class Kernel extends ConsoleKernel // 图片修改 $schedule->call(function () { - try{ + try { \Log::info('wechat avatar update'); CronService::wechatAvatarUpdate(); \Log::info('end wechat avatar update'); - }catch(\Exception $e){ + } catch (\Exception $e) { // throw new \Exception($e->getMessage(), 500); - $message = 'wechat avatar update:'.$e->getMessage(); + $message = 'wechat avatar update:' . $e->getMessage(); Log::debug($message); //CronService::sentMessage($this->mobile, $message); Log::debug($e->getTraceAsString()); @@ -444,12 +444,12 @@ class Kernel extends ConsoleKernel // 会员截止 $schedule->call(function () { - try{ + try { \Log::info('check rank deadline'); CronService::checkRankDeadline(); \Log::info('end check rank deadline'); - }catch(\Exception $e){ - $message = 'check rank deadline:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'check rank deadline:' . $e->getMessage(); Log::debug($message); //CronService::sentMessage($this->mobile, $message); Log::debug($e->getTraceAsString()); @@ -575,15 +575,15 @@ class Kernel extends ConsoleKernel //团契会员卡二维码 $schedule->call(function () { -// Log::debug('check fellowing card qrcode'); - try{ + // Log::debug('check fellowing card qrcode'); + try { if (config('app.env') == 'production') { Log::info('check fellowing card qrcode'); CronService::fellowingCardShare(); Log::info('end check fellowing card qrcode'); } - }catch(\Exception $e){ - $message = 'check fellowing card qrcode:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'check fellowing card qrcode:' . $e->getMessage(); Log::debug($message); //CronService::sentMessage($this->mobile, $message); Log::debug($e->getTraceAsString()); @@ -630,12 +630,12 @@ class Kernel extends ConsoleKernel // })->everyMinute()->name('checkPaasWithdraw')->withoutOverlapping(30); //预约通知 - $schedule->call(function(){ + $schedule->call(function () { Log::debug('reservations'); - try{ + try { CronService::reservations(); - }catch(\Exception $e){ - $message = 'reservations:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'reservations:' . $e->getMessage(); Log::debug($message); Log::debug($e->getTraceAsString()); } @@ -750,10 +750,10 @@ class Kernel extends ConsoleKernel //更新用户信息完整度 $schedule->call(function () { Log::debug('updateUserInfoScore'); - try{ + try { CronService::updateUserInfoScore(); - }catch(\Exception $e){ - $message = 'updateUserInfoScore:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'updateUserInfoScore:' . $e->getMessage(); Log::debug($message); //CronService::sentMessage($this->mobile, $message); Log::debug($e->getTraceAsString()); @@ -763,10 +763,10 @@ class Kernel extends ConsoleKernel //每日更新用户资料 $schedule->call(function () { Log::debug('dailyUpdateUserInfoScore'); - try{ + try { CronService::dailyUpdateUserInfoScore(); - }catch(\Exception $e){ - $message = 'dailyUpdateUserInfoScore:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'dailyUpdateUserInfoScore:' . $e->getMessage(); Log::debug($message); //CronService::sentMessage($this->mobile, $message); Log::debug($e->dailyUpdateUserInfoScore()); @@ -785,7 +785,7 @@ class Kernel extends ConsoleKernel // } // })->dailyAt("19:10"); -// 更新红包IP黑名单 + // 更新红包IP黑名单 // $schedule->call(function () { // Log::debug('addRedBlackIp'); // try{ @@ -953,7 +953,7 @@ class Kernel extends ConsoleKernel // Log::debug($e->getTraceAsString()); // } // })->dailyAt("14:20"); - //检查手机号 + //检查手机号 // $schedule->call(function () { // try{ // Log::debug('createdMakerOnlineLog'); @@ -1022,12 +1022,12 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('signInNotice'); - try{ + try { if (config('app.env') == 'production') { CronService::signInNotice(); } - }catch(\Exception $e){ - $message = 'signInNotice:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'signInNotice:' . $e->getMessage(); Log::debug($message); } })->dailyAt("9:00")->name('signInNotice')->withoutOverlapping(); @@ -1037,12 +1037,12 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('matchNotice start'); - try{ + try { if (config('app.env') == 'production') { CronService::matchNotice(); } - }catch(\Exception $e){ - $message = 'matchNotice:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'matchNotice:' . $e->getMessage(); //Log::debug($message); } })->dailyAt("12:15")->name('matchNotice')->withoutOverlapping(); @@ -1052,10 +1052,10 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('changeSignDays'); - try{ + try { CronService::changeSignDays(); - }catch(\Exception $e){ - $message = 'changeSignDays:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'changeSignDays:' . $e->getMessage(); Log::debug($message); } })->dailyAt("00:00")->name('changeSignDays')->withoutOverlapping(); @@ -1063,7 +1063,7 @@ class Kernel extends ConsoleKernel /** * 检查开播群聊直播 */ -// $schedule->call(function () { + // $schedule->call(function () { // Log::debug('checkTeamLives'); // try{ // CronService::checkTeamLives(); @@ -1076,12 +1076,12 @@ class Kernel extends ConsoleKernel /** * 每日更新用户频繁数据 */ - $schedule->call(function() { + $schedule->call(function () { try { \Log::debug('updateUserActiveProperties'); CronService::updateUserActiveProperties('visit'); } catch (\Exception $e) { - $message = 'updateUserActiveProperties:'.$e->getMessage(); + $message = 'updateUserActiveProperties:' . $e->getMessage(); Log::debug($message); } })->hourly()->name('updateUserActiveProperties')->withoutOverlapping(); @@ -1099,7 +1099,7 @@ class Kernel extends ConsoleKernel // } // })->dailyAt("18:00")->name('recommendActivity'); -// /** + // /** // * 生成电话专员对象 // */ // $schedule->call(function () { @@ -1115,7 +1115,7 @@ class Kernel extends ConsoleKernel /** * 同步群聊人数 */ -// $schedule->call(function () { + // $schedule->call(function () { // Log::debug('syncTeamMembers'); // try{ // CronService::syncTeamMembers(); @@ -1130,12 +1130,12 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('syncLivePerson'); - try{ + try { if (config('app.env') == 'production') { CronService::syncLivePerson(); } - }catch(\Exception $e){ - $message = 'syncLivePerson:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'syncLivePerson:' . $e->getMessage(); Log::debug($message); } })->everyMinute()->name('syncLivePerson')->withoutOverlapping(); @@ -1145,22 +1145,22 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('faceMatch'); - try{ + try { if (config('app.env') == 'production') { CronService::faceMatch(); } - }catch(\Exception $e){ - $message = 'faceMatch:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'faceMatch:' . $e->getMessage(); Log::debug($message); } })->everyMinute()->name('faceMatch')->withoutOverlapping(); $schedule->call(function () { Log::debug('errorMsg'); - try{ + try { CronService::errorMsg(); - }catch(\Exception $e){ - $message = 'errorMsg:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'errorMsg:' . $e->getMessage(); Log::debug($message); } })->everyMinute()->name('errorMsg')->withoutOverlapping(); @@ -1183,7 +1183,7 @@ class Kernel extends ConsoleKernel * 同步性别 * user 和 profile同步 */ -// $schedule->call(function () { + // $schedule->call(function () { // Log::debug('syncSex'); // try{ // CronService::syncSex(); @@ -1198,10 +1198,10 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('syncBelief'); - try{ + try { CronService::syncBelief(); - }catch(\Exception $e){ - $message = 'syncBelief:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'syncBelief:' . $e->getMessage(); Log::debug($message); } })->everyMinute()->name('syncBelief')->withoutOverlapping(); @@ -1209,7 +1209,7 @@ class Kernel extends ConsoleKernel /** * 同步身份証性别 */ -// $schedule->call(function () { + // $schedule->call(function () { // Log::debug('syncCardIdSex'); // try{ // CronService::syncCardIdSex(); @@ -1224,10 +1224,10 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('dailySyncCardIdSexBirthday'); - try{ + try { CronService::dailySyncCardIdSexBirthday(); - }catch(\Exception $e){ - $message = 'dailySyncCardIdSexBirthday:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'dailySyncCardIdSexBirthday:' . $e->getMessage(); Log::debug($message); } })->dailyAt('1:30')->name('dailySyncCardIdSexBirthday')->withoutOverlapping(); @@ -1235,7 +1235,7 @@ class Kernel extends ConsoleKernel /** * 解冻服务商与用户冻结金额 */ -// $schedule->call(function () { + // $schedule->call(function () { // Log::debug('checkEarningFrozen'); // try{ // CronService::checkEarningFrozen(); @@ -1250,10 +1250,10 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('checkLoveEarningFrozen'); - try{ + try { CronService::checkLoveEarningFrozen(); - }catch(\Exception $e){ - $message = 'checkLoveEarningFrozen:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'checkLoveEarningFrozen:' . $e->getMessage(); Log::debug($message); } })->everyMinute()->name('checkLoveEarningFrozen')->withoutOverlapping(); @@ -1263,10 +1263,10 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('checkLoveEarningOrder'); - try{ + try { CronService::checkLoveEarningOrder(); - }catch(\Exception $e){ - $message = 'checkLoveEarningOrder:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'checkLoveEarningOrder:' . $e->getMessage(); Log::debug($message); } })->weekly()->name('checkLoveEarningOrder')->withoutOverlapping(); @@ -1276,10 +1276,10 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('syncMerchatInformations'); - try{ + try { CronService::syncMerchatInformations(); - }catch(\Exception $e){ - $message = 'syncMerchatInformations:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'syncMerchatInformations:' . $e->getMessage(); Log::debug($message); } })->everyMinute()->name('syncMerchatInformations')->withoutOverlapping(); @@ -1289,15 +1289,15 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('checkEarningOrder'); - try{ + try { CronService::checkEarningOrder(); - }catch(\Exception $e){ - $message = 'checkEarningOrder:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'checkEarningOrder:' . $e->getMessage(); Log::debug($message); } })->weekly()->name('checkEarningOrder')->withoutOverlapping(); -// $schedule->call(function () { + // $schedule->call(function () { // Log::debug('syncDynamic'); // try{ // CronService::syncDynamic(); @@ -1309,13 +1309,13 @@ class Kernel extends ConsoleKernel $schedule->call(function () { Log::debug('generateMonthAnalyse'); - try{ + try { CronService::generateMonthAnalyse(); - }catch(\Exception $e){ - $message = 'generateMonthAnalyse:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'generateMonthAnalyse:' . $e->getMessage(); Log::debug($message); } - })->monthlyOn(1,"00:01")->name('generateMonthAnalyse')->withoutOverlapping(); + })->monthlyOn(1, "00:01")->name('generateMonthAnalyse')->withoutOverlapping(); // $schedule->call(function () { // Log::debug('transferAccount'); @@ -1330,7 +1330,7 @@ class Kernel extends ConsoleKernel /** * 每天九点短信访客通知 */ -// $schedule->call(function () { + // $schedule->call(function () { // Log::debug('visitorNotice'); // try{ // CronService::visitorNotice(); @@ -1344,24 +1344,24 @@ class Kernel extends ConsoleKernel * 冻结订单转成结算订单 */ $schedule->call(function () { - Log::debug('setOrderSettlement'); - try{ - CronService::setOrderSettlement(); - }catch(\Exception $e){ - $message = 'setOrderSettlement:'.$e->getMessage(); - Log::debug($message); - } - })->everyMinute()->name('setOrderSettlement')->withoutOverlapping(); + Log::debug('setOrderSettlement'); + try { + CronService::setOrderSettlement(); + } catch (\Exception $e) { + $message = 'setOrderSettlement:' . $e->getMessage(); + Log::debug($message); + } + })->everyMinute()->name('setOrderSettlement')->withoutOverlapping(); /** * 收益通知 */ $schedule->call(function () { Log::debug('checkEarningNotice'); - try{ + try { CronService::checkEarningNotice(); - }catch(\Exception $e){ - $message = 'checkEarningNotice:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'checkEarningNotice:' . $e->getMessage(); Log::debug($message); } })->everyMinute()->name('checkEarningNotice')->withoutOverlapping(); @@ -1371,10 +1371,10 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('checkRecommendIsBuy'); - try{ + try { CronService::checkRecommendIsBuy(); - }catch(\Exception $e){ - $message = 'checkRecommendIsBuy:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'checkRecommendIsBuy:' . $e->getMessage(); Log::debug($message); } })->hourly()->name('checkRecommendIsBuy')->withoutOverlapping(); @@ -1384,10 +1384,10 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('synUserPortrait'); - try{ + try { CronService::synUserPortrait(); - }catch(\Exception $e){ - $message = 'synUserPortrait:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'synUserPortrait:' . $e->getMessage(); Log::debug($message); } })->everyMinute()->name('synUserPortrait')->withoutOverlapping(); @@ -1397,10 +1397,10 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('syncServicesPv'); - try{ + try { CronService::syncServicesPv(); - }catch(\Exception $e){ - $message = 'syncServicesPv:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'syncServicesPv:' . $e->getMessage(); Log::debug($message); } })->everyFiveMinutes()->name('syncServicesPv')->withoutOverlapping(); @@ -1423,10 +1423,10 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('autoFinishGroup'); - try{ + try { CronService::autoFinishGroup(); - }catch(\Exception $e){ - $message = 'autoFinishGroup:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'autoFinishGroup:' . $e->getMessage(); Log::debug($message); } })->everyMinute()->name('autoFinishGroup')->withoutOverlapping(); @@ -1435,10 +1435,10 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('sendOrderSurvey'); - try{ + try { CronService::sendOrderSurvey(); - }catch(\Exception $e){ - $message = 'sendOrderSurvey:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'sendOrderSurvey:' . $e->getMessage(); Log::debug($message); } })->everyMinute()->name('sendOrderSurvey')->withoutOverlapping(); @@ -1448,10 +1448,10 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('operateNotice'); - try{ + try { CronService::operateNotice(); - }catch(\Exception $e){ - $message = 'operateNotice:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'operateNotice:' . $e->getMessage(); Log::debug($message); } })->dailyAt('9:00')->name('operateNotice')->withoutOverlapping(); @@ -1461,10 +1461,10 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('storeAdminNoticeUrl'); - try{ + try { CronService::storeAdminNoticeUrl(); - }catch(\Exception $e){ - $message = 'storeAdminNoticeUrl:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'storeAdminNoticeUrl:' . $e->getMessage(); Log::debug($message); } })->everyMinute()->name('storeAdminNoticeUrl')->withoutOverlapping(); @@ -1474,10 +1474,10 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('startMessageNotice'); - try{ + try { CronService::startMessageNotice(); - }catch(\Exception $e){ - $message = 'startMessageNotice:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'startMessageNotice:' . $e->getMessage(); Log::debug($message); } })->everyTenMinutes()->name('startMessageNotice')->withoutOverlapping(); @@ -1496,9 +1496,9 @@ class Kernel extends ConsoleKernel $schedule->call(function () { Log::debug('recommendNoticeNum'); - try{ + try { CronService::recommendNoticeNum(); - }catch(\Exception $e){ + } catch (\Exception $e) { $this->getError($e); } })->dailyAt('8:00')->name('recommendNoticeNum')->withoutOverlapping(); @@ -1518,20 +1518,20 @@ class Kernel extends ConsoleKernel //不符合专区设置条件自动踢出 $schedule->call(function () { Log::debug('checkAreaUsers'); - try{ + try { CronService::checkAreaUsers(); - }catch(\Exception $e){ - $message = 'checkAreaUsers:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'checkAreaUsers:' . $e->getMessage(); Log::debug($message); } })->hourly()->name('checkAreaUsers')->withoutOverlapping(); $schedule->call(function () { - try{ + try { \Log::info('send sms Message'); CronService::send_sms_message(); \Log::info('send sms Message'); - }catch(\Exception $e){ + } catch (\Exception $e) { Log::debug($e->getTraceAsString()); } })->everyMinute()->name('send_sms_Message')->withoutOverlapping(10); @@ -1541,10 +1541,10 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('myQrcode'); - try{ + try { CronService::myQrcode(); - }catch(\Exception $e){ - $message = 'myQrcode:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'myQrcode:' . $e->getMessage(); Log::debug($message); } })->everyMinute()->name('myQrcode')->withoutOverlapping(); @@ -1554,10 +1554,10 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('userShareQrcode'); - try{ + try { CronService::userShareQrcode(); - }catch(\Exception $e){ - $message = 'userShareQrcode:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'userShareQrcode:' . $e->getMessage(); Log::debug($message); } })->everyMinute()->name('userShareQrcode')->withoutOverlapping(); @@ -1568,21 +1568,21 @@ class Kernel extends ConsoleKernel */ $schedule->call(function () { Log::debug('checkUserPhoto'); - try{ + try { CronService::checkUserPhoto(); - }catch(\Exception $e){ - $message = 'checkUserPhoto:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'checkUserPhoto:' . $e->getMessage(); Log::debug($message); } })->everyFiveMinutes()->name('checkUserPhoto')->withoutOverlapping(); $schedule->call(function () { - try{ + try { \Log::info('appointment_sendMessage'); CronService::appointment_sendMessage(); \Log::info('end appointment_sendMessage'); - }catch(\Exception $e){ - $message = 'check unpaid order:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'check unpaid order:' . $e->getMessage(); //CronService::sentMessage($this->mobile, $message); Log::debug($e->getTraceAsString()); } @@ -1592,12 +1592,12 @@ class Kernel extends ConsoleKernel * 检测crm等级用户备注时间 */ $schedule->call(function () { - try{ + try { \Log::info('check crm comment'); CronService::checkCrmComment(); \Log::info('check crm comment'); - }catch(\Exception $e){ - $message = 'check unpaid order:'.$e->getMessage(); + } catch (\Exception $e) { + $message = 'check unpaid order:' . $e->getMessage(); //CronService::sentMessage($this->mobile, $message); Log::debug($e->getTraceAsString()); } @@ -1607,9 +1607,9 @@ class Kernel extends ConsoleKernel * 统计crm客服、老师工作 */ $schedule->call(function () { - \Log::info('start crm data stat'); - CronService::CrmDataStat(); - \Log::info('end crm data stat'); + \Log::info('start crm data stat'); + CronService::CrmDataStat(); + \Log::info('end crm data stat'); })->dailyAt('9:00')->name('CrmDataStat')->withoutOverlapping(); /** @@ -1669,7 +1669,7 @@ class Kernel extends ConsoleKernel /** * 福恋小程序群聊未读通知 */ -// $schedule->call(function () { + // $schedule->call(function () { // \Log::info('start groupChatUnreadNotice'); // CronService::groupChatUnreadNotice(); // \Log::info('end groupChatUnreadNotice'); @@ -1720,7 +1720,7 @@ class Kernel extends ConsoleKernel /** * 邀请的新用户注册通知 */ - $schedule->call(function (){ + $schedule->call(function () { CronService::inviteUserCountNotice(); })->dailyAt('09:30')->name('inviteUserCountNotice'); } @@ -1732,7 +1732,7 @@ class Kernel extends ConsoleKernel */ protected function commands() { - $this->load(__DIR__.'/Commands'); + $this->load(__DIR__ . '/Commands'); require base_path('routes/console.php'); } diff --git a/app/Http/Controllers/Server/H5/MakeFriendsController.php b/app/Http/Controllers/Server/H5/MakeFriendsController.php index 2dde789..01d864b 100644 --- a/app/Http/Controllers/Server/H5/MakeFriendsController.php +++ b/app/Http/Controllers/Server/H5/MakeFriendsController.php @@ -33,13 +33,14 @@ class MakeFriendsController extends Controller $merchant_user_id = $request->merchant_user_id; $merchant_id = $request->merchant_id; $mobile = $request->mobile; - if(!$mobile){ + if (!$mobile) { return $this->failure('手机号不能为空'); } $merchant_user = MerchantUsers::where('id', $merchant_user_id)->first(); if ($merchant_user) { $exist = IdentityAuthorization::where('m_user_id', $merchant_user->id)->where('m_id', $merchant_id)->exists(); - if ($exist) return $this->failure('该用户已添加'); + if ($exist) + return $this->failure('该用户已添加'); } $nickname = $request->nickname; $pic = $request->pic; @@ -167,7 +168,8 @@ class MakeFriendsController extends Controller try { $id = $request->merchant_user_id; $merchant_user = MerchantUsers::where('id', $id)->first(); - if (!$merchant_user) return $this->failure('该用户不存在'); + if (!$merchant_user) + return $this->failure('该用户不存在'); $nickname = $request->nickname; $pic = $request->pic; @@ -269,7 +271,7 @@ class MakeFriendsController extends Controller $profile->save(); \DB::commit(); return $this->success('ok', ['status' => 1]); - }catch (\Exception $e){ + } catch (\Exception $e) { \DB::rollback(); $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); @@ -289,12 +291,12 @@ class MakeFriendsController extends Controller $key = 'MakeFriend_S'; if ($m_id == 491) { Redis::zincrby($key, 1, $id); - }else { - Redis::zincrby($key, 1, $m_id.'-'.$id); + } else { + Redis::zincrby($key, 1, $m_id . '-' . $id); } - $merchant_user = MerchantUsers::select('id', 'user_id', 'pic','mobile', 'nickname', 'created_at')->where('id', $id) + $merchant_user = MerchantUsers::select('id', 'user_id', 'pic', 'mobile', 'nickname', 'created_at')->where('id', $id) ->first(); - $profile = MerchantUserProfile::firstOrCreate(['m_id'=>$m_id, 'user_id' => $id]); + $profile = MerchantUserProfile::firstOrCreate(['m_id' => $m_id, 'user_id' => $id]); $merchant_user->info = $profile; $merchant_user->info->industry_sub = $profile->industry_sub; $merchant_user->info->mobile = substr_replace($merchant_user->mobile, '****', 3, 4); @@ -302,7 +304,7 @@ class MakeFriendsController extends Controller $merchant_user->info->age = $this->getAge($profile->birthday); $merchant_user->info->mate_conditon = json_decode($profile->mate_conditon); // 生活照 - $merchant_user->photos = MerchantUserPhoto::where(['m_id'=>$m_id, 'user_id'=>$id])->pluck('photo'); + $merchant_user->photos = MerchantUserPhoto::where(['m_id' => $m_id, 'user_id' => $id])->pluck('photo'); $merchant_user->pv = Redis::zscore($key, $id) ? Redis::zscore($key, $id) : 0; return $this->success('ok', $merchant_user); } catch (\Exception $e) { @@ -345,10 +347,11 @@ class MakeFriendsController extends Controller $user = User::select('id', 'photo as pic', 'nickname', 'industry_sub', 'industry', 'hidden_profile', 'created_at') ->where('mobile', $mobile) ->first(); - if (!$user) return $this->resp('fail', ['status' => 1]); + if (!$user) + return $this->resp('fail', ['status' => 1]); $merchant_user_mobile = MerchantUser::where('mobile', $mobile) ->first(); - if($merchant_user_mobile){ + if ($merchant_user_mobile) { return $this->failure('手机号已被另一帐号绑定'); } $merchant_user_id = $request->merchant_user_id; @@ -374,7 +377,7 @@ class MakeFriendsController extends Controller /** * 用户列表 - * @param Request $Request + * @param Request $request * @return JsonResponse|string */ public function userList(Request $request) @@ -385,20 +388,20 @@ class MakeFriendsController extends Controller $fix_id = []; //资料完整分大于60 才在saas h5单身广场列表 foreach ($ids as $key => $id) { -// $score = $this->completeInfoScore($id); + // $score = $this->completeInfoScore($id); $score = $this->completeInfoScoreV2($id, $m_id); if ($score >= 60) { - $fix_id [] = $id; + $fix_id[] = $id; } } $users = MerchantUsers::select('id', 'user_id', 'pic', 'nickname', 'created_at')->whereIn('id', $fix_id)->paginate(); foreach ($users as $value) { - $profile = MerchantUserProfile::where(['m_id'=>$m_id, 'user_id'=>$value->id])->first(); + $profile = MerchantUserProfile::where(['m_id' => $m_id, 'user_id' => $value->id])->first(); $value->info = $profile; $value->info->mobile = substr_replace($value->mobile, '****', 3, 4); $value->info->age = $this->getAge($profile->birthday); $value->info->mate_conditon = json_decode($profile->mate_conditon); - $value->photos = MerchantUserPhoto::where(['m_id'=>$m_id, 'user_id'=>$value->id])->pluck('photo'); + $value->photos = MerchantUserPhoto::where(['m_id' => $m_id, 'user_id' => $value->id])->pluck('photo'); } return $this->success('ok', $users); } catch (\Exception $e) { @@ -407,20 +410,153 @@ class MakeFriendsController extends Controller } } + + public function userListV2(Request $request) + { + try { + $m_id = $request->merchant_id; + + // 1. 获取所有关联的商户用户 ID(仍需要一次查询) + $ids = IdentityAuthorization::where('m_id', $m_id) + ->orderBy('id', 'desc') + ->pluck('m_user_id'); + + if ($ids->isEmpty()) { + return $this->success('ok', []); + } + + // 2. 批量加载用户、profile 和 photos(仅一次查询,附带 m_id 条件) + $usersWithData = MerchantUsers::whereIn('id', $ids) + ->with([ + 'profile' => function ($q) use ($m_id) { + $q->where('m_id', $m_id); + }, + 'photos' => function ($q) use ($m_id) { + $q->where('m_id', $m_id)->select('photo'); + } + ]) + ->get(); + + // 3. 在内存中计算分数,收集符合条件(分数 ≥ 60)的 ID + $fixIds = []; + foreach ($usersWithData as $user) { + $score = $this->calculateScoreFromModel($user); // 使用已加载的数据,不再查询 + if ($score >= 60) { + $fixIds[] = $user->id; + } + } + + // 4. 用符合条件的分页查询(再次预加载,避免 N+1) + $users = MerchantUsers::whereIn('id', $fixIds) + ->with([ + 'profile' => function ($q) use ($m_id) { + $q->where('m_id', $m_id); + }, + 'photos' => function ($q) use ($m_id) { + $q->where('m_id', $m_id)->select('photo'); + } + ]) + ->paginate(); + + // 5. 组装输出数据 + foreach ($users as $user) { + $profile = $user->profile; + if ($profile) { + // 手机号脱敏(注意:mobile 在 MerchantUsers 表中) + $profile->mobile = substr_replace($user->mobile, '****', 3, 4); + $profile->age = $this->getAge($profile->birthday); + $profile->mate_conditon = json_decode($profile->mate_conditon); + } + // 照片列表 + $user->photos = $user->photos->pluck('photo'); + // 将 profile 挂载到 info 字段(保持原结构) + $user->info = $profile; + } + + return $this->success('ok', $users); + } catch (\Exception $e) { + $this->getError($e); + return $this->failure('服务器休息中,请稍后再试'); + } + } + + /** + * 根据已加载的模型计算资料完整分(不再查询数据库) + */ + private function calculateScoreFromModel($user) + { + $total_score = 0; + $profile = $user->profile; + + if (!$user || !$profile) { + return $total_score; + } + + $keys = [ + 'belief', + 'birthday', + 'degree', + 'ideal_mate', + 'income', + 'industry', + 'industry_sub', + 'interest_hobby', + 'introduction', + 'province', + 'city', + 'mate_conditon', + 'state', + 'stature', + 'weight', + 'sex' + ]; + + foreach ($keys as $key) { + if (!empty($profile->$key)) { + $total_score += 5; + } + } + + // 生活照额外加分 + if ($user->photos && $user->photos->isNotEmpty()) { + $total_score += 5; + } + + return $total_score; + } public function completeInfoScoreV2($user_id, $m_id) { try { $total_score = 0; $user = MerchantUsers::find($user_id); - $profile = MerchantUserProfile::where(['m_id'=>$m_id, 'user_id'=>$user_id])->first(); - if (!$user || !$profile) return $total_score; - $keys = ['belief', 'birthday', 'degree', 'ideal_mate', 'income', 'industry', 'industry_sub', 'interest_hobby', 'introduction', 'province', 'city', 'mate_conditon', - 'state', 'stature', 'weight', 'sex']; + $profile = MerchantUserProfile::where(['m_id' => $m_id, 'user_id' => $user_id])->first(); + if (!$user || !$profile) + return $total_score; + $keys = [ + 'belief', + 'birthday', + 'degree', + 'ideal_mate', + 'income', + 'industry', + 'industry_sub', + 'interest_hobby', + 'introduction', + 'province', + 'city', + 'mate_conditon', + 'state', + 'stature', + 'weight', + 'sex' + ]; foreach ($keys as $key) { - if ($profile->$key) $total_score += 5; + if ($profile->$key) + $total_score += 5; } - $photos = MerchantUserPhoto::where(['m_id'=>$m_id, 'user_id'=>$user_id])->first(); - if ($photos) $total_score += 5;//生活照 + $photos = MerchantUserPhoto::where(['m_id' => $m_id, 'user_id' => $user_id])->first(); + if ($photos) + $total_score += 5;//生活照 return $total_score; } catch (\Exception $e) { $this->getError($e); @@ -440,25 +576,42 @@ class MakeFriendsController extends Controller return 0; } $total_score = 0; - if (!$user || !$user->user || !$user->user->sass_profileCourtship) return $total_score; + if (!$user || !$user->user || !$user->user->sass_profileCourtship) + return $total_score; $photos = ProfilePhoto::where('user_id', $user->user_id)->first(); - if ($user->user->sass_profileCourtship->belief) $total_score += 5; - if ($user->user->sass_profileCourtship->birthday) $total_score += 5; + if ($user->user->sass_profileCourtship->belief) + $total_score += 5; + if ($user->user->sass_profileCourtship->birthday) + $total_score += 5; // if($user->user->sass_profileCourtship->city) $totle_score += 5; - if ($user->user->sass_profileCourtship->degree) $total_score += 5; - if ($user->user->sass_profileCourtship->ideal_mate) $total_score += 5; - if ($user->user->sass_profileCourtship->income) $total_score += 5; - if ($user->user->industry) $total_score += 5; - if ($user->user->industry_sub) $total_score += 5; - if ($user->user->sass_profileCourtship->interest_hobby) $total_score += 5; - if ($user->user->sass_profileCourtship->introduction) $total_score += 5; - if ($photos) $total_score += 5;//生活照 - if ($user->user->sass_profileCourtship->province) $total_score += 5; - if ($user->user->sass_profileCourtship->mate_conditon) $total_score += 25; - if ($user->user->sass_profileCourtship->state) $total_score += 5; - if ($user->user->sass_profileCourtship->stature) $total_score += 5; - if ($user->user->sass_profileCourtship->weight) $total_score += 5; - if ($user->user->sass_profileCourtship->sex) $total_score += 5; + if ($user->user->sass_profileCourtship->degree) + $total_score += 5; + if ($user->user->sass_profileCourtship->ideal_mate) + $total_score += 5; + if ($user->user->sass_profileCourtship->income) + $total_score += 5; + if ($user->user->industry) + $total_score += 5; + if ($user->user->industry_sub) + $total_score += 5; + if ($user->user->sass_profileCourtship->interest_hobby) + $total_score += 5; + if ($user->user->sass_profileCourtship->introduction) + $total_score += 5; + if ($photos) + $total_score += 5;//生活照 + if ($user->user->sass_profileCourtship->province) + $total_score += 5; + if ($user->user->sass_profileCourtship->mate_conditon) + $total_score += 25; + if ($user->user->sass_profileCourtship->state) + $total_score += 5; + if ($user->user->sass_profileCourtship->stature) + $total_score += 5; + if ($user->user->sass_profileCourtship->weight) + $total_score += 5; + if ($user->user->sass_profileCourtship->sex) + $total_score += 5; return $total_score; } catch (\Exception $e) { $this->getError($e); @@ -473,7 +626,7 @@ class MakeFriendsController extends Controller */ public function userPhotos(Request $request) { - try{ + try { $m_id = $request->merchant_id; $num = $request->num ?? 4; $ids = IdentityAuthorization::where('m_id', $m_id)->orderBy('id', 'desc')->pluck('m_user_id'); @@ -482,7 +635,7 @@ class MakeFriendsController extends Controller foreach ($ids as $key => $id) { $score = $this->completeInfoScore($id); if ($score >= 60) { - $fix_id [] = $id; + $fix_id[] = $id; } } $users = MerchantUsers::select('id', 'user_id', 'pic', 'nickname', 'created_at')->whereIn('id', $fix_id)->orderByRaw("RAND()")->limit(4)->get(); @@ -528,7 +681,7 @@ class MakeFriendsController extends Controller $obj->m_user_id = $merchant_user_id; $obj->m_id = $m_id; $obj->save(); -// $merchant_user = MerchantUsers::select('id', 'user_id', 'pic', 'nickname', 'created_at')->where('id', $merchant_user_id)->first(); + // $merchant_user = MerchantUsers::select('id', 'user_id', 'pic', 'nickname', 'created_at')->where('id', $merchant_user_id)->first(); // $merchant_user->info = $merchant_user->user->sass_profileCourtship; // $merchant_user->info->industry_sub = $merchant_user->user->industry_sub; // $merchant_user->info->industry = $merchant_user->user->industry; @@ -554,12 +707,12 @@ class MakeFriendsController extends Controller $m_id = $request->merchant_id; $merchant_user_id = $request->merchant_user_id; $user = MerchantUser::find($merchant_user_id); - $profile = MerchantUserProfile::firstOrCreate(["m_id"=>$m_id, 'user_id'=>$merchant_user_id]); + $profile = MerchantUserProfile::firstOrCreate(["m_id" => $m_id, 'user_id' => $merchant_user_id]); $profile = MerchantUserProfile::find($profile->id); $profile->pic = $user->pic; $profile->nickname = $user->nickname; $profile->mobile = $user->mobile; - $photos = MerchantUserPhoto::where(["m_id"=>$m_id, 'user_id'=>$merchant_user_id])->get(); + $photos = MerchantUserPhoto::where(["m_id" => $m_id, 'user_id' => $merchant_user_id])->get(); $photo_arr = []; foreach ($photos as $photo) { $photo_arr[] = $photo->photo; @@ -576,7 +729,7 @@ class MakeFriendsController extends Controller $m_id = $request->merchant_id; $merchant_user_id = $request->merchant_user_id; $user = MerchantUser::find($merchant_user_id); - $profile = MerchantUserProfile::where(["m_id"=>$m_id, 'user_id'=>$merchant_user_id])->first(); + $profile = MerchantUserProfile::where(["m_id" => $m_id, 'user_id' => $merchant_user_id])->first(); if ($request->input('pic') && $user->pic != $request->pic) { $user->pic = $request->pic; } @@ -587,7 +740,7 @@ class MakeFriendsController extends Controller $user->mobile = $request->mobile; $user_exists = MerchantUser::where('mobile', $request->mobile)->where('id', '<>', $user->id)->first(); if ($user_exists) { - $user_exists->update(['mobile'=>null]); + $user_exists->update(['mobile' => null]); } } if ($request->input('birthday') && $profile->birthday != $request->birthday) { @@ -645,22 +798,22 @@ class MakeFriendsController extends Controller if ($request->input('ideal_mate') && $profile->ideal_mate != $request->ideal_mate) { $profile->ideal_mate = $request->ideal_mate; //最后一项填完加入交友管理 - IdentityAuthorization::firstOrCreate(['m_id'=>$m_id, 'm_user_id'=>$merchant_user_id]); + IdentityAuthorization::firstOrCreate(['m_id' => $m_id, 'm_user_id' => $merchant_user_id]); } //图片 - $photos = $request->input('photos',[]); + $photos = $request->input('photos', []); if (count($photos)) { - MerchantUserPhoto::where(['m_id'=>$m_id, 'user_id'=>$merchant_user_id])->delete(); + MerchantUserPhoto::where(['m_id' => $m_id, 'user_id' => $merchant_user_id])->delete(); foreach ($photos as $photo) { - MerchantUserPhoto::firstOrCreate(['m_id'=>$m_id, 'user_id'=>$merchant_user_id, 'photo'=>$photo]); + MerchantUserPhoto::firstOrCreate(['m_id' => $m_id, 'user_id' => $merchant_user_id, 'photo' => $photo]); } } $user->save(); $profile->save(); DB::commit(); return $this->success('ok'); - }catch (\Exception $e) { + } catch (\Exception $e) { DB::rollBack(); $this->getError($e); return $this->failure(); diff --git a/app/Models/MerchantUsers.php b/app/Models/MerchantUsers.php index 295ee20..6a033f0 100644 --- a/app/Models/MerchantUsers.php +++ b/app/Models/MerchantUsers.php @@ -2,6 +2,8 @@ namespace App\Models; +use App\Models\Server\MerchantUserPhoto; +use App\Models\Server\MerchantUserProfile; use Illuminate\Database\Eloquent\Model; use Actuallymab\LaravelComment\CanComment; @@ -9,9 +11,21 @@ class MerchantUsers extends Model { use CanComment; protected $fillable = []; - protected $guarded = []; + protected $guarded = []; public function user() { return $this->belongsTo(User::class); } + + public function profile() + { + return $this->hasOne(MerchantUserProfile::class, "user_id", "id"); + } + + public function photos() + { + return $this->hasMany(MerchantUserPhoto::class, "user_id", "id"); + } + + } diff --git a/routes/server/h5/api.php b/routes/server/h5/api.php index c245581..eae6d2e 100644 --- a/routes/server/h5/api.php +++ b/routes/server/h5/api.php @@ -265,7 +265,7 @@ Route::middleware('merchant_user')->group(function () { // 用户详情 Route::get('friend', 'MakeFriendsController@userInfo')->where('id', '[0-9]+'); // 用户列表 - Route::get('friend/user/list', 'MakeFriendsController@userList'); + Route::get('friend/user/list', 'MakeFriendsController@userListV2'); // 授权同步数据 Route::get('friend/synchronous/data', 'MakeFriendsController@SynchronousData'); // 更新用户资料