From f6a912c1a6a26c809568f964941fb4ad4483274e Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 31 May 2021 11:19:40 +0800
Subject: [PATCH] modify
---
src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcMarketBussinessServiceImpl.java | 170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 168 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcMarketBussinessServiceImpl.java b/src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcMarketBussinessServiceImpl.java
index 20d147b..803d3d8 100644
--- a/src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcMarketBussinessServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcMarketBussinessServiceImpl.java
@@ -1,13 +1,179 @@
package com.xcong.excoin.modules.otc.service.impl;
+import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xcong.excoin.common.LoginUserUtils;
+import com.xcong.excoin.common.exception.GlobalException;
+import com.xcong.excoin.common.response.Result;
+import com.xcong.excoin.modules.member.dao.MemberDao;
+import com.xcong.excoin.modules.member.entity.MemberEntity;
+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.OtcSettingDao;
+import com.xcong.excoin.modules.otc.dto.MbAddDto;
+import com.xcong.excoin.modules.otc.entity.OtcEntrustOrder;
import com.xcong.excoin.modules.otc.entity.OtcMarketBussiness;
-import com.xcong.excoin.modules.otc.dao.OtcMarketBussinessMapper;
+import com.xcong.excoin.modules.otc.entity.OtcOrder;
+import com.xcong.excoin.modules.otc.entity.OtcSetting;
+import com.xcong.excoin.modules.otc.mapper.OtcEntrustOrderMapper;
+import com.xcong.excoin.modules.otc.mapper.OtcMarketBussinessMapper;
import com.xcong.excoin.modules.otc.service.OtcMarketBussinessService;
+import com.xcong.excoin.modules.otc.vo.ApplyConditionsVo;
+import com.xcong.excoin.modules.otc.vo.EntrustListInfoVo;
+import com.xcong.excoin.modules.otc.vo.MarketBussinessInfoVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
+import java.math.BigDecimal;
+import java.util.List;
+
@Service
@RequiredArgsConstructor
-public class OtcMarketBussinessServiceImpl extends ServiceImpl<OtcMarketBussinessMapper, OtcMarketBussiness> implements OtcMarketBussinessService {
+public class OtcMarketBussinessServiceImpl extends ServiceImpl<OtcMarketBussinessDao, OtcMarketBussiness> implements OtcMarketBussinessService {
+
+ private final OtcEntrustOrderDao otcEntrustOrderDao;
+ private final MemberDao memberDao;
+ private final OtcSettingDao otcSettingDao;
+ private final OtcOrderDao otcOrderDao;
+
+ @Override
+ public void add() {
+ MemberEntity member = LoginUserUtils.getAppLoginUser();
+ member = memberDao.selectById(member.getId());
+// long memberId = 444L;
+// MemberEntity member = memberDao.selectById(memberId);
+
+ if (MemberEntity.IS_TRADER_Y.equals(member.getIsTrader())) {
+ throw new GlobalException("已经是市商");
+ }
+ OtcSetting setting = otcSettingDao.selectById(1L);
+ // 所有已完成订单
+ List<OtcOrder> finishOrders = otcOrderDao.selectOrderListForUser(member.getId(), 3);
+ if (CollUtil.isEmpty(finishOrders) || setting.getOrderNum() > finishOrders.size()) {
+ throw new GlobalException("条件未达标");
+ }
+
+ List<OtcOrder> allOrders = otcOrderDao.selectOrderListForUser(member.getId(), null);
+ if (CollUtil.isNotEmpty(allOrders)) {
+ BigDecimal finishRatio = BigDecimal.valueOf(finishOrders.size()).divide(BigDecimal.valueOf(allOrders.size()), 4, BigDecimal.ROUND_DOWN).multiply(BigDecimal.valueOf(100));
+ if (setting.getCompletionRate().compareTo(finishRatio) > 0) {
+ throw new GlobalException("条件未达标");
+ }
+ }
+
+ BigDecimal totalAmount = otcOrderDao.selectOrderTotalAmount(member.getId());
+ if (setting.getTotalAmount().compareTo(totalAmount) > 0) {
+ throw new GlobalException("条件未达标");
+ }
+
+ OtcMarketBussiness mb = this.baseMapper.selectMarketBussinessByMemberId(member.getId());
+ OtcMarketBussiness otcMb = new OtcMarketBussiness();
+ if (mb != null) {
+ if (OtcMarketBussiness.CHECK_PASS.equals(mb.getStatus()) || OtcMarketBussiness.CHECK_WAIT.equals(mb.getStatus())) {
+ throw new GlobalException("已经是市商或正在审核");
+ }
+
+ otcMb = mb;
+ otcMb.setStatus(OtcMarketBussiness.CHECK_WAIT);
+ this.baseMapper.updateById(otcMb);
+ } else {
+ otcMb.setMemberId(member.getId());
+ otcMb.setAvgCoinTime(0);
+ otcMb.setAvgPayTime(0);
+ otcMb.setTotalOrderCnt(0);
+ otcMb.setBuyCnt(0);
+ otcMb.setFinishRatio(BigDecimal.ZERO);
+ otcMb.setStatus(OtcMarketBussiness.CHECK_WAIT);
+
+ this.baseMapper.insert(otcMb);
+ }
+ }
+
+ @Override
+ public Integer findMbStatus() {
+ MemberEntity member = LoginUserUtils.getAppLoginUser();
+
+ OtcMarketBussiness mb = this.baseMapper.selectMarketBussinessByMemberId(member.getId());
+ if (mb == null) {
+ return 0;
+ }
+ return mb.getStatus();
+ }
+
+ @Override
+ public Result findMbInfo(Long id) {
+ OtcMarketBussiness mb = this.baseMapper.selectById(id);
+ if (mb == null) {
+ return Result.fail("未找到对应信息");
+ }
+
+ MarketBussinessInfoVo mbVo = OtcMarketBussinessMapper.INSTANCE.entityToVo(mb);
+
+ MemberEntity member = memberDao.selectById(mb.getMemberId());
+ OtcEntrustOrder query = new OtcEntrustOrder();
+ query.setMemberId(mb.getMemberId());
+ query.setIsDefualt(1);
+ query.setOrderType(OtcEntrustOrder.ORDER_TYPE_B);
+ query.setStatus(OtcEntrustOrder.LINE_UP);
+ List<OtcEntrustOrder> buysEntity = otcEntrustOrderDao.selectEntrustOrderByOrderType(query);
+ List<EntrustListInfoVo> buys = OtcEntrustOrderMapper.INSTANCE.entrustToListInfoVoList(buysEntity);
+
+ query.setOrderType(OtcEntrustOrder.ORDER_TYPE_S);
+ List<OtcEntrustOrder> salesEntity = otcEntrustOrderDao.selectEntrustOrderByOrderType(query);
+ List<EntrustListInfoVo> sales = OtcEntrustOrderMapper.INSTANCE.entrustToListInfoVoList(salesEntity);
+ mbVo.setBuys(buys);
+ mbVo.setSales(sales);
+ mbVo.setNikename(member.getName());
+ return Result.ok(mbVo);
+ }
+
+ @Override
+ public Result applyConditions() {
+ MemberEntity member = LoginUserUtils.getAppLoginUser();
+ member = memberDao.selectById(member.getId());
+// long memberId = 444L;
+// MemberEntity member = memberDao.selectById(memberId);
+ ApplyConditionsVo applyConditionsVo = new ApplyConditionsVo();
+
+ OtcSetting setting = otcSettingDao.selectById(1L);
+ applyConditionsVo.setOrderNum(setting.getOrderNum());
+ applyConditionsVo.setTotalAmount(setting.getTotalAmount());
+ applyConditionsVo.setCompletionRate(setting.getCompletionRate());
+ applyConditionsVo.setCancellNum(setting.getCancellNum());
+ // 所有已完成订单
+ List<OtcOrder> finishOrders = otcOrderDao.selectOrderListForUser(member.getId(), 3);
+ if (CollUtil.isEmpty(finishOrders) || setting.getOrderNum() > finishOrders.size()) {
+ applyConditionsVo.setOrderNumStatus(2);
+ }else{
+ applyConditionsVo.setOrderNumStatus(1);
+ }
+
+ List<OtcOrder> allOrders = otcOrderDao.selectOrderListForUser(member.getId(), null);
+ if (CollUtil.isNotEmpty(allOrders)) {
+ BigDecimal finishRatio = BigDecimal.valueOf(finishOrders.size()).divide(BigDecimal.valueOf(allOrders.size()), 4, BigDecimal.ROUND_DOWN).multiply(BigDecimal.valueOf(100));
+ if (setting.getCompletionRate().compareTo(finishRatio) > 0) {
+ applyConditionsVo.setCompletionRateStatus(2);
+ }else{
+ applyConditionsVo.setCompletionRateStatus(1);
+ }
+ }
+
+ BigDecimal totalAmount = otcOrderDao.selectOrderTotalAmount(member.getId());
+ totalAmount = totalAmount == null ? BigDecimal.ZERO : totalAmount;
+ if (setting.getTotalAmount().compareTo(totalAmount) > 0) {
+ applyConditionsVo.setTotalAmountStatus(2);
+ }else{
+ applyConditionsVo.setTotalAmountStatus(1);
+ }
+
+ Integer certifyStatus = member.getCertifyStatus();
+ if(MemberEntity.CERTIFY_STATUS_Y == certifyStatus){
+ applyConditionsVo.setMemberAuthStatus(1);
+ }else{
+ applyConditionsVo.setMemberAuthStatus(2);
+ }
+
+ return Result.ok(applyConditionsVo);
+ }
}
--
Gitblit v1.9.1