From 3f7956fa7435a2b581336dc067cf8f25c1719e1c Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Fri, 01 Mar 2024 10:44:22 +0800
Subject: [PATCH] 抽奖
---
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java | 1
src/test/java/cc/mrbird/febs/AgentTest.java | 57 +++-
src/main/java/cc/mrbird/febs/mall/entity/TzInfo.java | 2
src/test/java/cc/mrbird/febs/ProfitTest.java | 21 +
src/main/java/cc/mrbird/febs/mall/entity/CjItem.java | 2
src/main/java/cc/mrbird/febs/mall/vo/ApiTzInfoVo.java | 4
src/main/resources/templates/febs/views/modules/goods/tzList.html | 14 +
src/main/java/cc/mrbird/febs/mall/conversion/TzInfoConversion.java | 4
src/main/java/cc/mrbird/febs/mall/service/impl/AsyncCjServiceImpl.java | 174 +++++++++++----
src/main/java/cc/mrbird/febs/mall/service/CJService.java | 7
src/main/java/cc/mrbird/febs/mall/service/impl/CJServiceImpl.java | 319 +++++++++++++++++++++-------
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 15 +
src/main/java/cc/mrbird/febs/mall/dto/ApiCreateItemDto.java | 4
src/main/java/cc/mrbird/febs/mall/mapper/CjItemMapper.java | 2
src/main/java/cc/mrbird/febs/mall/service/AsyncCjService.java | 5
15 files changed, 470 insertions(+), 161 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
index dac8f54..7c2b47b 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -7,6 +7,21 @@
public enum DataDictionaryEnum {
/**
+ * 彩球
+ */
+ COLOR_BALL("COLOR_BALL","COLOR_BALL"),
+
+ /**
+ * 蓝球
+ */
+ BLUE_BALL("BLUE_BALL","BLUE_BALL"),
+
+ /**
+ * 红球
+ */
+ RED_BALL("RED_BALL","RED_BALL"),
+
+ /**
* 本期开奖数字
*/
OPEN_PRICE("OPEN_PRICE","OPEN_PRICE"),
diff --git a/src/main/java/cc/mrbird/febs/mall/conversion/TzInfoConversion.java b/src/main/java/cc/mrbird/febs/mall/conversion/TzInfoConversion.java
index 47f9368..b3faa90 100644
--- a/src/main/java/cc/mrbird/febs/mall/conversion/TzInfoConversion.java
+++ b/src/main/java/cc/mrbird/febs/mall/conversion/TzInfoConversion.java
@@ -5,6 +5,8 @@
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
+import java.util.List;
+
@Mapper
public abstract class TzInfoConversion {
@@ -12,4 +14,6 @@
public static final TzInfoConversion INSTANCE = Mappers.getMapper(TzInfoConversion.class);
public abstract ApiTzInfoVo entityToVo(TzInfo tzInfo);
+
+ public abstract List<ApiTzInfoVo> entitysToVo(List<TzInfo> daXiaos);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiCreateItemDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiCreateItemDto.java
index cbda8bd..5b70dd7 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/ApiCreateItemDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiCreateItemDto.java
@@ -1,5 +1,6 @@
package cc.mrbird.febs.mall.dto;
+import cc.mrbird.febs.mall.entity.TzInfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -16,4 +17,7 @@
@ApiModelProperty(value = "投注金额")
private BigDecimal tzAmount;//值
+ @ApiModelProperty(hidden = true)
+ private TzInfo tzInfo;
+
}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/CjItem.java b/src/main/java/cc/mrbird/febs/mall/entity/CjItem.java
index 2c21d8d..92f0aa4 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/CjItem.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/CjItem.java
@@ -15,7 +15,7 @@
private Long tzId;//投注信息ID
private String tzCode;//投注号码
private BigDecimal tzPercent;//获奖倍率
- private Integer type;//投注类型 1-按大小 2-按单双 3-按数字
+ private Integer type;//投注类型 1-按大小 2-按单双 3-按数字 4- 按红蓝 5-按彩球 6-六个号码为一组 7-三个号码为一组
private BigDecimal amount;//投入金额
private String itemNum;//投注数字
private String kjNum;//中奖号码
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/TzInfo.java b/src/main/java/cc/mrbird/febs/mall/entity/TzInfo.java
index 6633f56..033e3dc 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/TzInfo.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/TzInfo.java
@@ -11,7 +11,7 @@
@TableName("tz_info")
public class TzInfo extends BaseEntity {
- private Integer type;//类型 1-按大小 2-按单双 3-按数字
+ private Integer type;//类型 1-按大小 2-按单双 3-按数字 4- 按红蓝 5-按彩球 6-六个号码为一组 7-三个号码为一组
private String tzCode;//值
private BigDecimal tzPercent;//获奖倍率
@TableField(exist = false)
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/CjItemMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/CjItemMapper.java
index fb491a1..fae6bbb 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/CjItemMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/CjItemMapper.java
@@ -11,7 +11,7 @@
List<CjItem> selectListByInfoId(@Param("infoId")Long id);
- void updateBatchById(@Param("list")ArrayList<CjItem> cjItemUpdateList);
+ void updateBatchById(@Param("list")List<CjItem> cjItemUpdateList);
List<CjItem> selectSumAmountByInfoId(@Param("list")List<Long> collect);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/AsyncCjService.java b/src/main/java/cc/mrbird/febs/mall/service/AsyncCjService.java
index c513d16..2b3fd86 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/AsyncCjService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/AsyncCjService.java
@@ -10,10 +10,11 @@
public interface AsyncCjService extends IService<CjInfo> {
@Async(FebsConstant.ASYNC_POOL)
- void openPriceAsync(CjInfo cjInfo, String kjNum,String danshuang,String daXiao);
+ void openPriceAsync(CjInfo cjInfo, String kjNum,String danshuang,String daXiao
+ ,String hong,String lan,String caiqiu,String liugehao,String sangehao);
@Async(FebsConstant.ASYNC_POOL)
- void create(ApiCreateDto apiCreateDto);
+ void create(ApiCreateDto apiCreateDto,Long memberId);
@Async(FebsConstant.ASYNC_POOL)
void tzInfo();
diff --git a/src/main/java/cc/mrbird/febs/mall/service/CJService.java b/src/main/java/cc/mrbird/febs/mall/service/CJService.java
index e99517f..5c5d96e 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/CJService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/CJService.java
@@ -36,4 +36,11 @@
LinkedHashMap<String, JSON> getTzInfo();
+ /**
+ * 处理红蓝彩球
+ * @param num
+ * @return
+ */
+ String getKjNo(String num);
+
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java
index a413958..999f55e 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java
@@ -541,6 +541,7 @@
if(ObjectUtil.isEmpty(tzInfo1)){
return new FebsResponse().fail().message("设置失败");
}
+ tzInfo1.setTzCode(tzInfo.getTzCode());
tzInfo1.setTzPercent(tzInfo.getTzPercent());
tzInfoMapper.updateById(tzInfo1);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncCjServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncCjServiceImpl.java
index 85c7498..8bb6b34 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncCjServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncCjServiceImpl.java
@@ -27,10 +27,7 @@
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@@ -47,25 +44,23 @@
private final IApiMallMemberService mallMemberService;
@Override
- public void openPriceAsync(CjInfo cjInfo, String kjNum,String danshuang,String daXiao) {
+ public void openPriceAsync(CjInfo cjInfo, String kjNum,String danshuang,String daXiao
+ ,String hong,String lan,String caiqiu,String liugehao,String sangehao) {
long l = System.currentTimeMillis();
List<CjItem> cjItems = cjItemMapper.selectListByInfoId(cjInfo.getId());
if(CollUtil.isEmpty(cjItems)){
return;
}
- /**
- * 1-按大小 2-按单双 3-按数字
- */
BigDecimal perkAmountTotal = BigDecimal.ZERO;//中奖总金额
- ArrayList<CjItem> CjItemUpdateList = new ArrayList<>();
+ List<CjItem> CjItemUpdateList = new ArrayList<>();
//按大小
List<CjItem> collectDaXiao = cjItems.stream().filter(cjItem -> cjItem.getType() == 1).collect(Collectors.toList());
if(CollUtil.isNotEmpty(collectDaXiao)){
for(CjItem cjItem : collectDaXiao){
String tzCode = cjItem.getTzCode();
- cjItem.setKjNum(daXiao);
+ cjItem.setKjNum(kjNum);
BigDecimal perkAmount = BigDecimal.ZERO;
if(daXiao.equals(tzCode)){
perkAmount = cjItem.getAmount().multiply(cjItem.getTzPercent()).setScale(2, BigDecimal.ROUND_DOWN);
@@ -82,7 +77,7 @@
if(CollUtil.isNotEmpty(collectDanShuang)){
for(CjItem cjItem : collectDanShuang){
String tzCode = cjItem.getTzCode();
- cjItem.setKjNum(danshuang);
+ cjItem.setKjNum(kjNum);
BigDecimal perkAmount = BigDecimal.ZERO;
if(danshuang.equals(tzCode)){
perkAmount = cjItem.getAmount().multiply(cjItem.getTzPercent()).setScale(2, BigDecimal.ROUND_DOWN);
@@ -111,6 +106,92 @@
perkAmountTotal = perkAmountTotal.add(perkAmount);
}
}
+ //按红
+ List<CjItem> collectHong = cjItems.stream().filter(cjItem -> cjItem.getType() == 4).collect(Collectors.toList());
+ if(CollUtil.isNotEmpty(collectHong)){
+ for(CjItem cjItem : collectHong){
+ String tzCode = cjItem.getTzCode();
+ cjItem.setKjNum(kjNum);
+ BigDecimal perkAmount = BigDecimal.ZERO;
+ if(hong.equals(tzCode)){
+ perkAmount = cjItem.getAmount().multiply(cjItem.getTzPercent()).setScale(2, BigDecimal.ROUND_DOWN);
+ cjItem.setPerkAmount(perkAmount);
+ }else{
+ cjItem.setPerkAmount(perkAmount);
+ }
+ CjItemUpdateList.add(cjItem);
+ perkAmountTotal = perkAmountTotal.add(perkAmount);
+ }
+ }
+ //按蓝
+ List<CjItem> collectLan = cjItems.stream().filter(cjItem -> cjItem.getType() == 8).collect(Collectors.toList());
+ if(CollUtil.isNotEmpty(collectLan)){
+ for(CjItem cjItem : collectLan){
+ String tzCode = cjItem.getTzCode();
+ cjItem.setKjNum(kjNum);
+ BigDecimal perkAmount = BigDecimal.ZERO;
+ if(lan.equals(tzCode)){
+ perkAmount = cjItem.getAmount().multiply(cjItem.getTzPercent()).setScale(2, BigDecimal.ROUND_DOWN);
+ cjItem.setPerkAmount(perkAmount);
+ }else{
+ cjItem.setPerkAmount(perkAmount);
+ }
+ CjItemUpdateList.add(cjItem);
+ perkAmountTotal = perkAmountTotal.add(perkAmount);
+ }
+ }
+ //按彩球
+ List<CjItem> collectCaiQiu = cjItems.stream().filter(cjItem -> cjItem.getType() == 5).collect(Collectors.toList());
+ if(CollUtil.isNotEmpty(collectCaiQiu)){
+ for(CjItem cjItem : collectCaiQiu){
+ String tzCode = cjItem.getTzCode();
+ cjItem.setKjNum(kjNum);
+ BigDecimal perkAmount = BigDecimal.ZERO;
+ if(caiqiu.equals(tzCode)){
+ perkAmount = cjItem.getAmount().multiply(cjItem.getTzPercent()).setScale(2, BigDecimal.ROUND_DOWN);
+ cjItem.setPerkAmount(perkAmount);
+ }else{
+ cjItem.setPerkAmount(perkAmount);
+ }
+ CjItemUpdateList.add(cjItem);
+ perkAmountTotal = perkAmountTotal.add(perkAmount);
+ }
+ }
+ //六个号码为一组
+ List<CjItem> collectLiuGeHao = cjItems.stream().filter(cjItem -> cjItem.getType() == 6).collect(Collectors.toList());
+ if(CollUtil.isNotEmpty(collectLiuGeHao)){
+ for(CjItem cjItem : collectLiuGeHao){
+ String tzCode = cjItem.getTzCode();
+ cjItem.setKjNum(kjNum);
+ BigDecimal perkAmount = BigDecimal.ZERO;
+ if(liugehao.equals(tzCode)){
+ perkAmount = cjItem.getAmount().multiply(cjItem.getTzPercent()).setScale(2, BigDecimal.ROUND_DOWN);
+ cjItem.setPerkAmount(perkAmount);
+ }else{
+ cjItem.setPerkAmount(perkAmount);
+ }
+ CjItemUpdateList.add(cjItem);
+ perkAmountTotal = perkAmountTotal.add(perkAmount);
+ }
+ }
+ //三个号码为一组
+ List<CjItem> collectSanGeHao = cjItems.stream().filter(cjItem -> cjItem.getType() == 7).collect(Collectors.toList());
+ if(CollUtil.isNotEmpty(collectSanGeHao)){
+ for(CjItem cjItem : collectSanGeHao){
+ String tzCode = cjItem.getTzCode();
+ cjItem.setKjNum(kjNum);
+ BigDecimal perkAmount = BigDecimal.ZERO;
+ if(sangehao.equals(tzCode)){
+ perkAmount = cjItem.getAmount().multiply(cjItem.getTzPercent()).setScale(2, BigDecimal.ROUND_DOWN);
+ cjItem.setPerkAmount(perkAmount);
+ }else{
+ cjItem.setPerkAmount(perkAmount);
+ }
+ CjItemUpdateList.add(cjItem);
+ perkAmountTotal = perkAmountTotal.add(perkAmount);
+ }
+ }
+
cjItemMapper.updateBatchById(CjItemUpdateList);//批量更新
if(perkAmountTotal.compareTo(BigDecimal.ZERO) > 0){
@@ -143,9 +224,8 @@
}
@Override
- public void create(ApiCreateDto apiCreateDto) {
+ public void create(ApiCreateDto apiCreateDto,Long memberId) {
long l = System.currentTimeMillis();
- Long memberId = 1L;
//开启下注
DataDictionaryCustom noTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
DataDictionaryEnum.NO_TIME.getType(),
@@ -166,6 +246,12 @@
if(BigDecimal.ZERO.compareTo(tzAmount) >= 0){
throw new FebsException("金额必须大于0");
}
+ Long id = apiCreateItemDto.getId();//投注ID
+ TzInfo tzInfo = tzInfoMapper.selectById(id);
+ if(ObjectUtil.isEmpty(tzInfo)){
+ throw new FebsException("参数有误,请刷新页面");
+ }
+ apiCreateItemDto.setTzInfo(tzInfo);
totalAmount = totalAmount.add(tzAmount);
}
if(mallMemberWallet.getBalance().compareTo(totalAmount) < 0){
@@ -187,7 +273,7 @@
for(ApiCreateItemDto apiCreateItemDto : items){
Long id = apiCreateItemDto.getId();//投注ID
- TzInfo tzInfo = tzInfoMapper.selectById(id);
+ TzInfo tzInfo = apiCreateItemDto.getTzInfo();
if(ObjectUtil.isEmpty(tzInfo)){
throw new FebsException("参数有误,请刷新页面");
}
@@ -224,41 +310,31 @@
public void tzInfo() {
Map<String, JSON> linkedHashMap = new LinkedHashMap<>();
- ArrayList<ApiTzInfoVo> objectDaxiao = new ArrayList<>();
- QueryWrapper<TzInfo> daxiaoQueryWrapper = new QueryWrapper<>();
- daxiaoQueryWrapper.eq("type",1);
- List<TzInfo> daXiaos = tzInfoMapper.selectList(daxiaoQueryWrapper);
- if(CollUtil.isNotEmpty(daXiaos)){
- for(TzInfo tzInfoRedis : daXiaos){
- ApiTzInfoVo apiTzInfoVo = TzInfoConversion.INSTANCE.entityToVo(tzInfoRedis);
- objectDaxiao.add(apiTzInfoVo);
- }
- }
- linkedHashMap.put("daXiao", JSONUtil.parse(objectDaxiao));
-
- ArrayList<ApiTzInfoVo> objectDanshuang = new ArrayList<>();
- QueryWrapper<TzInfo> danshuangQueryWrapper = new QueryWrapper<>();
- danshuangQueryWrapper.eq("type",2);
- List<TzInfo> danShuangs = tzInfoMapper.selectList(danshuangQueryWrapper);
- if(CollUtil.isNotEmpty(danShuangs)){
- for(TzInfo tzInfoRedis : danShuangs){
- ApiTzInfoVo apiTzInfoVo = TzInfoConversion.INSTANCE.entityToVo(tzInfoRedis);
- objectDanshuang.add(apiTzInfoVo);
- }
- }
- linkedHashMap.put("danShuang",JSONUtil.parse(objectDanshuang));
-
- ArrayList<ApiTzInfoVo> objectShuZi = new ArrayList<>();
- QueryWrapper<TzInfo> shuZiQueryWrapper = new QueryWrapper<>();
- shuZiQueryWrapper.eq("type",3);
- List<TzInfo> shuZis = tzInfoMapper.selectList(shuZiQueryWrapper);
- if(CollUtil.isNotEmpty(shuZis)){
- for(TzInfo tzInfoRedis : shuZis){
- ApiTzInfoVo apiTzInfoVo = TzInfoConversion.INSTANCE.entityToVo(tzInfoRedis);
- objectShuZi.add(apiTzInfoVo);
- }
- }
- linkedHashMap.put("shuZi",JSONUtil.parse(objectShuZi));
+ List<TzInfo> tzInfos = tzInfoMapper.selectList(null);
+ linkedHashMap.put("daXiao", JSONUtil.parse(
+ TzInfoConversion.INSTANCE.entitysToVo(
+ tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 1).collect(Collectors.toList()))));
+ linkedHashMap.put("danShuang", JSONUtil.parse(
+ TzInfoConversion.INSTANCE.entitysToVo(
+ tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 2).collect(Collectors.toList()))));
+ linkedHashMap.put("shuZi", JSONUtil.parse(
+ TzInfoConversion.INSTANCE.entitysToVo(
+ tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 3).collect(Collectors.toList()))));
+ linkedHashMap.put("hong", JSONUtil.parse(
+ TzInfoConversion.INSTANCE.entitysToVo(
+ tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 4).collect(Collectors.toList()))));
+ linkedHashMap.put("caiqiu", JSONUtil.parse(
+ TzInfoConversion.INSTANCE.entitysToVo(
+ tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 5).collect(Collectors.toList()))));
+ linkedHashMap.put("liuHao", JSONUtil.parse(
+ TzInfoConversion.INSTANCE.entitysToVo(
+ tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 6).collect(Collectors.toList()))));
+ linkedHashMap.put("sanHao", JSONUtil.parse(
+ TzInfoConversion.INSTANCE.entitysToVo(
+ tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 7).collect(Collectors.toList()))));
+ linkedHashMap.put("lan", JSONUtil.parse(
+ TzInfoConversion.INSTANCE.entitysToVo(
+ tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 8).collect(Collectors.toList()))));
//投注信息
String tzInfoNoExit = redisUtils.getString(AppContants.TZ_INFO);
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 76e0c51..901e7bc 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
@@ -42,10 +42,8 @@
import java.text.ParseException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
@Slf4j
@Service
@@ -67,6 +65,12 @@
public FebsResponse kjRecord(KjRecordDto kjRecordDto) {
IPage<ApiKjRecordVo> page = new Page<>(kjRecordDto.getPageNum(), kjRecordDto.getPageSize());
IPage<ApiKjRecordVo> pages = kjRecordMapper.selectListInPage(page, kjRecordDto);
+ List<ApiKjRecordVo> records = pages.getRecords();
+ if(CollUtil.isNotEmpty(records)){
+ for(ApiKjRecordVo apiKjRecordVo : records){
+ apiKjRecordVo.setKjNum(this.getKjNo(apiKjRecordVo.getKjNum()));
+ }
+ }
return new FebsResponse().success().data(pages);
}
@@ -95,51 +99,28 @@
agentProducer.sendNoTimeDelayMsg(kjNo, (AppContants.KJ_RECORD_TIME_INTERVAL-1) * 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);
-// }
-
+ ApiCreateDto apiCreateDto = new ApiCreateDto();
+ List<ApiCreateItemDto> items = new ArrayList<>();
+ for(int i = 1;i<= 43;i++){
+ ApiCreateItemDto apiCreateItemDto6 = new ApiCreateItemDto();
+ apiCreateItemDto6.setId(Long.parseLong(String.valueOf(i)));
+ apiCreateItemDto6.setTzAmount(new BigDecimal("10"));
+ items.add(apiCreateItemDto6);
+ }
+ apiCreateDto.setItems(items);
+ asyncCjService.create(apiCreateDto,1L);
}
@Override
public FebsResponse kjInfo() {
ApiKjInfoVo apiKjInfoVo = new ApiKjInfoVo();
String kjNoOld = redisUtils.getString(AppContants.KJ_RECORD_NO_OLD);
- String kjNumOld = redisUtils.getString(AppContants.KJ_RECORD_NUM_OLD);
+ String kjNumOld = this.getKjNo(redisUtils.getString(AppContants.KJ_RECORD_NUM_OLD));
if(StrUtil.isBlank(kjNoOld)){
KjRecord kjRecordOld = kjRecordMapper.selectOneByLimitZero(1,1);
if(ObjectUtil.isNotEmpty(kjRecordOld)){
apiKjInfoVo.setKjNoOld(kjRecordOld.getKjNo());
- apiKjInfoVo.setKjNumOld(kjRecordOld.getKjNum());
+ apiKjInfoVo.setKjNumOld(this.getKjNo(kjRecordOld.getKjNum()));
}
}else{
apiKjInfoVo.setKjNoOld(kjNoOld);
@@ -195,7 +176,7 @@
DataDictionaryEnum.OPEN_PRICE.getType(),
DataDictionaryEnum.OPEN_PRICE.getCode()
);
- int randomInt = RandomUtil.randomInt(1, 25);
+ int randomInt = RandomUtil.randomInt(1, 27);
if(StrUtil.isNotEmpty(openPriceDic.getValue())){
randomInt = Integer.parseInt(openPriceDic.getValue());
openPriceDic.setValue("");
@@ -259,6 +240,12 @@
if(BigDecimal.ZERO.compareTo(tzAmount) >= 0){
throw new FebsException("金额必须大于0");
}
+ Long id = apiCreateItemDto.getId();//投注ID
+ TzInfo tzInfo = tzInfoMapper.selectById(id);
+ if(ObjectUtil.isEmpty(tzInfo)){
+ throw new FebsException("参数有误,请刷新页面");
+ }
+ apiCreateItemDto.setTzInfo(tzInfo);
totalAmount = totalAmount.add(tzAmount);
}
if(mallMemberWallet.getBalance().compareTo(totalAmount) < 0){
@@ -280,10 +267,7 @@
for(ApiCreateItemDto apiCreateItemDto : items){
Long id = apiCreateItemDto.getId();//投注ID
- TzInfo tzInfo = tzInfoMapper.selectById(id);
- if(ObjectUtil.isEmpty(tzInfo)){
- throw new FebsException("参数有误,请刷新页面");
- }
+ TzInfo tzInfo = apiCreateItemDto.getTzInfo();
BigDecimal tzAmount = apiCreateItemDto.getTzAmount().setScale(2,BigDecimal.ROUND_DOWN);//投注金额
CjItem cjItem = new CjItem();
cjItem.setInfoId(cjInfo.getId());
@@ -323,7 +307,13 @@
if(CollUtil.isNotEmpty(records)){
for(CjInfo item : records){
Long id = item.getId();
+ item.setKjNum(this.getKjNo(item.getKjNum()));
List<CjItem> cjItems = cjItemMapper.selectListByInfoId(id);
+ if(CollUtil.isNotEmpty(cjItems)){
+ for(CjItem cjItem : cjItems){
+ cjItem.setKjNum(this.getKjNo(cjItem.getKjNum()));
+ }
+ }
item.setItems(cjItems);
}
}
@@ -351,51 +341,59 @@
}
String danshuang = judgeNumberOne(Integer.parseInt(kjNum));
String daXiao = judgeNumberTwo(Integer.parseInt(kjNum));
+
+ DataDictionaryCustom redBallDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.RED_BALL.getType(),
+ DataDictionaryEnum.RED_BALL.getCode()
+ );
+ String hong = judgeNumberHong(kjNum, redBallDic);
+
+ DataDictionaryCustom blueBallDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.BLUE_BALL.getType(),
+ DataDictionaryEnum.BLUE_BALL.getCode()
+ );
+ String lan = judgeNumberLan(kjNum, blueBallDic);
+ DataDictionaryCustom colorBallDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.COLOR_BALL.getType(),
+ DataDictionaryEnum.COLOR_BALL.getCode()
+ );
+ String caiqiu = judgeNumberColor(kjNum, colorBallDic);
+ String liugehao = getGroupNumberSix(Integer.parseInt(kjNum));
+ String sangehao = getGroupNumberThree(Integer.parseInt(kjNum));
+
for(CjInfo cjInfo : cjInfos){
- asyncCjService.openPriceAsync(cjInfo,kjNum,danshuang,daXiao);
+ asyncCjService.openPriceAsync(cjInfo,kjNum,danshuang,daXiao,hong,lan,caiqiu,liugehao,sangehao);
}
}
@Override
public LinkedHashMap<String, JSON> getTzInfo() {
LinkedHashMap<String, JSON> linkedHashMap = new LinkedHashMap<>();
-
- ArrayList<ApiTzInfoVo> objectDaxiao = new ArrayList<>();
- QueryWrapper<TzInfo> daxiaoQueryWrapper = new QueryWrapper<>();
- daxiaoQueryWrapper.eq("type",1);
- List<TzInfo> daXiaos = tzInfoMapper.selectList(daxiaoQueryWrapper);
- if(CollUtil.isNotEmpty(daXiaos)){
- for(TzInfo tzInfoRedis : daXiaos){
- ApiTzInfoVo apiTzInfoVo = TzInfoConversion.INSTANCE.entityToVo(tzInfoRedis);
- objectDaxiao.add(apiTzInfoVo);
- }
- }
- linkedHashMap.put("daXiao", JSONUtil.parse(objectDaxiao));
-
- ArrayList<ApiTzInfoVo> objectDanshuang = new ArrayList<>();
- QueryWrapper<TzInfo> danshuangQueryWrapper = new QueryWrapper<>();
- danshuangQueryWrapper.eq("type",2);
- List<TzInfo> danShuangs = tzInfoMapper.selectList(danshuangQueryWrapper);
- if(CollUtil.isNotEmpty(danShuangs)){
- for(TzInfo tzInfoRedis : danShuangs){
- ApiTzInfoVo apiTzInfoVo = TzInfoConversion.INSTANCE.entityToVo(tzInfoRedis);
- objectDanshuang.add(apiTzInfoVo);
- }
- }
- linkedHashMap.put("danShuang",JSONUtil.parse(objectDanshuang));
-
- ArrayList<ApiTzInfoVo> objectShuZi = new ArrayList<>();
- QueryWrapper<TzInfo> shuZiQueryWrapper = new QueryWrapper<>();
- shuZiQueryWrapper.eq("type",3);
- List<TzInfo> shuZis = tzInfoMapper.selectList(shuZiQueryWrapper);
- if(CollUtil.isNotEmpty(shuZis)){
- for(TzInfo tzInfoRedis : shuZis){
- ApiTzInfoVo apiTzInfoVo = TzInfoConversion.INSTANCE.entityToVo(tzInfoRedis);
- objectShuZi.add(apiTzInfoVo);
- }
- }
- linkedHashMap.put("shuZi",JSONUtil.parse(objectShuZi));
-
+ List<TzInfo> tzInfos = tzInfoMapper.selectList(null);
+ linkedHashMap.put("daXiao", JSONUtil.parse(
+ TzInfoConversion.INSTANCE.entitysToVo(
+ tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 1).collect(Collectors.toList()))));
+ linkedHashMap.put("danShuang", JSONUtil.parse(
+ TzInfoConversion.INSTANCE.entitysToVo(
+ tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 2).collect(Collectors.toList()))));
+ linkedHashMap.put("shuZi", JSONUtil.parse(
+ TzInfoConversion.INSTANCE.entitysToVo(
+ tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 3).collect(Collectors.toList()))));
+ linkedHashMap.put("hong", JSONUtil.parse(
+ TzInfoConversion.INSTANCE.entitysToVo(
+ tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 4).collect(Collectors.toList()))));
+ linkedHashMap.put("caiqiu", JSONUtil.parse(
+ TzInfoConversion.INSTANCE.entitysToVo(
+ tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 5).collect(Collectors.toList()))));
+ linkedHashMap.put("liuHao", JSONUtil.parse(
+ TzInfoConversion.INSTANCE.entitysToVo(
+ tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 6).collect(Collectors.toList()))));
+ linkedHashMap.put("sanHao", JSONUtil.parse(
+ TzInfoConversion.INSTANCE.entitysToVo(
+ tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 7).collect(Collectors.toList()))));
+ linkedHashMap.put("lan", JSONUtil.parse(
+ TzInfoConversion.INSTANCE.entitysToVo(
+ tzInfos.stream().filter(tzInfo -> tzInfo.getType() == 8).collect(Collectors.toList()))));
//投注信息
String tzInfoNoExit = redisUtils.getString(AppContants.TZ_INFO);
if (StrUtil.isNotBlank(tzInfoNoExit)) {
@@ -406,12 +404,35 @@
return linkedHashMap;
}
+ @Override
+ public String getKjNo(String num) {
+ DataDictionaryCustom redBallDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.RED_BALL.getType(),
+ DataDictionaryEnum.RED_BALL.getCode()
+ );
+
+ DataDictionaryCustom blueBallDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.BLUE_BALL.getType(),
+ DataDictionaryEnum.BLUE_BALL.getCode()
+ );
+ if(redBallDic.getValue().equals(num)){
+ return "红";
+ }
+ if(blueBallDic.getValue().equals(num)){
+ return "蓝";
+ }
+ return num;
+ }
+
/**
* 取模运算符%来判断该数字是否为偶数。如果余数为0,则该数字为偶数,返回"双数";否则,该数字为奇数,返回"单数"
* @param num
* @return 1-单数 2-双数
*/
public static String judgeNumberOne(int num) {
+ if(num > 24){
+ return String.valueOf(num);
+ }
if (num % 2 == 0) {
return "双";
} else {
@@ -425,11 +446,137 @@
* @return 1-小数 2-大数
*/
public static String judgeNumberTwo(int num) {
- if (num <= 12) {
- return "小";
- } else {
- return "大";
+ if(num > 24){
+ return String.valueOf(num);
}
+ if (num <= 12) {
+ return "龙1-12";
+ } else {
+ return "虎13-24";
+ }
+ }
+
+ /**
+ * 红
+ * @param num
+ */
+ public static String judgeNumberHong(String num,DataDictionaryCustom redBallDic) {
+ String redBall = redBallDic.getValue();
+ if (redBall.equals(num)) {
+ return "红球";
+ } else {
+ return num;
+ }
+ }
+
+ /**
+ * 蓝
+ * @param num
+ */
+ public static String judgeNumberLan(String num,DataDictionaryCustom blueBallDic) {
+ String blueBall = blueBallDic.getValue();
+ if (blueBall.equals(num)) {
+ return "蓝球";
+ } else {
+ return num;
+ }
+ }
+
+ /**
+ * 彩球
+ * @param num
+ */
+ public static String judgeNumberColor(String num,DataDictionaryCustom colorBallDic) {
+ String colorBall = colorBallDic.getValue();
+ List<String> colorBallList = Arrays.asList(StrUtil.split(colorBall, ","));
+ if (colorBallList.contains(num)) {
+ return "彩球";
+ } else {
+ return num;
+ }
+ }
+
+ /**
+ * 六个号
+ * 判断数字属于哪一组并返回组号
+ * @param number 1-24之间的数字
+ * @return 组号(1, 2, 3, 4)
+ */
+ /**
+ * 判断一个数字属于哪个组并返回组号
+ *
+ * @param num 输入的数字(1-24之间)
+ * @return 组号(1-4之间)
+ */
+ public static String getGroupNumberSix(int num) {
+ if(num > 24){
+ return String.valueOf(num);
+ }
+ // 使用整除来确定组号
+ int i = (num - 1) / 6 + 1;
+ if(1 == i){
+ return "1-6";
+ }else if(2 == i){
+ return "7-12";
+ }else if(3 == i){
+ return "13-18";
+ }else{
+ return "19-24";
+ }
+ }
+
+ /**
+ * 六个号
+ * 判断数字属于哪一组并返回组号
+ * @param number 1-24之间的数字
+ * @return 组号(1, 2, 3, 4)
+ */
+ /**
+ * 判断一个数字属于哪个组并返回组号
+ *
+ * @param num 输入的数字(1-24之间)
+ * @return 组号(1-4之间)
+ */
+ public static String getGroupNumberThree(int num) {
+ if(num > 24){
+ return String.valueOf(num);
+ }
+ // 使用整除来确定组号
+ int i = (num - 1) / 3 + 1;
+ if(1 == i){
+ return "1-3";
+ }else if(2 == i){
+ return "4-6";
+ }else if(3 == i){
+ return "7-9";
+ }else if(4 == i){
+ return "10-12";
+ }else if(5 == i){
+ return "13-15";
+ }else if(6 == i){
+ return "16-18";
+ }else if(7 == i){
+ return "19-21";
+ }else{
+ return "22-24";
+ }
+ }
+
+ public static void main(String[] args) {
+ ArrayList<Integer> CjItemUpdateList = new ArrayList<>();
+ for(int i =1 ;i<=10000;i++){
+ CjItemUpdateList.add(i);
+ }
+ int listSize= CjItemUpdateList.size();
+ int toIndex = 500;
+ for(int i = 0; i<CjItemUpdateList.size(); i+=toIndex){
+ if(i + toIndex > listSize){ //作用为toIndex最后没有1000条数据则剩余几条newList中就装几条
+ toIndex = listSize - i;
+ }
+ List<Integer> newList = new ArrayList<>(CjItemUpdateList.subList(i, i + toIndex));
+ System.out.println(newList.toString());
+ }
+
}
}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiTzInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiTzInfoVo.java
index 4b504cf..00ed0d8 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/ApiTzInfoVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiTzInfoVo.java
@@ -14,8 +14,8 @@
@ApiModelProperty(value = "ID")
private Long id;//类型 1-按大小 2-按单双 3-按数字
- @ApiModelProperty(value = "类型 1-按大小 2-按单双 3-按数字")
- private Integer type;//类型 1-按大小 2-按单双 3-按数字
+ @ApiModelProperty(value = "类型 1-按大小 2-按单双 3-按数字 4- 按红蓝 5-按彩球 6-六个号码为一组 7-三个号码为一组")
+ private Integer type;//类型 1-按大小 2-按单双 3-按数字 4- 按红蓝 5-按彩球 6-六个号码为一组 7-三个号码为一组
@ApiModelProperty(value = "值")
private String tzCode;//值
diff --git a/src/main/resources/templates/febs/views/modules/goods/tzList.html b/src/main/resources/templates/febs/views/modules/goods/tzList.html
index 3787916..d255d86 100644
--- a/src/main/resources/templates/febs/views/modules/goods/tzList.html
+++ b/src/main/resources/templates/febs/views/modules/goods/tzList.html
@@ -47,8 +47,20 @@
<span class="layui-badge febs-tag-green">大小</span>
{{# } else if (d.type == 2) { }}
<span class="layui-badge febs-tag-cyan">单双</span>
+ {{# } else if (d.type == 3) { }}
+ <span class="layui-badge febs-tag-blue">数字</span>
+ {{# } else if (d.type == 4) { }}
+ <span class="layui-badge febs-tag-red">红</span>
+ {{# } else if (d.type == 5) { }}
+ <span class="layui-badge febs-tag-yellow">彩</span>
+ {{# } else if (d.type == 6) { }}
+ <span class="layui-badge febs-tag-cyan">六个号码</span>
+ {{# } else if (d.type == 7) { }}
+ <span class="layui-badge febs-tag-green">三个号码</span>
+ {{# } else if (d.type == 8) { }}
+ <span class="layui-badge febs-tag-green">蓝</span>
{{# } else { }}
- <span class="layui-badge febs-tag-orange">数字</span>
+ <span class="layui-badge febs-tag-orange">-</span>
{{# } }}
</div>
</script>
diff --git a/src/test/java/cc/mrbird/febs/AgentTest.java b/src/test/java/cc/mrbird/febs/AgentTest.java
index 18a1ded..164c7db 100644
--- a/src/test/java/cc/mrbird/febs/AgentTest.java
+++ b/src/test/java/cc/mrbird/febs/AgentTest.java
@@ -1,7 +1,17 @@
package cc.mrbird.febs;
+import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
+import cc.mrbird.febs.mall.entity.AgentInfo;
+import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
+import cc.mrbird.febs.mall.entity.TzInfo;
+import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
+import cc.mrbird.febs.mall.mapper.TzInfoMapper;
import lombok.extern.slf4j.Slf4j;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
+
+import java.math.BigDecimal;
/**
@@ -12,11 +22,29 @@
@SpringBootTest
public class AgentTest {
+
+ @Autowired
+ private TzInfoMapper tzInfoMapper;
+
+ @Test
+ public void insertTzInfo(){
+ TzInfo tzInfo = new TzInfo();
+ tzInfo.setType(4);
+ tzInfo.setTzCode("红");
+ tzInfo.setTzPercent(new BigDecimal("20"));
+ tzInfoMapper.insert(tzInfo);
+ TzInfo tzInfo1 = new TzInfo();
+ tzInfo1.setType(4);
+ tzInfo1.setTzCode("蓝");
+ tzInfo1.setTzPercent(new BigDecimal("20"));
+ tzInfoMapper.insert(tzInfo1);
+ }
+
// @Autowired
// private AgentProducer agentProducer;
//
-// @Autowired
-// private DataDictionaryCustomMapper dataDictionaryCustomMapper;
+ @Autowired
+ private DataDictionaryCustomMapper dataDictionaryCustomMapper;
//
// @Autowired
// private IAgentService agentService;
@@ -501,22 +529,15 @@
// System.out.println(apiMallActWinDetailsVoIPage);
// }
//
-// @Test
-// public void insertAgentTest() {
-//// AgentInfo agentInfo = new AgentInfo();
-//// agentInfo.setOrderType(2);
-//// agentInfo.setOrderCnt(2000);
-//// agentInfo.setLastCnt(3);
-//// agentInfo.setDirectIncome(BigDecimal.valueOf(50));
-//// agentInfo.setTeamIncome(BigDecimal.valueOf(15));
-//// agentInfo.setTeamIncomeType(2);
-////
-//// DataDictionaryCustom data = new DataDictionaryCustom();
-//// data.setType("AGENT_LEVEL_REQUIRE");
-//// data.setCode(AgentLevelEnum.FOUR_LEVEL.name());
-//// data.setValue(JSONObject.toJSONString(agentInfo));
-//// dataDictionaryCustomMapper.insert(data);
-// }
+ @Test
+ public void insertAgentTest() {
+
+ DataDictionaryCustom data = new DataDictionaryCustom();
+ data.setType("AGENT_LEVEL_REQUIRE");
+ data.setCode(AgentLevelEnum.FOUR_LEVEL.name());
+ data.setValue("1");
+ dataDictionaryCustomMapper.insert(data);
+ }
//
// @Test
// public void insertData() {
diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java
index e79c148..9f4f7ca 100644
--- a/src/test/java/cc/mrbird/febs/ProfitTest.java
+++ b/src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -1,6 +1,12 @@
package cc.mrbird.febs;
+import cc.mrbird.febs.mall.entity.TzInfo;
+import cc.mrbird.febs.mall.mapper.TzInfoMapper;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
+
+import java.math.BigDecimal;
/**
@@ -10,6 +16,21 @@
@SpringBootTest
public class ProfitTest {
+ @Autowired
+ private TzInfoMapper tzInfoMapper;
+ @Test
+ public void insertTzInfo(){
+ TzInfo tzInfo = new TzInfo();
+ tzInfo.setType(4);
+ tzInfo.setTzCode("红");
+ tzInfo.setTzPercent(new BigDecimal("20"));
+ tzInfoMapper.insert(tzInfo);
+ TzInfo tzInfo1 = new TzInfo();
+ tzInfo1.setType(4);
+ tzInfo1.setTzCode("蓝");
+ tzInfo1.setTzPercent(new BigDecimal("20"));
+ tzInfoMapper.insert(tzInfo1);
+ }
}
--
Gitblit v1.9.1