新版仿ok交易所-后端
1
zj
2025-10-14 2cfba883471ec6dabd94ae07e5f7df5dc9df6912
trading-order-admin/src/main/java/com/yami/trading/admin/controller/contract/ContractOrderController.java
@@ -1,18 +1,24 @@
package com.yami.trading.admin.controller.contract;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Lists;
import com.yami.trading.admin.model.AdjustProfitsModel;
import com.yami.trading.bean.contract.domain.ContractApplyOrder;
import com.yami.trading.bean.data.domain.Realtime;
import com.yami.trading.bean.model.User;
import com.yami.trading.common.domain.Result;
import com.yami.trading.common.exception.BusinessException;
import com.yami.trading.common.exception.YamiShopBindException;
import com.yami.trading.common.query.QueryWrapperGenerator;
import com.yami.trading.common.util.ThreadUtils;
import com.yami.trading.service.data.DataService;
import com.yami.trading.service.user.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -30,6 +36,7 @@
import com.yami.trading.bean.contract.mapstruct.ContractOrderWrapper;
import com.yami.trading.service.contract.ContractOrderService;
import com.yami.trading.bean.contract.query.ContractOrderQuery;
import org.springframework.web.servlet.ModelAndView;
import java.io.IOException;
import java.math.BigDecimal;
@@ -57,6 +64,8 @@
    @Autowired(required = false)
    @Qualifier("dataService")
    private DataService dataService;
    @Autowired
    private UserService userService;
    /**
     * 非按金额订单列表数据
@@ -66,7 +75,9 @@
    public Result<IPage<ContractOrderDTO>> list(ContractOrderQuery contractOrderQuery, Page<ContractOrder> page) throws Exception {
        IPage<ContractOrderDTO> result = contractOrderService.listRecord(page, contractOrderQuery);
        result.getRecords().forEach(d -> {
                    String symbol = d.getSymbol();
            User user = userService.cacheUserBy(d.getPartyId());
            d.setUserName(user.getUserName());
            String symbol = d.getSymbol();
                    List<Realtime> realtimes = dataService.realtime(symbol);
                    if (CollectionUtil.isEmpty(realtimes)) {
                        d.setMark_price(BigDecimal.ZERO);
@@ -84,6 +95,50 @@
        );
        return Result.succeed(result);
    }
    /**
     * 调整利润
     * <p>
     * order_no 订单号
     */
    @PostMapping("adjustProfits.action")
    @ApiOperation(value = "调整利润")
    public Result<String> adjustProfits(@RequestBody AdjustProfitsModel model) {
        try {
            ContractOrder order = this.contractOrderService.findByOrderNo(model.getOrderNo());
            if(ObjectUtil.isEmpty(order)){
                return Result.failed("订单不存在!");
            }
            if(!ContractOrder.STATE_SUBMITTED.equals(order.getState())){
                return Result.failed("订单已平仓!");
            }
            order.setProfitLossRatio(model.getProfitLossRatio());
            contractOrderService.update(order);
        } catch (Exception e) {
            log.error("执行调整利润异常", e);
            throw new YamiShopBindException("执行调整利润异常");
        }
        return Result.succeed("success");
    }
    @PostMapping("updateLave.action")
    @ApiOperation(value = "调整杠杆")
    public Result<String> updateLave(@RequestBody AdjustProfitsModel model) {
        try {
            ContractOrder order = this.contractOrderService.findByOrderNo(model.getOrderNo());
            if(ObjectUtil.isEmpty(order)){
                return Result.failed("订单不存在!");
            }
            if(!ContractOrder.STATE_SUBMITTED.equals(order.getState())){
                return Result.failed("订单已平仓!");
            }
            contractOrderService.updateLave(order,model.getLeverRate());
        } catch (Exception e) {
            log.error("执行调整杠杆异常", e);
            throw new YamiShopBindException("执行调整杠杆异常");
        }
        return Result.succeed("success");
    }
@@ -124,7 +179,7 @@
                while (true) {
                    if (this.contractOrderService.lock(order_no)) {
                        this.contractOrderService.saveClose(partyId, order_no);
                        this.contractOrderService.saveClose(partyId, order_no,null);
                        // 处理完退出
                        break;
                    }