Преглед изворни кода

优化调整用户认证相关数据和操作

reghao пре 4 година
родитељ
комит
6d61aeb2aa
32 измењених фајлова са 198 додато и 157 уклоњено
  1. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/view/AppPageController.java
  2. 3 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/controller/ResourceController.java
  3. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/controller/ResourcePageController.java
  4. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/controller/RoleController.java
  5. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/controller/RolePageController.java
  6. 2 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/controller/UserController.java
  7. 3 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/controller/UserPageController.java
  8. 0 31
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/RoleCrud.java
  9. 37 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/crud/MenuCrud.java
  10. 11 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/crud/MenuQuery.java
  11. 29 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/crud/RoleCrud.java
  12. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/crud/RoleQuery.java
  13. 31 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/crud/UserCrud.java
  14. 10 11
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/crud/UserQuery.java
  15. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/constant/DataStatus.java
  16. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/constant/MenuType.java
  17. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/constant/RoleType.java
  18. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/constant/UserGender.java
  19. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/dto/UserInfo.java
  20. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/dto/UserRole.java
  21. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/vo/UserVO.java
  22. 0 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/service/MenuService.java
  23. 24 30
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/service/MenuServiceImpl.java
  24. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/service/RoleServiceImpl.java
  25. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/service/UserService.java
  26. 22 32
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/service/UserServiceImpl.java
  27. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/sys/controller/TestController.java
  28. 6 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/sys/service/BakService.java
  29. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/view/thymeleaf/attribute/SelectDictAttrProcessor.java
  30. 0 8
      dmaster/src/main/resources/templates/auth/menu/add.html
  31. 0 4
      dmaster/src/main/resources/templates/auth/menu/detail.html
  32. 1 7
      dmaster/src/main/resources/templates/home/userInfo.html

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/view/AppPageController.java

@@ -16,7 +16,7 @@ import cn.reghao.autodop.dmaster.app.entity.log.BuildTime;
 import cn.reghao.autodop.dmaster.app.repository.log.BuildLogRepository;
 import cn.reghao.autodop.dmaster.app.vo.BuildConfig;
 import cn.reghao.autodop.dmaster.auth.UserContext;
-import cn.reghao.autodop.dmaster.auth.model.RoleType;
+import cn.reghao.autodop.dmaster.auth.model.constant.RoleType;
 import cn.reghao.autodop.dmaster.utils.db.PageList;
 import cn.reghao.autodop.dmaster.utils.db.PageSort;
 import io.swagger.annotations.Api;

+ 3 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/controller/ResourceController.java

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dmaster.auth.controller;
 
 import cn.reghao.autodop.common.result.Result;
 import cn.reghao.autodop.common.result.ResultStatus;
-import cn.reghao.autodop.dmaster.auth.db.query.MenuQuery;
+import cn.reghao.autodop.dmaster.auth.db.crud.MenuQuery;
 import cn.reghao.autodop.dmaster.auth.model.dto.MenuDTO;
 import cn.reghao.autodop.dmaster.auth.model.po.Menu;
 import cn.reghao.autodop.dmaster.utils.WebBody;
@@ -64,9 +64,9 @@ public class ResourceController {
     @GetMapping(value = "/{isEnabled}", produces = MediaType.APPLICATION_JSON_VALUE)
     public String list(@PathVariable(value = "isEnabled") Boolean isEnabled) {
         /* TODO 使用 vo 替换 po
-        List<MenuVO> list = menuQuery.getResourceByStatus(isEnabled).stream().map(MenuVO::new)
+        List<MenuVO> list = menuQuery.findByStatus(isEnabled).stream().map(MenuVO::new)
                 .collect(Collectors.toList());*/
-        List<Menu> list = menuQuery.getResourceByStatus(isEnabled);
+        List<Menu> list = menuQuery.findByStatus(isEnabled);
         return WebBody.success(list);
     }
 

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/controller/ResourcePageController.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.auth.controller;
 
-import cn.reghao.autodop.dmaster.auth.db.query.MenuQuery;
-import cn.reghao.autodop.dmaster.auth.db.query.RoleQuery;
+import cn.reghao.autodop.dmaster.auth.db.crud.MenuQuery;
+import cn.reghao.autodop.dmaster.auth.db.crud.RoleQuery;
 import cn.reghao.autodop.dmaster.auth.model.dto.MenuDTO;
 import cn.reghao.autodop.dmaster.auth.model.po.Role;
 import cn.reghao.autodop.dmaster.auth.model.po.Menu;

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/controller/RoleController.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.auth.controller;
 
-import cn.reghao.autodop.dmaster.auth.db.query.MenuQuery;
+import cn.reghao.autodop.dmaster.auth.db.crud.MenuQuery;
 import cn.reghao.autodop.dmaster.auth.model.po.Menu;
 import cn.reghao.autodop.dmaster.auth.model.po.Role;
 import cn.reghao.autodop.dmaster.auth.service.RoleService;
@@ -48,7 +48,7 @@ public class RoleController {
     @ApiOperation("获取角色可访问的资源")
     @GetMapping(value = "/menus/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
     public String getRoleMenus(@PathVariable("id") Role role) {
-        List<Menu> allMenus = menuQuery.getAllMenus();
+        List<Menu> allMenus = menuQuery.findAll();
         allMenus.forEach(menu -> {
             if (menu.getRoles().contains(role)) {
                 // 对应前端的 checked 复选框

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/controller/RolePageController.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.auth.controller;
 
-import cn.reghao.autodop.dmaster.auth.db.query.RoleQuery;
+import cn.reghao.autodop.dmaster.auth.db.crud.RoleQuery;
 import cn.reghao.autodop.dmaster.auth.model.po.User;
 import cn.reghao.autodop.dmaster.auth.model.vo.RoleVO;
 import cn.reghao.autodop.dmaster.utils.db.PageList;

+ 2 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/controller/UserController.java

@@ -1,6 +1,7 @@
 package cn.reghao.autodop.dmaster.auth.controller;
 
-import cn.reghao.autodop.dmaster.auth.model.*;
+import cn.reghao.autodop.dmaster.auth.model.dto.UserInfo;
+import cn.reghao.autodop.dmaster.auth.model.dto.UserRole;
 import cn.reghao.autodop.dmaster.auth.model.po.UserAuthority;
 import cn.reghao.autodop.dmaster.auth.model.po.Role;
 import cn.reghao.autodop.dmaster.auth.model.po.User;

+ 3 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/controller/UserPageController.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.auth.controller;
 
-import cn.reghao.autodop.dmaster.auth.db.query.RoleQuery;
-import cn.reghao.autodop.dmaster.auth.db.query.UserQuery;
+import cn.reghao.autodop.dmaster.auth.db.crud.RoleQuery;
+import cn.reghao.autodop.dmaster.auth.db.crud.UserQuery;
 import cn.reghao.autodop.dmaster.auth.model.po.Role;
 import cn.reghao.autodop.dmaster.auth.model.po.User;
 import cn.reghao.autodop.dmaster.auth.model.vo.UserVO;
@@ -83,7 +83,7 @@ public class UserPageController {
     @ApiOperation(value = "用户详细信息页面")
     @GetMapping("/detail/{id}")
     public String userDetailPage(@PathVariable("id") int id, Model model) {
-        User user = userQuery.getUserById(id);
+        User user = userQuery.findById(id);
         Set<Role> roles = userQuery.getUserRoles(user);
         List<String> names = roles.stream().map(Role::getName).collect(Collectors.toList());
 

+ 0 - 31
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/RoleCrud.java

@@ -1,31 +0,0 @@
-package cn.reghao.autodop.dmaster.auth.db;
-
-import cn.reghao.autodop.dmaster.auth.model.po.Role;
-import cn.reghao.autodop.dmaster.auth.db.repository.RoleRepository;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2021-05-11 18:26:15
- */
-@Service
-public class RoleCrud {
-    private RoleRepository roleRepository;
-
-    public RoleCrud(RoleRepository roleRepository) {
-        this.roleRepository = roleRepository;
-    }
-
-    public List<Role> findUserRoles(List<String> roles) {
-        Specification<Role> spec = ((root, query, criteriaBuilder) -> root.get("title").in(roles));
-        return roleRepository.findAll(spec);
-    }
-
-    public List<Role> findByRoleIds(List<Integer> roleIds) {
-        Specification<Role> spec = ((root, query, criteriaBuilder) -> root.get("id").in(roleIds));
-        return roleRepository.findAll(spec);
-    }
-}

+ 37 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/crud/MenuCrud.java

@@ -0,0 +1,37 @@
+package cn.reghao.autodop.dmaster.auth.db.crud;
+
+import cn.reghao.autodop.dmaster.auth.db.repository.MenuRepository;
+import cn.reghao.autodop.dmaster.auth.model.po.Menu;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2021-09-10 18:55:38
+ */
+@Service
+public class MenuCrud {
+    private final MenuRepository menuRepository;
+
+    public MenuCrud(MenuRepository menuRepository) {
+        this.menuRepository = menuRepository;
+    }
+
+    public Menu save(Menu menu) {
+        menuRepository.save(menu);
+        return menu;
+    }
+
+    public void saveAll(List<Menu> menus) {
+        menuRepository.saveAll(menus);
+    }
+
+    public void update(Menu menu) {
+        menuRepository.save(menu);
+    }
+
+    public void delete(Menu menu) {
+        menuRepository.delete(menu);
+    }
+}

+ 11 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/query/MenuQuery.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/crud/MenuQuery.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.auth.db.query;
+package cn.reghao.autodop.dmaster.auth.db.crud;
 
 import cn.reghao.autodop.dmaster.auth.model.po.Menu;
 import cn.reghao.autodop.dmaster.auth.db.repository.MenuRepository;
@@ -19,11 +19,19 @@ public class MenuQuery {
         this.menuRepository = menuRepository;
     }
 
-    public List<Menu> getAllMenus() {
+    public List<Menu> findAll() {
         return menuRepository.findAll();
     }
 
-    public List<Menu> getResourceByStatus(Boolean isEnabled) {
+    public Menu findById(Integer id) {
+        return menuRepository.getOne(id);
+    }
+
+    public List<Menu> findByPid(Integer pid) {
+        return menuRepository.findByPid(pid);
+    }
+
+    public List<Menu> findByStatus(Boolean isEnabled) {
         List<Menu> menuList = menuRepository.findByIsEnabled(isEnabled);
         Map<Integer, List<Menu>> map =  menuList.stream().collect(Collectors.groupingBy(Menu::getPid));
         List<Menu> list = new ArrayList<>();

+ 29 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/crud/RoleCrud.java

@@ -0,0 +1,29 @@
+package cn.reghao.autodop.dmaster.auth.db.crud;
+
+import cn.reghao.autodop.dmaster.auth.model.po.Role;
+import cn.reghao.autodop.dmaster.auth.db.repository.RoleRepository;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2021-05-11 18:26:15
+ */
+@Service
+public class RoleCrud {
+    private final RoleRepository roleRepository;
+
+    public RoleCrud(RoleRepository roleRepository) {
+        this.roleRepository = roleRepository;
+    }
+
+    public Role save(Role role) {
+        roleRepository.save(role);
+        return role;
+    }
+
+    public void saveAll(List<Role> roles) {
+        roleRepository.saveAll(roles);
+    }
+}

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/query/RoleQuery.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/crud/RoleQuery.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.auth.db.query;
+package cn.reghao.autodop.dmaster.auth.db.crud;
 
 import cn.reghao.autodop.dmaster.auth.model.po.UserAuthority;
 import cn.reghao.autodop.dmaster.auth.model.po.Role;

+ 31 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/crud/UserCrud.java

@@ -0,0 +1,31 @@
+package cn.reghao.autodop.dmaster.auth.db.crud;
+
+import cn.reghao.autodop.dmaster.auth.db.repository.UserRepository;
+import cn.reghao.autodop.dmaster.auth.model.po.User;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author reghao
+ * @date 2021-09-10 19:12:38
+ */
+@Service
+public class UserCrud {
+    private final UserRepository userRepository;
+
+    public UserCrud(UserRepository userRepository) {
+        this.userRepository = userRepository;
+    }
+
+    public User save(User user) {
+        userRepository.save(user);
+        return user;
+    }
+
+    public void update(User user) {
+        userRepository.save(user);
+    }
+
+    public void delete(User user) {
+        userRepository.delete(user);
+    }
+}

+ 10 - 11
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/query/UserQuery.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/db/crud/UserQuery.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.auth.db.query;
+package cn.reghao.autodop.dmaster.auth.db.crud;
 
 import cn.reghao.autodop.dmaster.auth.model.po.UserAuthority;
 import cn.reghao.autodop.dmaster.auth.model.po.Role;
@@ -29,6 +29,14 @@ public class UserQuery {
         this.roleRepository = roleRepository;
     }
 
+    public User findById(Integer id) {
+        return userRepository.getOne(id);
+    }
+
+    public User findByUsername(String username) {
+        return userRepository.findByUsername(username);
+    }
+
     public Page<UserVO> getUserVOByPage(PageRequest pageRequest) {
         return userRepository.findAll(pageRequest).map(UserVO::new);
     }
@@ -52,20 +60,11 @@ public class UserQuery {
     }
 
     public Set<Role> getUserRoles(Integer userId) {
-        User user = getUserById(userId);
+        User user = findById(userId);
         if (user == null) {
             return Collections.emptySet();
         }
 
         return getUserRoles(user);
     }
-
-    public User getUserById(Integer userId) {
-        Optional<User> userOptional = userRepository.findById(userId);
-        if (userOptional.isEmpty()) {
-            return null;
-        }
-
-        return userOptional.get();
-    }
 }

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/DataStatus.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/constant/DataStatus.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.auth.model;
+package cn.reghao.autodop.dmaster.auth.model.constant;
 
 /**
  * @author reghao

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/MenuType.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/constant/MenuType.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.auth.model;
+package cn.reghao.autodop.dmaster.auth.model.constant;
 
 /**
  * 菜单类型

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/RoleType.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/constant/RoleType.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.auth.model;
+package cn.reghao.autodop.dmaster.auth.model.constant;
 
 /**
  * 角色类型

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/UserGender.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/constant/UserGender.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.auth.model;
+package cn.reghao.autodop.dmaster.auth.model.constant;
 
 import java.util.HashMap;
 import java.util.Map;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/UserInfo.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/dto/UserInfo.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.auth.model;
+package cn.reghao.autodop.dmaster.auth.model.dto;
 
 import lombok.Data;
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/UserRole.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/dto/UserRole.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.auth.model;
+package cn.reghao.autodop.dmaster.auth.model.dto;
 
 import cn.reghao.autodop.dmaster.auth.model.po.Role;
 import lombok.Data;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/model/vo/UserVO.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.auth.model.vo;
 
 import cn.reghao.autodop.common.utils.DateTimeConverter;
-import cn.reghao.autodop.dmaster.auth.model.UserGender;
+import cn.reghao.autodop.dmaster.auth.model.constant.UserGender;
 import cn.reghao.autodop.dmaster.auth.model.po.User;
 import lombok.Data;
 

+ 0 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/service/MenuService.java

@@ -12,5 +12,4 @@ public interface MenuService {
     Result addMenu(Menu menu);
     Result updateMenu(MenuDTO menuDTO);
     Result deleteMenu(Integer menuId);
-    Result setStatus(Integer menuId, boolean enable);
 }

+ 24 - 30
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/service/MenuServiceImpl.java

@@ -2,13 +2,13 @@ package cn.reghao.autodop.dmaster.auth.service;
 
 import cn.reghao.autodop.common.result.Result;
 import cn.reghao.autodop.common.result.ResultStatus;
-import cn.reghao.autodop.dmaster.auth.db.query.MenuQuery;
-import cn.reghao.autodop.dmaster.auth.model.MenuType;
+import cn.reghao.autodop.dmaster.auth.db.crud.MenuCrud;
+import cn.reghao.autodop.dmaster.auth.db.crud.MenuQuery;
+import cn.reghao.autodop.dmaster.auth.db.crud.RoleCrud;
+import cn.reghao.autodop.dmaster.auth.model.constant.MenuType;
 import cn.reghao.autodop.dmaster.auth.model.dto.MenuDTO;
 import cn.reghao.autodop.dmaster.auth.model.po.Menu;
 import cn.reghao.autodop.dmaster.auth.model.po.Role;
-import cn.reghao.autodop.dmaster.auth.db.repository.MenuRepository;
-import cn.reghao.autodop.dmaster.auth.db.repository.RoleRepository;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
@@ -23,14 +23,14 @@ import java.util.stream.Collectors;
 @Slf4j
 @Service
 public class MenuServiceImpl implements MenuService {
-    private final MenuRepository menuRepository;
-    private final RoleRepository roleRepository;
     private final MenuQuery menuQuery;
+    private final MenuCrud menuCrud;
+    private final RoleCrud roleCrud;
 
-    public MenuServiceImpl(MenuRepository menuRepository, RoleRepository roleRepository, MenuQuery menuQuery) {
-        this.menuRepository = menuRepository;
-        this.roleRepository = roleRepository;
+    public MenuServiceImpl(MenuQuery menuQuery, MenuCrud menuCrud, RoleCrud roleCrud) {
         this.menuQuery = menuQuery;
+        this.menuCrud = menuCrud;
+        this.roleCrud = roleCrud;
     }
 
     @Override
@@ -43,11 +43,11 @@ public class MenuServiceImpl implements MenuService {
         // 调整 menu 组内元素的位置
         insertNewMenu(menu);
         menu.setIsEnabled(true);
-        Menu menuEntity = menuRepository.save(menu);
+        Menu menuEntity = menuCrud.save(menu);
 
         Set<Role> roles = menu.getRoles();
         roles.forEach(role -> role.getMenus().add(menuEntity));
-        roleRepository.saveAll(roles);
+        roleCrud.saveAll(new ArrayList<>(roles));
         return Result.result(ResultStatus.SUCCESS);
     }
 
@@ -82,14 +82,14 @@ public class MenuServiceImpl implements MenuService {
     private void insertNewMenu(Menu menu) {
         int pid = menu.getPid();
         if (pid != 0) {
-            Menu pMenu = menuRepository.getOne(pid);
+            Menu pMenu = menuQuery.findById(pid);
             if (pMenu.getType().equals(MenuType.page.name())) {
                 log.error("父级菜单的类型不能是 PAGE");
                 return;
             }
         }
 
-        List<Menu> menus = menuRepository.findByPid(pid);
+        List<Menu> menus = menuQuery.findByPid(pid);
         menus.sort(Comparator.comparingInt(Menu::getPos));
         // 组内没有 menu 或新增的 menu 在组内排在最后一位
         if (menus.isEmpty()) {
@@ -126,7 +126,7 @@ public class MenuServiceImpl implements MenuService {
             int newPos = tmpMenu.getPos()+1;
             tmpMenu.setPos(newPos);
         }
-        menuRepository.saveAll(menus);
+        menuCrud.saveAll(menus);
     }
 
     /**
@@ -142,13 +142,13 @@ public class MenuServiceImpl implements MenuService {
             int newPos = tmpMenu.getPos()-1;
             tmpMenu.setPos(newPos);
         }
-        menuRepository.saveAll(menus);
+        menuCrud.saveAll(menus);
     }
 
     @Override
     public synchronized Result updateMenu(MenuDTO menuDTO) {
         int menuId = menuDTO.getMenuId();
-        Menu menuEntity = menuRepository.findById(menuId).orElse(null);
+        Menu menuEntity = menuQuery.findById(menuId);
         if (menuEntity == null) {
             return Result.result(ResultStatus.FAIL, String.format("ID 为 %s 的 Menu 不存在", menuId));
         }
@@ -176,11 +176,11 @@ public class MenuServiceImpl implements MenuService {
         menuEntity.setUrl(menuDTO.getUrl());
         menuEntity.setIcon(menuDTO.getIcon());
         menuEntity.setUpdateTime(LocalDateTime.now());
-        menuRepository.save(menuEntity);
+        menuCrud.save(menuEntity);
 
         Set<Role> roles = menuDTO.getRoles();
         roles.forEach(role -> role.getMenus().add(menuEntity));
-        roleRepository.saveAll(roles);
+        roleCrud.saveAll(new ArrayList<>(roles));
         return Result.result(ResultStatus.SUCCESS);
     }
 
@@ -192,7 +192,7 @@ public class MenuServiceImpl implements MenuService {
      * @date 2021-07-21 上午11:07
      */
     private void reOrderMenus(int pid, int oldPos, int newPos) {
-        Map<Integer, Menu> map = menuRepository.findByPid(pid).stream()
+        Map<Integer, Menu> map = menuQuery.findByPid(pid).stream()
                 .collect(Collectors.toMap(Menu::getPos, menu -> menu));
         map.remove(oldPos);
         if (newPos < oldPos) {
@@ -206,12 +206,12 @@ public class MenuServiceImpl implements MenuService {
                 map.get(i).setPos(newPos-j);
             }
         }
-        menuRepository.saveAll(map.values());
+        menuCrud.saveAll(new ArrayList<>(map.values()));
     }
 
     @Override
     public synchronized Result deleteMenu(Integer menuId) {
-        Menu menu = menuRepository.findById(menuId).orElse(null);
+        Menu menu = menuQuery.findById(menuId);
         if (menu == null) {
             return Result.result(ResultStatus.FAIL, String.format("ID 为 %s 的 Menu 不存在", menuId));
         }
@@ -219,22 +219,16 @@ public class MenuServiceImpl implements MenuService {
         // 删除 Role 关联的 Menu
         for (Role role : menu.getRoles()) {
             role.getMenus().remove(menu);
-            roleRepository.save(role);
+            roleCrud.save(role);
         }
 
         // 重新调整组内排序
         int pid = menu.getPid();
-        List<Menu> menus = menuRepository.findByPid(pid);
+        List<Menu> menus = menuQuery.findByPid(pid);
         menus.sort(Comparator.comparingInt(Menu::getPos));
         int pos = menu.getPos();
         moveForward(menus, pos);
-        menuRepository.delete(menu);
-        return Result.result(ResultStatus.SUCCESS);
-    }
-
-    @Override
-    public Result setStatus(Integer menuId, boolean enable) {
-
+        menuCrud.delete(menu);
         return Result.result(ResultStatus.SUCCESS);
     }
 }

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/service/RoleServiceImpl.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.auth.service;
 
-import cn.reghao.autodop.dmaster.auth.db.query.RoleQuery;
+import cn.reghao.autodop.dmaster.auth.db.crud.RoleQuery;
 import cn.reghao.autodop.dmaster.auth.model.po.Menu;
 import cn.reghao.autodop.dmaster.auth.model.po.Role;
 import cn.reghao.autodop.dmaster.auth.model.po.User;

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/service/UserService.java

@@ -1,8 +1,8 @@
 package cn.reghao.autodop.dmaster.auth.service;
 
 import cn.reghao.autodop.dmaster.auth.model.po.User;
-import cn.reghao.autodop.dmaster.auth.model.UserInfo;
-import cn.reghao.autodop.dmaster.auth.model.UserRole;
+import cn.reghao.autodop.dmaster.auth.model.dto.UserInfo;
+import cn.reghao.autodop.dmaster.auth.model.dto.UserRole;
 
 /**
  * @author reghao

+ 22 - 32
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/service/UserServiceImpl.java

@@ -3,17 +3,16 @@ package cn.reghao.autodop.dmaster.auth.service;
 import cn.reghao.autodop.common.utils.security.Cryptor;
 import cn.reghao.autodop.common.utils.security.Md5Cryptor;
 import cn.reghao.autodop.common.utils.security.Salt;
-import cn.reghao.autodop.dmaster.auth.db.repository.RoleRepository;
-import cn.reghao.autodop.dmaster.auth.model.*;
+import cn.reghao.autodop.dmaster.auth.db.crud.UserCrud;
+import cn.reghao.autodop.dmaster.auth.db.crud.UserQuery;
+import cn.reghao.autodop.dmaster.auth.model.dto.UserInfo;
+import cn.reghao.autodop.dmaster.auth.model.dto.UserRole;
 import cn.reghao.autodop.dmaster.auth.model.po.UserAuthority;
-import cn.reghao.autodop.dmaster.auth.model.po.Role;
 import cn.reghao.autodop.dmaster.auth.model.po.User;
-import cn.reghao.autodop.dmaster.auth.db.repository.UserRepository;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import java.security.NoSuchAlgorithmException;
-import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -24,20 +23,20 @@ import java.util.stream.Collectors;
 @Slf4j
 @Service
 public class UserServiceImpl implements UserService {
-    private final UserRepository userRepository;
-    private final RoleRepository roleRepository;
+    private UserQuery userQuery;
+    private UserCrud userCrud;
     private final Cryptor cryptor;
 
-    public UserServiceImpl(UserRepository userRepository, RoleRepository roleRepository)
+    public UserServiceImpl(UserQuery userQuery, UserCrud userCrud)
             throws NoSuchAlgorithmException {
-        this.userRepository = userRepository;
-        this.roleRepository = roleRepository;
+        this.userQuery = userQuery;
+        this.userCrud = userCrud;
         this.cryptor = new Md5Cryptor();
     }
 
     @Override
     public User getUser(String username) {
-        User user = userRepository.findByUsername(username);
+        User user = userQuery.findByUsername(username);
         if (user != null) {
             setGrantedAuthorities(user);
         }
@@ -54,7 +53,7 @@ public class UserServiceImpl implements UserService {
     @Override
     public void createUser(User user) {
         String username = user.getUsername();
-        User userEntity = userRepository.findByUsername(username);
+        User userEntity = userQuery.findByUsername(username);
         if (userEntity != null) {
             log.error("用户 {} 已存在...", username);
             return;
@@ -62,7 +61,7 @@ public class UserServiceImpl implements UserService {
 
         setEncryptPassword(user);
         user.setAvatarUrl("/imgs/avatar/default.png");
-        userRepository.save(user);
+        userCrud.save(user);
     }
 
     private void setEncryptPassword(User user) {
@@ -76,11 +75,11 @@ public class UserServiceImpl implements UserService {
     // TODO 密码修改后是否应该清除用户 session?
     @Override
     public void modifyUserPassword(Integer userId, String newPassword) {
-        User userEntity = getUser(userId);
+        User userEntity = userQuery.findById(userId);
         if (userEntity != null) {
             userEntity.setPassword(newPassword);
             setEncryptPassword(userEntity);
-            userRepository.save(userEntity);
+            userCrud.save(userEntity);
         } else {
             log.error("用户不存在...");
         }
@@ -88,7 +87,7 @@ public class UserServiceImpl implements UserService {
 
     @Override
     public void modifyUserInfo(UserInfo userInfo) {
-        User userEntity = getUser(userInfo.getUserId());
+        User userEntity = userQuery.findById(userInfo.getUserId());
         if (userEntity == null) {
             log.error("用户不存在...");
             return;
@@ -97,12 +96,12 @@ public class UserServiceImpl implements UserService {
         userEntity.setNickname(userInfo.getNickname());
         userEntity.setMobilePhone(userInfo.getMobilePhone());
         userEntity.setEmail(userInfo.getEmail());
-        userRepository.save(userEntity);
+        userCrud.save(userEntity);
     }
 
     @Override
     public void setUserRoles(UserRole userRole) {
-        User userEntity = getUser(userRole.getUserId());
+        User userEntity = userQuery.findById(userRole.getUserId());
         if (userEntity == null) {
             log.error("用户不存在...");
             return;
@@ -112,36 +111,27 @@ public class UserServiceImpl implements UserService {
                 .map(role -> new UserAuthority(role.getTitle()))
                 .collect(Collectors.toSet());
         userEntity.setAuthorities(authorities);
-        userRepository.save(userEntity);
+        userCrud.save(userEntity);
     }
 
     @Override
     public void setUserStatus(Integer userId, Boolean enable) {
-        User userEntity = getUser(userId);
+        User userEntity = userQuery.findById(userId);
         if (userEntity == null) {
             log.error("用户不存在...");
             return;
         }
 
         userEntity.setIsEnabled(enable);
-        userRepository.save(userEntity);
+        userCrud.save(userEntity);
     }
 
     // TODO 删除用户后还需清除用户 session
     @Override
     public void deleteUser(Integer userId) {
-        User userEntity = getUser(userId);
+        User userEntity = userQuery.findById(userId);
         if (userEntity != null) {
-            userRepository.delete(userEntity);
+            userCrud.delete(userEntity);
         }
     }
-
-    private User getUser(Integer userId) {
-        Optional<User> userOptional = userRepository.findById(userId);
-        if (userOptional.isEmpty()) {
-            return null;
-        }
-
-        return userOptional.get();
-    }
 }

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/sys/controller/TestController.java

@@ -1,5 +1,6 @@
 package cn.reghao.autodop.dmaster.sys.controller;
 
+import cn.reghao.autodop.dmaster.auth.model.constant.MenuType;
 import cn.reghao.autodop.dmaster.auth.model.po.UserAuthority;
 import cn.reghao.autodop.dmaster.auth.model.po.Menu;
 import cn.reghao.autodop.dmaster.auth.model.po.Role;
@@ -8,7 +9,6 @@ import cn.reghao.autodop.dmaster.utils.WebBody;
 import cn.reghao.autodop.common.utils.security.Cryptor;
 import cn.reghao.autodop.common.utils.security.Md5Cryptor;
 import cn.reghao.autodop.common.utils.security.Salt;
-import cn.reghao.autodop.dmaster.auth.model.*;
 import cn.reghao.autodop.dmaster.auth.db.repository.MenuRepository;
 import cn.reghao.autodop.dmaster.auth.db.repository.RoleRepository;
 import cn.reghao.autodop.dmaster.auth.db.repository.UserRepository;

+ 6 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/sys/service/BakService.java

@@ -1,6 +1,7 @@
 package cn.reghao.autodop.dmaster.sys.service;
 
 import cn.reghao.autodop.common.utils.serializer.JsonConverter;
+import cn.reghao.autodop.dmaster.auth.db.crud.MenuQuery;
 import cn.reghao.autodop.dmaster.auth.model.po.Menu;
 import cn.reghao.autodop.dmaster.auth.model.po.Role;
 import cn.reghao.autodop.dmaster.auth.model.po.User;
@@ -16,22 +17,23 @@ import java.util.stream.Collectors;
  * @author reghao
  * @date 2021-06-04 10:01:41
  */
+@Deprecated
 @Service
 public class BakService {
-    private MenuRepository menuRepository;
+    private MenuQuery menuQuery;
     private RoleRepository roleRepository;
     private UserRepository userRepository;
 
-    public BakService(MenuRepository menuRepository,
+    public BakService(MenuQuery menuQuery,
                       RoleRepository roleRepository,
                       UserRepository userRepository) {
-        this.menuRepository = menuRepository;
+        this.menuQuery = menuQuery;
         this.roleRepository = roleRepository;
         this.userRepository = userRepository;
     }
 
     public String bakSysConfig() {
-        List<Menu> menus = menuRepository.findAll().stream()
+        List<Menu> menus = menuQuery.findAll().stream()
                 .peek(menu -> {
                     menu.setRoles(null);
                     menu.setId(null);

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/view/thymeleaf/attribute/SelectDictAttrProcessor.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.view.thymeleaf.attribute;
 
 import cn.reghao.autodop.dmaster.app.constant.EnvList;
-import cn.reghao.autodop.dmaster.auth.model.MenuType;
+import cn.reghao.autodop.dmaster.auth.model.constant.MenuType;
 import org.thymeleaf.IEngineConfiguration;
 import org.thymeleaf.context.ITemplateContext;
 import org.thymeleaf.engine.AttributeName;

+ 0 - 8
dmaster/src/main/resources/templates/auth/menu/add.html

@@ -59,14 +59,6 @@
             </div>
             <div class="layui-input-info">(之后)</div>
         </div>
-        <div class="layui-form-item layui-form-text">
-            <label class="layui-form-label">备注</label>
-            <div class="layui-input-block">
-                <label>
-                    <textarea placeholder="请输入内容" class="layui-textarea" name="remark">[[${menu?.remark}]]</textarea>
-                </label>
-            </div>
-        </div>
         <div class="layui-form-item">
             <label class="layui-form-label required">分配角色</label>
             <div class="layui-input-block">

+ 0 - 4
dmaster/src/main/resources/templates/auth/menu/detail.html

@@ -43,10 +43,6 @@
                     <th>最后修改</th>
                     <td th:text="${#dates.format(menu.updateDate, 'yyyy-MM-dd HH:mm:ss')}"></td>
                 </tr>-->
-                <tr>
-                    <th>备注</th>
-                    <td th:text="${menu.remark}" colspan="4"></td>
-                </tr>
             </tbody>
         </table>
         <!--<div th:replace="/common/fragment :: log(${menu})"></div>-->

+ 1 - 7
dmaster/src/main/resources/templates/home/userInfo.html

@@ -43,13 +43,7 @@
             <label class="layui-form-label">选择性别</label>
             <div class="layui-input-inline">
                 <input type="radio" name="sex" value="1" title="男" checked><div class="layui-unselect layui-form-radio layui-form-radioed"><i class="layui-anim layui-icon"></i><div>男</div></div>
-                <input type="radio" name="sex" value="2" title="女" th:checked="${user.sex} eq 2"><div class="layui-unselect layui-form-radio"><i class="layui-anim layui-icon"></i><div>女</div></div>
-            </div>
-        </div>
-        <div class="layui-form-item layui-form-text">
-            <label class="layui-form-label">备注</label>
-            <div class="layui-input-block">
-                <textarea placeholder="请输入内容" class="layui-textarea" name="remark">[[${user.remark}]]</textarea>
+                <input type="radio" name="sex" value="2" title="女" th:checked="${user.gender} eq 2"><div class="layui-unselect layui-form-radio"><i class="layui-anim layui-icon"></i><div>女</div></div>
             </div>
         </div>
         <div class="layui-form-item timo-finally">