add:分组模块

This commit is contained in:
sunzheng
2024-07-19 11:21:07 +08:00
parent 28773545b3
commit f7d962847f
11 changed files with 482 additions and 0 deletions
@@ -0,0 +1,95 @@
package com.jero.modules.system.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.jero.common.api.vo.Result;
import com.jero.modules.system.entity.SysGroup;
import com.jero.modules.system.service.ISysGroupService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
/**
* <p>
* 用户分组表 前端控制器
* </p>
* @author sz
*/
@Api(tags = "分组管理")
@RestController
@RequestMapping("/sys/group")
@Slf4j
public class SysGroupController {
@Resource
private ISysGroupService sysGroupService;
// @RequiresPermissions("sys:group:list")
@ApiOperation(value = "分组管理-分页列表查询", notes = "分组管理-分页列表查询")
@GetMapping(value = "/page")
public Result<?> queryPageList(SysGroup sysGroup,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
IPage<SysGroup> pageList = sysGroupService.queryPageList(sysGroup, pageNo, pageSize, req);
return Result.OK(pageList);
}
/**
* 分组管理-添加
* @param sysGroup
* @return
*/
// @RequiresPermissions("sys:group:add")
@ApiOperation(value = "分组管理-添加", notes = "分组管理-添加")
@PostMapping("/add")
public Result<Object> add(@RequestBody SysGroup sysGroup) {
return sysGroupService.add(sysGroup);
}
/**
* 分组管理-编辑
* @param sysGroup
* @return
*/
// @RequiresPermissions("sys:group:edit")
@PostMapping("/edit")
@ApiOperation(value = "分组管理-编辑", notes = "分组管理-编辑")
public Result<Object> edit(@RequestBody SysGroup sysGroup) {
return sysGroupService.edit(sysGroup);
}
/**
* 分组管理-根据id查询分组
* @param id
* @return
*/
// @RequiresPermissions("sys:group:queryOne")
@GetMapping("/queryOne")
@ApiOperation(value = "分组管理-根据id查询分组", notes = "分组管理-根据id查询分组")
public Result<Object> queryOne(@RequestParam(name="id") String id) {
if (StringUtils.isBlank(id)) {
return Result.error("分组的id不能为空");
}
SysGroup sysGroup = sysGroupService.queryOne(id);
return Result.OK(sysGroup);
}
/**
* 分组管理-删除
* @param id
* @return
*/
// @RequiresPermissions("sys:group:edit")
@GetMapping("/delete")
@ApiOperation(value = "分组管理-删除", notes = "分组管理-删除")
public Result<Object> delete(@RequestParam(name="id") String id) {
return sysGroupService.delete(id);
}
}
@@ -0,0 +1,67 @@
package com.jero.modules.system.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 用户分组表
* </p>
*
* @author sz
* @since 2024-07-18
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("sys_group")
@ApiModel(value="SysGroup对象", description="用户分组表")
public class SysGroup implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键ID")
@TableId(value = "id", type = IdType.ASSIGN_ID)
private String id;
@ApiModelProperty(value = "分组名称")
private String groupName;
@ApiModelProperty(value = "创建人")
private String createBy;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "更新人")
private String updateBy;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@TableField(exist = false)
@ApiModelProperty(value = "人数")
private String count;
@TableField(exist = false)
@ApiModelProperty(value = "多个用户id")
private String ids;
@TableField(exist = false)
@ApiModelProperty("用户名或工号")
private String userNameOrWorkId;
@TableField(exist = false)
@ApiModelProperty("多个用户名")
private String userNames;
}
@@ -0,0 +1,41 @@
package com.jero.modules.system.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author sz
* @since 2024-07-18
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("sys_user_group")
@ApiModel(value="SysUserGroup对象", description="")
public class SysUserGroup implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键id")
@TableId(value = "id", type = IdType.ASSIGN_ID)
private String id;
@ApiModelProperty(value = "用户id")
private String userId;
@ApiModelProperty(value = "分组id")
private String groupId;
}
@@ -0,0 +1,21 @@
package com.jero.modules.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.modules.system.entity.SysGroup;
/**
* <p>
* 用户分组表 Mapper 接口
* </p>
*
* @author sz
* @since 2024-07-18
*/
public interface SysGroupMapper extends BaseMapper<SysGroup> {
IPage<SysGroup> queryPageList(Page<SysGroup> page,SysGroup sysGroup);
SysGroup queryOne(String id);
}
@@ -0,0 +1,17 @@
package com.jero.modules.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.modules.system.entity.SysUserGroup;
/**
* <p>
* Mapper 接口
* </p>
*
* @author sz
* @since 2024-07-18
*/
public interface SysUserGroupMapper extends BaseMapper<SysUserGroup> {
}
@@ -0,0 +1,50 @@
<?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="com.jero.modules.system.mapper.SysGroupMapper">
<select id="queryPageList" resultType="com.jero.modules.system.entity.SysGroup">
select
sg.id,
sg.group_name,
sg.create_by,
sg.create_time,
count(sug.id) as count,
GROUP_CONCAT(sug.user_id) as ids,
GROUP_CONCAT(CONCAT(su.realname, '(', su.username, ')')) as userNames
from sys_group sg
LEFT JOIN sys_user_group sug on sg.id = sug.group_id
LEFT JOIN sys_user su on sug.user_id = su.id
<where>
<if test="sysGroup.groupName != null and sysGroup.groupName != ''">
AND sg.group_name LIKE CONCAT('%',CONCAT(#{sysGroup.groupName},'%'))
</if>
<if test="sysGroup.userNameOrWorkId != null and sysGroup.userNameOrWorkId != ''">
AND sg.id IN (
SELECT sg.id
FROM sys_group sg
LEFT JOIN sys_user_group sug on sg.id = sug.group_id
LEFT JOIN sys_user su on sug.user_id = su.id
WHERE su.realname LIKE CONCAT('%',CONCAT(#{sysGroup.userNameOrWorkId},'%'))
OR su.username LIKE CONCAT('%',CONCAT(#{sysGroup.userNameOrWorkId},'%'))
)
</if>
</where>
group by sg.id,sg.group_name
order by sg.create_time desc
</select>
<select id="queryOne" resultType="com.jero.modules.system.entity.SysGroup">
select
sg.id,
sg.group_name,
sg.create_by,
sg.create_time,
count(sug.id) as count,
GROUP_CONCAT(sug.user_id) as ids,
GROUP_CONCAT(CONCAT(su.realname, '(', su.username, ')')) as userNames
from sys_group sg
LEFT JOIN sys_user_group sug on sg.id = sug.group_id
LEFT JOIN sys_user su on sug.user_id = su.id
where sg.id = #{id}
</select>
</mapper>
@@ -0,0 +1,5 @@
<?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="com.jero.modules.system.mapper.SysUserGroupMapper">
</mapper>
@@ -0,0 +1,29 @@
package com.jero.modules.system.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.common.api.vo.Result;
import com.jero.modules.system.entity.SysGroup;
import javax.servlet.http.HttpServletRequest;
/**
* <p>
* 用户分组表 服务类
* </p>
*
* @author sz
* @since 2024-07-18
*/
public interface ISysGroupService extends IService<SysGroup> {
Result<Object> add(SysGroup sysGroup);
Result<Object> edit(SysGroup sysGroup);
Result<Object> delete(String id);
IPage<SysGroup> queryPageList(SysGroup sysGroup, Integer pageNo, Integer pageSize, HttpServletRequest req);
SysGroup queryOne(String id);
}
@@ -0,0 +1,17 @@
package com.jero.modules.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.system.entity.SysUserGroup;
/**
* <p>
* 服务类
* </p>
*
* @author sz
* @since 2024-07-18
*/
public interface ISysUserGroupService extends IService<SysUserGroup> {
}
@@ -0,0 +1,120 @@
package com.jero.modules.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.system.entity.SysGroup;
import com.jero.modules.system.entity.SysUserGroup;
import com.jero.modules.system.mapper.SysGroupMapper;
import com.jero.modules.system.service.ISysGroupService;
import com.jero.modules.system.service.ISysUserGroupService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
/**
* <p>
* 用户分组表 服务实现类
* </p>
*
* @author sz
* @since 2024-07-18
*/
@Service
public class SysGroupServiceImpl extends ServiceImpl<SysGroupMapper, SysGroup> implements ISysGroupService {
@Resource
private ISysUserGroupService sysUserGroupService;
@Resource
private SysGroupMapper sysGroupMapper;
@Override
public IPage<SysGroup> queryPageList(SysGroup sysGroup, Integer pageNo, Integer pageSize, HttpServletRequest req) {
Page<SysGroup> page = new Page(pageNo, pageSize);
return sysGroupMapper.queryPageList(page, sysGroup);
}
@Override
public Result<Object> add(SysGroup sysGroup) {
if (Objects.isNull(sysGroup) || StringUtils.isBlank(sysGroup.getGroupName())) {
return Result.error("分组名称不能为空");
}
this.save(sysGroup);
String groupId = sysGroup.getId(); // 新建分组的id
String userIds = sysGroup.getIds(); // 要加入分组的用户ids
if (StringUtils.isNotBlank(userIds)) {
List<String> ids = Arrays.asList(userIds.split(","));
// 将用户id和分组id的对应关系插入到关联表中
for (String userId : ids) {
SysUserGroup sysUserGroup = new SysUserGroup();
sysUserGroup.setUserId(userId);
sysUserGroup.setGroupId(groupId);
sysUserGroupService.save(sysUserGroup);
}
}
return Result.OK("操作成功");
}
@Override
public SysGroup queryOne(String id) {
SysGroup sysGroup = this.getById(id);
if (Objects.isNull(sysGroup)) {
throw new JeroBootException("该分组不存在");
}
return sysGroupMapper.queryOne(id);
}
@Override
public Result<Object> edit(SysGroup sysGroup) {
String groupId = sysGroup.getId();
String userIds = sysGroup.getIds();
if (Objects.isNull(sysGroup) || StringUtils.isBlank(groupId)) {
return Result.error("分组的id不能为空");
}
LambdaUpdateWrapper<SysGroup> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(SysGroup::getId,sysGroup.getId());
String groupName = sysGroup.getGroupName();
if (StringUtils.isNotBlank(groupName)) {
lambdaUpdateWrapper.set(SysGroup::getGroupName,groupName);
}
this.update(lambdaUpdateWrapper);
// 删除掉关联表下该组下的所有用户
LambdaQueryWrapper<SysUserGroup> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(SysUserGroup::getGroupId,groupId);
sysUserGroupService.remove(lambdaQueryWrapper);
if (StringUtils.isNotBlank(userIds)) {
List<String> ids = Arrays.asList(userIds.split(","));
// 在将新的用户ids添加
for (String userId : ids) {
SysUserGroup sysUserGroup = new SysUserGroup();
sysUserGroup.setUserId(userId);
sysUserGroup.setGroupId(groupId);
sysUserGroupService.save(sysUserGroup);
}
}
return Result.OK("修改成功");
}
@Override
public Result<Object> delete(String id) {
if (StringUtils.isBlank(id)) {
return Result.error("分组的id不能为空");
}
// 删除掉关联表下该组下的所有用户
LambdaQueryWrapper<SysUserGroup> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(SysUserGroup::getGroupId,id);
sysUserGroupService.remove(lambdaQueryWrapper);
// 删除掉分组表中的数据
this.removeById(id);
return Result.OK("操作成功");
}
}
@@ -0,0 +1,20 @@
package com.jero.modules.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.modules.system.entity.SysUserGroup;
import com.jero.modules.system.mapper.SysUserGroupMapper;
import com.jero.modules.system.service.ISysUserGroupService;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author sz
* @since 2024-07-18
*/
@Service
public class SysUserGroupServiceImpl extends ServiceImpl<SysUserGroupMapper, SysUserGroup> implements ISysUserGroupService {
}