From cd7a3a9b0960e700c4bd9c0f9c57ac3db98b6301 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Fri, 07 Aug 2020 17:02:27 +0800 Subject: [PATCH] Merge branch 'follow' of https://gitee.com/chonggaoxiao/new_excoin into follow --- src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java | 155 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 140 insertions(+), 15 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 24a6252..c9beb3a 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 @@ -10,6 +10,8 @@ import javax.annotation.Resource; import javax.validation.Valid; +import com.xcong.excoin.modules.documentary.common.NoticeConstant; +import com.xcong.excoin.utils.*; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -21,8 +23,10 @@ import com.xcong.excoin.modules.coin.dao.OrderCoinsDao; import com.xcong.excoin.modules.coin.parameter.dto.RecordsPageDto; import com.xcong.excoin.modules.contract.dao.ContractHoldOrderDao; +import com.xcong.excoin.modules.contract.dao.ContractOrderDao; import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity; import com.xcong.excoin.modules.contract.entity.ContractOrderEntity; +import com.xcong.excoin.modules.documentary.dao.FollowFollowerNoticeDao; import com.xcong.excoin.modules.documentary.dao.FollowFollowerOrderRelationDao; import com.xcong.excoin.modules.documentary.dao.FollowFollowerProfitDao; import com.xcong.excoin.modules.documentary.dao.FollowFollowerSettingDao; @@ -31,6 +35,7 @@ import com.xcong.excoin.modules.documentary.dao.FollowTraderProfitInfoDao; import com.xcong.excoin.modules.documentary.dto.CancelDocumentaryOrderSetDto; import com.xcong.excoin.modules.documentary.dto.DocumentaryOrderSetDto; +import com.xcong.excoin.modules.documentary.dto.FollowFollowerNoticeDto; import com.xcong.excoin.modules.documentary.dto.FollowRecordsDto; import com.xcong.excoin.modules.documentary.dto.HistoryOrderRecordsDto; import com.xcong.excoin.modules.documentary.dto.MyFollowOrderDto; @@ -40,6 +45,7 @@ import com.xcong.excoin.modules.documentary.dto.TradeOrderInfoDto; import com.xcong.excoin.modules.documentary.dto.UpdateDocumentaryOrderSetDto; import com.xcong.excoin.modules.documentary.dto.UpdateTradeSetInfoDto; +import com.xcong.excoin.modules.documentary.entity.FollowFollowerNoticeEntity; import com.xcong.excoin.modules.documentary.entity.FollowFollowerOrderRelationEntity; import com.xcong.excoin.modules.documentary.entity.FollowFollowerProfitEntity; import com.xcong.excoin.modules.documentary.entity.FollowFollowerSettingEntity; @@ -48,6 +54,7 @@ import com.xcong.excoin.modules.documentary.service.DocumentaryService; import com.xcong.excoin.modules.documentary.vo.DocumentaryOrderInfoVo; import com.xcong.excoin.modules.documentary.vo.DocumentaryOrderSetInfoVo; +import com.xcong.excoin.modules.documentary.vo.FollowFollowerNoticeVo; import com.xcong.excoin.modules.documentary.vo.FollowInfoVo; import com.xcong.excoin.modules.documentary.vo.FollowRecordsVo; import com.xcong.excoin.modules.documentary.vo.FollowTraderProfitInfoVo; @@ -68,10 +75,6 @@ import com.xcong.excoin.modules.member.entity.MemberLevelRateEntity; import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity; import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity; -import com.xcong.excoin.utils.CacheSettingUtils; -import com.xcong.excoin.utils.CoinTypeConvert; -import com.xcong.excoin.utils.MessageSourceUtils; -import com.xcong.excoin.utils.RedisUtils; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; @@ -101,6 +104,8 @@ @Resource private ContractHoldOrderDao contractHoldOrderDao; @Resource + private ContractOrderDao contractOrderDao; + @Resource private MemberLevelRateDao memberLevelRateDao; @Resource private MemberWalletContractDao memberWalletContractDao; @@ -108,6 +113,8 @@ private FollowFollowerSettingDao followFollowerSettingDao; @Resource private FollowFollowerOrderRelationDao followFollowerOrderRelationDao; + @Resource + private FollowFollowerNoticeDao followFollowerNoticeDao; @Override @@ -279,7 +286,7 @@ myFollowOrderVo.setLeverRatio(leverRatio); BigDecimal rewardAmount = contractOrderEntity.getRewardAmount().setScale(2, BigDecimal.ROUND_DOWN); myFollowOrderVo.setRewardAmount(rewardAmount); - BigDecimal rewardRatio = contractOrderEntity.getRewardRatio().setScale(2, BigDecimal.ROUND_DOWN); + BigDecimal rewardRatio = contractOrderEntity.getRewardRatio().setScale(4, BigDecimal.ROUND_DOWN); myFollowOrderVo.setRewardRatio(rewardRatio); int symbolCnt = contractOrderEntity.getSymbolCnt(); myFollowOrderVo.setSymbolCnt(symbolCnt); @@ -449,7 +456,7 @@ FollowTraderInfoEntity traderInfoEntity = followTraderInfoDao.selectTraderInfoByMemberId(memberId); if (traderInfoEntity != null) { - return Result.fail("交易员不能进行跟单"); + return Result.fail(MessageSourceUtils.getString("documentary_service_0014")); } FollowFollowerSettingEntity isExistSetting = followFollowerSettingDao.selectOneBymemberIdAndTradeId(memberId, traderId); @@ -469,6 +476,7 @@ //更新【跟随者收益】数据 Map<String, Object> columnMap = new HashMap<>(); columnMap.put("member_id", memberId); + columnMap.put("trade_id", traderId); List<FollowFollowerProfitEntity> selectByMap = followFollowerProfitDao.selectByMap(columnMap); if (CollUtil.isNotEmpty(selectByMap)) { FollowFollowerProfitEntity followFollowerProfitEntity = selectByMap.get(0); @@ -485,6 +493,28 @@ followFollowerProfitDao.insert(followFollowerProfitEntity); } } else { + //更新【跟随者收益】数据 + Map<String, Object> columnMap = new HashMap<>(); + columnMap.put("member_id", memberId); + columnMap.put("trade_id", traderId); + List<FollowFollowerProfitEntity> selectByMap = followFollowerProfitDao.selectByMap(columnMap); + if (CollUtil.isNotEmpty(selectByMap)) { + FollowFollowerProfitEntity followFollowerProfitEntity = selectByMap.get(0); + followFollowerProfitEntity.setIsFollow(FollowFollowerProfitEntity.IS_FOLLOW_Y); + followFollowerProfitDao.updateById(followFollowerProfitEntity); + }else { + FollowFollowerProfitEntity followFollowerProfitEntity = new FollowFollowerProfitEntity(); + followFollowerProfitEntity.setMemberId(memberId); + followFollowerProfitEntity.setTradeId(traderId); + FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectById(traderId); + Long traderMemberId = followTraderInfoEntity.getMemberId(); + followFollowerProfitEntity.setTradeMemberId(traderMemberId); + followFollowerProfitEntity.setTotalPrincipal(BigDecimal.ZERO); + followFollowerProfitEntity.setTotalProfit(BigDecimal.ZERO); + followFollowerProfitEntity.setIsFollow(FollowFollowerProfitEntity.IS_FOLLOW_Y); + followFollowerProfitDao.insert(followFollowerProfitEntity); + } + isExistSetting.setSymbols(documentaryOrderSetDto.getSymbols()); isExistSetting.setFollowType(documentaryOrderSetDto.getFollowType()); isExistSetting.setFollowCnt(documentaryOrderSetDto.getFollowCnt()); @@ -584,7 +614,7 @@ FollowTraderProfitInfoVo followTraderProfitInfoVo = followTraderProfitInfoDao.selectOneByMemberId(memberId); MemberEntity user = LoginUserUtils.getUser(); if(ObjectUtil.isNotEmpty(user)) { - FollowFollowerProfitEntity followFollowerProfitEntity = followFollowerProfitDao.selectDocumentaryOrderSetInfoBymemberIdAndTradeId(memberId, traderId); + FollowFollowerProfitEntity followFollowerProfitEntity = followFollowerProfitDao.selectDocumentaryOrderSetInfoBymemberIdAndTradeId(user.getId(), traderId); if(ObjectUtil.isNotEmpty(followFollowerProfitEntity)) { followTraderProfitInfoVo.setDocumentaryType(followFollowerProfitEntity.getIsFollow()); }else { @@ -612,6 +642,24 @@ if(MemberEntity.CERTIFY_STATUS_Y != certifyStatus) { return Result.fail(MessageSourceUtils.getString("member_controller_0009")); } + + //不可以处于跟单状态 + Map<String, Object> columnMaps = new HashMap<>(); + columnMaps.put("member_id", memberId); + columnMaps.put("is_follow", 1); + List<FollowFollowerProfitEntity> followFollowerProfitEntitys = followFollowerProfitDao.selectByMap(columnMaps); + if(CollUtil.isNotEmpty(followFollowerProfitEntitys)) { + return Result.fail(MessageSourceUtils.getString("documentary_service_0015")); + } + + //合约不能持仓 + Map<String, Object> contractHoldColumnMap = new HashMap<>(); + contractHoldColumnMap.put("member_id", memberId); + List<ContractHoldOrderEntity> contractHoldOrderEntitys = contractHoldOrderDao.selectByMap(contractHoldColumnMap); + if(CollUtil.isNotEmpty(contractHoldOrderEntitys)) { + return Result.fail(MessageSourceUtils.getString("documentary_service_0013")); + } + Map<String, Object> columnMap = new HashMap<>(); columnMap.put("member_id", memberId); List<FollowTraderInfoEntity> selectByMap = followTraderInfoDao.selectByMap(columnMap); @@ -622,7 +670,8 @@ //新增【交易员信息表】数据 FollowTraderInfoEntity followTraderInfoEntity = new FollowTraderInfoEntity(); followTraderInfoEntity.setMemberId(memberId); - followTraderInfoEntity.setAvatar(FollowTraderInfoEntity.AVATAR_DEFAULT); + followTraderInfoEntity.setProfitRatio(BigDecimal.valueOf(0.1)); +// followTraderInfoEntity.setAvatar(FollowTraderInfoEntity.AVATAR_DEFAULT); String phone = memberEntity.getPhone(); String email = memberEntity.getEmail(); if(StrUtil.isNotEmpty(phone)) { @@ -798,7 +847,7 @@ // 回报率 BigDecimal returnRate = rewardRatio.divide(contractHoldOrderEntity.getBondAmount().subtract(contractHoldOrderEntity.getOpeningFeeAmount()), 8, BigDecimal.ROUND_DOWN); - myFollowOrderVo.setRewardRatio(returnRate.setScale(2, BigDecimal.ROUND_DOWN)); + myFollowOrderVo.setRewardRatio(returnRate.setScale(4, BigDecimal.ROUND_DOWN)); myFollowOrderVos.add(myFollowOrderVo); } @@ -820,11 +869,42 @@ if(CollUtil.isNotEmpty(records)) { for(ContractOrderEntity contractOrderEntity : records) { TradeHistoryOrderInfoVo myFollowOrderVo = new TradeHistoryOrderInfoVo(); + //获取【跟随者-订单关联表】中的累计数据 + BigDecimal allRewardAmount = BigDecimal.ZERO; + BigDecimal allRewardRatio = BigDecimal.ZERO; + + Long orderId = contractOrderEntity.getId(); + String orderNo = contractOrderEntity.getOrderNo(); + Map<String, Object> columnMapRelation = new HashMap<>(); + columnMapRelation.put("trade_order_no", orderNo); + columnMapRelation.put("trade_member_id", memberId); + columnMapRelation.put("order_type", 2); + columnMapRelation.put("is_show", 1); + List<FollowFollowerOrderRelationEntity> followFollowerOrderRelations = followFollowerOrderRelationDao.selectByMap(columnMapRelation); + if(CollUtil.isNotEmpty(followFollowerOrderRelations)) { + int size = followFollowerOrderRelations.size() - 1; + myFollowOrderVo.setFollowerNumber(size); + for(FollowFollowerOrderRelationEntity followFollowerOrderRelation : followFollowerOrderRelations) { + Long followerMemberId = followFollowerOrderRelation.getMemberId(); + if(!memberId.equals(followerMemberId)) { + Long followerOrderId = followFollowerOrderRelation.getOrderId(); + ContractOrderEntity orderEntity = contractOrderDao.selectById(followerOrderId); + BigDecimal rewardAmount = orderEntity.getRewardAmount(); + allRewardAmount = allRewardAmount.add(rewardAmount); + BigDecimal rewardRatio = orderEntity.getRewardRatio(); + allRewardRatio = allRewardRatio.add(rewardRatio); + } + } + }else { + myFollowOrderVo.setFollowerNumber(0); + } + myFollowOrderVo.setFollowerRewardAmount(allRewardAmount); + myFollowOrderVo.setFollowerRewardRatio(allRewardRatio); + //获取交易员信息 FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectTraderInfoByMemberId(memberId); String nickname = followTraderInfoEntity.getNickname(); myFollowOrderVo.setNickname(nickname); - Long orderId = contractOrderEntity.getId(); myFollowOrderVo.setOrderId(orderId); String symbol = contractOrderEntity.getSymbol(); myFollowOrderVo.setSymbol(symbol); @@ -834,7 +914,7 @@ myFollowOrderVo.setLeverRatio(leverRatio); BigDecimal rewardAmount = contractOrderEntity.getRewardAmount().setScale(2, BigDecimal.ROUND_DOWN); myFollowOrderVo.setRewardAmount(rewardAmount); - BigDecimal rewardRatio = contractOrderEntity.getRewardRatio().setScale(2, BigDecimal.ROUND_DOWN); + BigDecimal rewardRatio = contractOrderEntity.getRewardRatio().setScale(4, BigDecimal.ROUND_DOWN); myFollowOrderVo.setRewardRatio(rewardRatio); int symbolCnt = contractOrderEntity.getSymbolCnt(); myFollowOrderVo.setSymbolCnt(symbolCnt); @@ -848,7 +928,7 @@ myFollowOrderVo.setOpeningTime(openingTime); Date closingTime = contractOrderEntity.getClosingTime(); myFollowOrderVo.setClosingTime(closingTime); - String orderNo = contractOrderEntity.getOrderNo(); + myFollowOrderVo.setOrderNo(orderNo); myFollowOrderVos.add(myFollowOrderVo); } @@ -875,9 +955,9 @@ String phone = memberEntity.getPhone(); String email = memberEntity.getEmail(); if(StrUtil.isNotEmpty(phone)) { - myFollowTraderInfoVo.setAccount(phone); + myFollowTraderInfoVo.setNickname(phone); }else { - myFollowTraderInfoVo.setAccount(email); + myFollowTraderInfoVo.setNickname(email); } } @@ -904,9 +984,54 @@ FollowFollowerProfitEntity followFollowerProfitEntity = followFollowerProfitDao.selectById(id); followFollowerProfitEntity.setIsFollow(FollowFollowerProfitEntity.IS_FOLLOW_N); followFollowerProfitDao.updateById(followFollowerProfitEntity); - + + //删除【跟随者设置】 + Map<String, Object> columnMap = new HashMap<>(); + Long followMemberId = followFollowerProfitEntity.getMemberId(); + Long tradeId = followFollowerProfitEntity.getTradeId(); + columnMap.put("member_id", followMemberId); + columnMap.put("trader_id", tradeId); + List<FollowFollowerSettingEntity> selectByMap = followFollowerSettingDao.selectByMap(columnMap); + if(CollUtil.isNotEmpty(selectByMap)) { + for(FollowFollowerSettingEntity followFollowerSettingEntity : selectByMap) { + followFollowerSettingDao.deleteById(followFollowerSettingEntity.getId()); + } + } + + FollowTraderInfoEntity traderInfoEntity = followTraderInfoDao.selectTraderInfoByMemberId(memberId); + + if (traderInfoEntity != null) { + LogRecordUtils.insertFollowerNotice(memberId, NoticeConstant.STOP_FOLLOW_TITLE, StrUtil.format(NoticeConstant.STOP_FOLLOW_CONTENT, traderInfoEntity.getNickname())); + } return Result.ok(MessageSourceUtils.getString("member_service_0026")); } + + @Override + public Result getFollowFollowerNoticeList(FollowFollowerNoticeDto followFollowerNoticeDto) { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + List<FollowFollowerNoticeVo> arrayList = new ArrayList<>(); + + Page<FollowFollowerNoticeEntity> page = new Page<>(followFollowerNoticeDto.getPageNum(), followFollowerNoticeDto.getPageSize()); + FollowFollowerNoticeEntity followFollowerNoticeEntity = new FollowFollowerNoticeEntity(); + followFollowerNoticeEntity.setMemberId(memberId); + IPage<FollowFollowerNoticeEntity> followFollowerNoticelist = followFollowerNoticeDao.selectFollowFollowerNoticePage(page, followFollowerNoticeEntity); + List<FollowFollowerNoticeEntity> records = followFollowerNoticelist.getRecords(); + if(CollUtil.isNotEmpty(records)) { + for(FollowFollowerNoticeEntity followFollowerNotice : records) { + FollowFollowerNoticeVo followFollowerNoticeVo = new FollowFollowerNoticeVo(); + String title = followFollowerNotice.getTitle(); + followFollowerNoticeVo.setTitle(title); + String content = followFollowerNotice.getContent(); + followFollowerNoticeVo.setContent(content); + Date createTime = followFollowerNotice.getCreateTime(); + followFollowerNoticeVo.setCreateTime(createTime); + arrayList.add(followFollowerNoticeVo); + } + } + + return Result.ok(arrayList); + } -- Gitblit v1.9.1