import React, {useState, useEffect, useCallback} from 'react' import {View, Text} from '@tarojs/components' import {Space, Avatar, Loading} from '@nutui/nutui-react-taro' import {User} from '@nutui/icons-react-taro' import Taro from '@tarojs/taro' import {useDealerUser} from '@/hooks/useDealerUser' import {listShopDealerReferee} from '@/api/shop/shopDealerReferee' import {pageShopDealerOrder} from '@/api/shop/shopDealerOrder' import type {ShopDealerReferee} from '@/api/shop/shopDealerReferee/model' import type {ShopDealerUser} from "@/api/shop/shopDealerUser/model"; interface TeamMemberWithStats extends ShopDealerReferee { name?: string avatar?: string orderCount?: number commission?: string status?: 'active' | 'inactive' subMembers?: number joinTime?: string } const DealerTeam: React.FC = () => { const [teamMembers, setTeamMembers] = useState([]) const {dealerUser} = useDealerUser() const [dealerId, setDealerId] = useState() // 获取团队数据 const fetchTeamData = useCallback(async () => { if (!dealerUser?.userId && !dealerId) return try { console.log(dealerId, 'dealerId>>>>>>>>>') // 获取团队成员关系 const refereeResult = await listShopDealerReferee({ dealerId: dealerId ? dealerId : dealerUser.userId }) if (refereeResult) { // 处理团队成员数据 const processedMembers: TeamMemberWithStats[] = refereeResult.map(member => ({ ...member, name: `用户${member.userId}`, avatar: '', orderCount: 0, commission: '0.00', status: 'active' as const, subMembers: 0, joinTime: member.createTime })) // 并行获取每个成员的订单统计 const memberStats = await Promise.all( processedMembers.map(async (member) => { try { const orderResult = await pageShopDealerOrder({ page: 1, limit: 100, userId: member.userId }) if (orderResult?.list) { const orders = orderResult.list const orderCount = orders.length const commission = orders.reduce((sum, order) => { const levelCommission = member.level === 1 ? order.firstMoney : member.level === 2 ? order.secondMoney : order.thirdMoney return sum + parseFloat(levelCommission || '0') }, 0).toFixed(2) // 判断活跃状态(30天内有订单为活跃) const thirtyDaysAgo = new Date() thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30) const hasRecentOrder = orders.some(order => new Date(order.createTime || '') > thirtyDaysAgo ) return { ...member, orderCount, commission, status: hasRecentOrder ? 'active' as const : 'inactive' as const } } return member } catch (error) { console.error(`获取成员${member.userId}订单失败:`, error) return member } }) ) setTeamMembers(memberStats) } } catch (error) { console.error('获取团队数据失败:', error) Taro.showToast({ title: '获取团队数据失败', icon: 'error' }) } }, [dealerUser?.userId]) const getNextUser = (item: ShopDealerUser) => { setDealerId(item.userId) fetchTeamData().then() } // 初始化加载数据 useEffect(() => { if (dealerUser?.userId) { fetchTeamData().then() } }, [fetchTeamData]) const renderMemberItem = (member: TeamMemberWithStats) => ( getNextUser(member)}> } className="mr-3" /> {member.name} {/*{getLevelIcon(Number(member.level))}*/} {/**/} {/* {member.level}级*/} {/**/} 加入时间:{member.joinTime} {/**/} {/* */} {/* {member.status === 'active' ? '活跃' : '沉默'}*/} {/* */} {/**/} 订单数 {member.orderCount} 贡献佣金 ¥{member.commission} 团队成员 {member.subMembers} ) const renderOverview = () => ( {teamMembers.slice(0, 3).map(renderMemberItem)} ) if (!dealerUser) { return ( 加载中... ) } return ( {renderOverview()} ) } export default DealerTeam