From f559da991ee918dd2836d2b242abd0ed85e2f7b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=90=E6=98=8E=E6=98=8E?= Date: Mon, 30 Nov 2020 15:23:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=81=E8=8E=B7=E5=AE=A2=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E7=8F=AD=E6=9C=AC=E6=8E=A5=E5=8F=A3=E6=96=B9=E6=B3=95=E7=AD=89?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 142 +++++++++++++++++++- apis/err.js | 62 +++++++++ apis/index.js | 13 ++ apis/interfaces/auth.js | 13 ++ apis/interfaces/file.js | 12 ++ apis/request.js | 111 +++++++++++++++ apis/updateToken.js | 17 +++ app.js | 0 app.json | 13 ++ app.wxss | 2 + components/loginLayer/loginLayer.js | 43 ++++++ components/loginLayer/loginLayer.json | 4 + components/loginLayer/loginLayer.wxml | 14 ++ components/loginLayer/loginLayer.wxss | 70 ++++++++++ components/loginLayer/userInfoLayer_img.png | Bin 0 -> 20686 bytes pages/shortVideo/shortVideo.js | 21 +++ pages/shortVideo/shortVideo.json | 3 + pages/shortVideo/shortVideo.wxml | 2 + pages/shortVideo/shortVideo.wxss | 1 + project.config.json | 72 ++++++++++ 20 files changed, 613 insertions(+), 2 deletions(-) create mode 100644 apis/err.js create mode 100644 apis/index.js create mode 100644 apis/interfaces/auth.js create mode 100644 apis/interfaces/file.js create mode 100644 apis/request.js create mode 100644 apis/updateToken.js create mode 100644 app.js create mode 100644 app.json create mode 100644 app.wxss create mode 100644 components/loginLayer/loginLayer.js create mode 100644 components/loginLayer/loginLayer.json create mode 100644 components/loginLayer/loginLayer.wxml create mode 100644 components/loginLayer/loginLayer.wxss create mode 100644 components/loginLayer/userInfoLayer_img.png create mode 100644 pages/shortVideo/shortVideo.js create mode 100644 pages/shortVideo/shortVideo.json create mode 100644 pages/shortVideo/shortVideo.wxml create mode 100644 pages/shortVideo/shortVideo.wxss create mode 100644 project.config.json diff --git a/README.md b/README.md index 7f19d85..65b9e55 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,141 @@ -# AGuestSaas -企获客Saas \ No newline at end of file +# 企获客(SAAS) + +## 1. 项目目录 + +***apis*** + : 统一的请求工厂处理 + + |--- interfaces //接口工厂 + | |--- auth.js //授权接口模块 + | |--- file.js //上传接口 + |--- index.js //统一接口路由出口 + |--- request.js //请求方法 + |--- updateToken.hs //token更新 + |--- err.js //错误处理 + +***static*** + : 静态资源目录 + + |--- imgs //图片 + |--- icon //图标 + +***components*** + : 项目组件目录 + +***pages*** + : 页面路由 + +## 2. 使用apis接口方法 + +***统一用法*** : 在app.js 中引入api方法,使用wx.$方法挂载全局 + + //app.js + //全局引用apis + import apis from "./apis/index" + + onLaunch(){ + //挂载api方法 + wx.$api = apis + } + + //pages.js + function () { + wx.$api...().then(res=>{ + //成功回调 + }).cathc(err=>{ + //失败回调 + }) + } + +***按需引用*** : 按需要引用 + + //pages.js + import apis from "./apis/index" + + function () { + apis...().then(res=>{ + //成功回调 + }).cathc(err=>{ + //失败回调 + }) + } + +***多个接口同时回调*** : 面需多个接口同时返回信息时可使用ES6 Promise All回调方法 + +``` +let api1 = wx.$api.{moduleName}.{apiName}(obj) + api2 = wx.$api.{moduleName}.{apiName}(obj) + api3 = wx.$api.{moduleName}.{apiName}(obj) + +Promise.all([api1, api2, api3]).then(res=>{ + //请求回调成功 +}).cathc(err=>{ + //请求回调失败 +}) +``` + +## 3. 请求方法描述 + +> api全局请求方法参数说明: + +| 请求参数 | 是否必填 | 数据类型 | 数据说明 | +|:-------:|:-------:|:-------:|:---------:| +| method | 否 | String | 请求方式,默认为GET | +| url | 是 | String | 接口url地址 | +| data | 否 | Obj | 需要发送的请求数据 | + +> 请求方法模块用法 + +``` +import {req} from "../request" + +const apiName = (obj) => req({ + //请求参数 +}) + +export default({ + apiName +}) +``` + +## 4. 上传方法描述 + +> api全局请求方法参数说明: + +| 请求参数 | 是否必填 | 数据类型 | 数据说明 | +|:-------:|:-------:|:-------:|:---------:| +| url | 是 | String | 上传接口url地址 | +| key | 是 | String | 文件对应的 key | +| path | 是 | String | 上传文件的临时路径,可通过wx.chooseImage获得图片临时路径 | +| data | 否 | Obj | 需要发送的请求数据 | + +> 方法模块用法 + +``` +import {upload} from "../request" + +const apiName = (fileUrl, keyName, data) => upload({ + url : "...", //api上传接口 + key : keyName, //上传key + path: fileUrl, //上传路径 + data: data //fromData +}) + + +export default({ + apiName +}) +``` + +> 接口用法 + +``` +wx.$api.file.uploadImg(fileUrl, keyName, { + //data +}).then(res=>{ + //上传成功 +}).cathc(err=>{ + //上传失败 +}) +``` diff --git a/apis/err.js b/apis/err.js new file mode 100644 index 0000000..4de4bb8 --- /dev/null +++ b/apis/err.js @@ -0,0 +1,62 @@ + +/** + * 处理错误信息 + * @property {Object} errInfo + */ + +const errInfo = (obj) =>{ + if(obj.status_code == 401){ + wx.showModal({ + title : "登录提示", + content : "长时间未操作,登录已过期,请重新登录", + confirmColor: "#2d6bf6", + confirmText : "立即登录", + cancelText : "返回首页", + cancelColor : "#aeafb1", + success : res=>{ + // 清理客户端登录缓存 + wx.removeStorageSync("token") + if(res.confirm){ + wx.navigateTo({ + url: "/pages/login/login", + }) + //转跳到登录页面 + }else if(res.cancel){ + //考虑是否增加一个跳转首页的操作 + wx.redirectTo({ + url: "/pages/index/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 +} diff --git a/apis/index.js b/apis/index.js new file mode 100644 index 0000000..54a0317 --- /dev/null +++ b/apis/index.js @@ -0,0 +1,13 @@ + +/* + * 接口路由 + */ + +import file from "./interfaces/file" +import auth from "./interfaces/auth" + + +export default{ + file, + auth +} diff --git a/apis/interfaces/auth.js b/apis/interfaces/auth.js new file mode 100644 index 0000000..27acc98 --- /dev/null +++ b/apis/interfaces/auth.js @@ -0,0 +1,13 @@ + +/* + * 授权 + */ +import {req} from "../request" + +const authPhone = data => req({url: "auth/mini", method: "POST", data: data}) //登录 +const authInfo = data => req({url: "auth/mini/info", method: "POST", data: data}) //完善用户信息 + +export default({ + authPhone, + authInfo +}) diff --git a/apis/interfaces/file.js b/apis/interfaces/file.js new file mode 100644 index 0000000..6992234 --- /dev/null +++ b/apis/interfaces/file.js @@ -0,0 +1,12 @@ + +/* + * 公用接口 + */ + +import {upload} from "../request" + +const uploadImg = (imgPaht, data) => upload({url: "storage", key: "image", path: imgPaht, data: data}) //上传图片 + +export default({ + uploadImg +}) diff --git a/apis/request.js b/apis/request.js new file mode 100644 index 0000000..904f9bc --- /dev/null +++ b/apis/request.js @@ -0,0 +1,111 @@ + +import {errInfo} from './err' +import {updToken} from './updateToken' + +// 请求方式配置 +const api = "https://mi-org.cnskl.com/api/" +const header = { + "Accept": "application/json" +} + +/** + * 请求 + * @property {Object} req + */ + +const req = (obj) => { + // header + header.Authorization = wx.getStorageSync("token") || "" + // 处理请求信息 + return new Promise((resolve, reject) => { + wx.showLoading({ + title: "加载中..", + mask: true + }) + wx.request({ + url : api + obj.url, + header : header, + method : obj.method || 'GET', + data : obj.data || {}, + success : res => { + wx.hideLoading(); + // 更新token + if (res.header.Authorization) updToken(res.header.Authorization) + // 处理信息 + if (res.data.status_code == 200) { + resolve(res.data.data) + } else { + if (res.data.status_code == 401 || res.data.status_code == 400) { + reject({ + login : false, + codeBeen: false + }) + } + errInfo(res.data) + } + }, + fail: err => { + wx.showToast({ + title : err.errMsg, + icon : "none" + }) + reject(err) + } + }) + }) +} + +/** + * 上传 + * @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 +} \ No newline at end of file diff --git a/apis/updateToken.js b/apis/updateToken.js new file mode 100644 index 0000000..8207d76 --- /dev/null +++ b/apis/updateToken.js @@ -0,0 +1,17 @@ + +/** + * 更新token + * @property {String} updToken + */ + +const updToken = (token) =>{ + // 更新全局存储器 + getApp().globalData.token = token + // 更新客户端登录缓存 + wx.setStorageSync('token', token) +} + +module.exports = { + updToken +} + diff --git a/app.js b/app.js new file mode 100644 index 0000000..e69de29 diff --git a/app.json b/app.json new file mode 100644 index 0000000..ff49914 --- /dev/null +++ b/app.json @@ -0,0 +1,13 @@ +{ + "pages": [ + "pages/shortVideo/shortVideo" + ], + "window": { + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "navigationBarTitleText": "小程序", + "backgroundColor": "#eeeeee", + "backgroundTextStyle": "light", + "enablePullDownRefresh": false + } +} \ No newline at end of file diff --git a/app.wxss b/app.wxss new file mode 100644 index 0000000..139597f --- /dev/null +++ b/app.wxss @@ -0,0 +1,2 @@ + + diff --git a/components/loginLayer/loginLayer.js b/components/loginLayer/loginLayer.js new file mode 100644 index 0000000..4f08f71 --- /dev/null +++ b/components/loginLayer/loginLayer.js @@ -0,0 +1,43 @@ + +/** + * Web唐明明 + * 一个梦想做木雕手艺人的程序员 + * explain: userInfoLayer + */ + +Component({ + /** + * 组件的属性列表 + */ + properties: { + showLayer: { + type : Boolean, + value : false + } + }, + + /** + * 组件的方法列表 + */ + methods: { + userInfo(info){ + if(info.detail.errMsg == "getUserInfo:ok"){ + wx.$api.auth.authInfo({ + nickname: info.detail.userInfo.nickName, + avatar : info.detail.userInfo.avatarUrl + }).then(()=>{ + this.triggerEvent("updateinfo", true) + this.setData({ + showLayer: false + }) + }) + }else{ + wx.showToast({ + title: '拒绝了授权', + icon : 'none' + }) + this.triggerEvent("updateinfo", false) + } + } + } +}) diff --git a/components/loginLayer/loginLayer.json b/components/loginLayer/loginLayer.json new file mode 100644 index 0000000..7e37c03 --- /dev/null +++ b/components/loginLayer/loginLayer.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/loginLayer/loginLayer.wxml b/components/loginLayer/loginLayer.wxml new file mode 100644 index 0000000..64473d2 --- /dev/null +++ b/components/loginLayer/loginLayer.wxml @@ -0,0 +1,14 @@ + + + + + + + + 完善信息 + 获取您的公开信息(头像,昵称等),完善平台信息 + + + + + diff --git a/components/loginLayer/loginLayer.wxss b/components/loginLayer/loginLayer.wxss new file mode 100644 index 0000000..96b978a --- /dev/null +++ b/components/loginLayer/loginLayer.wxss @@ -0,0 +1,70 @@ + +/** + * Web唐明明 + * 一个梦想做木雕手艺人的程序员 + */ + +.layer-back, +.layer-content{ + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.layer-back{ + z-index: 999; + background-color: rgba(0, 0, 0, .3); +} + +.layer-content{ + z-index: 1000; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-box-pack: center; + text-align: center; + padding-bottom: 100rpx; + box-sizing: border-box; +} + +.layer-content-block{ + background-color: white; + width: 500rpx; + display: inline-block; + border-radius: 8rpx; + box-sizing: border-box; + overflow: hidden; +} + +.layer-content-img{ + width: 100%; + vertical-align: top; +} + +.layer-content-mian{ + padding: 40rpx; +} + +.layer-content-title{ + font-weight: bold; + font-size: 38rpx; + line-height: 90rpx; +} + +.layer-content-btn[size="default"]{ + background-color: #0c0047; + color: white; + width: 100%; + height: 90rpx; + line-height: 90rpx; + border-radius: 0; + font-size: 34rpx; + padding: 0; +} + +.layer-content-text{ + padding-bottom: 40rpx; + font-size: 30rpx; + color: #afafaf; +} diff --git a/components/loginLayer/userInfoLayer_img.png b/components/loginLayer/userInfoLayer_img.png new file mode 100644 index 0000000000000000000000000000000000000000..6c2e8260fe70dbe8bafcd8089de383f670c1fb65 GIT binary patch literal 20686 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 + console.log(res) + }) + } +}) diff --git a/pages/shortVideo/shortVideo.json b/pages/shortVideo/shortVideo.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/shortVideo/shortVideo.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/shortVideo/shortVideo.wxml b/pages/shortVideo/shortVideo.wxml new file mode 100644 index 0000000..940687f --- /dev/null +++ b/pages/shortVideo/shortVideo.wxml @@ -0,0 +1,2 @@ + +pages/shortVideo/shortVideo.wxml diff --git a/pages/shortVideo/shortVideo.wxss b/pages/shortVideo/shortVideo.wxss new file mode 100644 index 0000000..55ac4ea --- /dev/null +++ b/pages/shortVideo/shortVideo.wxss @@ -0,0 +1 @@ +/* pages/shortVideo/shortVideo.wxss */ \ No newline at end of file diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..dd38798 --- /dev/null +++ b/project.config.json @@ -0,0 +1,72 @@ +{ + "description": "项目配置文件", + "packOptions": { + "ignore": [] + }, + "setting": { + "urlCheck": true, + "es6": true, + "enhance": false, + "postcss": true, + "preloadBackgroundData": false, + "minified": true, + "newFeature": false, + "coverView": true, + "nodeModules": false, + "autoAudits": false, + "showShadowRootInWxmlPanel": true, + "scopeDataCheck": false, + "uglifyFileName": false, + "checkInvalidKey": true, + "checkSiteMap": true, + "uploadWithSourceMap": true, + "compileHotReLoad": false, + "useMultiFrameRuntime": false, + "useApiHook": true, + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "enableEngineNative": false, + "bundle": false, + "useIsolateContext": true, + "useCompilerModule": true, + "userConfirmedUseCompilerModuleSwitch": false, + "userConfirmedBundleSwitch": false, + "packNpmManually": false, + "packNpmRelationList": [], + "minifyWXSS": true + }, + "compileType": "miniprogram", + "libVersion": "2.14.1", + "appid": "wxd931d03dfe955254", + "projectname": "miniprogram-1", + "debugOptions": { + "hidedInDevtools": [] + }, + "scripts": {}, + "isGameTourist": false, + "simulatorType": "wechat", + "simulatorPluginLibVersion": {}, + "condition": { + "search": { + "list": [] + }, + "conversation": { + "list": [] + }, + "game": { + "list": [] + }, + "plugin": { + "list": [] + }, + "gamePlugin": { + "list": [] + }, + "miniprogram": { + "list": [] + } + } +} \ No newline at end of file