init project

This commit is contained in:
2021-07-08 18:02:26 +08:00
commit 10e056aa44
380 changed files with 28364 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>wms</artifactId>
<groupId>com.mt</groupId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>wms-upms</artifactId>
<dependencies>
<dependency>
<groupId>com.mt</groupId>
<artifactId>wms-core</artifactId>
</dependency>
<!--web 模块-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- hystrix -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<!-- devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<!-- swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,104 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.controller;
import com.mt.wms.core.constants.CommonConstant;
import com.mt.wms.core.base.BaseController;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.validator.groups.AddGroup;
import com.mt.wms.core.validator.groups.PageGroup;
import com.mt.wms.core.validator.groups.UpdateGroup;
import com.mt.wms.core.vo.*;
import com.mt.wms.upms.params.MenuParam;
import com.mt.wms.upms.params.MenuQueryParam;
import com.mt.wms.upms.params.RoleMenuParam;
import com.mt.wms.upms.service.MenuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.groups.Default;
import java.util.List;
/**
* 平台菜单控制器
*
* @author jiff
* @date 2018/11/14
* @since 1.0
*/
@RestController
@RequestMapping(CommonConstant.API_MODULE_UPMS + "menu")
@Slf4j
@Api(value = "平台菜单管理", description = "平台菜单管理接口", hidden = false)
public class MenuController extends BaseController {
@Autowired
private MenuService menuService;
@PostMapping(value = "get")
@ApiOperation(value = "获取菜单")
private R<MenuVo> get(@Validated @RequestBody IdParam idParam) {
return menuService.get(idParam);
}
@PostMapping(value = "list")
@ApiOperation(value = "获取菜单列表")
private R<List<MenuVo>> list(@Validated @RequestBody MenuQueryParam menuQueryParam) {
return menuService.list(menuQueryParam);
}
@PostMapping(value = "page")
@ApiOperation(value = "获取分页菜单")
private R<PageVo<MenuVo>> page(@Validated({PageGroup.class, Default.class}) @RequestBody MenuQueryParam menuQueryParam) {
return menuService.page(menuQueryParam);
}
@PostMapping(value = "add")
@ApiOperation(value = "新增")
private R<IdVo> add(@Validated({AddGroup.class, Default.class}) @RequestBody MenuParam menuParam) {
return menuService.add(menuParam);
}
@PostMapping(value = "update")
@ApiOperation(value = "更新")
private R<IdVo> update(@Validated({UpdateGroup.class, Default.class}) @RequestBody MenuParam menuParam) {
return menuService.update(menuParam);
}
@PostMapping(value = "enabled")
@ApiOperation(value = "启停菜单")
private R<IdVo> enabled(@Validated @RequestBody EnabledParam enabledParam) {
return menuService.enabled(enabledParam);
}
@PostMapping(value = "delete")
@ApiOperation(value = "删除菜单")
private R<IdVo> delete(@Validated @RequestBody IdParam idParam) {
return menuService.delete(idParam);
}
@PostMapping(value = "saveRoleMenu")
@ApiOperation(value = "保存角色菜单")
private R<IdListVo> saveRoleMenu(@Validated @RequestBody RoleMenuParam roleMenuParam) {
return menuService.saveRoleMenu(roleMenuParam);
}
@PostMapping(value = "listByRole")
@ApiOperation(value = "获取角色菜单")
private R<List<MenuVo>> listByRole(@Validated @RequestBody IdParam idParam) {
return menuService.listByRole(idParam);
}
}

View File

@@ -0,0 +1,84 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.controller;
import com.mt.wms.core.constants.CommonConstant;
import com.mt.wms.core.base.BaseController;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.validator.groups.AddGroup;
import com.mt.wms.core.validator.groups.PageGroup;
import com.mt.wms.core.vo.*;
import com.mt.wms.upms.params.MenuResourceParam;
import com.mt.wms.upms.params.MenuResourceQueryParam;
import com.mt.wms.upms.service.MenuResourceService;
import com.mt.wms.upms.vo.ResourceVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.groups.Default;
import java.util.List;
/**
* 平台菜单资源控制器
*
* @author jiff
* @date 2018/11/14
* @since 1.0
*/
@RestController
@RequestMapping(CommonConstant.API_MODULE_UPMS + "menuResource")
@Slf4j
@Api(value = "菜单资源管理", description = "平台菜单资源管理接口", hidden = false)
public class MenuResourceController extends BaseController {
@Autowired
private MenuResourceService menuResourceService;
@PostMapping(value = "listByMenu")
@ApiOperation(value = "获取菜单已关联的资源列表")
private R<List<MenuResourceVo>> listByMenu(@Validated({Default.class}) @RequestBody IdParam idParam) {
return menuResourceService.listByMenu(idParam);
}
@PostMapping(value = "listWithMenu")
@ApiOperation(value = "获取菜单未关联的资源列表,根据菜单分类返回未关联的资源列表")
private R<List<ResourceVo>> listWithMenu(@Validated({Default.class}) @RequestBody MenuResourceQueryParam menuResourceQueryParam) {
return menuResourceService.listWithMenu(menuResourceQueryParam);
}
@PostMapping(value = "pageWithMenu")
@ApiOperation(value = "获取菜单未关联的资源分页列表,根据菜单分类返回未关联的资源列表")
private R<PageVo<ResourceVo>> pageWithMenu(@Validated({PageGroup.class, Default.class}) @RequestBody MenuResourceQueryParam menuResourceQueryParam) {
return menuResourceService.pageWithMenu(menuResourceQueryParam);
}
@PostMapping(value = "add")
@ApiOperation(value = "新增菜单资源")
private R<IdListVo> add(@Validated({AddGroup.class, Default.class}) @RequestBody MenuResourceParam menuResourceParam) {
return menuResourceService.add(menuResourceParam);
}
@PostMapping(value = "delete")
@ApiOperation(value = "删除菜单资源")
private R<IdVo> delete(@Validated @RequestBody IdParam idParam) {
return menuResourceService.delete(idParam);
}
@PostMapping(value = "batchDelete")
@ApiOperation(value = "批量删除菜单资源")
private R<IdListVo> delete(@Validated @RequestBody IdListParam idListParam) {
return menuResourceService.delete(idListParam);
}
}

View File

@@ -0,0 +1,100 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.controller;
import com.mt.wms.core.constants.CommonConstant;
import com.mt.wms.core.base.BaseController;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.validator.groups.AddGroup;
import com.mt.wms.core.validator.groups.PageGroup;
import com.mt.wms.core.validator.groups.UpdateGroup;
import com.mt.wms.core.vo.IdListVo;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.PageVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.params.ServiceParam;
import com.mt.wms.upms.params.ServiceQueryParam;
import com.mt.wms.upms.service.MicroServiceService;
import com.mt.wms.upms.vo.ServiceVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.groups.Default;
import java.util.List;
/**
* 微服务控制器
*
* @author jiff
* @date 2018/11/14
* @since 1.0
*/
@RestController
@RequestMapping(CommonConstant.API_MODULE_UPMS +"microService")
@Slf4j
@Api(value = "微服务管理", description = "微服务管理接口", hidden = false)
public class MicroServiceController extends BaseController {
@Autowired
private MicroServiceService microServiceService;
@PostMapping(value = "get")
@ApiOperation(value = "获取微服务")
private R<ServiceVo> get(@Validated @RequestBody IdParam idParam) {
return microServiceService.get(idParam);
}
@PostMapping(value = "page")
@ApiOperation(value = "获取分页微服务列表")
private R<PageVo<ServiceVo>> page(@Validated({PageGroup.class, Default.class}) @RequestBody ServiceQueryParam ServiceQueryParam) {
return microServiceService.page(ServiceQueryParam);
}
@PostMapping(value = "list")
@ApiOperation(value = "获取微服务列表")
private R<List<ServiceVo>> list(@Validated({Default.class}) @RequestBody ServiceQueryParam ServiceQueryParam) {
return microServiceService.list(ServiceQueryParam);
}
@PostMapping(value = "add")
@ApiOperation(value = "新增微服务")
private R<IdVo> add(@Validated({AddGroup.class, Default.class}) @RequestBody ServiceParam ServiceParam) {
return microServiceService.add(ServiceParam);
}
@PostMapping(value = "update")
@ApiOperation(value = "更新微服务")
private R<IdVo> update(@Validated({UpdateGroup.class, Default.class}) @RequestBody ServiceParam ServiceParam) {
return microServiceService.update(ServiceParam);
}
@PostMapping(value = "enabled")
@ApiOperation(value = "启停微服务")
private R<IdVo> enabled(@Validated @RequestBody EnabledParam enabledParam) {
return microServiceService.enabled(enabledParam);
}
@PostMapping(value = "delete")
@ApiOperation(value = "删除微服务")
private R<IdVo> delete(@Validated @RequestBody IdParam idParam) {
return microServiceService.delete(idParam);
}
@PostMapping(value = "batchDelete")
@ApiOperation(value = "批量删除微服务")
private R<IdListVo> delete(@Validated @RequestBody IdListParam idListParam) {
return microServiceService.delete(idListParam);
}
}

View File

@@ -0,0 +1,97 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.controller;
import com.mt.wms.core.constants.CommonConstant;
import com.mt.wms.core.base.BaseController;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.validator.groups.AddGroup;
import com.mt.wms.core.validator.groups.PageGroup;
import com.mt.wms.core.validator.groups.UpdateGroup;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.PageVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.params.SysOrgParam;
import com.mt.wms.upms.params.SysOrgQueryParam;
import com.mt.wms.upms.service.OrgService;
import com.mt.wms.upms.vo.SysOrgVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.groups.Default;
import java.util.List;
/**
* 平台组织控制器
*
* @author jiff
* @date 2018/11/8
* @since 1.0
*/
@RestController
@RequestMapping(CommonConstant.API_MODULE_UPMS +"org")
@Slf4j
@Api(value = "平台组织管理", description = "平台组织管理接口", hidden = false)
public class OrgController extends BaseController {
@Autowired
private OrgService orgService;
@PostMapping(value = "get")
@ApiOperation(value = "获取组织")
private R<SysOrgVo> get(@Validated @RequestBody IdParam idParam) {
return orgService.get(idParam);
}
@PostMapping(value = "list")
@ApiOperation(value = "获取组织列表")
private R<List<SysOrgVo>> list(@Validated({Default.class}) @RequestBody SysOrgQueryParam sysOrgQueryParam) {
return orgService.list(sysOrgQueryParam);
}
@PostMapping(value = "page")
@ApiOperation(value = "获取分页组织")
private R<PageVo<SysOrgVo>> page(@Validated({PageGroup.class, Default.class}) @RequestBody SysOrgQueryParam sysOrgQueryParam) {
return orgService.page(sysOrgQueryParam);
}
@PostMapping(value = "tree")
@ApiOperation(value = "获取组织树列表")
private R<List<SysOrgVo>> tree(@Validated({Default.class}) @RequestBody SysOrgQueryParam sysOrgQueryParam) {
return orgService.tree(sysOrgQueryParam);
}
@PostMapping(value = "add")
@ApiOperation(value = "新增")
private R<IdVo> add(@Validated({AddGroup.class, Default.class}) @RequestBody SysOrgParam sysOrgParam) {
return orgService.add(sysOrgParam);
}
@PostMapping(value = "update")
@ApiOperation(value = "更新")
private R<IdVo> update(@Validated({UpdateGroup.class, Default.class}) @RequestBody SysOrgParam sysOrgParam) {
return orgService.update(sysOrgParam);
}
@PostMapping(value = "enabled")
@ApiOperation(value = "启停组织")
private R<IdVo> enabled(@Validated @RequestBody EnabledParam enabledParam) {
return orgService.enabled(enabledParam);
}
@PostMapping(value = "delete")
@ApiOperation(value = "删除组织")
private R<IdVo> delete(@Validated @RequestBody IdParam idParam) {
return orgService.delete(idParam);
}
}

View File

@@ -0,0 +1,78 @@
package com.mt.wms.upms.controller;
import com.mt.wms.core.constants.CommonConstant;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.validator.groups.AddGroup;
import com.mt.wms.core.validator.groups.UpdateGroup;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.params.SysPostParam;
import com.mt.wms.upms.service.PostService;
import com.mt.wms.upms.vo.SysPostVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import javax.validation.groups.Default;
import java.util.List;
/**
* @Description: 合作伙伴岗位控制层
* @Param:
* @return:
* @Author: tqq
* @Date: 2019/11/11 15:44
*/
@RestController
@RequestMapping(CommonConstant.API_MODULE_UPMS +"post")
@Slf4j
@Api(value = "岗位管理", description = "岗位管理接口")
public class PostController {
@Autowired
private PostService postService;
@PostMapping(value = "get")
@ApiOperation(value = "通过id获取岗位信息")
private R<SysPostVo> get(@Valid @RequestBody IdParam idParam) {
return postService.get(idParam);
}
@PostMapping(value = "tree")
@ApiOperation(value = "获取岗位树形结构信息")
private R<List<SysPostVo>> tree() {
return postService.tree();
}
@PostMapping(value = "add")
@ApiOperation(value = "新增岗位信息")
private R<IdVo> add(@Validated({AddGroup.class, Default.class}) @RequestBody SysPostParam sysPostParam) {
return postService.add(sysPostParam);
}
@PostMapping(value = "update")
@ApiOperation(value = "修改岗位信息")
private R<IdVo> update(@Validated({UpdateGroup.class, Default.class}) @RequestBody SysPostParam sysPostParam) {
return postService.update(sysPostParam);
}
@PostMapping(value = "enabled")
@ApiOperation(value = "启停岗位")
private R<IdVo> enabled(@Validated @RequestBody EnabledParam enabledParam) {
return postService.enabled(enabledParam);
}
@PostMapping(value = "delete")
@ApiOperation(value = "删除岗位")
private R<IdVo> delete(@Valid @RequestBody IdParam idParam) {
return postService.delete(idParam);
}
}

View File

@@ -0,0 +1,100 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.controller;
import com.mt.wms.core.constants.CommonConstant;
import com.mt.wms.core.base.BaseController;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.validator.groups.AddGroup;
import com.mt.wms.core.validator.groups.PageGroup;
import com.mt.wms.core.validator.groups.UpdateGroup;
import com.mt.wms.core.vo.IdListVo;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.PageVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.params.ResourceParam;
import com.mt.wms.upms.params.ResourceQueryParam;
import com.mt.wms.upms.service.ResourceService;
import com.mt.wms.upms.vo.ResourceVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.groups.Default;
import java.util.List;
/**
* 平台资源控制器
*
* @author jiff
* @date 2018/11/14
* @since 1.0
*/
@RestController
@RequestMapping(CommonConstant.API_MODULE_UPMS +"resource")
@Slf4j
@Api(value = "平台资源管理", description = "平台资源管理接口", hidden = false)
public class ResourceController extends BaseController {
@Autowired
private ResourceService resourceService;
@PostMapping(value = "get")
@ApiOperation(value = "获取资源")
private R<ResourceVo> get(@Validated @RequestBody IdParam idParam) {
return resourceService.get(idParam);
}
@PostMapping(value = "page")
@ApiOperation(value = "获取分页资源列表")
private R<PageVo<ResourceVo>> page(@Validated({PageGroup.class, Default.class}) @RequestBody ResourceQueryParam resourceQueryParam) {
return resourceService.page(resourceQueryParam);
}
@PostMapping(value = "list")
@ApiOperation(value = "获取资源列表")
private R<List<ResourceVo>> list(@Validated({Default.class}) @RequestBody ResourceQueryParam resourceQueryParam) {
return resourceService.list(resourceQueryParam);
}
@PostMapping(value = "add")
@ApiOperation(value = "新增资源")
private R<IdVo> add(@Validated({AddGroup.class, Default.class}) @RequestBody ResourceParam resourceParam) {
return resourceService.add(resourceParam);
}
@PostMapping(value = "update")
@ApiOperation(value = "更新资源")
private R<IdVo> update(@Validated({UpdateGroup.class, Default.class}) @RequestBody ResourceParam resourceParam) {
return resourceService.update(resourceParam);
}
@PostMapping(value = "enabled")
@ApiOperation(value = "启停资源")
private R<IdVo> enabled(@Validated @RequestBody EnabledParam enabledParam) {
return resourceService.enabled(enabledParam);
}
@PostMapping(value = "delete")
@ApiOperation(value = "删除资源")
private R<IdVo> delete(@Validated @RequestBody IdParam idParam) {
return resourceService.delete(idParam);
}
@PostMapping(value = "batchDelete")
@ApiOperation(value = "批量删除资源")
private R<IdListVo> delete(@Validated @RequestBody IdListParam idListParam) {
return resourceService.delete(idListParam);
}
}

View File

@@ -0,0 +1,113 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.controller;
import com.mt.wms.core.constants.CommonConstant;
import com.mt.wms.core.base.BaseController;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.validator.groups.AddGroup;
import com.mt.wms.core.validator.groups.PageGroup;
import com.mt.wms.core.validator.groups.UpdateGroup;
import com.mt.wms.core.vo.IdListVo;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.PageVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.params.SysRoleParam;
import com.mt.wms.upms.params.SysRoleQueryParam;
import com.mt.wms.upms.params.UserRoleParam;
import com.mt.wms.upms.service.RoleService;
import com.mt.wms.upms.vo.SysRoleVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.groups.Default;
import java.util.List;
/**
* 平台角色控制器
*
* @author jiff
* @date 2018/11/14
* @since 1.0
*/
@RestController
@RequestMapping(CommonConstant.API_MODULE_UPMS +"role")
@Slf4j
@Api(value = "平台角色管理", description = "平台角色管理接口", hidden = false)
public class RoleController extends BaseController {
@Autowired
private RoleService roleService;
@PostMapping(value = "get")
@ApiOperation(value = "获取角色")
private R<SysRoleVo> get(@Validated @RequestBody IdParam idParam) {
return roleService.get(idParam);
}
@PostMapping(value = "page")
@ApiOperation(value = "获取分页角色列表")
private R<PageVo<SysRoleVo>> page(@Validated({PageGroup.class, Default.class}) @RequestBody SysRoleQueryParam sysRoleQueryParam) {
return roleService.page(sysRoleQueryParam);
}
@PostMapping(value = "list")
@ApiOperation(value = "获取角色列表")
private R<List<SysRoleVo>> list(@Validated({Default.class}) @RequestBody SysRoleQueryParam sysRoleQueryParam) {
return roleService.list(sysRoleQueryParam);
}
@PostMapping(value = "add")
@ApiOperation(value = "新增角色")
private R<IdVo> add(@Validated({AddGroup.class, Default.class}) @RequestBody SysRoleParam sysRoleParam) {
return roleService.add(sysRoleParam);
}
@PostMapping(value = "update")
@ApiOperation(value = "更新角色")
private R<IdVo> update(@Validated({UpdateGroup.class, Default.class}) @RequestBody SysRoleParam sysRoleParam) {
return roleService.update(sysRoleParam);
}
@PostMapping(value = "enabled")
@ApiOperation(value = "启停角色")
private R<IdVo> enabled(@Validated @RequestBody EnabledParam enabledParam) {
return roleService.enabled(enabledParam);
}
@PostMapping(value = "delete")
@ApiOperation(value = "删除角色")
private R<IdVo> delete(@Validated @RequestBody IdParam idParam) {
return roleService.delete(idParam);
}
@PostMapping(value = "batchDelete")
@ApiOperation(value = "批量删除角色")
private R<IdListVo> delete(@Validated @RequestBody IdListParam idListParam) {
return roleService.delete(idListParam);
}
@PostMapping(value = "saveUserRole")
@ApiOperation(value = "保存用户角色")
private R<IdListVo> saveUserRole(@Validated @RequestBody UserRoleParam userRoleParam) {
return roleService.saveUserRole(userRoleParam);
}
@PostMapping(value = "listByUser")
@ApiOperation(value = "获取用户角色")
private R<List<SysRoleVo>> listByUser(@Validated @RequestBody IdParam idParam) {
return roleService.listByUser(idParam);
}
}

View File

@@ -0,0 +1,71 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.controller;
import com.mt.wms.core.constants.CommonConstant;
import com.mt.wms.core.base.BaseController;
import com.mt.wms.core.dto.LoginUser;
import com.mt.wms.core.dto.Permission;
import com.mt.wms.core.vo.LoginUserVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.service.UpmsService;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.io.Serializable;
import java.util.List;
/**
* 平台通用权限管理控制器,提供给内部服务调用
*
* @author jiff
* @date 2018/11/7
* @since 1.0
*/
@RestController
@RequestMapping(CommonConstant.API_MODULE_UPMS +"upms")
@Slf4j
@Api(value = "平台权限管理", description = "平台权限管理接口,提供给内部服务调用", hidden = true)
public class UpmsController extends BaseController {
@Autowired
private UpmsService upmsService;
@PostMapping("login")
private R<LoginUser> login(@RequestParam("mobile") String mobile, @RequestParam("password") String password) {
return upmsService.login(mobile, password);
}
/**
* 退出登录
*
* @return 处理结果
*/
@PostMapping("logout")
private R<Serializable> logout() {
return upmsService.logout();
}
@PostMapping("getLoginUserByMobile")
private R<LoginUser> getLoginUser(@RequestParam("mobile") String mobile) {
return upmsService.getLoginUser(mobile);
}
@PostMapping(value = "getLoginUser")
private R<LoginUserVo> getLoginUserVo() {
return upmsService.getLoginUserVo();
}
@PostMapping("getPermissions")
private List<Permission> getPermissions() {
return upmsService.getPermissions();
}
}

View File

@@ -0,0 +1,137 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mt.wms.core.base.BaseController;
import com.mt.wms.core.constants.CommonConstant;
import com.mt.wms.core.dal.entity.SysUser;
import com.mt.wms.core.dal.service.SysUserServiceBiz;
import com.mt.wms.core.enums.WhetherEnum;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.params.MobileParam;
import com.mt.wms.core.validator.groups.AddGroup;
import com.mt.wms.core.validator.groups.PageGroup;
import com.mt.wms.core.validator.groups.UpdateGroup;
import com.mt.wms.core.vo.IdListVo;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.core.vo.WhetherVo;
import com.mt.wms.upms.params.*;
import com.mt.wms.upms.params.*;
import com.mt.wms.upms.service.UserService;
import com.mt.wms.upms.vo.SysUserVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import javax.validation.groups.Default;
import java.util.List;
/**
* 平台用户控制器
*
* @author jiff
* @date 2018/11/8
* @since 1.0
*/
@RestController
@RequestMapping(CommonConstant.API_MODULE_UPMS + "user")
@Slf4j
@Api(value = "平台用户管理", description = "平台用户管理接口", hidden = false)
public class UserController extends BaseController {
@Autowired
private UserService userService;
@Autowired
private SysUserServiceBiz sysUserServiceBiz;
@PostMapping("check")
@ApiOperation("检验手机号码是否存在")
private R<WhetherVo> checkMobile(@Valid @RequestBody MobileParam mobileParam) {
QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
wrapper.eq(SysUser.MOBILE, mobileParam.getMobile());
wrapper.eq(SysUser.VALID, WhetherEnum.YES.getValue());
SysUser sysUser = sysUserServiceBiz.getOne(wrapper);
return successful(WhetherVo.builder().whether(sysUser != null).build());
}
@PostMapping(value = "get")
@ApiOperation(value = "获取用户")
private R<SysUserVo> get(@Validated @RequestBody IdParam idParam) {
return userService.get(idParam);
}
@PostMapping(value = "page")
@ApiOperation(value = "获取分页用户列表")
private R<IPage<SysUserVo>> page(@Validated({PageGroup.class, Default.class}) @RequestBody SysUserQueryParam sysUserQueryParam) {
return userService.page(sysUserQueryParam);
}
@PostMapping(value = "list")
@ApiOperation(value = "获取用户列表")
private R<List<SysUserVo>> list(@Validated({Default.class}) @RequestBody SysUserQueryParam sysUserQueryParam) {
return userService.list(sysUserQueryParam);
}
@PostMapping(value = "add")
@ApiOperation(value = "新增用户")
private R<IdVo> add(@Validated({AddGroup.class, Default.class}) @RequestBody SysUserParam sysUserParam) {
return userService.add(sysUserParam);
}
@PostMapping(value = "update")
@ApiOperation(value = "更新用户")
private R<IdVo> update(@Validated({UpdateGroup.class, Default.class}) @RequestBody SysUserParam sysUserParam) {
return userService.update(sysUserParam);
}
@PostMapping(value = "enabled")
@ApiOperation(value = "启停用户")
private R<IdVo> enabled(@Validated @RequestBody EnabledParam enabledParam) {
return userService.enabled(enabledParam);
}
@PostMapping(value = "modifyPassword")
@ApiOperation(value = "修改密码")
private R<IdVo> modifyPassword(@Validated @RequestBody ModifyPasswordParam modifyPasswordParam) {
return userService.modifyPassword(modifyPasswordParam);
}
@PostMapping(value = "resetPassword")
@ApiOperation(value = "重置密码")
private R<IdVo> resetPassword(@Validated @RequestBody ResetPasswordParam resetPasswordParam) {
return userService.resetPassword(resetPasswordParam);
}
@PostMapping(value = "findPassword")
@ApiOperation(value = "找回密码")
private R<IdVo> findPassword(@Validated @RequestBody FindPasswordParam findPasswordParam) {
return userService.findPassword(findPasswordParam);
}
@PostMapping(value = "delete")
@ApiOperation(value = "删除用户")
private R<IdVo> delete(@Validated @RequestBody IdParam idParam) {
return userService.delete(idParam);
}
@PostMapping(value = "batchDelete")
@ApiOperation(value = "批量删除用户")
private R<IdListVo> delete(@Validated @RequestBody IdListParam idListParam) {
return userService.delete(idListParam);
}
}

View File

@@ -0,0 +1,37 @@
package com.mt.wms.upms.mapper;
import com.mt.wms.core.vo.MenuVo;
import com.mt.wms.core.vo.UserMenuVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* 菜单mapper类
*
* @author jiff
* @date 2018/11/9
* @since 1.0
*/
@Repository
public interface MenuMapper {
/**
* 获取角色菜单列表
*
* @param roleId 角色ID
* @param category 菜单分类
* @return 菜单列表
*/
List<MenuVo> listByRole(@Param("roleId") Long roleId, @Param("category") Integer category);
/**
* 获取用户菜单列表,先不考虑角色启停状态
*
* @param userId 用户ID
* @param category 菜单分类
* @return 菜单列表
*/
List<UserMenuVo> listByUser(@Param("userId") Long userId, @Param("category") Integer category);
}

View File

@@ -0,0 +1,29 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.mapper;
import com.mt.wms.core.dto.Permission;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author jiff
* @date 2018/11/26
* @since 1.0
*/
@Repository("upmsResourceMapper")
public interface ResourceMapper {
/**
* 获取用户权限列表
*
* @param userId 用户ID
* @param category 应用分类
* @return 权限列表
*/
List<Permission> listByUser(@Param("userId") Long userId, @Param("category") Integer category);
}

View File

@@ -0,0 +1,28 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.mapper;
import com.mt.wms.upms.vo.SysRoleVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author jiff
* @date 2018/11/26
* @since 1.0
*/
@Repository
public interface RoleMapper {
/**
* 获取用户角色列表
*
* @param userId 用户ID
* @return 用户角色列表
*/
List<SysRoleVo> listByUser(@Param("userId") Long userId);
}

View File

@@ -0,0 +1,40 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mt.wms.upms.params.SysUserQueryParam;
import com.mt.wms.upms.vo.SysUserVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author jiff
* @date 2018-12-10
* @since 1.0
*/
@Repository("upmsUserMapper")
public interface UserMapper {
/**
* 根据组织查询所管理的用户列表
*
* @param sysUserQueryParam 用户查询参数
* @return 用户列表
*/
List<SysUserVo> listByOrg(@Param("queryParam") SysUserQueryParam sysUserQueryParam);
/**
* 根据组织查询所管理的用户分页列表
*
* @param page 分页信息
* @param sysUserQueryParam 用户查询参数
* @return 用户列表
*/
List<SysUserVo> listByOrg(IPage page, @Param("queryParam") SysUserQueryParam sysUserQueryParam);
}

View File

@@ -0,0 +1,50 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.base.BaseParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
/**
* 找回密码请求参数对象
*
* @author jiff
* @date 2018/11/14
* @since 1.0
*/
@EqualsAndHashCode(callSuper = false)
@Data
@Builder
@ApiModel(value = "找回密码请求参数对象", description = "用于找回用户自己的密码")
public class FindPasswordParam extends BaseParam {
@ApiModelProperty(value = "手机号码", required = true, example = "13588441519")
@NotBlank(message = "手机号码不能为空")
@Pattern(regexp = "^1[3456789]\\d{9}$", message = "手机号码格式不正确")
private String mobile;
/**
* 短信验证码
*/
@ApiModelProperty(value = "短信验证码", required = true, example = "123456", position = 1)
@NotBlank(message = "短信验证码不能为空")
private String smsCode;
/**
* 密码
*/
@ApiModelProperty(value = "密码", required = true, example = "123456", position = 1)
@Length(min = 6, max = 20, message = "密码长度为6-20位")
private String password;
}

View File

@@ -0,0 +1,131 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.enums.HttpMethodEnum;
import com.mt.wms.core.enums.MenuCategoryEnum;
import com.mt.wms.core.enums.MenuTypeEnum;
import com.mt.wms.core.base.BaseParam;
import com.mt.wms.core.validator.constraints.Enum;
import com.mt.wms.core.validator.groups.AddGroup;
import com.mt.wms.core.validator.groups.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* <p>
* 菜单表
* </p>
*
* @author jiff
* @date 2018/11/9
* @since 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "菜单", description = "用于新增和更新菜单信息")
public class MenuParam extends BaseParam {
private static final long serialVersionUID = 1L;
/**
* 主键,自增
*/
@ApiModelProperty(value = "主键,更新时需要填写", example = "1")
@NotNull(message = "菜单ID不能为空", groups = {UpdateGroup.class})
private Long id;
/**
* 父菜单ID
*/
@ApiModelProperty(value = "父菜单ID", required = true, example = "0")
@NotNull(message = "父菜单ID不能为空", groups = {AddGroup.class})
@Min(message = "父菜单ID不能小于0", value = 0, groups = {AddGroup.class})
private Long parentId;
/**
* 菜单编码
*/
@ApiModelProperty(value = "菜单编码", example = "menu")
private String code;
/**
* 菜单名称
*/
@ApiModelProperty(value = "菜单名称", required = true, example = "菜单管理")
@NotBlank(message = "菜单名称不能为空")
private String name;
/**
* 菜单图标
*/
@ApiModelProperty("菜单图标")
private String icon;
/**
* 链接地址,可以是页面地址,也可以是函数事件
*/
@ApiModelProperty("链接地址,可以是页面地址,也可以是函数事件")
private String href;
/**
* 请求地址可以用于前端ajax调用后端用于做权限控制
*/
@ApiModelProperty("请求地址可以用于前端ajax调用后端用于做权限控制")
private String url;
/**
* 请求类型GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
*/
@ApiModelProperty(value = "请求类型GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE", example = "post")
@Enum(message = "非法的请求类型", target = {HttpMethodEnum.class})
private String method;
/**
* 权限,可以有多个,用逗号分隔,可用于第三方权限框架扩展
*/
@ApiModelProperty("权限,可以有多个,用逗号分隔,可用于第三方权限框架扩展")
private String permission;
/**
* 分类:1、pc2、app3、wechat4、miniapp
*/
@ApiModelProperty(value = "分类:1、pc2、app3、wechat4、miniapp", required = true, example = "1")
@NotNull(message = "菜单分类不能为空", groups = {AddGroup.class})
@Enum(message = "非法的菜单分类", target = {MenuCategoryEnum.class}, groups = {AddGroup.class})
private Integer category;
/**
* 类型:1、module2、menu3、button
*/
@ApiModelProperty(value = "类型:1、module2、menu3、button", required = true, example = "1")
@NotNull(message = "菜单类型不能为空")
@Enum(message = "非法的菜单类型", target = {MenuTypeEnum.class})
private Integer type;
/**
* 显示顺序
*/
@ApiModelProperty(value = "显示顺序", example = "1")
private Integer orderNum;
/**
* 备注
*/
@ApiModelProperty("备注")
private String remark;
}

View File

@@ -0,0 +1,67 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.enums.MenuCategoryEnum;
import com.mt.wms.core.enums.MenuTypeEnum;
import com.mt.wms.core.params.BasePageParam;
import com.mt.wms.core.validator.constraints.Enum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 系统菜单
* </p>
*
* @author jiff
* @date 2018/11/22
* @since 1.0
*/
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@Data
@Builder
@ApiModel(value = "菜单查询参数", description = "用于查询菜单信息")
public class MenuQueryParam extends BasePageParam {
/**
* 父菜单ID
*/
@ApiModelProperty(value = "父菜单ID", example = "0")
private Long parentId;
/**
* 菜单编码
*/
@ApiModelProperty(value = "菜单编码", example = "menu")
private String code;
/**
* 菜单名称
*/
@ApiModelProperty(value = "菜单名称", required = false, example = "菜单管理")
private String name;
/**
* 分类:1、pc2、app3、wechat4、miniapp
*/
@ApiModelProperty(value = "分类:1、pc2、app3、wechat4、miniapp", required = false, example = "1")
@Enum(message = "非法的菜单分类", target = {MenuCategoryEnum.class})
private Integer category;
/**
* 类型:1、module2、menu3、button
*/
@ApiModelProperty(value = "类型:1、module2、menu3、button", required = false, example = "1")
@Enum(message = "非法的菜单类型", target = {MenuTypeEnum.class})
private Integer type;
}

View File

@@ -0,0 +1,52 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.base.BaseParam;
import com.mt.wms.core.validator.groups.AddGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
/**
* <p>
* 菜单资源关系表
* </p>
*
* @author jiff
* @date 2018/11/27
* @since 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "菜单资源关系表", description = "用于新增菜单资源关系")
public class MenuResourceParam extends BaseParam {
private static final long serialVersionUID = 1L;
/**
* 菜单ID
*/
@ApiModelProperty(value = "菜单ID", required = true, example = "1")
@NotNull(message = "菜单ID不能为空")
private Long menuId;
/**
* 资源ID列表
*/
@ApiModelProperty(value = "资源ID列表", required = true, example = "[1]")
@NotNull(message = "资源ID列表不能为空", groups = {AddGroup.class})
@Size(message = "资源ID列表不能为空", min = 1, groups = {AddGroup.class})
private List<Long> resourceIds;
}

View File

@@ -0,0 +1,53 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.params.BasePageParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
/**
* <p>
* 菜单资源查询参数
* </p>
*
* @author jiff
* @date 2018/12/12
* @since 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "菜单资源查询参数", description = "用于查询菜单资源关系")
public class MenuResourceQueryParam extends BasePageParam {
private static final long serialVersionUID = 1L;
/**
* 菜单ID
*/
@ApiModelProperty(value = "菜单ID", required = true, example = "1")
@NotNull(message = "菜单ID不能为空")
private Long menuId;
/**
* 资源名称
*/
@ApiModelProperty(value = "资源名称", required = false, example = "新增资源")
private String name;
/**
* 请求地址可以用于前端ajax调用后端用于做权限控制
*/
@ApiModelProperty(value = "请求地址可以用于前端ajax调用后端用于做权限控制", required = false, example = "/platform-upms/resource/add")
private String url;
}

View File

@@ -0,0 +1,48 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.base.BaseParam;
import com.mt.wms.core.validator.constraints.Password;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
/**
* 修改密码请求参数对象
*
* @author jiff
* @date 2018/11/14
* @since 1.0
*/
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Data
@Builder
@ApiModel(value = "修改密码请求参数对象", description = "用于修改用户自己的密码")
public class ModifyPasswordParam extends BaseParam {
/**
* 密码
*/
@ApiModelProperty(value = "原密码", required = true, example = "123456", position = 1)
@Length(min = 6, max = 20, message = "原密码长度为6-20位")
private String password;
/**
* 密码
*/
@ApiModelProperty(value = "新密码", required = true, example = "123abc.", position = 2)
@Length(min = 6, max = 20, message = "新密码长度为6-20位")
@Password(format = Password.PasswordFormat.NUMBER_LETTER_CHAR, message = "密码必须同时包含数字、字母、特殊字符")
private String newPassword;
}

View File

@@ -0,0 +1,47 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.base.BaseParam;
import com.mt.wms.core.validator.constraints.Password;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
/**
* 重置密码请求参数对象
*
* @author jiff
* @date 2018/11/14
* @since 1.0
*/
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Data
@Builder
@ApiModel(value = "重置密码请求参数对象", description = "用于管理员重置其他用户密码")
public class ResetPasswordParam extends BaseParam {
@NotNull(message = "用户ID不能为空")
@ApiModelProperty(value = "用户ID", required = true, example = "1")
private Long id;
/**
* 密码
*/
@ApiModelProperty(value = "密码", required = true, example = "123456", position = 2)
@Length(min = 6, max = 20, message = "密码长度为6-20位")
@Password(format = Password.PasswordFormat.NUMBER_LETTER_CHAR, message = "密码格式错误")
private String password;
}

View File

@@ -0,0 +1,98 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.enums.HttpMethodEnum;
import com.mt.wms.core.enums.ResourceCategoryEnum;
import com.mt.wms.core.enums.SubsystemEnum;
import com.mt.wms.core.base.BaseParam;
import com.mt.wms.core.validator.constraints.Enum;
import com.mt.wms.core.validator.groups.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* <p>
* 资源表
* </p>
*
* @author jiff
* @date 2018/11/22
* @since 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "资源表", description = "用于新增和更新资源信息")
public class ResourceParam extends BaseParam {
private static final long serialVersionUID = 1L;
/**
* 主键,自增
*/
@ApiModelProperty(value = "主键,更新时需要填写", example = "1")
@NotNull(message = "资源ID不能为空", groups = {UpdateGroup.class})
private Long id;
/**
* 服务ID
*/
@ApiModelProperty(value = "服务ID", required = true, example = "1")
@NotNull(message = "服务ID不能为空")
private Long serviceId;
/**
* 名称
*/
@ApiModelProperty(value = "名称", required = true, example = "新增资源")
@NotBlank(message = "名称不能为空")
private String name;
/**
* 请求地址可以用于前端ajax调用后端用于做权限控制
*/
@ApiModelProperty(value = "请求地址可以用于前端ajax调用后端用于做权限控制", required = true, example = "/platform-upms/resource/add")
@NotBlank(message = "请求地址不能为空")
private String url;
/**
* 请求类型GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
*/
@ApiModelProperty(value = "请求类型GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE", required = true, example = "post")
@NotBlank(message = "请求方法不能为空")
@Enum(message = "非法的请求类型", target = {HttpMethodEnum.class})
private String method;
/**
* 子系统:0、common1、platform2、partner3、 hospital4、patient
*/
@ApiModelProperty(value = "子系统:0、common1、platform2、partner3、 hospital4、patient", required = true, example = "0")
@NotNull(message = "子系统类型不能为空")
@Enum(message = "非法的子系统类型", target = {SubsystemEnum.class})
private Integer subsystem;
/**
* 分类:0、common1、pc2、app3、wechat4、miniapp
*/
@ApiModelProperty(value = "分类:0、common1、pc2、app3、wechat4、miniapp", required = true, example = "0")
@NotNull(message = "资源类型不能为空")
@Enum(message = "非法的资源分类", target = {ResourceCategoryEnum.class})
private Integer category;
/**
* 备注
*/
@ApiModelProperty("备注")
private String remark;
}

View File

@@ -0,0 +1,75 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.enums.HttpMethodEnum;
import com.mt.wms.core.enums.ResourceCategoryEnum;
import com.mt.wms.core.enums.SubsystemEnum;
import com.mt.wms.core.params.BasePageParam;
import com.mt.wms.core.validator.constraints.Enum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 资源
* </p>
*
* @author jiff
* @date 2018/11/22
* @since 1.0
*/
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Data
@Builder
@ApiModel(value = "资源查询参数", description = "用于查询资源信息")
public class ResourceQueryParam extends BasePageParam {
/**
* 服务ID
*/
@ApiModelProperty(value = "服务ID", required = false, example = "1")
private Long serviceId;
/**
* 名称
*/
@ApiModelProperty(value = "名称", required = false, example = "新增资源")
private String name;
/**
* 请求地址可以用于前端ajax调用后端用于做权限控制
*/
@ApiModelProperty(value = "请求地址可以用于前端ajax调用后端用于做权限控制", required = false, example = "/platform-upms/resource/add")
private String url;
/**
* 请求类型GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
*/
@ApiModelProperty(value = "请求类型GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE", required = false, example = "post")
@Enum(message = "非法的请求类型", target = {HttpMethodEnum.class})
private String method;
/**
* 子系统:0、common1、platform2、partner3、 hospital4、patient
*/
@ApiModelProperty(value = "子系统:0、common1、platform2、partner3、 hospital4、patient", required = false, example = "0")
@Enum(message = "非法的子系统类型", target = {SubsystemEnum.class})
private Integer subsystem;
/**
* 分类:0、common1、pc2、app3、wechat4、miniapp
*/
@ApiModelProperty(value = "分类:0、common1、pc2、app3、wechat4、miniapp", required = true, example = "0")
@Enum(message = "非法的资源分类", target = {ResourceCategoryEnum.class})
private Integer category;
}

View File

@@ -0,0 +1,45 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.base.BaseParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* <p>
* 角色菜单参数
* </p>
*
* @author jiff
* @date 2018/11/26
* @since 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "角色菜单参数", description = "用于新增和更新角色菜单信息")
public class RoleMenuParam extends BaseParam {
private static final long serialVersionUID = 1L;
/**
* 角色ID
*/
@ApiModelProperty(value = "角色ID", required = true, example = "1")
@NotNull(message = "角色ID不能为空")
private Long roleId;
@ApiModelProperty(value = "菜单主键列表", required = false, example = "[1]")
private List<Long> menuIds;
}

View File

@@ -0,0 +1,63 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.base.BaseParam;
import com.mt.wms.core.validator.groups.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* <p>
* 服务表
* </p>
*
* @author jiff
* @date 2018/11/22
* @since 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "服务表", description = "用于新增和更新服务信息")
public class ServiceParam extends BaseParam {
private static final long serialVersionUID = 1L;
/**
* 主键,自增
*/
@ApiModelProperty(value = "主键,更新时需要填写", example = "1")
@NotNull(message = "服务ID不能为空", groups = {UpdateGroup.class})
private Long id;
/**
* 编码
*/
@ApiModelProperty(value = "编码", required = true, example = "lis-passport")
@NotBlank(message = "编码不能为空")
private String code;
/**
* 名称
*/
@ApiModelProperty(value = "名称", required = true, example = "统一认证服务")
@NotBlank(message = "名称不能为空")
private String name;
/**
* 备注
*/
@ApiModelProperty("备注")
private String remark;
}

View File

@@ -0,0 +1,46 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.params.BasePageParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 服务
* </p>
*
* @author jiff
* @date 2018/11/22
* @since 1.0
*/
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Data
@Builder
@ApiModel(value = "服务查询参数", description = "用于查询服务信息")
public class ServiceQueryParam extends BasePageParam {
/**
* 编码
*/
@ApiModelProperty(value = "编码", required = false, example = "lis-passport")
private String code;
/**
* 名称
*/
@ApiModelProperty(value = "名称", required = false, example = "统一认证服务")
private String name;
}

View File

@@ -0,0 +1,93 @@
/*
* Copyright (c) 2020.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.base.BaseParam;
import com.mt.wms.core.validator.groups.AddGroup;
import com.mt.wms.core.validator.groups.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.Email;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* <p>
* 系统组织表
* </p>
*
* @author jiff
* @date 2018/11/9
* @since 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "系统组织", description = "用于新增和更新组织信息")
public class SysOrgParam extends BaseParam {
private static final long serialVersionUID = 1L;
/**
* 主键,自增
*/
@ApiModelProperty(value = "主键,更新时需要填写", example = "1")
@NotNull(message = "组织ID不能为空", groups = {UpdateGroup.class})
private Long id;
/**
* 父组织ID
*/
@ApiModelProperty(value = "父组织ID", required = true, example = "0")
@NotNull(message = "父组织不能为空", groups = {AddGroup.class})
@Min(message = "父组织ID不能小于0", value = 0, groups = {AddGroup.class})
private Long parentId;
/**
* 名称
*/
@ApiModelProperty(value = "名称", required = true, example = "销售部")
@NotBlank(message = "名称不能为空")
private String name;
/**
* 联系人
*/
@ApiModelProperty(value = "联系人", example = "jiff")
private String contact;
/**
* 联系电话
*/
@ApiModelProperty(value = "联系电话", example = "13588441519")
private String phone;
/**
* 联系地址
*/
@ApiModelProperty(value = "联系地址", example = "中国人工智能小镇")
private String address;
/**
* 邮箱
*/
@ApiModelProperty(value = "邮箱", example = "jiff@ulabcare.com")
@Email
private String email;
/**
* 备注
*/
@ApiModelProperty("备注")
private String remark;
}

View File

@@ -0,0 +1,43 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.params.BasePageParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 系统组织
* </p>
*
* @author jiff
* @date 2018/11/22
* @since 1.0
*/
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Data
@Builder
@ApiModel(value = "系统组织查询参数", description = "用于查询组织信息")
public class SysOrgQueryParam extends BasePageParam {
/**
* 父组织ID
*/
@ApiModelProperty(value = "父组织ID, 没有指定父ID时则查询当前用户所能管理的所有组织包括用户所在组织及所有子组织", example = "0")
private Long parentId;
/**
* 名称
*/
@ApiModelProperty(value = "名称", required = false, example = "销售部", position = 1)
private String name;
}

View File

@@ -0,0 +1,57 @@
/*
* Copyright (c) 2020.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.base.BaseParam;
import com.mt.wms.core.validator.groups.AddGroup;
import com.mt.wms.core.validator.groups.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @Description: 新增或者修改岗位入参
* @Param:
* @return:
* @Author: tqq
* @Date: 2019/11/11 15:53
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "新增或者修改岗位入参", description = "用于新增和更新岗位信息")
public class SysPostParam extends BaseParam {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键,更新时需要填写", example = "1")
@NotNull(message = "岗位ID不能为空", groups = {UpdateGroup.class})
private Long id;
@ApiModelProperty(value = "父岗位ID(第一个岗位的上级岗位ID填0)", required = true, example = "0")
@NotNull(message = "父岗位ID不能为空", groups = {AddGroup.class})
@Min(message = "父岗位ID不能小于0", value = 0, groups = {AddGroup.class})
private Long parentId;
@ApiModelProperty(value = "岗位编码", required = true, example = "manager")
@NotBlank(message = "岗位编码不能为空")
private String code;
@ApiModelProperty(value = "岗位名称", required = true, example = "主管")
@NotBlank(message = "岗位名称不能为空")
private String name;
@ApiModelProperty("备注")
private String remark;
}

View File

@@ -0,0 +1,74 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.enums.MenuCategoryEnum;
import com.mt.wms.core.base.BaseParam;
import com.mt.wms.core.validator.constraints.Enum;
import com.mt.wms.core.validator.groups.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* <p>
* 系统角色表
* </p>
*
* @author jiff
* @date 2018/11/22
* @since 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "系统角色", description = "用于新增和更新角色信息")
public class SysRoleParam extends BaseParam {
private static final long serialVersionUID = 1L;
/**
* 主键,自增
*/
@ApiModelProperty(value = "主键,更新时需要填写", example = "1")
@NotNull(message = "角色ID不能为空", groups = {UpdateGroup.class})
private Long id;
/**
* 角色编码
*/
@ApiModelProperty(value = "角色编码", required = true, example = "manager")
@NotBlank(message = "角色编码不能为空")
private String code;
/**
* 角色名称
*/
@ApiModelProperty(value = "角色名称", required = true, example = "管理员")
@NotBlank(message = "角色名称不能为空")
private String name;
/**
* 分类:1、pc2、app3、wechat4、miniapp
*/
@ApiModelProperty(value = "分类:1、pc2、app3、wechat4、miniapp", required = true, example = "1")
@NotNull(message = "角色分类不能为空")
@Enum(message = "非法的角色分类", target = {MenuCategoryEnum.class})
private Integer category;
/**
* 备注
*/
@ApiModelProperty("备注")
private String remark;
}

View File

@@ -0,0 +1,53 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.enums.MenuCategoryEnum;
import com.mt.wms.core.params.BasePageParam;
import com.mt.wms.core.validator.constraints.Enum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 系统角色
* </p>
*
* @author jiff
* @date 2018/11/22
* @since 1.0
*/
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Data
@Builder
@ApiModel(value = "系统角色查询参数", description = "用于查询角色信息")
public class SysRoleQueryParam extends BasePageParam {
/**
* 角色编码
*/
@ApiModelProperty(value = "角色编码", required = false, example = "manager")
private String code;
/**
* 角色名称
*/
@ApiModelProperty(value = "角色名称", required = false, example = "管理员")
private String name;
/**
* 分类:1、pc2、app3、wechat4、miniapp
*/
@ApiModelProperty(value = "分类:1、pc2、app3、wechat4、miniapp", required = false, example = "1")
@Enum(message = "非法的角色分类", target = {MenuCategoryEnum.class})
private Integer category;
}

View File

@@ -0,0 +1,118 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mt.wms.core.enums.SexEnum;
import com.mt.wms.core.base.BaseParam;
import com.mt.wms.core.validator.constraints.Enum;
import com.mt.wms.core.validator.constraints.Password;
import com.mt.wms.core.validator.groups.AddGroup;
import com.mt.wms.core.validator.groups.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.time.LocalDate;
/**
* <p>
* 系统用户
* </p>
*
* @author jiff
* @date 2018/11/9
* @since 1.0
*/
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Data
@Builder
@ApiModel(value = "系统用户", description = "用于新增和更新用户信息")
public class SysUserParam extends BaseParam {
/**
* 主键,自增
*/
@ApiModelProperty(value = "主键,更新时需要填写", example = "1")
@NotNull(message = "用户ID不能为空", groups = {UpdateGroup.class})
private Long id;
/**
* 组织ID
*/
@ApiModelProperty(value = "组织ID", required = true, example = "1")
@NotNull(message = "组织ID不能为空")
private Long orgId;
/**
* 系统用户手机号
*/
@ApiModelProperty(value = "手机号", required = true, example = "13588441519", position = 1)
@NotBlank(message = "手机号码不能为空", groups = {AddGroup.class})
@Pattern(regexp = "^1[3456789]\\d{9}$", message = "手机号码格式不正确", groups = {AddGroup.class})
private String mobile;
/**
* 密码
*/
@ApiModelProperty(value = "密码,新增时需要填写", required = true, example = "123abc.", position = 2)
@Length(min = 6, max = 20, message = "密码长度为6-20位", groups = {AddGroup.class})
@Password(format = Password.PasswordFormat.NUMBER_LETTER_CHAR, message = "密码必须同时包含数字、字母、特殊字符")
private String password;
/**
* 工号
*/
@ApiModelProperty(value = "工号", example = "10000", position = 3)
private String code;
/**
* 姓名
*/
@ApiModelProperty(value = "姓名", required = true, example = "jiff", position = 3)
@NotBlank(message = "{lis.validator.constraints.NotBlank.name.message}")
private String name;
/**
* 生日
*/
@ApiModelProperty(value = "生日", example = "2018-11-11")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate birthday;
/**
* 系统用户邮箱
*/
@ApiModelProperty(value = "邮箱", example = "jiff@ulabcare.com")
@Email
private String email;
/**
* 性别1女2男
*/
@ApiModelProperty(value = "性别1女2男", example = "1")
@Enum(message = "{lis.validator.constraints.SexEnum.message}", target = {SexEnum.class})
private Integer sex;
/**
* 备注
*/
@ApiModelProperty(value = "备注", position = Integer.MAX_VALUE)
private String remark;
}

View File

@@ -0,0 +1,76 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.enums.SexEnum;
import com.mt.wms.core.enums.WhetherEnum;
import com.mt.wms.core.params.BasePageParam;
import com.mt.wms.core.validator.constraints.Enum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.Pattern;
/**
* <p>
* 系统用户
* </p>
*
* @author jiff
* @date 2018/11/9
* @since 1.0
*/
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Data
@Builder
@ApiModel(value = "系统用户查询参数", description = "用于查询用户信息")
public class SysUserQueryParam extends BasePageParam {
/**
* 组织ID
*/
@ApiModelProperty(value = "组织ID没有指定组织ID时则查询当前用户所能管理的所有组织包括用户所在组织及所有子组织", required = false, example = "1")
private Long orgId;
/**
* 是否只查询本组织用户
*/
@ApiModelProperty(value = "是否只查询本组织用户0、否查询本组织及子组织用户1、是只查询本组织用户", example = "0")
@Enum(message = "是否只查询本组织用户只允许0或1", target = {WhetherEnum.class})
private Integer orgScope;
/**
* 系统用户手机号
*/
@ApiModelProperty(value = "手机号", required = false, example = "13588441519", position = 1)
@Pattern(regexp = "^1[3456789]\\d{9}$", message = "手机号码格式不正确")
private String mobile;
/**
* 工号
*/
@ApiModelProperty(value = "工号", example = "10000", position = 3)
private String code;
/**
* 姓名
*/
@ApiModelProperty(value = "姓名", required = false, example = "jiff", position = 3)
private String name;
/**
* 性别1女2男
*/
@ApiModelProperty(value = "性别1女2男", example = "1", position = 5)
@Enum(message = "{lis.validator.constraints.SexEnum.message}", target = {SexEnum.class})
private Integer sex;
/**
* 家谱ID格式/rootId/.../grandfatherId/parentId/id
*/
@ApiModelProperty(value = "家谱ID格式/rootId/.../grandfatherId/parentId/id", example = "/0/1", hidden = true, notes = "内部使用,不展示给前端")
private String genealogyId;
}

View File

@@ -0,0 +1,45 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.params;
import com.mt.wms.core.base.BaseParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* <p>
* 用户角色参数
* </p>
*
* @author jiff
* @date 2018/11/26
* @since 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "用户角色参数", description = "用于新增和更新用户角色信息")
public class UserRoleParam extends BaseParam {
private static final long serialVersionUID = 1L;
/**
* 用户ID
*/
@ApiModelProperty(value = "用户ID", required = true, example = "1")
@NotNull(message = "用户ID不能为空")
private Long userId;
@ApiModelProperty(value = "角色主键列表", required = false, example = "[1]")
private List<Long> roleIds;
}

View File

@@ -0,0 +1,73 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.vo.*;
import com.mt.wms.upms.params.MenuResourceParam;
import com.mt.wms.upms.params.MenuResourceQueryParam;
import com.mt.wms.upms.vo.ResourceVo;
import java.util.List;
/**
* 菜单资源服务接口
*
* @author jiff
* @date 2018/11/27
* @since 1.0
*/
public interface MenuResourceService {
/**
* 新增菜单资源
*
* @param menuResourceParam 菜单资源参数
* @return 主键
*/
R<IdListVo> add(MenuResourceParam menuResourceParam);
/**
* 删除菜单资源
*
* @param idParam 主键参数
* @return 主键
*/
R<IdVo> delete(IdParam idParam);
/**
* 批量删除菜单资源
*
* @param idListParam 主键列表参数
* @return 主键列表
*/
R<IdListVo> delete(IdListParam idListParam);
/**
* 获取菜单资源列表
*
* @param idParam 主键参数
* @return 菜单资源列表
*/
R<List<MenuResourceVo>> listByMenu(IdParam idParam);
/**
* 获取资源列表
*
* @param menuResourceQueryParam 查询参数
* @return 资源列表
*/
R<List<ResourceVo>> listWithMenu(MenuResourceQueryParam menuResourceQueryParam);
/**
* 获取资源分页列表
*
* @param menuResourceQueryParam 查询参数
* @return 资源分页列表
*/
R<PageVo<ResourceVo>> pageWithMenu(MenuResourceQueryParam menuResourceQueryParam);
}

View File

@@ -0,0 +1,107 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.vo.*;
import com.mt.wms.upms.params.MenuParam;
import com.mt.wms.upms.params.MenuQueryParam;
import com.mt.wms.upms.params.RoleMenuParam;
import java.util.List;
/**
* 菜单服务接口
*
* @author jiff
* @date 2018/11/14
* @since 1.0
*/
public interface MenuService {
/**
* 获取菜单
*
* @param idParam 主键参数
* @return 菜单
*/
R<MenuVo> get(IdParam idParam);
/**
* 获取菜单列表
*
* @param menuQueryParam 菜单查询参数
* @return 菜单列表
*/
R<List<MenuVo>> list(MenuQueryParam menuQueryParam);
/**
* 获取菜单分页列表
*
* @param menuQueryParam 菜单查询参数
* @return 菜单分页列表
*/
R<PageVo<MenuVo>> page(MenuQueryParam menuQueryParam);
/**
* 新增菜单
*
* @param menuParam 菜单参数
* @return 主键
*/
R<IdVo> add(MenuParam menuParam);
/**
* 更新菜单
*
* @param menuParam 菜单参数
* @return 主键
*/
R<IdVo> update(MenuParam menuParam);
/**
* 启用停用
*
* @param enabledParam 启停参数
* @return 主键
*/
R<IdVo> enabled(EnabledParam enabledParam);
/**
* 删除菜单
*
* @param idParam 主键参数
* @return 主键
*/
R<IdVo> delete(IdParam idParam);
/**
* 批量删除菜单
*
* @param idListParam 主键列表参数
* @return 主键列表
*/
R<IdListVo> delete(IdListParam idListParam);
/**
* 保存角色菜单
*
* @param roleMenuParam 角色菜单参数
* @return 主键列表
*/
R<IdListVo> saveRoleMenu(RoleMenuParam roleMenuParam);
/**
* 获取菜单列表
*
* @param idParam 主键参数
* @return 菜单列表
*/
R<List<MenuVo>> listByRole(IdParam idParam);
}

View File

@@ -0,0 +1,93 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.vo.IdListVo;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.PageVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.params.ServiceParam;
import com.mt.wms.upms.params.ServiceQueryParam;
import com.mt.wms.upms.vo.ServiceVo;
import java.util.List;
/**
* 微服务服务接口
*
* @author jiff
* @date 2018/11/14
* @since 1.0
*/
public interface MicroServiceService {
/**
* 获取服务
*
* @param idParam 主键参数
* @return 服务
*/
R<ServiceVo> get(IdParam idParam);
/**
* 获取服务列表
*
* @param serviceQueryParam 服务查询参数
* @return 服务列表
*/
R<List<ServiceVo>> list(ServiceQueryParam serviceQueryParam);
/**
* 获取服务分页列表
*
* @param serviceQueryParam 服务查询参数
* @return 服务分页列表
*/
R<PageVo<ServiceVo>> page(ServiceQueryParam serviceQueryParam);
/**
* 新增服务
*
* @param serviceParam 服务参数
* @return 主键
*/
R<IdVo> add(ServiceParam serviceParam);
/**
* 更新服务
*
* @param serviceParam 服务参数
* @return 主键
*/
R<IdVo> update(ServiceParam serviceParam);
/**
* 启用停用
*
* @param enabledParam 启停参数
* @return 主键
*/
R<IdVo> enabled(EnabledParam enabledParam);
/**
* 删除服务
*
* @param idParam 主键参数
* @return 主键
*/
R<IdVo> delete(IdParam idParam);
/**
* 批量删除服务
*
* @param idListParam 主键列表参数
* @return 主键列表
*/
R<IdListVo> delete(IdListParam idListParam);
}

View File

@@ -0,0 +1,100 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service;
import com.mt.wms.upms.params.SysOrgParam;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.vo.IdListVo;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.PageVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.params.SysOrgQueryParam;
import com.mt.wms.upms.vo.SysOrgVo;
import java.util.List;
/**
* 组织服务接口
*
* @author jiff
* @date 2018/11/9
* @since 1.0
*/
public interface OrgService {
/**
* 获取组织
*
* @param idParam 主键参数
* @return 组织
*/
R<SysOrgVo> get(IdParam idParam);
/**
* 获取组织列表
*
* @param sysOrgQueryParam 组织查询参数
* @return 组织列表
*/
R<List<SysOrgVo>> list(SysOrgQueryParam sysOrgQueryParam);
/**
* 获取组织分页列表
*
* @param sysOrgQueryParam 组织查询参数
* @return 组织分页列表
*/
R<PageVo<SysOrgVo>> page(SysOrgQueryParam sysOrgQueryParam);
/**
* 获取组织树列表
*
* @param sysOrgQueryParam 组织查询参数
* @return 组织树列表
*/
R<List<SysOrgVo>> tree(SysOrgQueryParam sysOrgQueryParam);
/**
* 新增组织
*
* @param sysOrgParam 组织参数
* @return 主键
*/
R<IdVo> add(SysOrgParam sysOrgParam);
/**
* 更新组织
*
* @param sysOrgParam 组织参数
* @return 主键
*/
R<IdVo> update(SysOrgParam sysOrgParam);
/**
* 启用停用
*
* @param enabledParam 启停参数
* @return 主键
*/
R<IdVo> enabled(EnabledParam enabledParam);
/**
* 删除组织
*
* @param idParam 主键参数
* @return 主键
*/
R<IdVo> delete(IdParam idParam);
/**
* 批量删除组织
*
* @param idListParam 主键列表参数
* @return 主键列表
*/
R<IdListVo> delete(IdListParam idListParam);
}

View File

@@ -0,0 +1,61 @@
package com.mt.wms.upms.service;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.params.SysPostParam;
import com.mt.wms.upms.vo.SysPostVo;
import java.util.List;
/***
* 合作伙伴岗位接口
*/
public interface PostService {
/***
* 通过id获取岗位信息
* @param id
* @return
*/
R<SysPostVo> get(IdParam id);
/***
* 获取岗位树形结构信息
* @return
*/
R<List<SysPostVo>> tree();
/***
* 新增岗位信息
* @param sysPostParam
* @return
*/
R<IdVo> add(SysPostParam sysPostParam);
/***
* 修改岗位信息
* @param sysPostParam
* @return
*/
R<IdVo> update(SysPostParam sysPostParam);
/**
* 启用停用
*
* @param enabledParam 启停参数
* @return 主键
*/
R<IdVo> enabled(EnabledParam enabledParam);
/***
* 删除岗位
* @param id
* @return
*/
R<IdVo> delete(IdParam id);
}

View File

@@ -0,0 +1,94 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.vo.IdListVo;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.PageVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.params.ResourceParam;
import com.mt.wms.upms.params.ResourceQueryParam;
import com.mt.wms.upms.vo.ResourceVo;
import java.util.List;
/**
* 资源服务接口
*
* @author jiff
* @date 2018/11/14
* @since 1.0
*/
public interface ResourceService {
/**
* 获取资源
*
* @param idParam 主键参数
* @return 资源
*/
R<ResourceVo> get(IdParam idParam);
/**
* 获取资源列表
*
* @param resourceQueryParam 资源查询参数
* @return 资源列表
*/
R<List<ResourceVo>> list(ResourceQueryParam resourceQueryParam);
/**
* 获取资源分页列表
*
* @param resourceQueryParam 资源查询参数
* @return 资源分页列表
*/
R<PageVo<ResourceVo>> page(ResourceQueryParam resourceQueryParam);
/**
* 新增资源
*
* @param resourceParam 资源参数
* @return 主键
*/
R<IdVo> add(ResourceParam resourceParam);
/**
* 更新资源
*
* @param resourceParam 资源参数
* @return 主键
*/
R<IdVo> update(ResourceParam resourceParam);
/**
* 启用停用
*
* @param enabledParam 启停参数
* @return 主键
*/
R<IdVo> enabled(EnabledParam enabledParam);
/**
* 删除资源
*
* @param idParam 主键参数
* @return 主键
*/
R<IdVo> delete(IdParam idParam);
/**
* 批量删除资源
*
* @param idListParam 主键列表参数
* @return 主键列表
*/
R<IdListVo> delete(IdListParam idListParam);
}

View File

@@ -0,0 +1,111 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.vo.IdListVo;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.PageVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.params.SysRoleParam;
import com.mt.wms.upms.params.SysRoleQueryParam;
import com.mt.wms.upms.params.UserRoleParam;
import com.mt.wms.upms.vo.SysRoleVo;
import java.util.List;
/**
* 角色服务接口
*
* @author jiff
* @date 2018/11/14
* @since 1.0
*/
public interface RoleService {
/**
* 获取角色
*
* @param idParam 主键参数
* @return 角色
*/
R<SysRoleVo> get(IdParam idParam);
/**
* 获取角色列表
*
* @param sysRoleQueryParam 角色查询参数
* @return 角色列表
*/
R<List<SysRoleVo>> list(SysRoleQueryParam sysRoleQueryParam);
/**
* 获取角色分页列表
*
* @param sysRoleQueryParam 角色查询参数
* @return 角色分页列表
*/
R<PageVo<SysRoleVo>> page(SysRoleQueryParam sysRoleQueryParam);
/**
* 新增角色
*
* @param sysRoleParam 角色参数
* @return 主键
*/
R<IdVo> add(SysRoleParam sysRoleParam);
/**
* 更新角色
*
* @param sysRoleParam 角色参数
* @return 主键
*/
R<IdVo> update(SysRoleParam sysRoleParam);
/**
* 启用停用
*
* @param enabledParam 启停参数
* @return 主键
*/
R<IdVo> enabled(EnabledParam enabledParam);
/**
* 删除角色
*
* @param idParam 主键参数
* @return 主键
*/
R<IdVo> delete(IdParam idParam);
/**
* 批量删除角色
*
* @param idListParam 主键列表参数
* @return 主键列表
*/
R<IdListVo> delete(IdListParam idListParam);
/**
* 保存用户角色
*
* @param userRoleParam 用户角色参数
* @return 主键列表
*/
R<IdListVo> saveUserRole(UserRoleParam userRoleParam);
/**
* 获取用户角色列表
*
* @param idParam 主键参数
* @return 角色列表
*/
R<List<SysRoleVo>> listByUser(IdParam idParam);
}

View File

@@ -0,0 +1,62 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service;
import com.mt.wms.core.dto.LoginUser;
import com.mt.wms.core.dto.Permission;
import com.mt.wms.core.vo.LoginUserVo;
import com.mt.wms.core.vo.R;
import java.io.Serializable;
import java.util.List;
/**
* 通用权限服务接口
*
* @author jiff
* @date 2018-11-27
* @since 1.0
*/
public interface UpmsService {
/**
* 用户登录
*
* @param mobile 手机号码
* @param password 密码
* @return 登录用户
*/
R<LoginUser> login(String mobile, String password);
/**
* 退出登录
*
* @return 处理结果
*/
R<Serializable> logout();
/**
* 获取登录用户信息
*
* @param mobile 手机号码
* @return 登录用户
*/
R<LoginUser> getLoginUser(String mobile);
/**
* 获取登录用户信息
*
* @return 登录用户
*/
R<LoginUserVo> getLoginUserVo();
/**
* 获取用户权限列表
*
* @return 权限列表
*/
List<Permission> getPermissions();
}

View File

@@ -0,0 +1,118 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.vo.IdListVo;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.params.*;
import com.mt.wms.upms.params.*;
import com.mt.wms.upms.vo.SysUserVo;
import java.util.List;
/**
* 用户服务接口
*
* @author jiff
* @date 2018/11/14
* @since 1.0
*/
public interface UserService {
/**
* 获取用户
*
* @param idParam 主键参数
* @return 用户
*/
R<SysUserVo> get(IdParam idParam);
/**
* 获取用户列表
*
* @param sysUserQueryParam 用户查询参数
* @return 用户列表
*/
R<List<SysUserVo>> list(SysUserQueryParam sysUserQueryParam);
/**
* 获取用户分页列表
*
* @param sysUserQueryParam 用户查询参数
* @return 用户分页列表
*/
R<IPage<SysUserVo>> page(SysUserQueryParam sysUserQueryParam);
/**
* 新增用户
*
* @param sysUserParam 用户参数
* @return 主键
*/
R<IdVo> add(SysUserParam sysUserParam);
/**
* 更新用户
*
* @param sysUserParam 用户参数
* @return 主键
*/
R<IdVo> update(SysUserParam sysUserParam);
/**
* 启用停用
*
* @param enabledParam 启停参数
* @return 主键
*/
R<IdVo> enabled(EnabledParam enabledParam);
/**
* 修改密码
*
* @param modifyPasswordParam 修改密码参数
* @return 主键
*/
R<IdVo> modifyPassword(ModifyPasswordParam modifyPasswordParam);
/**
* 重置密码
*
* @param resetPasswordParam 重置密码参数
* @return 主键
*/
R<IdVo> resetPassword(ResetPasswordParam resetPasswordParam);
/**
* 找回密码
*
* @param findPasswordParam 找回密码参数
* @return 主键
*/
R<IdVo> findPassword(FindPasswordParam findPasswordParam);
/**
* 删除用户
*
* @param idParam 主键参数
* @return 主键
*/
R<IdVo> delete(IdParam idParam);
/**
* 批量删除用户
*
* @param idListParam 主键列表参数
* @return 主键列表
*/
R<IdListVo> delete(IdListParam idListParam);
}

View File

@@ -0,0 +1,187 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mt.wms.core.api.Assert;
import com.mt.wms.core.base.BaseService;
import com.mt.wms.core.dal.entity.Resource;
import com.mt.wms.core.dal.entity.SysMenu;
import com.mt.wms.core.dal.entity.SysMenuResource;
import com.mt.wms.core.dal.service.ResourceServiceBiz;
import com.mt.wms.core.dal.service.SysMenuResourceServiceBiz;
import com.mt.wms.core.dal.service.SysMenuServiceBiz;
import com.mt.wms.core.enums.ResourceCategoryEnum;
import com.mt.wms.core.enums.SubsystemEnum;
import com.mt.wms.core.enums.WhetherEnum;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.vo.*;
import com.mt.wms.upms.params.MenuResourceParam;
import com.mt.wms.upms.params.MenuResourceQueryParam;
import com.mt.wms.upms.service.MenuResourceService;
import com.mt.wms.upms.vo.ResourceVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 菜单资源服务接口实现类
*
* @author jiff
* @date 2018-11-28
* @since 1.0
*/
@Service
@Transactional
public class MenuResourceServiceImpl extends BaseService implements MenuResourceService {
@Autowired
private SysMenuResourceServiceBiz sysMenuResourceServiceBiz;
@Autowired
private SysMenuServiceBiz sysMenuServiceBiz;
@Autowired
private ResourceServiceBiz resourceServiceBiz;
/**
* 新增菜单资源
*
* @param menuResourceParam 菜单资源参数
* @return 主键
*/
@Override
public R<IdListVo> add(MenuResourceParam menuResourceParam) {
Long menuId = menuResourceParam.getMenuId();
List<Long> resourceIds = menuResourceParam.getResourceIds();
SysMenu menu = sysMenuServiceBiz.getById(menuId);
Assert.notNull("菜单不存在", menu);
Collection<Resource> resources = resourceServiceBiz.listByIds(resourceIds);
if (resourceIds.size() != resources.size()) {
return failed("资源不存在");
}
for (Resource resource : resources) {
Assert.fail(resource.getCategory() > 0 && !menu.getCategory().equals(resource.getCategory()), "菜单分类和资源分类不一致");
}
//先过滤已有的菜单资源关系,再保存新增的菜单资源关系
List<SysMenuResource> menuResources = sysMenuResourceServiceBiz.list(new QueryWrapper<SysMenuResource>().eq(SysMenuResource.MENU_ID, menuId));
Map<Long, SysMenuResource> menuResourceMap = menuResources.stream().collect(Collectors.toMap(SysMenuResource::getResourceId, menuResource -> menuResource, (k1, k2) -> k1));
resourceIds = resourceIds.stream().filter(id -> !menuResourceMap.containsKey(id)).collect(Collectors.toList());
List<SysMenuResource> addMenuResources = resourceIds.stream()
.map(resourceId -> setCommonField(new SysMenuResource().setMenuId(menuId).setResourceId(resourceId)))
.collect(Collectors.toList());
sysMenuResourceServiceBiz.saveBatch(addMenuResources);
return successful(IdListVo.builder().ids(addMenuResources.stream().map(SysMenuResource::getId).collect(Collectors.toList())).build());
}
/**
* 删除菜单资源
*
* @param idParam 主键参数
* @return 主键
*/
@Override
public R<IdVo> delete(IdParam idParam) {
sysMenuResourceServiceBiz.removeById(idParam.getId());
return successful(IdVo.builder().id(idParam.getId()).build());
}
/**
* 批量删除菜单资源
*
* @param idListParam 主键列表参数
* @return 主键列表
*/
@Override
public R<IdListVo> delete(IdListParam idListParam) {
sysMenuResourceServiceBiz.removeByIds(idListParam.getIds());
return successful(IdListVo.builder().ids(idListParam.getIds()).build());
}
/**
* 获取菜单资源列表,返回菜单关联的资源列表
*
* @param idParam 主键参数
* @return 菜单资源列表
*/
@Override
public R<List<MenuResourceVo>> listByMenu(IdParam idParam) {
//先查询菜单资源关系再转换成Map<resourceId,SysMenuResource>,便于把资源列表转换成菜单资源列表
List<SysMenuResource> menuResources = sysMenuResourceServiceBiz.list(new QueryWrapper<SysMenuResource>().eq(SysMenuResource.MENU_ID, idParam.getId()));
if (CollectionUtils.isEmpty(menuResources)) {
return successful(null);
}
Map<Long, SysMenuResource> menuResourceMap = menuResources.stream().collect(Collectors.toMap(SysMenuResource::getResourceId, menuResource -> menuResource, (k1, k2) -> k1));
Collection<Resource> resources = resourceServiceBiz.listByIds(menuResources.stream().map(SysMenuResource::getResourceId).collect(Collectors.toList()));
List<MenuResourceVo> menuResourceVos = resources.stream().map(resource -> {
MenuResourceVo menuResourceVo = MenuResourceVo.builder().build();
BeanUtils.copyProperties(resource, menuResourceVo);
SysMenuResource menuResource = menuResourceMap.get(resource.getId());
BeanUtils.copyProperties(menuResource, menuResourceVo);
return menuResourceVo;
}).collect(Collectors.toList());
return successful(menuResourceVos);
}
/**
* 获取资源列表,需要根据菜单分类返回未关联的资源列表
*
* @param menuResourceQueryParam 查询参数
* @return 资源列表
*/
@Override
public R<List<ResourceVo>> listWithMenu(MenuResourceQueryParam menuResourceQueryParam) {
SysMenu menu = sysMenuServiceBiz.getById(menuResourceQueryParam.getMenuId());
Assert.notNull("菜单不存在", menu);
List<SysMenuResource> menuResources = sysMenuResourceServiceBiz.list(new QueryWrapper<SysMenuResource>().eq(SysMenuResource.MENU_ID, menu.getId()));
Map<Long, SysMenuResource> menuResourceMap = menuResources.stream().collect(Collectors.toMap(SysMenuResource::getResourceId, menuResource -> menuResource, (k1, k2) -> k1));
List<Resource> allResources = resourceServiceBiz
.list(new QueryWrapper<Resource>()
.eq(Resource.ENABLED, WhetherEnum.YES.getValue())
.and(wrapper -> wrapper.eq(Resource.SUBSYSTEM, SubsystemEnum.COMMON.getValue())
.or().eq(Resource.SUBSYSTEM, SubsystemEnum.PLATFORM.getValue()))
.and(wrapper -> wrapper.eq(Resource.CATEGORY, ResourceCategoryEnum.COMMON.getValue())
.or().eq(Resource.CATEGORY, menu.getCategory()))
.like(StringUtils.isNotBlank(menuResourceQueryParam.getName()), Resource.NAME, menuResourceQueryParam.getName())
.like(StringUtils.isNotBlank(menuResourceQueryParam.getUrl()), Resource.URL, menuResourceQueryParam.getUrl()));
List<Resource> resources = allResources.stream().filter(resource -> !menuResourceMap.containsKey(resource.getId())).collect(Collectors.toList());
List<ResourceVo> resourceVos = com.mt.wms.core.utils.BeanUtils.copyList(resources, ResourceVo.class);
return successful(resourceVos);
}
/**
* 获取资源分页列表,需要根据菜单分类返回未关联的资源列表
*
* @param menuResourceQueryParam 查询参数
* @return 资源分页列表
*/
@Override
public R<PageVo<ResourceVo>> pageWithMenu(MenuResourceQueryParam menuResourceQueryParam) {
SysMenu menu = sysMenuServiceBiz.getById(menuResourceQueryParam.getMenuId());
Assert.notNull("菜单不存在", menu);
List<SysMenuResource> menuResources = sysMenuResourceServiceBiz.list(new QueryWrapper<SysMenuResource>().eq(SysMenuResource.MENU_ID, menu.getId()));
IPage<Resource> page = resourceServiceBiz
.page(new Page<>(menuResourceQueryParam.getCurrent(), menuResourceQueryParam.getSize()), new QueryWrapper<Resource>()
.eq(Resource.ENABLED, WhetherEnum.YES.getValue())
.and(wrapper -> wrapper.eq(Resource.SUBSYSTEM, SubsystemEnum.COMMON.getValue())
.or().eq(Resource.SUBSYSTEM, SubsystemEnum.PLATFORM.getValue()))
.and(wrapper -> wrapper.eq(Resource.CATEGORY, ResourceCategoryEnum.COMMON.getValue())
.or().eq(Resource.CATEGORY, menu.getCategory()))
.notIn(!CollectionUtils.isEmpty(menuResources), Resource.ID, menuResources.stream().map(SysMenuResource::getResourceId).collect(Collectors.toList()))
.like(StringUtils.isNotBlank(menuResourceQueryParam.getName()), Resource.NAME, menuResourceQueryParam.getName())
.like(StringUtils.isNotBlank(menuResourceQueryParam.getUrl()), Resource.URL, menuResourceQueryParam.getUrl()));
return successful(new PageVo<>(page, ResourceVo.class));
}
}

View File

@@ -0,0 +1,259 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mt.wms.core.api.Assert;
import com.mt.wms.core.base.BaseSupport;
import com.mt.wms.core.dal.entity.SysMenu;
import com.mt.wms.core.dal.entity.SysMenuResource;
import com.mt.wms.core.dal.entity.SysRole;
import com.mt.wms.core.dal.entity.SysRoleMenu;
import com.mt.wms.core.dal.service.SysMenuResourceServiceBiz;
import com.mt.wms.core.dal.service.SysMenuServiceBiz;
import com.mt.wms.core.dal.service.SysRoleMenuServiceBiz;
import com.mt.wms.core.dal.service.SysRoleServiceBiz;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.utils.TreeUtil;
import com.mt.wms.core.vo.*;
import com.mt.wms.upms.mapper.MenuMapper;
import com.mt.wms.upms.params.MenuParam;
import com.mt.wms.upms.params.MenuQueryParam;
import com.mt.wms.upms.params.RoleMenuParam;
import com.mt.wms.upms.service.MenuService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
/**
* 菜单服务实现类
*
* @author jiff
* @date 2018/11/9
* @since 1.0
*/
@Service
@Transactional
public class MenuServiceImpl extends BaseSupport implements MenuService {
@Autowired
private SysMenuServiceBiz sysMenuServiceBiz;
@Autowired
private SysRoleMenuServiceBiz sysRoleMenuServiceBiz;
@Autowired
private SysMenuResourceServiceBiz sysMenuResourceServiceBiz;
@Autowired
private SysRoleServiceBiz sysRoleServiceBiz;
@Autowired
private MenuMapper menuMapper;
/**
* 获取菜单
*
* @param idParam
* @return
*/
@Override
public R<MenuVo> get(IdParam idParam) {
SysMenu menu = sysMenuServiceBiz.getById(idParam.getId());
Assert.notNull("菜单不存在", menu);
MenuVo sysMenuVo = MenuVo.builder().build();
BeanUtils.copyProperties(menu, sysMenuVo);
//父菜单ID存在时则返回父菜单名称
if (menu.getParentId() > 0L) {
SysMenu parentMenu = sysMenuServiceBiz.getById(menu.getParentId());
if (parentMenu != null) {
sysMenuVo.setParentName(parentMenu.getName());
}
}
return successful(sysMenuVo);
}
/**
* 获取菜单列表
*
* @param menuQueryParam
* @return
*/
@Override
public R<List<MenuVo>> list(MenuQueryParam menuQueryParam) {
QueryWrapper<SysMenu> wrapper = new QueryWrapper<>();
wrapper.eq(ObjectUtils.isNotNull(menuQueryParam.getParentId()), SysMenu.PARENT_ID, menuQueryParam.getParentId())
.eq(ObjectUtils.isNotNull(menuQueryParam.getCategory()), SysMenu.CATEGORY, menuQueryParam.getCategory())
.eq(ObjectUtils.isNotNull(menuQueryParam.getType()), SysMenu.TYPE, menuQueryParam.getType())
.eq(ObjectUtils.isNotNull(menuQueryParam.getEnabled()), SysMenu.ENABLED, menuQueryParam.getEnabled())
.like(StringUtils.isNotBlank(menuQueryParam.getCode()), SysMenu.CODE, menuQueryParam.getCode())
.like(StringUtils.isNotBlank(menuQueryParam.getName()), SysMenu.NAME, menuQueryParam.getName());
List<SysMenu> menus = sysMenuServiceBiz.list(wrapper);
List<MenuVo> menuVos = com.mt.wms.core.utils.BeanUtils.copyList(menus, MenuVo.class);
return successful(menuVos);
}
/**
* 获取分页菜单列表
*
* @param menuQueryParam
* @return
*/
@Override
public R<PageVo<MenuVo>> page(MenuQueryParam menuQueryParam) {
QueryWrapper<SysMenu> wrapper = new QueryWrapper<>();
wrapper.eq(ObjectUtils.isNotNull(menuQueryParam.getParentId()), SysMenu.PARENT_ID, menuQueryParam.getParentId())
.eq(ObjectUtils.isNotNull(menuQueryParam.getCategory()), SysMenu.CATEGORY, menuQueryParam.getCategory())
.eq(ObjectUtils.isNotNull(menuQueryParam.getType()), SysMenu.TYPE, menuQueryParam.getType())
.eq(ObjectUtils.isNotNull(menuQueryParam.getEnabled()), SysMenu.ENABLED, menuQueryParam.getEnabled())
.like(StringUtils.isNotBlank(menuQueryParam.getCode()), SysMenu.CODE, menuQueryParam.getCode())
.like(StringUtils.isNotBlank(menuQueryParam.getName()), SysMenu.NAME, menuQueryParam.getName());
IPage<SysMenu> page = sysMenuServiceBiz.page(new Page<>(menuQueryParam.getCurrent(), menuQueryParam.getSize()), wrapper);
return successful(new PageVo<>(page, MenuVo.class));
}
/**
* 新增菜单
*
* @param menuParam
* @return
*/
@Override
public R<IdVo> add(MenuParam menuParam) {
int parentMenuLevel = 0;
if (menuParam.getParentId() > 0L) {
SysMenu parentMenu = sysMenuServiceBiz.getById(menuParam.getParentId());
Assert.notNull("父菜单不存在", parentMenu);
Assert.eq(parentMenu.getCategory(), menuParam.getCategory(), "菜单分类和父菜单分类不一致");
parentMenuLevel = parentMenu.getLevel();
}
SysMenu menu = new SysMenu();
BeanUtils.copyProperties(menuParam, menu);
menu.setLevel(parentMenuLevel + 1);
setCommonField(menu);
sysMenuServiceBiz.save(menu);
return successful(IdVo.builder().id(menu.getId()).build());
}
/**
* 更新菜单
*
* @param menuParam
* @return
*/
@Override
public R<IdVo> update(MenuParam menuParam) {
SysMenu menu = sysMenuServiceBiz.getById(menuParam.getId());
Assert.notNull("菜单不存在", menu);
//暂时不允许修改父菜单和菜单分类,涉及到菜单层级计算和分类判断
SysMenu updateMenu = new SysMenu();
BeanUtils.copyProperties(menuParam, updateMenu, "parentId", "category");
setUpdateCommonField(updateMenu);
sysMenuServiceBiz.updateById(updateMenu);
return successful(IdVo.builder().id(menu.getId()).build());
}
/**
* 启用停用
*
* @param enabledParam
* @return
*/
@Override
public R<IdVo> enabled(EnabledParam enabledParam) {
SysMenu menu = new SysMenu().setId(enabledParam.getId());
menu.setEnabled(enabledParam.getEnabled());
setUpdateCommonField(menu);
sysMenuServiceBiz.updateById(menu);
return successful(IdVo.builder().id(menu.getId()).build());
}
/**
* 删除菜单
*
* @param idParam
* @return
*/
@Override
public R<IdVo> delete(IdParam idParam) {
Assert.eqZero(sysRoleMenuServiceBiz.count(new QueryWrapper<SysRoleMenu>().eq(SysRoleMenu.MENU_ID, idParam.getId())), "菜单还关联角色");
//删除菜单资源关系
sysMenuResourceServiceBiz.remove(new QueryWrapper<SysMenuResource>().eq(SysMenuResource.MENU_ID, idParam.getId()));
sysMenuServiceBiz.removeById(idParam.getId());
return successful(IdVo.builder().id(idParam.getId()).build());
}
/**
* 批量删除菜单
*
* @param idListParam
* @return
*/
@Override
public R<IdListVo> delete(IdListParam idListParam) {
return null;
}
/**
* 保存角色菜单
*
* @param roleMenuParam 角色菜单参数
* @return 主键列表
*/
@Override
public R<IdListVo> saveRoleMenu(RoleMenuParam roleMenuParam) {
Long roleId = roleMenuParam.getRoleId();
SysRole role = sysRoleServiceBiz.getById(roleId);
Assert.notNull("角色不存在", role);
//检查设置的角色是否都存在
List<Long> menuIds = roleMenuParam.getMenuIds();
if (CollectionUtils.isNotEmpty(menuIds)) {
Collection<SysMenu> menus = sysMenuServiceBiz.listByIds(menuIds);
if (menuIds.size() != menus.size()) {
return failed("菜单不存在");
}
for (SysMenu menu : menus) {
Assert.eq(role.getCategory(), menu.getCategory(), "菜单分类和角色分类不一致");
}
}
//先删除原有的角色菜单关系
sysRoleMenuServiceBiz.remove(new QueryWrapper<SysRoleMenu>().eq(SysRoleMenu.ROLE_ID, roleId));
if (CollectionUtils.isNotEmpty(menuIds)) {
List<SysRoleMenu> roleMenus = menuIds.stream()
.map(menuId -> setCommonField(new SysRoleMenu().setRoleId(roleId).setMenuId(menuId)))
.collect(Collectors.toList());
sysRoleMenuServiceBiz.saveBatch(roleMenus);
return successful(IdListVo.builder().ids(roleMenus.stream().map(SysRoleMenu::getId).collect(Collectors.toList())).build());
}
return successful(null);
}
/**
* 获取菜单列表
*
* @param idParam 主键参数
* @return 菜单列表
*/
@Override
public R<List<MenuVo>> listByRole(IdParam idParam) {
SysRole role = sysRoleServiceBiz.getById(idParam.getId());
Assert.notNull("角色不存在", role);
List<MenuVo> menuVos = menuMapper.listByRole(idParam.getId(), role.getCategory());
return successful(TreeUtil.toTree(menuVos));
}
}

View File

@@ -0,0 +1,173 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mt.wms.core.api.Assert;
import com.mt.wms.core.base.BaseService;
import com.mt.wms.core.dal.entity.Resource;
import com.mt.wms.core.dal.entity.Service;
import com.mt.wms.core.dal.service.ResourceServiceBiz;
import com.mt.wms.core.dal.service.ServiceServiceBiz;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.vo.IdListVo;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.PageVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.params.ServiceParam;
import com.mt.wms.upms.params.ServiceQueryParam;
import com.mt.wms.upms.service.MicroServiceService;
import com.mt.wms.upms.vo.ServiceVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 微服务服务实现类
*
* @author jiff
* @date 2018/11/23
* @since 1.0
*/
@org.springframework.stereotype.Service
@Transactional
public class MicroServiceServiceImpl extends BaseService implements MicroServiceService {
@Autowired
private ServiceServiceBiz serviceServiceBiz;
@Autowired
private ResourceServiceBiz resourceServiceBiz;
/**
* 获取服务
*
* @param idParam 主键参数
* @return 服务
*/
@Override
public R<ServiceVo> get(IdParam idParam) {
Service service = serviceServiceBiz.getById(idParam.getId());
Assert.notNull("服务不存在", service);
ServiceVo serviceVo = ServiceVo.builder().build();
BeanUtils.copyProperties(service, serviceVo);
return successful(serviceVo);
}
/**
* 获取服务列表
*
* @param serviceQueryParam 服务查询参数
* @return 服务列表
*/
@Override
public R<List<ServiceVo>> list(ServiceQueryParam serviceQueryParam) {
QueryWrapper<Service> wrapper = new QueryWrapper<>();
wrapper.eq(ObjectUtils.isNotNull(serviceQueryParam.getEnabled()), Service.ENABLED, serviceQueryParam.getEnabled())
.like(StringUtils.isNotBlank(serviceQueryParam.getName()), Service.NAME, serviceQueryParam.getName())
.like(StringUtils.isNotBlank(serviceQueryParam.getCode()), Service.CODE, serviceQueryParam.getCode());
List<Service> services = serviceServiceBiz.list(wrapper);
List<ServiceVo> serviceVos = com.mt.wms.core.utils.BeanUtils.copyList(services, ServiceVo.class);
return successful(serviceVos);
}
/**
* 获取服务分页列表
*
* @param serviceQueryParam 服务查询参数
* @return 服务分页列表
*/
@Override
public R<PageVo<ServiceVo>> page(ServiceQueryParam serviceQueryParam) {
QueryWrapper<Service> wrapper = new QueryWrapper<>();
wrapper.eq(ObjectUtils.isNotNull(serviceQueryParam.getEnabled()), Service.ENABLED, serviceQueryParam.getEnabled())
.like(StringUtils.isNotBlank(serviceQueryParam.getName()), Service.NAME, serviceQueryParam.getName())
.like(StringUtils.isNotBlank(serviceQueryParam.getCode()), Service.CODE, serviceQueryParam.getCode());
IPage<Service> page = serviceServiceBiz.page(new Page<>(serviceQueryParam.getCurrent(), serviceQueryParam.getSize()), wrapper);
return successful(new PageVo<>(page, ServiceVo.class));
}
/**
* 新增服务
*
* @param serviceParam 服务参数
* @return 主键
*/
@Override
public R<IdVo> add(ServiceParam serviceParam) {
Service service = new Service();
BeanUtils.copyProperties(serviceParam, service);
setCommonField(service);
serviceServiceBiz.save(service);
return successful(IdVo.builder().id(service.getId()).build());
}
/**
* 更新服务
*
* @param serviceParam 服务参数
* @return 主键
*/
@Override
public R<IdVo> update(ServiceParam serviceParam) {
Service service = serviceServiceBiz.getById(serviceParam.getId());
Assert.notNull("服务不存在", service);
Service updateService = new Service();
BeanUtils.copyProperties(serviceParam, updateService);
setUpdateCommonField(updateService);
serviceServiceBiz.updateById(updateService);
return successful(IdVo.builder().id(service.getId()).build());
}
/**
* 启用停用
*
* @param enabledParam 启停参数
* @return 主键
*/
@Override
public R<IdVo> enabled(EnabledParam enabledParam) {
Service service = serviceServiceBiz.getById(enabledParam.getId());
Assert.notNull("服务不存在", service);
Service updateService = new Service().setId(enabledParam.getId());
updateService.setEnabled(enabledParam.getEnabled());
setUpdateCommonField(updateService);
serviceServiceBiz.updateById(updateService);
return successful(IdVo.builder().id(service.getId()).build());
}
/**
* 删除服务
*
* @param idParam 主键参数
* @return 主键
*/
@Override
public R<IdVo> delete(IdParam idParam) {
Service service = serviceServiceBiz.getById(idParam.getId());
Assert.notNull("服务不存在", service);
Assert.eqZero(resourceServiceBiz.count(new QueryWrapper<Resource>().eq(Resource.SERVICE_ID, idParam.getId())), "该服务下还有资源");
serviceServiceBiz.removeById(idParam.getId());
return successful(IdVo.builder().id(service.getId()).build());
}
/**
* 批量删除服务
*
* @param idListParam 主键列表参数
* @return 主键列表
*/
@Override
public R<IdListVo> delete(IdListParam idListParam) {
return null;
}
}

View File

@@ -0,0 +1,297 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mt.wms.core.api.Assert;
import com.mt.wms.core.base.BaseService;
import com.mt.wms.core.dal.entity.SysOrg;
import com.mt.wms.core.dal.entity.SysUser;
import com.mt.wms.core.dal.service.SysOrgServiceBiz;
import com.mt.wms.core.dal.service.SysUserServiceBiz;
import com.mt.wms.core.errorcode.ApiErrorCode;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.utils.TreeUtil;
import com.mt.wms.core.vo.IdListVo;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.PageVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.params.SysOrgParam;
import com.mt.wms.upms.params.SysOrgQueryParam;
import com.mt.wms.upms.service.OrgService;
import com.mt.wms.upms.vo.SysOrgVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 组织服务实现类
* <p>
* //TODO 需要完善区域限制,需要完善父组织修改功能
* </p>
*
* @author jiff
* @date 2018/11/9
* @since 1.0
*/
@Service("upmsOrgService")
@Transactional
public class OrgServiceImpl extends BaseService implements OrgService {
@Autowired
private SysUserServiceBiz sysUserServiceBiz;
@Autowired
private SysOrgServiceBiz sysOrgServiceBiz;
/**
* 获取组织
*
* @param idParam 主键参数
* @return 组织
*/
@Override
public R<SysOrgVo> get(IdParam idParam) {
SysOrg sysOrg = sysOrgServiceBiz.getById(idParam.getId());
Assert.notNull("组织不存在", sysOrg);
if (!hasPermission(sysOrg)) {
return failed(ApiErrorCode.FORBIDDEN_DATA);
}
SysOrgVo sysOrgVo = SysOrgVo.builder().build();
BeanUtils.copyProperties(sysOrg, sysOrgVo);
return successful(sysOrgVo);
}
/**
* 获取组织列表
*
* @param sysOrgQueryParam 组织查询参数
* @return 组织列表
*/
@Override
public R<List<SysOrgVo>> list(SysOrgQueryParam sysOrgQueryParam) {
Long parentId = sysOrgQueryParam.getParentId();
if (ObjectUtils.isNotNull(parentId) && !hasPermission(sysOrgServiceBiz.getById(parentId))) {
return failed(ApiErrorCode.FORBIDDEN_DATA);
}
QueryWrapper<SysOrg> wrapper = new QueryWrapper<>();
//没有指定父ID时则查询当前用户所能管理的所有组织包括用户所在组织及所有子组织
if (ObjectUtils.isNull(parentId)) {
SysOrg parentOrg = sysOrgServiceBiz.getById(getLoginUser().getOrgId());
wrapper.likeRight(SysOrg.GENEALOGY_ID, parentOrg.getGenealogyId());
}
wrapper.eq(ObjectUtils.isNotNull(parentId), SysOrg.PARENT_ID, parentId)
.eq(ObjectUtils.isNotNull(sysOrgQueryParam.getEnabled()), SysOrg.ENABLED, sysOrgQueryParam.getEnabled())
.like(StringUtils.isNotBlank(sysOrgQueryParam.getName()), SysOrg.NAME, sysOrgQueryParam.getName());
List<SysOrg> sysOrgs = sysOrgServiceBiz.list(wrapper);
List<SysOrgVo> sysOrgVos = com.mt.wms.core.utils.BeanUtils.copyList(sysOrgs, SysOrgVo.class);
return successful(sysOrgVos);
}
/**
* 获取组织分页列表
*
* @param sysOrgQueryParam 组织查询参数
* @return 组织分页列表
*/
@Override
public R<PageVo<SysOrgVo>> page(SysOrgQueryParam sysOrgQueryParam) {
Long parentId = sysOrgQueryParam.getParentId();
if (ObjectUtils.isNotNull(parentId) && !hasPermission(sysOrgServiceBiz.getById(parentId))) {
return failed(ApiErrorCode.FORBIDDEN_DATA);
}
QueryWrapper<SysOrg> wrapper = new QueryWrapper<>();
//没有指定父ID时则查询当前用户所能管理的所有组织包括用户所在组织及所有子组织
if (ObjectUtils.isNull(parentId)) {
SysOrg parentOrg = sysOrgServiceBiz.getById(getLoginUser().getOrgId());
wrapper.likeRight(SysOrg.GENEALOGY_ID, parentOrg.getGenealogyId());
}
wrapper.eq(ObjectUtils.isNotNull(parentId), SysOrg.PARENT_ID, parentId)
.eq(ObjectUtils.isNotNull(sysOrgQueryParam.getEnabled()), SysOrg.ENABLED, sysOrgQueryParam.getEnabled())
.like(StringUtils.isNotBlank(sysOrgQueryParam.getName()), SysOrg.NAME, sysOrgQueryParam.getName());
IPage<SysOrg> page = sysOrgServiceBiz.page(new Page<>(sysOrgQueryParam.getCurrent(), sysOrgQueryParam.getSize()), wrapper);
return successful(new PageVo<>(page, SysOrgVo.class));
}
/**
* 获取组织树列表
*
* @param sysOrgQueryParam 组织查询参数
* @return 组织树列表
*/
@Override
public R<List<SysOrgVo>> tree(SysOrgQueryParam sysOrgQueryParam) {
Long parentId = sysOrgQueryParam.getParentId();
SysOrg parentOrg = null;
if (ObjectUtils.isNotNull(parentId)) {
parentOrg = sysOrgServiceBiz.getById(parentId);
if (!hasPermission(sysOrgServiceBiz.getById(parentId))) {
return failed(ApiErrorCode.FORBIDDEN_DATA);
}
}
QueryWrapper<SysOrg> wrapper = new QueryWrapper<>();
//没有指定父ID时则查询当前用户所能管理的所有组织包括用户所在组织及所有子组织
if (ObjectUtils.isNull(parentId)) {
parentOrg = sysOrgServiceBiz.getById(getLoginUser().getOrgId());
wrapper.likeRight(SysOrg.GENEALOGY_ID, parentOrg.getGenealogyId());
}
wrapper.eq(ObjectUtils.isNotNull(parentId), SysOrg.PARENT_ID, parentId)
.eq(ObjectUtils.isNotNull(sysOrgQueryParam.getEnabled()), SysOrg.ENABLED, sysOrgQueryParam.getEnabled())
.like(StringUtils.isNotBlank(sysOrgQueryParam.getName()), SysOrg.NAME, sysOrgQueryParam.getName());
List<SysOrg> sysOrgs = sysOrgServiceBiz.list(wrapper);
List<SysOrgVo> sysOrgVos = com.mt.wms.core.utils.BeanUtils.copyList(sysOrgs, SysOrgVo.class);
return successful(TreeUtil.toTree(sysOrgVos, parentOrg.getParentId()));
}
/**
* 新增组织
*
* @param sysOrgParam 组织参数
* @return 主键
*/
@Override
public R<IdVo> add(SysOrgParam sysOrgParam) {
SysOrg parentOrg = sysOrgServiceBiz.getById(sysOrgParam.getParentId());
if (parentOrg == null) {
return failed("父组织不存在");
}
if (!hasPermission(parentOrg)) {
return failed(ApiErrorCode.FORBIDDEN_DATA);
}
SysOrg sysOrg = new SysOrg();
BeanUtils.copyProperties(sysOrgParam, sysOrg);
//数据库不允许为空先设置父组织的家谱ID
sysOrg.setGenealogyId(parentOrg.getGenealogyId());
setCommonField(sysOrg);
sysOrgServiceBiz.save(sysOrg);
//设置家谱ID格式/rootId/.../grandfatherId/parentId/id
sysOrg.setGenealogyId(parentOrg.getGenealogyId() + "/" + sysOrg.getId());
sysOrgServiceBiz.updateById(sysOrg);
return successful(IdVo.builder().id(sysOrg.getId()).build());
}
/**
* 更新组织
*
* @param sysOrgParam 组织参数
* @return 主键
*/
@Override
public R<IdVo> update(SysOrgParam sysOrgParam) {
SysOrg sysOrg = sysOrgServiceBiz.getById(sysOrgParam.getId());
Assert.notNull("组织不存在", sysOrg);
if (!hasPermission(sysOrg)) {
return failed(ApiErrorCode.FORBIDDEN_DATA);
}
//父组织关系暂时不允许修改,先不验证
// SysOrg parentOrg = sysOrgService.getById(sysOrgParam.getParentId());
// Assert.notNull("父组织不存在", parentOrg);
// if (!hasPermission(parentOrg)) {
// return failed(ApiErrorCode.FORBIDDEN_DATA);
// }
SysOrg updateSysOrg = new SysOrg();
BeanUtils.copyProperties(sysOrgParam, updateSysOrg, "parentId");
setUpdateCommonField(updateSysOrg);
sysOrgServiceBiz.updateById(updateSysOrg);
return successful(IdVo.builder().id(sysOrg.getId()).build());
}
/**
* 启用停用
*
* @param enabledParam 启停参数
* @return 主键
*/
@Override
public R<IdVo> enabled(EnabledParam enabledParam) {
SysOrg sysOrg = sysOrgServiceBiz.getById(enabledParam.getId());
if (sysOrg == null) {
return failed("组织不存在");
}
if (!hasPermission(sysOrg)) {
return failed(ApiErrorCode.FORBIDDEN_DATA);
}
if (!enabledParam.getEnabled().equals(sysOrg.getEnabled())) {
SysOrg updateSysOrg = new SysOrg().setId(sysOrg.getId());
updateSysOrg.setEnabled(enabledParam.getEnabled());
setUpdateCommonField(updateSysOrg);
sysOrgServiceBiz.updateById(updateSysOrg);
}
return successful(IdVo.builder().id(sysOrg.getId()).build());
}
/**
* 删除组织
*
* @param idParam 主键参数
* @return 主键
*/
@Override
public R<IdVo> delete(IdParam idParam) {
SysOrg sysOrg = sysOrgServiceBiz.getById(idParam.getId());
if (sysOrg == null) {
return failed("组织不存在");
}
if (sysUserServiceBiz.count(new QueryWrapper<SysUser>().eq(SysUser.ORG_ID, sysOrg.getId())) > 0) {
return failed("该组织下还有用户");
}
//用家谱ID查询会包含当前要删除的组织所以需要判断大于1时则还有子组织
if (sysOrgServiceBiz.count(new QueryWrapper<SysOrg>().likeRight(SysOrg.GENEALOGY_ID, sysOrg.getGenealogyId())) > 1) {
return failed("该组织下还有子组织");
}
sysOrgServiceBiz.removeById(idParam.getId());
return successful(IdVo.builder().id(sysOrg.getId()).build());
}
/**
* 批量删除组织
*
* @param idListParam 主键列表参数
* @return 主键列表
*/
@Override
public R<IdListVo> delete(IdListParam idListParam) {
return null;
}
/**
* 判断登录用户是否有修改该组织的权限,主要基于登录用户和被修改组织是否归属同一组织或上下级组织关系
*
* @param sysOrg 被修改的用户
* @return true允许修改否则不允许
*/
private boolean hasPermission(SysOrg sysOrg) {
if (sysOrg == null) {
return false;
}
Long loginOrgId = getLoginUser().getOrgId();
if (loginOrgId == null) {
return false;
}
SysOrg loginSysOrg = sysOrgServiceBiz.getById(loginOrgId);
if (loginSysOrg == null) {
return false;
}
if (StringUtils.isAnyBlank(sysOrg.getGenealogyId(), loginSysOrg.getGenealogyId())) {
return false;
}
return sysOrg.getGenealogyId().startsWith(loginSysOrg.getGenealogyId());
}
}

View File

@@ -0,0 +1,107 @@
package com.mt.wms.upms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mt.wms.core.base.BaseService;
import com.mt.wms.core.dal.entity.SysPost;
import com.mt.wms.core.dal.entity.SysUserPost;
import com.mt.wms.core.dal.service.SysPostServiceBiz;
import com.mt.wms.core.dal.service.SysUserPostServiceBiz;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.utils.TreeUtil;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.params.SysPostParam;
import com.mt.wms.upms.service.PostService;
import com.mt.wms.upms.vo.SysPostVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/***
* 合作伙伴岗位接口实现层
*/
@Service
public class PostServiceImpl extends BaseService implements PostService {
@Autowired
private SysPostServiceBiz sysPostServiceBiz;
@Autowired
private SysUserPostServiceBiz sysUserPostServiceBiz;
@Override
public R<SysPostVo> get(IdParam idParam) {
SysPostVo postVo = SysPostVo.builder().build();
SysPost sysPost = sysPostServiceBiz.getById(idParam.getId());
BeanUtils.copyProperties(sysPost, postVo);
return successful(postVo);
}
@Override
public R<List<SysPostVo>> tree() {
List<SysPost> sysPosts = sysPostServiceBiz.list();
List<SysPostVo> sysPostVos = com.mt.wms.core.utils.BeanUtils.copyList(sysPosts, SysPostVo.class);
return successful(TreeUtil.toTree(sysPostVos, 0L));
}
@Override
public R<IdVo> add(SysPostParam sysPostParam) {
//判断是否存在parentID为0 的根
if (sysPostParam.getParentId() == 0 && sysPostServiceBiz.getOne(new QueryWrapper<SysPost>().eq(SysPost.PARENT_ID, sysPostParam.getParentId()).last("LIMIT 1")) != null) {
return R.failed("已存在根目录,请选择一个根目录");
}
SysPost sysPost = new SysPost();
BeanUtils.copyProperties(sysPostParam, sysPost);
setCommonField(sysPost);
sysPostServiceBiz.save(sysPost);
return successful(IdVo.builder().id(sysPost.getId()).build());
}
@Override
public R<IdVo> update(SysPostParam sysPostParam) {
SysPost sysPost = new SysPost();
BeanUtils.copyProperties(sysPostParam, sysPost);
setUpdateCommonField(sysPost);
sysPostServiceBiz.updateById(sysPost);
return successful(IdVo.builder().id(sysPost.getId()).build());
}
/**
* 启用停用
*
* @param enabledParam 启停参数
* @return 主键
*/
@Override
public R<IdVo> enabled(EnabledParam enabledParam) {
SysPost sysPost = sysPostServiceBiz.getById(enabledParam.getId());
if (sysPost == null) {
return failed("岗位不存在");
}
if (!enabledParam.getEnabled().equals(sysPost.getEnabled())) {
SysPost updateSysPost = new SysPost().setId(sysPost.getId());
updateSysPost.setEnabled(enabledParam.getEnabled());
setUpdateCommonField(updateSysPost);
sysPostServiceBiz.updateById(updateSysPost);
}
return successful(IdVo.builder().id(sysPost.getId()).build());
}
@Override
public R<IdVo> delete(IdParam idParam) {
//判断是否已有用户
if (sysUserPostServiceBiz.count(new QueryWrapper<SysUserPost>().eq(SysUserPost.POST_ID, idParam.getId())) > 0) {
return R.failed("岗位下存在用户,请先删除合作伙伴用户信息");
}
//判断是否存在下级
SysPost sysPost = sysPostServiceBiz.getOne(new QueryWrapper<SysPost>().eq(SysPost.PARENT_ID, idParam.getId()).last("LIMIT 1"));
if (sysPost != null) {
return R.failed("存在下级岗位,请先删除下级岗位");
}
sysPostServiceBiz.removeById(idParam.getId());
return successful(IdVo.builder().id(idParam.getId()).build());
}
}

View File

@@ -0,0 +1,192 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mt.wms.core.api.Assert;
import com.mt.wms.core.base.BaseService;
import com.mt.wms.core.dal.entity.Resource;
import com.mt.wms.core.dal.entity.SysMenuResource;
import com.mt.wms.core.dal.service.ResourceServiceBiz;
import com.mt.wms.core.dal.service.ServiceServiceBiz;
import com.mt.wms.core.dal.service.SysMenuResourceServiceBiz;
import com.mt.wms.core.enums.SubsystemEnum;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.vo.IdListVo;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.PageVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.params.ResourceParam;
import com.mt.wms.upms.params.ResourceQueryParam;
import com.mt.wms.upms.service.ResourceService;
import com.mt.wms.upms.vo.ResourceVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 资源服务实现类
*
* @author jiff
* @date 2018/11/23
* @since 1.0
*/
@Service("upmsResourceService")
@Transactional
public class ResourceServiceImpl extends BaseService implements ResourceService {
@Autowired
private ResourceServiceBiz resourceServiceBiz;
@Autowired
private ServiceServiceBiz serviceServiceBiz;
@Autowired
private SysMenuResourceServiceBiz sysMenuResourceServiceBiz;
/**
* 获取资源
*
* @param idParam 主键参数
* @return 资源
*/
@Override
public R<ResourceVo> get(IdParam idParam) {
Resource resource = resourceServiceBiz.getById(idParam.getId());
Assert.notNull("资源不存在", resource);
ResourceVo resourceVo = ResourceVo.builder().build();
BeanUtils.copyProperties(resource, resourceVo);
return successful(resourceVo);
}
/**
* 获取资源列表
*
* @param resourceQueryParam 资源查询参数
* @return 资源列表
*/
@Override
public R<List<ResourceVo>> list(ResourceQueryParam resourceQueryParam) {
QueryWrapper<Resource> wrapper = new QueryWrapper<>();
wrapper.eq(ObjectUtils.isNotNull(resourceQueryParam.getServiceId()), Resource.SERVICE_ID, resourceQueryParam.getServiceId())
.eq(ObjectUtils.isNotNull(resourceQueryParam.getSubsystem()), Resource.SUBSYSTEM, resourceQueryParam.getSubsystem())
.eq(ObjectUtils.isNotNull(resourceQueryParam.getCategory()), Resource.CATEGORY, resourceQueryParam.getCategory())
.eq(ObjectUtils.isNotNull(resourceQueryParam.getEnabled()), Resource.ENABLED, resourceQueryParam.getEnabled())
.eq(StringUtils.isNotBlank(resourceQueryParam.getMethod()), Resource.METHOD, resourceQueryParam.getMethod())
.like(StringUtils.isNotBlank(resourceQueryParam.getName()), Resource.NAME, resourceQueryParam.getName())
.like(StringUtils.isNotBlank(resourceQueryParam.getUrl()), Resource.URL, resourceQueryParam.getUrl());
List<Resource> resources = resourceServiceBiz.list(wrapper);
List<ResourceVo> resourceVos = com.mt.wms.core.utils.BeanUtils.copyList(resources, ResourceVo.class);
return successful(resourceVos);
}
/**
* 获取资源分页列表
*
* @param resourceQueryParam 资源查询参数
* @return 资源分页列表
*/
@Override
public R<PageVo<ResourceVo>> page(ResourceQueryParam resourceQueryParam) {
QueryWrapper<Resource> wrapper = new QueryWrapper<>();
wrapper.eq(ObjectUtils.isNotNull(resourceQueryParam.getServiceId()), Resource.SERVICE_ID, resourceQueryParam.getServiceId())
.eq(ObjectUtils.isNotNull(resourceQueryParam.getSubsystem()), Resource.SUBSYSTEM, resourceQueryParam.getSubsystem())
.eq(ObjectUtils.isNotNull(resourceQueryParam.getCategory()), Resource.CATEGORY, resourceQueryParam.getCategory())
.eq(ObjectUtils.isNotNull(resourceQueryParam.getEnabled()), Resource.ENABLED, resourceQueryParam.getEnabled())
.eq(StringUtils.isNotBlank(resourceQueryParam.getMethod()), Resource.METHOD, resourceQueryParam.getMethod())
.like(StringUtils.isNotBlank(resourceQueryParam.getName()), Resource.NAME, resourceQueryParam.getName())
.like(StringUtils.isNotBlank(resourceQueryParam.getUrl()), Resource.URL, resourceQueryParam.getUrl());
IPage<Resource> page = resourceServiceBiz.page(new Page<>(resourceQueryParam.getCurrent(), resourceQueryParam.getSize()), wrapper);
return successful(new PageVo<>(page, ResourceVo.class));
}
/**
* 新增资源
*
* @param resourceParam 资源参数
* @return 主键
*/
@Override
public R<IdVo> add(ResourceParam resourceParam) {
Assert.notNull("服务不存在", serviceServiceBiz.getById(resourceParam.getServiceId()));
Resource resource = new Resource();
BeanUtils.copyProperties(resourceParam, resource);
setCommonField(resource);
resourceServiceBiz.save(resource);
return successful(IdVo.builder().id(resource.getId()).build());
}
/**
* 更新资源
*
* @param resourceParam 资源参数
* @return 主键
*/
@Override
public R<IdVo> update(ResourceParam resourceParam) {
Resource resource = resourceServiceBiz.getById(resourceParam.getId());
Assert.notNull("资源不存在", resource);
Assert.notNull("服务不存在", serviceServiceBiz.getById(resourceParam.getServiceId()));
Resource updateResource = new Resource();
BeanUtils.copyProperties(resourceParam, updateResource);
setUpdateCommonField(updateResource);
resourceServiceBiz.updateById(updateResource);
return successful(IdVo.builder().id(resource.getId()).build());
}
/**
* 启用停用
*
* @param enabledParam 启停参数
* @return 主键
*/
@Override
public R<IdVo> enabled(EnabledParam enabledParam) {
Resource resource = resourceServiceBiz.getById(enabledParam.getId());
Assert.notNull("资源不存在", resource);
Resource updateResource = new Resource().setId(enabledParam.getId());
updateResource.setEnabled(enabledParam.getEnabled());
setUpdateCommonField(updateResource);
resourceServiceBiz.updateById(updateResource);
return successful(IdVo.builder().id(resource.getId()).build());
}
/**
* 删除资源
*
* @param idParam 主键参数
* @return 主键
*/
@Override
public R<IdVo> delete(IdParam idParam) {
Resource resource = resourceServiceBiz.getById(idParam.getId());
Assert.notNull("资源不存在", resource);
if (resource.getSubsystem() == null || resource.getSubsystem().equals(SubsystemEnum.COMMON.getValue())) {
Assert.eqZero(sysMenuResourceServiceBiz.count(new QueryWrapper<SysMenuResource>().eq(SysMenuResource.RESOURCE_ID, resource.getId())), "资源还关联菜单");
} else if (resource.getSubsystem().equals(SubsystemEnum.PLATFORM.getValue())) {
Assert.eqZero(sysMenuResourceServiceBiz.count(new QueryWrapper<SysMenuResource>().eq(SysMenuResource.RESOURCE_ID, resource.getId())), "资源还关联菜单");
}
resourceServiceBiz.removeById(idParam.getId());
return successful(IdVo.builder().id(resource.getId()).build());
}
/**
* 批量删除资源
*
* @param idListParam 主键列表参数
* @return 主键列表
*/
@Override
public R<IdListVo> delete(IdListParam idListParam) {
return null;
}
}

View File

@@ -0,0 +1,275 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mt.wms.core.api.Assert;
import com.mt.wms.core.base.BaseService;
import com.mt.wms.core.dal.entity.SysRole;
import com.mt.wms.core.dal.entity.SysRoleMenu;
import com.mt.wms.core.dal.entity.SysUserRole;
import com.mt.wms.core.dal.service.*;
import com.mt.wms.core.enums.WhetherEnum;
import com.mt.wms.core.errorcode.ApiErrorCode;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.vo.IdListVo;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.PageVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.mapper.RoleMapper;
import com.mt.wms.upms.params.SysRoleParam;
import com.mt.wms.upms.params.SysRoleQueryParam;
import com.mt.wms.upms.params.UserRoleParam;
import com.mt.wms.upms.service.RoleService;
import com.mt.wms.upms.vo.SysRoleVo;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
/**
* 角色服务实现类
* <p>
* //TODO 需要完善删除角色逻辑
* </p>
*
* @author jiff
* @date 2018/11/23
* @since 1.0
*/
@Service
@Transactional
public class RoleServiceImpl extends BaseService implements RoleService {
private final SysUserServiceBiz sysUserServiceBiz;
private final SysOrgServiceBiz sysOrgServiceBiz;
private final SysRoleServiceBiz sysRoleServiceBiz;
private final SysUserRoleServiceBiz sysUserRoleServiceBiz;
private final SysRoleMenuServiceBiz sysRoleMenuServiceBiz;
private final RoleMapper roleMapper;
@Autowired
public RoleServiceImpl(SysUserServiceBiz sysUserServiceBiz, SysOrgServiceBiz sysOrgServiceBiz, SysRoleServiceBiz sysRoleServiceBiz, SysUserRoleServiceBiz sysUserRoleServiceBiz, SysRoleMenuServiceBiz sysRoleMenuServiceBiz, RoleMapper roleMapper) {
this.sysUserServiceBiz = sysUserServiceBiz;
this.sysOrgServiceBiz = sysOrgServiceBiz;
this.sysRoleServiceBiz = sysRoleServiceBiz;
this.sysUserRoleServiceBiz = sysUserRoleServiceBiz;
this.sysRoleMenuServiceBiz = sysRoleMenuServiceBiz;
this.roleMapper = roleMapper;
}
/**
* 获取角色
*
* @param idParam 主键参数
* @return 角色
*/
@Override
public R<SysRoleVo> get(IdParam idParam) {
SysRole sysRole = sysRoleServiceBiz.getById(idParam.getId());
Assert.notNull("角色不存在", sysRole);
SysRoleVo sysRoleVo = SysRoleVo.builder().build();
BeanUtils.copyProperties(sysRole, sysRoleVo);
return successful(sysRoleVo);
}
/**
* 获取角色列表
*
* @param sysRoleQueryParam 角色查询参数
* @return 角色列表
*/
@Override
public R<List<SysRoleVo>> list(SysRoleQueryParam sysRoleQueryParam) {
QueryWrapper<SysRole> wrapper = new QueryWrapper<>();
wrapper.eq(ObjectUtils.isNotNull(sysRoleQueryParam.getCategory()), SysRole.CATEGORY, sysRoleQueryParam.getCategory())
.eq(ObjectUtils.isNotNull(sysRoleQueryParam.getEnabled()), SysRole.ENABLED, sysRoleQueryParam.getEnabled())
.like(StringUtils.isNotBlank(sysRoleQueryParam.getCode()), SysRole.CODE, sysRoleQueryParam.getCode())
.like(StringUtils.isNotBlank(sysRoleQueryParam.getName()), SysRole.NAME, sysRoleQueryParam.getName());
List<SysRole> sysRoles = sysRoleServiceBiz.list(wrapper);
List<SysRoleVo> sysRoleVos = com.mt.wms.core.utils.BeanUtils.copyList(sysRoles, SysRoleVo.class);
return successful(sysRoleVos);
}
/**
* 获取角色分页列表
*
* @param sysRoleQueryParam 角色查询参数
* @return 角色分页列表
*/
@Override
public R<PageVo<SysRoleVo>> page(SysRoleQueryParam sysRoleQueryParam) {
QueryWrapper<SysRole> wrapper = new QueryWrapper<>();
wrapper.eq(ObjectUtils.isNotNull(sysRoleQueryParam.getCategory()), SysRole.CATEGORY, sysRoleQueryParam.getCategory())
.eq(ObjectUtils.isNotNull(sysRoleQueryParam.getEnabled()), SysRole.ENABLED, sysRoleQueryParam.getEnabled())
.like(StringUtils.isNotBlank(sysRoleQueryParam.getCode()), SysRole.CODE, sysRoleQueryParam.getCode())
.like(StringUtils.isNotBlank(sysRoleQueryParam.getName()), SysRole.NAME, sysRoleQueryParam.getName());
IPage<SysRole> page = sysRoleServiceBiz.page(new Page<>(sysRoleQueryParam.getCurrent(), sysRoleQueryParam.getSize()), wrapper);
return successful(new PageVo<>(page, SysRoleVo.class));
}
/**
* 新增角色
*
* @param sysRoleParam 角色参数
* @return 主键
*/
@Override
public R<IdVo> add(SysRoleParam sysRoleParam) {
QueryWrapper<SysRole> wrapper = new QueryWrapper<>();
wrapper.eq(SysRole.CODE, sysRoleParam.getCode());
Assert.eqZero(sysRoleServiceBiz.count(wrapper), "角色编码已经存在");
SysRole sysRole = new SysRole();
BeanUtils.copyProperties(sysRoleParam, sysRole);
sysRole.setManagerFlag(WhetherEnum.NO.getValue());
sysRole.setPreset(WhetherEnum.NO.getValue());
setCommonField(sysRole);
sysRoleServiceBiz.save(sysRole);
return successful(IdVo.builder().id(sysRole.getId()).build());
}
/**
* 更新角色
*
* @param sysRoleParam 角色参数
* @return 主键
*/
@Override
public R<IdVo> update(SysRoleParam sysRoleParam) {
SysRole sysRole = sysRoleServiceBiz.getById(sysRoleParam.getId());
//修改角色编码需要检验新编码是否已存在
if (!sysRole.getCode().equals(sysRoleParam.getCode())) {
QueryWrapper<SysRole> wrapper = new QueryWrapper<>();
wrapper.eq(SysRole.CODE, sysRoleParam.getCode());
Assert.eqZero(sysRoleServiceBiz.count(wrapper), "角色编码已经存在");
}
//修改角色分类需要检验角色是否已经关联菜单
if (!sysRole.getCategory().equals(sysRoleParam.getCategory())) {
QueryWrapper<SysRoleMenu> wrapper = new QueryWrapper<>();
wrapper.eq(SysRoleMenu.ROLE_ID, sysRoleParam.getId());
Assert.eqZero(sysRoleMenuServiceBiz.count(wrapper), "角色已关联菜单信息,不许修改角色分类");
}
SysRole updateSysRole = new SysRole();
BeanUtils.copyProperties(sysRoleParam, updateSysRole);
setUpdateCommonField(updateSysRole);
sysRoleServiceBiz.updateById(updateSysRole);
return successful(IdVo.builder().id(sysRole.getId()).build());
}
/**
* 启用停用
*
* @param enabledParam 启停参数
* @return 主键
*/
@Override
public R<IdVo> enabled(EnabledParam enabledParam) {
SysRole sysRole = sysRoleServiceBiz.getById(enabledParam.getId());
if (sysRole == null) {
return failed("角色不存在");
}
if (!enabledParam.getEnabled().equals(sysRole.getEnabled())) {
SysRole updateSysRole = new SysRole().setId(sysRole.getId());
updateSysRole.setEnabled(enabledParam.getEnabled());
setUpdateCommonField(updateSysRole);
sysRoleServiceBiz.updateById(updateSysRole);
}
return successful(IdVo.builder().id(sysRole.getId()).build());
}
/**
* 删除角色
*
* @param idParam 主键参数
* @return 主键
*/
@Override
public R<IdVo> delete(IdParam idParam) {
SysRole sysRole = sysRoleServiceBiz.getById(idParam.getId());
if (sysRole == null) {
return failed("角色不存在");
}
//检查角色下是否还有用户
QueryWrapper<SysUserRole> wrapper = new QueryWrapper();
wrapper.eq(SysUserRole.ROLE_ID, sysRole.getId());
Assert.eqZero(sysUserRoleServiceBiz.count(wrapper), "该角色下还有用户");
//删除角色菜单关系
sysRoleMenuServiceBiz.remove(new QueryWrapper<SysRoleMenu>().eq(SysRoleMenu.ROLE_ID, idParam.getId()));
//使用更新方式删除需要把code设置为历史code后面跟随机数
SysRole updateSysRole = new SysRole().setId(sysRole.getId());
updateSysRole.setCode(sysRole.getCode() + "_" + RandomUtils.nextInt());
updateSysRole.setValid(WhetherEnum.NO.getValue());
setUpdateCommonField(updateSysRole);
sysRoleServiceBiz.updateById(updateSysRole);
//更新时逻辑删除字段没有更新,需要再调用一次删除操作
sysRoleServiceBiz.removeById(updateSysRole.getId());
return successful(IdVo.builder().id(sysRole.getId()).build());
}
/**
* 批量删除角色
*
* @param idListParam 主键列表参数
* @return 主键列表
*/
@Override
public R<IdListVo> delete(IdListParam idListParam) {
return null;
}
/**
* 保存用户角色
*
* @param userRoleParam 用户角色参数
* @return 主键列表
*/
@Override
public R<IdListVo> saveUserRole(UserRoleParam userRoleParam) {
Long userId = userRoleParam.getUserId();
Assert.notNull(ApiErrorCode.USER_NON_EXISTENT, sysUserServiceBiz.getById(userId));
//检查设置的角色是否都存在
List<Long> roleIds = userRoleParam.getRoleIds();
if (CollectionUtils.isNotEmpty(roleIds)) {
Collection<SysRole> roles = sysRoleServiceBiz.listByIds(roleIds);
if (roleIds.size() != roles.size()) {
return failed("角色不存在");
}
}
//先删除原有的用户角色关系
sysUserRoleServiceBiz.remove(new QueryWrapper<SysUserRole>().eq(SysUserRole.USER_ID, userId));
if (CollectionUtils.isNotEmpty(roleIds)) {
List<SysUserRole> userRoles = roleIds.stream().map(roleId -> setCommonField(new SysUserRole().setUserId(userId).setRoleId(roleId)))
.collect(Collectors.toList());
sysUserRoleServiceBiz.saveBatch(userRoles);
return successful(IdListVo.builder().ids(userRoles.stream().map(SysUserRole::getId).collect(Collectors.toList())).build());
}
return successful(null);
}
/**
* 获取用户角色列表
*
* @param idParam 主键参数
* @return 角色列表
*/
@Override
public R<List<SysRoleVo>> listByUser(IdParam idParam) {
List<SysRoleVo> sysRoleVos = roleMapper.listByUser(idParam.getId());
return successful(sysRoleVos);
}
}

View File

@@ -0,0 +1,157 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mt.wms.core.api.Assert;
import com.mt.wms.core.base.BaseService;
import com.mt.wms.core.dal.entity.SysOrg;
import com.mt.wms.core.dal.entity.SysUser;
import com.mt.wms.core.dal.service.SysOrgServiceBiz;
import com.mt.wms.core.dal.service.SysUserServiceBiz;
import com.mt.wms.core.dto.LoginUser;
import com.mt.wms.core.dto.Permission;
import com.mt.wms.core.enums.WhetherEnum;
import com.mt.wms.core.errorcode.ApiErrorCode;
import com.mt.wms.core.utils.PasswordUtil;
import com.mt.wms.core.utils.TreeUtil;
import com.mt.wms.core.vo.LoginUserVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.core.vo.UserMenuVo;
import com.mt.wms.upms.mapper.MenuMapper;
import com.mt.wms.upms.mapper.ResourceMapper;
import com.mt.wms.upms.service.UpmsService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* 通用权限服务实现类
*
* @author jiff
* @date 2018-11-27
* @since 1.0
*/
@Service
@Transactional
public class UpmsServiceImpl extends BaseService implements UpmsService {
private final SysUserServiceBiz sysUserServiceBiz;
private final SysOrgServiceBiz sysOrgServiceBiz;
private final MenuMapper menuMapper;
private final ResourceMapper resourceMapper;
@Autowired
public UpmsServiceImpl(SysUserServiceBiz sysUserServiceBiz, SysOrgServiceBiz sysOrgServiceBiz, MenuMapper menuMapper, ResourceMapper resourceMapper) {
this.sysUserServiceBiz = sysUserServiceBiz;
this.sysOrgServiceBiz = sysOrgServiceBiz;
this.menuMapper = menuMapper;
this.resourceMapper = resourceMapper;
}
/**
* 用户登录
*
* @param mobile 手机号码
* @param password 密码
* @return 登录用户
*/
@Override
public R<LoginUser> login(String mobile, String password) {
Assert.notNull(ApiErrorCode.INVALID_PARAMETER, mobile, password);
QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
wrapper.eq(SysUser.MOBILE, mobile);
SysUser user = sysUserServiceBiz.getOne(wrapper);
if (user == null) {
return failed(ApiErrorCode.USER_NON_EXISTENT);
}
if (WhetherEnum.NO.getValue().equals(user.getEnabled())) {
return failed(ApiErrorCode.USER_DISABLED);
}
String userPassword = user.getPassword();
if (userPassword.equals(PasswordUtil.encode(password, user.getNonceStr()))) {
return successful(LoginUser.builder()
.userId(user.getId()).mobile(user.getMobile()).userName(user.getName())
.orgId(user.getOrgId())
.userType(LoginUser.USER_TYPE_PLATFORM).build());
}
return failed(ApiErrorCode.USER_NON_EXISTENT_OR_INVALID_PASSWORD);
}
/**
* 退出登录
*
* @return 处理结果
*/
@Override
public R<Serializable> logout() {
return successful(null);
}
/**
* 获取登录用户信息
*
* @param mobile 手机号码
* @return 登录用户
*/
@Override
public R<LoginUser> getLoginUser(String mobile) {
Assert.notNull(ApiErrorCode.INVALID_PARAMETER, mobile);
QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
wrapper.eq(SysUser.MOBILE, mobile);
SysUser user = sysUserServiceBiz.getOne(wrapper);
if (user == null) {
return failed(ApiErrorCode.USER_NON_EXISTENT);
}
if (WhetherEnum.NO.getValue().equals(user.getEnabled())) {
return failed(ApiErrorCode.USER_DISABLED);
}
return successful(LoginUser.builder()
.userId(user.getId()).mobile(user.getMobile()).userName(user.getName())
.orgId(user.getOrgId())
.userType(LoginUser.USER_TYPE_PLATFORM).build());
}
/**
* 获取登录用户信息
*
* @return 登录用户
*/
@Override
public R<LoginUserVo> getLoginUserVo() {
LoginUser loginUser = getLoginUser();
LoginUserVo loginUserVo = LoginUserVo.builder().build();
BeanUtils.copyProperties(loginUser, loginUserVo);
SysOrg org = sysOrgServiceBiz.getById(loginUser.getOrgId());
if (org != null) {
loginUserVo.setOrgName(org.getName());
}
List<UserMenuVo> userMenuVos = menuMapper.listByUser(loginUser.getUserId(), loginUser.getAppType());
loginUserVo.setMenus(TreeUtil.toTree(userMenuVos));
return successful(loginUserVo);
}
/**
* 获取用户权限列表
*
* @return 权限列表
*/
@Override
public List<Permission> getPermissions() {
//TODO 后续完善权限数据
LoginUser loginUser = getLoginUser();
List<Permission> permissions = new ArrayList<>();
permissions.add(Permission.builder().url("/**").method(HttpMethod.GET.name()).build());
permissions.add(Permission.builder().url("/**").method(HttpMethod.POST.name()).build());
// List<Permission> permissions1 = resourceMapper.listByUser(loginUser.getUserId(), loginUser.getAppType());
return permissions;
}
}

View File

@@ -0,0 +1,409 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mt.wms.core.base.BaseService;
import com.mt.wms.core.dal.entity.SysOrg;
import com.mt.wms.core.dal.entity.SysUser;
import com.mt.wms.core.dal.entity.SysUserRole;
import com.mt.wms.core.dal.service.SysOrgServiceBiz;
import com.mt.wms.core.dal.service.SysUserRoleServiceBiz;
import com.mt.wms.core.dal.service.SysUserServiceBiz;
import com.mt.wms.core.enums.WhetherEnum;
import com.mt.wms.core.errorcode.ApiErrorCode;
import com.mt.wms.core.params.EnabledParam;
import com.mt.wms.core.params.IdListParam;
import com.mt.wms.core.params.IdParam;
import com.mt.wms.core.utils.PasswordUtil;
import com.mt.wms.core.vo.IdListVo;
import com.mt.wms.core.vo.IdVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.mapper.UserMapper;
import com.mt.wms.upms.params.*;
import com.mt.wms.upms.service.UserService;
import com.mt.wms.upms.vo.SysUserVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* 用户服务实现类
*
* @author jiff
* @date 2018/11/14
* @since 1.0
*/
@Slf4j
@Service("upmsUserService")
@Transactional
public class UserServiceImpl extends BaseService implements UserService {
@Autowired
private SysUserServiceBiz sysUserServiceBiz;
@Autowired
private SysOrgServiceBiz sysOrgServiceBiz;
@Autowired
private SysUserRoleServiceBiz sysUserRoleServiceBiz;
@Autowired
private UserMapper userMapper;
@Autowired
private MessageSource messageSource;
/**
* 获取用户
*
* @param idParam 主键参数
* @return 用户
*/
@Override
public R<SysUserVo> get(IdParam idParam) {
SysUser sysUser = sysUserServiceBiz.getById(idParam.getId());
if (sysUser == null) {
return failed(ApiErrorCode.USER_NON_EXISTENT);
}
if (!hasPermission(sysUser)) {
return failed(ApiErrorCode.FORBIDDEN_DATA);
}
SysUserVo sysUserVo = SysUserVo.builder().build();
BeanUtils.copyProperties(sysUser, sysUserVo);
SysOrg org = sysOrgServiceBiz.getById(sysUser.getOrgId());
if (org != null) {
sysUserVo.setOrgName(org.getName());
}
return successful(sysUserVo);
}
/**
* 获取用户列表
*
* @param sysUserQueryParam 用户查询参数
* @return 用户列表
*/
@Override
public R<List<SysUserVo>> list(SysUserQueryParam sysUserQueryParam) {
SysOrg org = null;
if (sysUserQueryParam.getOrgId() != null) {
org = sysOrgServiceBiz.getById(sysUserQueryParam.getOrgId());
if (!hasPermission(org)) {
return failed(ApiErrorCode.FORBIDDEN_DATA);
}
}
//未指定组织使用当前登录用户所在组织
if (org == null) {
org = sysOrgServiceBiz.getById(getLoginUser().getOrgId());
}
//未限定只查询当前组织用户则使用家谱ID查询
if (sysUserQueryParam.getOrgScope() == null || sysUserQueryParam.getOrgScope().equals(WhetherEnum.NO.getValue())) {
sysUserQueryParam.setGenealogyId(org.getGenealogyId());
sysUserQueryParam.setOrgId(null);
} else {
sysUserQueryParam.setOrgId(org.getId());
}
List<SysUserVo> sysUserVos = userMapper.listByOrg(sysUserQueryParam);
return successful(sysUserVos);
}
/**
* 获取用户分页列表
*
* @param sysUserQueryParam 用户查询参数
* @return 用户分页列表
*/
@Override
public R<IPage<SysUserVo>> page(SysUserQueryParam sysUserQueryParam) {
SysOrg org = null;
if (sysUserQueryParam.getOrgId() != null) {
org = sysOrgServiceBiz.getById(sysUserQueryParam.getOrgId());
if (!hasPermission(org)) {
return failed(ApiErrorCode.FORBIDDEN_DATA);
}
}
//未指定组织使用当前登录用户所在组织
if (org == null) {
org = sysOrgServiceBiz.getById(getLoginUser().getOrgId());
}
//未限定只查询当前组织用户则使用家谱ID查询
if (sysUserQueryParam.getOrgScope() == null || sysUserQueryParam.getOrgScope().equals(WhetherEnum.NO.getValue())) {
sysUserQueryParam.setGenealogyId(org.getGenealogyId());
sysUserQueryParam.setOrgId(null);
} else {
sysUserQueryParam.setOrgId(org.getId());
}
IPage<SysUserVo> page = new Page<>(sysUserQueryParam.getCurrent(), sysUserQueryParam.getSize());
List<SysUserVo> sysUserVos = userMapper.listByOrg(page, sysUserQueryParam);
page.setRecords(sysUserVos);
return successful(page);
}
/**
* 新增用户
*
* @param sysUserParam 用户参数
* @return 主键
*/
@Override
public R<IdVo> add(SysUserParam sysUserParam) {
QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
wrapper.eq(SysUser.MOBILE, sysUserParam.getMobile());
SysUser sysUser = sysUserServiceBiz.getOne(wrapper);
if (sysUser != null) {
return failed(ApiErrorCode.USER_EXISTENT);
}
SysOrg sysOrg = sysOrgServiceBiz.getById(sysUserParam.getOrgId());
if (sysOrg == null) {
return failed("组织不存在");
}
//创建系统用户
sysUser = new SysUser();
BeanUtils.copyProperties(sysUserParam, sysUser);
sysUser.setAccount(sysUser.getMobile());
String nonceStr = PasswordUtil.genNonce();
String encodePassword = PasswordUtil.encode(sysUser.getPassword(), nonceStr);
sysUser.setPassword(encodePassword);
sysUser.setNonceStr(nonceStr);
setCommonField(sysUser);
sysUserServiceBiz.save(sysUser);
return successful(IdVo.builder().id(sysUser.getId()).build());
}
/**
* 更新用户
*
* @param sysUserParam 用户参数
* @return 主键
*/
@Override
public R<IdVo> update(SysUserParam sysUserParam) {
SysUser sysUser = sysUserServiceBiz.getById(sysUserParam.getId());
if (sysUser == null) {
return failed(ApiErrorCode.USER_NON_EXISTENT);
}
SysOrg sysOrg = sysOrgServiceBiz.getById(sysUserParam.getOrgId());
if (sysOrg == null) {
return failed("组织不存在");
}
if (!hasPermission(sysUser)) {
return failed(ApiErrorCode.FORBIDDEN_DATA);
}
SysUser updateSysUser = new SysUser().setId(sysUser.getId());
BeanUtils.copyProperties(sysUserParam, updateSysUser, "mobile", "password");
setUpdateCommonField(updateSysUser);
sysUserServiceBiz.updateById(updateSysUser);
return successful(IdVo.builder().id(sysUser.getId()).build());
}
/**
* 启用停用
*
* @param enabledParam 启停参数
* @return 主键
*/
@Override
public R<IdVo> enabled(EnabledParam enabledParam) {
SysUser sysUser = sysUserServiceBiz.getById(enabledParam.getId());
if (sysUser == null) {
return failed(ApiErrorCode.USER_NON_EXISTENT);
}
if (!hasPermission(sysUser)) {
return failed(ApiErrorCode.FORBIDDEN_DATA);
}
if (!enabledParam.getEnabled().equals(sysUser.getEnabled())) {
SysUser updateSysUser = new SysUser().setId(sysUser.getId());
updateSysUser.setEnabled(enabledParam.getEnabled());
setUpdateCommonField(updateSysUser);
sysUserServiceBiz.updateById(updateSysUser);
}
return successful(IdVo.builder().id(sysUser.getId()).build());
}
/**
* 修改密码
*
* @param modifyPasswordParam 修改密码参数
* @return 主键
*/
@Override
public R<IdVo> modifyPassword(ModifyPasswordParam modifyPasswordParam) {
SysUser sysUser = sysUserServiceBiz.getById(getLoginUser().getUserId());
if (sysUser == null) {
return failed(ApiErrorCode.USER_NON_EXISTENT);
}
if (!sysUser.getPassword().equals(PasswordUtil.encode(modifyPasswordParam.getPassword(), sysUser.getNonceStr()))) {
return failed("原密码错误");
}
SysUser updateSysUser = new SysUser().setId(sysUser.getId());
String nonceStr = PasswordUtil.genNonce();
String encodePassword = PasswordUtil.encode(modifyPasswordParam.getNewPassword(), nonceStr);
updateSysUser.setPassword(encodePassword);
updateSysUser.setNonceStr(nonceStr);
setUpdateCommonField(updateSysUser);
sysUserServiceBiz.updateById(updateSysUser);
return successful(IdVo.builder().id(sysUser.getId()).build());
}
/**
* 重置密码
*
* @param resetPasswordParam 重新密码参数
* @return 主键
*/
@Override
public R<IdVo> resetPassword(ResetPasswordParam resetPasswordParam) {
SysUser sysUser = sysUserServiceBiz.getById(resetPasswordParam.getId());
if (sysUser == null) {
return failed(ApiErrorCode.USER_NON_EXISTENT);
}
if (!hasPermission(sysUser)) {
return failed(ApiErrorCode.FORBIDDEN_DATA);
}
SysUser updateSysUser = new SysUser().setId(sysUser.getId());
String nonceStr = PasswordUtil.genNonce();
String encodePassword = PasswordUtil.encode(resetPasswordParam.getPassword(), nonceStr);
updateSysUser.setPassword(encodePassword);
updateSysUser.setNonceStr(nonceStr);
setUpdateCommonField(updateSysUser);
sysUserServiceBiz.updateById(updateSysUser);
return successful(IdVo.builder().id(sysUser.getId()).build());
}
/**
* 找回密码
*
* @param findPasswordParam 找回密码参数
* @return 主键
*/
@Override
public R<IdVo> findPassword(FindPasswordParam findPasswordParam) {
return null;
}
/**
* 删除用户
*
* @param idParam 主键参数
* @return 主键
*/
@Override
public R<IdVo> delete(IdParam idParam) {
SysUser sysUser = sysUserServiceBiz.getById(idParam.getId());
if (sysUser == null) {
return failed(ApiErrorCode.USER_NON_EXISTENT);
}
if (!hasPermission(sysUser)) {
return failed(ApiErrorCode.FORBIDDEN_DATA);
}
//删除用户角色关系
sysUserRoleServiceBiz.remove(new QueryWrapper<SysUserRole>().eq(SysUserRole.USER_ID, sysUser.getId()));
//使用更新方式删除需要把mobile设置为历史mobile后面跟随机数
SysUser updateSysUser = new SysUser().setId(sysUser.getId());
updateSysUser.setMobile(sysUser.getMobile() + "_" + RandomUtils.nextInt());
updateSysUser.setValid(WhetherEnum.NO.getValue());
setUpdateCommonField(updateSysUser);
sysUserServiceBiz.updateById(updateSysUser);
//更新时逻辑删除字段没有更新,需要再调用一次删除操作
sysUserServiceBiz.removeById(idParam.getId());
return successful(IdVo.builder().id(sysUser.getId()).build());
}
/**
* 批量删除用户
*
* @param idListParam 主键列表参数
* @return 主键列表
*/
@Override
public R<IdListVo> delete(IdListParam idListParam) {
Collection<SysUser> sysUsers = sysUserServiceBiz.listByIds(idListParam.getIds());
if (CollectionUtils.isEmpty(sysUsers)) {
return failed(ApiErrorCode.USER_NON_EXISTENT);
}
for (SysUser sysUser : sysUsers) {
if (!hasPermission(sysUser)) {
return failed(ApiErrorCode.FORBIDDEN_DATA);
}
}
List<SysUser> updateSysUsers = new ArrayList<>(sysUsers.size());
for (SysUser sysUser : sysUsers) {
//删除用户角色关系
sysUserRoleServiceBiz.remove(new QueryWrapper<SysUserRole>().eq(SysUserRole.USER_ID, sysUser.getId()));
//使用更新方式删除需要把mobile设置为历史mobile后面跟随机数
SysUser updateSysUser = new SysUser().setId(sysUser.getId());
updateSysUser.setMobile(sysUser.getMobile() + "_" + RandomUtils.nextInt());
updateSysUser.setValid(WhetherEnum.NO.getValue());
setUpdateCommonField(updateSysUser);
updateSysUsers.add(updateSysUser);
}
sysUserServiceBiz.updateBatchById(updateSysUsers);
//更新时逻辑删除字段没有更新,需要再调用一次删除操作
sysUserServiceBiz.removeByIds(idListParam.getIds());
return successful(IdListVo.builder().ids(idListParam.getIds()).build());
}
/**
* 判断登录用户是否有修改该用户的权限,主要基于登录用户和被修改用户是否归属同一组织或上下级组织关系
*
* @param sysUser 被修改的用户
* @return true允许修改否则不允许
*/
private boolean hasPermission(SysUser sysUser) {
if (sysUser.getOrgId() == null) {
return false;
}
SysOrg sysOrg = sysOrgServiceBiz.getById(sysUser.getOrgId());
if (sysOrg == null) {
return false;
}
return hasPermission(sysOrg);
}
/**
* 判断登录用户是否有修改该组织的权限,主要基于登录用户和被修改组织是否归属同一组织或上下级组织关系
*
* @param sysOrg 被修改的用户
* @return true允许修改否则不允许
*/
private boolean hasPermission(SysOrg sysOrg) {
if (sysOrg == null) {
return false;
}
Long loginOrgId = getLoginUser().getOrgId();
if (loginOrgId == null) {
return false;
}
SysOrg loginSysOrg = sysOrgServiceBiz.getById(loginOrgId);
if (loginSysOrg == null) {
return false;
}
if (StringUtils.isAnyBlank(sysOrg.getGenealogyId(), loginSysOrg.getGenealogyId())) {
return false;
}
return sysOrg.getGenealogyId().startsWith(loginSysOrg.getGenealogyId());
}
}

View File

@@ -0,0 +1,98 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.vo;
import com.mt.wms.core.enums.HttpMethodEnum;
import com.mt.wms.core.enums.ResourceCategoryEnum;
import com.mt.wms.core.validator.constraints.Enum;
import com.mt.wms.core.vo.CommonVo;
import com.mt.wms.core.vo.PageVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* <p>
* 菜单资源视图对象
* </p>
*
* @author jiff
* @date 2018/11/22
* @since 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Builder
@ApiModel(value = "菜单资源视图对象", description = "用于查询菜单资源信息")
public class MenuResourceVo extends CommonVo implements PageVo.ConvertVo {
private static final long serialVersionUID = 1L;
/**
* 主键,自增
*/
@ApiModelProperty(value = "主键", required = true, example = "1")
private Long id;
/**
* 资源ID
*/
@ApiModelProperty(value = "资源ID", required = true, example = "1")
@NotNull(message = "资源ID不能为空")
private Long resourceId;
/**
* 服务ID
*/
@ApiModelProperty(value = "服务ID", required = true, example = "1")
@NotNull(message = "服务ID不能为空")
private Long serviceId;
/**
* 名称
*/
@ApiModelProperty(value = "名称", required = true, example = "新增资源")
@NotBlank(message = "名称不能为空")
private String name;
/**
* 请求地址可以用于前端ajax调用后端用于做权限控制
*/
@ApiModelProperty(value = "url", required = true, example = "/platform-upms/resource/add")
@NotBlank(message = "请求地址不能为空")
private String url;
/**
* 请求类型GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
*/
@ApiModelProperty(value = "请求类型GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE", required = true, example = "post")
@NotBlank(message = "请求方法不能为空")
@Enum(message = "非法的请求类型", target = {HttpMethodEnum.class})
private String method;
/**
* 子系统:0、common1、platform2、partner3、hospital4、patient
*/
@ApiModelProperty("子系统:0、common1、platform2、partner3、hospital4、patient")
private Integer subsystem;
/**
* 分类:0、common1、pc2、app3、wechat4、miniapp
*/
@ApiModelProperty(value = "分类:0、common1、pc2、app3、wechat4、miniapp", required = true, example = "0")
@NotNull(message = "资源类型不能为空")
@Enum(message = "非法的资源类型", target = {ResourceCategoryEnum.class})
private Integer category;
}

View File

@@ -0,0 +1,141 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.vo;
import com.mt.wms.core.base.ITree;
import com.mt.wms.core.enums.MenuCategoryEnum;
import com.mt.wms.core.enums.MenuTypeEnum;
import com.mt.wms.core.validator.constraints.Enum;
import com.mt.wms.core.vo.CommonVo;
import com.mt.wms.core.vo.PageVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* <p>
* 菜单表
* </p>
*
* @author jiff
* @date 2018/11/9
* @since 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Builder
@ApiModel(value = "菜单视图对象", description = "用于查询菜单信息")
public class MenuVo extends CommonVo implements PageVo.ConvertVo, ITree<MenuVo> {
private static final long serialVersionUID = 1L;
/**
* 主键,自增
*/
@ApiModelProperty(value = "主键", required = true, example = "1")
private Long id;
/**
* 父菜单ID
*/
@ApiModelProperty(value = "父菜单ID", required = true, example = "0")
@NotNull(message = "父菜单ID不能为空")
private Long parentId;
/**
* 父菜单名称
*/
@ApiModelProperty(value = "父菜单名称,再获取单个菜单信息时会返回", required = false, example = "系统管理")
private String parentName;
/**
* 菜单编码
*/
@ApiModelProperty(value = "菜单编码", example = "menu")
private String code;
/**
* 菜单名称
*/
@ApiModelProperty(value = "菜单名称", required = true, example = "菜单管理")
@NotBlank(message = "菜单名称不能为空")
private String name;
/**
* 菜单图标
*/
@ApiModelProperty("菜单图标")
private String icon;
/**
* 链接地址,可以是页面地址,也可以是函数事件
*/
@ApiModelProperty("链接地址,可以是页面地址,也可以是函数事件")
private String href;
/**
* 请求地址可以用于前端ajax调用后端用于做权限控制
*/
@ApiModelProperty("请求地址可以用于前端ajax调用后端用于做权限控制")
private String url;
/**
* 请求类型GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
*/
@ApiModelProperty(value = "请求类型GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE", example = "post")
private String method;
/**
* 权限,可以有多个,用逗号分隔,可用于第三方权限框架扩展
*/
@ApiModelProperty("权限,可以有多个,用逗号分隔,可用于第三方权限框架扩展")
private String permission;
/**
* 分类:1、pc2、app3、wechat4、miniapp
*/
@ApiModelProperty(value = "分类:1、pc2、app3、wechat4、miniapp", required = true, example = "1")
@NotNull(message = "菜单分类不能为空")
@Enum(message = "非法的菜单分类", target = {MenuCategoryEnum.class})
private Integer category;
/**
* 类型:1、module2、menu3、button
*/
@ApiModelProperty(value = "类型:1、module2、menu3、button", required = true, example = "1")
@NotNull(message = "菜单类型不能为空")
@Enum(message = "非法的菜单类型", target = {MenuTypeEnum.class})
private Integer type;
/**
* 显示顺序
*/
@ApiModelProperty(value = "显示顺序", example = "1")
private Integer orderNum;
/**
* 角色是否分配该菜单:true、已分配false、未分配
*/
@ApiModelProperty(value = "角色是否分配该菜单:true、已分配false、未分配用于根据角色获取所有菜单", required = false, example = "true")
private boolean checked;
/**
* 子列表
*/
@ApiModelProperty(value = "子列表,用于获取菜单树时才有数据", required = false)
private List<MenuVo> children;
}

View File

@@ -0,0 +1,91 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.vo;
import com.mt.wms.core.enums.HttpMethodEnum;
import com.mt.wms.core.enums.ResourceCategoryEnum;
import com.mt.wms.core.validator.constraints.Enum;
import com.mt.wms.core.vo.CommonVo;
import com.mt.wms.core.vo.PageVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* <p>
* 资源表
* </p>
*
* @author jiff
* @date 2018/11/22
* @since 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Builder
@ApiModel(value = "资源视图对象", description = "用于查询资源信息")
public class ResourceVo extends CommonVo implements PageVo.ConvertVo {
private static final long serialVersionUID = 1L;
/**
* 主键,自增
*/
@ApiModelProperty(value = "主键", required = true, example = "1")
private Long id;
/**
* 服务ID
*/
@ApiModelProperty(value = "服务ID", required = true, example = "1")
@NotNull(message = "服务ID不能为空")
private Long serviceId;
/**
* 名称
*/
@ApiModelProperty(value = "名称", required = true, example = "新增资源")
@NotBlank(message = "名称不能为空")
private String name;
/**
* 请求地址可以用于前端ajax调用后端用于做权限控制
*/
@ApiModelProperty(value = "url", required = true, example = "/platform-upms/resource/add")
@NotBlank(message = "请求地址不能为空")
private String url;
/**
* 请求类型GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
*/
@ApiModelProperty(value = "请求类型GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE", required = true, example = "post")
@NotBlank(message = "请求方法不能为空")
@Enum(message = "非法的请求类型", target = {HttpMethodEnum.class})
private String method;
/**
* 子系统:0、common1、platform2、partner3、hospital4、patient
*/
@ApiModelProperty("子系统:0、common1、platform2、partner3、hospital4、patient")
private Integer subsystem;
/**
* 分类:0、common1、pc2、app3、wechat4、miniapp
*/
@ApiModelProperty(value = "分类:0、common1、pc2、app3、wechat4、miniapp", required = true, example = "0")
@NotNull(message = "资源类型不能为空")
@Enum(message = "非法的资源类型", target = {ResourceCategoryEnum.class})
private Integer category;
}

View File

@@ -0,0 +1,53 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.vo;
import com.mt.wms.core.vo.CommonVo;
import com.mt.wms.core.vo.PageVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 服务表
* </p>
*
* @author jiff
* @date 2018/11/22
* @since 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Builder
@ApiModel(value = "服务视图对象", description = "用于查询服务信息")
public class ServiceVo extends CommonVo implements PageVo.ConvertVo {
private static final long serialVersionUID = 1L;
/**
* 主键,自增
*/
@ApiModelProperty(value = "主键", required = true, example = "1")
private Long id;
/**
* 编码
*/
@ApiModelProperty(value = "编码", required = true, example = "lis-passport")
private String code;
/**
* 名称
*/
@ApiModelProperty(value = "名称", required = true, example = "统一认证服务")
private String name;
}

View File

@@ -0,0 +1,117 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.vo;
import com.mt.wms.core.base.ITree;
import com.mt.wms.core.vo.CommonVo;
import com.mt.wms.core.vo.PageVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* <p>
* 系统组织表
* </p>
*
* @author jiff
* @date 2018/11/9
* @since 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Builder
@ApiModel(value = "组织视图对象", description = "用于查询组织信息")
public class SysOrgVo extends CommonVo implements PageVo.ConvertVo, ITree<SysOrgVo> {
private static final long serialVersionUID = 1L;
/**
* 主键,自增
*/
@ApiModelProperty(value = "主键", required = true, example = "1")
@NotNull(message = "组织ID不能为空")
private Long id;
/**
* 区域ID
*/
@ApiModelProperty(value = "区域ID", example = "0")
@NotNull(message = "区域不能为空")
private Long regionId;
/**
* 区域名称
*/
@ApiModelProperty(value = "区域名称", example = "中国")
private String regionName;
/**
* 父组织ID
*/
@ApiModelProperty(value = "父组织ID", example = "0")
@NotNull(message = "父组织不能为空")
private Long parentId;
/**
* 家谱ID格式/rootId/.../grandfatherId/parentId/id
*/
@ApiModelProperty(value = "家谱ID格式/rootId/.../grandfatherId/parentId/id", example = "/0/1")
private String genealogyId;
/**
* 名称
*/
@ApiModelProperty(value = "名称", example = "销售部")
@NotBlank(message = "名称不能为空")
private String name;
/**
* 联系人
*/
@ApiModelProperty(value = "联系人", example = "jiff")
private String contact;
/**
* 联系电话
*/
@ApiModelProperty(value = "联系电话", example = "13588441519")
private String phone;
/**
* 联系地址
*/
@ApiModelProperty(value = "联系地址", example = "中国人工智能小镇")
private String address;
/**
* 邮箱
*/
@ApiModelProperty(value = "邮箱", example = "jiff@ulabcare.com")
@Email
private String email;
/**
* 选中状态true选中否则未选中
*/
@ApiModelProperty(value = "选中状态true选中否则未选中", example = "true")
private boolean checked;
/**
* 子列表
*/
@ApiModelProperty(value = "子列表,用于获取组织树时才有数据", required = false)
private List<SysOrgVo> children;
}

View File

@@ -0,0 +1,44 @@
package com.mt.wms.upms.vo;
import com.mt.wms.core.base.ITree;
import com.mt.wms.core.vo.CommonVo;
import com.mt.wms.core.vo.PageVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.List;
/**
* @Description: 返回岗位对象
* @Param:
* @return:
* @Author: tqq
* @Date: 2019/11/11 16:06
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Builder
@ApiModel(value = "岗位对象 ", description = "用于返回岗位对象")
public class SysPostVo extends CommonVo implements PageVo.ConvertVo, ITree<SysPostVo> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
private Long id;
@ApiModelProperty(value = "父岗位id")
private Long parentId;
@ApiModelProperty(value = "岗位编码")
private String code;
@ApiModelProperty(value = "岗位名称")
private String name;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty(value = "子列表,用于获取岗位树时才有数据", required = false)
private List<SysPostVo> children;
}

View File

@@ -0,0 +1,88 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.vo;
import com.mt.wms.core.enums.MenuCategoryEnum;
import com.mt.wms.core.validator.constraints.Enum;
import com.mt.wms.core.vo.CommonVo;
import com.mt.wms.core.vo.PageVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* <p>
* 系统角色表
* </p>
*
* @author jiff
* @date 2018/11/22
* @since 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Builder
@ApiModel(value = "角色视图对象", description = "用于查询角色信息")
public class SysRoleVo extends CommonVo implements PageVo.ConvertVo {
private static final long serialVersionUID = 1L;
/**
* 主键,自增
*/
@ApiModelProperty(value = "主键", required = true, example = "1")
private Long id;
/**
* 角色编码
*/
@ApiModelProperty(value = "角色编码", required = true, example = "manager")
@NotBlank(message = "角色编码不能为空")
private String code;
/**
* 角色名称
*/
@ApiModelProperty(value = "角色名称", required = true, example = "管理员")
@NotBlank(message = "角色名称不能为空")
private String name;
/**
* 分类:1、pc2、app3、wechat4、miniapp
*/
@ApiModelProperty(value = "分类:1、pc2、app3、wechat4、miniapp", required = true, example = "1")
@NotNull(message = "角色分类不能为空")
@Enum(message = "非法的角色分类", target = {MenuCategoryEnum.class})
private Integer category;
/**
* 管理角色标志:1 管理角色0 非管理角色,管理角色不允许修改角色菜单关系
*/
@ApiModelProperty(value = "管理角色标志:1 管理角色0 非管理角色,管理角色不允许修改角色菜单关系", required = true, example = "0")
private Integer managerFlag;
/**
* 预设角色标志:1 预设 0 非预设
*/
@ApiModelProperty(value = "预设角色标志:1 预设 0 非预设", required = true, example = "0")
private Integer preset;
/**
* 用户是否分配该角色:true、已分配false、未分配
*/
@ApiModelProperty(value = "用户是否分配该角色:true、已分配false、未分配用于根据用户获取所有角色", required = false, example = "true")
private boolean checked;
}

View File

@@ -0,0 +1,106 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.vo;
import com.mt.wms.core.vo.CommonVo;
import com.mt.wms.core.vo.PageVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.time.LocalDate;
/**
* <p>
* 系统用户表
* </p>
*
* @author jiff
* @date 2018/11/20
* @since 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Builder
@ApiModel(value = "用户视图对象", description = "用于查询用户信息", parent = CommonVo.class)
public class SysUserVo extends CommonVo implements PageVo.ConvertVo {
private static final long serialVersionUID = 1L;
/**
* 主键,自增
*/
@ApiModelProperty(value = "主键", required = true, example = "1")
private Long id;
/**
* 统一用户ID
*/
@ApiModelProperty(value = "统一用户ID", required = true, example = "1")
private Long passportUserId;
/**
* 组织ID
*/
@ApiModelProperty(value = "组织ID", required = true, example = "1")
private Long orgId;
/**
* 组织名称
*/
@ApiModelProperty(value = "组织名称", required = true, example = "一诺检验")
private String orgName;
/**
* 用户账号
*/
@ApiModelProperty(value = "用户账号", example = "13588441519")
private String account;
/**
* 系统用户手机号
*/
@ApiModelProperty(value = "用户手机号", example = "13588441519")
private String mobile;
/**
* 工号
*/
@ApiModelProperty(value = "工号", example = "10000")
private String code;
/**
* 姓名
*/
@ApiModelProperty(value = "姓名", example = "jiff")
private String name;
/**
* 生日
*/
@ApiModelProperty(value = "生日", example = "2018-11-11")
private LocalDate birthday;
/**
* 系统用户邮箱
*/
@ApiModelProperty(value = "用户邮箱", example = "jiff@ulabcare.com")
private String email;
/**
* 性别1女2男
*/
@ApiModelProperty(value = "性别1女2男", example = "1")
private Integer sex;
}

View File

@@ -0,0 +1,5 @@
#
# Copyright (c) 2018.
# http://www.ulabcare.com
#
#typeMismatch.sysUserParam.birthday=\u751F\u65E5\u683C\u5F0F\u9519\u8BEF

View File

@@ -0,0 +1,5 @@
#
# Copyright (c) 2018.
# http://www.ulabcare.com
#
typeMismatch.sysUserParam.birthday=\u751F\u65E5\u683C\u5F0F\u9519\u8BEF

View File

@@ -0,0 +1,20 @@
info:
name: "@project.name@"
description: "@project.description@"
version: "@project.version@"
spring:
application:
name: lis-platform-upms
profiles:
active: @profileActive@
cloud:
config:
enabled: @spring.cloud.config.enabled@
label: ${spring.profiles.active}
profile: ${spring.profiles.active}
uri: @spring.cloud.config.uri@
discovery:
enabled: false
service-id: wms-center-config
username: @spring.security.user.name@
password: @spring.security.user.password@

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2018.
~ http://www.ulabcare.com
-->
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<logger name="com.mt.wms.upms" level="DEBUG"/>
<jmxConfigurator/>
</configuration>

View File

@@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2018.
~ http://www.ulabcare.com
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mt.wms.upms.mapper.MenuMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.mt.wms.core.dal.entity.SysMenu">
<id column="id" property="id"/>
<result column="parent_id" property="parentId"/>
<result column="code" property="code"/>
<result column="name" property="name"/>
<result column="icon" property="icon"/>
<result column="href" property="href"/>
<result column="url" property="url"/>
<result column="method" property="method"/>
<result column="permission" property="permission"/>
<result column="category" property="category"/>
<result column="type" property="type"/>
<result column="level" property="level"/>
<result column="order_num" property="orderNum"/>
<result column="enabled" property="enabled"/>
<result column="remark" property="remark"/>
<result column="valid" property="valid"/>
<result column="creator" property="creator"/>
<result column="creator_name" property="creatorName"/>
<result column="create_time" property="createTime"/>
<result column="updater" property="updater"/>
<result column="updater_name" property="updaterName"/>
<result column="update_time" property="updateTime"/>
<result column="version" property="version"/>
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id,
parent_id,
code,
name,
icon,
href,
url,
method,
permission,
category,
type,
level,
order_num,
enabled,
remark,
valid,
creator,
creator_name,
create_time,
updater,
updater_name,
update_time,
version
</sql>
<!-- 根据角色查询菜单,角色已分配的菜单标记为选中状态 -->
<select id="listByRole"
resultType="com.mt.wms.core.vo.MenuVo">
SELECT menu.id AS id,
menu.parent_id AS parentId,
menu.code AS code,
menu.name AS name,
menu.category AS category,
menu.type AS type,
menu.order_num AS orderNum,
roleMenu.id AS checked
FROM t_sys_menu AS menu
LEFT JOIN t_sys_role_menu AS roleMenu ON menu.id = roleMenu.menu_id
AND roleMenu.role_id = #{roleId}
AND roleMenu.valid = 1
WHERE menu.valid = 1
AND menu.enabled = 1
AND menu.category = #{category}
ORDER BY menu.order_num
</select>
<!-- 根据用户查询菜单,通过用户关联角色再关联菜单查询所有有效的菜单 -->
<select id="listByUser"
resultType="com.mt.wms.core.vo.UserMenuVo">
SELECT DISTINCT menu.id AS id,
menu.parent_id AS parentId,
menu.code AS code,
menu.name AS name,
menu.icon AS icon,
menu.href AS href,
menu.type AS type,
menu.order_num AS orderNum
FROM t_sys_user_role userRole
INNER JOIN t_sys_role_menu roleMenu
INNER JOIN t_sys_menu menu ON userRole.role_id = roleMenu.role_id
AND roleMenu.menu_id = menu.id
WHERE userRole.user_id = #{userId}
AND userRole.valid = 1
AND roleMenu.valid = 1
AND menu.valid = 1
AND menu.enabled = 1
AND menu.category = #{category}
ORDER BY menu.order_num;
</select>
</mapper>

View File

@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2018.
~ http://www.ulabcare.com
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mt.wms.upms.mapper.ResourceMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.mt.wms.core.dal.entity.Resource">
<id column="id" property="id"/>
<result column="service_id" property="serviceId"/>
<result column="name" property="name"/>
<result column="url" property="url"/>
<result column="method" property="method"/>
<result column="subsystem" property="subsystem"/>
<result column="category" property="category"/>
<result column="enabled" property="enabled"/>
<result column="remark" property="remark"/>
<result column="valid" property="valid"/>
<result column="creator" property="creator"/>
<result column="creator_name" property="creatorName"/>
<result column="create_time" property="createTime"/>
<result column="updater" property="updater"/>
<result column="updater_name" property="updaterName"/>
<result column="update_time" property="updateTime"/>
<result column="version" property="version"/>
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id,
service_id,
name,
url,
method,
subsystem,
category,
enabled,
remark,
valid,
creator,
creator_name,
create_time,
updater,
updater_name,
update_time,
version
</sql>
<!-- 根据用户查询资源权限 -->
<select id="listByUser"
resultType="com.mt.wms.core.dto.Permission">
SELECT DISTINCT resource.id AS id,
resource.url AS url,
resource.method AS method
FROM t_sys_user_role userRole
INNER JOIN t_sys_role role
INNER JOIN t_sys_role_menu roleMenu
INNER JOIN t_sys_menu menu
INNER JOIN t_sys_menu_resource menuResource
INNER JOIN t_resource resource ON userRole.role_id = role.id
AND role.id = roleMenu.role_id
AND roleMenu.menu_id = menu.id
AND menu.id = menuResource.menu_id
AND menuResource.resource_id = resource.id
WHERE userRole.user_id = #{userId}
AND userRole.valid = 1
AND role.category = #{category}
AND role.valid = 1
AND role.enabled = 1
AND roleMenu.valid = 1
AND menu.valid = 1
AND menu.enabled = 1
AND menuResource.valid = 1
AND resource.valid = 1
AND resource.enabled = 1
</select>
</mapper>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2018.
~ http://www.ulabcare.com
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mt.wms.upms.mapper.RoleMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.mt.wms.core.dal.entity.SysRole">
<id column="id" property="id"/>
<result column="code" property="code"/>
<result column="name" property="name"/>
<result column="category" property="category"/>
<result column="manager_flag" property="managerFlag"/>
<result column="preset" property="preset"/>
<result column="enabled" property="enabled"/>
<result column="remark" property="remark"/>
<result column="valid" property="valid"/>
<result column="creator" property="creator"/>
<result column="creator_name" property="creatorName"/>
<result column="create_time" property="createTime"/>
<result column="updater" property="updater"/>
<result column="updater_name" property="updaterName"/>
<result column="update_time" property="updateTime"/>
<result column="version" property="version"/>
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id,
code,
name,
category,
manager_flag,
preset,
enabled,
remark,
valid,
creator,
creator_name,
create_time,
updater,
updater_name,
update_time,
version
</sql>
<!-- 根据用户查询角色,用户已分配的角色标记为选中状态 -->
<select id="listByUser"
resultType="com.mt.wms.upms.vo.SysRoleVo">
SELECT role.id AS id,
role.CODE AS CODE,
role.NAME AS NAME,
role.category AS category,
userRole.id AS checked
FROM t_sys_role AS role
LEFT JOIN t_sys_user_role AS userRole ON role.id = userRole.role_id
AND userRole.user_id = #{userId}
AND userRole.valid = 1
WHERE role.valid = 1
AND role.enabled = 1
</select>
</mapper>

View File

@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2018.
~ http://www.ulabcare.com
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mt.wms.upms.mapper.UserMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.mt.wms.core.dal.entity.SysUser">
<id column="id" property="id"/>
<result column="org_id" property="orgId"/>
<result column="mobile" property="mobile"/>
<result column="password" property="password"/>
<result column="code" property="code"/>
<result column="name" property="name"/>
<result column="birthday" property="birthday"/>
<result column="email" property="email"/>
<result column="sex" property="sex"/>
<result column="enabled" property="enabled"/>
<result column="remark" property="remark"/>
<result column="valid" property="valid"/>
<result column="creator" property="creator"/>
<result column="creator_name" property="creatorName"/>
<result column="create_time" property="createTime"/>
<result column="updater" property="updater"/>
<result column="updater_name" property="updaterName"/>
<result column="update_time" property="updateTime"/>
<result column="version" property="version"/>
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id,
org_id,
mobile,
password,
code,
name,
birthday,
email,
sex,
enabled,
remark,
valid,
creator,
creator_name,
create_time,
updater,
updater_name,
update_time,
version
</sql>
<!-- 根据组织查询所管理的用户列表 -->
<select id="listByOrg" parameterType="com.mt.wms.upms.params.SysUserQueryParam"
resultType="com.mt.wms.upms.vo.SysUserVo">
SELECT
user.id AS id,
user.org_id AS orgId,
org.name AS orgName,
user.mobile AS mobile,
user.code AS code,
user.name AS name,
user.birthday AS birthday,
user.sex AS sex,
user.email AS email,
user.enabled AS enabled,
user.remark AS remark,
user.creator_name AS creatorName,
user.create_time AS createTime,
user.updater_name AS updaterName,
user.update_time AS updateTime
FROM t_sys_user user
INNER JOIN t_sys_org org ON user.org_id = org.id
WHERE 1 = 1
<if test="queryParam.mobile != null and queryParam.mobile != ''">
AND user.mobile = #{queryParam.mobile}
</if>
<if test="queryParam.code != null and queryParam.code != ''">
AND user.code = #{queryParam.code}
</if>
<if test="queryParam.orgId != null">
AND user.org_id = #{queryParam.orgId}
</if>
<if test="queryParam.enabled != null">
AND user.enabled = #{queryParam.enabled}
</if>
<if test="queryParam.sex != null">
AND user.sex = #{queryParam.sex}
</if>
<if test="queryParam.name != null and queryParam.name != ''">
<![CDATA[AND user.name like '%${queryParam.name}%']]>
</if>
<if test="queryParam.genealogyId != null and queryParam.genealogyId != ''">
<![CDATA[AND org.genealogy_id like '${queryParam.genealogyId}%']]>
</if>
AND user.valid = 1
</select>
</mapper>

View File

@@ -0,0 +1,21 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
* @author jiff
* @date 2018-12-11
* @since 1.0
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class LisPlatformUpmsApplicationTest {
}

View File

@@ -0,0 +1,53 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.controller;
import com.alibaba.fastjson.JSON;
import com.mt.wms.core.dto.LoginUser;
import com.mt.wms.core.dto.Permission;
import com.mt.wms.upms.LisPlatformUpmsApplicationTest;
import org.hamcrest.Matchers;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import java.util.List;
/**
* @author jiff
* @date 2018-12-11
* @since 1.0
*/
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class UpmsControllerTest extends LisPlatformUpmsApplicationTest {
@Autowired
private TestRestTemplate restTemplate;
private HttpHeaders httpHeaders = new HttpHeaders();
@Before
public void setUp() {
httpHeaders.add(LoginUser.HTTP_HEADER_NAME, JSON.toJSONString(LoginUser.builder().userId(1L).userName("jiff")
.orgId(1L).userType(LoginUser.USER_TYPE_PLATFORM).build()));
}
@Test
public void getPermissions() {
ParameterizedTypeReference<List<Permission>> type = new ParameterizedTypeReference<List<Permission>>() {
};
ResponseEntity<List<Permission>> responseEntity = restTemplate.exchange("/upms/getPermissions", HttpMethod.POST, new HttpEntity<>(httpHeaders), type);
Assert.assertThat(responseEntity.getBody().get(0).getUrl(), Matchers.notNullValue());
}
}

View File

@@ -0,0 +1,31 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.mapper;
import com.mt.wms.core.dto.Permission;
import com.mt.wms.core.enums.AppTypeEnum;
import com.mt.wms.upms.LisPlatformUpmsApplicationTest;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
import java.util.List;
/**
* @author jiff
* @date 2018-12-11
* @since 1.0
*/
public class ResourceMapperTest extends LisPlatformUpmsApplicationTest {
@Autowired
private ResourceMapper resourceMapper;
@Test
public void listByUser() {
List<Permission> permissions = resourceMapper.listByUser(1l, AppTypeEnum.PC.getValue());
Assert.notEmpty(permissions, "权限为空");
}
}

View File

@@ -0,0 +1,39 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mt.wms.upms.LisPlatformUpmsApplicationTest;
import com.mt.wms.upms.params.SysUserQueryParam;
import com.mt.wms.upms.vo.SysUserVo;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
/**
* @author jiff
* @date 2018-12-11
* @since 1.0
*/
public class UserMapperTest extends LisPlatformUpmsApplicationTest {
@Autowired
private UserMapper userMapper;
@Test
public void listByOrg() {
SysUserQueryParam queryParam = SysUserQueryParam.builder().genealogyId("/1").name("ff").sex(1).build();
queryParam.setCurrent(1);
queryParam.setSize(10);
IPage page = new Page(queryParam.getCurrent(), queryParam.getSize());
List<SysUserVo> sysUserVos = userMapper.listByOrg(page, queryParam);
page.setRecords(sysUserVos);
Assert.assertEquals(page.getRecords(), sysUserVos);
}
}

View File

@@ -0,0 +1,63 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service;
import com.mt.wms.upms.LisPlatformUpmsApplicationTest;
import com.mt.wms.upms.params.MenuResourceQueryParam;
import com.mt.wms.core.vo.PageVo;
import com.mt.wms.core.vo.R;
import com.mt.wms.upms.vo.ResourceVo;
import lombok.extern.slf4j.Slf4j;
import org.hamcrest.Matchers;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @author jiff
* @date 2018-12-13
* @since 1.0
*/
@Slf4j
public class MenuResourceServiceTest extends LisPlatformUpmsApplicationTest {
@Autowired
private MenuResourceService menuResourceService;
@Before
public void setUp() {
log.info("setUp");
}
@After
public void tearDown() {
log.info("tearDown");
}
@Test
public void pageWithMenu() {
MenuResourceQueryParam param = new MenuResourceQueryParam().setMenuId(1L);
param.setCurrent(1);
param.setSize(10);
R<PageVo<ResourceVo>> r = menuResourceService.pageWithMenu(param);
Assert.assertThat(r.getData().getRecords(), Matchers.hasSize(1));
r = menuResourceService.pageWithMenu(param.setMenuId(2L));
Assert.assertThat(r.getData().getRecords(), Matchers.hasSize(2));
}
@Test
public void pageWithMenuByParam() {
MenuResourceQueryParam param = new MenuResourceQueryParam().setMenuId(1L).setName("获取");
param.setCurrent(1);
param.setSize(10);
R<PageVo<ResourceVo>> r = menuResourceService.pageWithMenu(param);
Assert.assertThat(r.getData().getRecords(), Matchers.hasSize(1));
r = menuResourceService.pageWithMenu(param.setMenuId(2L).setName(null).setUrl("add"));
Assert.assertThat(r.getData().getRecords(), Matchers.hasSize(1));
}
}

View File

@@ -0,0 +1,23 @@
/*
* Copyright (c) 2018.
* http://www.ulabcare.com
*/
package com.mt.wms.upms.service;
import com.mt.wms.upms.LisPlatformUpmsApplicationTest;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @author jiff
* @date 2018-12-11
* @since 1.0
*/
public class UpmsServiceTest extends LisPlatformUpmsApplicationTest {
@Autowired
private UpmsService upmsService;
public void getPermissions() {
upmsService.getPermissions();
}
}