123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- package com.nosum.deliver.auth.service.impl;
- import com.nosum.common.base.domain.Result;
- import com.nosum.common.base.domain.vo.UserSessionVO;
- import com.nosum.common.enums.ErrorEnum;
- import com.nosum.common.util.ExceptionUtil;
- 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.AuthUserService;
- import com.nosum.system.enums.RoleEnum;
- 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.util.Collections;
- import java.util.Objects;
- /**
- * 用户认证服务实现类.
- *
- * @author Young
- */
- @Service
- public class AuthUserServiceImpl implements AuthUserService {
- @Autowired
- private MongoTemplate mongoTemplate;
- @Override
- public Result getUserInfo(AuthUserVO authUserVO) {
- // 从请求中获取用户信息
- UserSessionVO userSessionInfo = SessionUtil.getUserSessionInfo();
- if (Objects.isNull(userSessionInfo) || Objects.isNull(userSessionInfo.getId())) {
- return Result.createWithError();
- }
- AuthUser authUser = mongoTemplate.findById(userSessionInfo.getId(), AuthUser.class);
- if (Objects.isNull(authUser)) {
- return Result.createWithError();
- }
- // 返回用户信息
- return Result.createWithModel(new AuthUserVO()
- .setStatus(authUser.getStatus())
- .setName(authUser.getName())
- .setAvatar(authUser.getAvatar())
- .setEmail(authUser.getEmail())
- .setIntroduction(authUser.getIntroduction())
- .setRoles(Collections.singletonList(RoleEnum.getEnumTypeMap().get(authUser.getRoleId()).getRoleName()))
- );
- }
- @Override
- public Result getMasterUserInfo() {
- // 构建查询条件
- Criteria criteria = Criteria.where("roleId").is(RoleEnum.ADMIN.getRoleId());
- // 如果当前有管理员登录,则查询当前的管理员信息
- UserSessionVO userSessionInfo = SessionUtil.getUserSessionInfo();
- if (Objects.nonNull(userSessionInfo) && Objects.nonNull(userSessionInfo.getId())) {
- criteria.and("id").is(userSessionInfo.getId());
- }
- // 查询管理员信息并且返回
- AuthUser authUser = mongoTemplate.findOne(Query.query(criteria), AuthUser.class);
- AuthUserVO authUserVO = new AuthUserVO();
- if (Objects.nonNull(authUser)) {
- authUserVO.setName(authUser.getName())
- .setIntroduction(authUser.getIntroduction())
- .setEmail(authUser.getEmail())
- .setAvatar(authUser.getAvatar());
- }
- return Result.createWithModel(authUserVO);
- }
- @Override
- public Result logout() {
- UserSessionVO userSessionInfo = SessionUtil.getUserSessionInfo();
- if (Objects.nonNull(userSessionInfo) && Objects.nonNull(userSessionInfo.getId())) {
- mongoTemplate.remove(Query.query(Criteria.where("userId").is(userSessionInfo.getId())), AuthToken.class);
- }
- return Result.createWithSuccessMessage();
- }
- @Override
- public Result updateAdmin(AuthUserVO authUserVO) {
- UserSessionVO userSessionInfo = null;
- if (Objects.isNull(authUserVO) || Objects.isNull(userSessionInfo = SessionUtil.getUserSessionInfo())) {
- ExceptionUtil.rollback(ErrorEnum.PARAM_ERROR);
- }
- Update update = new Update();
- update.set("name", authUserVO.getName());
- update.set("email", authUserVO.getEmail());
- update.set("avatar", authUserVO.getAvatar());
- update.set("introduction", authUserVO.getIntroduction());
- mongoTemplate.updateFirst(Query.query(Criteria.where("id").is(userSessionInfo.getId())), update, AuthUser.class);
- return Result.createWithSuccessMessage();
- }
- @Override
- public String getAvatar() {
- // 构建查询条件
- Criteria criteria = Criteria.where("roleId").is(RoleEnum.ADMIN.getRoleId());
- // 如果当前有管理员登录,则查询当前的管理员信息
- UserSessionVO userSessionInfo = SessionUtil.getUserSessionInfo();
- if (Objects.nonNull(userSessionInfo) && Objects.nonNull(userSessionInfo.getId())) {
- criteria.and("id").is(userSessionInfo.getId());
- }
- return Objects.requireNonNull(mongoTemplate.findOne(Query.query(criteria), AuthUser.class)).getAvatar();
- }
- }
|