mirror of https://gitee.com/stylefeng/roses
【7.2.3】更新业务分组
parent
b5af67d1fe
commit
a0e733c4e2
|
@ -1,33 +0,0 @@
|
|||
package cn.stylefeng.roses.kernel.group.api.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 一个示例
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022-06-24 17:15:41
|
||||
*/
|
||||
@Getter
|
||||
public enum DemoEnum {
|
||||
|
||||
/**
|
||||
* markdown格式
|
||||
*/
|
||||
MARKDOWN(1, "markdown格式"),
|
||||
|
||||
/**
|
||||
* 富文本格式
|
||||
*/
|
||||
TEXT(2, "富文本格式");
|
||||
|
||||
private final Integer code;
|
||||
|
||||
private final String message;
|
||||
|
||||
DemoEnum(Integer code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,78 @@
|
|||
package cn.stylefeng.roses.kernel.group.modular.controller;
|
||||
|
||||
import cn.stylefeng.roses.kernel.group.modular.entity.SysGroup;
|
||||
import cn.stylefeng.roses.kernel.group.modular.pojo.SysGroupRequest;
|
||||
import cn.stylefeng.roses.kernel.group.modular.service.SysGroupService;
|
||||
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
|
||||
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;
|
||||
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
|
||||
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 业务分组控制器
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/05/11 12:54
|
||||
*/
|
||||
@RestController
|
||||
@ApiResource(name = "业务分组")
|
||||
public class SysGroupController {
|
||||
|
||||
@Resource
|
||||
private SysGroupService sysGroupService;
|
||||
|
||||
/**
|
||||
* 获取某个业务的分组列表
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/05/11 12:54
|
||||
*/
|
||||
@GetResource(name = "获取列表", path = "/sysGroup/list")
|
||||
public ResponseData<List<SysGroup>> list(@Validated(BaseRequest.list.class) SysGroupRequest sysGroupRequest) {
|
||||
return new SuccessResponseData<>(sysGroupService.findGroupList(sysGroupRequest));
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加分组时候的选择列表
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/05/11 12:54
|
||||
*/
|
||||
@GetResource(name = "添加分组时候的选择列表", path = "/sysGroup/addSelect")
|
||||
public ResponseData<List<SysGroup>> addSelect(@Validated(BaseRequest.list.class) SysGroupRequest sysGroupRequest) {
|
||||
return new SuccessResponseData<>(sysGroupService.addSelect(sysGroupRequest));
|
||||
}
|
||||
|
||||
/**
|
||||
* 将某个业务记录,增加到某个分组中,如果分组没有则创建分组
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/05/11 12:54
|
||||
*/
|
||||
@PostResource(name = "添加", path = "/sysGroup/add")
|
||||
public ResponseData<SysGroup> add(@RequestBody @Validated(SysGroupRequest.add.class) SysGroupRequest sysGroupRequest) {
|
||||
sysGroupService.add(sysGroupRequest);
|
||||
return new SuccessResponseData<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除分组
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/05/11 12:54
|
||||
*/
|
||||
@PostResource(name = "删除", path = "/sysGroup/delete")
|
||||
public ResponseData<?> delete(@RequestBody @Validated(SysGroupRequest.delete.class) SysGroupRequest sysGroupRequest) {
|
||||
sysGroupService.del(sysGroupRequest);
|
||||
return new SuccessResponseData<>();
|
||||
}
|
||||
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
package cn.stylefeng.roses.kernel.group.modular.controller;
|
|
@ -0,0 +1,58 @@
|
|||
package cn.stylefeng.roses.kernel.group.modular.entity;
|
||||
|
||||
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
|
||||
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 业务分组实例类
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/05/11 12:54
|
||||
*/
|
||||
@TableName("sys_group")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class SysGroup extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 分组id
|
||||
*/
|
||||
@TableId(value = "group_id", type = IdType.ASSIGN_ID)
|
||||
@ChineseDescription("分组id")
|
||||
private Long groupId;
|
||||
|
||||
/**
|
||||
* 所属业务编码
|
||||
*/
|
||||
@TableField("group_biz_code")
|
||||
@ChineseDescription("所属业务编码")
|
||||
private String groupBizCode;
|
||||
|
||||
/**
|
||||
* 分组名称
|
||||
*/
|
||||
@TableField("group_name")
|
||||
@ChineseDescription("分组名称")
|
||||
private String groupName;
|
||||
|
||||
/**
|
||||
* 业务主键id
|
||||
*/
|
||||
@TableField("business_id")
|
||||
@ChineseDescription("业务主键id")
|
||||
private Long businessId;
|
||||
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
@TableField("user_id")
|
||||
@ChineseDescription("用户id")
|
||||
private Long userId;
|
||||
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
package cn.stylefeng.roses.kernel.group.modular.entity;
|
|
@ -0,0 +1,36 @@
|
|||
package cn.stylefeng.roses.kernel.group.modular.enums;
|
||||
|
||||
import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
|
||||
import cn.stylefeng.roses.kernel.rule.exception.AbstractExceptionEnum;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 业务分组异常相关枚举
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/05/11 12:54
|
||||
*/
|
||||
@Getter
|
||||
public enum SysGroupExceptionEnum implements AbstractExceptionEnum {
|
||||
|
||||
/**
|
||||
* 查询结果不存在
|
||||
*/
|
||||
SYS_GROUP_NOT_EXISTED(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10001", "查询结果不存在");
|
||||
|
||||
/**
|
||||
* 错误编码
|
||||
*/
|
||||
private final String errorCode;
|
||||
|
||||
/**
|
||||
* 提示用户信息
|
||||
*/
|
||||
private final String userTip;
|
||||
|
||||
SysGroupExceptionEnum(String errorCode, String userTip) {
|
||||
this.errorCode = errorCode;
|
||||
this.userTip = userTip;
|
||||
}
|
||||
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
package cn.stylefeng.roses.kernel.group.modular.enums;
|
|
@ -0,0 +1,25 @@
|
|||
package cn.stylefeng.roses.kernel.group.modular.mapper;
|
||||
|
||||
import cn.stylefeng.roses.kernel.group.modular.entity.SysGroup;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 业务分组 Mapper 接口
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/05/11 12:54
|
||||
*/
|
||||
public interface SysGroupMapper extends BaseMapper<SysGroup> {
|
||||
|
||||
/**
|
||||
* 获取用户分组列表
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/5/11 16:49
|
||||
*/
|
||||
List<SysGroup> getUserGroupList(@Param("groupBizCode") String groupBizCode, @Param("userId") Long userId);
|
||||
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="cn.stylefeng.roses.kernel.group.modular.mapper.SysGroupMapper">
|
||||
|
||||
<select id="getUserGroupList" resultType="cn.stylefeng.roses.kernel.group.modular.entity.SysGroup">
|
||||
select group_name
|
||||
from sys_group
|
||||
where user_id = #{userId}
|
||||
and group_biz_code = #{groupBizCode}
|
||||
group by group_name
|
||||
</select>
|
||||
|
||||
</mapper>
|
|
@ -1 +0,0 @@
|
|||
package cn.stylefeng.roses.kernel.group.modular.mapper;
|
|
@ -0,0 +1,49 @@
|
|||
package cn.stylefeng.roses.kernel.group.modular.pojo;
|
||||
|
||||
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
|
||||
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 业务分组封装类
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/05/11 12:54
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class SysGroupRequest extends BaseRequest {
|
||||
|
||||
/**
|
||||
* 分组id
|
||||
*/
|
||||
@ChineseDescription("分组id")
|
||||
private Long groupId;
|
||||
|
||||
/**
|
||||
* 所属业务编码
|
||||
*/
|
||||
@ChineseDescription("所属业务编码")
|
||||
@NotBlank(message = "groupBizCode业务编码不能为空", groups = {add.class, list.class, delete.class})
|
||||
private String groupBizCode;
|
||||
|
||||
/**
|
||||
* 分组名称不能为空
|
||||
*/
|
||||
@ChineseDescription("分组名称")
|
||||
@NotBlank(message = "分组名称不能为空", groups = {add.class})
|
||||
private String groupName;
|
||||
|
||||
/**
|
||||
* 业务主键id集合
|
||||
*/
|
||||
@ChineseDescription("业务主键id集合")
|
||||
@NotNull(message = "业务主键id集合不能为空", groups = {add.class, delete.class})
|
||||
private List<Long> businessIdList;
|
||||
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
package cn.stylefeng.roses.kernel.group.modular.pojo;
|
|
@ -0,0 +1,59 @@
|
|||
package cn.stylefeng.roses.kernel.group.modular.service;
|
||||
|
||||
import cn.stylefeng.roses.kernel.group.modular.entity.SysGroup;
|
||||
import cn.stylefeng.roses.kernel.group.modular.pojo.SysGroupRequest;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 业务分组 服务类
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/05/11 12:54
|
||||
*/
|
||||
public interface SysGroupService extends IService<SysGroup> {
|
||||
|
||||
/**
|
||||
* 获取用户某个业务下的分组列表
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/5/11 17:00
|
||||
*/
|
||||
List<SysGroup> findGroupList(SysGroupRequest sysGroupRequest);
|
||||
|
||||
/**
|
||||
* 添加时候的选择分组列表
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/5/11 17:00
|
||||
*/
|
||||
List<SysGroup> addSelect(SysGroupRequest sysGroupRequest);
|
||||
|
||||
/**
|
||||
* 将某个业务记录,增加到某个分组中,如果分组没有则创建分组
|
||||
*
|
||||
* @param sysGroupRequest 请求参数
|
||||
* @author fengshuonan
|
||||
* @date 2022/05/11 12:54
|
||||
*/
|
||||
void add(SysGroupRequest sysGroupRequest);
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*
|
||||
* @param sysGroupRequest 请求参数
|
||||
* @author fengshuonan
|
||||
* @date 2022/05/11 12:54
|
||||
*/
|
||||
void del(SysGroupRequest sysGroupRequest);
|
||||
|
||||
/**
|
||||
* 获取某个业务,某个人,某个分类下的业务数据id
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/5/11 17:00
|
||||
*/
|
||||
List<Long> findUserGroupDataList(SysGroupRequest sysGroupRequest);
|
||||
|
||||
}
|
|
@ -0,0 +1,129 @@
|
|||
package cn.stylefeng.roses.kernel.group.modular.service.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
|
||||
import cn.stylefeng.roses.kernel.group.modular.entity.SysGroup;
|
||||
import cn.stylefeng.roses.kernel.group.modular.mapper.SysGroupMapper;
|
||||
import cn.stylefeng.roses.kernel.group.modular.pojo.SysGroupRequest;
|
||||
import cn.stylefeng.roses.kernel.group.modular.service.SysGroupService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 业务分组业务实现层
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/05/11 12:54
|
||||
*/
|
||||
@Service
|
||||
public class SysGroupServiceImpl extends ServiceImpl<SysGroupMapper, SysGroup> implements SysGroupService {
|
||||
|
||||
@Override
|
||||
public List<SysGroup> findGroupList(SysGroupRequest sysGroupRequest) {
|
||||
// 增加两个固定的选中和取消选项
|
||||
SysGroup addGroup = new SysGroup();
|
||||
addGroup.setGroupBizCode("PROJECT");
|
||||
addGroup.setGroupName("所有分组");
|
||||
|
||||
SysGroup noneGroup = new SysGroup();
|
||||
noneGroup.setGroupBizCode("PROJECT");
|
||||
noneGroup.setGroupName("未分组");
|
||||
|
||||
String groupBizCode = sysGroupRequest.getGroupBizCode();
|
||||
Long userId = LoginContext.me().getLoginUser().getUserId();
|
||||
List<SysGroup> userGroupList = this.baseMapper.getUserGroupList(groupBizCode, userId);
|
||||
|
||||
userGroupList.add(0, noneGroup);
|
||||
userGroupList.add(0, addGroup);
|
||||
|
||||
return userGroupList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysGroup> addSelect(SysGroupRequest sysGroupRequest) {
|
||||
// 增加两个固定的选中和取消选项
|
||||
SysGroup addGroup = new SysGroup();
|
||||
addGroup.setGroupBizCode("PROJECT");
|
||||
addGroup.setGroupName("添加分组");
|
||||
|
||||
// 未分组
|
||||
SysGroup noneGroup = new SysGroup();
|
||||
noneGroup.setGroupBizCode("PROJECT");
|
||||
noneGroup.setGroupName("未分组");
|
||||
|
||||
String groupBizCode = sysGroupRequest.getGroupBizCode();
|
||||
Long userId = LoginContext.me().getLoginUser().getUserId();
|
||||
List<SysGroup> userGroupList = this.baseMapper.getUserGroupList(groupBizCode, userId);
|
||||
|
||||
userGroupList.add(0, noneGroup);
|
||||
userGroupList.add(0, addGroup);
|
||||
|
||||
return userGroupList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(SysGroupRequest sysGroupRequest) {
|
||||
ArrayList<SysGroup> sysGroups = new ArrayList<>();
|
||||
Long userId = LoginContext.me().getLoginUser().getUserId();
|
||||
List<Long> businessIdList = sysGroupRequest.getBusinessIdList();
|
||||
|
||||
// 移除当前用户在这个bizCode下已经绑定的分组
|
||||
LambdaUpdateWrapper<SysGroup> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(SysGroup::getGroupBizCode, sysGroupRequest.getGroupBizCode());
|
||||
updateWrapper.in(SysGroup::getBusinessId, businessIdList);
|
||||
updateWrapper.eq(SysGroup::getUserId, userId);
|
||||
this.remove(updateWrapper);
|
||||
|
||||
// 如果分组名称是未分组,则删除分组
|
||||
if (!sysGroupRequest.getGroupName().equals("未分组")) {
|
||||
for (Long bizId : businessIdList) {
|
||||
SysGroup sysGroup = new SysGroup();
|
||||
sysGroup.setGroupName(sysGroupRequest.getGroupName());
|
||||
sysGroup.setGroupBizCode(sysGroupRequest.getGroupBizCode());
|
||||
sysGroup.setBusinessId(bizId);
|
||||
sysGroup.setUserId(userId);
|
||||
sysGroups.add(sysGroup);
|
||||
}
|
||||
|
||||
this.saveBatch(sysGroups);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void del(SysGroupRequest sysGroupRequest) {
|
||||
|
||||
Long userId = LoginContext.me().getLoginUser().getUserId();
|
||||
|
||||
LambdaUpdateWrapper<SysGroup> wrapper = new LambdaUpdateWrapper<>();
|
||||
wrapper.eq(SysGroup::getUserId, userId);
|
||||
wrapper.eq(SysGroup::getGroupBizCode, sysGroupRequest.getGroupBizCode());
|
||||
wrapper.in(SysGroup::getBusinessId, sysGroupRequest.getBusinessIdList());
|
||||
|
||||
this.remove(wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Long> findUserGroupDataList(SysGroupRequest sysGroupRequest) {
|
||||
|
||||
Long userId = LoginContext.me().getLoginUser().getUserId();
|
||||
|
||||
LambdaQueryWrapper<SysGroup> sysGroupLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
sysGroupLambdaQueryWrapper.eq(SysGroup::getUserId, userId);
|
||||
sysGroupLambdaQueryWrapper.eq(SysGroup::getGroupBizCode, sysGroupRequest.getGroupBizCode());
|
||||
sysGroupLambdaQueryWrapper.eq(StrUtil.isNotBlank(sysGroupRequest.getGroupName()), SysGroup::getGroupName, sysGroupRequest.getGroupName());
|
||||
|
||||
List<SysGroup> list = this.list(sysGroupLambdaQueryWrapper);
|
||||
if (list == null || list.size() == 0) {
|
||||
return new ArrayList<>();
|
||||
} else {
|
||||
return list.stream().map(SysGroup::getBusinessId).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
package cn.stylefeng.roses.kernel.group.modular.service;
|
Loading…
Reference in New Issue