Helius
2020-06-03 def723a6fa9cbe05734afe9011a6f90d2fa32196
interface tiaozheng
13 files modified
1 files added
98 ■■■■ changed files
src/main/java/com/xcong/excoin/modules/contract/controller/ContractEntrustOrderController.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java 11 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/entity/ContractOrderEntity.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/parameter/dto/SymbolDto.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/ContractEntrustOrderService.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java 26 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java 6 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java 1 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/contract/ContractEntrustOrderDao.xml 8 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/contract/ContractHoldOrderDao.xml 8 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/controller/ContractEntrustOrderController.java
@@ -49,8 +49,8 @@
            @ApiResponse(code = 0, message = "success", response = ContractEntrustVo.class)
    })
    @GetMapping(value = "/findCurrentEntrustOrderList")
    public Result findCurrentEntrustOrderList() {
        return contractEntrustOrderService.findEntrustOrderList();
    public Result findCurrentEntrustOrderList(@ApiParam(name = "symbol", value = "币种",  example = "BTC/USDT") @RequestParam(value = "symbol", required = false) String symbol) {
        return contractEntrustOrderService.findEntrustOrderList(symbol);
    }
src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java
@@ -4,6 +4,7 @@
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.service.ContractHoldOrderService;
@@ -43,8 +44,8 @@
            @ApiResponse(code = 0, message = "success", response = HoldOrderListVo.class)
    })
    @GetMapping(value = "/findHoldOrderList")
    public Result findHoldOrderList() {
        return contractHoldOrderService.findHoldOrderList();
    public Result findHoldOrderList(@ApiParam(name = "symbol", value = "币种", required = true, example = "BTC/USDT") @RequestParam(value = "symbol", required = false) String symbol) {
        return contractHoldOrderService.findHoldOrderList(symbol);
    }
    @ApiOperation(value = "未完成--根据Id查询订单详情")
@@ -60,9 +61,9 @@
    }
    @ApiOperation(value = "一键平仓")
    @GetMapping(value = "/oneKeyClosing")
    public Result oneKeyClosing() {
        return contractHoldOrderService.cancelHoldOrderBatch();
    @PostMapping(value = "/oneKeyClosing")
    public Result oneKeyClosing(@RequestBody SymbolDto symbolDto) {
        return contractHoldOrderService.cancelHoldOrderBatch(symbolDto);
    }
    @ApiOperation(value = "设置止盈止损")
src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java
@@ -15,6 +15,8 @@
    public List<ContractEntrustOrderEntity> selectEntrustOrderListByMemberId(@Param("memberId") Long memberId);
    public List<ContractEntrustOrderEntity> selectEntrustOrderListByMemberIdAndSymbol(@Param("memberId") Long memberId, @Param("symbol") String symbol);
    public List<ContractEntrustOrderEntity> selectEntrustOrderListByIds(@Param("list") List<Long> list);
    public List<ContractEntrustOrderEntity> selectAllEntrustOrder();
src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java
@@ -36,6 +36,8 @@
    public List<ContractHoldOrderEntity> selectHoldOrderListByMemberId(@Param("memberId") Long memberId);
    public List<ContractHoldOrderEntity> selectHoldOrderListByMemberIdAndSymbol(@Param("memberId") Long memberId, @Param("symbol") String symbol);
    public ContractHoldOrderEntity selectHoldOrderByMemberIdAndId(@Param("memberId") Long memberId, @Param("id") Long id);
    public int updateHoldOrderIsCanClosingById(@Param("isCanClosing") int isCanClosing, @Param("id") Long id);
src/main/java/com/xcong/excoin/modules/contract/entity/ContractOrderEntity.java
@@ -159,6 +159,8 @@
     */
    private BigDecimal openingFeeAmount;
    private Date openingTime;
    /**
     * 预付款金额
     */
src/main/java/com/xcong/excoin/modules/contract/parameter/dto/SymbolDto.java
New file
@@ -0,0 +1,17 @@
package com.xcong.excoin.modules.contract.parameter.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author wzy
 * @date 2020-06-03
 **/
@Data
@ApiModel(value = "SymbolDto", description = "币种dto")
public class SymbolDto {
    @ApiModelProperty(value = "币种", example = "BTC/USDT")
    private String symbol;
}
src/main/java/com/xcong/excoin/modules/contract/service/ContractEntrustOrderService.java
@@ -14,7 +14,7 @@
    public Result addContractEntrustOrder(SubmitEntrustDto submitEntrustDto);
    public Result findEntrustOrderList();
    public Result findEntrustOrderList(String symbol);
    public Result cancelEntrustOrder(Long id);
src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java
@@ -6,6 +6,7 @@
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.rabbit.pricequeue.OrderModel;
import org.apache.ibatis.annotations.Param;
@@ -24,11 +25,11 @@
    public void updateOrderIsCanClosingAndBatchNoById(Long id);
    public Result findHoldOrderList();
    public Result findHoldOrderList(String symbol);
    public Result cancelHoldOrder(Long id);
    public Result cancelHoldOrderBatch();
    public Result cancelHoldOrderBatch(SymbolDto symbolDto);
    public Result setTargetProfitOrLess(ProfitOrLessDto profitOrLessDto);
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
@@ -149,9 +149,9 @@
    }
    @Override
    public Result findEntrustOrderList() {
    public Result findEntrustOrderList(String symbol) {
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        List<ContractEntrustOrderEntity> list = contractEntrustOrderDao.selectEntrustOrderListByMemberId(memberEntity.getId());
        List<ContractEntrustOrderEntity> list = contractEntrustOrderDao.selectEntrustOrderListByMemberIdAndSymbol(memberEntity.getId(), symbol);
        List<ContractEntrustVo> resultList = ContractEntrustOrderEntityMapper.INSTANCE.entityListToVoList(list);
        return Result.ok(resultList);
    }
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
@@ -19,6 +19,7 @@
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.service.ContractHoldOrderService;
@@ -189,19 +190,18 @@
    }
    @Override
    public Result findHoldOrderList() {
    public Result findHoldOrderList(String symbol) {
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectHoldOrderListByMemberId(memberEntity.getId());
        List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbol);
        if (CollUtil.isNotEmpty(list)) {
            BigDecimal totalProfitOrLoss = BigDecimal.ZERO;
            List<HoldOrderListVo> resultList = new ArrayList<>();
            for (ContractHoldOrderEntity holdOrderEntity : list) {
                HoldOrderListVo holdOrderListVo = ContractHoldOrderEntityMapper.INSTANCE.holdOrderToDto(holdOrderEntity);
                String symbol = holdOrderEntity.getSymbol();
                // 获取最新价
                BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(symbol)));
                BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(symbol);
                BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol())));
                BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(holdOrderEntity.getSymbol());
                // 盈亏
                BigDecimal rewardRatio = BigDecimal.ZERO;
                // 开多
@@ -275,9 +275,9 @@
    }
    @Override
    public Result cancelHoldOrderBatch() {
    public Result cancelHoldOrderBatch(SymbolDto symbolDto) {
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListByMemberId(memberEntity.getId());
        List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbolDto.getSymbol());
        if (CollUtil.isEmpty(holdOrderEntities)) {
            return Result.fail("订单不存在");
        }
@@ -287,8 +287,7 @@
            contractHoldOrderDao.updateHoldOrderIsCanClosingById(ContractHoldOrderEntity.ORDER_CAN_CLOSING_N, holdOrderEntity.getId());
            ids.add(holdOrderEntity.getId());
        }
        ;
        producer.sendCloseTrade(JSONObject.toJSONString(ids));
//        producer.sendCloseTrade(JSONObject.toJSONString(ids));
        return Result.ok("平仓成功");
    }
@@ -447,8 +446,7 @@
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        PlatformTradeSettingEntity tradeSetting = cacheSettingUtils.getTradeSetting();
        // 获取最新价
        BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(symbol)));
        BigDecimal newPriceSymbol = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(symbol)));
        // 当前合约委托单
        List<ContractEntrustOrderEntity> entrustOrderEntities = contractEntrustOrderDao.selectEntrustOrderListByMemberId(memberEntity.getId());
@@ -469,8 +467,10 @@
        // 总盈利
        BigDecimal totalProfitOrLess = BigDecimal.ZERO;
        if (CollUtil.isNotEmpty(holdOrderEntities)) {
            BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(symbol);
            for (ContractHoldOrderEntity holdOrderEntity : holdOrderEntities) {
                // 获取最新价
                BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol())));
                BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(holdOrderEntity.getSymbol());
                beUsedBondAmount = beUsedBondAmount.add(holdOrderEntity.getBondAmount());
                // 单个订单盈利
@@ -509,7 +509,7 @@
        contractMoneyInfoVo.setEquity(equity);
        contractMoneyInfoVo.setFeeRatio(tradeSetting.getFeeRatio());
        contractMoneyInfoVo.setLeverAgeRatio(tradeSetting.getLeverageRatio());
        contractMoneyInfoVo.setNewPrice(newPrice);
        contractMoneyInfoVo.setNewPrice(newPriceSymbol);
        contractMoneyInfoVo.setSymbolSku(cacheSettingUtils.getSymbolSku(symbol));
        contractMoneyInfoVo.setLeverRate(rateEntity.getLevelRateUp());
        return Result.ok(contractMoneyInfoVo);
src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java
@@ -532,10 +532,14 @@
                contractHoldOrderEntity.setForceClosingPrice(forceSetPrice);
                contractHoldOrderEntity.setLeverRatio(coinsCoinsOrder.getLeverRatio());
                contractHoldOrderEntity.setOpeningPrice(entrustPrice);
                contractHoldOrderEntity.setTradeType(ContractHoldOrderEntity.TRADE_TYPE_LIMIT);
                contractHoldOrderService.save(contractHoldOrderEntity);
                // 需要一个历史插入
                ContractOrderEntity contractOrderEntity = ContractHoldOrderEntityMapper.INSTANCE.holdOrderToOrder(contractHoldOrderEntity);
                contractOrderEntity.setEntrustOpeningPrice(coinsCoinsOrder.getEntrustPrice());
                contractOrderEntity.setEntrustTime(coinsCoinsOrder.getCreateTime());
                contractOrderEntity.setOpeningTime(new Date());
                contractOrderEntity.setId(null);
                contractOrderService.save(contractOrderEntity);
                // 发送爆仓的队列
@@ -551,7 +555,7 @@
                }
                // 扣除手续费
                BigDecimal totalBalance = wallet.getTotalBalance().subtract(openFeePrice);
                contractEntrustOrderService.removeById(coinsCoinsOrder.getId());
                memberWalletContractService.increaseWalletContractBalanceById(null, totalBalance, null, wallet.getId());
                // TODO 531 待写
                calYj(memId, openFeePrice, contractOrderEntity, 1);
src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java
@@ -50,7 +50,6 @@
        if (CollectionUtils.isNotEmpty(holdOrderEntities)) {
            for (ContractHoldOrderEntity order : holdOrderEntities) {
                log.info("---->>>{}", order.getSymbol());
                // 开多1,开空 2
                int openingType = order.getOpeningType();
                // 1:买入委托2:开多3:开空4:平多5:平空6:爆仓平多7:爆仓平空
src/main/resources/mapper/contract/ContractEntrustOrderDao.xml
@@ -11,6 +11,14 @@
        select * from contract_entrust_order
        where member_id=#{memberId}
    </select>
    <select id="selectEntrustOrderListByMemberIdAndSymbol" resultType="com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity">
        select * from contract_entrust_order
        where member_id=#{memberId}
        <if test="symbol != null and symbol !=''">
            and symbol=#{symbol}
        </if>
    </select>
    <select id="selectEntrustOrderListByIds" resultType="com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity">
        select * from contract_entrust_order
        where id in
src/main/resources/mapper/contract/ContractHoldOrderDao.xml
@@ -24,6 +24,14 @@
        select * from contract_hold_order where member_id=#{memberId} and is_can_closing=1 order by create_time desc
    </select>
    <select id="selectHoldOrderListByMemberIdAndSymbol" resultType="com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity">
        select * from contract_hold_order where member_id=#{memberId}
        <if test="symbol!=null and symbol!=''">
            and symbol=#{symbol}
        </if>
        and is_can_closing=1
    </select>
    <select id="selectHoldOrderByMemberIdAndId" resultType="com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity">
        select * from contract_hold_order where member_id=#{memberId} and id=#{id}
    </select>