set_message(1001, "fail", "登录数据不能为空"); } $ip = get_client_ip(); $device_bans_ip = M('device_bans','tab_')->where(['tag' => $ip,'type' => 2])->find(); $device_bans_num = M('device_bans','tab_')->where(['tag' => $user['unique_code'],'type' => 1])->find(); if(!empty($device_bans_ip) || !empty($device_bans_num)){ $this->set_message(1004, "fail", "设备已被禁用"); } /*是否开启Ucenter*/ if (C('UC_OPEN') == 1) { $userApi = new MemberApi(); $username = $user['account']; $password = $user['password']; //Ucenter登录 list($uc_uid, $uc_username, $uc_password, $uc_email) = uc_user_login($username, $password); if ($uc_uid > 0) { //1.登录成功,验证在本地是否有此账号 $user_res = M('user', 'tab_') -> where(['account' => $uc_username]) -> find(); if (!empty($user_res)) {//本地存在账号,验证密码直接登录 $result = $userApi -> login_sdk($user["account"], $user['password'], 1, $user["game_id"], get_game_name($user["game_id"]), $user['sdk_version'],$user['unique_code']);#调用登录 $res_msg = array(); switch ($result) { case - 1: $this -> set_message(1004, "fail", "用户不存在或被禁用"); break; case - 2: $this -> set_message(1005, "fail", "密码错误"); break; default: if (is_array($result)) { $user["user_id"] = $result['user_id']; $this -> add_user_play($user); $platform = $this -> get_platform($user['user_id']); $small_list = $this -> small_list($user['user_id'], $user['game_id']); $small_list[] = array('is_platform' => $platform, 'user_id' => $user['user_id'], 'account' => $user['account'], 'user_account' => $user['account']); $unread_count = 0; $unread_count += M('share_record', 'tab_') -> where(['invite_id' => $user['user_id'], 'award_coin' => ['gt', 0], 'read' => 0]) -> count(); $unread_count += M('point_record', 'tab_') -> where(['type_id' => 6, 'user_id' => $user['user_id'], 'point' => ['gt', 0], 'read' => 0]) -> count(); $notice_count = $unread_count; $buddies_request = get_buddies_unagree_count($user['user_id']); $unread_count += $buddies_request; M('nearby', 'tab_') -> where(['user_id' => $user['user_id']]) -> setField(['game_status' => 1, 'update_time' => time(), 'user_nickname' => $user_res['nickname'], 'head_img' => $user_res['head_img']]); $res_msg = array( "status" => 200, "return_code" => "success", "return_msg" => "登录成功", "user_id" => $user["user_id"], "account" => $user["account"], "nickname" => $user_res["nickname"] ? $user_res["nickname"] : $user["account"], "sex" => $user_res['sex'] ?: 0, "token" => $result['token'], "OTP_token" => think_encrypt(json_encode(array('uid' => $user["user_id"], 'time' => time())), 1), 'is_uc' => 0, "is_open_small_account" => C('IS_OPEN_SMALL_ACCOUNT'), 'url' => 'http://' . str_replace(array('http://'), '', C('WEB_SITE')) . '/mobile.php', 'small_list' => $small_list, 'ios_packagename' => C('WEB_IOS_PACKAGENAME'), 'android_packagename' => C('WEB_AND_PACKAGENAME'), 'site_status' => C('SDK_SITE_STATUS'), 'head_img' => !empty($user_res['head_img']) ? $user_res['head_img'] : '', 'unread_count' => $unread_count, 'request_count' => $buddies_request, 'notice_count' => $notice_count, ); } else { $this -> set_message(1028, "fail", "未知错误"); } break; } echo base64_encode(json_encode($res_msg)); die; } else {//本地不存在账号,新增账号并登录 $resdata = array(); $resdata['account'] = trim($username); $resdata['nickname'] = trim($username); $resdata['password'] = $password; $resdata['register_way'] = 1; $resdata['register_type'] = 1; $resdata['promote_id'] = 0; $resdata['promote_account'] = 'UC用户'; $resdata['parent_id'] = 0; $resdata['parent_name'] = ''; $resdata['phone'] = ''; $resdata['real_name'] = ''; $resdata['idcard'] = ''; $resdata['sex'] = 0; $res = $userApi -> sdk_register($resdata); if ($res > 0) { $result = $userApi -> login_sdk($user["account"], $user['password'], 1, $user["game_id"], get_game_name($user["game_id"]), $user['sdk_version'],$user['unique_code']);#调用登录 $res_msg = array(); switch ($result) { case - 1: $this -> set_message(1004, "fail", "用户不存在或被禁用"); break; case - 2: $this -> set_message(1005, "fail", "密码错误"); break; default: if (is_array($result)) { $user["user_id"] = $result['user_id']; $this -> add_user_play($user); $platform = $this -> get_platform($user['user_id']); $small_list = $this -> small_list($user['user_id'], $user['game_id']); $small_list[] = array('is_platform' => $platform, 'user_id' => $user['user_id'], 'account' => $user['account'], 'user_account' => $user['account']); $unread_count = 0; $time = time(); $notice = M('notice', 'tab_')->where('start_time < ' . $time . ' AND game_id = ' . $user['game_id']. ' AND (end_time = 0 OR end_time >' . $time . ')')->getField('id',true); if(!empty($notice)) { $unread_count += count($notice); $where['notice_id'] = ['in', implode(',', $notice)]; $where['user_id'] = $user['user_id']; $where['is_read'] = 1; $notice_read_count = M('notice_read', 'tab_')->where($where)->count(); $unread_count -= $notice_read_count; } $unread_count += M('share_record', 'tab_') -> where(['invite_id' => $user['user_id'], 'award_coin' => ['gt', 0], 'read' => 0]) -> count(); $unread_count += M('point_record', 'tab_') -> where(['type_id' => 6, 'user_id' => $user['user_id'], 'point' => ['gt', 0], 'read' => 0]) -> count(); $notice_count = $unread_count; $buddies_request = get_buddies_unagree_count($user['user_id']); $unread_count += $buddies_request; M('nearby', 'tab_') -> where(['user_id' => $user['user_id']]) -> setField(['game_status' => 1, 'update_time' => time(), 'user_nickname' => $resdata['account']]); $res_msg = array( "status" => 200, "return_code" => "success", "return_msg" => "登录成功", "user_id" => $user["user_id"], "account" => $user["account"], "nickname" => $resdata["nickname"] ? $resdata["nickname"] : $user["account"], "token" => $result['token'], "sex" => 0, "OTP_token" => think_encrypt(json_encode(array('uid' => $user["user_id"], 'time' => time())), 1), 'is_uc' => 0, "is_open_small_account" => C('IS_OPEN_SMALL_ACCOUNT'), 'url' => 'http://' . str_replace(array('http://'), '', C('WEB_SITE')) . '/mobile.php', 'small_list' => $small_list, 'ios_packagename' => C('WEB_IOS_PACKAGENAME'), 'android_packagename' => C('WEB_AND_PACKAGENAME'), 'site_status' => C('SDK_SITE_STATUS'), 'head_img' => '', 'unread_count' => $unread_count, 'notice_count' => $notice_count, 'request_count' => $buddies_request, ); } else { $this -> set_message(1028, "fail", "未知错误"); } break; } echo base64_encode(json_encode($res_msg)); die; } else { $this -> set_message(1004, "账号已存在"); } } } elseif ($uc_uid == - 1) { //用户不存在,验证本地用户账号密码 $result = $userApi -> login_sdk($user["account"], $user['password'], 1, $user["game_id"], get_game_name($user["game_id"]), $user['sdk_version'],$user['unique_code']);#调用登录 $res_msg = array(); switch ($result) { case - 1: $this -> set_message(1004, "fail", "用户不存在或被禁用"); break; case - 2: $this -> set_message(1005, "fail", "密码错误"); break; default: if (is_array($result)) { $user["user_id"] = $result['user_id']; $this -> add_user_play($user); $user_res = M('User', 'tab_') -> where(['account' => $user['account']]) -> find(); $unread_count = 0; $time = time(); $notice = M('notice', 'tab_')->where('start_time < ' . $time . ' AND game_id = ' . $user['game_id']. ' AND (end_time = 0 OR end_time >' . $time . ')')->getField('id',true); if(!empty($notice)) { $unread_count += count($notice); $where['notice_id'] = ['in', implode(',', $notice)]; $where['user_id'] = $user['user_id']; $where['is_read'] = 1; $notice_read_count = M('notice_read', 'tab_')->where($where)->count(); $unread_count -= $notice_read_count; } $unread_count += M('share_record', 'tab_') -> where(['invite_id' => $user['user_id'], 'award_coin' => ['gt', 0], 'read' => 0]) -> count(); $unread_count += M('point_record', 'tab_') -> where(['type_id' => 6, 'user_id' => $user['user_id'], 'point' => ['gt', 0], 'read' => 0]) -> count(); $notice_count = $unread_count; $buddies_request = get_buddies_unagree_count($user['user_id']); $unread_count += $buddies_request; M('nearby', 'tab_') -> where(['user_id' => $user['user_id']]) -> setField(['game_status' => 1, 'update_time' => time(), 'user_nickname' => $user_res['nickname'], 'head_img' => $user_res['head_img']]); $res_msg = array( "status" => 200, "return_code" => "success", "return_msg" => "登录成功", "user_id" => $user["user_id"], "account" => $user["account"], "nickname" => $user_res["nickname"] ? $user_res["nickname"] : $user["account"], "sex" => $user_res["sex"] ? $user_res["sex"] : 0, "token" => $result['token'], "OTP_token" => think_encrypt(json_encode(array('uid' => $user["user_id"], 'time' => time())), 1), 'is_uc' => 0, "is_open_small_account" => C('IS_OPEN_SMALL_ACCOUNT'), 'url' => 'http://' . str_replace(array('http://'), '', C('WEB_SITE')) . '/mobile.php', 'small_list' => $small_list, 'ios_packagename' => C('WEB_IOS_PACKAGENAME'), 'android_packagename' => C('WEB_AND_PACKAGENAME'), 'site_status' => C('SDK_SITE_STATUS'), 'head_img' => !empty($user_res['head_img']) ? $user_res['head_img'] : '', 'unread_count' => $unread_count, 'notice_count' => $notice_count, 'request_count' => $buddies_request, ); } else { $this -> set_message(1028, "fail", "未知错误"); } break; } //同步ucenter注册 cus_uc_register($username, $password, $username . '@vlcms.com'); echo base64_encode(json_encode($res_msg)); die; } elseif ($uc_uid == - 2) { //密码错误 $this -> set_message(1005, "fail", "密码错误"); } else { //登录失败 } } #实例化用户接口 $userApi = new MemberApi(); $result = $userApi -> login_sdk($user["account"], $user['password'], 1, $user["game_id"], get_game_name($user["game_id"]), $user['sdk_version'],$user['unique_code']);#调用登录 $res_msg = array(); switch ($result) { case - 1: $this -> set_message(1004, "fail", "用户不存在或被禁用"); break; case - 2: $this -> set_message(1005, "fail", "密码错误"); break; default: if (is_array($result)) { $user["user_id"] = $result['user_id']; $user['puid'] = 0; $this -> add_user_play($user); $platform = $this -> get_platform($user['user_id']); $small_list = $this -> small_list($user['user_id'], $user['game_id']); $small_list[] = array('is_platform' => $platform, 'user_id' => $user['user_id'], 'account' => $user['account'], 'user_account' => $user['account']); $user_res = M('User', 'tab_') -> where(['account' => $user['account']]) -> find(); $unread_count = 0; $time = time(); $notice = M('notice', 'tab_')->where('start_time < ' . $time . ' AND game_id = ' . $user['game_id']. ' AND (end_time = 0 OR end_time >' . $time . ')')->getField('id',true); if(!empty($notice)) { $unread_count += count($notice); $where['notice_id'] = ['in', implode(',', $notice)]; $where['user_id'] = $user['user_id']; $where['is_read'] = 1; $notice_read_count = M('notice_read', 'tab_')->where($where)->count(); $unread_count -= $notice_read_count; } $unread_count += M('share_record', 'tab_') -> where(['invite_id' => $user['user_id'], 'award_coin' => ['gt', 0], 'read' => 0]) -> count(); $unread_count += M('point_record', 'tab_') -> where(['type_id' => 6, 'user_id' => $user['user_id'], 'point' => ['gt', 0], 'read' => 0]) -> count(); $notice_count = $unread_count; $buddies_request = get_buddies_unagree_count($user['user_id']); $unread_count += $buddies_request; M('nearby', 'tab_') -> where(['user_id' => $user['user_id']]) -> setField(['game_status' => 1, 'update_time' => time(), 'user_nickname' => $user_res['nickname'], 'head_img' => $user_res['head_img']]); $res_msg = array( "status" => 200, "return_code" => "success", "return_msg" => "登录成功", "user_id" => $user["user_id"], "account" => $user["account"], "nickname" => $user_res["nickname"] ? $user_res["nickname"] : $user["account"], "sex" => $user_res["sex"] ? $user_res["sex"] : 0, "is_platform" => $platform, "token" => $result['token'], "user_token" => $user_res['user_token'], "OTP_token" => think_encrypt(json_encode(array('uid' => $user["user_id"], 'time' => time())), 1), 'is_uc' => 0, "is_open_small_account" => C('IS_OPEN_SMALL_ACCOUNT'), 'url' => 'http://' . str_replace(array('http://'), '', C('WEB_SITE')) . '/mobile.php', 'small_list' => $small_list, 'ios_packagename' => C('WEB_IOS_PACKAGENAME'), 'android_packagename' => C('WEB_AND_PACKAGENAME'), 'site_status' => C('SDK_SITE_STATUS'), 'head_img' => !empty($user_res['head_img']) ? $user_res['head_img'] : '', 'unread_count' => $unread_count, 'notice_count' => $notice_count, 'request_count' => $buddies_request, ); } else { $this -> set_message(1028, "fail", "未知错误"); } break; } echo base64_encode(json_encode($res_msg)); } /** * 第三方登录 */ public function oauth_login() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); if (empty($request)) { $this -> set_message(1001, "fail", "登录数据不能为空"); } $openid = $request['openid']; if ($request['login_type'] == "wx") { $param_set = get_game_wxlogin_param($request['game_id']); if (empty($param_set['wx_appid'])) { $result['status'] = 1083; $result['message'] = '微信登录appid/appsecret为空'; echo base64_encode(json_encode($result)); exit; } Vendor("WxPayPubHelper.WxPayPubHelper"); // 使用jsapi接口 $jsApi = new \JsApi_pub(); $wx = $jsApi -> create_openid($param_set['wx_appid'], $param_set['appsecret'], $request['code']); //unionid如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需 if (empty($wx['unionid'])) { echo base64_encode(json_encode(array("status" => 1071, "message" => "请到微信开放平台(open.weixin.qq.com)绑定公众号"))); exit(); } $openid = $wx['unionid']; $wx_param_set = get_game_wxlogin_param($request['game_id']); $auth = new WechatAuth($wx_param_set['wx_appid'], $wx_param_set['appsecret'], $wx['access_token']); $userInfo = $auth -> getUserInfo($wx['openid']); $register_type = 3; $head_img = $userInfo['headimgurl']; } elseif ($request['login_type'] == "bd") { if (empty($request['accessToken'])) { $res['status'] = - 1; $res['message'] = '用户不存在或被禁用'; echo base64_encode(json_encode($res)); exit(); } $url = "https://openapi.baidu.com/rest/2.0/passport/users/getLoggedInUser?access_token=" . $request['accessToken']; $baidu_url = json_decode(file_get_contents($url), true); $register_type = 5; $openid = $baidu_url['uid']; $head_img = "http://tb.himg.baidu.com/sys/portrait/item/" . $baidu_url['portrait']; } elseif ($request['login_type'] == "qq") { $register_type = 4; $qq_parm['access_token'] = $request['accessToken']; $qq_parm['oauth_consumer_key'] = C('qq_login.appid'); $qq_parm['openid'] = C('qq_login.key'); $qq_parm['format'] = "json"; $openid = get_union_id($request['accessToken']); if (empty($openid)) { $res['status'] = - 1; $res['message'] = '腾讯公司应用未打通 未将所有appid设置统一unionID'; echo base64_encode(json_encode($res)); exit(); } $url = "https://graph.qq.com/user/get_user_info?" . http_build_query($qq_parm); $qq_url = json_decode(file_get_contents($url), true); $head_img = $qq_url['figureurl_qq_1 ']; } elseif ($request['login_type'] == "wb") { $register_type = 6; $head_img = $request['head_img ']; } elseif ($request['login_type'] == "yk") { $register_type = 0; $head_img = "http://" . $_SERVER['HTTP_HOST'] . '/Public/Sdk/logoo.png'; } elseif ($request['login_type'] == "fb") { $register_type = 7; } elseif ($request['login_type'] == "gg") { $register_type = 8; } $map['openid'] = $openid; if ($request['login_type'] == "yk" && isset($request['account'])) { unset($map['openid']); $map['account'] = $request["account"]; $map['register_type'] = 0; } elseif ($request['login_type'] == "yk") { $map['id'] = - 1; } $data = M('user', 'tab_') -> where($map) -> find(); if (empty($data)) {//注册 do { $data['account'] = $request['login_type'] . '_' . sp_random_string(); $account = M('user', 'tab_') -> where(['account' => $data['account']]) -> find(); } while (!empty($account)); $data['password'] = sp_random_string(8); $data['nickname'] = $data['account']; $data['openid'] = $openid; $data['game_id'] = $request['game_id']; $data['head_img'] = !empty($head_img) ? $head_img : '';//头像 $data['game_name'] = get_game_name($request['game_id']); $data['promote_id'] = $request['promote_id']; $data['promote_account'] = get_promote_name($request['promote_id']); $data['register_way'] = 1; $data['register_type'] = $register_type; $data['sdk_version'] = $request['sdk_version']; $data['game_appid'] = $request['game_appid']; $data['device_type'] = $request['device_type']; $data['unique_code'] = $request['unique_code']; $userApi = new MemberApi(); $uid = $userApi -> tr_register($data); if ($uid < 0) { $res['status'] = 1023; $res['message'] = '注册失败'; echo base64_encode(json_encode($res)); exit; } } //登录 $userApi = new MemberApi(); $result = $userApi -> login_sdk($data["account"], $data['account'], 1, $request["game_id"], get_game_name($request['game_id']), $request['sdk_version']); if ($result == - 1) { $res['status'] = 1004; $res['message'] = '用户不存在或被禁用'; } else { $request["user_id"] = $result['user_id']; $request['puid'] = 0; $this -> add_user_play($request); $platform = $this -> get_platform($request['user_id']); $small_list = $this -> small_list($result['user_id'], $request['game_id']); $small_list[] = array('is_platform' => $platform, 'user_id' => $result['user_id'], 'account' => $data['account'], 'user_account' => $data['account']); $user_res = M('User', 'tab_') -> where(['account' => $data['account']]) -> find(); $unread_count = 0; $unread_count += M('share_record', 'tab_') -> where(['invite_id' => $result['user_id'], 'award_coin' => ['gt', 0], 'read' => 0]) -> count(); $unread_count += M('point_record', 'tab_') -> where(['type_id' => 6, 'user_id' => $result['user_id'], 'point' => ['gt', 0], 'read' => 0]) -> count(); $notice_count = $unread_count; $buddies_request = get_buddies_unagree_count($result['user_id']); $unread_count += $buddies_request; M('nearby', 'tab_') -> where(['user_id' => $result['user_id']]) -> setField(['game_status' => 1, 'update_time' => time(), 'user_nickname' => $user_res['nickname'], 'head_img' => $user_res['head_img']]); $res['status'] = 200; $res['message'] = '登录成功'; $res['user_id'] = $result['user_id']; $res['account'] = $data['account']; $res['token'] = $result['token']; $res['password'] = $data['account']; $res['nickname'] = $data['nickname'] ? $data['nickname'] : $data['account']; $res['sex'] = $user_res['sex'] ? $user_res['sex'] : 0; $res['small_list'] = $small_list; $res['is_platform'] = $platform; $res["is_open_small_account"] = C('IS_OPEN_SMALL_ACCOUNT'); $res['url'] = 'http://' . str_replace(array('http://'), '', C('WEB_SITE')) . '/mobile.php'; $res['ios_packagename'] = C('WEB_IOS_PACKAGENAME'); $res['android_packagename'] = C('WEB_AND_PACKAGENAME'); $res['site_status'] = C('SDK_SITE_STATUS'); $res['head_img'] = !empty($user_res['head_img']) ? $user_res['head_img'] : ''; $res['unread_count'] = $unread_count; $res['notice_count'] = $notice_count; $res['request_count'] = $buddies_request; } // echo M('user','tab_')->getLastSql();die; echo base64_encode(json_encode($res)); } /** *第三方登录设置 */ public function thirdparty() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); if (empty($request)) { $this -> set_message(1001, "fail", "登录数据不能为空"); } $map['game_id'] = $request['game_id']; $select = M('param', 'tab_') -> field('type,status') -> where($map) -> select(); if (!empty($select)) { foreach ($select as $key => $val) { if ($val['type'] == 1 && $val['status'] == 1) { $data['config'] .= 'qq|'; } if ($val['type'] == 2 && $val['status'] == 1) { $data['config'] .= 'wx|'; } if ($val['type'] == 3 && $val['status'] == 1) { $data['config'] .= 'wb|'; } if ($val['type'] == 4 && $val['status'] == 1) { $data['config'] .= 'bd|'; } } } else { $data['config'] = ''; } echo base64_encode(json_encode($data)); // $str = "qq_login,weixin_login,sina_login,baidu_login,fb_login,gg_login"; // $this->BaseConfig($str); } /** *显示扩展设置信息 */ protected function BaseConfig($name = '') { $map['name'] = array('in', $name); $map['status'] = 1; $tool = M('tool', "tab_") -> where($map) -> select(); $data['config'] = ''; if (!empty($tool)) { foreach ($tool as $key => $val) { if ($val['name'] == 'qq_login') { $data['config'] .= 'qq|'; } if ($val['name'] == 'weixin_login') { $data['config'] .= 'wx|'; } if ($val['name'] == 'sina_login') { $data['config'] .= 'wb|'; } if ($val['name'] == 'baidu_login') { $data['config'] .= 'bd|'; } if ($val['name'] == 'fb_login') { $data['config'] .= 'fb|'; } if ($val['name'] == 'gg_login') { $data['config'] .= 'gg|'; } } } if ($data['config'] != '') { $data['config'] = substr($data['config'], 0, strlen($data['config']) - 1); } echo base64_encode(json_encode($data)); } /** * 第三方登录参数请求 */ public function oauth_param() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $type = $request['login_type']; switch ($type) { case 'qq': $param_set = get_game_param($request['game_id'], '', 1); $param['qqappid'] = $param_set['openid']; break; case 'wx': $param_set = get_game_param($request['game_id'], '', 2); $param['weixinappid'] = $param_set['wx_appid']; break; case 'wb': $param_set = get_game_param($request['game_id'], '', 3); $param['weiboappkey'] = $param_set['appkey']; break; case 'bd': $param_set = get_game_param($request['game_id'], '', 4); $param['clientid'] = $param_set['clientid']; break; case 'fb': $param_set = get_game_param($request['game_id']); $param['appid'] = C('fb_login.appid'); break; case 'gg': $param_set = get_game_param($request['game_id']); $param['clientid'] = C('gg_login.clientid'); $param['clientsecert'] = C('gg_login.clientsecert'); break; } if (empty($param)) { $result['status'] = 1090; $result['message'] = '服务器未配置此参数'; } else { $result['status'] = 200; $result['message'] = '请求成功'; $result['param'] = $param; } echo base64_encode(json_encode($result)); } public function user_register() { C(api('Config/lists')); #获取SDK上POST方式传过来的数据 然后base64解密 然后将json字符串转化成数组 $user = json_decode(base64_decode(file_get_contents("php://input")), true); #判断数据是否为空 if (empty($user)) { $this -> set_message(1001, "fail", "注册数据不能为空"); } Log::write('user_register:' . date('Y-m-d H:i:s') . ' ---- ' . json_encode($user), 'INFO'); /**是否开启ucenter**/ if (C('UC_OPEN') == 1) { //Ucenter注册 //1.验证本平台是否存在账号 $is_user_info = M('user', 'tab_') -> where(['account' => $user['account']]) -> find(); if (!empty($is_user_info)) { $this -> set_message(1017, "fail", "用户名已存在"); } //2.验证其他平台是否存在账号 $domain = C('UC_OTHER_WEB_URL'); if (!empty($domain)) { $url = "http://{$domain}/Api/user/checkUserName?account={$user['account']}"; $check_res = json_decode(file_get_contents($url), true); if ($check_res['status'] == 0) { $this -> set_message(1017, "fail", "用户名已存在"); } } //3.ucenter注册账号 $ucresult = uc_user_checkname($user['account']); if ($ucresult == - 1) { $this -> set_message(0, "fail", "用户名不合法"); } elseif ($ucresult == - 2) { $this -> set_message(0, "fail", "包含要允许注册的词语"); } elseif ($ucresult == - 3) { $this -> set_message(1017, "fail", "用户名已存在"); } else { //同步ucenter注册 cus_uc_register($user['account'], $user['password'], $user['account'] . '@vlcms.com'); } } $this -> reg_data($user); } /** * 邮箱注册 */ public function user_email_register() { C(api('Config/lists')); #获取SDK上POST方式传过来的数据 然后base64解密 然后将json字符串转化成数组 $user = json_decode(base64_decode(file_get_contents("php://input")), true); if (empty($user)) { $this -> set_message(1001, "fail", "注册数据不能为空"); } Log::write('user_email_register:' . date('Y-m-d H:i:s') . ' ---- ' . json_encode($user), 'INFO'); $v_res = $this -> verify_email_code($user['account'], $user['code']); if ($v_res) { $this -> reg_data($user, 3); } } /** *手机用户注册 */ public function user_phone_register() { C(api('Config/lists')); #获取SDK上POST方式传过来的数据 然后base64解密 然后将json字符串转化成数组 $user = json_decode(base64_decode(file_get_contents("php://input")), true); #判断数据是否为空 if (empty($user)) { $this -> set_message(1001, "fail", "注册数据不能为空"); } Log::write('user_phone_register:' . date('Y-m-d H:i:s') . ' ---- ' . json_encode($user), 'INFO'); #验证短信验证码 $this -> sms_verify($user['account'], $user['code']); /**是否开启ucenter**/ if (C('UC_OPEN') == 1) { //Ucenter注册 //1.验证本平台是否存在账号 $is_user_info = M('user', 'tab_') -> where(['account' => $user['account']]) -> find(); if (!empty($is_user_info)) { $this -> set_message(1017, "fail", "用户名已存在"); } //2.验证其他平台是否存在账号 $domain = C('UC_OTHER_WEB_URL'); if (!empty($domain)) { $url = "http://{$domain}/Api/user/checkUserName?account={$user['account']}"; $check_res = json_decode(file_get_contents($url), true); if ($check_res['status'] == 0) { $this -> set_message(1017, "fail", "用户名已存在"); } } //3.ucenter注册账号 $ucresult = uc_user_checkname($user['account']); if ($ucresult == - 1) { $this -> set_message(0, "fail", "用户名不合法"); } elseif ($ucresult == - 2) { $this -> set_message(0, "fail", "包含要允许注册的词语"); } elseif ($ucresult == - 3) { $this -> set_message(1017, "fail", "用户名已存在"); } else { //同步ucenter注册 cus_uc_register($user['account'], $user['password'], $user['account'] . '@vlcms.com'); } } $this -> reg_data($user, 2); } //注册信息 private function reg_data($user, $type = 1) { #实例化用户接口 $userApi = new MemberApi(); if(!preg_match('/^[0-9a-zA-Z]{6,12}$/', $user['password'])){ $this -> set_message(1027, "fail", "密码长度为6-12位"); } /* if(!preg_match('/^(?![^a-zA-Z]+$)(?!\D+$).{6,15}$/', $user['password'])){ $this -> set_message(1027, "fail", "6-12位字母或数字"); } */ // user表加game_id if ($type == 2) {//手机2 if(!preg_match('/^[1]([3-9])[0-9]{9}$/', $user['account'])){ $this -> set_message(1027, "fail", "手机号格式不正确"); } $result = $userApi -> sdk_register_($user['account'], $user['password'], 1, 2, $user['promote_id'], get_promote_name($user['promote_id']), $user['account'], $user["game_id"], get_game_name($user["game_id"]), $user['sdk_version'] ,$user['device_type'],$user['unique_code']); } elseif ($type == 3) {//邮箱3 $result = $userApi -> sdk_register_($user['account'], $user['password'], 1, 7, $user['promote_id'], get_promote_name($user['promote_id']), '', $user["game_id"], get_game_name($user["game_id"]), $user['sdk_version'] ,$user['device_type'],$user['unique_code']); } else {//用户1 if(strlen($user['account']) < 6 || len($user['account']) > 15){ $this -> set_message(1027, "fail", "账号长度为6-15位"); }elseif(!preg_match('/^(?![^a-zA-Z]+$)(?!\D+$)$/', $user['account'])){ $this -> set_message(1027, "fail", "账号必须字母数字组合"); } $result = $userApi -> sdk_register_($user['account'], $user['password'], 1, 1, $user['promote_id'], get_promote_name($user['promote_id']), $phone = "", $user["game_id"], get_game_name($user["game_id"]), $user['sdk_version'] ,$user['device_type'],$user['unique_code']); } $res_msg = array(); if ($result > 0) { $this -> set_message(200, "success", "注册成功"); } else { switch ($result) { case - 3: $this -> set_message(1017, "fail", "用户名已存在"); break; default: $this -> set_message(1027, "fail", "注册失败"); break; } } } /** * @函数或方法说明 * @获取禁用状态 * @author: 郭家屯 * @since: 2019/5/7 14:29 */ public function get_lock_status(){ $request = json_decode(base64_decode(file_get_contents("php://input")), true); $user = get_user_entity($request['user_id']); if($user['lock_status'] == 0 || $user['check_status'] == 0){ $this->set_message(0,"fail","账号被禁用,无法充值,请联系客服!2"); } $game = M('Game','tab_')->where(['id'=>$request['game_id']])->field('pay_status')->find(); if($game['pay_status'] == 0){ $this->set_message(0,"fail","该游戏暂时无法充值,请联系客服!"); } $this->set_message(200,"success","账号状态正常"); } /** *修改用户数据 */ public function user_update_data() { $user = json_decode(base64_decode(file_get_contents("php://input")), true); C(api('Config/lists')); #判断数据是否为空 if (empty($user)) { $this -> new_set_message(1001, "操作数据不能为空"); } #实例化用户接口 $data['id'] = $user['user_id']; $userApi = new MemberApi(); switch ($user['code']) { case 'phone': //对于手机号 加上是否重复的验证过程 和 是否预计绑定的验证过程 $where['id'] = $data['id']; $getphone = M('User', 'tab_') -> where($where) -> getField('phone'); if (!empty($getphone)) { $this -> new_set_message(1125, '该用户已经绑定过手机号,请解绑后再来'); } $tt['phone'] = $user['phone']; $getuser = M('User', 'tab_') -> where($tt) -> field('id') -> find(); if ($getuser) { $this -> new_set_message(1098, '该手机号已被绑定'); } #验证短信验证码 $this -> sms_verify2($user['phone'], $user['sms_code']); $data['phone'] = $user['phone']; break; case 'nickname': $nickname_len = $user['nickname']; $encode = mb_detect_encoding($user['nickname'], array('UTF-8','GB2312','GBK')); if($encode == "UTF-8"){ $nickname_len = @iconv('UTF-8','GB18030',$user['nickname']); } if(strlen($nickname_len) > 16){ $this -> new_set_message(1027, "昵称过长"); } $nk = M('User', 'tab_') -> field('id,account,nickname') -> where(['nickname' => $user['nickname']]) -> find(); if (!empty($nk) && is_array($nk) && $user['user_id'] != $nk['id']) { $this -> new_set_message(1012, "昵称已被使用"); } $data['nickname'] = $user['nickname']; break; case 'pwd': /* if(!preg_match('/^(?![^a-zA-Z]+$)(?!\D+$).{6,15}$/', $user['password'])){ $this -> new_set_message(1027, "密码必须6-15位字母和数字组合"); } */ if(!preg_match('/^[0-9a-zA-Z]{6,15}$/', $user['password'])){ $this -> set_message(1027, "fail", "密码6-15位字母或数字"); } if ($user['old_password'] == $user['password']) { $this -> new_set_message(1126, '新密码与原始密码不能相同'); } $data['old_password'] = $user['old_password']; $data['password'] = $user['password']; /*判断Ucenter是否打开*/ if (C('UC_OPEN') == 1) { $username = $user['account']; $opwd = $user['old_password']; $pwd = $user['password']; //修改uc密码 $ucresult = uc_user_edit($username, $opwd, $pwd); if ($ucresult == - 1) { $this -> new_set_message(1006, "旧密码输入不正确"); } /** * 同步修改其他站点用户密码 */ $domain = C('UC_OTHER_WEB_URL'); if (!empty($domain)) { $url = "http://{$domain}/Api/user/editPassword?account={$username}&oldpsw={$opwd}&newpsw={$pwd}"; $aa = json_decode(file_get_contents($url), true); } } break; case 'account': if (!preg_match("/^[a-z\d]{6,15}$/i", $user['account'])) { $this -> new_set_message(1025, "用户名为6-15位的数字和字母的组合"); } $data['account'] = $user['account']; $data['password'] = $user['password']; $data['register_type'] = 1; //游客改为账号注册 $map['account'] = $user['account']; $res = M('user', 'tab_') -> where($map) -> find(); if ($res) { $this -> new_set_message(1017, "已存在该用户名"); } $result = $this -> updata_user_youke($data); break; default: $this -> new_set_message(1074, "修改信息不明确"); break; } $result = $userApi -> updateUser($data); if ($result == - 2) { $this -> new_set_message(1006, "旧密码输入不正确"); } else if ($result !== false) { if ($user['code'] == 'pwd') { $u_uid['uid'] = $user['user_id']; M('user_pwd') -> where($u_uid) -> setField('password', think_encrypt($data['password'])); } $user_res = M('User', 'tab_') -> where(['id' => $user['user_id']]) -> find(); $data = ['user_account' => $user_res['nickname'], 'update_time' => time(), 'head_img' => $user_res['head_img']]; M('nearby', 'tab_') -> where(['user_id' => $user['user_id']]) -> save($data); $this -> new_set_message(200, "修改成功"); } else { $this -> new_set_message(1012, "修改失败"); } } //游客改名,对应修改数据 private function updata_user_youke($data) { $map['user_id'] = $data['id']; $data1['user_account'] = $data['account']; $res = M('user_play_info', 'tab_') -> where($map) -> setField($data1); $res1 = M('user_play', 'tab_') -> where($map) -> setField($data1); $res2 = M('user_login_record', 'tab_') -> where($map) -> setField($data1); $res3 = M('spend', 'tab_') -> where($map) -> setField($data1); $res4 = M('provide', 'tab_') -> where($map) -> setField($data1); $res5 = M('mend', 'tab_') -> where($map) -> setField($data1); $res6 = M('gift_record', 'tab_') -> where($map) -> setField($data1); $res7 = M('deposit', 'tab_') -> where($map) -> setField($data1); $res8 = M('bind_spend', 'tab_') -> where($map) -> setField($data1); $res9 = M('balance_edit', 'tab_') -> where($map) -> setField($data1); $res10 = M('agent', 'tab_') -> where($map) -> setField($data1); $res11 = M('nearby', 'tab_') -> where($map) -> setField($data1); } //验证验证码 public function verify_sms() { $user = json_decode(base64_decode(file_get_contents("php://input")), true); if (empty($user)) { $this -> set_message(1001, "fail", "操作数据不能为空"); } $this -> sms_verify($user['phone'], $user['code'], 1); } //sdk验证邮箱 public function verify_email() { $user = json_decode(base64_decode(file_get_contents("php://input")), true); if (empty($user)) { $this -> set_message(1001, "fail", "操作数据不能为空"); } $code_result = $this -> emailVerify($user['email'], $user['code']); if ($code_result == 1) { $this -> set_message(200, "success", "验证成功"); } else { if ($code_result == 2) { $this -> set_message(1020, "fail", "请先获取验证码"); } elseif ($code_result == - 98) { $this -> set_message(1021, "fail", "验证码超时"); } elseif ($code_result == - 97) { $this -> set_message(1022, "fail", "验证码不正确,请重新输入"); } } } /** *忘记密码接口 */ public function forget_password() { $user = json_decode(base64_decode(file_get_contents("php://input")), true); $userApi = new MemberApi(); #验证短信验证码 if ($user['code_type'] != 2) { $this -> sms_verify($user['phone'], $user['code']); } if(!preg_match('/^(?![^a-zA-Z]+$)(?!\D+$).{6,15}$/', $user['password'])){ $this -> set_message(1027, "fail", "密码必须6-15位字母和数字组合"); } $result = $userApi -> updatePassword($user['user_id'], $user['password']); if ($result == true) { $this -> set_message(200, "success", "修改成功"); } else { $this -> set_message(1012, "fail", "修改失败"); } } /** *添加玩家信息 */ private function add_user_play($user = array()) { $user_play = M("UserPlay", "tab_"); $map["game_id"] = $user["game_id"]; $map["user_id"] = $user["user_id"]; $map['sdk_version'] = $user['sdk_version']; $res = $user_play -> where($map) -> find(); if (empty($res)) { $user_entity = get_user_entity($user["user_id"]); $data["user_id"] = $user["user_id"]; $data["user_account"] = $user_entity["account"]; $data["user_nickname"] = $user_entity["nickname"]; $data["game_id"] = $user["game_id"]; $data["game_appid"] = $user["game_appid"]; $data["game_name"] = get_game_name($user["game_id"]); $data["server_id"] = 0; $data["server_name"] = ""; $data["role_id"] = 0; $data['parent_id'] = $user_entity["parent_id"]; $data['parent_name'] = $user_entity["parent_name"]; $data["role_name"] = ""; $data["role_level"] = 0; $data["bind_balance"] = 0; $data["promote_id"] = $user_entity["promote_id"]; $data["promote_account"] = $user_entity["promote_account"]; $data['play_time'] = time(); $data['play_ip'] = get_client_ip(); $data["sdk_version"] = $user["sdk_version"]; $data['ppuid'] = $user['puid'] == '' ? 0 : $user['puid']; $data['check_time'] = time(); $user_play -> add($data); } } //修改角色名称 public function update_user_play() { $user = json_decode(base64_decode(file_get_contents("php://input")), true); if (empty($user)) { $this -> set_message(1001, "fail", "操作数据不能为空"); } $map['user_id'] = $user['user_id']; $map['game_id'] = $user['game_id']; $userplay = M('user_play', 'tab_') -> where($map) -> find(); if (null == $userplay) { $this -> set_message(1004, "fail", "玩家不存在"); } else { $user_play_map['id'] = $userplay['id']; if ($user['type'] == 1) { $update = M('user_play', 'tab_') -> where($user_play_map) -> setField('role_name', $user['role_name']); } else { $update = M('user_play', 'tab_') -> where($user_play_map) -> setField('role_level', $user['role_level']); } if ($update) { $this -> set_message(1, "success", "修改成功"); } else { $this -> set_message(0, "fail", "修改失败"); } } } /** * 添加游戏角色数据 * * @param $request */ public function save_user_play_info() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); if (empty($request)) { $this -> set_message(1001, "fail", "操作数据不能为空"); } $user_id = $request['user_id']; $server_id = empty($request['server_id']) ? 0 : $request['server_id']; $map['user_id'] = $user_id; $map['game_id'] = $request['game_id']; $map['server_id'] = $request['server_id']; $map['server_name'] = $request['server_name']; $user_play = M('user_play_info', 'tab_'); $res = $data = $user_play -> where($map) -> find(); $user = M('user', 'tab_'); $user_data = $user -> find($user_id); $gameName = get_game_name($request['game_id']); $data['promote_id'] = $request['promote_id']; $data['promote_account'] = get_promote_account($request['promote_id']); $data['game_id'] = $request['game_id']; $data['game_name'] = $gameName; $data['server_id'] = $request['server_id']; $data['server_name'] = $request['server_name']; $data['role_name'] = $request['game_player_name']; $data['role_id'] = $request['game_player_id']; $data['role_level'] = $request['role_level']; $data['user_id'] = $user_id; $data['user_account'] = $user_data['account']; $data["user_nickname"] = $user_data["nickname"]; $data['play_time'] = time(); $data["sdk_version"] = $request["sdk_version"]; $data['play_ip'] = get_client_ip(); $data['pipuid'] = $user_data['puid']; Log::write('save_user_play_info:' . date('Y-m-d H:i:s') . ' ---- ' . json_encode($data), 'INFO'); if ($res['id']>0) { $user_play->save($data); $this->updateLoginRecord($data); } else { $data['create_time'] = time(); $data['create_ip'] = get_client_ip(); // $data['create_device_number'] = time(); // 修改重复插入问题 增加唯一索引 记录重复插入异常 try { $user_play->add($data); } catch (\Exception $e) { Log::write('Duplicate Exception:' .json_encode($e->getMessage()), Log::ERR); } $this->updateLoginRecord($data); } $server = M('server', 'tab_')->where(['server_id' => $request['server_id'], 'game_id' => $request['game_id']])->find(); if (empty($server)) { $serverData = [ 'game_id' => $request['game_id'], 'game_name' => $gameName, 'server_name' => $request['server_name'], 'server_num' => $request['server_id'], 'server_id' => $request['server_id'], 'server_version' => $request["sdk_version"], 'create_time' => time(), 'start_time' => time(), ]; M('server', 'tab_')->data($serverData)->add(); } $this -> set_message(200, "success", "成功"); } /** * 更新登录记录表区服 * * @param $userPlay * * @author: 鹿文学[lwx] * @since: 2019\4\22 0022 10:38 * */ private function updateLoginRecord($userPlay) { $map = array( 'game_id' => $userPlay['game_id'], 'user_id' => $userPlay['user_id'], 'lpuid' => $userPlay['pipuid'], 'promote_id' => $userPlay['promote_id'], 'login_time' => ['gt', 0], ); $userLoginRecordModel = M('user_login_record', 'tab_'); $userLoginRecordData = $userLoginRecordModel->where($map)->order('id desc')->find(); $data = array( 'server_id' => $userPlay['server_id'], 'server_name' => $userPlay['server_name'], 'game_player_name'=>$userPlay['role_name'], 'id'=>$userLoginRecordData['id'] ); return $userLoginRecordModel->save($data); } /** * @param $email * @param $v_code * 验证邮箱验证码 */ public function verify_email_code($email, $v_code) { if (empty($email)) { $this -> new_set_message(1016, "邮箱不能为空", []); } elseif (empty($v_code)) { $this -> new_set_message(1019, "验证码不能为空", []); } $code_result = $this -> emailVerify($email, $v_code); if ($code_result == 1) { return true; } else { if ($code_result == 2) { $this -> new_set_message(1020, "请先获取验证码", []); } elseif ($code_result == - 98) { $this -> new_set_message(1021, "验证码超时", []); } elseif ($code_result == - 97) { $this -> new_set_message(1022, "验证码不正确,请重新输入", []); } } } /** * @param $email * @param $code * @param int $time * * @return int * 验证 邮箱验证码 */ public function emailVerify($email, $code, $time = 30) { $session = session($email); if (empty($session)) { return 2; } elseif ((NOW_TIME - $session['create_time']) > $time * 60) { return - 98; } elseif ($session['code'] != $code) { return - 97; } session($email, null); return 1; } /** * 发送邮件验证码 注册传1 解绑传2 绑定传3 */ public function send_email() { $data = json_decode(base64_decode(file_get_contents("php://input")), true); $code_type = $data['code_type']; $email = $data['email']; $pattern = "/([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?/i"; if (!preg_match($pattern, $email)) { $this -> new_set_message(1017, "请输入正确的邮箱地址"); } if ($code_type == 1) {/* 注册 */ $user = M('user', 'tab_') -> where(['email|account' => $email]) -> find(); if ($user) { $this -> new_set_message(1017, "该邮箱已被注册或绑定过"); } } elseif ($code_type == 2) {/* 忘记密码 */ } elseif ($code_type == 3) {/* 解绑 */ } elseif ($code_type == 4) {/* 绑定 */ $user = M('user', 'tab_') -> where(['email' => $email]) -> find(); if ($user) { $this -> new_set_message(1017, "该邮箱已被绑定"); } } $session = session($data['email']); if (!empty($session) && (NOW_TIME - $session['create_time']) < 60) { $this -> new_set_message(1024, "验证码发送过于频繁,请稍后再试", []); exit; } $email = $data['email']; $code = rand(100000, 999999); $bool = sendMail($data['email'], '' . $code . ''); if ($bool) { session($email, ['code' => $code, 'create_time' => NOW_TIME]); $this -> new_set_message(200, "发送成功", []); } else { $this -> new_set_message(1018, "发送失败,请检查邮箱地址是否正确", []); } } /** * 检查账号是否存在 * * @param $account * * @return bool * author: xmy 280564871@qq.com */ public function checkUserExist($account) { $map['account'] = $account; $data = M('user', 'tab_') -> where($map) -> find(); if (empty($data)) { return true; } else { return false; } } /** *短信发送 */ public function send_sms() { $data = json_decode(base64_decode(file_get_contents("php://input")), true); $phone = $data['phone']; if ($data['reg'] == 1) { /* 注册检查 */ $user = M('user', 'tab_') -> where(['phone|account' => $phone]) -> find(); if ($user) { $this -> new_set_message(1098, "该手机号已被注册或绑定过"); die; } } elseif ($data['reg'] == 2) { /* 绑定检查 */ $user = M('user', 'tab_') -> where(['phone' => $phone]) -> find(); if ($user) { $this -> new_set_message(1098, "该手机号已被绑定"); die; } } elseif ($data['reg'] == 3) {/* 忘记密码检查 */ } elseif ($data['reg'] == 4) {/* 解绑检查 */ } $this -> sms_send($phone); } /** *用户基本信息 */ public function user_info() { C(api('Config/lists')); $user = json_decode(base64_decode(file_get_contents("php://input")), true); $model = M("user", "tab_"); $data = array(); switch ($user['type']) { case 0: $data = $model -> field("tab_user.id,account,ifnull(nickname,account) as nickname,phone,balance,bind_balance,ifnull(tab_user.sex,0) as sex,game_name,register_type,ifnull(age_status,0) as age_status,ifnull(idcard,'') as idcard,ifnull(real_name,'') as real_name,ifnull(head_img,'') as head_img,third_authentication,email,balance,point,gold_coin") -> join("INNER JOIN tab_user_play ON tab_user.id = tab_user_play.user_id and tab_user.id = {$user['user_id']} and tab_user_play.game_id = {$user['game_id']}") -> find(); break; default: $map['account'] = $user['user_id']; $map['lock_status'] = 1; $data = $model -> field("id,account,ifnull(nickname,account) as nickname,phone,balance,ifnull(sex,0) as sex,ifnull(age_status,0) as age_status,ifnull(idcard,'') as idcard,ifnull(real_name,'') as real_name,ifnull(head_img,'') as head_img,third_authentication,email,balance,point,gold_coin") -> where($map) -> find(); break; } if (empty($data)) { $this -> new_set_message(1004, "帐号不存在或被禁用!", []); } $unread_count = 0; //获取公告未读条数 $time = time(); $notice = M('notice', 'tab_')->where('start_time < ' . $time . ' AND game_id = ' . $user['game_id']. ' AND (end_time = 0 OR end_time >' . $time . ')')->getField('id',true); if(!empty($notice)) { $unread_count += count($notice); $where['notice_id'] = ['in', implode(',', $notice)]; $where['user_id'] = $user['user_id']; $where['is_read'] = 1; $notice_read_count = M('notice_read', 'tab_')->where($where)->count(); $unread_count -= $notice_read_count; } //邀请奖励消息未读条数 $unread_count += M('share_record', 'tab_') -> where(['invite_id' => $data['id'], 'award_coin' => ['gt', 0], 'read' => 0]) -> count(); //积分奖励消息条数 $unread_count += M('point_record', 'tab_') -> where(['type_id' => 6, 'user_id' => $data['id'], 'point' => ['gt', 0], 'read' => 0]) -> count(); $data['notice_count'] = $unread_count; $buddies_request = get_buddies_unagree_count($data['id']); $data['request_count'] = $buddies_request; $unread_count += $buddies_request; $data['unread_count'] = $unread_count; $money = 0; $money += M('deposit', 'tab_') -> where(['pay_status' => 1, 'user_id' => $data['id']]) -> sum('pay_amount'); $money += M('spend', 'tab_') -> where(['pay_status' => 1, 'user_id' => $data['id']]) -> sum('pay_amount'); $data['vip_level'] = get_vip_level($money); $data['phone'] = empty($data["phone"]) ? " " : $data["phone"]; $this -> new_set_message(200, "success", $data); } /** *用户平台币充值记录 */ public function user_deposit_record() { $data = json_decode(base64_decode(file_get_contents("php://input")), true); $map["user_id"] = $data["user_id"]; $map["pay_status"] = 1; $row = intval($data['row']); $page = intval($data['index']); $row = $row ? $row : 20; $page = $page ? $page : 1; $deposit = M("deposit", "tab_") -> field('pay_way,pay_amount,create_time') -> where($map) -> order('id desc') -> page($page, $row) -> select(); $count = M("deposit", "tab_") -> field('pay_way,pay_amount,create_time') -> where($map) -> count(); if (empty($deposit)) { echo base64_encode(json_encode(array("status" => 1061, "return_code" => "fail", "return_msg" => "暂无记录"))); exit(); } foreach ($deposit as $k => $v) { $deposit[$k]['pay_way_name'] = get_pay_way($v['pay_way']); } $return_data['status'] = 200; $return_data['total'] = $count; $return_data['data'] = $deposit; echo base64_encode(json_encode($return_data)); } /** *用户领取礼包记录 */ public function user_gift_record() { $data = json_decode(base64_decode(file_get_contents("php://input")), true); $map["user_id"] = $data["user_id"]; $map["game_id"] = $data["game_id"]; $gift = M("GiftRecord", "tab_") -> field("tab_gift_record.game_id,tab_gift_record.game_name,tab_giftbag.giftbag_name ,tab_giftbag.digest,tab_gift_record.novice,tab_gift_record.status,tab_giftbag.start_time,tab_giftbag.end_time") -> join("LEFT JOIN tab_giftbag ON tab_gift_record.gift_id = tab_giftbag.id where user_id = {$data['user_id']} and tab_gift_record.game_id = {$data['game_id']}") -> select(); if (empty($gift)) { echo base64_encode(json_encode(array("status" => 1061, "return_code" => "fail", "return_msg" => "暂无记录"))); exit(); } foreach ($gift as $key => $val) { $gift[$key]['icon'] = $this -> set_game_icon($val[$key]['game_id']); $gift[$key]['now_time'] = NOW_TIME; } $return_data['status'] = 200; $return_data['data'] = $gift; echo base64_encode(json_encode($return_data)); } /** *用户平台币(绑定和非绑定) */ public function user_platform_coin() { $data = json_decode(base64_decode(file_get_contents("php://input")), true); C(api('Config/lists')); $user_play = M("UserPlay", "tab_"); $platform_coin = array(); $user_data = array(); #非绑定平台币信息 $user_data = get_user_entity($data["user_id"]); $platform_coin['status'] = 200; $platform_coin["balance"] = $user_data["balance"]; #绑定平台币信息 $map["user_id"] = $data["user_id"]; $map["game_id"] = $data["game_id"]; $user_data = $user_play -> where($map) -> find(); $platform_coin["bind_balance"] = $user_data["bind_balance"]; echo base64_encode(json_encode($platform_coin)); } //判断帐号是否存在 public function account_exist() { $data = json_decode(base64_decode(file_get_contents("php://input")), true); $map['account'] = $data['account']; $user = M('user', 'tab_') -> where($map) -> find(); if (empty($user)) { echo json_encode(array('status' => 1004, 'msg' => '帐号不存在')); } else { echo json_encode(array('status' => 200)); } } //解绑手机 public function user_phone_unbind() { $data = json_decode(base64_decode(file_get_contents("php://input")), true); $this -> sms_verify($data['phone'], $data['code']); $map['id'] = $data['user_id']; $user = M('user', 'tab_') -> where($map) -> setField('phone', ""); if ($user) { echo base64_encode(json_encode(array('status' => 200, 'return_msg' => '解绑成功'))); } else { echo base64_encode(json_encode(array('status' => - 1, 'return_msg' => '解绑失败'))); } } //解绑邮箱 //yyh 2018 10 25 public function unbind_email() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $user_id = $request['user_id']; $email = $request['email']; $user_data = M('User', 'tab_') -> field('account,email') -> find($user_id); if (empty($user_data)) { $this -> new_set_message(1001, "用户数据不存在", []); } if ($email != $user_data['email']) { $this -> new_set_message(1001, "您未绑定该邮箱", []); } $v_res = $this -> verify_email_code($user_data['email'], $request['code']); $map['id'] = $user_id; $user = M('user', 'tab_') -> where($map) -> setField('email', ""); if ($user) { $this -> new_set_message(200, "解绑成功", []); } else { $this -> new_set_message(0, "解绑失败", []); } } //绑定邮箱 //yyh 2018 10 25 public function bind_email() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $user_id = $request['user_id']; $email = $request['email']; $user_data = M('User', 'tab_') -> field('account,email') -> find($user_id); if (empty($user_data)) { $this -> new_set_message(1001, "用户数据不存在", []); } if ($user_data['email'] != '') { $this -> new_set_message(1030, "该用户已经绑定过邮箱,请解绑后再来", []); } $v_res = $this -> verify_email_code($email, $request['code']); $map['id'] = $user_id; $user = M('user', 'tab_') -> where($map) -> setField('email', $email); if ($user) { $this -> new_set_message(200, "绑定成功", []); } else { $this -> new_set_message(0, "绑定失败", []); } } //常见问题 public function get_problem() { $data = M('document') -> join("left join sys_category c on c.name='FAQ'") -> where('c.id = sys_document.category_id AND sys_document.status = 1') -> field('sys_document.id,sys_document.title,sys_document.description') -> select(); echo base64_encode(json_encode($data)); } //留言 public function get_question() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $type = $request['type']; $user_id = $request['user_id']; $content = $request['content']; $map['user_id'] = $user_id; $data = M('question', 'tab_') -> where($map) -> find(); if ($type == 1) { if (empty($data)) { $data['create_time'] = time(); $question[time()] = $content; $data['question'] = json_encode($question); $data['user_id'] = $user_id; $data['account'] = get_user_entity($user_id)['account']; M('question', 'tab_') -> where($map) -> add($data); } else { $question = json_decode($data['question'], true); $question[time()] = $content; $data['question'] = json_encode($question); $data['account'] = get_user_entity($user_id)['account']; M('question', 'tab_') -> where($map) -> save($data); } } $question = json_decode($data['question'], true); foreach ($question as $k => $v) { $res[$k][1] = $v; } $answer = json_decode($data['answer'], true); foreach ($answer as $key => $value) { $res[$key][2] = $value; } ksort($content); echo base64_encode(json_encode($res)); } //获取开启的支付 public function get_pay_server() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); if (pay_set_status('wei_xin') == 1 || pay_set_status('wei_xin_app') || pay_set_status('weixin') == 1 || pay_set_status('weixin_gf') == 1 || pay_set_status('jft_wap') == 1 || (pay_set_status('goldpig') == 1 && C('goldpig.wx')) || (pay_set_status('heepay') == 1 && C('heepay.wxp')) ) { $wx_game = 1; } else if (pay_set_status('wei_xin_app') == 0 && pay_set_status('weixin') == 0 && pay_set_status('jft_wap') == 0) { $wx_game = 0; } if ($request['price'] >= C('WX_PAY_LIMIT')) $wx_game = 0; if (pay_set_status('alipay') == 1 || (pay_set_status('goldpig') == 1 && C('goldpig.zfb')) || (pay_set_status('sqpay') == 1 && C('sqpay.zfb')) ) { /* if (get_game_appstatus($request['game_id'])) { */ $zfb_game = 1; /* } else { $zfb_game = 0; } */ } else { $zfb_game = 0; } if (pay_set_status('jubaobar') == 1) { $jby_game = 1; } else { $jby_game = 0; } if (pay_set_status('jft') == 1) { $jft_game = 1; } else { $jft_game = 0; } if(pay_set_status('ptb_pay') == 1){ $ptb_game = 1; }else{ $ptb_game = 0; } if(pay_set_status('bind_pay') == 1){ $bind_game = 1; }else{ $bind_game = 0; } // 双乾 银联支付 $squnion_pay = 0; $sqpay = M('tool','tab_')->field('status, config')->where(array('name'=>'sqpay'))->find(); if ($sqpay['status'] == 1) { $r = json_decode($sqpay['config'], true); if (isset($r['union']) && $r['union'] == 1) $squnion_pay = 1; } // 双乾银联快捷支付 $shortcut_pay = 0; $sqpay = M('tool','tab_')->field('status, config')->where(array('name'=>'sqpay'))->find(); if ($sqpay['status'] == 1) { $r = json_decode($sqpay['config'], true); if (isset($r['shortcut']) && $r['shortcut'] == 1) $shortcut_pay = 1; } // 双乾微信小程序支付 $wx_small = 0; $sqpay = M('tool','tab_')->field('status, config')->where(array('name'=>'sqpay'))->find(); if ($sqpay['status'] == 1) { $r = json_decode($sqpay['config'], true); if (isset($r['wx_small']) && $r['wx_small'] == 1) $wx_small = 1; } $user_id = $request['user_id']; $game_id = $request['game_id']; $balance = M ('user', 'tab_')->where (array( 'id' => $user_id ))->getField('balance'); $bind_balance = M('user_play', 'tab_')->where(array( 'user_id' => $user_id, 'game_id' => $game_id ))->getField('bind_balance'); // pp($squnion_pay); //0:APP 1:WAP $zfb_type = pay_set_status('alipay') == 1 ? (empty(C('alipay.way')) ? 0 : C('alipay.way')) : 1; /* if ($request['api_ver'] != 2) { $zfb_type = 1; } */ echo base64_encode(json_encode(array( 'status' => 200, 'wx_game' => $wx_game, 'zfb_game' => $zfb_game, 'jby_game' => $jby_game, 'jft_game' => $jft_game, 'zfb_type' => $zfb_type, 'ptb_game' => $ptb_game, 'bind_game' => $bind_game, 'squnion_pay' => $squnion_pay, // 银联0关 1开 'platform_coin' => $balance, 'bind_coin' => $bind_balance, 'wx_type' => $wx_small, // 0微信 1 微信小程序 双乾 'shortcut_pay' => $shortcut_pay, // 快捷支付 0关 1开 ))); } //获取渠道折扣 public function get_user_discount() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $game_id = $request['game_id']; $user_id = $request['user_id']; $user = get_user_entity($user_id); $promote_id = $user['promote_id']; $discount = $this -> get_discount($game_id, $promote_id, $user_id); echo base64_encode(json_encode($discount)); } /** * 实名认证信息 获得传递过来的UID,返回该玩家是否已经通过审核 * * @return mixed */ public function return_age() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); if (empty($request)) { $this -> set_message(1001, "fail", "操作数据不能为空"); } $mmm['account'] = $request['account']; $user = M('User', 'tab_') -> where($mmm) -> find(); //添加登录记录 $da = array( 'user_id' => $user['id'], 'user_account' => $user['account'], 'user_nickname' => $user['nickname'], 'game_id' => $request['game_id'], 'game_name' => get_game_name($request["game_id"]), 'server_id' => null, 'type' => 1, 'server_name' => null, 'login_time' => NOW_TIME, 'login_ip' => get_client_ip(), 'sdk_version' => $request['sdk_version'], 'promote_id' => $user['promote_id'], 'lpuid' => $user['puid'], ); /* $denglu = M('UserLoginRecord', 'tab_')->add($da); */ $uloginrecord = M('UserGameLoginRecord', 'tab_') -> field('id,login_time,down_time') -> where(['user_id' => $user['id'], 'game_id' => $request['game_id'], 'sdk_version' => $request['sdk_version']]) -> order('id desc') -> find(); if (empty($uloginrecord) || ($uloginrecord['login_time'] < 1 && $uloginrecord['down_time'] > 0)) { $denglu = M('UserGameLoginRecord', 'tab_') -> add($da); } else { $denglu = $uloginrecord['id']; } $data = C('age_prevent') == '' ? 0 : C('age_prevent'); //为空转换成1; $data['on-off'] = $data['bat'] == '' ? 0 : $data['bat']; $data['contents_off'] = C('age.contents_off'); $data['auth'] = C('age') == '' ? 0 : C('age.status'); $data['is_mandatory'] = C('age') == '' ? 0 : C('age.is_mandatory'); unset($data['status']); $res['date'] = $data; $where['id'] = $request['user_id']; $re = M('User', 'tab_') -> field('age_status') -> where($where) -> find(); if ($re) { $data['age_status'] = $re['age_status']; } else { $data['age_status'] = - 1; } //计算用户的游戏时间 和 休息时间 $map['user_id'] = $request['user_id']; $map['login_time | down_time'] = period(0); $map['down_time'] = 0; $map['status'] = 0; $map2['user_id'] = $request['user_id']; $map2['login_time | down_time'] = period(0); $map2['login_time'] = 0; $map2['status'] = 0; $login_ = M('UserGameLoginRecord', 'tab_') -> where($map) -> order('login_time ASC') -> select(); $down_ = M('UserGameLoginRecord', 'tab_') -> where($map2) -> order('down_time ASC') -> select(); $login_count = count($login_); $down_count = count($down_); $play = 0; $down = 0; if ($login_count >= $down_count && $down_count != 0) { for ($i = 0; $i < $down_count; $i ++) { $play += $down_[$i]['down_time'] - $login_[$i]['login_time']; if ($down_[$i + 1]['down_time'] == 0 && $login_[$i + 1]['login_time'] != 0) { $play += time() - $login_[$i + 1]['login_time']; } if ($login_[$i + 1]['login_time'] != 0) { $down += $login_[$i + 1]['login_time'] - $down_[$i]['down_time']; } } } if ($down_count == 0 && $login_count > 0) { $play += time() - $login_[0]['login_time']; } $data['play_time'] = floor($play / 60); $data['down_time'] = floor($down / 60); //累计在线时间大于最长在线时间(两个未满18岁防沉迷时间的和) 继续在线就算在休息时间里面了 if ($data['play_time'] / 60 >= ($data['hours_off_one'] + $data['hours_off_two'])) { $data['down_time'] += $data['play_time'] - $data['hours_off_one'] * 60 - $data['hours_off_two'] * 60; $data['play_time'] = $data['hours_off_one'] * 60 + $data['hours_off_two'] * 60; } //一旦游戏时间满足恢复时间 两种时间全部清零 if ($data['down_time'] - $data['hours_cover'] * 60 >= 0) { $where2['user_id'] = $request['user_id']; $where2['login_time | down_time'] = period(0); $mmp['status'] = 200; M('UserGameLoginRecord', 'tab_') -> where($where2) -> save($mmp); $deng['id'] = $denglu; $de['status'] = 0; M('UserGameLoginRecord', 'tab_') -> where($deng) -> save($de); } echo base64_encode(json_encode(array('status' => 200, 'data' => $data))); } /** * 更改身份证账户 获得传递过来的UID,idcard,name进行更改数据库 * * @return mixed */ public function idcard_change() { C(api('Config/lists')); $user = json_decode(base64_decode(file_get_contents("php://input")), true); if (empty($user['user_id']) || empty($user['idcard']) || empty($user['real_name'])) { $this -> set_message(1066, "fail", "用户数据异常"); } $map['id'] = $user['user_id']; $data['idcard'] = $user['idcard']; $data['real_name'] = $user['real_name']; if (isset($data['idcard'])) { if (substr($data['idcard'], - 1) === 'X') { $this -> set_message(1086, "fail", "身份证号码填写不正确,如有字母请小写"); } $checkidcard = new \Think\Checkidcard(); $invidcard = $checkidcard -> checkIdentity($data['idcard']); if (!$invidcard) { $this -> set_message(1086, "fail", "身份证号码填写不正确!"); } $cardd = M('User', 'tab_') -> where(array('idcard' => $data['idcard'])) -> find(); if ($cardd) { // $this -> set_message(1087, "fail", "身份证号码已被使用!"); // 去掉身份证唯一验证 } } //身份证认证 if (C('tool_age.status') == 0) { if (is_adult($data['idcard'])) { $data['age_status'] = 2; // 成年 } else { $data['age_status'] = 3; // 未成年 } } else { $re = age_verify($data['idcard'], $data['real_name']); switch ($re) { case - 1: $this -> set_message(1067, "fail", "数量已经使用完!"); break; case - 2: $this -> set_message(1068, "fail", "连接接口失败"); break; case 0: $this -> set_message(1069, "fail", "用户数据不匹配"); break; case 1://成年 $data['age_status'] = 2; break; case 2://未成年 $data['age_status'] = 3; break; default: } } $return = M('User', 'tab_') -> where($map) -> save($data); if ($return === false) { $this -> set_message(1070, "fail", "用户数据更新失败"); } $data['status'] = 200; echo base64_encode(json_encode($data)); } /** * 通过用户的user_id 返回用户的下线时间 必要user_id 可选game_id role_id */ public function down_time() { C(api('Config/lists')); $user = json_decode(base64_decode(file_get_contents("php://input")), true); $map['user_id'] = $user['user_id']; $map['login_time'] = 0; if (!empty($user['game_id'])) { $map['game_id'] = $user['game_id']; } if (!empty($user['role_id'])) { $map['role_id'] = $user['role_id']; } $return = M('UserLoginRecord', 'tab_') -> where($map) -> limit(1) -> order('id DESC') -> select(); if (empty($return)) { $this -> set_message(0, "fail", "该用户没有下线记录"); } echo base64_encode(json_encode($return)); } /** * 接口 获得用户的下线数据并且存到数据库大众 */ public function get_down_time() { C(api('Config/lists')); $request = json_decode(base64_decode(file_get_contents("php://input")), true); if (empty($request)) { $this -> set_message(0, "fail", "参数错误"); } $mmm['account'] = $request['account']; $user = M('User', 'tab_') -> where($mmm) -> find(); if (!$user) { $this -> set_message(0, "fail", "找不到该用户!"); } $da = array( 'user_id' => $user['id'], 'user_account' => $user['account'], 'user_nickname' => $user['nickname'], 'game_id' => $request['game_id'], 'game_name' => get_game_name($request["game_id"]), 'server_id' => null, 'type' => 1, 'server_name' => null, 'down_time' => NOW_TIME, 'login_ip' => get_client_ip(), 'sdk_version' => $request['sdk_version'], 'promote_id' => $request['promote_id'], 'lpuid' => $user['puid'], ); $return = M('UserLoginRecord', 'tab_') -> add($da); if ($return) { if ($request['state'] == 1) { M('nearby', 'tab_') -> where(['user_id' => $user['id']]) -> setField(['update_time' => time(), 'game_status' => 0]); } echo base64_encode(json_encode(array('status' => 200, 'return_msg' => '数据新增成功!'))); } else { $this -> set_message(0, "fail", "数据新增失败!"); } } /** * 获取小号列表 * * @param integer $puid 父用户编号 * * @return array 结果集 * @author 鹿文学 */ private function small_list($puid = '', $game_id = '') { if (!is_numeric($puid) || $puid < 1) { return []; } if (!is_numeric($game_id) || $game_id < 1) { return []; } $usermodel = M('User', 'tab_'); $user = $usermodel -> field('account,is_platform') -> where(['id' => $puid, 'lock_status' => 1]) -> find(); if (!is_array($user)) { return ''; } $list = []; if ($user['is_platform'] == 1) { $list = $usermodel -> alias('u') -> field('u.id as user_id,u.account,u.account as user_account,is_platform') -> join('tab_merchandise as m on (m.status = 0 and m.small_id = u.id) ') -> where(['puid' => $puid, 'lock_status' => 1, 'fgame_id' => $game_id]) -> order('register_time desc') -> select(); } else { $list = $usermodel -> field('id as user_id,account,is_platform,if(source_puid>0,CONCAT("(",FROM_UNIXTIME(source_time,"%m-%d"),"购买)",account),account) as user_account') -> where(['puid' => $puid, 'lock_status' => 1, 'fgame_id' => $game_id]) -> order('register_time desc') -> select(); } return $list; } /** * 获取小号列表 * * @return array 结果集 * @author 鹿文学 */ public function get_small_list() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $list = M('User', 'tab_') -> field('account') -> where(['id' => $request['user_id'], 'lock_status' => 1, 'fgame_id' => $request['game_id']]) -> find(); if (!is_array($list)) { $this -> set_message(1004, "fail", "用户不存在或被禁用"); } $small_list = $this -> small_list($request['user_id'], $request['game_id']); $small_list[] = array( 'user_id' => $request['user_id'], 'account' => $list['account'], 'user_account' => $list['account'], 'is_platform' => $this -> get_platform($request['user_id']), ); $return = array( 'status' => 200, 'return_code' => 'success', 'return_msg' => '成功', 'small_list' => $small_list, ); echo base64_encode(json_encode($return)); exit(); } /** * 添加小号 * * @author 鹿文学 */ public function add_small() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); if (empty($request)) { $this -> set_message(1001, "fail", "小号数据不能为空"); } $user = M('User', 'tab_'); $list = $user -> field('account,promote_id') -> where(['id' => $request['user_id'], 'lock_status' => 1]) -> find(); if (!is_array($list)) { $this -> set_message(1004, "fail", "用户不存在或被禁用"); } $result2 = $user -> where(array('fgame_id' => $request['game_id'], ['puid' => $request['user_id'], '_complex' => array('source_puid' => $request['user_id'], 'source_time' => 0), '_logic' => 'or'])) -> count(); if ($result2 >= 10) { $this -> set_message(1099, "fail", "此平台账号小号数量已超出"); } $result = $user -> where(['account' => $request['account']]) -> find(); if ($result) { $this -> set_message(1017, "fail", "此账号已存在"); } $userApi = new MemberApi(); $res = $userApi -> register_small($request['user_id'], $request['account'], 1, 1, $list['promote_id'], get_promote_name($list['promote_id']), $request["game_id"], get_game_name($request["game_id"]), $request['sdk_version']); if ($res) { $this -> add_user_play(['puid' => $request['user_id'], 'game_id' => $request['game_id'], 'user_id' => $res, 'sdk_version' => $request['sdk_version']]); $small_list = $this -> small_list($request['user_id'], $request['game_id']); $small_list[] = array( 'user_id' => $request['user_id'], 'account' => $list['account'], 'user_account' => $list['account'], 'is_platform' => $this -> get_platform($request['user_id']), ); $return = array( 'status' => 200, 'return_code' => 'success', 'return_msg' => '添加成功', 'small_list' => $small_list, ); echo base64_encode(json_encode($return)); exit(); } else { $this -> set_message(1027, "fail", "添加失败"); } } /** * 获取登录游戏信息并记录登录信息 * * @author 鹿文学 */ public function get_enter_game_info() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $userApi = new MemberApi(); if ($request['user_id'] == $request['small_id']) { $res = $userApi -> get_enter_game_info([], $request['small_id'], $request['game_id'], get_game_name($user['game_id']), $request['sdk_version']); } else { $res = $userApi -> get_enter_game_info(['puid' => $request['user_id']], $request['small_id'], $request['game_id'], get_game_name($user['game_id']), $request['sdk_version']); } if (is_array($res)) { $return = array( 'status' => 200, 'return_code' => 'success', 'return_msg' => '操作成功', 'user_id' => $res['user_id'], 'account' => $res['account'], 'token' => $res['token'], 'OTP_token' => think_encrypt(json_encode(array('uid' => $res['user_id'], 'time' => time())), 1), 'is_uc' => 0, ); echo base64_encode(json_encode($return)); exit(); } else { $this -> set_message(1004, "fail", "用户不存在或被禁用"); } } /** * 获取公用账号标识 * * @author 鹿文学 */ public function get_platform($uid = 0) { if (is_numeric($uid) && $uid > 0) { $data = M('User', 'tab_') -> field('is_platform') -> where(['id' => $uid]) -> find(); return $data['is_platform']; } else { return 0; } } /** * 退出按钮 * 1:开启 0:关闭 */ public function loginout_status() { $status = C('LOGINOUT_STATUS'); echo base64_encode(json_encode(array('status' => 200, 'data' => $status))); } /** * 强更接口 * * @return [type] [description] */ public function force_update() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $game_info = M('Game', 'tab_') -> where(array('id' => $request['game_id'])) -> find(); $game_source = M('GameSource', 'tab_') -> where(array('game_id' => $request['game_id'])) -> find(); if (empty($game_source)) { $game_source['source_version'] = 0; } // 客户端传参0原包 不提示更新 source_version程序版本号 if($request['source_version'] == 0) { echo base64_encode(json_encode(array('code' => 200, 'msg' => '请求成功', 'data' => new \stdClass()))); exit(); } $data['is_force_update'] = $game_info['is_force_update']; $data['source_version'] = $game_source['source_version']; $data['update_tips'] = '游戏已经更新,请下载最新游戏包~'; $remark = json_decode($game_source['remark']); if ($game_info['sdk_version'] == 1) { $data['and_remark'] = !empty($remark) ? $remark : []; $data['and_file_size'] = !empty($game_source['file_size']) ? $game_source['file_size'] : 0; $data['and_version_code'] = !empty($game_source['version']) ? $game_source['version'] : 0; $data['and_version_name'] = !empty($game_source['version']) ? $game_source['version'] : ''; $host = 'http://' . $_SERVER['HTTP_HOST']; } else { $data['ios_remark'] = !empty($remark) ? $remark : []; $data['ios_file_size'] = !empty($game_source['file_size']) ? $game_source['file_size'] : 0; $data['ios_version_code'] = !empty($game_source['version']) ? $game_source['version'] : 0; $data['ios_version_name'] = !empty($game_source['version']) ? $game_source['version'] : ''; $host = 'https://' . $_SERVER['HTTP_HOST']; } if ($request['promote_id'] > 0) { //渠道包 $apply_info = M('Apply', 'tab_') -> where(array('game_id' => $request['game_id'], 'promote_id' => $request['promote_id'])) -> find(); if ($apply_info['enable_status'] == 1) { if ($request['launch_id'] > 0) { $applylauntch = M('apply_launch', 'tab_') -> where(['apply_id' => $apply_info['id'], 'platform_id' => $request['launch_id'], 'position' => ($request['position'] ? $request['position'] : 1)]) -> find(); $data['game_url'] = 'http://' . $_SERVER['HTTP_HOST'] . '/index.php?s=/Home/Home/promotionofregistration/pid/' . $request['promote_id'] . '/gid/' . $game_info['relation_game_id'] . '/lid/' . $request['launch_id'] . '/p/' . $request['position']; if ($applylauntch) { $file_url = $applylauntch['launch_down_url']; $pfile_url = $applylauntch['launch_plist_url']; if (stripos($file_url, 'http://') === false) { $file_url = strpos($file_url,'http') ===false ? $host . str_replace('./', '/', $file_url) : $file_url; } if (stripos($pfile_url, 'https://') === false) { $pfile_url = strpos($pfile_url,'http') ===false ? $host . str_replace('./', '/', $pfile_url) : $pfile_url; } } else { $file_url = ''; $pfile_url = ''; } } else { $data['game_url'] = 'http://' . $_SERVER['HTTP_HOST'] . '/index.php?s=/Home/Home/promitionofregestion/pid/' . $request['promote_id'] . '/gid/' . $game_info['relation_game_id']; $file_url = strpos($apply_info['pack_url'],'http') ===false ?$host . ltrim($apply_info['pack_url'], '.') : $apply_info['pack_url']; $pfile_url = strpos($apply_info['plist_url'],'http') ===false ?$host . ltrim($apply_info['plist_url'], '.') : $apply_info['plist_url']; } } else { $data['update_tips'] = '游戏正在更新,请稍后再试~'; $file_url = ''; $pfile_url = ''; } } else { //原包 $data['game_url'] = 'http://' . $_SERVER['HTTP_HOST'] . '/mobile.php?s=/Game/detail/id/' . $request['game_id']; $file_url = strpos($game_source['file_url'],'http') ===false ? $host . ltrim($game_source['file_url'], '.') : $game_source['file_url']; $pfile_url = strpos($game_source['plist_url'],'http')===false ? $host . ltrim($game_source['plist_url'], '.') : $game_source['plist_url']; } if ($game_info['sdk_version'] == 1) { $data['and_file_url'] = $file_url; } else { $data['ios_file_url'] = $pfile_url; } echo base64_encode(json_encode(array('code' => 200, 'msg' => '请求成功', 'data' => $data))); } /** * 设备统计 * * @param integer sdk_version 系统版本(1:安卓,2:苹果) * @param string model 设备型号 * @param string unique_code 设备唯一码 * @param integer game_id 游戏编号 * @param integer mark 在线标志(0:退出游戏,1:登录游戏) * * @return json * @author 鹿文学 */ public function device_record() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $device_record = M('device_record', 'tab_'); $map = array( 'unique_code' => $request['unique_code'], ); $result = $device_record -> where($map) -> order('create_time desc') -> find(); $duration = 0; $now = time(); if (is_array($result) && $result['mark'] == 1) { if ($request['mark'] == 1) { $map['id'] = $result['id']; $device_record -> where($map) -> setField(['duration' => intval(2.5 * 3600)]); } elseif ($request['mark'] == 0) { $duration = $now - $result['create_time']; } } $data = array( 'create_time' => $now, 'version' => $request['sdk_version'], 'model' => $request['model'], 'unique_code' => $request['unique_code'], 'game_id' => $request['game_id'], 'game_name' => get_game_name($request['game_id']), 'mark' => $request['mark'], 'duration' => $duration, ); $res = $device_record -> add($data); if ($res > 0) { $this -> new_set_message(200, "添加设备信息成功", []); } else { $this -> new_set_message(0, "添加设备信息失败", []); } } //sdk记录投放数据 //author yyh 2018.10.22 public function launch_record() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $game_id = $request['game_id']; $user_id = $request['user_id']; $launch_id = $request['launch_id']; $promote_id = $request['promote_id']; $position = $request['position']; $game_data = M('Game', 'tab_') -> field('id as game_id,game_name') -> find($game_id); if (empty($game_data)) { $this -> new_set_message(0, '游戏不存在', []); } $user_data = M('User', 'tab_') -> field('id as user_id,account as user_account') -> where(['promote_id' => $promote_id, 'id' => $user_id]) -> find(); if (empty($user_data)) { $this -> new_set_message(0, '账号不存在', []); } $launch_data = M('LaunchPlatform', 'tab_') -> field('id as launch_id,name') -> find($launch_id); if (empty($launch_data)) { $this -> new_set_message(0, '投放平台不存在', []); } $promote_data = M('Promote', 'tab_') -> field('id,account') -> find($promote_id); if (empty($promote_data)) { $this -> new_set_message(0, '推广员数据不存在', []); } $record_data = M('LaunchRecord', 'tab_') -> where(['platform_id' => $launch_id, 'game_id' => $game_id, 'user_id' => $user_id, 'promote_id' => $promote_id]) -> find(); if (empty($record_data)) { $data['platform_id'] = $launch_id; $data['platform_name'] = $launch_data['name']; $data['game_id'] = $game_id; $data['game_name'] = $game_data['game_name']; $data['user_id'] = $user_id; $data['user_account'] = $user_data['user_account']; $data['promote_id'] = $promote_id; $data['promote_account'] = $promote_data['account']; $data['unique_code'] = $request['unique_code'] ?: ''; $data['create_time'] = time(); $data['position'] = $position; $res = M('LaunchRecord', 'tab_') -> add($data); if (!$res) { $this -> new_set_message(0, '记录投放数据失败', []); } } $this -> new_set_message(200, '记录投放数据成功', []); } //支付宝芝麻信用 //yyh 2018 10 24 public function alipay_zmxy() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $user_id = $request['user_id']; $game_id = $request['game_id']; if ($user_id < 1) { $this -> new_set_message(0, 'user_id参数错误', []); } $alipayauth = M('alipay_auth', 'tab_') -> field('appid,status') -> where(['game_id' => $game_id]) -> find(); if (empty($alipayauth)) { $this -> new_set_message(0, '此游戏不支持支付宝快捷认证', []); } if (empty($alipayauth) || $alipayauth['status'] != 1) { $this -> new_set_message(0, '此游戏未开启支付宝快捷认证', []); } $appid = $alipayauth['appid']; Vendor('Alipay.AopSdk'); $c = new \AopClient(); $c -> gatewayUrl = "https://openapi.alipay.com/gateway.do"; $c -> appId = $appid; $c -> rsaPrivateKey = file_get_contents("./Application/Sdk/SecretKey/alipay/rsa2_private_key.txt"); $c -> format = "json"; $c -> charset = "utf-8"; $c -> signType = "RSA2"; $c -> alipayrsaPublicKey = file_get_contents("./Application/Sdk/SecretKey/alipay/alipay2_public_key.txt"); //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.user.userinfo.share $request = new \ZhimaCustomerCertificationInitializeRequest(); $transaction_id = 'ZGYD' . date('Ymdhis', time()) . sp_random_string(6); $request -> setBizContent("{" . "\"transaction_id\":\"{$transaction_id}\"," . "\"product_code\":\"w1010100000000002978\"," . "\"biz_code\":\"SMART_FACE\"," . "\"identity_param\":\"{}\"," . "\"ext_biz_param\":\"{}\"" . " }"); $response = $c -> execute($request); if ($response -> zhima_customer_certification_initialize_response -> code != 10000) { $this -> new_set_message(0, '授权失败' . $response -> zhima_customer_certification_initialize_response -> code, []); } $biz_no = $response -> zhima_customer_certification_initialize_response -> biz_no; $request_get_url = new \ZhimaCustomerCertificationCertifyRequest(); $request_get_url -> setBizContent("{\"biz_no\":\"{$biz_no}\"}"); // $notify_url = $_SERVER['HTTP_HOST'].'/sdk.php/User/get_alipay_zmxy_notify'; $return_url = $_SERVER['HTTP_HOST'] . '/sdk.php/User/get_alipay_zmxy_return/user_id/' . $user_id . '/game_id/' . $game_id; // $request_get_url->setNotifyUrl("alipay://{$notify_url}"); $request_get_url -> setReturnUrl("alipay://{$return_url}"); $responseurl = $c -> pageExecute($request_get_url, 'GET'); $this -> new_set_message(200, 'success', ['url' => $responseurl, 'appid' => $appid]); /* $result = $c->pageExecute($request_get_url); $responseNode = str_replace(".", "_", $request_get_url->getApiMethodName()) . "_response"; $resultCode = $result->$responseNode->code; if(!empty($resultCode)&&$resultCode == 10000){ $save['id'] = $user_id; $save['age_status'] = 2; $save['third_authentication'] = 1; $save['real_name'] = $biz_no; $save['idcard'] = $zfbuser; $save['anti_addiction'] = 1; M('user','tab_')->save($save); $this->new_set_message(200, 'success', []); } else { $this->new_set_message(0, 'fail', []); } */ } //芝麻信用回调 //yyh 2018 10 24 public function get_alipay_zmxy_return() { $biz_content = json_decode($_GET['biz_content'], true); $biz_no = $biz_content['biz_no']; $user_id = $_GET['user_id']; $game_id = $_GET['game_id']; if ($user_id < 1) { $this -> assign('result', 'fail'); $this -> display(); exit; } $user_data = M('User', 'tab_') -> field('id') -> find($user_id); if (empty($user_data)) { $this -> assign('result', 'fail'); $this -> display(); exit; } $alipayauth = M('alipay_auth', 'tab_') -> field('appid,status') -> where(['game_id' => $game_id]) -> find(); if (empty($alipayauth)) { $this -> assign('result', 'fail'); $this -> display(); exit; } if (empty($alipayauth) || $alipayauth['status'] != 1) { $this -> assign('result', 'fail'); $this -> display(); exit; } $appid = $alipayauth['appid']; Vendor('Alipay.AopSdk'); $aop = new \AopClient (); $aop -> gatewayUrl = 'https://openapi.alipay.com/gateway.do'; $aop -> appId = $appid; $aop -> rsaPrivateKey = file_get_contents("./Application/Sdk/SecretKey/alipay/rsa2_private_key.txt"); $aop -> alipayrsaPublicKey = file_get_contents("./Application/Sdk/SecretKey/alipay/alipay2_public_key.txt"); $aop -> apiVersion = '1.0'; $aop -> signType = 'RSA2'; $aop -> postCharset = 'utf-8'; $aop -> format = 'json'; $request = new \ZhimaCustomerCertificationQueryRequest (); $request -> setBizContent("{" . "\"biz_no\":\"{$biz_no}\"" . " }"); $result = $aop -> execute($request); $responseNode = str_replace(".", "_", $request -> getApiMethodName()) . "_response"; $resultCode = $result -> $responseNode -> code; $zfbuserjson = $result -> $responseNode -> identity_info; $zfbuserarr = json_decode($zfbuserjson, true); $zfbuser = $zfbuserarr['user_id']; if (!empty($resultCode) && $resultCode == 10000) { $this -> assign('result', 'success'); $save['id'] = $user_id; $save['age_status'] = 2; $save['third_authentication'] = 1; $save['real_name'] = $biz_no; $save['idcard'] = $zfbuser; $save['anti_addiction'] = 1; M('user', 'tab_') -> save($save); } else { $this -> assign('result', 'fail'); } $this -> display(); } /** * 获取支付宝实名认证结果 * * @return third_authentication 0失败 1成功 * author: 鹿文学 */ public function get_auth_result() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $user_id = $request['user_id']; if ($user_id < 1) { $this -> new_set_message(0, 'user_id参数错误', []); } $user = M('User', 'tab_') -> field('third_authentication') -> where(['id' => $user_id]) -> find(); $this -> new_set_message(200, '', ['third_authentication' => $user['third_authentication']]); } /** * 绑币记录 * * @param $token * @param int $p * author: yyh 2018 10 26 */ public function get_user_bind_coin() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $user_id = $request['user_id']; $page = intval($request['p']); $page = $page ? $page : 1; //默认显示第一页数据 $row = intval($request['row']) ?: 10; $model = new UserModel(); $data = $model -> getUserBindCoin($user_id, $page, $row); foreach ($data as $key => $value) { $data[$key]['icon'] = new_icon_url($value['icon']); } if (empty($data)) { $this -> new_set_message(1033, "暂无数据", []); } else { $this -> new_set_message(200, "成功", $data); } } //提现金币wap链接 //yyh 2018 10 26 public function withdraw_gold_url() { $data['url'] = 'http://' . $_SERVER['HTTP_HOST'] . '/mobile.php?s=/Trade/withdraw_gold/issdk/1.html'; $data['IS_OPEN_SMALL_ACCOUNT'] = C('IS_OPEN_SMALL_ACCOUNT') == 1 ? 1 : 0;//是否打开小号配置 $this -> new_set_message(200, "成功", $data); } /** * 签到 * * @author 鹿文学 */ public function sign_in() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $result = A('Point', 'Event') -> sign_in($request['user_id']); switch ($result['mark']) { case - 1: { $this -> new_set_message(1131, "此奖励不存在或被禁用", []); }; break; case - 2: { unset($result['mark']); $this -> new_set_message(1132, "今日已签过", $result); }; break; case - 3: { unset($result['mark']); $this -> new_set_message(1133, "签到失败", $result); }; break; case 1: { unset($result['mark']); $this -> new_set_message(200, "签到成功", $result); }; break; default: $this -> new_set_message(1131, "此奖励不存在或被禁用", []); } } /** * vip等级 * * @author 鹿文学 */ public function vip_level_list() { $tool = M('Tool', 'tab_') -> field('config') -> where(['name' => 'viplevel', 'status' => 1]) -> find(); if (empty($tool)) { $this -> new_set_message(1134, "vip等级不存在或被禁用", []); } $viplevel = json_decode($tool['config'], true); if (!is_array($viplevel)) { $this -> new_set_message(1134, "vip等级不存在或被禁用", []); } $data = []; $vl = 0; $len = count($viplevel); foreach ($viplevel as $k => $v) { $vl = intval(str_replace('vip', '', $k)); if ($vl - 1 == 0) { /* $data['VIP 0'] = '0-'.(intval($v)-1); */ } if ($len == $vl) { $data['VIP ' . $vl] = $v . '以上'; } else { $data['VIP ' . $vl] = $v . '-' . ($viplevel['vip' . ($vl + 1)] - 1); } } $this -> new_set_message(200, "请求成功", $data); } /** * 获取附近的人列表 * * @author 鹿文学 */ public function get_nearby_list() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $nearbymodel = M('nearby', 'tab_'); $userid = $request['user_id']; $gameid = $request['game_id']; $longitude = $request['longitude']; $latitude = $request['latitude']; $id = $nearbymodel -> field('id') -> where(['user_id' => $userid]) -> find(); $user = M('user', 'tab_') -> field('account,nickname,head_img') -> where(['id' => $userid]) -> find(); if (!empty($id)) { $data = array( 'update_time' => time(), 'user_nickname' => $user['nickname'], 'head_img' => $user['head_img'] ? $user['head_img'] : '', 'longitude' => $longitude, 'latitude' => $latitude, ); $nearbymodel -> where(['id' => $id['id']]) -> save($data); } else { $data = array( 'user_id' => $userid, 'user_account' => $user['account'], 'user_nickname' => $user['nickname'], 'head_img' => $user['head_img'] ? $user['head_img'] : '', 'longitude' => $longitude, 'latitude' => $latitude, 'create_time' => time(), 'update_time' => time(), ); $nearbymodel -> add($data); } $distance = 3; /* 三公里距离内 */ /* 求经纬度 */ $point = get_square_point($longitude, $latitude, $distance); $left_top_lng = $point['left_top']['longitude']; /* 左上经度 */ $right_bottom_lng = $point['right_bottom']['longitude']; /* 右下经度 */ $left_top_lat = $point['left_top']['latitude'];/* 左上纬度 */ $right_bottom_lat = $point['right_bottom']['latitude'];/* 右下纬度 */ $list = $nearbymodel -> alias('n') -> field('n.user_id,n.user_account,if(n.user_nickname="",n.user_account,n.user_nickname) as user_nickname,n.longitude,n.latitude,if(n.head_img="","",n.head_img) as head_img,n.game_status,ifnull(max(up.role_level),0) as role_level,ifnull(b.invitee_id,0) as invitee_id,ifnull(b.invitee_status,5) as invitee_status,ifnull(b.inviter_id,0) as inviter_id,ifnull(b.inviter_status,5) as inviter_status') -> join("left join tab_buddies as b on ((b.invitee_id=n.user_id and b.inviter_id = {$userid}) or (b.inviter_id=n.user_id and b.invitee_id={$userid}) ) ") -> join('left join tab_user_play as up on((up.ppuid=n.user_id or up.user_id=n.user_id) and up.game_id = ' . $gameid . ') ') -> where(['n.nearby_status' => 1, 'n.user_id' => array('neq', $userid), 'n.longitude' => ['between', array($left_top_lng, $right_bottom_lng)], 'n.latitude' => ['between', array($right_bottom_lat, $left_top_lat)]]) -> group('n.user_id') -> select(); $data = []; if (is_array($list)) { /* * 互为好友不显示 ,我未删,对方删 不显示 * buddies_status 0:我删除,1:我未删,2:待我验证, 3:待我重新验证, 5:对方删,6:对方未删,7:待对方验证,8:对方重新验证,10:没关系 */ foreach ($list as $k => $v) { if ($v['invitee_status'] == 1 && $v['inviter_status'] == 1) {/* 互为好友不显示 */ continue; } if ($v['invitee_id'] >= 0 && $v['inviter_id'] >= 0) { if ($v['invitee_id'] == $userid) { if ($v['invitee_status'] == 1 && $v['inviter_status'] == 0) { continue; }/* 我未删,对方删 不显示 */ $buddies_status = $v['invitee_status']; } else { if ($v['invitee_status'] == 0 && $v['inviter_status'] == 1) { continue; }/* 我未删,对方删 不显示 */ $buddies_status = $v['invitee_status'] + 5; } } else { $buddies_status = 10; } $data[] = [ 'user_id' => $v['user_id'], 'user_account' => $v['user_account'], 'user_nickname' => $v['user_nickname'], 'longitude' => $v['longitude'], 'latitude' => $v['latitude'], 'head_img' => $v['head_img'], 'game_status' => $v['game_status'], 'role_level' => $v['role_level'], 'distance' => get_distance_by_twopoint($longitude, $latitude, $v['longitude'], $v['latitude'], 2), 'buddies_status' => $buddies_status, ]; } $data = my_sort($data, 'distance'); } $this -> new_set_message(200, "", $data); } /** * 添加好友 * * @author 鹿文学 */ public function set_buddies() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $buddiesmodel = M('buddies', 'tab_'); $guest_id = $request['guest_id']; $user_id = $request['user_id']; $message = $request['message']; $map['_string'] = "(inviter_id = {$user_id} and invitee_id = {$guest_id})"; $map['_complex'] = array('inviter_id' => $guest_id, 'invitee_id' => $user_id); $map['_logic'] = 'or'; $result = $buddiesmodel -> where($map) -> find(); if (!empty($result)) { if ($result['inviter_status'] == 1 && $result['invitee_status'] == 1) { $this -> new_set_message(1136, "您已与" . ($result['inviter_id'] == $user_id ? $result['invitee_account'] : $result['inviter_account']) . "成为好友", []); exit; } else { $data['message'] = $message; if ($result['inviter_id'] == $user_id) { $data['inviter_status'] = 1; $guest_status = $result['invitee_status']; if ($result['invitee_status'] == 0) { $guest_status = $data['invitee_status'] = 3; } } else { $data['invitee_status'] = 1; $guest_status = $result['inviter_status']; if ($result['inviter_status'] == 0) { $guest_status = $data['inviter_status'] = 3; } } $res = $buddiesmodel -> where(['id' => $result['id']]) -> save($data); if ($res > 0) { if ($guest_status == 1) { $this -> new_set_message(200, "成功向对方发送好友请求", []); } else { $this -> new_set_message(200, "成功向对方发送好友请求", []); } } else { $this -> new_set_message(1137, "您已经发送过请求了 请耐心等待", []); } } } else { $usermodel = M('user', 'tab_'); $user = $usermodel -> field('account') -> where(['id' => $user_id]) -> find(); $guest = $usermodel -> field('account') -> where(['id' => $guest_id]) -> find(); $data = array( 'inviter_id' => $user_id, 'inviter_account' => $user['account'], 'invitee_id' => $guest_id, 'invitee_account' => $guest['account'], 'inviter_status' => 1, 'invitee_status' => 2, 'message' => $message, 'create_time' => time(), ); $res = $buddiesmodel -> add($data); if ($res > 0) { $this -> new_set_message(200, "成功向对方发送好友请求", []); } else { $this -> new_set_message(1018, "发送失败", []); } } } /** * 同意添加好友 * * @author 鹿文学 */ public function agree_buddies() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $buddiesmodel = M('buddies', 'tab_'); $guest_id = $request['guest_id']; $user_id = $request['user_id']; $agree = $request['agree'] == 1 ? $request['agree'] : 0; $map['_string'] = "(inviter_id = {$user_id} and invitee_id = {$guest_id})"; $map['_complex'] = array('inviter_id' => $guest_id, 'invitee_id' => $user_id); $map['_logic'] = 'or'; $result = $buddiesmodel -> where($map) -> find(); if (!empty($result)) { if ($result['inviter_status'] == 1 && $result['invitee_status'] == 1) { $this -> new_set_message(1136, "您已与" . ($result['inviter_id'] == $user_id ? $result['invitee_account'] : $result['inviter_account']) . "成为好友", ['unread_count' => get_buddies_unagree_count($user_id)]); exit; } else { if ($result['inviter_id'] == $user_id) { $data['inviter_status'] = $agree; $data['invitee_status'] = 1; $guest_account = $result['invitee_account']; } else { $data['invitee_status'] = $agree; $data['inviter_status'] = 1; $guest_account = $result['inviter_account']; } $res = $buddiesmodel -> where(['id' => $result['id']]) -> save($data); if ($res > 0) { $this -> new_set_message(200, $agree == 1 ? "您已与" . $guest_account . "成为好友" : '', ['unread_count' => get_buddies_unagree_count($user_id)]); } else { $this -> new_set_message(0, $agree == 1 ? "添加好友失败" : '', ['unread_count' => get_buddies_unagree_count($user_id)]); } } } else { $this -> new_set_message(1135, "没有此好友信息", ['unread_count' => get_buddies_unagree_count($user_id)]); } } /** * 获取好友请求列表 * * @author 鹿文学 */ public function get_buddies_request_list() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $userid = $request['user_id']; $gameid = $request['game_id']; $buddiesmodel = M('buddies', 'tab_'); $map['_string'] = "(inviter_id = {$userid} and inviter_status in(2,3) and invitee_status=1 )"; $map['_complex'] = array('invitee_id' => $userid, 'invitee_status' => array('in', '2,3'), 'inviter_status' => 1); $map['_logic'] = 'or'; $list = $buddiesmodel -> alias('b') -> field('n.user_id,n.user_account,if(n.user_nickname="",n.user_account,n.user_nickname) as user_nickname,if(n.head_img="","",n.head_img) as head_img,n.game_status,ifnull(max(up.role_level),0) as role_level') -> join("inner join tab_nearby as n on((b.invitee_id=n.user_id and b.inviter_id = {$userid}) or (b.inviter_id=n.user_id and b.invitee_id={$userid}) ) ") -> join("left join tab_user_play as up on(((up.ppuid=b.invitee_id or up.user_id=b.invitee_id and b.inviter_id = {$userid}) or (up.ppuid=b.inviter_id or up.user_id=b.inviter_id and b.invitee_id = {$userid})) and up.game_id = {$gameid}) ") -> where($map) -> group('n.user_id') -> order('role_level desc,b.create_time desc') -> select(); $this -> new_set_message(200, "", is_array($list) ? $list : []); } /** * 获取好友列表(游戏好友) * * @author 鹿文学 */ public function get_buddies_list() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $userid = $request['user_id']; $gameid = $request['game_id']; $buddiesmodel = M('buddies', 'tab_'); $map['_string'] = "(inviter_id = {$userid} and inviter_status=1 and invitee_status in(0,1,3) )"; $map['_complex'] = array('invitee_id' => $userid, 'invitee_status' => 1, 'inviter_status' => ['in', '0,1,3']); $map['_logic'] = 'or'; $list = $buddiesmodel -> alias('b') -> field("n.user_id,n.user_account,if(n.user_nickname='',n.user_account,n.user_nickname) as user_nickname,if(n.head_img='','',n.head_img) as head_img,n.game_status,ifnull(max(up.role_level),0) as role_level,if(b.inviter_id = {$userid},invitee_status,inviter_status)+5 as buddies_status") -> join("left join tab_nearby as n on((b.invitee_id=n.user_id and b.inviter_id = {$userid}) or (b.inviter_id=n.user_id and b.invitee_id={$userid}) ) ") -> join("left join tab_user_play as up on(((up.ppuid=b.invitee_id or up.user_id=b.invitee_id and b.inviter_id = {$userid}) or (up.ppuid=b.inviter_id or up.user_id=b.inviter_id and b.invitee_id = {$userid})) and up.game_id = {$gameid}) ") -> where($map) -> group('n.user_id') -> order('role_level desc') -> select(); $this -> new_set_message(200, "", is_array($list) ? $list : []); } /** * 好友聊天列表(站内信) * * @author 鹿文学 */ public function get_buddies_chat_list() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $userid = $request['user_id']; $gameid = $request['game_id']; $guestids = is_array($request['guest_ids']) ? implode(',', $request['guest_ids']) : $request['guest_ids']; $buddiesmodel = M('buddies', 'tab_'); $map['_string'] = "(inviter_id = {$userid} and invitee_id in ({$guestids}) and inviter_status=1 and invitee_status in(0,1,3) )"; $map['_complex'] = array('invitee_id' => $userid, 'inviter_id' => ['in', $guestids], 'invitee_status' => 1, 'inviter_status' => ['in', '0,1,3']); $map['_logic'] = 'or'; $list = $buddiesmodel -> alias('b') -> field('n.user_id,n.user_account,if(n.user_nickname="",n.user_account,n.user_nickname) as user_nickname,if(n.head_img="","",n.head_img) as head_img,n.game_status,ifnull(max(up.role_level),0) as role_level') -> join("left join tab_nearby as n on((b.invitee_id=n.user_id and b.inviter_id = {$userid}) or (b.inviter_id=n.user_id and b.invitee_id={$userid}) ) ") -> join("left join tab_user_play as up on(((up.ppuid=b.invitee_id or up.user_id=b.invitee_id and b.inviter_id = {$userid}) or (up.ppuid=b.inviter_id or up.user_id=b.inviter_id and b.invitee_id = {$userid})) and up.game_id = {$gameid}) ") -> where($map) -> group('n.user_id') -> order('role_level desc') -> select(); $this -> new_set_message(200, "", is_array($list) ? $list : []); } /** * 删除好友 * * @author 鹿文学 */ public function del_buddies() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); $buddiesmodel = M('buddies', 'tab_'); $guest_id = $request['guest_id'];/* 要删除的好友编号 */ $user_id = $request['user_id']; $map['_string'] = "(inviter_id = {$user_id} and invitee_id = {$guest_id})"; $map['_complex'] = array('inviter_id' => $guest_id, 'invitee_id' => $user_id); $map['_logic'] = 'or'; $result = $buddiesmodel -> where($map) -> find(); if (!empty($result)) { if ($result['inviter_id'] == $user_id) { $data['inviter_status'] = 0; } else { $data['invitee_status'] = 0; } $res = $buddiesmodel -> where(['id' => $result['id']]) -> save($data); if ($res > 0) { $this -> new_set_message(200, "删除成功", []); } else { $this -> new_set_message(1054, "删除失败", []); } } else { $this -> new_set_message(1135, "没有此好友信息", []); } } /** * @函数或方法说明 * @获取后端版本 * @author: 郭家屯 * @since: 2019/5/24 10:16 */ public function get_php_version() { $res_msg = array( "status" => 200, "return_code" => "success", "return_msg" => "获取成功", "php_version" => 631, ); echo base64_encode(json_encode($res_msg)); exit; } /** * 订单状态 */ public function order_status() { $request = json_decode(base64_decode(file_get_contents("php://input")), true); if (I("debug")) { $request['orderno'] = "SP_20191105154135nTcz"; } if (!$request['orderno']) return ; $pay_where = substr($orderno, 0, 2); $map['pay_order_number'] = $orderno; switch ($pay_where) { case 'SP' : $result = M('Spend', 'tab_')->field("*")->where($map)->find(); break; case 'PF' : $result = M('deposit', 'tab_')->field('*')->where($map)->find(); break; case 'TB' : $result = M('balance', 'tab_')->field('*')->where($map)->find(); break; case 'BR' : $result = M('bind_recharge', 'tab_')->field('*')->where($map)->find(); break; } // 支付成功跳转页面 if ($result['pay_status'] == 1) { $this->new_set_message(200, "支付成功"); // $this->success("支付成功", U("userH/get_user_money", ['user_token' => $userToken])); } else { $this->new_set_message(0, "支付失败"); } } }