【7.2.5】【user】更新用户组新增和详情接口

pull/37/head
fengshuonan 2022-09-26 16:15:52 +08:00
parent 69cb08abc5
commit 1bf4b93be2
7 changed files with 331 additions and 56 deletions

View File

@ -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.
*
* GunsAPACHE 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;
}
}

View File

@ -1,6 +1,5 @@
package cn.stylefeng.roses.kernel.system.modular.user.controller; 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.ResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData; import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource; 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 org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
/** /**
* *
@ -37,32 +35,8 @@ public class SysUserGroupController {
*/ */
@PostResource(name = "添加", path = "/sysUserGroup/add") @PostResource(name = "添加", path = "/sysUserGroup/add")
public ResponseData<SysUserGroup> add(@RequestBody @Validated(SysUserGroupRequest.add.class) SysUserGroupRequest sysUserGroupRequest) { public ResponseData<SysUserGroup> add(@RequestBody @Validated(SysUserGroupRequest.add.class) SysUserGroupRequest sysUserGroupRequest) {
sysUserGroupService.add(sysUserGroupRequest); SysUserGroup result = sysUserGroupService.add(sysUserGroupRequest);
return new SuccessResponseData<>(); return new SuccessResponseData<>(result);
}
/**
*
*
* @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<>();
} }
/** /**
@ -76,26 +50,4 @@ public class SysUserGroupController {
return new SuccessResponseData<>(sysUserGroupService.detail(sysUserGroupRequest)); 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));
}
} }

View File

@ -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.db.api.pojo.entity.BaseEntity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; 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.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
@ -9,6 +10,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.List;
/** /**
* *
* *
@ -41,4 +44,46 @@ public class SysUserGroup extends BaseEntity {
@ChineseDescription("组内选择项的合并") @ChineseDescription("组内选择项的合并")
private String userGroupDetailName; 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;
} }

View File

@ -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;
}
}

View File

@ -22,7 +22,7 @@ public class SysUserGroupRequest extends BaseRequest {
/** /**
* id * id
*/ */
@NotNull(message = "用户组id不能为空", groups = {edit.class, delete.class}) @NotNull(message = "用户组id不能为空", groups = {detail.class})
@ChineseDescription("用户组id") @ChineseDescription("用户组id")
private Long userGroupId; private Long userGroupId;

View File

@ -22,7 +22,7 @@ public interface SysUserGroupService extends IService<SysUserGroup> {
* @author fengshuonan * @author fengshuonan
* @date 2022/09/26 10:12 * @date 2022/09/26 10:12
*/ */
void add(SysUserGroupRequest sysUserGroupRequest); SysUserGroup add(SysUserGroupRequest sysUserGroupRequest);
/** /**
* *

View File

@ -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.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; 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.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.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.mapper.SysUserGroupMapper;
import cn.stylefeng.roses.kernel.system.modular.user.pojo.request.SysUserGroupRequest; 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 cn.stylefeng.roses.kernel.system.modular.user.service.SysUserGroupService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List; import java.util.List;
/** /**
@ -27,11 +32,27 @@ import java.util.List;
@Service @Service
public class SysUserGroupServiceImpl extends ServiceImpl<SysUserGroupMapper, SysUserGroup> implements SysUserGroupService { public class SysUserGroupServiceImpl extends ServiceImpl<SysUserGroupMapper, SysUserGroup> implements SysUserGroupService {
@Override @Resource
public void add(SysUserGroupRequest sysUserGroupRequest) { private SysUserGroupDetailService sysUserGroupDetailService;
@Override
public SysUserGroup add(SysUserGroupRequest sysUserGroupRequest) {
SysUserGroup sysUserGroup = new SysUserGroup(); 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); this.save(sysUserGroup);
if (ObjectUtil.isNotEmpty(userGroupDetail)) {
this.sysUserGroupDetailService.saveBatch(userGroupDetail);
}
return sysUserGroup;
} }
@Override @Override
@ -49,7 +70,15 @@ public class SysUserGroupServiceImpl extends ServiceImpl<SysUserGroupMapper, Sys
@Override @Override
public SysUserGroup detail(SysUserGroupRequest sysUserGroupRequest) { 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 @Override