From 17ee2c1ef2b679eb657db34286c244544e8f68cb Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 13 May 2021 11:21:36 +0800
Subject: [PATCH] Merge branch 'yunding' of http://120.27.238.55:7000/r/exchange into yunding

---
 src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java |  163 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 152 insertions(+), 11 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 0c844f0..484174c 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,6 +1,7 @@
 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;
@@ -12,21 +13,24 @@
 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.InsureChangeUsdtDto;
-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.*;
+import com.xcong.excoin.utils.LogRecordUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -50,6 +54,12 @@
     private YdOrderDao ydOrderDao;
     @Resource
     private MemberWalletCoinDao memberWalletCoinDao;
+    @Resource
+    private MemberAccountMoneyChangeDao memberAccountMoneyChangeDao;
+    @Resource
+    private YdBasicLevelSettingDao ydBasicLevelSettingDao;
+    @Resource
+    private MemberDao memberDao;
 
     @Override
     public Result findAllInfo() {
@@ -221,6 +231,9 @@
         ydOrderEntity.setEndTime(endTime);
         ydOrderEntity.setReturnState(YdOrderEntity.RETURN_STATE_READY);
         ydOrderDao.insert(ydOrderEntity);
+        //生成流水记录
+        LogRecordUtils.insertMemberAccountMoneyChangeWithId(memberId, "购买产品", multiplyUsdt,
+                "USDT", 1, 3, ydOrderEntity.getId());
         return Result.ok("支付成功");
     }
 
@@ -251,7 +264,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#");
         //历史总收益
@@ -284,7 +297,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();
@@ -292,6 +305,23 @@
             }
         }
         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);
     }
 
@@ -310,6 +340,7 @@
         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<>();
@@ -340,23 +371,36 @@
     @Override
     @Transactional
     public Result insureChangeUsdt(InsureChangeUsdtDto insureChangeUsdtdto) {
-        log.info("转换成USDT");
+        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("请输入正确的数量");
         }
-        BigDecimal currentPrice = insureChangeUsdtdto.getCurrentPrice();
-        if(BigDecimal.ZERO.compareTo(currentPrice) >= 0){
-            return Result.fail("XCH价格异常,请重试");
-        }
+
         MemberWalletCoinEntity xch = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, "XCH");
         BigDecimal totalBalance = xch.getTotalBalance();
         BigDecimal subtractTotalBalance = totalBalance.subtract(xchNum);
@@ -374,15 +418,112 @@
         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();
+//        Long memberId = 442L;
+//        MemberEntity memberEntity = memberDao.selectById(memberId);
+
+        /**
+         * 获取代理级别(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();
+        long agentId = Long.parseLong(agentLevel.toString());
+        Integer levelNow = 0;
+        YdBasicLevelSettingEntity ydBasicLevelSettingEntityNow = ydBasicLevelSettingDao.selectById(agentId);
+        if(ObjectUtil.isNotEmpty(ydBasicLevelSettingEntityNow)){
+            levelNow = ydBasicLevelSettingEntityNow.getLevel();
+            if(levelTo >= levelNow){
+                return Result.fail("无法购买");
+            }
+        }
+
+        BigDecimal salePrice = ydBasicLevelSettingEntityTo.getSalePrice();
+        //用户如果已经有等级则减少差价
+        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);
+        return Result.ok("购买成功");
+    }
+
+
     /**
      * 去加减币币账户余额,减少产品的剩余数目
      * @param memberId

--
Gitblit v1.9.1