From 7c13eb909a140c736a67555fabe60966f5d2c065 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期四, 23 三月 2023 17:51:36 +0800
Subject: [PATCH] 账号增加时间限制
---
ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java | 211 ++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 193 insertions(+), 18 deletions(-)
diff --git a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
index 85aa93d..c8235e2 100644
--- a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
+++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
@@ -1,14 +1,18 @@
package com.ycl.service.user.impl;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.PageUtil;
import cn.hutool.core.util.StrUtil;
+import com.alibaba.druid.sql.PagerUtils;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.bo.AdminUserDetails;
import com.ycl.dto.UmsAdminParam;
+import com.ycl.dto.user.UmsUserDto1;
import com.ycl.dto.UpdateAdminPasswordParam;
import com.ycl.entity.depart.UmsDepart;
import com.ycl.entity.user.*;
@@ -44,9 +48,9 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.function.Consumer;
import java.util.stream.Collectors;
/**
@@ -80,13 +84,12 @@
AdminMenuRelationMapper adminMenuRelationMapper;
@Resource
UmsMenuMapper umsMenuMapper;
- @Resource
- UmsAdminMapper umsAdminMapper;
@Override
public UmsAdmin getAdminByUsername(String username) {
- UmsAdmin admin = getCacheService().getAdmin(username);
- if (admin != null) return admin;
+ // UmsAdmin admin = getCacheService().getAdmin(username);
+ // if (admin != null) return admin;
+ UmsAdmin admin = null;
QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(UmsAdmin::getUsername, username);
List<UmsAdmin> adminList = list(wrapper);
@@ -102,7 +105,82 @@
@Transactional(rollbackFor = Exception.class)
public UmsAdmin register(UmsAdminParam umsAdminParam) {
UmsAdmin umsAdmin = new UmsAdmin();
- //TODO mac,ip,鑱屽姟锛岀敤鎴风被鍨�
+ BeanUtils.copyProperties(umsAdminParam, umsAdmin);
+ umsAdmin.setCreateTime(new Date());
+ umsAdmin.setStatus(1);
+// umsAdmin.setMacAddress(MacUtils.getMac());
+ //鏌ヨ鏄惁鏈夌浉鍚岀敤鎴峰悕鐨勭敤鎴�
+ QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>();
+ wrapper.lambda().eq(UmsAdmin::getUsername, umsAdmin.getUsername());
+ if (umsAdmin.getId() != null) {
+ wrapper.lambda().ne(UmsAdmin::getId, umsAdmin.getId());
+ }
+ List<UmsAdmin> umsAdminList = list(wrapper);
+ if (umsAdminList.size() > 0) {
+ return null;
+ }
+ //灏嗗瘑鐮佽繘琛屽姞瀵嗘搷浣�
+ String encodePassword = passwordEncoder.encode(umsAdmin.getPassword());
+
+ if (umsAdmin.getId() == null && !umsAdmin.getPassword().matches("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,16}$")) {
+ Asserts.fail("瀵嗙爜闀垮害8鍒�16浣嶄笖瀵嗙爜涓殑瀛楃蹇呴』鍖呭惈瀛楁瘝锛堝ぇ鍐欐垨鑰呭皬鍐欙級鍜屽繀椤诲寘鍚暟瀛楋紝涓嶈兘鍖呭惈绌烘牸");
+ }
+ if (umsAdmin.getUsername().equals(umsAdmin.getPassword())) {
+ Asserts.fail("瀵嗙爜涓嶈兘鍜岀櫥褰曞悕瀹屽叏涓�鑷�");
+ }
+ umsAdmin.setPassword(encodePassword);
+ if (umsAdminParam.getDays() != null) {
+ Date date = new Date();
+ Calendar calendar = new GregorianCalendar();
+ calendar.setTime(date);
+ // 鎶婃棩鏈熷線鍚庡鍔犱竴澶�,鏁存暟 寰�鍚庢帹,璐熸暟寰�鍓嶇Щ鍔�
+ calendar.add(Calendar.DATE, umsAdminParam.getDays());
+ // 杩欎釜鏃堕棿灏辨槸鏃ユ湡寰�鍚庢帹涓�澶╃殑缁撴灉
+ date = calendar.getTime();
+ umsAdmin.setExpirationDate(date);
+ } else {
+ umsAdmin.setExpirationDate(new Date("2200-01-01"));
+ }
+ if (umsAdmin.getId() != null) {
+ baseMapper.updateById(umsAdmin);
+ } else {
+ baseMapper.insert(umsAdmin);
+ }
+
+ LambdaQueryWrapper<UmsAdminRoleRelation> deleteWrapper = new QueryWrapper<UmsAdminRoleRelation>().lambda()
+ .eq(UmsAdminRoleRelation::getAdminId, umsAdmin.getId());
+
+ umsAdminRoleRelationService.remove(deleteWrapper);
+ //娣诲姞瑙掕壊鎺堟潈
+ List<Long> ids = umsAdminParam.getRoleIds();
+ if (!ids.isEmpty()) {
+ List<UmsAdminRoleRelation> roleIds = new ArrayList<>();
+ for (Long id : ids) {
+ UmsAdminRoleRelation urr = new UmsAdminRoleRelation();
+ urr.setAdminId(umsAdmin.getId());
+ urr.setRoleId(id);
+ roleIds.add(urr);
+ }
+ umsAdminRoleRelationService.saveBatch(roleIds);
+ }
+
+ umsDepartManageMapper.deletedByDepartId(umsAdmin.getId());
+
+ //娣诲姞閮ㄩ棬
+ UmsDepartManage departManage = new UmsDepartManage();
+ departManage.setUserId(umsAdmin.getId());
+ departManage.setDepartId(umsAdminParam.getDepartmentId());
+ departManage.setCreateTime(new Date());
+ departManage.setUpdateTime(new Date());
+ umsDepartManageMapper.insert(departManage);
+
+ // baseMapper.updateById(umsAdmin);
+ return umsAdmin;
+ }
+
+ @Override
+ public void importExcl(UmsAdminParam umsAdminParam) {
+ UmsAdmin umsAdmin = new UmsAdmin();
BeanUtils.copyProperties(umsAdminParam, umsAdmin);
umsAdmin.setCreateTime(new Date());
umsAdmin.setStatus(1);
@@ -112,10 +190,17 @@
wrapper.lambda().eq(UmsAdmin::getUsername, umsAdmin.getUsername());
List<UmsAdmin> umsAdminList = list(wrapper);
if (umsAdminList.size() > 0) {
- return null;
+ throw new RuntimeException("鐢ㄦ埛宸插瓨鍦�");
}
//灏嗗瘑鐮佽繘琛屽姞瀵嗘搷浣�
String encodePassword = passwordEncoder.encode(umsAdmin.getPassword());
+
+ if (!umsAdmin.getPassword().matches("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,16}$")) {
+ Asserts.fail("瀵嗙爜闀垮害8鍒�16浣嶄笖瀵嗙爜涓殑瀛楃蹇呴』鍖呭惈瀛楁瘝锛堝ぇ鍐欐垨鑰呭皬鍐欙級鍜屽繀椤诲寘鍚暟瀛楋紝涓嶈兘鍖呭惈绌烘牸");
+ }
+ if (umsAdmin.getUsername().equals(umsAdmin.getPassword())) {
+ Asserts.fail("瀵嗙爜涓嶈兘鍜岀櫥褰曞悕瀹屽叏涓�鑷�");
+ }
umsAdmin.setPassword(encodePassword);
baseMapper.insert(umsAdmin);
@@ -141,7 +226,7 @@
}
umsRoleMenuRelations
.stream()
- .map(item->item.getMenuId())
+ .map(item -> item.getMenuId())
.collect(Collectors.toList())
.stream()
.distinct()
@@ -165,7 +250,6 @@
umsDepartManageMapper.insert(departManage);
baseMapper.updateById(umsAdmin);
- return umsAdmin;
}
@Override
@@ -180,13 +264,14 @@
if (!userDetails.isEnabled()) {
Asserts.fail("甯愬彿宸茶绂佺敤");
}
+
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);
+ //insertLoginLog(username);
} catch (AuthenticationException e) {
LOGGER.warn("鐧诲綍寮傚父:{}", e.getMessage());
}
@@ -301,16 +386,20 @@
return umsMenuList;
}
umsMenuList = umsMenuMapper.getMenuList(adminId);
- getCacheService().setResourceList(adminId, umsMenuList);
+ getCacheService().setResourceList(adminId, umsMenuList);
return umsMenuList;
}
@Override
public int updatePassword(UpdateAdminPasswordParam param) {
- if (StrUtil.isEmpty(param.getUsername())
- || StrUtil.isEmpty(param.getOldPassword())
- || StrUtil.isEmpty(param.getNewPassword())) {
+ if (StrUtil.isNotEmpty(param.getUsername())
+ && StrUtil.isNotEmpty(param.getOldPassword())
+ && StrUtil.isNotEmpty(param.getNewPassword())
+ && !param.getNewPassword().matches("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,16}$")) {
return -1;
+ }
+ if (param.getUsername().equals(param.getNewPassword())) {
+ return -4;
}
QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(UmsAdmin::getUsername, param.getUsername());
@@ -333,6 +422,11 @@
//鑾峰彇鐢ㄦ埛淇℃伅
UmsAdmin admin = getAdminByUsername(username);
if (admin != null) {
+ if (admin.getExpirationDate() != null) {
+ if (!admin.getExpirationDate().after(new Date())) {
+ Asserts.fail("璐﹀彿宸茶繃鏈熻鑱旂郴绠$悊鍛�");
+ }
+ }
List<UmsMenu> resourceList = getResourceList(admin.getId());
return new AdminUserDetails(admin, resourceList);
}
@@ -349,7 +443,86 @@
int pageSize = pageUserVO.getPageSize();
int current = pageUserVO.getCurrent();
Page<UmsAdmin> page = new Page<>(current, pageSize);
- return umsAdminMapper.selectPageByWordKey(page,pageUserVO.getKeyword());
+ /* LambdaQueryWrapper<UmsAdmin> queryWrapper = new LambdaQueryWrapper<>();
+
+ if (StringUtils.isNotBlank(pageUserVO.getKeyword())) {
+ queryWrapper.like(UmsAdmin::getUsername, pageUserVO.getKeyword())
+ .or().like(UmsAdmin::getNickName, pageUserVO.getKeyword())
+ .or().like(UmsAdmin::getMobile, pageUserVO.getKeyword());
+ }
+ if (StringUtils.isNotBlank(pageUserVO.getJobTitle())) {
+ queryWrapper.eq(UmsAdmin::getJobTitle, pageUserVO.getJobTitle());
+ }
+ if (PojoUtils.Vo.isUsefulSearchParam(pageUserVO.getUserType())) {
+ queryWrapper.eq(UmsAdmin::getUserType, pageUserVO.getUserType());
+ }*/
+ UmsAdmin umsAdmin = new UmsAdmin();
+ if (pageUserVO.getUserType() != null) {
+ umsAdmin.setUserType(pageUserVO.getUserType());
+ }
+ if (pageUserVO.getKeyword() != null && !("".equals(pageUserVO.getKeyword()))) {
+ umsAdmin.setKeyword(pageUserVO.getKeyword());
+ }
+ if (pageUserVO.getJobTitle() != null && !("".equals(pageUserVO.getJobTitle()))) {
+ umsAdmin.setJobTitle(pageUserVO.getJobTitle());
+ }
+ PageUtil.setFirstPageNo(1);
+ int offset = PageUtil.getStart(current, pageSize);
+ List<UmsAdmin> list = baseMapper.selectCondList(umsAdmin, offset, pageSize);
+ Long total = baseMapper.selectCondTotal(umsAdmin);
+ page.setRecords(list);
+ page.setTotal(total);
+ return page;
+ }
+
+ @Override
+ public List<UmsUserDto1> userExp() {
+ List<UmsAdmin> umsAdmins = baseMapper.selectToExp();
+ List<UmsUserDto1> res = umsAdmins.stream()
+ .map(item -> {
+ UmsUserDto1 res1 = new UmsUserDto1();
+ res1.setId(item.getId());
+ res1.setUsername(item.getUsername());
+ res1.setNickName(item.getNickName());
+ res1.setMobile(item.getMobile());
+ StringBuffer roleStrBuffer = new StringBuffer();
+ List<UmsRole> roles = item.getRoles();
+ roles.forEach(new Consumer<UmsRole>() {
+ @Override
+ public void accept(UmsRole o) {
+ roleStrBuffer.append(o.getName());
+ roleStrBuffer.append(",");
+ }
+ });
+ roleStrBuffer.deleteCharAt(roleStrBuffer.length() - 1);
+ res1.setRoles(roleStrBuffer.toString());
+ StringBuffer departStrBuffer = new StringBuffer();
+ List<UmsDepart> departs = item.getDepart();
+ departs.forEach(new Consumer<UmsDepart>() {
+ @Override
+ public void accept(UmsDepart o) {
+ departStrBuffer.append(o.getDepartName());
+ departStrBuffer.append(",");
+ }
+ });
+ departStrBuffer.deleteCharAt(departStrBuffer.length() - 1);
+ res1.setDepart(departStrBuffer.toString());
+ res1.setJobTitle(item.getJobTitle());
+ Date createTime = item.getCreateTime();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ if (createTime != null) {
+ res1.setCreateTime(sdf.format(createTime));
+ }
+
+ Integer status = item.getStatus();
+ if (status.equals(1)) {
+ res1.setStatus("鍚敤");
+ } else {
+ res1.setStatus("绂佺敤");
+ }
+ return res1;
+ }).collect(Collectors.toList());
+ return res;
}
@Override
@@ -401,4 +574,6 @@
}
return str;
}
+
+
}
--
Gitblit v1.8.0