From 0469ade9be848d97eefb92f3e584441d89e6b69d Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 20 May 2021 19:32:05 +0800 Subject: [PATCH] modify --- src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java | 170 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 144 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java b/src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java index 7c60bb3..820863f 100644 --- a/src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java @@ -1,7 +1,6 @@ package com.xcong.excoin.modules.yunding.service.Impl; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -30,8 +29,11 @@ import com.xcong.excoin.modules.yunding.entity.YdProductEntity; import com.xcong.excoin.modules.yunding.service.YunDingService; import com.xcong.excoin.modules.yunding.vo.*; +import com.xcong.excoin.rabbit.producer.YunDingProducter; import com.xcong.excoin.utils.LogRecordUtils; +import com.xcong.excoin.utils.RedisUtils; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -39,7 +41,6 @@ import java.math.BigDecimal; import java.text.DecimalFormat; import java.util.Date; -import java.util.HashMap; import java.util.List; @Slf4j @@ -60,6 +61,10 @@ private YdBasicLevelSettingDao ydBasicLevelSettingDao; @Resource private MemberDao memberDao; + @Autowired + private YunDingProducter yunDingProducter; + @Autowired + private RedisUtils redisUtils; @Override public Result findAllInfo() { @@ -102,10 +107,8 @@ for(YdProductVo ydProductVo : records){ ydProductVo.setProfitT(prifitT); - if(ydProductVo.getTotalT().compareTo(BigDecimal.ZERO) < 1) { + if(ydProductVo.getSurplusT().compareTo(BigDecimal.ZERO) < 1) { ydProductVo.setStatus(2); - } else { - ydProductVo.setStatus(1); } } } @@ -143,10 +146,8 @@ Date endTime = DateUtil.offsetDay(workTime, proCycle); ydProductVo.setEndTime(endTime); - if (ydProductVo.getTotalT().compareTo(BigDecimal.ZERO) < 1) { + if (ydProductVo.getSurplusT().compareTo(BigDecimal.ZERO) < 1) { ydProductVo.setStatus(2); - } else { - ydProductVo.setStatus(1); } return Result.ok(ydProductVo); } @@ -175,7 +176,7 @@ */ MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); Long memberId = memberEntity.getId(); -// Long memberId = 28L; + String tradePassword = payProductDto.getTradePassword(); if(StrUtil.isEmpty(tradePassword)){ return Result.fail("请输入交易密码"); @@ -200,6 +201,40 @@ if(ObjectUtil.isEmpty(ydProductEntity)){ return Result.fail("请重新选择产品"); } + + Integer status = ydProductEntity.getStatus(); + if(YdProductEntity.STATUE_WORK != status){ + if(YdProductEntity.STATUE_END == status){ + return Result.fail("产品已售罄"); + } + if(YdProductEntity.STATUE_READY == status){ + return Result.fail("产品未开售"); + } + } + + //限购总量 + Integer limitedNum = ydProductEntity.getLimitedNum(); + //获取目前待生效,已生效的总T数 + int quantityOwn = 0; + QueryWrapper<YdOrderEntity> powerReradyQuery = new QueryWrapper<>(); + powerReradyQuery.eq("member_id",memberId); + powerReradyQuery.eq("product_id",payProductDto.getId()); + powerReradyQuery.eq("type",YdOrderEntity.PRODUCT_ORDER); + powerReradyQuery.ne("state",YdOrderEntity.ORDER_STATE_END); + List<YdOrderEntity> powerReradyQuerys = ydOrderDao.selectList(powerReradyQuery); + if(CollUtil.isNotEmpty(powerReradyQuerys)){ + for(YdOrderEntity ydOrderEntity : powerReradyQuerys){ + quantityOwn = quantityOwn + ydOrderEntity.getQuantity(); + } + } + int quantityInt = quantity.intValue(); + if(quantityOwn + quantityInt > limitedNum){ + return Result.fail("产品限购"+limitedNum); + } + +// if (quantity.compareTo(BigDecimal.valueOf(ydProductEntity.getLimitedNum())) < 1) { +// return Result.fail("产品限购" + ydProductEntity.getLimitedNum()); +// } BigDecimal salePrice = ydProductEntity.getSalePrice(); //剩余产品数量 BigDecimal surplusT = ydProductEntity.getSurplusT(); @@ -225,6 +260,7 @@ ydOrderEntity.setTotalProfit(BigDecimal.ZERO); ydOrderEntity.setTodayProfit(BigDecimal.ZERO); ydOrderEntity.setState(YdOrderEntity.ORDER_STATE_READY); + ydOrderEntity.setType(YdOrderEntity.PRODUCT_ORDER); Date date = DateUtil.date(); ydOrderEntity.setBuyTime(date); //上架天数 @@ -240,6 +276,8 @@ //生成流水记录 LogRecordUtils.insertMemberAccountMoneyChangeWithId(memberId, "购买产品", multiplyUsdt, "USDT", 1, 3, ydOrderEntity.getId()); + + yunDingProducter.sendYunDingUsdtProfit(ydOrderEntity.getId()); return Result.ok("支付成功"); } @@ -277,6 +315,7 @@ BigDecimal totalProfitAll = BigDecimal.ZERO; QueryWrapper<YdOrderEntity> objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("member_id",memberId); + objectQueryWrapper.eq("type",YdOrderEntity.PRODUCT_ORDER); List<YdOrderEntity> ydOrderEntities = ydOrderDao.selectList(objectQueryWrapper); if(CollUtil.isNotEmpty(ydOrderEntities)){ for(YdOrderEntity order : ydOrderEntities){ @@ -290,6 +329,7 @@ QueryWrapper<YdOrderEntity> powerNowQuery = new QueryWrapper<>(); powerNowQuery.eq("member_id",memberId); powerNowQuery.eq("state",YdOrderEntity.ORDER_STATE_WORK); + powerNowQuery.eq("type",YdOrderEntity.PRODUCT_ORDER); List<YdOrderEntity> PowerNowQuery = ydOrderDao.selectList(powerNowQuery); if(CollUtil.isNotEmpty(PowerNowQuery)){ for(YdOrderEntity order : PowerNowQuery){ @@ -302,10 +342,11 @@ int powerReady = 0; QueryWrapper<YdOrderEntity> powerReradyQuery = new QueryWrapper<>(); powerReradyQuery.eq("member_id",memberId); + powerReradyQuery.eq("type",YdOrderEntity.PRODUCT_ORDER); powerReradyQuery.eq("state",YdOrderEntity.ORDER_STATE_READY); - List<YdOrderEntity> PowerReradyQuery = ydOrderDao.selectList(powerReradyQuery); - if(CollUtil.isNotEmpty(PowerReradyQuery)){ - for(YdOrderEntity order : PowerReradyQuery){ + List<YdOrderEntity> powerReradyQuerys = ydOrderDao.selectList(powerReradyQuery); + if(CollUtil.isNotEmpty(powerReradyQuerys)){ + for(YdOrderEntity order : powerReradyQuerys){ int quantity = order.getQuantity(); powerReady = powerReady + quantity; } @@ -463,9 +504,6 @@ log.info("购买代理级别"); MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); Long memberId = memberEntity.getId(); -// Long memberId = 442L; -// MemberEntity memberEntity = memberDao.selectById(memberId); - /** * 获取代理级别(Level字段越小,级别越高) * 不能向下购买代理级别 @@ -496,21 +534,29 @@ Integer levelTo = ydBasicLevelSettingEntityTo.getLevel(); //获取当前代理级别 Integer agentLevel = memberEntity.getAgentLevel(); - long agentId = Long.parseLong(agentLevel.toString()); + + BigDecimal salePrice = ydBasicLevelSettingEntityTo.getSalePrice(); Integer levelNow = 0; - YdBasicLevelSettingEntity ydBasicLevelSettingEntityNow = ydBasicLevelSettingDao.selectById(agentId); - if(ObjectUtil.isNotEmpty(ydBasicLevelSettingEntityNow)){ - levelNow = ydBasicLevelSettingEntityNow.getLevel(); - if(levelTo >= levelNow){ - return Result.fail("无法购买"); + if (agentLevel != null) { + long agentId = Long.parseLong(agentLevel.toString()); + YdBasicLevelSettingEntity ydBasicLevelSettingEntityNow = ydBasicLevelSettingDao.selectById(agentId); + if(ObjectUtil.isNotEmpty(ydBasicLevelSettingEntityNow)){ + levelNow = ydBasicLevelSettingEntityNow.getLevel(); + if(levelTo.equals(levelNow)){ + return Result.fail("不能重复购买当前代理"); + } + + if (levelNow < levelTo) { + return Result.fail("不能购买低于当前代理"); + } + } + + //用户如果已经有等级则减少差价 + if(levelNow != 0){ + salePrice = salePrice.subtract(ydBasicLevelSettingEntityNow.getSalePrice()); } } - BigDecimal salePrice = ydBasicLevelSettingEntityTo.getSalePrice(); - //用户如果已经有等级则减少差价 - if(levelNow != 0){ - salePrice = salePrice.subtract(ydBasicLevelSettingEntityNow.getSalePrice()); - } //获取用户当前USDT余额 MemberWalletCoinEntity usdt = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, "USDT"); BigDecimal availableBalance = usdt.getAvailableBalance(); @@ -524,11 +570,83 @@ //更新用户的代理级别 ydOrderDao.updateAgentLevel(memberId,Integer.parseInt(id.toString())); + YdOrderEntity orderEntity = new YdOrderEntity(); + orderEntity.setType(YdOrderEntity.AGENT_ORDER); + orderEntity.setMemberId(memberId); + orderEntity.setProductId(id); + orderEntity.setAmount(salePrice); + ydOrderDao.insert(orderEntity); + LogRecordUtils.insertMemberAccountMoneyChangeWithId(memberId, "购买代理", salePrice, "USDT", 1, 8, memberId); + + memberEntity.setAgentLevel(id.intValue()); + LoginUserUtils.resetAppLoginUser(memberEntity); + yunDingProducter.sendYunDingUsdtProfit(orderEntity.getId()); return Result.ok("购买成功"); } + @Override + public Result getXchPrice() { + log.info("获取XCH当前价"); + BigDecimal xchNewPrices = BigDecimal.ZERO; + String xchNewPrice = redisUtils.getString("XCH_NEW_PRICE"); + if(StrUtil.isNotEmpty(xchNewPrice)){ + xchNewPrices = new BigDecimal(xchNewPrice); + } + return Result.ok(xchNewPrices); + } + + @Override + public Result getTeamList(TeamInfoDto teamInfoDto) { + log.info("获取团队信息"); + MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); + Long memberId = memberEntity.getId(); +// Long memberId = 444L; +// MemberEntity memberEntity = memberDao.selectById(memberId); + /** + * 获取团队总人数,总购买数 + * 详细列表 + * + */ + TeamVo teamVo = new TeamVo(); + //团队总人数 + int memberNum = 0; + String inviteId = memberEntity.getInviteId(); + List<MemberEntity> memberEntityList = ydOrderDao.selectMemberByInviteId(inviteId); + if(CollUtil.isNotEmpty(memberEntityList)){ + memberNum = memberEntityList.size(); + } + teamVo.setMemberNum(memberNum); + //购买总算力 + int allPower = ydOrderDao.selectAllPowerByMemberIdAndElse(inviteId); + teamVo.setAllPower(allPower); + //详细列表 + Page<TeamInfoVo> page = new Page<>(teamInfoDto.getPageNum(), teamInfoDto.getPageSize()); + IPage<TeamInfoVo> teamInfoVos = ydOrderDao.getTeamInfoList(page, memberEntity); + List<TeamInfoVo> records = teamInfoVos.getRecords(); + if(CollUtil.isNotEmpty(records)){ + for(TeamInfoVo teamInfoVo : records){ + String phone = teamInfoVo.getInvitephone(); + if(StrUtil.isNotEmpty(phone)){ + teamInfoVo.setInvitephone(StrUtil.subSufByLength(phone,4)); + } + //下属团队人数 + int memberNumInvite = 0; + List<MemberEntity> memberEntityInviteList = ydOrderDao.selectMemberByInviteId(phone); + if(CollUtil.isNotEmpty(memberEntityInviteList)){ + memberNumInvite = memberEntityInviteList.size(); + } + teamInfoVo.setMemberNum(memberNumInvite); + //下属团队总算力 + int powerNum = ydOrderDao.selectAllPowerByMemberIdAndElse(phone); + teamInfoVo.setPowerNum(powerNum); + } + } + teamVo.setTeamInfoVos(records); + return Result.ok(teamVo); + } + /** * 去加减币币账户余额,减少产品的剩余数目 -- Gitblit v1.9.1