xiaoyong931011
2021-05-12 feab2b9842a8f3529804d8de0d16589c2ed05268
src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java
@@ -15,16 +15,16 @@
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;
@@ -53,9 +53,12 @@
    private YdOrderDao ydOrderDao;
    @Resource
    private MemberWalletCoinDao memberWalletCoinDao;
    @Resource
    private MemberAccountMoneyChangeDao memberAccountMoneyChangeDao;
    @Resource
    private YdBasicLevelSettingDao ydBasicLevelSettingDao;
    @Resource
    private MemberDao memberDao;
    @Override
    public Result findAllInfo() {
@@ -366,6 +369,19 @@
         *     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("请输入正确的数量");
@@ -400,6 +416,84 @@
        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();
        //获取用户当前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()));
        return Result.ok("购买成功");
    }
    /**
     * 去加减币币账户余额,减少产品的剩余数目
     * @param memberId