xiaoyong931011
2022-02-25 8aa47d90a9596c34def404a29b50eddc2dac756f
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
package com.xcong.excoin.modules.coin.controller;
 
import java.math.BigDecimal;
 
import javax.annotation.Resource;
import javax.validation.Valid;
 
import com.alibaba.fastjson.JSONObject;
import com.xcong.excoin.common.annotations.SubmitRepeat;
import com.xcong.excoin.modules.coin.entity.OrderCoinsEntity;
import com.xcong.excoin.modules.symbols.constants.SymbolsConstats;
import com.xcong.excoin.utils.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
 
import com.xcong.excoin.common.response.Result;
import com.xcong.excoin.modules.coin.parameter.dto.CancelEntrustWalletCoinOrderDto;
import com.xcong.excoin.modules.coin.parameter.dto.FindAllWalletCoinOrderDto;
import com.xcong.excoin.modules.coin.parameter.dto.FindCollectDto;
import com.xcong.excoin.modules.coin.parameter.dto.SubmitSalesWalletCoinOrderDto;
import com.xcong.excoin.modules.coin.parameter.vo.FindCollectListVo;
import com.xcong.excoin.modules.coin.parameter.vo.MemberSelectSymbolsVo;
import com.xcong.excoin.modules.coin.parameter.vo.OrderWalletCoinDealVo;
import com.xcong.excoin.modules.coin.parameter.vo.OrderWalletCoinListVo;
import com.xcong.excoin.modules.coin.parameter.vo.TransactionPageOfWalletCoinVo;
import com.xcong.excoin.modules.coin.service.OrderCoinService;
 
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import lombok.extern.slf4j.Slf4j;
 
@Slf4j
@Api(value = "币币交易接口", tags = "币币交易接口")
@RestController
@RequestMapping(value = "/api/orderCoin")
@CrossOrigin("*")
public class OrderCoinController {
    
    @Resource
    OrderCoinService orderCoinService;
 
    @Autowired
    private RedisUtils redisUtils;
    /**
     * 进入交易页面
     * @return
     */
    @ApiOperation(value = "进入交易页面", notes = "进入交易页面")
    @ApiResponses({@ApiResponse( code = 200, message = "success", response = TransactionPageOfWalletCoinVo.class)})
    @ApiImplicitParams({
        @ApiImplicitParam(name = "symbol", value = "币种", required = true, dataType = "String", paramType="query")
    })
    @GetMapping(value = "/enterTransactionPageOfWalletCoin")
    public Result enterTransactionPageOfWalletCoin(String symbol) {
        return orderCoinService.enterTransactionPageOfWalletCoin(symbol);
    }
    
    /**
     *    提交买卖订单
     * @return
     */
    @ApiOperation(value = "提交买卖订单", notes = "提交买卖订单")
    @PostMapping(value="/submitSalesWalletCoinOrder")
    @SubmitRepeat
    public Result submitSalesWalletCoinOrder(@RequestBody @Valid SubmitSalesWalletCoinOrderDto submitSalesWalletCoinOrderDto) {
        log.debug("买卖单参数[{}]", JSONObject.toJSONString(submitSalesWalletCoinOrderDto));
        String status = redisUtils.getString("bea_start");
        if ("1".equals(status)) {
            return Result.fail("暂未开放");
        }
        String symbol = submitSalesWalletCoinOrderDto.getSymbol();
        Integer type = submitSalesWalletCoinOrderDto.getType();
        Integer tradeType = submitSalesWalletCoinOrderDto.getTradeType();
        BigDecimal price = submitSalesWalletCoinOrderDto.getPrice();
        BigDecimal amount = submitSalesWalletCoinOrderDto.getAmount();
        if(SymbolsConstats.EXCHANGE_SYMBOLS.contains(symbol)){
            return orderCoinService.submitSalesWalletCoinOrderWithMatch(symbol,type,tradeType,price,amount,submitSalesWalletCoinOrderDto.getEntrustAmount());
 
        }else{
            return orderCoinService.submitSalesWalletCoinOrder(symbol,type,tradeType,price,amount,submitSalesWalletCoinOrderDto.getEntrustAmount());
        }
    }
    
    /**
     * 获取委托单数据
     * @return
     */
    @ApiOperation(value = "获取委托单数据", notes = "获取委托单数据")
    @ApiResponses({@ApiResponse( code = 200, message = "success", response = OrderWalletCoinListVo.class)})
    @ApiImplicitParams({
        @ApiImplicitParam(name = "symbol", value = "币种", required = true, dataType = "String", paramType="query"),
        @ApiImplicitParam(name = "status", value = "状态 1:委托中2:撤单3:已成交", required = true, dataType = "int", paramType="query")
    })
    @GetMapping(value = "/getEntrustWalletCoinOrder")
    public Result getEntrustWalletCoinOrder(String symbol,Integer status) {
        return orderCoinService.getEntrustWalletCoinOrder(symbol,status);
    }
    
    /**
     * 撤销委托订单
     * @return
     */
    @ApiOperation(value = "撤销委托订单", notes = "撤销委托订单")
    @PostMapping(value="/cancelEntrustWalletCoinOrder")
    @SubmitRepeat
    public Result cancelEntrustWalletCoinOrder(@RequestBody @Valid CancelEntrustWalletCoinOrderDto cancelEntrustWalletCoinOrderDto) {
        String orderId = cancelEntrustWalletCoinOrderDto.getOrderId();
        // 根据不同币种
        return orderCoinService.cancelEntrustWalletCoinOrder(orderId);
    }
    
    /**
     * 获取币币交易历史订单信息
     * @return
     */
    @ApiOperation(value = "获取币币交易历史订单信息", notes = "获取币币交易历史订单信息")
    @ApiResponses({@ApiResponse( code = 200, message = "success", response = OrderWalletCoinDealVo.class)})
    @PostMapping(value="/findAllWalletCoinOrder")
    public Result  findAllWalletCoinOrder(@RequestBody @Validated FindAllWalletCoinOrderDto findAllWalletCoinOrderDto) {
        return orderCoinService.findAllWalletCoinOrder(findAllWalletCoinOrderDto);
    }
    
    /**
     * 获取一条币币交易历史订单信息
     * @return
     */
    @ApiOperation(value = "获取一条币币交易历史订单信息", notes = "获取一条币币交易历史订单信息")
    @ApiResponses({@ApiResponse( code = 200, message = "success", response = OrderWalletCoinDealVo.class)})
    @ApiImplicitParams({
        @ApiImplicitParam(name = "orderId", value = "订单ID", required = true, dataType = "Long", paramType="query")
    })
    @GetMapping(value = "/findWalletCoinOrder")
    public Result  findWalletCoinOrder(Long orderId) {
        return orderCoinService.findWalletCoinOrder(orderId);
    }
    
    /**
     * 币币自选|取消自选
     * @return
     */
    @ApiOperation(value = "币币自选|取消自选", notes = "币币自选|取消自选")
    @PostMapping(value="/findCollect")
    public Result  findCollect(@RequestBody @Valid FindCollectDto findCollectDto) {
        String symbol = findCollectDto.getSymbol();
        Integer type = findCollectDto.getType();
        return orderCoinService.findCollect(symbol,type);
    }
    
    /**
     * 币币是否自选
     * @return
     */
    @ApiOperation(value = "币币是否自选", notes = "币币是否自选")
    @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberSelectSymbolsVo.class)})
    @ApiImplicitParams({
        @ApiImplicitParam(name = "symbol", value = "币种", required = true, dataType = "String", paramType="query")
    })
    @GetMapping(value = "/checkIsCollect")
    public Result  checkIsCollect(String symbol) {
        return orderCoinService.checkIsCollect(symbol);
    }
    
    /**
     * 已自选的币种
     * @return
     */
    @ApiOperation(value = "已自选的币种", notes = "已自选的币种")
    @ApiResponses({@ApiResponse( code = 200, message = "success", response = FindCollectListVo.class)})
    @GetMapping(value = "/findCollectList")
    public Result  findCollectList() {
        return orderCoinService.findCollectList();
    }
    
    /**
     * 币种搜索
     * @return
     */
    @ApiOperation(value = "币种搜索", notes = "币种搜索")
    @GetMapping(value = "/searchSymbolResultList")
    public Result  searchSymbolResultList() {
        return orderCoinService.searchSymbolResultList();
    }
 
    /**
     * 获取币币交易历史订单信息
     * @return
     */
    @ApiOperation(value = "获取币币交易历史订单信息", notes = "获取币币交易历史订单信息")
    @ApiResponses({@ApiResponse( code = 200, message = "success", response = OrderWalletCoinDealVo.class)})
    @GetMapping(value="/deal/list")
    public Result  findAllWalletCoinOrder() {
        return orderCoinService.findAllWalletCoinOrder();
    }
}