1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package com.nosum.deliver.auth.service.impl;
- import cn.hutool.crypto.SecureUtil;
- import com.nosum.common.base.domain.Result;
- import com.nosum.common.base.domain.vo.UserSessionVO;
- import com.nosum.common.constant.Constants;
- import com.nosum.common.enums.ErrorEnum;
- import com.nosum.common.util.ExceptionUtil;
- import com.nosum.common.util.JwtUtil;
- import com.nosum.common.util.SessionUtil;
- import com.nosum.deliver.auth.domain.po.AuthToken;
- import com.nosum.deliver.auth.domain.po.AuthUser;
- import com.nosum.deliver.auth.domain.vo.AuthUserVO;
- import com.nosum.deliver.auth.service.OauthService;
- import com.nosum.system.enums.RoleEnum;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.data.mongodb.core.MongoTemplate;
- import org.springframework.data.mongodb.core.query.Criteria;
- import org.springframework.data.mongodb.core.query.Query;
- import org.springframework.data.mongodb.core.query.Update;
- import org.springframework.stereotype.Service;
- import java.time.LocalDateTime;
- import java.time.ZoneOffset;
- import java.util.Collections;
- import java.util.Date;
- import java.util.Objects;
- @Service
- @Slf4j
- public class OauthServiceImpl implements OauthService {
- @Autowired
- private MongoTemplate mongoTemplate;
- @Override
- public Result login(AuthUserVO authUserVO) {
- if (authUserVO == null || StringUtils.isBlank(authUserVO.getEmail()) || StringUtils.isBlank(authUserVO.getPassword())) {
- ExceptionUtil.rollback(ErrorEnum.PARAM_ERROR);
- }
- // 查询管理员
- AuthUser authUser = mongoTemplate.findOne(Query.query(Criteria.where("roleId").is(RoleEnum.ADMIN.getRoleId()).and("email").is(authUserVO.getEmail())), AuthUser.class);
- if (Objects.isNull(authUser)) {
- ExceptionUtil.rollback(ErrorEnum.ACCOUNT_NOT_EXIST);
- }
- // 将密码加密后进行验证
- String psw = SecureUtil.md5(authUserVO.getPassword());
- ExceptionUtil.isRollback(!authUser.getPassword().equals(psw), ErrorEnum.PASSWORD_ERROR);
- // 生成token
- authUserVO.setRoles(Collections.singletonList(RoleEnum.getEnumTypeMap().get(authUser.getRoleId()).getRoleName()));
- authUserVO.setCreateTime(authUser.getCreateTime());
- String token = JwtUtil.getToken(new AuthUserVO().setPassword(authUser.getPassword()).setName(authUser.getName()).setId(authUser.getId()));
- authUserVO.setToken(token);
- // 保存登录 token
- mongoTemplate.insert(new AuthToken()
- .setToken(token)
- .setUserId(authUser.getId())
- .setExpireTime(new Date(Constants.EXPIRE_TIME + System.currentTimeMillis()).toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime()));
- return Result.createWithModel(authUserVO);
- }
- @Override
- public Result updatePassword(AuthUserVO authUserVO) {
- if (StringUtils.isBlank(authUserVO.getPassword()) || StringUtils.isBlank(authUserVO.getPasswordOld())) {
- ExceptionUtil.rollback(ErrorEnum.PARAM_ERROR);
- }
- UserSessionVO userSessionInfo = SessionUtil.getUserSessionInfo();
- if (Objects.nonNull(userSessionInfo)) {
- AuthUser authUser = mongoTemplate.findById(userSessionInfo.getId(), AuthUser.class);
- if (Objects.nonNull(authUser) && !SecureUtil.md5(authUserVO.getPasswordOld()).equals(authUser.getPassword())) {
- ExceptionUtil.rollback(ErrorEnum.UPDATE_PASSWORD_ERROR);
- }
- mongoTemplate.updateFirst(Query.query(Criteria.where("id").is(userSessionInfo.getId())), Update.update("password", SecureUtil.md5(authUserVO.getPassword())), AuthUser.class);
- }
- return Result.createWithSuccessMessage();
- }
- @Override
- public Result registerAdmin(AuthUserVO authUserVO) {
- AuthUser authUser = mongoTemplate.findOne(Query.query(Criteria.where("roleId").is(RoleEnum.ADMIN.getRoleId())), AuthUser.class);
- if (authUser == null) {
- authUser = new AuthUser();
- authUser.setName(authUserVO.getEmail())
- .setEmail(authUserVO.getEmail())
- .setCreateTime(LocalDateTime.now())
- .setRoleId(RoleEnum.ADMIN.getRoleId())
- .setPassword(SecureUtil.md5(authUserVO.getPassword()));
- mongoTemplate.insert(authUser);
- } else {
- ExceptionUtil.rollback(ErrorEnum.ACCOUNT_EXIST);
- }
- return Result.createWithSuccessMessage();
- }
- }
|