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