first
This commit is contained in:
220
api/request.js
Normal file
220
api/request.js
Normal file
@@ -0,0 +1,220 @@
|
||||
/**
|
||||
* 统一请求拦截器
|
||||
*/
|
||||
|
||||
import {
|
||||
userStore
|
||||
} from '@/store/index.js';
|
||||
|
||||
// 基础配置
|
||||
const BASE_CONFIG = {
|
||||
timeout: 30000, // 30秒超时
|
||||
header: {
|
||||
'Content-Type': 'application/json',
|
||||
'X-Requested-With': 'XMLHttpRequest'
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 创建请求实例
|
||||
*/
|
||||
class HttpRequest {
|
||||
constructor() {
|
||||
this.config = {
|
||||
...BASE_CONFIG
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 响应拦截器 - 处理Cookie和错误
|
||||
* @param {Object} response 响应对象
|
||||
* @returns {Promise} 处理后的响应
|
||||
*/
|
||||
async interceptResponse(response) {
|
||||
try {
|
||||
if (response.data.system_result_message_key) {
|
||||
uni.showToast({
|
||||
title: response.data.system_result_message_key + ",请重新登录",
|
||||
icon: 'none'
|
||||
});
|
||||
|
||||
// 等待 logout 操作完成
|
||||
await userStore.actions.logout();
|
||||
|
||||
setTimeout(() => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/login'
|
||||
});
|
||||
}, 500);
|
||||
}
|
||||
|
||||
// 检查HTTP状态码
|
||||
if (response.statusCode >= 200 && response.statusCode < 300) {
|
||||
// 检查业务状态码
|
||||
if (response.data && typeof response.data === 'object') {
|
||||
if (response.data.code === '0' || response.data.code === 0 || response.data.code === 200) {
|
||||
// 业务成功
|
||||
return response.data;
|
||||
} else {
|
||||
// 业务失败
|
||||
const error = new Error(response.data.message || response.data.msg || '请求失败');
|
||||
error.code = response.data.code;
|
||||
error.data = response.data;
|
||||
throw error;
|
||||
}
|
||||
} else {
|
||||
// 非JSON响应,直接返回
|
||||
return response.data;
|
||||
}
|
||||
} else {
|
||||
// HTTP状态码错误
|
||||
const error = new Error(
|
||||
`HTTP ${response.statusCode}: ${this.getStatusText(response.statusCode)}`
|
||||
);
|
||||
error.statusCode = response.statusCode;
|
||||
error.response = response;
|
||||
throw error;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('响应拦截器错误:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取状态码描述
|
||||
* @param {number} statusCode HTTP状态码
|
||||
* @returns {string} 状态描述
|
||||
*/
|
||||
getStatusText(statusCode) {
|
||||
const statusMap = {
|
||||
400: 'Bad Request',
|
||||
401: 'Unauthorized',
|
||||
403: 'Forbidden',
|
||||
404: 'Not Found',
|
||||
500: 'Internal Server Error',
|
||||
502: 'Bad Gateway',
|
||||
503: 'Service Unavailable'
|
||||
};
|
||||
return statusMap[statusCode] || 'Unknown Error';
|
||||
}
|
||||
|
||||
/**
|
||||
* 通用请求方法
|
||||
* @param {Object} options 请求选项
|
||||
* @returns {Promise} 请求Promise
|
||||
*/
|
||||
request(options) {
|
||||
return new Promise((resolve, reject) => {
|
||||
// 合并配置,特别处理 header
|
||||
const config = {
|
||||
...this.config,
|
||||
...options,
|
||||
header: {
|
||||
...this.config.header,
|
||||
...(options.header || options.headers || {})
|
||||
},
|
||||
withCredentials: false
|
||||
};
|
||||
|
||||
// 发起请求
|
||||
uni.request({
|
||||
...config,
|
||||
success: (response) => {
|
||||
this.interceptResponse(response)
|
||||
.then(resolve)
|
||||
.catch(reject);
|
||||
},
|
||||
fail: (error) => {
|
||||
console.error('请求失败:', error);
|
||||
const err = new Error(error.errMsg || '网络请求失败');
|
||||
err.error = error;
|
||||
reject(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* GET请求
|
||||
* @param {string} url 请求地址
|
||||
* @param {Object} params 查询参数
|
||||
* @param {Object} options 其他选项
|
||||
* @returns {Promise} 请求Promise
|
||||
*/
|
||||
get(url, params = {}, options = {}) {
|
||||
// 构建查询字符串
|
||||
const queryString = Object.keys(params)
|
||||
.filter(key => params[key] !== undefined && params[key] !== null)
|
||||
.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)
|
||||
.join('&');
|
||||
|
||||
const finalUrl = queryString ? `${url}${url.includes('?') ? '&' : '?'}${queryString}` : url;
|
||||
|
||||
return this.request({
|
||||
url: finalUrl,
|
||||
method: 'GET',
|
||||
...options
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* POST请求
|
||||
* @param {string} url 请求地址
|
||||
* @param {Object} data 请求体数据
|
||||
* @param {Object} options 其他选项
|
||||
* @returns {Promise} 请求Promise
|
||||
*/
|
||||
post(url, data = {}, options = {}) {
|
||||
return this.request({
|
||||
url,
|
||||
method: 'POST',
|
||||
data,
|
||||
...options
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* PUT请求
|
||||
* @param {string} url 请求地址
|
||||
* @param {Object} data 请求体数据
|
||||
* @param {Object} options 其他选项
|
||||
* @returns {Promise} 请求Promise
|
||||
*/
|
||||
put(url, data = {}, options = {}) {
|
||||
return this.request({
|
||||
url,
|
||||
method: 'PUT',
|
||||
data,
|
||||
...options
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* DELETE请求
|
||||
* @param {string} url 请求地址
|
||||
* @param {Object} params 查询参数
|
||||
* @param {Object} options 其他选项
|
||||
* @returns {Promise} 请求Promise
|
||||
*/
|
||||
delete(url, params = {}, options = {}) {
|
||||
return this.get(url, params, {
|
||||
...options,
|
||||
method: 'DELETE'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 创建请求实例
|
||||
const httpRequest = new HttpRequest();
|
||||
|
||||
export default httpRequest;
|
||||
|
||||
// 导出常用方法
|
||||
export const {
|
||||
get,
|
||||
post,
|
||||
put,
|
||||
delete: del
|
||||
} = httpRequest;
|
||||
757
api/user.js
Normal file
757
api/user.js
Normal file
@@ -0,0 +1,757 @@
|
||||
/**
|
||||
* 用户相关API接口
|
||||
*/
|
||||
|
||||
import httpRequest from './request.js';
|
||||
import {
|
||||
generateRfm
|
||||
} from '@/utils/common.js';
|
||||
|
||||
class UserApi {
|
||||
constructor() {
|
||||
this.baseUrl = '/kyhl-weixin-1.0';
|
||||
this.cardBaseUrl = '/cm-api/v1'
|
||||
}
|
||||
|
||||
// 检查是否有公众号OpenId(获取Cookie的关键接口)
|
||||
async getCookie() {
|
||||
try {
|
||||
const fullUrl = `${this.cardBaseUrl}/auth/get-auth`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('checkHasGzhOpenId请求失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取设备信息(管理平台)
|
||||
async getDeviceInfoAdmin(device_id) {
|
||||
try {
|
||||
const fullUrl = `${this.cardBaseUrl}/device/query`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, {
|
||||
page: 1,
|
||||
page_size: 1,
|
||||
device_id
|
||||
});
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('获取设备信息(管理平台):', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取WXUrl
|
||||
/*
|
||||
{
|
||||
"code": "0",
|
||||
"current_session_user_resource_ids_index": "",
|
||||
"app_result_key": "0",
|
||||
"wxAuthUrl": "",
|
||||
"system_result_key": "0"
|
||||
}
|
||||
*/
|
||||
async getWxUrl() {
|
||||
try {
|
||||
const params = {
|
||||
responseFunction: 'checkHasGzhOpenId',
|
||||
needGzhOpenId: true,
|
||||
currentPageUrl: 'https://m1.whjhft.com/pages/index/index',
|
||||
checkFrom: 'cardlogin',
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}/wxauth/checkHasGzhOpenId.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('登录请求失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 用户登录接口
|
||||
async login(iccidMark) {
|
||||
try {
|
||||
console.log(iccidMark);
|
||||
const params = {
|
||||
responseFunction: 'findByiccidMarkCallback',
|
||||
iccidMark,
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}/card/login.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('登录请求失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 判断是否实名接口
|
||||
async getRealNameInfo() {
|
||||
try {
|
||||
const params = {
|
||||
iccidOrPhone: "",
|
||||
responseFunction: "getRealNameInfoCallback",
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}/user/getRealNameInfo.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('获取实名信息失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 获取用户信息接口
|
||||
async getUserInfo() {
|
||||
try {
|
||||
const params = {
|
||||
responseFunction: 'findByOpenIdCallback',
|
||||
DoNotGetRealNameInfo: true,
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}/user/findByOpenId.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('获取用户信息失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 切换运营商 1: 电信 2: 联通 3: 移动 esim参数值
|
||||
async changeOperator(esim, iccidMark) {
|
||||
try {
|
||||
const params = {
|
||||
responseFunction: 'updateWifi',
|
||||
optwifi: "esim",
|
||||
esim,
|
||||
iccidMark,
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}/card/updateWifi.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('切换运营商失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 进入实名是否只显示主卡
|
||||
async getIsOnlyMainCard(iccidMark) {
|
||||
try {
|
||||
const fullUrl = `${this.cardBaseUrl}/call/device/${iccidMark}/exists`;
|
||||
|
||||
const response = await httpRequest.get(fullUrl);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('进入实名是否只显示主卡请求失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取openId接口
|
||||
async getOpenId() {
|
||||
try {
|
||||
const params = {
|
||||
responseFunction: 'getUserCardInfo',
|
||||
DoNotGetRealNameInfo: true,
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}/usercard/getUserCardInfo.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('获取openId失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 进行授权
|
||||
async getAuthorize(code) {
|
||||
try {
|
||||
const params = {
|
||||
origin_html_url: 'https://m1.whjhft.com/pages/index/index',
|
||||
code: code,
|
||||
state: null
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}/wxauth/recvCode.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.get(fullUrl);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('获取授权失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取微信支付签名
|
||||
/*
|
||||
{
|
||||
"code": "0",
|
||||
"signature": "3771f2fce5802b3630377e7d2618a7195d136007",
|
||||
"current_session_user_resource_ids_index": "",
|
||||
"appId": "wxea8c599fe100ce8a",
|
||||
"nonceStr": "31565688940e48cb91827adbf6aeb499",
|
||||
"system_result_key": "0",
|
||||
"timestamp": 1766209145,
|
||||
"isSuccess": "0"
|
||||
}
|
||||
*/
|
||||
async getWxPaySign() {
|
||||
try {
|
||||
const fullUrl = `${this.baseUrl}/weixinPay/getWxSign.do`;
|
||||
|
||||
const response = await httpRequest.get(fullUrl);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('获取微信支付签名失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
getCurrentPageUrl() {
|
||||
try {
|
||||
// #ifdef H5
|
||||
if (typeof window !== 'undefined' && window.location) {
|
||||
const currentUrl = window.location.href;
|
||||
console.log('当前页面URL:', currentUrl);
|
||||
return encodeURIComponent(currentUrl);
|
||||
}
|
||||
// #endif
|
||||
|
||||
const defaultUrl = "https://m1.whjhft.com/pages/index/index";
|
||||
console.log('使用默认URL:', defaultUrl);
|
||||
return encodeURIComponent(defaultUrl);
|
||||
} catch (error) {
|
||||
console.error('获取当前页面URL失败:', error);
|
||||
return encodeURIComponent('https://m1.whjhft.com/pages/index/index');
|
||||
}
|
||||
}
|
||||
|
||||
// 获取套餐列表 smList
|
||||
async getPackageList() {
|
||||
try {
|
||||
const params = {
|
||||
responseFunction: 'findByCardNoCallback',
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}//setmeal/findByCardNo.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('获取套餐列表失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 1. checkHasGzhOpenId 判断当前用户是否已经绑定了微信公众号的 OpenId
|
||||
/*
|
||||
{
|
||||
"code": "0",
|
||||
"current_session_user_resource_ids_index": "",
|
||||
"app_result_key": "0",
|
||||
"wxAuthUrl": "",
|
||||
"system_result_key": "0"
|
||||
}
|
||||
*/
|
||||
// 如果返回的wxAuthUrl: 是空的就表示已经授权了, 没有就需要再来一次授权流程
|
||||
async checkHasGzhOpenId() {
|
||||
try {
|
||||
const params = {
|
||||
responseFunction: 'checkHasGzhOpenId',
|
||||
needGzhOpenId: true,
|
||||
currentPageUrl: "https://m1.whjhft.com/pages/package-order/package-order",
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}//wxauth/checkHasGzhOpenId.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('checkHasGzhOpenId:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 2. checkYgosWxInfo 检查当前用户是否具有与微信支付相关的特定信息
|
||||
async checkYgosWxInfo() {
|
||||
try {
|
||||
const params = {
|
||||
responseFunction: 'checkYgosWxInfo',
|
||||
hasYgGzhPm: false,
|
||||
currentPageUrl: "https://m1.whjhft.com/pages/package-order/package-order",
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}//weixinPay/checkYgosWxInfo.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('checkYgosWxInfo:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 3. checkXwzfWxInfo 检查微信信息
|
||||
async checkXwzfWxInfo() {
|
||||
try {
|
||||
const params = {
|
||||
responseFunction: 'checkXwzfWxInfo',
|
||||
hasXwzfPm: false,
|
||||
zwxMchId: "",
|
||||
currentPageUrl: "https://m1.whjhft.com/pages/package-order/package-order",
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}//weixinPay/checkXwzfWxInfo.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('checkXwzfWxInfo:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 4. 获取支付方式
|
||||
/*
|
||||
{
|
||||
"onlyWalletRechargeCard": false,
|
||||
"code": "0",
|
||||
"walletBalance": 0.0,
|
||||
"current_session_user_resource_ids_index": "",
|
||||
"payMethodList": [
|
||||
{
|
||||
"mybatisRecordCount": 0,
|
||||
"orderNo": "",
|
||||
"jsonUpdateFlag": "0",
|
||||
"id": "a333",
|
||||
"createDate": "",
|
||||
"createUserId": "",
|
||||
"createUserName": "",
|
||||
"payMethod": 2,
|
||||
"showStatus": "",
|
||||
"selectStatus": 2,
|
||||
"sortNum": 44,
|
||||
"showName": "余额支付",
|
||||
"showIconUrl": "http://jh.whjhft.com/kyhl-weixin-1.0/img/yezf.png",
|
||||
"appId": "",
|
||||
"appSecret": "",
|
||||
"gzhId": "",
|
||||
"gzhName": "",
|
||||
"gzhUsername": "",
|
||||
"gzhPassword": "",
|
||||
"mchId": "",
|
||||
"mchKey": "",
|
||||
"systemDomain": "",
|
||||
"mchCertUrl": "",
|
||||
"notifyUrl": "",
|
||||
"returnUrl": "",
|
||||
"profitSharingConfigNo": "",
|
||||
"createDateStr": "",
|
||||
"showApp": true,
|
||||
"needOpenId": false,
|
||||
"payMethodStr": "余额支付",
|
||||
"showStatusStr": "",
|
||||
"selectStatusStr": "否"
|
||||
},
|
||||
{
|
||||
"mybatisRecordCount": 0,
|
||||
"orderNo": "",
|
||||
"jsonUpdateFlag": "0",
|
||||
"id": "4F31156EE9654A35B16CF0E3A6569F53",
|
||||
"createDate": "",
|
||||
"createUserId": "",
|
||||
"createUserName": "",
|
||||
"payMethod": 1,
|
||||
"showStatus": "",
|
||||
"selectStatus": 1,
|
||||
"sortNum": "",
|
||||
"showName": "微信支付",
|
||||
"showIconUrl": "http://jhft.whjhft.com/kyhl-weixin-1.0/img/wx.png",
|
||||
"appId": "",
|
||||
"appSecret": "",
|
||||
"gzhId": "",
|
||||
"gzhName": "",
|
||||
"gzhUsername": "",
|
||||
"gzhPassword": "",
|
||||
"mchId": "",
|
||||
"mchKey": "",
|
||||
"systemDomain": "",
|
||||
"mchCertUrl": "",
|
||||
"notifyUrl": "",
|
||||
"returnUrl": "",
|
||||
"profitSharingConfigNo": "",
|
||||
"createDateStr": "",
|
||||
"showApp": false,
|
||||
"needOpenId": true,
|
||||
"payMethodStr": "微信支付",
|
||||
"showStatusStr": "",
|
||||
"selectStatusStr": "是"
|
||||
}
|
||||
],
|
||||
"app_result_key": "0",
|
||||
"buyMealMealPrice": 29.0,
|
||||
"pwdEmpty": false,
|
||||
"system_result_key": "0",
|
||||
"isSuccess": "1"
|
||||
}
|
||||
*/
|
||||
async getPayList(mealId) {
|
||||
try {
|
||||
const params = {
|
||||
responseFunction: 'getNeedPayMoneyAndWalletBalance',
|
||||
mealId,
|
||||
getMealPrice: true,
|
||||
allowWalletPay: true,
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}//cardwallet/getNeedPayMoneyAndWalletBalance.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('获取支付方式失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
/*
|
||||
{
|
||||
"code": "0",
|
||||
"current_session_user_resource_ids_index": "",
|
||||
"wp": {
|
||||
"appId": "wxea8c599fe100ce8a",
|
||||
"timeStamp": "1766388518476",
|
||||
"nonceStr": "1d64e63b37f349cfb3699643757268a3",
|
||||
"prepayId": "prepay_id=wx2215283841316122e94a592ddd8e7f0000",
|
||||
"paySign": "FDCD3D358E55C568725A10B4E7BC4F5B",
|
||||
"signType": ""
|
||||
},
|
||||
"system_result_key": "0",
|
||||
"isSuccess": "0"
|
||||
}
|
||||
*/
|
||||
// 5. 调用 orderPayPageUse.do 创建订单 并拉起支付 我只要微信支付即可
|
||||
async createOrder(data) {
|
||||
try {
|
||||
const fullUrl = `${this.baseUrl}/weixinPay/orderPayPageUse.do`;
|
||||
|
||||
// 将数据转换为 URL 编码格式
|
||||
const p = new URLSearchParams(data).toString();
|
||||
|
||||
// 确保 header 中的 Content-Type 为 x-www-form-urlencoded
|
||||
const response = await httpRequest.post(fullUrl, p, {
|
||||
header: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
|
||||
}
|
||||
});
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('创建订单失败', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取切卡列表-设备流量-WIFI信息-连接数
|
||||
async getSwitchCardList() {
|
||||
try {
|
||||
const params = {
|
||||
responseFunction: 'findNetWorkInfo',
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}/card/findCardMchInfo.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('获取切卡列表-设备流量-WIFI信息-连接数异常:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取卡信息(过期时间expireDate-状态statusStr)
|
||||
async getCardInfo() {
|
||||
try {
|
||||
const params = {
|
||||
iccidOrPhone: '',
|
||||
responseFunction: 'findCardInfoCallback',
|
||||
skipGift: true,
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}/card/findCardInfo.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('获取切卡列表-设备流量-WIFI信息-连接数异常:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 修改WiFi信息
|
||||
async modifyWifi({
|
||||
cardNo,
|
||||
ssid,
|
||||
password
|
||||
}) {
|
||||
try {
|
||||
const fullUrl = `${this.cardBaseUrl}/device/wifi-config`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, {
|
||||
cardNo,
|
||||
ssid,
|
||||
password
|
||||
});
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('修改WiFi信息失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 重启设备
|
||||
async restartDevice(deviceId) {
|
||||
|
||||
try {
|
||||
const fullUrl = `${this.cardBaseUrl}/device/restart`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, {
|
||||
cardNo: deviceId
|
||||
});
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('重启设备失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 恢复出厂设置
|
||||
async restDevice(deviceId) {
|
||||
try {
|
||||
const fullUrl = `${this.cardBaseUrl}/device/factory-reset`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, {
|
||||
cardNo: deviceId
|
||||
});
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('恢复出厂设置失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取实名地址
|
||||
async getRealNameAddress(iccidMark) {
|
||||
try {
|
||||
const params = {
|
||||
iccidOrPhone: "",
|
||||
responseFunction: "getRealNameInfoCallback",
|
||||
force: true,
|
||||
iccidMark,
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}/user/getRealNameInfo.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('获取实名地址异常:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 智能诊断
|
||||
/*
|
||||
{
|
||||
"internalRetMsg": "",
|
||||
"code": "0",
|
||||
"current_session_user_resource_ids_index": "",
|
||||
"app_result_key": "0",
|
||||
"retMsg": "已提交复机申请,预计1小时内复机。",
|
||||
"system_result_key": "0",
|
||||
"isSuccess": "0"
|
||||
}
|
||||
*/
|
||||
async intelligentDiagnosis(iccidMark) {
|
||||
try {
|
||||
const params = {
|
||||
responseFunction: "intelliDiagnose"
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}/card/intelliDiagnose.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('智能诊断异常:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取设备绑定的手机号
|
||||
async getDeviceBindPhone() {
|
||||
try {
|
||||
const params = {
|
||||
responseFunction: 'findMyBindRecord',
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}/phonebindrecord/findMyBindRecord.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('获取设备绑定的手机号异常:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取短信验证码
|
||||
async getSmsNumber(mobile) {
|
||||
try {
|
||||
const params = {
|
||||
responseFunction: 'sendSms',
|
||||
mobile,
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}/phonebindrecord/sendSms.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('获取短信验证码异常:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 绑定手机号
|
||||
async bindCardPhone(mobile, code) {
|
||||
try {
|
||||
const params = {
|
||||
responseFunction: 'saveBind',
|
||||
mobile,
|
||||
code,
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}/phonebindrecord/saveBind1.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('绑定手机号异常:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// 退出登录
|
||||
async logout() {
|
||||
try {
|
||||
const params = {
|
||||
responseFunction: 'logoutCallback',
|
||||
rfm: generateRfm()
|
||||
};
|
||||
|
||||
const queryString = this.buildQueryString(params);
|
||||
const fullUrl = `${this.baseUrl}/card/logout.do?${queryString}`;
|
||||
|
||||
const response = await httpRequest.post(fullUrl, null);
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('退出登录异常:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
buildQueryString(params) {
|
||||
return Object.keys(params)
|
||||
.filter(key => params[key] !== undefined && params[key] !== null)
|
||||
.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)
|
||||
.join('&');
|
||||
}
|
||||
}
|
||||
|
||||
const userApi = new UserApi();
|
||||
|
||||
export default userApi;
|
||||
Reference in New Issue
Block a user