修复超管无法回收资产的问题
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m0s

This commit is contained in:
2026-02-27 11:03:44 +08:00
parent 4189dbe98f
commit f5000f2bfc
4 changed files with 28 additions and 33 deletions

View File

@@ -419,26 +419,12 @@ func (s *Service) RecallCards(ctx context.Context, req *dto.RecallStandaloneCard
if err != nil {
return nil, err
}
// 调试日志:记录查询结果
s.logger.Info("批量查询店铺结果",
zap.Any("operator_shop_id", operatorShopID),
zap.Uints("requested_shop_ids", shopIDs),
zap.Int("returned_shops_count", len(shops)),
zap.Uints("returned_shop_ids", func() []uint {
ids := make([]uint, len(shops))
for i, shop := range shops {
ids[i] = shop.ID
}
return ids
}()))
for _, shop := range shops {
if s.isDirectSubordinate(operatorShopID, shop) {
directSubordinateSet[shop.ID] = true
}
}
// 调试日志:记录直属下级集合
s.logger.Info("直属下级店铺集合",
zap.Any("direct_subordinate_set", directSubordinateSet))
}
// 4. 检查绑定设备的卡
@@ -472,15 +458,17 @@ func (s *Service) RecallCards(ctx context.Context, req *dto.RecallStandaloneCard
})
continue
}
userType := middleware.GetUserTypeFromContext(ctx)
if !directSubordinateSet[*card.ShopID] {
failedItems = append(failedItems, dto.AllocationFailedItem{
ICCID: card.ICCID,
Reason: "卡所属店铺不是您的直属下级",
})
continue
if userType == constants.UserTypeAgent {
if !directSubordinateSet[*card.ShopID] {
failedItems = append(failedItems, dto.AllocationFailedItem{
ICCID: card.ICCID,
Reason: "卡所属店铺不是您的直属下级",
})
continue
}
}
cardIDs = append(cardIDs, card.ID)
successCards = append(successCards, card)
}

View File

@@ -7,9 +7,11 @@ import (
"github.com/break/junhong_cmp_fiber/internal/model"
"github.com/break/junhong_cmp_fiber/internal/store"
"github.com/break/junhong_cmp_fiber/pkg/constants"
"github.com/break/junhong_cmp_fiber/pkg/logger"
"github.com/break/junhong_cmp_fiber/pkg/middleware"
"github.com/bytedance/sonic"
"github.com/redis/go-redis/v9"
"go.uber.org/zap"
"gorm.io/gorm"
)
@@ -215,6 +217,11 @@ func (s *ShopStore) GetByIDs(ctx context.Context, ids []uint) ([]*model.Shop, er
var shops []*model.Shop
query := s.db.WithContext(ctx).Where("id IN ?", ids)
// 应用数据权限过滤:代理用户只能看到自己店铺及下级店铺
subordinateShopIDs := middleware.GetSubordinateShopIDs(ctx)
logger.GetAppLogger().Debug("GetByIDs 数据权限过滤",
zap.Uints("requested_ids", ids),
zap.Any("subordinate_shop_ids", subordinateShopIDs),
zap.Int("user_type", middleware.GetUserTypeFromContext(ctx)))
query = middleware.ApplyShopIDFilter(ctx, query)
if err := query.Find(&shops).Error; err != nil {
return nil, err