* @version : HUOSDK 8.0 */ namespace huo\controller\data; use huo\controller\member\MemCache; use huo\model\log\DayMemLogModel; use huo\model\log\DmlSwitchModel; use huolib\constant\MemConst; use huolib\constant\OrderConst; use huolib\queue\request\Channel; use huolib\queue\request\Common; use huolib\queue\request\Device; use huolib\queue\request\Game; use huolib\queue\request\Mem as MemRq; use huolib\queue\request\Role as RoleRq; use huoMpAd\MpReportData; use think\Log; class Role { /** * 角色创建 * 记录玩家创建角色时刻的日志。 * 在创角界面,输入完角色名后,系统显示“创角成功”即可调用该接口。 * http://doc.1tsdk.com/138?page_id=3383 * * @param Common $com_rq * @param Device $device_rq * @param Game $game_rq * @param Channel $agent_rq * @param MemRq $mem_rq * @param RoleRq $role_rq * * @return bool */ public function create( Common $com_rq, Device $device_rq, Game $game_rq, Channel $agent_rq, MemRq $mem_rq, RoleRq $role_rq ) { // TODO: luowei 2021-04-06 创建暂时不上报 // // 创建角色,回传上报MP后台 // try { // (new MpReportData())->createRoleReport( // $mem_rq->getMgMemId(), $role_rq->getServerId(), $role_rq->getRoleId() // ); // } catch (\Exception $exception) { // \think\Log::write(['mp_report_error', $exception->getTraceAsString(), 'error', true]); // } $this->upRole($com_rq, $device_rq, $game_rq, $agent_rq, $mem_rq, $role_rq); return true; } /** * 角色登录 * 记录玩家角色登录的日志。此处应与账户登录区分。 * * 在角色界面,点击“登录游戏”后进入到游戏界面时调用该接口。 * * ①一个服务器下只有一个角色,没有“登录游戏”按钮,以角色登录到游戏界面时调用接口; * * ②一个服务器下可有多个角色,以执行“登录游戏”操作进入游戏界面时调用接口。 * http://doc.1tsdk.com/138?page_id=3384 * * @param Common $com_rq * @param Device $device_rq * @param Game $game_rq * @param Channel $agent_rq * @param MemRq $mem_rq * @param RoleRq $role_rq * * @return bool */ public function online( Common $com_rq, Device $device_rq, Game $game_rq, Channel $agent_rq, MemRq $mem_rq, RoleRq $role_rq ) { $this->upRole($com_rq, $device_rq, $game_rq, $agent_rq, $mem_rq, $role_rq); return true; } /** * 角色升级 * 记录玩家升级的日志。玩家升级的时候调用该接口。 * http://doc.1tsdk.com/138?page_id=3385 * * @param Common $com_rq * @param Device $device_rq * @param Game $game_rq * @param Channel $agent_rq * @param MemRq $mem_rq * @param RoleRq $role_rq * * @return bool */ public function levelup( Common $com_rq, Device $device_rq, Game $game_rq, Channel $agent_rq, MemRq $mem_rq, RoleRq $role_rq ) { $this->upRole($com_rq, $device_rq, $game_rq, $agent_rq, $mem_rq, $role_rq); return true; } /** * 角色退出 * 记录玩家角色登出的日志。此处应与账户登出区分。 * * ①一个服务器只存在一个角色且不能重建的情况下,返回“选择服务器”界面即可调用该接口。 * * ②一个服务器可存在多个角色,返回“选择角色”界面即可调用该接口。 * http://doc.1tsdk.com/138?page_id=3386 * * @param Common $com_rq * @param Device $device_rq * @param Game $game_rq * @param Channel $agent_rq * @param MemRq $mem_rq * @param RoleRq $role_rq * * @return bool */ public function offline( Common $com_rq, Device $device_rq, Game $game_rq, Channel $agent_rq, MemRq $mem_rq, RoleRq $role_rq ) { $this->upRole($com_rq, $device_rq, $game_rq, $agent_rq, $mem_rq, $role_rq); return true; } /** * 更新角色信息 * * @param Common $com_rq * @param Device $device_rq * @param Game $game_rq * @param Channel $agent_rq * @param MemRq $mem_rq * @param RoleRq $role_rq * @param float $money * * @return bool */ public function upRole( Common $com_rq, Device $device_rq, Game $game_rq, Channel $agent_rq, MemRq $mem_rq, RoleRq $role_rq , $money = 0.00 ) { $_data['mg_mem_id'] = $mem_rq->getMgMemId(); $_data['app_id'] = $com_rq->getAppId(); $_data['server_id'] = $role_rq->getServerId(); $_data['server_name'] = $role_rq->getServerName(); $_data['role_id'] = $role_rq->getRoleId(); $_data['role_name'] = $role_rq->getRoleName(); $_data['role_level'] = $role_rq->getRoleLevel(); $_data['combat_num'] = $role_rq->getCombatNum(); $_data['last_login_time'] = $role_rq->getLastLoginTime(); $_data['money'] = $money; $_data['os'] = $device_rq->getOs(); if (MemConst::STATUS_NORMAL == $mem_rq->getStatus()) { //玩家状态 $_mem_data = MemCache::ins()->getInfoById($mem_rq->getMemId()); if (!empty($_mem_data) && MemConst::STATUS_NORMAL != $_mem_data['status']) { if (MemConst::STATUS_TRY == $_mem_data['status']) { $_mem_data['status'] = MemConst::STATUS_NORMAL; MemCache::ins()->updateMem($mem_rq->getMemId(), $_mem_data); } $_day_mem = new DayMem(); $_model = new DayMemLogModel(); $_map = []; $_map['date'] = date('Y-m-d', $com_rq->getTs()); $_map['mem_id'] = $mem_rq->getMemId(); $_map['app_id'] = $com_rq->getAppId(); $_day_mem_data = $_model->getDetail($_map); /* 非空则更新 */ if (!empty($_day_mem_data)) { $_day_mem->setDataFromDayMem($_day_mem_data); $_day_mem->setAuthCnt($_day_mem->getAuthCnt() + 1); $_model->updateLog($_day_mem->toArray(), $_day_mem_data['id']); } $_is_switch = OrderConst::PAY_SWITCH_NO; //默认不切换 if (!empty($_mem_data) && OrderConst::PAY_SWITCH_YES == $_mem_data['is_switch']) { $_is_switch = OrderConst::PAY_SWITCH_YES; } if (OrderConst::PAY_SWITCH_YES == $_is_switch) { $_model = new DmlSwitchModel(); $_day_mem_data = $_model->getDetail($_map); if (!empty($_day_mem_data)) { $_day_mem->setDataFromDayMem($_day_mem_data); $_day_mem->setAuthCnt($_day_mem->getAuthCnt() + 1); $_model->updateLog($_day_mem->toArray(), $_day_mem_data['id']); } } } } // if (\huolib\oa\Oa::hasOa()) { // $_oa_login = new \huolib\oa\OaUpInfo(); // $_param = array(); // $_param['create_time'] = $com_rq->getTs(); // $_param['app_id'] = $com_rq->getAppId(); // $_param['agent_id'] = $agent_rq->getCh(); // $_param['mem_id'] = $mem_rq->getMemId(); // $_param['ip'] = $device_rq->getIp(); // $_param['imei'] = $device_rq->getDeviceId(); // $_param['userua'] = $device_rq->getUserua(); // $_param['role_level'] = $role_rq->getRoleLevel(); // $_param['role_id'] = $role_rq->getRoleId(); // $_param['role_name'] = $role_rq->getRoleName(); // $_param['server_id'] = $role_rq->getServerId(); // $_param['server_name'] = $role_rq->getServerName(); // $_param['from'] = \huolib\oa\Oa::osToFrom($device_rq->getOs()); // $u_re = $_oa_login->upInfo($_param); // if ($u_re) { // } // /* 处理渠道信息显示 */ // $_agent_param = array(); // $_agent_param['agent_id'] = $_param['agent_id']; // $_agent_param['app_id'] = $_param['app_id']; // $_agent_param['now_time'] = $_param['create_time']; // $_agent_oa_class = new \huolib\oa\AgentOa($_agent_param['agent_id']); // $_a_re = $_agent_oa_class->baseUpdate($_agent_param); // if ($_a_re) { // } // } return (new \huo\controller\member\Role())->updateData($_data); } }