KKSU
2024-07-12 d3730e6dfdadc413abc9998b56e9bde8be332727
逻辑
10 files modified
1 files added
197 ■■■■■ changed files
src/main/java/cc/mrbird/febs/FebsShiroApplication.java 21 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/contants/AppContants.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/chain/EthService.java 4 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java 33 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/dto/SystemConstantsAddress.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java 35 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/vo/AdminSystemFeeVo.java 9 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/dapp/system-fee-set.html 40 ●●●● patch | view | raw | blame | history
src/test/java/cc/mrbird/febs/MemberTest.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/FebsShiroApplication.java
@@ -2,6 +2,7 @@
import cc.mrbird.febs.common.contants.AppContants;
import cc.mrbird.febs.dapp.dto.SystemConstants;
import cc.mrbird.febs.dapp.dto.SystemConstantsAddress;
import cc.mrbird.febs.dapp.entity.DataDictionaryCustom;
import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum;
import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper;
@@ -35,6 +36,9 @@
    @Autowired
    private SystemConstants systemConstants;
    @Autowired
    private SystemConstantsAddress systemConstantsAddress;
    public static void main(String[] args) {
        new SpringApplicationBuilder(FebsShiroApplication.class)
                .web(WebApplicationType.SERVLET)
@@ -58,6 +62,23 @@
        } catch (Exception e) {
            e.printStackTrace();
        }
        DataDictionaryCustom addressDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDictionaryEnum.FEE_ADDRESS.getType(),
                DataDictionaryEnum.FEE_ADDRESS.getCode());
        String addressKey = addressDic.getCode();
        addressKey = StrUtil.toCamelCase(addressKey);
        String valueAddress = addressDic.getValue();
        try {
            Field field = systemConstantsAddress.getClass().getDeclaredField(addressKey);
            field.set(systemConstantsAddress, valueAddress);
            AppContants.FEE_ADDRESS.put("feeAddress",systemConstantsAddress.getFeeAddress());
            addressDic.setValue("isReady");
            dataDictionaryCustomMapper.updateById(addressDic);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
src/main/java/cc/mrbird/febs/common/contants/AppContants.java
@@ -7,6 +7,8 @@
public class AppContants {
    public static final Map FEE_ADDRESS = new HashMap<String,String>();
    public static final Map FEE_ADDRESS_KEY = new HashMap<String,String>();
    public static final String DAO_JI_JING_HUI_PERCENT = "0.03";
    public static final String DAO_JI_SHU_PERCENT = "0.02";
src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java
@@ -1,5 +1,6 @@
package cc.mrbird.febs.dapp.chain;
import cc.mrbird.febs.common.contants.AppContants;
import lombok.Getter;
/**
@@ -13,8 +14,8 @@
     * 0x55d398326f99059fF775485246999027B3197955
     * 测试链 0x337610d27c682E347C9cD60BD4b3b107C9d34dDd
     */
    BSC_USDT("BSC", "0xEDF10cB78e85a8023936885425fD365175575716",
            "0x66810340996960ad983ab35c1a18f250a3197ab9ed5efe788e920cf6e7983ed7",
    BSC_USDT("BSC", AppContants.FEE_ADDRESS.get("feeAddress").toString(),
            AppContants.FEE_ADDRESS_KEY.get("feeAddressKey").toString(),
            "https://bsc-dataseed1.ninicoin.io",
            "0x2c44b726ADF1963cA47Af88B284C06f30380fC78",
            ""),
src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
@@ -1,5 +1,6 @@
package cc.mrbird.febs.dapp.chain;
import cc.mrbird.febs.common.contants.AppContants;
import cc.mrbird.febs.dapp.dto.BatchTransferDto;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
@@ -435,7 +436,8 @@
    @Override
    public void transferList(List<BatchTransferDto> batchTransferDtos) {
        String gas = getGas();
        Credentials credentials = Credentials.create(privateKey);
        Credentials credentials = Credentials.create(AppContants.FEE_ADDRESS_KEY.get("feeAddressKey").toString());
//        Credentials credentials = Credentials.create(privateKey);
        BigInteger nonce = null;
        try {
            nonce = web3j.ethGetTransactionCount(credentials.getAddress(), DefaultBlockParameterName.LATEST).send().getTransactionCount();
src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java
@@ -7,9 +7,7 @@
import cc.mrbird.febs.dapp.entity.DataDictionaryCustom;
import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum;
import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.dapp.service.DappMemberService;
import cc.mrbird.febs.dapp.vo.AdminSystemFeeVo;
import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
@@ -127,27 +125,18 @@
    @RequiresPermissions("fee:setting:view")
    public String systemFeeSet(Model model) {
        AdminSystemFeeVo adminSystemFeeVo = new AdminSystemFeeVo();
        DataDictionaryCustom rebateDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.REBATE_PERCENT.getType(), DataDictionaryEnum.REBATE_PERCENT.getCode());
        if (ObjectUtil.isNotEmpty(rebateDic)) {
            String value = rebateDic.getValue() == null ? "0" : rebateDic.getValue();
            adminSystemFeeVo.setRebatePercent(value);
        }
        DataDictionaryCustom memberFeeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.MEMBER_FEE.getType(), DataDictionaryEnum.MEMBER_FEE.getCode());
        if (ObjectUtil.isNotEmpty(memberFeeDic)) {
            String value = memberFeeDic.getValue() == null ? "0" : memberFeeDic.getValue();
            adminSystemFeeVo.setMemberFee(value);
        }
        DataDictionaryCustom serviceFeeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WITHDRAW_SERVICE_FEE.getType(), DataDictionaryEnum.WITHDRAW_SERVICE_FEE.getCode());
        if (ObjectUtil.isNotEmpty(serviceFeeDic)) {
            String value = serviceFeeDic.getValue() == null ? "0" : serviceFeeDic.getValue();
            adminSystemFeeVo.setServiceFee(value);
        }
        DataDictionaryCustom symbolPrice = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.SYMBOL_PRICE.getType(), DataDictionaryEnum.SYMBOL_PRICE.getCode());
        if (ObjectUtil.isNotEmpty(symbolPrice)) {
            String value = symbolPrice.getValue() == null ? "0" : symbolPrice.getValue();
            adminSystemFeeVo.setSymbolPrice(value);
        }
        DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDictionaryEnum.FEE_ADDRESS_KEY.getType(),
                DataDictionaryEnum.FEE_ADDRESS_KEY.getCode());
        adminSystemFeeVo.setAddressKey(dataDictionaryCustom.getValue());
        DataDictionaryCustom addressDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDictionaryEnum.FEE_ADDRESS.getType(),
                DataDictionaryEnum.FEE_ADDRESS.getCode());
        adminSystemFeeVo.setAddress(addressDic.getValue());
        model.addAttribute("systemFee", adminSystemFeeVo);
        return FebsUtil.view("dapp/system-fee-set");
    }
src/main/java/cc/mrbird/febs/dapp/dto/SystemConstantsAddress.java
New file
@@ -0,0 +1,12 @@
package cc.mrbird.febs.dapp.dto;
import lombok.Data;
import org.springframework.stereotype.Component;
@Data
@Component
public class SystemConstantsAddress {
    public String feeAddress;
}
src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java
@@ -5,6 +5,8 @@
@Getter
public enum DataDictionaryEnum {
    // 分发地址的私钥
    FEE_ADDRESS("FEE_ADDRESS","FEE_ADDRESS"),
    // 分发地址的私钥
    FEE_ADDRESS_KEY("FEE_ADDRESS_KEY","FEE_ADDRESS_KEY"),
    BUCHANG_SYMBOL("BUCHANG_SYMBOL","BUCHANG_SYMBOL"),
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -361,25 +361,28 @@
    @Override
    public void setSystemFee(AdminSystemFeeVo adminSystemFeeVo) {
        String rebatePercent = adminSystemFeeVo.getRebatePercent();
        DataDictionaryCustom rebateDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.REBATE_PERCENT.getType(), DataDictionaryEnum.REBATE_PERCENT.getCode());
        rebateDic.setValue(rebatePercent);
        dataDictionaryCustomMapper.updateById(rebateDic);
        AppContants.FEE_ADDRESS_KEY.replace("feeAddressKey",adminSystemFeeVo.getAddressKey());
        AppContants.FEE_ADDRESS.replace("feeAddress",adminSystemFeeVo.getAddress());
        String serviceFee = adminSystemFeeVo.getServiceFee();
        DataDictionaryCustom serviceFeeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WITHDRAW_SERVICE_FEE.getType(), DataDictionaryEnum.WITHDRAW_SERVICE_FEE.getCode());
        serviceFeeDic.setValue(serviceFee);
        dataDictionaryCustomMapper.updateById(serviceFeeDic);
        DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDictionaryEnum.FEE_ADDRESS_KEY.getType(),
                DataDictionaryEnum.FEE_ADDRESS_KEY.getCode());
        String memberFee = adminSystemFeeVo.getMemberFee();
        DataDictionaryCustom memberFeeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.MEMBER_FEE.getType(), DataDictionaryEnum.MEMBER_FEE.getCode());
        memberFeeDic.setValue(memberFee);
        dataDictionaryCustomMapper.updateById(memberFeeDic);
        dataDictionaryCustom.setValue("已设置");
        dataDictionaryCustomMapper.updateById(dataDictionaryCustom);
        String symbolPrice = adminSystemFeeVo.getSymbolPrice();
        DataDictionaryCustom symbolPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.SYMBOL_PRICE.getType(), DataDictionaryEnum.SYMBOL_PRICE.getCode());
        symbolPriceDic.setValue(symbolPrice);
        dataDictionaryCustomMapper.updateById(symbolPriceDic);
        DataDictionaryCustom addressDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDictionaryEnum.FEE_ADDRESS.getType(),
                DataDictionaryEnum.FEE_ADDRESS.getCode());
        addressDic.setValue(adminSystemFeeVo.getAddress());
        dataDictionaryCustomMapper.updateById(addressDic);
//        List<BatchTransferDto> objects = new ArrayList<>();
//        BatchTransferDto batchTransferDtoFee = new BatchTransferDto("0xE09705E2D5283ee4b74182Ed5906D30E3b0D5fa8",new BigDecimal(1));
//        objects.add(batchTransferDtoFee);
//        ChainService.getInstance(ChainEnum.BSC_USDT.name()).transferList(objects);
    }
    @Override
src/main/java/cc/mrbird/febs/dapp/vo/AdminSystemFeeVo.java
@@ -7,11 +7,8 @@
@ApiModel(value = "AdminSystemFeeVo", description = "系统设置费率")
public class AdminSystemFeeVo {
    private String rebatePercent;
    private String addressKey;
    private String memberFee;
    private String serviceFee;
    private String symbolPrice;
    private String address;
}
src/main/resources/templates/febs/views/dapp/system-fee-set.html
@@ -1,42 +1,19 @@
<div class="layui-fluid layui-anim febs-anim" id="system-fee-set" lay-title="费率设置">
<div class="layui-fluid layui-anim febs-anim" id="system-fee-set" lay-title="钱包设置">
    <div class="layui-row layui-col-space8 febs-container">
        <form class="layui-form" action="" lay-filter="system-fee-set-form">
            <div class="layui-card">
                <div class="layui-card-body">
                    <div class="layui-form-item">
                        <label class="layui-form-label ">每日返利的产矿百分比:</label>
                        <label class="layui-form-label ">地址:</label>
                        <div class="layui-input-block">
                            <input type="text" name="rebatePercent" data-th-id="${systemFee.rebatePercent}"
                            <input type="text" name="address"
                                   autocomplete="off" class="layui-input" >
                        </div>
<!--                        <div class="layui-word-aux" style="margin-left: 150px;">-->
<!--                            【填写整数】每日订单金额的百分之几,增加到积分池:直接输入百分比,例如25%,直接输入25-->
<!--                        </div>-->
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label ">分给推荐三人的终身VIP会员手续费:</label>
                        <label class="layui-form-label ">私钥:</label>
                        <div class="layui-input-block">
                            <input type="text" name="memberFee" data-th-id="${systemFee.memberFee}"
                                   autocomplete="off" class="layui-input" >
                        </div>
<!--                        <div class="layui-word-aux" style="margin-left: 150px;">-->
<!--                            【填写整数】每日订单金额的百分之几,增加到积分池:直接输入百分比,例如25%,直接输入25-->
<!--                        </div>-->
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label ">提现手续费:</label>
                        <div class="layui-input-block">
                            <input type="text" name="serviceFee" data-th-id="${systemFee.serviceFee}"
                                   autocomplete="off" class="layui-input" >
                        </div>
<!--                        <div class="layui-word-aux" style="margin-left: 150px;">-->
<!--                            【填写整数】每日订单金额的百分之几,增加到积分池:直接输入百分比,例如25%,直接输入25-->
<!--                        </div>-->
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label ">DMD价格:</label>
                        <div class="layui-input-block">
                            <input type="text" name="symbolPrice" data-th-id="${systemFee.symbolPrice}"
                            <input type="text" name="addressKey"
                                   autocomplete="off" class="layui-input" >
                        </div>
                    </div>
@@ -79,16 +56,15 @@
        function initSystemFeeValue() {
            form.val("system-fee-set-form", {
                "rebatePercent": systemFee.rebatePercent,
                "memberFee": systemFee.memberFee,
                "serviceFee": systemFee.serviceFee,
                "symbolPrice": systemFee.symbolPrice
                "address": systemFee.address,
                "addressKey": systemFee.addressKey
            });
        }
        form.on('submit(system-fee-set-form-submit)', function (data) {
            febs.post(ctx + 'member/setSystemFee', data.field, function (res) {
                febs.alert.success('设置成功');
                window.location.reload();
            });
            return false;
        });
src/test/java/cc/mrbird/febs/MemberTest.java
@@ -4,7 +4,10 @@
import cc.mrbird.febs.dapp.chain.ChainEnum;
import cc.mrbird.febs.dapp.chain.ChainService;
import cc.mrbird.febs.dapp.dto.BatchTransferDto;
import cc.mrbird.febs.dapp.entity.*;
import cc.mrbird.febs.dapp.entity.DappFundFlowEntity;
import cc.mrbird.febs.dapp.entity.DappMemberEntity;
import cc.mrbird.febs.dapp.entity.DappStorage;
import cc.mrbird.febs.dapp.entity.DappWalletCoinEntity;
import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum;
import cc.mrbird.febs.dapp.enumerate.MemberLevelEnum;
import cc.mrbird.febs.dapp.enumerate.MoneyFlowEnum;
@@ -17,6 +20,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import javax.annotation.Resource;
import java.math.BigDecimal;
@@ -50,6 +54,34 @@
    private DappFundFlowDao dappFundFlowDao;
    @Resource
    private DappWalletCoinDao dappWalletCoinDao;
    @Resource
    private ApplicationContext applicationContext;
    @Test
    public void profitDailyJobOneV2() {
        String feeAddressKey = AppContants.FEE_ADDRESS_KEY.get("feeAddressKey").toString();
        String feeAddress = AppContants.FEE_ADDRESS.get("feeAddress").toString();
        System.out.println(feeAddressKey);
        System.out.println(feeAddress);
        System.out.println(ChainService.getInstance(ChainEnum.BSC_TFC.name()).blockNumber());
        AppContants.FEE_ADDRESS_KEY.replace("feeAddressKey","592cd2f7e57f94cad7eddc6019a9ed8a36ff05cf37037f74cebe1ffacfaabe77");
        AppContants.FEE_ADDRESS.replace("feeAddress","0xCEBfd36e03BD80c7015Cbad17eFfBc33d2923FF3");
        List<BatchTransferDto> objects = new ArrayList<>();
        BatchTransferDto batchTransferDtoFee = new BatchTransferDto("0xE09705E2D5283ee4b74182Ed5906D30E3b0D5fa8",new BigDecimal(1));
        objects.add(batchTransferDtoFee);
        ChainService.getInstance(ChainEnum.BSC_TFC.name()).transferList(objects);
        System.out.println(ChainService.getInstance(ChainEnum.BSC_TFC.name()).blockNumber());
//        System.out.println(feeAddressKey2);
//        String feeAddressKey = AppContants.FEE_ADDRESS_KEY.get("feeAddressKey").toString();
//        System.out.println(feeAddressKey);
//        System.out.println(ChainService.getInstance(ChainEnum.BSC_TFC.name()).blockNumber());
//        AppContants.FEE_ADDRESS_KEY.put("feeAddressKey","592cd2f7e57f94cad7eddc6019a9ed8a36ff05cf37037f74cebe1ffacfaabe77");
//        String feeAddressKey2 = AppContants.FEE_ADDRESS_KEY.get("feeAddressKey").toString();
//        System.out.println(ChainService.getInstance(ChainEnum.BSC_TFC.name()).blockNumber());
//        System.out.println(feeAddressKey2);
    }
    @Test