<?php
/**
 * MemberExtModel.php UTF-8
 *
 *
 * @date    : 2018/5/4 20:00
 *
 * @license 这不是一个自由软件,未经授权不许任何使用和传播。
 * @author  : wuyonghong <wyh@huosdk.com>
 * @version : HUOSDK 8.0
 */

namespace huo\model\member;

use huo\model\common\CommonModel;

class MemberExtModel extends CommonModel {
    protected $name = 'mem_ext';

    /**
     * 添加玩家扩展
     *
     * @param array $data
     *
     * @return bool|mixed
     */
    public function addExt($data = []) {
        $_data['mem_id'] = get_val($data, 'mem_id', 0);
        $_data['last_login_time'] = get_val($data, 'last_login_time', time());
        $_data['game_cnt'] = get_val($data, 'game_cnt', 0);
        $_data['sum_money'] = get_val($data, 'sum_money', 0);
        $_data['last_pay_time'] = get_val($data, 'last_pay_time', 0);
        $_data['last_money'] = get_val($data, 'last_money', 0);
        $_data['order_cnt'] = get_val($data, 'order_cnt', 0);
        $_data['order_suc_cnt'] = get_val($data, 'order_suc_cnt', 0);
        $_data['login_cnt'] = get_val($data, 'login_cnt', 0);
        $_data['last_login_ip'] = get_val($data, 'last_login_ip', '');
        $_data['sign_days'] = get_val($data, 'sign_days', 0);
        $_data['last_sign_time'] = get_val($data, 'last_sign_time', 0);
        $_data['integral_total'] = get_val($data, 'integral_total', 0);
        $_data['integral_remain'] = get_val($data, 'integral_remain', 0);
        if ($_obj = self::create($_data, true)) {
            return $_obj->id;
        } else {
            return false;
        }
    }

    /**
     * 更新玩家扩展
     *
     * @param array $ext_data
     * @param int   $mem_id
     *
     * @return bool
     */
    public function updateExt($ext_data, $mem_id) {
        $_map['mem_id'] = $mem_id;
        $_data = $ext_data;
        $_rs = self::update($_data, $_map, true);
        if (false == $_rs) {
            return false;
        } else {
            return true;
        }
    }

    /**
     * 获取玩家扩展信息
     *
     * @param $mem_id
     *
     * @return array|false|\PDOStatement|string|\think\Model
     * @throws \think\Exception
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function getExt($mem_id) {
        $_map['mem_id'] = $mem_id;
        $_ext_data = $this->where($_map)->find();
        if (is_object($_ext_data)) {
            $_ext_data = $_ext_data->toArray();
        }

        return $_ext_data;
    }

    public function mem() {
        return $this->belongsTo('huo\model\member\MemberModel', 'mem_id');
    }

    public function member() {
        return $this->belongsTo('huo\model\member\MemberModel', 'mem_id', 'id', [], 'left')->setEagerlyType(0);
    }
    /**
     * 充值排名
     *
     * @param int $size
     *
     * @return false|\PDOStatement|string|\think\Collection
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function getChargeRank($size = 6) {
        return $this->field('mem_id, sum_money')
                    ->order('sum_money', 'DESC')
                    ->limit($size)
                    ->with('mem')
                    ->select();
    }
}