| | |
| | | package cc.mrbird.febs.job; |
| | | |
| | | |
| | | import cc.mrbird.febs.dapp.entity.DappFundFlowEntity; |
| | | import cc.mrbird.febs.dapp.entity.DappMemberEntity; |
| | | import cc.mrbird.febs.dapp.entity.DappStorage; |
| | | import cc.mrbird.febs.dapp.entity.DataDictionaryCustom; |
| | | import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum; |
| | | import cc.mrbird.febs.dapp.enumerate.MoneyFlowEnum; |
| | | import cc.mrbird.febs.dapp.mapper.DappFundFlowDao; |
| | | import cc.mrbird.febs.dapp.mapper.DappMemberDao; |
| | | import cc.mrbird.febs.dapp.mapper.DappStorageMapper; |
| | | import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper; |
| | | import cc.mrbird.febs.dapp.service.DappWalletService; |
| | | import cc.mrbird.febs.tree.TreeConstants; |
| | | import cc.mrbird.febs.dapp.service.DappSystemService; |
| | | import cc.mrbird.febs.dapp.vo.ApidirectNumVo; |
| | | import cc.mrbird.febs.rabbit.producer.ChainProducer; |
| | | 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.StrUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Slf4j |
| | | @Component |
| | | @ConditionalOnProperty(prefix = "system", name = "quartz-job", havingValue = "true") |
| | | @ConditionalOnProperty(prefix = "system", name = "daily-job", havingValue = "true") |
| | | public class ProfitDailyJob { |
| | | |
| | | @Autowired |
| | | private DappMemberDao dappMemberDao; |
| | | @Autowired |
| | | private DappFundFlowDao dappFundFlowDao; |
| | | @Autowired |
| | | @Resource |
| | | private DappSystemService dappSystemService; |
| | | @Resource |
| | | private DataDictionaryCustomMapper dataDictionaryCustomMapper; |
| | | @Autowired |
| | | private DappWalletService dappWalletService; |
| | | @Resource |
| | | private DappStorageMapper dappStorageMapper; |
| | | @Resource |
| | | private DappMemberDao dappMemberDao; |
| | | @Resource |
| | | private ChainProducer chainProducer; |
| | | @Resource |
| | | private DappFundFlowDao dappFundFlowDao; |
| | | |
| | | /** |
| | | * 每天释放1%的静态释放 |
| | | */ |
| | | @Scheduled(cron = "0 0 0 * * ?") |
| | | public void profitDailyJob() { |
| | | log.info("每日产矿任务执行"); |
| | | DataDictionaryCustom symbolPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.SYMBOL_PRICE.getType(), DataDictionaryEnum.SYMBOL_PRICE.getCode()); |
| | | if (symbolPriceDic == null) { |
| | | log.info("未设置币种价格"); |
| | | public void profitDailyJobThree() { |
| | | QueryWrapper<DappStorage> objectQueryWrapper = new QueryWrapper<>(); |
| | | objectQueryWrapper.eq("state",1); |
| | | List<DappStorage> dappStorages = dappStorageMapper.selectList(objectQueryWrapper); |
| | | if(CollUtil.isEmpty(dappStorages)){ |
| | | return; |
| | | } |
| | | |
| | | DataDictionaryCustom rebateDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.REBATE_PERCENT.getType(), DataDictionaryEnum.REBATE_PERCENT.getCode()); |
| | | if (rebateDic == null) { |
| | | log.info("未设置每日产矿比例"); |
| | | for(DappStorage storage : dappStorages){ |
| | | Long memberId = storage.getMemberId(); |
| | | BigDecimal releaseAmount = storage.getReleaseAmount(); |
| | | |
| | | /** |
| | | * DAO成员动态: |
| | | * * 1.直推1个拿2代,直推10个拿20代,直推15个拿30代,最高30代 |
| | | */ |
| | | chainProducer.sendMemberDynamicPerkMsg(storage.getId()); |
| | | |
| | | dappSystemService.updateBalanceInsertFlow( |
| | | releaseAmount, |
| | | memberId, |
| | | MoneyFlowEnum.STATIC_PERK.getValue(), |
| | | StrUtil.format(MoneyFlowEnum.STATIC_PERK.getDescrition(),releaseAmount)); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 六、永动补偿池2% |
| | | * 24小时内最后一名拿走池子50% |
| | | * 倒数2-100名拿走池子50%平分(根据时间) |
| | | * |
| | | * |
| | | * 五、DAO永动激励池:6% |
| | | * 循环激励50%(每天下午17:00结算) |
| | | * (其中50%给予当天大单排名激励前4名,40%、30%、20、10%; |
| | | * 另外50% 给予当天直推总业绩排名激励前10名,第1名40%,2-4名30%,5-10名30%) |
| | | */ |
| | | @Scheduled(cron = "0 0/1 0 * * ?") |
| | | public void profitDailyJobOne() { |
| | | |
| | | Date date = new Date(); |
| | | DappStorage dappStorageLast = dappStorageMapper.selectOneByCreateTimeDesc(0, 1); |
| | | DateTime dateTime1 = DateUtil.offsetHour(dappStorageLast.getCreateTime(), 24); |
| | | int compare = DateUtil.compare(dateTime1, date); |
| | | if(compare > 0){ |
| | | return; |
| | | } |
| | | |
| | | BigDecimal symbolPrice = new BigDecimal(symbolPriceDic.getValue()); |
| | | BigDecimal rebateRatio = new BigDecimal(rebateDic.getValue()); |
| | | |
| | | QueryWrapper<DappMemberEntity> query = new QueryWrapper<>(); |
| | | query.eq("active_status", 1); |
| | | List<DappMemberEntity> members = dappMemberDao.selectList(query); |
| | | if (CollUtil.isEmpty(members)) { |
| | | DataDictionaryCustom symbolDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.BUCHANG_SYMBOL.getType(), |
| | | DataDictionaryEnum.BUCHANG_SYMBOL.getCode() |
| | | ); |
| | | if(2 == Integer.parseInt(symbolDic.getValue())){ |
| | | return; |
| | | } |
| | | symbolDic.setValue("2"); |
| | | dataDictionaryCustomMapper.updateById(symbolDic); |
| | | |
| | | members.forEach(item -> { |
| | | QueryWrapper<DappFundFlowEntity> fundFlowQuery = new QueryWrapper<>(); |
| | | fundFlowQuery.eq("member_id", item.getId()); |
| | | fundFlowQuery.eq("type", 11); |
| | | List<DappFundFlowEntity> flows = dappFundFlowDao.selectList(fundFlowQuery); |
| | | DataDictionaryCustom buChangChiDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.BUCAHNG_CHI.getType(), |
| | | DataDictionaryEnum.BUCAHNG_CHI.getCode() |
| | | ); |
| | | //永动补偿池2% |
| | | BigDecimal buChangAmountTotal = new BigDecimal(buChangChiDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN); |
| | | if(BigDecimal.ZERO.compareTo(buChangAmountTotal) >= 0){ |
| | | return; |
| | | } |
| | | //剩余金额 |
| | | BigDecimal surplusAmount = BigDecimal.ZERO; |
| | | /** |
| | | * 最后一名拿走池子50% |
| | | */ |
| | | BigDecimal oneAmount = buChangAmountTotal.multiply(new BigDecimal("0.5")).setScale(2,BigDecimal.ROUND_DOWN); |
| | | |
| | | BigDecimal sum = BigDecimal.ZERO; |
| | | if (CollUtil.isNotEmpty(flows)) { |
| | | double symbolSum = flows.stream().mapToDouble(flow -> flow.getAmount().doubleValue()).sum(); |
| | | sum = symbolPrice.multiply(new BigDecimal(symbolSum)); |
| | | DateTime dateTime = DateUtil.offsetHour(new Date(), -24); |
| | | DappStorage dappStorage = dappStorageMapper.selectOneByDateDesc(dateTime); |
| | | if(ObjectUtil.isNotEmpty(dappStorage)){ |
| | | Long memberId = dappStorage.getMemberId(); |
| | | dappSystemService.updateBalanceInsertFlow( |
| | | oneAmount, |
| | | memberId, |
| | | MoneyFlowEnum.BU_CHANG_PERK.getValue(), |
| | | StrUtil.format(MoneyFlowEnum.BU_CHANG_PERK.getDescrition(),buChangAmountTotal,oneAmount)); |
| | | |
| | | surplusAmount = surplusAmount.add(oneAmount); |
| | | } |
| | | /** |
| | | * 倒数2-100名拿走池子50%平分(根据时间) |
| | | */ |
| | | BigDecimal otherAmount = buChangAmountTotal.subtract(oneAmount); |
| | | List<DappStorage> dappStorages = dappStorageMapper.selectListByDateDesc(dateTime); |
| | | if(CollUtil.isNotEmpty(dappStorages)){ |
| | | |
| | | BigDecimal otherAmountReal = otherAmount.divide(new BigDecimal(dappStorages.size())).setScale(2, BigDecimal.ROUND_DOWN); |
| | | surplusAmount = surplusAmount.add(otherAmount); |
| | | for(DappStorage storage : dappStorages){ |
| | | Long memberId = storage.getMemberId(); |
| | | dappSystemService.updateBalanceInsertFlow( |
| | | otherAmountReal, |
| | | memberId, |
| | | MoneyFlowEnum.BU_CHANG_PERK.getValue(), |
| | | StrUtil.format(MoneyFlowEnum.BU_CHANG_PERK.getDescrition(),buChangAmountTotal,oneAmount)); |
| | | } |
| | | } |
| | | buChangChiDic.setValue(buChangAmountTotal.subtract(surplusAmount).setScale(2,BigDecimal.ROUND_DOWN).toString()); |
| | | dataDictionaryCustomMapper.updateById(buChangChiDic); |
| | | } |
| | | |
| | | if (CollUtil.isEmpty(flows) || TreeConstants.PUT_IN_AMOUNT.compareTo(sum) > 0) { |
| | | BigDecimal profitU = TreeConstants.PUT_IN_AMOUNT.multiply(rebateRatio.divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_DOWN)); |
| | | /** |
| | | * 五、DAO永动激励池:6% |
| | | * 循环激励50%(每天下午17:00结算) |
| | | * (其中50%给予当天大单排名激励前4名,40%、30%、20、10%; |
| | | * 另外50% 给予当天直推总业绩排名激励前10名,第1名40%,2-4名30%,5-10名30%) |
| | | */ |
| | | @Scheduled(cron = "0 0 17 * * ?") |
| | | public void profitDailyJobTwo() { |
| | | |
| | | BigDecimal remain = TreeConstants.PUT_IN_AMOUNT.subtract(sum); |
| | | if (remain.compareTo(profitU) < 0) { |
| | | profitU = remain; |
| | | DataDictionaryCustom jiliChiDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.JILI_CHI.getType(), |
| | | DataDictionaryEnum.JILI_CHI.getCode() |
| | | ); |
| | | |
| | | BigDecimal realAmount = BigDecimal.ZERO; |
| | | //DAO永动激励池50% |
| | | BigDecimal jiLiTotal = new BigDecimal(jiliChiDic.getValue()).multiply(new BigDecimal("0.5")).setScale(2, BigDecimal.ROUND_DOWN); |
| | | if(BigDecimal.ZERO.compareTo(jiLiTotal) >= 0){ |
| | | return; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 其中50%给予当天大单排名激励前4名,40%、30%、20、10% |
| | | */ |
| | | BigDecimal daDanTotal = jiLiTotal.multiply(new BigDecimal("0.5")).setScale(2, BigDecimal.ROUND_DOWN); |
| | | if(daDanTotal.compareTo(BigDecimal.ZERO) > 0){ |
| | | |
| | | int oneCount = 4; |
| | | int twoCount = 3; |
| | | int threeCount = 2; |
| | | int fourCount = 1; |
| | | int count = oneCount + twoCount + threeCount + fourCount; |
| | | //每一份的奖励数量 |
| | | BigDecimal everyAmount = daDanTotal.divide(new BigDecimal(count)); |
| | | |
| | | if(everyAmount.compareTo(BigDecimal.ZERO) > 0){ |
| | | List<DappStorage> dappStorageOne = dappStorageMapper.selectSumByAmountDescFiveToFive(DateUtil.offsetHour(new Date(),-24),0,1); |
| | | if(CollUtil.isNotEmpty(dappStorageOne)){ |
| | | BigDecimal multiply = everyAmount.multiply(new BigDecimal(oneCount)); |
| | | dappSystemService.updateBalanceInsertFlow( |
| | | multiply, |
| | | dappStorageOne.get(0).getMemberId(), |
| | | MoneyFlowEnum.DA_DAN_JI_LI_PERK.getValue(), |
| | | StrUtil.format(MoneyFlowEnum.DA_DAN_JI_LI_PERK.getDescrition(),daDanTotal,multiply)); |
| | | |
| | | realAmount = realAmount.add(multiply); |
| | | } |
| | | List<DappStorage> dappStorageTwo = dappStorageMapper.selectSumByAmountDescFiveToFive(DateUtil.offsetHour(new Date(),-24),1,1); |
| | | if(CollUtil.isNotEmpty(dappStorageTwo)){ |
| | | BigDecimal multiply = everyAmount.multiply(new BigDecimal(twoCount)); |
| | | dappSystemService.updateBalanceInsertFlow( |
| | | multiply, |
| | | dappStorageTwo.get(0).getMemberId(), |
| | | MoneyFlowEnum.DA_DAN_JI_LI_PERK.getValue(), |
| | | StrUtil.format(MoneyFlowEnum.DA_DAN_JI_LI_PERK.getDescrition(),daDanTotal,multiply)); |
| | | |
| | | BigDecimal profitSymbol = profitU.divide(symbolPrice, 8, RoundingMode.HALF_DOWN); |
| | | realAmount = realAmount.add(multiply); |
| | | } |
| | | List<DappStorage> dappStorageThree = dappStorageMapper.selectSumByAmountDescFiveToFive(DateUtil.offsetHour(new Date(),-24),2,1); |
| | | if(CollUtil.isNotEmpty(dappStorageThree)){ |
| | | BigDecimal multiply = everyAmount.multiply(new BigDecimal(threeCount)); |
| | | dappSystemService.updateBalanceInsertFlow( |
| | | multiply, |
| | | dappStorageThree.get(0).getMemberId(), |
| | | MoneyFlowEnum.DA_DAN_JI_LI_PERK.getValue(), |
| | | StrUtil.format(MoneyFlowEnum.DA_DAN_JI_LI_PERK.getDescrition(),daDanTotal,multiply)); |
| | | |
| | | dappWalletService.updateWalletMineWithLock(profitSymbol, item.getId(), 1); |
| | | DappFundFlowEntity fundFlow = new DappFundFlowEntity(item.getId(), profitSymbol, 11, 2, null, null); |
| | | dappFundFlowDao.insert(fundFlow); |
| | | realAmount = realAmount.add(multiply); |
| | | } |
| | | List<DappStorage> dappStorageFour = dappStorageMapper.selectSumByAmountDescFiveToFive(DateUtil.offsetHour(new Date(),-24),3,1); |
| | | if(CollUtil.isNotEmpty(dappStorageFour)){ |
| | | BigDecimal multiply = everyAmount.multiply(new BigDecimal(fourCount)); |
| | | dappSystemService.updateBalanceInsertFlow( |
| | | multiply, |
| | | dappStorageFour.get(0).getMemberId(), |
| | | MoneyFlowEnum.DA_DAN_JI_LI_PERK.getValue(), |
| | | StrUtil.format(MoneyFlowEnum.DA_DAN_JI_LI_PERK.getDescrition(),daDanTotal,multiply)); |
| | | |
| | | realAmount = realAmount.add(multiply); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 另外50% 给予当天直推总业绩排名激励前10名,第1名40%,2-4名30%,5-10名30% |
| | | */ |
| | | BigDecimal directTotal = jiLiTotal.multiply(new BigDecimal("0.5")).setScale(2, BigDecimal.ROUND_DOWN); |
| | | // /** |
| | | // * 存放直推业绩<上级的memberId,直推总业绩> |
| | | // */ |
| | | // HashMap<Long, BigDecimal> map = new HashMap<>(); |
| | | // |
| | | // List<DappStorage> dappStorages = dappStorageMapper.selectListByDate(new Date()); |
| | | // if(CollUtil.isNotEmpty(dappStorages)){ |
| | | // for(DappStorage dappStorage : dappStorages){ |
| | | // DappMemberEntity member = dappMemberDao.selectById(dappStorage.getMemberId()); |
| | | // if(StrUtil.isEmpty(member.getRefererId())){ |
| | | // continue; |
| | | // } |
| | | // DappMemberEntity memberRef = dappMemberDao.selectMemberInfoByInviteId(member.getRefererId()); |
| | | // if(ObjectUtil.isEmpty(memberRef)){ |
| | | // continue; |
| | | // } |
| | | // Long id = memberRef.getId(); |
| | | // if(map.containsKey(id)){ |
| | | // BigDecimal bigDecimal = map.get(id); |
| | | // BigDecimal add = bigDecimal.add(dappStorage.getAmount()); |
| | | // map.put(id,add); |
| | | // }else{ |
| | | // map.put(id,dappStorage.getAmount()); |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | /** |
| | | * 存放直推人数<上级的memberId,直推人数> |
| | | */ |
| | | HashMap<Long, BigDecimal> map = new HashMap<>(); |
| | | |
| | | DateTime startTime = DateUtil.offsetHour(new Date(), -24); |
| | | // DateTime startTime = DateUtil.parseDateTime(startTimeStr); |
| | | // List<DappMemberEntity> dappMemberEntityList = dappMemberDao.selectListByDateFiveToFiver(startTime); |
| | | |
| | | List<DappStorage> dappStorages = dappStorageMapper.selectListByDateFiveToFiver(startTime); |
| | | Set<Long> collect = dappStorages.stream().map(DappStorage::getMemberId).collect(Collectors.toSet()); |
| | | |
| | | // List<DappMemberEntity> dappMemberEntityList = dappMemberDao.selectListByDate(new Date()); |
| | | if(CollUtil.isNotEmpty(collect)){ |
| | | for(Long memberId : collect){ |
| | | DappMemberEntity member = dappMemberDao.selectById(memberId); |
| | | if(StrUtil.isEmpty(member.getRefererId())){ |
| | | continue; |
| | | } |
| | | if(2 == member.getActiveStatus()){ |
| | | continue; |
| | | } |
| | | DappMemberEntity memberRef = dappMemberDao.selectMemberInfoByInviteId(member.getRefererId()); |
| | | if(ObjectUtil.isEmpty(memberRef)){ |
| | | continue; |
| | | } |
| | | Long id = memberRef.getId(); |
| | | if(map.containsKey(id)){ |
| | | BigDecimal bigDecimal = map.get(id); |
| | | BigDecimal add = bigDecimal.add(new BigDecimal("1")); |
| | | map.put(id,add); |
| | | }else{ |
| | | map.put(id,new BigDecimal("1")); |
| | | } |
| | | } |
| | | } |
| | | /** |
| | | * 获取这个map的直推总业绩前十,分发奖励 |
| | | */ |
| | | if(!map.isEmpty()){ |
| | | // 使用Stream API按照BigDecimal从大到小排序 |
| | | List<Map.Entry<Long, BigDecimal>> topTenEntries = map.entrySet().stream() |
| | | .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) |
| | | .limit(10) |
| | | .collect(Collectors.toList()); |
| | | |
| | | List<ApidirectNumVo> apiDirectInfoVos = new ArrayList<>(); |
| | | for (Map.Entry<Long, BigDecimal> entry : topTenEntries) { |
| | | Long memberId = entry.getKey(); |
| | | BigDecimal directCnt = entry.getValue(); |
| | | ApidirectNumVo apiDirectInfoVo = new ApidirectNumVo(); |
| | | apiDirectInfoVo.setMemberId(memberId); |
| | | apiDirectInfoVo.setDirectCnt(directCnt); |
| | | DappStorage dappStorage = dappStorageMapper.selectNewRecordByRefMemberId(memberId); |
| | | apiDirectInfoVo.setCreateTime(dappStorage.getCreateTime()); |
| | | apiDirectInfoVos.add(apiDirectInfoVo); |
| | | } |
| | | |
| | | if(CollUtil.isNotEmpty(apiDirectInfoVos)){ |
| | | apiDirectInfoVos = apiDirectInfoVos.stream() |
| | | .sorted((a, b) -> { |
| | | // 先按照amount从大到小排序 |
| | | int compare = b.getDirectCnt().compareTo(a.getDirectCnt()); |
| | | if (compare != 0) { |
| | | return compare; |
| | | } |
| | | // 如果amount相同,则按照createTime从小到大排序 |
| | | return a.getCreateTime().compareTo(b.getCreateTime()); |
| | | }) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | int startNum = 1; |
| | | for (ApidirectNumVo numVo : apiDirectInfoVos) { |
| | | Long memberId = numVo.getMemberId(); |
| | | BigDecimal directAchieve = numVo.getDirectCnt(); |
| | | //第一名 |
| | | if(startNum == 1){ |
| | | BigDecimal bigDecimal = directTotal.multiply(new BigDecimal("0.4")).setScale(2, BigDecimal.ROUND_DOWN); |
| | | dappSystemService.updateBalanceInsertFlow( |
| | | bigDecimal, |
| | | memberId, |
| | | MoneyFlowEnum.ZHI_TUI_JI_LI_PERK.getValue(), |
| | | StrUtil.format(MoneyFlowEnum.ZHI_TUI_JI_LI_PERK.getDescrition(),directAchieve,startNum,bigDecimal)); |
| | | |
| | | realAmount = realAmount.add(bigDecimal); |
| | | }else if(startNum > 1 && startNum <=4){ |
| | | BigDecimal bigDecimal = directTotal.multiply(new BigDecimal("0.3")).setScale(2, BigDecimal.ROUND_DOWN); |
| | | BigDecimal divide = bigDecimal.divide(new BigDecimal("3"), 2, BigDecimal.ROUND_DOWN); |
| | | |
| | | dappSystemService.updateBalanceInsertFlow( |
| | | divide, |
| | | memberId, |
| | | MoneyFlowEnum.ZHI_TUI_JI_LI_PERK.getValue(), |
| | | StrUtil.format(MoneyFlowEnum.ZHI_TUI_JI_LI_PERK.getDescrition(),directAchieve,startNum,divide)); |
| | | |
| | | realAmount = realAmount.add(divide); |
| | | }else{ |
| | | BigDecimal bigDecimal = directTotal.multiply(new BigDecimal("0.3")).setScale(2, BigDecimal.ROUND_DOWN); |
| | | BigDecimal divide = bigDecimal.divide(new BigDecimal("6"), 2, BigDecimal.ROUND_DOWN); |
| | | |
| | | dappSystemService.updateBalanceInsertFlow( |
| | | divide, |
| | | memberId, |
| | | MoneyFlowEnum.ZHI_TUI_JI_LI_PERK.getValue(), |
| | | StrUtil.format(MoneyFlowEnum.ZHI_TUI_JI_LI_PERK.getDescrition(),directAchieve,startNum,divide)); |
| | | |
| | | realAmount = realAmount.add(divide); |
| | | } |
| | | startNum = startNum + 1; |
| | | } |
| | | } |
| | | |
| | | BigDecimal subtract = new BigDecimal(jiliChiDic.getValue()).subtract(realAmount); |
| | | jiliChiDic.setValue(subtract.toString()); |
| | | dataDictionaryCustomMapper.updateById(jiliChiDic); |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | |
| | | Date date = new Date(); |
| | | System.out.println(date); |
| | | DateTime dateTime1 = DateUtil.offsetHour(date, 24); |
| | | System.out.println(dateTime1); |
| | | |
| | | int compare = DateUtil.compare(date, dateTime1); |
| | | System.out.println(compare); |
| | | |
| | | |
| | | |
| | | DateTime dateTime = DateUtil.offsetHour(new Date(), -24); |
| | | System.out.println(dateTime); |
| | | DateTime nowTime = DateUtil.parseTime(DateUtil.formatTime(new Date())); |
| | | DateTime perkTime = DateUtil.parseTime("17:00:00"); |
| | | |
| | | String startTimeStr = null; |
| | | if(DateUtil.compare(nowTime,perkTime) >= 0){ |
| | | startTimeStr = DateUtil.formatDate(DateUtil.offsetDay(new Date(), 0)) + " 17:00:00"; |
| | | }else{ |
| | | startTimeStr = DateUtil.formatDate(DateUtil.offsetDay(new Date(), -1)) + " 17:00:00"; |
| | | } |
| | | |
| | | DateTime startTime = DateUtil.parseDateTime(startTimeStr); |
| | | |
| | | |
| | | |
| | | // 创建一个HashMap示例 |
| | | HashMap<Long, BigDecimal> map = new HashMap<>(); |
| | | map.put(1L, new BigDecimal("100.00")); |
| | | map.put(2L, new BigDecimal("200.00")); |
| | | map.put(3L, new BigDecimal("50.00")); |
| | | map.put(4L, new BigDecimal("300.00")); |
| | | map.put(5L, new BigDecimal("150.00")); |
| | | map.put(6L, new BigDecimal("150.00")); |
| | | map.put(7L, new BigDecimal("150.00")); |
| | | map.put(8L, new BigDecimal("150.00")); |
| | | map.put(9L, new BigDecimal("150.00")); |
| | | map.put(10L, new BigDecimal("150.00")); |
| | | map.put(11L, new BigDecimal("150.00")); |
| | | // ... 可以继续添加元素 |
| | | |
| | | // 使用Stream API按照BigDecimal从大到小排序,并获取前十个元素 |
| | | List<Map.Entry<Long, BigDecimal>> topTenEntries = map.entrySet().stream() |
| | | .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) |
| | | .limit(10) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // 打印结果 |
| | | for (Map.Entry<Long, BigDecimal> entry : topTenEntries) { |
| | | System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue()); |
| | | } |
| | | } |
| | | } |