Helius
2021-01-29 20ebaef1822ece044beae9ed51229928221c99f3
src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java
@@ -1,7 +1,17 @@
package com.xcong.excoin.rabbit.pricequeue;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONObject;
import com.xcong.excoin.common.contants.AppContants;
import com.xcong.excoin.common.enumerates.CoinTypeEnum;
import com.xcong.excoin.modules.contract.dao.ContractEntrustOrderDao;
import com.xcong.excoin.modules.contract.dao.ContractHoldOrderDao;
import com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity;
import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity;
import com.xcong.excoin.modules.contract.mapper.ContractHoldOrderEntityMapper;
import com.xcong.excoin.modules.member.dao.MemberWalletContractDao;
import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity;
import com.xcong.excoin.rabbit.pricequeue.whole.HoldOrderDataModel;
import com.xcong.excoin.rabbit.pricequeue.whole.WholeDataQueue;
import com.xcong.excoin.rabbit.pricequeue.whole.WholePriceDataModel;
import com.xcong.excoin.utils.RedisUtils;
@@ -9,6 +19,7 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -134,19 +145,57 @@
        }
    }
    public static void wholePriceDataOperation(WholePriceDataModel wholePriceData) {
    /**
     * 全仓价格处理
     *
     * @param memberId
     */
    public static void wholePriceDataOperation(Long memberId) {
        Map<String, WholePriceDataModel> dataModelMap = WholeDataQueue.MAP;
        RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class);
        Map<String, WholePriceDataModel> dataModelMap = WholeDataQueue.MAP;
        ContractHoldOrderDao contractHoldOrderDao = SpringContextHolder.getBean(ContractHoldOrderDao.class);
        ContractEntrustOrderDao contractEntrustOrderDao = SpringContextHolder.getBean(ContractEntrustOrderDao.class);
        WholePriceDataModel isExistData = dataModelMap.get(wholePriceData.getMemberId().toString());
        if (isExistData != null) {
            dataModelMap.remove(wholePriceData.getMemberId().toString());
        MemberWalletContractDao memberWalletContractDao = SpringContextHolder.getBean(MemberWalletContractDao.class);
        List<ContractHoldOrderEntity> holdOrders = contractHoldOrderDao.selectHoldOrderListByMemberId(memberId);
        if (CollUtil.isEmpty(holdOrders)) {
            if (dataModelMap.get(memberId.toString()) != null) {
                dataModelMap.remove(memberId.toString());
                redisUtils.set(AppContants.WHOLE_BOMB_MAP, JSONObject.toJSONString(dataModelMap));
            }
            return;
        }
        dataModelMap.put(wholePriceData.getMemberId().toString(), wholePriceData);
        MemberWalletContractEntity wallet = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeEnum.USDT.name());
        WholePriceDataModel wholePriceData = new WholePriceDataModel();
        List<HoldOrderDataModel> holdOrderDataModels = ContractHoldOrderEntityMapper.INSTANCE.entitiesToDataModels(holdOrders);
        wholePriceData.setList(holdOrderDataModels);
        BigDecimal totalHoldBond = BigDecimal.ZERO;
        for (ContractHoldOrderEntity holdOrder : holdOrders) {
            totalHoldBond = totalHoldBond.add(holdOrder.getHoldBond() == null ? BigDecimal.ZERO : holdOrder.getHoldBond());
        }
        wholePriceData.setHoldBond(totalHoldBond);
        List<ContractEntrustOrderEntity> entrustOrder = contractEntrustOrderDao.selectEntrustOrderListByMemberId(wholePriceData.getMemberId());
        BigDecimal totalAmount = BigDecimal.ZERO;
        if (CollUtil.isNotEmpty(entrustOrder)) {
            for (ContractEntrustOrderEntity contractEntrustOrderEntity : entrustOrder) {
                totalAmount.add(contractEntrustOrderEntity.getEntrustAmount());
            }
        }
        wholePriceData.setBalance(wallet.getTotalBalance().subtract(totalAmount));
        wholePriceData.setMemberId(memberId);
        dataModelMap.put(wholePriceData.getMemberId().toString(), wholePriceData);
        redisUtils.set(AppContants.WHOLE_BOMB_MAP, JSONObject.toJSONString(dataModelMap));
        log.info("dataModelMap为:{}", dataModelMap);
    }
}