From 1356cf874d0fac038269d4277afea86d285dd623 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 13 Aug 2020 10:53:36 +0800
Subject: [PATCH] add table member_setting and change some column to member_setting
---
src/main/java/com/xcong/excoin/modules/member/dao/MemberSettingDao.java | 19 ++++
src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java | 34 ++++++++
src/test/java/com/xcong/excoin/MemberSettingTest.java | 51 ++++++++++++
src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java | 10 ++
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java | 13 +-
src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java | 11 ++
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java | 12 ++
src/main/resources/mapper/member/MemberSettingDao.xml | 38 +++++++++
src/main/java/com/xcong/excoin/utils/CalculateUtil.java | 10 +
9 files changed, 180 insertions(+), 18 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
index 0fac134..6e4a42d 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
@@ -24,11 +24,9 @@
import com.xcong.excoin.modules.contract.service.ContractHoldOrderService;
import com.xcong.excoin.modules.member.dao.MemberDao;
import com.xcong.excoin.modules.member.dao.MemberLevelRateDao;
+import com.xcong.excoin.modules.member.dao.MemberSettingDao;
import com.xcong.excoin.modules.member.dao.MemberWalletContractDao;
-import com.xcong.excoin.modules.member.entity.AgentReturnEntity;
-import com.xcong.excoin.modules.member.entity.MemberEntity;
-import com.xcong.excoin.modules.member.entity.MemberLevelRateEntity;
-import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity;
+import com.xcong.excoin.modules.member.entity.*;
import com.xcong.excoin.modules.platform.dao.TradeSettingDao;
import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
import com.xcong.excoin.rabbit.producer.OrderProducer;
@@ -82,6 +80,8 @@
@Resource
private MemberDao memberDao;
+ @Resource
+ private MemberSettingDao memberSettingDao;
@Transactional(rollbackFor = Exception.class)
@Override
@@ -95,9 +95,8 @@
PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
- Long id = memberEntity.getId();
- MemberEntity selectById = memberDao.selectById(id);
- BigDecimal spread = selectById.getSpread();
+ MemberSettingEntity memberSetting = memberSettingDao.selectMemberSettingByMemberId(memberEntity.getId());
+ BigDecimal spread = memberSetting.getSpread();
// 规格
BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(submitOrderDto.getSymbol());
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java
index c86ac4f..93b135e 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java
@@ -12,8 +12,10 @@
import com.xcong.excoin.modules.contract.service.ContractHoldOrderService;
import com.xcong.excoin.modules.contract.service.ContractOrderService;
import com.xcong.excoin.modules.member.dao.AgentReturnDao;
+import com.xcong.excoin.modules.member.dao.MemberSettingDao;
import com.xcong.excoin.modules.member.entity.AgentReturnEntity;
import com.xcong.excoin.modules.member.entity.MemberEntity;
+import com.xcong.excoin.modules.member.entity.MemberSettingEntity;
import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity;
import com.xcong.excoin.modules.member.parameter.vo.NeedMoneyMemberVo;
import com.xcong.excoin.modules.member.service.MemberService;
@@ -67,6 +69,8 @@
@Resource
private MemberAccountFlowEntityDao memberAccountFlowEntityDao;
+ @Resource
+ private MemberSettingDao memberSettingDao;
public void dealOrderFromMq(List<OrderModel> list, Integer type) {
@@ -172,8 +176,9 @@
.multiply(new BigDecimal(currentFlat))
.multiply(symbolSku).setScale(8, BigDecimal.ROUND_DOWN);
MemberEntity memberEntity = memberService.getById(memberId);
+ MemberSettingEntity memberSettingEntity = memberSettingDao.selectMemberSettingByMemberId(memberId);
log.info("划点前:{}", profitLossPrice);
- profitLossPrice = profitLossPrice.multiply(BigDecimal.ONE.subtract(memberEntity.getClosingSpread().divide(BigDecimal.valueOf(100), 4, BigDecimal.ROUND_DOWN)));
+ profitLossPrice = profitLossPrice.multiply(BigDecimal.ONE.subtract(memberSettingEntity.getClosingSpread().divide(BigDecimal.valueOf(100), 4, BigDecimal.ROUND_DOWN)));
log.info("划点后:{}", profitLossPrice);
if (memberEntity.getIsProfit() == 1) {
PlatformTradeSettingEntity tradeSetting = cacheSettingUtils.getTradeSetting();
@@ -264,9 +269,9 @@
.multiply(new BigDecimal(currentFlat + ""))
.multiply(symbolSku).setScale(8, BigDecimal.ROUND_DOWN);
MemberEntity memberEntity = memberService.getById(memberId);
-
+ MemberSettingEntity memberSettingEntity = memberSettingDao.selectMemberSettingByMemberId(memberId);
log.info("划点前:{}", profitLossPrice);
- profitLossPrice = profitLossPrice.multiply(BigDecimal.ONE.subtract(memberEntity.getClosingSpread().divide(BigDecimal.valueOf(100), 4, BigDecimal.ROUND_DOWN)));
+ profitLossPrice = profitLossPrice.multiply(BigDecimal.ONE.subtract(memberSettingEntity.getClosingSpread().divide(BigDecimal.valueOf(100), 4, BigDecimal.ROUND_DOWN)));
log.info("划点后:{}", profitLossPrice);
if (memberEntity.getIsProfit() == 1) {
PlatformTradeSettingEntity tradeSetting = cacheSettingUtils.getTradeSetting();
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
index 2a2aac9..1f4e3ed 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
@@ -11,9 +11,11 @@
import com.xcong.excoin.modules.contract.mapper.ContractHoldOrderEntityMapper;
import com.xcong.excoin.modules.contract.service.RabbitOrderService;
import com.xcong.excoin.modules.member.dao.MemberDao;
+import com.xcong.excoin.modules.member.dao.MemberSettingDao;
import com.xcong.excoin.modules.member.dao.MemberWalletContractDao;
import com.xcong.excoin.modules.member.entity.AgentReturnEntity;
import com.xcong.excoin.modules.member.entity.MemberEntity;
+import com.xcong.excoin.modules.member.entity.MemberSettingEntity;
import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity;
import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
import com.xcong.excoin.utils.*;
@@ -57,6 +59,8 @@
@Resource
private RedisUtils redisUtils;
+ @Resource
+ private MemberSettingDao memberSettingDao;
@Transactional(rollbackFor = Exception.class)
@Override
@@ -93,16 +97,18 @@
BigDecimal profitOrLoss = BigDecimal.ZERO;
Integer orderType = null;
Integer closingType = null;
+
+ MemberSettingEntity memberSettingEntity = memberSettingDao.selectMemberSettingByMemberId(memberEntity.getId());
// 开多
if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) {
- newPrice = newPrice.multiply(BigDecimal.ONE.subtract(memberEntity.getClosingSpread().divide(BigDecimal.valueOf(10000), 4, BigDecimal.ROUND_DOWN)));
+ newPrice = newPrice.multiply(BigDecimal.ONE.subtract(memberSettingEntity.getClosingSpread().divide(BigDecimal.valueOf(10000), 4, BigDecimal.ROUND_DOWN)));
// (最新价-开仓价)*规格*张数
profitOrLoss = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(lotNumber).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt()));
orderType = ContractOrderEntity.ORDER_TYPE_CLOSE_MORE;
closingType = OrderClosingTypeEnum.CLOSE_MORE.getValue();
// 开空
} else {
- newPrice = newPrice.multiply(BigDecimal.ONE.add(memberEntity.getClosingSpread().divide(BigDecimal.valueOf(10000), 4, BigDecimal.ROUND_DOWN)));
+ newPrice = newPrice.multiply(BigDecimal.ONE.add(memberSettingEntity.getClosingSpread().divide(BigDecimal.valueOf(10000), 4, BigDecimal.ROUND_DOWN)));
// (开仓价-最新价)*规格*张数
profitOrLoss = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(lotNumber).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt()));
orderType = ContractOrderEntity.ORDER_TYPE_CLOSE_LESS;
diff --git a/src/main/java/com/xcong/excoin/modules/member/dao/MemberSettingDao.java b/src/main/java/com/xcong/excoin/modules/member/dao/MemberSettingDao.java
new file mode 100644
index 0000000..620a813
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/dao/MemberSettingDao.java
@@ -0,0 +1,19 @@
+package com.xcong.excoin.modules.member.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xcong.excoin.modules.member.entity.MemberSettingEntity;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2020-08-13
+ **/
+public interface MemberSettingDao extends BaseMapper<MemberSettingEntity> {
+
+ public MemberSettingEntity selectMemberSettingByMemberId(@Param("memberId") Long memberId);
+
+ public int batchInsert(@Param("list") List<MemberSettingEntity> list);
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java
new file mode 100644
index 0000000..36ea5a7
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java
@@ -0,0 +1,34 @@
+package com.xcong.excoin.modules.member.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.xcong.excoin.common.system.base.BaseEntity;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author wzy
+ * @date 2020-08-13
+ **/
+@Data
+@TableName("member_setting")
+public class MemberSettingEntity extends BaseEntity {
+
+ private Long memberId;
+
+ /**
+ * 滑点
+ */
+ private BigDecimal spread;
+
+ /**
+ * 平仓点数
+ */
+ private BigDecimal closingSpread;
+
+ /**
+ * 强平系数
+ */
+ private BigDecimal forceParam;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
index 4e52040..8dd0b3a 100644
--- a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -106,6 +106,8 @@
@Resource
AppVersionDao appVersionDao;
+ @Resource
+ private MemberSettingDao memberSettingDao;
@Resource
private MemberWalletContractSimulateDao memberWalletContractSimulateDao;
@@ -154,11 +156,15 @@
member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_UN_SUBMIT);
member.setIsForce(1);
member.setIsProfit(0);
- member.setSpread(BigDecimal.ONE);
- member.setClosingSpread(BigDecimal.ONE);
- member.setForceParam(BigDecimal.valueOf(0.0015));
memberDao.insert(member);
+ MemberSettingEntity memberSettingEntity = new MemberSettingEntity();
+ memberSettingEntity.setSpread(BigDecimal.ONE);
+ memberSettingEntity.setClosingSpread(BigDecimal.ONE);
+ memberSettingEntity.setForceParam(BigDecimal.valueOf(0.0015));
+ memberSettingEntity.setMemberId(member.getId());
+ memberSettingDao.insert(memberSettingEntity);
+
String inviteId = ShareCodeUtil.toSerialCode(member.getId());
member.setInviteId(inviteId);
diff --git a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
index 2e0e201..692d02b 100644
--- a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
+++ b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
@@ -1,7 +1,9 @@
package com.xcong.excoin.utils;
+import com.xcong.excoin.modules.member.dao.MemberSettingDao;
import com.xcong.excoin.modules.member.entity.MemberEntity;
+import com.xcong.excoin.modules.member.entity.MemberSettingEntity;
import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
import lombok.extern.slf4j.Slf4j;
@@ -25,21 +27,23 @@
*/
public static BigDecimal getForceSetPrice(BigDecimal bondAmount, BigDecimal openPrice, int symbolSkuNumber, BigDecimal lotNumber,
int type, MemberEntity member) {
- CacheSettingUtils cacheSettingUtils = SpringContextHolder.getBean(CacheSettingUtils.class);
+ MemberSettingDao memberSettingDao = SpringContextHolder.getBean(MemberSettingDao.class);
BigDecimal forcePrice = BigDecimal.ZERO;
BigDecimal money = bondAmount.divide(new BigDecimal(symbolSkuNumber).multiply(lotNumber), 8, BigDecimal.ROUND_DOWN);
//卖空
if (type == 2) {
forcePrice = money.add(openPrice);
if (member.getIsForce() == 1) {
+ MemberSettingEntity memberSetting = memberSettingDao.selectMemberSettingByMemberId(member.getId());
//预估强平价 = 预估强平价-预估强平价*系数
- forcePrice = forcePrice.subtract(forcePrice.multiply(member.getForceParam() == null ? BigDecimal.ZERO : member.getForceParam()));
+ forcePrice = forcePrice.subtract(forcePrice.multiply(memberSetting.getForceParam() == null ? BigDecimal.ZERO : memberSetting.getForceParam()));
}
} else {//开多
forcePrice = openPrice.subtract(money);
if (member.getIsForce() == 1) {
+ MemberSettingEntity memberSetting = memberSettingDao.selectMemberSettingByMemberId(member.getId());
//预估强平价 = 预估强平价-预估强平价*系数
- forcePrice = forcePrice.add(forcePrice.multiply(member.getForceParam() == null ? BigDecimal.ZERO : member.getForceParam()));
+ forcePrice = forcePrice.add(forcePrice.multiply(memberSetting.getForceParam() == null ? BigDecimal.ZERO : memberSetting.getForceParam()));
}
}
if (forcePrice.compareTo(BigDecimal.ZERO) < 0) {
diff --git a/src/main/resources/mapper/member/MemberSettingDao.xml b/src/main/resources/mapper/member/MemberSettingDao.xml
new file mode 100644
index 0000000..2a56bce
--- /dev/null
+++ b/src/main/resources/mapper/member/MemberSettingDao.xml
@@ -0,0 +1,38 @@
+<?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.member.dao.MemberSettingDao">
+
+ <select id="selectMemberSettingByMemberId" resultType="com.xcong.excoin.modules.member.entity.MemberSettingEntity">
+ select * from member_setting where member_id=#{memberId}
+ </select>
+
+ <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
+ insert into member_setting (
+ create_by,
+ create_time,
+ update_by,
+ update_time,
+ version,
+ id,
+ member_id,
+ force_param,
+ spread,
+ closing_spread
+ ) values
+ <foreach collection="list" item="item" index="index" separator=",">
+ (
+ #{item.createBy},
+ now(),
+ #{item.updateBy},
+ now(),
+ #{item.version},
+ #{item.id},
+ #{item.memberId},
+ #{item.forceParam},
+ #{item.spread},
+ #{item.closingSpread}
+ )
+ </foreach>
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/src/test/java/com/xcong/excoin/MemberSettingTest.java b/src/test/java/com/xcong/excoin/MemberSettingTest.java
new file mode 100644
index 0000000..68461c2
--- /dev/null
+++ b/src/test/java/com/xcong/excoin/MemberSettingTest.java
@@ -0,0 +1,51 @@
+package com.xcong.excoin;
+
+import com.xcong.excoin.modules.member.dao.MemberDao;
+import com.xcong.excoin.modules.member.dao.MemberSettingDao;
+import com.xcong.excoin.modules.member.entity.MemberEntity;
+import com.xcong.excoin.modules.member.entity.MemberSettingEntity;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author wzy
+ * @date 2020-08-13
+ **/
+@Slf4j
+@SpringBootTest
+public class MemberSettingTest {
+
+ @Resource
+ private MemberDao memberDao;
+ @Resource
+ private MemberSettingDao memberSettingDao;
+
+ @Test
+ public void settingDateTest() {
+ Map<String, Object> map = new HashMap<>();
+ List<MemberEntity> memberEntities = memberDao.selectByMap(map);
+ log.info("--->{}", memberEntities.size());
+
+ List<MemberSettingEntity> list = new ArrayList<>();
+ for (MemberEntity memberEntity : memberEntities) {
+ MemberSettingEntity memberSettingEntity = new MemberSettingEntity();
+ memberSettingEntity.setCreateBy("system");
+ memberSettingEntity.setUpdateBy("system");
+ memberSettingEntity.setMemberId(memberEntity.getId());
+ memberSettingEntity.setClosingSpread(memberEntity.getClosingSpread());
+ memberSettingEntity.setForceParam(memberEntity.getForceParam());
+ memberSettingEntity.setSpread(memberEntity.getSpread());
+ list.add(memberSettingEntity);
+ }
+
+ memberSettingDao.batchInsert(list);
+ }
+}
--
Gitblit v1.9.1