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