Browse Source

1.密码错误需额外提示还有几次机会
2.员工需要开放修改角色功能

lr 2 years ago
parent
commit
3905d0afba

+ 10 - 7
eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/ZkDataSyncTask.java

@@ -225,12 +225,6 @@ public class ZkDataSyncTask {
                 jobs.add(job);
                 user.setJobs(jobs);
 
-                Set<Role> roles = new HashSet<Role>();
-
-                Role role = new Role();
-                role.setId(Long.valueOf(2));//普通用户
-                roles.add(role);
-                user.setRoles(roles);
                 dmUser = new DmUser();
                 dmUser.setDept(dept);
                 dmUser.setId(user.getId());
@@ -246,7 +240,6 @@ public class ZkDataSyncTask {
                 dmUser.setUserRootGroupId(user.getUserRootGroupId());
                 dmUser.setUserRootGroupName(user.getUserRootGroupName());
                 dmUser.setJobs(jobs);
-                dmUser.setRoles(roles);
 
                 try {
                     //1、入用户库
@@ -255,6 +248,11 @@ public class ZkDataSyncTask {
                     if (dmUserDto != null) {
                         dmUserService.update(dmUser);
                     } else {
+                        Set<Role> roles = new HashSet<Role>();
+                        Role role = new Role();
+                        role.setId(Long.valueOf(2));//普通用户
+                        roles.add(role);
+                        dmUser.setRoles(roles);
 //                        Snowflake snowflake = IdUtil.createSnowflake(1, 1);
                         DmCardDto dmCardDto = dmCardService.create(new DmCard());
                         dmUser.setCardid(String.valueOf(dmCardDto.getId()));
@@ -272,6 +270,11 @@ public class ZkDataSyncTask {
                         dmUser.setOssPassword(userDto.getOssPassword());
                         dmUserService.update(dmUser);
                     } else {
+                        Set<Role> roles = new HashSet<Role>();
+                        Role role = new Role();
+                        role.setId(Long.valueOf(2));//普通用户
+                        roles.add(role);
+                        user.setRoles(roles);
                         user.setPassword(passwordEncoder.encode("12345678"));
                         String ossPassword = RsaUtils.encryptByPublicKey(RsaProperties.publicKey, "12345678");
                         user.setOssPassword(ossPassword);

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/CheckLoginNumber.java

@@ -29,7 +29,7 @@ public class CheckLoginNumber {
         }
         //设置过期时间
         redisUtils.expire(key, 1800);
-        return number;
+        return errLimit - number;
     }
 
 }

+ 4 - 4
eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthorizationController.java

@@ -108,8 +108,8 @@ public class AuthorizationController {
                 throw new BadRequestException("验证码不存在或已过期");
             }
             if (StringUtils.isBlank(authUser.getCode()) || !authUser.getCode().equalsIgnoreCase(code)) {
-                checkLoginNumber.checkLoginTimes(key,userDto.getErrLimit());
-                throw new BadRequestException("验证码错误");
+                Integer count = checkLoginNumber.checkLoginTimes(key,userDto.getErrLimit());
+                throw new BadRequestException("验证码错误   剩余登录次数:"+count);
             }
             Authentication authentication = null;
             try {
@@ -118,8 +118,8 @@ public class AuthorizationController {
                 authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken);
                 SecurityContextHolder.getContext().setAuthentication(authentication);
             } catch (AuthenticationException e) {
-                checkLoginNumber.checkLoginTimes(key,userDto.getErrLimit());
-                throw new BadRequestException("密码错误");
+                Integer count = checkLoginNumber.checkLoginTimes(key,userDto.getErrLimit());
+                throw new BadRequestException("密码错误   剩余登录次数:"+count);
             }
             // 生成令牌
             String token = tokenProvider.createToken(authentication);

+ 10 - 0
eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java

@@ -16,6 +16,7 @@
 package me.zhengjie.modules.system.rest;
 
 import cn.hutool.core.collection.CollectionUtil;
+import com.alibaba.fastjson.JSONArray;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -49,6 +50,7 @@ import org.springframework.util.ObjectUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
+
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.*;
@@ -126,6 +128,14 @@ public class UserController {
         return new ResponseEntity<>(HttpStatus.NO_CONTENT);
     }
 
+    @Log("修改用户角色")
+    @ApiOperation("修改用户角色")
+    @GetMapping(value = "updateRole")
+    public ResponseEntity<Object> updateRole(String userId, String roleIds) throws Exception {
+        userService.updateRole(userId, roleIds);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
     @Log("修改用户:个人中心")
     @ApiOperation("修改用户:个人中心")
     @PutMapping(value = "center")

+ 6 - 0
eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java

@@ -15,6 +15,7 @@
  */
 package me.zhengjie.modules.system.service;
 
+import com.alibaba.fastjson.JSONArray;
 import me.zhengjie.modules.system.domain.User;
 import me.zhengjie.modules.system.service.dto.UserDto;
 import me.zhengjie.modules.system.service.dto.UserQueryCriteria;
@@ -58,6 +59,11 @@ public interface UserService {
      */
     void update(User resources) throws Exception;
 
+    /**
+     * 编辑用户角色
+     */
+    void updateRole(String userId, String roleIds);
+
     /**
      * 新增用户
      * @param resources /

+ 51 - 33
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java

@@ -15,6 +15,7 @@
  */
 package me.zhengjie.modules.system.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import lombok.RequiredArgsConstructor;
 import me.zhengjie.config.FileProperties;
 import me.zhengjie.domain.LocalStorage;
@@ -29,10 +30,7 @@ import me.zhengjie.modules.dm.user.service.dto.DmUserDto;
 import me.zhengjie.modules.dm.user.service.mapstruct.DmUserMapper;
 import me.zhengjie.modules.security.service.OnlineUserService;
 import me.zhengjie.modules.security.service.UserCacheClean;
-import me.zhengjie.modules.system.domain.Dept;
-import me.zhengjie.modules.system.domain.Job;
-import me.zhengjie.modules.system.domain.Role;
-import me.zhengjie.modules.system.domain.User;
+import me.zhengjie.modules.system.domain.*;
 import me.zhengjie.exception.EntityExistException;
 import me.zhengjie.exception.EntityNotFoundException;
 import me.zhengjie.modules.system.repository.UserRepository;
@@ -52,6 +50,7 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
+
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.NotBlank;
 import java.io.File;
@@ -78,6 +77,7 @@ public class UserServiceImpl implements UserService {
     private final DmUserMapper dmUserMapper;
     private final DmUserRepository dmUserRepository;
     private final DmCardService dmCardService;
+
     @Override
     public Object queryAll(UserQueryCriteria criteria, Pageable pageable) {
         Page<User> page = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable);
@@ -155,7 +155,7 @@ public class UserServiceImpl implements UserService {
         }
 
         // 如果用户被禁用,则清除用户登录信息
-        if(!resources.getEnabled()){
+        if (!resources.getEnabled()) {
             onlineUserService.kickOutForUsername(resources.getUsername());
         }
 
@@ -180,6 +180,22 @@ public class UserServiceImpl implements UserService {
         delCaches(resources.getId(), resources.getUsername());
     }
 
+    @Override
+    public void updateRole(String userId, String roleIds) {
+        User user = userRepository.findById(userId).orElseGet(User::new);
+        ValidationUtil.isNull( user.getId(),"User","id",userId);
+        Set<Role> roles = new HashSet<>();
+        List<Long> idList = Arrays.stream(roleIds.split(",")).map(Long::parseLong).collect(Collectors.toList());
+        for (Long roleId : idList) {
+            System.out.println("roleId:"+roleId);
+            Role role = new Role();
+            role.setId(roleId);
+            roles.add(role);
+        }
+        user.setRoles(roles);
+        userRepository.save(user);
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void createSync(User resources) {
@@ -203,7 +219,7 @@ public class UserServiceImpl implements UserService {
         User user = userRepository.findById(resources.getId()).orElseGet(User::new);
         ValidationUtil.isNull(user.getId(), "User", "id", resources.getId());
         // 如果用户被禁用,则清除用户登录信息
-        if(!resources.getEnabled()){
+        if (!resources.getEnabled()) {
             onlineUserService.kickOutForUsername(resources.getUsername());
         }
         user.setUsername(resources.getUsername());
@@ -224,7 +240,7 @@ public class UserServiceImpl implements UserService {
         user.setUserRootGroupId(resources.getUserRootGroupId());
         user.setUserRootGroupName(resources.getUserRootGroupName());
         user.setUserCode(resources.getUserCode());
-        if(StringUtils.isBlank(user.getOrgPassword())){
+        if (StringUtils.isBlank(user.getOrgPassword())) {
             user.setOrgPassword(resources.getOrgPassword());
         }
         userRepository.save(user);
@@ -250,8 +266,8 @@ public class UserServiceImpl implements UserService {
     }
 
     @Override
-    public List<User> findByDmUserId(String dmUserId,String userId) {
-        return userRepository.findByDmUserId(dmUserId,userId);
+    public List<User> findByDmUserId(String dmUserId, String userId) {
+        return userRepository.findByDmUserId(dmUserId, userId);
     }
 
 
@@ -309,7 +325,7 @@ public class UserServiceImpl implements UserService {
         //判断旧文件地址是否是null的
         if (StringUtils.isNotBlank(oldPath)) {
             //根据旧文件地址删除文件
-            if (FileUtil.del(oldPath)){
+            if (FileUtil.del(oldPath)) {
                 //删除成功需要删除对应文件表中的数据 tool_local_storage
 //                this.localStorageService.deleteByUrl(oldPath);
             }
@@ -371,20 +387,21 @@ public class UserServiceImpl implements UserService {
 
     /**
      * 将绑定的DM用户信息跟账号进行关联
+     *
      * @param resources
      */
-    public User setDmUserInfoToSysUser(User resources){
+    public User setDmUserInfoToSysUser(User resources) {
         //判断关联的DM用户是否已关联别的账号
-        if(resources != null && resources.getDmUser() != null && resources.getDmUser().getId() != null){
-            List<User> list = findByDmUserId(resources.getDmUser().getId(),resources.getId());
-            if(list != null && list.size() > 0){
+        if (resources != null && resources.getDmUser() != null && resources.getDmUser().getId() != null) {
+            List<User> list = findByDmUserId(resources.getDmUser().getId(), resources.getId());
+            if (list != null && list.size() > 0) {
                 throw new BadRequestException("该用户已绑定账号,请重新选择绑定用户");
             }
         }
-        if(resources.getDmUser() != null && resources.getDmUser().getId() != null){
+        if (resources.getDmUser() != null && resources.getDmUser().getId() != null) {
             //查询关联的DM用户信息
             DmUserDto dmUserDto = dmUserService.findById(resources.getDmUser().getId());
-            if(dmUserDto != null){
+            if (dmUserDto != null) {
                 List<DmUserDto> temp = new ArrayList<>();
                 temp.add(dmUserDto);
                 DmUser dmUser = dmUserMapper.toEntity(temp).get(0);
@@ -392,13 +409,13 @@ public class UserServiceImpl implements UserService {
                 resources.setNickName(dmUser.getName());//昵称/用户名
                 resources.setGender(dmUser.getSex());//性别
                 resources.setEmail(dmUser.getEmail());//邮箱
-                resources.setExtendsCol(resources.getOrgPassword()+"||"+resources.getPassword());//现密码
+                resources.setExtendsCol(resources.getOrgPassword() + "||" + resources.getPassword());//现密码
                 resources.setDept(dmUser.getDept());//部门
                 resources.setJobs(dmUser.getJobs());//岗位
                 resources.setRoles(dmUser.getRoles());//角色
                 //判断是否是管理员
-                for(Role r : dmUser.getRoles()){
-                    if(StringUtils.isNotBlank(r.getRoleKey()) && r.getRoleKey().equals("admin")){
+                for (Role r : dmUser.getRoles()) {
+                    if (StringUtils.isNotBlank(r.getRoleKey()) && r.getRoleKey().equals("admin")) {
                         resources.setIsAdmin(true);
                         break;
                     }
@@ -416,23 +433,24 @@ public class UserServiceImpl implements UserService {
 
     /**
      * 解绑用户
+     *
      * @param ids
      */
-    public void unBindDmUser(Set<String> ids) throws Exception{
-        for(String id: ids){
+    public void unBindDmUser(Set<String> ids) throws Exception {
+        for (String id : ids) {
             //查询用户信息
-           User user = userMapper.toEntity(findById(id));
-           if(user != null){
-               user.setIsAdmin(false);
-               user.setDmUser(null);
-               user.setEmail(null);
-               user.setGender(null);
-               user.setNickName(null);
-               user.setRoles(new HashSet<>());
-               user.setJobs(new HashSet<>());
-               user.setDept(null);
-               update(user);
-           }
+            User user = userMapper.toEntity(findById(id));
+            if (user != null) {
+                user.setIsAdmin(false);
+                user.setDmUser(null);
+                user.setEmail(null);
+                user.setGender(null);
+                user.setNickName(null);
+                user.setRoles(new HashSet<>());
+                user.setJobs(new HashSet<>());
+                user.setDept(null);
+                update(user);
+            }
         }
     }
 }