Quellcode durchsuchen

AdminAccountService 添加一个 createAccount 方法

reghao vor 1 Jahr
Ursprung
Commit
d5e7f14023

+ 22 - 0
account/account-api/src/main/java/cn/reghao/tnb/account/api/dto/AdminCreateAccount.java

@@ -0,0 +1,22 @@
+package cn.reghao.tnb.account.api.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2025-03-26 15:05:42
+ */
+@Setter
+@Getter
+public class AdminCreateAccount implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @NotBlank(message = "邮箱/手机号尚未填写")
+    private String username;
+    @NotBlank(message = "密码尚未填写")
+    private String password;
+}

+ 2 - 0
account/account-api/src/main/java/cn/reghao/tnb/account/api/iface/AdminAccountService.java

@@ -3,6 +3,7 @@ package cn.reghao.tnb.account.api.iface;
 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;
 
 /**
  * @author reghao
@@ -12,4 +13,5 @@ public interface AdminAccountService {
     AccountRegistry getAccountRegistry();
     void setAccountRegistry(AccountRegistry accountRegistry);
     PageList<AccountInfo> getByScreenName(String screenName, int pageNumber, int pageSize);
+    void createAccount(AdminCreateAccount adminCreateAccount);
 }

+ 11 - 2
account/account-service/src/main/java/cn/reghao/tnb/account/app/rpc/AdminAccountServiceImpl.java

@@ -4,11 +4,12 @@ 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.impl.AccountRegistryServiceImpl;
+import cn.reghao.tnb.account.app.service.AccountRegistryService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.stereotype.Service;
@@ -26,10 +27,13 @@ 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) {
+    public AdminAccountServiceImpl(AccountRepository accountRepository, UserAccountMapper userAccountMapper,
+                                   AccountRegistryService accountRegistryService) {
         this.accountRepository = accountRepository;
         this.userAccountMapper = userAccountMapper;
+        this.accountRegistryService = accountRegistryService;
     }
 
     @Override
@@ -53,4 +57,9 @@ public class AdminAccountServiceImpl implements AdminAccountService {
         List<AccountInfo> list = userAccountMapper.findAccountInfoByPage(page);
         return PageList.pageList(pageNumber, pageSize, total, list);
     }
+
+    @Override
+    public void createAccount(AdminCreateAccount adminCreateAccount) {
+        accountRegistryService.createAccount(adminCreateAccount);
+    }
 }

+ 2 - 0
account/account-service/src/main/java/cn/reghao/tnb/account/app/service/AccountRegistryService.java

@@ -1,6 +1,7 @@
 package cn.reghao.tnb.account.app.service;
 
 import cn.reghao.jutil.jdk.result.Result;
+import cn.reghao.tnb.account.api.dto.AdminCreateAccount;
 import cn.reghao.tnb.account.app.model.dto.AccountDetail;
 import cn.reghao.tnb.account.app.model.dto.UserRegisterDto;
 
@@ -11,5 +12,6 @@ import cn.reghao.tnb.account.app.model.dto.UserRegisterDto;
 public interface AccountRegistryService {
     Result createAccount(UserRegisterDto userRegisterDto);
     AccountDetail createAccount(String principal, String password);
+    void createAccount(AdminCreateAccount adminCreateAccount);
     Result getRegistryStatus();
 }

+ 20 - 0
account/account-service/src/main/java/cn/reghao/tnb/account/app/service/impl/AccountRegistryServiceImpl.java

@@ -5,6 +5,7 @@ import cn.reghao.jutil.jdk.result.ResultStatus;
 import cn.reghao.jutil.jdk.security.RandomString;
 import cn.reghao.jutil.jdk.string.StringRegexp;
 import cn.reghao.tnb.account.api.constant.VerifyChannel;
+import cn.reghao.tnb.account.api.dto.AdminCreateAccount;
 import cn.reghao.tnb.account.app.model.dto.AccountDetail;
 import cn.reghao.tnb.account.app.model.dto.UserRegisterDto;
 import cn.reghao.tnb.account.app.db.repository.AccountRepository;
@@ -90,6 +91,25 @@ public class AccountRegistryServiceImpl implements AccountRegistryService {
         return Result.result(ResultStatus.SUCCESS, "帐号已创建");
     }
 
+    @Override
+    public void createAccount(AdminCreateAccount adminCreateAccount) {
+        String principal = adminCreateAccount.getUsername();
+        String email = null;
+        String mobile = null;
+        if (StringRegexp.matchEmail(principal)) {
+            email = principal;
+        } else if (StringRegexp.matchMobile(principal)) {
+            mobile = principal;
+        }
+
+        String decryptCredential = adminCreateAccount.getPassword();
+        long userId = getNextUserId();
+        String salt = RandomString.getSalt(64);
+        String encodedPassword = passwordEncoder.encode(decryptCredential + salt);
+        UserAccount userAccount = new UserAccount(userId, email, mobile, encodedPassword, salt, avatarUrl);
+        accountRepository.saveAccount(userAccount);
+    }
+
     public synchronized long getNextUserId() {
         long userId;
         Long maxUserId = accountRepository.getMaxUserId();