| | |
| | | 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.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.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); |
| | | } |
| | | } |