package com.wms_admin.sys.controller; import com.wms_admin.clients.UserLoginUtils; import com.wms_admin.sys.entity.User; import com.wms_admin.sys.service.UserService; import com.wms_admin.utils.JwtUtils; import com.wms_admin.utils.RedisUtil; import com.wms_admin.utils.Result; import com.wms_admin.utils.SpringUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; /** *

* 前端控制器 *

* * @author 江苏鵷雏网络科技有限公司 * @since 2023-05-24 */ @Api(tags = "账号密码登录") @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService service; @ApiOperation(value = "添加用户接口") @PostMapping("/add") public Result UserAdd(User user) { Boolean insertIsSuccess = service.AddUser(user); if (insertIsSuccess){ return Result.success("添加用户【"+ user.getUsername() +"】成功!"); } return Result.fail("添加用户【"+ user.getUsername() +"】失败!可能账号重复"); } @ApiOperation(value = "账号登录") @ApiImplicitParams(value = { @ApiImplicitParam(name = "password", value = "密码", dataTypeClass = String.class, required = true), @ApiImplicitParam(name = "username", value = "账号", dataTypeClass = String.class, required = true) }) @PostMapping("/login/account") public Result> Login(String username, String password) { return service.login(username, password); } @ApiOperation(value = "根据token获取用户详细信息") @GetMapping("/info") public Result> getUserInfo(@RequestHeader("X-Token") String token){ //根据token获取用户信息 Map data = service.getUserInfo(token); if (data != null){ return Result.success(data); } return Result.fail(202,"用户登录信息无效,请重新登录"); } @ApiOperation(value = "获取所有用户信息") @GetMapping("/list") public Result> getUserList(){ //根据token获取用户信息 List data = service.getUserList(); if (!ObjectUtils.isEmpty(data)){ Map map = new HashMap<>(); map.put("user", data); return Result.success(map); } return Result.fail("获取失败!可能为空"); } @ApiOperation(value = "修改头像") @PostMapping(value = "/update") public Result Photo(@RequestHeader("X-Token") String token, @RequestPart("file") MultipartFile file) throws IOException { Result result = service.storeFile(token, file.getBytes(), file.getOriginalFilename()); return Result.success(result); } @ApiOperation(value = "修改密码") @ApiImplicitParams(value = { @ApiImplicitParam(name = "oldPassword", value = "旧密码", dataTypeClass = String.class, required = true), @ApiImplicitParam(name = "newPassword", value = "新密码", dataTypeClass = String.class, required = true) }) @PutMapping("/update/password") public Result UpdatePassword(@RequestHeader("X-Token") String token, String oldPassword, String newPassword) { Integer user = service.UpdatePassword(token, oldPassword, newPassword); if (user == 1) { return Result.success("修改成功,请重新登录"); } else if (user == 0) { return Result.fail("原密码错误,无法修改"); } else { return Result.fail("新密码不能与原密码重复,请重新输入!"); } } @ApiOperation(value = "根据ID删除用户") @ApiImplicitParams(value = { @ApiImplicitParam(name = "id", value = "需要删除的用户ID", dataTypeClass = String.class, required = true), @ApiImplicitParam(name = "username", value = "用户名称,用于成功提醒", dataTypeClass = String.class, required = true) }) @DeleteMapping("/delete") public Result DeleteUser(String id, String username) { if (id.equals("1")){ return Result.fail("删除【" + username + "】失败,【admin】账号不可删除!"); } Integer userIsDelete = service.DeleteUserId(id); if (userIsDelete == 1){ return Result.success("删除【" + username + "】成功"); } return Result.fail("删除【" + username + "】失败"); } @ApiOperation(value = "根据token修改用户名与账号") @ApiImplicitParams(value = { @ApiImplicitParam(name = "username", value = "用户名称", dataTypeClass = String.class, required = true), @ApiImplicitParam(name = "account", value = "账号", dataTypeClass = String.class, required = true) }) @PutMapping("/update/user") public Result UpdateUser(@RequestHeader("X-Token") String token, String username, String account) { Integer userIsDelete = service.UpdateUser(token, username, account); if (userIsDelete == 1){ return Result.success("删除【" + username + "】成功"); } return Result.fail("删除【" + username + "】失败"); } //注销方法 @ApiOperation(value = "退出登录") @PostMapping(value = "/logout") public Result logout(@RequestHeader("X-Token") String token){ service.logout(token); return Result.success(); } //注销方法 @ApiOperation(value = "刷新token:如果前端检测到10010即可调用该接口") @PostMapping(value = "/login/refresh") public Result> LoginRefresh(String refresh){ String account = JwtUtils.getClaimFiled(refresh, "account"); if (!ObjectUtils.isEmpty(account)){ Map map = (Map)RedisUtil.get(account); if (!ObjectUtils.isEmpty(map)){ String token = map.get("token").toString(); User user = (User)RedisUtil.getAndDelete(token); UserLoginUtils bean = SpringUtil.getBean(UserLoginUtils.class); return bean.LoginExamine(user); } } return Result.fail("刷新错误"); } }