JoinListController.class.php 2.81 KB
<?php
/**
 * 【销售活动-后台】后台参与情况列表
 *
 * author xtong
 */

namespace Apicp\Controller\Activity;

use Com\PackageValidate;
use Common\Service\ActivityService;
use Common\Service\CommentService;

class JoinListController extends \Apicp\Controller\AbstractController
{

    // 参与列表类型:已参与
    const TYPE_JOIN_LIST = 2;
    // 参与列表类型:未参与
    const TYPE_UNJOIN_LIST = 1;


    public function Index_post()
    {

        // 验证规则
        $rules = [
            'ac_id' => 'require',
            'is_join' => 'require|between:1,2',
        ];

        $msg = [
            'ac_id.require' => L('_EMPTY_ACTIVITY_ID'),
            'is_join.require' => L('_ERR_JOIN_STATUS_PARAMS'),
            'is_join.between' => L('_ERR_JOIN_STATUS_PARAMS'),
        ];

        // 验证数据
        $validate = new PackageValidate($rules, $msg, array_keys($rules));
        $postData = $validate->postData;
        $params = I('post.');

        // 查询活动详情
        $activity_s = new ActivityService();
        $activity_info = $activity_s->get($postData['ac_id']);

        if (empty($activity_info)) {
            // 只开启审核未开启红包,存在活动被删除的情况
            E('_ERR_ACTIVITY_NOT_FOUND');
        }

        $comment_s = new CommentService();
        $list = [];
        $total = [];
        $join_num = $comment_s->count_join($params);

        // 已参与人员信息分页查询
        $join_list = $comment_s->list_join($params);
        // 已参与列表
        if (self::TYPE_JOIN_LIST == $postData['is_join'] && !empty($join_num)) {

            $list = $join_list;
            $total = $join_num;
        }

        // 获取未参与人数与未参与uid数组
        $unjoin_result = $comment_s->count_unjoin($params, $join_list);
        $unjoin_num = $unjoin_result['unjoin_num'];

        if (self::TYPE_UNJOIN_LIST == $postData['is_join'] && !empty($unjoin_num)) {
            // 未参与人员信息分页查询
            $unjoin_list = $comment_s->list_unjoin($params, $unjoin_result['unjoin_uids']);
            $list = $unjoin_list;
            $total = $unjoin_num;
        }

        if ($activity_info['join_total'] != ($join_num + $unjoin_num)) {
            // 更新已参与和应参与人数
            $activity_s->update($postData['ac_id'], ['join_num' => $join_num, 'join_total' => $join_num + $unjoin_num]);
        }

        $this->_result = [
            'join_num' => $join_num,
            'unjoin_num' => $unjoin_num,
            'total' => $total,
            'limit' => !empty($params['page']) ? intval($params['page']) : CommentService::DEFAULT_PAGE,
            'page' => !empty($params['limit']) ? intval($params['limit']) : CommentService::DEFAULT_LIMIT,
            'list' => $list
        ];

        return true;
    }
}