src/main/java/com/xcong/excoin/modules/trademanage/controller/ContractHoldOrderController.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/modules/trademanage/entity/ContractHoldOrderEntity.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractHoldOrderEntityMapper.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/modules/trademanage/service/ContractHoldOrderService.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/modules/trademanage/service/impl/ContractHoldOrderServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/resources/mapper/modules/contract/ContractHoldOrderDao.xml | ●●●●● patch | view | raw | blame | history | |
src/main/resources/templates/febs/views/modules/trademanage/contractHoldOrder.html | ●●●●● patch | view | raw | blame | history |
src/main/java/com/xcong/excoin/modules/trademanage/controller/ContractHoldOrderController.java
New file @@ -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); } } src/main/java/com/xcong/excoin/modules/trademanage/entity/ContractHoldOrderEntity.java
New file @@ -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; } src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractHoldOrderEntityMapper.java
New file @@ -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); } src/main/java/com/xcong/excoin/modules/trademanage/service/ContractHoldOrderService.java
New file @@ -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); } src/main/java/com/xcong/excoin/modules/trademanage/service/impl/ContractHoldOrderServiceImpl.java
New file @@ -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); } } src/main/resources/mapper/modules/contract/ContractHoldOrderDao.xml
New file @@ -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> src/main/resources/templates/febs/views/modules/trademanage/contractHoldOrder.html
New file @@ -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>