Bläddra i källkod

1.删除 admin-api 依赖
2.删除 log 模块

reghao 5 månader sedan
förälder
incheckning
e5ff154b8c
22 ändrade filer med 86 tillägg och 479 borttagningar
  1. 0 5
      content/content-service/pom.xml
  2. 1 15
      content/content-service/src/main/java/cn/reghao/tnb/content/app/util/rabbit/RabbitAppender.java
  3. 0 94
      log/pom.xml
  4. 0 17
      log/src/main/java/cn/reghao/tnb/log/LogApplication.java
  5. 0 52
      log/src/main/java/cn/reghao/tnb/log/appender/WsAppender.java
  6. 0 140
      log/src/main/java/cn/reghao/tnb/log/ws/WebSocketListenerImpl.java
  7. 0 84
      log/src/main/java/cn/reghao/tnb/log/ws/WsClient.java
  8. 0 32
      log/src/main/resources/application.yml
  9. 0 5
      message/message-service/pom.xml
  10. 5 5
      message/message-service/src/main/java/cn/reghao/tnb/message/app/service/MessageConsumer.java
  11. 9 9
      message/message-service/src/main/java/cn/reghao/tnb/message/app/service/NotifyService.java
  12. 0 1
      pom.xml
  13. 0 5
      search/search-service/pom.xml
  14. 3 3
      search/search-service/src/main/java/cn/reghao/tnb/search/app/log/NginxLogService.java
  15. 16 0
      search/search-service/src/main/java/cn/reghao/tnb/search/app/soa/model/dto/RouteAdd.java
  16. 14 0
      search/search-service/src/main/java/cn/reghao/tnb/search/app/soa/model/dto/RouteDelete.java
  17. 2 2
      search/search-service/src/main/java/cn/reghao/tnb/search/app/soa/service/RouteService.java
  18. 23 0
      user/user-api/src/main/java/cn/reghao/tnb/user/api/dto/AdminMessage.java
  19. 2 0
      user/user-api/src/main/java/cn/reghao/tnb/user/api/iface/UserService.java
  20. 0 5
      user/user-service/pom.xml
  21. 7 1
      user/user-service/src/main/java/cn/reghao/tnb/user/app/rpc/UserServiceImpl.java
  22. 4 4
      user/user-service/src/main/java/cn/reghao/tnb/user/app/rpc/UserWalletServiceImpl.java

+ 0 - 5
content/content-service/pom.xml

@@ -38,11 +38,6 @@
             <artifactId>file-api</artifactId>
             <version>1.0.0-SNAPSHOT</version>
         </dependency>
-        <dependency>
-            <groupId>cn.reghao.bnt</groupId>
-            <artifactId>log</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
-        </dependency>
 
         <dependency>
             <groupId>cn.reghao.tnb</groupId>

+ 1 - 15
content/content-service/src/main/java/cn/reghao/tnb/content/app/util/rabbit/RabbitAppender.java

@@ -2,7 +2,6 @@ package cn.reghao.tnb.content.app.util.rabbit;
 
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.UnsynchronizedAppenderBase;
-import cn.reghao.bnt.log.AppLog;
 import cn.reghao.jutil.jdk.serializer.JsonConverter;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
 
@@ -34,20 +33,7 @@ public class RabbitAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
 
     @Override
     protected void append(ILoggingEvent event) {
-        AppLog appLog = getAppLog(event);
-        String jsonPayload = JsonConverter.objectToJson(appLog);
-
         String routingKey = "tnb.log.app";
-        rabbitTemplate.convertAndSend(routingKey, jsonPayload);
-    }
-
-    private AppLog getAppLog(ILoggingEvent event) {
-        String requestId = event.getMDCPropertyMap().get("request_id");
-        long timestamp = event.getTimeStamp();
-        String level = event.getLevel().toString();
-        String thread = event.getThreadName();
-        String logger = event.getLoggerName();
-        String message = event.getFormattedMessage();
-        return new AppLog(requestId, app, host, timestamp, level, thread, logger, message);
+        rabbitTemplate.convertAndSend(routingKey, "");
     }
 }

+ 0 - 94
log/pom.xml

@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>tnb</artifactId>
-        <groupId>cn.reghao.tnb</groupId>
-        <version>1.0.0</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>log</artifactId>
-    <version>1.0.0-SNAPSHOT</version>
-
-    <properties>
-        <maven.compiler.source>11</maven.compiler.source>
-        <maven.compiler.target>11</maven.compiler.target>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>cn.reghao.tnb</groupId>
-            <artifactId>common</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.squareup.okhttp3</groupId>
-            <artifactId>okhttp</artifactId>
-            <version>4.10.0</version>
-        </dependency>
-    </dependencies>
-
-    <profiles>
-        <profile>
-            <id>dev</id>
-            <properties>
-                <profile.active>dev</profile.active>
-            </properties>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-            </activation>
-        </profile>
-        <profile>
-            <id>test</id>
-            <properties>
-                <profile.active>test</profile.active>
-            </properties>
-        </profile>
-        <profile>
-            <id>cluster</id>
-            <properties>
-                <profile.active>cluster</profile.active>
-            </properties>
-        </profile>
-    </profiles>
-
-    <build>
-        <finalName>tnb-log</finalName>
-        <extensions>
-            <extension>
-                <groupId>kr.motd.maven</groupId>
-                <artifactId>os-maven-plugin</artifactId>
-                <version>1.5.0.Final</version>
-            </extension>
-        </extensions>
-
-        <resources>
-            <resource>
-                <directory>src/main/resources</directory>
-                <filtering>true</filtering>
-                <includes>
-                    <include>application.yml</include>
-                    <include>application-${profile.active}.yml</include>
-                </includes>
-            </resource>
-        </resources>
-
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-                <version>${springboot.version}</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>repackage</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-</project>

+ 0 - 17
log/src/main/java/cn/reghao/tnb/log/LogApplication.java

@@ -1,17 +0,0 @@
-package cn.reghao.tnb.log;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.ComponentScan;
-
-/**
- * @author reghao
- * @date 2025-08-27 16:38:00
- */
-@SpringBootApplication
-@ComponentScan({"cn.reghao.tnb.log", "cn.reghao.tnb.common"})
-public class LogApplication {
-    public static void main(String[] args) {
-        SpringApplication.run(LogApplication.class, args);
-    }
-}

+ 0 - 52
log/src/main/java/cn/reghao/tnb/log/appender/WsAppender.java

@@ -1,52 +0,0 @@
-package cn.reghao.tnb.log.appender;
-
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.UnsynchronizedAppenderBase;
-import cn.reghao.jutil.web.HeaderKeys;
-import cn.reghao.jutil.web.ServletUtil;
-import cn.reghao.jutil.web.log.AppLog;
-import cn.reghao.tnb.log.ws.WsClient;
-
-/**
- * @author reghao
- * @date 2023-06-03 19:37:21
- */
-public class WsAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
-    private final String app;
-    private final String host;
-    private final WsClient wsClient;
-
-    public WsAppender(String url, String app, String host) {
-        this.app = app;
-        this.host = host;
-        this.wsClient = new WsClient(url);
-        setName("wsAppender");
-    }
-
-    @Override
-    public void start() {
-        wsClient.connect();
-        super.start();
-    }
-
-    @Override
-    public void stop() {
-        super.stop();
-    }
-
-    @Override
-    protected void append(ILoggingEvent event) {
-        AppLog appLog = getAppLog(event);
-        wsClient.send(appLog);
-    }
-
-    private AppLog getAppLog(ILoggingEvent event) {
-        String requestId = (String) ServletUtil.getRequest().getAttribute(HeaderKeys.XRequestId);
-        long timestamp = event.getTimeStamp();
-        String level = event.getLevel().toString();
-        String thread = event.getThreadName();
-        String logger = event.getLoggerName();
-        String message = event.getFormattedMessage();
-        return new AppLog(requestId, app, host, timestamp, level, thread, logger, message);
-    }
-}

+ 0 - 140
log/src/main/java/cn/reghao/tnb/log/ws/WebSocketListenerImpl.java

@@ -1,140 +0,0 @@
-package cn.reghao.tnb.log.ws;
-
-import cn.reghao.jutil.jdk.converter.DateTimeConverter;
-import cn.reghao.jutil.web.log.AppLog;
-import cn.reghao.jutil.jdk.serializer.JdkSerializer;
-import cn.reghao.jutil.jdk.thread.ThreadPoolWrapper;
-import lombok.extern.slf4j.Slf4j;
-import okhttp3.Response;
-import okhttp3.WebSocket;
-import okhttp3.WebSocketListener;
-import okio.ByteString;
-
-import java.io.EOFException;
-import java.net.ConnectException;
-import java.net.ProtocolException;
-import java.util.concurrent.Future;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author reghao
- * @date 2023-02-23 09:26:50
- */
-@Slf4j
-public class WebSocketListenerImpl extends WebSocketListener {
-    private final ScheduledExecutorService scheduler = ThreadPoolWrapper.scheduledThreadPool("ws-heartbeat", 1);
-    private Future<?> heartbeatFuture;
-    private final WsClient wsClient;
-
-    public WebSocketListenerImpl(WsClient wsClient) {
-        this.wsClient = wsClient;
-    }
-
-    @Override
-    public void onOpen(WebSocket webSocket, Response response) {
-        log.info("WebSocket 连接成功");
-        heartbeatFuture = scheduler.scheduleAtFixedRate(new HeartbeatTask(wsClient), 0, 10, TimeUnit.SECONDS);
-
-        wsClient.setConnected(true);
-        wsClient.resetRetryCount();
-    }
-
-    @Override
-    public void onClosing(WebSocket webSocket, int code, String reason) {
-        log.error("WebSocket 连接被动断开 -> {} - {}", code, reason);
-        if (heartbeatFuture != null && !heartbeatFuture.isCancelled()) {
-            heartbeatFuture.cancel(true);
-        }
-
-        wsClient.setConnected(false);
-
-        if (wsClient.isRetry()) {
-            reconnect();
-        }
-    }
-
-    @Override
-    public void onClosed(WebSocket webSocket, int code, String reason) {
-        log.error("WebSocket 连接主动断开 -> {} - {}", code, reason);
-        if (heartbeatFuture != null && !heartbeatFuture.isCancelled()) {
-            heartbeatFuture.cancel(true);
-        }
-
-        wsClient.setConnected(false);
-    }
-
-    @Override
-    public void onFailure(WebSocket webSocket, Throwable throwable, Response response) {
-        log.info("WebSocket 异常事件: {}", throwable.toString());
-        if (heartbeatFuture != null && !heartbeatFuture.isCancelled()) {
-            heartbeatFuture.cancel(true);
-        }
-
-        if (throwable instanceof ConnectException
-                || throwable instanceof EOFException
-                || throwable instanceof ProtocolException) {
-            wsClient.setConnected(false);
-            if (wsClient.isRetry()) {
-                reconnect();
-            }
-        } else {
-            throwable.printStackTrace();
-        }
-    }
-
-    private void reconnect() {
-        log.info("WebSocket 重连");
-        try {
-            if (wsClient.getRetryCount() > 10) {
-                log.info("WebSocket 重连超过 10 次, 休眠 1 分钟后再尝试");
-                Thread.sleep(60_000);
-                wsClient.resetRetryCount();
-            } else {
-                log.info("休眠 10s 后再尝试重连");
-                Thread.sleep(10_000);
-            }
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
-        wsClient.retryCountIncr();
-        wsClient.connect();
-    }
-
-    @Override
-    public void onMessage(WebSocket webSocket, String text) {
-        log.info("text message from server");
-        log.info(text);
-    }
-
-    @Override
-    public void onMessage(WebSocket webSocket, ByteString bytes) {
-        log.info("binary message from server");
-        Object object = JdkSerializer.deserialize(bytes.toByteArray());
-        if (object instanceof AppLog) {
-            AppLog appLog = (AppLog) object;
-            String app = appLog.getApp();
-            String host = appLog.getHost();
-            long timestamp = appLog.getTimestamp();
-            String dateTime = DateTimeConverter.format(timestamp);
-            String thread = appLog.getThread();
-            String level = appLog.getLevel();
-            String logger = appLog.getLogger();
-            String message = appLog.getMessage();
-            log.info("{} {} {} {} {} {} {}", app, host, dateTime, thread, level, logger, message);
-        }
-    }
-
-    static class HeartbeatTask implements Runnable {
-        private final WsClient wsClient;
-
-        public HeartbeatTask(WsClient wsClient) {
-            this.wsClient = wsClient;
-        }
-
-        @Override
-        public void run() {
-            wsClient.send("ws heartbeat");
-        }
-    }
-}

+ 0 - 84
log/src/main/java/cn/reghao/tnb/log/ws/WsClient.java

@@ -1,84 +0,0 @@
-package cn.reghao.tnb.log.ws;
-
-import cn.reghao.jutil.jdk.serializer.JdkSerializer;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.WebSocket;
-import okhttp3.WebSocketListener;
-import okio.ByteString;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author reghao
- * @date 2023-02-23 09:26:50
- */
-public class WsClient {
-    private final String url;
-    private WebSocket webSocket;
-    private boolean connected;
-    private final WebSocketListener webSocketListener;
-    private boolean retry;
-    private int retryCount;
-
-    public WsClient(String url) {
-        this.url = url;
-        this.webSocketListener = new WebSocketListenerImpl(this);
-        this.retry = true;
-        this.retryCount = 0;
-    }
-
-    public void setRetry(boolean retry) {
-        this.retry = retry;
-    }
-
-    public boolean isRetry() {
-        return retry;
-    }
-
-    public void retryCountIncr() {
-        this.retryCount += 1;
-    }
-
-    public void resetRetryCount() {
-        this.retryCount = 0;
-    }
-
-    public int getRetryCount() {
-        return retryCount;
-    }
-
-    public void connect() {
-        Request request = new Request.Builder()
-                .url(url)
-                //.header("Authorization", "Bearer " + token)
-                .build();
-
-        OkHttpClient okHttpClient = new OkHttpClient.Builder()
-                .connectTimeout(30, TimeUnit.SECONDS)
-                .readTimeout(30, TimeUnit.SECONDS)
-                .writeTimeout(30, TimeUnit.SECONDS)
-                .build();
-        this.webSocket = okHttpClient.newWebSocket(request, webSocketListener);
-    }
-
-    public void setConnected(boolean status) {
-        this.connected = status;
-    }
-
-    public boolean isConnected() {
-        return connected;
-    }
-
-    public void send(Object message) {
-        if (isConnected()) {
-            byte[] bytes = JdkSerializer.serialize(message);
-            webSocket.send(ByteString.of(bytes));
-        }
-    }
-
-    public void close() {
-        setRetry(false);
-        webSocket.close(1000, "Client Close Connection");
-    }
-}

+ 0 - 32
log/src/main/resources/application.yml

@@ -1,32 +0,0 @@
-dubbo:
-  application:
-    name: log-service
-    qos-enable: true
-    qos-port: 28080
-    qos-accept-foreign-ip: false
-  scan:
-    base-packages: cn.reghao.tnb.file.app.rpc
-  protocol:
-    name: dubbo
-    port: 18080
-  registry:
-    address: zookeeper://localhost:2181
-    group: dubbo
-server:
-  port: 8080
-  tomcat:
-    max-http-form-post-size: 4MB
-spring:
-  application:
-    name: log-service
-  profiles:
-    active: @profile.active@
-  mvc:
-    pathmatch:
-      matching-strategy: ant_path_matcher
-eureka:
-  instance:
-    prefer-ip-address: true
-  client:
-    register-with-eureka: true
-    fetch-registry: true

+ 0 - 5
message/message-service/pom.xml

@@ -33,11 +33,6 @@
             <artifactId>account-api</artifactId>
             <version>1.0.0-SNAPSHOT</version>
         </dependency>
-        <dependency>
-            <groupId>cn.reghao.bnt</groupId>
-            <artifactId>admin-api</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
-        </dependency>
         <dependency>
             <groupId>cn.reghao.tnb.user</groupId>
             <artifactId>user-api</artifactId>

+ 5 - 5
message/message-service/src/main/java/cn/reghao/tnb/message/app/service/MessageConsumer.java

@@ -1,12 +1,12 @@
 package cn.reghao.tnb.message.app.service;
 
-import cn.reghao.bnt.admin.api.dto.AdminMessage;
-import cn.reghao.bnt.admin.api.iface.AdminService;
+import cn.reghao.tnb.user.api.dto.AdminMessage;
 import cn.reghao.tnb.message.api.constant.NotifyType;
 import cn.reghao.tnb.message.api.dto.msg.BaseMessage;
 import cn.reghao.tnb.message.api.dto.msg.LoginMessage;
 import cn.reghao.tnb.message.api.dto.msg.VerifyMessage;
 import cn.reghao.tnb.message.app.service.notifier.email.EmailMsg;
+import cn.reghao.tnb.user.api.iface.UserService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.stereotype.Service;
@@ -19,7 +19,7 @@ import org.springframework.stereotype.Service;
 @Service
 public class MessageConsumer {
     @DubboReference(check = false, retries = 0)
-    private AdminService adminService;
+    private UserService userService;
     private final NotifyService notifyService;
 
     public MessageConsumer(NotifyService notifyService) {
@@ -39,7 +39,7 @@ public class MessageConsumer {
             } else if (notifyType == NotifyType.mobile.getValue()) {
                 String errMsg = "短信消息尚未实现";
                 AdminMessage adminMessage = new AdminMessage(2, errMsg);
-                adminService.sendAdminMessage(adminMessage);
+                userService.sendAdminMessage(adminMessage);
             }
         } else if (baseMessage instanceof VerifyMessage) {
             VerifyMessage verifyMessage = (VerifyMessage) baseMessage;
@@ -51,7 +51,7 @@ public class MessageConsumer {
             } else if (notifyType == NotifyType.mobile.getValue()) {
                 String errMsg = "短信验证码尚未实现";
                 AdminMessage adminMessage = new AdminMessage(2, errMsg);
-                adminService.sendAdminMessage(adminMessage);
+                userService.sendAdminMessage(adminMessage);
             }
         }
     }

+ 9 - 9
message/message-service/src/main/java/cn/reghao/tnb/message/app/service/NotifyService.java

@@ -1,13 +1,13 @@
 package cn.reghao.tnb.message.app.service;
 
-import cn.reghao.bnt.admin.api.dto.AdminMessage;
-import cn.reghao.bnt.admin.api.iface.AdminService;
 import cn.reghao.jutil.jdk.thread.ThreadPoolWrapper;
 import cn.reghao.tnb.message.app.service.notifier.Notify;
 import cn.reghao.tnb.message.app.service.notifier.ding.DingMsg;
 import cn.reghao.tnb.message.app.service.notifier.ding.DingNotify;
 import cn.reghao.tnb.message.app.service.notifier.email.EmailMsg;
 import cn.reghao.tnb.message.app.service.notifier.email.EmailNotify;
+import cn.reghao.tnb.user.api.dto.AdminMessage;
+import cn.reghao.tnb.user.api.iface.UserService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.stereotype.Service;
@@ -24,7 +24,7 @@ import java.util.concurrent.ExecutorService;
 @Service
 public class NotifyService {
     @DubboReference(check = false, retries = 0)
-    private AdminService adminService;
+    private UserService userService;
 
     private final ExecutorService threadPool = ThreadPoolWrapper.threadPool("notify-service");
     private final DingNotify dingNotify;
@@ -38,10 +38,10 @@ public class NotifyService {
     public <T> void notify(String receiver, T msg) {
         if (msg instanceof DingMsg) {
             DingMsg dingMsg = (DingMsg) msg;
-            threadPool.execute(new NotifyTask<>(dingNotify, receiver, dingMsg, adminService));
+            threadPool.execute(new NotifyTask<>(dingNotify, receiver, dingMsg, userService));
         } else if (msg instanceof EmailMsg) {
             EmailMsg emailMsg = (EmailMsg) msg;
-            threadPool.execute(new NotifyTask<>(emailNotify, receiver, emailMsg, adminService));
+            threadPool.execute(new NotifyTask<>(emailNotify, receiver, emailMsg, userService));
         }
     }
     /**
@@ -53,13 +53,13 @@ public class NotifyService {
         private final Notify<T> notify;
         private final String receiver;
         private final T msg;
-        private final AdminService adminService;
+        private final UserService userService;
 
-        public NotifyTask(Notify<T> notify, String receiver, T msg, AdminService adminService) {
+        public NotifyTask(Notify<T> notify, String receiver, T msg, UserService userService) {
             this.notify = notify;
             this.receiver = receiver;
             this.msg = msg;
-            this.adminService = adminService;
+            this.userService = userService;
         }
 
         @Override
@@ -69,7 +69,7 @@ public class NotifyService {
             } catch (Exception e) {
                 String errMsg = String.format("发送给 %s 的通知失败 -> %s", receiver, e.getMessage());
                 AdminMessage adminMessage = new AdminMessage(2, errMsg);
-                adminService.sendAdminMessage(adminMessage);
+                userService.sendAdminMessage(adminMessage);
             }
         }
     }

+ 0 - 1
pom.xml

@@ -10,7 +10,6 @@
     <packaging>pom</packaging>
     <modules>
         <module>common</module>
-        <module>log</module>
         <module>account</module>
         <module>gateway</module>
         <module>content</module>

+ 0 - 5
search/search-service/pom.xml

@@ -44,11 +44,6 @@
             <artifactId>user-api</artifactId>
             <version>1.0.0-SNAPSHOT</version>
         </dependency>
-        <dependency>
-            <groupId>cn.reghao.bnt</groupId>
-            <artifactId>admin-api</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
-        </dependency>
         <dependency>
             <groupId>cn.reghao.tnb.file</groupId>
             <artifactId>file-api</artifactId>

+ 3 - 3
search/search-service/src/main/java/cn/reghao/tnb/search/app/log/NginxLogService.java

@@ -88,7 +88,7 @@ public class NginxLogService {
         TextFile textFile = new TextFile();
         String filePath = "nginx.log";
         List<String> list = textFile.read(filePath);
-        List<cn.reghao.bnt.log.NginxLog> nginxLogs = new ArrayList<>();
+        List<NginxLog> nginxLogs = new ArrayList<>();
         for (String line : list) {
             if (!line.startsWith("{")) {
                 System.out.println("not json data");
@@ -96,7 +96,7 @@ public class NginxLogService {
             }
 
             try {
-                cn.reghao.bnt.log.NginxLog nginxLog = JsonConverter.jsonToObject(line, cn.reghao.bnt.log.NginxLog.class);
+                NginxLog nginxLog = JsonConverter.jsonToObject(line, NginxLog.class);
                 nginxLogs.add(nginxLog);
             } catch (Exception e) {
                 e.printStackTrace();
@@ -112,7 +112,7 @@ public class NginxLogService {
     }
 
     Map<Long, Integer> ngxLogMap = new TreeMap<>();
-    void handleNginxLog(cn.reghao.bnt.log.NginxLog nginxLog) {
+    void handleNginxLog(NginxLog nginxLog) {
         String date = nginxLog.getTimeIso8601();
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss+08:00")
                 .withZone(ZoneId.of("UTC"));

+ 16 - 0
search/search-service/src/main/java/cn/reghao/tnb/search/app/soa/model/dto/RouteAdd.java

@@ -0,0 +1,16 @@
+package cn.reghao.tnb.search.app.soa.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author reghao
+ * @date 2025-10-10 20:34:53
+ */
+@Setter
+@Getter
+public class RouteAdd {
+    private String routeId;
+    private String path;
+    private String upstreamUrl;
+}

+ 14 - 0
search/search-service/src/main/java/cn/reghao/tnb/search/app/soa/model/dto/RouteDelete.java

@@ -0,0 +1,14 @@
+package cn.reghao.tnb.search.app.soa.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author reghao
+ * @date 2025-10-10 20:34:59
+ */
+@Setter
+@Getter
+public class RouteDelete {
+    private String routeId;
+}

+ 2 - 2
search/search-service/src/main/java/cn/reghao/tnb/search/app/soa/service/RouteService.java

@@ -1,7 +1,7 @@
 package cn.reghao.tnb.search.app.soa.service;
 
-import cn.reghao.bnt.admin.api.dto.RouteAdd;
-import cn.reghao.bnt.admin.api.dto.RouteDelete;
+import cn.reghao.tnb.search.app.soa.model.dto.RouteAdd;
+import cn.reghao.tnb.search.app.soa.model.dto.RouteDelete;
 import cn.reghao.tnb.search.app.soa.model.route.RouteDefinition;
 import cn.reghao.tnb.search.app.soa.model.vo.RouteDefinitionInfo;
 import cn.reghao.jutil.jdk.http.WebRequest;

+ 23 - 0
user/user-api/src/main/java/cn/reghao/tnb/user/api/dto/AdminMessage.java

@@ -0,0 +1,23 @@
+package cn.reghao.tnb.user.api.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2025-10-10 20:30:39
+ */
+@AllArgsConstructor
+@NoArgsConstructor
+@Getter
+@Setter
+public class AdminMessage implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private int type;
+    private String content;
+}

+ 2 - 0
user/user-api/src/main/java/cn/reghao/tnb/user/api/iface/UserService.java

@@ -1,5 +1,6 @@
 package cn.reghao.tnb.user.api.iface;
 
+import cn.reghao.tnb.user.api.dto.AdminMessage;
 import cn.reghao.tnb.user.api.dto.UserCard;
 import cn.reghao.tnb.user.api.dto.UserMessageDto;
 
@@ -17,4 +18,5 @@ public interface UserService {
     int getRecommendMode(long userId);
     boolean setRecommendMode(long userId, int mode);
     boolean contactContain(long userId, long friendId);
+    void sendAdminMessage(AdminMessage adminMessage);
 }

+ 0 - 5
user/user-service/pom.xml

@@ -43,11 +43,6 @@
             <artifactId>content-api</artifactId>
             <version>1.0.0-SNAPSHOT</version>
         </dependency>
-        <dependency>
-            <groupId>cn.reghao.bnt</groupId>
-            <artifactId>admin-api</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
-        </dependency>
 
         <dependency>
             <groupId>org.springframework.boot</groupId>

+ 7 - 1
user/user-service/src/main/java/cn/reghao/tnb/user/app/rpc/UserServiceImpl.java

@@ -1,6 +1,7 @@
 package cn.reghao.tnb.user.app.rpc;
 
 import cn.reghao.tnb.account.api.iface.AccountQuery;
+import cn.reghao.tnb.user.api.dto.AdminMessage;
 import cn.reghao.tnb.user.api.dto.UserCard;
 import cn.reghao.tnb.user.api.dto.UserMessageDto;
 import cn.reghao.tnb.user.api.iface.UserService;
@@ -33,7 +34,7 @@ public class UserServiceImpl implements UserService {
     private final UserProfileService userProfileService;
     private final UserMessageService userMessageService;
     private final UserRecommendMapper userRecommendMapper;
-    private UserContactMapper userContactMapper;
+    private final UserContactMapper userContactMapper;
 
     public UserServiceImpl(UserRelationService userRelationService, UserVipService userVipService,
                            UserProfileService userProfileService, UserMessageService userMessageService,
@@ -101,4 +102,9 @@ public class UserServiceImpl implements UserService {
     public boolean contactContain(long userId, long friendId) {
         return userContactMapper.findByOwnerAndFriendId(userId, friendId) != null;
     }
+
+    @Override
+    public void sendAdminMessage(AdminMessage adminMessage) {
+
+    }
 }

+ 4 - 4
user/user-service/src/main/java/cn/reghao/tnb/user/app/rpc/UserWalletServiceImpl.java

@@ -2,11 +2,11 @@ package cn.reghao.tnb.user.app.rpc;
 
 import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.jutil.tool.id.SnowFlake;
-import cn.reghao.bnt.admin.api.dto.AdminMessage;
-import cn.reghao.bnt.admin.api.iface.AdminService;
+import cn.reghao.tnb.user.api.dto.AdminMessage;
 import cn.reghao.tnb.user.api.dto.ChargeReq;
 import cn.reghao.tnb.user.api.dto.UserMessageDto;
 import cn.reghao.tnb.user.api.dto.WalletChargeDto;
+import cn.reghao.tnb.user.api.iface.UserService;
 import cn.reghao.tnb.user.api.iface.UserWalletService;
 import cn.reghao.tnb.user.app.db.mapper.WalletBillMapper;
 import cn.reghao.tnb.user.app.db.mapper.WalletChargeMapper;
@@ -32,7 +32,7 @@ import java.util.List;
 @Service
 public class UserWalletServiceImpl implements UserWalletService {
     @DubboReference(check = false)
-    private AdminService adminService;
+    private UserService userService;
 
     private final SnowFlake idGenerator;
     private final WalletChargeMapper walletChargeMapper;
@@ -54,7 +54,7 @@ public class UserWalletServiceImpl implements UserWalletService {
         walletChargeMapper.save(walletCharge);
 
         AdminMessage adminMessage = new AdminMessage(1, "新充值请求");
-        adminService.sendAdminMessage(adminMessage);
+        userService.sendAdminMessage(adminMessage);
     }
 
     @Override