ListController.class.php 4.37 KB
<?php
/**
 * 订单列表接口
 * User: yingcai
 * Date: 2018/2/2
 * Time: 上午11:42
 */

namespace Apicp\Controller\Order;

use Com\PackageValidate;
use Common\Common\Order;

class ListController extends AbstractController
{
    // 默认页数
    const PAGING_DEFAULT_PAGE = 1;
    // 默认分页条数
    const PAGING_DEFAULT_LIMIT = 10;

    /**
     * List
     * @author houyingcai
     * @desc 订单列表接口
     * @param Int page:false:1 页码
     * @param Int limit:false:20 每页记录数
     * @param String order_sn:false 订单编号
     * @param String product_id:false 商品ID
     * @param Int start_time:false 开始时间
     * @param Int end_time:false 终止时间
     * @param Int order_status:false 订单支付状态
     * @return array|bool 商品信息
                array(
                    'page' => 1, // 页码
                    'limit' => 5, // 每页记录数
                    'total' => 20, // 记录总数
                    'list' => array(
                        array(
                            'order_id' => '006474BE7F00000175505861C25D23D5', // 订单ID
                            'order_sn' => 'LC2018020118403416000131', // 订单编号
                            'order_created' => '1515340800000', // 创建时间
                            'order_title' => '员圈直播服务', // 封面图片URL
                            'order_price' => 1000, // 订单金额(单位:分)
                            'pay_type' => 3, // 支付方式(1=微信支付,2=支付宝支付,3=线下支付)
                            'order_status' => 1, // 支付状态(1=待支付,2=已完成,3=已取消,4=已关闭,100=支付中)
                            'order_type' => 1, // 订单类型(1=购买「业绩比拼」应用,2=扩充「业绩比拼」应用使用人数,3=购买「员圈直播」并发人数,4=购买「员圈」应用,5=扩充「员圈」应用使用人数,6=购买空间/流量扩展包)
                            'app' => 'live', // 应用标识
                        ),
                    ),
                )
     */
    public function Index_post()
    {
        // 验证规则
        $rules = [
            'page' => 'integer',
            'limit' => 'integer',
            'order_sn' => 'max:24',
            'start_time' => 'integer',
            'end_time' => 'integer',
            'product_id' => 'max:32',
            'order_status' => 'integer|in:1,2,3,4',
        ];

        // 验证数据
        $validate = new PackageValidate($rules, [], array_keys($rules));
        $postData = $validate->postData;

        // 分页默认值
        $page = isset($postData['page']) ? $postData['page'] : self::PAGING_DEFAULT_PAGE;
        $limit = isset($postData['limit']) ? $postData['limit'] : self::PAGING_DEFAULT_LIMIT;

        $orderService = &Order::instance();

        // 组装查询条件
        $condition = [
            'ordCode' => $postData['order_sn'],
            'prId' => $postData['product_id'],
            'startTime' => $postData['start_time'],
            'endTime' => $postData['end_time'],
            'ordPayStatus' => $postData['order_status']
        ];

        $result = $orderService->fetchOrderList($condition, $page, $limit, ['ordCreated' => 'DESC']);

        $list = [];
        if ($result['total']) {
            // 格式化返回数据
            foreach ($result['list'] as $val) {

                // 订单状态转换(状态为1或者100时,统一转为1)
                if ($val['ordPayStatus'] == self::ORDER_STATUS_PAYING) {

                    $val['ordPayStatus'] = self::ORDER_STATUS_WAITING_PAY;
                }

                $list[] = [
                    'order_id' => $val['ordId'],
                    'order_sn' => $val['ordCode'],
                    'order_created' => $val['ordCreated'],
                    'order_title' => $val['ordTitle'],
                    'order_price' => $val['ordTotalPrice'],
                    'pay_type' => $val['ordPayType'],
                    'order_type' => $val['ordType'],
                    'order_status' => $val['ordPayStatus'],
                    'app' => $val['plIdentifier'],
                ];
            }
        }

        $this->_result = [
            'page' => $page,
            'limit' => $limit,
            'total' => $result['total'],
            'list' => $list,
        ];

        return true;
    }
}