mirror of https://gitee.com/stylefeng/roses
【7.2.5】【user】更新用户组新增和详情接口
parent
69cb08abc5
commit
1bf4b93be2
|
@ -0,0 +1,79 @@
|
|||
/*
|
||||
* Copyright [2020-2030] [https://www.stylefeng.cn]
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
||||
*
|
||||
* 1.请不要删除和修改根目录下的LICENSE文件。
|
||||
* 2.请不要删除和修改Guns源码头部的版权声明。
|
||||
* 3.请保留源码和相关描述文件的项目出处,作者声明等。
|
||||
* 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
|
||||
* 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
|
||||
* 6.若您的项目无法满足以上几点,可申请商业授权
|
||||
*/
|
||||
package cn.stylefeng.roses.kernel.system.api.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 用户组的选择详情
|
||||
* <p>
|
||||
* 授权对象类型:1-用户,2-部门,3-角色,4-职位,5-关系,6-部门审批人
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/9/26 14:31
|
||||
*/
|
||||
@Getter
|
||||
public enum UserGroupSelectTypeEnum {
|
||||
|
||||
/**
|
||||
* 用户
|
||||
*/
|
||||
USER(1, "用户"),
|
||||
|
||||
/**
|
||||
* 部门
|
||||
*/
|
||||
DEPT(2, "部门"),
|
||||
|
||||
/**
|
||||
* 角色
|
||||
*/
|
||||
ROLE(3, "角色"),
|
||||
|
||||
/**
|
||||
* 职位
|
||||
*/
|
||||
POSITION(4, "职位"),
|
||||
|
||||
/**
|
||||
* 关系
|
||||
*/
|
||||
RELATION(5, "关系"),
|
||||
|
||||
/**
|
||||
* 部门审批人
|
||||
*/
|
||||
APPROVER(6, "部门审批人");
|
||||
|
||||
private final Integer code;
|
||||
|
||||
private final String message;
|
||||
|
||||
UserGroupSelectTypeEnum(Integer code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
package cn.stylefeng.roses.kernel.system.modular.user.controller;
|
||||
|
||||
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
||||
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
|
||||
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
|
||||
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
|
||||
|
@ -14,7 +13,6 @@ import org.springframework.web.bind.annotation.RequestBody;
|
|||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 用户组控制器
|
||||
|
@ -37,32 +35,8 @@ public class SysUserGroupController {
|
|||
*/
|
||||
@PostResource(name = "添加", path = "/sysUserGroup/add")
|
||||
public ResponseData<SysUserGroup> add(@RequestBody @Validated(SysUserGroupRequest.add.class) SysUserGroupRequest sysUserGroupRequest) {
|
||||
sysUserGroupService.add(sysUserGroupRequest);
|
||||
return new SuccessResponseData<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/09/26 10:12
|
||||
*/
|
||||
@PostResource(name = "删除", path = "/sysUserGroup/delete")
|
||||
public ResponseData<?> delete(@RequestBody @Validated(SysUserGroupRequest.delete.class) SysUserGroupRequest sysUserGroupRequest) {
|
||||
sysUserGroupService.del(sysUserGroupRequest);
|
||||
return new SuccessResponseData<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/09/26 10:12
|
||||
*/
|
||||
@PostResource(name = "编辑", path = "/sysUserGroup/edit")
|
||||
public ResponseData<?> edit(@RequestBody @Validated(SysUserGroupRequest.edit.class) SysUserGroupRequest sysUserGroupRequest) {
|
||||
sysUserGroupService.edit(sysUserGroupRequest);
|
||||
return new SuccessResponseData<>();
|
||||
SysUserGroup result = sysUserGroupService.add(sysUserGroupRequest);
|
||||
return new SuccessResponseData<>(result);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -76,26 +50,4 @@ public class SysUserGroupController {
|
|||
return new SuccessResponseData<>(sysUserGroupService.detail(sysUserGroupRequest));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取列表
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/09/26 10:12
|
||||
*/
|
||||
@GetResource(name = "获取列表", path = "/sysUserGroup/list")
|
||||
public ResponseData<List<SysUserGroup>> list(SysUserGroupRequest sysUserGroupRequest) {
|
||||
return new SuccessResponseData<>(sysUserGroupService.findList(sysUserGroupRequest));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取列表(带分页)
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/09/26 10:12
|
||||
*/
|
||||
@GetResource(name = "分页查询", path = "/sysUserGroup/page")
|
||||
public ResponseData<PageResult<SysUserGroup>> page(SysUserGroupRequest sysUserGroupRequest) {
|
||||
return new SuccessResponseData<>(sysUserGroupService.findPage(sysUserGroupRequest));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package cn.stylefeng.roses.kernel.system.modular.user.entity;
|
|||
|
||||
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
|
||||
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.usergroup.SelectItem;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
|
@ -9,6 +10,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
|||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 用户组实例类
|
||||
*
|
||||
|
@ -41,4 +44,46 @@ public class SysUserGroup extends BaseEntity {
|
|||
@ChineseDescription("组内选择项的合并")
|
||||
private String userGroupDetailName;
|
||||
|
||||
/**
|
||||
* 选中的用户列表
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
@ChineseDescription("选中的用户列表")
|
||||
private List<SelectItem> selectUserList;
|
||||
|
||||
/**
|
||||
* 选中的组织机构列表
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
@ChineseDescription("选中的组织机构列表")
|
||||
private List<SelectItem> selectOrgList;
|
||||
|
||||
/**
|
||||
* 选中的角色列表
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
@ChineseDescription("选中的角色列表")
|
||||
private List<SelectItem> selectRoleList;
|
||||
|
||||
/**
|
||||
* 选中的职位列表
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
@ChineseDescription("选中的职位列表")
|
||||
private List<SelectItem> selectPositionList;
|
||||
|
||||
/**
|
||||
* 选中的关系列表
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
@ChineseDescription("选中的关系列表")
|
||||
private List<SelectItem> selectRelationList;
|
||||
|
||||
/**
|
||||
* 选中的部门审批人类型列表
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
@ChineseDescription("选中的部门审批人类型列表")
|
||||
private List<SelectItem> selectOrgApproverTypeList;
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,170 @@
|
|||
package cn.stylefeng.roses.kernel.system.modular.user.factory;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.stylefeng.roses.kernel.system.api.enums.UserGroupSelectTypeEnum;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.usergroup.SelectItem;
|
||||
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserGroup;
|
||||
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserGroupDetail;
|
||||
import cn.stylefeng.roses.kernel.system.modular.user.pojo.request.SysUserGroupRequest;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 用户组创建工厂
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/9/26 14:28
|
||||
*/
|
||||
public class UserGroupFactory {
|
||||
|
||||
/**
|
||||
* 创建用户组详情
|
||||
*
|
||||
* @param userGroupId 用户组的组id
|
||||
* @param sysUserGroupRequest 前端传递的参数
|
||||
* @return 最终转化的用户组详情实体
|
||||
* @author fengshuonan
|
||||
* @date 2022/9/26 14:29
|
||||
*/
|
||||
public static List<SysUserGroupDetail> createUserGroupDetail(Long userGroupId, SysUserGroupRequest sysUserGroupRequest) {
|
||||
|
||||
ArrayList<SysUserGroupDetail> sysUserGroupDetails = new ArrayList<>();
|
||||
|
||||
// 解析请求参数中选择的情况
|
||||
List<SelectItem> selectUserList = sysUserGroupRequest.getSelectUserList();
|
||||
List<SelectItem> selectOrgList = sysUserGroupRequest.getSelectOrgList();
|
||||
List<SelectItem> selectRoleList = sysUserGroupRequest.getSelectRoleList();
|
||||
List<SelectItem> selectPositionList = sysUserGroupRequest.getSelectPositionList();
|
||||
List<SelectItem> selectRelationList = sysUserGroupRequest.getSelectRelationList();
|
||||
List<SelectItem> selectOrgApproverTypeList = sysUserGroupRequest.getSelectOrgApproverTypeList();
|
||||
|
||||
// 生成对应的userGroupDetail实体
|
||||
List<SysUserGroupDetail> users = parseToUserGroupDetail(userGroupId, UserGroupSelectTypeEnum.USER, selectUserList);
|
||||
List<SysUserGroupDetail> depts = parseToUserGroupDetail(userGroupId, UserGroupSelectTypeEnum.DEPT, selectOrgList);
|
||||
List<SysUserGroupDetail> roles = parseToUserGroupDetail(userGroupId, UserGroupSelectTypeEnum.ROLE, selectRoleList);
|
||||
List<SysUserGroupDetail> positions = parseToUserGroupDetail(userGroupId, UserGroupSelectTypeEnum.POSITION, selectPositionList);
|
||||
List<SysUserGroupDetail> relations = parseToUserGroupDetail(userGroupId, UserGroupSelectTypeEnum.RELATION, selectRelationList);
|
||||
List<SysUserGroupDetail> approvers = parseToUserGroupDetail(userGroupId, UserGroupSelectTypeEnum.APPROVER, selectOrgApproverTypeList);
|
||||
|
||||
sysUserGroupDetails.addAll(users);
|
||||
sysUserGroupDetails.addAll(depts);
|
||||
sysUserGroupDetails.addAll(roles);
|
||||
sysUserGroupDetails.addAll(positions);
|
||||
sysUserGroupDetails.addAll(relations);
|
||||
sysUserGroupDetails.addAll(approvers);
|
||||
|
||||
return sysUserGroupDetails;
|
||||
}
|
||||
|
||||
/**
|
||||
* @author fengshuonan
|
||||
* @date 2022/9/26 15:37
|
||||
*/
|
||||
public static SysUserGroup parseToEntity(SysUserGroup sysUserGroup, List<SysUserGroupDetail> sysUserGroupDetailList) {
|
||||
|
||||
// 按类型将详情分组
|
||||
Map<Integer, List<SysUserGroupDetail>> userDetailList = sysUserGroupDetailList.stream().collect(Collectors.groupingBy(SysUserGroupDetail::getSelectType));
|
||||
|
||||
// 设置绑定的用户列表
|
||||
List<SysUserGroupDetail> users = userDetailList.get(UserGroupSelectTypeEnum.USER.getCode());
|
||||
sysUserGroup.setSelectUserList(parseToSelectItem(users));
|
||||
|
||||
// 设置绑定的部门列表
|
||||
List<SysUserGroupDetail> depts = userDetailList.get(UserGroupSelectTypeEnum.DEPT.getCode());
|
||||
sysUserGroup.setSelectOrgList(parseToSelectItem(depts));
|
||||
|
||||
// 设置绑定的角色列表
|
||||
List<SysUserGroupDetail> roles = userDetailList.get(UserGroupSelectTypeEnum.ROLE.getCode());
|
||||
sysUserGroup.setSelectRoleList(parseToSelectItem(roles));
|
||||
|
||||
// 设置绑定的职位列表
|
||||
List<SysUserGroupDetail> positions = userDetailList.get(UserGroupSelectTypeEnum.POSITION.getCode());
|
||||
sysUserGroup.setSelectPositionList(parseToSelectItem(positions));
|
||||
|
||||
// 设置绑定的关系类型
|
||||
List<SysUserGroupDetail> relations = userDetailList.get(UserGroupSelectTypeEnum.RELATION.getCode());
|
||||
sysUserGroup.setSelectRelationList(parseToSelectItem(relations));
|
||||
|
||||
// 设置绑定的部门审批人类型
|
||||
List<SysUserGroupDetail> approvers = userDetailList.get(UserGroupSelectTypeEnum.APPROVER.getCode());
|
||||
sysUserGroup.setSelectOrgApproverTypeList(parseToSelectItem(approvers));
|
||||
|
||||
return sysUserGroup;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成指定类型的userGroupDetail存储类型
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/9/26 14:36
|
||||
*/
|
||||
public static List<SysUserGroupDetail> parseToUserGroupDetail(Long userGroupId, UserGroupSelectTypeEnum userGroupSelectTypeEnum, List<SelectItem> paramList) {
|
||||
|
||||
ArrayList<SysUserGroupDetail> results = new ArrayList<>();
|
||||
|
||||
if (ObjectUtil.isEmpty(paramList)) {
|
||||
return results;
|
||||
}
|
||||
|
||||
// 转化请求的参数
|
||||
for (SelectItem selectItem : paramList) {
|
||||
SysUserGroupDetail sysUserGroupDetail = new SysUserGroupDetail();
|
||||
|
||||
// 设置分组id
|
||||
sysUserGroupDetail.setUserGroupId(userGroupId);
|
||||
|
||||
// 设置详情类型
|
||||
sysUserGroupDetail.setSelectType(userGroupSelectTypeEnum.getCode());
|
||||
|
||||
// 设置选择的值和名称
|
||||
sysUserGroupDetail.setSelectValue(selectItem.getBizId());
|
||||
sysUserGroupDetail.setSelectValueName(selectItem.getName());
|
||||
|
||||
// 如果请求的参数是部门审批人类型,则需要单独存储选择的审批人类型
|
||||
if (UserGroupSelectTypeEnum.APPROVER.equals(userGroupSelectTypeEnum)) {
|
||||
sysUserGroupDetail.setSubSelectValue(selectItem.getSubValue());
|
||||
sysUserGroupDetail.setSubSelectValueName(selectItem.getSubValueName());
|
||||
}
|
||||
|
||||
results.add(sysUserGroupDetail);
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析到可选择的item
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/9/26 15:44
|
||||
*/
|
||||
public static List<SelectItem> parseToSelectItem(List<SysUserGroupDetail> userGroupDetailList) {
|
||||
|
||||
ArrayList<SelectItem> selectItems = new ArrayList<>();
|
||||
|
||||
if (ObjectUtil.isEmpty(userGroupDetailList)) {
|
||||
return selectItems;
|
||||
}
|
||||
|
||||
for (SysUserGroupDetail sysUserGroupDetail : userGroupDetailList) {
|
||||
SelectItem selectItem = new SelectItem();
|
||||
|
||||
selectItem.setBizId(sysUserGroupDetail.getSelectValue());
|
||||
selectItem.setName(sysUserGroupDetail.getSelectValueName());
|
||||
|
||||
// 如果请求的参数是部门审批人类型,则需要单独存储选择的审批人类型
|
||||
if (UserGroupSelectTypeEnum.APPROVER.getCode().equals(sysUserGroupDetail.getSelectType())) {
|
||||
selectItem.setSubValue(sysUserGroupDetail.getSubSelectValue());
|
||||
selectItem.setSubValueName(sysUserGroupDetail.getSubSelectValueName());
|
||||
}
|
||||
|
||||
selectItems.add(selectItem);
|
||||
}
|
||||
|
||||
return selectItems;
|
||||
}
|
||||
|
||||
}
|
|
@ -22,7 +22,7 @@ public class SysUserGroupRequest extends BaseRequest {
|
|||
/**
|
||||
* 用户组id
|
||||
*/
|
||||
@NotNull(message = "用户组id不能为空", groups = {edit.class, delete.class})
|
||||
@NotNull(message = "用户组id不能为空", groups = {detail.class})
|
||||
@ChineseDescription("用户组id")
|
||||
private Long userGroupId;
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ public interface SysUserGroupService extends IService<SysUserGroup> {
|
|||
* @author fengshuonan
|
||||
* @date 2022/09/26 10:12
|
||||
*/
|
||||
void add(SysUserGroupRequest sysUserGroupRequest);
|
||||
SysUserGroup add(SysUserGroupRequest sysUserGroupRequest);
|
||||
|
||||
/**
|
||||
* 删除
|
||||
|
|
|
@ -7,15 +7,20 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
|
|||
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
||||
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
|
||||
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserGroup;
|
||||
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserGroupDetail;
|
||||
import cn.stylefeng.roses.kernel.system.modular.user.enums.SysUserGroupExceptionEnum;
|
||||
import cn.stylefeng.roses.kernel.system.modular.user.factory.UserGroupFactory;
|
||||
import cn.stylefeng.roses.kernel.system.modular.user.mapper.SysUserGroupMapper;
|
||||
import cn.stylefeng.roses.kernel.system.modular.user.pojo.request.SysUserGroupRequest;
|
||||
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserGroupDetailService;
|
||||
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserGroupService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -27,11 +32,27 @@ import java.util.List;
|
|||
@Service
|
||||
public class SysUserGroupServiceImpl extends ServiceImpl<SysUserGroupMapper, SysUserGroup> implements SysUserGroupService {
|
||||
|
||||
@Resource
|
||||
private SysUserGroupDetailService sysUserGroupDetailService;
|
||||
|
||||
@Override
|
||||
public void add(SysUserGroupRequest sysUserGroupRequest) {
|
||||
public SysUserGroup add(SysUserGroupRequest sysUserGroupRequest) {
|
||||
|
||||
SysUserGroup sysUserGroup = new SysUserGroup();
|
||||
BeanUtil.copyProperties(sysUserGroupRequest, sysUserGroup);
|
||||
sysUserGroup.setUserGroupId(IdWorker.getId());
|
||||
sysUserGroup.setUserGroupTitle(sysUserGroupRequest.getUserGroupTitle());
|
||||
sysUserGroup.setUserGroupDetailName(sysUserGroupRequest.getUserGroupDetailName());
|
||||
|
||||
// 解析各个请求的list,转化成detail实体
|
||||
List<SysUserGroupDetail> userGroupDetail = UserGroupFactory.createUserGroupDetail(sysUserGroup.getUserGroupId(), sysUserGroupRequest);
|
||||
|
||||
// 保存用户组信息和用户组的详情
|
||||
this.save(sysUserGroup);
|
||||
if (ObjectUtil.isNotEmpty(userGroupDetail)) {
|
||||
this.sysUserGroupDetailService.saveBatch(userGroupDetail);
|
||||
}
|
||||
|
||||
return sysUserGroup;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -49,7 +70,15 @@ public class SysUserGroupServiceImpl extends ServiceImpl<SysUserGroupMapper, Sys
|
|||
|
||||
@Override
|
||||
public SysUserGroup detail(SysUserGroupRequest sysUserGroupRequest) {
|
||||
return this.querySysUserGroup(sysUserGroupRequest);
|
||||
SysUserGroup sysUserGroup = this.querySysUserGroup(sysUserGroupRequest);
|
||||
|
||||
// 查询用户组的详情
|
||||
LambdaQueryWrapper<SysUserGroupDetail> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(SysUserGroupDetail::getUserGroupId, sysUserGroup.getUserGroupId());
|
||||
List<SysUserGroupDetail> detailList = sysUserGroupDetailService.list(queryWrapper);
|
||||
|
||||
// 将用户组的详情列表,转化为单独的list返回给前端
|
||||
return UserGroupFactory.parseToEntity(sysUserGroup, detailList);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue