| | |
| | | import com.xcong.excoin.modules.member.entity.MemberEntity; |
| | | import com.xcong.excoin.modules.member.entity.MemberPaymentMethodEntity; |
| | | import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity; |
| | | import com.xcong.excoin.modules.otc.dao.OtcBlackListDao; |
| | | import com.xcong.excoin.modules.otc.dao.OtcMarketBussinessDao; |
| | | import com.xcong.excoin.modules.otc.dao.OtcOrderDao; |
| | | import com.xcong.excoin.modules.otc.dto.EntrustOrderAddDto; |
| | | import com.xcong.excoin.modules.otc.dto.EntrustOrderListDto; |
| | | import com.xcong.excoin.modules.otc.entity.OtcBlackList; |
| | | import com.xcong.excoin.modules.otc.entity.OtcEntrustOrder; |
| | | import com.xcong.excoin.modules.otc.dao.OtcEntrustOrderDao; |
| | | import com.xcong.excoin.modules.otc.entity.OtcMarketBussiness; |
| | |
| | | @RequiredArgsConstructor |
| | | public class OtcEntrustOrderServiceImpl extends ServiceImpl<OtcEntrustOrderDao, OtcEntrustOrder> implements OtcEntrustOrderService { |
| | | |
| | | private final OtcMarketBussinessDao otcMarketBussinessDao; |
| | | private final MemberDao memberDao; |
| | | private final MemberPaymentMethodDao memberPaymentMethodDao; |
| | | private final OtcMarketBussinessDao otcMarketBussinessDao; |
| | | private final MemberWalletCoinDao memberWalletCoinDao; |
| | | private final OtcOrderDao otcOrderDao; |
| | | private final CommonService commonService; |
| | | private final OtcBlackListDao otcBlackListDao; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | |
| | | BigDecimal totalAmount = addDto.getUnitPrice().multiply(addDto.getAmount()); |
| | | otcEntrustOrder.setTotalAmount(totalAmount); |
| | | |
| | | if (addDto.getMax().compareTo(totalAmount) < 0) { |
| | | throw new GlobalException("最大限额应小于总金额"); |
| | | } |
| | | |
| | | if (OtcEntrustOrder.ORDER_TYPE_S.equals(addDto.getType())) { |
| | | MemberWalletCoinEntity coinWallet = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(), "USDT"); |
| | | if(coinWallet.getAvailableBalance().compareTo(totalAmount) < 0) { |
| | | BigDecimal multiply = addDto.getUnitPrice().multiply(coinWallet.getAvailableBalance()); |
| | | if(multiply.compareTo(totalAmount) < 0) { |
| | | throw new GlobalException("可用金额不足"); |
| | | } |
| | | |
| | | memberWalletCoinDao.updateFrozenBalance(member.getId(), coinWallet.getId(), totalAmount); |
| | | memberWalletCoinDao.updateFrozenBalance(member.getId(), coinWallet.getId(), addDto.getAmount()); |
| | | } |
| | | |
| | | OtcMarketBussiness mb = otcMarketBussinessDao.selectMarketBussinessByMemberId(member.getId()); |
| | | if (mb == null) { |
| | | if (!MemberEntity.IS_TRADER_Y.equals(member.getIsTrader())) { |
| | | throw new GlobalException("不是市商"); |
| | | } |
| | | |
| | | if (member.getIsTrader() == 2) { |
| | | otcEntrustOrder.setIsMb(OtcEntrustOrder.IS_MB_N); |
| | | } else { |
| | | otcEntrustOrder.setMbId(mb.getId()); |
| | | otcEntrustOrder.setIsMb(OtcEntrustOrder.IS_MB_Y); |
| | | } |
| | | |
| | |
| | | throw new GlobalException("类型错误"); |
| | | } |
| | | |
| | | OtcMarketBussiness mb = otcMarketBussinessDao.selectMarketBussinessByMemberId(member.getId()); |
| | | if (mb == null) { |
| | | if (member.getIsTrader() == 2) { |
| | | otcEntrustOrder.setIsMb(OtcEntrustOrder.IS_MB_N); |
| | | } else { |
| | | otcEntrustOrder.setMbId(mb.getId()); |
| | | otcEntrustOrder.setIsMb(OtcEntrustOrder.IS_MB_Y); |
| | | } |
| | | |
| | |
| | | |
| | | @Override |
| | | public IPage<EntrustListVo> findEntrustListInPage(EntrustOrderListDto dto) { |
| | | MemberEntity member = LoginUserUtils.getAppLoginUser(); |
| | | Page<EntrustListVo> page = new Page<>(dto.getPageNum(), dto.getPageSize()); |
| | | // List<OtcBlackList> blackLists = otcBlackListDao.selectBlackListByMemberId(member.getId()); |
| | | // if (CollUtil.isNotEmpty(blackLists)) { |
| | | dto.setMemberId(member.getId()); |
| | | // } |
| | | return this.baseMapper.selectEntrustListInPage(dto, page); |
| | | } |
| | | |
| | | @Override |
| | | public List<EntrustListInfoVo> findOwnEntrustOrder() { |
| | | public List<EntrustListInfoVo> findOwnEntrustOrder(EntrustOrderListDto orderListDto) { |
| | | MemberEntity member = LoginUserUtils.getAppLoginUser(); |
| | | |
| | | OtcEntrustOrder query = new OtcEntrustOrder(); |
| | | query.setStatus(3); |
| | | query.setMemberId(member.getId()); |
| | | List<OtcEntrustOrder> otcEntrustOrders = this.baseMapper.selectEntrustOrderByOrderType(query); |
| | | return OtcEntrustOrderMapper.INSTANCE.entrustToListInfoVoList(otcEntrustOrders); |
| | | |
| | | Page<OtcEntrustOrder> page = new Page<>(orderListDto.getPageNum(), orderListDto.getPageSize()); |
| | | IPage<OtcEntrustOrder> result = this.baseMapper.selectOwnEntrustListInPage(query, page); |
| | | return OtcEntrustOrderMapper.INSTANCE.entrustToListInfoVoList(result.getRecords()); |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | public Result findEntrustOrderDetail(Long id) { |
| | | MemberEntity member = LoginUserUtils.getAppLoginUser(); |
| | | |
| | | OtcEntrustOrder otcEntrustOrder = this.baseMapper.selectById(id); |
| | | if (otcEntrustOrder == null) { |
| | | return Result.fail("参数错误"); |
| | | } |
| | | |
| | | if (!member.getId().equals(otcEntrustOrder.getMemberId())) { |
| | | return Result.fail("请求有误"); |
| | | } |
| | | |
| | | MemberPaymentMethodEntity defualtMethod = memberPaymentMethodDao.selectDefualtMethod(otcEntrustOrder.getMemberId(), null, "1"); |
| | | MemberEntity member = memberDao.selectById(otcEntrustOrder.getMemberId()); |
| | | OtcMarketBussiness mb = otcMarketBussinessDao.selectMarketBussinessByMemberId(member.getId()); |
| | | EntrustOrderDetailVo detail = OtcEntrustOrderMapper.INSTANCE.entityToOrderDetail(otcEntrustOrder); |
| | | detail.setName(member.getName()); |
| | | detail.setOrderCnt(mb.getBuyCnt()); |
| | | detail.setFinishRatio(mb.getFinishRatio()); |
| | | detail.setPayType(defualtMethod.getPaymentType()); |
| | | return Result.ok(detail); |
| | | } |
| | | } |