| | |
| | | |
| | | import cc.mrbird.febs.common.contants.AppContants; |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | | import cc.mrbird.febs.common.tree.MatrixTree; |
| | | import cc.mrbird.febs.common.tree.MemberNode; |
| | | import cc.mrbird.febs.common.utils.LoginUserUtil; |
| | | import cc.mrbird.febs.common.utils.RedisUtils; |
| | |
| | | |
| | | private final MallOrderInfoMapper mallOrderInfoMapper; |
| | | private final MallAchieveRecordMapper mallAchieveRecordMapper; |
| | | private final DappAccountMoneyChangeDao dappAccountMoneyChangeDao; |
| | | |
| | | |
| | | |
| | |
| | | return; |
| | | } |
| | | |
| | | List<DataDictionaryCustom> dicList = dataDictionaryCustomMapper.selectDicByType(AppContants.AGENT_LEVEL); |
| | | DataDictionaryCustom dic = null; |
| | | for (DataDictionaryCustom dataDictionaryCustom : dicList) { |
| | | if (Integer.parseInt(dataDictionaryCustom.getValue()) == parentNode.CHILD.size()) { |
| | | dic = dataDictionaryCustom; |
| | | break; |
| | | MatrixTree matrixTree = MatrixTree.getInstance(); |
| | | List<MemberNode> allNodes = matrixTree.getAllAncestors(parentNode); // 获取某一个MemberNode的所有上级节点 |
| | | allNodes.add(parentNode); |
| | | if(CollUtil.isEmpty(allNodes)){ |
| | | return; |
| | | } |
| | | /** |
| | | * 更新所有上级的小区业绩 |
| | | */ |
| | | for(MemberNode memberNode : allNodes){ |
| | | BigDecimal smallAchieve = BigDecimal.ZERO; |
| | | List<MemberNode> allNodesChildList = memberNode.getCHILD(); |
| | | if(CollUtil.isNotEmpty(allNodesChildList)){ |
| | | List<Long> left = allNodesChildList.stream().filter(allNodesChild -> allNodesChild.getType() == 1).map(MemberNode::getMemberId).collect(Collectors.toList()); |
| | | List<Long> right = allNodesChildList.stream().filter(allNodesChild -> allNodesChild.getType() == 2).map(MemberNode::getMemberId).collect(Collectors.toList()); |
| | | |
| | | BigDecimal leftAmount = mallAchieveRecordMapper.selectSumAchieveByMemberIdList(left); |
| | | |
| | | BigDecimal rightAmount = mallAchieveRecordMapper.selectSumAchieveByMemberIdList(right); |
| | | if(leftAmount.compareTo(rightAmount) > 0){ |
| | | smallAchieve = rightAmount; |
| | | }else{ |
| | | smallAchieve = leftAmount; |
| | | } |
| | | //更新用户的区域业绩 |
| | | DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberNode.getMemberId()); |
| | | dappMemberEntity.setUsdtBalance(smallAchieve); |
| | | dappMemberEntity.setLeftAchieve(leftAmount); |
| | | dappMemberEntity.setRightAchieve(rightAmount); |
| | | dappMemberDao.updateById(dappMemberEntity); |
| | | log.info("用户:{},leftAchieve :{}, rightAchieve:{}, smallAchieve:{}", |
| | | dappMemberEntity.getAddress(), leftAmount, rightAmount, smallAchieve); |
| | | |
| | | /** |
| | | * 判断是否符合升级条件 |
| | | */ |
| | | String nextLevel = MemberLevelEnum.MEMBER.getNextLevel(dappMemberEntity.getAccountType()); |
| | | DataDictionaryCustom memberLevelDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.V1.getType() |
| | | , nextLevel); |
| | | if(ObjectUtil.isNotEmpty(memberLevelDic)){ |
| | | String value = memberLevelDic.getValue(); |
| | | cn.hutool.json.JSONObject parseObj = JSONUtil.parseObj(value); |
| | | BigDecimal smallAchieveDic = new BigDecimal(parseObj.get("smallAchieve").toString()); |
| | | if(smallAchieve.compareTo(smallAchieveDic) >= 0){ |
| | | //升级 |
| | | dappMemberEntity.setAccountType(nextLevel); |
| | | dappMemberDao.updateById(dappMemberEntity); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (dic == null) { |
| | | @Override |
| | | public void memberPerk() { |
| | | List<DappMemberEntity> dappMemberEntityList = dappMemberDao.selectMemberByActiveStatus(); |
| | | if(CollUtil.isEmpty(dappMemberEntityList)){ |
| | | return; |
| | | } |
| | | DataDictionaryCustom staticReleaseDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.STATIC_RELEASE.getType(), |
| | | DataDictionaryEnum.STATIC_RELEASE.getCode() |
| | | ); |
| | | if(ObjectUtil.isEmpty(staticReleaseDic)){ |
| | | return; |
| | | } |
| | | BigDecimal staticRelease = new BigDecimal(staticReleaseDic.getValue() == null ? "0" : staticReleaseDic.getValue()); |
| | | if(BigDecimal.ZERO.compareTo(staticRelease) >= 0){ |
| | | return; |
| | | } |
| | | for(DappMemberEntity dappMemberEntity : dappMemberEntityList){ |
| | | if(1 != dappMemberEntity.getActiveStatus()){ |
| | | continue; |
| | | } |
| | | Long perkMemberId = dappMemberEntity.getId(); |
| | | //获取当前用户所有进行中的业绩释放 |
| | | List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(perkMemberId); |
| | | |
| | | if(CollUtil.isEmpty(mallAchieveRecords)){ |
| | | continue; |
| | | } |
| | | /** |
| | | * 按照订单、比例生成对应的静态释放 |
| | | */ |
| | | for(MallAchieveRecord mallAchieveRecord : mallAchieveRecords){ |
| | | //释放总额 |
| | | BigDecimal costAmount = mallAchieveRecord.getCostAmount(); |
| | | //剩余 |
| | | BigDecimal amount = mallAchieveRecord.getAmount(); |
| | | if(BigDecimal.ZERO.compareTo(amount) >= 0){ |
| | | mallAchieveRecord.setIsNormal(2); |
| | | mallAchieveRecordMapper.updateById(mallAchieveRecord); |
| | | continue; |
| | | } |
| | | //每日释放金额 |
| | | BigDecimal eachDayPerk = costAmount.multiply(staticRelease).setScale(2,BigDecimal.ROUND_DOWN); |
| | | if(eachDayPerk.compareTo(amount) >= 0){ |
| | | eachDayPerk = amount; |
| | | mallAchieveRecord.setIsNormal(2); |
| | | } |
| | | DappMemberEntity mallAchieveMemberEntity = dappMemberDao.selectById(mallAchieveRecord.getMemberId()); |
| | | sendPerk(mallAchieveMemberEntity,eachDayPerk,mallAchieveRecord.getOrderId(),FundFlowEnum.STATIC_RELEASE.getCode()); |
| | | //实时更新用户等级 |
| | | chainProducer.sendAutoLevelUpTeamMsg(perkMemberId); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void speedAutoLevelUpTeamMsg(Long memberId) { |
| | | DappMemberEntity member = dappMemberDao.selectById(memberId); |
| | | if(StrUtil.isBlank(member.getRefererIds())) { |
| | | return; |
| | | } |
| | | |
| | | MallMember parentMember = memberMapper.selectById(parentNode.getMemberId()); |
| | | parentMember.setChildNodeCnt(parentNode.CHILD.size()); |
| | | int levelCode = MemberLevelEnum.getLevelCode(parentMember.getLevel()); |
| | | if (Integer.parseInt(dic.getValue()) >= levelCode) { |
| | | parentMember.setLevel(dic.getCode()); |
| | | List<String> ids = StrUtil.split(member.getRefererIds(), ','); |
| | | List<DappMemberEntity> parentMembers = dappMemberDao.selectByInviteIds(ids); |
| | | for (DappMemberEntity parent : parentMembers) { |
| | | //V7不能再升级了 |
| | | if (MemberLevelEnum.V7.getType().equals(member.getAccountType())) { |
| | | continue; |
| | | } |
| | | |
| | | String nextLevelName = MemberLevelEnum.MEMBER.getNextLevel(parent.getAccountType()); |
| | | |
| | | DataDictionaryCustom newLevelDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode("TEAM_LEVEL", nextLevelName); |
| | | if(ObjectUtil.isEmpty(newLevelDic)){ |
| | | continue; |
| | | } |
| | | TeamLevelPerk teamLevelPerk = JSONObject.parseObject(newLevelDic.getValue(), TeamLevelPerk.class); |
| | | |
| | | //需要判断小区业绩 |
| | | if( MemberLevelEnum.V1.getType().equals(nextLevelName)){ |
| | | if (!teamAchieve(parent, teamLevelPerk)) { |
| | | continue; |
| | | } |
| | | }else{ |
| | | if (!agentCntFinish(parent, teamLevelPerk)) { |
| | | continue; |
| | | } |
| | | if (!teamAchieveOther(parent, teamLevelPerk)) { |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | parent.setAccountType(nextLevelName); |
| | | dappMemberDao.updateById(parent); |
| | | } |
| | | memberMapper.updateById(parentMember); |
| | | } |
| | | /** |
| | | * 判断下级代理数量是否达标 |
| | | * |
| | | * @return |
| | | */ |
| | | private boolean agentCntFinish(DappMemberEntity member,TeamLevelPerk teamLevelPerk) { |
| | | if (teamLevelPerk.getLastAgentCnt() == null || teamLevelPerk.getLastAgentCnt() == 0) { |
| | | return true; |
| | | } |
| | | |
| | | // 直推用户 |
| | | List<DappMemberEntity> directMember = dappMemberDao.selectMemberInfoByRefererId(member.getInviteId()); |
| | | if (CollUtil.isEmpty(directMember)) { |
| | | return false; |
| | | } |
| | | |
| | | // 用户团队达到指定代理数量,且都不在同一条线 |
| | | int i = 0; |
| | | for (DappMemberEntity child : directMember) { |
| | | List<DappMemberEntity> mallMembers = dappMemberDao.selectChildAgentList(child.getInviteId(), member.getAccountType()); |
| | | if (CollUtil.isNotEmpty(mallMembers)) { |
| | | i++; |
| | | } |
| | | } |
| | | |
| | | if (i >= teamLevelPerk.getLastAgentCnt()) { |
| | | return true; |
| | | } |
| | | |
| | | log.info("用户:{}代理数量未达标, 当前等级:{}, 当前数量:{}, 目标数量:{}", member.getAddress(), member.getAccountType(), i, teamLevelPerk.getLastAgentCnt()); |
| | | return false; |
| | | } |
| | | /** |
| | | * 团队业绩是否达标 |
| | | * 除去直属的最大的一个业绩团队,剩余的所有业绩之和 |
| | | */ |
| | | private boolean teamAchieveOther(DappMemberEntity member, TeamLevelPerk teamLevelPerk ) { |
| | | BigDecimal teamIncome = teamLevelPerk.getSmallAchieve(); |
| | | //总业绩 |
| | | BigDecimal teamIncomeMax = BigDecimal.ZERO; |
| | | //所有直推团队,就是这个会员的所有区域的业绩。 |
| | | |
| | | // 直推用户 |
| | | List<DappMemberEntity> childs = dappMemberDao.selectMemberInfoByRefererId(member.getInviteId()); |
| | | List<String> childsInviteIds = childs.stream().map(DappMemberEntity::getInviteId).collect(Collectors.toList()); |
| | | for(String inviteId : childsInviteIds){ |
| | | BigDecimal totalIncomeMember = dappMemberDao.selectAchieveRecordByInviteId(inviteId); |
| | | teamIncomeMax = teamIncomeMax.add(totalIncomeMember); |
| | | } |
| | | |
| | | if (teamIncomeMax.compareTo(teamIncome) >= 0) { |
| | | return true; |
| | | } |
| | | log.info("用户:{}团队业绩未达标, 当前等级:{}, 当前业绩:{}, 目标业绩:{}", member.getAddress(), member.getAccountType(), teamIncomeMax, teamIncome); |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 团队业绩是否达标 |
| | | * 除去直属的最大的一个业绩团队,剩余的所有业绩之和 |
| | | */ |
| | | private boolean teamAchieve(DappMemberEntity member, TeamLevelPerk teamLevelPerk ) { |
| | | BigDecimal teamIncome = teamLevelPerk.getSmallAchieve(); |
| | | //业绩集合 |
| | | List<BigDecimal> list = new ArrayList<>(); |
| | | //总业绩 |
| | | BigDecimal teamIncomeMax = BigDecimal.ZERO; |
| | | //所有直推团队,就是这个会员的所有区域的业绩。 |
| | | |
| | | // 直推用户 |
| | | List<DappMemberEntity> childs = dappMemberDao.selectMemberInfoByRefererId(member.getInviteId()); |
| | | List<String> childsInviteIds = childs.stream().map(DappMemberEntity::getInviteId).collect(Collectors.toList()); |
| | | for(String inviteId : childsInviteIds){ |
| | | BigDecimal totalIncomeMember = dappMemberDao.selectAchieveRecordByInviteId(inviteId); |
| | | teamIncomeMax = teamIncomeMax.add(totalIncomeMember); |
| | | list.add(totalIncomeMember); |
| | | } |
| | | //去掉一个最大区的业绩 |
| | | BigDecimal bigMax = list.stream().max(BigDecimal::compareTo).get(); |
| | | teamIncomeMax = teamIncomeMax.subtract(bigMax); |
| | | |
| | | if (teamIncomeMax.compareTo(teamIncome) >= 0) { |
| | | return true; |
| | | } |
| | | log.info("用户:{}团队业绩未达标, 当前等级:{}, 当前业绩:{}, 目标业绩:{}", member.getAddress(), member.getAccountType(), teamIncomeMax, teamIncome); |
| | | return false; |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public BigDecimal getRealNum(Long memberId, BigDecimal amount) { |
| | | BigDecimal returnAmount = BigDecimal.ZERO; |
| | | DappWalletMineEntity dappWalletMineEntity = dappWalletMineDao.selectByMemberId(memberId); |
| | | BigDecimal totalScore = dappWalletMineEntity.getTotalAmount(); |
| | | if(totalScore.compareTo(amount) >= 0){ |
| | | returnAmount = amount; |
| | | }else{ |
| | | returnAmount = totalScore; |
| | | } |
| | | return returnAmount; |
| | | } |
| | | |
| | | @Override |
| | | public void directMemberPerk() { |
| | | List<DappMemberEntity> dappMemberEntityList = dappMemberDao.selectMemberByActiveStatus(); |
| | | if(CollUtil.isEmpty(dappMemberEntityList)){ |
| | | return; |
| | | } |
| | | /** |
| | | * 直推消费分享:享受直接分享人每日消费金额释放的100%加速; |
| | | */ |
| | | for(DappMemberEntity dappMemberEntity : dappMemberEntityList){ |
| | | Long memberId = dappMemberEntity.getId(); |
| | | String inviteId = dappMemberEntity.getInviteId(); |
| | | //该用户全部的直推用户 |
| | | List<DappMemberEntity> dappMemberEntities = dappMemberDao.selectChildMemberDirectOrNot(inviteId, 1, 1); |
| | | for(DappMemberEntity directMember : dappMemberEntities){ |
| | | Long directMemberId = directMember.getId(); |
| | | chainProducer.sendDirectPerkMsg(directMemberId); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void speedDirectPerkMsg(Long memberId) { |
| | | DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId); |
| | | if(1 != dappMemberEntity.getActiveStatus()){ |
| | | return; |
| | | } |
| | | |
| | | DataDictionaryCustom directReleaseDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.DIRECT_RELEASE.getType(), |
| | | DataDictionaryEnum.DIRECT_RELEASE.getCode() |
| | | ); |
| | | if(ObjectUtil.isEmpty(directReleaseDic)){ |
| | | return; |
| | | } |
| | | BigDecimal directRelease = new BigDecimal(directReleaseDic.getValue() == null ? "0" : directReleaseDic.getValue()); |
| | | if(BigDecimal.ZERO.compareTo(directRelease) >= 0){ |
| | | return; |
| | | } |
| | | DappMemberEntity parentMember = dappMemberDao.selectMemberInfoByInviteId(dappMemberEntity.getRefererId()); |
| | | /** |
| | | * 获取用户前一天的所有返利记录 |
| | | */ |
| | | List<DappFundFlowEntity> dappFundFlowEntities = dappFundFlowDao.selectListByMemberIdAndTypeAndDate(memberId, |
| | | FundFlowEnum.STATIC_RELEASE.getCode(),DateUtil.now()); |
| | | for(DappFundFlowEntity dappFundFlowEntity : dappFundFlowEntities){ |
| | | BigDecimal staticReleaseAmount = dappFundFlowEntity.getAmount(); |
| | | BigDecimal directReleaseAmount = staticReleaseAmount.multiply(directRelease).setScale(2, BigDecimal.ROUND_DOWN); |
| | | sendPerk(parentMember,directReleaseAmount,dappFundFlowEntity.getSystemProfitId(),FundFlowEnum.DIRECT_AMOUNT.getCode()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void teamStaticPerk() { |
| | | List<DappMemberEntity> dappMemberEntities = dappMemberDao.selectMemberByAccountType(MemberLevelEnum.V1.getType()); |
| | | if(CollUtil.isEmpty(dappMemberEntities)){ |
| | | return; |
| | | } |
| | | |
| | | //平级 |
| | | DataDictionaryCustom teamPerkEqualsDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.TEAM_PERK_LEVEL_EQUALS.getType(), |
| | | DataDictionaryEnum.TEAM_PERK_LEVEL_EQUALS.getCode()); |
| | | BigDecimal teamPerkEquals = new BigDecimal(ObjectUtil.isEmpty(teamPerkEqualsDic) ? "0.1" : teamPerkEqualsDic.getValue()); |
| | | DataDictionaryCustom staticReleaseDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.STATIC_RELEASE.getType(), |
| | | DataDictionaryEnum.STATIC_RELEASE.getCode()); |
| | | BigDecimal staticRelease = new BigDecimal(ObjectUtil.isEmpty(staticReleaseDic) ? "0.006" : staticReleaseDic.getValue()); |
| | | |
| | | for(DappMemberEntity dappMemberEntity : dappMemberEntities){ |
| | | if(StrUtil.isNotEmpty(dappMemberEntity.getRefererIds())){ |
| | | String referrerIds = dappMemberEntity.getRefererIds(); |
| | | List<String> referrerIdList = StrUtil.splitTrim(referrerIds, ","); |
| | | |
| | | if(CollUtil.isNotEmpty(referrerIdList)){ |
| | | List<DappMemberEntity> mallMemberTeamPerk = dappMemberDao.selectByInviteIds(referrerIdList); |
| | | |
| | | if(CollUtil.isNotEmpty(mallMemberTeamPerk)){ |
| | | String levelNormal = MemberLevelEnum.V1.getType(); |
| | | BigDecimal cashPercentNormal = BigDecimal.ZERO; |
| | | |
| | | for(DappMemberEntity teamPerkMember : mallMemberTeamPerk){ |
| | | String level = teamPerkMember.getAccountType(); |
| | | //比较两个级别的大小,level大于levelNormal返回1 |
| | | int compareMin = MemberLevelEnum.V1.compareLevel(level, levelNormal); |
| | | int compareMax = MemberLevelEnum.V1.compareLevel(MemberLevelEnum.V7.getType(), level); |
| | | if(compareMin >= 1 && compareMax >= 1){ |
| | | DataDictionaryCustom teamPerkMemberDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | "TEAM_LEVEL", level); |
| | | TeamLevelPerk adminAgentInfo = JSONObject.parseObject(teamPerkMemberDic.getValue(), TeamLevelPerk.class); |
| | | BigDecimal cashPercent = adminAgentInfo.getTeamPercent(); |
| | | //极差 |
| | | if(MemberLevelEnum.V1.compareLevel(levelNormal, level) == 0){ |
| | | //平级 |
| | | cashPercent = cashPercent.subtract(teamPerkEquals); |
| | | }else{ |
| | | cashPercent = cashPercent.subtract(cashPercentNormal); |
| | | } |
| | | //总业绩 |
| | | BigDecimal teamIncomeMax = BigDecimal.ZERO; |
| | | //所有直推团队,就是这个会员的所有区域的业绩。 |
| | | |
| | | // 直推用户 |
| | | List<DappMemberEntity> childs = dappMemberDao.selectMemberInfoByRefererId(teamPerkMember.getInviteId()); |
| | | List<String> childsInviteIds = childs.stream().map(DappMemberEntity::getInviteId).collect(Collectors.toList()); |
| | | for(String inviteId : childsInviteIds){ |
| | | BigDecimal totalIncomeMember = dappMemberDao.selectAllAchieveByInviteId(inviteId); |
| | | teamIncomeMax = teamIncomeMax.add(totalIncomeMember); |
| | | } |
| | | if(BigDecimal.ZERO.compareTo(teamIncomeMax) >= 0){ |
| | | continue; |
| | | } |
| | | //V1加速团队静态收益的15%=每日静态的20000*6‰*15%=18元的额外释放加速 |
| | | BigDecimal cashAmount = teamIncomeMax.multiply(cashPercent).multiply(staticRelease).setScale(2, BigDecimal.ROUND_DOWN); |
| | | |
| | | BigDecimal bigDecimal = sendPerk(teamPerkMember, cashAmount, null, FundFlowEnum.TEAM_PERK.getCode()); |
| | | levelNormal = level; |
| | | cashPercentNormal = adminAgentInfo.getTeamPercent(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private BigDecimal sendPerk(DappMemberEntity parentMember,BigDecimal directReleaseAmount,Long orderId |
| | | ,Integer fundFlowEnumType){ |
| | | |
| | | BigDecimal realScoreReduce = BigDecimal.ZERO; |
| | | //用户减少赠送积分 |
| | | DappWalletMineEntity dappWalletMineEntity = dappWalletMineDao.selectByMemberId(parentMember.getId()); |
| | | BigDecimal totalScore = dappWalletMineEntity.getTotalAmount(); |
| | | BigDecimal availableScore = dappWalletMineEntity.getAvailableAmount(); |
| | | if(BigDecimal.ZERO.compareTo(totalScore) >= 0){ |
| | | parentMember.setActiveStatus(2); |
| | | dappMemberDao.updateById(parentMember); |
| | | return realScoreReduce; |
| | | } |
| | | if(directReleaseAmount.compareTo(totalScore) > 0){ |
| | | realScoreReduce = totalScore; |
| | | }else{ |
| | | realScoreReduce = directReleaseAmount; |
| | | } |
| | | BigDecimal totalScoreRelease = totalScore.subtract(realScoreReduce); |
| | | BigDecimal availableScoreRelease = availableScore.subtract(realScoreReduce); |
| | | //更新积分账户 |
| | | dappWalletMineEntity.setTotalAmount(totalScoreRelease); |
| | | dappWalletMineEntity.setAvailableAmount(availableScoreRelease); |
| | | dappWalletMineDao.updateById(dappWalletMineEntity); |
| | | //插入积分流水 |
| | | DappFundFlowEntity scoreFlow = new DappFundFlowEntity( |
| | | parentMember.getId(), |
| | | realScoreReduce.negate(), |
| | | FundFlowEnum.REDUCE_SCORE.getCode(), |
| | | DappFundFlowEntity.WITHDRAW_STATUS_AGREE, |
| | | BigDecimal.ZERO, |
| | | orderId); |
| | | dappFundFlowDao.insert(scoreFlow); |
| | | DappAccountMoneyChangeEntity reduceScoreAMC = new DappAccountMoneyChangeEntity( |
| | | parentMember.getId(), |
| | | totalScore, |
| | | realScoreReduce.negate(), |
| | | totalScoreRelease, |
| | | FundFlowEnum.REDUCE_SCORE.getCode(), |
| | | orderId.toString()); |
| | | dappAccountMoneyChangeDao.insert(reduceScoreAMC); |
| | | |
| | | //生成一条静态补贴的流水 |
| | | DappFundFlowEntity realUsdtAmountFlow = new DappFundFlowEntity( |
| | | parentMember.getId(), |
| | | realScoreReduce, |
| | | fundFlowEnumType, |
| | | DappFundFlowEntity.WITHDRAW_STATUS_AGREE, |
| | | BigDecimal.ZERO, |
| | | orderId); |
| | | dappFundFlowDao.insert(realUsdtAmountFlow); |
| | | //用户增加余额 |
| | | DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(parentMember.getId()); |
| | | BigDecimal totalAmount = dappWalletCoinEntity.getTotalAmount(); |
| | | BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount(); |
| | | |
| | | BigDecimal totalAmountRelease = totalAmount.add(realScoreReduce); |
| | | BigDecimal availableAmountRelease = availableAmount.add(realScoreReduce); |
| | | //更新余额账户 |
| | | dappWalletCoinEntity.setTotalAmount(totalAmountRelease); |
| | | dappWalletCoinEntity.setAvailableAmount(availableAmountRelease); |
| | | dappWalletCoinDao.updateById(dappWalletCoinEntity); |
| | | //插入余额流水 |
| | | DappFundFlowEntity amountFlow = new DappFundFlowEntity( |
| | | parentMember.getId(), |
| | | realScoreReduce, |
| | | FundFlowEnum.ADD_AMOUNT.getCode(), |
| | | DappFundFlowEntity.WITHDRAW_STATUS_AGREE, |
| | | BigDecimal.ZERO, |
| | | orderId); |
| | | dappFundFlowDao.insert(amountFlow); |
| | | DappAccountMoneyChangeEntity addAmountAMC = new DappAccountMoneyChangeEntity( |
| | | parentMember.getId(), |
| | | totalAmount, |
| | | realScoreReduce, |
| | | totalAmountRelease, |
| | | FundFlowEnum.ADD_AMOUNT.getCode(), |
| | | orderId.toString()); |
| | | dappAccountMoneyChangeDao.insert(addAmountAMC); |
| | | |
| | | return realScoreReduce; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 测试转账 |