From 77a79a8a245a8d835881cc69eb5b4c1f45f6093a Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 13 May 2021 18:25:02 +0800
Subject: [PATCH] modify
---
src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java | 301 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 291 insertions(+), 10 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 1836528..8fddea0 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
@@ -5,7 +5,7 @@
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
-import com.alibaba.fastjson.JSON;
+import cn.hutool.crypto.SecureUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -13,24 +13,28 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xcong.excoin.common.LoginUserUtils;
import com.xcong.excoin.common.response.Result;
+import com.xcong.excoin.modules.coin.dao.MemberAccountMoneyChangeDao;
+import com.xcong.excoin.modules.coin.entity.MemberAccountMoneyChange;
+import com.xcong.excoin.modules.member.dao.MemberDao;
import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao;
import com.xcong.excoin.modules.member.entity.MemberEntity;
import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity;
+import com.xcong.excoin.modules.yunding.dao.YdBasicLevelSettingDao;
import com.xcong.excoin.modules.yunding.dao.YdBasicSettingDao;
import com.xcong.excoin.modules.yunding.dao.YdOrderDao;
import com.xcong.excoin.modules.yunding.dao.YdProductDao;
-import com.xcong.excoin.modules.yunding.dto.PayProductDto;
-import com.xcong.excoin.modules.yunding.dto.YdOrderListDto;
-import com.xcong.excoin.modules.yunding.dto.YdProductListDto;
+import com.xcong.excoin.modules.yunding.dto.*;
+import com.xcong.excoin.modules.yunding.entity.YdBasicLevelSettingEntity;
import com.xcong.excoin.modules.yunding.entity.YdBasicSettingEntity;
import com.xcong.excoin.modules.yunding.entity.YdOrderEntity;
import com.xcong.excoin.modules.yunding.entity.YdProductEntity;
import com.xcong.excoin.modules.yunding.service.YunDingService;
-import com.xcong.excoin.modules.yunding.vo.OrderAllInfoVo;
-import com.xcong.excoin.modules.yunding.vo.YdBasicSettingVo;
-import com.xcong.excoin.modules.yunding.vo.YdOrderVo;
-import com.xcong.excoin.modules.yunding.vo.YdProductVo;
+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;
@@ -53,6 +57,14 @@
private YdOrderDao ydOrderDao;
@Resource
private MemberWalletCoinDao memberWalletCoinDao;
+ @Resource
+ private MemberAccountMoneyChangeDao memberAccountMoneyChangeDao;
+ @Resource
+ private YdBasicLevelSettingDao ydBasicLevelSettingDao;
+ @Resource
+ private MemberDao memberDao;
+ @Autowired
+ private YunDingProducter yunDingProducter;
@Override
public Result findAllInfo() {
@@ -83,6 +95,26 @@
//MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
Page<YdProductVo> page = new Page<>(ydProductListDto.getPageNum(), ydProductListDto.getPageSize());
IPage<YdProductVo> list = ydProductDao.getProductList(page, ydProductListDto);
+ List<YdProductVo> records = list.getRecords();
+ if(CollUtil.isNotEmpty(records)){
+ //预计收益
+ BigDecimal prifitT = BigDecimal.ZERO;
+ Wrapper<YdBasicSettingEntity> queryWrapper = new QueryWrapper<>();
+ List<YdBasicSettingEntity> ydBasicSettingEntities = ydBasicSettingDao.selectList(queryWrapper);
+ if(CollUtil.isNotEmpty(ydBasicSettingEntities)){
+ prifitT = ydBasicSettingEntities.get(0).getPrifitT();
+ }
+ for(YdProductVo ydProductVo : records){
+ ydProductVo.setProfitT(prifitT);
+
+ if(ydProductVo.getTotalT().compareTo(BigDecimal.ZERO) < 1) {
+ ydProductVo.setStatus(2);
+ } else {
+ ydProductVo.setStatus(1);
+ }
+ }
+ }
+
return Result.ok(list);
}
@@ -115,6 +147,12 @@
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);
}
@@ -143,6 +181,18 @@
MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
Long memberId = memberEntity.getId();
// Long memberId = 28L;
+ String tradePassword = payProductDto.getTradePassword();
+ if(StrUtil.isEmpty(tradePassword)){
+ return Result.fail("请输入交易密码");
+ }
+ String tradePasswordOwn = memberEntity.getTradePassword();
+ if(StrUtil.isEmpty(tradePasswordOwn)){
+ return Result.fail("请设置交易密码");
+ }
+ String tradePasswords = SecureUtil.md5(tradePassword);
+ if(!StrUtil.equals(tradePasswordOwn,tradePasswords)){
+ return Result.fail("请输入正确的交易密码");
+ }
BigDecimal quantity = payProductDto.getQuantity();
if(ObjectUtil.isEmpty(quantity)){
return Result.fail("请输入购买数量");
@@ -192,6 +242,12 @@
ydOrderEntity.setEndTime(endTime);
ydOrderEntity.setReturnState(YdOrderEntity.RETURN_STATE_READY);
ydOrderDao.insert(ydOrderEntity);
+ //生成流水记录
+ LogRecordUtils.insertMemberAccountMoneyChangeWithId(memberId, "购买产品", multiplyUsdt,
+ "USDT", 1, 3, ydOrderEntity.getId());
+
+ yunDingProducter.sendYunDingUsdtProfit(ydOrderEntity.getId());
+ yunDingProducter.sendYunDingAutoAgent(ydOrderEntity.getMemberId());
return Result.ok("支付成功");
}
@@ -222,7 +278,7 @@
MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
Long memberId = memberEntity.getId();
-// Long memberId = 28L;
+// Long memberId = 442L;
OrderAllInfoVo orderAllInfoVo = new OrderAllInfoVo();
DecimalFormat decimalFormat = new DecimalFormat("0.0000#");
//历史总收益
@@ -255,7 +311,7 @@
QueryWrapper<YdOrderEntity> powerReradyQuery = new QueryWrapper<>();
powerReradyQuery.eq("member_id",memberId);
powerReradyQuery.eq("state",YdOrderEntity.ORDER_STATE_READY);
- List<YdOrderEntity> PowerReradyQuery = ydOrderDao.selectList(powerNowQuery);
+ List<YdOrderEntity> PowerReradyQuery = ydOrderDao.selectList(powerReradyQuery);
if(CollUtil.isNotEmpty(PowerReradyQuery)){
for(YdOrderEntity order : PowerReradyQuery){
int quantity = order.getQuantity();
@@ -263,9 +319,234 @@
}
}
orderAllInfoVo.setPowerReady(powerReady);
+ //昨日总收益
+ BigDecimal lastdayProfit = BigDecimal.ZERO;
+ Date date = DateUtil.date();
+ Date dateTime = DateUtil.offsetDay(date, 1);
+ QueryWrapper<MemberAccountMoneyChange> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("type",4);
+ queryWrapper.eq("member_id",memberId);
+ queryWrapper.eq("status",1);
+ queryWrapper.like("create_time",DateUtil.formatDate(dateTime));
+ List<MemberAccountMoneyChange> memberAccountMoneyChanges = memberAccountMoneyChangeDao.selectList(queryWrapper);
+ if(CollUtil.isNotEmpty(memberAccountMoneyChanges)){
+ for(MemberAccountMoneyChange memberAccountMoneyChange : memberAccountMoneyChanges){
+ BigDecimal amount = memberAccountMoneyChange.getAmount();
+ lastdayProfit = lastdayProfit.add(amount);
+ }
+ }
+ orderAllInfoVo.setLastdayProfit(decimalFormat.format(lastdayProfit));
return Result.ok(orderAllInfoVo);
}
+ @Override
+ public Result getOrderInfo(Long id) {
+
+ log.info("获取订单详情");
+ MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+ Long memberId = memberEntity.getId();
+ YdOrderVo ydOrderVo = ydOrderDao.selectOrderByMemberIdAndId(memberId,id);
+ return Result.ok(ydOrderVo);
+ }
+
+ @Override
+ public Result changeUsdt() {
+ log.info("转换成USDT");
+ MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+ Long memberId = memberEntity.getId();
+// Long memberId = 442L;
+ ChangeVo changeVo = new ChangeVo();
+ BigDecimal currentPrice = BigDecimal.ZERO;
+ Wrapper<YdBasicSettingEntity> queryWrapper = new QueryWrapper<>();
+ List<YdBasicSettingEntity> ydBasicSettingEntities = ydBasicSettingDao.selectList(queryWrapper);
+ if(CollUtil.isNotEmpty(ydBasicSettingEntities)){
+ YdBasicSettingEntity ydBasicSettingEntity = ydBasicSettingEntities.get(0);
+ if(ObjectUtil.isNotEmpty(ydBasicSettingEntity)){
+ //获取当前价
+ currentPrice = ydBasicSettingEntity.getCurrentPrice();
+ if(ObjectUtil.isNotEmpty(currentPrice)){
+ changeVo.setCurrentPrice(currentPrice);
+ }
+ BigDecimal changeXch = ydBasicSettingEntity.getChangeXch();
+ if(ObjectUtil.isNotEmpty(changeXch)){
+ changeVo.setChangeXchRadio(changeXch);
+ }
+ }
+ }
+ //获取可用
+ MemberWalletCoinEntity xch = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, "XCH");
+ if(ObjectUtil.isNotEmpty(xch)){
+ BigDecimal availableBalance = xch.getAvailableBalance();
+ changeVo.setXchAvailableBalance(availableBalance.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO:availableBalance);
+ }
+ return Result.ok(changeVo);
+ }
+
+ @Override
+ @Transactional
+ public Result insureChangeUsdt(InsureChangeUsdtDto insureChangeUsdtdto) {
+ log.info("确认转换成USDT");
+ MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+ Long memberId = memberEntity.getId();
+
+// Long memberId = 442L;
+// MemberEntity memberEntity = memberDao.selectById(memberId);
+ /**
+ * 验证入参
+ *
+ * USDT账户增加
+ * XCH账户减少
+ */
+ String tradePassword = insureChangeUsdtdto.getTradePassword();
+ if(StrUtil.isEmpty(tradePassword)){
+ return Result.fail("请输入交易密码");
+ }
+ String tradePasswordOwn = memberEntity.getTradePassword();
+ if(StrUtil.isEmpty(tradePasswordOwn)){
+ return Result.fail("请设置交易密码");
+ }
+ String tradePasswords = SecureUtil.md5(tradePassword);
+ if(!StrUtil.equals(tradePasswordOwn,tradePasswords)){
+ return Result.fail("请输入正确的交易密码");
+ }
+
+ BigDecimal xchNum = insureChangeUsdtdto.getXchNum();
+ if(BigDecimal.ZERO.compareTo(xchNum) >= 0){
+ return Result.fail("请输入正确的数量");
+ }
+
+ MemberWalletCoinEntity xch = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, "XCH");
+ BigDecimal totalBalance = xch.getTotalBalance();
+ BigDecimal subtractTotalBalance = totalBalance.subtract(xchNum);
+ if(BigDecimal.ZERO.compareTo(subtractTotalBalance) >= 0){
+ return Result.fail("XCH数量不足");
+ }
+
+ BigDecimal availableBalance = xch.getAvailableBalance();
+ BigDecimal subtractAvailableBalance = availableBalance.subtract(xchNum);
+ if(BigDecimal.ZERO.compareTo(subtractAvailableBalance) >= 0){
+ return Result.fail("XCH数量不足");
+ }
+ //xch减少
+ xch.setTotalBalance(subtractTotalBalance);
+ xch.setAvailableBalance(subtractAvailableBalance);
+ memberWalletCoinDao.updateById(xch);
+
+ BigDecimal currentPrice = BigDecimal.ZERO;
+ //获取当前价
+ Wrapper<YdBasicSettingEntity> queryWrapper = new QueryWrapper<>();
+ List<YdBasicSettingEntity> ydBasicSettingEntities = ydBasicSettingDao.selectList(queryWrapper);
+ if(CollUtil.isNotEmpty(ydBasicSettingEntities)){
+ YdBasicSettingEntity ydBasicSettingEntity = ydBasicSettingEntities.get(0);
+ currentPrice = ydBasicSettingEntity.getCurrentPrice();
+ }
+ //USDT账户增加
+ BigDecimal multiply = xchNum.multiply(currentPrice);
+ MemberWalletCoinEntity usdt = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, "USDT");
+ usdt.setTotalBalance(usdt.getTotalBalance().add(multiply));
+ usdt.setAvailableBalance(usdt.getAvailableBalance().add(multiply));
+ memberWalletCoinDao.updateById(usdt);
+
+ //生成流水记录
+ LogRecordUtils.insertMemberAccountMoneyChangeWithId(memberId, "XCH兑换"+multiply+"USDT", xchNum,
+ "USDT", 1, 7, memberId);
+ return Result.ok("操作成功");
+ }
+
+ @Override
+ public Result getAgentList(YdAgentDto ydAgentDto) {
+ log.info("获取代理级别列表");
+ MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+ Long memberId = memberEntity.getId();
+// Long memberId = 442L;
+ Page<AgentVo> page = new Page<>(ydAgentDto.getPageNum(), ydAgentDto.getPageSize());
+ YdBasicLevelSettingEntity ydBasicLevelSettingEntity = new YdBasicLevelSettingEntity();
+ IPage<AgentVo> list = ydOrderDao.getAgentList(page, ydBasicLevelSettingEntity);
+ return Result.ok(list);
+ }
+
+ @Override
+ @Transactional
+ public Result bugAgentLevel(BugAgentLeveldto bugAgentLeveldto) {
+ log.info("购买代理级别");
+ MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+ Long memberId = memberEntity.getId();
+ /**
+ * 获取代理级别(Level字段越小,级别越高)
+ * 不能向下购买代理级别
+ * 不能购买同级别
+ * 获取用户当前USDT余额
+ * 减少用户的USDT余额
+ * 更新用户的代理级别
+ */
+
+ String tradePassword = bugAgentLeveldto.getTradePassword();
+ if(StrUtil.isEmpty(tradePassword)){
+ return Result.fail("请输入交易密码");
+ }
+ String tradePasswordOwn = memberEntity.getTradePassword();
+ if(StrUtil.isEmpty(tradePasswordOwn)){
+ return Result.fail("请设置交易密码");
+ }
+ String tradePasswords = SecureUtil.md5(tradePassword);
+ if(!StrUtil.equals(tradePasswordOwn,tradePasswords)){
+ return Result.fail("请输入正确的交易密码");
+ }
+
+ Long id = bugAgentLeveldto.getId();
+ YdBasicLevelSettingEntity ydBasicLevelSettingEntityTo = ydBasicLevelSettingDao.selectById(id);
+ if(ObjectUtil.isEmpty(ydBasicLevelSettingEntityTo)){
+ return Result.fail("稍候再试");
+ }
+ Integer levelTo = ydBasicLevelSettingEntityTo.getLevel();
+ //获取当前代理级别
+ Integer agentLevel = memberEntity.getAgentLevel();
+
+ BigDecimal salePrice = ydBasicLevelSettingEntityTo.getSalePrice();
+ Integer levelNow = 0;
+ 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());
+ }
+ }
+
+ //获取用户当前USDT余额
+ MemberWalletCoinEntity usdt = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, "USDT");
+ BigDecimal availableBalance = usdt.getAvailableBalance();
+ if(salePrice.compareTo(availableBalance) > 0){
+ return Result.fail("USDT数量不足");
+ }
+ BigDecimal totalBalance = usdt.getTotalBalance();
+ usdt.setAvailableBalance(availableBalance.subtract(salePrice));
+ usdt.setTotalBalance(totalBalance.subtract(salePrice));
+ memberWalletCoinDao.updateById(usdt);
+ //更新用户的代理级别
+ ydOrderDao.updateAgentLevel(memberId,Integer.parseInt(id.toString()));
+
+ LogRecordUtils.insertMemberAccountMoneyChangeWithId(memberId, "购买代理", salePrice,
+ "USDT", 1, 8, memberId);
+
+ memberEntity.setAgentLevel(id.intValue());
+ LoginUserUtils.resetAppLoginUser(memberEntity);
+ yunDingProducter.sendYunDingAutoAgent(memberId);
+ return Result.ok("购买成功");
+ }
+
+
/**
* 去加减币币账户余额,减少产品的剩余数目
* @param memberId
--
Gitblit v1.9.1