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

Commit 0bfda7ad authored by 胡佳晨's avatar 胡佳晨

抽奖数据迁移

parent 337f4b1f
package com.liquidnet.service.sweet.controller;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.constant.SweetConstant;
import com.liquidnet.service.sweet.mapper.SweetAnswerMapper;
import com.liquidnet.service.sweet.service.impl.SweetWechatLoginServiceImpl;
import com.liquidnet.service.sweet.vo.SweetUserTempVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api(tags = "数据迁移")
@RestController
@RequestMapping("/sweetData")
public class SweetDataController {
@Autowired
private SweetAnswerMapper sweetAnswerMapper;
@Autowired
private RedisUtil redisUtil;
@GetMapping("drawLuck")
@ApiOperation("中奖概率迁移")
public ResponseDto<String> drawLuck() {
try {
List<SweetUserTempVo> listHPFD = sweetAnswerMapper.selectHPFD();
List<SweetUserTempVo> listHPWR = sweetAnswerMapper.selectHPWR();
List<SweetUserTempVo> listHXC = sweetAnswerMapper.selectHXC();
List<SweetUserTempVo> listMember = sweetAnswerMapper.selectMember();
List<SweetUserTempVo> listOrder1 = sweetAnswerMapper.selectOrder1();
List<SweetUserTempVo> listOrder2 = sweetAnswerMapper.selectOrder2();
List<SweetUserTempVo> listOrder3 = sweetAnswerMapper.selectOrder3();
for (SweetUserTempVo item : listHPFD) {
presentRedis(item.getMobile());
}
for (SweetUserTempVo item : listHPWR) {
presentRedis(item.getMobile());
}
for (SweetUserTempVo item : listHXC) {
presentRedis(item.getMobile());
}
for (SweetUserTempVo item : listMember) {
presentRedis(item.getMobile());
}
for (SweetUserTempVo item : listOrder1) {
presentRedis(item.getMobile());
}
for (SweetUserTempVo item : listOrder2) {
presentRedis(item.getMobile());
}
for (SweetUserTempVo item : listOrder3) {
presentRedis(item.getMobile());
}
return ResponseDto.success();
} catch (Exception e) {
return ResponseDto.failure();
}
}
private void presentRedis(String mobile) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_LUCK_DRAW_PRESENT_MOBILE.concat(mobile);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
redisUtil.set(redisKey, 20);
} else {
redisUtil.incr(redisKey, 10);
}
}
}
......@@ -2,6 +2,11 @@ package com.liquidnet.service.sweet.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.sweet.entity.SweetAnswer;
import com.liquidnet.service.sweet.vo.SweetUserTempVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* <p>
......@@ -13,4 +18,64 @@ import com.liquidnet.service.sweet.entity.SweetAnswer;
*/
public interface SweetAnswerMapper extends BaseMapper<SweetAnswer> {
// 鸠占鹊巢 写sql 选中你了
// 海皮威尔门票
@Select({"select user_id as 'uid',user_mobile as 'mobile' from kylin_order_tickets as kot" +
" inner join kylin_order_ticket_status as kots on kot.order_tickets_id = kots.order_id" +
" inner join kylin_order_ticket_relations as kotr on kot.order_tickets_id = kotr.order_id" +
"where (status = 1 or status = 4) and performance_id in (select performances_id from kylin_performances where title like '%海皮威尔%')" +
"group by user_id;"
})
List<SweetUserTempVo> selectHPWR();
// 和平饭店门票
@Select({"select user_id as 'uid',user_mobile as 'mobile' from kylin_order_tickets as kot\n" +
" inner join kylin_order_ticket_status as kots on kot.order_tickets_id = kots.order_id\n" +
" inner join kylin_order_ticket_relations as kotr on kot.order_tickets_id = kotr.order_id\n" +
"where (status = 1 or status = 4) and performance_id in (select performances_id from kylin_performances where title like '%和平饭店%')\n" +
"group by user_id;"
})
List<SweetUserTempVo> selectHPFD();
// 虎啸春门票
@Select({"select user_id as 'uid',user_mobile as 'mobile' from kylin_order_tickets as kot" +
" inner join kylin_order_ticket_status as kots on kot.order_tickets_id = kots.order_id" +
" inner join kylin_order_ticket_relations as kotr on kot.order_tickets_id = kotr.order_id" +
"where (status = 1 or status = 4) and performance_id in (select performances_id from kylin_performances where title like '%虎啸春%')" +
"group by user_id;"
})
List<SweetUserTempVo> selectHXC();
// 会员
@Select({"select au.uid as 'uid',au.mobile as 'mobile' from adam_user_member as aum " +
"inner join adam_user au on aum.uid = au.uid " +
"where aum.state = 1 and aum.expiry_at >= '2021-08-20';"
})
List<SweetUserTempVo> selectMember();
// 消费不小于1
@Select({"select count(0) as 'buyCount',user_id as 'uid',user_mobile as 'mobile' from kylin_order_tickets as kot inner join kylin_order_ticket_status as kots on kot.order_tickets_id = kots.order_id " +
"where (status = 1 or status = 4) " +
"group by user_id " +
"having buyCount >= 1;"
})
List<SweetUserTempVo> selectOrder1();
// 消费不小于2
@Select({"select count(0) as 'buyCount',user_id as 'uid',user_mobile as 'mobile' from kylin_order_tickets as kot inner join kylin_order_ticket_status as kots on kot.order_tickets_id = kots.order_id " +
"where (status = 1 or status = 4) " +
"group by user_id " +
"having buyCount >= 2;"
})
List<SweetUserTempVo> selectOrder2();
// 消费不小于3
@Select({"select count(0) as 'buyCount',user_id as 'uid',user_mobile as 'mobile' from kylin_order_tickets as kot inner join kylin_order_ticket_status as kots on kot.order_tickets_id = kots.order_id " +
"where (status = 1 or status = 4) " +
"group by user_id " +
"having buyCount >= 2;"
})
List<SweetUserTempVo> selectOrder3();
// 占完了
}
......@@ -402,15 +402,24 @@ public class RedisDataUtils {
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
LocalDateTime now = LocalDateTime.now();
SweetPrizeVo vo = SweetPrizeVo.getNew();
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 prize = (int) redisUtil.get(redisAll) + 1;
int prizeALl = (int) redisUtil.get(redisAll) + 1;
int count = (int) redisUtil.incr(redisKey, 1);
if (count > 2) {
vo.setPrize(prize);
vo.setPrizeAll(prizeALl);
return vo;
}
if (surplus < prize) {
//随机算法
Object obj = redisUtil.get(redisPresent);
......@@ -427,6 +436,7 @@ public class RedisDataUtils {
if (surplus < prize) {
surplus = (int) redisUtil.incr(redisSurplus, 1);
prize = surplus;
redisUtil.set(redisKey, 2);
}
}
}
......@@ -438,7 +448,6 @@ public class RedisDataUtils {
queueUtils.sendMsgByRedis(MQConst.SweetQueue.LUCK_DRAW.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
SweetPrizeVo vo = SweetPrizeVo.getNew();
vo.setPrize(prize);
vo.setPrizeAll(prizeALl);
return vo;
......
package com.liquidnet.service.sweet.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class SweetUserTempVo implements Serializable, Cloneable {
/**
* 第几个奖
*/
private String uid;
/**
* 总共多少奖
*/
private String mobile;
private static final SweetUserTempVo obj = new SweetUserTempVo();
public static SweetUserTempVo getNew() {
try {
return (SweetUserTempVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetUserTempVo();
}
}
}
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