Merge branch 'dev/dev' into develop

This commit is contained in:
shahaibo
2024-01-15 16:55:56 +08:00
5 changed files with 80 additions and 22 deletions

View File

@@ -1,10 +1,10 @@
version: "3"
services:
aida_back:
container_name: stable-version-aida-back
container_name: develop-version-aida-back
build: .
volumes:
# 数据挂载
- /workspace/home/aida/file/:/workspace/home/aida/file/
ports:
- "10086:5567"
- "10090:5567"

View File

@@ -46,6 +46,7 @@ public class AuthenticationFilter extends OncePerRequestFilter {
"/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/third/party/deleteNoLoginRequired",
"/api/third/party/existNoLoginRequired",
"/api/python/chatStream",
"/api/python/flush",
"/api/account/healthy"

View File

@@ -55,4 +55,11 @@ public class ThirdPartyController {
public Response<Boolean> deleteNoLoginRequired(@RequestBody NoLoginRequiredDTO noLoginRequiredDTO) {
return Response.success(accountService.deleteNoLoginRequired(noLoginRequiredDTO));
}
@CrossOrigin
@ApiOperation(value = "add No Login Required")
@PostMapping("/existNoLoginRequired")
public Response<Boolean> existNoLoginRequired(@RequestBody NoLoginRequiredDTO noLoginRequiredDTO) {
return Response.success(accountService.existNoLoginRequired(noLoginRequiredDTO));
}
}

View File

@@ -121,4 +121,6 @@ public interface AccountService extends IService<Account> {
Boolean deleteNoLoginRequired(NoLoginRequiredDTO noLoginRequiredDTO);
AccountLoginVO noLoginRequired(NoLoginRequiredDTO noLoginRequiredDTO);
Boolean existNoLoginRequired(NoLoginRequiredDTO noLoginRequiredDTO);
}

View File

@@ -569,39 +569,76 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean addNoLoginRequired(NoLoginRequiredDTO noLoginRequiredDTO) {
QueryWrapper<Account> qw = new QueryWrapper<>();
qw.lambda().isNotNull(Account::getBrowserIdentifiers);
qw.lambda().like(Account::getUserName, "PolyU-SFT-");
List<Account> accountList = accountMapper.selectList(qw);
if (accountList.size() >= 100) {
// 构建查询条件,查找已注册的账户数量
QueryWrapper<Account> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().isNotNull(Account::getBrowserIdentifiers);
queryWrapper.lambda().like(Account::getUserName, "PolyU-SFT-");
List<Account> existingAccounts = accountMapper.selectList(queryWrapper);
// 检查注册账户数量是否超过限制
if (existingAccounts.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()) {
// 检查浏览器标识是否已经被注册
queryWrapper.clear();
queryWrapper.lambda().eq(Account::getBrowserIdentifiers, noLoginRequiredDTO.getBrowserIdentifiers());
if (!accountMapper.selectList(queryWrapper).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);
// 创建新账户
Account newAccount = new Account();
newAccount.setUserName("PolyU-SFT-" + String.format("%03d", existingAccounts.size() + 1));
newAccount.setUserPassword("Third-000000");
newAccount.setValidStartTime(System.currentTimeMillis());
newAccount.setValidEndTime(System.currentTimeMillis() + 365L * 24 * 60 * 60 * 1000);
newAccount.setCreateDate(new Date());
newAccount.setIsBeginner(1);
newAccount.setIsTrial(0);
newAccount.setBrowserIdentifiers(noLoginRequiredDTO.getBrowserIdentifiers());
newAccount.setLanguage(Language.ENGLISH.name());
// 插入新账户
accountMapper.insert(newAccount);
return Boolean.TRUE;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteNoLoginRequired(NoLoginRequiredDTO noLoginRequiredDTO) {
QueryWrapper<Account> qw = new QueryWrapper<>();
qw.lambda().eq(Account::getBrowserIdentifiers, noLoginRequiredDTO.getBrowserIdentifiers());
accountMapper.delete(qw);
// 删除将被注销的用户
QueryWrapper<Account> queryWrapperDelete = new QueryWrapper<>();
queryWrapperDelete.lambda().eq(Account::getBrowserIdentifiers, noLoginRequiredDTO.getBrowserIdentifiers());
List<Account> accountList = accountMapper.selectList(queryWrapperDelete);
if (CollectionUtil.isNotEmpty(accountList)) {
Account accountDelete = accountList.get(0);
String userName = accountDelete.getUserName();
// 查询当前浏览器标识下的所有用户,并按照用户名编号降序排序
QueryWrapper<Account> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().isNotNull(Account::getBrowserIdentifiers);
queryWrapper.lambda().orderByDesc(Account::getUserName);
List<Account> accounts = accountMapper.selectList(queryWrapper);
// 如果存在用户,将将被注销的用户的浏览器标识更新为用户名编号最大的用户的浏览器标识
if (!accounts.isEmpty()) {
Account userToBeUpdate = accounts.get(0);
if (!userName.equals(userToBeUpdate.getUserName())) {
accountMapper.deleteById(accountDelete);
userToBeUpdate.setUserName(userName);
accountMapper.updateById(userToBeUpdate);
}
}
}
return Boolean.TRUE;
}
@Override
public AccountLoginVO noLoginRequired(NoLoginRequiredDTO noLoginRequiredDTO) {
QueryWrapper<Account> qw = new QueryWrapper<>();
@@ -622,4 +659,15 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
response.setUserId(account.getId());
return response;
}
@Override
public Boolean existNoLoginRequired(NoLoginRequiredDTO noLoginRequiredDTO) {
QueryWrapper<Account> qw = new QueryWrapper<>();
qw.lambda().eq(Account::getBrowserIdentifiers, noLoginRequiredDTO.getBrowserIdentifiers());
List<Account> accountList = accountMapper.selectList(qw);
if (CollectionUtil.isEmpty(accountList)) {
return Boolean.FALSE;
}
return Boolean.TRUE;
}
}