Helius
2020-08-13 a7b8fd2b18e652730cd4e48da61adee89564b4b6
merge master
4 files added
8 files modified
378 ■■■■ changed files
src/main/java/com/xcong/excoin/configurations/security/WebSecurityConfig.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java 20 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java 11 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java 10 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java 16 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/dao/MemberSettingDao.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/service/MemberService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java 165 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/utils/CalculateUtil.java 10 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/member/MemberSettingDao.xml 38 ●●●●● patch | view | raw | blame | history
src/test/java/com/xcong/excoin/MemberSettingTest.java 51 ●●●●● patch | view | raw | blame | history
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);
    }
}