mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-03-31 01:30:48 +00:00
199 lines
4.8 KiB
PHP
199 lines
4.8 KiB
PHP
<?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]);
|
|
}
|
|
}
|