| | |
| | | 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; |
| | | |
| | |
| | | private YdBasicLevelSettingDao ydBasicLevelSettingDao; |
| | | @Resource |
| | | private MemberDao memberDao; |
| | | @Autowired |
| | | private YunDingProducter yunDingProducter; |
| | | @Autowired |
| | | private RedisUtils redisUtils; |
| | | |
| | | @Override |
| | | public Result findAllInfo() { |
| | |
| | | } |
| | | for(YdProductVo ydProductVo : records){ |
| | | ydProductVo.setProfitT(prifitT); |
| | | |
| | | if(ydProductVo.getSurplusT().compareTo(BigDecimal.ZERO) < 1) { |
| | | ydProductVo.setStatus(2); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | Integer proCycle = ydProductVo.getProCycle(); |
| | | Date endTime = DateUtil.offsetDay(workTime, proCycle); |
| | | ydProductVo.setEndTime(endTime); |
| | | |
| | | if (ydProductVo.getTotalT().compareTo(BigDecimal.ZERO) < 1) { |
| | | ydProductVo.setStatus(2); |
| | | } else { |
| | | ydProductVo.setStatus(1); |
| | | } |
| | | return Result.ok(ydProductVo); |
| | | } |
| | | |
| | |
| | | */ |
| | | MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); |
| | | Long memberId = memberEntity.getId(); |
| | | // Long memberId = 28L; |
| | | |
| | | String tradePassword = payProductDto.getTradePassword(); |
| | | if(StrUtil.isEmpty(tradePassword)){ |
| | | return Result.fail("请输入交易密码"); |
| | |
| | | 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(); |
| | |
| | | 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); |
| | | //上架天数 |
| | |
| | | //生成流水记录 |
| | | LogRecordUtils.insertMemberAccountMoneyChangeWithId(memberId, "购买产品", multiplyUsdt, |
| | | "USDT", 1, 3, ydOrderEntity.getId()); |
| | | |
| | | yunDingProducter.sendYunDingUsdtProfit(ydOrderEntity.getId()); |
| | | yunDingProducter.sendYunDingAutoAgent(ydOrderEntity.getMemberId()); |
| | | return Result.ok("支付成功"); |
| | | } |
| | | |
| | |
| | | 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){ |
| | |
| | | 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){ |
| | |
| | | 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; |
| | | } |
| | |
| | | log.info("购买代理级别"); |
| | | MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); |
| | | Long memberId = memberEntity.getId(); |
| | | // Long memberId = 442L; |
| | | // MemberEntity memberEntity = memberDao.selectById(memberId); |
| | | |
| | | /** |
| | | * 获取代理级别(Level字段越小,级别越高) |
| | | * 不能向下购买代理级别 |
| | |
| | | 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(); |
| | | //获取用户当前USDT余额 |
| | | MemberWalletCoinEntity usdt = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, "USDT"); |
| | | BigDecimal availableBalance = usdt.getAvailableBalance(); |
| | |
| | | //更新用户的代理级别 |
| | | 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.sendYunDingAutoAgent(memberId); |
| | | 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); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 去加减币币账户余额,减少产品的剩余数目 |