/** * Created by huosdk on 2018/5/7. */ var baseUrl = $('#h5iSite').val() /*** * iOS登陆成功之后的回调 * */ function app_login_callback_v1(data) { let loginData=JSON.parse(data); let url = '' switch (loginData.type) { case 2: url = '/qq/return'; break; case 3: url = '/weixin/return' break; } // alert(url) $.ajax({ url: baseUrl + url, data: { "oauth_app_key": loginData.appid, "openid": loginData.openid, "access_token": loginData.token, "back_url": window.location.href, "format": "jsonp" }, dataType: "jsonp", success: res => { console.log("res==我是三方登陆的回调==", res) // alert(JSON.stringify(res.data)) if(res.code == 200){ location.href = res.data.url }else{ HuoUtils.tips(res.msg) } } }) // alert(loginData.type + "->我是openID===" + loginData.openid + "->我是token====" + loginData.token+ "->我是appid====" + loginData.appid) } // utils var HuoUtils = { // 模板切换 switchTemplate: function (type, data) { $('.pop:not(.huosdk_tips):visible').remove() if (type) { $('body').append(this.replaceTemplate(type, data)) } switch (type) { case 'login': /** * 第三方登录 */ if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { // 移动端 $('a[thirdway=weixin],a[thirdway=weibo],a[thirdway=mLogin]').hide() // $('a[thirdway=weixin],a[thirdway=mLogin]').show() $('a[thirdway=weixin]').show() $('a[thirdway=mLogin]').show() } else if (window.huo && window.huo.getEnvironment){ // 微端 $('a[thirdway=weixin],a[thirdway=qq],a[thirdway=weibo],a[thirdway=mLogin]').hide() $('a[thirdway=mLogin]').show() } else { // pc端 $('a[thirdway=weibo],a[thirdway=mLogin]').hide() $('a[thirdway=mLogin]').show() // $('a[thirdway=weixin],a[thirdway=mLogin]').show() $('a[thirdway=weixin]').show() } break; } }, appendTemplate: function (type, data) { $('body').append(this.replaceTemplate(type, data)) }, replaceTemplate: function (tid, data) { // 根据 id 获取模板字符串 var template = $('#' + tid + 'Html').html() || '' data = data || {} // 替换字符串 template = template.replace(/{{([^}]+)}}/g, function (match, p1, offset, string) { // 是否存在多重属性 var params = p1.trim().split('.') var val = data[params[0]] for (var i = 1; i < params.length; i++) { val = val && val[params[i]] } return val === undefined ? '' : val }) return template }, // 校验手机号码 isMobile: function (mobile) { return /1[0-9]{10}/.test(mobile) }, // 创建 iframe createFrame: function (opt) { var name = opt.name || 'huoFrame' var style = opt.style || '' var url = opt.url || '' var close = opt.close === false ? false : true var cb = opt.cb || function () {} $('body').append('') if (close) { $('body').append('') $('#closeFrame').click(function () { $('#huoFrame, #closeFrame').remove() cb() }) } }, // 隐藏 iframe post framePost: function (url, form) { // 追加隐藏 form 和 iframe $('body').append('') $('#postForm').attr({ method: 'post', action: url, target: 'postFrame' }) if (form) { var $form = $('[name="' + form + '"]') $('#postForm').append($('input[name]', $form).clone()) } $('#postForm').submit() }, // 提示信息 tips: function (msg) { $('body').append( '
\n' + '
\n' + '
提示信息
\n' + '

' + msg + '

\n' + '

\n' + ' 确定\n' + '

\n' + '
\n' + '
' ) }, // 协议信息展示 total: function (title,msg) { let cHei = $('body').height()*0.6 $('body').append( '
\n' + '
\n' + '
'+ title +'
\n' + '
' + msg + '
\n' + '

\n' + ' 关闭\n' + '

\n' + '
\n' + '
' ) }, // 环境判断 hsDeviceType: function () { var ua = navigator.userAgent var type = 'pc' var wx = /micromessenger/i.test(ua) var ios = /i(pad|phone|pod)/i.test(ua) var and = /android/i.test(ua) var mobile = /mobile/i.test(ua) if (wx) { type = 'weixin' } else if (ios) { type = 'safari' } else if (and) { type = 'andbrowser' } else if (mobile) { type = 'wap' } window.sessionStorage.setItem('huosdk_HS-Device-Type', type) return type }, // 调起微信支付 callWxPay: function (data) { function onBridgeReady () { WeixinJSBridge.invoke('getBrandWCPayRequest', data, function (res) { if (res.err_msg === 'get_brand_wcpay_request:ok') { window.location.href = '/wap/ptb/index' } }) } if (typeof WeixinJSBridge === 'undefined') { if (document.addEventListener) { document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false) } else if (document.attachEvent) { document.attachEvent('WeixinJSBridgeReady', onBridgeReady) document.attachEvent('onWeixinJSBridgeReady', onBridgeReady) } } else { onBridgeReady() } }, // 展示/隐藏账号下拉框 toggleAccountList: function (e) { e.preventDefault() $('.loginId #accountList').toggle() }, /*** * 写入保存账号 * */ addAccount: function (username, password) { let obj = {} let arr = [] let storageArr = localStorage.getItem('acountArrList')? JSON.parse(localStorage.getItem('acountArrList')):[] for(var i=0; i${storageArr[i].username} `) } }, chooseAccount: function (e, obj) { let username = $(obj).attr('username') let password = $(obj).attr('password') $('[name="mem-username"]').val(username) $('[name="mem-password"]').val(password) HuoUtils.toggleAccountList(e) }, /** * 删除保存账号 * */ delAccount: function (e, obj) { e.stopPropagation() let index = $(obj).attr('data-index') let storageArr = localStorage.getItem('acountArrList')? JSON.parse(localStorage.getItem('acountArrList')):[] storageArr.splice(index, 1) localStorage.setItem("acountArrList", JSON.stringify(storageArr)); HuoUtils.renderAccountList() }, } // api var HuoApi = { /** * 用户接口 * Member Api */ // 普通登录 userLogin: function () { var username = $('[name="mem-username"]').val().trim() var password = $('[name="mem-password"]').val().trim() if (!username) { HuoUtils.tips('请输入用户名') return false } if (!password) { HuoUtils.tips('请输入密码') return false } // 切换到登录中 HuoUtils.appendTemplate('switch', { 'mem-username': username }) // 请求登录 var _this = this console.log('window.redirectUrl====', window.redirectUrl) $.ajax({ url: baseUrl + '/v8/user/login', data: { 'mem-username': username, 'mem-password': password, // 'redirect_url': window.redirectUrl, 'format': 'jsonp' }, dataType: 'jsonp', success: function (res) { console.log('res===', res) HuoUtils.addAccount(username, password) _this.loginSuccess(res, username) } }) }, // 手机登录 userLoginm: function () { var mobile = $('[name="sms-mobile"]').val().trim() var code = $('[name="sms-code"]').val().trim() if (!mobile) { HuoUtils.tips('请输入手机号') return false } if (!HuoUtils.isMobile(mobile)) { HuoUtils.tips('请输入正确的手机号') return false } if (!code) { HuoUtils.tips('请输入验证码') return false } HuoUtils.appendTemplate('switch', { 'mem-username': mobile }) // 请求登录 var _this = this $.ajax({ url: baseUrl + '/v8/user/loginm', data: { 'sms-type': 2, 'sms-mobile': mobile, 'sms-code': code, 'redirect_url': window.redirectUrl, 'format': 'jsonp' }, dataType: 'jsonp', success: function (res) { _this.loginSuccess(res, mobile) } }) }, // 登录请求成功的回调事件 loginSuccess: function (res, username) { console.log("res===", res) console.log("res===", username) if (res.code === 200) { console.log(789789798) // var backUrl = $('#backUrl').val() var backUrl = window.redirectUrl || res.data.url || window.location.href // if (backUrl.indexOf('token') > 0) { // backUrl = backUrl.replace(/token=[^&]*/, 'token=' + res.data.user_token) // } else { // backUrl += '?token=' + res.data.user_token // } // window.location.href = backUrl // 移除弹框 HuoUtils.switchTemplate() function userDetail(data) { console.log('data===', data) $.ajax({ url: '/float/user/detail', data: data, dataType: 'jsonp', async:false, success: function (res) { console.log('res====123====', res) if (res.code === 200) { if(res.data.mem_id && res.data.mem_id > 0){ // 移除弹框 location.reload() } } else { // HuoUtils.tips(res.msg) } } }) } var obj = { "format": "jsonp", "token": res.data.user_token } sessionStorage.setItem('huosdk_HS-Token', res.data.user_token) userDetail(obj) } else { HuoUtils.tips(res.msg) // 返回登录 HuoUtils.switchTemplate('login', { 'mem-username': username }) } }, // 第三方登录 userOauth: function (type) { if (window.huo && window.huo.getEnvironment) { if (window.huo.getEnvironment() == 'wd_and_h5_app') { // 2 qq // 3 微信 if(type == 'qq'){ window.huo.loginByThird(2, '', '', ''); }else if(type == 'weixin'){ window.huo.loginByThird(3, '', '', ''); } return false } } // 微信环境 function isWechat(){ return /micromessenger/i.test(navigator.userAgent) } //是否为PC端 function isPC () { let userAgentInfo = navigator.userAgent; let Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; let flag = true; for (let v = 0; v < Agents.length; v++) { if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = false; break; } } return flag; } if (isWechat() && (type == 'qq' || type == 'weixin')) { window.open(baseUrl + '/oauth/index?type=' + type + '&url=' + window.location.href); } else { if(isPC ()){ window.open(baseUrl + '/oauth/index?type=' + type + '&url=' + window.location.href, "_self"); }else{ if(type == 'qq' || type == 'weixin'){ HuoUtils.tips('暂不支持该登陆模式') }else{ window.open(baseUrl + '/oauth/index?type=' + type + '&url=' + window.location.href, "_self"); } } } // window.location.href = baseUrl + '/oauth/index?type=' + type + '&url=' + window.location.href // HuoUtils.createFrame({ // name: 'oauth_' + new Date().getTime(), // url: baseUrl + '/oauth/index?type=' + type + '&url=' + window.location.href // }) }, // 登出 userLogout: function (isSwitch) { $.ajax({ url: baseUrl + '/v8/user/logout', data: { 'format': 'jsonp' }, dataType: 'jsonp', success: function (res) { console.log(window.location.href.split('?token=')) // window.location.reload() function delCookie () { console.log(456879) var keys = document.cookie.match(/[^ =;]+(?==)/g) if (keys) { for (var i = keys.length; i--;) { console.log('=========',document.domain) document.cookie = keys[i] + '=0;path=/;expires=' + new Date(0).toUTCString() // 清除当前域名下的,例如:m.ratingdog.cn document.cookie = keys[i] + '=0;path=/;domain=' + document.domain + ';expires=' + new Date(0).toUTCString() // 清除当前域名下的,例如 .m.ratingdog.cn document.cookie = keys[i] + '=0;path=/;domain=zhangwanyanxuan.com;expires=' + new Date(0).toUTCString() // 清除一级域名下的或指定的,例如 .ratingdog.cn } } } delCookie () if (res.code === 200) { window.location.href = window.location.href.split('?token=')[0] } else { HuoUtils.tips(res.msg) } } }) }, // 发送手机验证码 smsSend: function (type) { var mobile = $('[name="sms-mobile"]').val().trim() if (!mobile) { HuoUtils.tips('请输入手机号') return false } if (!HuoUtils.isMobile(mobile)) { HuoUtils.tips('请输入正确的手机号') return false } var $smsSend = $('#smsSend') if ($smsSend.attr('disabled')) { return false } $smsSend.attr('disabled', true) $.ajax({ url: baseUrl + '/v8/sms/send', data: { 'sms-type': type, 'sms-mobile': mobile, 'format': 'jsonp' }, dataType: 'jsonp', success: function (res) { HuoUtils.tips(res.msg) if (+res.code === 200) { var t = 120 $smsSend.text(t + 's后重试') var _t = window.setInterval(function () { t -= 1 $smsSend.text(t + 's后重试') if (t === 0) { window.clearInterval(_t) $smsSend.text('发送验证码').removeAttr('disabled') } }, 1000) } else { $smsSend.removeAttr('disabled') } } }) }, /*** * 用户协议 * */ userAgreement: function(e){ e.stopPropagation() e.preventDefault() $.ajax({ url: '/richtext/user_agreement', dataType: 'json', data: { "format": "json" }, success: function(res){ if(res.code == 200){ HuoUtils.total(res.data.title, res.data.content) }else{ HuoUtils.tips(res.msg) } } }) }, // 选中账号 selectLi(item){ let val = $(item).html() $('.resetWrap .form_input').val(val) $('.resetWrap #accountList').hide() }, // 校验手机验证码 smsVerify: function () { var mobile = $('[name="sms-mobile"]').val().trim() var code = $('[name="sms-code"]').val().trim() let list = [] if (!mobile) { HuoUtils.tips('请输入手机号') return false } if (!HuoUtils.isMobile(mobile)) { HuoUtils.tips('请输入正确的手机号') return false } if (!code) { HuoUtils.tips('请输入验证码') return false } $.ajax({ url: baseUrl + '/v8/user/passwd/sms_check', data: { 'sms-type': 5, 'sms-mobile': mobile, 'sms-code': code, 'format': 'jsonp' }, dataType: 'jsonp', success: function (res) { if (res.code === 200) { HuoUtils.switchTemplate('reset', { 'verify_token': res.data.verify_token }) list = res.data.data $('.resetWrap #accountList').html('') // reset_form_btn setTimeout(()=>{ for(let i=0; i${list[i].username}`) } $('.reset_form_btn').find('button').attr('data-mobile', mobile) },800) } else { HuoUtils.tips(res.msg) } } }) }, // 重置密码 resetPwd: function () { var password = $('[name="mem-password"]').val().trim() var passwordag = $('[name="mem-passwordag"]').val().trim() var username = $('.resetWrap').find('[name="mem-username"]').val().trim() if (!password) { HuoUtils.tips('请输入密码') return false } if (!passwordag) { HuoUtils.tips('请再次输入密码') return false } if (passwordag !== password) { HuoUtils.tips('两次输入密码不一致') return false } var token = $('[name="verify_token"]').val().trim() $.ajax({ url: baseUrl + '/v8/user/passwd/reset', data: { 'mem-password': password, 'verify_token': token, 'mem-username': username, 'format': 'jsonp' }, dataType: 'jsonp', success: function (res) { HuoUtils.tips(res.msg) if (+res.code === 200) { // 移除弹框 HuoUtils.switchTemplate('login') } } }) }, // 用户注册 userReg: function (regone) { var username = $('[name="mem-username"]').val().trim() var password = $('[name="mem-password"]').val().trim() var passwordag = regone && $('[name="mem-passwordag"]').val().trim() if (!username) { HuoUtils.tips('请输入用户名') return false } if (!password) { HuoUtils.tips('请输入密码') return false } if (!passwordag && regone) { HuoUtils.tips('请再次输入密码') return false } if (passwordag !== password && regone) { HuoUtils.tips('两次输入密码不一致') return false } var _this = this $.ajax({ url: baseUrl + '/v8/user/reg', data: { 'mem-username': username, 'mem-password': password, 'format': 'jsonp' }, dataType: 'jsonp', success: function (res){ HuoUtils.addAccount(username, password) _this.regSuccess(res) } }) }, // 手机注册 userRegm: function () { var mobile = $('[name="sms-mobile"]').val().trim() var code = $('[name="sms-code"]').val().trim() var password = $('[name="mem-password"]').val().trim() var repeatPassword = $('[name="mem-password2"]').val().trim() if (!mobile) { HuoUtils.tips('请输入手机号') return false } if (!HuoUtils.isMobile(mobile)) { HuoUtils.tips('请输入正确的手机号') return false } if (!code) { HuoUtils.tips('请输入验证码') return false } if (!password) { HuoUtils.tips('请输入密码') return false } if(repeatPassword != password){ HuoUtils.tips('两次输入的密码不一致') return false } var _this = this $.ajax({ url: baseUrl + '/v8/user/regm', data: { 'sms-type': 1, 'sms-mobile': mobile, 'sms-code': code, 'mem-password': password, 'format': 'jsonp' }, dataType: 'jsonp', success: function (res){ HuoUtils.addAccount(mobile, password) _this.regSuccess(res) } }) }, // 一键注册 userRegone: function () { $.ajax({ url: baseUrl + '/v8/user/regone', data: { 'format': 'jsonp' }, dataType: 'jsonp', success: function (res) { console.log(res) if (+res.code === 200) { HuoUtils.switchTemplate('play', res.data) // localStorage.setItem('username', res.data.username) // localStorage.setItem('password', res.data.password) HuoUtils.addAccount(res.data.username, res.data.password) // 用户是否直接注册 if (+res.data.type === 1) { this.userReg(true) } } else { HuoUtils.tips(res.msg) } } }) }, // 注册请求成功的回调事件 regSuccess: function (res) { if (+res.code === 200) { sessionStorage.setItem('huosdk_HS-Token', res.data.user_token) // var backUrl = $('#backUrl').val() // if (backUrl.indexOf('token') > 0) { // backUrl = backUrl.replace(/token=[^&]*/, 'token=' + res.data.user_token) // } else { // backUrl += '?token=' + res.data.user_token // } window.location.reload() } else { HuoUtils.tips(res.msg) } } } $.ajaxSetup({ beforeSend: function (jqXHR, options) { var url = options.url.match(/^([^?]*)\??(.*)$/) var data = {} var keys = [] var params = url[2].split('&') for (var i = 0; i < params.length; i++) { var param = params[i].split('=') data[param[0]] = param[1] keys.push(param[0]) } keys.sort() var str = '' for (var i = 0; i < keys.length; i++) { if (i > 0) { str += '&' } str += keys[i] + '=' + data[keys[i]] } str = decodeURI(str) var sign = (options.type + '&' + encodeURIComponent(url[1].replace(baseUrl, '').substr(1)) + '&' + encodeURIComponent(str) + '&' + (data.token || '')).replace(/\(/g, '%28').replace(/\)/g, '%29') // console.log(options) // console.log(options.url) if(options.url != '/cfloat/order/get_list.html' && options.url != '/wap/game/list' && options.url != '/wap/game/type'){ options.url += '&sign=' + md5(sign).toString() } }, complete: function (jqXHR, status) { var res = jqXHR.responseJSON if (res && +res.code === 1002) { // 登录已过期 // window.location.href = '/wap/user/login' HuoUtils.switchTemplate('login') } } }) $.ajaxPrefilter(function (options, originalOptions, jqXHR) { // 设置请求地址为代理地址 if (options.url.indexOf('/wap') === -1) { // options.url = baseUrl + options.url // options.data += options.data ? '&format=jsonp' : 'format=jsonp' } options.crossDomain = true }) $(window).on('message', function (event) { var data = event.originalEvent.data switch (data.type) { case 'page.reload': var backUrl = $('#backUrl').val() if (backUrl.indexOf('token') > 0) { backUrl = backUrl.replace(/token=[^&]*/, 'token=' + data.data.user_token) } else { backUrl += '?token=' + data.data.user_token } window.location.href = backUrl break } })