diff --git a/shared/consts/statusCode.ts b/shared/consts/statusCode.ts index 5952e2327..c63e41202 100644 --- a/shared/consts/statusCode.ts +++ b/shared/consts/statusCode.ts @@ -799,4 +799,5 @@ export const SDK_37_ACTIVITY_CODE = { GIFT_CHANNEL_ERR: { code: 20007, simStr: '礼包不可在此渠道使用' }, TIME_IS_EXPIRED: { code: 20008, simStr: '时间戳已过期' }, SERVER_NOT_FOUND: { code: 20009, simStr: '服务器未找到' }, + GIFT_CODE_CANNOT_USE: { code: 20010, simStr: '该礼包码不可使用' }, } \ No newline at end of file diff --git a/shared/db/GiftCodeDetail.ts b/shared/db/GiftCodeDetail.ts index 709581001..3b2932870 100644 --- a/shared/db/GiftCodeDetail.ts +++ b/shared/db/GiftCodeDetail.ts @@ -63,6 +63,12 @@ export default class GiftCodeDetail extends BaseModel { return result; } + public static async checkOrderHasUsed(id: number, orderId: string) { + let result = await GiftCodeDetailModel.exists({ giftId: id, 'record.orderId': orderId }); + return result; + } + + public static async findAllCodeByGiftId(id: number, cnt: number) { let n = Math.ceil(cnt/1000); let result: GiftCodeDetailType[] = []; diff --git a/web-server/app/service/Sdk.ts b/web-server/app/service/Sdk.ts index 72560a2ae..a5a944139 100644 --- a/web-server/app/service/Sdk.ts +++ b/web-server/app/service/Sdk.ts @@ -454,8 +454,8 @@ export default class Sdk extends Service { if(!giftCode) { return resResult(SDK_37_ACTIVITY_CODE.GIFT_NOT_FOUND); } - if(giftCode.generateType == GIFT_GENERATE_TYPE.ONE_TO_ONE) { // 一人一条,单条不能被多人使用 - if(giftCodeDetail.usedNum > 0) return resResult(SDK_37_ACTIVITY_CODE.USE_CNT_MAX); + if(giftCode.generateType != GIFT_GENERATE_TYPE.ONE_TO_MANY) { // 一人一条,单条不能被多人使用 + return resResult(SDK_37_ACTIVITY_CODE.GIFT_CODE_CANNOT_USE); } if(!giftCode.isEnable) return resResult(SDK_37_ACTIVITY_CODE.GIFT_CODE_HAS_EXPIRED); if (giftCode.beginTime > nowSeconds()) return resResult(SDK_37_ACTIVITY_CODE.GIFT_CODE_NOT_START); @@ -467,12 +467,8 @@ export default class Sdk extends Service { let role = await RoleModel.findByUid(user.uid, params.server_id); if(!role) return resResult(SDK_37_ACTIVITY_CODE.ROLE_NOT_FOUND); - - if (giftCodeDetail.roleIds.indexOf(role.roleId) != -1) { - return resResult(SDK_37_ACTIVITY_CODE.ORDER_DUPLICATE); - } - let checkHasUse = await GiftCodeDetailModel.checkHasUsed(role.roleId, giftCodeDetail.giftId); + let checkHasUse = await GiftCodeDetailModel.checkOrderHasUsed(giftCodeDetail.giftId, params.order_id); if(checkHasUse) { return resResult(SDK_37_ACTIVITY_CODE.ORDER_DUPLICATE); }