大营销-更新日志

大营销-更新日志

12.06

  • 2.0版本部署成功
    • 增加分库分表,支持分布式部署
    • 完善用户抽奖功能

12.16

12.23

  • 引入dubbo+nacos配置

12.30

  • 引入降级策略和限流策略

TODO

达到权重值之后,可选择消耗幸运值阶梯次数,来实现保底抽奖

思路:

  • 首先,在数据库中添加两个字段,我想着是把他添加到raffle_activity_account表格中,

之前查询抽奖次数使用的是这个函数:

1
2
3
4
5
6
7
8
9
10
11
// 1. 查询用户抽奖总次数
Integer userActivityAccountTotalUseCount = raffleActivityAccountQuotaService.queryActivityAccountPartakeCount(userId,activityId);

@Override
public Integer queryActivityAccountPartakeCount(String userId, Long activityId) {
RaffleActivityAccount raffleActivityAccount = accountDao.queryActivityAccountByUserIdAndActivityId(RaffleActivityAccount.builder()
.activityId(activityId)
.userId(userId)
.build());
return raffleActivityAccount.getTotalCount()-raffleActivityAccount.getTotalCountSurplus();
}

是将总Count减去getTotalCountSurplus得到的。

  1. 步骤1:添加字段
  • 现在我想加入两个字段,1个是total_raffled_count,代表该用户已经抽过多少次的奖了,1个是available_raffled_count,代表用户当前可使用在保底抽奖上的抽奖次数。
  • 在用户抽奖,更新raffle_activity_account的时候,可以同步更新total_raffled_countraffleActivityAccount.getTotalCount()-raffleActivityAccount.getTotalCountSurplus();
  • 同时更新available_raffled_count = available_raffled_count + 1(这个1即抽奖次数,但是未来可能会开发10连抽功能,因此这个1需要修改的,参考raffle_activity_sku的做法)
  1. 步骤2:改变查询方法
1
2
3
4
5
6
7
8
@Override
public Integer queryActivityAccountPartakeCount(String userId, Long activityId) {
RaffleActivityAccount raffleActivityAccount = accountDao.queryActivityAccountByUserIdAndActivityId(RaffleActivityAccount.builder()
.activityId(activityId)
.userId(userId)
.build());
return raffleActivityAccount.getAvailableRaffledCount();
}

同时,在责任链节点中,由于也需要查询抽奖次数,因此也要做相应的修改

1
2
3
4
5
6
7
8
9
10
@Override
public Integer queryActivityAccountTotalUseCount(String userId, Long strategyId) {
Long activityId = raffleActivityDao.queryActivityIdByStrategyId(strategyId);
RaffleActivityAccount raffleActivityAccount = raffleActivityAccountDao.queryActivityAccountByUserIdAndActivityId(RaffleActivityAccount.builder()
.activityId(activityId)
.userId(userId)
.build());

return raffleActivityAccount.getAvailableRaffledCount();
}
  1. 消耗已抽奖的次数,兑换保底抽奖机会

当用户消耗抽奖次数兑换保底的时候,会扣减available_raffled_count的值,同时走规则树策略,抽保底。

  • 需要喜修改draw 这个 api,传入参数是:抽奖阶梯的id,用户id,是否需要开启保底抽奖的判断flag
  • api的功能:根据抽奖阶梯id,从raffle_activity_account中,扣去available_raffled_count次数,再保底抽奖,走责任链rule weight节点。如果不点击保底抽奖,那么就不需要走责任链rule weight节点。

使用异步线程增加10连抽的功能

  1. 系统配置一套活动、规则,发奖部分增加再来一次的奖品发放
  2. 监控系统
  3. 订单ID,引用了hutool包的雪花算法加redis自增Id作为wokerId同时把用户分库分表放在后缀,这样可以通过订单直接查询,就是太长25位(弃用了)
-------------本文结束,感谢您的阅读-------------