src/main/java/cc/mrbird/febs/common/advise/MyRequestBodyAdvise.java
@@ -1,6 +1,7 @@ package cc.mrbird.febs.common.advise; import cc.mrbird.febs.common.contants.AppContants; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.MethodParameter; import org.springframework.http.HttpInputMessage; import org.springframework.http.converter.HttpMessageConverter; @@ -18,6 +19,9 @@ @ControllerAdvice public class MyRequestBodyAdvise implements RequestBodyAdvice { @Value("${system.debug}") private boolean isDebug; @Override public boolean supports(MethodParameter methodParameter, Type type, Class<? extends HttpMessageConverter<?>> aClass) { return true; @@ -26,7 +30,7 @@ @Override public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter methodParameter, Type type, Class<? extends HttpMessageConverter<?>> aClass) throws IOException { if(!AppContants.ENCRYPT_METHOD.contains(methodParameter.getMethod().getName())) { if(!AppContants.ENCRYPT_METHOD.contains(methodParameter.getMethod().getName()) || isDebug) { return inputMessage; } src/main/java/cc/mrbird/febs/common/advise/MyResponseBodyAdvise.java
@@ -5,6 +5,7 @@ import cn.hutool.crypto.asymmetric.KeyType; import cn.hutool.crypto.asymmetric.RSA; import com.alibaba.fastjson.JSONObject; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; import org.springframework.http.server.ServerHttpRequest; @@ -18,6 +19,10 @@ **/ @ControllerAdvice public class MyResponseBodyAdvise implements ResponseBodyAdvice { @Value("${system.debug}") private boolean isDebug; @Override public boolean supports(MethodParameter methodParameter, Class aClass) { return true; @@ -25,7 +30,8 @@ @Override public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) { if (!AppContants.ENCRYPT_METHOD.contains(methodParameter.getMethod().getName())) { if (!AppContants.ENCRYPT_METHOD.contains(methodParameter.getMethod().getName()) || isDebug) { System.out.println(1111111); return o; } src/main/java/cc/mrbird/febs/common/configure/FebsConfigure.java
@@ -69,11 +69,16 @@ @Bean public Docket swaggerApi() { SwaggerProperties swagger = properties.getSwagger(); ParameterBuilder parameterBuilder = new ParameterBuilder(); List<Parameter> parameters = new ArrayList<Parameter>(); ParameterBuilder parameterBuilder = new ParameterBuilder(); parameterBuilder.name("address").description("address地址").modelRef(new ModelRef("string")).parameterType("header") .required(false).build(); ParameterBuilder parameterBuilder2 = new ParameterBuilder(); parameterBuilder2.name("key").description("key").modelRef(new ModelRef("string")).parameterType("header") .required(false).build(); parameters.add(parameterBuilder.build()); parameters.add(parameterBuilder2.build()); return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) src/main/java/cc/mrbird/febs/common/interceptor/DappInterceptor.java
@@ -2,6 +2,7 @@ import cc.mrbird.febs.common.contants.AppContants; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.properties.SystemProperties; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.common.utils.SpringContextUtil; @@ -14,6 +15,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.web.servlet.HandlerInterceptor; import org.web3j.crypto.Hash; @@ -33,6 +35,8 @@ private final DappMemberDao dappMemberDao = SpringContextUtil.getBean(DappMemberDao.class); private final RedisUtils redisUtils = SpringContextUtil.getBean(RedisUtils.class); private SystemProperties systemProperties = SpringContextUtil.getBean(SystemProperties.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if ("OPTIONS".equals(request.getMethod().toUpperCase())) { @@ -48,19 +52,21 @@ return false; } Map<Object, Object> signKey = redisUtils.hmget(AppContants.REDIS_KEY_SIGN); Object signObj = signKey.get(headAddress); if (!systemProperties.isDebug()) { Map<Object, Object> signKey = redisUtils.hmget(AppContants.REDIS_KEY_SIGN); Object signObj = signKey.get(headAddress); if (signObj == null) { responseUnAuth(response); return false; } String sign = (String) signObj; if (signObj == null) { responseUnAuth(response); return false; } String sign = (String) signObj; String calKey = LoginUserUtil.sha3(sign + path + headAddress).replace("0x", ""); if (!calKey.equals(key)) { responseUnAuth(response); return false; String calKey = LoginUserUtil.sha3(sign + path + headAddress).replace("0x", ""); if (!calKey.equals(key)) { responseUnAuth(response); return false; } } DappMemberEntity memberEntity = dappMemberDao.selectByAddress(headAddress, null); src/main/java/cc/mrbird/febs/common/properties/SystemProperties.java
New file @@ -0,0 +1,16 @@ package cc.mrbird.febs.common.properties; import lombok.Data; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.context.properties.ConfigurationProperties; /** * @author wzy * @date 2022-08-26 **/ @Data @SpringBootConfiguration @ConfigurationProperties(prefix = "system") public class SystemProperties { private boolean debug; } src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java
@@ -32,15 +32,12 @@ @Resource private RedisUtils redisUtils; @Resource private DappMemberService dappMemberService; @Resource private DappFundFlowDao dappFundFlowDao; @Resource private DappWalletCoinDao dappWalletCoinDao; @Resource private ChainProducer chainProducer; @Override @@ -113,6 +110,8 @@ walletCoin.setAvailableAmount(walletCoin.getAvailableAmount().add(amount)); dappWalletCoinDao.updateById(walletCoin); } chainProducer.sendAchieveTreeMsg(fundFlow.getMemberId()); } } } src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -282,8 +282,8 @@ member.setChainType(chainType); member.setAccountType(accountType); member.setActiveStatus(2); member.setBalance(ChainService.getInstance(ChainEnum.BSC_TFC.name()).balanceOf(address)); member.setUsdtBalance(ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf(address)); // member.setBalance(ChainService.getInstance(ChainEnum.BSC_TFC.name()).balanceOf(address)); // member.setUsdtBalance(ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf(address)); dappMemberDao.insert(member); src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -680,9 +680,15 @@ achieveMemberTree.setTopNode(memberId); achieveMemberTree.setDeep(1); achieveMemberTree.setHasMoney(1); achieveMemberTree.setParentNode(parentNode.getMemberId()); if (parentNode != null) { achieveMemberTree.setParentNode(parentNode.getMemberId()); } dappAchieveMemberTreeDao.insert(achieveMemberTree); if (parentNode == null) { return; } // 修改父节点在数据库中的左/右节点数据 DappAchieveTreeEntity treeMidNode = dappAchieveTreeDao.selectByMidNode(parentNode.getMemberId()); boolean isLeft = false; src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -18,6 +18,7 @@ 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; @@ -54,6 +55,8 @@ private final DataDictionaryCustomMapper dataDictionaryCustomMapper; private final DappSystemService dappSystemService; private final DappNftActivationDao dappNftActivationDao; private final ChainProducer chainProducer; @Override public WalletInfoVo walletInfo() { @@ -229,9 +232,14 @@ walletCoin.setAvailableAmount(walletCoin.getAvailableAmount().subtract(transferDto.getAmount())); dappWalletCoinDao.updateById(walletCoin); DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), transferDto.getAmount(), 1, 2, transferDto.getFee(), transferDto.getTxHash()); dappFundFlowDao.insert(fundFlow); chainProducer.sendAchieveTreeMsg(member.getId()); } else { if (transferDto.getId() == null) { DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), transferDto.getAmount(), transferDto.getType(), 1, transferDto.getFee(), transferDto.getTxHash()); DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), transferDto.getAmount(), 1, 1, transferDto.getFee(), transferDto.getTxHash()); dappFundFlowDao.insert(fundFlow); return fundFlow.getId(); } src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
@@ -22,32 +22,33 @@ @Autowired private DappSystemService dappSystemService; @RabbitListener(queues = QueueConstants.ONLINE_TRANSFER) public void onlineTransfer(String batchNo) { log.info("收到链上转账消息:{}", batchNo); dappSystemService.onlineTransfer(batchNo); } @RabbitListener(queues = QueueConstants.DISTRIB_PROFIT) public void distrbProfit(String id) { log.info("收到滑点分配消息:{}", id); dappSystemService.tradeNftProfitDistribute(Long.parseLong(id)); } @RabbitListener(queues = QueueConstants.USER_BUY_REWARD) public void userBuyReward(String id) { log.info("收到用户购买奖励消息:{}", id); dappSystemService.userBuyReward(Long.parseLong(id)); } @RabbitListener(queues = QueueConstants.NFT_BOX) public void nftBox(String id) { log.info("收到nft盲盒消息:{}", id); dappSystemService.boxCnt(Long.parseLong(id)); } // @RabbitListener(queues = QueueConstants.ONLINE_TRANSFER) // public void onlineTransfer(String batchNo) { // log.info("收到链上转账消息:{}", batchNo); // dappSystemService.onlineTransfer(batchNo); // } // // @RabbitListener(queues = QueueConstants.DISTRIB_PROFIT) // public void distrbProfit(String id) { // log.info("收到滑点分配消息:{}", id); // dappSystemService.tradeNftProfitDistribute(Long.parseLong(id)); // } // // @RabbitListener(queues = QueueConstants.USER_BUY_REWARD) // public void userBuyReward(String id) { // log.info("收到用户购买奖励消息:{}", id); // dappSystemService.userBuyReward(Long.parseLong(id)); // } // // @RabbitListener(queues = QueueConstants.NFT_BOX) // public void nftBox(String id) { // log.info("收到nft盲盒消息:{}", id); // dappSystemService.boxCnt(Long.parseLong(id)); // } @RabbitListener(queues = QueueConstants.ACHIEVE_TREE) public void achieveTree(String id) { log.info("收到业绩树消息"); dappSystemService.achieveTree(Long.parseLong(id)); } } src/main/resources/application-dev.yml
@@ -48,6 +48,7 @@ publisher-confirm-type: correlated system: online-transfer: false online-transfer: true chain-listener: false trade-job: false trade-job: false debug: true src/main/resources/application-prod.yml
@@ -55,4 +55,5 @@ system: online-transfer: true chain-listener: true trade-job: true trade-job: true isDebug: false src/main/resources/application-test.yml
@@ -52,3 +52,4 @@ online-transfer: false chain-listener: false trade-job: false isDebug: false