🐞 fix(礼包码): 停止使用礼包码的record字段
This commit is contained in:
@@ -15,6 +15,7 @@ import { GiftCodeType, GiftCodeModel } from "../../../db/GiftCode";
|
||||
import { nowSeconds } from "../../../pubUtils/timeUtil";
|
||||
import { AP } from "../../../pubUtils/dicParam";
|
||||
import { GiftPackageFloorModel } from "../../../db/GiftPackageFloor";
|
||||
import { UserGiftCodeDetailModel } from "../../../db/UserGiftCodeDetail";
|
||||
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
@@ -187,17 +188,17 @@ export class ItemHandler {
|
||||
return resResult(STATUS.GIFT_CODE_CHANNEL_ERR);
|
||||
}
|
||||
|
||||
if (giftCodeDetail.roleIds.indexOf(roleId) != -1) {
|
||||
return resResult(STATUS.YOU_HAVE_USED_THIS_CODE);
|
||||
}
|
||||
|
||||
let checkHasUse = await GiftCodeDetailModel.checkHasUsed(roleId, giftCodeDetail.giftId)
|
||||
if(checkHasUse) {
|
||||
return resResult(STATUS.YOU_HAVE_USED_THIS_CODE);
|
||||
}
|
||||
|
||||
let checkHasUse2 = await UserGiftCodeDetailModel.checkHasUsed(roleId, giftCodeDetail.giftId)
|
||||
if(checkHasUse2) {
|
||||
return resResult(STATUS.YOU_HAVE_USED_THIS_CODE);
|
||||
}
|
||||
|
||||
await GiftCodeDetailModel.increaseUsedNum(code, roleId, roleName, serverId);
|
||||
await UserGiftCodeDetailModel.record(roleId, roleName, serverId, giftCodeDetail.giftId, code);
|
||||
await GiftCodeDetailModel.increaseUsedNum(code);
|
||||
await GiftCodeModel.increaseUsedNum(giftCode.id);
|
||||
|
||||
let goods = await addItems(roleId, roleName, sid, giftCode.goods, ITEM_CHANGE_REASON.USE_GIFT_CODE);
|
||||
|
||||
@@ -2,7 +2,6 @@ import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
|
||||
import { GIFT_GENERATE_TYPE } from '../consts';
|
||||
import { GiftCodeModel, GiftCodeType } from './GiftCode';
|
||||
import { nowSeconds } from '../pubUtils/timeUtil';
|
||||
import { genCode } from '../pubUtils/util';
|
||||
import { SearchGiftCodeDetailParam } from '../domain/backEndField/search';
|
||||
|
||||
@@ -55,7 +54,7 @@ export default class GiftCodeDetail extends BaseModel {
|
||||
|
||||
// 根据code
|
||||
public static async findByCode(code: string) {
|
||||
let result: GiftCodeDetailType = await GiftCodeDetailModel.findOne({ code }).lean(true);
|
||||
let result: GiftCodeDetailType = await GiftCodeDetailModel.findOne({ code }).select('-record').lean(true);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -78,11 +77,10 @@ export default class GiftCodeDetail extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async increaseUsedNum(code: string, roleId: string, roleName: string, serverId: number, orderId?: string) {
|
||||
let result: GiftCodeDetailType = await GiftCodeDetailModel.findOneAndUpdate({ code }, {
|
||||
$inc: { usedNum: 1 }, $push: { roleIds: roleId, record: { roleId, roleName, serverId, time: nowSeconds(), orderId } }
|
||||
public static async increaseUsedNum(code: string) {
|
||||
await GiftCodeDetailModel.updateOne({ code }, {
|
||||
$inc: { usedNum: 1 }
|
||||
}, { new: true }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async generateMany(giftCode: GiftCodeType, count = 1, uid = 1) {
|
||||
|
||||
49
shared/db/UserGiftCodeDetail.ts
Normal file
49
shared/db/UserGiftCodeDetail.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
|
||||
|
||||
/**
|
||||
* 领取记录
|
||||
**/
|
||||
@modelOptions({ schemaOptions: { id: false } })
|
||||
@index({ roleId: 1, giftId: 1 })
|
||||
@index({ orderId: 1, giftId: 1 })
|
||||
export default class UserGiftCodeDetail extends BaseModel {
|
||||
|
||||
@prop({ required: true, default: '' })
|
||||
roleId: string;
|
||||
|
||||
@prop({ required: true, default: '' })
|
||||
roleName: string;
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
serverId: number;
|
||||
|
||||
@prop({ required: false, default: '' })
|
||||
orderId?: string;
|
||||
|
||||
@prop({ required: true, default: '' })
|
||||
giftId: number; // giftCode表的id
|
||||
|
||||
@prop({ required: true, default: '' })
|
||||
code: string; // 兑换码
|
||||
|
||||
public static async record(roleId: string, roleName: string, serverId: number, giftId: number, code: string, orderId?: string) {
|
||||
await UserGiftCodeDetailModel.insertMany([{ roleId, roleName, serverId, giftId, code, orderId }]);
|
||||
}
|
||||
|
||||
public static async checkHasUsed(roleId: string, id: number) {
|
||||
let result = await UserGiftCodeDetailModel.exists({ giftId: id, roleId });
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async checkOrderHasUsed(id: number, orderId: string) {
|
||||
let result = await UserGiftCodeDetailModel.exists({ giftId: id, orderId });
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export const UserGiftCodeDetailModel = getModelForClass(UserGiftCodeDetail);
|
||||
|
||||
export interface UserGiftCodeDetailType extends Pick<DocumentType<UserGiftCodeDetail>, keyof UserGiftCodeDetail> { }
|
||||
export type UserGiftCodeDetailParam = Partial<UserGiftCodeDetailType>;
|
||||
@@ -18,6 +18,7 @@ import { RegionModel } from '@db/Region';
|
||||
import { ActivityPublicAccountCodeModel } from '@db/ActivityPublicAccountCode';
|
||||
import { GiftCodeDetailModel } from '@db/GiftCodeDetail';
|
||||
import { GiftCodeModel } from '@db/GiftCode';
|
||||
import { UserGiftCodeDetailModel } from '@db/UserGiftCodeDetail';
|
||||
|
||||
/**
|
||||
* Test Service
|
||||
@@ -473,8 +474,13 @@ export default class Sdk extends Service {
|
||||
if(checkHasUse) {
|
||||
return resResult(SDK_37_ACTIVITY_CODE.ORDER_DUPLICATE);
|
||||
}
|
||||
let checkHasUse2 = await UserGiftCodeDetailModel.checkOrderHasUsed(giftCodeDetail.giftId, params.order_id);
|
||||
if(checkHasUse2) {
|
||||
return resResult(SDK_37_ACTIVITY_CODE.ORDER_DUPLICATE);
|
||||
}
|
||||
|
||||
await GiftCodeDetailModel.increaseUsedNum(giftCodeDetail.code, role.roleId, role.roleName, role.serverId, params.order_id);
|
||||
await UserGiftCodeDetailModel.record(role.roleId, role.roleName, role.serverId, giftCodeDetail.giftId, giftCodeDetail.code, params.order_id);
|
||||
await GiftCodeDetailModel.increaseUsedNum(giftCodeDetail.code);
|
||||
await GiftCodeModel.increaseUsedNum(giftCode.id);
|
||||
|
||||
await ctx.service.utils.pushGiftCodeChannel(role.roleId, giftCode.id);
|
||||
|
||||
Reference in New Issue
Block a user