|  |  | 
 |  |  | 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; | 
 |  |  | 
 |  |  | 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; | 
 |  |  | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static void wholePriceDataOperation(WholePriceDataModel wholePriceData) { | 
 |  |  |     /** | 
 |  |  |      * 全仓价格处理 | 
 |  |  |      * | 
 |  |  |      * @param memberId | 
 |  |  |      */ | 
 |  |  |     public static void wholePriceDataOperation(Long memberId) { | 
 |  |  |         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)) { | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         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); | 
 |  |  |  | 
 |  |  |         Map<String, WholePriceDataModel> dataModelMap = WholeDataQueue.MAP; | 
 |  |  |         dataModelMap.put(wholePriceData.getMemberId().toString(), wholePriceData); | 
 |  |  |  | 
 |  |  |         redisUtils.set(AppContants.WHOLE_BOMB_MAP, JSONObject.toJSONString(dataModelMap)); |