新增:优惠券、积分明细

This commit is contained in:
2025-08-08 08:55:42 +08:00
parent 5dd0e97e3c
commit c82a56eef7
18 changed files with 1105 additions and 9 deletions

View File

@@ -6,11 +6,15 @@ import {useEffect, useState} from "react";
import {User} from "@/api/system/user/model";
import navTo from "@/utils/common";
import {TenantId} from "@/config/app";
import {getUserCouponCount} from "@/api/user/coupon";
import {getUserPointsStats} from "@/api/user/points";
function UserCard() {
const [IsLogin, setIsLogin] = useState<boolean>(false)
const [userInfo, setUserInfo] = useState<User>()
const [roleName, setRoleName] = useState<string>('注册用户')
const [couponCount, setCouponCount] = useState(0)
const [pointsCount, setPointsCount] = useState(0)
useEffect(() => {
@@ -30,6 +34,26 @@ function UserCard() {
});
}, []);
const loadUserStats = (userId: number) => {
// 加载优惠券数量
getUserCouponCount(userId)
.then((res: any) => {
setCouponCount(res.unused || 0)
})
.catch((error: any) => {
console.error('Coupon count error:', error)
})
// 加载积分数量
getUserPointsStats(userId)
.then((res: any) => {
setPointsCount(res.currentPoints || 0)
})
.catch((error: any) => {
console.error('Points stats error:', error)
})
}
const reload = () => {
Taro.getUserInfo({
success: (res) => {
@@ -44,6 +68,12 @@ function UserCard() {
setUserInfo(data)
setIsLogin(true);
Taro.setStorageSync('UserId', data.userId)
// 加载用户统计数据
if (data.userId) {
loadUserStats(data.userId)
}
// 获取openId
if (!data.openid) {
Taro.login({
@@ -186,17 +216,17 @@ function UserCard() {
</div>
</div>
<div className={'flex justify-around mt-5'}>
<div className={'item flex justify-center flex-col items-center'}>
<div className={'item flex justify-center flex-col items-center'} onClick={() => navTo('/user/wallet/wallet', true)}>
<span className={'text-sm text-gray-500'}></span>
<span className={'text-xl'}>¥ {userInfo?.balance}</span>
<span className={'text-xl'}>¥ {userInfo?.balance || '0.00'}</span>
</div>
<div className={'item flex justify-center flex-col items-center'}>
<div className={'item flex justify-center flex-col items-center'} onClick={() => navTo('/user/coupon/coupon', true)}>
<span className={'text-sm text-gray-500'}></span>
<span className={'text-xl'}>0</span>
<span className={'text-xl'}>{couponCount}</span>
</div>
<div className={'item flex justify-center flex-col items-center'}>
<div className={'item flex justify-center flex-col items-center'} onClick={() => navTo('/user/points/points', true)}>
<span className={'text-sm text-gray-500'}></span>
<span className={'text-xl'}>100</span>
<span className={'text-xl'}>{pointsCount}</span>
</div>
</div>
</div>