From 9671a5baaebe1b3bce04dba485d4e7435e1aed03 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Wed, 13 Dec 2023 14:46:28 +0800 Subject: [PATCH] 微信小程序配置 --- src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 115 insertions(+), 2 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java index 69dc437..ed4153e 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java @@ -64,6 +64,7 @@ private final MallProductSellRecordMapper mallProductSellRecordMapper; private final MallProductNftMapper mallProductNftMapper; private final AgentProducer agentProducer; + private final MallMemberAmountMapper mallMemberAmountMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -850,7 +851,7 @@ //偏移时间 DateTime dateTime = DateUtil.offsetDay(payTime, cycle); int compare = DateUtil.compare(now, dateTime); - if(compare <= 0){ + if(compare >= 0){ /** * 更新买单状态 * 收益生成一条卖单 @@ -933,7 +934,8 @@ * 当前时间比结束时间大 */ if(nowTime.compareTo(endTime) >= 0){ - List<MallProductSellRecord> mallProductSellRecords = mallProductSellRecordMapper.selectListByState(ProductEnum.PRODUCT_MATE_STATE_PAY.getValue()); + List<MallProductSellRecord> mallProductSellRecords = mallProductSellRecordMapper.selectListByState( + ProductEnum.PRODUCT_MATE_STATE_PAY.getValue()); if(CollUtil.isNotEmpty(mallProductSellRecords)){ for(MallProductSellRecord mallProductSellRecord : mallProductSellRecords){ /** @@ -945,6 +947,80 @@ MallMember mallMember = memberMapper.selectById(mallProductSell.getMemberId()); mallMember.setIsFrozen(ProductEnum.MEMBER_FROZEN.getValue()); memberMapper.updateById(mallMember); + } + } + } + } + + @Override + public void timeGetOrderBuyCancel() { + /** + * nft产品周期到期的已完成买单变成卖单 + * 计算收益,本金 + */ + List<MallProductNft> mallProductNfts = mallProductNftMapper.selectList(null); + if(CollUtil.isEmpty(mallProductNfts)){ + return; + } + DateTime nowTime = DateUtil.parseTime(DateUtil.formatTime(DateUtil.date())); + DataDictionaryCustom endTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.YU_YUE_END_TIME.getType(), + DataDictionaryEnum.YU_YUE_END_TIME.getCode() + ); + DateTime endTime = DateUtil.parseTime(endTimeDic.getValue()); + for(MallProductNft mallProductNft : mallProductNfts){ + Long nftId = mallProductNft.getId(); + List<MallProductBuy> mallProductBuys = mallProductBuyMapper.selectListByStateAndProductNFTId( + ProductEnum.PRODUCT_BUY_ON_GOING.getValue(), + nftId, + ProductEnum.PRODUCT_BUY_MATE_STATE_FAIL.getValue()); + if(CollUtil.isEmpty(mallProductBuys)){ + continue; + } + for(MallProductBuy mallProductBuy : mallProductBuys){ + /** + * 当前时间比结束时间大 + */ + if(nowTime.compareTo(endTime) >= 0){ + /** + * 返回令牌 + * 预约记录超时 + */ + String orderNo = mallProductBuy.getOrderNo(); + /** + * 只要存在匹配记录,则不退回。 + */ + List<MallProductBuyRecord> mallProductBuyRecords = mallProductBuyRecordMapper.selectRecordListByBuyId(mallProductBuy.getId()); + if(CollUtil.isNotEmpty(mallProductBuyRecords)){ + continue; + } + mallProductBuy.setState(ProductEnum.PRODUCT_BUY_TIMEOUT.getValue()); + mallProductBuyMapper.updateById(mallProductBuy); + + Long memberId = mallProductBuy.getMemberId(); + MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectByOrderAndType(orderNo, + MoneyFlowTypeNewEnum.TOKEN_BUY_FROZEN.getValue(), + FlowTypeNewEnum.TOKEN.getValue(), + memberId); + if(ObjectUtil.isEmpty(mallMoneyFlow)){ + continue; + } + BigDecimal absAmount = mallMoneyFlow.getAmount().abs(); + MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(memberId); + mallMemberAmount.setTokenAva(mallMemberAmount.getTokenAva().add(absAmount)); + mallMemberAmount.setTokenFrozen(mallMemberAmount.getTokenFrozen().subtract(absAmount)); + mallMemberAmountMapper.updateTokenAvaAndTokenFrozenById(mallMemberAmount); + + mallMoneyFlowService.addMoneyFlow( + memberId, + absAmount, + MoneyFlowTypeNewEnum.TOKEN_BUY_FROZEN_RETURN.getValue(), + orderNo, + null, + FlowTypeNewEnum.TOKEN.getValue(), + MoneyFlowTypeNewEnum.TOKEN_BUY_FROZEN_RETURN.getDescrition()); + + } } } @@ -965,4 +1041,41 @@ mallProductSellMapper.insert(mallProductSell); } + public static List<Integer> findMissingNumbers(int[] nums) { + //定义一个标记数组,标记出现过的下表为true + boolean[] flag = new boolean[nums.length+1]; + for(int temp:nums){ + flag[temp] = true; + } + List<Integer> arr = new ArrayList<Integer>(); + //以连续的i作为本应该的下标,查找之前的标记数组,没有被标记过的下标,就是消失的数字 + for(int i = 1;i <= nums.length; i++){ + if(!flag[i]){ + arr.add(i); + } + } + return arr; + } + + public static List<Integer> findDisappearedNumbers(int[] nums) { + Set<Integer> set = new HashSet<>(); // 利用Set对象元素不重复的特性 + // 把nums里的每一个数字都添加至set中 + for(int i = 0; i < nums.length; ++i) { + set.add(nums[i]); + } + List<Integer> list = new ArrayList<>(); + // 把1~n的每一个数字都添加至set中,若添加成功则说明原数组不存在该数字,加入list即可 + for(int i = 1; i <= nums.length; ++i) { + if(set.add(i)) { + list.add(i); + } + } + return list; + } + public static void main(String[] args) { + int[] nums = {1, 2, 2, 5, 2}; + List<Integer> missingNumbers = findDisappearedNumbers(nums); + System.out.println("缺失的数字为:" + missingNumbers); + } + } -- Gitblit v1.9.1