/**
* 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
}
})