Files
youlegames/codes/agent/game/api/framework/model/user.mod.php
2026-03-15 01:27:05 +08:00

454 lines
13 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
defined('IN_IA') or exit('Access Denied');
use phprs\ezsql\Sql;
define('AUTHTYPE_WECHAT', 0);
define('AUTHTYPE_QQ', 1);
define('AUTHTYPE_JKX', 2);
define('AUTHTYPE_MEMBER', 3);
define('AUTHTYPE_NIUNIUGAME', 4);
// 查询指定的openId和门店Key查询是否存在全局用户信息
function getUserByOpenId($market_key, $UId, $type, $db)
{
$userInfo = array();
switch ($type)
{
case AUTHTYPE_WECHAT: // 微信用户信息查询
$userInfo = Sql::select('a.*')
->from('syweb_users a,syweb_users_weixin b')
->where('b.uid=a.id and b.openid=? and a.market_key=?', $UId, $market_key)
->get($db, null);
break;
case AUTHTYPE_QQ: // QQ用户信息查询
$userInfo = Sql::select('a.*')
->from('syweb_users a,syweb_users_qq b')
->where('b.uid=a.id and b.openid=? and a.market_key=?', $UId, $market_key)
->get($db, null);
break;
case AUTHTYPE_JKX: // 聚开心会员信息查询
$userInfo = Sql::select('a.*')
->from('syweb_users a,syweb_users_jkx b')
->where('b.uid=a.id and b.username=? and a.market_key=?', $UId, $market_key)
->get($db, null);
break;
case AUTHTYPE_MEMBER: // 会员注册登录
$userInfo = Sql::select('a.*')
->from('syweb_users a,syweb_users_normal b')
->where('b.uid=a.id and b.username=? and a.market_key=?', $UId, $market_key)
->get($db, null);
break;
case AUTHTYPE_NIUNIUGAME: // 友乐牛牛注册登录
$userInfo = Sql::select('a.*')
->from('syweb_users a,syweb_users_ylnn b')
->where('b.uid=a.id and b.user_key=? and a.market_key=?', $UId, $market_key)
->get($db, null);
break;
default:
break;
}
if (!empty($userInfo) && count($userInfo) > 0)
return $userInfo[0];
else
return null;
}
function get_wechat_by_user_id($market_key, $open_id, $union_id, $db)
{
if (!empty($union_id))
$userInfo = Sql::select('a.*')
->from('syweb_users a,syweb_users_weixin b')
->where('b.uid = a.id and a.market_key = ? and b.unionid = ?', $market_key, $union_id)
->get($db, null);
else
$userInfo = Sql::select('a.*')
->from('syweb_users a,syweb_users_weixin b')
->where('b.uid = a.id and a.market_key = ? and b.openid = ?', $market_key, $open_id)
->get($db, null);
if (!empty($userInfo) && count($userInfo) > 0)
return $userInfo[0];
else
return null;
}
// 查询指定的openId微信用户是否存在
function getUserById($id, $db)
{
$userInfo = Sql::select('a.*')
->from('syweb_users a')
->where('a.id=?', $id)
->get($db, null);
if (count($userInfo) > 0)
{
return $userInfo[0];
}
return null;
}
// 根据UID查询微信粉丝详细信息
function getWeixinUserByUId($uid, $db)
{
$weixinUserInfo = Sql::select('a.*')
->from('syweb_users_weixin a')
->where('a.uid=?', $uid)
->get($db, null);
if (count($weixinUserInfo) > 0)
{
return $weixinUserInfo[0];
}
return null;
}
// 根据UID查询聚开心粉丝详细信息
function getJkxUserByUId($uid, $db)
{
$weixinUserInfo = Sql::select('a.*')
->from('syweb_users_jkx a')
->where('a.uid=?', $uid)
->get($db, null);
if (count($weixinUserInfo) > 0)
{
return $weixinUserInfo[0];
}
return null;
}
// 根据UID查询友乐牛牛粉丝详细信息
function getYlnnUserByUId($uid, $db)
{
$userInfo = Sql::select('a.*')
->from('syweb_users_ylnn a')
->where('a.uid=?', $uid)
->get($db, null);
if (count($userInfo) > 0)
{
return $userInfo[0];
}
return null;
}
// 根据UID查询微信粉丝详细信息
function getQqUserByUId($uid, $db)
{
$qqUserInfo = Sql::select('syweb_users_qq.*')
->from('syweb_users_qq')
->where('syweb_users_qq.uid=?', $uid)
->get($db, null);
if (!empty($qqUserInfo) > 0 && count($qqUserInfo) > 0)
{
return $qqUserInfo[0];
}
return null;
}
// 增加/更新用户信息
function updateUserInfo($scode, $auth_type, $open_id, $union_id, $market_key, $db, $pdo)
{
// 首先验证指定的账号在全局用户信息中是否存在对应的记录
if (!empty($union_id))
$user_exist = Sql::select('a.id')
->from('syweb_users a')
->where('a.unionid = ? and a.market_key = ? and a.auth_type = ?', $union_id, $market_key, $auth_type)
->get($db, null);
else
$user_exist = Sql::select('a.id')
->from('syweb_users a')
->where('a.openid = ? and a.market_key = ? and a.auth_type = ?', $open_id, $market_key, $auth_type)
->get($db, null);
// 循环创建用户全局唯一ID(临时绑定20分钟有效)
$sid = random(32, false);
while (true)
{
$sid_exist = Sql::select('a.sid')
->from('syweb_users a')
->where('a.sid=?', $sid)
->get($db, null);
if ($sid_exist)
$sid = random(32, false);
else
break;
}
// 循环创建access_id(长时间绑定30天有效)
$access_id = "gm_" . random(13, false);
while (true)
{
$access_id_exist = Sql::select('a.sid')
->from('syweb_users a')
->where('a.access_id=?', $access_id)
->get($db, null);
if ($access_id_exist)
$access_id = "gm_" . random(13, false);
else
break;
}
$access_key = random(36, false);
while (true)
{
$access_key_exist = Sql::select('a.sid')
->from('syweb_users a')
->where('a.access_key=?', $access_key)
->get($db, null);
if ($access_key_exist)
$access_key = random(36, false);
else
break;
}
//SID过期时间(默认2天内有效)
$sid_expire_time = time() + (2 * 24 * 60 * 60);
//AccessToken过期时间(默认两个月内有效)
$access_expire_time = time() + (60 * 24 * 60 * 60);
// 假如当前username不存在则新增一条对应的全局用户记录
if (empty($user_exist) || count($user_exist) <= 0)
{
$data = array(
'main_account_id' => '', /// 默认没有绑定主账户
'sid' => $sid,
'scode' => $scode,
'sid_expire_time' => $sid_expire_time,
'access_id' => $access_id,
'access_key' => $access_key,
'access_expire_time' => $access_expire_time,
'market_key' => $market_key,
'auth_type' => $auth_type,
'openid' => $open_id,
'unionid' => $union_id,
'market_jifen' => 0,
'create_time' => TIMESTAMP,
);
$id = Sql::insertInto('syweb_users')->values($data)->exec($pdo)->lastInsertId();
if (!$id)
return -1;
else
return $id;
}
else
{
// 假如当前username存在则修改一条对应的全局用户记录
$data = array(
'sid' => $sid,
'scode' => $scode,
'sid_expire_time' => $sid_expire_time,
'access_id' => $access_id,
'access_key' => $access_key,
'access_expire_time' => $access_expire_time,
'auth_type' => $auth_type,
);
Sql::update('syweb_users')->setArgs($data)->where('id = ?', $user_exist[0]['id'])->exec($pdo);
return $user_exist[0]['id'];
}
}
// 更新微信用户信息
function updateWeixinUserInfo($weixinUserInfo, $db, $pdo)
{
$uid_exist = Sql::select('a.id')
->from('syweb_users_weixin a')
->where('a.uid=? and a.openid=?', $weixinUserInfo["uid"], $weixinUserInfo["openid"])
->get($db, null);
if (empty($uid_exist) || count($uid_exist) <= 0)
{
// 假如当前uid不存在
$insertData = array();
$insertData['uid'] = $weixinUserInfo["uid"];
$insertData['nickname'] = $weixinUserInfo["nickname"];
$insertData['sex'] = $weixinUserInfo["sex"];
$insertData['province'] = $weixinUserInfo["province"];
$insertData['city'] = $weixinUserInfo["city"];
$insertData['country'] = $weixinUserInfo["country"];
$insertData['headimgurl'] = $weixinUserInfo["headimgurl"];
$insertData['privilege'] = $weixinUserInfo["privilege"];
$insertData['subscribe'] = $weixinUserInfo["subscribe"];
$insertData['subscribe_time'] = $weixinUserInfo["subscribe_time"];
$insertData['openid'] = $weixinUserInfo["openid"];
$insertData['unionid'] = $weixinUserInfo["unionid"];
$id = Sql::insertInto('syweb_users_weixin')->values($insertData)->exec($pdo)->lastInsertId();
if (!$id)
{
return -1;
}
return $id;
}
else
{
$updateData = array();
$updateData['nickname'] = $weixinUserInfo["nickname"];
$updateData['sex'] = $weixinUserInfo["sex"];
$updateData['province'] = $weixinUserInfo["province"];
$updateData['city'] = $weixinUserInfo["city"];
$updateData['country'] = $weixinUserInfo["country"];
$updateData['headimgurl'] = $weixinUserInfo["headimgurl"];
$updateData['privilege'] = $weixinUserInfo["privilege"];
$updateData['subscribe'] = $weixinUserInfo["subscribe"];
$updateData['subscribe_time'] = $weixinUserInfo["subscribe_time"];
$updateData['unionid'] = $weixinUserInfo["unionid"];
Sql::update('syweb_users_weixin')->setArgs($updateData)->where('uid=? and openid=?', $weixinUserInfo["uid"], $weixinUserInfo["openid"])->exec($pdo);
return $uid_exist["id"];
}
}
// 更新QQ用户信息
function updateQqUserInfo($qqUserInfo, $db, $pdo)
{
$uid_exist = Sql::select('syweb_users_qq.id')
->from('syweb_users_qq')
->where('syweb_users_qq.uid=? and syweb_users_qq.openid=?', $qqUserInfo["uid"], $qqUserInfo["openid"])
->get($db, null);
if (empty($uid_exist))
{
// 假如当前uid不存在
$insertData = array();
$insertData['uid'] = $qqUserInfo["uid"];
$insertData['gender'] = $qqUserInfo["gender"];
$insertData['nickname'] = $qqUserInfo["nickname"];
$insertData['province'] = $qqUserInfo["province"];
$insertData['city'] = $qqUserInfo["city"];
$insertData['year'] = $qqUserInfo["year"];
$insertData['figureurl_qq_1'] = $qqUserInfo["figureurl_qq_1"];
$insertData['figureurl_qq_2'] = $qqUserInfo["figureurl_qq_2"];
$insertData['figureurl'] = $qqUserInfo["figureurl"];
$insertData['figureurl_1'] = $qqUserInfo["figureurl_1"];
$insertData['figureurl_2'] = $qqUserInfo["figureurl_2"];
$insertData['vip'] = $qqUserInfo["vip"];
$insertData['level'] = $qqUserInfo["level"];
$insertData['is_yellow_year_vip'] = $qqUserInfo["is_yellow_year_vip"];
$insertData['yellow_vip_level'] = $qqUserInfo["yellow_vip_level"];
$insertData['openid'] = $qqUserInfo["openid"];
$id = Sql::insertInto('syweb_users_qq')->values($insertData)->exec($pdo)->lastInsertId();
if (!$id)
{
return -1;
}
return $id;
}
else
{
$updateData = array();
$updateData['gender'] = $qqUserInfo["gender"];
$updateData['nickname'] = $qqUserInfo["nickname"];
$updateData['province'] = $qqUserInfo["province"];
$updateData['city'] = $qqUserInfo["city"];
$updateData['year'] = $qqUserInfo["year"];
$updateData['figureurl_qq_1'] = $qqUserInfo["figureurl_qq_1"];
$updateData['figureurl_qq_2'] = $qqUserInfo["figureurl_qq_2"];
$updateData['figureurl'] = $qqUserInfo["figureurl"];
$updateData['figureurl_1'] = $qqUserInfo["figureurl_1"];
$updateData['figureurl_2'] = $qqUserInfo["figureurl_2"];
$updateData['vip'] = $qqUserInfo["vip"];
$updateData['level'] = $qqUserInfo["level"];
$updateData['is_yellow_year_vip'] = $qqUserInfo["is_yellow_year_vip"];
$updateData['yellow_vip_level'] = $qqUserInfo["yellow_vip_level"];
Sql::update('syweb_users_qq')->setArgs($updateData)->where('uid=? and openid=?', $qqUserInfo["uid"], $qqUserInfo["openid"])->exec($pdo);
return $uid_exist["id"];
}
}
// 更新聚开心用户信息
function updateJkxUserInfo($userInfo, $db, $pdo)
{
$uid_exist = Sql::select('a.id')
->from('syweb_users_jkx a')
->where('a.uid=? and a.username=?', $userInfo["uid"], $userInfo["username"])
->get($db, null);
if (empty($uid_exist) || count($uid_exist) <= 0)
{
// 假如当前uid不存在
$insertData = array();
$insertData['uid'] = $userInfo["uid"];
$insertData['level'] = $userInfo["level"];
$insertData['enum'] = $userInfo["enum"];
$insertData['realname'] = $userInfo["realname"];
$insertData['tel'] = $userInfo["tel"];
$insertData['headimgurl'] = $userInfo["headimgurl"];
$insertData['username'] = $userInfo["username"];
$insertData['integral'] = $userInfo["integral"];
$id = Sql::insertInto('syweb_users_jkx')->values($insertData)->exec($pdo)->lastInsertId();
if (!$id)
{
return -1;
}
return $id;
}
else
{
$updateData = array();
$updateData['level'] = $userInfo["level"];
$updateData['enum'] = $userInfo["enum"];
$updateData['realname'] = $userInfo["realname"];
$updateData['tel'] = $userInfo["tel"];
$updateData['headimgurl'] = $userInfo["headimgurl"];
$updateData['integral'] = $userInfo["integral"];
Sql::update('syweb_users_jkx')->setArgs($updateData)->where('uid=? and username=?', $userInfo["uid"], $userInfo["username"])->exec($pdo);
return $uid_exist["id"];
}
}
// 更新友乐牛牛用户信息
function updateYlnnUserInfo($userInfo, $db, $pdo)
{
$uid_exist = Sql::select('a.id')
->from('syweb_users_ylnn a')
->where('a.uid=? and a.user_key=?', $userInfo["uid"], $userInfo["user_key"])
->get($db, null);
if (empty($uid_exist) || count($uid_exist) <= 0)
{
// 假如当前uid不存在
$insertData = array();
$insertData['uid'] = $userInfo["uid"];
$insertData['user_key'] = $userInfo["user_key"];
$insertData['agent_key'] = $userInfo["agent_key"];
$insertData['game_key'] = $userInfo["game_key"];
$insertData['player_key'] = $userInfo["player_key"];
$insertData['headimgurl'] = $userInfo["headimgurl"];
$insertData['nickname'] = $userInfo["nickname"];
$id = Sql::insertInto('syweb_users_ylnn')->values($insertData)->exec($pdo)->lastInsertId();
if (!$id)
{
return -1;
}
return $id;
}
else
{
$updateData = array();
$updateData['agent_key'] = $userInfo["agent_key"];
$updateData['game_key'] = $userInfo["game_key"];
$updateData['player_key'] = $userInfo["player_key"];
$updateData['headimgurl'] = $userInfo["headimgurl"];
$updateData['nickname'] = $userInfo["nickname"];
Sql::update('syweb_users_ylnn')->setArgs($updateData)->where('uid=? and user_key=?', $userInfo["uid"], $userInfo["user_key"])->exec($pdo);
return $uid_exist["id"];
}
}