package com.hollywood.applet.security; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.hollywood.applet.service.TUserService; import com.hollywood.applet.utils.RandomStringGenerator; import com.hollywood.common.model.TUser; import com.hollywood.common.utils.SpringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Component; import java.util.Objects; /** * 用户登录认证信息查询 * * @author xiaochen * @date Jun 29, 2019 */ @Component("loadUserDetailsService") public class SysUserDetailsService implements UserDetailsService { @Autowired private TUserService userService; @Override public SecurityUserDetails loadUserByUsername(String username) throws UsernameNotFoundException { TUser user = userService.getOne(Wrappers.lambdaQuery(TUser.class).eq(TUser::getUserPhone, username).last(" LIMIT 1")); if (Objects.isNull(user)) { // throw new UsernameNotFoundException("该用户不存在"); //新增用户 user = new TUser(); user.setUserPhone(username); user.setVipType(3); user.setSex(0); user.setStatus(1); user.setAuditStatus(0); user.setNickName("用户"+RandomStringGenerator.generateRandomString()); user.setAdvatar("http://bizuphk.oss-cn-hongkong.aliyuncs.com/hollywood/1716371352157%E6%9C%AA%E6%A0%87%E9%A2%98-1.png"); userService.save(user); } SecurityUserDetails vo = SpringUtils.beanCopy(user, SecurityUserDetails.class); /*getAdminPermission(vo); if (user.getAccount().equals(Constant.ADMIN)) { getAdminPermission(vo); } else { List roles = secRoleMapper.selectRolesByUid(user.getId()); List roleIds = roles.stream().map(SecRole::getId).collect(Collectors.toList()); List resources; if (CollectionUtils.isEmpty(roleIds)) { resources = new ArrayList<>(); } else { resources = secUserService.selectUserResourcesTag(user.getId()); } vo.setRoles(roles); vo.setResources(resources); } // 更新登录时间 SecurityUserDetails securityUserDetails = new SecurityUserDetails(); securityUserDetails.setId(user.getId()); securityUserDetails.setLastLoginTime(LocalDateTime.now()); secUserMapper.updateById(securityUserDetails);*/ return vo; } }