| | |
| | | package cc.mrbird.febs.job; |
| | | |
| | | import cc.mrbird.febs.common.utils.RedisUtils; |
| | | import cc.mrbird.febs.dapp.entity.*; |
| | | import cc.mrbird.febs.dapp.mapper.*; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUtil; |
| | | 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 lombok.extern.slf4j.Slf4j; |
| | | import org.jline.utils.Log; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.text.DecimalFormat; |
| | | import java.text.Format; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.List; |
| | | |
| | | @Slf4j |
| | |
| | | @Autowired |
| | | private DappMemberDao dappMemberDao; |
| | | |
| | | @Autowired |
| | | private DappOnHookAwardDao dappOnHookAwardDao; |
| | | |
| | | @Autowired |
| | | private RedisUtils redisUtils; |
| | | |
| | | /** |
| | | * 五分钟更新一次数据 |
| | | * 让挂机字表的状态为1:已生效 |
| | |
| | | // @Scheduled(cron = "0/5 * * * * ? ") |
| | | @Scheduled(cron = "0 0/5 * * * ? ") |
| | | public void updatePlanOrderItem(){ |
| | | Log.info("开始更新挂机字表状态"); |
| | | Log.info("开始更新挂机子表状态"); |
| | | List<IgtOnHookPlanOrder> igtOnHookPlanOrders = igtOnHookPlanOrderDao.selectByState(1); |
| | | if(CollUtil.isEmpty(igtOnHookPlanOrders)){ |
| | | return; |
| | | } |
| | | for(IgtOnHookPlanOrder igtOnHookPlanOrder : igtOnHookPlanOrders){ |
| | | //让挂机子表的状态为1:已生效 |
| | | //todo 获取所属期数去更新数据 |
| | | Long orderId = igtOnHookPlanOrder.getId(); |
| | | Long memberId = igtOnHookPlanOrder.getMemberId(); |
| | | IgtOnHookPlanOrderItem igtOnHookPlanOrderItem = igtOnHookPlanOrderItemDao.selectByOrderIdAndMemberIdAndState(orderId,memberId,2); |
| | | if(ObjectUtil.isNotEmpty(igtOnHookPlanOrderItem)){ |
| | | igtOnHookPlanOrderItem.setState(1); |
| | | igtOnHookPlanOrderItemDao.updateById(igtOnHookPlanOrderItem); |
| | | if(BigDecimal.ZERO.compareTo(igtOnHookPlanOrderItem.getProfit()) < 0){ |
| | | //增加挂机主表的挂机总收益和增加挂机剩余金额 |
| | | Integer updateCount = igtOnHookPlanOrderDao.addAvaAmountAddProfitById(igtOnHookPlanOrder.getId() |
| | | ,igtOnHookPlanOrderItem.getProfit() |
| | | ,igtOnHookPlanOrderItem.getAmount()); |
| | | if(2 == igtOnHookPlanOrderItem.getIsGoal()){ |
| | | //如果中奖,增加挂机主表的挂机总收益 |
| | | Integer updateCount = igtOnHookPlanOrderDao.AddProfitById(igtOnHookPlanOrder.getId() |
| | | ,igtOnHookPlanOrderItem.getProfit()); |
| | | }else{ |
| | | //增加挂机主表的挂机总收益和减少挂机剩余金额 |
| | | //如果不中奖,减少挂机剩余金额即减少本金 |
| | | Integer updateCount = igtOnHookPlanOrderDao.updateAvaAmountById(igtOnHookPlanOrder.getId() |
| | | ,igtOnHookPlanOrderItem.getProfit() |
| | | ,igtOnHookPlanOrderItem.getAmount()); |
| | | } |
| | | } |
| | |
| | | IgtOnHookPlanOrderItem igtOnHookPlanOrderItem = igtOnHookPlanOrderItemDao.selectByOrderIdAndMemberIdAndState(orderId,memberId,2); |
| | | if(ObjectUtil.isEmpty(igtOnHookPlanOrderItem)){ |
| | | BigDecimal totalProfit = igtOnHookPlanOrderItemDao.selectTotalProfitByByOrderIdAndMemberIdAndState(orderId,memberId,1,2); |
| | | BigDecimal totalAmount = igtOnHookPlanOrderItemDao.selectTotalAmountByByOrderIdAndMemberIdAndState(orderId,memberId,1,2); |
| | | BigDecimal totalAmount = igtOnHookPlanOrderItemDao.selectTotalAmountByByOrderIdAndMemberIdAndState(orderId,memberId,1,1); |
| | | igtOnHookPlanOrder.setState(2); |
| | | //一次挂机剩余的全部金额 |
| | | BigDecimal totalMoney = totalAmount.add(totalProfit).add(avaAmount); |
| | |
| | | |
| | | DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId); |
| | | BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount(); |
| | | //如果中奖,返回本金加收益加剩余投注金额 |
| | | BigDecimal total = totalProfit.add(totalAmount).add(igtOnHookPlanOrder.getAvaAmount()).setScale(2, BigDecimal.ROUND_DOWN); |
| | | dappWalletCoinDao.addTotalAndaddAvailableById(memberId,total); |
| | | |
| | | //如果中奖,返回收益,如果没中奖,则返回本金,最后加上剩余总挂机金额 |
| | | BigDecimal total = totalProfit.add(totalAmount).add(igtOnHookPlanOrder.getAvaAmount()).setScale(4, BigDecimal.ROUND_DOWN); |
| | | dappWalletCoinDao.addTotalAndaddAvailableById(dappWalletCoinEntity.getId(),total); |
| | | |
| | | BigDecimal add = availableAmount.add(total); |
| | | |
| | | DappAccountMoneyChangeEntity dappAccountMoneyChangeEntity = new DappAccountMoneyChangeEntity(memberId, availableAmount, total, add, "投注盈利", 5); |
| | | BigDecimal subtract = add.subtract(totalAmount); |
| | | DappAccountMoneyChangeEntity dappAccountMoneyChangeEntity = new DappAccountMoneyChangeEntity(memberId, subtract, totalProfit, add, "投注盈利", 5); |
| | | dappAccountMoneyChangeDao.insert(dappAccountMoneyChangeEntity); |
| | | } |
| | | |
| | |
| | | |
| | | } |
| | | |
| | | @Scheduled(cron = "0 0/1 * * * ? ") |
| | | public void createAwardInfo(){ |
| | | Log.info("挂架开奖记录"); |
| | | /** |
| | | * 每天跑一次,直接生成全部的记录 |
| | | * 产生中奖记录 |
| | | */ |
| | | //每天开奖次数 288次 |
| | | DateTime date = DateUtil.date(); |
| | | |
| | | String aWardTime = DateUtil.format(date, "yyyy-MM-dd"); |
| | | DateTime aWardTimeStart = DateUtil.parseDateTime(aWardTime + " 00:00:00"); |
| | | // DateTime dateTime = DateUtil.offsetMinute(aWardTimeStart, 5); |
| | | |
| | | |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); |
| | | String yyyyMMdd = sdf.format(date); |
| | | QueryWrapper<DappOnHookAward> dappOnHookAwardQueryWrapper = new QueryWrapper(); |
| | | dappOnHookAwardQueryWrapper.like("record_num",yyyyMMdd); |
| | | Integer selectCount = dappOnHookAwardDao.selectCount(dappOnHookAwardQueryWrapper); |
| | | if(0 < selectCount){ |
| | | return; |
| | | } |
| | | Format formatCount = new DecimalFormat("000"); |
| | | //一般都是将累加的数字当做一些单号的一部分,format要求string |
| | | int dayMillise = (24 * 60) / 5; |
| | | for(int i= 1;i <= dayMillise;i++){ |
| | | DappOnHookAward dappOnHookAward = new DappOnHookAward(); |
| | | int randomInt = RandomUtil.randomInt(10000, 99999); |
| | | dappOnHookAward.setAwardNum(Integer.toString(randomInt)); |
| | | dappOnHookAward.setState(2); |
| | | String str = formatCount.format(i); |
| | | dappOnHookAward.setRecordNum(yyyyMMdd+str); |
| | | dappOnHookAward.setAwardTime(aWardTimeStart); |
| | | dappOnHookAwardDao.insert(dappOnHookAward); |
| | | aWardTimeStart = DateUtil.offsetMinute(aWardTimeStart, 5); |
| | | } |
| | | } |
| | | |
| | | @Scheduled(cron = "0 0/5 * * * ? ") |
| | | public void updateAwardInfo(){ |
| | | Log.info("更新挂架开奖记录"); |
| | | DateTime date = DateUtil.date(); |
| | | |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| | | String yyyyMMddHHMM = sdf.format(date); |
| | | DappOnHookAward dappOnHookAward = dappOnHookAwardDao.selectByByAwardTime(yyyyMMddHHMM); |
| | | dappOnHookAward.setState(1); |
| | | dappOnHookAwardDao.updateById(dappOnHookAward); |
| | | String redisKey = "on_hook_award_id"; |
| | | String onHookAwardRedisId = redisUtils.getString(redisKey); |
| | | if(StrUtil.isBlank(onHookAwardRedisId)){ |
| | | redisUtils.set(redisKey,dappOnHookAward.getId().toString(),0L); |
| | | } |
| | | redisUtils.set(redisKey,dappOnHookAward.getId().toString(),0L); |
| | | |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | |
| | | DateTime date = DateUtil.date(); |
| | | |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| | | String yyyyMMddHHMM = sdf.format(date); |
| | | |
| | | System.out.println(yyyyMMddHHMM); |
| | | |
| | | DateTime date1 = DateUtil.date(); |
| | | |
| | | SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| | | String yyyyMMddHHMM1 = sdf1.format(date1); |
| | | |
| | | System.out.println(yyyyMMddHHMM1); |
| | | } |
| | | |
| | | } |