* @version : HUOSDK 8.0 */ namespace huo\controller\member; use huo\controller\common\Base; use huo\controller\request\Device; use huo\controller\request\Game as GameRq; use huo\controller\request\Mem; use huo\controller\request\Role as RoleRq; use huo\model\game\GameServerSwitchModel; use huo\model\log\MemRoleLogModel; use huo\model\member\MgRoleModel; use huolib\constant\OrderConst; use huoMpAd\MpReportData; class Role extends Base { /** * 插入记录 * * @param Mem $mem * @param RoleRq $role * @param GameRq $game_rq * @param float $money * * @param Device|null $device_rq * * @return bool|mixed */ public function insertLog(Mem $mem, RoleRq $role, GameRq $game_rq, $money = 0.00, Device $device_rq = null) { $_role_model = new MemRoleLogModel(); $_data = $role->toArray(); $_data['mg_mem_id'] = $mem->getMgMemId(); $_data['app_id'] = $game_rq->getHAppId(); $_data['money'] = $money; $_data['create_time'] = time(); /* 异步处理数据 */ (new \huo\controller\queue\Role($game_rq->getHAppId()))->upRole($game_rq, $mem, $role, $device_rq); return $_role_model->insertLog($_data); } /** * 更新橘色数据 * * @param $data * * @return bool */ public function updateData($data) { if (empty($data['mg_mem_id']) || empty($data['app_id']) || empty($data['server_id']) || empty($data['role_id'])) { return false; } $_mg_mem_id = $data['mg_mem_id']; $_app_id = $data['app_id']; $_server_id = $data['server_id']; $_role_id = $data['role_id']; $_model = new MgRoleModel(); $_data = $_model->getDetailByMemGameServerRole($_mg_mem_id, $_app_id, $_server_id, $_role_id); if (empty($_data)) { /* 新增插入 */ $_data = $data; if (!empty($data['last_login_time'])) { $_data['ext']['last_login_time'] = time(); } $_rs = $_model->addData($_data); if (false != $_rs && !empty($_app_id) && 81234702 != $_app_id && !empty($_server_id)) { /* 魔龙契约 传入的游戏区服有问题暂时不写入 */ /* 查找区服是否存在,不存在则插入数据 */ $_gss_model = new GameServerSwitchModel(); $_ser_data = $_gss_model->getInfo($_app_id, $_server_id); if (empty($_ser_data)) { $_ser_data = [ 'app_id' => $_app_id, 'server_id' => $_server_id, 'server_name' => $data['server_name'], 'is_switch' => OrderConst::PAY_SWITCH_YES, ]; $_gss_model->addData($_ser_data); } } return $_rs; } else { if (empty($data['money']) && $_data['role_level'] >= $data['role_level'] && empty($data['last_login_time'])) { /* 角色未升级或者未更新 不更新数据 */ return true; } if (empty($_data['os']) && !empty($data['os'])) { $_data['os'] = $data['os']; } if (!empty($data['money'])) { $_data['money'] += $data['money']; } if (!empty($data['combat_num'])) { $_data['combat_num'] = $data['combat_num']; } if (!empty($data['role_name'])) { $_data['role_name'] = $data['role_name']; } if (!empty($data['server_name'])) { $_data['server_name'] = $data['server_name']; } if ($_data['role_level'] < $data['role_level']) { $_data['role_level'] = $data['role_level']; } if (!empty($data['last_login_time'])) { $_data['ext']['last_login_time'] = $data['last_login_time']; } if (empty($_data['ext']['last_login_time'])) { $_data['ext']['last_login_time'] = time(); } if (empty($data['ext']['login_day'])) { $data['ext']['login_day'] = 1; } elseif (date('Y-m-d') != date('Y-m-d', $_data['ext']['last_login_time'])) { $data['ext']['login_day'] += 1; } $_data['update_time'] = \time(); return $_model->updateData($_data, $_data['id']); } } }