2021与蓝度共同重构项目,服务端
zhanzhiqin
2022-07-28 254dc4d9b8d903246483297ed0799290f856f0de
ximon-admin/src/main/java/com/sandu/ximon/admin/service/ClientService.java
@@ -5,7 +5,11 @@
import com.sandu.common.enums.RoleLevelStatus;
import com.sandu.common.execption.BusinessException;
import com.sandu.common.object.BaseConditionVO;
import com.sandu.common.redis.RedisService;
import com.sandu.common.security.LoginUserInfo;
import com.sandu.common.security.token.TokenProvider;
import com.sandu.common.service.impl.BaseServiceImpl;
import com.sandu.common.util.IpUtil;
import com.sandu.common.util.SpringContextHolder;
import com.sandu.ximon.admin.param.AddClientPrarm;
import com.sandu.ximon.admin.param.PwdParam;
@@ -13,17 +17,21 @@
import com.sandu.ximon.admin.param.UserPwsParm;
import com.sandu.ximon.admin.security.SecurityUtils;
import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils;
import com.sandu.ximon.admin.utils.StringUtil;
import com.sandu.ximon.dao.bo.MenuNode;
import com.sandu.ximon.dao.domain.*;
import com.sandu.ximon.dao.enums.AdministratorEnums;
import com.sandu.ximon.dao.mapper.ClientMapper;
import lombok.AllArgsConstructor;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
@Service
@AllArgsConstructor
@@ -33,6 +41,7 @@
    private final PasswordEncoder passwordEncoder;
    private final ClientRoleRelationService clientRoleRelationService;
    private final RoleService roleService;
    private final TokenProvider tokenProvider;
    public boolean addClient(AddClientPrarm addClientPrarm) {
@@ -378,4 +387,37 @@
        List<MenuNode> resultList = SpringContextHolder.getBean(MenuService.class).getUserPermissionListById(menuIds);
        return resultList;
    }
    /**
     * 生成便捷登录KEY
     */
    public String creatKeyByLogin(String keyValue) {
        if (keyValue == null) {
            throw new BusinessException("key不能为空!");
        }
        Object object = SpringContextHolder.getBean(RedisService.class).get(keyValue);
        if (object != null) {
            return object.toString();
        } else {
            Client client = getOne(Wrappers.lambdaQuery(Client.class).eq(Client::getUserKey, keyValue));
            if (client == null) {
                throw new BusinessException("用户不存在,获取信息异常!");
            }
            Collection<GrantedAuthority> grantedAuthorities = roleService.mapToGrantedAuthorities(client.getId(), false);
            LoginUserInfo loginUserInfo = new LoginUserInfo();
            loginUserInfo.setUserId(client.getId());
            loginUserInfo.setAccount(client.getClientName());
            loginUserInfo.setIp(IpUtil.getRealIp());
            loginUserInfo.setAdministratorType(AdministratorEnums.NORMAL.getCode());
            loginUserInfo.setPermission(grantedAuthorities.stream().map(GrantedAuthority::getAuthority).collect(Collectors.joining(",")));
            // 生成令牌
            String token = tokenProvider.createToken(loginUserInfo);
            return token;
        }
    }
}