更新docker-compose文件
This commit is contained in:
@@ -1,12 +1,9 @@
|
||||
package com.ai.da.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.ai.da.common.config.exception.BusinessException;
|
||||
import com.ai.da.common.constant.TokenConstant;
|
||||
import com.ai.da.common.enums.LoginTypeEnum;
|
||||
import com.ai.da.common.enums.OperationTypeEnum;
|
||||
import com.ai.da.common.httpdata.token.TokenQuery;
|
||||
import com.ai.da.common.security.jwt.JWTTokenHelper;
|
||||
import com.ai.da.common.utils.*;
|
||||
import com.ai.da.mapper.AccountMapper;
|
||||
@@ -19,25 +16,18 @@ import com.ai.da.model.vo.AuthPrincipalVo;
|
||||
import com.ai.da.service.AccountLoginLogService;
|
||||
import com.ai.da.service.AccountService;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.google.common.collect.Maps;
|
||||
import io.netty.util.internal.StringUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.catalina.util.RequestUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.time.DateUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -64,17 +54,20 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
public AccountPreLoginVO preLogin(AccountPreLoginDTO accountDTO) {
|
||||
log.info("aida预先登入accountDTO###{}", JSON.toJSONString(accountDTO));
|
||||
Account account = getOneByUserName(accountDTO.getUserName());
|
||||
Assert.isTrue(Objects.nonNull(account),"User does not exist!");
|
||||
Assert.isTrue(Objects.nonNull(account), "User does not exist!");
|
||||
//用户有效期校验
|
||||
validateUserValidaExpire(account);
|
||||
if("Third-000000".equals(account.getUserPassword())){
|
||||
if ("Third-000000".equals(account.getUserPassword())) {
|
||||
account.setUserPassword(accountDTO.getPassword());
|
||||
accountMapper.updateById(account);
|
||||
}else{
|
||||
Assert.isTrue(account.getUserPassword().equals(accountDTO.getPassword()),"Password error !");
|
||||
} else {
|
||||
Assert.isTrue(account.getUserPassword().equals(accountDTO.getPassword()), "Password error !");
|
||||
}
|
||||
/*发送邮件*/
|
||||
OperationTypeEnum operationTypeEnum = OperationTypeEnum.of(accountDTO.getOperationType());
|
||||
log.info(account.getUserEmail());
|
||||
log.info(accountDTO.getEmail());
|
||||
Assert.isTrue(account.getUserEmail().equals(accountDTO.getEmail()), "Email error !");
|
||||
Assert.notNull(operationTypeEnum, "Unknown operation type!");
|
||||
String randomVerifyCode = RandomsUtil.generateVerifyCode(100000L, 999999L);
|
||||
LocalCacheUtils.setVerifyCodeCache(
|
||||
@@ -112,10 +105,10 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
public AccountLoginVO login(AccountLoginDTO accountLoginDTO, HttpServletRequest request) {
|
||||
log.info("aida确认登入###accountLoginDTO###{}", JSON.toJSONString(accountLoginDTO));
|
||||
Account accountExist = getOneByEmail(accountLoginDTO.getEmail().trim());
|
||||
Assert.notNull(accountExist,"User does not exist!");
|
||||
Assert.notNull(accountExist, "User does not exist!");
|
||||
|
||||
LoginTypeEnum accountType = LoginTypeEnum.of(accountLoginDTO.getLoginType());
|
||||
if (Objects.isNull(accountType)|| accountType.equals(LoginTypeEnum.PASSWORD)) {
|
||||
if (Objects.isNull(accountType) || accountType.equals(LoginTypeEnum.PASSWORD)) {
|
||||
throw new BusinessException("Unknown login type!");
|
||||
}
|
||||
//用户有效期校验
|
||||
@@ -126,8 +119,8 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
case PASSWORD:
|
||||
Assert.isTrue(StringUtils.isNotBlank(accountLoginDTO.getPassword()), "Please input a password !");
|
||||
account = getOneByUserName(accountLoginDTO.getUserName());
|
||||
Assert.isTrue(Objects.nonNull(account),"User does not exist!");
|
||||
Assert.isTrue(account.getUserPassword().equals(accountLoginDTO.getPassword()),"Password error !");
|
||||
Assert.isTrue(Objects.nonNull(account), "User does not exist!");
|
||||
Assert.isTrue(account.getUserPassword().equals(accountLoginDTO.getPassword()), "Password error !");
|
||||
// Assert.isTrue(StringUtils.isBlank(
|
||||
// LocalCacheUtils.getTokenCache(String.valueOf(account.getId()))),"该用户已登入");
|
||||
break;
|
||||
@@ -139,9 +132,9 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
throw new BusinessException("Email not registered!");
|
||||
}
|
||||
//校验邮箱验证码
|
||||
String verifyCode = LocalCacheUtils.getVerifyCodeCache( OperationTypeEnum.LOGIN.name() + "_" +accountLoginDTO.getEmail());
|
||||
String verifyCode = LocalCacheUtils.getVerifyCodeCache(OperationTypeEnum.LOGIN.name() + "_" + accountLoginDTO.getEmail());
|
||||
Assert.isTrue(StringUtils.isNotBlank(verifyCode), "The verification code has expired!");
|
||||
if(!"921314".equals(accountLoginDTO.getEmailVerifyCode())){
|
||||
if (!"921314".equals(accountLoginDTO.getEmailVerifyCode())) {
|
||||
Assert.isTrue(verifyCode.equals(accountLoginDTO.getEmailVerifyCode()), "Verification code error!");
|
||||
}
|
||||
break;
|
||||
@@ -149,34 +142,36 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
}
|
||||
AccountLoginVO response = CopyUtil.copyObject(account, AccountLoginVO.class);
|
||||
response.setEmail(account.getUserEmail());
|
||||
String token =LocalCacheUtils.getTokenCache(String.valueOf(account.getId()));
|
||||
if(StringUtils.isNotBlank(token)){
|
||||
String token = LocalCacheUtils.getTokenCache(String.valueOf(account.getId()));
|
||||
if (StringUtils.isNotBlank(token)) {
|
||||
//用户已登入
|
||||
response.setToken(token);
|
||||
}else{
|
||||
response.setToken(createAccountToken(account.getId(),account.getUserName()));
|
||||
} else {
|
||||
response.setToken(createAccountToken(account.getId(), account.getUserName()));
|
||||
}
|
||||
response.setUserId(account.getId());
|
||||
//判断是否常用ip 不是则发邮件提示
|
||||
calculateExceptionIp(RequestInfoUtil.getIpAddress(request),account);
|
||||
calculateExceptionIp(RequestInfoUtil.getIpAddress(request), account);
|
||||
return response;
|
||||
}
|
||||
private void validateUserValidaExpire(Account account){
|
||||
|
||||
private void validateUserValidaExpire(Account account) {
|
||||
Long currentTime = new Date().getTime();
|
||||
if(Objects.nonNull(account.getValidStartTime())){
|
||||
Assert.isTrue(currentTime >= account.getValidStartTime(),"User expired !" );
|
||||
if (Objects.nonNull(account.getValidStartTime())) {
|
||||
Assert.isTrue(currentTime >= account.getValidStartTime(), "User expired !");
|
||||
}
|
||||
if(Objects.nonNull(account.getValidEndTime())){
|
||||
Assert.isTrue(currentTime <= account.getValidEndTime(),"User expired !" );
|
||||
if (Objects.nonNull(account.getValidEndTime())) {
|
||||
Assert.isTrue(currentTime <= account.getValidEndTime(), "User expired !");
|
||||
}
|
||||
}
|
||||
private void calculateExceptionIp(String ip ,Account account ){
|
||||
|
||||
private void calculateExceptionIp(String ip, Account account) {
|
||||
//必须先绑定邮箱才可以发有异常ip邮件提醒
|
||||
if(StringUtils.isNotBlank(account.getUserEmail())){
|
||||
if (StringUtils.isNotBlank(account.getUserEmail())) {
|
||||
List<AccountLoginLog> accountLoginLogs = accountLoginLogService.getByUserId(account.getId());
|
||||
if(CollectionUtil.isNotEmpty(accountLoginLogs)){
|
||||
if (CollectionUtil.isNotEmpty(accountLoginLogs)) {
|
||||
List<String> existIps = accountLoginLogs.stream().map(AccountLoginLog::getIp).collect(Collectors.toList());
|
||||
if(!existIps.contains(ip)){
|
||||
if (!existIps.contains(ip)) {
|
||||
//非常用ip,没有出现过
|
||||
EmailSendDTO emailSendDTO = new EmailSendDTO();
|
||||
emailSendDTO.setEmail(account.getUserEmail());
|
||||
@@ -187,11 +182,12 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
}
|
||||
}
|
||||
//保存登入日志
|
||||
accountLoginLogService.saveLoginLog(ip,account.getId());
|
||||
accountLoginLogService.saveLoginLog(ip, account.getId());
|
||||
}
|
||||
private String createAccountToken(Long userId,String userName){
|
||||
|
||||
private String createAccountToken(Long userId, String userName) {
|
||||
String token = LocalCacheUtils.getTokenCache(String.valueOf(userId));
|
||||
if(StringUtils.isNotBlank(token)){
|
||||
if (StringUtils.isNotBlank(token)) {
|
||||
return token;
|
||||
}
|
||||
AuthPrincipalVo principal = new AuthPrincipalVo();
|
||||
@@ -205,14 +201,14 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
@Override
|
||||
public Boolean bindEmail(AccountBindEmailDTO accountBindEmailDTO) {
|
||||
Account account = getOneByUserId(accountBindEmailDTO.getUserId());
|
||||
Assert.notNull(account,"User does not exist !");
|
||||
Assert.isTrue(StringUtils.isBlank(account.getUserEmail()),"User has bound mailbox !");
|
||||
Assert.notNull(account, "User does not exist !");
|
||||
Assert.isTrue(StringUtils.isBlank(account.getUserEmail()), "User has bound mailbox !");
|
||||
//校验邮箱验证码
|
||||
String verifyCode = LocalCacheUtils.getVerifyCodeCache(OperationTypeEnum.BIND_MAILBOX.name() + "_" + accountBindEmailDTO.getUserEmail());
|
||||
Assert.isTrue(StringUtils.isNotBlank(verifyCode), "The verification code has expired !");
|
||||
Assert.isTrue(verifyCode.equals(accountBindEmailDTO.getEmailVerifyCode()), "Verification code error !");
|
||||
//绑定
|
||||
updatePwdByUserId(accountBindEmailDTO.getUserEmail(),accountBindEmailDTO.getUserId());
|
||||
updatePwdByUserId(accountBindEmailDTO.getUserEmail(), accountBindEmailDTO.getUserId());
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@@ -237,6 +233,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
accountNew.setUserPassword(pwd);
|
||||
accountMapper.update(accountNew, queryWrapper);
|
||||
}
|
||||
|
||||
private void updatePwdByUserId(String email, Long userId) {
|
||||
QueryWrapper<Account> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("id", userId);
|
||||
@@ -258,6 +255,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
queryWrapper.eq("user_name", userName);
|
||||
return accountMapper.selectOne(queryWrapper);
|
||||
}
|
||||
|
||||
private Account getOneByUserId(Long userId) {
|
||||
QueryWrapper<Account> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("id", userId);
|
||||
@@ -271,9 +269,9 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
Assert.notNull(operationTypeEnum, "Unknown operation type!");
|
||||
|
||||
Account emailAccount = getOneByEmail(emailSendDTO.getEmail());
|
||||
String randomVerifyCode =RandomsUtil.generateVerifyCode(100000L,999999L);
|
||||
String randomVerifyCode = RandomsUtil.generateVerifyCode(100000L, 999999L);
|
||||
LocalCacheUtils.setVerifyCodeCache(
|
||||
emailSendDTO.getOperationType() + "_" + emailSendDTO.getEmail(),randomVerifyCode);
|
||||
emailSendDTO.getOperationType() + "_" + emailSendDTO.getEmail(), randomVerifyCode);
|
||||
Boolean result = Boolean.FALSE;
|
||||
switch (operationTypeEnum) {
|
||||
case LOGIN:
|
||||
@@ -306,7 +304,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
public Boolean logout(AccountLogoutDTO accountLogoutDTO) {
|
||||
//jwt本身失效比较难做 统一用缓存实现 删除缓存就失效
|
||||
String token = LocalCacheUtils.getTokenCache(String.valueOf(accountLogoutDTO.getUserId()));
|
||||
if(StringUtils.isNotBlank(token)){
|
||||
if (StringUtils.isNotBlank(token)) {
|
||||
LocalCacheUtils.delTokenCache(String.valueOf(accountLogoutDTO.getUserId()));
|
||||
}
|
||||
return Boolean.TRUE;
|
||||
@@ -315,7 +313,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
@Override
|
||||
public Boolean isLogin(AccountLogoutDTO accountLogoutDTO) {
|
||||
String token = LocalCacheUtils.getTokenCache(String.valueOf(accountLogoutDTO.getUserId()));
|
||||
if(StringUtils.isNotBlank(token)){
|
||||
if (StringUtils.isNotBlank(token)) {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
@@ -330,52 +328,52 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
||||
account.setValidStartTime(Long.valueOf(accountAddDTO.getValidStartTime()));
|
||||
account.setValidEndTime(Long.valueOf(accountAddDTO.getValidEndTime()));
|
||||
account.setCreateDate(new Date());
|
||||
return accountMapper.insert(account)>0;
|
||||
return accountMapper.insert(account) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean editUser(AccountEditDTO accountEditDTO) {
|
||||
if(Objects.isNull(accountEditDTO)|| ObjectUtils.isAllFieldNull(accountEditDTO)){
|
||||
if (Objects.isNull(accountEditDTO) || ObjectUtils.isAllFieldNull(accountEditDTO)) {
|
||||
throw new BusinessException("The edited account information cannot be blank!");
|
||||
}
|
||||
QueryWrapper<Account> queryTotal = new QueryWrapper<>();
|
||||
Account account = new Account();
|
||||
//校验
|
||||
if(StringUtils.isNotBlank(accountEditDTO.getNewEmail())){
|
||||
Assert.isTrue(StringUtils.isNotBlank(accountEditDTO.getOldEmail()),"oldEmail cannot be empty!");
|
||||
queryTotal.eq("user_email",accountEditDTO.getOldEmail());
|
||||
if (StringUtils.isNotBlank(accountEditDTO.getNewEmail())) {
|
||||
Assert.isTrue(StringUtils.isNotBlank(accountEditDTO.getOldEmail()), "oldEmail cannot be empty!");
|
||||
queryTotal.eq("user_email", accountEditDTO.getOldEmail());
|
||||
Account accountSelect = accountMapper.selectOne(queryTotal);
|
||||
Assert.notNull(accountSelect,"oldEmail does not exist!");
|
||||
Assert.notNull(accountSelect, "oldEmail does not exist!");
|
||||
|
||||
account.setUserEmail(accountEditDTO.getNewEmail());
|
||||
}
|
||||
if(StringUtils.isNotBlank(accountEditDTO.getNewUserName())){
|
||||
Assert.isTrue(StringUtils.isNotBlank(accountEditDTO.getOldUserName()),"oldUserName cannot be empty!");
|
||||
queryTotal.eq("user_name",accountEditDTO.getOldUserName());
|
||||
if (StringUtils.isNotBlank(accountEditDTO.getNewUserName())) {
|
||||
Assert.isTrue(StringUtils.isNotBlank(accountEditDTO.getOldUserName()), "oldUserName cannot be empty!");
|
||||
queryTotal.eq("user_name", accountEditDTO.getOldUserName());
|
||||
Account accountSelect = accountMapper.selectOne(queryTotal);
|
||||
Assert.notNull(accountSelect,"oldUserName does not exist!");
|
||||
Assert.notNull(accountSelect, "oldUserName does not exist!");
|
||||
|
||||
account.setUserName(accountEditDTO.getNewUserName());
|
||||
}
|
||||
if(StringUtils.isNotBlank(accountEditDTO.getNewValidStartTime())){
|
||||
Assert.isTrue(StringUtils.isNotBlank(accountEditDTO.getOldUserName()),"oldUserName cannot be empty!");
|
||||
queryTotal.eq("user_name",accountEditDTO.getOldUserName());
|
||||
if (StringUtils.isNotBlank(accountEditDTO.getNewValidStartTime())) {
|
||||
Assert.isTrue(StringUtils.isNotBlank(accountEditDTO.getOldUserName()), "oldUserName cannot be empty!");
|
||||
queryTotal.eq("user_name", accountEditDTO.getOldUserName());
|
||||
Account accountSelect = accountMapper.selectOne(queryTotal);
|
||||
Assert.notNull(accountSelect,"oldUserName does not exist!");
|
||||
Assert.notNull(accountSelect, "oldUserName does not exist!");
|
||||
|
||||
account.setValidStartTime(Long.valueOf(accountEditDTO.getNewValidStartTime()));
|
||||
}
|
||||
if(StringUtils.isNotBlank(accountEditDTO.getNewValidEndTime())){
|
||||
Assert.isTrue(StringUtils.isNotBlank(accountEditDTO.getOldUserName()),"oldUserName cannot be empty!");
|
||||
queryTotal.eq("user_name",accountEditDTO.getOldUserName());
|
||||
if (StringUtils.isNotBlank(accountEditDTO.getNewValidEndTime())) {
|
||||
Assert.isTrue(StringUtils.isNotBlank(accountEditDTO.getOldUserName()), "oldUserName cannot be empty!");
|
||||
queryTotal.eq("user_name", accountEditDTO.getOldUserName());
|
||||
Account accountSelect = accountMapper.selectOne(queryTotal);
|
||||
Assert.notNull(accountSelect,"oldUserName does not exist!");
|
||||
Assert.notNull(accountSelect, "oldUserName does not exist!");
|
||||
|
||||
account.setValidEndTime(Long.valueOf(accountEditDTO.getNewValidEndTime()));
|
||||
}
|
||||
Account accountSelect = accountMapper.selectOne(queryTotal);
|
||||
Assert.notNull(accountSelect,"oldAccount does not exist!");
|
||||
accountMapper.update(account,queryTotal);
|
||||
Assert.notNull(accountSelect, "oldAccount does not exist!");
|
||||
accountMapper.update(account, queryTotal);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user