package com.xcong.excoin.rabbit.consumer;
|
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.util.StrUtil;
|
import com.alibaba.fastjson.JSONObject;
|
import com.xcong.excoin.configurations.RabbitMqConfig;
|
import com.xcong.excoin.modules.member.dao.MemberDao;
|
import com.xcong.excoin.modules.member.dao.MemberSettingDao;
|
import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao;
|
import com.xcong.excoin.modules.member.entity.MemberEntity;
|
import com.xcong.excoin.modules.member.entity.MemberSettingEntity;
|
import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity;
|
import com.xcong.excoin.modules.otc.dao.OtcEntrustOrderDao;
|
import com.xcong.excoin.modules.otc.dao.OtcMarketBussinessDao;
|
import com.xcong.excoin.modules.otc.dao.OtcOrderDao;
|
import com.xcong.excoin.modules.otc.dao.OtcReturnMoneyDao;
|
import com.xcong.excoin.modules.otc.entity.OtcEntrustOrder;
|
import com.xcong.excoin.modules.otc.entity.OtcMarketBussiness;
|
import com.xcong.excoin.modules.otc.entity.OtcOrder;
|
import com.xcong.excoin.modules.otc.entity.OtcReturnMoney;
|
import com.xcong.excoin.utils.LogRecordUtils;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.stereotype.Component;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.math.BigDecimal;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
|
@Slf4j
|
@Component
|
@ConditionalOnProperty(prefix = "app", name = "otc-job", havingValue = "true")
|
public class OtcConsumer {
|
|
@Autowired
|
private OtcMarketBussinessDao otcMarketBussinessDao;
|
|
@Autowired
|
private OtcEntrustOrderDao otcEntrustOrderDao;
|
|
@Autowired
|
private OtcOrderDao otcOrderDao;
|
|
@Autowired
|
private MemberDao memberDao;
|
|
@Autowired
|
private MemberSettingDao memberSettingDao;
|
|
@Autowired
|
private MemberWalletCoinDao memberWalletCoinDao;
|
|
@Autowired
|
private OtcReturnMoneyDao otcReturnMoneyDao;
|
|
@RabbitListener(queues = RabbitMqConfig.QUEUE_MARKET_BUSSINESS)
|
public void marketBussiness(String content) {
|
log.info("收到市商消息:{}", content);
|
JSONObject jsonObject = JSONObject.parseObject(content);
|
Integer entrustOrderIdInt = jsonObject.getInteger("entrustOrderId");
|
Long entrustOrderId = entrustOrderIdInt.longValue();
|
Integer status = jsonObject.getInteger("status");
|
OtcEntrustOrder entrustOrder = otcEntrustOrderDao.selectById(entrustOrderId);
|
|
OtcMarketBussiness mb = otcMarketBussinessDao.selectMarketBussinessByMemberId(entrustOrder.getMemberId());
|
|
if (!OtcOrder.STATUS_CANCEL.equals(status)) {
|
if (OtcEntrustOrder.ORDER_TYPE_S.equals(entrustOrder.getOrderType())) {
|
mb.setSaleOrderCnt(mb.getSaleOrderCnt() + 1);
|
mb.setSaleTotalCnt(mb.getSaleTotalCnt() + 1);
|
} else {
|
mb.setBuyOrderCnt(mb.getBuyOrderCnt() + 1);
|
mb.setTotalOrderCnt(mb.getTotalOrderCnt() + 1);
|
}
|
} else {
|
if (OtcEntrustOrder.ORDER_TYPE_S.equals(entrustOrder.getOrderType())) {
|
mb.setSaleTotalCnt(mb.getSaleTotalCnt() + 1);
|
} else {
|
mb.setTotalOrderCnt(mb.getTotalOrderCnt() + 1);
|
}
|
}
|
|
if (mb.getTotalOrderCnt() != 0) {
|
BigDecimal buyFinishRatio = BigDecimal.valueOf(mb.getBuyOrderCnt()).divide(BigDecimal.valueOf(mb.getTotalOrderCnt()), 8, BigDecimal.ROUND_DOWN);
|
mb.setFinishRatio(buyFinishRatio);
|
}
|
|
if (mb.getSaleTotalCnt() != 0) {
|
BigDecimal saleFinishRatio = BigDecimal.valueOf(mb.getSaleOrderCnt()).divide(BigDecimal.valueOf(mb.getSaleTotalCnt()), 8, BigDecimal.ROUND_DOWN);
|
mb.setSaleFinishRatio(saleFinishRatio);
|
}
|
|
|
// 平均付款时间
|
// BigDecimal avgPayTime = otcOrderDao.selectMemberAvgPayTime(mb.getMemberId());
|
// // 平均放币时间
|
// BigDecimal avgCoinTime = otcOrderDao.selectMemberAvgCoinTime(mb.getMemberId());
|
//
|
// mb.setAvgPayTime(avgPayTime.intValue());
|
// mb.setAvgCoinTime(avgCoinTime.intValue());
|
|
otcMarketBussinessDao.updateById(mb);
|
}
|
|
|
// @RabbitListener(queues = RabbitMqConfig.QUEUE_MARKET_BUSSINESS)
|
public void delayOrder(String content) {
|
log.info("--{}-->{}", new Date(), content);
|
}
|
|
|
// @RabbitListener(queues = RabbitMqConfig.QUEUE_ORDER_RETURN)
|
// @Transactional(rollbackFor = Exception.class)
|
// public void orderReturn(String content) {
|
// log.info("收到返佣消息:{}", content);
|
// OtcOrder order = otcOrderDao.selectOrderUnEntrust(content);
|
//
|
// MemberEntity member = memberDao.selectById(order.getMemberId());
|
// List<String> refererIds = StrUtil.split(member.getRefererIds(), ',');
|
//
|
// List<MemberEntity> parentMembers = memberDao.selectMemberListByReferer(refererIds);
|
//
|
// if (CollUtil.isNotEmpty(parentMembers)) {
|
// int isFirst = 1;
|
// for (MemberEntity parent : parentMembers) {
|
// MemberSettingEntity memberSetting = memberSettingDao.selectMemberSettingByMemberId(parent.getId());
|
//
|
// BigDecimal returnRatio = BigDecimal.ZERO;
|
// if (isFirst == 1) {
|
// returnRatio = memberSetting.getOtcReturnFirst();
|
// } else {
|
// returnRatio = memberSetting.getOtcReturnSecond();
|
// }
|
//
|
// BigDecimal returnAmount = order.getCoinAmount().multiply(returnRatio);
|
//
|
// MemberWalletCoinEntity wallet = memberWalletCoinDao.selectWalletCoinBymIdAndCode(parent.getId(), "USDT");
|
// memberWalletCoinDao.updateBlockBalance(wallet.getId(), returnAmount, BigDecimal.ZERO, 0);
|
//
|
// LogRecordUtils.insertMemberAccountMoneyChange(parent.getId(),"订单返利:" + content, returnAmount, "USDT", 1, 1);
|
//
|
// OtcReturnMoney otcReturnMoney = new OtcReturnMoney();
|
// otcReturnMoney.setToMemberId(parent.getId());
|
// otcReturnMoney.setOrderNo(content);
|
// otcReturnMoney.setFromMemberId(member.getId());
|
// otcReturnMoney.setAmount(returnAmount);
|
// otcReturnMoneyDao.insert(otcReturnMoney);
|
//
|
// isFirst = 0;
|
// }
|
// }
|
//
|
// order.setIsReturn(1);
|
// otcOrderDao.updateIsReturnByOrderNo(1, content);
|
// }
|
|
}
|