From e5bf0d08d05f5c58224fe28cdf743a1bae88e3f0 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 30 十一月 2023 16:48:55 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java | 243 ++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 221 insertions(+), 22 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 d313121..b2daa9f 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,21 @@
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 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.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.*;
import com.ycl.exception.ApiException;
import com.ycl.exception.Asserts;
@@ -42,9 +49,10 @@
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.time.LocalDateTime;
+import java.util.*;
+import java.util.function.Consumer;
import java.util.stream.Collectors;
/**
@@ -81,8 +89,9 @@
@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);
@@ -98,7 +107,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(2090,1,1));
+ }
+ 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);
@@ -108,10 +192,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);
@@ -137,7 +228,7 @@
}
umsRoleMenuRelations
.stream()
- .map(item->item.getMenuId())
+ .map(item -> item.getMenuId())
.collect(Collectors.toList())
.stream()
.distinct()
@@ -161,7 +252,6 @@
umsDepartManageMapper.insert(departManage);
baseMapper.updateById(umsAdmin);
- return umsAdmin;
}
@Override
@@ -170,19 +260,58 @@
//瀵嗙爜闇�瑕佸鎴风鍔犲瘑鍚庝紶閫�
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);
+ //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锛岀敤鎴峰鍚�
+ 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());
}
@@ -297,16 +426,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());
@@ -329,10 +462,15 @@
//鑾峰彇鐢ㄦ埛淇℃伅
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);
}
- throw new UsernameNotFoundException("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒");
+ throw new UsernameNotFoundException("鐢ㄦ埛涓嶅瓨鍦�");
}
@Override
@@ -359,18 +497,72 @@
queryWrapper.eq(UmsAdmin::getUserType, pageUserVO.getUserType());
}*/
UmsAdmin umsAdmin = new UmsAdmin();
- if (pageUserVO.getUserType()!=null) {
- umsAdmin.setUserType(pageUserVO.getUserType());
+ if (pageUserVO.getUserType() != null) {
+ umsAdmin.setUserType(pageUserVO.getUserType());
}
- if (pageUserVO.getKeyword()!=null&&!("".equals(pageUserVO.getKeyword()))) {
- umsAdmin.setKeyword(pageUserVO.getKeyword());
+ if (pageUserVO.getKeyword() != null && !("".equals(pageUserVO.getKeyword()))) {
+ umsAdmin.setKeyword(pageUserVO.getKeyword());
}
- if (pageUserVO.getJobTitle()!=null&&!("".equals(pageUserVO.getJobTitle()))) {
+ if (pageUserVO.getJobTitle() != null && !("".equals(pageUserVO.getJobTitle()))) {
umsAdmin.setJobTitle(pageUserVO.getJobTitle());
}
- Page<UmsAdmin> page1 = baseMapper.selectCondPage(page,umsAdmin);
+ 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;
+ }
- return page1;
+ @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
@@ -422,4 +614,11 @@
}
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);
+ }
}
--
Gitblit v1.8.0