| | |
| | | package com.ycl.service.user.impl; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.util.PageUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.alibaba.druid.sql.PagerUtils; |
| | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDateTime; |
| | | import java.util.*; |
| | | import java.util.function.Consumer; |
| | | import java.util.stream.Collectors; |
| | |
| | | date = calendar.getTime(); |
| | | umsAdmin.setExpirationDate(date); |
| | | } else { |
| | | umsAdmin.setExpirationDate(new Date("2200-01-01")); |
| | | umsAdmin.setExpirationDate(new Date(2090,1,1)); |
| | | } |
| | | if (umsAdmin.getId() != null) { |
| | | baseMapper.updateById(umsAdmin); |
| | |
| | | //密码需要客户端加密后传递 |
| | | try { |
| | | AdminUserDetails userDetails = (AdminUserDetails) loadUserByUsername(username); |
| | | |
| | | UmsAdmin admin = userDetails.getUmsAdmin(); |
| | | LocalDateTime nowTime = LocalDateTime.now(); |
| | | nowTime = nowTime.plusMinutes(-15); |
| | | if (admin.getPasswordErrorNum() != null && admin.getPasswordErrorNum() >= 5 |
| | | && admin.getPasswordErrorLastTime().isAfter(nowTime)) { |
| | | admin.setPasswordErrorLastTime(LocalDateTime.now()); |
| | | updateById(admin); |
| | | Asserts.fail("登录失败超过5次,此账号被锁定,请15分钟后再试。"); |
| | | } |
| | | if (!passwordEncoder.matches(password, userDetails.getPassword())) { |
| | | if (admin.getPasswordErrorNum() == null) { |
| | | admin.setPasswordErrorNum(1); |
| | | } else { |
| | | admin.setPasswordErrorNum(admin.getPasswordErrorNum() + 1); |
| | | } |
| | | admin.setPasswordErrorLastTime(LocalDateTime.now()); |
| | | updateById(admin); |
| | | Asserts.fail("密码不正确"); |
| | | } |
| | | if (!userDetails.isEnabled()) { |
| | | Asserts.fail("帐号已被禁用"); |
| | | } |
| | | admin.setPasswordErrorNum(0); |
| | | updateById(admin); |
| | | |
| | | UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); |
| | | SecurityContextHolder.getContext().setAuthentication(authentication); |
| | | //根据用户id,用户姓名 |
| | | token = jwtTokenUtil.generateToken(userDetails.getUserId(), userDetails.getUsername()); |
| | | redisService.set(RedisKey.PLATFORM_TOKEN_KEY.concat(username), token, LiveTimeMillisecond.s7200.time); |
| | | // updateLoginTimeByUsername(username); |
| | | //insertLoginLog(username); |
| | | } catch (AuthenticationException e) { |
| | | LOGGER.warn("登录异常:{}", e.getMessage()); |
| | | } |
| | | return token; |
| | | } |
| | | |
| | | @Override |
| | | public String getOAuthToken(String username) { |
| | | String token = null; |
| | | //密码需要客户端加密后传递 |
| | | try { |
| | | AdminUserDetails userDetails = (AdminUserDetails) loadUserByUsername(username); |
| | | UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); |
| | | SecurityContextHolder.getContext().setAuthentication(authentication); |
| | | //根据用户id,用户姓名 |
| | |
| | | List<UmsMenu> resourceList = getResourceList(admin.getId()); |
| | | return new AdminUserDetails(admin, resourceList); |
| | | } |
| | | throw new UsernameNotFoundException("用户名或密码错误"); |
| | | throw new UsernameNotFoundException("用户不存在"); |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | public List<UmsAdmin> getDepartUser(Long departId) { |
| | | //TODO:查询二级部门及所有子级部门 |
| | | List<UmsDepart> umsDeparts = umsDepartManageMapper.selectChildrendIds(departId); |
| | | List<Long> parentIds = umsDeparts.stream().map(UmsDepart::getParentId).collect(Collectors.toList()); |
| | | List<Long> ids = umsDeparts.stream().map(UmsDepart::getId).collect(Collectors.toList()); |
| | | List<Long> departIds = new ArrayList<>(); |
| | | for (Long id : ids) { |
| | | if(!parentIds.contains(id)){ |
| | | departIds.add(id); |
| | | } |
| | | } |
| | | |
| | | QueryWrapper<UmsDepartManage> wrapper = new QueryWrapper<>(); |
| | | wrapper.lambda().eq(UmsDepartManage::getDepartId, departId); |
| | | List<UmsDepartManage> list = umsDepartManageMapper.selectList(wrapper); |
| | | List<Long> userIds = list.stream().map(UmsDepartManage::getUserId).collect(Collectors.toList()); |
| | | wrapper.lambda().in(UmsDepartManage::getDepartId, departIds); |
| | | List<UmsDepartManage> users = umsDepartManageMapper.selectList(wrapper); |
| | | |
| | | List<Long> userIds = users.stream().map(UmsDepartManage::getUserId).collect(Collectors.toList()); |
| | | |
| | | QueryWrapper<UmsAdmin> wrapperUser = new QueryWrapper<>(); |
| | | wrapperUser.in("id", userIds); |
| | | List<UmsAdmin> adminList = baseMapper.selectList(wrapperUser); |
| | |
| | | return str; |
| | | } |
| | | |
| | | @Override |
| | | public UmsAdmin getByOpenid(String openid) { |
| | | LambdaQueryWrapper<UmsAdmin> wrapper = new LambdaQueryWrapper<UmsAdmin>().eq(UmsAdmin::getOpenid, openid).last("limit 1"); |
| | | |
| | | return baseMapper.selectOne(wrapper); |
| | | } |
| | | } |