From c37571bb10f4e6343cd74eea4c11ab3f39f72586 Mon Sep 17 00:00:00 2001 From: gao <gaoleox@163> Date: Thu, 11 Jun 2020 19:14:13 +0800 Subject: [PATCH] 当前持仓 --- src/main/java/com/xcong/excoin/modules/trademanage/entity/ContractHoldOrderEntity.java | 150 +++++++++++++++++++++ src/main/java/com/xcong/excoin/modules/trademanage/service/impl/ContractHoldOrderServiceImpl.java | 28 ++++ src/main/java/com/xcong/excoin/modules/trademanage/service/ContractHoldOrderService.java | 15 ++ src/main/resources/templates/febs/views/modules/trademanage/contractHoldOrder.html | 105 +++++++++++++++ src/main/resources/mapper/modules/contract/ContractHoldOrderDao.xml | 48 ++++++ src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractHoldOrderEntityMapper.java | 20 ++ src/main/java/com/xcong/excoin/modules/trademanage/controller/ContractHoldOrderController.java | 38 +++++ 7 files changed, 404 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/controller/ContractHoldOrderController.java b/src/main/java/com/xcong/excoin/modules/trademanage/controller/ContractHoldOrderController.java new file mode 100644 index 0000000..36b5e95 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/trademanage/controller/ContractHoldOrderController.java @@ -0,0 +1,38 @@ +package com.xcong.excoin.modules.trademanage.controller; + +import java.util.Map; + +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.xcong.excoin.common.controller.BaseController; +import com.xcong.excoin.common.entity.FebsResponse; +import com.xcong.excoin.common.entity.QueryRequest; +import com.xcong.excoin.modules.trademanage.entity.ContractHoldOrderEntity; +import com.xcong.excoin.modules.trademanage.service.ContractHoldOrderService; + +import lombok.RequiredArgsConstructor; + +/** + * 当前持仓订单列表 + */ +@Validated +@RestController +@RequiredArgsConstructor +@RequestMapping(value = "/contractHoldOrder") +public class ContractHoldOrderController extends BaseController{ + + private final ContractHoldOrderService contractHoldOrderService; + + @GetMapping("getList") + public FebsResponse getList(ContractHoldOrderEntity contractHoldOrderEntity, QueryRequest request) { + IPage<ContractHoldOrderEntity> findMemberListInPage = contractHoldOrderService.findContractHoldOrderListInPage(contractHoldOrderEntity, request); + Map<String, Object> data = getDataTable(findMemberListInPage); + return new FebsResponse().success().data(data); + } + + +} diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/entity/ContractHoldOrderEntity.java b/src/main/java/com/xcong/excoin/modules/trademanage/entity/ContractHoldOrderEntity.java new file mode 100644 index 0000000..4257bd7 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/trademanage/entity/ContractHoldOrderEntity.java @@ -0,0 +1,150 @@ +package com.xcong.excoin.modules.trademanage.entity; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.xcong.excoin.common.entity.BaseEntity; + +import lombok.Data; + +/** + * 合约持仓订单表 + * + * @author wzy + * @date 2020-05-27 + **/ +@Data +@TableName("contract_hold_order") +public class ContractHoldOrderEntity extends BaseEntity { + + /** + * 是否可平仓 1-是 + */ + public static final int ORDER_CAN_CLOSING_Y = 1; + /** + * 是否可平仓 0-否 + */ + public static final int ORDER_CAN_CLOSING_N = 0; + + /** + * 开多 + */ + public static final int OPENING_TYPE_MORE = 1; + + /** + * 开空 + */ + public static final int OPENING_TYPE_LESS = 2; + + /** + * 交易类型 市价 + */ + public static final int TRADE_TYPE_MARK = 1; + + /** + * 交易类型 限价 + */ + public static final int TRADE_TYPE_LIMIT = 2; + + /** + * 会员Id + */ + private Long memberId; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 仓位类型 1-逐仓 2-全仓 + */ + private int positionType; + + /** + * 交易类型 1-市价 2-限价 + */ + private int tradeType; + + /** + * 币种 + */ + private String symbol; + + /** + * 手数 + */ + private int symbolCnt; + + /** + * 可平张数(仅全仓模式) + */ + private int symbolCntSale; + + /** + * 币种规格 + */ + private BigDecimal symbolSku; + + /** + * 开仓价 + */ + private BigDecimal openingPrice; + + /** + * 开仓类型 1-开多 2-开空 + */ + private int openingType; + + /** + * 开仓手续费 + */ + private BigDecimal openingFeeAmount; + + /** + * 保证金 + */ + private BigDecimal bondAmount; + + /** + * 杠杆倍率 + */ + private int leverRatio; + + /** + * 市场价 + */ + private BigDecimal markPrice; + + /** + * 止损价 + */ + private BigDecimal stopLossPrice; + + /** + * 止盈价 + */ + private BigDecimal stopProfitPrice; + + /** + * 预付款金额 + */ + private BigDecimal prePaymentAmount; + + /** + * 预估强平价 + */ + private BigDecimal forceClosingPrice; + + private int operateNo; + + /** + * 是否可平仓 0-否 1-是 + */ + private int isCanClosing; + + /** + * 批次号 队列平仓时使用,避免重复 + */ + public String batchNo; +} diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractHoldOrderEntityMapper.java b/src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractHoldOrderEntityMapper.java new file mode 100644 index 0000000..9e1120f --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractHoldOrderEntityMapper.java @@ -0,0 +1,20 @@ +package com.xcong.excoin.modules.trademanage.mapper; + +import org.apache.ibatis.annotations.Param; +import org.mapstruct.Mapper; + +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.trademanage.entity.ContractHoldOrderEntity; + +/** + * @author wzy + * @date 2020-05-31 + **/ +@Mapper +public interface ContractHoldOrderEntityMapper extends BaseMapper<ContractHoldOrderEntity> { + + IPage<ContractHoldOrderEntity> selectContractHoldOrderListInPage(Page<ContractHoldOrderEntity> page, + @Param("record") ContractHoldOrderEntity contractHoldOrderEntity); +} diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/service/ContractHoldOrderService.java b/src/main/java/com/xcong/excoin/modules/trademanage/service/ContractHoldOrderService.java new file mode 100644 index 0000000..f09ab25 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/trademanage/service/ContractHoldOrderService.java @@ -0,0 +1,15 @@ +package com.xcong.excoin.modules.trademanage.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.xcong.excoin.common.entity.QueryRequest; +import com.xcong.excoin.modules.trademanage.entity.ContractHoldOrderEntity; + +/** + * @author helius + */ +public interface ContractHoldOrderService extends IService<ContractHoldOrderEntity> { + + IPage<ContractHoldOrderEntity> findContractHoldOrderListInPage(ContractHoldOrderEntity contractHoldOrderEntity, QueryRequest request); + +} diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/ContractHoldOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/ContractHoldOrderServiceImpl.java new file mode 100644 index 0000000..87c55ad --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/ContractHoldOrderServiceImpl.java @@ -0,0 +1,28 @@ +package com.xcong.excoin.modules.trademanage.service.impl; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +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.entity.QueryRequest; +import com.xcong.excoin.modules.trademanage.entity.ContractHoldOrderEntity; +import com.xcong.excoin.modules.trademanage.mapper.ContractHoldOrderEntityMapper; +import com.xcong.excoin.modules.trademanage.service.ContractHoldOrderService; + +@Service +public class ContractHoldOrderServiceImpl extends ServiceImpl<ContractHoldOrderEntityMapper, ContractHoldOrderEntity> implements ContractHoldOrderService{ + + @Resource + ContractHoldOrderEntityMapper contractHoldOrderEntityMapper; + + @Override + public IPage<ContractHoldOrderEntity> findContractHoldOrderListInPage( + ContractHoldOrderEntity contractHoldOrderEntity, QueryRequest request) { + Page<ContractHoldOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); + return this.baseMapper.selectContractHoldOrderListInPage(page, contractHoldOrderEntity); + } + +} diff --git a/src/main/resources/mapper/modules/contract/ContractHoldOrderDao.xml b/src/main/resources/mapper/modules/contract/ContractHoldOrderDao.xml new file mode 100644 index 0000000..3572e89 --- /dev/null +++ b/src/main/resources/mapper/modules/contract/ContractHoldOrderDao.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!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.ContractHoldOrderDao"> + + <update id="updateContractHoldOrderCanNotClosingByIds" parameterType="map"> + UPDATE contract_hold_order set is_can_closing = 0,batch_no=#{batchNo} + where is_can_closing=1 + and id in + <foreach collection="list" close=")" item="item" open="(" separator=","> + #{item.orderId} + </foreach> + </update> + + <select id="selectContractHoldOrderByBatchNo" parameterType="string" resultType="com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity"> + select * from contract_hold_order where batch_no=#{batchNo} + </select> + + <update id="updateOrderIsCanClosingAndBatchNoById" parameterType="long"> + update contract_hold_order set is_can_closing = 1 ,batch_no=null + where id=#{id} + </update> + + <select id="selectHoldOrderListByMemberId" resultType="com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity"> + 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 + order by create_time desc + </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> + + <update id="updateHoldOrderIsCanClosingById"> + update contract_hold_order set is_can_closing=#{isCanClosing} + where id=#{id} + </update> + + <select id="selectAllHoldOrder" resultType="com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity"> + select * from contract_hold_order + </select> +</mapper> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/trademanage/contractHoldOrder.html b/src/main/resources/templates/febs/views/modules/trademanage/contractHoldOrder.html new file mode 100644 index 0000000..151cf48 --- /dev/null +++ b/src/main/resources/templates/febs/views/modules/trademanage/contractHoldOrder.html @@ -0,0 +1,105 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-user" lay-title="当前持仓"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" lay-filter="user-table-form"> + <div class="layui-row"> + <div class="layui-col-md10"> + <div class="layui-form-item"> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">用户名</label> + <div class="layui-input-inline"> + <input type="text" name="username" autocomplete="off" class="layui-input"> + </div> + </div> + </div> + </div> + <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary table-action action-more" + shiro:hasAnyPermissions="user:add,user:update,user:password:reset,user:export"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> + <table lay-filter="contractHoldOrderTable" lay-data="{id: 'contractHoldOrderTable'}"></table> + </div> + </div> + </div> + </div> +</div> +<script type="text/html" id="user-option"> + <span shiro:lacksPermission="user:view,user:update,user:delete"> + <span class="layui-badge-dot febs-bg-orange"></span> 无权限 + </span> + <a lay-event="detail" shiro:hasPermission="user:view"><i + class="layui-icon febs-edit-area febs-green"></i></a> + <a lay-event="edit" shiro:hasPermission="user:update"><i + class="layui-icon febs-edit-area febs-blue"></i></a> + <a lay-event="del" shiro:hasPermission="user:delete"><i class="layui-icon febs-edit-area febs-red"></i></a> +</script> +<script data-th-inline="none" type="text/javascript"> + layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect'], function () { + var $ = layui.jquery, + laydate = layui.laydate, + febs = layui.febs, + form = layui.form, + table = layui.table, + treeSelect = layui.treeSelect, + dropdown = layui.dropdown, + $view = $('#febs-user'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + $searchForm = $view.find('form'), + sortObject = {field: 'createTime', type: null}, + tableIns, + createTimeFrom, + createTimeTo; + + form.render(); + + initTable(); + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'contractHoldOrderTable', + url: ctx + 'contractHoldOrder/getList', + cols: [[ + {type: 'checkbox'}, + {field: 'memberId', title: 'uId', minWidth: 100}, + {field: 'memberId', title: '用户账号', minWidth: 100}, + {field: 'symbol', title: '币种', minWidth: 100}, + {field: 'tradeType', title: '建仓类型', minWidth: 100}, + {field: 'openingPrice', title: '建仓价格', minWidth: 100}, + {field: 'symbolCnt', title: '建仓张数', minWidth: 100} + ]] + }); + } + + /* function getQueryParams() { + var createTime = $searchForm.find('input[name="createTime"]').val(); + if (createTime) { + createTimeFrom = createTime.split(' - ')[0]; + createTimeTo = createTime.split(' - ')[1]; + } + return { + createTimeFrom: createTimeFrom, + createTimeTo: createTimeTo, + username: $searchForm.find('input[name="username"]').val().trim(), + status: $searchForm.find("select[name='status']").val(), + sex: $searchForm.find("select[name='sex']").val(), + mobile: $searchForm.find("input[name='mobile']").val().trim(), + deptId: $searchForm.find("input[name='dept']").val().trim(), + invalidate_ie_cache: new Date() + }; + } */ + }) +</script> \ No newline at end of file -- Gitblit v1.9.1