Files
SEONexus/code/public/template/shikong/huiyuan/js/public/request.js
2025-04-21 17:49:17 +08:00

331 lines
10 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { pageJumpFn, arrayBufferToBase64, layerPopup } from './commonFun.js';
import ConfigsJs from '../class/config.js';
import { storageObj } from './localstorage.js';
const Configs = new ConfigsJs();
console.log(Configs.get('API_DOMAIN'))
/**
* 获取api
*/
const requestJs = {
strApiDoMain: Configs.get('API_DOMAIN'),
//点击统计-base
saveStaTis:"/miao/statis/save", // 新统计api
//用户
regist: '/miao/user/regist', //注册-
registbyphone: '/miao/user/registbyphone', //手机注册-
registbyemail: '/miao/user/registbyemail', //邮箱注册-
emaillogin: '/miao/user/emaillogin', //邮箱登录-
login: '/miao/user/login', //登录
phonelogin: '/miao/user/phonelogin', //手机登录-
retrievePasswordByPhone: '/miao/user/retrievePasswordByPhone', //找回密码-
info: '/miao/user/info',//用户详情-
smscode: '/miao/user/smscode',//发送验证吗-
bindphone: '/miao/user/bindphone',//绑定手机-
setpasswd: '/miao/user/setpasswd',//修改密码-
logout: '/miao/user/logout',//推出-
channel: '/miao/pay/channel',//支付渠道
create: '/miao/pay/create',//创建支付订单
channelV2: '/miao/pay/v2/channel',//获取支付通道列表V2-
createV2: '/miao/pay/v2/create',//创建支付订单V2-
notify: '/miao/pay/notify',//支付异步回调
orderlist: '/miao/pay/orderlist',//支付订单列表-
packagevip: '/miao/pay/package',//获取套餐
//视频
videoinfo: '/miao/video/info',//视频地址
//问题反馈
feedbacklist: '/miao/feedback/index',//反馈列表
feedbackcreate: '/miao/feedback/create',//反馈列表--添加-
fileupdate: '/miao/file/upload',//反馈列表-上传-
getVipTime: '/miao/pay/getVipTime',//涮新wip时间
getFundsInfo: '/miao/funds/info',//资金账户详情.md ok-
getFundsTransactionsList: '/miao/funds/transactions/list',//交易记录.md ok -
getFundsWithdrawalAccountList: '/miao/funds/withdrawal/account/list',//提现账户列表.md-
getFundsWithdrawalOrderList: '/miao/funds/withdrawal/order/list',//提现订单列表.md ok-
getFundsWithdrawalOrderCreate: '/miao/funds/withdrawal/order/create',//申请提现.md-
getFundsWithdrawalOrderPut: '/miao/funds/withdrawal/account/put',//设置提现账户.md
getReferralList: '/miao/referral/list', //推广统计.md-
getReferralShare: '/miao/referral/share', //推广链接-
checkregist: '/miao/user/regist/check', //注册前置接口-
getcaptcha: '/miao/user/captcha',//获取验证码-
resetPasswordByKey:'/miao/user/resetPasswordByKey', //根据key设置密码
/**
* 默认参数
*/
source: {
url: "",
type: 'POST',
dataType: 'json', //预期的服务器响应的数据类型。
processData: true, //布尔值,规定通过请求发送的数据是否转换为查询字符串。默认是 true。
contentType: "application/x-www-form-urlencoded", //发送数据到服务器时所使用的内容类型。默认是:"application/x-www-form-urlencoded"。
cache: true, //是否缓存被请求页面。默认是 true。
async: true, //是否异步处理。默认是 true。
data: {
},
},
//fetch
fetchFun(url, data, callback, errFun) {
fetch(url)
.then((response) => response.arrayBuffer())
.then((buffer) => {
if (buffer) {
buffer = buffer.slice(17, buffer.length);
const imageStr = arrayBufferToBase64(buffer);
callback(imageStr, data);
}
})
.catch(error => {
console.log(error)
errFun(data)
});
},
asyncFunction(url) {
return new Promise((resolve, reject) => {
fetch(url)
.then((response) => response.arrayBuffer())
.then((buffer) => {
if (buffer) {
buffer = buffer.slice(17, buffer.length);
var imageStr = arrayBufferToBase64(buffer);
resolve(imageStr);
}
})
.catch(error => {
reject('异步操作失败');
});
});
},
asyncFunction2(url) {
return new Promise((resolve, reject) => {
fetch(url)
.then((response) => response.arrayBuffer())
.then((buffer) => {
if (buffer) {
var imageStr = arrayBufferToBase64(buffer);
resolve(imageStr);
}
})
.catch(error => {
reject('异步操作失败');
});
});
},
//原生请求-post
ajaxPost(url, data, callback) {
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader('accept', 'application/x.hubserver.admin+json');
xhr.send(data);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
callback(xhr.responseText);
}
}
},
//原生请求-get
ajaxGet(url, data, callback, errFun) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.setRequestHeader('accept', 'application/x.hubserver.admin+json');
xhr.send();
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
callback(xhr.responseText, data);
}
if (xhr.readyState == 4 && xhr.status == 0) {
this.errFun(data)
}
}
},
//获取本地token
getStorageToken(key) {
var token = window.localStorage.getItem(key)
if (!token) {
return false
}
return token
},
/**
*
* post 请求
* @param source 数据
* @param successHandle 访问成功的回调函数
* @param errorHandle 访问失败回调函数
* 如果不要loding可以设置为false默认是“正在加载。。”
* 如果需要表单上传请设置from 为true 默认为false
* 如果没有tokenheaders也可以注释
* postFun(source, successfn, errorfn,loding='正在加载。。')
*
**/
postFun: function (source, successfn, errorfn, loading = '正在加载。。', from = false) {
let layerIndex = null;
// 设置Ajax请求参数
if (from) {
source['processData'] = false;
source['contentType'] = false;
source['cache'] = false;
}
// 封装显示加载层的逻辑
function showLoading() {
if (loading !== false) {
layerIndex = layer.open({
type: 2,
content: loading,
});
}
}
// 封装关闭加载层的逻辑
function closeLoading() {
if (layerIndex !== null) {
layer.close(layerIndex);
}
}
// 封装处理成功响应的逻辑
function handleSuccessResponse(res) {
// 解密处理
if (Configs.get('MIAO_API_ENCRYPT_STATUS') == '1') {
let returnENC = EncAndDec.decryptData(res, Configs.get('MIAO_API_ENCRYPT_KEY'));
res = JSON.parse(returnENC);
}
if (res.code != '000') {
if(source['url'] == '/miao/pay/create'){
res.msg = '当前支付通道拥堵,请更换其他支付通道支付。'
}
if(res.code != '014'){
layerPopup(res.msg,3);
}
// 重新登录
if (res.code === '2000' || res.code === '995' || res.code === '996') {
localStorage.setItem(storageObj.loginStatus, false)
location.href = "/member/login.html"
}
}
successfn(res);
}
// 发起Ajax POST请求
$.ajax({
url: this.strApiDoMain + source['url'],
type: 'POST',
data: source['data'],
dataType: source['dataType'],
async: source['async'],
headers: {
'Accept': "application/x.hubserver.admin+json",
'token': localStorage.getItem(storageObj.tokenKey)
},
beforeSend: showLoading,
complete: closeLoading,
success: handleSuccessResponse,
error: function (e) {
if (errorfn) errorfn(e);
closeLoading();
}
});
},
/**
*
* get 请求
* @param source 数据
* @param successHandle 访问成功的回调函数
* @param errorHandle 访问失败回调函数
* 如果不要loding可以设置为false默认是“正在加载。。”
* 如果没有tokenheaders也可以注释
* getFun(source, successfn, errorfn,loding='正在加载。。')
*
**/
getFun: function (source, successFun, errorFun, loadingMessage = '正在加载...') {
const layerIndex = loadingMessage !== false ? layer.open({ type: 2, content: loadingMessage }) : null;
$.ajax({
url: this.strApiDoMain + source['url'],
type: 'GET',
dataType: source['dataType'],
async: source['async'],
headers: {
'Accept': "application/x.hubserver.admin+json",
'token': localStorage.getItem(storageObj.tokenKey)
},
beforeSend: function () {
// 加载中的逻辑已经在外面处理
},
complete: function () {
if (layerIndex !== null) {
layer.close(layerIndex);
}
},
success: function (res) {
handleResponse(res); // 处理响应的逻辑可以抽取出来
successFun(res); // 调用成功的回调函数
},
error: function (e) {
if (errorFun) errorFun(e); // 只有在提供了错误回调函数的情况下才调用
}
});
// 处理响应逻辑
function handleResponse(res) {
// 解密处理
if (Configs.get('MIAO_API_ENCRYPT_STATUS') == '1') {
let returnENC = EncAndDec.decryptData(res, Configs.get('MIAO_API_ENCRYPT_KEY'));
res = JSON.parse(returnENC);
}
if (['2000', '2002', '2003','995','996'].includes(res.code)) {
localStorage.setItem(storageObj.loginStatus, false);
localStorage.setItem(storageObj.isMember, false);
localStorage.setItem(storageObj.tokenKey, '');
localStorage.setItem(storageObj.userInfo, '');
const redirectMap = {
'995': '/member/login.html',
'996': '/member/login.html',
'2000': '/member/login.html',
'2002': '/member/buy.html',
'2003': '/home.html' // 假设这是视频不存在时的页面
};
pageJumpFn({ 'url': redirectMap[res.code], 'url_type': 1 });
} else if (res.code != '000') {
layerPopup(res.msg, 3);
} else {
//layerPopup(res.message, 3);
// 处理其他code的逻辑如果有必要
}
}
},
/**
*
* 访问失败的回调函数
*
*/
errorfn(err) {
console.log(err);
}
}
export default requestJs;