| | |
| | | package com.yami.trading.service.impl; |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.yami.trading.bean.contract.domain.ContractOrder; |
| | | import com.yami.trading.bean.data.domain.Realtime; |
| | | import com.yami.trading.bean.item.domain.Item; |
| | | import com.yami.trading.bean.model.CapitaltWallet; |
| | | import com.yami.trading.bean.model.MoneyLog; |
| | | import com.yami.trading.bean.model.Wallet; |
| | | import com.yami.trading.bean.model.WalletExtend; |
| | | import com.yami.trading.bean.model.*; |
| | | import com.yami.trading.common.constants.Constants; |
| | | import com.yami.trading.common.domain.Result; |
| | | import com.yami.trading.common.exception.YamiShopBindException; |
| | |
| | | import com.yami.trading.service.MoneyLogService; |
| | | import com.yami.trading.service.WalletService; |
| | | import com.yami.trading.service.contract.ContractOrderService; |
| | | import com.yami.trading.service.data.DataService; |
| | | import com.yami.trading.service.item.ItemService; |
| | | import com.yami.trading.service.user.PurchaseRecordService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.checkerframework.checker.units.qual.A; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | |
| | | ItemService itemService; |
| | | |
| | | @Autowired |
| | | CapitaltWalletMapper capitaltWalletMapper; |
| | | PurchaseRecordService purchaseRecordService; |
| | | |
| | | @Autowired |
| | | DataService dataService; |
| | | |
| | | @Override |
| | | public CapitaltWallet getUserIdWallet(String userId) { |
| | |
| | | moneyLog.setCreateTime(new Date()); |
| | | moneyLogService.save(moneyLog); |
| | | } else { |
| | | Item item = itemService.findBySymbol(coinType); |
| | | Item item; |
| | | if (coinType.equalsIgnoreCase("clkusdt")) { |
| | | item = itemService.getOne(new LambdaQueryWrapper<Item>().eq(Item::getName, "CLK/USDT")); |
| | | coinType = item.getSymbol(); |
| | | //充值入ico持仓 |
| | | String volume = moneyRevise.toString(); |
| | | List<Realtime> realtimes = this.dataService.realtime(coinType); |
| | | double close; |
| | | if (realtimes != null) { |
| | | close = realtimes.get(0).getClose().doubleValue(); |
| | | } else { |
| | | throw new YamiShopBindException("参数错误"); |
| | | } |
| | | PurchaseRecord purchaseRecord = purchaseRecordService.getOne(new LambdaQueryWrapper<>(PurchaseRecord.class) |
| | | .eq(PurchaseRecord::getUserId, userId)); |
| | | |
| | | BigDecimal amount = new BigDecimal(volume).multiply(new BigDecimal(close)); |
| | | if(ObjectUtil.isEmpty(purchaseRecord)){ |
| | | if (accountType == 1) { |
| | | PurchaseRecord record = new PurchaseRecord(); |
| | | record.setUserId(userId); |
| | | record.setPurchaseQuantity(new BigDecimal(volume)); |
| | | record.setPurchasePrice(new BigDecimal(close)); |
| | | record.setTotalAmount(amount); |
| | | purchaseRecordService.save(record); |
| | | } |
| | | } else { |
| | | if (accountType == 1) { |
| | | purchaseRecord.setPurchaseQuantity(purchaseRecord.getPurchaseQuantity().add(new BigDecimal(volume))); |
| | | purchaseRecord.setTotalAmount(purchaseRecord.getTotalAmount().add(amount)); |
| | | purchaseRecord.setPurchasePrice(purchaseRecord.getTotalAmount().divide(purchaseRecord.getPurchaseQuantity(), 4,RoundingMode.HALF_UP)); |
| | | purchaseRecordService.updateById(purchaseRecord); |
| | | } else { |
| | | purchaseRecord.setPurchaseQuantity(purchaseRecord.getPurchaseQuantity().add(new BigDecimal(volume))); |
| | | if (purchaseRecord.getPurchaseQuantity().compareTo(BigDecimal.ZERO) < 0) { |
| | | throw new YamiShopBindException("持仓数量不足"); |
| | | } |
| | | purchaseRecord.setTotalAmount(purchaseRecord.getTotalAmount().add(amount)); |
| | | //purchaseRecord.setTotalAmount(purchaseRecord.getPurchaseQuantity().multiply(purchaseRecord.getPurchasePrice())); |
| | | purchaseRecord.setPurchasePrice(purchaseRecord.getTotalAmount().divide(purchaseRecord.getPurchaseQuantity(), 4,RoundingMode.HALF_UP)); |
| | | purchaseRecordService.updateById(purchaseRecord); |
| | | } |
| | | |
| | | } |
| | | } else { |
| | | item = itemService.findBySymbol(coinType); |
| | | } |
| | | if (item == null) { |
| | | throw new YamiShopBindException("暂不支持的币种"); |
| | | } |
| | |
| | | return Result.succeed(); |
| | | } |
| | | |
| | | //赠送ico |
| | | @Override |
| | | public Result giveIco(String partyId, BigDecimal moneyRevise) { |
| | | |
| | | return Result.succeed(); |
| | | } |
| | | |
| | | @Override |
| | | public void update(CapitaltWallet capitaltWallet, double amount1) { |
| | | capitaltWallet.setMoney(new BigDecimal(Arith.add(capitaltWallet.getMoney().doubleValue(), amount1))); |