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() 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); 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(); 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; 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 src/main/java/com/xcong/excoin/modules/member/dao/MemberSettingDao.java
New file @@ -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); } src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java
New file @@ -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; } src/main/java/com/xcong/excoin/modules/member/service/MemberService.java
@@ -88,5 +88,7 @@ public Result getAppVersionInfo(); public Result getPcVersionInfo(); } 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); } } 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) { src/main/resources/mapper/member/MemberSettingDao.xml
New file @@ -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> src/test/java/com/xcong/excoin/MemberSettingTest.java
New file @@ -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); } }