1
zj
2025-06-19 69d51d9510c284c52b8e330ef3ff800a35ed6aac
src/main/java/project/project/web/api/ContractApplyOrderController.java
@@ -1,4 +1,4 @@
package project.project.web.api;
package project.web.api;
import java.io.IOException;
import java.math.BigDecimal;
@@ -11,6 +11,7 @@
import javax.servlet.http.HttpServletRequest;
import kernel.web.ApplicationUtil;
import org.apache.commons.lang3.ObjectUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -222,6 +223,7 @@
      String stop_price_loss = request.getParameter("stop_price_loss");
      String price_type = request.getParameter("price_type");
      ResultObject resultObject = new ResultObject();
      resultObject = this.readSecurityContextFromSession(resultObject);
      if (!"0".equals(resultObject.getCode())) {
@@ -266,7 +268,9 @@
            throw new BusinessException(error);
         }
         
         double amount_double = Double.valueOf(request.getParameter("amount")).doubleValue();
//         double amount_double = Double.valueOf(request.getParameter("amount")).doubleValue();
         //只有航天这一套需要这样子,部署其他的时候吧这个注释
         double amount_double = Double.valueOf(amount) / Double.valueOf(lever_rate);
         double lever_rate_double = Double.valueOf(lever_rate).doubleValue();
         double price_double = Double.valueOf(request.getParameter("price")).doubleValue();
         double stop_price_profit_double = Double.valueOf(stop_price_profit).doubleValue();
@@ -287,7 +291,8 @@
//         if (amount_double > contract_open_limit_max) {
//            throw new BusinessException("开仓金额不得大于开仓最大限额");
//         }
         int amountInt = (int) amount_double;
         amount_double = amountInt;
         ContractApplyOrder order = new ContractApplyOrder();
         order.setPartyId(partyId);
         order.setSymbol(symbol);
@@ -323,6 +328,72 @@
   }
   /**
    * 修改止盈止损
    */
   @RequestMapping(action + "stopProfitAndLoss.action")
   public Object stopProfitAndLoss(HttpServletRequest request) throws IOException {
      String session_token = request.getParameter("session_token");
      String order_no = request.getParameter("order_no");
      String stop_price_profit = request.getParameter("stop_price_profit");
      String stop_price_loss = request.getParameter("stop_price_loss");
      ResultObject resultObject = new ResultObject();
      resultObject = this.readSecurityContextFromSession(resultObject);
      if (!"0".equals(resultObject.getCode())) {
         return resultObject;
      }
      String partyId = this.getLoginPartyId();
      boolean lock = false;
      try {
         if (!ContractLock.add(partyId)) {
            throw new BusinessException("请稍后再试");
         }
         lock = true;
         ContractOrder order = contractOrderService.findByOrderNo(order_no);
         if (order == null || !"submitted".equals(order.getState()) || !partyId.equals(order.getPartyId().toString())) {
            return resultObject;
         }
         if (StringUtils.isNullOrEmpty(stop_price_profit)) {
            stop_price_profit = "0";
         }
         if (StringUtils.isNullOrEmpty(stop_price_loss)) {
            stop_price_loss = "0";
         }
         double stop_price_profit_double = Double.valueOf(stop_price_profit).doubleValue();
         double stop_price_loss_double = Double.valueOf(stop_price_loss).doubleValue();
         Party party = this.partyService.cachePartyBy(partyId, false);
         if (!party.getEnabled()) {
            resultObject.setCode("506");
            resultObject.setMsg("用户已锁定");
            return resultObject;
         }
         order.setStop_price_profit(stop_price_profit_double);
         order.setStop_price_loss(stop_price_loss_double);
         this.contractOrderService.update(order);
      } catch (Exception e) {
         resultObject.setCode("1");
         resultObject.setMsg(e.getMessage());
      } finally {
         if (lock) {
            ThreadUtils.sleep(100);
            ContractLock.remove(partyId);
         }
      }
      return resultObject;
   }
   /**
    * 平仓
    * 
    * symbol 币种