package com.zhangmeng.online.exam.controller; import com.zhangmeng.online.exam.dao.PermissionDao; import com.zhangmeng.online.exam.dto.Result; 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.*; 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; import java.util.Map; /** * @author zm * @date 2025/3/7 9:46 * @version: 1.0 */ @RestController @RequestMapping("/permission") public class PermissionController { @Autowired private PermissionDao permissionDao; /** * // 基本分页(无排序) * Pageable pageable = PageRequest.of(0, 10); * * // 分页+排序(单字段) * Pageable pageable = PageRequest.of(0, 10, Sort.Direction.DESC, "createTime"); * * // 分页+多字段排序 * Sort sort = Sort.by(Sort.Order.asc("age"), Sort.Order.desc("name")); * Pageable pageable = PageRequest.of(0, 10, sort); * @param pageNum * @param pageSize * @return */ @RequestMapping("/list") public Result list(Integer pageNum, Integer pageSize,boolean isTop) { Pageable pageable = PageRequest.of(PageUtils.getPageNum(pageNum), pageSize, Sort.Direction.DESC, "addTime"); 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) { Map map = new HashMap<>(); map.put("id", permission.getId()); 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")); } }