feat: 技术支持工单/企微权限/开发版本管理/消息推送等迭代
This commit is contained in:
@@ -1,100 +0,0 @@
|
||||
import '../src/load-env';
|
||||
import { NestFactory } from '@nestjs/core';
|
||||
import { AppModule } from '../src/app.module';
|
||||
import { PrismaService } from '../src/common/prisma/prisma.module';
|
||||
import { RedeemService } from '../src/modules/redeem/redeem.service';
|
||||
|
||||
async function main() {
|
||||
const app = await NestFactory.createApplicationContext(AppModule, { logger: ['error', 'warn'] });
|
||||
const prisma = app.get(PrismaService);
|
||||
const redeem = app.get(RedeemService);
|
||||
|
||||
let coupon = await prisma.benefitCoupon.findFirst({
|
||||
where: { status: 'ACTIVE', balance: { gt: 10 } },
|
||||
orderBy: { createdAt: 'desc' },
|
||||
});
|
||||
if (!coupon) {
|
||||
const user = await prisma.user.findFirst({ orderBy: { id: 'asc' } });
|
||||
const city = await prisma.commonCity.findFirst();
|
||||
const product = await prisma.commonProductItem.findFirst();
|
||||
if (!user || !city || !product) throw new Error('seed base data missing');
|
||||
const order = await prisma.order.create({
|
||||
data: {
|
||||
orderNo: `T${Date.now()}`,
|
||||
userId: user.id,
|
||||
cityId: city.id,
|
||||
status: 'COMPLETED',
|
||||
payStatus: 'PAID',
|
||||
deliveryType: 'LOCAL',
|
||||
productId: product.id,
|
||||
barcode69: product.barcode69,
|
||||
productName: product.name,
|
||||
productSpec: product.spec ?? '500ml',
|
||||
quantity: 2,
|
||||
listUnitPrice: 100,
|
||||
listAmount: 200,
|
||||
productAmount: 200,
|
||||
payAmount: 200,
|
||||
benefitAmount: 200,
|
||||
receiverName: 'test',
|
||||
receiverPhone: user.phone ?? '13800000001',
|
||||
receiverProvince: '河南',
|
||||
receiverCity: '郑州',
|
||||
receiverDistrict: '金水',
|
||||
receiverAddress: 'test addr',
|
||||
},
|
||||
});
|
||||
coupon = await prisma.benefitCoupon.create({
|
||||
data: {
|
||||
couponNo: `TEST${Date.now()}`,
|
||||
userId: user.id,
|
||||
orderId: order.id,
|
||||
totalAmount: 200,
|
||||
usedAmount: 0,
|
||||
balance: 200,
|
||||
status: 'ACTIVE',
|
||||
sourceProduct: product.name,
|
||||
},
|
||||
});
|
||||
console.log('created test coupon', coupon.id.toString());
|
||||
}
|
||||
|
||||
const storeAccount = await prisma.storeAccount.findFirst({
|
||||
where: { status: 'ACTIVE', store: { status: 'OPEN' } },
|
||||
include: { store: true },
|
||||
});
|
||||
if (!storeAccount) throw new Error('no active store account on OPEN store');
|
||||
|
||||
console.log('userId', coupon.userId.toString());
|
||||
console.log('storeId', storeAccount.storeId.toString());
|
||||
console.log('coupon balance', coupon.balance.toString());
|
||||
|
||||
const tokenRes = await redeem.createToken(coupon.userId, {
|
||||
amount: 10,
|
||||
storeId: storeAccount.storeId.toString(),
|
||||
});
|
||||
console.log('token created', tokenRes.token);
|
||||
|
||||
try {
|
||||
const preview = await redeem.previewRedeem(storeAccount.id, tokenRes.token);
|
||||
console.log('preview ok', JSON.stringify(preview));
|
||||
} catch (e) {
|
||||
console.error('preview failed:', e);
|
||||
throw e;
|
||||
}
|
||||
|
||||
try {
|
||||
const record = await redeem.confirmRedeem(storeAccount.id, { token: tokenRes.token });
|
||||
console.log('confirm ok', JSON.stringify(record));
|
||||
} catch (e) {
|
||||
console.error('confirm failed:', e);
|
||||
throw e;
|
||||
}
|
||||
|
||||
await app.close();
|
||||
}
|
||||
|
||||
main().catch((e) => {
|
||||
console.error(e);
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user