Authored by 李奇

Merge branch 'feature/wheel-surf' into release/6.7.9

/* 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;
}
... ...