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

Commit 15966199 authored by jiangxiulong's avatar jiangxiulong

积分活动奖品里关联多奖品表 删除不用字段操作

parent 5c94af08
......@@ -30,7 +30,6 @@ public class SweetConstant {
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_LIST = "sweet:integralActivity:list";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_INFO = "sweet:integralActivity: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:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_ID = ":prizeId:";
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:";
......
......@@ -5,10 +5,12 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* <p>
......@@ -62,6 +64,11 @@ public class SweetIntegralActivityPrizeFormParam implements Serializable,Cloneab
@NotNull(message = "winningProbability不能为空")
private BigDecimal winningProbability;
@Valid
@ApiModelProperty(value = "奖品列表", example = "")
@NotNull(message = "prizeList不能为空")
private List<SweetIntegralActivityPrizeRelationFormParam> prizeRelationList;
private static final SweetIntegralActivityPrizeFormParam obj = new SweetIntegralActivityPrizeFormParam();
public static SweetIntegralActivityPrizeFormParam getNew() {
......
package com.liquidnet.service.sweet.dto.param.admin;
import com.liquidnet.service.sweet.entity.SweetIntegralActivityPrizeRelation;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* <p>
* SweetIntegralActivityPrizeRelationFormParam
* </p>
*
* @author jiangxiulong
* @since 2021-12-02
*/
@Data
@ApiModel(value = "SweetIntegralActivityPrizeRelationFormParam", description = "积分活动创建奖品入参")
public class SweetIntegralActivityPrizeRelationFormParam implements Serializable, Cloneable {
private static final long serialVersionUID = -4381851476183020667L;
@ApiModelProperty(value = "主键id 编辑时候传", example = "429803743878963206506461")
private String prizeRelationId;
@ApiModelProperty(value = "券id", example = "429803743878963206506461")
@NotBlank(message = "couponId不能为空")
private String couponId;
@ApiModelProperty(value = "券名称", example = "优惠券")
@NotBlank(message = "couponTitle不能为空")
private String couponTitle;
private static final SweetIntegralActivityPrizeRelationFormParam obj = new SweetIntegralActivityPrizeRelationFormParam();
public static SweetIntegralActivityPrizeRelationFormParam getNew() {
try {
return (SweetIntegralActivityPrizeRelationFormParam) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetIntegralActivityPrizeRelationFormParam();
}
}
public SweetIntegralActivityPrizeRelation copy(SweetIntegralActivityPrizeRelationFormParam source) {
SweetIntegralActivityPrizeRelation activityPrizeRelation = SweetIntegralActivityPrizeRelation.getNew();
if (null == source) return null;
activityPrizeRelation.setPrizeRelationId(source.getPrizeRelationId());
activityPrizeRelation.setCouponId(source.getCouponId());
activityPrizeRelation.setCouponTitle(source.getCouponTitle());
return activityPrizeRelation;
}
}
......@@ -70,9 +70,8 @@ public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralA
sweetIntegralActivityPrize.setPrizeId(IDGenerator.nextSnowId());
sweetIntegralActivityPrize.setIntegralActivityId(integralActivityId);
sweetIntegralActivityPrizeMapper.insert(sweetIntegralActivityPrize);
// 奖品库存和中奖人数redis
// 奖品库存
sweetRedisAdminUtils.incrIntegralActivityPrizeNum(integralActivityId, sweetIntegralActivityPrize.getPrizeId(), sweetIntegralActivityPrize.getPrizeNum());
sweetRedisAdminUtils.incrIntegralActivityPrizeWinnersNum(integralActivityId, sweetIntegralActivityPrize.getPrizeId(), sweetIntegralActivityPrize.getWinnersNum());
}
}
// 活动redis处理
......@@ -115,21 +114,13 @@ public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralA
Wrappers.lambdaUpdate(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处理
......
......@@ -5,7 +5,6 @@ import com.liquidnet.service.sweet.constant.SweetConstant;
import com.liquidnet.service.sweet.dto.vo.IntegralActivityDrawVo;
import com.liquidnet.service.sweet.dto.vo.IntegralActivityVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Component;
import java.util.LinkedList;
......@@ -14,8 +13,6 @@ import java.util.List;
@Component
public class SweetRedisAdminUtils {
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
private RedisDataSourceUtil redisDataSourceUtil;
......@@ -37,14 +34,6 @@ public class SweetRedisAdminUtils {
redisDataSourceUtil.getRedisSweetUtil().incr(redisKey, num);
}
public void incrIntegralActivityPrizeWinnersNum(String integralActivityId, String prizeId, Integer num) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_WINNERS_NUM
.concat(integralActivityId)
.concat(SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_ID)
.concat(prizeId);
redisDataSourceUtil.getRedisSweetUtil().incr(redisKey, num);
}
public void decrIntegralActivityPrizeNum(String integralActivityId, String prizeId, Integer num) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_NUM
.concat(integralActivityId)
......@@ -53,14 +42,6 @@ public class SweetRedisAdminUtils {
redisDataSourceUtil.getRedisSweetUtil().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(SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_ID)
.concat(prizeId);
redisDataSourceUtil.getRedisSweetUtil().decr(redisKey, num);
}
public void setIntegralActivityDraw(LinkedList<IntegralActivityDrawVo> sweetIntegralActivityDraws, String integralActivityId, String userId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_IN_USER
.concat(integralActivityId)
......
package com.liquidnet.service.sweet.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 积分活动奖品里关联多奖品表
* </p>
*
* @author jiangxiulong
* @since 2021-12-02
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class SweetIntegralActivityPrizeRelation implements Serializable, Cloneable {
private static final long serialVersionUID = 3400664786004300429L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* prize_relation_id
*/
private String prizeRelationId;
/**
* prize_id
*/
private String prizeId;
/**
* 券id
*/
private String couponId;
/**
* 券名称
*/
private String couponTitle;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
private static final SweetIntegralActivityPrizeRelation obj = new SweetIntegralActivityPrizeRelation();
public static SweetIntegralActivityPrizeRelation getNew() {
try {
return (SweetIntegralActivityPrizeRelation) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetIntegralActivityPrizeRelation();
}
}
}
......@@ -116,8 +116,7 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
ArrayList<SweetIntegralActivityPrize> sweetIntegralActivityPrizeArrayList = SweetNewObjectUtil.getSweetIntegralActivityPrizeArrayList();
for (SweetIntegralActivityPrize info : prizeList) {
int integralActivityPrizeNum = redisDataUtils.getIntegralActivityPrizeNum(integralActivityId, info.getPrizeId());
int integralActivityPrizeWinnersNum = redisDataUtils.getIntegralActivityPrizeWinnersNum(integralActivityId, info.getPrizeId());
if (integralActivityPrizeNum > 0 && integralActivityPrizeWinnersNum > 0) {
if (integralActivityPrizeNum > 0) {
sweetIntegralActivityPrizeArrayList.add(info);
}
}
......@@ -130,19 +129,12 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
// 减库存 顺便判断库存是否够 -1的时候回滚回去
long activityPrizeNum = redisDataUtils.decrIntegralActivityPrizeNum(integralActivityId, sweetIntegralActivityPrizeVo.getPrizeId(), 1);
long activityPrizeWinnersNum = redisDataUtils.decrIntegralActivityPrizeWinnersNum(integralActivityId, sweetIntegralActivityPrizeVo.getPrizeId(), 1);
log.info("奖品库存情况 activityPrizeNum:{}", activityPrizeNum);
log.info("奖品库存情况 activityPrizeWinnersNum:{}", activityPrizeWinnersNum);
if (activityPrizeNum < 0) {// 库存不够了
long prizeNum = redisDataUtils.incrIntegralActivityPrizeNum(integralActivityId, sweetIntegralActivityPrizeVo.getPrizeId(), 1);
log.info("奖品库存情况回滚后 prizeNum:{}", prizeNum);
return ResponseDto.failure("活动太火爆了,奖品已经没有库存了!");
}
if (activityPrizeWinnersNum < 0) {// 库存不够了
long winnersNum = redisDataUtils.incrIntegralActivityPrizeWinnersNum(integralActivityId, sweetIntegralActivityPrizeVo.getPrizeId(), 1);
log.info("奖品库存情况回滚后 winnersNum:{}", winnersNum);
return ResponseDto.failure("活动太火爆了,奖品已经没有库存了~");
}
// 减积分
ResponseDto<String> de2111 = feignStoneIntegralClient.de2111(userId, integralActivity.getActivityNum(), integralActivity.getActivityTitle());
log.info("减积分返回值情况 de2111:{}", de2111);
......
......@@ -693,19 +693,6 @@ public class RedisDataUtils {
}
}
public int getIntegralActivityPrizeWinnersNum(String integralActivityId, String prizeId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_WINNERS_NUM
.concat(integralActivityId)
.concat(SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_ID)
.concat(prizeId);
Object obj = redisUtil.get(redisKey);
if (null == obj) {
return 0;
} else {
return (int) obj;
}
}
public long decrIntegralActivityPrizeNum(String integralActivityId, String prizeId, int num) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_NUM
.concat(integralActivityId)
......@@ -715,15 +702,6 @@ public class RedisDataUtils {
return decr;
}
public long decrIntegralActivityPrizeWinnersNum(String integralActivityId, String prizeId, int num) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_WINNERS_NUM
.concat(integralActivityId)
.concat(SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_ID)
.concat(prizeId);
long decr = redisUtil.decr(redisKey, num);
return decr;
}
public long incrIntegralActivityPrizeNum(String integralActivityId, String prizeId, Integer num) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_NUM
.concat(integralActivityId)
......@@ -732,14 +710,6 @@ public class RedisDataUtils {
return redisUtil.incr(redisKey, num);
}
public long incrIntegralActivityPrizeWinnersNum(String integralActivityId, String prizeId, Integer num) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_WINNERS_NUM
.concat(integralActivityId)
.concat(SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_ID)
.concat(prizeId);
return redisUtil.incr(redisKey, num);
}
public IntegralActivityDrawVo getIntegralActivityDrawInfo(String drawId) {
String redisKeyDraw = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_INFO
.concat(drawId);
......
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