AnswerDetailModel.class.php 5.68 KB
<?php
/**
 * 考试-答卷详情表
 * @author: houyingcai
 * @email:    594609175@qq.com
 * @date :  2017-05-19 18:03:52
 * @version $Id$
 */

namespace Common\Model;

class AnswerDetailModel extends AbstractModel
{
    // 待批阅
    const READ = 1;

    // 批阅中
    const READING = 2;

    // 已批阅
    const READ_OVER = 3;

    /**
     * 构造方法
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * 查询答题记录个数
     *
     * @author: 蔡建华
     * @param int $ep_id
     * @param string $uid 用户ID
     * @param string $fields 返回字段
     *
     * @return array
     */
    public function answer_detail_record_num($ep_id = 0, $uid = '', $fields = "*")
    {
        $where = ' status < ? AND domain = ? ';
        $params[] = AnswerModel::ST_DELETE;
        $params[] = QY_DOMAIN;
        $AnswerModel = new AnswerModel();
        $table = $AnswerModel->get_tname();
        $sql = " AND ea_id in( select distinct  ea_id from " . $table . " where  status <? AND domain= ? AND ep_id=?  AND is_pass in(?) AND uid = ?)";
        $params[] = AnswerModel::ST_DELETE;
        $params[] = QY_DOMAIN;
        $params[] = $ep_id;
        $params[] = [self::NO_MY_PASS, self::MY_PASS];
        $params[] = $uid;
        $sql = "select count( {$fields}) from  __TABLE__ where {$where}  $sql";

        return $this->_m->result($sql, $params);
    }

    /**
     * 计算分数总和
     *
     * @param array $conds 查询条件
     *
     * @return array|bool
     */
    public function get_score($conds = [])
    {
        $params = [];
        // 条件
        $wheres = [];
        if (!$this->_parse_where($wheres, $params, $conds)) {

            return false;
        }
        // 企业标记
        $wheres[] = "`{$this->prefield}domain`=?";
        $params[] = QY_DOMAIN;
        // 状态条件
        $wheres[] = "`{$this->prefield}status`<?";
        $params[] = $this->get_st_delete();
        $sql = "select sum(my_score) FROM __TABLE__ where " . implode(' AND ', $wheres);
        return $this->_m->result($sql, $params);
    }

    /**
     * 根据条件查询试卷
     *
     * @author: 蔡建华
     * @param $conds array 查询条件
     * @param null $page_option 分页参数
     * @param array $order_option 排序参数
     * @param string $fields 查询的字段
     *
     * @return array|bool
     */
    public function count_answer_detail_list($conds, $page_option = null, $order_option = [], $fields = '*')
    {
        $params = [];
        // 条件
        $wheres = [];
        if (!$this->_parse_where($wheres, $params, $conds)) {
            return false;
        }
        // 企业标记
        $wheres[] = "a.domain=?";
        $params[] = QY_DOMAIN;
        // 状态条件
        $wheres[] = "a.status<?";
        $params[] = $this->get_st_delete();
        $answer = new AnswerModel();
        $table = $answer->get_tname();
        // 排序
        $orderby = '';
        if (!$this->_order_by($orderby, $order_option)) {
            return false;
        }
        // 分页参数
        $limit = '';
        if (!$this->_limit($limit, $page_option)) {
            return false;
        }
        $sql = "SELECT  $fields FROM __TABLE__ a LEFT JOIN  $table b on a.ea_id =b.ea_id   WHERE " . implode(' AND ',
                $wheres) . " {$orderby} {$limit}";

        // 读取记录
        return $this->_m->fetch_array($sql, $params);
    }

    /**
     * 根据条件查询试卷列表
     *
     * @author: 蔡建华
     * @param $conds array 查询条件
     * @param null $page_option 分页参数
     * @param array $order_option 排序参数
     * @param string $fields 查询的字段
     *
     * @return array|bool
     */
    public function answer_detail_list($conds, $page_option = null, $order_option = [], $fields = '*')
    {
        $params = [];
        // 条件
        $wheres = [];
        if (!$this->_parse_where($wheres, $params, $conds)) {
            return false;
        }
        // 企业标记
        $wheres[] = "domain=?";
        $params[] = QY_DOMAIN;
        // 状态条件
        $wheres[] = "status<?";
        $params[] = $this->get_st_delete();
        $answer = new AnswerModel();
        $table = $answer->get_tname();
        $wheres[] = "ea_id in(SElECT ea_id FROM $table where (answer_status=?))";
        $params[] = self::READ_OVER;
        // 排序
        $orderby = '';
        if (!$this->_order_by($orderby, $order_option)) {
            return false;
        }
        // 分页参数
        $limit = '';
        if (!$this->_limit($limit, $page_option)) {
            return false;
        }
        $sql = "SELECT {$fields} FROM __TABLE__ WHERE " . implode(' AND ',
                $wheres) . "{$orderby}{$limit}";
        // 读取记录
        return $this->_m->fetch_array($sql, $params);
    }

    /**
     * 根据条件查询试卷列表
     *
     * @author: 蔡建华
     * @param $conds array 查询条件
     *
     * @return int
     */
    public function answer_detail_count($conds)
    {
        $params = [];
        // 条件
        $wheres = [];
        if (!$this->_parse_where($wheres, $params, $conds)) {
            return false;
        }
        // 企业标记
        $wheres[] = "a.domain=?";
        $params[] = QY_DOMAIN;
        // 状态条件
        $wheres[] = "a.status<?";
        $params[] = $this->get_st_delete();
        $wheres[] = "b.answer_status=?";
        $params[] = self::READ_OVER;

        $sql = "SELECT count(*) FROM __TABLE__ a LEFT JOIN  `oa_exam_answer` b ON a.ea_id =b.ea_id WHERE " . implode(' AND ',
                $wheres);

        // 读取记录
        $count = $this->_m->result($sql, $params);
        return $count;
    }

}