UnJoinListController.class.php 2.71 KB
<?php
/**
 *【积分抽奖-后台】未参与人员列表接口
 * User: daijun
 * Date: 2018/3/23
 * Time: 下午3:42
 */

namespace Apicp\Controller\Activity;


use Common\Common\Constant;
use Common\Common\User;
use Common\Service\ActivityService;
use Common\Service\RecordService;
use Common\Service\RightService;

class UnJoinListController extends \Apicp\Controller\AbstractController
{

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

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

        $activity_serv = new ActivityService();

        $detail = $activity_serv->get($params['ac_id']);

        if (empty($detail)) {
            // 活动信息不存在
            E('_ERR_ACTIVITY_DATA');
        }

        $record_serv = new RecordService();

        $record_list = $record_serv->list_by_conds(['ac_id' => $params['ac_id']], null, [], 'uid');

        // 已参与的人员uid集合
        $uids = [];
        if (!empty($record_list)) {
            $uids = array_filter(array_unique(array_column($record_list, 'uid')));
        }

        // 查询权限人员集合
        $right = new RightService();
        $all_right_users = $right->get_uids_by_right($detail);

        // 获取未参与人员uid集合
        $un_join_uids = array_diff($all_right_users, $uids);


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

        $list = [];
        if (!empty($un_join_uids)) {

            // 对未参与人员uid集合分页
            $un_uids = $record_serv->get_page_data($un_join_uids, $page, $limit);

            // 获取人员信息
            $user_list = User::instance()->listByUid($un_uids);

            foreach ($user_list as $user) {
                // 循环格式化返回数据
                $list[] = [
                    'memUid' => $user['memUid'],
                    'username' => $user['memUsername'],
                    'dp_name'=>empty($user['dpName'])?'':implode(',',array_column($user['dpName'],'dpName')),
                    'job' => $user['memJob'],
                    'role' => $user['memRole'],
                    'mobile' => $user['memMobile'],
                ];
            }
        }

        // 返回数据
        $this->_result = [
            'page' => intval($page),
            'limit' => intval($limit),
            'join_total' => count($uids),
            'un_join_total' => count($un_join_uids),
            'total' => count($un_join_uids),
            'list' => $list
        ];

        return true;
    }

}