xiaoyong931011
2022-10-27 ac397945cddd60cdc1c95d79c17bfca074e5687e
src/main/java/cc/mrbird/febs/dapp/service/impl/ApiIgtOnHookPlanServiceImpl.java
@@ -28,6 +28,7 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.bridge.MessageUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -49,6 +50,9 @@
    private final RedisUtils redisUtils;
    private final DappOnHookAwardDao dappOnHookAwardDao;
    private final DappWalletService dappWalletService;
    @Value("${spring.profiles.active}")
    private String active;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public FebsResponse start(ApiStartDto apiStartDto) {
@@ -94,7 +98,7 @@
        DataDictionaryCustom endTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.END_TIME.getType(), DataDictionaryEnum.END_TIME.getCode());
        DateTime startTime = DateUtil.parseTimeToday(startTimeDic.getValue());
        DateTime endTime = DateUtil.parseTimeToday(endTimeDic.getValue());
        DateTime nowTime = DateUtil.parseTimeToday(DateUtil.now());
        DateTime nowTime = DateUtil.parseTimeToday(DateUtil.format(DateUtil.date(),"HH:mm:ss"));
        if(DateUtil.compare(nowTime,startTime) < 0){
            return new FebsResponse().fail().message(MessageSourceUtils.getString("member_err_0015"));
        }
@@ -163,7 +167,13 @@
            throw new FebsException(MessageSourceUtils.getString("login_err_003"));
        }
        //获取下一个开奖
        String redisKey = "on_hook_award_id";
        String redisKey = "";
        if("prod".equals(active)){
            redisKey = "on_hook_award_id";
        }else{
            redisKey = "on_hook_award_id_test";
        }
        String onHookAwardRedisId = redisUtils.getString(redisKey);
        DappOnHookAward dappOnHookAward = dappOnHookAwardDao.selectById(Long.parseLong(onHookAwardRedisId));
        if(ObjectUtil.isEmpty(dappOnHookAward)){
@@ -231,25 +241,39 @@
        BigDecimal systemTotal = dappWalletService.updatePTFC(memberId,totalProfit);
        totalProfit = totalProfit.subtract(profitSharingTotal).subtract(systemTotal);
        //更新主表为结束状态
        IgtOnHookPlanOrder igtOnHookPlanOrder = igtOnHookPlanOrderDao.selectById(orderId);
        igtOnHookPlanOrder.setState(2);
        igtOnHookPlanOrder.setPlanAmount(totalProfit);
        igtOnHookPlanOrderDao.updateById(igtOnHookPlanOrder);
        //获取用户信息的是否盈利字段
        DappMemberEntity dappMember = dappMemberDao.selectById(memberId);
        Integer isProfit = dappMember.getIsProfit() == null ? 1 : dappMember.getIsProfit();
        //所有未中奖的本金
        BigDecimal totalAmount = igtOnHookPlanOrderItemDao.selectTotalAmountByByOrderIdAndMemberIdAndState(orderId,memberId,1,1);
        //更新主表为结束状态
        IgtOnHookPlanOrder igtOnHookPlanOrder = igtOnHookPlanOrderDao.selectById(orderId);
        BigDecimal avaAmount = igtOnHookPlanOrder.getAvaAmount();
        BigDecimal planAmount = igtOnHookPlanOrder.getPlanAmount();
        igtOnHookPlanOrder.setState(2);
        //一次挂机剩余的全部金额
        BigDecimal totalMoney = totalProfit.add(avaAmount);
        if(totalMoney.compareTo(planAmount)<=0){
            igtOnHookPlanOrder.setProfitState(2);
        }else{
            igtOnHookPlanOrder.setProfitState(1);
        }
        igtOnHookPlanOrder.setProfit(totalProfit);
        igtOnHookPlanOrderDao.updateById(igtOnHookPlanOrder);
        DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId);
        BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount();
        //如果中奖,返回收益,如果没中奖,则返回本金,最后加上剩余总挂机金额
        BigDecimal total = totalProfit.add(totalAmount).add(igtOnHookPlanOrder.getAvaAmount()).setScale(4, BigDecimal.ROUND_DOWN);
            //如果中奖,返回收益,最后加上剩余总挂机金额
//            total = totalProfit.add(totalAmount).add(igtOnHookPlanOrder.getAvaAmount()).setScale(4, BigDecimal.ROUND_DOWN);
        BigDecimal total = totalProfit.add(igtOnHookPlanOrder.getAvaAmount()).setScale(4, BigDecimal.ROUND_DOWN);
        dappWalletCoinDao.addTotalAndaddAvailableById(dappWalletCoinEntity.getId(),total);
        //生成流水记录
        BigDecimal add = availableAmount.add(total);
        BigDecimal subtract = add.subtract(totalAmount);
        BigDecimal subtract = add.subtract(totalProfit);
        DappAccountMoneyChangeEntity dappAccountMoneyChangeEntity = new DappAccountMoneyChangeEntity(memberId, subtract, totalProfit, add, "投注盈利", 5);
        dappAccountMoneyChangeDao.insert(dappAccountMoneyChangeEntity);
        //更新用户表是否正在挂机状态字段为否
        DappMemberEntity dappMember= dappMemberDao.selectById(memberId);
        dappMember.setIsOnHook(3);
        dappMemberDao.updateById(dappMember);
        return new FebsResponse().success().message(MessageSourceUtils.getString("Operation_001"));
@@ -330,6 +354,9 @@
    }
    public static void main(String[] args) {
        DateTime nowTime = DateUtil.parseTimeToday(DateUtil.format(DateUtil.date(),"HH:mm:ss"));
        System.out.println(nowTime);
        int maxTimes = 10;
        for(int i =1;i<maxTimes;){
            maxTimes --;