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("xct_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(); } }