package com.yami.trading.api.controller;
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.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.contract.ContractLockService;
import com.yami.trading.service.contract.ContractOrderService;
import com.yami.trading.service.data.DataService;
import com.yami.trading.service.item.ItemService;
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 javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
/**
* 永续合约持仓单
*/
@RestController
@CrossOrigin
@Slf4j
public class ApiContractOrderController {
@Autowired
private ContractOrderService contractOrderService;
@Autowired
private DataService dataService;
@Autowired
private ItemService itemService;
@Autowired
private ContractLockService contractLockService;
private final String action = "/api/contractOrder!";
/**
* 平仓
*
* order_no 订单号
*/
@RequestMapping(action + "close.action")
public Result close(@RequestParam String order_no) {
try {
CloseDelayThread lockDelayThread = new CloseDelayThread(SecurityUtils.getCurrentUserId(), order_no, this.contractOrderService, false);
Thread t = new Thread(lockDelayThread);
t.start();
} catch (Exception e) {
log.error("平仓失败", e);
return Result.failed("平仓失败");
}
return Result.succeed("平仓成功");
}
/**
* 一键平仓
*/
@RequestMapping(action + "closeAll.action")
public Result closeAll() {
try {
CloseDelayThread lockDelayThread = new CloseDelayThread(SecurityUtils.getCurrentUserId(), "", this.contractOrderService, true);
Thread t = new Thread(lockDelayThread);
t.start();
} catch (Exception e) {
log.error("一键平仓失败", e);
return Result.failed("一键平仓失败");
}
return Result.succeed("一键平仓成功");
}
/**
* 订单列表
*
* page_no 页码
* symbol 币种
* type 查询类型:orders 当前持仓单;hisorders 历史持仓单;
*/
@RequestMapping(action + "list.action")
public Result>> list(@RequestParam(required = false, defaultValue = "1") Integer page_no
, @RequestParam(required = false) String type,
@RequestParam(required = false) String symbol, @RequestParam(required = false) String startTime,
@RequestParam(required = false) String endTime, @RequestParam(required = false) String symbolType
) {
List