From feab2b9842a8f3529804d8de0d16589c2ed05268 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 12 May 2021 19:13:35 +0800
Subject: [PATCH] 20210512 云顶

---
 src/main/java/com/xcong/excoin/modules/yunding/dto/InsureChangeUsdtDto.java          |    7 +
 src/main/java/com/xcong/excoin/modules/yunding/service/YunDingService.java           |    9 +
 src/main/java/com/xcong/excoin/modules/yunding/dao/YdBasicLevelSettingDao.java       |    7 +
 src/main/java/com/xcong/excoin/modules/yunding/dto/YdAgentDto.java                   |   23 ++++
 src/main/resources/mapper/yunding/YdOrderDao.xml                                     |   15 +++
 src/main/java/com/xcong/excoin/modules/yunding/controller/YunDingController.java     |   28 ++++
 src/main/java/com/xcong/excoin/modules/yunding/dto/BugAgentLeveldto.java             |   27 +++++
 src/main/resources/mapper/yunding/YdBasicLevelSettingDao.xml                         |    7 +
 src/main/java/com/xcong/excoin/modules/yunding/dao/YdOrderDao.java                   |    7 +
 src/main/java/com/xcong/excoin/modules/yunding/vo/AgentVo.java                       |   39 +++++++
 src/main/java/com/xcong/excoin/modules/yunding/entity/YdBasicLevelSettingEntity.java |    2 
 src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java  |  104 +++++++++++++++++++-
 12 files changed, 262 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/yunding/controller/YunDingController.java b/src/main/java/com/xcong/excoin/modules/yunding/controller/YunDingController.java
index f996c80..b6da2c8 100644
--- a/src/main/java/com/xcong/excoin/modules/yunding/controller/YunDingController.java
+++ b/src/main/java/com/xcong/excoin/modules/yunding/controller/YunDingController.java
@@ -1,10 +1,7 @@
 package com.xcong.excoin.modules.yunding.controller;
 
 import com.xcong.excoin.common.response.Result;
-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.service.YunDingService;
 import com.xcong.excoin.modules.yunding.vo.*;
 import io.swagger.annotations.*;
@@ -133,5 +130,28 @@
         return yunDingService.insureChangeUsdt(insureChangeUsdtdto);
     }
 
+    /**
+     * 获取代理级别列表
+     */
+    @ApiOperation(value = "获取代理级别列表")
+    @ApiResponses({
+            @ApiResponse(code = 0, message = "success", response = AgentVo.class)
+    })
+    @PostMapping(value = "/getAgentList")
+    public Result getAgentList(@RequestBody @Validated YdAgentDto ydAgentDto) {
+        return yunDingService.getAgentList(ydAgentDto);
+    }
+
+    /**
+     * 购买代理级别
+     */
+    @ApiOperation(value = "购买代理级别")
+    @PostMapping(value = "/bugAgentLevel")
+    public Result bugAgentLevel(@RequestBody @Validated BugAgentLeveldto bugAgentLeveldto){
+        return yunDingService.bugAgentLevel(bugAgentLeveldto);
+    }
+
+
+
 
 }
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/dao/YdBasicLevelSettingDao.java b/src/main/java/com/xcong/excoin/modules/yunding/dao/YdBasicLevelSettingDao.java
new file mode 100644
index 0000000..08c072c
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/yunding/dao/YdBasicLevelSettingDao.java
@@ -0,0 +1,7 @@
+package com.xcong.excoin.modules.yunding.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xcong.excoin.modules.yunding.entity.YdBasicLevelSettingEntity;
+
+public interface YdBasicLevelSettingDao extends BaseMapper<YdBasicLevelSettingEntity> {
+}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/dao/YdOrderDao.java b/src/main/java/com/xcong/excoin/modules/yunding/dao/YdOrderDao.java
index d3604e0..a571df0 100644
--- a/src/main/java/com/xcong/excoin/modules/yunding/dao/YdOrderDao.java
+++ b/src/main/java/com/xcong/excoin/modules/yunding/dao/YdOrderDao.java
@@ -4,7 +4,9 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xcong.excoin.modules.yunding.dto.YdOrderListDto;
+import com.xcong.excoin.modules.yunding.entity.YdBasicLevelSettingEntity;
 import com.xcong.excoin.modules.yunding.entity.YdOrderEntity;
+import com.xcong.excoin.modules.yunding.vo.AgentVo;
 import com.xcong.excoin.modules.yunding.vo.YdOrderVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -17,7 +19,12 @@
     List<YdOrderEntity> selectNeedReturnOrders();
 
     List<YdOrderEntity> selectAllValidOrders();
+
     void UpdateByIdAndState(@Param("id")Long id, @Param("state")int state);
 
+    void updateAgentLevel(@Param("id")Long id, @Param("levelId")int ilevelIdd);
+
     YdOrderVo selectOrderByMemberIdAndId(@Param("memberId")Long memberId, @Param("id")Long id);
+
+    IPage<AgentVo> getAgentList(Page<AgentVo> page, @Param("record")  YdBasicLevelSettingEntity ydBasicLevelSettingEntity);
 }
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/dto/BugAgentLeveldto.java b/src/main/java/com/xcong/excoin/modules/yunding/dto/BugAgentLeveldto.java
new file mode 100644
index 0000000..b4d8d48
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/yunding/dto/BugAgentLeveldto.java
@@ -0,0 +1,27 @@
+package com.xcong.excoin.modules.yunding.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "BugAgentLeveldto", description = "确认入参类")
+public class BugAgentLeveldto {
+
+    @NotNull
+    @ApiModelProperty(value = "ID", example = "2")
+    private Long id;
+
+
+
+    /**
+     * 资金交易密码
+     */
+    @NotNull
+    @ApiModelProperty(value = "交易密码", example = "2")
+    private String tradePassword;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/dto/InsureChangeUsdtDto.java b/src/main/java/com/xcong/excoin/modules/yunding/dto/InsureChangeUsdtDto.java
index 834f14c..3ac4a8e 100644
--- a/src/main/java/com/xcong/excoin/modules/yunding/dto/InsureChangeUsdtDto.java
+++ b/src/main/java/com/xcong/excoin/modules/yunding/dto/InsureChangeUsdtDto.java
@@ -19,5 +19,12 @@
     @ApiModelProperty(value = "XCH当前价格", example = "2")
     private BigDecimal currentPrice;
 
+    /**
+     * 资金交易密码
+     */
+    @NotNull
+    @ApiModelProperty(value = "交易密码", example = "2")
+    private String tradePassword;
+
 
 }
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/dto/YdAgentDto.java b/src/main/java/com/xcong/excoin/modules/yunding/dto/YdAgentDto.java
new file mode 100644
index 0000000..7744750
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/yunding/dto/YdAgentDto.java
@@ -0,0 +1,23 @@
+package com.xcong.excoin.modules.yunding.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "YdAgentDto", description = "订单列表入参类")
+public class YdAgentDto {
+
+    @NotNull
+    @Min(1)
+    @ApiModelProperty(value = "第几页", example = "1")
+    private int pageNum;
+
+    @NotNull
+    @ApiModelProperty(value = "每页数量", example = "10")
+    private int pageSize;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/entity/YdBasicLevelSettingEntity.java b/src/main/java/com/xcong/excoin/modules/yunding/entity/YdBasicLevelSettingEntity.java
index 610e29d..9988856 100644
--- a/src/main/java/com/xcong/excoin/modules/yunding/entity/YdBasicLevelSettingEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/yunding/entity/YdBasicLevelSettingEntity.java
@@ -24,5 +24,7 @@
 
     private BigDecimal calculationPower;
 
+    private BigDecimal salePrice;
+
     private Integer level;
 }
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 c8e1d61..95b4b13 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
@@ -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
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/service/YunDingService.java b/src/main/java/com/xcong/excoin/modules/yunding/service/YunDingService.java
index f07e11f..752ad51 100644
--- a/src/main/java/com/xcong/excoin/modules/yunding/service/YunDingService.java
+++ b/src/main/java/com/xcong/excoin/modules/yunding/service/YunDingService.java
@@ -2,10 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xcong.excoin.common.response.Result;
-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.YdOrderEntity;
 
 public interface YunDingService extends IService<YdOrderEntity> {
@@ -29,4 +26,8 @@
     Result changeUsdt();
 
     Result insureChangeUsdt(InsureChangeUsdtDto insureChangeUsdtdto);
+
+    Result getAgentList(YdAgentDto ydAgentDto);
+
+    Result bugAgentLevel(BugAgentLeveldto bugAgentLeveldto);
 }
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/vo/AgentVo.java b/src/main/java/com/xcong/excoin/modules/yunding/vo/AgentVo.java
new file mode 100644
index 0000000..490fa3f
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/yunding/vo/AgentVo.java
@@ -0,0 +1,39 @@
+package com.xcong.excoin.modules.yunding.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "AgentVo", description = "详情")
+public class AgentVo {
+
+    @ApiModelProperty("ID")
+    private Long id;
+
+    @ApiModelProperty("等级名称")
+    private String name;
+
+    @ApiModelProperty("等级编码")
+    private String code;
+
+    @ApiModelProperty("XCH返佣比例")
+    private BigDecimal xchRatio;
+
+    @ApiModelProperty("USDT返佣比例")
+    private BigDecimal usdtRatio;
+
+    @ApiModelProperty("成为代理条件(充值USDT的数量)")
+    private BigDecimal chargeUsdt;
+
+    @ApiModelProperty("成为代理条件(购买算力的数量)")
+    private BigDecimal calculationPower;
+
+    @ApiModelProperty("购买价格")
+    private BigDecimal salePrice;
+
+    @ApiModelProperty("层级")
+    private Integer level;
+}
diff --git a/src/main/resources/mapper/yunding/YdBasicLevelSettingDao.xml b/src/main/resources/mapper/yunding/YdBasicLevelSettingDao.xml
new file mode 100644
index 0000000..674a49c
--- /dev/null
+++ b/src/main/resources/mapper/yunding/YdBasicLevelSettingDao.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.xcong.excoin.modules.yunding.dao.YdBasicLevelSettingDao">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/yunding/YdOrderDao.xml b/src/main/resources/mapper/yunding/YdOrderDao.xml
index 8d37948..f462c7f 100644
--- a/src/main/resources/mapper/yunding/YdOrderDao.xml
+++ b/src/main/resources/mapper/yunding/YdOrderDao.xml
@@ -72,4 +72,19 @@
         and a.id = #{id}
     </select>
 
+    <select id="getAgentList" resultType="com.xcong.excoin.modules.yunding.vo.AgentVo">
+        SELECT
+        *
+        FROM
+        yd_basic_level_setting a
+        ORDER BY a.id ASC
+    </select>
+
+    <update id="updateAgentLevel">
+        UPDATE member s
+        SET s.agent_level = #{levelId}
+        WHERE
+            s.id = #{id}
+    </update>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1