From a7b8fd2b18e652730cd4e48da61adee89564b4b6 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 13 Aug 2020 11:08:10 +0800
Subject: [PATCH] merge master

---
 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 |   20 +-
 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              |  165 ++++++++++++++---------
 src/main/resources/mapper/member/MemberSettingDao.xml                                          |   38 +++++
 src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java                 |   16 ++
 src/main/java/com/xcong/excoin/utils/CalculateUtil.java                                        |   10 +
 src/main/java/com/xcong/excoin/configurations/security/WebSecurityConfig.java                  |    2 
 src/main/java/com/xcong/excoin/modules/member/service/MemberService.java                       |    2 
 12 files changed, 290 insertions(+), 88 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/configurations/security/WebSecurityConfig.java b/src/main/java/com/xcong/excoin/configurations/security/WebSecurityConfig.java
index c260ad1..738836c 100644
--- a/src/main/java/com/xcong/excoin/configurations/security/WebSecurityConfig.java
+++ b/src/main/java/com/xcong/excoin/configurations/security/WebSecurityConfig.java
@@ -49,7 +49,7 @@
                 .antMatchers("/api/member/getMemberAccountInfo").permitAll()
                 .antMatchers("/api/member/memberForgetPwd").permitAll()
                 .antMatchers("/api/member/memberCoinInfoList").permitAll()
-                .antMatchers("/api/member/getAppVersionInfo").permitAll()
+                .antMatchers("/api/member/getPcVersionInfo").permitAll()
                 .antMatchers("/api/orderCoin/searchSymbolResultList").permitAll()
                 .antMatchers("/api/orderCoin/findCollect").permitAll()
                 .antMatchers("/api/orderCoin/findCollect").permitAll()
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 4857cdb..897f993 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
@@ -29,11 +29,9 @@
 import com.xcong.excoin.modules.documentary.entity.FollowTraderInfoEntity;
 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;
@@ -88,6 +86,8 @@
 
     @Resource
     private MemberDao memberDao;
+    @Resource
+    private MemberSettingDao memberSettingDao;
 
     @Resource
     private FollowTraderInfoDao followTraderInfoDao;
@@ -133,12 +133,12 @@
         BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(submitOrderDto.getSymbol())));
         MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), CoinTypeEnum.USDT.name());
         PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
+
+        MemberSettingEntity memberSetting = memberSettingDao.selectMemberSettingByMemberId(memberEntity.getId());
+        BigDecimal spread = memberSetting.getSpread();
         // 规格
         BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(submitOrderDto.getSymbol());
 
-        MemberEntity member = memberDao.selectById(memberEntity.getId());
-        // 划点
-        BigDecimal spread = member.getSpread();
         // 开仓价
         BigDecimal openingPrice = CalculateUtil.getOpeningPrice(submitOrderDto.getOrderType(), newPrice, spread);
 
@@ -288,9 +288,9 @@
         // 规格
         BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(submitOrderDto.getSymbol());
 
-        MemberEntity member = memberDao.selectById(memberEntity.getId());
-        // 划点
-        BigDecimal spread = member.getSpread();
+        MemberSettingEntity memberSetting = memberSettingDao.selectMemberSettingByMemberId(memberEntity.getId());
+        BigDecimal spread = memberSetting.getSpread();
+
         // 开仓价
         BigDecimal openingPrice = CalculateUtil.getOpeningPrice(submitOrderDto.getOrderType(), newPrice, spread);
         log.info("开仓价:{}", openingPrice);
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 55490b5..f9bbbc7 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
@@ -23,9 +23,11 @@
 import com.xcong.excoin.modules.documentary.entity.FollowTraderProfitDetailEntity;
 import com.xcong.excoin.modules.documentary.service.FollowOrderOperationService;
 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.*;
@@ -69,6 +71,8 @@
 
     @Resource
     private RedisUtils redisUtils;
+    @Resource
+    private MemberSettingDao memberSettingDao;
 
     @Resource
     private FollowFollowerOrderRelationDao followFollowerOrderRelationDao;
@@ -129,16 +133,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/controller/MemberController.java b/src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
index 1aeb253..c2a3f6e 100644
--- a/src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
+++ b/src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
@@ -61,13 +61,25 @@
 	/**
 	 *  获取当前版本号
 	 */
-	@ApiOperation(value="获取当前版本号", notes="获取当前版本号")
+	@ApiOperation(value="APP端获取当前版本号", notes="获取当前版本号")
 	@ApiResponses({@ApiResponse( code = 200, message = "success", response = AppVersionListVo.class)})
 	@GetMapping(value = "/getAppVersionInfo")
 	public Result  getAppVersionInfo() {
 		return memberService.getAppVersionInfo();
 	}
-	
+
+
+	/**
+	 *  获取当前版本号
+	 */
+	@ApiOperation(value="PC端获取当前版本号", notes="获取当前版本号")
+	@ApiResponses({@ApiResponse( code = 200, message = "success", response = AppVersionListVo.class)})
+	@GetMapping(value = "/getPcVersionInfo")
+	public Result  getPcVersionInfo() {
+		return memberService.getPcVersionInfo();
+	}
+
+
 	/**
 	 *  获取我的信息
 	 * @return
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/MemberService.java b/src/main/java/com/xcong/excoin/modules/member/service/MemberService.java
index 916b773..ae6e757 100644
--- a/src/main/java/com/xcong/excoin/modules/member/service/MemberService.java
+++ b/src/main/java/com/xcong/excoin/modules/member/service/MemberService.java
@@ -88,5 +88,7 @@
 
 	public Result getAppVersionInfo();
 
+	public Result getPcVersionInfo();
+
 
 }
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 ea42a22..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,10 +156,14 @@
         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);
@@ -332,12 +338,12 @@
         //获取用户ID
         Long memberId = LoginUserUtils.getAppLoginUser().getId();
         MemberEntity member = memberDao.selectById(memberId);
-		if(MemberEntity.CERTIFY_STATUS_ING.equals(member.getCertifyStatus())) {
-			return Result.fail(MessageSourceUtils.getString("member_service_4000"));
-		}
+        if (MemberEntity.CERTIFY_STATUS_ING.equals(member.getCertifyStatus())) {
+            return Result.fail(MessageSourceUtils.getString("member_service_4000"));
+        }
         if (ObjectUtil.isNotEmpty(member)) {
 
-        	MemberAuthenticationEntity memberAuthenticationEntity = new MemberAuthenticationEntity();
+            MemberAuthenticationEntity memberAuthenticationEntity = new MemberAuthenticationEntity();
 
             if (MemberEntity.CERTIFY_STATUS_Y == member.getCertifyStatus()) {
                 return Result.fail(MessageSourceUtils.getString("member_service_0055"));
@@ -367,13 +373,13 @@
 
             String idCardNo = memberAuthenticationDto.getIdCardNo();
             if (StrUtil.isBlank(idCardNo)) {
-            	return Result.fail(MessageSourceUtils.getString("member_service_0060"));
+                return Result.fail(MessageSourceUtils.getString("member_service_0060"));
             }
             memberAuthenticationEntity.setIdcardNo(idCardNo);
             //同一个身份证号码不能重复实名认证
             int count = memberAuthenticationDao.findMemberbyIdCardNoCount(idCardNo);
             if (count > 0) {
-            	return Result.fail(MessageSourceUtils.getString("member_service_0060"));
+                return Result.fail(MessageSourceUtils.getString("member_service_0060"));
             }
             if (StrUtil.isBlank(memberAuthenticationDto.getIdCardFront())
                     || StrUtil.isBlank(memberAuthenticationDto.getIdCardReverse())
@@ -385,14 +391,14 @@
             memberAuthenticationEntity.setIdcardImageInHand(memberAuthenticationDto.getIdCardImage());
 
             Map<String, Object> columnMap = new HashMap<>();
-        	columnMap.put("member_id", memberId);
-        	List<MemberAuthenticationEntity> selectByMap = memberAuthenticationDao.selectByMap(columnMap);
-        	if(CollUtil.isEmpty(selectByMap)) {
-        		memberAuthenticationDao.insert(memberAuthenticationEntity);
-        	}else {
-        		memberAuthenticationEntity.setId(selectByMap.get(0).getId());
-        		memberAuthenticationDao.updateById(memberAuthenticationEntity);
-        	}
+            columnMap.put("member_id", memberId);
+            List<MemberAuthenticationEntity> selectByMap = memberAuthenticationDao.selectByMap(columnMap);
+            if (CollUtil.isEmpty(selectByMap)) {
+                memberAuthenticationDao.insert(memberAuthenticationEntity);
+            } else {
+                memberAuthenticationEntity.setId(selectByMap.get(0).getId());
+                memberAuthenticationDao.updateById(memberAuthenticationEntity);
+            }
 
             member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_ING);
             member.setIdcardNo(idCardNo);
@@ -489,14 +495,14 @@
 
         Map<String, Object> columnMap = new HashMap<>();
         columnMap.put("member_id", memberId);
-		List<MemberPaymentMethodEntity> selectByMap = memberPaymentMethodDao.selectByMap(columnMap);
-		if(CollUtil.isNotEmpty(selectByMap)) {
-			for(MemberPaymentMethodEntity memberPaymentMethodEntity : selectByMap) {
-				if(memberPaymethodDto.getAccount().equals(memberPaymentMethodEntity.getAccount())) {
-					return Result.fail(MessageSourceUtils.getString("member_service_0097"));
-				}
-			}
-		}
+        List<MemberPaymentMethodEntity> selectByMap = memberPaymentMethodDao.selectByMap(columnMap);
+        if (CollUtil.isNotEmpty(selectByMap)) {
+            for (MemberPaymentMethodEntity memberPaymentMethodEntity : selectByMap) {
+                if (memberPaymethodDto.getAccount().equals(memberPaymentMethodEntity.getAccount())) {
+                    return Result.fail(MessageSourceUtils.getString("member_service_0097"));
+                }
+            }
+        }
         String account = memberPaymethodDto.getAccount();
         String bank = memberPaymethodDto.getBank();
         String name = memberPaymethodDto.getName();
@@ -577,7 +583,7 @@
     @Override
     @Transactional
     public Result memberBindPhone(@Valid MemberBindPhoneDto memberBindPhoneDto) {
-    	//获取用户ID
+        //获取用户ID
         Long memberId = LoginUserUtils.getAppLoginUser().getId();
         String phone = memberBindPhoneDto.getPhone();
         String code = memberBindPhoneDto.getCode();
@@ -590,13 +596,13 @@
             }
             Map<String, Object> columnMap = new HashMap<>();
             columnMap.put("phone", phone);
-			List<MemberEntity> selectByMap = memberDao.selectByMap(columnMap );
-            if(CollUtil.isEmpty(selectByMap)) {
-            	member.setPhone(phone);
-            	memberDao.updateById(member);
-            	return Result.ok(MessageSourceUtils.getString("member_service_0014"));
-            }else {
-            	return Result.fail(MessageSourceUtils.getString("member_service_1400"));
+            List<MemberEntity> selectByMap = memberDao.selectByMap(columnMap);
+            if (CollUtil.isEmpty(selectByMap)) {
+                member.setPhone(phone);
+                memberDao.updateById(member);
+                return Result.ok(MessageSourceUtils.getString("member_service_0014"));
+            } else {
+                return Result.fail(MessageSourceUtils.getString("member_service_1400"));
             }
         }
 
@@ -607,7 +613,7 @@
     @Transactional
     public Result memberBindEmail(@Valid MemberBindEmailDto memberBindEmailDto) {
 
-    	//获取用户ID
+        //获取用户ID
         Long memberId = LoginUserUtils.getAppLoginUser().getId();
         String email = memberBindEmailDto.getEmail();
         String code = memberBindEmailDto.getCode();
@@ -616,15 +622,15 @@
         boolean flag = commonservice.verifyCode(email, code);
         if (ObjectUtil.isNotEmpty(member)) {
             if (flag) {
-            	Map<String, Object> columnMap = new HashMap<>();
+                Map<String, Object> columnMap = new HashMap<>();
                 columnMap.put("email", email);
-    			List<MemberEntity> selectByMap = memberDao.selectByMap(columnMap );
-                if(CollUtil.isEmpty(selectByMap)) {
-                	member.setEmail(email);
+                List<MemberEntity> selectByMap = memberDao.selectByMap(columnMap);
+                if (CollUtil.isEmpty(selectByMap)) {
+                    member.setEmail(email);
                     memberDao.updateById(member);
                     return Result.ok(MessageSourceUtils.getString("member_service_0018"));
-                }else {
-                	return Result.fail(MessageSourceUtils.getString("member_service_1400"));
+                } else {
+                    return Result.fail(MessageSourceUtils.getString("member_service_1400"));
                 }
             }
         }
@@ -760,10 +766,10 @@
         Map<String, Object> columnMap = new HashMap<>();
         columnMap.put("member_id", memberId);
         List<MemberPaymentMethodEntity> selectByMap = memberPaymentMethodDao.selectByMap(columnMap);
-        if(CollUtil.isEmpty(selectByMap)) {
-        	memberPersonCenterInfoVo.setMemberPaymentMethod(0);
-        }else {
-        	memberPersonCenterInfoVo.setMemberPaymentMethod(1);
+        if (CollUtil.isEmpty(selectByMap)) {
+            memberPersonCenterInfoVo.setMemberPaymentMethod(0);
+        } else {
+            memberPersonCenterInfoVo.setMemberPaymentMethod(1);
         }
 
         if (StrUtil.isNotEmpty(member.getPhone())) {
@@ -824,16 +830,16 @@
         List<MemberAvivableCoinInfoVo> arrayList = new ArrayList<>();
 
 
-		List<PlatformFeeSettingEntity> feeSettingByTypeAndSymbolLable = platformFeeSettingDao.getFeeSettingsByTypeAndSymbol(2, symbol);
+        List<PlatformFeeSettingEntity> feeSettingByTypeAndSymbolLable = platformFeeSettingDao.getFeeSettingsByTypeAndSymbol(2, symbol);
         if (CollUtil.isEmpty(feeSettingByTypeAndSymbolLable)) {
             return Result.fail(MessageSourceUtils.getString("member_service_0087"));
         }
-        for(PlatformFeeSettingEntity platformFeeSettingEntity : feeSettingByTypeAndSymbolLable) {
-        	MemberAvivableCoinInfoVo memberAvivableCoinInfoVo = new MemberAvivableCoinInfoVo();
-        	memberAvivableCoinInfoVo.setAvailableBalance(walletCoin.getAvailableBalance());
-        	memberAvivableCoinInfoVo.setFee(platformFeeSettingEntity.getFeePrice());
-        	memberAvivableCoinInfoVo.setLable(platformFeeSettingEntity.getLable());
-        	arrayList.add(memberAvivableCoinInfoVo);
+        for (PlatformFeeSettingEntity platformFeeSettingEntity : feeSettingByTypeAndSymbolLable) {
+            MemberAvivableCoinInfoVo memberAvivableCoinInfoVo = new MemberAvivableCoinInfoVo();
+            memberAvivableCoinInfoVo.setAvailableBalance(walletCoin.getAvailableBalance());
+            memberAvivableCoinInfoVo.setFee(platformFeeSettingEntity.getFeePrice());
+            memberAvivableCoinInfoVo.setLable(platformFeeSettingEntity.getLable());
+            arrayList.add(memberAvivableCoinInfoVo);
         }
 
         return Result.ok(arrayList);
@@ -954,22 +960,47 @@
         return Result.ok("");
     }
 
-	@Override
-	public Result getAppVersionInfo() {
-	Map<String, Object> columnMap = new HashMap<>();
-	List<AppVersionEntity> selectByMap = appVersionDao.selectByMap(columnMap);
-	List<Object> arrayList = new ArrayList<>();
-		if(CollUtil.isNotEmpty(selectByMap)) {
-			for(AppVersionEntity appVersionEntity : selectByMap) {
-					AppVersionVo appVersionVo = new AppVersionVo();
-					appVersionVo.setAddress(appVersionEntity.getAddress());
-					appVersionVo.setType(appVersionEntity.getType());
-					appVersionVo.setVersion(appVersionEntity.getVersion());
-					arrayList.add(appVersionVo);
-				}
-			}
-	return Result.ok(arrayList);
-	}
+    @Override
+    public Result getAppVersionInfo() {
+        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+
+        Map<String, Object> columnMap = new HashMap<>();
+        List<AppVersionEntity> selectByMap = appVersionDao.selectByMap(columnMap);
+        List<Object> arrayList = new ArrayList<>();
+        if (CollUtil.isNotEmpty(selectByMap)) {
+            for (AppVersionEntity appVersionEntity : selectByMap) {
+                AppVersionVo appVersionVo = new AppVersionVo();
+                if ("37059551".equals(memberEntity.getInviteId())) {
+                    appVersionVo.setAddress("www.baidu.com");
+                    appVersionVo.setType(appVersionEntity.getType());
+                    appVersionVo.setVersion(appVersionEntity.getVersion());
+                } else {
+                    appVersionVo.setAddress(appVersionEntity.getAddress());
+                    appVersionVo.setType(appVersionEntity.getType());
+                    appVersionVo.setVersion(appVersionEntity.getVersion());
+                }
+                arrayList.add(appVersionVo);
+            }
+        }
+        return Result.ok(arrayList);
+    }
+
+    @Override
+    public Result getPcVersionInfo() {
+        Map<String, Object> columnMap = new HashMap<>();
+        List<AppVersionEntity> selectByMap = appVersionDao.selectByMap(columnMap);
+        List<Object> arrayList = new ArrayList<>();
+        if (CollUtil.isNotEmpty(selectByMap)) {
+            for (AppVersionEntity appVersionEntity : selectByMap) {
+                AppVersionVo appVersionVo = new AppVersionVo();
+                appVersionVo.setAddress(appVersionEntity.getAddress());
+                appVersionVo.setType(appVersionEntity.getType());
+                appVersionVo.setVersion(appVersionEntity.getVersion());
+                arrayList.add(appVersionVo);
+            }
+        }
+        return Result.ok(arrayList);
+    }
 }
 
 
diff --git a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
index 1d0c233..a25ac4f 100644
--- a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
+++ b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
@@ -6,7 +6,9 @@
 import com.xcong.excoin.modules.contract.dao.ContractHoldOrderDao;
 import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity;
 import com.xcong.excoin.modules.member.dao.MemberWalletContractDao;
+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;
 
@@ -30,21 +32,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