src/main/java/com/xcong/excoin/modules/trademanage/controller/TradeManageController.java
@@ -43,6 +43,14 @@ Map<String, Object> data = getDataTable(tradeManageService.findContractHoldOrderAloneInPage(contractHoldOrderEntity, request)); return new FebsResponse().success().data(data); } /** * 当前持仓---列表Test */ @GetMapping("contractHoldOrderAloneTest") public FebsResponse contractHoldOrderAloneTest(ContractHoldOrderEntity contractHoldOrderEntity, QueryRequest request) { Map<String, Object> data = getDataTable(tradeManageService.findContractHoldOrderAloneTestInPage(contractHoldOrderEntity, request)); return new FebsResponse().success().data(data); } /** * 账户信息---列表 src/main/java/com/xcong/excoin/modules/trademanage/controller/ViewController.java
@@ -34,6 +34,15 @@ } /** * 当前持仓---Test */ @GetMapping("contractHoldOrderAloneTest") @RequiresPermissions("contractHoldOrderAloneTest:view") public String contractHoldOrderAloneTest() { return FebsUtil.view("modules/trademanage/contractHoldOrderAloneTest"); } /** * 账户信息 * @return */ src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractHoldOrderEntityMapper.java
@@ -13,5 +13,8 @@ IPage<ContractHoldOrderEntity> findContractHoldOrderAloneInPage(Page<ContractHoldOrderEntity> page, @Param("record") ContractHoldOrderEntity contractHoldOrderEntity); IPage<ContractHoldOrderEntity> findContractHoldOrderAloneTestInPage(Page<ContractHoldOrderEntity> page, @Param("record")ContractHoldOrderEntity contractHoldOrderEntity); } src/main/java/com/xcong/excoin/modules/trademanage/service/TradeManageService.java
@@ -37,4 +37,7 @@ IPage<MemberAccountInfoVo> findmemberAccountInfoAloneListInPage(MemberEntity memberEntity, QueryRequest request); IPage<ContractHoldOrderEntity> findContractHoldOrderAloneTestInPage(ContractHoldOrderEntity contractHoldOrderEntity, QueryRequest request); } src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java
@@ -307,6 +307,61 @@ } return selectMemberListInPage; } @Override public IPage<ContractHoldOrderEntity> findContractHoldOrderAloneTestInPage( ContractHoldOrderEntity contractHoldOrderEntity, QueryRequest request) { Page<ContractHoldOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); IPage<ContractHoldOrderEntity> findMemberAccountInfoListInPage = contractHoldOrderEntityMapper.findContractHoldOrderAloneTestInPage(page, contractHoldOrderEntity); List<ContractHoldOrderEntity> records = findMemberAccountInfoListInPage.getRecords(); if (records != null) { for (ContractHoldOrderEntity holdOrderEntity : records) { Long memberId = holdOrderEntity.getMemberId(); Map<String, Object> columnMap = new HashMap<>(); columnMap.put("member_id", memberId); List<MemberAuthenticationEntity> selectByMap = memberAuthenticationMapper.selectByMap(columnMap ); if(selectByMap != null && selectByMap.size() > 0) { MemberAuthenticationEntity memberAuthenticationEntity = selectByMap.get(0); String firstName = memberAuthenticationEntity.getFirstName(); String secondName = memberAuthenticationEntity.getSecondName(); String realName = firstName + secondName; holdOrderEntity.setRealName(realName); } MemberEntity selectById = memberMapper.selectById(holdOrderEntity.getMemberId()); // 获取最新价 BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol()))); BigDecimal lotNumber = holdOrderEntity.getSymbolSku(); // 盈亏 BigDecimal rewardRatio = BigDecimal.ZERO; // 开多 if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) { // (最新价-开仓价)*规格*张数 rewardRatio = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(lotNumber).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt())); // 开空 } else { // (开仓价-最新价)*规格*张数 rewardRatio = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(lotNumber).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt())); } if (selectById.getIsProfit() == MemberEntity.IS_PROFIT_Y) { String selectTradeSetting = memberMapper.selectTradeSetting(); BigDecimal profitParam=new BigDecimal(selectTradeSetting); if (rewardRatio.compareTo(BigDecimal.ZERO) > -1) { rewardRatio = rewardRatio.multiply(BigDecimal.ONE.subtract(profitParam)); } else { rewardRatio = rewardRatio.multiply(BigDecimal.ONE.add(profitParam)); } } holdOrderEntity.setRewardRatio(rewardRatio); } } return findMemberAccountInfoListInPage; } src/main/resources/mapper/modules/ContractHoldOrderEntityMapper.xml
@@ -45,5 +45,25 @@ </where> ORDER BY s.create_time DESC </select> <select id="findContractHoldOrderAloneTestInPage" resultType="com.xcong.excoin.modules.trademanage.entity.ContractHoldOrderEntity"> SELECT * FROM contract_hold_order s LEFT JOIN member m ON m.id = s.member_id <where> (s.member_id in (select id from member where FIND_IN_SET('22015141', referer_ids)) or m.id = 10) <if test="record != null" > <if test="record.account!=null and record.account!=''"> and (m.phone = #{record.account} or m.email = #{record.account} or m.invite_id=#{record.account}) </if> <if test="record.isTest!=null and record.isTest!=''"> and m.account_type= #{record.isTest} </if> </if> </where> ORDER BY s.create_time DESC </select> </mapper> src/main/resources/templates/febs/views/modules/trademanage/contractHoldOrderAloneTest.html
New file @@ -0,0 +1,143 @@ <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"> <div class="layui-input-inline"> <input type="text" placeholder="手机号/邮箱/邀请码" name="account" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-inline"> <label class="layui-form-label layui-form-label-sm">账号类型</label> <div class="layui-input-inline"> <select name="isTest"> <option value=""></option> <option value="1">正常账号</option> <option value="2">测试账号</option> </select> </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> </div> </form> <table lay-filter="userTable" lay-data="{id: 'userTable'}"></table> </div> </div> </div> </div> </div> <!-- 表格操作栏 end --> <script data-th-inline="none" type="text/javascript"> // 引入组件并初始化 layui.use(['jquery', 'form', 'table', 'febs'], function () { var $ = layui.jquery, febs = layui.febs, form = layui.form, table = layui.table, $view = $('#febs-user'), $query = $view.find('#query'), $reset = $view.find('#reset'), $searchForm = $view.find('form'), sortObject = {field: 'createTime', type: null}, tableIns; form.render(); // 表格初始化 initTable(); // 查询按钮 $query.on('click', function () { var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); tableIns.reload({where: params, page: {curr: 1}}); }); // 刷新按钮 $reset.on('click', function () { $searchForm[0].reset(); sortObject.type = 'null'; tableIns.reload({where: getQueryParams(), page: {curr: 1}}); }); function initTable() { tableIns = febs.table.init({ elem: $view.find('table'), id: 'userTable', url: ctx + 'tradeManage/contractHoldOrderAloneTest', totalRow: true, cols: [[ {field: 'phone', title: '手机号', minWidth: 100,align:'left'}, {field: 'realName', title: '姓名', minWidth: 120,align:'left'}, {field: 'forceClosingPrice', title: '预估强平价', minWidth: 120,align:'center'}, {field: 'openingType', title: '开仓类型', templet: function (d) { if (d.openingType === 1) { return '<span style="color:green;">开多</span>' }else { return '<span style="color:red;">开空</span>' } }, minWidth: 100,align:'center'}, {field: 'tradeType', title: '交易类型', templet: function (d) { if (d.tradeType === 1) { return '<span style="color:green;">市价</span>' }else { return '<span style="color:red;">限价</span>' } }, minWidth: 100,align:'center'}, {field: 'symbol', title: '币种', minWidth: 100,align:'center'}, {field: 'symbolCnt', title: '手数', minWidth: 80,align:'center'}, {field: 'rewardRatio', title: '实时盈亏', templet: function (d) { if (d.rewardRatio > 0) { return '<span style="color:green;">' + d.rewardRatio + '</span>' }else { return '<span style="color:red;">' + d.rewardRatio + '</span>' } },minWidth: 120,align:'center',totalRow: true}, {field: 'openingPrice', title: '开仓价', minWidth: 100,align:'center'}, {field: 'openingFeeAmount', title: '开仓手续费', minWidth: 120,align:'center',totalRow: true}, {field: 'bondAmount', title: '保证金', minWidth: 120,align:'center'}, {field: 'prePaymentAmount', title: '预付款金额', minWidth: 120,align:'center'}, {field: 'leverRatio', title: '杠杆倍率', minWidth: 120,align:'center'}, {field: 'stopLossPrice', title: '止损价', minWidth: 120,align:'center'}, {field: 'stopProfitPrice', title: '止盈价', minWidth: 120,align:'center'}, {field: 'inviteId', title: '邀请码UID', minWidth: 120,align:'center'}, {field: 'orderNo', title: '订单编号', minWidth: 200,align:'center'}, {field: 'accountType', title: '账号类型', templet: function (d) { if (d.accountType === 2) { return '<span style="color:red;">测试账号</span>' } else { return '<span style="color:green;">正常账号</span>' } },minWidth: 100,align:'center'}, {field: 'email', title: '邮箱', minWidth: 200,align:'left'}, ]] }); } // 获取查询参数 function getQueryParams() { return { account: $searchForm.find('input[name="account"]').val().trim(), isTest: $searchForm.find("select[name='isTest']").val(), }; } }) </script>