2025-03-05 09:20:22 +00:00
|
|
|
package com.zhangmeng.online.exam.controller;
|
|
|
|
|
|
|
|
|
|
import com.zhangmeng.online.exam.dao.PermissionDao;
|
|
|
|
|
import com.zhangmeng.online.exam.dao.RoleDao;
|
|
|
|
|
import com.zhangmeng.online.exam.dao.UserDao;
|
2025-03-06 09:45:50 +00:00
|
|
|
import com.zhangmeng.online.exam.dto.Menu;
|
2025-03-05 09:20:22 +00:00
|
|
|
import com.zhangmeng.online.exam.dto.Result;
|
|
|
|
|
import com.zhangmeng.online.exam.entity.*;
|
|
|
|
|
import com.zhangmeng.online.exam.entity.User;
|
2025-03-14 09:09:00 +00:00
|
|
|
import com.zhangmeng.online.exam.utils.PageUtils;
|
2025-03-05 09:20:22 +00:00
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
2025-03-14 09:09:00 +00:00
|
|
|
import org.springframework.data.domain.Page;
|
|
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
|
|
|
import org.springframework.data.domain.Pageable;
|
|
|
|
|
import org.springframework.data.domain.Sort;
|
2025-03-15 09:10:13 +00:00
|
|
|
import org.springframework.web.bind.annotation.*;
|
2025-03-05 09:20:22 +00:00
|
|
|
|
|
|
|
|
import javax.persistence.EntityManager;
|
|
|
|
|
import javax.persistence.TypedQuery;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @author zm
|
|
|
|
|
* @date 2025/3/5 15:45
|
|
|
|
|
* @version: 1.0
|
|
|
|
|
*/
|
|
|
|
|
@RestController
|
|
|
|
|
@RequestMapping("/user")
|
|
|
|
|
public class UserController {
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private UserDao userDao;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private RoleDao roleDao;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private PermissionDao permissionDao;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private EntityManager entityManager;
|
|
|
|
|
|
2025-03-15 09:10:13 +00:00
|
|
|
@RequestMapping("/save")
|
|
|
|
|
public Result save(@RequestParam @RequestBody Map<String, Object> params) {
|
|
|
|
|
String username = params.get("username").toString();
|
|
|
|
|
String password = params.get("password").toString();
|
|
|
|
|
String email = params.get("email").toString();
|
|
|
|
|
String phone = params.get("phone").toString();
|
|
|
|
|
User user = new User();
|
|
|
|
|
user.setUsername(username);
|
|
|
|
|
user.setPassword(password);
|
|
|
|
|
user.setEmail(email);
|
|
|
|
|
user.setPhone(phone);
|
|
|
|
|
userDao.save(user);
|
|
|
|
|
return Result.success(user.getId());
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-06 09:45:50 +00:00
|
|
|
@GetMapping("/list")
|
2025-03-14 08:54:45 +00:00
|
|
|
public Result userList(Integer pageNum,Integer pageSize) {
|
2025-03-14 09:09:00 +00:00
|
|
|
|
|
|
|
|
Pageable pageable = PageRequest.of(PageUtils.getPageNum(pageNum), pageSize, Sort.Direction.DESC, "addTime");
|
|
|
|
|
Page<User> all = userDao.findAll(pageable);
|
|
|
|
|
List<User> list = all.getContent();
|
2025-03-06 09:45:50 +00:00
|
|
|
List<Map<String, Object>> resultList = new ArrayList<>();
|
|
|
|
|
for (User user : list) {
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
|
map.put("id", user.getId());
|
|
|
|
|
map.put("username", user.getUsername());
|
|
|
|
|
map.put("email", user.getEmail());
|
|
|
|
|
map.put("phone", user.getPhone());
|
|
|
|
|
resultList.add(map);
|
|
|
|
|
}
|
2025-03-14 09:09:00 +00:00
|
|
|
return Result.success(pageNum, pageSize, all.getTotalElements(), resultList);
|
2025-03-06 09:45:50 +00:00
|
|
|
}
|
|
|
|
|
|
2025-03-15 09:10:13 +00:00
|
|
|
@RequestMapping("/delete")
|
|
|
|
|
public Result delete(@RequestParam Long id) {
|
|
|
|
|
userDao.deleteById(id);
|
|
|
|
|
return Result.success(null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@GetMapping("/getUser")
|
|
|
|
|
public Result getUser( Long id) {
|
|
|
|
|
User user = userDao.findById(id).get();
|
|
|
|
|
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
|
map.put("id", user.getId());
|
|
|
|
|
map.put("username", user.getUsername());
|
|
|
|
|
map.put("email", user.getEmail());
|
|
|
|
|
map.put("phone", user.getPhone());
|
|
|
|
|
map.put("password", user.getPassword());
|
|
|
|
|
|
|
|
|
|
return Result.success(map);
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-18 08:02:59 +00:00
|
|
|
@RequestMapping("/edit")
|
|
|
|
|
public Result edit(@RequestParam @RequestBody Map<String, Object> params) {
|
2025-03-15 09:10:13 +00:00
|
|
|
Long id = Long.parseLong(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();
|
|
|
|
|
User user = new User();
|
|
|
|
|
user.setId(id);
|
|
|
|
|
user.setUsername(username);
|
|
|
|
|
user.setPassword(password);
|
|
|
|
|
user.setEmail(email);
|
|
|
|
|
user.setPhone(phone);
|
|
|
|
|
userDao.save(user);
|
|
|
|
|
return Result.success(null);
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-18 08:02:59 +00:00
|
|
|
@RequestMapping("/update")
|
|
|
|
|
public Result update(@RequestBody @RequestParam Map<String, Object> params) {
|
|
|
|
|
|
|
|
|
|
String id = params.get("id").toString();
|
|
|
|
|
String fieldName = params.get("fieldName").toString();
|
|
|
|
|
String oldValue = params.get("oldValue").toString();
|
|
|
|
|
String newValue = params.get("newValue").toString();
|
|
|
|
|
|
|
|
|
|
User user = userDao.findById(Long.parseLong(id)).get();
|
|
|
|
|
|
|
|
|
|
switch (fieldName) {
|
|
|
|
|
case "username" -> user.setUsername(newValue);
|
|
|
|
|
case "password" -> user.setPassword(newValue);
|
|
|
|
|
case "email" -> user.setEmail(newValue);
|
|
|
|
|
case "phone" -> user.setPhone(newValue);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
userDao.save(user);
|
|
|
|
|
return Result.success(null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2025-03-05 09:20:22 +00:00
|
|
|
|
|
|
|
|
@GetMapping("/menu")
|
|
|
|
|
public Result menuList() {
|
2025-03-06 09:45:50 +00:00
|
|
|
List<Menu> list = new ArrayList<>();
|
2025-03-05 09:20:22 +00:00
|
|
|
|
|
|
|
|
TypedQuery<User> query = entityManager.createQuery("select obj from User obj where obj.id = 1", User.class);
|
|
|
|
|
User root = query.getResultList().get(0);
|
2025-03-05 09:40:17 +00:00
|
|
|
Set<Role> roles = root.getRoles();
|
|
|
|
|
for (Role role : roles) {
|
|
|
|
|
Set<Permission> permissions = role.getPermissions();
|
|
|
|
|
for (Permission permission : permissions) {
|
|
|
|
|
if (permission.getParent() == null) {//一级菜单
|
2025-03-06 09:45:50 +00:00
|
|
|
Menu menu = getMenu(permission);
|
|
|
|
|
list.add(menu);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!list.isEmpty()) {
|
|
|
|
|
for (Permission permission : permissions) {
|
|
|
|
|
for (Menu map : list) {
|
|
|
|
|
if (permission.getParent() != null && map.getId().equals(permission.getParent().getId())) {
|
|
|
|
|
List<Menu> children = map.getChildren();
|
|
|
|
|
Menu childMap = getMenu(permission);
|
2025-03-05 09:40:17 +00:00
|
|
|
children.add(childMap);
|
|
|
|
|
}
|
2025-03-06 09:45:50 +00:00
|
|
|
|
2025-03-05 09:40:17 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-03-05 09:20:22 +00:00
|
|
|
return Result.success(list);
|
|
|
|
|
}
|
2025-03-06 09:45:50 +00:00
|
|
|
|
|
|
|
|
private static Menu getMenu(Permission permission) {
|
|
|
|
|
Menu childMap = new Menu();
|
|
|
|
|
childMap.setId(permission.getId());
|
|
|
|
|
childMap.setName(permission.getName());
|
|
|
|
|
childMap.setIcon(permission.getIcon());
|
|
|
|
|
childMap.setUrl(permission.getUrl());
|
|
|
|
|
childMap.setDescription(permission.getDescription());
|
|
|
|
|
childMap.setSort(permission.getSort());
|
|
|
|
|
childMap.setChildren(new ArrayList<>());
|
|
|
|
|
return childMap;
|
|
|
|
|
}
|
2025-03-05 09:20:22 +00:00
|
|
|
}
|