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

Commit 15966199 authored by jiangxiulong's avatar jiangxiulong

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

parent 5c94af08
...@@ -30,7 +30,6 @@ public class SweetConstant { ...@@ -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_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_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_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_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_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_USER = "sweet:integralActivity:Draw:activityId:";
......
...@@ -5,10 +5,12 @@ import io.swagger.annotations.ApiModel; ...@@ -5,10 +5,12 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* <p> * <p>
...@@ -62,6 +64,11 @@ public class SweetIntegralActivityPrizeFormParam implements Serializable,Cloneab ...@@ -62,6 +64,11 @@ public class SweetIntegralActivityPrizeFormParam implements Serializable,Cloneab
@NotNull(message = "winningProbability不能为空") @NotNull(message = "winningProbability不能为空")
private BigDecimal winningProbability; private BigDecimal winningProbability;
@Valid
@ApiModelProperty(value = "奖品列表", example = "")
@NotNull(message = "prizeList不能为空")
private List<SweetIntegralActivityPrizeRelationFormParam> prizeRelationList;
private static final SweetIntegralActivityPrizeFormParam obj = new SweetIntegralActivityPrizeFormParam(); private static final SweetIntegralActivityPrizeFormParam obj = new SweetIntegralActivityPrizeFormParam();
public static SweetIntegralActivityPrizeFormParam getNew() { 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 ...@@ -70,9 +70,8 @@ public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralA
sweetIntegralActivityPrize.setPrizeId(IDGenerator.nextSnowId()); sweetIntegralActivityPrize.setPrizeId(IDGenerator.nextSnowId());
sweetIntegralActivityPrize.setIntegralActivityId(integralActivityId); sweetIntegralActivityPrize.setIntegralActivityId(integralActivityId);
sweetIntegralActivityPrizeMapper.insert(sweetIntegralActivityPrize); sweetIntegralActivityPrizeMapper.insert(sweetIntegralActivityPrize);
// 奖品库存和中奖人数redis // 奖品库存
sweetRedisAdminUtils.incrIntegralActivityPrizeNum(integralActivityId, sweetIntegralActivityPrize.getPrizeId(), sweetIntegralActivityPrize.getPrizeNum()); sweetRedisAdminUtils.incrIntegralActivityPrizeNum(integralActivityId, sweetIntegralActivityPrize.getPrizeId(), sweetIntegralActivityPrize.getPrizeNum());
sweetRedisAdminUtils.incrIntegralActivityPrizeWinnersNum(integralActivityId, sweetIntegralActivityPrize.getPrizeId(), sweetIntegralActivityPrize.getWinnersNum());
} }
} }
// 活动redis处理 // 活动redis处理
...@@ -115,21 +114,13 @@ public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralA ...@@ -115,21 +114,13 @@ public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralA
Wrappers.lambdaUpdate(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getPrizeId, prizeId) Wrappers.lambdaUpdate(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getPrizeId, prizeId)
); );
Integer prizeNum = sweetIntegralActivityPrizeOld.getPrizeNum(); Integer prizeNum = sweetIntegralActivityPrizeOld.getPrizeNum();
Integer winnersNum = sweetIntegralActivityPrizeOld.getWinnersNum();
Integer prizeNumNew = sweetIntegralActivityPrize.getPrizeNum(); Integer prizeNumNew = sweetIntegralActivityPrize.getPrizeNum();
Integer winnersNumNew = sweetIntegralActivityPrize.getWinnersNum();
int prizeNumDiff = prizeNumNew - prizeNum; int prizeNumDiff = prizeNumNew - prizeNum;
int winnersNumDiff = winnersNumNew - winnersNum;
if (prizeNumDiff > 0) {//增加库存 if (prizeNumDiff > 0) {//增加库存
sweetRedisAdminUtils.incrIntegralActivityPrizeNum(integralActivityId, prizeId, prizeNumDiff); sweetRedisAdminUtils.incrIntegralActivityPrizeNum(integralActivityId, prizeId, prizeNumDiff);
} else if(prizeNumDiff < 0) {// 减少库存 } else if(prizeNumDiff < 0) {// 减少库存
sweetRedisAdminUtils.decrIntegralActivityPrizeNum(integralActivityId, prizeId, Math.abs(prizeNumDiff)); 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处理 // 活动redis处理
......
...@@ -5,7 +5,6 @@ import com.liquidnet.service.sweet.constant.SweetConstant; ...@@ -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.IntegralActivityDrawVo;
import com.liquidnet.service.sweet.dto.vo.IntegralActivityVo; import com.liquidnet.service.sweet.dto.vo.IntegralActivityVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.LinkedList; import java.util.LinkedList;
...@@ -14,8 +13,6 @@ import java.util.List; ...@@ -14,8 +13,6 @@ import java.util.List;
@Component @Component
public class SweetRedisAdminUtils { public class SweetRedisAdminUtils {
@Autowired
private MongoTemplate mongoTemplate;
@Autowired @Autowired
private RedisDataSourceUtil redisDataSourceUtil; private RedisDataSourceUtil redisDataSourceUtil;
...@@ -37,14 +34,6 @@ public class SweetRedisAdminUtils { ...@@ -37,14 +34,6 @@ public class SweetRedisAdminUtils {
redisDataSourceUtil.getRedisSweetUtil().incr(redisKey, num); 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) { public void decrIntegralActivityPrizeNum(String integralActivityId, String prizeId, Integer num) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_NUM String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_NUM
.concat(integralActivityId) .concat(integralActivityId)
...@@ -53,14 +42,6 @@ public class SweetRedisAdminUtils { ...@@ -53,14 +42,6 @@ public class SweetRedisAdminUtils {
redisDataSourceUtil.getRedisSweetUtil().decr(redisKey, num); 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) { public void setIntegralActivityDraw(LinkedList<IntegralActivityDrawVo> sweetIntegralActivityDraws, String integralActivityId, String userId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_IN_USER String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_IN_USER
.concat(integralActivityId) .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 ...@@ -116,8 +116,7 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
ArrayList<SweetIntegralActivityPrize> sweetIntegralActivityPrizeArrayList = SweetNewObjectUtil.getSweetIntegralActivityPrizeArrayList(); ArrayList<SweetIntegralActivityPrize> sweetIntegralActivityPrizeArrayList = SweetNewObjectUtil.getSweetIntegralActivityPrizeArrayList();
for (SweetIntegralActivityPrize info : prizeList) { for (SweetIntegralActivityPrize info : prizeList) {
int integralActivityPrizeNum = redisDataUtils.getIntegralActivityPrizeNum(integralActivityId, info.getPrizeId()); int integralActivityPrizeNum = redisDataUtils.getIntegralActivityPrizeNum(integralActivityId, info.getPrizeId());
int integralActivityPrizeWinnersNum = redisDataUtils.getIntegralActivityPrizeWinnersNum(integralActivityId, info.getPrizeId()); if (integralActivityPrizeNum > 0) {
if (integralActivityPrizeNum > 0 && integralActivityPrizeWinnersNum > 0) {
sweetIntegralActivityPrizeArrayList.add(info); sweetIntegralActivityPrizeArrayList.add(info);
} }
} }
...@@ -130,19 +129,12 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg ...@@ -130,19 +129,12 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
// 减库存 顺便判断库存是否够 -1的时候回滚回去 // 减库存 顺便判断库存是否够 -1的时候回滚回去
long activityPrizeNum = redisDataUtils.decrIntegralActivityPrizeNum(integralActivityId, sweetIntegralActivityPrizeVo.getPrizeId(), 1); long activityPrizeNum = redisDataUtils.decrIntegralActivityPrizeNum(integralActivityId, sweetIntegralActivityPrizeVo.getPrizeId(), 1);
long activityPrizeWinnersNum = redisDataUtils.decrIntegralActivityPrizeWinnersNum(integralActivityId, sweetIntegralActivityPrizeVo.getPrizeId(), 1);
log.info("奖品库存情况 activityPrizeNum:{}", activityPrizeNum); log.info("奖品库存情况 activityPrizeNum:{}", activityPrizeNum);
log.info("奖品库存情况 activityPrizeWinnersNum:{}", activityPrizeWinnersNum);
if (activityPrizeNum < 0) {// 库存不够了 if (activityPrizeNum < 0) {// 库存不够了
long prizeNum = redisDataUtils.incrIntegralActivityPrizeNum(integralActivityId, sweetIntegralActivityPrizeVo.getPrizeId(), 1); long prizeNum = redisDataUtils.incrIntegralActivityPrizeNum(integralActivityId, sweetIntegralActivityPrizeVo.getPrizeId(), 1);
log.info("奖品库存情况回滚后 prizeNum:{}", prizeNum); log.info("奖品库存情况回滚后 prizeNum:{}", prizeNum);
return ResponseDto.failure("活动太火爆了,奖品已经没有库存了!"); 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()); ResponseDto<String> de2111 = feignStoneIntegralClient.de2111(userId, integralActivity.getActivityNum(), integralActivity.getActivityTitle());
log.info("减积分返回值情况 de2111:{}", de2111); log.info("减积分返回值情况 de2111:{}", de2111);
......
...@@ -693,19 +693,6 @@ public class RedisDataUtils { ...@@ -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) { public long decrIntegralActivityPrizeNum(String integralActivityId, String prizeId, int num) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_NUM String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_NUM
.concat(integralActivityId) .concat(integralActivityId)
...@@ -715,15 +702,6 @@ public class RedisDataUtils { ...@@ -715,15 +702,6 @@ public class RedisDataUtils {
return decr; 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) { public long incrIntegralActivityPrizeNum(String integralActivityId, String prizeId, Integer num) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_NUM String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_PRIZE_NUM
.concat(integralActivityId) .concat(integralActivityId)
...@@ -732,14 +710,6 @@ public class RedisDataUtils { ...@@ -732,14 +710,6 @@ public class RedisDataUtils {
return redisUtil.incr(redisKey, num); 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) { public IntegralActivityDrawVo getIntegralActivityDrawInfo(String drawId) {
String redisKeyDraw = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_INFO String redisKeyDraw = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_INFO
.concat(drawId); .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