Helius
2020-08-27 630edfbacc83aa775705d5fd704eb4bfca0a848f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package com.xcong.excoin.modules.contract.controller;
 
import com.xcong.excoin.common.LoginUserUtils;
import com.xcong.excoin.common.response.Result;
import com.xcong.excoin.modules.contract.parameter.dto.*;
import com.xcong.excoin.modules.contract.parameter.vo.ContractMoneyInfoVo;
import com.xcong.excoin.modules.contract.parameter.vo.HoldOrderListVo;
import com.xcong.excoin.modules.contract.parameter.vo.OrderListVo;
import com.xcong.excoin.modules.contract.service.ContractHoldOrderService;
import com.xcong.excoin.modules.contract.service.ContractOrderService;
import com.xcong.excoin.modules.member.entity.MemberEntity;
import com.xcong.excoin.rabbit.producer.OrderProducer;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
 
import javax.annotation.Resource;
 
/**
 * @author wzy
 * @date 2020-05-27
 **/
@Slf4j
@Api(value = "ContractOrderController", tags = "合约订单接口类")
@RestController
@RequestMapping(value = "/api/contractOrder")
public class ContractOrderController {
 
    @Resource
    private ContractHoldOrderService contractHoldOrderService;
 
    @Resource
    private ContractOrderService contractOrderService;
 
    @ApiOperation(value = "市价提交合约订单")
    @PostMapping(value = "/submitOrder")
    public Result submitOrder(@RequestBody SubmitOrderDto submitOrderDto) {
        return contractHoldOrderService.submitOrder(submitOrderDto);
    }
 
    @ApiOperation(value = "查询当前持仓订单列表 -- 轮询")
    @ApiResponses({
            @ApiResponse(code = 0, message = "success", response = HoldOrderListVo.class)
    })
    @GetMapping(value = "/findHoldOrderList")
    public Result findHoldOrderList(@ApiParam(name = "symbol", value = "币种", example = "BTC/USDT") @RequestParam(value = "symbol", required = false) String symbol) {
        return contractHoldOrderService.findHoldOrderList(symbol, 1);
    }
 
    @ApiOperation(value = "查询当前持仓跟单订单列表 -- 轮询")
    @ApiResponses({
            @ApiResponse(code = 0, message = "success", response = HoldOrderListVo.class)
    })
    @GetMapping(value = "/findHoldFollowOrderList")
    public Result findHoldFollowOrderList(@ApiParam(name = "symbol", value = "币种", example = "BTC/USDT") @RequestParam(value = "symbol", required = false) String symbol) {
        return contractHoldOrderService.findHoldOrderList(symbol, 2);
    }
 
    @ApiOperation(value = "根据Id查询持仓订单详情")
    @GetMapping(value = "/findHoldOrderDetail")
    public Result findHoldOrderDetail(@ApiParam(name = "id", value = "持仓ID", required = true, example = "1") @RequestParam(value = "id") Long id) {
        return contractHoldOrderService.findHoldOrderDetailById(id);
    }
 
    @ApiOperation(value = "根据Id平仓")
    @GetMapping(value = "/closingOrder")
    public Result closingOrder(@ApiParam(name = "id", value = "持仓ID", required = true, example = "1") @RequestParam(value = "id") Long id) {
        return contractHoldOrderService.cancelHoldOrder(id);
    }
 
    @ApiOperation(value = "一键平仓")
    @PostMapping(value = "/oneKeyClosing")
    public Result oneKeyClosing(@RequestBody SymbolDto symbolDto) {
        return contractHoldOrderService.cancelHoldOrderBatch(symbolDto);
    }
 
    @ApiOperation(value = "设置止盈止损")
    @PostMapping(value = "/setTargetProfitOrLoss")
    public Result setTargetProfitOrLoss(@RequestBody @Validated ProfitOrLessDto profitOrLessDto) {
        return contractHoldOrderService.setTargetProfitOrLess(profitOrLessDto);
    }
 
    @ApiOperation(value = "调整保证金")
    @PostMapping(value = "/changeBond")
    public Result changeBond(@RequestBody @Validated ChangeBondDto changeBondDto) {
        return contractHoldOrderService.changeBond(changeBondDto);
    }
 
    @ApiOperation(value = "分页查询历史订单列表")
    @ApiResponses({
            @ApiResponse(code = 0, message = "success", response = OrderListVo.class)
    })
    @PostMapping(value = "/findHistoryOrderList")
    public Result findHistoryOrderList(@RequestBody @Validated OrderListDto orderListDto) {
        return contractHoldOrderService.findOrderList(orderListDto);
    }
 
    @ApiOperation(value = "获取合约页面资产信息")
    @ApiResponses({
            @ApiResponse(code = 0, message = "success", response = ContractMoneyInfoVo.class)
    })
    @GetMapping(value = "/findContractMoneyInfo")
    public Result findContractMoneyInfo(@ApiParam(name = "symbol", value = "币种", required = true, example = "BTC/USDT") @RequestParam(value = "symbol") String symbol) {
        return contractHoldOrderService.findContractMoneyInfo(symbol);
    }
 
    @ApiOperation(value = "调整杠杆")
    @PostMapping(value = "/changeLeverRate")
    public Result changeLeverRate(@RequestBody @Validated ChangeLeverRateDto changeLeverRateDto) {
        return contractHoldOrderService.changeLeverRate(changeLeverRateDto);
    }
 
    @ApiOperation(value = "查询历史委托订单详情")
    @GetMapping(value = "/findOrderDetailById")
    public Result findOrderDetailById(@ApiParam(name = "id", value = "订单id", required = true, example = "1") @RequestParam(value = "id") Long id) {
        return contractHoldOrderService.findOrderDetailById(id);
    }
 
    @ApiOperation(value = "全仓模式 - 平仓")
    @PostMapping(value = "/closingOrder")
    public Result closingOrder(@RequestBody @Validated WholeCloseOrderDto wholeCloseOrderDto) {
        return contractHoldOrderService.cancelHoldOrder(wholeCloseOrderDto);
    }
 
    @ApiOperation(value = "全仓模式 - 变更仓位类型")
    @GetMapping(value = "/changePositionType")
    public Result changePositionType() {
        return contractHoldOrderService.changePositionType();
    }
 
    @GetMapping(value = "/findPositionType")
    @ApiModelProperty(value = "全仓模式 -- 获取仓位状态")
    public Result findPositionType() {
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
 
        return Result.ok("获取成功", memberEntity.getContractPositionType());
    }
 
}