WechatAuthorizationInfoController.php 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace Modules\WechatPlatform\Http\Controllers;
  3. use Catch\Base\CatchController;
  4. use Exception;
  5. use Illuminate\Http\Request;
  6. use Modules\Channel\Services\WechatOpenPlatform\WechatOpenPlatformService;
  7. use Modules\User\Http\Controllers\UserTrait;
  8. use Modules\WechatPlatform\Models\WechatAuthorizationInfo;
  9. class WechatAuthorizationInfoController extends CatchController
  10. {
  11. public function __construct(protected readonly WechatAuthorizationInfo $wechatAuthorizationInfo)
  12. {
  13. }
  14. use UserTrait;
  15. public function index(Request $request)
  16. {
  17. $page_size = $request->get('limit', 20);
  18. if($this->isOptimizer()){
  19. $where = [
  20. ['wechat_authorization_infos.user_id','=',$this->getLoginUserId()],
  21. ['wechat_authorization_infos.is_enabled','=',1]
  22. ];
  23. }elseif($this->isCompanyManager()){
  24. $where = [
  25. ['wechat_authorization_infos.puser_id','=',$this->getLoginUserId()],
  26. ['wechat_authorization_infos.is_enabled','=',1]
  27. ];
  28. }else{
  29. return [];
  30. }
  31. $nick_name = $request->get('nick_name');
  32. if($nick_name){
  33. $where[] = ['wechat_authorization_infos.nick_name','like',"%".$nick_name."%"];
  34. }
  35. $result = $this->wechatAuthorizationInfo->where($where)
  36. ->join('wechat_open_platform_infos','wechat_open_platform_infos.app_id','=','wechat_authorization_infos.component_appid')
  37. ->join('miniprogram','wechat_open_platform_infos.xcx_appid','=','miniprogram.appid')
  38. ->join('users','users.id','=','wechat_authorization_infos.user_id')
  39. ->select('wechat_authorization_infos.nick_name','wechat_authorization_infos.authorizer_appid','miniprogram.name as xcx_name',
  40. 'wechat_authorization_infos.authorizer_refresh_token','users.username','wechat_authorization_infos.id'
  41. ,'wechat_open_platform_infos.app_id','wechat_open_platform_infos.secret','wechat_open_platform_infos.token','wechat_open_platform_infos.aes_key')
  42. ->paginate($page_size);
  43. foreach($result as $item){
  44. //todo 获取粉丝数
  45. $item->fans_count = 0;
  46. $application = WechatOpenPlatformService::buildApplication($item);
  47. try{
  48. /*
  49. $officialAccount = $application->getOfficialAccountWithRefreshToken($item->authorizer_appid, $item->authorizer_refresh_token);
  50. $api = $officialAccount->getClient();
  51. $response = $api->get('/cgi-bin/user/list', []);
  52. if($response->isSuccessful()){
  53. $item->fans_count = $response['total'];
  54. }*/
  55. $officialAccount = $application->officialAccount($item->authorizer_appid);
  56. $users = $officialAccount->user->list(); // $n
  57. $item->fans_count = $users['total'];
  58. }catch(Exception $e){
  59. myLog('WechatAuthorizationInfo')->error($e);
  60. }
  61. unset($item->authorizer_refresh_token);
  62. unset($item->secret);
  63. unset($item->token);
  64. unset($item->aes_key);
  65. unset($item->app_id);
  66. }
  67. return $result;
  68. }
  69. }