53 lines
1012 B
TypeScript
53 lines
1012 B
TypeScript
import { connectToDatabase, Bill, User } from '../mongo';
|
|
import { modelList } from '@/constants/model';
|
|
|
|
export const pushBill = async ({
|
|
modelName,
|
|
userId,
|
|
chatId,
|
|
textLen
|
|
}: {
|
|
modelName: string;
|
|
userId: string;
|
|
chatId: string;
|
|
textLen: number;
|
|
}) => {
|
|
await connectToDatabase();
|
|
|
|
const modelItem = modelList.find((item) => item.model === modelName);
|
|
|
|
if (!modelItem) return;
|
|
|
|
let billId;
|
|
|
|
try {
|
|
await connectToDatabase();
|
|
|
|
const modelItem = modelList.find((item) => item.model === modelName);
|
|
|
|
if (!modelItem) return;
|
|
|
|
const price = modelItem.price * textLen;
|
|
|
|
try {
|
|
// 插入 Bill 记录
|
|
const res = await Bill.create({
|
|
userId,
|
|
chatId,
|
|
textLen,
|
|
price
|
|
});
|
|
billId = res._id;
|
|
|
|
// 扣费
|
|
await User.findByIdAndUpdate(userId, {
|
|
$inc: { balance: -price }
|
|
});
|
|
} catch (error) {
|
|
billId && Bill.findByIdAndDelete(billId);
|
|
}
|
|
} catch (error) {
|
|
console.log(error);
|
|
}
|
|
};
|