예제 #1
0
 /**
  * Query user list
  *
  * <b>Request Type</b>: GET<br/><br/>
  * <b>Request Endpoint</b>:http://{server-domain}/api/channel/followers<br/><br/>
  * <b>Response Content-type</b>: application/json<br/><br/>
  * <b>Summary</b>: This api is used for querying users by propertities.
  * <br/><br/>
  *
  * <b>Request Params</b>:<br/>
  *     channelId: string, id of the channel<br/>
  *     tags: array, if more than one tag, implode by comma<br/>
  *     gender: MALE, FEMALE<br/>
  *     country: string<br/>
  *     province: string<br/>
  *     city: string<br/>
  *     subscribeTimeFrom: timestamp<br/>
  *     nickname: string<br/>
  *     per-page: int<br/>
  *     page: int<br/>
  *     <br/><br/>
  *
  * <b>Response Params:</b><br/>
  *     items: array, json array to queried channels detail information<br/>
  *     _meta: array, the pagination information.
  *     <br/><br/>
  *
  * <br/><br/>
  *
  * <b>Response Example</b>:<br/>
  * <pre>
  * {
  *  "items": [
  *      {
  *          "id": "548028238d7a9e9dc8397f8a",
  *          "accountId": "548024cfe4b0cea2642d3c78",
  *          "subscribed": true,
  *          "originId": "oYoUVt2zT6mtrFn9T0nlNWkzJbEo",
  *          "nickname": "hank",
  *          "gender": "Female",
  *          "language": "english",
  *          "city": "武汉",
  *          "province": "湖北",
  *          "country": "中国",
  *          "headerImgUrl": "http://ssp-stage.qiniudn.com/avatar/oib7yt7612cCWuzWj1J5r9kl8-VU.jpg",
  *          "subscribeTime": "2014-12-02 08:17:01",
  *          "unionId": "12.0",
  *          "massSendUsageCount": 4,
  *          "tags": [
  *              "高富帅",
  *              "白富美"
  *          ],
  *          "subscribeSource": "other",
  *          "firstSubscribeSource": "other",
  *          "firstSubscribeTime": "2014-12-02 08:17:01",
  *          "interactMessageCount": 1,
  *          "lastInteractMessageTime": null,
  *          "lastInteractEventTime": "2014-12-02 08:17:01",
  *          "createTime": "2014-12-02 08:17:01",
  *          "unsubscribeTime": null
  *      },
  *      {
  *          "id": "54803daf8d7a9e9dc8397f8b",
  *          "accountId": "548024cfe4b0cea2642d3c78",
  *          "subscribed": true,
  *          "originId": "oYoUVt2zT6mtrFn9T0nlNWkzJbEo",
  *          "nickname": "clark",
  *          "gender": "Female",
  *          "language": "english",
  *          "city": "青岛",
  *          "province": "山东",
  *          "country": "中国",
  *          "headerImgUrl": "http://ssp-stage.qiniudn.com/avatar/oib7yt7612cCWuzWj1J5r9kl8-VU.jpg",
  *          "subscribeTime": "2014-12-02 08:17:01",
  *          "unionId": "12.0",
  *          "massSendUsageCount": 4,
  *          "tags": [
  *              "高富帅",
  *              "白富美"
  *          ],
  *          "subscribeSource": "other",
  *          "firstSubscribeSource": "other",
  *          "firstSubscribeTime": "2014-12-02 08:17:01",
  *          "interactMessageCount": 1,
  *          "lastInteractMessageTime": null,
  *          "lastInteractEventTime": "2014-12-02 08:17:01",
  *          "createTime": "2014-12-02 08:17:01",
  *          "unsubscribeTime": null
  *      }
  *  ],
  *  "_meta": {
  *      "totalCount": 1,
  *      "pageCount": 1,
  *      "currentPage": 1,
  *      "perPage": 20
  *  }
  * }
  * </pre>
  */
 public function actionIndex()
 {
     $query = $this->getQuery();
     $accountId = $this->getAccountId();
     if (empty($query['channelId'])) {
         throw new BadRequestHttpException("Missing channel id");
     }
     $channelId = $query['channelId'];
     unset($query['channelId']);
     $query['pageSize'] = $query['per-page'];
     $query['pageNum'] = $query['page'];
     unset($query['per-page']);
     unset($query['page']);
     $raw = Yii::$app->weConnect->getFollowers($channelId, $query);
     if (array_key_exists('results', $raw)) {
         $openIds = ArrayHelper::getColumn($raw['results'], 'originId');
         $members = Member::getByOpenIds($accountId, $openIds);
         $openIdNameMap = $this->getOpenIdNameMap($members);
         foreach ($raw['results'] as &$result) {
             $result['name'] = empty($openIdNameMap[$result['originId']]) ? '' : $openIdNameMap[$result['originId']];
         }
         return ['items' => $raw['results'], '_meta' => ['totalCount' => $raw['totalAmount'], 'pageCount' => ceil($raw['totalAmount'] / $raw['pageSize']), 'currentPage' => $raw['pageNum'], 'perPage' => $raw['pageSize']]];
     } else {
         throw new ServerErrorHttpException(Yii::t('channel', 'api_data_exception'));
     }
 }