<?php

namespace App\Http\Dao;

use App\Models\GameUser;
use App\Utils\CommonFunc;

class GameUserDao extends GameUser
{

    public function addUserInfo(array $params,array $userInfo)
    {
        $gameUserObj = $this->getFirstRecord(['app_id'=>$params['app_id'],'channel_id'=>$params['channel_id'],‘channel_user_id’=>$userInfo['user_id']]);
        //生成token
        $token = CommonFunc::generateToken((int)$userInfo['user_id'], (int)$params['app_id'], (int)$params['channel_id']);
        if (!$gameUserObj) {
            $gameUserArr = [
                'name'              => '',
                'app_id'            => $params['app_id'],
                'channel_id'        => $params['channel_id'],
                'channel_user_id'   => $userInfo['user_id'],
                'channel_user_name' => '',
                'channel_user_nick' => '',
                'token'             => $token,
                'last_login_time'   => date('Y-m-d H:i:s'),
                'created_at'        => date('Y-m-d H:i:s'),
            ];
            $this->insertDataGetId($gameUserArr);
        } else {
            //存在用户记录则更新最后一次登录时间
            $this->updateById(['app_id'=>$params,'channel_id'=>$params['channel_id'],'channel_user_id'=>$userInfo['user_id']], ['last_login_time' => date('Y-m-d H:i:s'),'token'=>$token]);
        }
        return $token;
    }

    /**
     * 获取单条数据
     * @return mixed
     */
    public function getFirstRecord(array $where)
    {
       return self::where($where)
            ->first();
    }

    /**
     * 插入记录并获取插入记录的id
     *
     * @param array $insertData
     * @return mixed
     */
    public function insertDataGetId(array $insertData)
    {
        return self::insertGetId($insertData);
    }

    /**
     * 通过id进行记录更新
     *
     * @param int   $id
     * @param array $updateData
     * @return mixed
     */
    public function updateById(array $where,array $updateData)
    {
      return  self::where($where)->update($updateData);
    }
}