dingdong-mall/common/js/request.js

752 lines
18 KiB
JavaScript

import globalData from '@/common/js/globalData.js';
export default {
// address: 'https://www.opsoul.com:8881',https://gmhl.opsoul.com
// address: 'https://gmhl.opsoul.com',
address: 'https://gmhl.gmjlb.com',
// 异步接口拦截
addInterceptor() {
uni.addInterceptor('request', {
invoke(args) {
uni.showLoading({
mask: true,
title: '加载中'
})
// request 触发前拼接 url
// args.url = 'https://gmhl.opsoul.com' + args.url;
args.url = 'https://gmhl.gmjlb.com' + args.url;
// args.url = 'http://127.0.0.1:80' + args.url;
if (args.data && Object.prototype && Object.prototype.toString.call(args.data) === '[object Object]') {
args.data.deptId = globalData.deptId;
args.data.from = globalData.from;
}
if (args.header) {
args.header.deptId = globalData.deptId;
args.header.from = globalData.from;
}
// console.log("停止触发");
// return false;
},
success(res) {
uni.hideLoading();
if (!res || !res.data || res.data.code !== 0) {
uni.showToast({
title: '系统错误',
icon: 'error'
})
}
},
fail(err) {
uni.hideLoading();
uni.showToast({
title: '请求失败',
icon: 'error'
})
},
complete(res) {
uni.hideLoading();
}
})
},
async authAndGetLocation() {
let _this = this;
// 通过 wx.getSetting 先查询一下用户是否授权了 "scope.userLocation" 这个 scope
let wxGetSettinsRes = await wx.getSetting();
if (!wxGetSettinsRes.authSetting['scope.userLocation']) {
// 用户授权
let authRes = await wx.authorize({
scope: 'scope.userLocation'
})
if (authRes && authRes.errMsg.indexOf('ok') != -1) {
// 用户已经同意, 后续调用此接口不会弹窗询问
await _this.wxGetLocation();
} else {
// 用户已经拒绝过授权
let wxOpenSettingRes = await wx.openSetting()
if (wxOpenSettingRes && wxOpenSettingRes.authSetting && wxOpenSettingRes.authSetting['scope.userLocation']) {
await _this.wxGetLocation();
}
}
} else {
await _this.wxGetLocation();
}
},
async wxGetLocation() {
let res = await wx.getLocation({
type: 'gcj02'
})
if (!res || !res.latitude) {
return;
}
let areaRes = await this.baiduGetLoacation(res.latitude, res.longitude);
areaRes = areaRes.data;
if (areaRes) {
let areaArr = [areaRes.provinceArea, areaRes.cityArea, areaRes.countryArea];
// let areaArr = [areaRes.cityArea, areaRes.countryArea];
let curLocation = {
area: areaArr,
updateTimes: new Date().getTime()
}
uni.setStorageSync('curLocation', curLocation);
}
},
async storageLocation(res) {
let areaRes = await this.baiduGetLoacation(res.latitude, res.longitude);
areaRes = areaRes.data;
if (areaRes) {
let areaArr = [areaRes.provinceArea, areaRes.cityArea, areaRes.countryArea];
// let areaArr = [areaRes.cityArea, areaRes.countryArea];
let curLocation = {
area: areaArr,
updateTimes: new Date().getTime()
}
uni.setStorageSync('curLocation', curLocation);
}
},
async getCurArea() {
try{
let curLocation = uni.getStorageSync('curLocation');
if (curLocation && curLocation.updateTimes) {
let curTimes = new Date().getTime();
let deltaSeconds = curTimes - curLocation.updateTimes;
if (deltaSeconds >= 15 * 60 * 1000) {
// 设定重新获取定位的时间间隔为15分钟
await this.wxGetLocation();
curLocation = uni.getStorageSync('curLocation');
}
} else {
await this.wxGetLocation();
curLocation = uni.getStorageSync('curLocation');
}
if (curLocation && curLocation.area) {
return curLocation.area;
}
}catch(e){
console.error(e)
}
return null;
},
async baiduGetLoacation(latitude, longitude) {
let res = await uni.request({
url: '/tool/baidu/getLocation',
method: 'POST',
data: {
location: latitude + ',' + longitude
}
})
return res[1].data;
},
async login(phoneNumber) {
const _this = this;
// uni.getUserInfo({
// provider: 'weixin',
// withCredentials: true,
// lang: 'zh_CN',
// success: async (obj) => {
// console.log(obj);
// }})
// let userInfo = await wx.getUserProfile({
// desc: '用于小程序登录'
// });
// console.log(userInfo)
let userInfo;
// 获取微信登录凭证
const wxLoginRes = await wx.login();
// 获取openid
const wxAuthRes = await uni.request({
url: '/wx/auth',
header: {
code: wxLoginRes.code
}
})
const openId = wxAuthRes[1].data.data.openid;
// 第一次从服务端获取用户信息
let wxGetUserRes = await this.qryUserInfo(openId);
// 获取失败则获取微信信息再调用注册接口
if (!wxGetUserRes.data && wxGetUserRes.code === 0) {
// 注册完成后再次从服务端获取用户信息
let registerRes = await this.registerUser({
openId: openId,
name: "微信用户",
customerLogoUrl: "https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132",
status: 0,
account: phoneNumber,
phone: phoneNumber
});
if (registerRes.code === 0) {
wxGetUserRes = await this.qryUserInfo(openId);
}
}
if (!wxGetUserRes.data) {
userInfo = null;
} else {
userInfo = {
...wxGetUserRes.data,
wxLoginCode: wxLoginRes.code
}
}
if (!userInfo || userInfo.customerId == null || userInfo.customerId == undefined) {
uni.showToast({
icon: 'none',
title: '微信用户信息获取失败,请退出小程序重试'
})
return false;
}
// 页面存储用户登录有效信息,以便其他页面调用
uni.setStorageSync('userProfile', userInfo);
return true;
},
async storageExistUser() {
uni.setStorageSync('userProfile', {});
// 获取微信登录凭证
const wxLoginRes = await wx.login();
// 获取openid
const wxAuthRes = await uni.request({
url: '/wx/auth',
header: {
code: wxLoginRes.code
}
})
const openId = wxAuthRes[1].data.data.openid;
// 从服务端获取用户信息
let wxGetUserRes = await this.qryUserInfo(openId);
let userInfo = null;
if (wxGetUserRes.data) {
userInfo = {
...wxGetUserRes.data,
wxLoginCode: wxLoginRes.code
}
}
uni.setStorageSync('userProfile', userInfo);
},
async registerUser(params = {}) {
let res = await uni.request({
url: '/wx/addUser',
method: 'POST',
data: params
})
return res[1].data;
},
async qryUserInfo(openId) {
let res = await uni.request({
url: '/wx/getUserInfo',
method: 'POST',
data: {
openId: openId
}
})
return res[1].data;
},
async qryUserPhone(code) {
let res = await uni.request({
url: '/wx/auth/phone',
method: 'GET',
header: {
code: code
}
})
return res[1].data;
},
async updateUser(params = {}) {
let res = await uni.request({
url: '/customer/update',
method: 'POST',
data: params
})
// 更新用户信息的方法顺便更新本地缓存
if (res[1].data.code === 0) {
let userInfo = this.getCurUserInfo();
let wxGetUserRes = await this.qryUserInfo(userInfo.openId);
let newUserInfo;
if (wxGetUserRes.data) {
newUserInfo = {
...wxGetUserRes.data,
wxLoginCode: userInfo.wxLoginCode
}
}
uni.setStorageSync('userProfile', newUserInfo);
}
return res[1].data;
},
async storagePhoneIntoUserInfo(code) {
let phoneRes = await this.qryUserPhone(code);
if (phoneRes && phoneRes.msg === '获取手机号码异常') {
uni.showToast({
icon: 'none',
title: '请先确认登录微信号是否已绑定手机号'
})
return false;
}
if (phoneRes && phoneRes.data) {
await this.login(phoneRes.data)
// let userInfo = this.getCurUserInfo();
// await this.updateUser({
// customerId: userInfo.customerId,
// account: phoneRes.data,
// phone: phoneRes.data
// })
return true;
}
},
wxLogin() {
return wx.login();
},
getCurUserInfo() {
let userProfile = uni.getStorageSync('userProfile');
return userProfile;
},
async refreshCurUserCache() {
let newUserInfo = await this.getCurUserNoCache();
uni.setStorageSync('userProfile', newUserInfo);
},
async getCurUserNoCache() {
let userInfo = this.getCurUserInfo();
let wxGetUserRes = await this.qryUserInfo(userInfo.openId);
if (!wxGetUserRes.data) {
userInfo = null;
} else {
userInfo = {
...wxGetUserRes.data,
wxLoginCode: userInfo.wxLoginCode
}
}
return userInfo;
},
getProductCategories(params = {}) {
return uni.request({
url: '/goods/deptcategory/app/list',
method: 'POST',
data: params
})
},
getChooseCategories(params = {}) {
const res = uni.request({
url: '/customer/selection/listNoPage',
method: 'POST',
data: params
})
return res;
},
qryProductPage(params = {}) {
return uni.request({
url: '/goods/goods/app/list',
method: 'POST',
data: params,
header: {
pageNum: params.pageNum,
pageSize: params.pageSize
}
})
},
async placeOrder(params = {}) {
let res = await uni.request({
url: '/order/server/app',
method: 'POST',
data: params
})
return res[1].data;
},
async getWxPayParams(params = {}) {
let res = await uni.request({
url: '/pay/wx/lite',
method: 'POST',
header: {
code: params.code,
orderMasterCode: params.orderMasterCode
}
})
return res[1].data;
},
async getAddressList(params = {}) {
let res = await uni.request({
url: '/customer/address/list',
method: 'POST',
data: params
})
return res[1].data;
},
async addAddressList(params = {}) {
let res = await uni.request({
url: '/customer/address/insert',
method: 'POST',
data: params
})
return res[1].data;
},
async editAddressList(params = {}) {
let res = await uni.request({
url: '/customer/address/update',
method: 'POST',
data: params
})
return res[1].data;
},
async delAddressList(customerAddressId) {
let res = await uni.request({
url: '/customer/address/delete',
method: 'POST',
data: {
customerAddressId: customerAddressId
},
header: {
'content-type': 'application/x-www-form-urlencoded'
}
})
return res[1].data;
},
async areaListByStep(params = {
parentCode: null
}) {
let res = await uni.request({
url: '/system/area/app/list',
method: 'POST',
data: params
})
return res[1].data;
},
async listByStepWithAllNode(params = {
goodsCategoryId: null
}) {
let res = await uni.request({
url: '/goods/deptcategory/app/listByStep',
method: 'POST',
data: params
})
return res[1].data;
},
async listByStep(params = {
goodsCategoryId: null
}) {
let res = await uni.request({
url: '/goods/deptcategory/listByStep',
method: 'POST',
data: params
})
return res[1].data;
},
async uploadFile(filePath) {
let res = await uni.uploadFile({
url: this.address + '/tool/qiniu/upload',
filePath: filePath,
name: 'uploadFile'
})
let resStr = res[1].data;
let resObj = null;
if (resStr != null && resStr.length > 0) {
try {
resObj = JSON.parse(resStr);
} catch(e) {
console.log(e)
}
}
if (!resObj || resObj.code !== 0) {
uni.showToast({
icon: 'error',
title: '上传失败'
})
return '';
}
return resObj.url;
},
// async qryOrderGoodsPage(params = {}) {
// let res = await uni.request({
// url: '/order/goods/list',
// method: 'POST',
// data: params,
// header: {
// pageNum: params.pageNum,
// pageSize: params.pageSize
// }
// })
// return res[1].data;
// },
async bindBankCard(params) {
let res = await uni.request({
url: '/customer/bankcard/bind',
method: 'POST',
data: params
})
return res[1].data;
},
async getBindBankCardByCustomerId(params) {
let res = await uni.request({
url: '/customer/bankcard/getByCustomerId',
method: 'POST',
data: params
})
return res[1].data;
},
async getGoodsDetail(params) {
let res = await uni.request({
url: '/goods/goods/getDetail',
method: 'POST',
data: params
})
return res[1].data.data;
},
async qryFinancialCount(params = {}) {
let res = await uni.request({
url: '/financial/detail/count',
method: 'POST',
data: params
})
return res[1].data;
},
async qryFinancialDetail(params = {}) {
let res = await uni.request({
url: '/financial/detail/app/listV2',
method: 'POST',
data: params
})
return res[1].data;
},
async qryOrderPage(params = {}) {
let res = await uni.request({
url: '/order/master/app/list',
method: 'POST',
data: params,
header: {
pageNum: params.pageNum,
pageSize: params.pageSize
}
})
return res[1].data;
},
async countOrderList(params = {}) {
let res = await uni.request({
url: '/order/master/app/count',
method: 'POST',
data: params
})
return res[1].data;
},
async updateOrder(params = {}) {
let res = await uni.request({
url: '/order/master/editOrderMaster',
method: 'POST',
data: params
})
return res[1].data;
},
async updateMasterAddress(params = {}) {
let res = await uni.request({
url: '/order/master/updateMasterAddress',
method: 'POST',
data: params
})
return res[1].data;
},
async cancelMasterOrder(params = {}) {
let res = await uni.request({
url: '/order/master/cancel',
method: 'POST',
data: {
orderMasterId: params.orderMasterId
},
header: {
'content-type': 'application/x-www-form-urlencoded'
}
})
return res[1].data;
},
async getHotGoods(params = {}) {
let res = await uni.request({
url: '/goods/goods/hot/list',
method: 'POST',
data: params,
header: {
pageNum: params.pageNum,
pageSize: params.pageSize
}
})
return res[1].data;
},
async getHotCategory(params = {}) {
let res = await uni.request({
url: '/goods/deptcategory/app/hot/category',
method: 'POST',
data: params
})
return res[1].data;
},
async getOrderMasterDetail(params = {}) {
let res = await uni.request({
url: '/order/master/app/detail',
method: 'POST',
data: params
})
return res[1].data;
},
async getWorkerList(params = {}, pageNum, pageSize) {
let res = await uni.request({
url: `/worker/app/list?pageNum=${pageNum}&pageSize=${pageSize}`,
method: 'POST',
data: params
})
return res[1].data;
},
async getWorkerAllDetailById(params = {}) {
let res = await uni.request({
url: '/worker/getDetailById',
method: 'POST',
data: params
})
return res[1].data;
},
async getUnlimitedWxacode(params = {}) {
let res = await uni.request({
url: '/wx/unlimited/wxacode',
method: 'POST',
data: params
})
return res[1].data;
},
async sendVertifyCode(params = {}) {
let res = await uni.request({
url: '/tool/sms/send',
method: 'POST',
data: params
})
return res[1].data;
},
async addCustomerPlace(params = {}) {
let res = await uni.request({
url: '/customer/place/app/add',
method: 'POST',
data: params
})
return res[1].data;
},
async getCustomerPlaceList(params = {}) {
let res = await uni.request({
url: '/customer/place/app/list',
method: 'POST',
data: params
})
return res[1].data;
},
async qryCustomerList(params = {}) {
let res = await uni.request({
url: '/customer/app/list',
method: 'POST',
data: params,
header: {
pageNum: params.pageNum,
pageSize: params.pageSize
}
})
return res[1].data;
},
async getDetailListByMasterId(params = {}) {
let res = await uni.request({
url: '/order/master/app/getDetailListByMasterId',
method: 'POST',
data: params.orderMasterId
})
return res[1].data;
},
async getAfterList(params = {}) {
let res = await uni.request({
url: '/order/master/after/list',
method: 'POST',
data: params
})
return res[1].data;
},
async countAfterList(params = {}) {
let res = await uni.request({
url: '/order/master/after/count',
method: 'POST',
data: params
})
return res[1].data;
},
async addAfterServiceRecord(params = {}) {
let res = await uni.request({
url: '/worker/record/add',
method: 'POST',
data: params,
header: {
pageNum: params.pageNum,
pageSize: params.pageSize
}
})
return res[1].data;
},
async delAfterServiceRecord(ids) {
let res = await uni.request({
url: '/worker/record/remove',
method: 'POST',
data: {
ids: ids
},
header: {
'content-type': 'application/x-www-form-urlencoded'
}
})
return res[1].data;
},
async getOrderAfterServiceRecords(params = {}) {
let res = await uni.request({
url: '/worker/record/app/list',
method: 'POST',
data: params
})
return res[1].data;
},
async editAfterServiceRecord(params = {}) {
let res = await uni.request({
url: '/worker/record/edit',
method: 'POST',
data: params,
header: {
pageNum: params.pageNum,
pageSize: params.pageSize
}
})
return res[1].data;
},
async getChangeOrderPrice(params = {}) {
let res = await uni.request({
url: '/order/detail/app/getChangePrice',
method: 'POST',
data: params
})
return res[1].data;
},
async addCustomerSelection(params = {}) {
let res = await uni.request({
url: '/customer/selection/app/add',
method: 'POST',
data: params
})
return res[1].data;
},
async getMembersWaitingApproval(params = {}) {
let res = await uni.request({
url: '/customer/place/app/myCustomerPlace',
method: 'POST',
data: params
})
return res[1].data;
},
async editCustomerPlace(params = {}) {
let res = await uni.request({
url: '/customer/place/app/edit',
method: 'POST',
data: params
})
return res[1].data;
},
// 添加急报记录
async addWarnRecord(params = {}) {
let res = await uni.request({
url: '/warn/record/app/add',
method: 'POST',
data: params
})
return res[1].data;
}
}