You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lvyuou/UserController.java

235 lines
9.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.gk.study.controller;
import com.gk.study.common.APIResponse;
import com.gk.study.common.ResponeCode;
import com.gk.study.entity.User;
import com.gk.study.permission.Access;
import com.gk.study.permission.AccessLevel;
import com.gk.study.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;
/**
* @author lengqin1024(微信)
* @email net936@163.com
*/
@RestController
@RequestMapping("/user")
public class UserController {
private final static Logger logger = LoggerFactory.getLogger(UserController.class);
String salt = "abcd1234";
@Autowired
UserService userService;
@Value("${File.uploadPath}")
private String uploadPath;
@RequestMapping(value = "/list", method = RequestMethod.GET)
public APIResponse list(String keyword){
List<User> list = userService.getUserList(keyword);
return new APIResponse(ResponeCode.SUCCESS, "查询成功", list);
}
@RequestMapping(value = "/detail", method = RequestMethod.GET)
public APIResponse detail(String userId){
User user = userService.getUserDetail(userId);
return new APIResponse(ResponeCode.SUCCESS, "查询成功", user);
}
// 后台用户登录
@RequestMapping(value = "/login", method = RequestMethod.POST)
public APIResponse login(User user){
user.setPassword(DigestUtils.md5DigestAsHex((user.getPassword() + salt).getBytes()));
User responseUser = userService.getAdminUser(user);
if(responseUser != null) {
return new APIResponse(ResponeCode.SUCCESS, "查询成功", responseUser);
}else {
return new APIResponse(ResponeCode.FAIL, "用户名或密码错误");
}
}
// 普通用户登录
@RequestMapping(value = "/userLogin", method = RequestMethod.POST)
public APIResponse userLogin(User user){
user.setPassword(DigestUtils.md5DigestAsHex((user.getPassword() + salt).getBytes()));
User responseUser = userService.getNormalUser(user);
if(responseUser != null) {
return new APIResponse(ResponeCode.SUCCESS, "查询成功", responseUser);
}else {
return new APIResponse(ResponeCode.FAIL, "用户名或密码错误");
}
}
// 普通用户注册
@RequestMapping(value = "/userRegister", method = RequestMethod.POST)
@Transactional
public APIResponse userRegister(User user) throws IOException {
if (!StringUtils.isEmpty(user.getUsername())
&& !StringUtils.isEmpty(user.getPassword())
&& !StringUtils.isEmpty(user.getRePassword())) {
// 查重
if(userService.getUserByUserName(user.getUsername()) != null) {
return new APIResponse(ResponeCode.FAIL, "用户名重复");
}
// 验证密码
if(!user.getPassword().equals(user.getRePassword())) {
return new APIResponse(ResponeCode.FAIL, "密码不一致");
}
String md5Str = DigestUtils.md5DigestAsHex((user.getPassword() + salt).getBytes());
// 设置密码
user.setPassword(md5Str);
md5Str = DigestUtils.md5DigestAsHex((user.getUsername() + salt).getBytes());
// 设置token
user.setToken(md5Str);
String avatar = saveAvatar(user);
if(!StringUtils.isEmpty(avatar)) {
user.avatar = avatar;
}
// 设置角色
user.setRole(String.valueOf(User.NormalUser));
// 设置状态
user.setStatus("0");
user.setCreateTime(String.valueOf(System.currentTimeMillis()));
userService.createUser(user);
return new APIResponse(ResponeCode.SUCCESS, "创建成功");
}
return new APIResponse(ResponeCode.FAIL, "创建失败");
}
@Access(level = AccessLevel.ADMIN)
@RequestMapping(value = "/create", method = RequestMethod.POST)
@Transactional
public APIResponse create(User user) throws IOException {
if (!StringUtils.isEmpty(user.getUsername()) || !StringUtils.isEmpty(user.getPassword())) {
// 查重
if(userService.getUserByUserName(user.getUsername()) != null) {
return new APIResponse(ResponeCode.FAIL, "用户名重复");
}
String md5Str = DigestUtils.md5DigestAsHex((user.getPassword() + salt).getBytes());
// 设置密码
user.setPassword(md5Str);
md5Str = DigestUtils.md5DigestAsHex((user.getUsername() + salt).getBytes());
// 设置token
user.setToken(md5Str);
user.setCreateTime(String.valueOf(System.currentTimeMillis()));
String avatar = saveAvatar(user);
if(!StringUtils.isEmpty(avatar)) {
user.avatar = avatar;
}
userService.createUser(user);
return new APIResponse(ResponeCode.SUCCESS, "创建成功");
}
return new APIResponse(ResponeCode.FAIL, "创建失败");
}
@Access(level = AccessLevel.ADMIN)
@RequestMapping(value = "/delete", method = RequestMethod.POST)
public APIResponse delete(String ids){
System.out.println("ids===" + ids);
// 批量删除
String[] arr = ids.split(",");
for (String id : arr) {
userService.deleteUser(id);
}
return new APIResponse(ResponeCode.SUCCESS, "删除成功");
}
@Access(level = AccessLevel.ADMIN)
@RequestMapping(value = "/update", method = RequestMethod.POST)
@Transactional
public APIResponse update(User user) throws IOException {
// update不能修改密码故置空
user.setPassword(null);
String avatar = saveAvatar(user);
if(!StringUtils.isEmpty(avatar)) {
user.avatar = avatar;
}
userService.updateUser(user);
System.out.println(user);
return new APIResponse(ResponeCode.SUCCESS, "更新成功");
}
@Access(level = AccessLevel.LOGIN)
@RequestMapping(value = "/updateUserInfo", method = RequestMethod.POST)
@Transactional
public APIResponse updateUserInfo(User user) throws IOException {
User tmpUser = userService.getUserDetail(user.getId());
if(tmpUser.getRole().equals(String.valueOf(User.NormalUser))){
// username和password不能改故置空
user.setUsername(null);
user.setPassword(null);
user.setRole(String.valueOf(User.NormalUser));
String avatar = saveAvatar(user);
if(!StringUtils.isEmpty(avatar)) {
user.avatar = avatar;
}
userService.updateUser(user);
return new APIResponse(ResponeCode.SUCCESS, "更新成功");
}else {
return new APIResponse(ResponeCode.FAIL, "非法操作");
}
}
@Access(level = AccessLevel.LOGIN)
@RequestMapping(value = "/updatePwd", method = RequestMethod.POST)
@Transactional
public APIResponse updatePwd(String userId, String password, String newPassword) throws IOException {
User user = userService.getUserDetail(userId);
if(user.getRole().equals(String.valueOf(User.NormalUser))) {
String md5Pwd = DigestUtils.md5DigestAsHex((password + salt).getBytes());
if(user.getPassword().equals(md5Pwd)){
user.setPassword(DigestUtils.md5DigestAsHex((newPassword + salt).getBytes()));
userService.updateUser(user);
}else {
return new APIResponse(ResponeCode.FAIL, "原密码错误");
}
return new APIResponse(ResponeCode.SUCCESS, "更新成功");
}else {
return new APIResponse(ResponeCode.FAIL, "非法操作");
}
}
public String saveAvatar(User user) throws IOException {
MultipartFile file = user.getAvatarFile();
String newFileName = null;
if(file !=null && !file.isEmpty()) {
// 存文件
String oldFileName = file.getOriginalFilename();
String randomStr = UUID.randomUUID().toString();
newFileName = randomStr + oldFileName.substring(oldFileName.lastIndexOf("."));
String filePath = uploadPath + File.separator + "avatar" + File.separator + newFileName;
File destFile = new File(filePath);
if(!destFile.getParentFile().exists()){
destFile.getParentFile().mkdirs();
}
file.transferTo(destFile);
}
if(!StringUtils.isEmpty(newFileName)) {
user.avatar = newFileName;
}
return newFileName;
}
}