From e3927b546ae44555df9dba8b82aec2d6da37eb4b Mon Sep 17 00:00:00 2001 From: callmeyan Date: Mon, 28 Nov 2022 15:52:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E9=A6=96=E9=A1=B5=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E6=93=8D=E4=BD=9C=E5=8F=8A=E7=94=A8=E6=88=B7=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- miniprogram/app.ts | 21 +++++- miniprogram/pages/index/index.ts | 31 +++++++-- miniprogram/pages/index/index.wxml | 2 +- miniprogram/pages/personal/personal.ts | 87 ++++++++---------------- miniprogram/pages/personal/personal.wxml | 4 +- miniprogram/pages/sign/index.ts | 4 +- miniprogram/pages/types.d.ts | 27 ++++++-- miniprogram/service/shop-api.ts | 16 +++++ miniprogram/service/user-api.ts | 10 ++- miniprogram/utils/message.ts | 9 ++- miniprogram/utils/request.ts | 7 +- typings/index.d.ts | 2 +- 12 files changed, 138 insertions(+), 82 deletions(-) diff --git a/miniprogram/app.ts b/miniprogram/app.ts index 1f78daf..0b4548a 100644 --- a/miniprogram/app.ts +++ b/miniprogram/app.ts @@ -1,3 +1,5 @@ +import { info } from "./service/user-api"; + // app.ts App({ globalData: {}, @@ -6,6 +8,23 @@ App({ const token = wx.getStorageSync('user-token') if (token) { this.globalData.token = token; + info().then(userinfo => { + this.globalData.userInfo = userinfo; + }) + }else{ + wx.login({ + success:(e)=>{ + if(e.code){ + console.log(e) + info(e.code).then(userinfo => { + if(userinfo.token){ + wx.setStorageSync("user-token",userinfo.token) + } + this.globalData.userInfo = userinfo; + }) + } + } + }) } - }, + } }) \ No newline at end of file diff --git a/miniprogram/pages/index/index.ts b/miniprogram/pages/index/index.ts index 504f7d3..0c974d7 100644 --- a/miniprogram/pages/index/index.ts +++ b/miniprogram/pages/index/index.ts @@ -1,9 +1,10 @@ // index.ts -import { queryGoodsList } from "../../service/shop-api" +import { createOrder, Goods, queryGoodsList } from "../../service/shop-api" +import message from "../../utils/message"; // 获取应用实例 -// const app = getApp() +const app = getApp() Page({ data: { swiperList: [ @@ -39,7 +40,7 @@ Page({ onReachBottom() { if (!this.data.hasMore) return; const page = this.data.page + 1; - this.setData({page}) + this.setData({ page }) this.loadGoodsList(page) }, loadGoodsList(page: number) { @@ -53,10 +54,11 @@ Page({ hasMore: false }) } + const originList = page == 1 ? [] : this.data.goodsItems; this.setData({ // @ts-ignore goodsItems: [ - ...this.data.goodsItems, + ...originList, ...result.records ] }) @@ -73,5 +75,26 @@ Page({ }) // 所有其他的商品 this.loadGoodsList(this.data.page); + }, + createOrder(e) { + if(!app.globalData.token){ + // message.toast('请先完成登录','none',()=>{ + // }) + + wx.switchTab({ + url: '/pages/personal/personal' + }) + return false; + } + const goods = e.target.dataset.data as Goods; + message.showLoading({ message: '兑换中...' }) + createOrder(goods.id).then(result => { + console.log(result) + message.toast('兑换成功') + }).catch(e => { + message.toast(e.message || '兑换失败') + }).finally(() => { + message.hideLoading() + }) } }) diff --git a/miniprogram/pages/index/index.wxml b/miniprogram/pages/index/index.wxml index 6f4dfb9..e4aa6a5 100644 --- a/miniprogram/pages/index/index.wxml +++ b/miniprogram/pages/index/index.wxml @@ -68,7 +68,7 @@ {{item.price}}积分 - + diff --git a/miniprogram/pages/personal/personal.ts b/miniprogram/pages/personal/personal.ts index ec311b1..092f9ac 100644 --- a/miniprogram/pages/personal/personal.ts +++ b/miniprogram/pages/personal/personal.ts @@ -1,66 +1,35 @@ // pages/personal.ts + +import message from "../../utils/message"; + +const app = getApp(); Page({ - /** - * 页面的初始数据 - */ - data: { + /** + * 页面的初始数据 + */ + data: { + userinfo: app.globalData.userInfo + }, - }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad() { + this.setData({ + userinfo: app.globalData.userInfo + }) + }, + onLogin() { + if(this.data.userinfo) return; + // TODO 完成登录 + message.toast("开始登录") + } - /** - * 生命周期函数--监听页面加载 - */ - onLoad() { + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { - }, - - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady() { - - }, - - /** - * 生命周期函数--监听页面显示 - */ - onShow() { - - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide() { - - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload() { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh() { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom() { - - }, - - /** - * 用户点击右上角分享 - */ - onShareAppMessage() { - - } + } }) \ No newline at end of file diff --git a/miniprogram/pages/personal/personal.wxml b/miniprogram/pages/personal/personal.wxml index cccfacf..a04c26f 100644 --- a/miniprogram/pages/personal/personal.wxml +++ b/miniprogram/pages/personal/personal.wxml @@ -8,10 +8,10 @@ - 张三 + {{userinfo?userinfo.nickname:'请点击登录'}} - 1,121 + {{userinfo?.pointInfo?.totalPoint}} diff --git a/miniprogram/pages/sign/index.ts b/miniprogram/pages/sign/index.ts index 98f96a3..1b5cad9 100644 --- a/miniprogram/pages/sign/index.ts +++ b/miniprogram/pages/sign/index.ts @@ -1,5 +1,5 @@ import message from "../../utils/message" -import { info, sign } from "../../service/user-api" +import { signInfo, sign } from "../../service/user-api" // pages/sign/index.ts Page({ @@ -25,7 +25,7 @@ Page({ * 生命周期函数--监听页面加载 */ onLoad() { - info().then(res=>{ + signInfo().then(res=>{ this.setData(res) }) }, diff --git a/miniprogram/pages/types.d.ts b/miniprogram/pages/types.d.ts index 9f10663..b9a9259 100644 --- a/miniprogram/pages/types.d.ts +++ b/miniprogram/pages/types.d.ts @@ -1,5 +1,24 @@ -type UserInfo = { - id: number - nickname: string - headImage: string +interface PointInfo { + uid: number; + totalPoint: number; + validPoint: number; + expirePoint: number; + expireTime?: any; + updateTime: string; +} + +interface UserInfo { + id: number; + openId?: string; + nickname: string; + headImage: string; + gender: number; + province: string; + city: string; + parentId: number; + firstLoginTime: string; + updateTime?: any; + status: number; + token?: string + pointInfo: PointInfo; } \ No newline at end of file diff --git a/miniprogram/service/shop-api.ts b/miniprogram/service/shop-api.ts index 07fb2a1..ee1e7b5 100644 --- a/miniprogram/service/shop-api.ts +++ b/miniprogram/service/shop-api.ts @@ -18,6 +18,17 @@ export type Goods = { updateTime: string; status: number; } +export type OrderInfo = { + id: string; + gid: number; + price: number; + count: number; + uid: number; + data?: any; + createTime?: any; + updateTime?: any; + status: number; +} export function queryGoodsList(category: number, page = 1, pageSize = 10) { return request>('/shop/goods/query', { @@ -25,4 +36,9 @@ export function queryGoodsList(category: number, page = 1, pageSize = 10) { page, pageSize }, 'GET'); +} +export function createOrder(goodsId: number, buyCount = 1) { + return request('/shop/order/create', { + goodsId, buyCount + }); } \ No newline at end of file diff --git a/miniprogram/service/user-api.ts b/miniprogram/service/user-api.ts index 47367fe..d72f9b5 100644 --- a/miniprogram/service/user-api.ts +++ b/miniprogram/service/user-api.ts @@ -8,12 +8,18 @@ export type SignInfo = { /** * 签到信息 */ -export function info(){ +export function signInfo() { return request('/sign/info'); } /** * 签到 */ -export function sign(){ +export function sign() { return request('/sign/today'); +} +/** + * 用户信息 + */ +export function info(code: string = '') { + return request('/user/info', { code }, "GET"); } \ No newline at end of file diff --git a/miniprogram/utils/message.ts b/miniprogram/utils/message.ts index ca73d54..9984cb1 100644 --- a/miniprogram/utils/message.ts +++ b/miniprogram/utils/message.ts @@ -1,10 +1,13 @@ import { BizError } from "./request"; type ToastIcon = 'success' | 'error' | 'none'; -export function toast(message: string|any, icon: ToastIcon = 'none') { - if(message instanceof BizError){ +export function toast(message: string | any, icon: ToastIcon = 'none', callback: (() => void) | null = null) { + if (message instanceof BizError) { message = message.message } + if (callback) { + setTimeout(callback, 2000); + } return wx.showToast({ title: message, duration: 2000, @@ -17,7 +20,7 @@ export function showLoading({ message = '加载中...', mask = true }) { mask }) } -export function hideLoading(){ +export function hideLoading() { wx.hideLoading() } diff --git a/miniprogram/utils/request.ts b/miniprogram/utils/request.ts index d06a593..5052957 100644 --- a/miniprogram/utils/request.ts +++ b/miniprogram/utils/request.ts @@ -31,8 +31,9 @@ function request(api: string, data: any = null, method: HttpMethod = 'POST') const header: { [key: string]: string } = {} + const app = getApp(); // 判断是否有token - const token = getApp().globalData.token + const token = app ? app.globalData.token : wx.getStorageSync('user-token') if (token) { // 如果有token 添加token头 header.token = token } @@ -61,8 +62,8 @@ function request(api: string, data: any = null, method: HttpMethod = 'POST') // 验证接口是否正确 if (result.code !== 0) { if (result.code === 403) { - wx.navigateTo({ - url: '/pages/user/login' + wx.switchTab({ + url: '/pages/personal/personal' }) return; } diff --git a/typings/index.d.ts b/typings/index.d.ts index a21af67..3011c86 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -2,7 +2,7 @@ interface IAppOption { globalData: { - userInfo?: WechatMiniprogram.UserInfo, + userInfo?: UserInfo, token?: string } userInfoReadyCallback?: WechatMiniprogram.GetUserInfoSuccessCallback,