RemindController.class.php 2.84 KB
<?php
/**
 * 未读人员提醒
 * RemindController.class.php
 * @author: 何岳龙
 * @date :  2017年5月31日16:48:05
 * @version $Id$
 */

namespace Apicp\Controller\Answer;

use Common\Service\AnswerService;
use Common\Service\PaperService;

class RemindController extends AbstractController
{
    /** @var  PaperService  实例化考试表对象 */
    protected $paper_service;
    /** @var  AnswerService  实例化答卷表对象 */
    protected $answer_service;

    public function before_action($action = '')
    {
        if (!parent::before_action($action)) {
            return false;
        }

        $this->paper_service = new PaperService();
        $this->answer_service = new AnswerService();

        return true;
    }

    public function Index_post()
    {
        $params = I('post.');

        $ep_id = rintval($params['ep_id']);

        // UIDS不能为空
        if (!empty($params['uids'])) {

            $uids = array_unique(array_filter(array_column($params['uids'], 'uid')));

            // 如果UID不存在
            if (empty($uids)) {

                E('_EMPTY_UID');

            }

        }

        // 试卷ID不能为空
        if (empty($ep_id)) {

            E('_EMPTY_EP_ID');

        }

        // 获取试卷信息
        $paper = $this->paper_service->get($ep_id);
        // 试卷不存在
        if (empty($paper)) {

            E('_ERR_PAPER_NOT_FOUND');

        }

        // 如果考试已终止
        if ($paper['exam_status'] == PaperService::PAPER_STOP) {

            E('_ERR_EXAM_STOP');

        }

        // 如果考试已结束
        if ($paper['end_time'] <= MILLI_TIME) {

            E('_ERR_EXAM_END');

        }

        // 如果未读人员列表为空
        if (empty($params['uids'])) {

            $conds = [
                'epc_id' => $ep_id,
                'er_type' => AnswerService::RIGHT_PAPER
            ];

            // 获取未参与考试人员列表及人数
            $unjoin_data = $this->answer_service->get_unjoin_data($conds, $ep_id, $paper['is_all']);
            // 未参加人的列表
            $list = $unjoin_data['unjoin_list'];

            sort($list);
        } else {
            // 获取用户IDS
            $list = array_unique(array_filter(array_column($params['uids'], 'uid')));
        }

        // 消息提醒
        $data = [
            'uids' => $list,
            'name' => $paper['ep_name'],
            'description' => $paper['intro'],
            'img_id' => $paper['cover_id'],
            'is_cover_open'=>$paper['is_cover_open'],
            'id' => $paper['ep_id'],
            'begin_time' => $paper['begin_time'],
            'end_time' => $paper['end_time']
        ];

        // 给未读人员发送消息
        $this->answer_service->send_msg($data, AnswerService::ANSWER_UN_MSG);

        $this->_result = [];

        return true;
    }
}