【7.2.3】更新业务分组

pull/30/head
fengshuonan 2022-06-28 10:28:37 +08:00
parent b5af67d1fe
commit a0e733c4e2
15 changed files with 447 additions and 39 deletions

View File

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

View File

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

View File

@ -1 +0,0 @@
package cn.stylefeng.roses.kernel.group.modular.controller;

View File

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

View File

@ -1 +0,0 @@
package cn.stylefeng.roses.kernel.group.modular.entity;

View File

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

View File

@ -1 +0,0 @@
package cn.stylefeng.roses.kernel.group.modular.enums;

View File

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

View File

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

View File

@ -1 +0,0 @@
package cn.stylefeng.roses.kernel.group.modular.mapper;

View File

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

View File

@ -1 +0,0 @@
package cn.stylefeng.roses.kernel.group.modular.pojo;

View File

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

View File

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

View File

@ -1 +0,0 @@
package cn.stylefeng.roses.kernel.group.modular.service;