Browse Source

学生功能分类设置

dzx 7 months ago
parent
commit
55de990c78
20 changed files with 861 additions and 0 deletions
  1. 5 0
      src/main/java/com/xjrsoft/module/student/dto/BaseStudentSimpleInfoDto.java
  2. 109 0
      src/main/java/com/xjrsoft/module/system/controller/XjrMenuGroupSetController.java
  3. 32 0
      src/main/java/com/xjrsoft/module/system/dto/AddXjrMenuGroupDto.java
  4. 43 0
      src/main/java/com/xjrsoft/module/system/dto/AddXjrMenuGroupSetDto.java
  5. 24 0
      src/main/java/com/xjrsoft/module/system/dto/UpdateXjrMenuGroupSetDto.java
  6. 21 0
      src/main/java/com/xjrsoft/module/system/dto/XjrMenuGroupMenuListDto.java
  7. 19 0
      src/main/java/com/xjrsoft/module/system/dto/XjrMenuGroupSetPageDto.java
  8. 84 0
      src/main/java/com/xjrsoft/module/system/entity/XjrMenuGroup.java
  9. 98 0
      src/main/java/com/xjrsoft/module/system/entity/XjrMenuGroupSet.java
  10. 22 0
      src/main/java/com/xjrsoft/module/system/mapper/XjrMenuGroupMapper.java
  11. 16 0
      src/main/java/com/xjrsoft/module/system/mapper/XjrMenuGroupSetMapper.java
  12. 46 0
      src/main/java/com/xjrsoft/module/system/service/IXjrMenuGroupSetService.java
  13. 116 0
      src/main/java/com/xjrsoft/module/system/service/impl/XjrMenuGroupSetServiceImpl.java
  14. 29 0
      src/main/java/com/xjrsoft/module/system/vo/XjrMenuGroupMenuListVo.java
  15. 68 0
      src/main/java/com/xjrsoft/module/system/vo/XjrMenuGroupSetPageVo.java
  16. 45 0
      src/main/java/com/xjrsoft/module/system/vo/XjrMenuGroupSetVo.java
  17. 33 0
      src/main/java/com/xjrsoft/module/system/vo/XjrMenuGroupVo.java
  18. 3 0
      src/main/resources/mapper/organization/UserMapper.xml
  19. 14 0
      src/main/resources/mapper/system/XjrMenuGroupMapper.xml
  20. 34 0
      src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

+ 5 - 0
src/main/java/com/xjrsoft/module/student/dto/BaseStudentSimpleInfoDto.java

@@ -15,4 +15,9 @@ public class BaseStudentSimpleInfoDto {
 
     @ApiModelProperty("用户id")
     private Long userId;
+
+    @ApiModelProperty("姓名")
+    private String name;
+
+    private String idNumber;
 }

+ 109 - 0
src/main/java/com/xjrsoft/module/system/controller/XjrMenuGroupSetController.java

@@ -0,0 +1,109 @@
+package com.xjrsoft.module.system.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.system.dto.AddXjrMenuGroupDto;
+import com.xjrsoft.module.system.dto.XjrMenuGroupMenuListDto;
+import com.xjrsoft.module.system.dto.XjrMenuGroupSetPageDto;
+import com.xjrsoft.module.system.entity.XjrMenuGroupSet;
+import com.xjrsoft.module.system.service.IXjrMenuGroupSetService;
+import com.xjrsoft.module.system.vo.XjrMenuGroupMenuListVo;
+import com.xjrsoft.module.system.vo.XjrMenuGroupSetPageVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+* @title: 功能分类设置
+* @Author dzx
+* @Date: 2024-08-09
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/system" + "/xjrMenuGroupSet")
+@Api(value = "/system"  + "/xjrMenuGroupSet",tags = "功能分类设置代码")
+@AllArgsConstructor
+public class XjrMenuGroupSetController {
+
+
+    private final IXjrMenuGroupSetService xjrMenuGroupSetService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="功能分类设置列表(分页)")
+    @SaCheckPermission("xjrmenugroupset:detail")
+    public RT<PageOutput<XjrMenuGroupSetPageVo>> page(@Valid XjrMenuGroupSetPageDto dto){
+
+        LambdaQueryWrapper<XjrMenuGroupSet> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                    .orderByDesc(XjrMenuGroupSet::getId)
+                .select(XjrMenuGroupSet.class,x -> VoToColumnUtil.fieldsToColumns(XjrMenuGroupSetPageVo.class).contains(x.getProperty()));
+        IPage<XjrMenuGroupSet> page = xjrMenuGroupSetService.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<XjrMenuGroupSetPageVo> pageOutput = ConventPage.getPageOutput(page, XjrMenuGroupSetPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+//    @GetMapping(value = "/info")
+//    @ApiOperation(value="根据id查询功能分类设置信息")
+//    @SaCheckPermission("xjrmenugroupset:detail")
+//    public RT<XjrMenuGroupSetVo> info(@RequestParam Long id){
+//        XjrMenuGroupSet xjrMenuGroupSet = xjrMenuGroupSetService.getByIdDeep(id);
+//        if (xjrMenuGroupSet == null) {
+//           return RT.error("找不到此数据!");
+//        }
+//        return RT.ok(BeanUtil.toBean(xjrMenuGroupSet, XjrMenuGroupSetVo.class));
+//    }
+//
+//
+//    @PostMapping
+//    @ApiOperation(value = "新增功能分类设置")
+//    @SaCheckPermission("xjrmenugroupset:add")
+//    public RT<Boolean> add(@Valid @RequestBody AddXjrMenuGroupSetDto dto){
+//        XjrMenuGroupSet xjrMenuGroupSet = BeanUtil.toBean(dto, XjrMenuGroupSet.class);
+//        boolean isSuccess = xjrMenuGroupSetService.add(xjrMenuGroupSet);
+//        return RT.ok(isSuccess);
+//    }
+//
+//    @PutMapping
+//    @ApiOperation(value = "修改功能分类设置")
+//    @SaCheckPermission("xjrmenugroupset:edit")
+//    public RT<Boolean> update(@Valid @RequestBody UpdateXjrMenuGroupSetDto dto){
+//        XjrMenuGroupSet xjrMenuGroupSet = BeanUtil.toBean(dto, XjrMenuGroupSet.class);
+//        return RT.ok(xjrMenuGroupSetService.update(xjrMenuGroupSet));
+//    }
+//
+//    @DeleteMapping
+//    @ApiOperation(value = "删除功能分类设置")
+//    @SaCheckPermission("xjrmenugroupset:delete")
+//    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+//        return RT.ok(xjrMenuGroupSetService.delete(ids));
+//    }
+
+    @GetMapping(value = "/menu-list")
+    @ApiOperation(value = "查询学生菜单")
+    @SaCheckPermission("xjrmenugroupset:detail")
+    public RT<List<XjrMenuGroupMenuListVo>> menuList(@Valid XjrMenuGroupMenuListDto dto){
+        return RT.ok(xjrMenuGroupSetService.getMenuList(dto));
+    }
+
+    @PostMapping(value = "/set-menu")
+    @ApiOperation(value = "配置功能")
+    @SaCheckPermission("xjrmenugroupset:add")
+    public RT<Boolean> setMenu(@Valid @RequestBody AddXjrMenuGroupDto dto){
+        boolean isSuccess = xjrMenuGroupSetService.setMenu(dto);
+        return RT.ok(isSuccess);
+    }
+
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/system/dto/AddXjrMenuGroupDto.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.system.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+* @title: 功能分类设置菜单关联表
+* @Author dzx
+* @Date: 2024-08-09
+* @Version 1.0
+*/
+@Data
+public class AddXjrMenuGroupDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 菜单id(xjr_menu)
+    */
+    @ApiModelProperty("菜单id(xjr_menu)")
+    private List<Long> xjrMenuIds;
+    /**
+    * 功能分类设置(xjr_menu_group_set)
+    */
+    @ApiModelProperty("功能分类设置(xjr_menu_group_set)")
+    private Long xjrMenuGroupSetId;
+
+}

+ 43 - 0
src/main/java/com/xjrsoft/module/system/dto/AddXjrMenuGroupSetDto.java

@@ -0,0 +1,43 @@
+package com.xjrsoft.module.system.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+
+/**
+* @title: 功能分类设置
+* @Author dzx
+* @Date: 2024-08-09
+* @Version 1.0
+*/
+@Data
+public class AddXjrMenuGroupSetDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 功能分类名称
+    */
+    @ApiModelProperty("功能分类名称")
+    private String name;
+    /**
+    * 分组代码(xjr_dictionary_item[xjr_menu_group])
+    */
+    @ApiModelProperty("分组代码(xjr_dictionary_item[xjr_menu_group])")
+    private String code;
+    /**
+    * 使用范围(1:全部学生 2:白名单学生)
+    */
+    @ApiModelProperty("使用范围(1:全部学生 2:白名单学生)")
+    private Integer useRange;
+
+    /**
+    * xjrMenuGroup
+    */
+    @ApiModelProperty("xjrMenuGroup子表")
+    private List<AddXjrMenuGroupDto> xjrMenuGroupList;
+}

+ 24 - 0
src/main/java/com/xjrsoft/module/system/dto/UpdateXjrMenuGroupSetDto.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.system.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+
+/**
+* @title: 功能分类设置
+* @Author dzx
+* @Date: 2024-08-09
+* @Version 1.0
+*/
+@Data
+public class UpdateXjrMenuGroupSetDto extends AddXjrMenuGroupSetDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+}

+ 21 - 0
src/main/java/com/xjrsoft/module/system/dto/XjrMenuGroupMenuListDto.java

@@ -0,0 +1,21 @@
+package com.xjrsoft.module.system.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 功能分类设置分页查询入参
+* @Author dzx
+* @Date: 2024-08-09
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class XjrMenuGroupMenuListDto extends PageInput {
+
+    @ApiModelProperty("功能分类设置id")
+    private Long xjrMenuGroupSetId;
+}

+ 19 - 0
src/main/java/com/xjrsoft/module/system/dto/XjrMenuGroupSetPageDto.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.system.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 功能分类设置分页查询入参
+* @Author dzx
+* @Date: 2024-08-09
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class XjrMenuGroupSetPageDto extends PageInput {
+
+
+}

+ 84 - 0
src/main/java/com/xjrsoft/module/system/entity/XjrMenuGroup.java

@@ -0,0 +1,84 @@
+package com.xjrsoft.module.system.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+* @title: 功能分类设置菜单关联表
+* @Author dzx
+* @Date: 2024-08-09
+* @Version 1.0
+*/
+@Data
+@TableName("xjr_menu_group")
+@ApiModel(value = "xjr_menu_group", description = "功能分类设置菜单关联表")
+public class XjrMenuGroup implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改日期
+    */
+    @ApiModelProperty("修改日期")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标记
+    */
+    @ApiModelProperty("有效标记")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 菜单id(xjr_menu)
+    */
+    @ApiModelProperty("菜单id(xjr_menu)")
+    private Long xjrMenuId;
+    /**
+    * 功能分类设置(xjr_menu_group_set)
+    */
+    @ApiModelProperty("功能分类设置(xjr_menu_group_set)")
+    private Long xjrMenuGroupSetId;
+
+
+}

+ 98 - 0
src/main/java/com/xjrsoft/module/system/entity/XjrMenuGroupSet.java

@@ -0,0 +1,98 @@
+package com.xjrsoft.module.system.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+* @title: 功能分类设置
+* @Author dzx
+* @Date: 2024-08-09
+* @Version 1.0
+*/
+@Data
+@TableName("xjr_menu_group_set")
+@ApiModel(value = "xjr_menu_group_set", description = "功能分类设置")
+public class XjrMenuGroupSet implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改日期
+    */
+    @ApiModelProperty("修改日期")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标记
+    */
+    @ApiModelProperty("有效标记")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 功能分类名称
+    */
+    @ApiModelProperty("功能分类名称")
+    private String name;
+    /**
+    * 分组代码(xjr_dictionary_item[xjr_menu_group])
+    */
+    @ApiModelProperty("分组代码(xjr_dictionary_item[xjr_menu_group])")
+    private String code;
+    /**
+    * 使用范围(1:全部学生 2:白名单学生)
+    */
+    @ApiModelProperty("使用范围(1:全部学生 2:白名单学生)")
+    private Integer useRange;
+
+    /**
+    * xjrMenuGroup
+    */
+    @ApiModelProperty("xjrMenuGroup子表")
+    @TableField(exist = false)
+    @EntityMapping(thisField = "id", joinField = "xjrMenuGroupSetId")
+    private List<XjrMenuGroup> xjrMenuGroupList;
+
+}

+ 22 - 0
src/main/java/com/xjrsoft/module/system/mapper/XjrMenuGroupMapper.java

@@ -0,0 +1,22 @@
+package com.xjrsoft.module.system.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.system.dto.XjrMenuGroupMenuListDto;
+import com.xjrsoft.module.system.entity.XjrMenuGroup;
+import com.xjrsoft.module.system.vo.XjrMenuGroupMenuListVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @title: 功能分类设置菜单关联表
+* @Author dzx
+* @Date: 2024-08-09
+* @Version 1.0
+*/
+@Mapper
+public interface XjrMenuGroupMapper extends MPJBaseMapper<XjrMenuGroup> {
+
+    List<XjrMenuGroupMenuListVo> getMenuList(@Param("dto")XjrMenuGroupMenuListDto dto);
+}

+ 16 - 0
src/main/java/com/xjrsoft/module/system/mapper/XjrMenuGroupSetMapper.java

@@ -0,0 +1,16 @@
+package com.xjrsoft.module.system.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.system.entity.XjrMenuGroupSet;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 功能分类设置
+* @Author dzx
+* @Date: 2024-08-09
+* @Version 1.0
+*/
+@Mapper
+public interface XjrMenuGroupSetMapper extends MPJBaseMapper<XjrMenuGroupSet> {
+
+}

+ 46 - 0
src/main/java/com/xjrsoft/module/system/service/IXjrMenuGroupSetService.java

@@ -0,0 +1,46 @@
+package com.xjrsoft.module.system.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.system.dto.AddXjrMenuGroupDto;
+import com.xjrsoft.module.system.dto.XjrMenuGroupMenuListDto;
+import com.xjrsoft.module.system.entity.XjrMenuGroupSet;
+import com.xjrsoft.module.system.vo.XjrMenuGroupMenuListVo;
+
+import java.util.List;
+
+/**
+* @title: 功能分类设置
+* @Author dzx
+* @Date: 2024-08-09
+* @Version 1.0
+*/
+
+public interface IXjrMenuGroupSetService extends MPJBaseService<XjrMenuGroupSet> {
+    /**
+    * 新增
+    *
+    * @param xjrMenuGroupSet
+    * @return
+    */
+    Boolean add(XjrMenuGroupSet xjrMenuGroupSet);
+
+    /**
+    * 更新
+    *
+    * @param xjrMenuGroupSet
+    * @return
+    */
+    Boolean update(XjrMenuGroupSet xjrMenuGroupSet);
+
+    /**
+    * 删除
+    *
+    * @param ids
+    * @return
+    */
+    Boolean delete(List<Long> ids);
+
+    List<XjrMenuGroupMenuListVo> getMenuList(XjrMenuGroupMenuListDto dto);
+
+    Boolean setMenu(AddXjrMenuGroupDto dto);
+}

+ 116 - 0
src/main/java/com/xjrsoft/module/system/service/impl/XjrMenuGroupSetServiceImpl.java

@@ -0,0 +1,116 @@
+package com.xjrsoft.module.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.system.dto.AddXjrMenuGroupDto;
+import com.xjrsoft.module.system.dto.XjrMenuGroupMenuListDto;
+import com.xjrsoft.module.system.entity.XjrMenuGroup;
+import com.xjrsoft.module.system.entity.XjrMenuGroupSet;
+import com.xjrsoft.module.system.mapper.XjrMenuGroupMapper;
+import com.xjrsoft.module.system.mapper.XjrMenuGroupSetMapper;
+import com.xjrsoft.module.system.service.IXjrMenuGroupSetService;
+import com.xjrsoft.module.system.vo.XjrMenuGroupMenuListVo;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+* @title: 功能分类设置
+* @Author dzx
+* @Date: 2024-08-09
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class XjrMenuGroupSetServiceImpl extends MPJBaseServiceImpl<XjrMenuGroupSetMapper, XjrMenuGroupSet> implements IXjrMenuGroupSetService {
+    private final XjrMenuGroupSetMapper setMapper;
+
+    private final XjrMenuGroupMapper groupMapper;
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean add(XjrMenuGroupSet xjrMenuGroupSet) {
+        setMapper.insert(xjrMenuGroupSet);
+        for (XjrMenuGroup xjrMenuGroup : xjrMenuGroupSet.getXjrMenuGroupList()) {
+            xjrMenuGroup.setXjrMenuGroupSetId(xjrMenuGroupSet.getId());
+            groupMapper.insert(xjrMenuGroup);
+        }
+
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean update(XjrMenuGroupSet xjrMenuGroupSet) {
+        setMapper.updateById(xjrMenuGroupSet);
+        //********************************* XjrMenuGroup  增删改  开始 *******************************************/
+        {
+            // 查出所有子级的id
+            List<XjrMenuGroup> xjrMenuGroupList = groupMapper.selectList(Wrappers.lambdaQuery(XjrMenuGroup.class).eq(XjrMenuGroup::getXjrMenuGroupSetId, xjrMenuGroupSet.getId()).select(XjrMenuGroup::getId));
+            List<Long> xjrMenuGroupIds = xjrMenuGroupList.stream().map(XjrMenuGroup::getId).collect(Collectors.toList());
+            //原有子表单 没有被删除的主键
+            List<Long> xjrMenuGroupOldIds = xjrMenuGroupSet.getXjrMenuGroupList().stream().map(XjrMenuGroup::getId).filter(Objects::nonNull).collect(Collectors.toList());
+            //找到需要删除的id
+            List<Long> xjrMenuGroupRemoveIds = xjrMenuGroupIds.stream().filter(item -> !xjrMenuGroupOldIds.contains(item)).collect(Collectors.toList());
+
+            for (XjrMenuGroup xjrMenuGroup : xjrMenuGroupSet.getXjrMenuGroupList()) {
+                //如果不等于空则修改
+                if (xjrMenuGroup.getId() != null) {
+                    groupMapper.updateById(xjrMenuGroup);
+                }
+                //如果等于空 则新增
+                else {
+                    //已经不存在的id 删除
+                    xjrMenuGroup.setXjrMenuGroupSetId(xjrMenuGroupSet.getId());
+                    groupMapper.insert(xjrMenuGroup);
+                }
+            }
+            //已经不存在的id 删除
+            if(xjrMenuGroupRemoveIds.size() > 0){
+                groupMapper.deleteBatchIds(xjrMenuGroupRemoveIds);
+            }
+        }
+        //********************************* XjrMenuGroup  增删改  结束 *******************************************/
+
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean delete(List<Long> ids) {
+        setMapper.deleteBatchIds(ids);
+        groupMapper.delete(Wrappers.lambdaQuery(XjrMenuGroup.class).in(XjrMenuGroup::getXjrMenuGroupSetId, ids));
+
+        return true;
+    }
+
+    @Override
+    public List<XjrMenuGroupMenuListVo> getMenuList(XjrMenuGroupMenuListDto dto) {
+        return groupMapper.getMenuList(dto);
+    }
+
+    @Override
+    public Boolean setMenu(AddXjrMenuGroupDto dto) {
+        groupMapper.delete(
+                new QueryWrapper<XjrMenuGroup>().lambda()
+                        .eq(XjrMenuGroup::getXjrMenuGroupSetId, dto.getXjrMenuGroupSetId())
+        );
+        for (Long xjrMenuId : dto.getXjrMenuIds()) {
+            groupMapper.insert(
+                    new XjrMenuGroup(){{
+                        setCreateDate(new Date());
+                        setXjrMenuId(xjrMenuId);
+                        setXjrMenuGroupSetId(dto.getXjrMenuGroupSetId());
+                    }}
+            );
+        }
+        return true;
+    }
+}

+ 29 - 0
src/main/java/com/xjrsoft/module/system/vo/XjrMenuGroupMenuListVo.java

@@ -0,0 +1,29 @@
+package com.xjrsoft.module.system.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 功能分类设置菜单关联表表单出参
+* @Author dzx
+* @Date: 2024-08-09
+* @Version 1.0
+*/
+@Data
+public class XjrMenuGroupMenuListVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("菜单id(xjr_menu)")
+    private Long id;
+    /**
+    * 菜单id(xjr_menu)
+    */
+    @ApiModelProperty("菜单名称")
+    private String name;
+
+    @ApiModelProperty("是否被选择(1:是 0:否)")
+    private Integer isSelected;
+
+}

+ 68 - 0
src/main/java/com/xjrsoft/module/system/vo/XjrMenuGroupSetPageVo.java

@@ -0,0 +1,68 @@
+package com.xjrsoft.module.system.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 功能分类设置分页列表出参
+* @Author dzx
+* @Date: 2024-08-09
+* @Version 1.0
+*/
+@Data
+public class XjrMenuGroupSetPageVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    private Long modifyUserId;
+    /**
+    * 修改日期
+    */
+    @ApiModelProperty("修改日期")
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    private Integer deleteMark;
+    /**
+    * 有效标记
+    */
+    @ApiModelProperty("有效标记")
+    private Integer enabledMark;
+    /**
+    * 功能分类名称
+    */
+    @ApiModelProperty("功能分类名称")
+    private String name;
+    /**
+    * 分组代码(xjr_dictionary_item[xjr_menu_group])
+    */
+    @ApiModelProperty("分组代码(xjr_dictionary_item[xjr_menu_group])")
+    private String code;
+    /**
+    * 使用范围(1:全部学生 2:白名单学生)
+    */
+    @ApiModelProperty("使用范围(1:全部学生 2:白名单学生)")
+    private Integer useRange;
+
+}

+ 45 - 0
src/main/java/com/xjrsoft/module/system/vo/XjrMenuGroupSetVo.java

@@ -0,0 +1,45 @@
+package com.xjrsoft.module.system.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+* @title: 功能分类设置表单出参
+* @Author dzx
+* @Date: 2024-08-09
+* @Version 1.0
+*/
+@Data
+public class XjrMenuGroupSetVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+    /**
+    * 功能分类名称
+    */
+    @ApiModelProperty("功能分类名称")
+    private String name;
+    /**
+    * 分组代码(xjr_dictionary_item[xjr_menu_group])
+    */
+    @ApiModelProperty("分组代码(xjr_dictionary_item[xjr_menu_group])")
+    private String code;
+    /**
+    * 使用范围(1:全部学生 2:白名单学生)
+    */
+    @ApiModelProperty("使用范围(1:全部学生 2:白名单学生)")
+    private Integer useRange;
+
+
+    /**
+    * xjrMenuGroup
+    */
+    @ApiModelProperty("xjrMenuGroup子表")
+    private List<XjrMenuGroupVo> xjrMenuGroupList;
+
+}

+ 33 - 0
src/main/java/com/xjrsoft/module/system/vo/XjrMenuGroupVo.java

@@ -0,0 +1,33 @@
+package com.xjrsoft.module.system.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 功能分类设置菜单关联表表单出参
+* @Author dzx
+* @Date: 2024-08-09
+* @Version 1.0
+*/
+@Data
+public class XjrMenuGroupVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+    /**
+    * 菜单id(xjr_menu)
+    */
+    @ApiModelProperty("菜单id(xjr_menu)")
+    private Long xjrMenuId;
+    /**
+    * 功能分类设置(xjr_menu_group_set)
+    */
+    @ApiModelProperty("功能分类设置(xjr_menu_group_set)")
+    private Long xjrMenuGroupSetId;
+
+
+
+}

+ 3 - 0
src/main/resources/mapper/organization/UserMapper.xml

@@ -30,6 +30,9 @@
         <if test="dto.keyword != null and dto.keyword != ''">
             AND (t1.name like concat('%', #{dto.keyword}, '%') OR t1.credential_number like concat('%', #{dto.keyword}, '%'))
         </if>
+        <if test="dto.name != null and dto.name != '' and dto.idNumber != null and dto.idNumber != ''">
+            AND t1.name = #{dto.name} and t1.credential_number = #{dto.idNumber}
+        </if>
         <if test="dto.userId != null">
             AND t1.id = #{dto.userId}
         </if>

+ 14 - 0
src/main/resources/mapper/system/XjrMenuGroupMapper.xml

@@ -0,0 +1,14 @@
+<?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.xjrsoft.module.system.mapper.XjrMenuGroupMapper">
+    <select id="getMenuList" parameterType="" resultType="com.xjrsoft.module.system.vo.XjrMenuGroupMenuListVo">
+        SELECT id, NAME (
+            SELECT COUNT(*) FROM xjr_menu_group WHERE delete_mark = 0 AND xjr_menu_group_set_id =
+            AND xjr_menu_id = xjr_menu.id
+        ) AS is_selected FROM xjr_menu WHERE system_id = 1726806691140907010
+        AND delete_mark = 0 AND enabled_mark = 1
+        and system_type = 'system_app'
+    </select>
+</mapper>

+ 34 - 0
src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

@@ -3632,4 +3632,38 @@ public class FreeMarkerGeneratorTest {
 
         apiGeneratorService.generateCodes(params);
     }
+
+    @Test
+    public void gcSysMenuGroup() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("xjr_menu_group_set");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        mainTable = new TableConfig();
+        mainTable.setTableName("xjr_menu_group");//init_sql中的表名
+        mainTable.setIsMain(false);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        mainTable.setRelationField("xjr_menu_group_set_id");//设置外键
+        mainTable.setRelationTableField(GlobalConstant.DEFAULT_PK);//设置外键
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("dzx");//作者名称
+        params.setPackageName("system");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
 }