403, 'msg' => '参数错误', 'data' => $game_data ); } else { $_param[$k] = $game_data[$k]; } } $_update_column_arr = self::updateGameColumn(); foreach ($_update_column_arr as $v) { if (isset($game_data[$v])) { $_param[$v] = $game_data[$v]; } } $_return_data = self::sendToOA('GAME_ADD', $_param); return array( 'code' => 200, 'msg' => '处理完成', 'data' => $_return_data, 'param' => $_param, ); } else { return true; } } /** * 添加游戏需字段 * * @return array */ public static function addGameNeedColumn() { $_need_column_arr = array( 'app_id', 'gamename', 'classify', 'gameflag', 'create_time', 'status', 'pinyin', 'initial', 'game_version', ); return $_need_column_arr; } /** * 更新游戏字段 * * @return array */ public static function updateGameColumn() { $_column_arr = array( 'update_time', 'status', 'pinyin', 'initial', 'teststatus', 'icon', 'target_cnt', 'target_level', 'run_time', 'parent_id', 'gamename', 'classify', 'gameflag', 'game_version', ); return $_column_arr; } /** * 修改游戏 * * @param array $update_data * * @return array|bool */ public static function updateOaGame($update_data = array()) { if (self::canOa()) { if (!isset($update_data['app_id']) || !$update_data['app_id'] || !is_numeric($update_data['app_id'])) { return array( 'code' => 403, 'msg' => '参数错误', 'data' => $update_data, ); } $_up_info = array(); $_up_column_arr = self::updateGameColumn(); foreach ($_up_column_arr as $k) { if (isset($update_data[$k])) { $_up_info[$k] = $update_data[$k]; } } $_param = []; $_param['app_id'] = $update_data['app_id']; $_param['upinfo'] = json_encode($_up_info); $_return_data = self::sendToOA('GAME_UPDATE', $_param); return array( 'code' => 200, 'msg' => '处理完成', 'data' => $_return_data ); } else { return true; } } /** * 删除游戏 * * @param array $delete_data * * @return array|bool */ public static function deleteOaGame($delete_data = array()) { if (self::canOa()) { if (!isset($delete_data['app_id']) || !$delete_data['app_id'] || !is_numeric($delete_data['app_id'])) { return array( 'code' => 403, 'msg' => '参数错误', 'data' => $delete_data, ); } $_param = []; $_param['app_id'] = $delete_data['app_id']; $_param['delete_time'] = (isset($delete_data['delete_time']) && $delete_data['delete_time']) ? $delete_data['delete_time'] : time(); $_return_data = self::sendToOA('GAME_DELETE', $_param); return array( 'code' => 200, 'msg' => '处理完成', 'data' => $_return_data, ); } else { return true; } return false; } /** * 还原已删除游戏 * * @param array $restore_data * * @return array|bool */ public static function restoreOaGame($restore_data = array()) { if (self::canOa()) { if (!isset($restore_data['app_id']) || !$restore_data['app_id'] || !is_numeric($restore_data['app_id'])) { return array( 'code' => 403, 'msg' => '参数错误', 'data' => $restore_data, ); } $_param = []; $_param['app_id'] = $restore_data['app_id']; $_param['restore_time'] = (isset($restore_data['restore_time']) && $restore_data['restore_time']) ? $restore_data['restore_time'] : time(); $_return_data = self::sendToOA('GAME_RESTORE', $_param); return array( 'code' => 200, 'msg' => '处理完成', 'data' => $_return_data, ); } else { return true; } return false; } /** * 添加游戏区服需字段 * * @return array */ public static function addGameServerNeedColumn() { $_need_column_arr = array( 'app_id', 'server_id', 'ser_name', 'ser_code', 'create_time', ); return $_need_column_arr; } /** * 更新游戏区服需字段 * * @return array */ public static function updateGameServerNeedColumn() { $_need_column_arr = array( 'app_id', 'server_id', 'ser_name', 'ser_code', 'update_time', ); return $_need_column_arr; } /** * 更新游戏区服字段 * * @return array */ public static function updateGameServerColumn() { $_column_arr = array( 'app_id', 'server_id', 'ser_name', 'ser_code', 'create_time', 'gamename', 'server_desc', 'status', 'is_delete', 'start_time', 'update_time', ); return $_column_arr; } /** * 添加游戏区服 * * @param array $data * * @return array|bool */ public static function addOaGameServer($data = array()) { if (self::canOa()) { $_param = []; $_need_add_column_arr = self::addGameServerNeedColumn(); foreach ($_need_add_column_arr as $k) { if (!isset($data[$k]) || !$data[$k] || is_bool($data[$k])) { return array( 'code' => 403, 'msg' => '参数错误', 'data' => $data ); } else { $_param[$k] = $data[$k]; } } $_up_column_arr = self::updateGameServerColumn(); foreach ($_up_column_arr as $v) { if (isset($data[$v])) { $_param[$v] = $data[$v]; } } $_param['create_time'] = isset($data['create_time']) ? $data['create_time'] : time(); $_return_data = self::sendToOA('SERVER_ADD', $_param); return array( 'code' => 200, 'msg' => '处理完成', 'data' => $_return_data, ); } else { return true; } } /** * 更新游戏区服信息 * * @param array $data * * @return array|bool */ public static function updateOaGameServer($data = array()) { if (self::canOa()) { $_param = []; $_need_add_column_arr = self::updateGameServerNeedColumn(); foreach ($_need_add_column_arr as $k) { if (!isset($data[$k]) || !$data[$k] || is_bool($data[$k])) { return array( 'code' => 403, 'msg' => '参数错误', 'data' => $data ); } else { $_param[$k] = $data[$k]; } } $_up_column_arr = self::updateGameServerColumn(); foreach ($_up_column_arr as $v) { if (isset($data[$v])) { $_param[$v] = $data[$v]; } } $_return_data = self::sendToOA('SERVER_UPDATE', $_param); return array( 'code' => 200, 'msg' => '处理完成', 'data' => $_return_data, ); } else { return true; } } /** * 更改玩家归属 * * @param string $username * @param string $agent_name * * @return array|bool * */ public static function memUpdateAgentName($username = '', $agent_name = '') { if (self::canOa()) { $_param = []; $_param['username'] = $username; $_param['agentname'] = $agent_name; $_return_data = self::sendToOA('MEM_UPDATE', $_param); return array( 'code' => 200, 'msg' => '处理完成', 'data' => $_return_data, ); } else { return array( 'code' => 200, 'msg' => '处理完成' ); } } /** * 扶植首充回调到oa * * @param int $id * @param int $game_id * @param int $status * @param int $type * @param string $reason * * @return array|bool */ public static function oaGmCallBack($id = 0, $game_id = 0, $status = 0, $type = 0, $reason = '') { if (self::canOa()) { if (empty($id) || empty($game_id) || empty($status) || empty($type)) { return false; } $_param = []; $_param['id'] = $id; $_param['status'] = $status; $_param['reason'] = $reason; $_param['type_id'] = $type; $_param['app_id'] = $game_id; $url_code = ''; switch ($type) { case 1: $url_code = 'GM_FIRST'; break; case 2: $url_code = 'GM_FOSTER'; break; } if ($url_code) { $_return_data = self::sendToOA($url_code, $_param); return array( 'code' => 200, 'msg' => '处理完成', 'data' => $_return_data, ); } return false; } else { return true; } } /** * 判断是否能使用oa * * @return bool */ public static function canOa() { return self::hasOa(); } /** * 与oa通信 * * @param string $type 地址url的标识不待_URL * @param array $param * * @return bool|请求结果 */ public static function sendToOA($type = '', $param = array()) { if (self::hasOa()) { $_url_code = $type.'_URL'; return self::request($_url_code, $param); } else { return true; } } /** * * 自定义错误处理 * * @param $msg 输出的信息 * @param string $level 输出等级 */ private function _error($msg, $level = 'error') { $_info = 'huosdk\oa\Oalogin Error:'.$msg; \think\Log::write($_info, $level); } }