记得上下班打卡 | git大法好,push需谨慎

Commit d70c77ae authored by 胡佳晨's avatar 胡佳晨

Merge remote-tracking branch 'origin/dev_stone' into dev_stone

parents 1f0b325e edfc5552
......@@ -26,7 +26,7 @@
</div>
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="sweet:integralActivity:create">
<a class="btn btn-success" onclick="$.operate.addTab(1)" shiro:hasPermission="sweet:integralActivity:create">
<i class="fa fa-plus"></i> 添加
</a>
</div>
......@@ -52,7 +52,7 @@
$(function () {
var options = {
url: prefix + "/list",
updateUrl: prefix + "/formView", // /update/{id}
updateUrl: prefix + "/formView?id={id}", // /update/{id}
createUrl: prefix + "/formView",
detailUrl: "/sweet/IntegralActivityDraw/listView/{id}",
exportUrl: "/sweet/IntegralActivityDraw/export",
......
......@@ -69,8 +69,8 @@ public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralA
sweetIntegralActivityPrize.setIntegralActivityId(integralActivityId);
sweetIntegralActivityPrizeMapper.insert(sweetIntegralActivityPrize);
// 奖品库存和中奖人数redis
sweetRedisAdminUtils.setIntegralActivityPrizeNum(integralActivityId, sweetIntegralActivityPrize);
sweetRedisAdminUtils.setIntegralActivityPrizeWinnersNum(integralActivityId, sweetIntegralActivityPrize);
sweetRedisAdminUtils.incrIntegralActivityPrizeNum(integralActivityId, sweetIntegralActivityPrize.getPrizeId(), sweetIntegralActivityPrize.getPrizeNum());
sweetRedisAdminUtils.incrIntegralActivityPrizeWinnersNum(integralActivityId, sweetIntegralActivityPrize.getPrizeId(), sweetIntegralActivityPrize.getWinnersNum());
}
}
// 活动redis处理
......@@ -98,10 +98,31 @@ public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralA
SweetIntegralActivityPrize sweetIntegralActivityPrize = SweetIntegralActivityPrizeFormParam.getNew().copy(prize);
sweetIntegralActivityPrize.setUpdatedAt(LocalDateTime.now());
sweetIntegralActivityPrize.setIntegralActivityId(integralActivityId);
String prizeId = prize.getPrizeId();
sweetIntegralActivityPrizeMapper.update(
sweetIntegralActivityPrize,
Wrappers.lambdaUpdate(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getPrizeId, prize.getPrizeId())
Wrappers.lambdaUpdate(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getPrizeId, prizeId)
);
// 处理奖品库存
SweetIntegralActivityPrize sweetIntegralActivityPrizeOld = sweetIntegralActivityPrizeMapper.selectOne(
Wrappers.lambdaQuery(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getPrizeId, prizeId)
);
Integer prizeNum = sweetIntegralActivityPrizeOld.getPrizeNum();
Integer winnersNum = sweetIntegralActivityPrizeOld.getWinnersNum();
Integer prizeNumNew = sweetIntegralActivityPrize.getPrizeNum();
Integer winnersNumNew = sweetIntegralActivityPrize.getWinnersNum();
int prizeNumDiff = prizeNumNew - prizeNum;
int winnersNumDiff = winnersNumNew - winnersNum;
if (prizeNumDiff > 0) {//增加库存
sweetRedisAdminUtils.incrIntegralActivityPrizeNum(integralActivityId, prizeId, prizeNumDiff);
} else if(prizeNumDiff < 0) {// 减少库存
sweetRedisAdminUtils.decrIntegralActivityPrizeNum(integralActivityId, prizeId, Math.abs(prizeNumDiff));
}
if (winnersNumDiff > 0) {//增加中奖人数
sweetRedisAdminUtils.incrIntegralActivityPrizeWinnersNum(integralActivityId, prizeId, winnersNumDiff);
} else if(winnersNumDiff < 0) {// 减少中奖人数
sweetRedisAdminUtils.decrIntegralActivityPrizeWinnersNum(integralActivityId, prizeId, Math.abs(winnersNumDiff));
}
}
}
// 活动redis处理
......
......@@ -3,7 +3,6 @@ package com.liquidnet.client.admin.zhengzai.sweet.utils;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.sweet.constant.SweetConstant;
import com.liquidnet.service.sweet.dto.vo.IntegralActivityVo;
import com.liquidnet.service.sweet.entity.SweetIntegralActivityPrize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Component;
......@@ -27,19 +26,35 @@ public class SweetRedisAdminUtils {
boolean set = redisUtil.set(redisKey, integralActivityVo);
}
public void setIntegralActivityPrizeNum(String integralActivityId, SweetIntegralActivityPrize sweetIntegralActivityPrize) {
public void incrIntegralActivityPrizeNum(String integralActivityId, String prizeId, Integer num) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_NUM
.concat(integralActivityId)
.concat(":prizeId:")
.concat(sweetIntegralActivityPrize.getPrizeId());
redisUtil.incr(redisKey, sweetIntegralActivityPrize.getPrizeNum());
.concat(prizeId);
redisUtil.incr(redisKey, num);
}
public void setIntegralActivityPrizeWinnersNum(String integralActivityId, SweetIntegralActivityPrize sweetIntegralActivityPrize) {
public void incrIntegralActivityPrizeWinnersNum(String integralActivityId, String prizeId, Integer num) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_WINNERS_NUM
.concat(integralActivityId)
.concat(":prizeId:")
.concat(sweetIntegralActivityPrize.getPrizeId());
redisUtil.incr(redisKey, sweetIntegralActivityPrize.getPrizeNum());
.concat(prizeId);
redisUtil.incr(redisKey, num);
}
public void decrIntegralActivityPrizeNum(String integralActivityId, String prizeId, Integer num) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_NUM
.concat(integralActivityId)
.concat(":prizeId:")
.concat(prizeId);
redisUtil.decr(redisKey, num);
}
public void decrIntegralActivityPrizeWinnersNum(String integralActivityId, String prizeId, Integer num) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_WINNERS_NUM
.concat(integralActivityId)
.concat(":prizeId:")
.concat(prizeId);
redisUtil.decr(redisKey, num);
}
}
......@@ -97,4 +97,6 @@ public class SweetConstant {
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_ALL_LIST = "sweet:integralActivity:Draw:activityId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_USER = "sweet:integralActivity:Draw:activityId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_IN_USER = "sweet:integralActivity:DrawIn:activityId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_NUM = "sweet:integralActivity:prizeNum:activityId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_WINNERS_NUM = "sweet:integralActivity:prizeWinnersNum:activityId:";
}
......@@ -16,6 +16,7 @@ import com.liquidnet.service.sweet.utils.SweetNewObjectUtil;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.time.LocalDateTime;
......@@ -60,17 +61,29 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
// TODO: 2021/10/27 判断用户积分是否>=integralActivity.setActivityNum();
// TODO 如果库存没了 限制的中奖人数到了就从列表剔出
// 如果库存没了 限制的中奖人数到了就从列表剔出 列表为空就都没有库存了
List<SweetIntegralActivityPrize> prizeList = integralActivity.getPrizeList();
ArrayList<SweetIntegralActivityPrize> sweetIntegralActivityPrizeArrayList = SweetNewObjectUtil.getSweetIntegralActivityPrizeArrayList();
for (SweetIntegralActivityPrize info : prizeList) {
sweetIntegralActivityPrizeArrayList.add(info);
int integralActivityPrizeNum = redisDataUtils.getIntegralActivityPrizeNum(integralActivityId, info.getPrizeId());
int integralActivityPrizeWinnersNum = redisDataUtils.getIntegralActivityPrizeWinnersNum(integralActivityId, info.getPrizeId());
if (integralActivityPrizeNum > 0 && integralActivityPrizeWinnersNum > 0) {
sweetIntegralActivityPrizeArrayList.add(info);
}
}
if (CollectionUtils.isEmpty(sweetIntegralActivityPrizeArrayList)) {
return ResponseDto.failure("活动太火爆了,奖品已经没有库存啦~");
}
SweetIntegralActivityPrize sweetIntegralActivityPrize = this.lotteryDraw(sweetIntegralActivityPrizeArrayList);
SweetIntegralActivityPrizeVo sweetIntegralActivityPrizeVo = SweetIntegralActivityPrizeVo.getNew().copy(sweetIntegralActivityPrize);
// 记录
long activityPrizeNum = redisDataUtils.setIntegralActivityPrizeNum(integralActivityId, sweetIntegralActivityPrizeVo.getPrizeId(), 1);
long activityPrizeWinnersNum = redisDataUtils.setIntegralActivityPrizeWinnersNum(integralActivityId, sweetIntegralActivityPrizeVo.getPrizeId(), 1);
if (activityPrizeNum < 0 || activityPrizeWinnersNum < 0) {// 库存不够了
return ResponseDto.failure("活动太火爆了,请稍后再试");
}
SweetIntegralActivityDraw sweetIntegralActivityDraw = SweetIntegralActivityDraw.getNew();
sweetIntegralActivityDraw.setDrawId(IDGenerator.nextSnowId());
sweetIntegralActivityDraw.setIntegralActivityId(integralActivityId);
......
......@@ -674,4 +674,47 @@ public class RedisDataUtils {
// TODO: 2021/10/27 page大于1 去mongo里面取
}
public int getIntegralActivityPrizeNum(String integralActivityId, String prizeId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_NUM
.concat(integralActivityId)
.concat(":prizeId:")
.concat(prizeId);
Object obj = redisUtil.get(redisKey);
if (null == obj) {
return 0;
} else {
return (int) obj;
}
}
public int getIntegralActivityPrizeWinnersNum(String integralActivityId, String prizeId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_WINNERS_NUM
.concat(integralActivityId)
.concat(":prizeId:")
.concat(prizeId);
Object obj = redisUtil.get(redisKey);
if (null == obj) {
return 0;
} else {
return (int) obj;
}
}
public long setIntegralActivityPrizeNum(String integralActivityId, String prizeId, int num) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_NUM
.concat(integralActivityId)
.concat(":prizeId:")
.concat(prizeId);
long decr = redisUtil.decr(redisKey, num);
return decr;
}
public long setIntegralActivityPrizeWinnersNum(String integralActivityId, String prizeId, int num) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_WINNERS_NUM
.concat(integralActivityId)
.concat(":prizeId:")
.concat(prizeId);
long decr = redisUtil.decr(redisKey, num);
return decr;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment