12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- namespace Modules\WechatPlatform\Http\Controllers;
- use Catch\Base\CatchController;
- use Exception;
- use Illuminate\Http\Request;
- use Modules\Channel\Services\WechatOpenPlatform\WechatOpenPlatformService;
- use Modules\User\Http\Controllers\UserTrait;
- use Modules\WechatPlatform\Models\WechatAuthorizationInfo;
- class WechatAuthorizationInfoController extends CatchController
- {
- public function __construct(protected readonly WechatAuthorizationInfo $wechatAuthorizationInfo)
- {
-
- }
- use UserTrait;
- public function index(Request $request)
- {
-
- $page_size = $request->get('limit', 20);
- if($this->isOptimizer()){
- $where = [
- ['wechat_authorization_infos.user_id','=',$this->getLoginUserId()],
- ['wechat_authorization_infos.is_enabled','=',1]
- ];
- }elseif($this->isCompanyManager()){
- $where = [
- ['wechat_authorization_infos.puser_id','=',$this->getLoginUserId()],
- ['wechat_authorization_infos.is_enabled','=',1]
- ];
- }else{
- return [];
- }
-
- $nick_name = $request->get('nick_name');
- if($nick_name){
- $where[] = ['wechat_authorization_infos.nick_name','like',"%".$nick_name."%"];
- }
- $result = $this->wechatAuthorizationInfo->where($where)
- ->join('wechat_open_platform_infos','wechat_open_platform_infos.app_id','=','wechat_authorization_infos.component_appid')
- ->join('miniprogram','wechat_open_platform_infos.xcx_appid','=','miniprogram.appid')
- ->join('users','users.id','=','wechat_authorization_infos.user_id')
- ->select('wechat_authorization_infos.nick_name','wechat_authorization_infos.authorizer_appid','miniprogram.name as xcx_name',
- 'wechat_authorization_infos.authorizer_refresh_token','users.username'
- ,'wechat_open_platform_infos.app_id','wechat_open_platform_infos.secret','wechat_open_platform_infos.token','wechat_open_platform_infos.aes_key')
- ->paginate($page_size);
- foreach($result as $item){
- //todo 获取粉丝数
- $item->fans_count = 0;
- $application = WechatOpenPlatformService::buildApplication($item);
- try{
- $officialAccount = $application->getOfficialAccountWithRefreshToken($item->authorizer_appid, $item->authorizer_refresh_token);
- $api = $officialAccount->getClient();
- $response = $api->get('/cgi-bin/user/list', []);
- if($response->isSuccessful()){
- $item->fans_count = $response['total'];
- }
- }catch(Exception $e){
- myLog('WechatAuthorizationInfo')->error($e);
- }
- unset($item->authorizer_refresh_token);
- unset($item->secret);
- unset($item->token);
- unset($item->aes_key);
- unset($item->app_id);
- }
- return $result;
- }
- }
|