Browse Source

对应 cn.reghao.jutil 包的更改

reghao 8 months ago
parent
commit
52c51d4440
28 changed files with 120 additions and 44 deletions
  1. 2 1
      account/account-api/pom.xml
  2. 1 1
      account/account-api/src/main/java/cn/reghao/tnb/account/api/dto/VerifyCode.java
  3. 1 1
      account/account-service/src/main/java/cn/reghao/tnb/account/app/model/dto/AccountLoginDto.java
  4. 1 13
      account/account-service/src/main/java/cn/reghao/tnb/account/app/rpc/AdminAccountServiceImpl.java
  5. 2 1
      common/src/main/java/cn/reghao/tnb/common/exception/ControllerExceptionHandler.java
  6. 1 1
      content/content-api/src/main/java/cn/reghao/tnb/content/api/dto/VideoPublishSbt.java
  7. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/chat/model/dto/HongbaoDto.java
  8. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/data/model/dto/AudioPublishSbt.java
  9. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/data/model/dto/AudioScopeUpdate.java
  10. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/data/model/dto/UpdateArticleScope.java
  11. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/disk/model/dto/ShareCreate.java
  12. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/exam/model/dto/QuestionAddDto.java
  13. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/model/dto/AlbumActionDto.java
  14. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/model/dto/AlbumCreateDto.java
  15. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/model/dto/CollectData.java
  16. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/model/dto/VideoErrorReport.java
  17. 1 1
      content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/model/dto/VideoScopeUpdate.java
  18. 10 4
      file/file-service/src/main/java/cn/reghao/tnb/file/app/controller/AdminFileController.java
  19. 11 0
      file/file-service/src/main/java/cn/reghao/tnb/file/app/model/po/StoreConfig.java
  20. 8 0
      file/file-service/src/main/java/cn/reghao/tnb/file/app/service/StoreConfigService.java
  21. 5 2
      log/src/main/java/cn/reghao/tnb/log/appender/WsAppender.java
  22. 1 1
      log/src/main/java/cn/reghao/tnb/log/ws/WebSocketListenerImpl.java
  23. 6 0
      message/message-service/pom.xml
  24. 29 0
      message/message-service/src/main/java/cn/reghao/tnb/message/app/config/SpringDocConfig.java
  25. 17 7
      message/message-service/src/main/java/cn/reghao/tnb/message/app/controller/AdminMessageController.java
  26. 1 1
      search/search-service/src/main/java/cn/reghao/tnb/search/app/soa/service/RuntimeLogService.java
  27. 8 0
      user/user-service/src/main/java/cn/reghao/tnb/user/app/controller/AdminUserController.java
  28. 5 0
      user/user-service/src/main/java/cn/reghao/tnb/user/app/service/AdminUserService.java

+ 2 - 1
account/account-api/pom.xml

@@ -16,8 +16,9 @@
     <dependencies>
         <dependency>
             <groupId>cn.reghao.jutil</groupId>
-            <artifactId>validator</artifactId>
+            <artifactId>web</artifactId>
             <version>1.0.0-SNAPSHOT</version>
+            <scope>compile</scope>
         </dependency>
     </dependencies>
 </project>

+ 1 - 1
account/account-api/src/main/java/cn/reghao/tnb/account/api/dto/VerifyCode.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.account.api.dto;
 
-import cn.reghao.jutil.validator.ValidEnum;
+import cn.reghao.jutil.web.validator.ValidEnum;
 import cn.reghao.tnb.account.api.constant.VerifyChannel;
 import lombok.Getter;
 import lombok.Setter;

+ 1 - 1
account/account-service/src/main/java/cn/reghao/tnb/account/app/model/dto/AccountLoginDto.java

@@ -2,7 +2,7 @@ package cn.reghao.tnb.account.app.model.dto;
 
 import cn.reghao.tnb.account.app.model.constant.LoginPlat;
 import cn.reghao.tnb.account.app.model.constant.LoginType;
-import cn.reghao.jutil.validator.ValidEnum;
+import cn.reghao.jutil.web.validator.ValidEnum;
 import lombok.Getter;
 import lombok.Setter;
 import org.hibernate.validator.constraints.Length;

+ 1 - 13
account/account-service/src/main/java/cn/reghao/tnb/account/app/rpc/AdminAccountServiceImpl.java

@@ -1,12 +1,10 @@
 package cn.reghao.tnb.account.app.rpc;
 
-import cn.reghao.jutil.jdk.db.Page;
 import cn.reghao.jutil.jdk.db.PageList;
 import cn.reghao.tnb.account.api.dto.AccountInfo;
 import cn.reghao.tnb.account.api.dto.AccountRegistry;
 import cn.reghao.tnb.account.api.dto.AdminCreateAccount;
 import cn.reghao.tnb.account.api.iface.AdminAccountService;
-import cn.reghao.tnb.account.app.db.mapper.UserAccountMapper;
 import cn.reghao.tnb.account.app.db.repository.AccountRepository;
 import cn.reghao.tnb.account.app.model.po.UserRegistry;
 import cn.reghao.tnb.account.app.service.AccountRegistryService;
@@ -14,8 +12,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
-
 /**
  * @author reghao
  * @date 2024-07-31 07:00:22
@@ -24,35 +20,27 @@ import java.util.List;
 @DubboService
 @Service
 public class AdminAccountServiceImpl implements AdminAccountService {
-    private final int pageSize = 100;
     private final AccountRepository accountRepository;
-    private final UserAccountMapper userAccountMapper;
     private final AccountRegistryService accountRegistryService;
 
-    public AdminAccountServiceImpl(AccountRepository accountRepository, UserAccountMapper userAccountMapper,
-                                   AccountRegistryService accountRegistryService) {
+    public AdminAccountServiceImpl(AccountRepository accountRepository, AccountRegistryService accountRegistryService) {
         this.accountRepository = accountRepository;
-        this.userAccountMapper = userAccountMapper;
         this.accountRegistryService = accountRegistryService;
     }
 
-    @Override
     public AccountRegistry getAccountRegistry() {
         UserRegistry userRegistry = accountRepository.getUserRegistry();
         return new AccountRegistry(userRegistry.getEnabled(), userRegistry.getRule());
     }
 
-    @Override
     public void setAccountRegistry(AccountRegistry accountRegistry) {
         accountRepository.updateUserRegistry();
     }
 
-    @Override
     public PageList<AccountInfo> getByScreenName(String screenName, int pageNumber, int pageSize) {
         return PageList.empty();
     }
 
-    @Override
     public void createAccount(AdminCreateAccount adminCreateAccount) {
         accountRegistryService.createAccount(adminCreateAccount);
     }

+ 2 - 1
common/src/main/java/cn/reghao/tnb/common/exception/ControllerExceptionHandler.java

@@ -43,7 +43,8 @@ public class ControllerExceptionHandler {
         log.error("{} 接口抛出异常: {}", uri, msg);
 
         String body = WebResult.errorWithMsg(msg);
-        int status = HttpStatus.INTERNAL_SERVER_ERROR.value();
+        int status = HttpStatus.OK.value();
+        //int status = HttpStatus.INTERNAL_SERVER_ERROR.value();
         if (e instanceof MethodArgumentNotValidException) {
             // 参数校验失败
             MethodArgumentNotValidException exception = (MethodArgumentNotValidException) e;

+ 1 - 1
content/content-api/src/main/java/cn/reghao/tnb/content/api/dto/VideoPublishSbt.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.content.api.dto;
 
-import cn.reghao.jutil.validator.ValidEnum;
+import cn.reghao.jutil.web.validator.ValidEnum;
 import cn.reghao.tnb.content.api.constant.PostScope;
 import lombok.Getter;
 import lombok.NoArgsConstructor;

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/chat/model/dto/HongbaoDto.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.content.app.chat.model.dto;
 
-import cn.reghao.jutil.validator.ValidEnum;
+import cn.reghao.jutil.web.validator.ValidEnum;
 import cn.reghao.tnb.content.app.chat.model.constant.ReceiverType;
 import lombok.Getter;
 import lombok.NoArgsConstructor;

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/data/model/dto/AudioPublishSbt.java

@@ -1,7 +1,7 @@
 package cn.reghao.tnb.content.app.data.model.dto;
 
 import cn.reghao.tnb.content.api.constant.PostScope;
-import cn.reghao.jutil.validator.ValidEnum;
+import cn.reghao.jutil.web.validator.ValidEnum;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/data/model/dto/AudioScopeUpdate.java

@@ -1,7 +1,7 @@
 package cn.reghao.tnb.content.app.data.model.dto;
 
 import cn.reghao.tnb.content.api.constant.PostScope;
-import cn.reghao.jutil.validator.ValidEnum;
+import cn.reghao.jutil.web.validator.ValidEnum;
 import lombok.Getter;
 
 import javax.validation.constraints.NotBlank;

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/data/model/dto/UpdateArticleScope.java

@@ -1,7 +1,7 @@
 package cn.reghao.tnb.content.app.data.model.dto;
 
 import cn.reghao.tnb.content.api.constant.PostScope;
-import cn.reghao.jutil.validator.ValidEnum;
+import cn.reghao.jutil.web.validator.ValidEnum;
 import lombok.Getter;
 
 import javax.validation.constraints.NotBlank;

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/disk/model/dto/ShareCreate.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.content.app.disk.model.dto;
 
-import cn.reghao.jutil.validator.ValidEnum;
+import cn.reghao.jutil.web.validator.ValidEnum;
 import cn.reghao.tnb.content.app.disk.model.constant.AlbumType;
 import lombok.Getter;
 

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/exam/model/dto/QuestionAddDto.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.content.app.exam.model.dto;
 
-import cn.reghao.jutil.validator.ValidEnum;
+import cn.reghao.jutil.web.validator.ValidEnum;
 import cn.reghao.tnb.content.app.exam.model.constant.QuestionLevel;
 import cn.reghao.tnb.content.app.exam.model.constant.QuestionType;
 import cn.reghao.tnb.content.app.exam.model.provider.QuestionAddGroupSequenceProvider;

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/model/dto/AlbumActionDto.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.content.app.vod.model.dto;
 
-import cn.reghao.jutil.validator.ValidEnum;
+import cn.reghao.jutil.web.validator.ValidEnum;
 import cn.reghao.tnb.content.api.constant.AlbumAction;
 import lombok.Getter;
 import lombok.Setter;

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/model/dto/AlbumCreateDto.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.content.app.vod.model.dto;
 
-import cn.reghao.jutil.validator.ValidEnum;
+import cn.reghao.jutil.web.validator.ValidEnum;
 import cn.reghao.tnb.content.api.constant.PostScope;
 import lombok.Getter;
 import lombok.Setter;

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/model/dto/CollectData.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.content.app.vod.model.dto;
 
-import cn.reghao.jutil.validator.ValidEnum;
+import cn.reghao.jutil.web.validator.ValidEnum;
 import cn.reghao.oss.sdk.model.constant.ObjectType;
 import lombok.Getter;
 

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/model/dto/VideoErrorReport.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.content.app.vod.model.dto;
 
-import cn.reghao.jutil.validator.ValidEnum;
+import cn.reghao.jutil.web.validator.ValidEnum;
 import cn.reghao.tnb.content.api.constant.VideoErrorType;
 import cn.reghao.tnb.content.api.constant.VideoStatus;
 import lombok.Getter;

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/model/dto/VideoScopeUpdate.java

@@ -1,7 +1,7 @@
 package cn.reghao.tnb.content.app.vod.model.dto;
 
 import cn.reghao.tnb.content.api.constant.PostScope;
-import cn.reghao.jutil.validator.ValidEnum;
+import cn.reghao.jutil.web.validator.ValidEnum;
 import lombok.Getter;
 
 import javax.validation.constraints.NotBlank;

+ 10 - 4
file/file-service/src/main/java/cn/reghao/tnb/file/app/controller/AdminFileController.java

@@ -6,9 +6,8 @@ import cn.reghao.tnb.file.app.service.StoreConfigService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -26,7 +25,14 @@ public class AdminFileController {
         this.storeConfigService = storeConfigService;
     }
 
-    @Operation(summary = "文件存储配置页面", description = "N")
+    @Operation(summary = "添加文件存储配置", description = "N")
+    @PostMapping(value = "/file_store", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String addSiteConfig(@RequestBody @Validated StoreConfig storeConfig) {
+        storeConfigService.addStoreConfig(storeConfig);
+        return WebResult.success();
+    }
+
+    @Operation(summary = "文件存储配置列表", description = "N")
     @GetMapping(value = "/file_store", produces = MediaType.APPLICATION_JSON_VALUE)
     public String siteConfigPage() {
         List<StoreConfig> list = storeConfigService.getStoreConfigs();

+ 11 - 0
file/file-service/src/main/java/cn/reghao/tnb/file/app/model/po/StoreConfig.java

@@ -4,6 +4,9 @@ import cn.reghao.jutil.jdk.db.BaseObject;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotNull;
 
 /**
  * @author reghao
@@ -13,13 +16,21 @@ import lombok.Setter;
 @Setter
 @Getter
 public class StoreConfig extends BaseObject<Integer> {
+    @NotNull(message = "ossType 不能为 null")
     private Integer ossType;
+    @NotNull(message = "endpoint 不能为 null")
+    @Length(min = 1, max = 128, message = "")
     private String endpoint;
+    @NotNull(message = "accessKeyId 不能为 null")
+    @Length(min = 1, max = 128, message = "")
     private String accessKeyId;
+    @NotNull(message = "accessKeySecret 不能为 null")
+    @Length(min = 1, max = 128, message = "")
     private String accessKeySecret;
     private String region;
     private String bucketName;
     private String roleArn;
+    private String ossTypeStr;
 
     public StoreConfig(int ossType, String endpoint, String accessKeyId, String accessKeySecret) {
         this.ossType = ossType;

+ 8 - 0
file/file-service/src/main/java/cn/reghao/tnb/file/app/service/StoreConfigService.java

@@ -1,6 +1,7 @@
 package cn.reghao.tnb.file.app.service;
 
 import cn.reghao.tnb.file.app.db.mapper.StoreConfigMapper;
+import cn.reghao.tnb.file.app.model.constant.OssType;
 import cn.reghao.tnb.file.app.model.po.StoreConfig;
 import org.springframework.stereotype.Service;
 
@@ -20,6 +21,13 @@ public class StoreConfigService {
 
     public List<StoreConfig> getStoreConfigs() {
         List<StoreConfig> list = storeConfigMapper.findAll();
+        list.forEach(storeConfig -> {
+            storeConfig.setOssTypeStr(OssType.getDescByCode(storeConfig.getOssType()));
+        });
         return list;
     }
+
+    public void addStoreConfig(StoreConfig storeConfig) {
+
+    }
 }

+ 5 - 2
log/src/main/java/cn/reghao/tnb/log/appender/WsAppender.java

@@ -2,7 +2,9 @@ package cn.reghao.tnb.log.appender;
 
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.UnsynchronizedAppenderBase;
-import cn.reghao.jutil.jdk.result.AppLog;
+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;
 
 /**
@@ -39,11 +41,12 @@ public class WsAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
     }
 
     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(app, host, timestamp, level, thread, logger, message);
+        return new AppLog(requestId, app, host, timestamp, level, thread, logger, message);
     }
 }

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

@@ -1,7 +1,7 @@
 package cn.reghao.tnb.log.ws;
 
 import cn.reghao.jutil.jdk.converter.DateTimeConverter;
-import cn.reghao.jutil.jdk.result.AppLog;
+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;

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

@@ -111,6 +111,12 @@
             <version>2.4</version>
             <classifier>jdk15</classifier>
         </dependency>
+
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-ui</artifactId>
+            <version>1.7.0</version>
+        </dependency>
     </dependencies>
 
     <profiles>

+ 29 - 0
message/message-service/src/main/java/cn/reghao/tnb/message/app/config/SpringDocConfig.java

@@ -0,0 +1,29 @@
+package cn.reghao.tnb.message.app.config;
+
+import io.swagger.v3.oas.models.ExternalDocumentation;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Info;
+import io.swagger.v3.oas.models.info.License;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * SpringDoc API 文档相关配置
+ *
+ * @author reghao
+ * @date 2025-06-09 19:01:07
+ */
+@Configuration
+public class SpringDocConfig {
+    @Bean
+    public OpenAPI springOpenAPI() {
+        return new OpenAPI()
+                .info(new Info()
+                        .title("message api")
+                        .description("file api")
+                        .version("v0.0.1")
+                        .license(new License().name("Apache 2.0").url("https://www.apache.org/licenses/LICENSE-2.0")))
+                .externalDocs(new ExternalDocumentation()
+                        .description("message api"));
+    }
+}

+ 17 - 7
message/message-service/src/main/java/cn/reghao/tnb/message/app/controller/AdminMessageController.java

@@ -3,6 +3,8 @@ package cn.reghao.tnb.message.app.controller;
 import cn.reghao.jutil.web.WebResult;
 import cn.reghao.tnb.message.app.model.dto.EmailDto;
 import cn.reghao.tnb.message.app.service.EmailAccountService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 
@@ -12,6 +14,7 @@ import java.util.List;
  * @author reghao
  * @date 2023-10-30 21:32:37
  */
+@Tag(name = "message 管理接口")
 @RestController
 @RequestMapping("/api/message/admin")
 public class AdminMessageController {
@@ -21,15 +24,22 @@ public class AdminMessageController {
         this.emailAccountService = emailAccountService;
     }
 
-    //@Operation(summary = "第三方通知配置列表页面", description = "N")
-    @GetMapping(value = "/notify", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String notifyPage() {
-        List<EmailDto> list = emailAccountService.getEmailAccounts();
-        return WebResult.success(list);
+    @Operation(summary = "添加邮件帐号", description = "N")
+    @PostMapping(value = "/notify/email", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String addEmailAccount() {
+        return WebResult.success();
     }
 
-    @PostMapping(value = "", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String getMessage() {
+    @Operation(summary = "删除邮件帐号", description = "N")
+    @DeleteMapping(value = "/notify/email", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String deleteEmailAccount() {
         return WebResult.success();
     }
+
+    @Operation(summary = "邮件帐号列表", description = "N")
+    @GetMapping(value = "/notify/email", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String emailAccountList() {
+        List<EmailDto> list = emailAccountService.getEmailAccounts();
+        return WebResult.success(list);
+    }
 }

+ 1 - 1
search/search-service/src/main/java/cn/reghao/tnb/search/app/soa/service/RuntimeLogService.java

@@ -1,6 +1,6 @@
 package cn.reghao.tnb.search.app.soa.service;
 
-import cn.reghao.jutil.jdk.result.AppLog;
+import cn.reghao.jutil.web.log.AppLog;
 import org.springframework.stereotype.Service;
 
 import java.util.Collections;

+ 8 - 0
user/user-service/src/main/java/cn/reghao/tnb/user/app/controller/AdminUserController.java

@@ -2,6 +2,7 @@ package cn.reghao.tnb.user.app.controller;
 
 import cn.reghao.jutil.jdk.db.PageList;
 import cn.reghao.jutil.web.WebResult;
+import cn.reghao.tnb.account.api.dto.AccountRegistry;
 import cn.reghao.tnb.account.api.dto.AdminCreateAccount;
 import cn.reghao.tnb.user.api.dto.UserInfo;
 import cn.reghao.tnb.user.api.dto.VipPlanInfo;
@@ -29,6 +30,13 @@ public class AdminUserController {
         this.adminUserService = adminUserService;
     }
 
+    @Operation(summary = "帐号注册", description = "N")
+    @GetMapping(value = "/account_registry", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String getAccountRegistry() {
+        AccountRegistry accountRegistry = adminUserService.getAccountRegistry();
+        return WebResult.success(accountRegistry);
+    }
+
     @Operation(summary = "用户帐号列表页面", description = "N")
     @GetMapping(value = "/list", produces = MediaType.APPLICATION_JSON_VALUE)
     public String indexPage(@RequestParam(value = "nextId", required = false) Integer nextId) {

+ 5 - 0
user/user-service/src/main/java/cn/reghao/tnb/user/app/service/AdminUserService.java

@@ -3,6 +3,7 @@ package cn.reghao.tnb.user.app.service;
 import cn.reghao.jutil.jdk.db.PageList;
 import cn.reghao.jutil.jdk.thread.ThreadPoolWrapper;
 import cn.reghao.tnb.account.api.dto.AccountInfo;
+import cn.reghao.tnb.account.api.dto.AccountRegistry;
 import cn.reghao.tnb.account.api.dto.AdminCreateAccount;
 import cn.reghao.tnb.account.api.dto.CrawledUser;
 import cn.reghao.tnb.account.api.iface.AccountQuery;
@@ -49,6 +50,10 @@ public class AdminUserService {
         this.userProfileMapper = userProfileMapper;
     }
 
+    public AccountRegistry getAccountRegistry() {
+        return adminAccountService.getAccountRegistry();
+    }
+
     public Page<AccountInfo> getUserAccounts(String searchKey, PageRequest pageRequest) {
         int pageNumber = pageRequest.getPageNumber()+1;
         int pageSize = pageRequest.getPageSize();