KKSU
2024-04-17 d23645e976981bc9b670eea1d469fe8a36be309c
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
@@ -24,6 +24,7 @@
import com.xcong.excoin.modules.contract.parameter.vo.ContractEntrustVo;
import com.xcong.excoin.modules.contract.service.ContractEntrustOrderService;
import com.xcong.excoin.modules.contract.service.ContractHoldOrderService;
import com.xcong.excoin.modules.member.dao.MemberDao;
import com.xcong.excoin.modules.member.dao.MemberWalletContractDao;
import com.xcong.excoin.modules.member.entity.MemberEntity;
import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity;
@@ -62,6 +63,9 @@
    @Resource
    private ContractOrderDao contractOrderDao;
    @Resource
    private MemberDao memberDao;
    @Resource
    private CommonService commonService;
@@ -79,6 +83,13 @@
    @Override
    public Result addContractEntrustOrder(SubmitEntrustDto submitEntrustDto) {
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        //查询是否可以点击平仓按钮
        Long memberIdLong = memberEntity.getId();
        MemberEntity selectById = memberDao.selectById(memberIdLong);
        Integer pcState = selectById.getPcState();
        if(MemberEntity.PCSTATE_N == pcState) {
           return Result.loading("loading_type");
        }
        // 获取最新价
        BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(submitEntrustDto.getSymbol())));
@@ -176,6 +187,13 @@
    @Transactional(rollbackFor = Exception.class)
    public Result cancelEntrustOrder(Long id) {
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        //查询是否可以点击平仓按钮
        Long memberIdLong = memberEntity.getId();
        MemberEntity selectById = memberDao.selectById(memberIdLong);
        Integer pcState = selectById.getPcState();
        if(MemberEntity.PCSTATE_N == pcState) {
           return Result.loading("loading_type");
        }
        // 查询该委托单是否为该用户所有
        ContractEntrustOrderEntity entrustOrderEntity = contractEntrustOrderDao.selectEntrustOrderByIdAndMemberId(id, memberEntity.getId());
@@ -201,11 +219,12 @@
        if (i > 0) {
            MemberWalletContractEntity walletContractEntity = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), CoinTypeEnum.USDT.name());
            BigDecimal total = entrustOrderEntity.getEntrustAmount();
            memberWalletContractDao.increaseWalletContractBalanceById(total, null, entrustOrderEntity.getBondAmount().negate(), walletContractEntity.getId());
            if (entrustOrderEntity.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_OPEN_MORE || entrustOrderEntity.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_OPEN_LESS) {
                memberWalletContractDao.increaseWalletContractBalanceById(total, null, entrustOrderEntity.getBondAmount().negate(), walletContractEntity.getId());
            // 插入财务流水
            LogRecordUtils.insertMemberAccountFlow(memberEntity.getId(), total, walletContractEntity.getAvailableBalance().add(total), entrustOrderEntity.getSymbol(), "撤销委托单", "撤销委托单");
                // 插入财务流水
                LogRecordUtils.insertMemberAccountFlow(memberEntity.getId(), total, walletContractEntity.getAvailableBalance().add(total), entrustOrderEntity.getSymbol(), "撤销委托单", "撤销委托单");
            }
            if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == entrustOrderEntity.getPositionType()) {
                ThreadPoolUtils.sendWholeForceClosingPrice(entrustOrderEntity.getSymbol(), memberEntity);
            }
@@ -222,6 +241,13 @@
    @Override
    public Result addCloseContractEntrustOrder(SubmitCloseEntrustDto submitCloseEntrustDto) {
        MemberEntity member = LoginUserUtils.getAppLoginUser();
        //查询是否可以点击平仓按钮
        Long memberIdLong = member.getId();
        MemberEntity selectById = memberDao.selectById(memberIdLong);
        Integer pcState = selectById.getPcState();
        if(MemberEntity.PCSTATE_N == pcState) {
           return Result.loading("loading_type");
        }
        ContractHoldOrderEntity holdOrderEntity = contractHoldOrderDao.selectHoldOrderByMemberIdAndId(member.getId(), submitCloseEntrustDto.getId());
        if (holdOrderEntity == null) {
            return Result.fail("订单不存在");