qrcode-framework
Version:
123 lines • 7.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const sequelize_1 = require("sequelize");
const ErrorCode_1 = require("../common/ErrorCode");
const BaseService_1 = require("../core/BaseService");
const model_1 = require("../model");
const eKey_1 = require("../model/eKey");
class EKeyService extends BaseService_1.default {
async applyEKey(key, uid, meta) {
const user = await model_1.User.findByPk(uid);
if (!user) {
throw new ErrorCode_1.HttpError({
errorCode: ErrorCode_1.ERROR_CODE.USER.NOT_FOUND,
status: 403,
message: '当前用户不存在',
});
}
const now = Date.now();
const where = {
key,
deleted: false,
status: 1,
startAt: {
[sequelize_1.Op.or]: [
{
[sequelize_1.Op.is]: null,
},
{
[sequelize_1.Op.lte]: now,
},
],
},
endAt: {
[sequelize_1.Op.or]: [
{
[sequelize_1.Op.is]: null,
},
{
[sequelize_1.Op.gte]: now,
},
],
},
};
const eKey = await eKey_1.EKey.findOne({
where,
});
if (!eKey) {
throw new ErrorCode_1.HttpError({
errorCode: ErrorCode_1.ERROR_CODE.COMMON.NOT_FOUND,
status: 404,
message: '兑换码有误或已经过期',
});
}
const eKeyRecord = await eKey_1.EKeyRecord.findOne({
where: {
eid: eKey.id,
uid,
},
});
if (eKeyRecord) {
throw new ErrorCode_1.HttpError({
errorCode: ErrorCode_1.ERROR_CODE.E_KEY.HAS_GOT,
status: 400,
message: '您已兑换,不能重复参',
});
}
return await global.sequelize.transaction(async (t) => {
// 添加兑换记录
await eKey_1.EKeyRecord.bulkCreate([{
eid: eKey.id,
uid,
meta,
}], {
transaction: t,
ignoreDuplicates: true,
});
let message = '该兑换码没有兑换物品关联!';
if (Array.isArray(eKey.reward) && eKey.reward.length > 0) {
message = '您已领取';
for (const r of eKey.reward) {
if (r.type === 1) { // 奖励积分
await this.addIntegral(uid, eKey, r.value, t);
message += ` [积分:${r.value}]`;
}
}
}
return {
reword: eKey.reward,
message,
};
});
}
async addIntegral(uid, eKey, value, t) {
const integral = await model_1.UserIntegral.findOne({
where: {
uid,
},
});
// 添加积分
await integral.increment({ value }, {
transaction: t,
});
// 添加积分记录
await model_1.UserIntegralRecord.create({
uid,
value,
latestValue: integral.value,
type: model_1.INTEGRAL_TYPE.E_KEY,
description: `使用兑换码【${eKey.key}】`,
meta: {
uid,
value,
type: model_1.INTEGRAL_TYPE.E_KEY,
des: '使用兑换码',
eKey: eKey.key,
},
}, {
transaction: t,
});
}
}
exports.default = EKeyService;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRUtleVNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJFS2V5U2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUE2QjtBQUM3QixtREFBMEQ7QUFDMUQscURBQThDO0FBQzlDLG9DQUErRTtBQUMvRSx3Q0FBK0M7QUFFL0MsTUFBcUIsV0FBWSxTQUFRLHFCQUFXO0lBQ3pDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sWUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1AsTUFBTSxJQUFJLHFCQUFTLENBQUM7Z0JBQ2hCLFNBQVMsRUFBRSxzQkFBVSxDQUFDLElBQUksQ0FBQyxTQUFTO2dCQUNwQyxNQUFNLEVBQUUsR0FBRztnQkFDWCxPQUFPLEVBQUUsU0FBUzthQUNyQixDQUFDLENBQUM7U0FDTjtRQUVELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QixNQUFNLEtBQUssR0FBRztZQUNWLEdBQUc7WUFDSCxPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxDQUFDO1lBQ1QsT0FBTyxFQUFFO2dCQUNMLENBQUMsY0FBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO29CQUNMO3dCQUNJLENBQUMsY0FBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUk7cUJBQ2hCO29CQUNEO3dCQUNJLENBQUMsY0FBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUc7cUJBQ2hCO2lCQUNKO2FBQ0o7WUFDRCxLQUFLLEVBQUU7Z0JBQ0gsQ0FBQyxjQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7b0JBQ0w7d0JBQ0ksQ0FBQyxjQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSTtxQkFDaEI7b0JBQ0Q7d0JBQ0ksQ0FBQyxjQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRztxQkFDaEI7aUJBQ0o7YUFDSjtTQUNKLENBQUM7UUFDRixNQUFNLElBQUksR0FBRyxNQUFNLFdBQUksQ0FBQyxPQUFPLENBQUM7WUFDNUIsS0FBSztTQUNSLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDUCxNQUFNLElBQUkscUJBQVMsQ0FBQztnQkFDaEIsU0FBUyxFQUFFLHNCQUFVLENBQUMsTUFBTSxDQUFDLFNBQVM7Z0JBQ3RDLE1BQU0sRUFBRSxHQUFHO2dCQUNYLE9BQU8sRUFBRSxZQUFZO2FBQ3hCLENBQUMsQ0FBQztTQUNOO1FBQ0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxpQkFBVSxDQUFDLE9BQU8sQ0FBQztZQUN4QyxLQUFLLEVBQUU7Z0JBQ0gsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNaLEdBQUc7YUFDTjtTQUNKLENBQUMsQ0FBQztRQUNILElBQUksVUFBVSxFQUFFO1lBQ1osTUFBTSxJQUFJLHFCQUFTLENBQUM7Z0JBQ2hCLFNBQVMsRUFBRSxzQkFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPO2dCQUNuQyxNQUFNLEVBQUUsR0FBRztnQkFDWCxPQUFPLEVBQUUsWUFBWTthQUN4QixDQUFDLENBQUM7U0FDTjtRQUVELE9BQU8sTUFBTSxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEQsU0FBUztZQUNULE1BQU0saUJBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDekIsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFO29CQUNaLEdBQUc7b0JBQ0gsSUFBSTtpQkFDUCxDQUFDLEVBQUU7Z0JBQ0EsV0FBVyxFQUFFLENBQUM7Z0JBQ2QsZ0JBQWdCLEVBQUUsSUFBSTthQUN6QixDQUFDLENBQUM7WUFDSCxJQUFJLE9BQU8sR0FBRyxlQUFlLENBQUM7WUFFOUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3RELE9BQU8sR0FBRyxNQUFNLENBQUM7Z0JBQ2pCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtvQkFDekIsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLE9BQU87d0JBQ3ZCLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQzlDLE9BQU8sSUFBSSxRQUFRLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQztxQkFDakM7aUJBQ0o7YUFDSjtZQUVELE9BQU87Z0JBQ0gsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixPQUFPO2FBQ1YsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFhLEVBQUUsQ0FBQztRQUNqRCxNQUFNLFFBQVEsR0FBRyxNQUFNLG9CQUFZLENBQUMsT0FBTyxDQUFDO1lBQ3hDLEtBQUssRUFBRTtnQkFDSCxHQUFHO2FBQ047U0FDSixDQUFDLENBQUM7UUFDSCxPQUFPO1FBQ1AsTUFBTSxRQUFTLENBQUMsU0FBUyxDQUFDLEVBQUMsS0FBSyxFQUFDLEVBQUU7WUFDL0IsV0FBVyxFQUFFLENBQUM7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsU0FBUztRQUNULE1BQU0sMEJBQWtCLENBQUMsTUFBTSxDQUFDO1lBQ3hCLEdBQUc7WUFDSCxLQUFLO1lBQ0wsV0FBVyxFQUFFLFFBQVMsQ0FBQyxLQUFLO1lBQzVCLElBQUksRUFBRSxxQkFBYSxDQUFDLEtBQUs7WUFDekIsV0FBVyxFQUFFLFNBQVMsSUFBSSxDQUFDLEdBQUcsR0FBRztZQUNqQyxJQUFJLEVBQUU7Z0JBQ0YsR0FBRztnQkFDSCxLQUFLO2dCQUNMLElBQUksRUFBRSxxQkFBYSxDQUFDLEtBQUs7Z0JBQ3pCLEdBQUcsRUFBRSxPQUFPO2dCQUNaLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRzthQUNqQjtTQUNKLEVBQUU7WUFDQyxXQUFXLEVBQUUsQ0FBQztTQUNqQixDQUFDLENBQUM7SUFDWCxDQUFDO0NBQ0o7QUF0SEQsOEJBc0hDIn0=