Добавлены модели для внешней рекламы и кэша склада WB в схему Prisma. Обновлены компоненты AdvertisingTab и WBWarehouseDashboard для работы с новыми данными. Реализованы GraphQL запросы и мутации для управления внешней рекламой и кэшем склада. Оптимизирована логика отображения статистики и добавлены новые функции для работы с рекламой.

This commit is contained in:
Bivekich
2025-07-29 17:44:40 +03:00
parent 8b0d3cde00
commit c174a9f83c
13 changed files with 4576 additions and 780 deletions

View File

@ -108,6 +108,12 @@ export const typeDefs = gql`
# Список кампаний Wildberries
getWildberriesCampaignsList: WildberriesCampaignsListResponse!
# Типы для внешней рекламы
getExternalAds(dateFrom: String!, dateTo: String!): ExternalAdsResponse!
# Типы для кеша склада WB
getWBWarehouseData: WBWarehouseCacheResponse!
}
type Mutation {
@ -244,6 +250,12 @@ export const typeDefs = gql`
# Админ мутации
adminLogin(username: String!, password: String!): AdminAuthResponse!
adminLogout: Boolean!
# Типы для внешней рекламы
createExternalAd(input: ExternalAdInput!): ExternalAdResponse!
updateExternalAd(id: ID!, input: ExternalAdInput!): ExternalAdResponse!
deleteExternalAd(id: ID!): ExternalAdResponse!
updateExternalAdClicks(id: ID!, clicks: Int!): ExternalAdResponse!
}
# Типы данных
@ -1147,4 +1159,84 @@ export const typeDefs = gql`
advertId: Int!
changeTime: String!
}
# Типы для внешней рекламы
type ExternalAd {
id: ID!
name: String!
url: String!
cost: Float!
date: String!
nmId: String!
clicks: Int!
organizationId: String!
createdAt: String!
updatedAt: String!
}
input ExternalAdInput {
name: String!
url: String!
cost: Float!
date: String!
nmId: String!
}
type ExternalAdResponse {
success: Boolean!
message: String
externalAd: ExternalAd
}
type ExternalAdsResponse {
success: Boolean!
message: String
externalAds: [ExternalAd!]!
}
extend type Query {
getExternalAds(dateFrom: String!, dateTo: String!): ExternalAdsResponse!
}
extend type Mutation {
createExternalAd(input: ExternalAdInput!): ExternalAdResponse!
updateExternalAd(id: ID!, input: ExternalAdInput!): ExternalAdResponse!
deleteExternalAd(id: ID!): ExternalAdResponse!
updateExternalAdClicks(id: ID!, clicks: Int!): ExternalAdResponse!
}
# Типы для кеша склада WB
type WBWarehouseCache {
id: ID!
organizationId: String!
cacheDate: String!
data: String! # JSON строка с данными
totalProducts: Int!
totalStocks: Int!
totalReserved: Int!
createdAt: String!
updatedAt: String!
}
type WBWarehouseCacheResponse {
success: Boolean!
message: String
cache: WBWarehouseCache
fromCache: Boolean! # Указывает, получены ли данные из кеша
}
input WBWarehouseCacheInput {
data: String! # JSON строка с данными склада
totalProducts: Int!
totalStocks: Int!
totalReserved: Int!
}
extend type Query {
getWBWarehouseData: WBWarehouseCacheResponse!
}
extend type Mutation {
saveWBWarehouseCache(input: WBWarehouseCacheInput!): WBWarehouseCacheResponse!
}
`;