import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); async function main() { console.log('Seeding preV1 data...'); await prisma.partnerBill.deleteMany(); await prisma.storePayout.deleteMany(); await prisma.redeemRecord.deleteMany(); await prisma.benefitLedger.deleteMany(); await prisma.benefitCoupon.deleteMany(); await prisma.orderStatusLog.deleteMany(); await prisma.orderDelivery.deleteMany(); await prisma.payment.deleteMany(); await prisma.orderItem.deleteMany(); await prisma.order.deleteMany(); await prisma.storeAudit.deleteMany(); await prisma.storeAccount.deleteMany(); await prisma.storeMedia.deleteMany(); await prisma.store.deleteMany(); await prisma.userCityPreference.deleteMany(); await prisma.userAddress.deleteMany(); await prisma.user.deleteMany(); await prisma.partnerAccount.deleteMany(); await prisma.cityCommissionRule.deleteMany(); await prisma.city.deleteMany(); await prisma.partner.deleteMany(); await prisma.product.deleteMany(); await prisma.storeCategory.deleteMany(); await prisma.hqAccount.deleteMany(); const partner = await prisma.partner.create({ data: { companyName: '郑州城市合伙人', address: '河南省郑州市金水区', contactPhone: '13700000001', bankAccountName: '郑州合伙人公司', bankAccountNo: '6222021234567890', bankBranch: '工商银行郑州分行', }, }); const city = await prisma.city.create({ data: { code: '410100', name: '郑州市', province: '河南省', status: 'ACTIVE', partnerId: partner.id, localMinQty: 2, crossMinQty: 6, }, }); await prisma.cityCommissionRule.create({ data: { cityId: city.id, orderCommissionRate: 0.05, redeemCommissionRate: 0.03, partnerProfitRate: 0.35, storeSettlementRate: 0.6, }, }); const categories = await Promise.all([ prisma.storeCategory.create({ data: { code: 'HOTPOT', name: '火锅', sort: 1 } }), prisma.storeCategory.create({ data: { code: 'LOCAL', name: '地方菜', sort: 2 } }), ]); const products = await Promise.all([ prisma.product.create({ data: { skuCode: 'QX-001', name: '杜康·白水古酿 500ml', subtitle: '清香型 52度 礼盒装', aromaType: 'QINGXIANG', spec: '500ml | 52度', price: 599, benefitAmount: 599, status: 'ON_SALE', sortOrder: 1, mainImageUrl: 'https://picsum.photos/seed/dukang1/400/400', }, }), prisma.product.create({ data: { skuCode: 'QX-002', name: '杜康·年份陈酿(十年)', subtitle: '清香型 42度 纯粮酿造', aromaType: 'QINGXIANG', spec: '500ml | 42度', price: 880, benefitAmount: 880, status: 'ON_SALE', sortOrder: 2, mainImageUrl: 'https://picsum.photos/seed/dukang2/400/400', }, }), prisma.product.create({ data: { skuCode: 'QX-003', name: '杜康·御享1号 珍藏版', subtitle: '高端定制 限量发售', aromaType: 'QINGXIANG', spec: '500ml | 52度', price: 1299, benefitAmount: 1299, status: 'ON_SALE', sortOrder: 3, mainImageUrl: 'https://picsum.photos/seed/dukang3/400/400', }, }), prisma.product.create({ data: { skuCode: 'QX-004', name: '杜康·经典传承', subtitle: '清香型 纯粮固态', aromaType: 'QINGXIANG', spec: '500ml | 46度', price: 399, benefitAmount: 399, status: 'ON_SALE', sortOrder: 4, mainImageUrl: 'https://picsum.photos/seed/dukang4/400/400', }, }), ]); await prisma.partnerAccount.create({ data: { partnerId: partner.id, phone: '13700000001', name: '郑州合伙人主账号', isPrimary: 1, staffRole: 'PARTNER', }, }); const store1 = await prisma.store.create({ data: { cityId: city.id, partnerId: partner.id, categoryId: categories[0].id, name: '郑州老城店', phone: '13910000001', province: '河南省', cityName: '郑州市', district: '金水区', address: '花园路100号', intro: '正宗河南菜,欢迎核销好客权益', coverUrl: 'https://picsum.photos/seed/store1/400/300', status: 'OPEN', openTime: '10:00', closeTime: '22:00', bankAccountName: '郑州老城店', bankAccountNo: '6222029876543210', bankBranch: '建设银行郑州分行', }, }); const store2 = await prisma.store.create({ data: { cityId: city.id, partnerId: partner.id, categoryId: categories[1].id, name: '郑州美食城店', phone: '13910000002', province: '河南省', cityName: '郑州市', district: '二七区', address: '大学路200号', intro: '地方特色餐饮', coverUrl: 'https://picsum.photos/seed/store2/400/300', status: 'OPEN', openTime: '10:00', closeTime: '22:00', }, }); await prisma.storeAccount.create({ data: { storeId: store1.id, phone: '13910000001', name: '郑州老城店' }, }); await prisma.user.create({ data: { userNo: 'DK88293401', phone: '13800000001', nickname: '测试用户', cityPref: { create: { selectedCityCode: '410100', selectedDistrict: '郑州市', locateCityCode: '410100', locateDistrict: '金水区', }, }, }, }); await prisma.hqAccount.create({ data: { phone: '13600000001', name: '总部管理员', adminRole: 'SUPER_ADMIN', }, }); const now = new Date(); const periodStart = new Date(now.getFullYear(), now.getMonth(), 1); const periodEnd = new Date(now.getFullYear(), now.getMonth() + 1, 0); await prisma.partnerBill.create({ data: { billNo: `PB${Date.now()}`, partnerId: partner.id, periodStart, periodEnd, orderCommission: 1200, redeemCommission: 800, totalAmount: 2000, status: 'UNPAID', confirmedAt: now, }, }); console.log('Seed complete:', { city: city.name, products: products.length, stores: 2, testPhones: { user: '13800000001', store: '13910000001', partner: '13700000001', }, }); } main() .catch((e) => { console.error(e); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });