package com.ycl.controller.user; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ycl.api.CommonResult; import com.ycl.controller.BaseController; import com.ycl.dto.UmsAdminLoginParam; import com.ycl.dto.UmsAdminParam; import com.ycl.dto.UpdateAdminPasswordParam; import com.ycl.entity.platform.user.UmsAdmin; import com.ycl.entity.platform.user.UmsRole; import com.ycl.service.redis.RedisService; import com.ycl.service.platform.user.UmsAdminService; import com.ycl.service.platform.user.UmsRoleService; import com.ycl.utils.redis.RedisKey; import com.ycl.vo.user.UserVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.security.Principal; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 后台用户管理 */ @Controller @Api(tags = "后台用户管理") @RequestMapping("/admin") public class UmsAdminController extends BaseController { @Value("${jwt.tokenHeader}") private String tokenHeader; @Value("${jwt.tokenHead}") private String tokenHead; @Autowired private UmsAdminService adminService; @Autowired private UmsRoleService roleService; @Resource private RedisService redisService; @ApiOperation(value = "用户注册") @RequestMapping(value = "/register", method = RequestMethod.POST) @ResponseBody public CommonResult register(@Validated @RequestBody UmsAdminParam umsAdminParam) { UmsAdmin umsAdmin = adminService.register(umsAdminParam); if (umsAdmin == null) { return CommonResult.failed(); } return CommonResult.success(umsAdmin); } @ApiOperation(value = "登录以后返回token") @RequestMapping(value = "/login", method = RequestMethod.POST) @ResponseBody public CommonResult login(@Validated @RequestBody UmsAdminLoginParam umsAdminLoginParam) { String token = adminService.login(umsAdminLoginParam.getUsername(), umsAdminLoginParam.getPassword()); if (token == null) { return CommonResult.validateFailed("用户名或密码错误"); } Map tokenMap = new HashMap<>(); tokenMap.put("token", token); tokenMap.put("tokenHead", tokenHead); return CommonResult.success(tokenMap); } @ApiOperation(value = "刷新token") @RequestMapping(value = "/refreshToken", method = RequestMethod.GET) @ResponseBody public CommonResult refreshToken(HttpServletRequest request) { String token = request.getHeader(tokenHeader); String refreshToken = adminService.refreshToken(token); if (refreshToken == null) { return CommonResult.failed("token已经过期!"); } Map tokenMap = new HashMap<>(); tokenMap.put("token", refreshToken); tokenMap.put("tokenHead", tokenHead); return CommonResult.success(tokenMap); } @ApiOperation(value = "获取当前登录用户信息") @RequestMapping(value = "/info", method = RequestMethod.GET) @ResponseBody public CommonResult getAdminInfo(Principal principal) { if (principal == null) { return CommonResult.unauthorized(null); } String username = principal.getName(); UmsAdmin umsAdmin = adminService.getAdminByUsername(username); Map data = new HashMap<>(); data.put("username", umsAdmin.getUsername()); data.put("menus", roleService.getMenuList(umsAdmin.getId())); data.put("icon", umsAdmin.getIcon()); List roleList = adminService.getRoleList(umsAdmin.getId()); if (CollUtil.isNotEmpty(roleList)) { List roles = roleList.stream().map(UmsRole::getName).collect(Collectors.toList()); data.put("roles", roles); } return CommonResult.success(data); } @ApiOperation(value = "登出功能") @RequestMapping(value = "/logout", method = RequestMethod.POST) @ResponseBody public CommonResult logout() { String operatorName = fetchOperator(request).getOperatorName(); redisService.del(RedisKey.PLATFORM_TOKEN_KEY.concat(operatorName)); return CommonResult.success(null); } @ApiOperation("分页") @RequestMapping(value = "/list", method = RequestMethod.GET) @ResponseBody public CommonResult> list(@Validated UserVO.PageUserVO pageUserVO) { IPage page = adminService.pageUser(pageUserVO); return CommonResult.success(page); } @ApiOperation("获取指定用户信息") @RequestMapping(value = "/{id}", method = RequestMethod.GET) @ResponseBody public CommonResult getItem(@PathVariable Long id) { UmsAdmin admin = adminService.getById(id); return CommonResult.success(admin); } @ApiOperation("修改指定用户信息") @RequestMapping(value = "/update/{id}", method = RequestMethod.POST) @ResponseBody public CommonResult update(@PathVariable Long id, @RequestBody UmsAdmin admin) { boolean success = adminService.update(id, admin); if (success) { return CommonResult.success(null); } return CommonResult.failed(); } @ApiOperation("修改指定用户密码") @RequestMapping(value = "/updatePassword", method = RequestMethod.POST) @ResponseBody public CommonResult updatePassword(@Validated @RequestBody UpdateAdminPasswordParam updatePasswordParam) { int status = adminService.updatePassword(updatePasswordParam); if (status > 0) { return CommonResult.success(status); } else if (status == -1) { return CommonResult.failed("提交参数不合法"); } else if (status == -2) { return CommonResult.failed("找不到该用户"); } else if (status == -3) { return CommonResult.failed("旧密码错误"); } else { return CommonResult.failed(); } } @ApiOperation("删除指定用户信息") @RequestMapping(value = "/delete/{id}", method = RequestMethod.POST) @ResponseBody public CommonResult delete(@PathVariable Long id) { boolean success = adminService.delete(id); if (success) { return CommonResult.success(null); } return CommonResult.failed(); } @ApiOperation("修改帐号状态") @RequestMapping(value = "/updateStatus/{id}", method = RequestMethod.POST) @ResponseBody public CommonResult updateStatus(@PathVariable Long id, @RequestParam(value = "status") Integer status) { UmsAdmin umsAdmin = new UmsAdmin(); umsAdmin.setStatus(status); boolean success = adminService.update(id, umsAdmin); if (success) { return CommonResult.success(null); } return CommonResult.failed(); } @ApiOperation("给用户分配角色") @RequestMapping(value = "/role/update", method = RequestMethod.POST) @ResponseBody public CommonResult updateRole(@RequestParam("adminId") Long adminId, @RequestParam("roleIds") List roleIds) { int count = adminService.updateRole(adminId, roleIds); if (count >= 0) { return CommonResult.success(count); } return CommonResult.failed(); } @ApiOperation("获取指定用户的角色") @RequestMapping(value = "/role/{adminId}", method = RequestMethod.GET) @ResponseBody public CommonResult> getRoleList(@PathVariable Long adminId) { List roleList = adminService.getRoleList(adminId); return CommonResult.success(roleList); } }