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>