From 62f9bb3795ed218ce6a68ccf66188e02c280b3e2 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Mon, 15 Jan 2024 15:06:48 +0800 Subject: [PATCH] =?UTF-8?q?TASK:=E6=9C=BA=E6=88=BF=E5=85=8D=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E6=B5=8B=E8=AF=95;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/filter/AuthenticationFilter.java | 1 + .../ai/da/controller/AccountController.java | 6 ++ .../da/controller/ThirdPartyController.java | 13 +++++ .../java/com/ai/da/mapper/entity/Account.java | 2 + .../ai/da/model/dto/NoLoginRequiredDTO.java | 8 +++ .../com/ai/da/service/AccountService.java | 6 ++ .../da/service/impl/AccountServiceImpl.java | 56 +++++++++++++++++++ 7 files changed, 92 insertions(+) create mode 100644 src/main/java/com/ai/da/model/dto/NoLoginRequiredDTO.java diff --git a/src/main/java/com/ai/da/common/security/filter/AuthenticationFilter.java b/src/main/java/com/ai/da/common/security/filter/AuthenticationFilter.java index 4b78233d..b1bfc6cd 100644 --- a/src/main/java/com/ai/da/common/security/filter/AuthenticationFilter.java +++ b/src/main/java/com/ai/da/common/security/filter/AuthenticationFilter.java @@ -45,6 +45,7 @@ public class AuthenticationFilter extends OncePerRequestFilter { "/webjars/", "/swagger-resources", "/v2/api-docs", "api/account/resetPwd", "/api/python/saveGeneratePicture", "/api/python/getLibraryByUserId", "/api/third/party/addUser","/api/third/party/addTrialUser", "/api/third/party/editUser", "/api/element/initDefaultSysFile", + "/api/third/party/addNoLoginRequired", "/api/python/chatStream", "/api/python/flush", "/api/account/healthy" diff --git a/src/main/java/com/ai/da/controller/AccountController.java b/src/main/java/com/ai/da/controller/AccountController.java index 0d45b622..4e5c54e2 100644 --- a/src/main/java/com/ai/da/controller/AccountController.java +++ b/src/main/java/com/ai/da/controller/AccountController.java @@ -143,4 +143,10 @@ public class AccountController { public Response getExpiredTime(){ return Response.success(accountService.getExpiredTime()); } + + @ApiOperation(value = "查询账号到期时间") + @PostMapping("/noLoginRequired") + public Response noLoginRequired(NoLoginRequiredDTO noLoginRequiredDTO){ + return Response.success(accountService.noLoginRequired(noLoginRequiredDTO)); + } } diff --git a/src/main/java/com/ai/da/controller/ThirdPartyController.java b/src/main/java/com/ai/da/controller/ThirdPartyController.java index e3b45b3b..a9db8b2a 100644 --- a/src/main/java/com/ai/da/controller/ThirdPartyController.java +++ b/src/main/java/com/ai/da/controller/ThirdPartyController.java @@ -42,4 +42,17 @@ public class ThirdPartyController { return Response.success(accountService.addTrialUser(accountTrialDTO)); } + @CrossOrigin + @ApiOperation(value = "add No Login Required") + @PostMapping("/addNoLoginRequired") + public Response addNoLoginRequired(@RequestBody NoLoginRequiredDTO noLoginRequiredDTO) { + return Response.success(accountService.addNoLoginRequired(noLoginRequiredDTO)); + } + + @CrossOrigin + @ApiOperation(value = "add No Login Required") + @PostMapping("/deleteNoLoginRequired") + public Response deleteNoLoginRequired(@RequestBody NoLoginRequiredDTO noLoginRequiredDTO) { + return Response.success(accountService.deleteNoLoginRequired(noLoginRequiredDTO)); + } } diff --git a/src/main/java/com/ai/da/mapper/entity/Account.java b/src/main/java/com/ai/da/mapper/entity/Account.java index 44a5755b..3dd607b6 100644 --- a/src/main/java/com/ai/da/mapper/entity/Account.java +++ b/src/main/java/com/ai/da/mapper/entity/Account.java @@ -78,4 +78,6 @@ public class Account implements Serializable { private Integer isTrial; private Integer isBeginner; + + private String browserIdentifiers; } diff --git a/src/main/java/com/ai/da/model/dto/NoLoginRequiredDTO.java b/src/main/java/com/ai/da/model/dto/NoLoginRequiredDTO.java new file mode 100644 index 00000000..661703fd --- /dev/null +++ b/src/main/java/com/ai/da/model/dto/NoLoginRequiredDTO.java @@ -0,0 +1,8 @@ +package com.ai.da.model.dto; + +import lombok.Data; + +@Data +public class NoLoginRequiredDTO { + private String browserIdentifiers; +} diff --git a/src/main/java/com/ai/da/service/AccountService.java b/src/main/java/com/ai/da/service/AccountService.java index 57ebf72f..b9089c54 100644 --- a/src/main/java/com/ai/da/service/AccountService.java +++ b/src/main/java/com/ai/da/service/AccountService.java @@ -115,4 +115,10 @@ public interface AccountService extends IService { Boolean trialOrderRefuse(List ids); Long getExpiredTime(); + + Boolean addNoLoginRequired(NoLoginRequiredDTO noLoginRequiredDTO); + + Boolean deleteNoLoginRequired(NoLoginRequiredDTO noLoginRequiredDTO); + + AccountLoginVO noLoginRequired(NoLoginRequiredDTO noLoginRequiredDTO); } diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index 74c68055..c26aa6bf 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -32,6 +32,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.checkerframework.checker.units.qual.A; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; @@ -566,4 +567,59 @@ public class AccountServiceImpl extends ServiceImpl impl AuthPrincipalVo userInfo = UserContext.getUserHolder(); return accountMapper.selectById(userInfo.getId()).getValidEndTime(); } + + @Override + public Boolean addNoLoginRequired(NoLoginRequiredDTO noLoginRequiredDTO) { + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().isNotNull(Account::getBrowserIdentifiers); + qw.lambda().like(Account::getUserName, "PolyU-SFT-"); + List accountList = accountMapper.selectList(qw); + if (accountList.size() >= 100) { + throw new BusinessException("The number of registered accounts exceeds the limit"); + } + qw.lambda().eq(Account::getBrowserIdentifiers, noLoginRequiredDTO.getBrowserIdentifiers()); + if (!accountMapper.selectList(qw).isEmpty()) { + throw new BusinessException("This browser has already been registered"); + } + Account account = new Account(); + account.setUserName("PolyU-SFT-" + String.format("%03d", accountList.size() + 1)); + account.setUserPassword("Third-000000"); + account.setValidStartTime(System.currentTimeMillis()); + account.setValidEndTime(System.currentTimeMillis() + 365L * 24 * 60 * 60 * 1000); + account.setCreateDate(new Date()); + account.setIsBeginner(1); + account.setIsTrial(0); + account.setBrowserIdentifiers(noLoginRequiredDTO.getBrowserIdentifiers()); + accountMapper.insert(account); + return Boolean.TRUE; + } + + @Override + public Boolean deleteNoLoginRequired(NoLoginRequiredDTO noLoginRequiredDTO) { + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().eq(Account::getBrowserIdentifiers, noLoginRequiredDTO.getBrowserIdentifiers()); + accountMapper.delete(qw); + return Boolean.TRUE; + } + + @Override + public AccountLoginVO noLoginRequired(NoLoginRequiredDTO noLoginRequiredDTO) { + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().eq(Account::getBrowserIdentifiers, noLoginRequiredDTO.getBrowserIdentifiers()); + List accountList = accountMapper.selectList(qw); + if (CollectionUtil.isEmpty(accountList)) { + throw new BusinessException("This browser is not registered as login free"); + } + Account account = accountList.get(0); + AccountLoginVO response = CopyUtil.copyObject(account, AccountLoginVO.class); + String token = LocalCacheUtils.getTokenCache(String.valueOf(account.getId())); + if (StringUtils.isNotBlank(token)) { + //用户已登入 + response.setToken(token); + } else { + response.setToken(createAccountToken(account)); + } + response.setUserId(account.getId()); + return response; + } }