From a0df240aaf8314b7ca2c916d6c264de0fb17786e Mon Sep 17 00:00:00 2001 From: dzq Date: Thu, 6 Nov 2025 15:23:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=94=A8=E6=88=B7):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E7=A0=81=E7=94=9F=E6=88=90=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 DynamicCodeResponse 类型定义 - 添加 generateDynamicCode API 方法 - 在首页登录流程中调用动态码生成接口 --- src/api/users/index.ts | 7 ++++++- src/api/users/types.ts | 8 ++++++++ src/pages/index/index.vue | 10 ++++++++-- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/api/users/index.ts b/src/api/users/index.ts index 985c9e6..46a4a48 100644 --- a/src/api/users/index.ts +++ b/src/api/users/index.ts @@ -1,5 +1,5 @@ import { http } from "@/http/http"; -import type { CurrentUserResponseData, WxUserDTO } from './types'; +import type { CurrentUserResponseData, WxUserDTO, DynamicCodeResponse } from './types'; /** 获取当前登录用户详情 */ export async function getCurrentUserApi() { @@ -8,4 +8,9 @@ export async function getCurrentUserApi() { export async function mpCodeToOpenId(code: string) { return await http.get("wx/mpCodeToOpenId", { code }); +} + +/** 根据openid获取动态码 */ +export async function generateDynamicCode(openid: string) { + return await http.get("wx/generateDynamicCode", { openid }); } \ No newline at end of file diff --git a/src/api/users/types.ts b/src/api/users/types.ts index 678ed47..a3536b8 100644 --- a/src/api/users/types.ts +++ b/src/api/users/types.ts @@ -26,4 +26,12 @@ export interface WxUserDTO { updateTime?: string; /** 备注 */ remark?: string; +} + +/** 动态码响应数据 */ +export interface DynamicCodeResponse { + /** 动态码 */ + dynamicCode: string; + /** 有效时间(分钟) */ + validityMinutes: string; } \ No newline at end of file diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index f534c60..8de7686 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -6,7 +6,7 @@ import { useCartStore } from '@/pinia/stores/cart' import { getShopListApi } from '@/api/shop' import type { ShopEntity } from '@/api/shop/types' import ProductContainer from './components/product-container.vue'; -import { mpCodeToOpenId } from '@/api/users' +import { generateDynamicCode, mpCodeToOpenId } from '@/api/users' import { toHttpsUrl } from '@/utils' definePage({ @@ -32,7 +32,13 @@ onMounted(async () => { provider: 'weixin', //使用微信登录 success: function (loginRes) { mpCodeToOpenId(loginRes.code).then((wxUser) => { - console.log('wxUser:', wxUser) + console.log('wxUser:', wxUser); + wxStore.setOpenid(wxUser.data.openid); + generateDynamicCode(wxUser.data.openid).then((dynamicCode) => { + console.log('dynamicCode:', dynamicCode); + }).catch((e) => { + console.error('generateDynamicCode error:', e) + }) }).catch((e) => { console.error('mpCodeToOpenId error:', e) })