OrderCountController.class.php 3.33 KB
<?php
/**
 * 统计购买并发订单接口
 * User: yingcai
 * Date: 2018/2/2
 * Time: 下午7:02
 */

namespace Apicp\Controller\LiveOrder;

use Common\Common\Order;

class OrderCountController extends AbstractController
{
    /**
     * OrderCount
     * @author houyingcai
     * @desc 统计购买并发订单接口
     * @return array|bool 购买规则
                array(
                    'live_total' => 60, // 累计购买并发人数
                    'surplus_total' => 12, // 剩余并发人数
                    'expire_total' => 10, // 距离当前时间最近的即将失效人数
                    'expire_days' => 5, // 距离当前时间最近的剩余失效天数
                    'expire_list' => array( // 即将失效的订单列表
                        array(
                            'num' => 10, // 即将失效的并发人数
                            'days' => 5, // 剩余天数
                            'order_sn' => 'DD2018020118403416000131', // 订单编号
                            'pay_time' => '1515340800000', // 支付成功时间
                            'end_time' => '1519927261000', // 使用截止时间
                        ),
                    ),
                )
     */
    public function Index_post()
    {

        $orderServ = &Order::instance();
        // 获取购买并发人数和剩余并发人数
        $liveOrder = $orderServ->getLiveCastBasic();

        // 获取即将失效的并发数和剩余天数
        $expireList = $orderServ->FetchAllLiveCastAvailable();

        $list = [];
        $expireTotal = 0;
        $expireDays = 0;

        if (!empty($expireList)) {
            // 距离当前最近的失效并发数
            $expireTotal = $expireList[0]['oauMaxAmout'] - $expireList[0]['oauAvailableAmout'];

            // 计算距离当前时间最近的剩余失效天数(如果第一个大于规定剩余天数,那么就没有即将失效的订单)
            $expireDays = ceil(($expireList[0]['oauEnd'] - MILLI_TIME) / 1000 / 86400);

            // 剩余过期天数小于规定的剩余天数
            if ($expireDays <= 15) {
                // 格式化返回列表数据
                foreach ($expireList as $val) {
                    $days = ceil(($val['oauEnd'] - MILLI_TIME) / 1000 / 86400);
                    // 剩余过期天数小于规定的剩余天数
                    if ($days <= 15) {

                        $list[] = [
                            'num' => $val['oauMaxAmout'] - $val['olcAvailableAmout'],
                            'days' => $days,
                            'order_sn' => $val['ordCode'],
                            'pay_time' => $val['oauBegin'],
                            'end_time' => $val['oauEnd'],
                        ];
                    }
                }

                // 距离当前时间最近的失效天数
                $expireDays = $list[0]['days'];
            } else {

                $expireDays = 0;
            }
        }

        // 返回结果
        $this->_result = [
            'live_total' => intval($liveOrder['liveTotal']),
            'surplus_total' => (int)($liveOrder['liveTotal'] - $liveOrder['liveExpend']),
            'expire_total' => $expireTotal,
            'expire_days' => $expireDays,
            'expire_list' => $list,
        ];

        return true;
    }
}