新框架,系统管理,权限管理等

newFrame
anthonyywj2 3 years ago
parent fe3483f3bd
commit d505666984

@ -302,6 +302,12 @@
<version>3.10.0</version>
</dependency>
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.30.0</version>
</dependency>
<!-- jasperreports end-->
<!-- jasperreports-dependency-end -->
</dependencies>

@ -40,4 +40,69 @@ public class Constant {
public static final int CHECK_NULL = 3; //校驗失敗,不存在
/**
* www
*/
public static String WWW = "www.";
/**
* http
*/
public static String HTTP = "http://";
/**
* https
*/
public static String HTTPS = "https://";
/**
*
*/
public static String TYPE_DIR = "M";
/**
*
*/
public static String TYPE_MENU = "C";
/**
*
*/
public static String TYPE_BUTTON = "F";
/**
* Layout
*/
public static String LAYOUT = "Layout";
/**
*
*/
public static String YES_FRAME = "0";
/**
*
*/
public static String NO_FRAME = "1";
/**
* ParentView
*/
public static String PARENT_VIEW = "ParentView";
/**
* InnerLink
*/
public static String INNER_LINK = "InnerLink";
public static final String ADMIN_ID = "1";
public static final String UNIQUE = "0";
public static final String NOT_UNIQUE = "1";
public static final String YES = "Y";
}

@ -0,0 +1,36 @@
package com.glxp.api.admin.controller;
import cn.hutool.core.util.StrUtil;
import com.glxp.api.admin.constant.Constant;
import com.glxp.api.admin.entity.auth.AuthAdmin;
import com.glxp.api.admin.service.auth.CustomerService;
import javax.annotation.Resource;
/**
*
*/
public class BaseController {
@Resource
CustomerService customerService;
/**
*
*/
public String redirect(String url) {
return StrUtil.format("redirect:{}", url);
}
public boolean isAdmin(Long userId) {
return Constant.ADMIN_ID.equals(userId);
}
public AuthAdmin getUser() {
return customerService.getUserBean();
}
}

@ -220,8 +220,8 @@ public class AuthAdminController {
if (authAdminSaveRequest.getId() == null) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数错误!");
}
InvSubWarehouseEntity invSubWarehouseEntity=invSubWarehouseService.filterGroupInvSubAndcode(authAdminSaveRequest.getLocSubInvCode());
if(invSubWarehouseEntity!=null){
InvSubWarehouseEntity invSubWarehouseEntity = invSubWarehouseService.filterGroupInvSubAndcode(authAdminSaveRequest.getLocSubInvCode());
if (invSubWarehouseEntity != null) {
authAdminSaveRequest.setLocInvCode(invSubWarehouseEntity.getParentId());
}
AuthAdmin authAdmin = new AuthAdmin();

@ -1,7 +1,12 @@
package com.glxp.api.admin.controller.auth;
import cn.hutool.core.util.StrUtil;
import com.glxp.api.admin.controller.BaseController;
import com.glxp.api.admin.dao.auth.AuthLicenseDao;
import com.glxp.api.admin.entity.auth.AuthCheckEntity;
import com.glxp.api.admin.entity.auth.SysMenu;
import com.glxp.api.admin.entity.auth.SysRole;
import com.glxp.api.admin.entity.info.CompanyEntity;
import com.glxp.api.admin.entity.info.DeviceKeyEntity;
import com.glxp.api.admin.entity.inventory.InvSubWarehouseEntity;
import com.glxp.api.admin.entity.inventory.InvWarehouseEntity;
@ -9,8 +14,8 @@ import com.glxp.api.admin.req.auth.LoginRequest;
import com.glxp.api.admin.req.auth.PCLoginRequest;
import com.glxp.api.admin.req.auth.UpdatePasswordRequest;
import com.glxp.api.admin.res.auth.LoginResponse;
import com.glxp.api.admin.service.auth.AuthCheckService;
import com.glxp.api.admin.service.auth.DeviceKeyService;
import com.glxp.api.admin.service.auth.*;
import com.glxp.api.admin.service.info.CompanyService;
import com.glxp.api.admin.service.inventory.InvSubWarehouseService;
import com.glxp.api.admin.service.inventory.InvWarehouseService;
import com.glxp.api.admin.util.*;
@ -20,8 +25,6 @@ import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.admin.annotation.AuthRuleAnnotation;
import com.glxp.api.admin.entity.auth.AuthAdmin;
import com.glxp.api.admin.exception.JsonException;
import com.glxp.api.admin.service.auth.AuthAdminService;
import com.glxp.api.admin.service.auth.AuthLoginService;
import com.glxp.api.admin.res.auth.LoginUserInfoResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@ -42,7 +45,7 @@ import java.util.*;
*/
@RestController
@Slf4j
public class LoginController {
public class LoginController extends BaseController {
@Autowired
private AuthLoginService authLoginService;
@ -54,6 +57,16 @@ public class LoginController {
private AuthCheckService authCheckService;
@Resource
DeviceKeyService deviceKeyService;
@Resource
SysPermissionService sysPermissionService;
@Resource
private CompanyService companyService;
@Resource
private AuthLicenseDao authLicenseDao;
/**
*
@ -226,6 +239,47 @@ public class LoginController {
return ResultVOUtils.success(loginUserInfoResponse);
}
@Resource
ISysRoleService sysRoleService;
@AuthRuleAnnotation("")
@GetMapping("/getInfo")
public BaseResponse getUserInfo(HttpServletRequest request) {
String adminId = request.getHeader("ADMIN_ID");
Long id = Long.valueOf(adminId);
AuthAdmin authAdmin = authAdminService.findById(id);
List<String> authRules = authLoginService.listRuleByAdminId(authAdmin.getId());
LoginUserInfoResponse loginUserInfoResponse = new LoginUserInfoResponse();
BeanUtils.copyProperties(authAdmin, loginUserInfoResponse);
loginUserInfoResponse.setAuthRules(authRules);
CompanyEntity companyEntity = companyService.findCompany();
loginUserInfoResponse.setCompanyName(companyEntity.getName());
loginUserInfoResponse.setLocInvName(invWarehouseService.getInvName(loginUserInfoResponse.getLocInvCode()));
loginUserInfoResponse.setLocSubInvName(invSubWarehouseService.getSubInvName(loginUserInfoResponse.getLocSubInvCode()));
// 角色集合
Set<String> roles = sysPermissionService.getRolePermission(authAdmin);
List<SysRole> sysRoles = sysRoleService.selectRolesByUserId(id);
authAdmin.setRoles(sysRoles);
// 权限集合
Set<String> permissions = sysPermissionService.getMenuPermission(authAdmin);
loginUserInfoResponse.setRoles(roles);
loginUserInfoResponse.setPermissions(permissions);
return ResultVOUtils.success(loginUserInfoResponse);
}
@Resource
ISysMenuService menuService;
@GetMapping("/spms/getRouters")
public BaseResponse getRouters() {
AuthAdmin authAdmin = getUser();
List<SysMenu> menus = menuService.selectMenuTreeByUserId(authAdmin.getId());
return ResultVOUtils.success(menuService.buildMenus(menus));
}
/**
*
*

@ -0,0 +1,95 @@
package com.glxp.api.admin.controller.auth;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.util.ObjectUtil;
import com.glxp.api.admin.controller.BaseController;
import com.glxp.api.admin.entity.auth.SysDictData;
import com.glxp.api.admin.req.auth.SysDictDataRequest;
import com.glxp.api.admin.service.auth.ISysDictDataService;
import com.glxp.api.admin.service.auth.ISysDictTypeService;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
*
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/system/dict/data")
public class SysDictDataController extends BaseController {
private final ISysDictDataService dictDataService;
private final ISysDictTypeService dictTypeService;
/**
*
*/
@GetMapping("/list")
public BaseResponse list(SysDictDataRequest sysDictDataRequest) {
return ResultVOUtils.success(dictDataService.selectDictDataList(sysDictDataRequest));
}
/**
*
*
* @param dictCode code
*/
@GetMapping(value = "/{dictCode}")
public BaseResponse getInfo(@PathVariable Long dictCode) {
return ResultVOUtils.success(dictDataService.selectDictDataById(dictCode));
}
/**
*
*
* @param dictType
*/
@GetMapping(value = "/type/{dictType}")
public BaseResponse dictType(@PathVariable String dictType) {
List<SysDictData> data = dictTypeService.selectDictDataByType(dictType);
if (ObjectUtil.isNull(data)) {
data = new ArrayList<>();
}
return ResultVOUtils.success(data);
}
/**
*
*/
@PostMapping
public BaseResponse add(@Validated @RequestBody SysDictData dict) {
dictDataService.insertDictData(dict);
return ResultVOUtils.success("添加成功!");
}
/**
*
*/
@SaCheckPermission("system:dict:edit")
@PutMapping
public BaseResponse edit(@Validated @RequestBody SysDictData dict) {
dictDataService.updateDictData(dict);
return ResultVOUtils.success("修改成功!");
}
/**
*
*
* @param dictCodes code
*/
@SaCheckPermission("system:dict:remove")
@DeleteMapping("/{dictCodes}")
public BaseResponse remove(@PathVariable Long[] dictCodes) {
dictDataService.deleteDictDataByIds(dictCodes);
return ResultVOUtils.success("移除成功!");
}
}

@ -0,0 +1,98 @@
package com.glxp.api.admin.controller.auth;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.github.pagehelper.PageInfo;
import com.glxp.api.admin.constant.Constant;
import com.glxp.api.admin.controller.BaseController;
import com.glxp.api.admin.entity.auth.SysDictType;
import com.glxp.api.admin.req.auth.SysDictTypeRequest;
import com.glxp.api.admin.res.PageSimpleResponse;
import com.glxp.api.admin.service.auth.ISysDictTypeService;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
*
*/
@RestController
@RequestMapping("/system/dict/type")
public class SysDictTypeController extends BaseController {
@Resource
ISysDictTypeService dictTypeService;
/**
*
*/
@SaCheckPermission("system:dict:list")
@GetMapping("/list")
public BaseResponse list(SysDictTypeRequest sysDictTypeRequest) {
List<SysDictType> sysDictTypes = dictTypeService.selectDictTypeList(sysDictTypeRequest);
PageInfo<SysDictType> pageInfo = new PageInfo<>(sysDictTypes);
PageSimpleResponse<SysDictType> deptEntityPageSimpleResponse = new PageSimpleResponse<>();
deptEntityPageSimpleResponse.setTotal(pageInfo.getTotal());
deptEntityPageSimpleResponse.setList(sysDictTypes);
return ResultVOUtils.success(deptEntityPageSimpleResponse);
}
/**
*
*
* @param dictId ID
*/
@GetMapping(value = "/{dictId}")
public BaseResponse getInfo(@PathVariable Long dictId) {
return ResultVOUtils.success(dictTypeService.selectDictTypeById(dictId));
}
/**
*
*/
@PostMapping
public BaseResponse add(@Validated @RequestBody SysDictType dict) {
if (Constant.NOT_UNIQUE.equals(dictTypeService.checkDictTypeUnique(dict))) {
return ResultVOUtils.error(500, "新增字典'" + dict.getDictName() + "'失败,字典类型已存在");
}
dictTypeService.insertDictType(dict);
return ResultVOUtils.success("新增成功!");
}
/**
*
*/
@PutMapping
public BaseResponse edit(@Validated @RequestBody SysDictType dict) {
// if (Constant.NOT_UNIQUE.equals(dictTypeService.checkDictTypeUnique(dict))) {
// return R.fail("修改字典'" + dict.getDictName() + "'失败,字典类型已存在");
// }
dictTypeService.updateDictType(dict);
return ResultVOUtils.success("修改成功!");
}
/**
*
*
* @param dictIds ID
*/
@SaCheckPermission("system:dict:remove")
@DeleteMapping("/{dictIds}")
public BaseResponse remove(@PathVariable Long[] dictIds) {
dictTypeService.deleteDictTypeByIds(dictIds);
return ResultVOUtils.success("删除成功!");
}
/**
*
*/
@GetMapping("/optionselect")
public BaseResponse optionselect() {
List<SysDictType> dictTypes = dictTypeService.selectDictTypeAll();
return ResultVOUtils.success(dictTypes);
}
}

@ -0,0 +1,131 @@
package com.glxp.api.admin.controller.auth;
import cn.hutool.http.HttpUtil;
import com.glxp.api.admin.constant.Constant;
import com.glxp.api.admin.entity.auth.AuthAdmin;
import com.glxp.api.admin.entity.auth.SysMenu;
import com.glxp.api.admin.service.auth.CustomerService;
import com.glxp.api.admin.service.auth.ISysMenuService;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
*
* @author Lion Li
*/
@RestController
@RequestMapping("/system/menu")
public class SysMenuController {
@Resource
ISysMenuService menuService;
@Resource
CustomerService customerService;
/**
*
*/
@GetMapping("/list")
public BaseResponse list(SysMenu menu) {
AuthAdmin authAdmin = customerService.getUserBean();
List<SysMenu> menus = menuService.selectMenuList(menu, authAdmin.getId());
return ResultVOUtils.success(menus);
}
/**
*
*
* @param menuId ID
*/
@GetMapping(value = "/{menuId}")
public BaseResponse getInfo(@PathVariable Long menuId) {
return ResultVOUtils.success(menuService.selectMenuById(menuId));
}
/**
*
*/
@GetMapping("/treeselect")
public BaseResponse treeselect(SysMenu menu) {
AuthAdmin authAdmin = customerService.getUserBean();
List<SysMenu> menus = menuService.selectMenuList(menu, authAdmin.getId());
return ResultVOUtils.success(menuService.buildMenuTreeSelect(menus));
}
/**
*
*
* @param roleId ID
*/
@GetMapping(value = "/roleMenuTreeselect/{roleId}")
public BaseResponse roleMenuTreeselect(@PathVariable("roleId") Long roleId) {
AuthAdmin authAdmin = customerService.getUserBean();
List<SysMenu> menus = menuService.selectMenuList(authAdmin.getId());
Map<String, Object> ajax = new HashMap<>();
ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId));
ajax.put("menus", menuService.buildMenuTreeSelect(menus));
return ResultVOUtils.success(ajax);
}
/**
*
*/
@PostMapping
public BaseResponse add(@Validated @RequestBody SysMenu menu) {
if (Constant.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) {
return ResultVOUtils.error(500, "新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
} else if (Constant.YES_FRAME.equals(menu.getIsFrame()) && !HttpUtil.isHttp(menu.getPath())) {
return ResultVOUtils.error(500, "新增菜单'" + menu.getMenuName() + "'失败地址必须以http(s)://开头");
}
menuService.insertMenu(menu);
return ResultVOUtils.success("修改成功!");
}
/**
*
*/
@PutMapping
public BaseResponse edit(@Validated @RequestBody SysMenu menu) {
menu.setNeMenuId(menu.getMenuId());
if (Constant.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) {
return ResultVOUtils.error(500, "修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
} else if (Constant.YES_FRAME.equals(menu.getIsFrame()) && !HttpUtil.isHttp(menu.getPath())) {
return ResultVOUtils.error(500, "修改菜单'" + menu.getMenuName() + "'失败地址必须以http(s)://开头");
} else if (menu.getMenuId().equals(menu.getParentId())) {
return ResultVOUtils.error(500, "修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己");
}
menuService.updateMenu(menu);
return ResultVOUtils.success("修改成功!");
}
/**
*
*
* @param menuId ID
*/
@DeleteMapping("/{menuId}")
public BaseResponse remove(@PathVariable("menuId") Long menuId) {
if (menuService.hasChildByMenuId(menuId)) {
return ResultVOUtils.error(500, "存在子菜单,不允许删除");
}
if (menuService.checkMenuExistRole(menuId)) {
return ResultVOUtils.error(500, "菜单已分配,不允许删除");
}
menuService.deleteMenuById(menuId);
return ResultVOUtils.success("修改成功!");
}
}

@ -0,0 +1,219 @@
package com.glxp.api.admin.controller.auth;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.github.pagehelper.PageInfo;
import com.glxp.api.admin.constant.Constant;
import com.glxp.api.admin.controller.BaseController;
import com.glxp.api.admin.entity.auth.AuthAdmin;
import com.glxp.api.admin.entity.auth.SysRole;
import com.glxp.api.admin.entity.auth.SysUserRole;
import com.glxp.api.admin.req.auth.AuthAdminQueryRequest;
import com.glxp.api.admin.req.auth.SysRoleRequest;
import com.glxp.api.admin.res.PageSimpleResponse;
import com.glxp.api.admin.service.auth.AuthAdminService;
import com.glxp.api.admin.service.auth.ISysRoleService;
import com.glxp.api.admin.service.auth.SysPermissionService;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/system/role")
public class SysRoleController extends BaseController {
@Resource
ISysRoleService roleService;
@Resource
AuthAdminService userService;
@Resource
SysPermissionService permissionService;
/**
*
*/
@GetMapping("/list")
public BaseResponse list(SysRoleRequest sysRoleRequest) {
List<SysRole> sysRoles = roleService.selectPageRoleList(sysRoleRequest);
PageInfo<SysRole> pageInfo = new PageInfo<>(sysRoles);
PageSimpleResponse<SysRole> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(sysRoles);
return ResultVOUtils.success(pageSimpleResponse);
}
/**
*
*
* @param roleId ID
*/
@GetMapping(value = "/{roleId}")
public BaseResponse getInfo(@PathVariable Long roleId) {
roleService.checkRoleDataScope(roleId);
return ResultVOUtils.success(roleService.selectRoleById(roleId));
}
/**
*
*/
@PostMapping
public BaseResponse add(@Validated @RequestBody SysRole role) {
if (Constant.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) {
return ResultVOUtils.error(500, "新增角色'" + role.getRoleName() + "'失败,角色名称已存在");
} else if (Constant.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role))) {
return ResultVOUtils.error(500, "新增角色'" + role.getRoleName() + "'失败,角色权限已存在");
}
role.setCreateBy(getUser().getId() + "");
role.setCreateTime(new Date());
int i = roleService.insertRole(role);
return ResultVOUtils.success("新增成功!");
}
/**
*
*/
@PutMapping
public BaseResponse edit(@Validated @RequestBody SysRole role) {
roleService.checkRoleAllowed(role);
roleService.checkRoleDataScope(role.getRoleId());
if (Constant.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) {
return ResultVOUtils.error(500, "修改角色'" + role.getRoleName() + "'失败,角色名称已存在");
} else if (Constant.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role))) {
return ResultVOUtils.error(500, "修改角色'" + role.getRoleName() + "'失败,角色权限已存在");
}
role.setUpdateTime(new Date());
role.setUpdateBy(getUser().getId() + "");
if (roleService.updateRole(role) > 0) {
// 更新缓存用户权限
return ResultVOUtils.success("修改成功!");
}
return ResultVOUtils.error(500, "修改角色'" + role.getRoleName() + "'失败,请联系管理员");
}
/**
*
*/
@PutMapping("/dataScope")
public BaseResponse dataScope(@RequestBody SysRole role) {
roleService.checkRoleAllowed(role);
roleService.checkRoleDataScope(role.getRoleId());
int i = roleService.authDataScope(role);
return ResultVOUtils.success("修改成功!");
}
/**
*
*/
@PutMapping("/changeStatus")
public BaseResponse changeStatus(@RequestBody SysRole role) {
roleService.checkRoleAllowed(role);
roleService.checkRoleDataScope(role.getRoleId());
int i = roleService.updateRoleStatus(role);
return ResultVOUtils.success("修改成功!");
}
/**
*
*
* @param roleIds ID
*/
@DeleteMapping("/{roleIds}")
public BaseResponse remove(@PathVariable Long[] roleIds) {
int i = roleService.deleteRoleByIds(roleIds);
return ResultVOUtils.success("修改成功!");
}
/**
*
*/
@SaCheckPermission("system:role:query")
@GetMapping("/optionselect")
public BaseResponse optionselect() {
return ResultVOUtils.success(roleService.selectRoleAll());
}
/**
*
*/
@GetMapping("/authUser/allocatedList")
public BaseResponse allocatedList(AuthAdminQueryRequest authAdminQueryRequest) {
List<AuthAdmin> authAdminList = userService.selectAllocatedList(authAdminQueryRequest);
PageInfo<AuthAdmin> pageInfo = new PageInfo<>(authAdminList);
PageSimpleResponse<AuthAdmin> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(authAdminList);
return ResultVOUtils.success(pageSimpleResponse);
}
/**
*
*/
@GetMapping("/authUser/unallocatedList")
public BaseResponse unallocatedList(AuthAdminQueryRequest authAdminQueryRequest) {
List<AuthAdmin> authAdminList = userService.selectUnallocatedList(authAdminQueryRequest);
PageInfo<AuthAdmin> pageInfo = new PageInfo<>(authAdminList);
PageSimpleResponse<AuthAdmin> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(authAdminList);
return ResultVOUtils.success(pageSimpleResponse);
}
/**
*
*/
@PutMapping("/authUser/cancel")
public BaseResponse cancelAuthUser(@RequestBody SysUserRole userRole) {
int i = roleService.deleteAuthUser(userRole);
return ResultVOUtils.success("取消成功!");
}
/**
*
*
* @param roleId ID
* @param userIds ID
*/
@SaCheckPermission("system:role:edit")
@PutMapping("/authUser/cancelAll")
public BaseResponse cancelAuthUserAll(Long roleId, Long[] userIds) {
int i = roleService.deleteAuthUsers(roleId, userIds);
return ResultVOUtils.success("取消成功!");
}
/**
*
*
* @param roleId ID
* @param userIds ID
*/
@SaCheckPermission("system:role:edit")
@PutMapping("/authUser/selectAll")
public BaseResponse selectAuthUserAll(Long roleId, Long[] userIds) {
roleService.checkRoleDataScope(roleId);
roleService.insertAuthUsers(roleId, userIds);
return ResultVOUtils.success("授权成功!");
}
}

@ -0,0 +1,235 @@
package com.glxp.api.admin.controller.auth;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.github.pagehelper.PageInfo;
import com.glxp.api.admin.controller.BaseController;
import com.glxp.api.admin.entity.auth.AuthAdmin;
import com.glxp.api.admin.entity.auth.AuthRoleAdmin;
import com.glxp.api.admin.entity.auth.SysMenu;
import com.glxp.api.admin.entity.auth.SysRole;
import com.glxp.api.admin.req.auth.AuthAdminQueryRequest;
import com.glxp.api.admin.req.auth.AuthAdminSaveRequest;
import com.glxp.api.admin.res.PageSimpleResponse;
import com.glxp.api.admin.res.auth.AuthAdminResponse;
import com.glxp.api.admin.service.auth.AuthAdminService;
import com.glxp.api.admin.service.auth.AuthRoleAdminService;
import com.glxp.api.admin.service.auth.ISysMenuService;
import com.glxp.api.admin.service.auth.ISysRoleService;
import com.glxp.api.admin.util.PasswordUtils;
import com.glxp.api.admin.util.StreamUtils;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.*;
import java.util.stream.Collectors;
/**
*
*
* @author Lion Li
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/system/user")
public class SysUserController extends BaseController {
private final AuthAdminService userService;
private final ISysRoleService roleService;
@Resource
private AuthRoleAdminService authRoleAdminService;
@Resource
ISysRoleService sysRoleService;
@GetMapping("/list")
public BaseResponse list(AuthAdminQueryRequest authAdminQueryRequest, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
if (authAdminQueryRequest.getRoleId() != null) {
List<AuthRoleAdmin> authRoleAdmins = authRoleAdminService.listByRoleId(authAdminQueryRequest.getRoleId());
List<Long> ids = new ArrayList<>();
if (authRoleAdmins != null && !authRoleAdmins.isEmpty()) {
ids = authRoleAdmins.stream().map(AuthRoleAdmin::getAdmin_id).collect(Collectors.toList());
}
authAdminQueryRequest.setIds(ids);
}
List<AuthAdmin> authAdminList = userService.listAdminPage(authAdminQueryRequest);
// 查询所有的权限
List<Long> adminIds = authAdminList.stream().map(AuthAdmin::getId).collect(Collectors.toList());
// 视图列表
List<AuthAdminResponse> authAdminResponseList = authAdminList.stream().map(item -> {
AuthAdminResponse authAdminResponse = new AuthAdminResponse();
BeanUtils.copyProperties(item, authAdminResponse);
// List<Long> roles = authRoleAdminList.stream()
// .filter(authRoleAdmin -> authAdminResponse.getId().equals(authRoleAdmin.getAdmin_id()))
// .map(AuthRoleAdmin::getRole_id)
// .collect(Collectors.toList());
List<Long> roles = sysRoleService.selectRoleListByUserId(authAdminResponse.getId());
authAdminResponse.setRoles(roles);
return authAdminResponse;
}).collect(Collectors.toList());
PageInfo<AuthAdmin> authAdminPageInfo = new PageInfo<>(authAdminList);
PageSimpleResponse<AuthAdminResponse> authAdminPageSimpleResponse = new PageSimpleResponse<>();
authAdminPageSimpleResponse.setTotal(authAdminPageInfo.getTotal());
authAdminPageSimpleResponse.setList(authAdminResponseList);
return ResultVOUtils.success(authAdminPageSimpleResponse);
}
/**
*
*
* @param userId ID
*/
@SaCheckPermission("system:user:query")
@GetMapping(value = {"/", "/{userId}"})
public BaseResponse getInfo(@PathVariable(value = "userId", required = false) Long userId) {
Map<String, Object> ajax = new HashMap<>();
List<SysRole> roles = roleService.selectRoleAll();
ajax.put("roles", isAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isAdmin()));
if (ObjectUtil.isNotNull(userId)) {
AuthAdmin sysUser = userService.findById(userId);
ajax.put("user", sysUser);
ajax.put("roleIds", StreamUtils.toList(sysUser.getRoles(), SysRole::getRoleId));
}
return ResultVOUtils.success(ajax);
}
/**
*
*
* @param userId ID
*/
@SaCheckPermission("system:user:query")
@GetMapping("/authRole/{userId}")
public BaseResponse authRole(@PathVariable Long userId) {
AuthAdmin user = userService.findById(userId);
List<SysRole> roles = roleService.selectRolesByUserId(userId);
Map<String, Object> ajax = new HashMap<>();
ajax.put("user", user);
ajax.put("roles", isAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isAdmin()));
return ResultVOUtils.success(ajax);
}
/**
*
*
* @param userId Id
* @param roleIds ID
*/
@SaCheckPermission("system:user:edit")
@PutMapping("/authRole")
public BaseResponse inseinsertUserAuthrtAuthRole(Long userId, Long[] roleIds) {
userService.insertUserAuth(userId, CollUtil.toList(roleIds));
return ResultVOUtils.success("授权成功!");
}
@PostMapping("/save")
public BaseResponse save(@RequestBody @Valid AuthAdminSaveRequest authAdminSaveRequest,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
AuthAdmin curUser = getUser();
// if (!curUser.getCustomerId().equals("110")) {
// CustomerInfoEntity customerInfoEntity = customerInfoService.selectById(curUser.getCustomerId());
// int max = customerInfoEntity.getUserMax();
// int count = userService.findCountByCustomerId(authAdminSaveRequest.getCustomerId());
// if (count >= max) {
// return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "已超过最大用户数");
// }
// }
// 检查是否存在相同名称的管理员
AuthAdmin byUserName = userService.findByUserName(authAdminSaveRequest.getUserName());
if (byUserName != null) {
return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "当前管理员已存在");
}
AuthAdmin authAdmin = new AuthAdmin();
BeanUtils.copyProperties(authAdminSaveRequest, authAdmin);
if (authAdmin.getPassWord() != null) {
authAdmin.setPassWord(PasswordUtils.authAdminPwd(authAdmin.getPassWord()));
}
authAdmin.setCustomerId(curUser.getCustomerId());
authAdmin.setLastModifyTime(new Date());
boolean b = userService.insertAuthAdmin(authAdmin);
authAdmin = userService.findByUserName(authAdmin.getUserName());
if (!b) {
return ResultVOUtils.error(ResultEnum.NOT_NETWORK);
}
// 插入角色
if (authAdminSaveRequest.getRoles() != null) {
userService.insertUserAuth(authAdmin.getId(), authAdminSaveRequest.getRoles());
}
Map<String, Long> res = new HashMap<>();
res.put("id", authAdmin.getId());
return ResultVOUtils.success(res);
}
/**
*
*/
@PostMapping("/edit")
public BaseResponse edit(@RequestBody @Valid AuthAdminSaveRequest authAdminSaveRequest,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
if (authAdminSaveRequest.getId() == null) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数错误!");
}
// 检查是否存在除了当前管理员的其它名称的管理员
AuthAdmin byUserName = userService.findByUserName(authAdminSaveRequest.getUserName());
if (byUserName != null && !authAdminSaveRequest.getId().equals(byUserName.getId())) {
return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "当前管理员已存在");
}
AuthAdmin authAdmin = new AuthAdmin();
BeanUtils.copyProperties(authAdminSaveRequest, authAdmin);
if (authAdmin.getPassWord() != null) {
authAdmin.setPassWord(PasswordUtils.authAdminPwd(authAdmin.getPassWord()));
}
authAdmin.setLastModifyTime(new Date());
boolean b = userService.updateAuthAdmin(authAdmin);
if (!b) {
return ResultVOUtils.error(ResultEnum.NOT_NETWORK);
}
// 修改角色
if (authAdminSaveRequest.getRoles() != null && authAdminSaveRequest.getRoles().size() > 0) {
userService.insertUserAuth(authAdmin.getId(), authAdminSaveRequest.getRoles());
}
return ResultVOUtils.success();
}
}

@ -73,4 +73,9 @@ public interface AuthAdminDao {
*/
List<AuthAdmin> selectHospitalUser();
List<AuthAdmin> selectAllocatedList(AuthAdminQueryRequest authAdminQueryRequest);
List<AuthAdmin> selectUnallocatedList(AuthAdminQueryRequest authAdminQueryRequest);
}

@ -0,0 +1,31 @@
package com.glxp.api.admin.dao.auth;
import com.glxp.api.admin.entity.auth.SysDictData;
import com.glxp.api.admin.req.auth.SysDictDataRequest;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
*/
@Mapper
public interface SysDictDataMapper {
List<SysDictData> selectDictDataList(SysDictDataRequest sysDictDataRequest);
SysDictData selectById(@Param("dictCode") Long dictCode);
int deleteById(Long dictCode);
int insert(SysDictData sysDictData);
int updateById(SysDictData sysDictData);
int updateByType(SysDictData sysDictData);
SysDictData exists(SysDictDataRequest sysDictDataRequest);
}

@ -0,0 +1,29 @@
package com.glxp.api.admin.dao.auth;
import com.glxp.api.admin.entity.auth.SysDictType;
import com.glxp.api.admin.req.auth.SysDictTypeRequest;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
*/
@Mapper
public interface SysDictTypeMapper {
List<SysDictType> selectDictTypeList(SysDictTypeRequest sysDictTypeRequest);
SysDictType selectById(Long dictId);
int deleteBatchIds(@Param("dictIds") List<Long> dictIds);
int insert(SysDictType sysDictType);
int updateById(SysDictType sysDictType);
SysDictType exists(SysDictTypeRequest sysDictTypeRequest);
}

@ -0,0 +1,80 @@
package com.glxp.api.admin.dao.auth;
import com.glxp.api.admin.entity.auth.SysMenu;
import com.glxp.api.admin.req.auth.SysMenuRequest;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface SysMenuDao {
SysMenu selectById(Long id);
int insert(SysMenu menu);
int updateById(SysMenu menu);
int deleteById(Long id);
List<SysMenu> selectMenuList(SysMenuRequest sysMenuRequest);
/**
*
*
* @return
*/
List<String> selectMenuPerms();
/**
*
*
* @return
*/
List<SysMenu> selectMenuListByUserId(SysMenuRequest sysMenuRequest);
/**
* ID
*
* @param userId ID
* @return
*/
List<String> selectMenuPermsByUserId(Long userId);
/**
* ID
*
* @param roleId ID
* @return
*/
List<String> selectMenuPermsByRoleId(Long roleId);
/**
* ID
*
* @return
*/
List<SysMenu> selectMenuTreeAll();
/**
* ID
*
* @param userId ID
* @return
*/
List<SysMenu> selectMenuTreeByUserId(Long userId);
/**
* ID
*
* @param roleId ID
* @param menuCheckStrictly
* @return
*/
List<Long> selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly);
}

@ -0,0 +1,57 @@
package com.glxp.api.admin.dao.auth;
import com.glxp.api.admin.entity.auth.SysRole;
import com.glxp.api.admin.req.auth.SysRoleRequest;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface SysRoleMapper {
int insert(SysRole sysRole);
int updateById(SysRole sysRole);
int delete(Long id);
SysRole selectById(Long id);
int deleteBatchIds(@Param("ids") List<Long> ids);
/**
*
*
* @return
*/
List<SysRole> selectRoleList(SysRoleRequest sysRoleRequest);
/**
* ID
*
* @param userId ID
* @return
*/
List<SysRole> selectRolePermissionByUserId(Long userId);
/**
* ID
*
* @param userId ID
* @return ID
*/
List<Long> selectRoleListByUserId(Long userId);
/**
* ID
*
* @param userName
* @return
*/
List<SysRole> selectRolesByUserName(String userName);
}

@ -0,0 +1,24 @@
package com.glxp.api.admin.dao.auth;
import com.glxp.api.admin.entity.auth.SysRoleMenu;
import com.glxp.api.admin.req.auth.SysRoleMenuRequest;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface SysRoleMenuMapper {
List<SysRoleMenu> selectRoleMenuList(SysRoleMenuRequest sysRoleMenu);
int deleteById(Long id);
int deleteByList(@Param("ids") List<Long> ids);
int insertBatch(List<SysRoleMenu> list);
}

@ -0,0 +1,18 @@
package com.glxp.api.admin.dao.auth;
import com.glxp.api.admin.entity.auth.SysUserRole;
import com.glxp.api.admin.req.auth.SysUserRoleRequest;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface SysUserRoleMapper {
List<Long> selectUserIdsByRoleId(Long roleId);
int delete(SysUserRoleRequest sysUserRoleRequest);
int insertBatch(@Param("sysUserRoles") List<SysUserRole> sysUserRoles);
}

@ -0,0 +1,46 @@
package com.glxp.api.admin.entity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Data
public class BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private String searchValue;
/**
*
*/
private String createBy;
/**
*
*/
private Date createTime;
/**
*
*/
private String updateBy;
/**
*
*/
private Date updateTime;
/**
*
*/
private Map<String, Object> params = new HashMap<>();
}

@ -1,8 +1,10 @@
package com.glxp.api.admin.entity.auth;
import com.glxp.api.admin.constant.Constant;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class AuthAdmin {
@ -32,4 +34,13 @@ public class AuthAdmin {
private String dept;
private String deptName;
private List<SysRole> roles;
private Long[] roleIds;
public boolean isAdmin() {
return Constant.ADMIN_ID.equals(this.id + "");
}
}

@ -0,0 +1,98 @@
package com.glxp.api.admin.entity.auth;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
import java.util.Set;
@Data
@NoArgsConstructor
public class LoginUser implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID
*/
private Long userId;
/**
* ID
*/
private String deptId;
/**
*
*/
private String deptName;
/**
*
*/
private String token;
/**
*
*/
private String userType;
/**
*
*/
private Long loginTime;
/**
*
*/
private Long expireTime;
/**
* IP
*/
private String ipaddr;
/**
*
*/
private String loginLocation;
/**
*
*/
private String browser;
/**
*
*/
private String os;
/**
*
*/
private Set<String> menuPermission;
/**
*
*/
private Set<String> rolePermission;
/**
*
*/
private String username;
/**
*
*/
private List<RoleEntity> roles;
/**
* ID
*/
private Long roleId;
}

@ -0,0 +1,60 @@
package com.glxp.api.admin.entity.auth;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import lombok.Data;
/**
*
*/
@Data
public class MetaEntity {
/**
*
*/
private String title;
/**
* src/assets/icons/svg
*/
private String icon;
/**
* true <keep-alive>
*/
private boolean noCache;
/**
* http(s)://开头)
*/
private String link;
public MetaEntity(String title, String icon) {
this.title = title;
this.icon = icon;
}
public MetaEntity(String title, String icon, boolean noCache) {
this.title = title;
this.icon = icon;
this.noCache = noCache;
}
public MetaEntity(String title, String icon, String link) {
this.title = title;
this.icon = icon;
this.link = link;
}
public MetaEntity(String title, String icon, boolean noCache, String link) {
this.title = title;
this.icon = icon;
this.noCache = noCache;
if (StrUtil.isNotEmpty(link) && HttpUtil.isHttp(link)) {
this.link = link;
}
}
}

@ -0,0 +1,36 @@
package com.glxp.api.admin.entity.auth;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
*
*/
@Data
@NoArgsConstructor
public class RoleEntity implements Serializable {
/**
* ID
*/
private Long roleId;
/**
*
*/
private String roleName;
/**
*
*/
private String roleKey;
/**
* 12345
*/
private String dataScope;
}

@ -0,0 +1,58 @@
package com.glxp.api.admin.entity.auth;
import lombok.Data;
import java.util.List;
/**
*
*/
@Data
public class RouterEntity {
/**
*
*/
private String name;
/**
*
*/
private String path;
/**
* true
*/
private boolean hidden;
/**
* noRedirect
*/
private String redirect;
/**
*
*/
private String component;
/**
* {"id": 1, "name": "ry"}
*/
private String query;
/**
* children 1--
*/
private Boolean alwaysShow;
/**
*
*/
private MetaEntity meta;
/**
*
*/
private List<RouterEntity> children;
}

@ -0,0 +1,77 @@
package com.glxp.api.admin.entity.auth;
import com.glxp.api.admin.constant.Constant;
import com.glxp.api.admin.entity.BaseEntity;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* sys_dict_data
*/
@Data
public class SysDictData extends BaseEntity {
/**
*
*/
private Long dictCode;
/**
*
*/
private Integer dictSort;
/**
*
*/
@Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符")
private String dictLabel;
/**
*
*/
@NotBlank(message = "字典键值不能为空")
@Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符")
private String dictValue;
/**
*
*/
@NotBlank(message = "字典类型不能为空")
@Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符")
private String dictType;
/**
*
*/
@Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符")
private String cssClass;
/**
*
*/
private String listClass;
/**
* Y N
*/
private String isDefault;
/**
* 0 1
*/
private String status;
/**
*
*/
private String remark;
public boolean getDefault() {
return Constant.YES.equals(this.isDefault);
}
}

@ -0,0 +1,44 @@
package com.glxp.api.admin.entity.auth;
import com.glxp.api.admin.entity.BaseEntity;
import lombok.Data;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
/**
* sys_dict_type
*/
@Data
public class SysDictType extends BaseEntity {
/**
*
*/
private Long dictId;
/**
*
*/
@Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符")
private String dictName;
/**
*
*/
@Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符")
@Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)")
private String dictType;
/**
* 0 1
*/
private String status;
/**
*
*/
private String remark;
}

@ -0,0 +1,82 @@
package com.glxp.api.admin.entity.auth;
import lombok.Data;
@Data
public class SysMenu extends TreeEntity<SysMenu> {
/**
* ID
*/
private Long menuId;
/**
*
*/
private String menuName;
/**
*
*/
private Integer orderNum;
/**
*
*/
private String path;
/**
*
*/
private String component;
/**
*
*/
private String queryParam;
/**
* 0 1
*/
private String isFrame;
/**
* 0 1
*/
private String isCache;
/**
* M C F
*/
private String menuType;
/**
* 0 1
*/
private String visible;
/**
* 0 1
*/
private String status;
/**
*
*/
private String perms;
/**
*
*/
private String icon;
/**
*
*/
private String remark;
private Long neMenuId;
}

@ -0,0 +1,106 @@
package com.glxp.api.admin.entity.auth;
import com.glxp.api.admin.entity.BaseEntity;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Set;
/**
* sys_role
*
* @author Lion Li
*/
@Data
public class SysRole extends BaseEntity {
/**
* ID
*/
private Long roleId;
/**
*
*/
@NotBlank(message = "角色名称不能为空")
@Size(min = 0, max = 30, message = "角色名称长度不能超过30个字符")
private String roleName;
/**
*
*/
@NotBlank(message = "权限字符不能为空")
@Size(min = 0, max = 100, message = "权限字符长度不能超过100个字符")
private String roleKey;
/**
*
*/
@NotNull(message = "显示顺序不能为空")
private Integer roleSort;
/**
* 12345
*/
private String dataScope;
/**
* 0 1
*/
private Boolean menuCheckStrictly;
/**
* 0 1
*/
private Boolean deptCheckStrictly;
/**
* 0 1
*/
private String status;
/**
* 0 2
*/
private String delFlag;
/**
*
*/
private String remark;
/**
*
*/
private boolean flag = false;
/**
*
*/
private Long[] menuIds;
/**
*
*/
private Long[] deptIds;
/**
*
*/
private Set<String> permissions;
public SysRole() {
}
public SysRole(Long roleId) {
this.roleId = roleId;
}
public boolean isAdmin() {
return "1".equals(this.roleId);
}
}

@ -0,0 +1,18 @@
package com.glxp.api.admin.entity.auth;
import lombok.Data;
@Data
public class SysRoleMenu {
/**
* ID
*/
private Long roleId;
/**
* ID
*/
private Long menuId;
}

@ -0,0 +1,17 @@
package com.glxp.api.admin.entity.auth;
import lombok.Data;
/**
* sys_user_role
*
* @author Lion Li
*/
@Data
public class SysUserRole {
private Long userId;
private Long roleId;
}

@ -0,0 +1,32 @@
package com.glxp.api.admin.entity.auth;
import com.glxp.api.admin.entity.BaseEntity;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* Tree
*/
@Data
public class TreeEntity<T> extends BaseEntity {
/**
*
*/
private String parentName;
/**
* ID
*/
private Long parentId;
/**
*
*/
private List<T> children = new ArrayList<>();
}

@ -0,0 +1,62 @@
package com.glxp.api.admin.exception;
/**
*
*/
public final class ServiceException extends RuntimeException {
private static final long serialVersionUID = 1L;
/**
*
*/
private Integer code;
/**
*
*/
private String message;
/**
*
* <p>
*/
private String detailMessage;
/**
*
*/
public ServiceException() {
}
public ServiceException(String message) {
this.message = message;
}
public ServiceException(String message, Integer code) {
this.message = message;
this.code = code;
}
public String getDetailMessage() {
return detailMessage;
}
@Override
public String getMessage() {
return message;
}
public Integer getCode() {
return code;
}
public ServiceException setMessage(String message) {
this.message = message;
return this;
}
public ServiceException setDetailMessage(String detailMessage) {
this.detailMessage = detailMessage;
return this;
}
}

@ -0,0 +1,14 @@
package com.glxp.api.admin.req.auth;
import com.glxp.api.admin.req.ListPageRequest;
import lombok.Data;
@Data
public class SysDictDataRequest extends ListPageRequest {
private String dictType;
private String status;
private String dictLabel;
private String dictValue;
}

@ -0,0 +1,16 @@
package com.glxp.api.admin.req.auth;
import com.glxp.api.admin.req.ListPageRequest;
import lombok.Data;
@Data
public class SysDictTypeRequest extends ListPageRequest {
private Long dictId;
private String dictName;
private String dictType;
private String status;
}

@ -0,0 +1,91 @@
package com.glxp.api.admin.req.auth;
import com.glxp.api.admin.req.ListPageRequest;
import lombok.Data;
@Data
public class SysMenuRequest extends ListPageRequest {
private String parentName;
/**
* ID
*/
private Long parentId;
/**
* ID
*/
private Long menuId;
/**
*
*/
private String menuName;
/**
*
*/
private Integer orderNum;
/**
*
*/
private String path;
/**
*
*/
private String component;
/**
*
*/
private String queryParam;
/**
* 0 1
*/
private String isFrame;
/**
* 0 1
*/
private String isCache;
/**
* M C F
*/
private String menuType;
/**
* 0 1
*/
private String visible;
/**
* 0 1
*/
private String status;
/**
*
*/
private String perms;
/**
*
*/
private String icon;
/**
*
*/
private String remark;
private String neMenuId;
}

@ -0,0 +1,19 @@
package com.glxp.api.admin.req.auth;
import com.glxp.api.admin.req.ListPageRequest;
import lombok.Data;
@Data
public class SysRoleMenuRequest extends ListPageRequest {
/**
* ID
*/
private Long roleId;
/**
* ID
*/
private Long menuId;
}

@ -0,0 +1,18 @@
package com.glxp.api.admin.req.auth;
import com.glxp.api.admin.req.ListPageRequest;
import lombok.Data;
@Data
public class SysRoleRequest extends ListPageRequest {
private Long roleId;
private String roleName;
private String roleKey;
private String neRoleName;
private String neRoleKey;
private Long neRoleId;
}

@ -0,0 +1,12 @@
package com.glxp.api.admin.req.auth;
import com.glxp.api.admin.req.ListPageRequest;
import lombok.Data;
@Data
public class SysUserRoleRequest extends ListPageRequest {
private Long userId;
private Long roleId;
}

@ -3,6 +3,7 @@ package com.glxp.api.admin.res.auth;
import lombok.Data;
import java.util.List;
import java.util.Set;
/**
*
@ -21,4 +22,11 @@ public class LoginUserInfoResponse {
private String locInvName;
private String locSubInvName;
Set<String> roles; //用户角色
Set<String> permissions; //用户权限
private String CustomerId;
private String companyName;
}

@ -30,4 +30,13 @@ public interface AuthAdminService {
* @return
*/
List<AuthAdmin> getHospitalUserList();
List<AuthAdmin> selectAllocatedList(AuthAdminQueryRequest authAdminQueryRequest);
List<AuthAdmin> selectUnallocatedList(AuthAdminQueryRequest authAdminQueryRequest);
void insertUserAuth(Long userId, List<Long> roleIds);
}

@ -0,0 +1,62 @@
package com.glxp.api.admin.service.auth;
import com.glxp.api.admin.entity.auth.SysDictData;
import com.glxp.api.admin.req.auth.SysDictDataRequest;
import java.util.List;
/**
*
*/
public interface ISysDictDataService {
/**
*
*
* @param dictData
* @return
*/
List<SysDictData> selectDictDataList(SysDictDataRequest sysDictDataRequest);
/**
*
*
* @param dictType
* @param dictValue
* @return
*/
String selectDictLabel(String dictType, String dictValue);
/**
* ID
*
* @param dictCode ID
* @return
*/
SysDictData selectDictDataById(Long dictCode);
/**
*
*
* @param dictCodes ID
*/
void deleteDictDataByIds(Long[] dictCodes);
/**
*
*
* @param dictData
* @return
*/
List<SysDictData> insertDictData(SysDictData dictData);
/**
*
*
* @param dictData
* @return
*/
List<SysDictData> updateDictData(SysDictData dictData);
}

@ -0,0 +1,97 @@
package com.glxp.api.admin.service.auth;
import com.glxp.api.admin.entity.auth.SysDictData;
import com.glxp.api.admin.entity.auth.SysDictType;
import com.glxp.api.admin.req.auth.SysDictTypeRequest;
import java.util.List;
/**
*
*/
public interface ISysDictTypeService {
List<SysDictType> selectDictTypeList(SysDictTypeRequest sysDictTypeRequest);
/**
*
*
* @return
*/
List<SysDictType> selectDictTypeAll();
/**
*
*
* @param dictType
* @return
*/
List<SysDictData> selectDictDataByType(String dictType);
/**
* ID
*
* @param dictId ID
* @return
*/
SysDictType selectDictTypeById(Long dictId);
/**
*
*
* @param dictType
* @return
*/
SysDictType selectDictTypeByType(String dictType);
/**
*
*
* @param dictIds ID
*/
void deleteDictTypeByIds(Long[] dictIds);
/**
*
*/
void resetDictCache();
/**
*
*
* @param dictType
* @return
*/
List<SysDictData> insertDictType(SysDictType dictType);
/**
*
*
* @param dictType
* @return
*/
List<SysDictData> updateDictType(SysDictType dictType);
/**
*
*
* @param dictType
* @return
*/
String checkDictTypeUnique(SysDictType dictType);
String getDictLabel(String dictType, String dictValue, String separator);
/**
*
*
* @param dictType
* @param dictLabel
* @param separator
* @return
*/
String getDictValue(String dictType, String dictLabel, String separator);
}

@ -0,0 +1,132 @@
package com.glxp.api.admin.service.auth;
import cn.hutool.core.lang.tree.Tree;
import com.glxp.api.admin.entity.auth.RouterEntity;
import com.glxp.api.admin.entity.auth.SysMenu;
import java.util.List;
import java.util.Set;
public interface ISysMenuService {
/**
*
*
* @param userId ID
* @return
*/
List<SysMenu> selectMenuList(Long userId);
/**
*
*
* @param menu
* @param userId ID
* @return
*/
List<SysMenu> selectMenuList(SysMenu menu, Long userId);
/**
* ID
*
* @param userId ID
* @return
*/
Set<String> selectMenuPermsByUserId(Long userId);
/**
* ID
*
* @param roleId ID
* @return
*/
Set<String> selectMenuPermsByRoleId(Long roleId);
/**
* ID
*
* @param userId ID
* @return
*/
List<SysMenu> selectMenuTreeByUserId(Long userId);
/**
* ID
*
* @param roleId ID
* @return
*/
List<Long> selectMenuListByRoleId(Long roleId);
/**
*
*
* @param menus
* @return
*/
List<RouterEntity> buildMenus(List<SysMenu> menus);
/**
*
*
* @param menus
* @return
*/
List<Tree<Long>> buildMenuTreeSelect(List<SysMenu> menus);
/**
* ID
*
* @param menuId ID
* @return
*/
SysMenu selectMenuById(Long menuId);
/**
*
*
* @param menuId ID
* @return true false
*/
boolean hasChildByMenuId(Long menuId);
/**
*
*
* @param menuId ID
* @return true false
*/
boolean checkMenuExistRole(Long menuId);
/**
*
*
* @param menu
* @return
*/
int insertMenu(SysMenu menu);
/**
*
*
* @param menu
* @return
*/
int updateMenu(SysMenu menu);
/**
*
*
* @param menuId ID
* @return
*/
int deleteMenuById(Long menuId);
/**
*
*
* @param menu
* @return
*/
String checkMenuNameUnique(SysMenu menu);
}

@ -0,0 +1,176 @@
package com.glxp.api.admin.service.auth;
import com.glxp.api.admin.entity.auth.SysRole;
import com.glxp.api.admin.entity.auth.SysUserRole;
import com.glxp.api.admin.req.auth.SysRoleRequest;
import java.util.List;
import java.util.Set;
/**
*
*/
public interface ISysRoleService {
List<SysRole> selectPageRoleList(SysRoleRequest sysRoleRequest);
/**
*
*
* @return
*/
List<SysRole> selectRoleList(SysRoleRequest sysRoleRequest);
/**
* ID
*
* @param userId ID
* @return
*/
List<SysRole> selectRolesByUserId(Long userId);
/**
* ID
*
* @param userId ID
* @return
*/
Set<String> selectRolePermissionByUserId(Long userId);
/**
*
*
* @return
*/
List<SysRole> selectRoleAll();
/**
* ID
*
* @param userId ID
* @return ID
*/
List<Long> selectRoleListByUserId(Long userId);
/**
* ID
*
* @param roleId ID
* @return
*/
SysRole selectRoleById(Long roleId);
/**
*
*
* @param role
* @return
*/
String checkRoleNameUnique(SysRole role);
/**
*
*
* @param role
* @return
*/
String checkRoleKeyUnique(SysRole role);
/**
*
*
* @param role
*/
void checkRoleAllowed(SysRole role);
/**
*
*
* @param roleId id
*/
void checkRoleDataScope(Long roleId);
/**
* ID使
*
* @param roleId ID
* @return
*/
long countUserRoleByRoleId(Long roleId);
/**
*
*
* @param role
* @return
*/
int insertRole(SysRole role);
/**
*
*
* @param role
* @return
*/
int updateRole(SysRole role);
/**
*
*
* @param role
* @return
*/
int updateRoleStatus(SysRole role);
/**
*
*
* @param role
* @return
*/
int authDataScope(SysRole role);
/**
* ID
*
* @param roleId ID
* @return
*/
int deleteRoleById(Long roleId);
/**
*
*
* @param roleIds ID
* @return
*/
int deleteRoleByIds(Long[] roleIds);
/**
*
*
* @param userRole
* @return
*/
int deleteAuthUser(SysUserRole userRole);
/**
*
*
* @param roleId ID
* @param userIds ID
* @return
*/
int deleteAuthUsers(Long roleId, Long[] userIds);
/**
*
*
* @param roleId ID
* @param userIds ID
* @return
*/
int insertAuthUsers(Long roleId, Long[] userIds);
}

@ -0,0 +1,62 @@
package com.glxp.api.admin.service.auth;
import com.glxp.api.admin.entity.auth.AuthAdmin;
import com.glxp.api.admin.entity.auth.SysRole;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@RequiredArgsConstructor
@Service
public class SysPermissionService {
private final ISysRoleService roleService;
private final ISysMenuService menuService;
/**
*
*
* @param user
* @return
*/
public Set<String> getRolePermission(AuthAdmin user) {
Set<String> roles = new HashSet<String>();
// 管理员拥有所有权限
if (user.isAdmin()) {
roles.add("admin");
} else {
roles.addAll(roleService.selectRolePermissionByUserId(user.getId()));
}
return roles;
}
/**
*
*
* @param user
* @return
*/
public Set<String> getMenuPermission(AuthAdmin user) {
Set<String> perms = new HashSet<String>();
// 管理员拥有所有权限
if (user.isAdmin()) {
perms.add("*:*:*");
} else {
List<SysRole> roles = user.getRoles();
if (!roles.isEmpty() && roles.size() > 1) {
// 多角色设置permissions属性以便数据权限匹配权限
for (SysRole role : roles) {
Set<String> rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId());
role.setPermissions(rolePerms);
perms.addAll(rolePerms);
}
} else {
perms.addAll(menuService.selectMenuPermsByUserId(user.getId()));
}
}
return perms;
}
}

@ -1,15 +1,20 @@
package com.glxp.api.admin.service.auth.impl;
import cn.hutool.core.util.ArrayUtil;
import com.github.pagehelper.PageHelper;
import com.glxp.api.admin.dao.auth.AuthAdminDao;
import com.glxp.api.admin.dao.auth.SysUserRoleMapper;
import com.glxp.api.admin.entity.auth.AuthAdmin;
import com.glxp.api.admin.entity.auth.SysUserRole;
import com.glxp.api.admin.exception.JsonException;
import com.glxp.api.admin.req.auth.AuthAdminQueryRequest;
import com.glxp.api.admin.req.auth.SysUserRoleRequest;
import com.glxp.api.admin.service.auth.AuthAdminService;
import com.glxp.api.common.enums.ResultEnum;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
@ -19,6 +24,8 @@ public class AuthAdminServiceImpl implements AuthAdminService {
@Resource
private AuthAdminDao authAdminDao;
@Resource
SysUserRoleMapper sysUserRoleMapper;
@Override
public List<AuthAdmin> listAdminPage(AuthAdminQueryRequest authAdminQueryRequest) {
@ -120,4 +127,39 @@ public class AuthAdminServiceImpl implements AuthAdminService {
return authAdminDao.selectHospitalUser();
}
@Override
public List<AuthAdmin> selectAllocatedList(AuthAdminQueryRequest authAdminQueryRequest) {
return authAdminDao.selectAllocatedList(authAdminQueryRequest);
}
@Override
public List<AuthAdmin> selectUnallocatedList(AuthAdminQueryRequest authAdminQueryRequest) {
return authAdminDao.selectUnallocatedList(authAdminQueryRequest);
}
@Override
public void insertUserAuth(Long userId, List<Long> roleIds) {
SysUserRoleRequest sysUserRoleRequest = new SysUserRoleRequest();
sysUserRoleRequest.setUserId(userId);
sysUserRoleMapper.delete(sysUserRoleRequest);
insertUserRole(userId, roleIds);
}
public void insertUserRole(Long userId, List<Long> roleIds) {
if (ArrayUtil.isNotEmpty(roleIds)) {
// 新增用户与角色管理
List<SysUserRole> list = new ArrayList<>(roleIds.size());
for (Long roleId : roleIds) {
SysUserRole ur = new SysUserRole();
ur.setUserId(userId);
ur.setRoleId(roleId);
list.add(ur);
}
sysUserRoleMapper.insertBatch(list);
}
}
}

@ -0,0 +1,84 @@
package com.glxp.api.admin.service.auth.impl;
import cn.hutool.core.collection.CollUtil;
import com.github.pagehelper.PageHelper;
import com.glxp.api.admin.dao.auth.SysDictDataMapper;
import com.glxp.api.admin.entity.auth.SysDictData;
import com.glxp.api.admin.exception.ServiceException;
import com.glxp.api.admin.req.auth.SysDictDataRequest;
import com.glxp.api.admin.service.auth.ISysDictDataService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
*
*/
@Service
public class SysDictDataServiceImpl implements ISysDictDataService {
@Resource
SysDictDataMapper baseMapper;
@Override
public List<SysDictData> selectDictDataList(SysDictDataRequest sysDictDataRequest) {
if (sysDictDataRequest.getPage() != null) {
int offset = (sysDictDataRequest.getPage() - 1) * sysDictDataRequest.getLimit();
PageHelper.offsetPage(offset, sysDictDataRequest.getLimit());
}
return baseMapper.selectDictDataList(sysDictDataRequest);
}
@Override
public String selectDictLabel(String dictType, String dictValue) {
SysDictDataRequest sysDictDataRequest = new SysDictDataRequest();
sysDictDataRequest.setDictType(dictType);
sysDictDataRequest.setDictValue(dictValue);
List<SysDictData> dictData = baseMapper.selectDictDataList(sysDictDataRequest);
if (CollUtil.isNotEmpty(dictData))
return dictData.get(0).getDictLabel();
else
return null;
}
@Override
public SysDictData selectDictDataById(Long dictCode) {
return baseMapper.selectById(dictCode);
}
@Override
public void deleteDictDataByIds(Long[] dictCodes) {
for (Long dictCode : dictCodes) {
SysDictData data = selectDictDataById(dictCode);
baseMapper.deleteById(dictCode);
}
}
@Override
public List<SysDictData> insertDictData(SysDictData data) {
int row = baseMapper.insert(data);
if (row > 0) {
SysDictDataRequest sysDictDataRequest = new SysDictDataRequest();
sysDictDataRequest.setDictType(data.getDictType());
return baseMapper.selectDictDataList(sysDictDataRequest);
}
throw new ServiceException("操作失败");
}
@Override
public List<SysDictData> updateDictData(SysDictData data) {
int row = baseMapper.updateById(data);
if (row > 0) {
SysDictDataRequest sysDictDataRequest = new SysDictDataRequest();
sysDictDataRequest.setDictType(data.getDictType());
return baseMapper.selectDictDataList(sysDictDataRequest);
}
throw new ServiceException("操作失败");
}
}

@ -0,0 +1,239 @@
package com.glxp.api.admin.service.auth.impl;
import cn.hutool.core.collection.CollUtil;
import com.github.pagehelper.PageHelper;
import com.glxp.api.admin.constant.Constant;
import com.glxp.api.admin.dao.auth.SysDictDataMapper;
import com.glxp.api.admin.dao.auth.SysDictTypeMapper;
import com.glxp.api.admin.entity.auth.SysDictData;
import com.glxp.api.admin.entity.auth.SysDictType;
import com.glxp.api.admin.exception.ServiceException;
import com.glxp.api.admin.req.auth.SysDictDataRequest;
import com.glxp.api.admin.req.auth.SysDictTypeRequest;
import com.glxp.api.admin.service.auth.ISysDictTypeService;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
*
*/
@RequiredArgsConstructor
@Service
public class SysDictTypeServiceImpl implements ISysDictTypeService {
private final SysDictTypeMapper baseMapper;
private final SysDictDataMapper dictDataMapper;
@Override
public List<SysDictType> selectDictTypeList(SysDictTypeRequest sysDictTypeRequest) {
if (sysDictTypeRequest.getPage() != null) {
int offset = (sysDictTypeRequest.getPage() - 1) * sysDictTypeRequest.getLimit();
PageHelper.offsetPage(offset, sysDictTypeRequest.getLimit());
}
return baseMapper.selectDictTypeList(sysDictTypeRequest);
}
@Override
public List<SysDictType> selectDictTypeAll() {
return baseMapper.selectDictTypeList(new SysDictTypeRequest());
}
/**
*
*
* @param dictType
* @return
*/
@Override
public List<SysDictData> selectDictDataByType(String dictType) {
SysDictDataRequest sysDictTypeRequest = new SysDictDataRequest();
sysDictTypeRequest.setDictType(dictType);
List<SysDictData> dictDatas = dictDataMapper.selectDictDataList(sysDictTypeRequest);
if (CollUtil.isNotEmpty(dictDatas)) {
return dictDatas;
}
return null;
}
/**
* ID
*
* @param dictId ID
* @return
*/
@Override
public SysDictType selectDictTypeById(Long dictId) {
return baseMapper.selectById(dictId);
}
/**
*
*
* @param dictType
* @return
*/
@Override
public SysDictType selectDictTypeByType(String dictType) {
SysDictTypeRequest sysDictTypeRequest = new SysDictTypeRequest();
sysDictTypeRequest.setDictType(dictType);
List<SysDictType> sysDictTypes = baseMapper.selectDictTypeList(sysDictTypeRequest);
if (CollUtil.isNotEmpty(sysDictTypes)) {
return sysDictTypes.get(0);
} else
return null;
}
/**
*
*
* @param dictIds ID
*/
@Override
public void deleteDictTypeByIds(Long[] dictIds) {
for (Long dictId : dictIds) {
SysDictType dictType = selectDictTypeById(dictId);
SysDictDataRequest sysDictDataRequest = new SysDictDataRequest();
sysDictDataRequest.setDictType(dictType.getDictType());
SysDictData sysDictData = dictDataMapper.exists(sysDictDataRequest);
if (sysDictData != null) {
throw new ServiceException(String.format("%1$s已分配,不能删除", dictType.getDictName()));
}
}
baseMapper.deleteBatchIds(Arrays.asList(dictIds));
}
/**
*
*/
@Override
public void resetDictCache() {
}
/**
*
*
* @param dict
* @return
*/
@Override
public List<SysDictData> insertDictType(SysDictType dict) {
int row = baseMapper.insert(dict);
if (row > 0) {
return new ArrayList<>();
}
throw new ServiceException("操作失败");
}
/**
*
*
* @param dict
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public List<SysDictData> updateDictType(SysDictType dict) {
SysDictType oldDict = baseMapper.selectById(dict.getDictId());
// dictDataMapper.updateByType(null, new LambdaUpdateWrapper<SysDictData>()
// .set(SysDictData::getDictType, dict.getDictType())
// .eq(SysDictData::getDictType, oldDict.getDictType()));
int row = baseMapper.updateById(dict);
if (row > 0) {
SysDictDataRequest sysDictDataRequest = new SysDictDataRequest();
sysDictDataRequest.setDictType(dict.getDictType());
return dictDataMapper.selectDictDataList(sysDictDataRequest);
}
throw new ServiceException("操作失败");
}
/**
*
*
* @param dict
* @return
*/
@Override
public String checkDictTypeUnique(SysDictType dict) {
SysDictTypeRequest sysDictTypeRequest = new SysDictTypeRequest();
sysDictTypeRequest.setDictType(dict.getDictType());
SysDictType exist = baseMapper.exists(sysDictTypeRequest);
if (exist == null) {
return Constant.NOT_UNIQUE;
}
return Constant.UNIQUE;
}
/**
*
*
* @param dictType
* @param dictValue
* @param separator
* @return
*/
@Override
public String getDictLabel(String dictType, String dictValue, String separator) {
StringBuilder propertyString = new StringBuilder();
List<SysDictData> datas = selectDictDataByType(dictType);
if (StringUtils.containsAny(dictValue, separator) && CollUtil.isNotEmpty(datas)) {
for (SysDictData dict : datas) {
for (String value : dictValue.split(separator)) {
if (value.equals(dict.getDictValue())) {
propertyString.append(dict.getDictLabel() + separator);
break;
}
}
}
} else {
for (SysDictData dict : datas) {
if (dictValue.equals(dict.getDictValue())) {
return dict.getDictLabel();
}
}
}
return StringUtils.stripEnd(propertyString.toString(), separator);
}
/**
*
*
* @param dictType
* @param dictLabel
* @param separator
* @return
*/
@Override
public String getDictValue(String dictType, String dictLabel, String separator) {
StringBuilder propertyString = new StringBuilder();
List<SysDictData> datas = selectDictDataByType(dictType);
if (StringUtils.containsAny(dictLabel, separator) && CollUtil.isNotEmpty(datas)) {
for (SysDictData dict : datas) {
for (String label : dictLabel.split(separator)) {
if (label.equals(dict.getDictLabel())) {
propertyString.append(dict.getDictValue() + separator);
break;
}
}
}
} else {
for (SysDictData dict : datas) {
if (dictLabel.equals(dict.getDictLabel())) {
return dict.getDictValue();
}
}
}
return StringUtils.stripEnd(propertyString.toString(), separator);
}
}

@ -0,0 +1,460 @@
package com.glxp.api.admin.service.auth.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.http.HttpUtil;
import com.glxp.api.admin.constant.Constant;
import com.glxp.api.admin.dao.auth.SysMenuDao;
import com.glxp.api.admin.dao.auth.SysRoleMapper;
import com.glxp.api.admin.dao.auth.SysRoleMenuMapper;
import com.glxp.api.admin.entity.auth.*;
import com.glxp.api.admin.req.auth.SysMenuRequest;
import com.glxp.api.admin.req.auth.SysRoleMenuRequest;
import com.glxp.api.admin.service.auth.ISysMenuService;
import com.glxp.api.admin.util.TreeBuildUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
/**
*
*/
@Service
public class SysMenuServiceImpl implements ISysMenuService {
@Resource
SysMenuDao sysMenuDao;
@Resource
SysRoleMapper sysRoleMapper;
@Resource
SysRoleMenuMapper sysRoleMenuMapper;
/**
*
*
* @param userId ID
* @return
*/
@Override
public List<SysMenu> selectMenuList(Long userId) {
return selectMenuList(new SysMenu(), userId);
}
/**
*
*
* @param menu
* @return
*/
@Override
public List<SysMenu> selectMenuList(SysMenu menu, Long userId) {
List<SysMenu> menuList = null;
// 管理员显示所有菜单信息
SysMenuRequest sysMenuRequest = new SysMenuRequest();
BeanUtils.copyProperties(menu, sysMenuRequest);
if (Constant.ADMIN_ID.equals(userId + "")) {
menuList = sysMenuDao.selectMenuList(sysMenuRequest);
} else {
menuList = sysMenuDao.selectMenuListByUserId(sysMenuRequest);
}
return menuList;
}
/**
* ID
*
* @param userId ID
* @return
*/
@Override
public Set<String> selectMenuPermsByUserId(Long userId) {
List<String> perms = sysMenuDao.selectMenuPermsByUserId(userId);
Set<String> permsSet = new HashSet<>();
for (String perm : perms) {
if (StringUtils.isNotEmpty(perm)) {
permsSet.addAll(Arrays.asList(perm.trim().split(",")));
}
}
return permsSet;
}
/**
* ID
*
* @param roleId ID
* @return
*/
@Override
public Set<String> selectMenuPermsByRoleId(Long roleId) {
List<String> perms = sysMenuDao.selectMenuPermsByRoleId(roleId);
Set<String> permsSet = new HashSet<>();
for (String perm : perms) {
if (StringUtils.isNotEmpty(perm)) {
permsSet.addAll(Arrays.asList(perm.trim().split(",")));
}
}
return permsSet;
}
/**
* ID
*
* @param userId
* @return
*/
@Override
public List<SysMenu> selectMenuTreeByUserId(Long userId) {
List<SysMenu> menus = null;
if (Constant.ADMIN_ID.equals(userId + "")) {
menus = sysMenuDao.selectMenuTreeAll();
} else {
menus = sysMenuDao.selectMenuTreeByUserId(userId);
}
return getChildPerms(menus, 0);
}
/**
* ID
*
* @param roleId ID
* @return
*/
@Override
public List<Long> selectMenuListByRoleId(Long roleId) {
SysRole role = sysRoleMapper.selectById(roleId);
return sysMenuDao.selectMenuListByRoleId(roleId, role.getMenuCheckStrictly());
}
/**
*
*
* @param menus
* @return
*/
@Override
public List<RouterEntity> buildMenus(List<SysMenu> menus) {
List<RouterEntity> routers = new LinkedList<RouterEntity>();
for (SysMenu menu : menus) {
RouterEntity router = new RouterEntity();
router.setHidden("1".equals(menu.getVisible()));
router.setName(getRouteName(menu));
router.setPath(getRouterPath(menu));
router.setComponent(getComponent(menu));
router.setQuery(menu.getQueryParam());
router.setMeta(new MetaEntity(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath()));
List<SysMenu> cMenus = menu.getChildren();
if (!cMenus.isEmpty() && Constant.TYPE_DIR.equals(menu.getMenuType())) {
router.setAlwaysShow(true);
router.setRedirect("noRedirect");
router.setChildren(buildMenus(cMenus));
} else if (isMenuFrame(menu)) {
router.setMeta(null);
List<RouterEntity> childrenList = new ArrayList<RouterEntity>();
RouterEntity children = new RouterEntity();
children.setPath(menu.getPath());
children.setComponent(menu.getComponent());
children.setName(StringUtils.capitalize(menu.getPath()));
children.setMeta(new MetaEntity(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath()));
children.setQuery(menu.getQueryParam());
childrenList.add(children);
router.setChildren(childrenList);
} else if (menu.getParentId().intValue() == 0 && isInnerLink(menu)) {
router.setMeta(new MetaEntity(menu.getMenuName(), menu.getIcon()));
router.setPath("/");
List<RouterEntity> childrenList = new ArrayList<RouterEntity>();
RouterEntity children = new RouterEntity();
String routerPath = innerLinkReplaceEach(menu.getPath());
children.setPath(routerPath);
children.setComponent(Constant.INNER_LINK);
children.setName(StringUtils.capitalize(routerPath));
children.setMeta(new MetaEntity(menu.getMenuName(), menu.getIcon(), menu.getPath()));
childrenList.add(children);
router.setChildren(childrenList);
}
routers.add(router);
}
return routers;
}
/**
*
*
* @param menus
* @return
*/
@Override
public List<Tree<Long>> buildMenuTreeSelect(List<SysMenu> menus) {
if (CollUtil.isEmpty(menus)) {
return CollUtil.newArrayList();
}
return TreeBuildUtils.build(menus, (menu, tree) ->
tree.setId(menu.getMenuId())
.setParentId(menu.getParentId())
.setName(menu.getMenuName())
.setWeight(menu.getOrderNum()));
}
/**
* ID
*
* @param menuId ID
* @return
*/
@Override
public SysMenu selectMenuById(Long menuId) {
return sysMenuDao.selectById(menuId);
}
/**
*
*
* @param menuId ID
* @return
*/
@Override
public boolean hasChildByMenuId(Long menuId) {
SysMenuRequest sysMenuRequest = new SysMenuRequest();
sysMenuRequest.setParentId(menuId);
List<SysMenu> menuList = sysMenuDao.selectMenuList(sysMenuRequest);
if (CollUtil.isEmpty(menuList)) {
return false;
} else
return true;
}
/**
* 使
*
* @param menuId ID
* @return
*/
@Override
public boolean checkMenuExistRole(Long menuId) {
SysRoleMenuRequest sysRoleRequest = new SysRoleMenuRequest();
sysRoleRequest.setMenuId(menuId);
List<SysRoleMenu> sysRoleMenus = sysRoleMenuMapper.selectRoleMenuList(sysRoleRequest);
if (CollUtil.isEmpty(sysRoleMenus)) {
return false;
}
return true;
}
/**
*
*
* @param menu
* @return
*/
@Override
public int insertMenu(SysMenu menu) {
return sysMenuDao.insert(menu);
}
/**
*
*
* @param menu
* @return
*/
@Override
public int updateMenu(SysMenu menu) {
return sysMenuDao.updateById(menu);
}
/**
*
*
* @param menuId ID
* @return
*/
@Override
public int deleteMenuById(Long menuId) {
return sysMenuDao.deleteById(menuId);
}
/**
*
*
* @param menu
* @return
*/
@Override
public String checkMenuNameUnique(SysMenu menu) {
SysMenuRequest sysMenuRequest = new SysMenuRequest();
sysMenuRequest.setParentId(menu.getParentId());
sysMenuRequest.setMenuName(menu.getMenuName());
List<SysMenu> menuList = sysMenuDao.selectMenuList(sysMenuRequest);
if (CollUtil.isEmpty(menuList)) {
return Constant.UNIQUE;
} else
return Constant.NOT_UNIQUE;
}
/**
*
*
* @param menu
* @return
*/
public String getRouteName(SysMenu menu) {
String routerName = StringUtils.capitalize(menu.getPath());
// 非外链并且是一级目录(类型为目录)
if (isMenuFrame(menu)) {
routerName = StringUtils.EMPTY;
}
return routerName;
}
/**
*
*
* @param menu
* @return
*/
public String getRouterPath(SysMenu menu) {
String routerPath = menu.getPath();
// 内链打开外网方式
if (menu.getParentId().intValue() != 0 && isInnerLink(menu)) {
routerPath = innerLinkReplaceEach(routerPath);
}
// 非外链并且是一级目录(类型为目录)
if (0 == menu.getParentId().intValue() && Constant.TYPE_DIR.equals(menu.getMenuType())
&& Constant.NO_FRAME.equals(menu.getIsFrame())) {
routerPath = "/" + menu.getPath();
}
// 非外链并且是一级目录(类型为菜单)
else if (isMenuFrame(menu)) {
routerPath = "/";
}
return routerPath;
}
/**
*
*
* @param menu
* @return
*/
public String getComponent(SysMenu menu) {
String component = Constant.LAYOUT;
if (StringUtils.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu)) {
component = menu.getComponent();
} else if (StringUtils.isEmpty(menu.getComponent()) && menu.getParentId().intValue() != 0 && isInnerLink(menu)) {
component = Constant.INNER_LINK;
} else if (StringUtils.isEmpty(menu.getComponent()) && isParentView(menu)) {
component = Constant.PARENT_VIEW;
}
return component;
}
/**
*
*
* @param menu
* @return
*/
public boolean isMenuFrame(SysMenu menu) {
return menu.getParentId().intValue() == 0 && Constant.TYPE_MENU.equals(menu.getMenuType())
&& menu.getIsFrame().equals(Constant.NO_FRAME);
}
/**
*
*
* @param menu
* @return
*/
public boolean isInnerLink(SysMenu menu) {
return menu.getIsFrame().equals(Constant.NO_FRAME) && HttpUtil.isHttp(menu.getPath());
}
/**
* parent_view
*
* @param menu
* @return
*/
public boolean isParentView(SysMenu menu) {
return menu.getParentId().intValue() != 0 && Constant.TYPE_DIR.equals(menu.getMenuType());
}
/**
* ID
*
* @param list
* @param parentId ID
* @return String
*/
public List<SysMenu> getChildPerms(List<SysMenu> list, int parentId) {
List<SysMenu> returnList = new ArrayList<SysMenu>();
for (SysMenu t : list) {
// 一、根据传入的某个父节点ID,遍历该父节点的所有子节点
if (t.getParentId() == parentId) {
recursionFn(list, t);
returnList.add(t);
}
}
return returnList;
}
/**
*
*
* @param list
* @param t
*/
private void recursionFn(List<SysMenu> list, SysMenu t) {
// 得到子节点列表
List<SysMenu> childList = getChildList(list, t);
t.setChildren(childList);
for (SysMenu tChild : childList) {
if (hasChild(list, tChild)) {
recursionFn(list, tChild);
}
}
}
/**
*
*/
private List<SysMenu> getChildList(List<SysMenu> list, SysMenu t) {
List<SysMenu> tlist = new ArrayList<SysMenu>();
for (SysMenu n : list) {
if (n.getParentId().longValue() == t.getMenuId().longValue()) {
tlist.add(n);
}
}
return tlist;
}
/**
*
*/
private boolean hasChild(List<SysMenu> list, SysMenu t) {
return getChildList(list, t).size() > 0;
}
/**
*
*
* @return
*/
public String innerLinkReplaceEach(String path) {
return StringUtils.replaceEach(path, new String[]{Constant.HTTP, Constant.HTTPS, Constant.WWW, "."},
new String[]{"", ""});
}
}

@ -0,0 +1,409 @@
package com.glxp.api.admin.service.auth.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.github.pagehelper.PageHelper;
import com.glxp.api.admin.constant.Constant;
import com.glxp.api.admin.dao.auth.SysRoleMapper;
import com.glxp.api.admin.dao.auth.SysRoleMenuMapper;
import com.glxp.api.admin.dao.auth.SysUserRoleMapper;
import com.glxp.api.admin.entity.auth.SysRole;
import com.glxp.api.admin.entity.auth.SysRoleMenu;
import com.glxp.api.admin.entity.auth.SysUserRole;
import com.glxp.api.admin.exception.ServiceException;
import com.glxp.api.admin.req.auth.SysRoleRequest;
import com.glxp.api.admin.req.auth.SysUserRoleRequest;
import com.glxp.api.admin.service.auth.ISysRoleService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
/**
*
*/
@RequiredArgsConstructor
@Service
public class SysRoleServiceImpl implements ISysRoleService {
@Resource
SysRoleMapper sysRoleMapper;
@Resource
SysRoleMenuMapper roleMenuMapper;
@Resource
SysUserRoleMapper sysUserRoleMapper;
@Override
public List<SysRole> selectPageRoleList(SysRoleRequest sysRoleRequest) {
if (sysRoleRequest.getPage() != null) {
int offset = (sysRoleRequest.getPage() - 1) * sysRoleRequest.getLimit();
PageHelper.offsetPage(offset, sysRoleRequest.getLimit());
}
return sysRoleMapper.selectRoleList(sysRoleRequest);
}
/**
*
*/
@Override
public List<SysRole> selectRoleList(SysRoleRequest sysRoleRequest) {
return sysRoleMapper.selectRoleList(sysRoleRequest);
}
/**
* ID
*/
@Override
public List<SysRole> selectRolesByUserId(Long userId) {
List<SysRole> userRoles = sysRoleMapper.selectRolePermissionByUserId(userId);
List<SysRole> roles = selectRoleAll();
for (SysRole role : roles) {
for (SysRole userRole : userRoles) {
if (role.getRoleId().longValue() == userRole.getRoleId().longValue()) {
role.setFlag(true);
break;
}
}
}
return roles;
}
/**
* ID
*
* @param userId ID
* @return
*/
@Override
public Set<String> selectRolePermissionByUserId(Long userId) {
List<SysRole> perms = sysRoleMapper.selectRolePermissionByUserId(userId);
Set<String> permsSet = new HashSet<>();
for (SysRole perm : perms) {
if (ObjectUtil.isNotNull(perm)) {
permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(",")));
}
}
return permsSet;
}
/**
*
*
* @return
*/
@Override
public List<SysRole> selectRoleAll() {
return this.selectRoleList(new SysRoleRequest());
}
/**
* ID
*
* @param userId ID
* @return ID
*/
@Override
public List<Long> selectRoleListByUserId(Long userId) {
return sysRoleMapper.selectRoleListByUserId(userId);
}
/**
* ID
*
* @param roleId ID
* @return
*/
@Override
public SysRole selectRoleById(Long roleId) {
return sysRoleMapper.selectById(roleId);
}
/**
*
*
* @param role
* @return
*/
@Override
public String checkRoleNameUnique(SysRole role) {
SysRoleRequest sysRoleRequest = new SysRoleRequest();
sysRoleRequest.setRoleName(role.getRoleName());
sysRoleRequest.setNeRoleId(role.getRoleId());
List<SysRole> sysRoles = sysRoleMapper.selectRoleList(sysRoleRequest);
if (CollUtil.isNotEmpty(sysRoles)) {
return Constant.NOT_UNIQUE;
} else {
return Constant.UNIQUE;
}
}
/**
*
*
* @param role
* @return
*/
@Override
public String checkRoleKeyUnique(SysRole role) {
SysRoleRequest sysRoleRequest = new SysRoleRequest();
sysRoleRequest.setRoleKey(role.getRoleKey());
sysRoleRequest.setNeRoleId(role.getRoleId());
List<SysRole> sysRoles = sysRoleMapper.selectRoleList(sysRoleRequest);
if (CollUtil.isNotEmpty(sysRoles)) {
return Constant.NOT_UNIQUE;
} else {
return Constant.UNIQUE;
}
}
/**
*
*
* @param role
*/
@Override
public void checkRoleAllowed(SysRole role) {
if (ObjectUtil.isNotNull(role.getRoleId()) && role.isAdmin()) {
throw new ServiceException("不允许操作超级管理员角色");
}
}
/**
*
*
* @param roleId id
*/
@Override
public void checkRoleDataScope(Long roleId) {
if (roleId != 1) {
SysRoleRequest roleRequest = new SysRoleRequest();
roleRequest.setRoleId(roleId);
List<SysRole> roles = this.selectRoleList(roleRequest);
if (CollUtil.isEmpty(roles)) {
throw new ServiceException("没有权限访问角色数据!");
}
}
}
/**
* ID使
*
* @param roleId ID
* @return
*/
@Override
public long countUserRoleByRoleId(Long roleId) {
List<Long> ids = sysUserRoleMapper.selectUserIdsByRoleId(roleId);
return ids.size();
}
/**
*
*
* @param role
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int insertRole(SysRole role) {
// 新增角色信息
sysRoleMapper.insert(role);
return insertRoleMenu(role);
}
/**
*
*
* @param role
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int updateRole(SysRole role) {
// 修改角色信息
sysRoleMapper.updateById(role);
// 删除角色与菜单关联
roleMenuMapper.deleteById(role.getRoleId());
return insertRoleMenu(role);
}
/**
*
*
* @param role
* @return
*/
@Override
public int updateRoleStatus(SysRole role) {
return sysRoleMapper.updateById(role);
}
/**
*
*
* @param role
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int authDataScope(SysRole role) {
// 修改角色信息
sysRoleMapper.updateById(role);
// 删除角色与部门关联
// roleDeptMapper.delete(new LambdaQueryWrapper<SysRoleDept>().eq(SysRoleDept::getRoleId, role.getRoleId()));
// // 新增角色和部门信息(数据权限)
// return insertRoleDept(role);
return 0;
}
/**
*
*
* @param role
*/
public int insertRoleMenu(SysRole role) {
int rows = 1;
// 新增用户与角色管理
List<SysRoleMenu> list = new ArrayList<SysRoleMenu>();
for (Long menuId : role.getMenuIds()) {
SysRoleMenu rm = new SysRoleMenu();
rm.setRoleId(role.getRoleId());
rm.setMenuId(menuId);
list.add(rm);
}
if (list.size() > 0) {
roleMenuMapper.insertBatch(list);
}
return rows;
}
/**
* ()
*
* @param role
*/
// public int insertRoleDept(SysRole role) {
// int rows = 1;
// // 新增角色与部门(数据权限)管理
// List<SysRoleDept> list = new ArrayList<SysRoleDept>();
// for (Long deptId : role.getDeptIds()) {
// SysRoleDept rd = new SysRoleDept();
// rd.setRoleId(role.getRoleId());
// rd.setDeptId(deptId);
// list.add(rd);
// }
// if (list.size() > 0) {
// rows = roleDeptMapper.insertBatch(list) ? list.size() : 0;
// }
// return rows;
// }
/**
* ID
*
* @param roleId ID
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int deleteRoleById(Long roleId) {
// 删除角色与菜单关联
roleMenuMapper.deleteById(roleId);
// 删除角色与部门关联
return sysRoleMapper.delete(roleId);
}
/**
*
*
* @param roleIds ID
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int deleteRoleByIds(Long[] roleIds) {
for (Long roleId : roleIds) {
checkRoleAllowed(new SysRole(roleId));
checkRoleDataScope(roleId);
SysRole role = selectRoleById(roleId);
if (countUserRoleByRoleId(roleId) > 0) {
throw new ServiceException(String.format("%1$s已分配,不能删除", role.getRoleName()));
}
}
List<Long> ids = Arrays.asList(roleIds);
// 删除角色与菜单关联
roleMenuMapper.deleteByList(ids);
// 删除角色与部门关联
// roleDeptMapper.delete(new LambdaQueryWrapper<SysRoleDept>().in(SysRoleDept::getRoleId, ids));
return sysRoleMapper.deleteBatchIds(ids);
}
/**
*
*
* @param userRole
* @return
*/
@Override
public int deleteAuthUser(SysUserRole userRole) {
SysUserRoleRequest sysUserRoleRequest = new SysUserRoleRequest();
return sysUserRoleMapper.delete(sysUserRoleRequest);
// return sysUserRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>()
// .eq(SysUserRole::getRoleId, userRole.getRoleId())
// .eq(SysUserRole::getUserId, userRole.getUserId()));
}
/**
*
*
* @param roleId ID
* @param userIds ID
* @return
*/
@Override
public int deleteAuthUsers(Long roleId, Long[] userIds) {
SysUserRoleRequest sysUserRoleRequest = new SysUserRoleRequest();
return sysUserRoleMapper.delete(sysUserRoleRequest);
// return sysUserRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>()
// .eq(SysUserRole::getRoleId, roleId)
// .in(SysUserRole::getUserId, Arrays.asList(userIds)));
}
/**
*
*
* @param roleId ID
* @param userIds ID
* @return
*/
@Override
public int insertAuthUsers(Long roleId, Long[] userIds) {
// 新增用户与角色管理
int rows = 1;
List<SysUserRole> list = new ArrayList<SysUserRole>();
for (Long userId : userIds) {
SysUserRole ur = new SysUserRole();
ur.setUserId(userId);
ur.setRoleId(roleId);
list.add(ur);
}
if (list.size() > 0) {
sysUserRoleMapper.insertBatch(list);
}
return rows;
}
}

@ -0,0 +1,54 @@
package com.glxp.api.admin.util;
import cn.hutool.core.util.ReflectUtil;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import java.lang.reflect.Method;
/**
* . getter/setter, 访, , Class, AOP.
*/
@SuppressWarnings("rawtypes")
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class ReflectUtils extends ReflectUtil {
private static final String SETTER_PREFIX = "set";
private static final String GETTER_PREFIX = "get";
/**
* Getter.
* ..
*/
@SuppressWarnings("unchecked")
public static <E> E invokeGetter(Object obj, String propertyName) {
Object object = obj;
for (String name : StringUtils.split(propertyName, ".")) {
String getterMethodName = GETTER_PREFIX + StringUtils.capitalize(name);
object = invoke(object, getterMethodName);
}
return (E) object;
}
/**
* Setter,
* ..
*/
public static <E> void invokeSetter(Object obj, String propertyName, E value) {
Object object = obj;
String[] names = StringUtils.split(propertyName, ".");
for (int i = 0; i < names.length; i++) {
if (i < names.length - 1) {
String getterMethodName = GETTER_PREFIX + StringUtils.capitalize(names[i]);
object = invoke(object, getterMethodName);
} else {
String setterMethodName = SETTER_PREFIX + StringUtils.capitalize(names[i]);
Method method = getMethodByName(object.getClass(), setterMethodName);
invoke(object, method, value);
}
}
}
}

@ -0,0 +1,247 @@
package com.glxp.api.admin.util;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.map.MapUtil;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import java.util.*;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class StreamUtils {
/**
* collection
*
* @param collection
* @param function
* @return list
*/
public static <E> List<E> filter(Collection<E> collection, Predicate<E> function) {
if (CollUtil.isEmpty(collection)) {
return CollUtil.newArrayList();
}
return collection.stream().filter(function).collect(Collectors.toList());
}
/**
* collection
*
* @param collection
* @param function
* @return list
*/
public static <E> String join(Collection<E> collection, Function<E, String> function) {
return join(collection, function, ",");
}
/**
* collection
*
* @param collection
* @param function
* @param delimiter
* @return list
*/
public static <E> String join(Collection<E> collection, Function<E, String> function, CharSequence delimiter) {
if (CollUtil.isEmpty(collection)) {
return StringUtils.EMPTY;
}
return collection.stream().map(function).filter(Objects::nonNull).collect(Collectors.joining(delimiter));
}
/**
* collection
*
* @param collection
* @param comparing
* @return list
*/
public static <E> List<E> sorted(Collection<E> collection, Comparator<E> comparing) {
if (CollUtil.isEmpty(collection)) {
return CollUtil.newArrayList();
}
return collection.stream().sorted(comparing).collect(Collectors.toList());
}
/**
* collectionmap<br>
* <B>{@code Collection<V> ----> Map<K,V>}</B>
*
* @param collection
* @param key VKlambda
* @param <V> collection
* @param <K> mapkey
* @return map
*/
public static <V, K> Map<K, V> toIdentityMap(Collection<V> collection, Function<V, K> key) {
if (CollUtil.isEmpty(collection)) {
return MapUtil.newHashMap();
}
return collection.stream().collect(Collectors.toMap(key, Function.identity(), (l, r) -> l));
}
/**
* Collectionmap(valuecollection)<br>
* <B>{@code Collection<E> -----> Map<K,V> }</B>
*
* @param collection
* @param key EKlambda
* @param value EVlambda
* @param <E> collection
* @param <K> mapkey
* @param <V> mapvalue
* @return map
*/
public static <E, K, V> Map<K, V> toMap(Collection<E> collection, Function<E, K> key, Function<E, V> value) {
if (CollUtil.isEmpty(collection)) {
return MapUtil.newHashMap();
}
return collection.stream().collect(Collectors.toMap(key, value, (l, r) -> l));
}
/**
* collection(id)map<br>
* <B>{@code Collection<E> -------> Map<K,List<E>> } </B>
*
* @param collection
* @param key
* @param <E> collection
* @param <K> mapkey
* @return map
*/
public static <E, K> Map<K, List<E>> groupByKey(Collection<E> collection, Function<E, K> key) {
if (CollUtil.isEmpty(collection)) {
return MapUtil.newHashMap();
}
return collection
.stream()
.collect(Collectors.groupingBy(key, LinkedHashMap::new, Collectors.toList()));
}
/**
* collection(id,id)map<br>
* <B>{@code Collection<E> ---> Map<T,Map<U,List<E>>> } </B>
*
* @param collection
* @param key1
* @param key2
* @param <E>
* @param <K> mapkey
* @param <U> mapkey
* @return map
*/
public static <E, K, U> Map<K, Map<U, List<E>>> groupBy2Key(Collection<E> collection, Function<E, K> key1, Function<E, U> key2) {
if (CollUtil.isEmpty(collection)) {
return MapUtil.newHashMap();
}
return collection
.stream()
.collect(Collectors.groupingBy(key1, LinkedHashMap::new, Collectors.groupingBy(key2, LinkedHashMap::new, Collectors.toList())));
}
/**
* collection(id,id)map<br>
* <B>{@code Collection<E> ---> Map<T,Map<U,E>> } </B>
*
* @param collection
* @param key1
* @param key2
* @param <T> mapkey
* @param <U> mapkey
* @param <E> collection
* @return map
*/
public static <E, T, U> Map<T, Map<U, E>> group2Map(Collection<E> collection, Function<E, T> key1, Function<E, U> key2) {
if (CollUtil.isEmpty(collection) || key1 == null || key2 == null) {
return MapUtil.newHashMap();
}
return collection
.stream()
.collect(Collectors.groupingBy(key1, LinkedHashMap::new, Collectors.toMap(key2, Function.identity(), (l, r) -> l)));
}
/**
* collectionList<br>
* <B>{@code Collection<E> ------> List<T> } </B>
*
* @param collection
* @param function collectionlistlambda
* @param <E> collection
* @param <T> List
* @return list
*/
public static <E, T> List<T> toList(Collection<E> collection, Function<E, T> function) {
if (CollUtil.isEmpty(collection)) {
return CollUtil.newArrayList();
}
return collection
.stream()
.map(function)
.filter(Objects::nonNull)
.collect(Collectors.toList());
}
/**
* collectionSet<br>
* <B>{@code Collection<E> ------> Set<T> } </B>
*
* @param collection
* @param function collectionsetlambda
* @param <E> collection
* @param <T> Set
* @return Set
*/
public static <E, T> Set<T> toSet(Collection<E> collection, Function<E, T> function) {
if (CollUtil.isEmpty(collection) || function == null) {
return CollUtil.newHashSet();
}
return collection
.stream()
.map(function)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
}
/**
* keymap
*
* @param map1 map
* @param map2 map
* @param merge lambdakey value1 value2,value
* @param <K> mapkey
* @param <X> mapvalue
* @param <Y> mapvalue
* @param <V> mapvalue
* @return map
*/
public static <K, X, Y, V> Map<K, V> merge(Map<K, X> map1, Map<K, Y> map2, BiFunction<X, Y, V> merge) {
if (MapUtil.isEmpty(map1) && MapUtil.isEmpty(map2)) {
return MapUtil.newHashMap();
} else if (MapUtil.isEmpty(map1)) {
map1 = MapUtil.newHashMap();
} else if (MapUtil.isEmpty(map2)) {
map2 = MapUtil.newHashMap();
}
Set<K> key = new HashSet<>();
key.addAll(map1.keySet());
key.addAll(map2.keySet());
Map<K, V> map = new HashMap<>();
for (K t : key) {
X x = map1.get(t);
Y y = map2.get(t);
V z = merge.apply(x, y);
if (z != null) {
map.put(t, z);
}
}
return map;
}
}

@ -0,0 +1,32 @@
package com.glxp.api.admin.util;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNodeConfig;
import cn.hutool.core.lang.tree.TreeUtil;
import cn.hutool.core.lang.tree.parser.NodeParser;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* hutool TreeUtil
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class TreeBuildUtils extends TreeUtil {
/**
*
*/
public static final TreeNodeConfig DEFAULT_CONFIG = TreeNodeConfig.DEFAULT_CONFIG.setNameKey("label");
public static <T, K> List<Tree<K>> build(List<T> list, NodeParser<T, K> nodeParser) {
if (CollUtil.isEmpty(list)) {
return null;
}
K k = ReflectUtils.invokeGetter(list.get(0), "parentId");
return TreeUtil.build(list, k, DEFAULT_CONFIG, nodeParser);
}
}

@ -1,7 +1,7 @@
# \u672C\u5730\u73AF\u5883
server.port=9991
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.jdbc-url=jdbc:mysql://192.168.0.148:3306/udiwms?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.jdbc-url=jdbc:mysql://192.168.0.109:3306/udiwms?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=Glxp@6066
#spring.datasource.password=89083fb2fc145533

@ -117,7 +117,8 @@
#{CustomerId},
#{locInvCode},
#{locSubInvCode},
#{dept},#{comments}
#{dept},
#{comments}
)
</insert>
@ -150,4 +151,44 @@
from auth_user
where userFlag != 0
</select>
<select id="selectAllocatedList" parameterType="com.glxp.api.admin.req.auth.AuthAdminQueryRequest"
resultType="com.glxp.api.admin.entity.auth.AuthAdmin">
select u.*
from auth_user u
left join sys_user_role sur on u.id = sur.user_id
left join sys_role r on r.role_id = sur.role_id
<where>
<if test="roleId != null and '' != roleId">
AND r.role_id =#{roleId}
</if>
</where>
</select>
<select id="selectUnallocatedList" parameterType="com.glxp.api.admin.req.auth.AuthAdminQueryRequest"
resultType="com.glxp.api.admin.entity.auth.AuthAdmin">
select u.*
from auth_user u
left join sys_user_role sur on u.id = sur.user_id
left join sys_role r on r.role_id = sur.role_id
<where>
<if test="ids!=null and ids.size()!=0">
u.id not in
<foreach collection="ids" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if>
<if test="roleId != null and '' != roleId">
AND r.role_id <![CDATA[ <> ]]> #{roleId}
</if>
<if test="userName != null and '' != userName">
AND u.user_name LIKE concat('%', #{userName}, '%')
</if>
</where>
</select>
</mapper>

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.admin.dao.auth.SysDictDataMapper">
<resultMap type="com.glxp.api.admin.entity.auth.SysDictData" id="SysDictDataResult">
<id property="dictCode" column="dict_code"/>
<result property="dictSort" column="dict_sort"/>
<result property="dictLabel" column="dict_label"/>
<result property="dictValue" column="dict_value"/>
<result property="dictType" column="dict_type"/>
<result property="cssClass" column="css_class"/>
<result property="listClass" column="list_class"/>
<result property="isDefault" column="is_default"/>
<result property="status" column="status"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<select id="selectDictDataList" parameterType="com.glxp.api.admin.req.auth.SysDictDataRequest"
resultMap="SysDictDataResult">
SELECT *
FROM sys_dict_data
<where>
<if test="dictType != null ">
and dict_type = #{dictType}
</if>
<if test="status != null ">
and status = #{status}
</if>
<if test="dictLabel != null ">
and dict_label = #{dictLabel}
</if>
<if test="dictValue != null ">
and dict_value = #{dictValue}
</if>
</where>
</select>
<select id="selectById" parameterType="Map"
resultMap="SysDictDataResult">
SELECT *
FROM sys_dict_data
WHERE dict_code = #{dictCode}
</select>
<delete id="deleteById" parameterType="java.lang.Long">
delete
from sys_dict_data
where dict_code = #{dictCode}
</delete>
<insert id="insert" keyProperty="id" useGeneratedKeys="true"
parameterType="com.glxp.api.admin.entity.auth.SysDictData">
INSERT INTO sys_dict_data(`dict_code`, `dict_sort`, dict_label, dict_value
, dict_type, css_class, list_class, is_default, status, remark,
create_by, create_time, update_by)
values (#{dictCode},
#{dictSort}, #{dictLabel}, #{dictValue}, #{dictType}, #{cssClass}, #{listClass}
, #{isDefault}, #{status}, #{remark}, #{createBy}, #{createTime}, #{updateBy})
</insert>
<update id="updateById" parameterType="com.glxp.api.admin.entity.auth.SysRole">
UPDATE sys_dict_data
<trim prefix="set" suffixOverrides=",">
<if test="dictCode != null">`dict_code`=#{dictCode},</if>
<if test="dictSort != null">`dict_sort`=#{dictSort},</if>
<if test="dictLabel != null">dict_label=#{dictLabel},</if>
<if test="dictValue != null">`dict_value`=#{dictValue},</if>
<if test="dictType != null">dict_type=#{dictType},</if>
<if test="cssClass != null">`css_class`=#{cssClass},</if>
<if test="listClass != null">`list_class`=#{listClass},</if>
<if test="isDefault != null">is_default=#{isDefault},</if>
<if test="status != null">status=#{status},</if>
<if test="remark != null">remark=#{remark},</if>
<if test="createBy != null">create_by=#{createBy},</if>
<if test="createTime != null">`create_time`=#{createTime},</if>
<if test="updateBy != null">`update_by`=#{updateBy},</if>
</trim>
WHERE dict_code=#{dictCode}
</update>
<select id="exists" parameterType="com.glxp.api.admin.req.auth.SysDictDataRequest"
resultMap="SysDictDataResult">
SELECT *
FROM sys_dict_data
<where>
<if test="dictType != null ">
and dict_type = #{dictType}
</if>
<if test="status != null ">
and status = #{status}
</if>
<if test="dictLabel != null ">
and dict_label = #{dictLabel}
</if>
<if test="dictValue != null ">
and dict_value = #{dictValue}
</if>
</where>
limit 1
</select>
</mapper>

@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.admin.dao.auth.SysDictTypeMapper">
<resultMap type="com.glxp.api.admin.entity.auth.SysDictType" id="SysDictTypeResult">
<id property="dictId" column="dict_id"/>
<result property="dictName" column="dict_name"/>
<result property="dictType" column="dict_type"/>
<result property="status" column="status"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<select id="selectDictTypeList" parameterType="com.glxp.api.admin.req.auth.SysDictTypeRequest"
resultMap="SysDictTypeResult">
SELECT *
FROM sys_dict_type
<where>
<if test="dictId != null ">
and dict_type = #{dictId}
</if>
<if test="dictName != null ">
and status = #{dictName}
</if>
<if test="dictType != null ">
and dict_label = #{dictType}
</if>
<if test="status != null ">
and status = #{status}
</if>
</where>
</select>
<select id="selectById" parameterType="Map"
resultMap="SysDictTypeResult">
SELECT *
FROM sys_dict_type
WHERE dict_id = #{dictId}
</select>
<delete id="deleteById" parameterType="java.lang.Long">
delete
from sys_dict_type
where dict_id = #{dictId}
</delete>
<delete id="deleteBatchIds" parameterType="java.util.List"
>
delete
from sys_dict_type
where dict_id in
<foreach item="item" index="index" collection="dictIds" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<insert id="insert" keyProperty="id" useGeneratedKeys="true"
parameterType="com.glxp.api.admin.entity.auth.SysDictData">
INSERT INTO sys_dict_type(`dict_id`, dict_name, `dict_type`, status
create_by, create_time, update_by, update_time)
values (#{dictId},
#{dictName}, #{dictType}, #{status}, #{createBy}, #{createTime}, #{updateBy}, #{updateTime})
</insert>
<update id="updateById" parameterType="com.glxp.api.admin.entity.auth.SysRole">
UPDATE sys_dict_type
<trim prefix="set" suffixOverrides=",">
<if test="dictName != null">`dict_name`=#{dictName},</if>
<if test="dictType != null">dict_type=#{dictType},</if>
<if test="status != null">`status`=#{status},</if>
<if test="updateTime != null">update_time=#{updateTime},</if>
<if test="createBy != null">create_by=#{createBy},</if>
<if test="createTime != null">`create_time`=#{createTime},</if>
<if test="updateBy != null">`update_by`=#{updateBy},</if>
</trim>
WHERE dict_id=#{dictId}
</update>
<select id="exists" parameterType="com.glxp.api.admin.req.auth.SysDictTypeRequest"
resultMap="SysDictTypeResult">
SELECT *
FROM sys_dict_type
<where>
<if test="dictType != null ">
and dict_type = #{dictType}
</if>
<if test="status != null ">
and status = #{status}
</if>
<if test="dictLabel != null ">
and dict_label = #{dictLabel}
</if>
<if test="dictValue != null ">
and dict_value = #{dictValue}
</if>
</where>
limit 1
</select>
</mapper>

@ -0,0 +1,210 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.admin.dao.auth.SysMenuDao">
<resultMap type="com.glxp.api.admin.entity.auth.SysMenu" id="SysMenuResult">
<id property="menuId" column="menu_id"/>
<result property="menuName" column="menu_name"/>
<result property="parentName" column="parent_name"/>
<result property="parentId" column="parent_id"/>
<result property="orderNum" column="order_num"/>
<result property="path" column="path"/>
<result property="component" column="component"/>
<result property="queryParam" column="query_param"/>
<result property="isFrame" column="is_frame"/>
<result property="isCache" column="is_cache"/>
<result property="menuType" column="menu_type"/>
<result property="visible" column="visible"/>
<result property="status" column="status"/>
<result property="perms" column="perms"/>
<result property="icon" column="icon"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
<result property="remark" column="remark"/>
</resultMap>
<select id="selectById" parameterType="java.lang.Long"
resultMap="SysMenuResult">
select *
FROM sys_menu
WHERE menu_id = #{id}
</select>
<insert id="insert" keyProperty="id" parameterType="com.glxp.api.admin.entity.auth.SysMenu">
INSERT INTO sys_menu(`menu_id`, `menu_name`, parent_id, `order_num`, `path`, component
, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon,
remark, create_by, create_time, update_time, update_by)
values (#{menuId},
#{menuName}, #{parentId},
#{orderNum}, #{path}, #{component}, #{queryParam}, #{isFrame}, #{isCache}
, #{menuType}, #{visible}, #{status}, #{perms}, #{icon}, #{remark}
, #{createBy}, #{createTime}, #{updateTime}, #{updateBy})
</insert>
<update id="updateById" parameterType="com.glxp.api.admin.entity.auth.SysMenu">
UPDATE sys_menu
<trim prefix="set" suffixOverrides=",">
<if test="menuName != null">`menu_name`=#{menuName},</if>
<if test="parentId != null">`parent_id`=#{parentId},</if>
<if test="orderNum != null">order_num=#{orderNum},</if>
<if test="path != null">`path`=#{path},</if>
<if test="component != null">component=#{component},</if>
<if test="queryParam != null">`query_param`=#{queryParam},</if>
<if test="isFrame != null">is_frame=#{isFrame},</if>
<if test="isCache != null">is_cache=#{isCache},</if>
<if test="updateTime != null">updateTime=#{updateTime},</if>
<if test="menuType != null">`menu_type`=#{menuType},</if>
<if test="visible != null">`visible`=#{visible},</if>
<if test="status != null">status=#{status},</if>
<if test="perms != null">perms=#{perms},</if>
<if test="icon != null">icon=#{icon},</if>
<if test="remark != null">remark=#{remark},</if>
<if test="createBy != null">create_by=#{createBy},</if>
<if test="createTime != null">create_time=#{createTime},</if>
<if test="updateTime != null">update_time=#{updateTime},</if>
<if test="updateBy != null">update_by=#{updateBy},</if>
</trim>
WHERE menu_id=#{menuId}
</update>
<delete id="deleteById" parameterType="java.lang.Long">
delete
from sys_menu
where menu_id = #{id}
</delete>
<select id="selectMenuTreeAll" parameterType="com.glxp.api.admin.entity.auth.SysMenu"
resultMap="SysMenuResult">
select *
FROM sys_menu
</select>
<select id="selectMenuList" parameterType="com.glxp.api.admin.req.auth.SysMenuRequest"
resultMap="SysMenuResult">
select *
FROM sys_menu
<where>
<if test="menuId != null ">
and menu_id = #{menuId}
</if>
<if test="menuName != null and menuName != '' ">
AND `menu_name` = #{menuName}
</if>
<if test="parentName != null and parentName != '' ">
AND `parent_name` = #{parentName}
</if>
<if test="parentId != null ">
AND `parent_id` = #{parentId}
</if>
<if test="orderNum != null ">
AND `order_num` = #{orderNum}
</if>
<if test="neMenuId != null ">
and menu_id <![CDATA[ <> ]]> #{neMenuId}
</if>
</where>
</select>
<select id="selectMenuListByUserId" parameterType="com.glxp.api.admin.entity.auth.SysMenu"
resultMap="SysMenuResult">
select distinct m.menu_id,
m.parent_id,
m.menu_name,
m.path,
m.component,
m.query_param,
m.visible,
m.status,
m.perms,
m.is_frame,
m.is_cache,
m.menu_type,
m.icon,
m.order_num,
m.create_time
from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id
left join sys_user_role sur on rm.role_id = sur.role_id
left join sys_role ro on sur.role_id = ro.role_id
</select>
<select id="selectMenuTreeByUserId" parameterType="Long" resultMap="SysMenuResult">
select distinct m.menu_id,
m.parent_id,
m.menu_name,
m.path,
m.component,
m.query_param,
m.visible,
m.status,
m.perms,
m.is_frame,
m.is_cache,
m.menu_type,
m.icon,
m.order_num,
m.create_time
from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id
left join sys_user_role sur on rm.role_id = sur.role_id
left join sys_role ro on sur.role_id = ro.role_id
left join auth_user u on sur.user_id = u.id
where u.id = #{userId}
and m.menu_type in ('M', 'C')
and m.status = '0'
and ro.status = '0'
order by m.parent_id, m.order_num
</select>
<select id="selectMenuListByRoleId" resultType="Long">
select m.menu_id
from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id
where rm.role_id = #{roleId}
<if test="menuCheckStrictly">
and m.menu_id not in (select m.parent_id from sys_menu m inner join sys_role_menu rm on m.menu_id =
rm.menu_id and rm.role_id = #{roleId})
</if>
order by m.parent_id, m.order_num
</select>
<select id="selectMenuPerms" resultType="String">
select distinct m.perms
from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id
left join sys_user_role sur on rm.role_id = sur.role_id
</select>
<select id="selectMenuPermsByUserId" parameterType="Long" resultType="String">
select distinct m.perms
from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id
left join sys_user_role sur on rm.role_id = sur.role_id
left join sys_role r on r.role_id = sur.role_id
where m.status = '0'
and r.status = '0'
and sur.user_id = #{userId}
</select>
<select id="selectMenuPermsByRoleId" parameterType="Long" resultType="String">
select distinct m.perms
from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id
where m.status = '0'
and rm.role_id = #{roleId}
</select>
</mapper>

@ -0,0 +1,174 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.admin.dao.auth.SysRoleMapper">
<resultMap type="com.glxp.api.admin.entity.auth.SysRole" id="SysRoleResult">
<id property="roleId" column="role_id"/>
<result property="roleName" column="role_name"/>
<result property="roleKey" column="role_key"/>
<result property="roleSort" column="role_sort"/>
<result property="dataScope" column="data_scope"/>
<result property="menuCheckStrictly" column="menu_check_strictly"/>
<result property="deptCheckStrictly" column="dept_check_strictly"/>
<result property="status" column="status"/>
<result property="delFlag" column="del_flag"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="remark" column="remark"/>
</resultMap>
<insert id="insert" keyProperty="roleId" useGeneratedKeys="true"
parameterType="com.glxp.api.admin.entity.auth.SysRole">
INSERT INTO sys_role(`role_name`, `role_key`, role_sort, data_scope
, menu_check_strictly, dept_check_strictly, status, del_flag, remark,
create_by, create_time, update_by)
values (#{roleName},
#{roleKey}, #{roleSort}, #{dataScope}, #{menuCheckStrictly}, #{deptCheckStrictly}, #{status}
, #{delFlag}, #{remark}, #{createBy}, #{createTime}, #{updateBy})
</insert>
<update id="updateById" parameterType="com.glxp.api.admin.entity.auth.SysRole">
UPDATE sys_role
<trim prefix="set" suffixOverrides=",">
<if test="roleName != null">`role_name`=#{roleName},</if>
<if test="roleKey != null">`role_key`=#{roleKey},</if>
<if test="roleSort != null">role_sort=#{roleSort},</if>
<if test="dataScope != null">`data_scope`=#{dataScope},</if>
<if test="menuCheckStrictly != null">menu_check_strictly=#{menuCheckStrictly},</if>
<if test="deptCheckStrictly != null">`dept_check_strictly`=#{deptCheckStrictly},</if>
<if test="status != null">`status`=#{status},</if>
<if test="delFlag != null">del_flag=#{delFlag},</if>
<if test="remark != null">remark=#{remark},</if>
<if test="createBy != null">create_by=#{createBy},</if>
<if test="createTime != null">`create_time`=#{createTime},</if>
<if test="updateBy != null">`update_by`=#{updateBy},</if>
<if test="updateTime != null">`update_time`=#{updateTime},</if>
</trim>
WHERE role_id=#{roleId}
</update>
<delete id="deleteBatchIds" parameterType="java.util.List"
>
delete
from sys_role
where role_id in
<foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<delete id="deleteById" parameterType="java.lang.Long">
delete
from sys_role
where role_id = #{id}
</delete>
<select id="selectById" parameterType="java.lang.Long"
resultMap="SysRoleResult">
select *
FROM sys_role
WHERE role_id = #{id}
</select>
<sql id="selectRoleVo">
select distinct r.role_id,
r.role_name,
r.role_key,
r.role_sort,
r.data_scope,
r.menu_check_strictly,
r.dept_check_strictly,
r.status,
r.del_flag,
r.create_time,
r.remark
from sys_role r
left join sys_user_role sur on sur.role_id = r.role_id
left join auth_user u on u.id = sur.user_id
</sql>
<select id="selectRoleList" parameterType="com.glxp.api.admin.req.auth.SysRoleRequest"
resultMap="SysRoleResult">
SELECT *
FROM sys_role
<where>
<if test="roleId != null ">
and role_id = #{roleId}
</if>
<if test="roleName != null and roleName != ''">
AND `role_name` = #{roleName}
</if>
<if test="roleKey != null and roleKey != ''">
AND `role_key` = #{roleKey}
</if>
<if test="neRoleName != null and neRoleName != ''">
AND `role_name` <![CDATA[ <> ]]> #{neRoleName}
</if>
<if test="neRoleKey != null and neRoleKey != ''">
AND `role_key` <![CDATA[ <> ]]> #{neRoleKey}
</if>
<if test="neRoleId != null ">
AND `role_id` <![CDATA[ <> ]]> #{neRoleId}
</if>
</where>
</select>
<select id="selectRolePermissionByUserId" parameterType="Long" resultMap="SysRoleResult">
select distinct r.role_id,
r.role_name,
r.role_key,
r.role_sort,
r.data_scope,
r.menu_check_strictly,
r.dept_check_strictly,
r.status,
r.del_flag,
r.create_time,
r.remark
from sys_role r
left join sys_user_role sur on sur.role_id = r.role_id
left join auth_user u on u.id = sur.user_id
WHERE sur.user_id = #{userId}
</select>
<select id="selectRoleListByUserId" parameterType="Long" resultType="Long">
select r.role_id
from sys_role r
left join sys_user_role sur on sur.role_id = r.role_id
left join auth_user u on u.id = sur.user_id
where u.id = #{userId}
</select>
<select id="selectRolesByUserName" parameterType="String" resultMap="SysRoleResult">
select distinct r.role_id,
r.role_name,
r.role_key,
r.role_sort,
r.data_scope,
r.menu_check_strictly,
r.dept_check_strictly,
r.status,
r.del_flag,
r.create_time,
r.remark
from sys_role r
left join sys_user_role sur on sur.role_id = r.role_id
left join auth_user u on u.id = sur.user_id
WHERE u.userName = #{userName}
</select>
</mapper>

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.admin.dao.auth.SysRoleMenuMapper">
<resultMap type="com.glxp.api.admin.entity.auth.SysRoleMenu" id="SysRoleMenuResult">
<result property="roleId" column="role_id"/>
<result property="menuId" column="menu_id"/>
</resultMap>
<select id="selectRoleMenuList" parameterType="com.glxp.api.admin.req.auth.SysRoleMenuRequest"
resultMap="SysRoleMenuResult">
SELECT *
FROM sys_role_menu
<where>
<if test="roleId != null ">
and role_id = #{roleId}
</if>
<if test="menuId != null ">
and menu_id = #{menuId}
</if>
</where>
</select>
<delete id="deleteById" parameterType="java.lang.Long">
delete
from sys_role_menu
where role_id = #{id}
</delete>
<delete id="deleteByList" parameterType="java.util.List"
>
delete
from sys_role_menu
where role_id in
<foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<insert id="insertBatch" keyProperty="id" parameterType="java.util.List">
insert INTO sys_role_menu
(
role_id,menu_id
)
values
<foreach collection="list" item="item" index="index"
separator=",">
(
#{item.roleId},
#{item.menuId}
)
</foreach>
</insert>
</mapper>

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.admin.dao.auth.SysUserRoleMapper">
<resultMap type="com.glxp.api.admin.entity.auth.SysUserRole" id="SysUserRoleResult">
<result property="userId" column="user_id"/>
<result property="roleId" column="role_id"/>
</resultMap>
<select id="selectUserIdsByRoleId" resultType="Long">
select u.id
from auth_user u
inner join sys_user_role sur
on u.id = sur.user_id and sur.role_id = #{roleId}
</select>
<delete id="delete" parameterType="com.glxp.api.admin.req.auth.SysUserRoleRequest">
DELETE
FROM sys_user_role
<where>
<if test="userId != '' and userId != null">
AND user_id = #{userId}
</if>
<if test="roleId != '' and roleId != null">
AND role_id = #{roleId}
</if>
</where>
</delete>
<insert id="insertBatch" keyProperty="id" parameterType="java.util.List">
insert INTO sys_user_role
(
user_id,role_id
)
values
<foreach collection="sysUserRoles" item="item" index="index"
separator=",">
(
#{item.userId},
#{item.roleId}
)
</foreach>
</insert>
</mapper>
Loading…
Cancel
Save