| | |
| | | import cc.mrbird.febs.common.utils.AppContants; |
| | | import cc.mrbird.febs.common.utils.MallUtils; |
| | | import cc.mrbird.febs.common.utils.RedisUtils; |
| | | import cc.mrbird.febs.mall.conversion.TzInfoConversion; |
| | | import cc.mrbird.febs.mall.dto.ApiCreateDto; |
| | | import cc.mrbird.febs.mall.dto.ApiCreateItemDto; |
| | | 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.IApiMallMemberService; |
| | | import cc.mrbird.febs.mall.vo.ApiTzInfoVo; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSON; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Slf4j |
| | |
| | | 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); |
| | |
| | | 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); |
| | |
| | | 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){ |
| | |
| | | } |
| | | |
| | | @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(), |
| | |
| | | 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){ |
| | |
| | | |
| | | 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("参数有误,请刷新页面"); |
| | | } |
| | |
| | | log.info("结束:{}", (System.currentTimeMillis() - l)); |
| | | } |
| | | |
| | | @Override |
| | | public void tzInfo() { |
| | | Map<String, JSON> linkedHashMap = new LinkedHashMap<>(); |
| | | |
| | | 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)) { |
| | | redisUtils.del(AppContants.TZ_INFO); |
| | | } |
| | | JSON jsonStr = JSONUtil.parse(linkedHashMap); |
| | | redisUtils.set(AppContants.TZ_INFO, jsonStr); |
| | | } |
| | | |
| | | } |