src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/dapp/dto/BuyNodeDto.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java | ●●●●● patch | view | raw | blame | history |
src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
@@ -1,7 +1,6 @@ package cc.mrbird.febs.dapp.controller; import cc.mrbird.febs.common.annotation.EncryptEnable; import cc.mrbird.febs.common.configure.i18n.MessageSourceUtils; import cc.mrbird.febs.common.contants.AppContants; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.utils.LoginUserUtil; @@ -11,7 +10,6 @@ import cc.mrbird.febs.dapp.service.DappMemberService; import cc.mrbird.febs.dapp.service.DappSystemService; import cc.mrbird.febs.dapp.service.DappWalletService; import cc.mrbird.febs.dapp.vo.ActiveNftListVo; import cc.mrbird.febs.dapp.vo.TeamListVo; import cc.mrbird.febs.dapp.vo.WalletInfoVo; import io.swagger.annotations.Api; @@ -52,6 +50,12 @@ return new FebsResponse().success().data(walletInfoVo); } @ApiOperation(value = "购买节点", notes = "购买节点") @PostMapping(value = "/buyNode") public FebsResponse buyNode(@RequestBody BuyNodeDto buyNodeDto) { return new FebsResponse().success().data(dappWalletService.buyNode(buyNodeDto)); } @ApiOperation(value = "转账", notes = "转账") @PostMapping(value = "/transfer") public FebsResponse transfer(@RequestBody TransferDto transferDto) { src/main/java/cc/mrbird/febs/dapp/dto/BuyNodeDto.java
New file @@ -0,0 +1,25 @@ package cc.mrbird.febs.dapp.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data @ApiModel(value = "BuyNodeDto", description = "连接参数接收类") public class BuyNodeDto { @ApiModelProperty(value = "id", example = "1") private Long id; @ApiModelProperty(value = "金额", example = "1") private BigDecimal amount; @ApiModelProperty(value = "success/fail", example = "success") private String flag; @ApiModelProperty(value = "交易hash", example = "123") private String txHash; } src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java
@@ -6,7 +6,6 @@ import lombok.Data; import java.math.BigDecimal; import java.util.Date; /** * @author @@ -48,6 +47,8 @@ /** * 类型 1-买入 2-矩阵收益 3-直推收益 4-保险池 5-提现 6-手续费充值 7-手续费扣除 8-结算 9-冻结 10-冻结释放 11-产矿 12-手续费返利 * * 13-节点买入 */ private Integer type; src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java
@@ -1,12 +1,9 @@ package cc.mrbird.febs.dapp.entity; import cc.mrbird.febs.common.entity.BaseEntity; import cc.mrbird.febs.dapp.chain.ChainService; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import org.web3j.abi.datatypes.Int; import java.math.BigDecimal; @@ -68,6 +65,8 @@ * 激活状态 1-已激活 2-未激活 */ private Integer activeStatus; //是否购买节点 0 - 否 1 - 是 private Integer buyNode; /** * 滑点分享链 src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java
@@ -4,6 +4,8 @@ @Getter public enum DataDictionaryEnum { // 购买节点需要的金额 BUY_NODE_AMOUNT("BUY_NODE_AMOUNT","BUY_NODE_AMOUNT"), // 每日返利的产矿百分比 REBATE_PERCENT("SYSTEM_SETTING","REBATE_PERCENT"), // 分给推荐三人的终身VIP会员手续费 src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
@@ -6,14 +6,11 @@ import cc.mrbird.febs.dapp.entity.DappFundFlowEntity; import cc.mrbird.febs.dapp.entity.DappWalletCoinEntity; import cc.mrbird.febs.dapp.entity.DappWalletMineEntity; import cc.mrbird.febs.dapp.vo.ActiveNftListVo; import cc.mrbird.febs.dapp.vo.WalletInfoVo; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springframework.web.bind.annotation.RequestBody; import java.math.BigDecimal; import java.util.List; import java.util.Map; public interface DappWalletService { @@ -45,4 +42,5 @@ DappWalletCoinEntity findByMemberId(Long memberId); Long buyNode(BuyNodeDto buyNodeDto); } src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -1,32 +1,20 @@ package cc.mrbird.febs.dapp.service.impl; import cc.mrbird.febs.common.configure.i18n.MessageSourceUtils; import cc.mrbird.febs.common.contants.AppContants; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.FebsUtil; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.dapp.chain.ChainEnum; import cc.mrbird.febs.dapp.chain.ChainService; import cc.mrbird.febs.dapp.chain.ContractChainService; import cc.mrbird.febs.dapp.dto.*; import cc.mrbird.febs.dapp.entity.*; import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum; import cc.mrbird.febs.dapp.mapper.*; import cc.mrbird.febs.dapp.service.DappWalletService; import cc.mrbird.febs.dapp.utils.BoxUtil; import cc.mrbird.febs.dapp.vo.ActiveNftListVo; import cc.mrbird.febs.dapp.vo.WalletInfoVo; import cc.mrbird.febs.rabbit.producer.ChainProducer; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; @@ -36,7 +24,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; import java.util.List; /** * @author @@ -79,6 +67,14 @@ walletInfo.setProfit(dappFundFlowDao.selectProfitAmountByMemberId(member.getId())); walletInfo.setTfcBalance(walletMine.getAvailableAmount()); walletInfo.setSafePool(mineData.getSafePool()); DataDictionaryCustom buyNodeAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.BUY_NODE_AMOUNT.getType(), DataDictionaryEnum.BUY_NODE_AMOUNT.getCode() ); BigDecimal buyNodeAmount = new BigDecimal(StrUtil.isEmpty(buyNodeAmountDic.getValue()) ? "100" : buyNodeAmountDic.getValue()); walletInfo.setBuyNodeAmount(buyNodeAmount); walletInfo.setBuyNode(ObjectUtil.isEmpty(memberInfo.getBuyNode()) ? 0 : memberInfo.getBuyNode()); return walletInfo; } @@ -336,4 +332,50 @@ public DappWalletCoinEntity findByMemberId(Long memberId) { return dappWalletCoinDao.selectByMemberId(memberId); } @Override public Long buyNode(BuyNodeDto transferDto) { DappMemberEntity member = LoginUserUtil.getAppUser(); String upgrade = redisUtils.getString("APP_UPGRADE"); if ("upgrade".equals(upgrade)) { throw new FebsException("功能升级中"); } member = dappMemberDao.selectById(member.getId()); int buyNode = ObjectUtil.isEmpty(member.getBuyNode()) ? 0 : 1; if (1 == buyNode) { throw new FebsException("Do not repeat purchase"); } if (ObjectUtil.isEmpty(transferDto.getId())) { DappFundFlowEntity fundFlow = new DappFundFlowEntity( member.getId(), transferDto.getAmount().negate(), 13, 1, BigDecimal.ZERO, transferDto.getTxHash()); dappFundFlowDao.insert(fundFlow); return fundFlow.getId(); } else { DappFundFlowEntity flow = dappFundFlowDao.selectById(transferDto.getId()); if(ObjectUtil.isEmpty(flow)){ return null; } if ("success".equals(transferDto.getFlag())) { flow.setStatus(2); flow.setFromHash(transferDto.getTxHash()); dappFundFlowDao.updateById(flow); member.setBuyNode(1); dappMemberDao.updateById(member); } else { if (flow.getStatus() == 1) { dappFundFlowDao.deleteById(transferDto.getId()); } } } return null; } } src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java
@@ -37,4 +37,10 @@ @ApiModelProperty(value = "保险池") private BigDecimal safePool; @ApiModelProperty(value = "购买节点的金额") private BigDecimal buyNodeAmount; @ApiModelProperty(value = "是否是节点 1-是 0-否") private Integer buyNode; }