ListController.class.php 2.68 KB
<?php
/**
 *【积分抽奖-后台】中奖列表接口
 * User: daijun
 * Date: 2018/3/23
 * Time: 下午3:42
 */

namespace Apicp\Controller\Prize;


use Common\Common\Constant;
use Common\Service\RecordService;

class ListController extends \Apicp\Controller\AbstractController
{

    public function Index_post()
    {
        // 获取参数
        $params = I('post.');

        if (empty($params['ac_id'])) {
            // 活动ID不能为空
            E('_EMPTY_ACTIVITY_ID');
        }

        if (!isset($params['type']) || !in_array($params['type'], [Constant::HAVE_PRIZE, Constant::NO_PRIZE])) {
            // 如果type为空或者不是特定的数值【未中奖,已中奖】
            E('_ERR_RECORDS_TYPE');
        }

        // 默认值
        $page = !empty($params['page']) ? intval($params['page']) : Constant::DEFAULT_PAGE;
        $limit = !empty($params['limit']) ? intval($params['limit']) : Constant::DEFAULT_LIMIT;

        // 分页
        list($start, $limit) = page_limit($page, $limit);

        $page_option = [$start, $limit];

        // 时间倒序
        $order_option = ['lr_id' => 'DESC'];

        $record_serv = new RecordService();

        // 组织查询条件
        $where = $record_serv->get_where($params);

        // 列表总数
        $total = $record_serv->count_by_conds($where);

        $list = [];

        if ($total > 0) {
            // 定义查询字段
            $fields = 'lr_id,lp_id,lp_name,is_prize,username,dp_name,mobile,role,job,remark,created';

            // 查询列表数据
            $list = $record_serv->list_by_conds($where, $page_option, $order_option, $fields);
        }

        if ($params['type'] == Constant::HAVE_PRIZE) {
            // 已中奖情况下需要查询未中奖总数
            $total_no_prize = $record_serv->count_by_conds(['is_prize' => Constant::NO_PRIZE, 'ac_id' => $params['ac_id']]);

            $total_prize = $total;
        } else {
            // 未中奖情况下

            foreach ($list as &$prize) {
                // 循环格式化中奖信息为'谢谢参与'
                $prize['lp_name'] = '谢谢参与';
            }

            // 未中奖情况下需要查询已中奖总数
            $total_prize = $record_serv->count_by_conds(['is_prize' => Constant::HAVE_PRIZE, 'ac_id' => $params['ac_id']]);

            $total_no_prize = $total;
        }

        // 组装返回数据
        $this->_result = [
            'total' => intval($total),
            'total_prize' => $total_prize,
            'total_no_prize' => $total_no_prize,
            'limit' => intval($limit),
            'page' => intval($page),
            'list' => $list
        ];

        return true;
    }

}