From cfef39aaf41a078ef442758f04c58c84f81c133e Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Wed, 21 Feb 2024 15:23:08 +0800
Subject: [PATCH] 抽奖
---
src/main/java/cc/mrbird/febs/mall/service/impl/CJServiceImpl.java | 94 ++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 84 insertions(+), 10 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/CJServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/CJServiceImpl.java
index 3df8f3b..86722cb 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/CJServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/CJServiceImpl.java
@@ -14,6 +14,7 @@
import cc.mrbird.febs.mall.dto.OpenPrice;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
+import cc.mrbird.febs.mall.service.AsyncCjService;
import cc.mrbird.febs.mall.service.CJService;
import cc.mrbird.febs.mall.service.IApiMallMemberService;
import cc.mrbird.febs.mall.vo.ApiKjInfoVo;
@@ -25,6 +26,7 @@
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -52,6 +54,7 @@
private final CjInfoMapper cjInfoMapper;
private final CjItemMapper cjItemMapper;
private final IApiMallMemberService mallMemberService;
+ private final AsyncCjService asyncCjService;
@Override
public FebsResponse kjRecord(KjRecordDto kjRecordDto) {
@@ -82,7 +85,41 @@
redisUtils.set(AppContants.KJ_RECORD_TIME, kjRecord.getCreatedTime(), 600);
agentProducer.sendChouJiangDelayMsg(kjNo, 10 * 60 * 1000L);
- agentProducer.sendNoTimeDelayMsg(kjNo, 95 * 6 * 1000L);//提前三十秒停止下注
+ agentProducer.sendNoTimeDelayMsg(kjNo, 9 * 60 * 1000L);//提一分钟停止下注
+
+ //todo 测试下注
+ ApiCreateDto apiCreateDto = new ApiCreateDto();
+ List<ApiCreateItemDto> items = new ArrayList<>();
+ ApiCreateItemDto apiCreateItemDto = new ApiCreateItemDto();
+ apiCreateItemDto.setId(1L);
+ apiCreateItemDto.setTzAmount(new BigDecimal("10"));
+ items.add(apiCreateItemDto);
+
+ ApiCreateItemDto apiCreateItemDto2 = new ApiCreateItemDto();
+ apiCreateItemDto2.setId(2L);
+ apiCreateItemDto2.setTzAmount(new BigDecimal("10"));
+ items.add(apiCreateItemDto2);
+
+ ApiCreateItemDto apiCreateItemDto3 = new ApiCreateItemDto();
+ apiCreateItemDto3.setId(3L);
+ apiCreateItemDto3.setTzAmount(new BigDecimal("10"));
+ items.add(apiCreateItemDto3);
+
+ ApiCreateItemDto apiCreateItemDto4 = new ApiCreateItemDto();
+ apiCreateItemDto4.setId(4L);
+ apiCreateItemDto4.setTzAmount(new BigDecimal("10"));
+ items.add(apiCreateItemDto4);
+
+ ApiCreateItemDto apiCreateItemDto5 = new ApiCreateItemDto();
+ int randomInt = RandomUtil.randomInt(1, 25);
+ apiCreateItemDto5.setId(Long.parseLong(String.valueOf(randomInt)));
+ apiCreateItemDto5.setTzAmount(new BigDecimal("10"));
+ items.add(apiCreateItemDto5);
+ apiCreateDto.setItems(items);
+
+ for(int i = 0;i<=100;i++){
+ asyncCjService.create(apiCreateDto);
+ }
}
@@ -181,8 +218,7 @@
@Override
@Transactional
public FebsResponse create(ApiCreateDto apiCreateDto) {
-// Long memberId = LoginUserUtil.getLoginUser().getId();
- Long memberId = 1L;
+ Long memberId = LoginUserUtil.getLoginUser().getId();
//开启下注
DataDictionaryCustom noTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
DataDictionaryEnum.NO_TIME.getType(),
@@ -208,13 +244,16 @@
if(mallMemberWallet.getBalance().compareTo(totalAmount) < 0){
throw new FebsException("余额不足");
}
+ //更新用户余额
+ mallMemberWallet.setBalance(mallMemberWallet.getBalance().subtract(totalAmount));
+ mallMemberWalletMapper.updateBalanceWithVersion(mallMemberWallet);
+
//新增一条投注主表记录
CjInfo cjInfo = new CjInfo();
cjInfo.setMemberId(memberId);
String kjNo = redisUtils.getString(AppContants.KJ_RECORD_NO);
cjInfo.setKjNo(kjNo);
- cjInfo.setKjState(1);
- cjInfo.setZjState(1);
+ cjInfo.setKjState(0);
cjInfo.setPerkAmount(BigDecimal.ZERO);
cjInfo.setTotalAmount(totalAmount);
cjInfoMapper.insert(cjInfo);
@@ -226,12 +265,12 @@
throw new FebsException("参数有误,请刷新页面");
}
BigDecimal tzAmount = apiCreateItemDto.getTzAmount().setScale(2,BigDecimal.ROUND_DOWN);//投注金额
- totalAmount = totalAmount.add(tzAmount);
-
CjItem cjItem = new CjItem();
cjItem.setInfoId(cjInfo.getId());
cjItem.setMemberId(memberId);
cjItem.setTzId(id);
+ cjItem.setTzCode(tzInfo.getTzCode());
+ cjItem.setTzPercent(tzInfo.getTzPercent());
cjItem.setType(tzInfo.getType());
cjItem.setAmount(tzAmount);
cjItem.setItemNum(tzInfo.getTzCode());
@@ -242,7 +281,7 @@
String orderNo = MallUtils.getOrderNum("T");
mallMemberService.addMoneyFlow(
memberId,
- totalAmount,
+ totalAmount.negate(),
MoneyFlowTypeNewEnum.STATIC_BONUS.getValue(),
orderNo,
MoneyFlowTypeNewEnum.STATIC_BONUS.getDescription(),
@@ -256,8 +295,7 @@
@Override
public FebsResponse tzInfoList(KjRecordDto kjRecordDto) {
-// Long memberId = LoginUserUtil.getLoginUser().getId();
- Long memberId = 1L;
+ Long memberId = LoginUserUtil.getLoginUser().getId();
kjRecordDto.setMemberId(memberId);
IPage<CjInfo> page = new Page<>(kjRecordDto.getPageNum(), kjRecordDto.getPageSize());
IPage<CjInfo> pages = cjInfoMapper.selectTzListByMemberId(page, kjRecordDto);
@@ -278,7 +316,43 @@
@Override
public void getOpenPriceMsg(String kjNo, String kjNum) {
+ QueryWrapper<CjInfo> objectQueryWrapper = new QueryWrapper<>();
+ objectQueryWrapper.eq("kj_no",kjNo);
+ List<CjInfo> cjInfos = cjInfoMapper.selectList(objectQueryWrapper);
+ if(ObjectUtil.isEmpty(cjInfos)){
+ return;
+ }
+ String danshuang = judgeNumberOne(Integer.parseInt(kjNum));
+ String daXiao = judgeNumberTwo(Integer.parseInt(kjNum));
+ for(CjInfo cjInfo : cjInfos){
+ asyncCjService.openPriceAsync(cjInfo,kjNum,danshuang,daXiao);
+ }
+ }
+ /**
+ * 取模运算符%来判断该数字是否为偶数。如果余数为0,则该数字为偶数,返回"双数";否则,该数字为奇数,返回"单数"
+ * @param num
+ * @return 1-单数 2-双数
+ */
+ public static String judgeNumberOne(int num) {
+ if (num % 2 == 0) {
+ return "双";
+ } else {
+ return "单";
+ }
+ }
+
+ /**
+ * 小于等于12为小 大于12为大
+ * @param num
+ * @return 1-小数 2-大数
+ */
+ public static String judgeNumberTwo(int num) {
+ if (num <= 12) {
+ return "小";
+ } else {
+ return "大";
+ }
}
}
--
Gitblit v1.9.1