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

Commit a4cb22cd authored by jiangxiulong's avatar jiangxiulong

draw

parent 2dd84168
......@@ -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_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_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
@NotNull(message = "prizeType不能为空")
private Integer prizeType;
@ApiModelProperty(required = false, value = "单次奖励数量如积分 中奖给多少物", example = "1")
private Integer prizeTypeNum;
@ApiModelProperty(value = "关联id 如商品id 券id 选择奖品的时候必传", example = "429803743878963206506461")
private String relationId;
......@@ -76,6 +79,7 @@ public class SweetIntegralActivityPrizeFormParam implements Serializable,Cloneab
sweetIntegralActivityPrize.setPrizeTitle(source.getPrizeTitle());
sweetIntegralActivityPrize.setPrizeImg(source.getPrizeImg());
sweetIntegralActivityPrize.setPrizeType(source.getPrizeType());
sweetIntegralActivityPrize.setPrizeTypeNum(source.getPrizeTypeNum());
sweetIntegralActivityPrize.setRelationId(source.getRelationId());
sweetIntegralActivityPrize.setPrizeNum(source.getPrizeNum());
sweetIntegralActivityPrize.setWinnersNum(source.getWinnersNum());
......
......@@ -43,6 +43,9 @@ public class SweetIntegralActivityPrizeVo implements Serializable, Cloneable {
@ApiModelProperty(value = "奖品类型 1谢谢惠顾 2积分 3优惠券 4实物")
private Integer prizeType;
@ApiModelProperty(value = "单次奖励数量如积分 中奖给多少物")
private Integer prizeTypeNum;
@ApiModelProperty(value = "关联id 如商品id 券id")
private String relationId;
......@@ -83,6 +86,7 @@ public class SweetIntegralActivityPrizeVo implements Serializable, Cloneable {
this.setPrizeTitle(source.getPrizeTitle());
this.setPrizeImg(source.getPrizeImg());
this.setPrizeType(source.getPrizeType());
this.setPrizeTypeNum(source.getPrizeTypeNum());
this.setRelationId(source.getRelationId());
this.setPrizeNum(source.getPrizeNum());
this.setWinnersNum(source.getWinnersNum());
......
......@@ -37,16 +37,46 @@ public class SweetIntegralActivityDraw implements Serializable, Cloneable {
*/
private String integralActivityId;
/**
* 活动玩一次所需积分
*/
private Integer activityNum;
/**
* 关联奖品id
*/
private String prizeId;
/**
* 奖品名称
*/
private String prizeTitle;
/**
* 奖品类型 1谢谢惠顾 2积分 3优惠券 4实物
*/
private Integer prizeType;
/**
* 关联id 如商品id 券id
*/
private String relationId;
/**
* 单次奖励数量如积分 中奖给多少
*/
private Integer prizeTypeNum;
/**
* 关联用户id
*/
private String userId;
/**
* 关联用户昵称
*/
private String nickname;
/**
* 收货地址
*/
......
......@@ -53,6 +53,11 @@ public class SweetIntegralActivityPrize implements Serializable, Cloneable {
*/
private Integer prizeType;
/**
* 单次奖励数量如积分 中奖给多少物
*/
private Integer prizeTypeNum;
/**
* 关联id 如商品id 券id
*/
......
......@@ -33,20 +33,21 @@ drop TABLE if exists `sweet_integral_activity_prize`;
CREATE TABLE `sweet_integral_activity_prize`
(
`mid` bigint unsigned NOT NULL AUTO_INCREMENT,
`prize_id` varchar(255) NOT NULL DEFAULT '' COMMENT '奖品id',
`integral_activity_id` varchar(255) NOT NULL DEFAULT '' COMMENT '关联活动id',
`prize_title` 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实物',
`relation_id` varchar(255) NOT NULL DEFAULT '' COMMENT '关联id 如商品id 券id',
`prize_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 '中奖概率',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`prize_id` varchar(255) NOT NULL DEFAULT '' COMMENT '奖品id',
`integral_activity_id` varchar(255) NOT NULL DEFAULT '' COMMENT '关联活动id',
`prize_title` 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实物',
`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 '奖品数量',
`winners_num` int NOT NULL DEFAULT 0 COMMENT '限制的中奖人数',
`winning_probability` decimal(10, 2) NOT NULL DEFAULT 0 COMMENT '中奖概率',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`),
KEY `sweet_prize_id` (`prize_id`),
KEY `sweet_prize_integral_activity_id` (`integral_activity_id`)
KEY `sweet_prize_id` (`prize_id`),
KEY `sweet_prize_integral_activity_id` (`integral_activity_id`)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci
......@@ -59,8 +60,14 @@ CREATE TABLE `sweet_integral_activity_draw`
`mid` bigint unsigned NOT NULL AUTO_INCREMENT,
`draw_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_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',
`nickname` varchar(255) NOT NULL DEFAULT '' COMMENT '关联用户昵称',
`receiving_addresses_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'adam收货地址addresses_id',
`receiving_name` varchar(255) NOT NULL DEFAULT '' COMMENT 'adam收货人姓名',
`receiving_phone` varchar(255) NOT NULL DEFAULT '' COMMENT 'adam收货人手机号',
......
package com.liquidnet.service.sweet.constant;
import com.google.common.collect.FluentIterable;
/**
*
*/
......@@ -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_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_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;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.dto.vo.IntegralActivityVo;
import com.liquidnet.service.sweet.dto.vo.admin.SweetIntegralActivityPrizeVo;
......@@ -15,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
/**
......@@ -33,6 +35,7 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
@Override
public ResponseDto<SweetIntegralActivityPrizeVo> create(String integralActivityId) {
// TODO: 2021/10/26 看情况是否加锁 一个用户整个逻辑单进程
Map tokenClaims = CurrentUtil.getTokenClaims();
String userId = StringUtils.defaultString((String.valueOf(tokenClaims.get("sub"))), "");
String nickname = StringUtils.defaultString((String.valueOf(tokenClaims.get("nickname"))), "");
......@@ -41,8 +44,26 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
SweetIntegralActivityPrize sweetIntegralActivityPrize = this.lotteryDraw(integralActivity.getPrizeList());
// 活动是否上架 是否在有效期内 奖品库存是否够
// 活动是否上架 是否在有效期内 奖品库存是否够 获取用户积分 判断积分是否够
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);
}
......
......@@ -619,4 +619,22 @@ public class RedisDataUtils {
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