From 9fe20c9fcc09bca1315419877e00ee861522c196 Mon Sep 17 00:00:00 2001 From: qmstyle Date: Wed, 9 Apr 2025 18:19:39 +0800 Subject: [PATCH] =?UTF-8?q?2025=E5=B9=B44=E6=9C=889=E6=97=A518:19:32?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exam/controller/PermissionController.java | 55 +++++++++++++++++-- .../exam/controller/UserController.java | 28 ++++++++++ .../online/exam/dao/PermissionDao.java | 3 +- 3 files changed, 79 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/zhangmeng/online/exam/controller/PermissionController.java b/src/main/java/com/zhangmeng/online/exam/controller/PermissionController.java index af7a9c3..c9aaec3 100644 --- a/src/main/java/com/zhangmeng/online/exam/controller/PermissionController.java +++ b/src/main/java/com/zhangmeng/online/exam/controller/PermissionController.java @@ -6,13 +6,14 @@ import com.zhangmeng.online.exam.entity.Permission; import com.zhangmeng.online.exam.entity.Role; import com.zhangmeng.online.exam.utils.PageUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; +import org.springframework.data.domain.*; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -45,10 +46,18 @@ public class PermissionController { * @return */ @RequestMapping("/list") - public Result list(Integer pageNum, Integer pageSize) { + public Result list(Integer pageNum, Integer pageSize,boolean isTop) { Pageable pageable = PageRequest.of(PageUtils.getPageNum(pageNum), pageSize, Sort.Direction.DESC, "addTime"); - Page all = permissionDao.findAll(pageable); + + Page all; + if (isTop){ + Specification spec = isDescriptionNull(); // 仅查询description为null的情况 + all = permissionDao.findAll(spec, pageable); + }else { + all = permissionDao.findAll(pageable); + } + List list = all.getContent(); List> resultList = new ArrayList<>(); for (Permission permission : list) { @@ -57,8 +66,42 @@ public class PermissionController { map.put("name", permission.getName()); map.put("desc", permission.getDescription()); map.put("url", permission.getUrl()); + map.put("sort", permission.getSort()); + map.put("parentId", permission.getParent()==null?0L:permission.getParent().getId()); + resultList.add(map); } return Result.success(pageNum, pageSize, all.getTotalElements(), resultList); } + + @RequestMapping("/save") + public Result save(@RequestParam @RequestBody Map params, HttpServletRequest request) { + Permission permission; + Map parameterMap = request.getParameterMap(); + + String id = params.get("id").toString(); + String name = params.get("name").toString(); + String description = params.get("description").toString(); + String url = params.get("url").toString(); + String parent_id = params.get("parent_id").toString(); + + if (id != null && !id.isEmpty()){ + permission = permissionDao.getById(Long.parseLong(id)); + }else { + permission = new Permission(); + } + permission.setName(name); + permission.setDescription(description); + permission.setUrl(url); + if (parent_id != null && !parent_id.isEmpty()){ + permission.setParent(permissionDao.getById(Long.parseLong(parent_id))); + } + permissionDao.save(permission); + + return Result.success(null); + } + + public Specification isDescriptionNull() { + return (root, query, cb) -> cb.isNull(root.get("parent")); + } } diff --git a/src/main/java/com/zhangmeng/online/exam/controller/UserController.java b/src/main/java/com/zhangmeng/online/exam/controller/UserController.java index 8f8abf6..868bef4 100644 --- a/src/main/java/com/zhangmeng/online/exam/controller/UserController.java +++ b/src/main/java/com/zhangmeng/online/exam/controller/UserController.java @@ -44,15 +44,35 @@ public class UserController { @RequestMapping("/save") public Result save(@RequestParam @RequestBody Map params) { + String id = params.get("id").toString(); String username = params.get("username").toString(); String password = params.get("password").toString(); String email = params.get("email").toString(); String phone = params.get("phone").toString(); + String status = params.get("status").toString(); + String role_ids = params.get("role_ids").toString(); + String[] role_id_arr = role_ids.split(","); + Set roles = new HashSet<>(); + for (String role_id : role_id_arr) { + Role role = roleDao.findById(Long.parseLong(role_id)).get(); + roles.add(role); + } User user = new User(); + + if (id!= null && !id.isEmpty()){ + user = userDao.findById(Long.parseLong(id)).get(); + } + user.setUsername(username); user.setPassword(password); user.setEmail(email); user.setPhone(phone); + user.setRoles(roles); + switch (status) { + case "1" -> user.setStatus(User.Status.VALID); + case "0" -> user.setStatus(User.Status.DISABLED); + case "2" -> user.setStatus(User.Status.LOCKED); + } userDao.save(user); return Result.success(user.getId()); } @@ -91,7 +111,15 @@ public class UserController { map.put("email", user.getEmail()); map.put("phone", user.getPhone()); map.put("password", user.getPassword()); + map.put("status", user.getStatus()); + Set roles = user.getRoles(); + StringBuilder roleIds = new StringBuilder(); + for (Role role : roles) { + roleIds.append(role.getId()).append(","); + } + + map.put("role_ids", roleIds); return Result.success(map); } diff --git a/src/main/java/com/zhangmeng/online/exam/dao/PermissionDao.java b/src/main/java/com/zhangmeng/online/exam/dao/PermissionDao.java index a5b2643..88f7193 100644 --- a/src/main/java/com/zhangmeng/online/exam/dao/PermissionDao.java +++ b/src/main/java/com/zhangmeng/online/exam/dao/PermissionDao.java @@ -2,11 +2,12 @@ package com.zhangmeng.online.exam.dao; import com.zhangmeng.online.exam.entity.Permission; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; /** * @author zm * @date 2025/2/28 16:04 * @version: 1.0 */ -public interface PermissionDao extends JpaRepository { +public interface PermissionDao extends JpaRepository, JpaSpecificationExecutor { }