| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- <?php
- /*
- * This file is part of the overtrue/wechat.
- *
- * (c) overtrue <i@overtrue.me>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
- /**
- * Device.php.
- *
- * @author allen05ren <allen05ren@outlook.com>
- * @copyright 2016 overtrue <i@overtrue.me>
- *
- * @see https://github.com/overtrue
- * @see http://overtrue.me
- */
- namespace EasyWeChat\ShakeAround;
- use EasyWeChat\Core\AbstractAPI;
- use EasyWeChat\Core\Exceptions\InvalidArgumentException;
- /**
- * Class Device.
- */
- class Device extends AbstractAPI
- {
- const API_DEVICE_APPLYID = 'https://api.weixin.qq.com/shakearound/device/applyid';
- const API_DEVICE_APPLYSTATUS = 'https://api.weixin.qq.com/shakearound/device/applystatus';
- const API_DEVICE_UPDATE = 'https://api.weixin.qq.com/shakearound/device/update';
- const API_DEVICE_BINDLOCATION = 'https://api.weixin.qq.com/shakearound/device/bindlocation';
- const API_DEVICE_SEARCH = 'https://api.weixin.qq.com/shakearound/device/search';
- /**
- * Apply device ids.
- *
- * @param int $quantity
- * @param string $reason
- * @param string $comment
- * @param int $poiId
- *
- * @return \EasyWeChat\Support\Collection
- */
- public function apply($quantity, $reason, $comment = '', $poiId = null)
- {
- $params = [
- 'quantity' => intval($quantity),
- 'apply_reason' => $reason,
- ];
- if (!empty($comment)) {
- $params['comment'] = $comment;
- }
- if (!is_null($poiId)) {
- $params['poi_id'] = intval($poiId);
- }
- return $this->parseJSON('json', [self::API_DEVICE_APPLYID, $params]);
- }
- /**
- * Get audit status.
- *
- * @param int $applyId
- *
- * @return \EasyWeChat\Support\Collection
- */
- public function getStatus($applyId)
- {
- $params = [
- 'apply_id' => intval($applyId),
- ];
- return $this->parseJSON('json', [self::API_DEVICE_APPLYSTATUS, $params]);
- }
- /**
- * Update a device comment.
- *
- * @param array $deviceIdentifier
- * @param string $comment
- *
- * @return \EasyWeChat\Support\Collection
- */
- public function update(array $deviceIdentifier, $comment)
- {
- $params = [
- 'device_identifier' => $deviceIdentifier,
- 'comment' => $comment,
- ];
- return $this->parseJSON('json', [self::API_DEVICE_UPDATE, $params]);
- }
- /**
- * Bind location for device.
- *
- * @param array $deviceIdentifier
- * @param int $poiId
- * @param int $type
- * @param string $poiAppid
- *
- * @return \EasyWeChat\Support\Collection
- *
- * @throws InvalidArgumentException
- */
- public function bindLocation(array $deviceIdentifier, $poiId, $type = 1, $poiAppid = null)
- {
- $params = [
- 'device_identifier' => $deviceIdentifier,
- 'poi_id' => intval($poiId),
- ];
- if (2 === $type) {
- if (is_null($poiAppid)) {
- throw new InvalidArgumentException('If value of argument #3 is 2, argument #4 is required.');
- }
- $params['type'] = 2;
- $params['poi_appid'] = $poiAppid;
- }
- return $this->parseJSON('json', [self::API_DEVICE_BINDLOCATION, $params]);
- }
- /**
- * Fetch batch of devices by deviceIds.
- *
- * @param array $deviceIdentifiers
- *
- * @return \EasyWeChat\Support\Collection
- */
- public function fetchByIds(array $deviceIdentifiers)
- {
- $params = [
- 'type' => 1,
- 'device_identifiers' => $deviceIdentifiers,
- ];
- return $this->fetch($params);
- }
- /**
- * Pagination to fetch batch of devices.
- *
- * @param int $lastSeen
- * @param int $count
- *
- * @return \EasyWeChat\Support\Collection
- */
- public function pagination($lastSeen, $count)
- {
- $params = [
- 'type' => 2,
- 'last_seen' => intval($lastSeen),
- 'count' => intval($count),
- ];
- return $this->fetch($params);
- }
- /**
- * Fetch batch of devices by applyId.
- *
- * @param int $applyId
- * @param int $lastSeen
- * @param int $count
- *
- * @return \EasyWeChat\Support\Collection
- */
- public function fetchByApplyId($applyId, $lastSeen, $count)
- {
- $params = [
- 'type' => 3,
- 'apply_id' => intval($applyId),
- 'last_seen' => intval($lastSeen),
- 'count' => intval($count),
- ];
- return $this->fetch($params);
- }
- /**
- * Fetch batch of devices.
- *
- * @param array $params
- *
- * @return \EasyWeChat\Support\Collection
- */
- private function fetch($params)
- {
- return $this->parseJSON('json', [self::API_DEVICE_SEARCH, $params]);
- }
- }
|