新版仿ok交易所-后端
zyy
2026-03-01 fa8a94210436f609def68e8d244609af75e09290
合约
10 files modified
94 ■■■■■ changed files
trading-order-admin/src/main/java/com/yami/trading/admin/controller/contract/ContractOrderController.java 15 ●●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java 4 ●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractOrderController.java 27 ●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/model/ApplyRealNameAuthModel.java 10 ●●●● patch | view | raw | blame | history
trading-order-admin/src/main/resources/config/system.properties 4 ●●●● patch | view | raw | blame | history
trading-order-bean/src/main/java/com/yami/trading/bean/contract/domain/ContractOrder.java 2 ●●● patch | view | raw | blame | history
trading-order-bean/src/main/java/com/yami/trading/bean/model/RealNameAuthRecord.java 7 ●●●●● patch | view | raw | blame | history
trading-order-common/src/main/java/com/yami/trading/common/constants/Constants.java 5 ●●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java 2 ●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java 18 ●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/admin/controller/contract/ContractOrderController.java
@@ -136,21 +136,6 @@
        return Result.succeed("success");
    }
    @GetMapping("addDepositOpen.action")
    @ApiOperation(value = "追加保证金")
    public Result<String> addDepositOpen(@RequestParam @NotBlank String orderNo, @RequestParam @NotBlank BigDecimal addDepositOpen) throws IOException {
        try {
            ContractOrder order = this.contractOrderService.findByOrderNo(orderNo);
            if (order != null && order.getState().equals(ContractOrder.STATE_CREATED)) {
                order.setAddDepositOpen(order.getAddDepositOpen().add(addDepositOpen));
                contractOrderService.update(order);
            }
        } catch (Exception e) {
            log.error("追加保证金异常", e);
            throw new YamiShopBindException("追加保证金异常");
        }
        return Result.succeed("success");
    }
    /**
     * 新线程处理,直接拿到订单锁处理完成后退出
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
@@ -298,8 +298,8 @@
        order.setOrderPriceType(openAction.getPrice_type());
        order.setState(ContractApplyOrder.STATE_SUBMITTED);
        order.setMoney(openAction.getAmount());
        order.setLocationType(openAction.getLocationType());
        //order.setLocationType(openAction.getLocationType());
        order.setLocationType(0);
        contractApplyOrderService.saveCreate(order);
    }
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractOrderController.java
@@ -3,25 +3,26 @@
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.Wallet;
import com.yami.trading.common.domain.Result;
import com.yami.trading.common.exception.YamiShopBindException;
import com.yami.trading.common.lang.LangUtils;
import com.yami.trading.common.util.StringUtils;
import com.yami.trading.common.util.ThreadUtils;
import com.yami.trading.security.common.util.SecurityUtils;
import com.yami.trading.service.WalletService;
import com.yami.trading.service.contract.ContractLockService;
import com.yami.trading.service.contract.ContractOrderService;
import com.yami.trading.service.data.DataService;
import com.yami.trading.service.item.ItemService;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.validation.constraints.NotBlank;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
@@ -44,6 +45,9 @@
    @Autowired
    private ContractLockService contractLockService;
    @Autowired
    WalletService walletService;
    private final String action = "/api/contractOrder!";
    /**
@@ -65,6 +69,21 @@
        return Result.succeed("平仓成功");
    }
    @GetMapping(action + "addDepositOpen.action")
    @ApiOperation(value = "追加保证金")
    public Result<String> addDepositOpen(@RequestParam @NotBlank String orderNo, @RequestParam @NotBlank BigDecimal addDepositOpen) {
        try {
            ContractOrder order = this.contractOrderService.findByOrderNo(orderNo);
            if (order != null && order.getState().equals(ContractOrder.STATE_SUBMITTED)) {
                contractOrderService.addDepositOpen(order, addDepositOpen);
            }
        } catch (Exception e) {
            log.error("追加保证金异常", e);
            throw new YamiShopBindException("追加保证金异常");
        }
        return Result.succeed("success");
    }
    /**
     * 一键平仓
     */
trading-order-admin/src/main/java/com/yami/trading/api/model/ApplyRealNameAuthModel.java
@@ -35,17 +35,23 @@
    @NotBlank
    @ApiModelProperty("实名姓名")
    private String name;
    @ApiModelProperty("firstname")
    private String firstName;
    @ApiModelProperty("生日")
    private String birth;
    /**
     * 证件正面照
     */
    @ApiModelProperty("证件正面照")
    @NotBlank
    //@NotBlank
    private String idFrontImg;
    /**
     * 证件背面照
     */
    @ApiModelProperty("证件背面照")
    @NotBlank
    //@NotBlank
    private String idBackImg;
trading-order-admin/src/main/resources/config/system.properties
@@ -3,11 +3,11 @@
admin_url=https://127.0.0.1:8080/admin
web_url=http://127.0.0.1:8080/wap/
images_http=https://jysimg.wecnsy.com/
images_http=https://blueimg.shenliankeji.top/
loca.images.dir=/www/wwwroot/img
admin_rest_url=https://enjdhdg.site/api
api_http=https://jysapi.wecnsy.com/
api_http=https://blueapi.shenliankeji.top/
email.host=smtp.gmail.com
trading-order-bean/src/main/java/com/yami/trading/bean/contract/domain/ContractOrder.java
@@ -72,7 +72,7 @@
    /**
     * 追加保证金
     */
    private BigDecimal addDepositOpen ;
    private BigDecimal addDepositOpen = BigDecimal.ZERO;
    /**
     * 收益
     */
trading-order-bean/src/main/java/com/yami/trading/bean/model/RealNameAuthRecord.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.TableName;
import com.yami.trading.common.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@@ -34,6 +35,12 @@
     * 实名姓名
     */
    private String name;
    @ApiModelProperty("firstname")
    private String firstName;
    @ApiModelProperty("生日")
    private String birth;
    /**
     * 证件正面照
     */
trading-order-common/src/main/java/com/yami/trading/common/constants/Constants.java
@@ -121,6 +121,11 @@
     * 永续合约建仓
     */
    public static final String MONEYLOG_CONTENT_CONTRACT_OPEN = "contract_open";
    /**
     * 永续合约追加保证金
     */
    public static final String MONEYLOG_CONTENT_CONTRACT_ADD = "contract_add";
    /**
     * 交割合约建仓
     */
trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java
@@ -211,7 +211,7 @@
        List<ItemLeverageDTO> levers = itemLeverageService.findByItemId(item.getUuid());
        log.info("{}  --- order --- {}  --- {}", order.getSymbol(), item.getUuid(), levers.size());
        checkLever(order, levers);
        //checkLever(order, levers);
        order.setOrderNo(DateUtil.getToday("yyMMddHHmmss") + RandomUtil.getRandomNum(8));
trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java
@@ -817,8 +817,8 @@
        map.put("amount", order.getVolume().multiply(order.getUnitAmount()));
        map.put("amount_open", order.getVolumeOpen().multiply(order.getUnitAmount()));
        map.put("fee", order.getFee());
        map.put("deposit", order.getDeposit());
        map.put("deposit_open", order.getDepositOpen());
        map.put("deposit", order.getDeposit().add(order.getAddDepositOpen()));
        map.put("deposit_open", order.getDepositOpen().add(order.getAddDepositOpen()));
        map.put("change_ratio", order.getChangeRatio().setScale(2, RoundingMode.HALF_UP));
        if(order.getProfit()!=null){
@@ -859,4 +859,18 @@
            RedisUtil.del(ContractRedisKeys.CONTRACT_ASSETS_PROFIT_PARTY_ID + partyId);
        }
    }
    public void addDepositOpen(ContractOrder order, BigDecimal addDepositOpen) {
        Wallet wallet = walletService.findByUserId(order.getPartyId());
        BigDecimal amountBefore = wallet.getMoney();
        if (amountBefore.compareTo(addDepositOpen) < 0) {
            throw new YamiShopBindException("not sufficient funds");
        }
        order.setAddDepositOpen(order.getAddDepositOpen().add(addDepositOpen));
        walletService.updateMoney(order.getSymbol(), order.getPartyId(), BigDecimal.ZERO.subtract(addDepositOpen), BigDecimal.ZERO
                , Constants.MONEYLOG_CATEGORY_CONTRACT, Constants.WALLET_USDT, Constants.MONEYLOG_CONTENT_CONTRACT_ADD, "委托单追加保证金,订单号[" + order.getOrderNo() + "]"
        );
        update(order);
    }
}