feat(dealer):优化订单佣金显示逻辑

- 引入 useUser 钩子获取用户信息
- 添加 getResourceId 方法根据角色控制资源访问
- 实现 hasRole 方法检查用户角色权限
- 根据用户角色和ID控制一级、二级佣金的显示条件- 修复二级分销商信息重复判断逻辑
This commit is contained in:
2025-10-21 01:30:28 +08:00
parent 159869a381
commit d23e7afd58

View File

@@ -6,6 +6,7 @@ import Taro from '@tarojs/taro'
import {pageShopDealerOrder} from '@/api/shop/shopDealerOrder' import {pageShopDealerOrder} from '@/api/shop/shopDealerOrder'
import {useDealerUser} from '@/hooks/useDealerUser' import {useDealerUser} from '@/hooks/useDealerUser'
import type {ShopDealerOrder} from '@/api/shop/shopDealerOrder/model' import type {ShopDealerOrder} from '@/api/shop/shopDealerOrder/model'
import {useUser} from "@/hooks/useUser";
interface OrderWithDetails extends ShopDealerOrder { interface OrderWithDetails extends ShopDealerOrder {
orderNo?: string orderNo?: string
@@ -27,6 +28,7 @@ const DealerOrder: React.FC = () => {
const [hasMore, setHasMore] = useState<boolean>(true) const [hasMore, setHasMore] = useState<boolean>(true)
const {dealerUser} = useDealerUser() const {dealerUser} = useDealerUser()
const {user} = useUser()
// 获取订单数据 // 获取订单数据
const fetchOrders = useCallback(async (page: number = 1, isRefresh: boolean = false) => { const fetchOrders = useCallback(async (page: number = 1, isRefresh: boolean = false) => {
@@ -44,7 +46,7 @@ const DealerOrder: React.FC = () => {
const result = await pageShopDealerOrder({ const result = await pageShopDealerOrder({
isInvalid: 0, isInvalid: 0,
isSettled: 1, isSettled: 1,
resourceId: Taro.getStorageSync('UserId') == 33658 ? undefined : Taro.getStorageSync('UserId'), resourceId: getResourceId(),
month: date, month: date,
page, page,
limit: 10 limit: 10
@@ -93,6 +95,24 @@ const DealerOrder: React.FC = () => {
} }
} }
const getResourceId = () => {
if (hasRole('superAdmin')) {
return undefined
}
if (hasRole('admin')) {
return user?.userId
}
}
// 检查是否有特定角色
const hasRole = (roleCode: string) => {
if (!user || !user.roles) {
return false;
}
return user.roles.some(role => role.roleCode === roleCode);
}
// 初始化加载数据 // 初始化加载数据
useEffect(() => { useEffect(() => {
if (dealerUser?.userId) { if (dealerUser?.userId) {
@@ -135,18 +155,24 @@ const DealerOrder: React.FC = () => {
<View className="mb-1"> <View className="mb-1">
{/*DealerId{Taro.getStorageSync('DealerId')}*/} {/*DealerId{Taro.getStorageSync('DealerId')}*/}
{/* 一级佣金30 */} {/* 一级佣金30 */}
{(hasRole('superAdmin') || hasRole('admin') || Taro.getStorageSync('UserId') != order.thirdUserId) && (
<>
{Taro.getStorageSync('UserId') != order.secondUserId && (
<>
{(order.firstNickname || order.firstUserId) && ( {(order.firstNickname || order.firstUserId) && (
<Text className="text-sm text-gray-400 block"> <Text className="text-sm text-gray-400 block">
{order.firstNickname || `用户${order.firstUserId}`} (¥{order.firstMoney || '0.00'}) {order.firstNickname || `用户${order.firstUserId}`} (¥{order.firstMoney || '0.00'})
</Text> </Text>
)} )}
</>
{/* 一级分销商 */} )}
{(order.secondUserId || order.secondUserId) && ( {(order.secondUserId || order.secondUserId) && (
<Text className="text-sm text-gray-400 block"> <Text className="text-sm text-gray-400 block">
{order.secondNickname || `用户${order.secondUserId}`} (¥{order.secondMoney || '0.00'}) {order.secondNickname || `用户${order.secondUserId}`} (¥{order.secondMoney || '0.00'})
</Text> </Text>
)} )}
</>
)}
{/* 三级分销商 */} {/* 三级分销商 */}
{(order.thirdUserId !== undefined && order.thirdUserId > 0) && ( {(order.thirdUserId !== undefined && order.thirdUserId > 0) && (