[水感应客户端最新]
This commit is contained in:
49
api/err.js
Normal file
49
api/err.js
Normal file
@@ -0,0 +1,49 @@
|
||||
|
||||
/**
|
||||
* 处理错误信息
|
||||
* @property {Object} errInfo
|
||||
*/
|
||||
|
||||
const errInfo = (obj) =>{
|
||||
if(obj.status_code == 401){
|
||||
// 清理客户端登录缓存
|
||||
// wx.removeStorageSync("")
|
||||
wx.removeStorage({
|
||||
key : "token",
|
||||
success: () => {
|
||||
wx.navigateTo({
|
||||
url: "/pages/login/index",
|
||||
})
|
||||
}
|
||||
})
|
||||
}else if(obj.status_code == 422){
|
||||
wx.showToast({
|
||||
title: obj.message,
|
||||
icon : "none"
|
||||
})
|
||||
}else if(obj.status_code == 400 || obj.status_code == 0){
|
||||
wx.showToast({
|
||||
title: obj.message,
|
||||
icon : "none"
|
||||
})
|
||||
}else if(obj.status_code == 404){
|
||||
wx.showToast({
|
||||
title: "接口地址不存在,请联系系统管理员",
|
||||
icon : "none"
|
||||
})
|
||||
}else if(obj.status_code == 500){
|
||||
wx.showToast({
|
||||
title: "服务端:" + obj.message,
|
||||
icon : "none"
|
||||
})
|
||||
}else {
|
||||
wx.showToast({
|
||||
title: "code:" + obj.status_code + ", msg:" + obj.message,
|
||||
icon : "none"
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
errInfo
|
||||
}
|
||||
39
api/index.js
Normal file
39
api/index.js
Normal file
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* 手太欠
|
||||
* 愿这世界都如故事里一样 美好而动人~
|
||||
*/
|
||||
|
||||
// 授权登录
|
||||
import auth from "./interfaces/auth"
|
||||
|
||||
// 图片上传
|
||||
import file from "./interfaces/file"
|
||||
|
||||
// 皮肤健康知识
|
||||
import health from "./interfaces/health"
|
||||
|
||||
// 首页
|
||||
import index from "./interfaces/index"
|
||||
|
||||
// 产品
|
||||
import mall from "./interfaces/mall"
|
||||
|
||||
// 订单
|
||||
import order from "./interfaces/order"
|
||||
|
||||
// 地址管理
|
||||
import site from "./interfaces/site"
|
||||
|
||||
// 个人中心
|
||||
import user from "./interfaces/user"
|
||||
|
||||
export default {
|
||||
auth,
|
||||
file,
|
||||
health,
|
||||
index,
|
||||
mall,
|
||||
order,
|
||||
site,
|
||||
user
|
||||
}
|
||||
38
api/interfaces/auth.js
Normal file
38
api/interfaces/auth.js
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* 手太欠
|
||||
* 愿这世界都如故事里一样 美好而动人~
|
||||
*/
|
||||
|
||||
import { req } from "../request"
|
||||
|
||||
//验证码登录
|
||||
const login = data => req({
|
||||
url: "user/socialite/login/wechat/mini",
|
||||
method: "POST",
|
||||
data: data
|
||||
})
|
||||
|
||||
//获取openid
|
||||
const codeOpenid = data => req({
|
||||
url: "user/auth/mini_openid",
|
||||
data: data
|
||||
})
|
||||
|
||||
//更新基本信息
|
||||
const userAdd = data => req({
|
||||
url: "user/setting/update_info",
|
||||
method: "POST",
|
||||
data: data
|
||||
})
|
||||
|
||||
//隐私+协议
|
||||
const registeragree = (website) => req({
|
||||
url: "cms/pages/" + website
|
||||
})
|
||||
|
||||
export default ({
|
||||
login,
|
||||
codeOpenid,
|
||||
userAdd,
|
||||
registeragree
|
||||
})
|
||||
17
api/interfaces/file.js
Normal file
17
api/interfaces/file.js
Normal file
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* 图图片上传公用接口
|
||||
*/
|
||||
import { upload } from "../request"
|
||||
|
||||
//图上传
|
||||
const uploadImg = (imgPaht, data) => upload({
|
||||
url: "storage/upload",
|
||||
method: "POST",
|
||||
key: "upload",
|
||||
path: imgPaht,
|
||||
data: data
|
||||
})
|
||||
|
||||
export default ({
|
||||
uploadImg
|
||||
})
|
||||
68
api/interfaces/health.js
Normal file
68
api/interfaces/health.js
Normal file
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* 手太欠
|
||||
* 愿这世界都如故事里一样 美好而动人~
|
||||
*/
|
||||
|
||||
import { req } from "../request"
|
||||
|
||||
// 健康分类
|
||||
const healthNav = () => req({
|
||||
url: "cms/categories"
|
||||
})
|
||||
|
||||
// 健康列表
|
||||
const healthList = data => req({
|
||||
url: "cms/articles",
|
||||
data: data
|
||||
})
|
||||
|
||||
// 健康详情
|
||||
const healthSee = (article_id) => req({
|
||||
url: "cms/articles/" + article_id
|
||||
})
|
||||
|
||||
// 健康收藏
|
||||
const favorite = (article_id) => req({
|
||||
url: "cms/articles/favorite/" + article_id
|
||||
})
|
||||
|
||||
// 健康点赞
|
||||
const subscribe = (article_id) => req({
|
||||
url: "cms/articles/subscribe/" + article_id
|
||||
})
|
||||
|
||||
// 我的-健康收藏
|
||||
const myFavorite = data => req({
|
||||
url: "user/favorites",
|
||||
data: data
|
||||
})
|
||||
|
||||
// 我的-健康点赞
|
||||
const mySubscribe = data => req({
|
||||
url: "user/subscriptions",
|
||||
data: data
|
||||
|
||||
})
|
||||
|
||||
// 我的-检测结果列表
|
||||
const aiList = data => req({
|
||||
url: "ai/images",
|
||||
data: data
|
||||
})
|
||||
|
||||
// 我的-检测结果
|
||||
const aiSee = (image_id) => req({
|
||||
url: "ai/images/" + image_id
|
||||
})
|
||||
|
||||
export default ({
|
||||
healthNav,
|
||||
healthList,
|
||||
healthSee,
|
||||
favorite,
|
||||
subscribe,
|
||||
myFavorite,
|
||||
mySubscribe,
|
||||
aiList,
|
||||
aiSee
|
||||
})
|
||||
41
api/interfaces/index.js
Normal file
41
api/interfaces/index.js
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* 手太欠
|
||||
* 愿这世界都如故事里一样 美好而动人~
|
||||
*/
|
||||
|
||||
import { req, upload } from "../request"
|
||||
|
||||
// 是否可以检测
|
||||
const analyze = () => req({
|
||||
url: "ai/skin/analyze"
|
||||
})
|
||||
|
||||
// 创建检测订单
|
||||
const skinOrder = () => req({
|
||||
url : "ai/skin/order",
|
||||
method: "POST",
|
||||
})
|
||||
|
||||
// 检测订单支付
|
||||
const skinPay = (order_id, data) => req({
|
||||
url : "ai/pay/" + order_id + "/wechat",
|
||||
data: data,
|
||||
})
|
||||
|
||||
// 皮肤检测
|
||||
const skinEnter = (data, path) => {
|
||||
return upload({
|
||||
url : "ai/skin/analyze",
|
||||
key : "image",
|
||||
path : path,
|
||||
data : data,
|
||||
method : "POST",
|
||||
})
|
||||
}
|
||||
|
||||
export default ({
|
||||
analyze,
|
||||
skinOrder,
|
||||
skinPay,
|
||||
skinEnter
|
||||
})
|
||||
65
api/interfaces/mall.js
Normal file
65
api/interfaces/mall.js
Normal file
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* 手太欠
|
||||
* 愿这世界都如故事里一样 美好而动人~
|
||||
*/
|
||||
|
||||
import { req } from "../request"
|
||||
|
||||
// 产品首页
|
||||
const mallIndex = () => req({
|
||||
url: "mall"
|
||||
})
|
||||
|
||||
// 产品列表
|
||||
const mallList = data => req({
|
||||
url: "mall/goods",
|
||||
data: data
|
||||
})
|
||||
|
||||
// 产品详情
|
||||
const mallSee = (goods) => req({
|
||||
url: "mall/goods/" + goods
|
||||
})
|
||||
|
||||
// 产品下单
|
||||
const mallPlace = data => req({
|
||||
url: "mall/buy/goods",
|
||||
data: data
|
||||
})
|
||||
|
||||
// 产品下单提交
|
||||
const mallAffirm = data => req({
|
||||
url: "mall/buy/goods",
|
||||
data: data,
|
||||
method: "POST",
|
||||
})
|
||||
|
||||
// 产品支付
|
||||
const mallPay = (order_no, data) => req({
|
||||
url: "mall/pay/" + order_no + "/wechat",
|
||||
data: data
|
||||
})
|
||||
|
||||
// 绑定邀请码
|
||||
const levelBind = (data) => req({
|
||||
url: "user/bind",
|
||||
data: data,
|
||||
method: "POST",
|
||||
})
|
||||
|
||||
// 我的兑换券
|
||||
const mycoupon = (data) => req({
|
||||
url: "coupons",
|
||||
data: data
|
||||
})
|
||||
|
||||
export default ({
|
||||
mallIndex,
|
||||
mallList,
|
||||
mallSee,
|
||||
mallPlace,
|
||||
mallAffirm,
|
||||
mallPay,
|
||||
levelBind,
|
||||
mycoupon
|
||||
})
|
||||
50
api/interfaces/order.js
Normal file
50
api/interfaces/order.js
Normal file
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* 手太欠
|
||||
* 愿这世界都如故事里一样 美好而动人~
|
||||
*/
|
||||
|
||||
import { req } from "../request"
|
||||
|
||||
// 订单首页
|
||||
const list = data => req({
|
||||
url : "mall/orders",
|
||||
data: data
|
||||
})
|
||||
|
||||
// 订单详情
|
||||
const goodsDet = (order_no) => req({
|
||||
url : "mall/orders/" + order_no
|
||||
})
|
||||
|
||||
// 订单取消
|
||||
const goodsCancel = (order_no) => req({
|
||||
url : "mall/orders/" + order_no + "/cancel",
|
||||
method: "PUT"
|
||||
})
|
||||
|
||||
// 订单删除
|
||||
const goodsDel = (order_no) => req({
|
||||
url : "mall/orders/" + order_no,
|
||||
method: "DELETE"
|
||||
})
|
||||
|
||||
// 订单签收
|
||||
const goodsSign = (order_no) => req({
|
||||
url : "mall/orders/" + order_no + "/sign",
|
||||
method: "PUT"
|
||||
})
|
||||
|
||||
// 快递100-免费
|
||||
const kuaiDi = (data) => req({
|
||||
url : "mall/orders/express",
|
||||
data: data
|
||||
})
|
||||
|
||||
export default ({
|
||||
list,
|
||||
goodsDet,
|
||||
goodsCancel,
|
||||
goodsDel,
|
||||
goodsSign,
|
||||
kuaiDi
|
||||
})
|
||||
58
api/interfaces/site.js
Normal file
58
api/interfaces/site.js
Normal file
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* 手太欠
|
||||
* 愿这世界都如故事里一样 美好而动人~
|
||||
*/
|
||||
|
||||
import { req } from "../request"
|
||||
|
||||
// 收获地址(列表)
|
||||
const siteList = () => req({
|
||||
url: "mall/addresses"
|
||||
})
|
||||
|
||||
// 省市区-获取
|
||||
const create = data => req({
|
||||
url: "mall/addresses/create",
|
||||
data: data
|
||||
})
|
||||
|
||||
// 新增地址
|
||||
const siteAdd = data => req({
|
||||
url: "mall/addresses",
|
||||
data: data,
|
||||
method: 'POST'
|
||||
})
|
||||
|
||||
// 地址详细
|
||||
const siteSee = (address) => req({
|
||||
url: "mall/addresses/" + address
|
||||
})
|
||||
|
||||
// 编辑地址
|
||||
const siteEdit = (address, data) => req({
|
||||
url: "mall/addresses/" + address,
|
||||
data: data,
|
||||
method: 'PUT'
|
||||
})
|
||||
|
||||
// 删除地址
|
||||
const siteDel = (address) => req({
|
||||
url: "mall/addresses/" + address,
|
||||
method: 'DELETE'
|
||||
})
|
||||
|
||||
// 设置默认地址
|
||||
const siteDefault = (address) => req({
|
||||
url: "mall/addresses/" + address + "/default",
|
||||
method: 'POST'
|
||||
})
|
||||
|
||||
export default ({
|
||||
siteList,
|
||||
create,
|
||||
siteAdd,
|
||||
siteSee,
|
||||
siteEdit,
|
||||
siteDel,
|
||||
siteDefault
|
||||
})
|
||||
49
api/interfaces/user.js
Normal file
49
api/interfaces/user.js
Normal file
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* 手太欠
|
||||
* 愿这世界都如故事里一样 美好而动人~
|
||||
*/
|
||||
|
||||
import { req } from "../request"
|
||||
|
||||
// 用户中心
|
||||
const userIndex = () => req({
|
||||
url: "user"
|
||||
})
|
||||
|
||||
// 用户设置
|
||||
const userSetup = () => req({
|
||||
url: "user/setting"
|
||||
})
|
||||
|
||||
//修改用户信息
|
||||
const setting = (key, data) => req({
|
||||
url: "user/setting/" + key,
|
||||
method: "PUT",
|
||||
data: data
|
||||
})
|
||||
|
||||
// 我的推广码
|
||||
const invitesCode = data => req({
|
||||
url: "user/invite",
|
||||
data: data
|
||||
})
|
||||
|
||||
// 小程序码
|
||||
const miniShare = data => req({
|
||||
url: "user/mini_share",
|
||||
data: data
|
||||
})
|
||||
|
||||
// 帮助分类
|
||||
const helpsNav = () => req({
|
||||
url: "cms/categories/helps"
|
||||
})
|
||||
|
||||
export default ({
|
||||
userIndex,
|
||||
userSetup,
|
||||
setting,
|
||||
invitesCode,
|
||||
miniShare,
|
||||
helpsNav
|
||||
})
|
||||
139
api/request.js
Normal file
139
api/request.js
Normal file
@@ -0,0 +1,139 @@
|
||||
/*
|
||||
* 手太欠
|
||||
* 愿这世界都如故事里一样 美好而动人~
|
||||
*/
|
||||
|
||||
import {errInfo} from './err'
|
||||
import {updToken} from './updateToken'
|
||||
|
||||
// 请求方式配置
|
||||
// https://api.shui.shuiganying.com/api //正式地址
|
||||
// https://shuitest.shuiganying.com/api //测试地址
|
||||
// wx6bd4fcc040bfa025 正式appid
|
||||
// wx3056ec23196eaf02 测试appid
|
||||
const api = "https://api.shui.shuiganying.com/api/" // 正式环境
|
||||
// const api = "https://shuitest.shuiganying.com/api/" // 测试环境
|
||||
const header = {
|
||||
"Accept" : "application/json"
|
||||
}
|
||||
let isToken = true
|
||||
|
||||
/**
|
||||
* 请求
|
||||
* @property {Object} req
|
||||
*/
|
||||
|
||||
const req = (obj, noToken) => {
|
||||
// 检查是否无需要token
|
||||
if(noToken != undefined){
|
||||
isToken = noToken
|
||||
}
|
||||
|
||||
// header
|
||||
if(obj.token){
|
||||
header.Authorization = obj.token || ''
|
||||
} else {
|
||||
header.Authorization = wx.getStorageSync("token") || ""
|
||||
}
|
||||
|
||||
// 处理请求信息
|
||||
return new Promise((resolve, reject) => {
|
||||
// 组合header
|
||||
obj.header = {
|
||||
"Accept" : "application/json",
|
||||
"channel" : "client",
|
||||
"Authorization" : wx.getStorageSync("token") || ""
|
||||
}
|
||||
if(!isToken){
|
||||
obj.header.Authorization = ''
|
||||
}
|
||||
wx.request({
|
||||
url : api + obj.url,
|
||||
header : obj.header || {},
|
||||
method : obj.method || 'GET',
|
||||
data : obj.data || {},
|
||||
success : res => {
|
||||
// 更新token
|
||||
if (res.header.Authorization) updToken(res.header.Authorization)
|
||||
// 处理信息
|
||||
if (res.data.status_code == 200) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
if (res.data.status_code == 401 || res.data.status_code == 400) {
|
||||
reject({
|
||||
login : false,
|
||||
codeBeen: false
|
||||
})
|
||||
}
|
||||
reject(res)
|
||||
errInfo(res.data)
|
||||
}
|
||||
},
|
||||
fail: err => {
|
||||
wx.showToast({
|
||||
title : err.errMsg,
|
||||
icon : "none"
|
||||
})
|
||||
reject(err)
|
||||
},
|
||||
complete(){
|
||||
if(!isToken) isToken = true
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 上传
|
||||
* @property {Object} upload
|
||||
*/
|
||||
|
||||
const upload = (obj) => {
|
||||
// header
|
||||
header.Authorization = wx.getStorageSync("token") || ""
|
||||
// 处理上传信息
|
||||
return new Promise((resolve, reject) => {
|
||||
wx.showLoading({
|
||||
title: "上传中..",
|
||||
mask: true
|
||||
})
|
||||
wx.uploadFile({
|
||||
url : api + obj.url,
|
||||
header : header,
|
||||
name : obj.key || "",
|
||||
filePath: obj.path || "",
|
||||
formData: obj.data || {},
|
||||
success : res=>{
|
||||
wx.hideLoading();
|
||||
// 处理返回值
|
||||
let jsonData = JSON.parse(res.data)
|
||||
// 更新token
|
||||
if (res.header.Authorization) updToken(res.header.Authorization)
|
||||
// 处理信息
|
||||
if (jsonData.status_code == 200) {
|
||||
resolve(jsonData.data)
|
||||
} else {
|
||||
if (jsonData.status_code == 401) {
|
||||
reject({
|
||||
login: false
|
||||
})
|
||||
}
|
||||
errInfo(jsonData)
|
||||
}
|
||||
},
|
||||
fail : err=>{
|
||||
wx.showToast({
|
||||
title : err.errMsg,
|
||||
icon : "none"
|
||||
})
|
||||
reject(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
req,
|
||||
upload
|
||||
}
|
||||
21
api/updateToken.js
Normal file
21
api/updateToken.js
Normal file
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* 手太欠
|
||||
* 愿这世界都如故事里一样 美好而动人~
|
||||
*/
|
||||
|
||||
/**
|
||||
* 更新token
|
||||
* @property {String} updToken
|
||||
*/
|
||||
|
||||
const updToken = (token) =>{
|
||||
// 更新全局存储器
|
||||
getApp().globalData.token = token
|
||||
// 更新客户端登录缓存
|
||||
wx.setStorageSync('token', token)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
updToken
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user