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

Commit 9cf75da5 authored by 胡佳晨's avatar 胡佳晨

抽奖接口修改

parent 20a7c0e7
......@@ -397,13 +397,15 @@ drop TABLE if exists `sweet_luck_draw`;
CREATE TABLE `sweet_luck_draw`
(
`mid` bigint unsigned NOT NULL AUTO_INCREMENT,
`user_id` varchar(200) NOT NULL DEFAULT '' COMMENT '用户id',
`mobile` varchar(200) NOT NULL DEFAULT '' COMMENT '用户手机号',
`luck_draw_num` varchar(200) NOT NULL DEFAULT '' COMMENT '抽奖编号',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '1有资格 0无资格',
`prize` tinyint NOT NULL DEFAULT -1 COMMENT '第几个奖 prize <= prize_all 则中奖 prize!=0',
`prize_all` tinyint 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_wechat_user_user_id` (`user_id`)
KEY `sweet_luck_draw_mobile` (`mobile`)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci
......
......@@ -15,6 +15,11 @@ public class SweetConstant {
public final static String REDIS_KEY_SWEET_SHOP = "sweet:artists:shop:manual:";
public final static String REDIS_KEY_SWEET_LUCK_DRAW = "sweet:artists:luckDraw:uid:";
public final static String REDIS_KEY_SWEET_LUCK_DRAW_SURPLUS = "sweet:artists:luckDraw:surplus:num:";//中奖库存
public final static String REDIS_KEY_SWEET_LUCK_DRAW_ALL = "sweet:artists:luckDraw:all:num:";//中奖总量
public final static String REDIS_KEY_SWEET_LUCK_DRAW_PRESENT_MOBILE = "sweet:artists:luckDraw:present:mobile:";//中奖库存
public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO="sweet:wechatUser:unionId:";
public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO_STR="sweet:wechatUser:unionIdStr:";
public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID="sweet:wechatUser:openId:";
......
......@@ -12,6 +12,7 @@ import com.liquidnet.service.sweet.utils.ObjectUtil;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
import com.liquidnet.service.sweet.vo.SweetArtistsRelationVo;
import com.liquidnet.service.sweet.vo.SweetManualShopAllVo;
import com.liquidnet.service.sweet.vo.SweetPrizeVo;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -338,15 +339,15 @@ public class SweetAppletController {
@PostMapping("luckDraw")
@ApiOperation("抽奖")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "uid", value = "用户id", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "mobile", value = "用户手机号", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "luckDrawNum", value = "抽奖编号", required = true),
})
public ResponseDto<Boolean> luckDraw(@RequestParam String uid,
public ResponseDto<SweetPrizeVo> luckDraw(@RequestParam String mobile,
@RequestParam String luckDrawNum) {
if (uid.equalsIgnoreCase("0")) {
if (mobile == null || mobile.isEmpty()) {
return ResponseDto.failure();
}
redisDataUtils.changeLuckDrawStatus(uid, luckDrawNum);
return ResponseDto.success();
SweetPrizeVo vo = redisDataUtils.changeLuckDrawStatus(mobile, luckDrawNum);
return ResponseDto.success(vo);
}
}
......@@ -2,9 +2,7 @@ package com.liquidnet.service.sweet.utils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
......@@ -17,6 +15,7 @@ import com.liquidnet.service.sweet.entity.*;
import com.liquidnet.service.sweet.mapper.*;
import com.liquidnet.service.sweet.vo.SweetAnswerVo;
import com.liquidnet.service.sweet.vo.SweetArtistsRelationVo;
import com.liquidnet.service.sweet.vo.SweetPrizeVo;
import com.liquidnet.service.sweet.vo.SweetRemindVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
......@@ -24,6 +23,9 @@ import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.*;
import static com.liquidnet.service.sweet.constant.SweetConstant.REDIS_KEY_SWEET_LUCK_DRAW_PRESENT_MOBILE;
import static com.liquidnet.service.sweet.constant.SweetConstant.REDIS_KEY_SWEET_LUCK_DRAW_SURPLUS;
@Component
public class RedisDataUtils {
......@@ -52,8 +54,8 @@ public class RedisDataUtils {
String redisKey = SweetConstant.REDIS_KEY_SWEET_MANUAL_PUSH_LIST;
List<SweetManualAppletDto> data = sweetManualMapper.getManualAppletDto();
for (SweetManualAppletDto item : data) {
if(!item.getIsMember().equals(1)){
item.setTimeSell(DateUtil.format(DateUtil.addMin(DateUtil.parse(item.getTimeSell(),"yyyy-MM-dd HH:mm:ss"),item.getPayCountdownMinute()),DateUtil.Formatter.yyyyMMddHHmmss));
if (!item.getIsMember().equals(1)) {
item.setTimeSell(DateUtil.format(DateUtil.addMin(DateUtil.parse(item.getTimeSell(), "yyyy-MM-dd HH:mm:ss"), item.getPayCountdownMinute()), DateUtil.Formatter.yyyyMMddHHmmss));
}
item.setFieldName((String) redisUtil.hget("kylin:fields:id" + ":" + item.getFieldId(), "name"));
item.setCityName((String) redisUtil.hget("kylin:fields:id" + ":" + item.getFieldId(), "city_name"));
......@@ -330,6 +332,7 @@ public class RedisDataUtils {
redisUtil.set(redisKey, sweetWechatUser);
redisUtil.set(redisKeyUnid, sweetWechatUser.getUnionId());
}
public String getSweetWechatUserUnionid(String openid) {
if (openid.isEmpty()) {
return null;
......@@ -337,6 +340,7 @@ public class RedisDataUtils {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_UNIONID.concat(openid);
return (String) redisUtil.get(redisKey);
}
public SweetWechatUser getSweetWechatUser(String unionid) {
if (unionid.isEmpty()) {
return null;
......@@ -344,6 +348,7 @@ public class RedisDataUtils {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_INFO.concat(unionid);
return (SweetWechatUser) redisUtil.get(redisKey);
}
public String getSweetWechatUserStr(String unionid) {
if (unionid.isEmpty()) {
return "";
......@@ -352,10 +357,12 @@ public class RedisDataUtils {
String str = (String) redisUtil.get(key);
return str;
}
public void setSweetWechatUserStr(String unionid) {
String key = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_INFO_STR.concat(unionid);
redisUtil.set(key, "1");
}
public void delSweetWechatUser(String unionid, String openid) {
if (!unionid.isEmpty()) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_INFO.concat(unionid);
......@@ -390,19 +397,51 @@ public class RedisDataUtils {
}
//修改抽奖状态
public void changeLuckDrawStatus(String uid, String luckDrawNum) {
public SweetPrizeVo changeLuckDrawStatus(String mobile, String luckDrawNum) {
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
LocalDateTime now = LocalDateTime.now();
String redisKey = SweetConstant.REDIS_KEY_SWEET_LUCK_DRAW.concat(uid).concat(":luckDrawNum:" + luckDrawNum);
String redisKey = SweetConstant.REDIS_KEY_SWEET_LUCK_DRAW.concat(mobile).concat(":luckDrawNum:" + luckDrawNum);
redisUtil.set(redisKey, 1);
String redisSurplus = SweetConstant.REDIS_KEY_SWEET_LUCK_DRAW_SURPLUS.concat(luckDrawNum);
String redisAll = SweetConstant.REDIS_KEY_SWEET_LUCK_DRAW_ALL.concat(luckDrawNum);
String redisPresent = SweetConstant.REDIS_KEY_SWEET_LUCK_DRAW_PRESENT_MOBILE.concat(mobile);
int surplus = (int) redisUtil.get(redisSurplus);
int prize = (int) redisUtil.get(redisAll);
int prizeALl = (int) redisUtil.get(redisAll) + 1;
if (surplus < prize) {
//随机算法
Object obj = redisUtil.get(redisPresent);
int present;
if (obj == null) {
present = 10;
} else {
present = (int) obj;
}
int random1 = RandomUtil.getRandomInt(present, 100);
int random2 = RandomUtil.getRandomInt(present, 100);
if (random1 == random2) {
surplus = (int) redisUtil.get(redisSurplus);
if (surplus < prize) {
surplus = (int) redisUtil.incr(redisSurplus, 1);
prize = surplus;
}
}
}
sqls.add(SqlMapping.get("sweet_luck_draw.insert"));
sqlsDataA.add(new Object[]{
uid, luckDrawNum, now
mobile, luckDrawNum, prize, prizeALl, now
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.LUCK_DRAW.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
SweetPrizeVo vo = SweetPrizeVo.getNew();
vo.setPrize(prize);
vo.setPrizeAll(prizeALl);
return vo;
}
// 答案
......@@ -410,6 +449,7 @@ public class RedisDataUtils {
String redisKey = SweetConstant.REDIS_KEY_SWEET_ANSWER_PHONE.concat(sweetAnswerVo.getPhone());
redisUtil.set(redisKey, sweetAnswerVo);
}
public SweetAnswerVo getSweetAnswer(String phone) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_ANSWER_PHONE.concat(phone);
SweetAnswerVo sweetAnswerVo = (SweetAnswerVo) redisUtil.get(redisKey);
......
package com.liquidnet.service.sweet.vo;
import com.liquidnet.service.sweet.entity.SweetAnswer;
import io.swagger.annotations.Api;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
public class SweetPrizeVo implements Serializable, Cloneable {
/**
* 第几个奖
*/
private int prize;
/**
* 总共多少奖
*/
private int prizeAll;
private static final SweetPrizeVo obj = new SweetPrizeVo();
public static SweetPrizeVo getNew() {
try {
return (SweetPrizeVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetPrizeVo();
}
}
}
......@@ -57,8 +57,8 @@ sweet_user_relation.delete=DELETE FROM sweet_user_relation WHERE user_id = ? an
sweet_user_relation_mdsk.insert=INSERT INTO sweet_user_relation_mdsk (user_id,type,target_id,manual_id,status,created_at) VALUES (?,?,?,?,1,?)
sweet_user_relation_mdsk.delete=DELETE FROM sweet_user_relation_mdsk WHERE user_id = ? and target_id = ? and manual_id = ? and type = ?
# ------------------------用户关系----------------------------
sweet_luck_draw.insert=INSERT INTO sweet_luck_draw (user_id,luck_draw_num,status,created_at) VALUES (?,?,1,?)
# ------------------------抽奖----------------------------
sweet_luck_draw.insert=INSERT INTO sweet_luck_draw (mobile,luck_draw_num,prize,prize_all,status,created_at) VALUES (?,?,?,?,1,?)
# --------------------------答案--------------------------
sweet_answer.insert=INSERT INTO sweet_answer (answer_id,phone,answer_json,img_url) VALUES (?,?,?,?)
......
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