From 95da7870f87ec42dbd572aba040492c881fe0b9c Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Fri, 05 Jun 2020 15:35:21 +0800 Subject: [PATCH] Merge branch 'master' of https://gitee.com/chonggaoxiao/new_excoin.git --- src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java | 57 +++++++ src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java | 62 +++++++ src/main/resources/mapper/contract/ContractOrderDao.xml | 10 + src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java | 87 ++++++++-- src/main/java/com/xcong/excoin/modules/contract/mapper/ContractHoldOrderEntityMapper.java | 4 src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java | 7 src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java | 4 src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java | 35 +++- src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java | 7 src/main/java/com/xcong/excoin/modules/contract/parameter/dto/OrderListDto.java | 27 +++ src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java | 15 - src/main/java/com/xcong/excoin/modules/contract/mapper/ContractOrderEntityMapper.java | 28 +++ src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java | 8 src/main/java/com/xcong/excoin/modules/contract/parameter/dto/ChangeLeverRateDto.java | 24 +++ src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java | 2 src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderDetailVo.java | 72 ++++++++ src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java | 13 + 17 files changed, 404 insertions(+), 58 deletions(-) diff --git a/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java b/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java index 7be7f09..633305d 100644 --- a/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java +++ b/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java @@ -46,10 +46,10 @@ public static final String QUEUE_COINOUT = "QUEUE_COINOUT_NEW"; //价格操作 - public static final String QUEUE_PRICEOPERATE = "QUEUE_PRICEOPERATE"; + public static final String QUEUE_PRICEOPERATE = "QUEUE_PRICEOPERATE_NEW"; // 平仓队列 - public static final String QUEUE_CLOSETRADE = "QUEUE_CLOSETRADE"; + public static final String QUEUE_CLOSETRADE = "QUEUE_CLOSETRADE_NEW"; // 开多止盈路由键 diff --git a/src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java b/src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java index 3a8a0a6..0be9cc1 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java +++ b/src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java @@ -1,12 +1,10 @@ package com.xcong.excoin.modules.contract.controller; import com.xcong.excoin.common.response.Result; -import com.xcong.excoin.modules.contract.parameter.dto.ChangeBondDto; -import com.xcong.excoin.modules.contract.parameter.dto.ProfitOrLessDto; -import com.xcong.excoin.modules.contract.parameter.dto.SubmitOrderDto; -import com.xcong.excoin.modules.contract.parameter.dto.SymbolDto; +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.rabbit.producer.OrderProducer; @@ -48,10 +46,10 @@ return contractHoldOrderService.findHoldOrderList(symbol); } - @ApiOperation(value = "未完成--根据Id查询订单详情") + @ApiOperation(value = "根据Id查询持仓订单详情") @GetMapping(value = "/findHoldOrderDetail") public Result findHoldOrderDetail(@ApiParam(name = "id", value = "持仓ID", required = true, example = "1") @RequestParam(value = "id") Long id) { - return null; + return contractHoldOrderService.findHoldOrderDetailById(id); } @ApiOperation(value = "根据Id平仓") @@ -74,14 +72,17 @@ @ApiOperation(value = "调整保证金") @PostMapping(value = "/changeBond") - public Result changeBond(ChangeBondDto changeBondDto) { + public Result changeBond(@RequestBody @Validated ChangeBondDto changeBondDto) { return contractHoldOrderService.changeBond(changeBondDto); } - @ApiOperation(value = "未完成--分页查询历史订单列表") - @GetMapping(value = "/findHistoryOrderList") - public Result findHistoryOrderList() { - return null; + @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 = "获取合约页面资产信息") @@ -93,4 +94,16 @@ 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); + } + } diff --git a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java index 90694a5..f3ac561 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java +++ b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java @@ -1,10 +1,17 @@ package com.xcong.excoin.modules.contract.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xcong.excoin.modules.contract.entity.ContractOrderEntity; +import org.apache.ibatis.annotations.Param; /** * @author helius */ public interface ContractOrderDao extends BaseMapper<ContractOrderEntity> { + + public IPage<ContractOrderEntity> selectContractOrderInPage(Page<ContractOrderEntity> page, Long memberId); + + public ContractOrderEntity selectOrderDetailByIdAndMemberId(@Param("id") Long id, @Param("memberId") Long memberId); } diff --git a/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractHoldOrderEntityMapper.java b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractHoldOrderEntityMapper.java index 6843d63..2367df6 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractHoldOrderEntityMapper.java +++ b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractHoldOrderEntityMapper.java @@ -2,6 +2,7 @@ import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity; import com.xcong.excoin.modules.contract.entity.ContractOrderEntity; +import com.xcong.excoin.modules.contract.parameter.vo.HoldOrderDetailVo; import com.xcong.excoin.modules.contract.parameter.vo.HoldOrderListVo; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -16,7 +17,10 @@ public static final ContractHoldOrderEntityMapper INSTANCE = Mappers.getMapper(ContractHoldOrderEntityMapper.class); @Mapping(target = "orderType", source = "openingType") + @Mapping(target = "openingTime", source = "createTime") public abstract ContractOrderEntity holdOrderToOrder(ContractHoldOrderEntity holdOrderEntity); public abstract HoldOrderListVo holdOrderToDto(ContractHoldOrderEntity holdOrderEntity); + + public abstract HoldOrderDetailVo holdOrderToOrderDetailVo(ContractHoldOrderEntity holdOrderEntity); } diff --git a/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractOrderEntityMapper.java b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractOrderEntityMapper.java new file mode 100644 index 0000000..b2e3ee2 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractOrderEntityMapper.java @@ -0,0 +1,28 @@ +package com.xcong.excoin.modules.contract.mapper; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.xcong.excoin.modules.contract.entity.ContractOrderEntity; +import com.xcong.excoin.modules.contract.parameter.vo.OrderDetailVo; +import com.xcong.excoin.modules.contract.parameter.vo.OrderListVo; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * @author wzy + * @date 2020-06-05 + **/ +@Mapper +public abstract class ContractOrderEntityMapper { + public static final ContractOrderEntityMapper INSTANCE = Mappers.getMapper(ContractOrderEntityMapper.class); + + public abstract OrderListVo orderEntityToOrderListVo(ContractOrderEntity orderEntity); + + public abstract List<OrderListVo> orderEntitiesToOrderListVo(List<ContractOrderEntity> orderEntities); + + public abstract Page<OrderListVo> pageEntityToPageVo(IPage<ContractOrderEntity> orderEntityIPage); + + public abstract OrderDetailVo entityToDetailVo(ContractOrderEntity orderEntity); +} diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/ChangeLeverRateDto.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/ChangeLeverRateDto.java new file mode 100644 index 0000000..4ba4265 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/ChangeLeverRateDto.java @@ -0,0 +1,24 @@ +package com.xcong.excoin.modules.contract.parameter.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Author wzy + * @Date 2020/6/5 + **/ +@Data +@ApiModel(value = "ChangeLeverRateDto", description = "调整杠杆接口接收参数类") +public class ChangeLeverRateDto { + + @NotNull + @ApiModelProperty(value = "杠杆", example = "100") + private int leverRate; + + @NotNull + @ApiModelProperty(value = "币种", example = "BTC/USDT") + private String symbol; +} diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/OrderListDto.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/OrderListDto.java new file mode 100644 index 0000000..6a35286 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/OrderListDto.java @@ -0,0 +1,27 @@ +package com.xcong.excoin.modules.contract.parameter.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +/** + * @Author wzy + * @Date 2020/6/5 + **/ +@Data +@ApiModel(value = "OrderListDto", description = "历史委托订单列表接口参数接受类") +public class OrderListDto { + + @NotNull + @Min(1) + @ApiModelProperty(value = "第几页", example = "1") + private int pageNum; + + @NotNull + @ApiModelProperty(value = "每页数量", example = "10") + private int pageSize; + +} diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java new file mode 100644 index 0000000..12cc92c --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java @@ -0,0 +1,62 @@ +package com.xcong.excoin.modules.contract.parameter.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author wzy + * @date 2020-06-01 + **/ +@Data +@ApiModel(value = "HoldOrderDetailVo", description = "获取持仓订单详情接口返回类") +public class HoldOrderDetailVo { + + @ApiModelProperty("订单编号") + private String orderNo; + + @ApiModelProperty("交易类型 1-市价2-限价") + private int tradeType; + + @ApiModelProperty("币种") + private String symbol; + + @ApiModelProperty("张数") + private int symbolCnt; + + @ApiModelProperty("规格") + private BigDecimal symbolSku; + + @ApiModelProperty("开仓价") + private BigDecimal openingPrice; + + @ApiModelProperty("开仓类型 1-开多 2-开空") + private int openingType; + + @ApiModelProperty("开仓手续费") + private BigDecimal openingFeeAmount; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @ApiModelProperty("开仓时间") + private Date openingTime; + + @ApiModelProperty("保证金") + private BigDecimal bondAmount; + + @ApiModelProperty("持仓费") + private BigDecimal holdAmount; + + @ApiModelProperty("预估强平价") + private BigDecimal forceClosingPrice; + + @ApiModelProperty("止损价") + private BigDecimal stopLossPrice; + + @ApiModelProperty("止盈价") + private BigDecimal stopProfitPrice; +} diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java index bdaef3e..86a2dbb 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java +++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java @@ -54,6 +54,9 @@ @ApiModelProperty(value = "可增加的最大保证金") private BigDecimal canAddMaxBond; + @ApiModelProperty(value = "可减少最大保证金") + private BigDecimal canReduceMaxBond; + public BigDecimal getOpeningPrice() { return openingPrice.setScale(4, BigDecimal.ROUND_DOWN); } @@ -69,4 +72,8 @@ public BigDecimal getCanAddMaxBond() { return canAddMaxBond.setScale(4, BigDecimal.ROUND_DOWN); } + + public BigDecimal getCanReduceMaxBond() { + return canReduceMaxBond.setScale(4, BigDecimal.ROUND_DOWN); + } } diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderDetailVo.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderDetailVo.java index f0ca3df..53db2fe 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderDetailVo.java +++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderDetailVo.java @@ -1,11 +1,81 @@ package com.xcong.excoin.modules.contract.parameter.vo; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; /** * @author wzy - * @date 2020-06-01 + * @date 2020-06-05 **/ @Data +@ApiModel(value = "OrderDetailVo", description = "历史委托订单详情接口返回参数类") public class OrderDetailVo { + + @ApiModelProperty("交易类型 1-市价2-限价") + private int tradeType; + + @ApiModelProperty("订单类型 -1撤单,1开多,2开空,3平多,4平空") + private int orderType; + + @ApiModelProperty("订单编号") + private String orderNo; + + @ApiModelProperty("委托开仓价") + private BigDecimal entrustOpeningPrice; + + @ApiModelProperty("委托时间") + private Date entrustTime; + + @ApiModelProperty("币种") + private String symbol; + + @ApiModelProperty("张数") + private int symbolCnt; + + @ApiModelProperty("平仓价") + private BigDecimal closingPrice; + + @ApiModelProperty("平仓手续费") + private BigDecimal closingFeeAmount; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @ApiModelProperty("平仓时间") + private Date closingTime; + + @ApiModelProperty("平仓类型 2平多3平空4爆仓平多5爆仓平空6止盈平多7止盈平空8止损平多9止损平空") + private int closingType; + + @ApiModelProperty("止损价") + private BigDecimal stopLosePrice; + + @ApiModelProperty("止盈价") + private BigDecimal stopProfitPrice; + + @ApiModelProperty("盈亏金额") + private BigDecimal rewardAmount; + + @ApiModelProperty("盈亏比例") + private BigDecimal rewardRatio; + + @ApiModelProperty("开仓价") + private BigDecimal openingPrice; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @ApiModelProperty("开仓时间") + private Date openingTime; + + @ApiModelProperty("开仓手续费") + private BigDecimal openingFeeAmount; + + @ApiModelProperty("保证金") + private BigDecimal bondAmount; + + @ApiModelProperty("持仓费") + private BigDecimal holdAmount; + } diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java new file mode 100644 index 0000000..6ae45fe --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java @@ -0,0 +1,57 @@ +package com.xcong.excoin.modules.contract.parameter.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author wzy + * @date 2020-06-05 + **/ +@Data +@ApiModel(value = "OrderListVo", description = "历史委托订单接口返回参数类") +public class OrderListVo { + + @ApiModelProperty("订单ID") + private Long id; + + @ApiModelProperty("订单类型 -1撤单,1开多,2开空,3平多,4平空") + private int orderType; + + @ApiModelProperty("开仓均价") + private BigDecimal openingPrice; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @ApiModelProperty("开仓价") + private Date openingTime; + + @ApiModelProperty("开仓手续费") + private BigDecimal openingFeeAmount; + + @ApiModelProperty("保证金") + private BigDecimal bondAmount; + + @ApiModelProperty("张数") + private int symbolCnt; + + @ApiModelProperty("已实现盈亏") + private BigDecimal rewardRatio; + + @ApiModelProperty("平仓类型 2平多3平空4爆仓平多5爆仓平空6止盈平多7止盈平空8止损平多9止损平空") + private int closingType; + + @ApiModelProperty("平仓手续费") + private BigDecimal closingFeeAmount; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @ApiModelProperty("平仓时间") + private Date closingTime; + + @ApiModelProperty("强平价") + private BigDecimal forceClosingPrice; + +} diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java b/src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java index 78cea15..9294a72 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java +++ b/src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.xcong.excoin.common.response.Result; import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity; -import com.xcong.excoin.modules.contract.parameter.dto.ChangeBondDto; -import com.xcong.excoin.modules.contract.parameter.dto.ProfitOrLessDto; -import com.xcong.excoin.modules.contract.parameter.dto.SubmitOrderDto; -import com.xcong.excoin.modules.contract.parameter.dto.SymbolDto; +import com.xcong.excoin.modules.contract.parameter.dto.*; import com.xcong.excoin.rabbit.pricequeue.OrderModel; import org.apache.ibatis.annotations.Param; @@ -37,4 +34,12 @@ public Result findContractMoneyInfo(String symbol); + public Result changeLeverRate(ChangeLeverRateDto changeLeverRateDto); + + public Result findHoldOrderDetailById(Long id); + + public Result findOrderList(OrderListDto orderListDto); + + public Result findOrderDetailById(Long id); + } diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java index 3e6f326..7bfdde4 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java @@ -121,7 +121,7 @@ int i = contractEntrustOrderDao.insert(entrustOrderEntity); - memberWalletContractDao.increaseWalletContractBalanceById(entrustTotalAmount.negate(), null, entrustTotalAmount, walletContract.getId()); + memberWalletContractDao.increaseWalletContractBalanceById(entrustTotalAmount.negate(), null, entrustOrderEntity.getBondAmount(), walletContract.getId()); if (i > 0) { // 发送委托单队列消息 diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java index f6c8e47..d1853f2 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java @@ -3,6 +3,8 @@ import cn.hutool.core.collection.CollUtil; import com.alibaba.druid.sql.visitor.functions.If; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xcong.excoin.common.LoginUserUtils; import com.xcong.excoin.common.enumerates.CoinTypeEnum; @@ -16,12 +18,9 @@ import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity; import com.xcong.excoin.modules.contract.entity.ContractOrderEntity; import com.xcong.excoin.modules.contract.mapper.ContractHoldOrderEntityMapper; -import com.xcong.excoin.modules.contract.parameter.dto.ChangeBondDto; -import com.xcong.excoin.modules.contract.parameter.dto.ProfitOrLessDto; -import com.xcong.excoin.modules.contract.parameter.dto.SubmitOrderDto; -import com.xcong.excoin.modules.contract.parameter.dto.SymbolDto; -import com.xcong.excoin.modules.contract.parameter.vo.ContractMoneyInfoVo; -import com.xcong.excoin.modules.contract.parameter.vo.HoldOrderListVo; +import com.xcong.excoin.modules.contract.mapper.ContractOrderEntityMapper; +import com.xcong.excoin.modules.contract.parameter.dto.*; +import com.xcong.excoin.modules.contract.parameter.vo.*; import com.xcong.excoin.modules.contract.service.ContractHoldOrderService; import com.xcong.excoin.modules.member.dao.MemberLevelRateDao; import com.xcong.excoin.modules.member.dao.MemberWalletContractDao; @@ -159,14 +158,13 @@ contractOrderEntity.setOpeningTime(new Date()); contractHoldOrderDao.insert(holdOrderEntity); int i = contractOrderDao.insert(contractOrderEntity); - memberWalletContractDao.increaseWalletContractBalanceById(prePaymentAmount.negate(), null, null, walletContract.getId()); - - // 计算佣金 - ThreadPoolUtils.calReturnMoney(memberEntity.getId(), contractOrderEntity.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_OPEN); if (i > 0) { - return Result.ok("success"); + memberWalletContractDao.increaseWalletContractBalanceById(prePaymentAmount.negate(), openFeePrice.negate(), null, walletContract.getId()); + // 计算佣金 + ThreadPoolUtils.calReturnMoney(memberEntity.getId(), contractOrderEntity.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_OPEN); + return Result.ok("提交成功"); } - return Result.fail("fail"); + return Result.fail("提交失败"); } @Override @@ -189,6 +187,7 @@ MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbol); + MemberWalletContractEntity walletContractEntity = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), CoinTypeEnum.USDT.name()); if (CollUtil.isNotEmpty(list)) { BigDecimal totalProfitOrLoss = BigDecimal.ZERO; List<HoldOrderListVo> resultList = new ArrayList<>(); @@ -228,12 +227,17 @@ .divide(new BigDecimal(holdOrderEntity.getLeverRatio()), 8, BigDecimal.ROUND_DOWN); // 可增加最大保证金 - BigDecimal canAddMaxBond = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()).subtract(costPrice); - if (canAddMaxBond.compareTo(BigDecimal.ZERO) < 0) { - canAddMaxBond = BigDecimal.ZERO; +// BigDecimal canAddMaxBond = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()).subtract(costPrice); +// if (canAddMaxBond.compareTo(BigDecimal.ZERO) < 0) { +// canAddMaxBond = BigDecimal.ZERO; +// } + BigDecimal canReduceMaxBond = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getPrePaymentAmount()); + if (canReduceMaxBond.compareTo(BigDecimal.ZERO) < 0) { + canReduceMaxBond = BigDecimal.ZERO; } - holdOrderListVo.setCanAddMaxBond(canAddMaxBond); + holdOrderListVo.setCanReduceMaxBond(canReduceMaxBond); + holdOrderListVo.setCanAddMaxBond(walletContractEntity.getAvailableBalance()); holdOrderListVo.setReturnRate(returnRate); holdOrderListVo.setProfitOrLoss(rewardRatio); resultList.add(holdOrderListVo); @@ -335,11 +339,11 @@ if (stopProfitPrice != null) { if (newPrice.compareTo(openPrice) > 0) { if (stopProfitPrice.compareTo(openPrice) > 0) { - return Result.fail("止损价必须低于开仓价"); + return Result.fail("止盈价必须低于开仓价"); } } else { if (stopProfitPrice.compareTo(newPrice) > 0) { - return Result.fail("止损价必须低于当前价"); + return Result.fail("止盈价必须低于当前价"); } } } @@ -384,7 +388,6 @@ producer.sendPriceOperate(JSONObject.toJSONString(model)); return Result.ok("设置成功"); } - return Result.fail("设置失败"); } @@ -509,4 +512,50 @@ contractMoneyInfoVo.setLeverRate(rateEntity.getLevelRateUp()); return Result.ok(contractMoneyInfoVo); } + + @Override + public Result changeLeverRate(ChangeLeverRateDto changeLeverRateDto) { + MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); + MemberLevelRateEntity levelRateEntity = memberLevelRateDao.selectLeverRateByMemberIdAndSymbol(memberEntity.getId(), changeLeverRateDto.getSymbol()); + levelRateEntity.setLevelRateUp(changeLeverRateDto.getLeverRate()); + levelRateEntity.setLevelRateDown(changeLeverRateDto.getLeverRate()); + int i = memberLevelRateDao.updateById(levelRateEntity); + if (i > 0) { + return Result.ok("调整成功"); + } + return Result.fail("调整失败"); + } + + @Override + public Result findHoldOrderDetailById(Long id) { + MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); + ContractHoldOrderEntity holdOrderEntity = contractHoldOrderDao.selectHoldOrderByMemberIdAndId(memberEntity.getId(), id); + if (holdOrderEntity == null) { + return Result.fail("订单不存在"); + } + + HoldOrderDetailVo holdOrderDetailVo = ContractHoldOrderEntityMapper.INSTANCE.holdOrderToOrderDetailVo(holdOrderEntity); + return Result.ok(holdOrderDetailVo); + } + + @Override + public Result findOrderList(OrderListDto orderListDto) { + MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); + Page<ContractOrderEntity> page = new Page<>(orderListDto.getPageNum(), orderListDto.getPageSize()); + IPage<ContractOrderEntity> list = contractOrderDao.selectContractOrderInPage(page, memberEntity.getId()); + Page<OrderListVo> result = ContractOrderEntityMapper.INSTANCE.pageEntityToPageVo(list); + return Result.ok(result); + } + + @Override + public Result findOrderDetailById(Long id) { + MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); + ContractOrderEntity contractOrderEntity = contractOrderDao.selectOrderDetailByIdAndMemberId(id, memberEntity.getId()); + if (contractOrderEntity == null) { + return Result.fail("订单不存在"); + } + + OrderDetailVo orderDetailVo = ContractOrderEntityMapper.INSTANCE.entityToDetailVo(contractOrderEntity); + return Result.ok(orderDetailVo); + } } diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java index c103753..ebba922 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java @@ -134,13 +134,9 @@ contractOrderDao.insert(contractOrderEntity); // 计算盈利或亏损后可用金额和总金额应该增加或减少的 - BigDecimal addMoney = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningPrice()).add(profitOrLoss); - log.info("平仓增加金额:{}", addMoney); + BigDecimal addMoney = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()).add(profitOrLoss); - walletContract.setFrozenBalance(walletContract.getFrozenBalance().subtract(holdOrderEntity.getBondAmount())); - walletContract.setAvailableBalance(walletContract.getAvailableBalance().add(addMoney)); - walletContract.setTotalBalance(walletContract.getTotalBalance().add(addMoney)); - + memberWalletContractDao.increaseWalletContractBalanceById(addMoney, profitOrLoss.subtract(contractOrderEntity.getOpeningFeeAmount()), null, walletContract.getId()); // 计算佣金 ThreadPoolUtils.calReturnMoney(memberEntity.getId(), contractOrderEntity.getClosingFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_CLOSE); } diff --git a/src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java b/src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java index 401e7ac..a7e4e10 100644 --- a/src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java @@ -70,7 +70,7 @@ MemberQuickBuySaleVo memberQuickBuySaleVo = new MemberQuickBuySaleVo(); memberQuickBuySaleVo.setId(memberQuickBuySaleEntity.getId()); // 返回前台付款方式 - return Result.ok(memberQuickBuySaleVo); + return Result.ok("提交成功",memberQuickBuySaleVo); } @Override @@ -183,19 +183,6 @@ MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectByIdAndMemberId(member.getId(),id); memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER); memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity); - - // 判断是否存在足够余额 - MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(),CoinTypeEnum.USDT.toString()); - boolean flag = true; - while(flag) { - walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(memberQuickBuySaleEntity.getAmountUsdt())); - walletCoin.setFrozenBalance(walletCoin.getFrozenBalance().subtract(memberQuickBuySaleEntity.getAmountUsdt())); - int i = memberWalletCoinDao.updateById(walletCoin); - if(i>0) { - flag = false; - } - walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(),CoinTypeEnum.USDT.toString()); - } return Result.ok("成功"); } } diff --git a/src/main/resources/mapper/contract/ContractOrderDao.xml b/src/main/resources/mapper/contract/ContractOrderDao.xml index 9e08e1f..4ad5cbc 100644 --- a/src/main/resources/mapper/contract/ContractOrderDao.xml +++ b/src/main/resources/mapper/contract/ContractOrderDao.xml @@ -2,4 +2,14 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xcong.excoin.modules.contract.dao.ContractOrderDao"> + + <select id="selectContractOrderInPage" resultType="com.xcong.excoin.modules.contract.entity.ContractOrderEntity"> + select * from contract_order where member_id=#{memberId} + order by create_time desc + </select> + + <select id="selectOrderDetailByIdAndMemberId" resultType="com.xcong.excoin.modules.contract.entity.ContractOrderEntity"> + select * from contract_order where id=#{id} and member_id=#{memberId} + </select> + </mapper> \ No newline at end of file -- Gitblit v1.9.1