From c8c56690fa3a696668a63c5d995e19d52a8a4c39 Mon Sep 17 00:00:00 2001 From: XiaoXinPro 14 IAH5R <568170040@qq.com> Date: Fri, 21 Apr 2023 17:45:33 +0800 Subject: [PATCH] upload --- miniprogram/app.js | 62 ++++++++-- miniprogram/app.json | 3 +- miniprogram/pages/index/index.js | 74 ++++++++--- miniprogram/pages/index/index.json | 1 + miniprogram/pages/index/index.less | 58 ++++++--- miniprogram/pages/index/index.wxml | 32 +++-- miniprogram/pages/payOrder/payOrder.js | 151 +++++++++++++++++++++++ miniprogram/pages/payOrder/payOrder.json | 4 + miniprogram/pages/payOrder/payOrder.less | 26 ++++ miniprogram/pages/payOrder/payOrder.wxml | 13 ++ miniprogram/utils/request.js | 23 +++- project.private.config.json | 3 +- tsconfig.json | 7 +- yarn.lock | 49 -------- 14 files changed, 387 insertions(+), 119 deletions(-) create mode 100644 miniprogram/pages/payOrder/payOrder.js create mode 100644 miniprogram/pages/payOrder/payOrder.json create mode 100644 miniprogram/pages/payOrder/payOrder.less create mode 100644 miniprogram/pages/payOrder/payOrder.wxml diff --git a/miniprogram/app.js b/miniprogram/app.js index dc27188..c545c30 100644 --- a/miniprogram/app.js +++ b/miniprogram/app.js @@ -1,31 +1,69 @@ -// import Request from '../miniprogram/utils/request.js' +const request = require('./utils/request') App({ globalData: { }, onLaunch() { - const appId = 'wxf288a9b8167ff2ca' - // 展示本地存储能力 - const logs = wx.getStorageSync('logs') || [] - logs.unshift(Date.now()) - wx.setStorageSync('logs', logs) - + const that = this // 登录 wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId console.log(res.code) + doLogin(res.code) }, }) - const doLogin = () => { - Request.get({ - url: '/login' + /** + * @description 登录 + * @param {*} loginData {code , appid} + * @returns token , sessionKey , openId + */ + const doLogin = code => { + const data = { + code, + appId: request.appId + } + request.post({ + url: '/api/user/login', + data }).then(res => { - console.log(res); + console.log(res, 'loginSuccess'); + // 存储数据 + request.setHead(res.data.token, res.data.tenantId) + wx.setStorageSync('sessionKey', res.data.sessionKey) + that.globalData.sessionKey = res.data.sessionKey + wx.setStorageSync('openId', res.data.openId) + that.globalData.openId = res.data.openId + wx.setStorageSync('AccessToken', res.data.token) + that.globalData.AccessToken = res.data.token + + // 检查用户信息 + checkUserInfo() }).catch(err => { console.log(err); - wx.showToast() + wx.showToast({ + title: '网络错误,请稍后再试', + icon: 'none' + }) + }) + } + + /** + * @description 检查用户信息 + * @returns userInfo + */ + const checkUserInfo = () => { + request.get({ + url: '/api/user/userinfo' + }).then(res => { + console.log(res, 'userinfo'); + const userInfo = res.data + that.globalData.userInfo = userInfo + // 请求完成后的回调,在index.js中调用防止异步 + that.userInfoCallback(res) + }).catch(err => { + console.log(err, 'err'); }) } }, diff --git a/miniprogram/app.json b/miniprogram/app.json index 362db77..db0131e 100644 --- a/miniprogram/app.json +++ b/miniprogram/app.json @@ -1,7 +1,8 @@ { "pages": [ "pages/index/index", - "pages/logs/logs" + "pages/logs/logs", + "pages/payOrder/payOrder" ], "window": { "backgroundTextStyle": "light", diff --git a/miniprogram/pages/index/index.js b/miniprogram/pages/index/index.js index 44c8f06..e0539fe 100644 --- a/miniprogram/pages/index/index.js +++ b/miniprogram/pages/index/index.js @@ -1,16 +1,14 @@ -// index.ts -// 获取应用实例 const app = getApp() -import Request from '../../utils/request' +import request from '../../utils/request' Page({ data: { - motto: 'Hello World', userInfo: {}, hasUserInfo: false, canIUse: wx.canIUse('button.open-type.getUserInfo'), canIUseGetUserProfile: false, - canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName') // 如需尝试获取用户信息可改为false + canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName'), + isPhone: false }, // 事件处理函数 bindViewTap() { @@ -19,10 +17,12 @@ Page({ }) }, onLoad() { - // @ts-ignore - if (wx.getUserProfile) { - this.setData({ - canIUseGetUserProfile: true + const that = this + app.userInfoCallback = res => { + console.log(res, 'userInfoCallback') + that.setData({ + userInfo: res.data, + isPhone: that.data.userInfo.phone ? true : false }) } @@ -41,13 +41,57 @@ Page({ }) }, + // 获取手机号授权 + getUserPhone(e) { + const sessionKey = wx.getStorageSync('sessionKey') + this.doGetUserPhone(e.detail.encryptedData, e.detail.iv, sessionKey, request.appId) + }, + + /** 获取手机号授权 */ + doGetUserPhone(encryptedData, iv, sessionKey, appId) { + request.post({ + url: '/api/user/getUserPhone', + data: { + encryptedData, + iv, + sessionKey, + appId + } + }).then(res => { + console.log(res, 'getUserPhone'); + wx.showToast({ + title: '申请成功!', + icon: 'success' + }) + this.checkUserInfo() + }).catch(err => { + console.log(err, 'err'); + }) + }, - getUserInfo(e) { - // 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息 - console.log(e) - this.setData({ - userInfo: e.detail.userInfo, - hasUserInfo: true + // 购买会员 + goToBuy() { + const userInfo = JSON.stringify(this.data.userInfo) + wx.navigateTo({ + url: `/pages/payOrder/payOrder?userInfo=${userInfo}`, + }) + }, + + /** + * @description 检查用户信息 + * @returns userInfo + */ + checkUserInfo() { + request.get({ + url: '/api/user/userinfo' + }).then(res => { + console.log(res, 'userinfo'); + this.setData({ + userInfo: res.data, + isPhone: this.data.userInfo.phone ? true : false + }) + }).catch(err => { + console.log(err, 'err'); }) } }) diff --git a/miniprogram/pages/index/index.json b/miniprogram/pages/index/index.json index 8835af0..a860429 100644 --- a/miniprogram/pages/index/index.json +++ b/miniprogram/pages/index/index.json @@ -1,3 +1,4 @@ { + "navigationBarTitleText": "首页", "usingComponents": {} } \ No newline at end of file diff --git a/miniprogram/pages/index/index.less b/miniprogram/pages/index/index.less index eb64203..96c9a73 100644 --- a/miniprogram/pages/index/index.less +++ b/miniprogram/pages/index/index.less @@ -1,19 +1,45 @@ -/**index.wxss**/ -.userinfo { - display: flex; - flex-direction: column; - align-items: center; - color: #aaa; -} +.content { + padding: 50rpx 0; -.userinfo-avatar { - overflow: hidden; - width: 128rpx; - height: 128rpx; - margin: 20rpx; - border-radius: 50%; -} + .logo { + width: 500rpx; + height: 120rpx; + line-height: 120rpx; + text-align: center; + color: #ffffff; + font-size: 50rpx; + background-color: red; + margin: auto; + } -.usermotto { - margin-top: 200px; + .introduction { + width: 600rpx; + height: 900rpx; + background-color: #79f779; + margin: 50rpx auto; + padding-top: 20rpx; + + .title { + text-align: center; + font-size: 45rpx; + color: #585858; + margin-bottom: 40rpx; + } + + .contain { + width: 500rpx; + height: 650rpx; + background-color: #00ffc8; + text-indent: 1cm; + margin: auto; + padding-top: 20rpx; + } + } + + .buttons { + .userPhone { + text-align: center; + margin-bottom: 25rpx; + } + } } \ No newline at end of file diff --git a/miniprogram/pages/index/index.wxml b/miniprogram/pages/index/index.wxml index f00d294..677961f 100644 --- a/miniprogram/pages/index/index.wxml +++ b/miniprogram/pages/index/index.wxml @@ -1,23 +1,19 @@ - - - - - - - - - - - - 请使用1.4.4及以上版本基础库 + + + + 简介 + 正文部分 + + + + - - {{userInfo.nickName}} + 当前用户:{{userInfo.phone}} + - - {{motto}} - - + \ No newline at end of file diff --git a/miniprogram/pages/payOrder/payOrder.js b/miniprogram/pages/payOrder/payOrder.js new file mode 100644 index 0000000..f73b6fd --- /dev/null +++ b/miniprogram/pages/payOrder/payOrder.js @@ -0,0 +1,151 @@ +const app = getApp() +import request from '../../utils/request' + +Page({ + + /** + * 页面的初始数据 + */ + data: { + userInfo: {}, + orderList: [ + { + salePrice: '¥30', + orignPrice: '¥60', + effectiveTime: '30', + show: true + }, + { + salePrice: '¥30', + orignPrice: '¥60', + effectiveTime: '30', + show: false + }, + { + salePrice: '¥30', + orignPrice: '¥60', + effectiveTime: '30', + show: false + }, + { + salePrice: '¥30', + orignPrice: '¥60', + effectiveTime: '30', + show: false + }, + { + salePrice: '¥30', + orignPrice: '¥60', + effectiveTime: '30', + show: false + }, + { + salePrice: '¥30', + orignPrice: '¥60', + effectiveTime: '30', + show: false + }, + ] + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.setData({ + userInfo: JSON.parse(options.userInfo) + }) + }, + + createPayOrder() { + request.post({ + url: '/api/pay/createPayOrder', + data: { + appId: request.appId + } + }).then(res => { + console.log(res, 'createPayOrder'); + this.requestPayment(res.data.data) + }).catch(err => { + console.log(err, 'err'); + }) + }, + + requestPayment(data) { + wx.requestPayment({ + timeStamp: data.timeStamp, + nonceStr: data.nonceStr, + package: data.package, + signType: data.signType ? data.signType : "MD5", + paySign: data.paySign, + success: res => { + wx.showLoading({ + title: '订单正在处理中...', + }) + setTimeout(() => { + wx.hideLoading(); + }, 2000); + }, + fail: res => { + wx.hideLoading(); + wx.showToast({ + title: '支付失败', + icon: 'error' + }) + /** + * 支付失败,需要更新订单的状态 + */ + }, + complete: res => { } + }); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/miniprogram/pages/payOrder/payOrder.json b/miniprogram/pages/payOrder/payOrder.json new file mode 100644 index 0000000..dfa641b --- /dev/null +++ b/miniprogram/pages/payOrder/payOrder.json @@ -0,0 +1,4 @@ +{ + "navigationBarTitleText": "购买会员", + "usingComponents": {} +} \ No newline at end of file diff --git a/miniprogram/pages/payOrder/payOrder.less b/miniprogram/pages/payOrder/payOrder.less new file mode 100644 index 0000000..daa4cf6 --- /dev/null +++ b/miniprogram/pages/payOrder/payOrder.less @@ -0,0 +1,26 @@ +.content { + padding: 50rpx 0; + + .backGround { + width: 600rpx; + height: 200rpx; + line-height: 200rpx; + color: #ffffff; + text-align: center; + font-size: 60rpx; + background-color: red; + margin: auto; + } + + .orderList { + width: 600rpx; + margin: 50rpx auto; + + .btn { + display: inline-block; + width: 280rpx; + margin-right: 22rpx; + margin-top: 20rpx; + } + } +} \ No newline at end of file diff --git a/miniprogram/pages/payOrder/payOrder.wxml b/miniprogram/pages/payOrder/payOrder.wxml new file mode 100644 index 0000000..638813d --- /dev/null +++ b/miniprogram/pages/payOrder/payOrder.wxml @@ -0,0 +1,13 @@ + + + 购买会员 + + + + + + \ No newline at end of file diff --git a/miniprogram/utils/request.js b/miniprogram/utils/request.js index 198e142..5c00436 100644 --- a/miniprogram/utils/request.js +++ b/miniprogram/utils/request.js @@ -1,6 +1,6 @@ const url = 'https://gpttest.malls.iformall.com/C' -class Request { +class request { constructor(address) { if (address) { this.address = address; @@ -18,15 +18,25 @@ class Request { */ headers = { "Content-Type": "application/json;charset=UTF-8", - token: "" + token: "", + tenantId: "" }; /** - * 设置token - * @param {*} token + * @description 设置请求头 + * @param {*} data token , tenantId */ - setToken(token) { + setHead(token, tenantId) { this.headers.token = token; + this.headers.tenantId = tenantId; } + + /** + * @description 小程序appId + * @returns {string} wxf288a9b8167ff2ca + */ + appId = 'wxf288a9b8167ff2ca'; + + /** * @description get * @param {*}param url & param @@ -90,6 +100,7 @@ class Request { }); }); } + /** * 过滤 请求信息 * @param {*} res @@ -117,4 +128,4 @@ class Request { /** 日志 */ log(url, body, headers) { } } -module.exports = new Request(); +module.exports = new request(); diff --git a/project.private.config.json b/project.private.config.json index 5bb8644..851c2d4 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -5,5 +5,6 @@ "compileHotReLoad": true, "urlCheck": false }, - "libVersion": "2.31.0" + "libVersion": "2.31.0", + "condition": {} } \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index e34013a..d3bca3f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -25,7 +25,12 @@ ] }, "include": [ - "./**/*.ts", "miniprogram/app.js", "miniprogram/utils/util.js", "miniprogram/pages/logs/logs.js", "miniprogram/pages/index/index.js", + "./**/*.ts", + "miniprogram/app.js", + "miniprogram/utils/util.js", + "miniprogram/pages/logs/logs.js", + "miniprogram/pages/index/index.js", + "miniprogram/pages/payOrder/payOrder.js", ], "exclude": [ "node_modules" diff --git a/yarn.lock b/yarn.lock index 41dda3d..fb57ccd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,52 +2,3 @@ # yarn lockfile v1 -axios-miniprogram-adapter@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/axios-miniprogram-adapter/-/axios-miniprogram-adapter-0.3.5.tgz#b02fbf61ec8899703c24eaa75fecd384509cacbd" - integrity sha512-ZAudH+aTi0QPIy8IQm26F0nxKoTFa/mNhDfxGkG5ndsQe4RVnyyb6f50tIT13nHtNepAjZo9i+UGmTbke5+lbQ== - dependencies: - axios "^0.19.2" - -axios@0.26.0: - version "0.26.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.0.tgz#9a318f1c69ec108f8cd5f3c3d390366635e13928" - integrity sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og== - dependencies: - follow-redirects "^1.14.8" - -axios@^0.19.2: - version "0.19.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== - dependencies: - follow-redirects "1.5.10" - -debug@=3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - -follow-redirects@^1.14.8: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== - -miniprogram-api-typings@^2.8.3-1: - version "2.12.0" - resolved "https://registry.yarnpkg.com/miniprogram-api-typings/-/miniprogram-api-typings-2.12.0.tgz#7a29c90f3e5efa36588422d1f01e22d3394aaaa1" - integrity sha512-ibvbqeslVFur0IAvTxLMvsbtvVcMo6gwvOnj0YZHV7aeDLu091VQRrETT2QuiG9P6aZWRcxeNGJChRKVPCp9VQ== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==