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

Commit a4cb22cd authored by jiangxiulong's avatar jiangxiulong

draw

parent 2dd84168
...@@ -82,5 +82,5 @@ public class SweetConstant { ...@@ -82,5 +82,5 @@ public class SweetConstant {
public final static String REDIS_KEY_SWEET_MDSK_ARTISTS_DETAILS = "sweet:mdsk:artists:details:"; public final static String REDIS_KEY_SWEET_MDSK_ARTISTS_DETAILS = "sweet:mdsk:artists:details:";
public final static String REDIS_KEY_SWEET_MDSK_SHOP = "sweet:mdsk:artists:shop:manual:"; public final static String REDIS_KEY_SWEET_MDSK_SHOP = "sweet:mdsk:artists:shop:manual:";
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:integralActivityId:"; public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_INFO = "sweet:integralActivity:activityId:";
} }
...@@ -43,6 +43,9 @@ public class SweetIntegralActivityPrizeFormParam implements Serializable,Cloneab ...@@ -43,6 +43,9 @@ public class SweetIntegralActivityPrizeFormParam implements Serializable,Cloneab
@NotNull(message = "prizeType不能为空") @NotNull(message = "prizeType不能为空")
private Integer prizeType; private Integer prizeType;
@ApiModelProperty(required = false, value = "单次奖励数量如积分 中奖给多少物", example = "1")
private Integer prizeTypeNum;
@ApiModelProperty(value = "关联id 如商品id 券id 选择奖品的时候必传", example = "429803743878963206506461") @ApiModelProperty(value = "关联id 如商品id 券id 选择奖品的时候必传", example = "429803743878963206506461")
private String relationId; private String relationId;
...@@ -76,6 +79,7 @@ public class SweetIntegralActivityPrizeFormParam implements Serializable,Cloneab ...@@ -76,6 +79,7 @@ public class SweetIntegralActivityPrizeFormParam implements Serializable,Cloneab
sweetIntegralActivityPrize.setPrizeTitle(source.getPrizeTitle()); sweetIntegralActivityPrize.setPrizeTitle(source.getPrizeTitle());
sweetIntegralActivityPrize.setPrizeImg(source.getPrizeImg()); sweetIntegralActivityPrize.setPrizeImg(source.getPrizeImg());
sweetIntegralActivityPrize.setPrizeType(source.getPrizeType()); sweetIntegralActivityPrize.setPrizeType(source.getPrizeType());
sweetIntegralActivityPrize.setPrizeTypeNum(source.getPrizeTypeNum());
sweetIntegralActivityPrize.setRelationId(source.getRelationId()); sweetIntegralActivityPrize.setRelationId(source.getRelationId());
sweetIntegralActivityPrize.setPrizeNum(source.getPrizeNum()); sweetIntegralActivityPrize.setPrizeNum(source.getPrizeNum());
sweetIntegralActivityPrize.setWinnersNum(source.getWinnersNum()); sweetIntegralActivityPrize.setWinnersNum(source.getWinnersNum());
......
...@@ -43,6 +43,9 @@ public class SweetIntegralActivityPrizeVo implements Serializable, Cloneable { ...@@ -43,6 +43,9 @@ public class SweetIntegralActivityPrizeVo implements Serializable, Cloneable {
@ApiModelProperty(value = "奖品类型 1谢谢惠顾 2积分 3优惠券 4实物") @ApiModelProperty(value = "奖品类型 1谢谢惠顾 2积分 3优惠券 4实物")
private Integer prizeType; private Integer prizeType;
@ApiModelProperty(value = "单次奖励数量如积分 中奖给多少物")
private Integer prizeTypeNum;
@ApiModelProperty(value = "关联id 如商品id 券id") @ApiModelProperty(value = "关联id 如商品id 券id")
private String relationId; private String relationId;
...@@ -83,6 +86,7 @@ public class SweetIntegralActivityPrizeVo implements Serializable, Cloneable { ...@@ -83,6 +86,7 @@ public class SweetIntegralActivityPrizeVo implements Serializable, Cloneable {
this.setPrizeTitle(source.getPrizeTitle()); this.setPrizeTitle(source.getPrizeTitle());
this.setPrizeImg(source.getPrizeImg()); this.setPrizeImg(source.getPrizeImg());
this.setPrizeType(source.getPrizeType()); this.setPrizeType(source.getPrizeType());
this.setPrizeTypeNum(source.getPrizeTypeNum());
this.setRelationId(source.getRelationId()); this.setRelationId(source.getRelationId());
this.setPrizeNum(source.getPrizeNum()); this.setPrizeNum(source.getPrizeNum());
this.setWinnersNum(source.getWinnersNum()); this.setWinnersNum(source.getWinnersNum());
......
...@@ -37,16 +37,46 @@ public class SweetIntegralActivityDraw implements Serializable, Cloneable { ...@@ -37,16 +37,46 @@ public class SweetIntegralActivityDraw implements Serializable, Cloneable {
*/ */
private String integralActivityId; private String integralActivityId;
/**
* 活动玩一次所需积分
*/
private Integer activityNum;
/** /**
* 关联奖品id * 关联奖品id
*/ */
private String prizeId; private String prizeId;
/**
* 奖品名称
*/
private String prizeTitle;
/**
* 奖品类型 1谢谢惠顾 2积分 3优惠券 4实物
*/
private Integer prizeType;
/**
* 关联id 如商品id 券id
*/
private String relationId;
/**
* 单次奖励数量如积分 中奖给多少
*/
private Integer prizeTypeNum;
/** /**
* 关联用户id * 关联用户id
*/ */
private String userId; private String userId;
/**
* 关联用户昵称
*/
private String nickname;
/** /**
* 收货地址 * 收货地址
*/ */
......
...@@ -53,6 +53,11 @@ public class SweetIntegralActivityPrize implements Serializable, Cloneable { ...@@ -53,6 +53,11 @@ public class SweetIntegralActivityPrize implements Serializable, Cloneable {
*/ */
private Integer prizeType; private Integer prizeType;
/**
* 单次奖励数量如积分 中奖给多少物
*/
private Integer prizeTypeNum;
/** /**
* 关联id 如商品id 券id * 关联id 如商品id 券id
*/ */
......
...@@ -39,6 +39,7 @@ CREATE TABLE `sweet_integral_activity_prize` ...@@ -39,6 +39,7 @@ CREATE TABLE `sweet_integral_activity_prize`
`prize_img` varchar(255) NOT NULL DEFAULT '' COMMENT '奖品图片', `prize_img` varchar(255) NOT NULL DEFAULT '' COMMENT '奖品图片',
`prize_type` tinyint NOT NULL DEFAULT 0 COMMENT '奖品类型 1谢谢惠顾 2积分 3优惠券 4实物', `prize_type` tinyint NOT NULL DEFAULT 0 COMMENT '奖品类型 1谢谢惠顾 2积分 3优惠券 4实物',
`relation_id` varchar(255) NOT NULL DEFAULT '' COMMENT '关联id 如商品id 券id', `relation_id` varchar(255) NOT NULL DEFAULT '' COMMENT '关联id 如商品id 券id',
`prize_type_num` int NOT NULL DEFAULT 0 COMMENT '单次奖励数量如积分 中奖给多少',
`prize_num` int NOT NULL DEFAULT 0 COMMENT '奖品数量', `prize_num` int NOT NULL DEFAULT 0 COMMENT '奖品数量',
`winners_num` int NOT NULL DEFAULT 0 COMMENT '限制的中奖人数', `winners_num` int NOT NULL DEFAULT 0 COMMENT '限制的中奖人数',
`winning_probability` decimal(10, 2) NOT NULL DEFAULT 0 COMMENT '中奖概率', `winning_probability` decimal(10, 2) NOT NULL DEFAULT 0 COMMENT '中奖概率',
...@@ -59,8 +60,14 @@ CREATE TABLE `sweet_integral_activity_draw` ...@@ -59,8 +60,14 @@ CREATE TABLE `sweet_integral_activity_draw`
`mid` bigint unsigned NOT NULL AUTO_INCREMENT, `mid` bigint unsigned NOT NULL AUTO_INCREMENT,
`draw_id` varchar(255) NOT NULL DEFAULT '' COMMENT '抽奖id', `draw_id` varchar(255) NOT NULL DEFAULT '' COMMENT '抽奖id',
`integral_activity_id` varchar(255) NOT NULL DEFAULT '' COMMENT '关联活动id', `integral_activity_id` varchar(255) NOT NULL DEFAULT '' COMMENT '关联活动id',
`activity_num` int NOT NULL DEFAULT 0 COMMENT '活动玩一次所需积分',
`prize_id` varchar(255) NOT NULL DEFAULT '' COMMENT '关联奖品id', `prize_id` varchar(255) NOT NULL DEFAULT '' COMMENT '关联奖品id',
`prize_title` varchar(255) NOT NULL DEFAULT '' COMMENT '奖品名称',
`prize_type` tinyint NOT NULL DEFAULT 0 COMMENT '奖品类型 1谢谢惠顾 2积分 3优惠券 4实物',
`prize_type_num` int NOT NULL DEFAULT 0 COMMENT '单次奖励数量如积分 中奖给多少',
`relation_id` varchar(255) NOT NULL DEFAULT '' COMMENT '关联id 如商品id 券id',
`user_id` varchar(255) NOT NULL DEFAULT '' COMMENT '关联用户id', `user_id` varchar(255) NOT NULL DEFAULT '' COMMENT '关联用户id',
`nickname` varchar(255) NOT NULL DEFAULT '' COMMENT '关联用户昵称',
`receiving_addresses_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'adam收货地址addresses_id', `receiving_addresses_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'adam收货地址addresses_id',
`receiving_name` varchar(255) NOT NULL DEFAULT '' COMMENT 'adam收货人姓名', `receiving_name` varchar(255) NOT NULL DEFAULT '' COMMENT 'adam收货人姓名',
`receiving_phone` varchar(255) NOT NULL DEFAULT '' COMMENT 'adam收货人手机号', `receiving_phone` varchar(255) NOT NULL DEFAULT '' COMMENT 'adam收货人手机号',
......
package com.liquidnet.service.sweet.constant; package com.liquidnet.service.sweet.constant;
import com.google.common.collect.FluentIterable;
/** /**
* *
*/ */
...@@ -91,5 +93,8 @@ public class SweetConstant { ...@@ -91,5 +93,8 @@ public class SweetConstant {
public final static String REDIS_KEY_SWEET_MDSK_ARTISTS_DETAILS = "sweet:mdsk:artists:details:"; public final static String REDIS_KEY_SWEET_MDSK_ARTISTS_DETAILS = "sweet:mdsk:artists:details:";
public final static String REDIS_KEY_SWEET_MDSK_SHOP = "sweet:mdsk:artists:shop:manual:"; public final static String REDIS_KEY_SWEET_MDSK_SHOP = "sweet:mdsk:artists:shop:manual:";
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:integralActivityId:"; public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_INFO = "sweet:integralActivity: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_IN_USER = "sweet:integralActivity:DrawIn:activityId:";
} }
package com.liquidnet.service.sweet.service.impl; package com.liquidnet.service.sweet.service.impl;
import com.liquidnet.commons.lang.util.CurrentUtil; import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.dto.vo.IntegralActivityVo; import com.liquidnet.service.sweet.dto.vo.IntegralActivityVo;
import com.liquidnet.service.sweet.dto.vo.admin.SweetIntegralActivityPrizeVo; import com.liquidnet.service.sweet.dto.vo.admin.SweetIntegralActivityPrizeVo;
...@@ -15,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -15,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
/** /**
...@@ -33,6 +35,7 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg ...@@ -33,6 +35,7 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
@Override @Override
public ResponseDto<SweetIntegralActivityPrizeVo> create(String integralActivityId) { public ResponseDto<SweetIntegralActivityPrizeVo> create(String integralActivityId) {
// TODO: 2021/10/26 看情况是否加锁 一个用户整个逻辑单进程
Map tokenClaims = CurrentUtil.getTokenClaims(); Map tokenClaims = CurrentUtil.getTokenClaims();
String userId = StringUtils.defaultString((String.valueOf(tokenClaims.get("sub"))), ""); String userId = StringUtils.defaultString((String.valueOf(tokenClaims.get("sub"))), "");
String nickname = StringUtils.defaultString((String.valueOf(tokenClaims.get("nickname"))), ""); String nickname = StringUtils.defaultString((String.valueOf(tokenClaims.get("nickname"))), "");
...@@ -41,9 +44,27 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg ...@@ -41,9 +44,27 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
SweetIntegralActivityPrize sweetIntegralActivityPrize = this.lotteryDraw(integralActivity.getPrizeList()); SweetIntegralActivityPrize sweetIntegralActivityPrize = this.lotteryDraw(integralActivity.getPrizeList());
// 活动是否上架 是否在有效期内 奖品库存是否够 // 活动是否上架 是否在有效期内 奖品库存是否够 获取用户积分 判断积分是否够
SweetIntegralActivityPrizeVo sweetIntegralActivityPrizeVo = SweetIntegralActivityPrizeVo.getNew().copy(sweetIntegralActivityPrize); SweetIntegralActivityPrizeVo sweetIntegralActivityPrizeVo = SweetIntegralActivityPrizeVo.getNew().copy(sweetIntegralActivityPrize);
// 记录
SweetIntegralActivityDraw sweetIntegralActivityDraw = SweetIntegralActivityDraw.getNew();
sweetIntegralActivityDraw.setDrawId(IDGenerator.nextSnowId());
sweetIntegralActivityDraw.setIntegralActivityId(integralActivityId);
sweetIntegralActivityDraw.setActivityNum(integralActivity.getActivityNum());
sweetIntegralActivityDraw.setPrizeId(sweetIntegralActivityPrize.getPrizeId());
sweetIntegralActivityDraw.setPrizeTitle(sweetIntegralActivityPrize.getPrizeTitle());
sweetIntegralActivityDraw.setPrizeType(sweetIntegralActivityPrize.getPrizeType());
sweetIntegralActivityDraw.setPrizeTypeNum(sweetIntegralActivityPrize.getPrizeTypeNum());
sweetIntegralActivityDraw.setRelationId(sweetIntegralActivityPrize.getRelationId());
sweetIntegralActivityDraw.setUserId(userId);
sweetIntegralActivityDraw.setNickname(nickname);
LocalDateTime nowTime = LocalDateTime.now();
sweetIntegralActivityDraw.setCreatedAt(nowTime);
// redis
redisDataUtils.setIntegralActivityDraw(sweetIntegralActivityDraw);
// mongo
return ResponseDto.success(sweetIntegralActivityPrizeVo); return ResponseDto.success(sweetIntegralActivityPrizeVo);
} }
......
...@@ -619,4 +619,22 @@ public class RedisDataUtils { ...@@ -619,4 +619,22 @@ public class RedisDataUtils {
return (IntegralActivityVo) obj; return (IntegralActivityVo) obj;
} }
} }
public void setIntegralActivityDraw(SweetIntegralActivityDraw sweetIntegralActivityDraw) {
// TODO: 2021/10/26 1用户中奖列表 2用户抽奖列表 3all用户中奖列表
String redisKey = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_ALL_LIST
.concat(sweetIntegralActivityDraw.getIntegralActivityId());
String redisKey1 = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_USER
.concat(sweetIntegralActivityDraw.getIntegralActivityId())
.concat(":userId:")
.concat(sweetIntegralActivityDraw.getUserId());
String redisKey2 = SweetConstant.REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_IN_USER
.concat(sweetIntegralActivityDraw.getIntegralActivityId())
.concat(":userId:")
.concat(sweetIntegralActivityDraw.getUserId());
// TODO: 2021/10/26 先获取set到10条
redisUtil.set(redisKey, sweetIntegralActivityDraw);
redisUtil.set(redisKey1, sweetIntegralActivityDraw);
redisUtil.set(redisKey2, sweetIntegralActivityDraw);
}
} }
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