Order.class.php 8.95 KB
<?php
/**
 * Created by PhpStorm.
 * User: yingcai
 * Date: 2018/2/1
 * Time: 上午9:46
 */

namespace VcySDK;

class Order
{
    /**
     * 接口调用类
     *
     * @var object
     */
    private $serv = null;

    /**
     * 订单列表获取接口
     * %s = {apiDomain}/b/{enumber}/{thirdIdentifier}
     *
     * @var string
     */
    const ORDER_LIST_URL = '%s/order/list';

    /**
     * 订单详情获取接口
     * %s = {apiDomain}/b/{enumber}/{thirdIdentifier}
     *
     * @var string
     */
    const ORDER_DETAIL_URL = '%s/order/get';

    /**
     * 添加订单接口
     * %s = {apiDomain}/b/{enumber}/{thirdIdentifier}
     *
     * @var string
     */
    const ORDER_ADD_URL = '%s/order/add';

    /**
     * 编辑订单接口
     * %s = {apiDomain}/b/{enumber}/{thirdIdentifier}
     *
     * @var string
     */
    const ORDER_UPDATE_URL = '%s/order/update';

    /**
     * 删除订单接口
     * %s = {apiDomain}/b/{enumber}/{thirdIdentifier}
     *
     * @var string
     */
    const ORDER_DELETE_URL = '%s/order/delete';

    /**
     * 购买直播订单列表接口(购买直播成功的订单)
     * %s = {apiDomain}/b/{enumber}/{thirdIdentifier}
     *
     * @var string
     */
    const ORDER_LIVE_CAST_URL = '%s/order-app-user/list';

    /**
     * 获取商品购买规则接口
     * %s = {apiDomain}/s/{thirdIdentifier}
     *
     * @var string
     */
    const PRODUCT_RULE_URL = '%s/product/get-by-key';

    /**
     * 获取商品列表接口
     * %s = {apiDomain}/s/{thirdIdentifier}
     *
     * @var string
     */
    const PRODUCT_LIST_URL = '%s/product/list';

    /**
     * 获取累计购买并发数和已消费并发数
     * %s = {apiDomain}/b/{enumber}{thirdIdentifier}
     *
     * @var string
     */
    const ORDER_LIVE_CAST_BASIC_INFO = '%s/order-live-cast/basic-info';

    /**
     * 获取即将失效的并发订单列表
     * %s = {apiDomain}/b/{enumber}{thirdIdentifier}
     *
     * @var string
     */
    const ORDER_LIVE_CAST_AVAILABLE_LIST = '%s/order-live-cast/available-list';

    /**
     * 并发人数扣减接口
     * %s = {apiDomain}/b/{enumber}{thirdIdentifier}
     *
     * @var string
     */
    const LIVE_CAST_EXPEND_URL = '%s/live-cast-expend/consum';

    /**
     * 获取直播消耗记录列表接口
     * %s = {apiDomain}/b/{enumber}{thirdIdentifier}
     *
     * @var string
     */
    const LIVE_CAST_EXPEND_LIST_URL = '%s/live-cast-expend/list';

    /**
     * 可使用订单列表(包括正在生效的订单)
     * %s = {apiDomain}/b/{enumber}{thirdIdentifier}
     *
     * @var string
     */
    const ORDER_VALID_LIST_URL = '%s/order-app-user/list';

    /**
     * 获取应用授权人数接口
     * %s = {apiDomain}/b/{enterprise}
     *
     * @var string
     */
    const GET_ALLOW_USER_TOTAL = '%s/plugin/get-allow-user-total';

    /**
     * 获取企业有效的业绩比拼订单列表
     * %s = {apiDomain}/b/{enumber}{thirdIdentifier}
     *
     * @var string
     */
    const SALE_VALID_ORDER_LIST = '%s/compete/detail';


    /**
     * 初始化
     *
     * @param Service $serv 接口调用类
     */
    public function __construct($serv)
    {

        $this->serv = $serv;
    }

    /**
     * 获取订单列表
     *
     * @param array $condition 查询条件数据
     * @param mixed $orders    排序字段
     * @param int   $page      当前页码
     * @param int   $perpage   每页记录数
     *
     * @return boolean|multitype:
     */
    public function fetchOrderList($condition = [], $page = 1, $perpage = 30, $orders = [])
    {

        // 查询参数
        $condition = $this->serv->mergeListApiParams($condition, $orders, $page, $perpage);
        return $this->serv->postSDK(self::ORDER_LIST_URL, $condition, 'generateApiUrlB');
    }

    /**
     * 获取订单详情
     *
     * @param array $params 所需参数
     * @return boolean|multitype:
     */
    public function fetchOrder($params)
    {

        return $this->serv->postSDK(self::ORDER_DETAIL_URL, $params, 'generateApiUrlB');
    }

    /**
     * 添加订单
     *
     * @param array $params 所需参数
     * @return boolean|multitype:
     */
    public function addOrder($params)
    {

        return $this->serv->postSDK(self::ORDER_ADD_URL, $params, 'generateApiUrlB');
    }

    /**
     * 编辑订单
     *
     * @param array $params 所需参数
     * @return boolean|multitype:
     */
    public function updateOrder($params)
    {

        return $this->serv->postSDK(self::ORDER_UPDATE_URL, $params, 'generateApiUrlB');
    }

    /**
     * 删除订单
     *
     * @param string $params 所需参数
     * @return boolean|multitype:
     */
    public function deleteOrder($params)
    {

        return $this->serv->postSDK(self::ORDER_DELETE_URL, $params, 'generateApiUrlB');
    }

    /**
     * 获取购买直播订单列表
     *
     * @param array $condition 查询条件数据
     * @param mixed $orders    排序字段
     * @param int   $page      当前页码
     * @param int   $perpage   每页记录数
     *
     * @return boolean|multitype:
     */
    public function fetchOrderLiveList($condition = [], $orders = [], $page = 1, $perpage = 30)
    {

        // 查询参数
        $condition = $this->serv->mergeListApiParams($condition, $orders, $page, $perpage);

        return $this->serv->postSDK(self::ORDER_LIVE_CAST_URL, $condition, 'generateApiUrlB');
    }

    /**
     * 获取累计购买并发数和已消费并发数
     *
     * @param string $params 所需参数
     * @return boolean|multitype:
     */
    public function getLiveCastBasic($params)
    {

        return $this->serv->postSDK(self::ORDER_LIVE_CAST_BASIC_INFO, $params, 'generateApiUrlB');
    }

    /**
     * 获取即将失效的并发订单列表
     *
     * @param array $params 所需参数
     * @return boolean|multitype:
     */
    public function FetchAllLiveCastAvailable($params)
    {

        return $this->serv->postSDK(self::ORDER_LIVE_CAST_AVAILABLE_LIST, $params, 'generateApiUrlB');
    }

    /**
     * 获取商品购买规则
     *
     * @param array $params 所需参数
     * @return boolean|multitype:
     */
    public function fetchProductRule($params)
    {

        return $this->serv->postSDK(self::PRODUCT_RULE_URL, $params, 'generateApiUrlSP');
    }

    /**
     * 可使用订单列表(包括正在生效的订单)
     *
     * @param array $params 所需参数
     * @return boolean|multitype:
     */
    public function fetchValidOrderList($params)
    {

        return $this->serv->postSDK(self::ORDER_VALID_LIST_URL, $params, 'generateApiUrlB');
    }

    /**
     * 获取商品列表
     *
     * @param array $condition 查询条件数据
     * @param mixed $orders    排序字段
     * @param int   $page      当前页码
     * @param int   $perpage   每页记录数
     *
     * @return boolean|multitype:
     */
    public function fetchProductList($condition = [], $page = 1, $perpage = 30, $orders = [])
    {
        // 查询参数
        $condition = $this->serv->mergeListApiParams($condition, $orders, $page, $perpage);

        return $this->serv->postSDK(self::PRODUCT_LIST_URL, $condition, 'generateApiUrlSP');
    }

    /**
     * 直播并发人数消耗接口
     *
     * @param array $params 所需参数
     * @return boolean|multitype:
     */
    public function LiveCaseExpend($params)
    {

        return $this->serv->postSDK(self::LIVE_CAST_EXPEND_URL, $params, 'generateApiUrlB');
    }

    /**
     * 获取直播消耗记录列表接口
     *
     * @param array $condition 查询条件数据
     *                + int type 查询列表类型(0=全部(默认),1=直播消耗,2=已失效)
     * @param mixed $orders    排序字段
     * @param int   $page      当前页码
     * @param int   $perpage   每页记录数
     *
     * @return boolean|multitype:
     */
    public function fetchLiveCaseExpendList($condition = [], $page = 1, $perpage = 30, $orders = [])
    {
        // 查询参数
        $condition = $this->serv->mergeListApiParams($condition, $orders, $page, $perpage);

        return $this->serv->postSDK(self::LIVE_CAST_EXPEND_LIST_URL, $condition, 'generateApiUrlB');
    }

    /**
     * 获取应用授权人数接口
     *
     * @param array $params 所需参数
     *                  + string plIdentifier 应用标识
     * @return boolean|multitype:
     */
    public function GetAllowUserTotal($params)
    {
        try {

            return $this->serv->postSDK(self::GET_ALLOW_USER_TOTAL, $params, 'generateApiUrlE');

        } catch (Exception $e) {
            if ($e->getSdkCode() == 'NOT_FIND_AGENT') {

                return [];
            }
        }
    }

    /**
     * 获取业绩比拼有效的订单
     *
     * @param array $params 所需参数
     * @return boolean|multitype:
     */
    public function FetchAllSaleValidOrder($params = [])
    {

        return $this->serv->postSDK(self::SALE_VALID_ORDER_LIST, $params, 'generateApiUrlB');
    }
}