diff --git a/app/Controller/v3/HomeController.php b/app/Controller/v3/HomeController.php index 558240f..cee0840 100644 --- a/app/Controller/v3/HomeController.php +++ b/app/Controller/v3/HomeController.php @@ -11,6 +11,7 @@ use App\Constants\v3\Tabs; use App\Constants\v3\UserType; use App\Controller\BaseController; use App\Model\v3\FinancialRecord; +use App\Model\v3\ImsMcFansTag; use App\Model\v3\Market; use App\Model\v3\Store; use App\Request\v3\StoreIndexRequest; @@ -215,15 +216,26 @@ class HomeController extends BaseController $config = config('wechat.official'); $app = Factory::officialAccount(['app_id' => $config['app_id'], 'secret' => $config['app_secret']]); $app['guzzle_handler'] = CoroutineHandler::class; - $fansInfo = $app->user->get($data['user']['openid']); $redis = ApplicationContext::getContainer()->get(Redis::class); - if ($fansInfo['subscribe'] == 1) { - $subscribeInfo = $redis->hGet('official:subscribe_info', 'subscribed'); - } else { + + $fansInfo = []; + $fansTag = ImsMcFansTag::query()->where(['unionid' => $data['user']['unionid']])->first(); + if (empty($fansTag)) { // 无绑定时无关注,单需要处理老we7那边更新unionid的事宜 $subscribeInfo = $redis->hGet('official:subscribe_info', 'not_subscribed'); + } else { // 有记录时去微信看有没有关注 + + $userOfficialOpenid = $fansTag->openid ?? ''; + $fansInfo = $app->user->get($userOfficialOpenid); + + if (isset($fansInfo['subscribe']) && $fansInfo['subscribe'] == 1) { + $subscribeInfo = $redis->hGet('official:subscribe_info', 'subscribed'); + } else { + $subscribeInfo = $redis->hGet('official:subscribe_info', 'not_subscribed'); + } } + $subscribeInfo = !empty($subscribeInfo) ? json_decode($subscribeInfo, true) : []; $data['subscribe_info'] = array_merge($fansInfo, $subscribeInfo); } diff --git a/app/Model/v3/ImsMcFansTag.php b/app/Model/v3/ImsMcFansTag.php new file mode 100644 index 0000000..fb44f28 --- /dev/null +++ b/app/Model/v3/ImsMcFansTag.php @@ -0,0 +1,12 @@ +select(['id', 'nick_name', 'avatar', 'openid', 'total_score', 'real_name']) + ->select(['id', 'nick_name', 'avatar', 'openid', 'unionid', 'total_score', 'real_name']) ->where(['status' => 1, 'id' => $userId]) ->first()->toArray(); }