<?php
/**
 * OpenGameModel.php UTF-8
 * 玩家每日任务记录表
 *
 * @date    : 2018/10/27 14:05
 *
 * @license 这不是一个自由软件,未经授权不许任何使用和传播。
 * @author  : chenbingling <cbl@huosdk.com>
 * @version : HuoMP 1.0
 */

namespace huomp\model\log;

use huo\model\log\LogModel;
use huo\model\member\MemberModel;

class OpenGameModel extends LogModel {
    /* 数据库名 */
    protected $table = 'mp_log_homepage';

    /**
     * 关联访问者
     *
     * @return \think\model\relation\BelongsTo
     */
    public function visitor() {
        return $this->belongsTo(MemberModel::className(), 'mem_id', 'id')->field('id,username,nickname,avatar');
    }

    /**
     * 插入数据
     *
     * @param      $data
     * @param bool $replace
     * @param bool $get_last_insert_id
     *
     * @return bool|int|string
     */
    public function insertLog($data, $replace = false, $get_last_insert_id = true) {
        $_time = time();
        $_data['mem_id'] = get_val($data, 'mem_id', 0);
        $_data['app_id'] = get_val($data, 'app_id', 0);
        $_data['game_id'] = get_val($data, 'game_id', 0);
        $_data['status'] = get_val($data, 'status', 1);
        $_data['default_duration'] = get_val($data, 'default_duration', 0);
        $_data['start_time'] = $_time;
        $_data['end_time'] = get_val($data, 'end_time', 0);
        $_data['duration'] = get_val($data, 'duration', 0);
        $_data['create_time'] = $_time;
        $_data['update_time'] = get_val($data, 'update_time', 0);
        $_data['date'] = date('Y-m-d', $_data['create_time']);

        return parent::insertLog($_data, $replace, $get_last_insert_id);
    }

    /**
     * @return bool|int
     * @throws \think\db\exception\BindParamException
     * @throws \think\exception\PDOException
     */
    function checkTable() {
        $this->table = $this->getPartitionTableName(
            $this->partition_data, $this->partition_field, $this->partition_rule
        );
        $_sql  = "CREATE TABLE IF NOT EXISTS `$this->table` (";
        $_sql .= "    `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',";
        $_sql .= "    `date` date NOT NULL COMMENT '日期',";
        $_sql .= "    `mem_id` int(11) NOT NULL DEFAULT '0' COMMENT '玩家ID',";
        $_sql .= "    `app_id` int(11) NOT NULL DEFAULT '0' COMMENT '盒子ID',";
        $_sql .= "    `game_id` int(11) NOT NULL DEFAULT '0' COMMENT '游戏ID',";
        $_sql .= "    `status` tinyint(2) NOT NULL DEFAULT '1' COMMENT '1 未完成 2已完成',";
        $_sql .= "    `default_duration` int(4) unsigned NOT NULL DEFAULT '0' COMMENT '任务时长s',";
        $_sql .= "    `start_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '开始时间',";
        $_sql .= "    `end_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '结束时间',";
        $_sql .= "    `duration` int(4) unsigned NOT NULL DEFAULT '0' COMMENT '时长s',";
        $_sql .= "    `create_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',";
        $_sql .= "    `update_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间',";
        $_sql .= "    PRIMARY KEY (`id`),";
        $_sql .= "    UNIQUE KEY `mog_mem_game_unique` (`mem_id`,`game_id`),";
        $_sql .= "    KEY `mog_game_index` (`game_id`),";
        $_sql .= "    KEY `mog_date_index` (`date`)";
        $_sql .= "  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='玩家每日任务记录表';";

        return $this->execute($_sql);
    }
}