From 829f629756e5402bcd3e9f6ef1f9c6dbffbabb11 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Wed, 17 Apr 2024 14:46:29 +0800 Subject: [PATCH] 55测试环境 --- src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java | 214 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 193 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java b/src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java index d2d651a..b0e0ba4 100644 --- a/src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java @@ -2,6 +2,7 @@ import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -65,6 +66,7 @@ import com.xcong.excoin.modules.documentary.vo.BeTraderConditionVo; import com.xcong.excoin.modules.documentary.vo.DocumentaryOrderInfoVo; import com.xcong.excoin.modules.documentary.vo.DocumentaryOrderSetInfoVo; +import com.xcong.excoin.modules.documentary.vo.DocumentaryOrderSetStateVo; import com.xcong.excoin.modules.documentary.vo.FollowFollowerNoticeVo; import com.xcong.excoin.modules.documentary.vo.FollowInfoVo; import com.xcong.excoin.modules.documentary.vo.FollowRecordsVo; @@ -159,7 +161,18 @@ FollowTraderProfitInfoEntity followTraderProfitInfoEntity = new FollowTraderProfitInfoEntity(); if(FollowTraderInfoEntity.IS_SETFRIST_Y.equals(type)) { followTraderProfitInfoEntity.setType(type); + followTraderProfitInfoEntity.setTotalProfitRatioSc(2); + }else { + String nicknameDto = recordsPageDto.getNickname(); + followTraderProfitInfoEntity.setNickname(nicknameDto); + int totalProfitRatioSc = recordsPageDto.getTotalProfitRatioSc(); + followTraderProfitInfoEntity.setTotalProfitRatioSc(totalProfitRatioSc); + int totalFollowerCntSc = recordsPageDto.getTotalFollowerCntSc(); + followTraderProfitInfoEntity.setTotalFollowerCntSc(totalFollowerCntSc); + int winRateSc = recordsPageDto.getWinRateSc(); + followTraderProfitInfoEntity.setWinRateSc(winRateSc); } + IPage<FollowTraderProfitInfoVo> followTraderProfitInfoList = followTraderProfitInfoDao.selectFollowTraderProfitInfoEntity(page, followTraderProfitInfoEntity); List<FollowTraderProfitInfoVo> followTraderProfitInfoVoList = followTraderProfitInfoList.getRecords(); @@ -175,9 +188,27 @@ }else { FollowTraderProfitInfoVo.setDocumentaryType(2); } + } Long traderId = FollowTraderProfitInfoVo.getTraderId(); FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectFollowTraderInfoEntityBytreaderId(traderId); + + //获取当前跟单人数 + Map<String, Object> columnMap = new HashMap<>(); + columnMap.put("trader_id", traderId); + List<FollowFollowerSettingEntity> selectByMap = followFollowerSettingDao.selectByMap(columnMap); + if(CollUtil.isNotEmpty(selectByMap)) { + Integer followNum = followTraderInfoEntity.getFollowNum(); + int size = selectByMap.size(); + if(followNum > size) { + FollowTraderProfitInfoVo.setIsActualAll(2); + }else { + FollowTraderProfitInfoVo.setIsActualAll(1); + } + }else { + FollowTraderProfitInfoVo.setIsActualAll(2); + } + String avatar = followTraderInfoEntity.getAvatar(); FollowTraderProfitInfoVo.setAvatar(avatar); String nickname = followTraderInfoEntity.getNickname(); @@ -186,6 +217,10 @@ FollowTraderProfitInfoVo.setDeclaration(declaration); Integer isAll = followTraderInfoEntity.getIsAll(); FollowTraderProfitInfoVo.setIsAll(isAll); + + Date entryTime = followTraderInfoEntity.getEntryTime(); + int datePoor = getDatePoor(entryTime, new Date()); + FollowTraderProfitInfoVo.setEntryDays(datePoor); String labels = followTraderInfoEntity.getLabels(); if(StrUtil.isNotEmpty(labels)) { @@ -252,9 +287,19 @@ List<FollowRecordsVo> records = historyOrderRecordsVoList.getRecords(); if(CollUtil.isNotEmpty(records)) { for(FollowRecordsVo followRecordsVo : records) { - - BigDecimal totalPrincipal = followRecordsVo.getTotalPrincipal().setScale(2, BigDecimal.ROUND_DOWN); - followRecordsVo.setTotalPrincipal(totalPrincipal); + Long memberIdFollow = followRecordsVo.getMemberId(); + Long tradeId = followRecordsVo.getTradeId(); + //获取当前跟随者最后一个历史跟单的保证金 + BigDecimal bondAmount = BigDecimal.ZERO; + List<BigDecimal> bondamounts = followFollowerProfitDao.selectBondAmountByTradeIdAndMemberId(memberIdFollow,tradeId); + if(CollUtil.isNotEmpty(bondamounts)){ + bondAmount = bondamounts.get(0).setScale(2, BigDecimal.ROUND_DOWN); + + } + followRecordsVo.setTotalPrincipal(bondAmount); + +// BigDecimal totalPrincipal = followRecordsVo.getTotalPrincipal().setScale(2, BigDecimal.ROUND_DOWN); +// followRecordsVo.setTotalPrincipal(totalPrincipal); BigDecimal totalProfit = followRecordsVo.getTotalProfit().setScale(2, BigDecimal.ROUND_DOWN); followRecordsVo.setTotalProfit(totalProfit); @@ -375,7 +420,7 @@ myFollowOrderVo.setLeverRatio(leverRatio); BigDecimal rewardAmount = contractOrderEntity.getRewardAmount().setScale(2, BigDecimal.ROUND_DOWN); myFollowOrderVo.setRewardAmount(rewardAmount); - BigDecimal rewardRatio = contractOrderEntity.getRewardRatio().setScale(4, BigDecimal.ROUND_DOWN); + BigDecimal rewardRatio = contractOrderEntity.getRewardRatio() == null ? BigDecimal.ZERO : contractOrderEntity.getRewardRatio().setScale(4, BigDecimal.ROUND_DOWN); myFollowOrderVo.setRewardRatio(rewardRatio); int symbolCnt = contractOrderEntity.getSymbolCnt(); myFollowOrderVo.setSymbolCnt(symbolCnt); @@ -496,7 +541,7 @@ String nickname = followTraderInfoEntity.getNickname(); myFollowTraderInfoVo.setNickname(nickname); BigDecimal totalPrincipal = FollowFollowerProfitEntity.getTotalPrincipal(); - myFollowTraderInfoVo.setTotalPrincipal(totalPrincipal); + myFollowTraderInfoVo.setTotalPrincipal(totalPrincipal.setScale(2, BigDecimal.ROUND_DOWN)); BigDecimal totalProfit = FollowFollowerProfitEntity.getTotalProfit(); myFollowTraderInfoVo.setTotalProfit(totalProfit.setScale(2, BigDecimal.ROUND_DOWN)); @@ -637,17 +682,17 @@ long parseLong = Long.parseLong(tradeId); //只能跟随一个人 - Map<String, Object> columnMaps = new HashMap<>(); - columnMaps.put("member_id", memberId); - List<FollowFollowerSettingEntity> followFollowerSettingEntityAllows = followFollowerSettingDao.selectByMap(columnMaps); - if(CollUtil.isNotEmpty(followFollowerSettingEntityAllows)) { - for(FollowFollowerSettingEntity followFollowerSettingEntityAllow : followFollowerSettingEntityAllows) { - Long tradeIdAllow = followFollowerSettingEntityAllow.getTraderId(); - if(parseLong != tradeIdAllow) { - return Result.fail(MessageSourceUtils.getString("documentary_service_0015")); - } - } - } +// Map<String, Object> columnMaps = new HashMap<>(); +// columnMaps.put("member_id", memberId); +// List<FollowFollowerSettingEntity> followFollowerSettingEntityAllows = followFollowerSettingDao.selectByMap(columnMaps); +// if(CollUtil.isNotEmpty(followFollowerSettingEntityAllows)) { +// for(FollowFollowerSettingEntity followFollowerSettingEntityAllow : followFollowerSettingEntityAllows) { +// Long tradeIdAllow = followFollowerSettingEntityAllow.getTraderId(); +// if(parseLong != tradeIdAllow) { +// return Result.fail(MessageSourceUtils.getString("documentary_service_0015")); +// } +// } +// } //获取【跟随者设置】数据 FollowFollowerSettingEntity followFollowerSettingEntity = followFollowerSettingDao.selectOneBymemberIdAndTradeId(memberId,parseLong); @@ -677,8 +722,9 @@ Integer maxFollowCnt = followFollowerSettingEntity.getMaxFollowCnt(); if(maxFollowCnt > 0){ documentaryOrderSetInfoVo.setMaxFollowCnt(maxFollowCnt.toString()); + }else { + documentaryOrderSetInfoVo.setMaxFollowCnt(""); } - documentaryOrderSetInfoVo.setMaxFollowCnt(""); log.info(memberId + "-最大持仓张数-"+maxFollowCnt.toString()); return Result.ok(documentaryOrderSetInfoVo); } @@ -747,11 +793,48 @@ String nickname = followTraderInfoEntity.getNickname(); String declaration = followTraderInfoEntity.getDeclaration(); Integer isAll = followTraderInfoEntity.getIsAll(); + Integer followNum = followTraderInfoEntity.getFollowNum(); + Date entryTime = followTraderInfoEntity.getEntryTime(); + int datePoor = getDatePoor(entryTime, new Date()); + followTraderProfitInfoVo.setEntryDays(datePoor); + //获取当前跟单人数 + Map<String, Object> columnMap = new HashMap<>(); + columnMap.put("trade_id", traderId); + columnMap.put("is_follow", FollowFollowerProfitEntity.IS_FOLLOW_Y); + List<FollowFollowerProfitEntity> selectByMap = followFollowerProfitDao.selectByMap(columnMap); + if(CollUtil.isNotEmpty(selectByMap)) { + followTraderProfitInfoVo.setFollowNumNow(selectByMap.size()); + }else { + followTraderProfitInfoVo.setFollowNumNow(0); + } + if(CollUtil.isNotEmpty(selectByMap)) { + if(followNum > selectByMap.size()){ + followTraderProfitInfoVo.setIsActualAll(2); + }else{ + followTraderProfitInfoVo.setIsActualAll(1); + } + }else { + followTraderProfitInfoVo.setIsActualAll(2); + } + followTraderProfitInfoVo.setFollowNum(followNum); followTraderProfitInfoVo.setAvatar(avatar); followTraderProfitInfoVo.setNickname(nickname); followTraderProfitInfoVo.setDeclaration(declaration); followTraderProfitInfoVo.setIsAll(isAll); return Result.ok(followTraderProfitInfoVo); + } + + //获取两个时间之间的日期 + private int getDatePoor(Date endDate, Date nowDate) { + Calendar cal = Calendar.getInstance(); + cal.setTime(endDate); + long time1 = cal.getTimeInMillis(); + cal.setTime(nowDate); + long time2 = cal.getTimeInMillis(); + long between_days=(time2-time1)/(1000*3600*24); + int parseInt = Integer.parseInt(String.valueOf(between_days)); + parseInt = parseInt + 1; + return parseInt ; } @Override @@ -820,6 +903,7 @@ followTraderInfoEntity.setDeclaration(declaration); } followTraderInfoEntity.setLabels(labels); + followTraderInfoEntity.setFollowNum(FollowTraderInfoEntity.FOLLOWNUM_DEFAULT); followTraderInfoEntity.setIsAll(FollowTraderInfoEntity.IS_ALL_N); followTraderInfoEntity.setProfitRatio(BigDecimal.ZERO); followTraderInfoEntity.setVerifyStatus(FollowTraderInfoEntity.VERIFYSTATUS_ING); @@ -925,7 +1009,22 @@ TradeProfitInfoVo tradeProfitInfoVo = new TradeProfitInfoVo(); //获取【交易员信息表】数据 FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectTraderInfoByMemberId(memberId); + Date entryTime = followTraderInfoEntity.getEntryTime(); + int datePoor = getDatePoor(entryTime, new Date()); + tradeProfitInfoVo.setEntryDays(datePoor); if(ObjectUtil.isNotEmpty(followTraderInfoEntity)) { + Integer followNum = followTraderInfoEntity.getFollowNum(); + //获取当前跟单人数 + Map<String, Object> columnMap = new HashMap<>(); + columnMap.put("trade_id", followTraderInfoEntity.getId()); + columnMap.put("is_follow", FollowFollowerProfitEntity.IS_FOLLOW_Y); + List<FollowFollowerProfitEntity> selectByMap = followFollowerProfitDao.selectByMap(columnMap); + if(CollUtil.isNotEmpty(selectByMap)) { + tradeProfitInfoVo.setFollowNumNow(selectByMap.size()); + }else { + tradeProfitInfoVo.setFollowNumNow(0); + } + tradeProfitInfoVo.setFollowNum(followNum); String avatar = followTraderInfoEntity.getAvatar(); tradeProfitInfoVo.setAvatar(avatar); String nickname = followTraderInfoEntity.getNickname(); @@ -948,7 +1047,11 @@ tradeProfitInfoVo.setTotalFollowerCnt(totalFollowerCnt); BigDecimal totalOrderCnt = followTraderProfitInfoVo.getTotalOrderCnt(); tradeProfitInfoVo.setTotalOrderCnt(totalOrderCnt); - } + BigDecimal thirtyProfitRatio = followTraderProfitInfoVo.getThirtyProfitRatio(); + tradeProfitInfoVo.setThirtyProfitRatio(thirtyProfitRatio); + BigDecimal thirtyRatio = followTraderProfitInfoVo.getThirtyRatio(); + tradeProfitInfoVo.setThirtyRatio(thirtyRatio); + } return Result.ok(tradeProfitInfoVo); } @@ -1064,6 +1167,7 @@ BigDecimal rewardAmount = orderEntity.getRewardAmount(); allRewardAmount = allRewardAmount.add(rewardAmount); BigDecimal rewardRatio = orderEntity.getRewardRatio(); + rewardRatio = rewardRatio == null ? BigDecimal.ZERO : rewardRatio; allRewardRatio = allRewardRatio.add(rewardRatio); } } @@ -1086,7 +1190,7 @@ myFollowOrderVo.setLeverRatio(leverRatio); BigDecimal rewardAmount = contractOrderEntity.getRewardAmount().setScale(2, BigDecimal.ROUND_DOWN); myFollowOrderVo.setRewardAmount(rewardAmount); - BigDecimal rewardRatio = contractOrderEntity.getRewardRatio().setScale(4, BigDecimal.ROUND_DOWN); + BigDecimal rewardRatio = contractOrderEntity.getRewardRatio() == null ? BigDecimal.ZERO : contractOrderEntity.getRewardRatio().setScale(4, BigDecimal.ROUND_DOWN); myFollowOrderVo.setRewardRatio(rewardRatio); int symbolCnt = contractOrderEntity.getSymbolCnt(); myFollowOrderVo.setSymbolCnt(symbolCnt); @@ -1135,8 +1239,18 @@ Long id = followFollowerProfitEntity.getId(); myFollowTraderInfoVo.setId(id); - BigDecimal totalPrincipal = followFollowerProfitEntity.getTotalPrincipal(); - myFollowTraderInfoVo.setTotalPrincipal(totalPrincipal); + + Long tradeId = followFollowerProfitEntity.getTradeId(); + //获取当前跟随者最后一个历史跟单的保证金 + BigDecimal bondAmount = BigDecimal.ZERO; + List<BigDecimal> bondamounts = followFollowerProfitDao.selectBondAmountByTradeIdAndMemberId(followMemberId,tradeId); + if(CollUtil.isNotEmpty(bondamounts)){ + bondAmount = bondamounts.get(0).setScale(2, BigDecimal.ROUND_DOWN); + + } + myFollowTraderInfoVo.setTotalPrincipal(bondAmount); +// BigDecimal totalPrincipal = followFollowerProfitEntity.getTotalPrincipal(); +// myFollowTraderInfoVo.setTotalPrincipal(totalPrincipal); BigDecimal totalProfit = followFollowerProfitEntity.getTotalProfit(); myFollowTraderInfoVo.setTotalProfit(totalProfit.setScale(2, BigDecimal.ROUND_DOWN)); @@ -1251,6 +1365,64 @@ List<BeTraderConditionVo> beTraderConditionVos = followTraderInfoDao.selectBeTraderCondition(type); return Result.ok(beTraderConditionVos); } + + @Override + public Result getDocumentaryOrderSetState(String tradeId) { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + long parseLong = Long.parseLong(tradeId); + //交易员判断 + Map<String, Object> columnMapTrader = new HashMap<>(); + columnMapTrader.put("member_id", memberId); + List<FollowTraderInfoEntity> followTraderInfoEntitys = followTraderInfoDao.selectByMap(columnMapTrader); + + //只能跟随一个人 + Map<String, Object> columnMaps = new HashMap<>(); + columnMaps.put("member_id", memberId); + List<FollowFollowerSettingEntity> followFollowerSettingEntityAllows = followFollowerSettingDao.selectByMap(columnMaps); + + //没有交易员审核记录 + if(CollUtil.isEmpty(followTraderInfoEntitys)) { + //没有跟随记录 + if(CollUtil.isEmpty(followFollowerSettingEntityAllows)) { + return Result.ok("获取成功"); + }else { + //有跟随记录 + if(followFollowerSettingEntityAllows.size() == 1) { + Long tradeIdAllow = followFollowerSettingEntityAllows.get(0).getTraderId(); + if(parseLong == tradeIdAllow) { + return Result.ok("获取成功"); + }else{ + return Result.fail("最多跟单一人"); + } + }else{ + return Result.fail("已经跟随多人,请修改"); + } + } + }else{ + Integer verifyStatus = followTraderInfoEntitys.get(0).getVerifyStatus(); + if(FollowTraderInfoEntity.VERIFYSTATUS_N == verifyStatus) { + if(CollUtil.isEmpty(followFollowerSettingEntityAllows)) { + return Result.ok("获取成功"); + }else { + if(followFollowerSettingEntityAllows.size() == 1) { + Long tradeIdAllow = followFollowerSettingEntityAllows.get(0).getTraderId(); + if(parseLong == tradeIdAllow) { + return Result.ok("获取成功"); + }else{ + return Result.fail("最多跟单一人"); + } + }else{ + return Result.fail("已经跟随多人,请修改"); + } + } + }else if(FollowTraderInfoEntity.VERIFYSTATUS_Y == verifyStatus){ + return Result.fail("交易员不允许跟单"); + }else { + return Result.fail("交易员审核中不允许跟单"); + } + } + } -- Gitblit v1.9.1