|
|
/* eslint-disable array-callback-return */
|
|
|
const {ActWheelSurfConf, ActWheelSurfPrize, ActWheelSurfUser, Activity} = require('../../../db');
|
|
|
const {ActWheelSurfConf, ActWheelSurfPrize, ActWheelSurfUser, Activity, sequelize} = require('../../../db');
|
|
|
|
|
|
// const md5 = require('yoho-md5');
|
|
|
const _ = require('lodash');
|
...
|
...
|
@@ -108,8 +108,8 @@ class ActWheelSurfModel extends global.yoho.BaseModel { |
|
|
|
|
|
obj.create_time = {gt: startTime, lte: endTime};
|
|
|
residueCount = data.conf.day_limit_times - await ActWheelSurfUser.count({
|
|
|
where: obj
|
|
|
});
|
|
|
where: obj
|
|
|
});
|
|
|
} else {
|
|
|
// 活动最大次数
|
|
|
residueCount = data.conf.act_total_times - await ActWheelSurfUser.count({where: obj});
|
...
|
...
|
@@ -164,8 +164,8 @@ class ActWheelSurfModel extends global.yoho.BaseModel { |
|
|
|
|
|
obj.create_time = {gt: startTime, lte: endTime};
|
|
|
residueCount = conf.day_limit_times - await ActWheelSurfUser.count({
|
|
|
where: obj
|
|
|
});
|
|
|
where: obj
|
|
|
});
|
|
|
} else {
|
|
|
// 活动最大次数
|
|
|
residueCount = conf.act_total_times - await ActWheelSurfUser.count({where: obj});
|
...
|
...
|
@@ -179,7 +179,7 @@ class ActWheelSurfModel extends global.yoho.BaseModel { |
|
|
// 获取每个奖品获取它们的中奖范围
|
|
|
let arr = {}, oldValue;
|
|
|
|
|
|
prize.map(function (value, index) {
|
|
|
prize.map(function(value, index) {
|
|
|
if (value.chance) {
|
|
|
if (typeof(oldValue) === 'undefined') {
|
|
|
arr[index] = {maxValue: value.chance, leastValue: 0};
|
...
|
...
|
@@ -198,7 +198,7 @@ class ActWheelSurfModel extends global.yoho.BaseModel { |
|
|
let random = Math.random() * 100;
|
|
|
|
|
|
// 判定随机数在奖品池子取件 选定中奖奖品
|
|
|
let getPrize, sendResult = {}, result;
|
|
|
let getPrize, sendResult = {}, result, reduce;
|
|
|
|
|
|
for (let i in arr) {
|
|
|
if (arr[i].maxValue >= random && arr[i].leastValue < random) {
|
...
|
...
|
@@ -208,21 +208,20 @@ class ActWheelSurfModel extends global.yoho.BaseModel { |
|
|
}
|
|
|
|
|
|
if (getPrize.type !== 1) {
|
|
|
// 校验剩余库存
|
|
|
if (getPrize.total_left > 0) {
|
|
|
// 减库存
|
|
|
await getPrize.decrement('total_left');
|
|
|
} else {
|
|
|
// 查询有没有等于type1(谢谢惠顾)的商品 如果没有 返回概率最商品
|
|
|
getPrize = null;
|
|
|
for (let item of prize) {
|
|
|
if (item.type === 1) {
|
|
|
getPrize = item;
|
|
|
// 校验剩余库存 减库存
|
|
|
reduce = await ActWheelSurfPrize.update({total_left: sequelize.literal('`total_left`-1')}, {where: {total_left: {$gt: 0}, id: getPrize.id}});
|
|
|
|
|
|
// 如果库存不够则返回当前type=1的商品
|
|
|
if (reduce[0] !== 1) {
|
|
|
for (let p of prize) {
|
|
|
if (p.type === 1) {
|
|
|
getPrize = p;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
getPrize = getPrize.dataValues;
|
|
|
if (getPrize.type === 1) {
|
|
|
sendResult.code = 200;
|
...
|
...
|
@@ -294,7 +293,7 @@ class ActWheelSurfModel extends global.yoho.BaseModel { |
|
|
if (sendResult.code !== 200) {
|
|
|
getPrize = null;
|
|
|
for (let item of prize) {
|
|
|
if (item.dataValues.type === 1) {
|
|
|
if (item.type === 1) {
|
|
|
getPrize = item.dataValues;
|
|
|
break;
|
|
|
}
|
...
|
...
|
|