From 62fcbc4dda69e739f05d547cd0b9a042004186b4 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Mon, 27 Nov 2023 15:05:03 +0800 Subject: [PATCH] 匹配 --- src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 56 ++++++++++++++++++++++++++++ src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java | 9 ++++ src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java | 1 src/main/resources/mapper/modules/MallMoneyFlowMapper.xml | 12 ++++++ src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java | 2 + src/main/java/cc/mrbird/febs/mall/service/IAgentService.java | 2 + 6 files changed, 82 insertions(+), 0 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java index 8113124..5fca52d 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java +++ b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java @@ -10,6 +10,7 @@ **/ @Getter public enum MoneyFlowTypeNewEnum { + TOKEN_BUY_FROZEN_RETURN(13,"预约令牌"), PAY(12,"支付"), NFT_OUT_FEE(11,"NFT提现手续费"), NFT_OUT(10,"NFT提现"), diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java index a1ea6f4..64172e1 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java @@ -49,4 +49,6 @@ void updateRemarkAndIsReturnById(@Param("remark")String remarkNum, @Param("id")Long id); MallMoneyFlow selectByOrderNoAndMemberId(@Param("orderNo")String orderNo, @Param("memberId")Long memberId, @Param("isReturn")int isReturn); + + MallMoneyFlow selectByOrderAndType(@Param("orderNo")String orderNo, @Param("type")int type, @Param("flowType")int flowType, @Param("memberId")Long memberId); } diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java index 11a3cd6..31b5422 100644 --- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java +++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java @@ -135,6 +135,15 @@ } /** + * 买单 + * 看是否是开始显示订单的时间段,超出结束时间的买单,全部超时返还令牌 + */ + @Scheduled(cron = "0 0/30 * * * ? ") + public void timeGetOrderBuyCancel() { + agentService.timeGetOrderBuyCancel(); + } + + /** * 卖单 * 看是否是开始显示订单的时间段,超出结束时间的卖单,全部超时失败 */ diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java index ca99fa2..019f4bd 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java @@ -45,4 +45,6 @@ void timeGetOrderBuy(); void timeGetOrderSell(); + + void timeGetOrderBuyCancel(); } 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..0ecbbaa 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) @@ -950,6 +951,61 @@ } } + @Override + public void timeGetOrderBuyCancel() { + /** + * nft产品周期到期的已完成买单变成卖单 + * 计算收益,本金 + */ + List<MallProductNft> mallProductNfts = mallProductNftMapper.selectList(null); + if(CollUtil.isEmpty(mallProductNfts)){ + return; + } + DateTime now = DateUtil.date(); + 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){ + /** + * 返回令牌 + * 预约记录超时 + */ + String orderNo = mallProductBuy.getOrderNo(); + 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()); + } + } + } + public void insertSell(Long memberId,BigDecimal nftCnt,BigDecimal nftCntAva, BigDecimal nftFee,BigDecimal fcmFeeCnt){ String orderNo = MallUtils.getOrderNum("NFT"); diff --git a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml index 8fe8066..3944b3e 100644 --- a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml +++ b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml @@ -249,4 +249,16 @@ ORDER BY a.created_time ASC </select> + + <select id="selectByOrderAndType" resultType="cc.mrbird.febs.mall.entity.MallMoneyFlow"> + SELECT + * + FROM + mall_money_flow a + WHERE + a.type = #{type} + AND a.flow_type = #{flowType} + AND a.member_id = #{memberId} + AND a.order_no = #{orderNo} + </select> </mapper> \ No newline at end of file -- Gitblit v1.9.1