配置智能柜锁

This commit is contained in:
dqz 2025-03-21 17:00:06 +08:00
parent a42638c17b
commit 52a0b9761b
8 changed files with 146 additions and 18 deletions

4
.env
View File

@ -1,10 +1,10 @@
# 所有环境的环境变量(命名必须以 VITE_ 开头)
## 项目标题
VITE_APP_TITLE = 微商店
VITE_APP_TITLE = 借还柜
## 路由模式 hash 或 html5
VITE_ROUTER_HISTORY = hash
## 是否开启 console 调试工具
VITE_CONSOLE = true
VITE_CONSOLE = false

View File

@ -52,7 +52,7 @@
],
"marscode.chatLanguage": "cn",
"marscode.codeCompletionPro": {
"enableCodeCompletionPro": true
"enableCodeCompletionPro": false
},
"marscode.enableInlineCommand": true
}

View File

@ -1,5 +1,5 @@
import { request } from "@/http/axios"
import { ShopGoodsResponseData, SubmitOrderRequestData, SubmitOrderResponseData } from './type'
import { GetOrdersByOpenIdDTO, ShopGoodsResponseData, SubmitOrderRequestData, SubmitOrderResponseData } from './type'
import { GetOpenIdRequestParams } from './type'
@ -22,9 +22,17 @@ export function submitOrderApi(data: SubmitOrderRequestData) {
/** 获取微信openid */
export function getOpenIdApi(params: GetOpenIdRequestParams) {
return request<string>({
return request<ApiResponseData<string>>({
url: "payment/getOpenId",
method: "get",
params // 使用params传递code参数对应Java的@RequestParam
params
})
}
/** 根据openid获取用户订单信息 */
export function getOrdersByOpenIdApi(openid: string) {
return request<ApiResponseData<GetOrdersByOpenIdDTO>>({
url: `order/user/${openid}`,
method: "get"
})
}

View File

@ -38,8 +38,7 @@ export interface WxJsApiPreCreateResponse {
appId: string
timeStamp: string
nonceStr: string
/** @JsonProperty("package") */
packageValue: string
package: string
signType: string
paySign: string
}
@ -47,3 +46,29 @@ export interface WxJsApiPreCreateResponse {
export interface GetOpenIdRequestParams {
code: string
}
export interface ShopOrderEntity {
orderId: number
openid: string
totalAmount: number
status: number
payStatus: number
paymentMethod: string
payTime: string
}
export interface ShopOrderGoodsEntity {
orderGoodsId: number
orderId: number
goodsId: number
quantity: number
price: number
totalAmount: number
status: number
}
export interface GetOrdersByOpenIdDTO {
orders: ShopOrderEntity[]
orderGoods: ShopOrderGoodsEntity[]
goods: Goods[]
}

View File

@ -0,0 +1,74 @@
<script setup lang="ts">
import { useRouter } from 'vue-router'
import { useRoute } from 'vue-router'
const router = useRouter()
const route = useRoute()
const orderId = route.query.orderId as any
function backToHome() {
router.push('/')
}
</script>
<template>
<div class="success-container">
<van-nav-bar title="支付成功" left-arrow @click-left="backToHome" />
<div class="content-wrapper">
<van-cell-group class="success-info">
<van-cell title="订单号" :value="orderId" class="orderid-cell" />
</van-cell-group>
<div class="action-buttons">
<van-button
type="primary"
block
@click="backToHome"
class="home-button"
>
返回首页
</van-button>
<van-button
type="default"
block
class="detail-button"
>
查看订单详情
</van-button>
</div>
</div>
</div>
</template>
<style scoped>
.success-container {
padding: 12px 16px;
}
.content-wrapper {
padding-top: 46px;
}
.success-info {
margin: 20px 0;
}
.status-cell :deep(.van-cell__value) {
color: #07c160;
font-weight: bold;
}
.action-buttons {
position: fixed;
bottom: 30px;
left: 16px;
right: 16px;
}
.home-button {
margin-bottom: 12px;
}
</style>

View File

@ -28,9 +28,9 @@ function callWxJsApi(paymentInfo: WxJsApiPreCreateResponse) {
appId: paymentInfo.appId,
timeStamp: paymentInfo.timeStamp,
nonceStr: paymentInfo.nonceStr,
package: paymentInfo.packageValue.startsWith('prepay_id=')
? paymentInfo.packageValue
: `prepay_id=${paymentInfo.packageValue}`,
package: paymentInfo.package.startsWith('prepay_id=')
? paymentInfo.package
: `prepay_id=${paymentInfo.package}`,
signType: paymentInfo.signType,
paySign: paymentInfo.paySign
},
@ -81,16 +81,21 @@ async function handleSubmit() {
//
const { data } = await submitOrderApi(requestData)
await showConfirmDialog({
title: "提交成功",
message: `订单号:${data.orderId},正在跳转支付...`
})
// await showConfirmDialog({
// title: "",
// message: `${data.orderId}...`
// })
//
if (data.paymentInfo) {
await callWxJsApi(data.paymentInfo);
//
router.push('/order-success');
router.push({
path: '/order-success',
query: {
orderId: data.orderId
}
});
} else {
throw new Error('无法获取支付信息');
}

View File

@ -37,8 +37,8 @@ export const useWxStore = defineStore("wx", () => {
// 调用获取 openid 的接口
const res = await getOpenIdApi({ code: params.code })
console.log('获取 openid 成功:', res)
if (res) {
openid.value = res
if (res && res.code == 0) {
openid.value = res.data
}
} catch (err) {
console.error('获取 openid 失败:', err)

View File

@ -29,6 +29,14 @@ export const systemRoutes: RouteRecordRaw[] = [
/** 业务页面 */
export const routes: RouteRecordRaw[] = [
{
path: '/order-success',
name: 'OrderSuccess',
component: () => import('@/pages/order/Success.vue'),
meta: {
requiresAuth: true
}
},
{
path: "/product/checkout",
component: () => import("@/pages/product/components/checkout.vue"),
@ -55,6 +63,14 @@ export const routes: RouteRecordRaw[] = [
]
/* export const routes: RouteRecordRaw[] = [
{
path: '/order-success',
name: 'OrderSuccess',
component: () => import('@/pages/order/Success.vue'),
meta: {
requiresAuth: true
}
},
{
path: "/login",
component: () => import("@/pages/login/index.vue"),