package space.anyi.BI.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import space.anyi.BI.entity.LoginUserDetails; import space.anyi.BI.entity.ResponseResult; import space.anyi.BI.entity.User; import space.anyi.BI.entity.dto.UserDTO; import space.anyi.BI.entity.vo.PageVO; import space.anyi.BI.entity.vo.UserVO; import space.anyi.BI.service.UserService; import space.anyi.BI.util.BeanCopyUtil; import space.anyi.BI.util.SecurityUtils; import javax.annotation.Resource; import java.util.List; import java.util.Objects; /** * @ProjectName: BI * @FileName: UserController * @Author: 杨逸 * @Data:2024/11/28 19:52 * @Description: */ @RequestMapping("/user") @RestController public class UserController { private final static Logger log = LoggerFactory.getLogger(UserController.class); @Resource private UserService userService; @Resource private PasswordEncoder passwordEncoder; @PostMapping("/login") public ResponseResult login(@RequestBody User user){ return userService.login(user); } @PostMapping("/register") public ResponseResult resister(@RequestBody User user){ return userService.register(user); } @PreAuthorize("@ps.hasRole('用户')") @GetMapping("/getUserInfo") public ResponseResult getUserInfo(){ LoginUserDetails loginUser = SecurityUtils.getLoginUser(); if (Objects.isNull(loginUser)){ return ResponseResult.errorResult(ResponseResult.AppHttpCodeEnum.NEED_LOGIN); } User user = loginUser.getUser(); user.setUserPassword(""); System.out.println("user = " + user); return ResponseResult.okResult(user); } @PreAuthorize("@ps.hasRole('管理员')") @GetMapping("/page") @ResponseBody public ResponseResult page(Integer currentPage,Integer pageSize,String userName,String userAccount,String userRole){ log.info("currentPage:{},pageSize:{},userName:{},userAccount:{}",currentPage,pageSize,userName,userAccount); PageVO page = userService.pageByUsernameAndUseraccount(currentPage, pageSize, userName, userAccount,userRole); return ResponseResult.okResult(page); } @PreAuthorize("@ps.hasRole('用户')") @GetMapping("/{id}") @ResponseBody public ResponseResult getUserById(@PathVariable Long id){ User user = userService.getById(id); UserVO userVO = BeanCopyUtil.copyBean(user, UserVO.class); userVO.setId(user.getId().toString()); return ResponseResult.okResult(userVO); } @PreAuthorize("@ps.hasRole('管理员')") @DeleteMapping("/{ids}") @ResponseBody public ResponseResult deleteUserById(@PathVariable List ids){ userService.removeByIds(ids); return ResponseResult.okResult(); } @PreAuthorize("@ps.hasRole('管理员')") @PutMapping @ResponseBody public ResponseResult updateUser(@RequestBody UserDTO userDTO){ User user = BeanCopyUtil.copyBean(userDTO, User.class); if (StringUtils.hasText(user.getUserPassword())) { user.setUserPassword(passwordEncoder.encode(user.getUserPassword())); }else{ user.setUserPassword(passwordEncoder.encode("password")); } userService.updateById(user); return ResponseResult.okResult(); } @PreAuthorize("@ps.hasRole('管理员')") @PostMapping @ResponseBody public ResponseResult addUser(@RequestBody UserDTO userDTO){ userService.addUser(userDTO); return ResponseResult.okResult(); } }