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