| | |
| | | import cc.mrbird.febs.mall.service.*; |
| | | import cc.mrbird.febs.mall.vo.AdminMallMoneyFlowVo; |
| | | import cc.mrbird.febs.mall.vo.AdminTeamEqualsPerkVo; |
| | | import cc.mrbird.febs.rabbit.producter.AgentProducer; |
| | | import cc.mrbird.febs.system.mapper.UserMapper; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | |
| | | private final MallProductSellMapper mallProductSellMapper; |
| | | private final MallProductSellRecordMapper mallProductSellRecordMapper; |
| | | private final MallProductNftMapper mallProductNftMapper; |
| | | private final AgentProducer agentProducer; |
| | | private final MallMemberAmountMapper mallMemberAmountMapper; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void timeGetOrderBuy() { |
| | | 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()); |
| | | /** |
| | | * 当前时间比结束时间大 |
| | | */ |
| | | if(nowTime.compareTo(endTime) >= 0){ |
| | | List<MallProductBuyRecord> mallProductBuyRecords = mallProductBuyRecordMapper.selectByState(ProductEnum.PRODUCT_MATE_STATE_WAIT_PAY.getValue()); |
| | | if(CollUtil.isNotEmpty(mallProductBuyRecords)){ |
| | | for(MallProductBuyRecord mallProductBuyRecord : mallProductBuyRecords){ |
| | | /** |
| | | * 用户有超时未支付的订单 |
| | | * 1、冻结账户 |
| | | * 2、更新买单主表 |
| | | * 2、更新卖单主表 |
| | | * 3、更新买单子表的数据 |
| | | * 3、更新卖单子表的数据 |
| | | */ |
| | | agentProducer.sendFcmOrderBuyCancelMsg(mallProductBuyRecord.getId()); |
| | | |
| | | // Long buyId = mallProductBuyRecord.getBuyId(); |
| | | // Long sellRecordId = mallProductBuyRecord.getSellRecordId(); |
| | | // MallProductBuy mallProductBuy = mallProductBuyMapper.selectById(buyId); |
| | | // Long memberIdBuy = mallProductBuy.getMemberId(); |
| | | // //冻结账户 |
| | | // MallMember mallMemberBuy = memberMapper.selectById(memberIdBuy); |
| | | // mallMemberBuy.setIsFrozen(ProductEnum.MEMBER_FROZEN.getValue()); |
| | | // memberMapper.updateById(mallMemberBuy); |
| | | // //更新买单子表的数据 |
| | | // mallProductBuyRecord.setState(ProductEnum.PRODUCT_MATE_STATE_FAIL.getValue()); |
| | | // mallProductBuyRecordMapper.updateById(mallProductBuyRecord); |
| | | // //更新买单主表 |
| | | // mallProductBuy.setNftAva(mallProductBuy.getNftAva().add(mallProductBuyRecord.getPickNftCnt())); |
| | | // mallProductBuyMapper.updateById(mallProductBuy); |
| | | // //更新卖单子表的数据 |
| | | // MallProductSellRecord mallProductSellRecord = mallProductSellRecordMapper.selectById(sellRecordId); |
| | | // mallProductSellRecord.setState(ProductEnum.PRODUCT_MATE_STATE_FAIL.getValue()); |
| | | // mallProductSellRecordMapper.updateById(mallProductSellRecord); |
| | | // //更新卖单主表 |
| | | // Long sellId = mallProductSellRecord.getSellId(); |
| | | // MallProductSell mallProductSell = mallProductSellMapper.selectById(sellId); |
| | | // mallProductSell.setNftCntAva(mallProductSell.getNftCntAva().add(mallProductSellRecord.getNftCnt())); |
| | | // mallProductSellMapper.updateById(mallProductSell); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void timeGetOrderSell() { |
| | | 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()); |
| | | /** |
| | | * 当前时间比结束时间大 |
| | | */ |
| | | if(nowTime.compareTo(endTime) >= 0){ |
| | | List<MallProductSellRecord> mallProductSellRecords = mallProductSellRecordMapper.selectListByState(ProductEnum.PRODUCT_MATE_STATE_PAY.getValue()); |
| | | if(CollUtil.isNotEmpty(mallProductSellRecords)){ |
| | | for(MallProductSellRecord mallProductSellRecord : mallProductSellRecords){ |
| | | /** |
| | | * 卖方 |
| | | * 1:冻结账户 |
| | | */ |
| | | Long sellId = mallProductSellRecord.getSellId(); |
| | | MallProductSell mallProductSell = mallProductSellMapper.selectById(sellId); |
| | | 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(); |
| | | 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"); |