xiaoyong931011
2021-05-12 feab2b9842a8f3529804d8de0d16589c2ed05268
20210512 云顶
5 files added
7 files modified
275 ■■■■■ changed files
src/main/java/com/xcong/excoin/modules/yunding/controller/YunDingController.java 28 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/dao/YdBasicLevelSettingDao.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/dao/YdOrderDao.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/dto/BugAgentLeveldto.java 27 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/dto/InsureChangeUsdtDto.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/dto/YdAgentDto.java 23 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/entity/YdBasicLevelSettingEntity.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java 104 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/service/YunDingService.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/yunding/vo/AgentVo.java 39 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/yunding/YdBasicLevelSettingDao.xml 7 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/yunding/YdOrderDao.xml 15 ●●●●● patch | view | raw | blame | history
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);
    }
}
src/main/java/com/xcong/excoin/modules/yunding/dao/YdBasicLevelSettingDao.java
New file
@@ -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> {
}
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);
}
src/main/java/com/xcong/excoin/modules/yunding/dto/BugAgentLeveldto.java
New file
@@ -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;
}
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;
}
src/main/java/com/xcong/excoin/modules/yunding/dto/YdAgentDto.java
New file
@@ -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;
}
src/main/java/com/xcong/excoin/modules/yunding/entity/YdBasicLevelSettingEntity.java
@@ -24,5 +24,7 @@
    private BigDecimal calculationPower;
    private BigDecimal salePrice;
    private Integer level;
}
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
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);
}
src/main/java/com/xcong/excoin/modules/yunding/vo/AgentVo.java
New file
@@ -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;
}
src/main/resources/mapper/yunding/YdBasicLevelSettingDao.xml
New file
@@ -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>
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>