package cc.mrbird.febs.system.controller;
|
|
import cc.mrbird.febs.common.annotation.ControllerEndpoint;
|
import cc.mrbird.febs.common.controller.BaseController;
|
import cc.mrbird.febs.common.entity.FebsResponse;
|
import cc.mrbird.febs.common.entity.QueryRequest;
|
import cc.mrbird.febs.common.exception.FebsException;
|
import cc.mrbird.febs.common.utils.Md5Util;
|
import cc.mrbird.febs.system.entity.User;
|
import cc.mrbird.febs.system.service.IUserService;
|
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
import com.wuwenze.poi.ExcelKit;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.servlet.http.HttpServletResponse;
|
import javax.validation.Valid;
|
import javax.validation.constraints.NotBlank;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @author MrBird
|
*/
|
@Slf4j
|
@Validated
|
@RestController
|
@RequiredArgsConstructor
|
@RequestMapping("user")
|
public class UserController extends BaseController {
|
|
private final IUserService userService;
|
|
@GetMapping("{username}")
|
public User getUser(@NotBlank(message = "{required}") @PathVariable String username) {
|
return this.userService.findUserDetailList(username);
|
}
|
|
@GetMapping("check/{username}")
|
public boolean checkUserName(@NotBlank(message = "{required}") @PathVariable String username, String userId) {
|
return this.userService.findByName(username) == null || StringUtils.isNotBlank(userId);
|
}
|
|
@GetMapping("list")
|
@RequiresPermissions("user:view")
|
public FebsResponse userList(User user, QueryRequest request) {
|
Map<String, Object> dataTable = getDataTable(this.userService.findUserDetailList(user, request));
|
return new FebsResponse().success().data(dataTable);
|
}
|
|
@PostMapping
|
@RequiresPermissions("user:add")
|
@ControllerEndpoint(operation = "新增用户", exceptionMessage = "新增用户失败")
|
public FebsResponse addUser(@Valid User user) {
|
this.userService.createUser(user);
|
return new FebsResponse().success();
|
}
|
|
@GetMapping("delete/{userIds}")
|
@RequiresPermissions("user:delete")
|
@ControllerEndpoint(operation = "删除用户", exceptionMessage = "删除用户失败")
|
public FebsResponse deleteUsers(@NotBlank(message = "{required}") @PathVariable String userIds) {
|
String[] ids = userIds.split(StringPool.COMMA);
|
this.userService.deleteUsers(ids);
|
return new FebsResponse().success();
|
}
|
|
@PostMapping("update")
|
@RequiresPermissions("user:update")
|
@ControllerEndpoint(operation = "修改用户", exceptionMessage = "修改用户失败")
|
public FebsResponse updateUser(@Valid User user) {
|
if (user.getUserId() == null) {
|
throw new FebsException("用户ID为空");
|
}
|
this.userService.updateUser(user);
|
return new FebsResponse().success();
|
}
|
|
@PostMapping("password/reset/{usernames}")
|
@RequiresPermissions("user:password:reset")
|
@ControllerEndpoint(exceptionMessage = "重置用户密码失败")
|
public FebsResponse resetPassword(@NotBlank(message = "{required}") @PathVariable String usernames) {
|
String[] usernameArr = usernames.split(StringPool.COMMA);
|
this.userService.resetPassword(usernameArr);
|
return new FebsResponse().success();
|
}
|
|
@PostMapping("password/update")
|
@ControllerEndpoint(exceptionMessage = "修改密码失败")
|
public FebsResponse updatePassword(
|
@NotBlank(message = "{required}") String oldPassword,
|
@NotBlank(message = "{required}") String newPassword) {
|
User user = getCurrentUser();
|
if (!StringUtils.equals(user.getPassword(), Md5Util.encrypt(user.getUsername(), oldPassword))) {
|
throw new FebsException("原密码不正确");
|
}
|
userService.updatePassword(user.getUsername(), newPassword);
|
return new FebsResponse().success();
|
}
|
|
@GetMapping("avatar/{image}")
|
@ControllerEndpoint(exceptionMessage = "修改头像失败")
|
public FebsResponse updateAvatar(@NotBlank(message = "{required}") @PathVariable String image) {
|
User user = getCurrentUser();
|
this.userService.updateAvatar(user.getUsername(), image);
|
return new FebsResponse().success();
|
}
|
|
@PostMapping("theme/update")
|
@ControllerEndpoint(exceptionMessage = "修改系统配置失败")
|
public FebsResponse updateTheme(String theme, String isTab) {
|
User user = getCurrentUser();
|
this.userService.updateTheme(user.getUsername(), theme, isTab);
|
return new FebsResponse().success();
|
}
|
|
@PostMapping("profile/update")
|
@ControllerEndpoint(exceptionMessage = "修改个人信息失败")
|
public FebsResponse updateProfile(User user) throws FebsException {
|
User currentUser = getCurrentUser();
|
user.setUserId(currentUser.getUserId());
|
this.userService.updateProfile(user);
|
return new FebsResponse().success();
|
}
|
|
@GetMapping("excel")
|
@RequiresPermissions("user:export")
|
@ControllerEndpoint(exceptionMessage = "导出Excel失败")
|
public void export(QueryRequest queryRequest, User user, HttpServletResponse response) {
|
List<User> users = this.userService.findUserDetailList(user, queryRequest).getRecords();
|
ExcelKit.$Export(User.class, response).downXlsx(users, false);
|
}
|
}
|