From 50b2901ecf5aa6ec3823265a51397a37ade2f0d7 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 22 Mar 2021 14:13:35 +0800
Subject: [PATCH] 20210319 平仓加载中
---
src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java | 9 +
src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractOrderMapper.java | 10 +
src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java | 53 +++++++
src/main/java/com/xcong/excoin/modules/trademanage/vo/PositionSettingVo.java | 49 +++++++
src/main/resources/mapper/modules/ContractOrderMapper.xml | 66 +++++++++
src/main/resources/templates/febs/views/modules/trademanage/positionSetting.html | 159 ++++++++++++++++++++++
src/main/java/com/xcong/excoin/modules/trademanage/controller/TradeManageController.java | 35 +++++
src/main/java/com/xcong/excoin/modules/trademanage/service/TradeManageService.java | 10 +
src/main/java/com/xcong/excoin/modules/trademanage/controller/ViewController.java | 10 +
9 files changed, 400 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java
index f6a93e7..35cce4e 100644
--- a/src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java
@@ -149,6 +149,13 @@
* 是否是交易员1是2否
*/
private Integer isTrader;
+
+ /**
+ * 是否可平仓 1:否 0:是
+ */
+ private Integer pcState;
+ public static final int PCSTATE_Y = 0;
+ public static final int PCSTATE_N = 1;
/**
* 是否设置预估强平价系数 0-否1-是
@@ -157,6 +164,8 @@
@TableField(exist = false)
private String account;
+ @TableField(exist = false)
+ private String accounts;
@TableField(exist = false)
private String firstName;
diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/controller/TradeManageController.java b/src/main/java/com/xcong/excoin/modules/trademanage/controller/TradeManageController.java
index c408f1b..cb70597 100644
--- a/src/main/java/com/xcong/excoin/modules/trademanage/controller/TradeManageController.java
+++ b/src/main/java/com/xcong/excoin/modules/trademanage/controller/TradeManageController.java
@@ -2,11 +2,15 @@
import java.util.Map;
+import javax.validation.constraints.NotNull;
+
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import com.xcong.excoin.common.annotation.ControllerEndpoint;
import com.xcong.excoin.common.controller.BaseController;
import com.xcong.excoin.common.entity.FebsResponse;
import com.xcong.excoin.common.entity.QueryRequest;
@@ -26,6 +30,37 @@
public class TradeManageController extends BaseController{
private final TradeManageService tradeManageService;
+
+ /**
+ * 持仓设置---列表
+ */
+ @GetMapping("positionSetting")
+ public FebsResponse getPositionSettingList(MemberEntity memberEntity, QueryRequest request) {
+ Map<String, Object> data = getDataTable(tradeManageService.getPositionSettingList(memberEntity, request));
+ return new FebsResponse().success().data(data);
+ }
+
+ /**
+ * 持仓设置---禁止
+ * @param id
+ * @return
+ */
+ @GetMapping("disagreePositionSetting/{id}")
+ @ControllerEndpoint(operation = "持仓设置---禁止", exceptionMessage = "禁止失败")
+ public FebsResponse disagreePositionSetting(@NotNull(message = "{required}") @PathVariable Long id) {
+ return tradeManageService.disagreePositionSetting(id);
+ }
+
+ /**
+ * 持仓设置---开启
+ * @param id
+ * @return
+ */
+ @GetMapping("agreePositionSetting/{id}")
+ @ControllerEndpoint(operation = "持仓设置---开启", exceptionMessage = "开启失败")
+ public FebsResponse agreePositionSetting(@NotNull(message = "{required}") @PathVariable Long id) {
+ return tradeManageService.agreePositionSetting(id);
+ }
/**
* 历史委托明细---列表---17773261001
diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/controller/ViewController.java b/src/main/java/com/xcong/excoin/modules/trademanage/controller/ViewController.java
index 27f0b10..277c9ae 100644
--- a/src/main/java/com/xcong/excoin/modules/trademanage/controller/ViewController.java
+++ b/src/main/java/com/xcong/excoin/modules/trademanage/controller/ViewController.java
@@ -16,6 +16,16 @@
public class ViewController {
/**
+ * 持仓设置---列表
+ * @return
+ */
+ @GetMapping("positionSetting")
+ @RequiresPermissions("positionSetting:view")
+ public String positionSetting() {
+ return FebsUtil.view("modules/trademanage/positionSetting");
+ }
+
+ /**
* 历史委托明细---17773261001
* @return
*/
diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractOrderMapper.java b/src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractOrderMapper.java
index 727f425..72f0873 100644
--- a/src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractOrderMapper.java
+++ b/src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractOrderMapper.java
@@ -1,11 +1,15 @@
package com.xcong.excoin.modules.trademanage.mapper;
+import java.math.BigDecimal;
+
import org.apache.ibatis.annotations.Param;
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.member.entity.MemberEntity;
import com.xcong.excoin.modules.trademanage.entity.ContractOrderEntity;
+import com.xcong.excoin.modules.trademanage.vo.PositionSettingVo;
public interface ContractOrderMapper extends BaseMapper<ContractOrderEntity> {
@@ -33,4 +37,10 @@
IPage<ContractOrderEntity> findHistoryOrderInfoAloneAllInPage(Page<ContractOrderEntity> page,
@Param("record")ContractOrderEntity contractOrderEntity);
+ IPage<PositionSettingVo> getPositionSettingList(Page<PositionSettingVo> page, @Param("record")MemberEntity memberEntity);
+
+ IPage<PositionSettingVo> getPositionSettingsList(Page<PositionSettingVo> page, @Param("record")MemberEntity memberEntity);
+
+ BigDecimal selectRewardAmountBymemberId(@Param("memberId")Long memberId);
+
}
diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/service/TradeManageService.java b/src/main/java/com/xcong/excoin/modules/trademanage/service/TradeManageService.java
index 5cbf6b8..e1c201f 100644
--- a/src/main/java/com/xcong/excoin/modules/trademanage/service/TradeManageService.java
+++ b/src/main/java/com/xcong/excoin/modules/trademanage/service/TradeManageService.java
@@ -1,7 +1,10 @@
package com.xcong.excoin.modules.trademanage.service;
+import javax.validation.constraints.NotNull;
+
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.xcong.excoin.common.entity.FebsResponse;
import com.xcong.excoin.common.entity.QueryRequest;
import com.xcong.excoin.modules.member.entity.MemberAccountMoneyChangeEntity;
import com.xcong.excoin.modules.member.entity.MemberEntity;
@@ -9,6 +12,7 @@
import com.xcong.excoin.modules.trademanage.entity.ContractHoldOrderEntity;
import com.xcong.excoin.modules.trademanage.entity.ContractOrderEntity;
import com.xcong.excoin.modules.trademanage.vo.MemberAccountInfoVo;
+import com.xcong.excoin.modules.trademanage.vo.PositionSettingVo;
/**
* @author helius
@@ -85,4 +89,10 @@
IPage<ContractOrderEntity> findHistoryOrderInfoAloneAllInPage(ContractOrderEntity contractOrderEntity, QueryRequest request);
+ IPage<PositionSettingVo> getPositionSettingList(MemberEntity memberEntity, QueryRequest request);
+
+ FebsResponse disagreePositionSetting(@NotNull(message = "{required}") Long id);
+
+ FebsResponse agreePositionSetting(@NotNull(message = "{required}") Long id);
+
}
diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java b/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java
index 1be5517..0d25b6e 100644
--- a/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java
@@ -6,11 +6,17 @@
import java.util.List;
import java.util.Map;
-import org.springframework.stereotype.Service;
+import javax.validation.constraints.NotNull;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.FebsResponse;
import com.xcong.excoin.common.entity.QueryRequest;
import com.xcong.excoin.common.utils.CoinTypeConvert;
import com.xcong.excoin.common.utils.RedisUtils;
@@ -30,9 +36,11 @@
import com.xcong.excoin.modules.trademanage.mapper.MemberWalletAgentMapper;
import com.xcong.excoin.modules.trademanage.service.TradeManageService;
import com.xcong.excoin.modules.trademanage.vo.MemberAccountInfoVo;
+import com.xcong.excoin.modules.trademanage.vo.PositionSettingVo;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor;
@Service
@@ -1162,6 +1170,49 @@
}
return findMemberAccountInfoListInPage;
}
+
+ @Override
+ public IPage<PositionSettingVo> getPositionSettingList(MemberEntity memberEntity, QueryRequest request) {
+
+ Page<PositionSettingVo> page = new Page<>(request.getPageNum(), request.getPageSize());
+ IPage<PositionSettingVo> positionSettingVoIPage = contractHoldOrderMapper.getPositionSettingList(page, memberEntity);
+ if(StrUtil.isNotEmpty(memberEntity.getAccounts())) {
+ positionSettingVoIPage = contractHoldOrderMapper.getPositionSettingsList(page, memberEntity);
+ }
+ List<PositionSettingVo> records = positionSettingVoIPage.getRecords();
+ if(records != null && records.size() > 0) {
+ for(PositionSettingVo positionSettingVo : records) {
+ Long memberId = positionSettingVo.getId();
+ //当前持仓总盈亏
+ BigDecimal sumRewardAmount = contractHoldOrderMapper.selectRewardAmountBymemberId(memberId);
+ positionSettingVo.setSumRewardAmount(sumRewardAmount);
+ }
+ }
+ return positionSettingVoIPage;
+ }
+
+ @Override
+ @Transactional
+ public FebsResponse disagreePositionSetting(@NotNull(message = "{required}") Long id) {
+ MemberEntity memberEntity = memberMapper.selectById(id);
+ if(ObjectUtil.isEmpty(memberEntity)) {
+ return new FebsResponse().fail().message("会员信息不存在");
+ }
+ memberEntity.setPcState(MemberEntity.PCSTATE_N);
+ memberMapper.updateById(memberEntity);
+ return new FebsResponse().success();
+ }
+
+ @Override
+ public FebsResponse agreePositionSetting(@NotNull(message = "{required}") Long id) {
+ MemberEntity memberEntity = memberMapper.selectById(id);
+ if(ObjectUtil.isEmpty(memberEntity)) {
+ return new FebsResponse().fail().message("会员信息不存在");
+ }
+ memberEntity.setPcState(MemberEntity.PCSTATE_Y);
+ memberMapper.updateById(memberEntity);
+ return new FebsResponse().success();
+ }
diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/vo/PositionSettingVo.java b/src/main/java/com/xcong/excoin/modules/trademanage/vo/PositionSettingVo.java
new file mode 100644
index 0000000..23e12ee
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/trademanage/vo/PositionSettingVo.java
@@ -0,0 +1,49 @@
+package com.xcong.excoin.modules.trademanage.vo;
+
+import java.math.BigDecimal;
+
+import com.xcong.excoin.common.entity.BaseEntity;
+
+import lombok.Data;
+
+@Data
+public class PositionSettingVo extends BaseEntity {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ /**
+ * 手机号(包含国际手机号)
+ */
+ private String phone;
+ /**
+ * 邮箱
+ */
+ private String email;
+ /**
+ * 邀请码
+ */
+ private String inviteId;
+
+ /**
+ * 账号类型
+ */
+ private int accountType;
+
+ private int pcState;
+ /**
+ * 姓名
+ */
+ private String realName;
+ /**
+ * 认证状态
+ */
+ private Integer certifyStatus;
+
+ /**
+ * 当前持仓总盈亏
+ */
+ private BigDecimal sumRewardAmount;
+
+}
diff --git a/src/main/resources/mapper/modules/ContractOrderMapper.xml b/src/main/resources/mapper/modules/ContractOrderMapper.xml
index 7436b9c..c761ff6 100644
--- a/src/main/resources/mapper/modules/ContractOrderMapper.xml
+++ b/src/main/resources/mapper/modules/ContractOrderMapper.xml
@@ -2,6 +2,72 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xcong.excoin.modules.trademanage.mapper.ContractOrderMapper">
+ <select id="selectRewardAmountBymemberId" resultType="java.math.BigDecimal">
+ SELECT
+ IFNULL(SUM(reward_amount), 0)
+ FROM
+ contract_hold_order
+ WHERE
+ is_can_closing = 1
+ and member_id=#{memberId}
+ </select>
+
+ <select id="getPositionSettingsList" resultType="com.xcong.excoin.modules.trademanage.vo.PositionSettingVo">
+ SELECT
+ a.id,
+ a.phone,
+ a.email,
+ a.invite_id,
+ a.account_type,
+ a.create_time,
+ a.pc_state,
+ CONCAT(b.first_name, b.second_name) realName
+ FROM
+ member a
+ LEFT JOIN member_authentication b ON a.id = b.member_id
+ <where>
+ a.certify_status = 2
+ and a.account_status = 1
+ <if test="record != null" >
+ <if test="record.accounts!=null and record.accounts!=''">
+ and (FIND_IN_SET(#{record.accounts}, a.referer_ids) or a.invite_id = #{record.accounts} )
+ </if>
+ <if test="record.isTest!=null and record.isTest!=''">
+ and a.account_type= #{record.isTest}
+ </if>
+ </if>
+ </where>
+ order by a.create_time desc
+ </select>
+
+ <select id="getPositionSettingList" resultType="com.xcong.excoin.modules.trademanage.vo.PositionSettingVo">
+ SELECT
+ a.id,
+ a.phone,
+ a.email,
+ a.invite_id,
+ a.account_type,
+ a.create_time,
+ a.pc_state,
+ CONCAT(b.first_name, b.second_name) realName
+ FROM
+ member a
+ LEFT JOIN member_authentication b ON a.id = b.member_id
+ <where>
+ a.certify_status = 2
+ and a.account_status = 1
+ <if test="record != null" >
+ <if test="record.account!=null and record.account!=''">
+ and (a.phone = #{record.account} or a.email = #{record.account} or a.invite_id=#{record.account})
+ </if>
+ <if test="record.isTest!=null and record.isTest!=''">
+ and a.account_type= #{record.isTest}
+ </if>
+ </if>
+ </where>
+ order by a.create_time desc
+ </select>
+
<select id="findHistoryOrderInfoAloneAllInPage" resultType="com.xcong.excoin.modules.trademanage.entity.ContractOrderEntity">
SELECT
*
diff --git a/src/main/resources/templates/febs/views/modules/trademanage/positionSetting.html b/src/main/resources/templates/febs/views/modules/trademanage/positionSetting.html
new file mode 100644
index 0000000..df70f6e
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/trademanage/positionSetting.html
@@ -0,0 +1,159 @@
+<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">
+ <div class="layui-input-inline">
+ <input type="text" placeholder="查询线下" name="accounts" 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();
+ // 初始化表格操作栏各个按钮功能
+ table.on('tool(userTable)', function (obj) {
+ var data = obj.data,
+ layEvent = obj.event;
+ if (layEvent === 'disagree') {
+ febs.modal.confirm('禁止', '确认禁止平仓功能?', function () {
+ disagree(data.id);
+ });
+ }
+ if (layEvent === 'agree') {
+ febs.modal.confirm('开启', '确认开启平仓功能?', function () {
+ agree(data.id);
+ });
+ }
+ });
+
+ function disagree(id) {
+ febs.get(ctx + 'tradeManage/disagreePositionSetting/' + id, null, function () {
+ febs.alert.success('禁止成功');
+ $query.click();
+ });
+ }
+ function agree(id) {
+ febs.get(ctx + 'tradeManage/agreePositionSetting/' + id, null, function () {
+ febs.alert.success('开启成功');
+ $query.click();
+ });
+ }
+
+ // 查询按钮
+ $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();
+ tableIns.reload({where: getQueryParams(), page: {curr: 1}});
+ });
+
+ function initTable() {
+ tableIns = febs.table.init({
+ elem: $view.find('table'),
+ id: 'userTable',
+ url: ctx + 'tradeManage/positionSetting',
+ totalRow: true,
+ cols: [[
+ {field: 'phone', title: '账号',minWidth: 100,align:'left',totalRowText: '合计'},
+ {field: 'email', title: '邮箱', minWidth: 100,align:'left'},
+ {field: 'realName', title: '姓名', minWidth: 120,align:'left'},
+ {field: 'inviteId', title: '邀请码', minWidth: 120,align:'center'},
+ {field: 'createTime', title: '时间', minWidth: 120,align:'center'},
+ {field: 'sumRewardAmount', title: '持仓总盈亏', minWidth: 120,align:'center'},
+ {field: 'pcState', title: '是否可平仓',
+ templet: function (d) {
+ if (d.pcState == 1) {
+ return '<span style="color:red;">否</span>'
+ } else {
+ return '<span style="color:green;">是</span>'
+ }
+ },minWidth: 100,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'},
+ {title: '操作',
+ templet: function (d) {
+ if (d.pcState === 1) {
+ return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="agree" shiro:hasPermission="user:update">开启</button>'
+ }else{
+ return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="disagree" shiro:hasPermission="user:update">禁止</button>'
+ }
+ },minWidth: 300,align:'center'}
+ ]]
+ });
+ }
+
+ // 获取查询参数
+ function getQueryParams() {
+ return {
+ account: $searchForm.find('input[name="account"]').val().trim(),
+ accounts: $searchForm.find('input[name="accounts"]').val().trim(),
+ isTest: $searchForm.find("select[name='isTest']").val(),
+ };
+ }
+
+ })
+</script>
\ No newline at end of file
--
Gitblit v1.9.1