| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | private final CjInfoMapper cjInfoMapper; |
| | | private final CjItemMapper cjItemMapper; |
| | | private final IApiMallMemberService mallMemberService; |
| | | private final AsyncCjService asyncCjService; |
| | | |
| | | @Override |
| | | public FebsResponse kjRecord(KjRecordDto kjRecordDto) { |
| | |
| | | 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); |
| | | |
| | | for(int i = 1;i<5;i++){ |
| | | 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); |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | @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(), |
| | |
| | | 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); |
| | |
| | | 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()); |
| | |
| | | String orderNo = MallUtils.getOrderNum("T"); |
| | | mallMemberService.addMoneyFlow( |
| | | memberId, |
| | | totalAmount, |
| | | totalAmount.negate(), |
| | | MoneyFlowTypeNewEnum.STATIC_BONUS.getValue(), |
| | | orderNo, |
| | | MoneyFlowTypeNewEnum.STATIC_BONUS.getDescription(), |
| | |
| | | |
| | | @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); |
| | |
| | | |
| | | @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 "大"; |
| | | } |
| | | } |
| | | |
| | | } |