v3数据表更改
This commit is contained in:
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
|
||||
import { calcBenefitAmount, calcBenefitSummary, generateCouponNo } from '@dukang/domain';
|
||||
import { PrismaService } from '../../common/prisma/prisma.module';
|
||||
import { serializeBigInt } from '../../common/decorators/current-user.decorator';
|
||||
import { buildBenefitLedgerEvent, benefitLedgerWhere } from '../../common/event/event.helpers';
|
||||
|
||||
@Injectable()
|
||||
export class BenefitService {
|
||||
@@ -10,17 +11,14 @@ export class BenefitService {
|
||||
async grantOnOrderPaid(orderId: bigint) {
|
||||
const order = await this.prisma.order.findUniqueOrThrow({
|
||||
where: { id: orderId },
|
||||
include: { items: true },
|
||||
});
|
||||
const item = order.items[0];
|
||||
if (!item) return null;
|
||||
|
||||
const product = await this.prisma.product.findUnique({ where: { id: item.productId } });
|
||||
const product = await this.prisma.commonProductItem.findUnique({ where: { id: order.productId } });
|
||||
const unitBenefit = calcBenefitAmount({
|
||||
price: Number(item.unitPrice),
|
||||
price: Number(order.listUnitPrice),
|
||||
benefitAmount: product?.benefitAmount ? Number(product.benefitAmount) : null,
|
||||
});
|
||||
const totalBenefit = unitBenefit * item.quantity;
|
||||
const totalBenefit = unitBenefit * order.quantity;
|
||||
|
||||
const coupon = await this.prisma.benefitCoupon.create({
|
||||
data: {
|
||||
@@ -29,12 +27,12 @@ export class BenefitService {
|
||||
orderId: order.id,
|
||||
totalAmount: totalBenefit,
|
||||
balance: totalBenefit,
|
||||
sourceProduct: item.productName,
|
||||
sourceProduct: order.productName,
|
||||
},
|
||||
});
|
||||
|
||||
await this.prisma.benefitLedger.create({
|
||||
data: {
|
||||
await this.prisma.commonEvent.create({
|
||||
data: buildBenefitLedgerEvent({
|
||||
userId: order.userId,
|
||||
couponId: coupon.id,
|
||||
type: 'GRANT',
|
||||
@@ -43,7 +41,7 @@ export class BenefitService {
|
||||
refType: 'ORDER',
|
||||
refId: order.id,
|
||||
remark: '购酒赠券',
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
return serializeBigInt(coupon);
|
||||
@@ -69,8 +67,8 @@ export class BenefitService {
|
||||
}
|
||||
|
||||
async getLedger(userId: bigint, couponId?: bigint) {
|
||||
const list = await this.prisma.benefitLedger.findMany({
|
||||
where: { userId, ...(couponId ? { couponId } : {}) },
|
||||
const list = await this.prisma.commonEvent.findMany({
|
||||
where: benefitLedgerWhere(userId, couponId),
|
||||
orderBy: { createdAt: 'desc' },
|
||||
});
|
||||
return serializeBigInt(list);
|
||||
@@ -81,8 +79,8 @@ export class BenefitService {
|
||||
where: { id: couponId, userId },
|
||||
});
|
||||
if (!coupon) return null;
|
||||
const ledgers = await this.prisma.benefitLedger.findMany({
|
||||
where: { couponId },
|
||||
const ledgers = await this.prisma.commonEvent.findMany({
|
||||
where: benefitLedgerWhere(undefined, couponId),
|
||||
orderBy: { createdAt: 'desc' },
|
||||
});
|
||||
return serializeBigInt({ coupon, ledgers });
|
||||
|
||||
Reference in New Issue
Block a user