合成照相馆小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
photo_uniapp/config/api.js

285 lines
7.9 KiB

const md5 = require('./md5.js');
const ENV = require('./env.js');
var api = {
/**
* post 请求数据
*
* @param string urlName url地址
* @param {object} data 数据对象
* @param function thenFun then回调
* @param function catchFun catch回调
*/
post:function(urlName, data, thenFun,catchFun) {
//数据组合
var newData = Object.assign(api.setSign(data), ENV.appData());
uni.$u.http.post(urlName, newData).then(res => {
if(thenFun) thenFun(res);
}).catch((rs) =>{
if(catchFun) catchFun(rs);
});
},
/**
* oss上传图片
*
* @param string fileBaseUrl url地址
* @param string scene //对应文件配置file->file_type列表类型
* "back_icon": "后端图标",
"back_small": "后端小图",
"back_centre": "后端中图",
"back_max": "后端大图",
"user_small": "用户端小图",
"user_centre": "用户端中图",
"user_max": "用户端大图",
"user_portrait": "用户面部模型"
* @param {object} data 数据对象 {filePath:'',fileType:'image'}
* @param function thenFun then回调
* @param function catchFun catch回调
*/
ossUpload:function(fileBaseUrl,scene,data,ossthenFun,osscatchFun){
//从http://tmp/IX45zGr8kI1Tb1fd2c2b3045e9bfce734869d2024805.png 中
//提取 IX45zGr8kI1Tb1fd2c2b3045e9bfce734869d2024805.png 文件名
var fileNameArr = fileBaseUrl.split('//tmp/');
console.log(fileNameArr);
//获取文件名
var fileName = fileNameArr[1];
//获取文件格式
var suffixArr = fileName.split('.');
var suffix = suffixArr[1];
//先获取oss签名
api.post('api/aliSignature',{
scene:scene,
appoint:1,
filename:fileName,
},function(res){
console.log('签名成功',res);
var ossConfig = res;
data.ossConfig = ossConfig;
api.upload(ossConfig.host,data,function(rs){
var file_url = ossConfig.dir ? ossConfig.dir + (fileName ? '/' + fileName : '') : ossConfig.key;
file_url = `/${file_url}`;
//console.log(file_url);
rs.data.file_url = file_url;
console.log('上传成功',rs);
if(ossthenFun) ossthenFun(rs);
},function(er){
console.log('上传失败',er);
if(osscatchFun) osscatchFun(er);
});
},function(err){
console.log('签名失败',err);
if(osscatchFun) osscatchFun(err);
});
},
/**
* get 请求数据
*
* @param string urlName url地址
* @param {object} data 数据对象
* @param function thenFun then回调
* @param function catchFun catch回调
*/
get:function(urlName, data, thenFun,catchFun) {
//数据组合
var newData = data;
uni.$u.http.get(urlName,{params:newData}).then(res => {
if(thenFun) thenFun(res);
}).catch((rs) =>{
if(catchFun) catchFun(rs);
});
},
/**
* put 请求数据
*
* @param string urlName url地址
* @param {object} data 数据对象
* @param function thenFun then回调
* @param function catchFun catch回调
*/
put:function(urlName, data, thenFun,catchFun) {
//数据组合
var newData = Object.assign(api.setSign(data), ENV.appData());
uni.$u.http.put(urlName, newData).then(res => {
if(thenFun) thenFun(res);
}).catch((rs) =>{
if(catchFun) catchFun(rs);
});
},
/**
* delete 请求数据
*
* @param string urlName url地址
* @param {object} data 数据对象
* @param function thenFun then回调
* @param function catchFun catch回调
*/
delete:function(urlName, data, thenFun,catchFun) {
//数据组合
var newData = Object.assign(api.setSign(data), ENV.appData());
uni.$u.http.delete(urlName, newData).then(res => {
if(thenFun) thenFun(res);
}).catch((rs) =>{
if(catchFun) catchFun(rs);
});
},
/**
* upload 请求数据
*
* @param string urlName url地址
* @param {object} data 数据对象 {filePath:'',fileType:'image'}
* @param function thenFun then回调
* @param function catchFun catch回调
*/
upload:function(urlName, data, thenFun,catchFun){
var newData = data;
var formData = {};
console.log('判断是否存在',data.hasOwnProperty('ossConfig'))
if(data.hasOwnProperty('ossConfig'))
{
var ossConfig = data.ossConfig;
var fileNameOss = ossConfig.fileName;
var key = ossConfig.dir ? ossConfig.dir + (fileNameOss ? '/' + fileNameOss : '') : ossConfig.key;
var newFormData ={
key: key,
OSSAccessKeyId: ossConfig.accessId,
policy: ossConfig.policy, // 输入你获取的的policy
success_action_status: '200', // 让服务端返回200,不然,默认会返回204
signature: ossConfig.signature, // 输入你获取的的signature
};
formData = newFormData;
}
uni.$u.http.upload(urlName, {
params: {}, /* 会加在url上 */
// #ifdef MP-ALIPAY
fileType: newData.fileType, // 仅支付宝小程序,且必填。image/video/audio
// #endif
filePath: newData.filePath, // 要上传文件资源的路径。
// 注:如果局部custom与全局custom有同名属性,则后面的属性会覆盖前面的属性,相当于Object.assign(全局,局部)
custom: {auth:true,toast:true,}, // 可以加一些自定义参数,在拦截器等地方使用。比如这里我加了一个auth,可在拦截器里拿到,如果true就传token
name: 'file', // 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
// #ifdef H5 || APP-PLUS
timeout: 60000, // H5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+)
// #endif
header: {
"Content-Type": "multipart/form-data"
}, /* 会与全局header合并,如有同名属性,局部覆盖全局 */
formData: formData, // HTTP 请求中其他额外的 form data
// 返回当前请求的task, options。请勿在此处修改options。非必填
getTask: (task, options) => {
console.log(options);
task.onProgressUpdate((res) => {
console.log('上传进度' + res.progress);
console.log('已经上传的数据长度' + res.totalBytesSent);
console.log('预期需要上传的数据总长度' + res.totalBytesExpectedToSend);
});
},
}).then(res => {
console.log('upload then success !!!',res);
if(thenFun) thenFun(res);
}).catch((rs) =>{
console.log('upload catch err !!!',rs);
if(catchFun) catchFun(rs);
});
},
setSign:function(data) {
const date = parseInt(new Date().getTime() / 1000);
const str = date + 'xingzhi&&2021';
data.i_app_timestamp = date;
data.i_app_key = md5(str);
//判断登录 openid 和 unionid 的来源
// #ifdef APP-PLUS
data.i_app_platform = 'APP-PLUS';
// #endif
// #ifdef MP
//微信小程序
// #ifdef MP-WEIXIN
data.i_app_platform = 'MP-WEIXIN';
// #endif
//支付宝小程序
// #ifdef MP-ALIPAY
data.i_app_platform = 'MP-ALIPAY';
// #endif
//百度小程序
// #ifdef MP-BAIDU
data.i_app_platform = 'MP-BAIDU';
// #endif
//头条小程序
// #ifdef MP-TOUTIAO
data.i_app_platform = 'MP-TOUTIAO';
// #endif
//QQ小程序
// #ifdef MP-QQ
data.i_app_platform = 'MP-QQ';
// #endif
//360小程序
// #ifdef MP-360
data.i_app_platform = 'MP-360';
// #endif
// #endif
// #ifdef H5
data.i_app_platform = 'H5';
// #endif
//语言包
data.i_app_lang ='zh';
//系统
data.i_app_system = uni.getStorageSync('app_system');
//这里是token 如果登录每个接口都需要这个
const token = uni.getStorageSync('token');
if(token.length > 0)
{
data.token = token;
}
return data;
},
/**
* 返回域名
*
*/
domain:function() {
return ENV.CdnUrl;
},
/**
* 返回接口地址
*
*/
api:function() {
return ENV.ApiUrl;
},
/**
* 返回接口环境
*
*/
env:function(){
return ENV.EnvShow;
},
/**
* oss 地址
*
*/
ossurl(url){
const app_config = uni.getStorageSync('app_config');
return app_config.public_url + url;
},
}
module.exports = api;