| | |
| | | package com.zy.asrs.wms.system.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.zy.asrs.common.domain.CodeRes; |
| | | import com.zy.asrs.common.domain.enums.LoginSystemType; |
| | | import com.zy.asrs.common.utils.BarcodeUtils; |
| | | import com.zy.asrs.common.utils.QrCode; |
| | | import com.zy.asrs.framework.annotations.ManagerAuth; |
| | | import com.zy.asrs.framework.common.BaseRes; |
| | | import com.zy.asrs.framework.common.Cools; |
| | | import com.zy.asrs.framework.common.R; |
| | | import com.zy.asrs.framework.exception.CoolException; |
| | | import com.zy.asrs.wms.common.annotation.OperationLog; |
| | | import com.zy.asrs.wms.common.config.ConfigProperties; |
| | | import com.zy.asrs.wms.common.security.JwtSubject; |
| | | import com.zy.asrs.wms.system.controller.param.LoginParam; |
| | | import com.zy.asrs.wms.system.controller.param.UpdatePasswordParam; |
| | | import com.zy.asrs.wms.system.controller.result.LoginResult; |
| | | import com.zy.asrs.wms.system.entity.*; |
| | | import com.zy.asrs.wms.system.license.timer.LicenseTimer; |
| | | import com.zy.asrs.wms.system.service.*; |
| | | import com.zy.asrs.wms.utils.JwtUtil; |
| | | import com.zy.asrs.wms.utils.Utils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.imageio.ImageIO; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.awt.image.BufferedImage; |
| | | import java.io.IOException; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 认证控制器 |
| | | * |
| | | * Created by vincent on 1/30/2024 |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/api") |
| | | public class AuthController extends BaseController { |
| | | |
| | | @Resource |
| | | private ConfigProperties configProperties; |
| | | @Resource |
| | | private UserService userService; |
| | | @Resource |
| | | private UserLoginService userLoginService; |
| | | @Resource |
| | | private RoleMenuService roleMenuService; |
| | | @Resource |
| | | private HostService hostService; |
| | | @Resource |
| | | private UserRoleService userRoleService; |
| | | @Resource |
| | | private MenuService menuService; |
| | | @Autowired |
| | | private LicenseTimer licenseTimer; |
| | | |
| | | @PostMapping("/login") |
| | | public R login(@RequestBody LoginParam param, HttpServletRequest request) { |
| | | if (!licenseTimer.getSystemSupport()) {//许可证已失效 |
| | | return R.parse(CodeRes.SYSTEM_20001); |
| | | } |
| | | String username = param.getUsername(); |
| | | Long hostId = param.getHostId(); |
| | | User user = userService.getByUsername(username, hostId); |
| | | if (user == null) { |
| | | return R.error("账号不存在"); |
| | | } |
| | | if (!user.getStatus().equals(1)) { |
| | | return R.error("账号被冻结"); |
| | | } |
| | | if (!userService.comparePassword(user.getPassword(), param.getPassword())) { |
| | | return R.error("密码错误"); |
| | | } |
| | | String accessToken = JwtUtil.buildToken(new JwtSubject(username, user.getHostId()), |
| | | configProperties.getTokenExpireTime(), configProperties.getTokenKey()); |
| | | userLoginService.saveAsync(user.getId(), accessToken, UserLogin.TYPE_LOGIN, hostId, null, request); |
| | | return R.ok("登录成功").add(new LoginResult(accessToken, user)); |
| | | } |
| | | |
| | | @GetMapping("/auth/user") |
| | | public R userInfo() { |
| | | return R.ok(userService.getByIdRel(getLoginUserId())); |
| | | } |
| | | |
| | | @GetMapping("/auth/menu") |
| | | public R userMenu() { |
| | | boolean superRole = false;//超级管理员 |
| | | User loginUser = getLoginUser(); |
| | | List<Role> roles = userRoleService.listByUserId(loginUser.getId()); |
| | | for (Role role : roles) { |
| | | if (role.getId() == 1) { |
| | | superRole = true; |
| | | } |
| | | } |
| | | |
| | | List<Menu> menus = null; |
| | | if (superRole) { |
| | | menus = roleMenuService.listMenuByUserId(null, Menu.TYPE_MENU, getHostId()); |
| | | }else { |
| | | menus = roleMenuService.listMenuByUserId(getLoginUserId(), Menu.TYPE_MENU, getHostId()); |
| | | } |
| | | return R.ok().add(Utils.toTreeData(menus, 0L, Menu::getParentId, Menu::getId, Menu::setChildren)); |
| | | } |
| | | |
| | | @GetMapping("/auth/host") |
| | | public R authHost() { |
| | | List<Host> list = hostService.list(); |
| | | return R.ok().add(list); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('sys:auth:user')") |
| | | @OperationLog |
| | | @PutMapping("/auth/user") |
| | | public R updateInfo(@RequestBody User user) { |
| | | user.setId(getLoginUserId()); |
| | | // 不能修改的字段 |
| | | user.setUsername(null); |
| | | user.setPassword(null); |
| | | user.setEmailVerified(null); |
| | | user.setHostId(null); |
| | | user.setStatus(null); |
| | | if (userService.updateById(user)) { |
| | | return R.ok().add(userService.getByIdRel(user.getId())); |
| | | } |
| | | return R.error("保存失败"); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('sys:auth:password')") |
| | | @OperationLog |
| | | @PutMapping("/auth/password") |
| | | public R updatePassword(@RequestBody UpdatePasswordParam param) { |
| | | if (Cools.isEmpty(param.getOldPassword(), param.getPassword())) { |
| | | return R.error("参数不能为空"); |
| | | } |
| | | Long userId = getLoginUserId(); |
| | | if (userId == null) { |
| | | return R.error("未登录"); |
| | | } |
| | | if (!userService.comparePassword(userService.getById(userId).getPassword(), param.getOldPassword())) { |
| | | return R.error("原密码输入不正确"); |
| | | } |
| | | User user = new User(); |
| | | user.setId(userId); |
| | | user.setPassword(userService.encodePassword(param.getPassword())); |
| | | if (userService.updateById(user)) { |
| | | return R.ok("修改成功"); |
| | | } |
| | | return R.error("修改失败"); |
| | | } |
| | | |
| | | @GetMapping("/auth/router") |
| | | public R router() { |
| | | List<UserRole> userRoles = userRoleService.list(new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, getLoginUserId())); |
| | | if (userRoles.isEmpty()) { |
| | | return R.error("请先分配角色"); |
| | | } |
| | | |
| | | boolean superRole = false;//超级管理员 |
| | | ArrayList<Long> roles = new ArrayList<>(); |
| | | for (UserRole userRole : userRoles) { |
| | | roles.add(userRole.getRoleId()); |
| | | if (userRole.getRoleId() == 1) { |
| | | superRole = true; |
| | | } |
| | | } |
| | | |
| | | ArrayList<Long> menus = new ArrayList<>(); |
| | | if(superRole) { |
| | | List<Menu> allMenus = menuService.selectByHostId(getHostId()); |
| | | for (Menu menu : allMenus) { |
| | | if(!menus.contains(menu.getId())) { |
| | | menus.add(menu.getId()); |
| | | } |
| | | } |
| | | }else { |
| | | List<RoleMenu> roleMenus = roleMenuService.list(new LambdaQueryWrapper<RoleMenu>().in(RoleMenu::getRoleId, roles)); |
| | | for (RoleMenu roleMenu : roleMenus) { |
| | | if(!menus.contains(roleMenu.getMenuId())) { |
| | | menus.add(roleMenu.getMenuId()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | List<Menu> menuList = menuService.list(new LambdaQueryWrapper<Menu>() |
| | | .in(Menu::getId, menus) |
| | | .eq(Menu::getType, Menu.TYPE_MENU) |
| | | .orderByAsc(Menu::getId)); |
| | | |
| | | return R.ok().add(menuList); |
| | | } |
| | | |
| | | @RequestMapping("/show/host.action") |
| | | @ManagerAuth |
| | | public R showHosts() { |
| | | Long hostId = getHostId(); |
| | | String hostName = null; |
| | | if (hostId != null) { |
| | | Host host = hostService.getById(hostId); |
| | | if (host != null) { |
| | | hostName = host.getName(); |
| | | } |
| | | } |
| | | boolean root = false; |
| | | List<Role> roles = userRoleService.listByUserId(getLoginUserId()); |
| | | for (Role role : roles) { |
| | | if (role.getId() == 1) { |
| | | root = true; |
| | | break; |
| | | } |
| | | } |
| | | return R.ok().add(Cools |
| | | .add("root", root) |
| | | .add("host", hostId == null) |
| | | .add("hostId", hostId) |
| | | .add("hostName", hostName) |
| | | ); |
| | | } |
| | | |
| | | @RequestMapping(value = "/root/change/host/auth") |
| | | @ManagerAuth |
| | | public R rootChangeHost(@RequestParam Long hostId) { |
| | | UserLogin userLogin = userLoginService.superFindByUserId(getLoginUserId(), String.valueOf(LoginSystemType.WMS)); |
| | | if (userLogin != null) { |
| | | userLogin.setHostId(hostId); |
| | | if (!userLoginService.updateById(userLogin)) { |
| | | throw new CoolException("修改商户失败"); |
| | | } |
| | | return R.ok(); |
| | | } else { |
| | | return R.error(); |
| | | } |
| | | } |
| | | |
| | | @RequestMapping(value = "/code/auth") |
| | | // @ManagerAuth(memo = "物料编码条形码获取(type:1(条形码);2(二维码)") |
| | | public R matCodeBarcode(@RequestParam(defaultValue = "1") Integer type |
| | | , @RequestParam String param |
| | | , HttpServletResponse response) throws Exception { |
| | | response.setContentType("image/jpg"); |
| | | if (Cools.isEmpty(param)){ |
| | | return R.parse(BaseRes.EMPTY); |
| | | } |
| | | BufferedImage img; |
| | | if (type == 1) { |
| | | img = BarcodeUtils.encode(param); |
| | | } else { |
| | | img = QrCode.createImg(param); |
| | | } |
| | | if (!ImageIO.write(img, "jpg", response.getOutputStream())) { |
| | | throw new IOException("Could not write an image of format jpg"); |
| | | } |
| | | response.getOutputStream().flush(); |
| | | response.getOutputStream().close(); |
| | | return R.ok(); |
| | | } |
| | | |
| | | } |
| | | package com.zy.asrs.wms.system.controller;
|
| | |
|
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
| | | import com.zy.asrs.common.domain.CodeRes;
|
| | | import com.zy.asrs.common.domain.enums.LoginSystemType;
|
| | | import com.zy.asrs.common.utils.BarcodeUtils;
|
| | | import com.zy.asrs.common.utils.QrCode;
|
| | | import com.zy.asrs.framework.annotations.ManagerAuth;
|
| | | import com.zy.asrs.framework.common.BaseRes;
|
| | | import com.zy.asrs.framework.common.Cools;
|
| | | import com.zy.asrs.framework.common.R;
|
| | | import com.zy.asrs.framework.exception.CoolException;
|
| | | import com.zy.asrs.wms.common.annotation.OperationLog;
|
| | | import com.zy.asrs.wms.common.config.ConfigProperties;
|
| | | import com.zy.asrs.wms.common.security.JwtSubject;
|
| | | import com.zy.asrs.wms.system.controller.param.LoginParam;
|
| | | import com.zy.asrs.wms.system.controller.param.UpdatePasswordParam;
|
| | | import com.zy.asrs.wms.system.controller.result.LoginResult;
|
| | | import com.zy.asrs.wms.system.entity.*;
|
| | | import com.zy.asrs.wms.system.license.timer.LicenseTimer;
|
| | | import com.zy.asrs.wms.system.service.*;
|
| | | import com.zy.asrs.wms.utils.JwtUtil;
|
| | | import com.zy.asrs.wms.utils.Utils;
|
| | | import org.springframework.beans.factory.annotation.Autowired;
|
| | | import org.springframework.security.access.prepost.PreAuthorize;
|
| | | import org.springframework.web.bind.annotation.*;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | | import javax.imageio.ImageIO;
|
| | | import javax.servlet.http.HttpServletRequest;
|
| | | import javax.servlet.http.HttpServletResponse;
|
| | | import java.awt.image.BufferedImage;
|
| | | import java.io.IOException;
|
| | | import java.util.ArrayList;
|
| | | import java.util.List;
|
| | |
|
| | | /**
|
| | | * 认证控制器
|
| | | *
|
| | | * Created by vincent on 1/30/2024
|
| | | */
|
| | | @RestController
|
| | | @RequestMapping("/api")
|
| | | public class AuthController extends BaseController {
|
| | |
|
| | | @Resource
|
| | | private ConfigProperties configProperties;
|
| | | @Resource
|
| | | private UserService userService;
|
| | | @Resource
|
| | | private UserLoginService userLoginService;
|
| | | @Resource
|
| | | private RoleMenuService roleMenuService;
|
| | | @Resource
|
| | | private HostService hostService;
|
| | | @Resource
|
| | | private UserRoleService userRoleService;
|
| | | @Resource
|
| | | private MenuService menuService;
|
| | | @Autowired
|
| | | private LicenseTimer licenseTimer;
|
| | |
|
| | | @PostMapping("/login")
|
| | | public R login(@RequestBody LoginParam param, HttpServletRequest request) {
|
| | | if (!licenseTimer.getSystemSupport()) {//许可证已失效
|
| | | return R.parse(CodeRes.SYSTEM_20001);
|
| | | }
|
| | | String username = param.getUsername();
|
| | | Long hostId = param.getHostId();
|
| | | User user = userService.getByUsername(username, hostId);
|
| | | if (user == null) {
|
| | | return R.error("账号不存在");
|
| | | }
|
| | | if (!user.getStatus().equals(1)) {
|
| | | return R.error("账号被冻结");
|
| | | }
|
| | | if (!userService.comparePassword(user.getPassword(), param.getPassword())) {
|
| | | return R.error("密码错误");
|
| | | }
|
| | | String accessToken = JwtUtil.buildToken(new JwtSubject(username, user.getHostId()),
|
| | | configProperties.getTokenExpireTime(), configProperties.getTokenKey());
|
| | | userLoginService.saveAsync(user.getId(), accessToken, UserLogin.TYPE_LOGIN, hostId, null, request);
|
| | | return R.ok("登录成功").add(new LoginResult(accessToken, user));
|
| | | }
|
| | |
|
| | | @GetMapping("/auth/user")
|
| | | public R userInfo() {
|
| | | return R.ok(userService.getByIdRel(getLoginUserId()));
|
| | | }
|
| | |
|
| | | @GetMapping("/auth/menu")
|
| | | public R userMenu() {
|
| | | boolean superRole = false;//超级管理员
|
| | | User loginUser = getLoginUser();
|
| | | List<Role> roles = userRoleService.listByUserId(loginUser.getId());
|
| | | for (Role role : roles) {
|
| | | if (role.getId() == 1) {
|
| | | superRole = true;
|
| | | }
|
| | | }
|
| | |
|
| | | List<Menu> menus = null;
|
| | | if (superRole) {
|
| | | menus = roleMenuService.listMenuByUserId(null, Menu.TYPE_MENU, getHostId());
|
| | | }else {
|
| | | menus = roleMenuService.listMenuByUserId(getLoginUserId(), Menu.TYPE_MENU, getHostId());
|
| | | }
|
| | | return R.ok().add(Utils.toTreeData(menus, 0L, Menu::getParentId, Menu::getId, Menu::setChildren));
|
| | | }
|
| | |
|
| | | @GetMapping("/auth/host")
|
| | | public R authHost() {
|
| | | List<Host> list = hostService.list();
|
| | | return R.ok().add(list);
|
| | | }
|
| | |
|
| | | @PreAuthorize("hasAuthority('sys:auth:user')")
|
| | | @OperationLog
|
| | | @PutMapping("/auth/user")
|
| | | public R updateInfo(@RequestBody User user) {
|
| | | user.setId(getLoginUserId());
|
| | | // 不能修改的字段
|
| | | user.setUsername(null);
|
| | | user.setPassword(null);
|
| | | user.setEmailVerified(null);
|
| | | user.setHostId(null);
|
| | | user.setStatus(null);
|
| | | if (userService.updateById(user)) {
|
| | | return R.ok().add(userService.getByIdRel(user.getId()));
|
| | | }
|
| | | return R.error("保存失败");
|
| | | }
|
| | |
|
| | | @PreAuthorize("hasAuthority('sys:auth:password')")
|
| | | @OperationLog
|
| | | @PutMapping("/auth/password")
|
| | | public R updatePassword(@RequestBody UpdatePasswordParam param) {
|
| | | if (Cools.isEmpty(param.getOldPassword(), param.getPassword())) {
|
| | | return R.error("参数不能为空");
|
| | | }
|
| | | Long userId = getLoginUserId();
|
| | | if (userId == null) {
|
| | | return R.error("未登录");
|
| | | }
|
| | | if (!userService.comparePassword(userService.getById(userId).getPassword(), param.getOldPassword())) {
|
| | | return R.error("原密码输入不正确");
|
| | | }
|
| | | User user = new User();
|
| | | user.setId(userId);
|
| | | user.setPassword(userService.encodePassword(param.getPassword()));
|
| | | if (userService.updateById(user)) {
|
| | | return R.ok("修改成功");
|
| | | }
|
| | | return R.error("修改失败");
|
| | | }
|
| | |
|
| | | @GetMapping("/auth/router")
|
| | | public R router() {
|
| | | List<UserRole> userRoles = userRoleService.list(new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, getLoginUserId()));
|
| | | if (userRoles.isEmpty()) {
|
| | | return R.error("请先分配角色");
|
| | | }
|
| | |
|
| | | boolean superRole = false;//超级管理员
|
| | | ArrayList<Long> roles = new ArrayList<>();
|
| | | for (UserRole userRole : userRoles) {
|
| | | roles.add(userRole.getRoleId());
|
| | | if (userRole.getRoleId() == 1) {
|
| | | superRole = true;
|
| | | }
|
| | | }
|
| | |
|
| | | ArrayList<Long> menus = new ArrayList<>();
|
| | | if(superRole) {
|
| | | List<Menu> allMenus = menuService.selectByHostId(getHostId());
|
| | | for (Menu menu : allMenus) {
|
| | | if(!menus.contains(menu.getId())) {
|
| | | menus.add(menu.getId());
|
| | | }
|
| | | }
|
| | | }else {
|
| | | List<RoleMenu> roleMenus = roleMenuService.list(new LambdaQueryWrapper<RoleMenu>().in(RoleMenu::getRoleId, roles));
|
| | | for (RoleMenu roleMenu : roleMenus) {
|
| | | if(!menus.contains(roleMenu.getMenuId())) {
|
| | | menus.add(roleMenu.getMenuId());
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | List<Menu> menuList = menuService.list(new LambdaQueryWrapper<Menu>()
|
| | | .in(Menu::getId, menus)
|
| | | .eq(Menu::getType, Menu.TYPE_MENU)
|
| | | .orderByAsc(Menu::getId));
|
| | |
|
| | | return R.ok().add(menuList);
|
| | | }
|
| | |
|
| | | @RequestMapping("/show/host.action")
|
| | | @ManagerAuth
|
| | | public R showHosts() {
|
| | | Long hostId = getHostId();
|
| | | String hostName = null;
|
| | | if (hostId != null) {
|
| | | Host host = hostService.getById(hostId);
|
| | | if (host != null) {
|
| | | hostName = host.getName();
|
| | | }
|
| | | }
|
| | | boolean root = false;
|
| | | List<Role> roles = userRoleService.listByUserId(getLoginUserId());
|
| | | for (Role role : roles) {
|
| | | if (role.getId() == 1) {
|
| | | root = true;
|
| | | break;
|
| | | }
|
| | | }
|
| | | return R.ok().add(Cools
|
| | | .add("root", root)
|
| | | .add("host", hostId == null)
|
| | | .add("hostId", hostId)
|
| | | .add("hostName", hostName)
|
| | | );
|
| | | }
|
| | |
|
| | | @RequestMapping(value = "/root/change/host/auth")
|
| | | @ManagerAuth
|
| | | public R rootChangeHost(@RequestParam Long hostId) {
|
| | | UserLogin userLogin = userLoginService.superFindByUserId(getLoginUserId(), String.valueOf(LoginSystemType.WMS));
|
| | | if (userLogin != null) {
|
| | | userLogin.setHostId(hostId);
|
| | | if (!userLoginService.updateById(userLogin)) {
|
| | | throw new CoolException("修改商户失败");
|
| | | }
|
| | | return R.ok();
|
| | | } else {
|
| | | return R.error();
|
| | | }
|
| | | }
|
| | |
|
| | | @RequestMapping(value = "/code/auth")
|
| | | // @ManagerAuth(memo = "物料编码条形码获取(type:1(条形码);2(二维码)")
|
| | | public R matCodeBarcode(@RequestParam(defaultValue = "1") Integer type
|
| | | , @RequestParam String param
|
| | | , HttpServletResponse response) throws Exception {
|
| | | response.setContentType("image/jpg");
|
| | | if (Cools.isEmpty(param)){
|
| | | return R.parse(BaseRes.EMPTY);
|
| | | }
|
| | | BufferedImage img;
|
| | | if (type == 1) {
|
| | | img = BarcodeUtils.encode(param);
|
| | | } else {
|
| | | img = QrCode.createImg(param);
|
| | | }
|
| | | if (!ImageIO.write(img, "jpg", response.getOutputStream())) {
|
| | | throw new IOException("Could not write an image of format jpg");
|
| | | }
|
| | | response.getOutputStream().flush();
|
| | | response.getOutputStream().close();
|
| | | return R.ok();
|
| | | }
|
| | |
|
| | | }
|