Przeglądaj źródła

自定义流程接口-新增角色组成员接口

wangliang 3 lat temu
rodzic
commit
1e21b508dc

+ 69 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/SysRoleGroupMemberController.java

@@ -0,0 +1,69 @@
+package com.qmth.distributed.print.api;
+
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.boot.api.annotation.BOOL;
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
+import com.qmth.teachcloud.common.bean.params.SysRoleGroupMemberMatchParams;
+import com.qmth.teachcloud.common.bean.params.SysRoleGroupMemberParams;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysRoleGroupMember;
+import com.qmth.teachcloud.common.service.SysRoleGroupMemberService;
+import com.qmth.teachcloud.common.util.Result;
+import com.qmth.teachcloud.common.util.ResultUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+/**
+ * <p>
+ * 角色组成员表 前端控制器
+ * </p>
+ *
+ * @author wangliang
+ * @since 2022-03-08
+ */
+@Api(tags = "角色组成员Controller")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.sys}/role/group")
+@Validated
+@Aac(auth = BOOL.FALSE, strict = BOOL.FALSE)
+public class SysRoleGroupMemberController {
+
+    @Resource
+    SysRoleGroupMemberService sysRoleGroupMemberService;
+
+    @ApiOperation(value = "新增/修改")
+    @ApiResponses({@ApiResponse(code = 200, message = "常规信息", response = ResultUtil.class)})
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    public Result save(@Valid @RequestBody SysRoleGroupMemberParams roleGroupMemberParams, BindingResult bindingResult) {
+        if (bindingResult.hasErrors()) {
+            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+        }
+        return ResultUtil.ok(sysRoleGroupMemberService.saveOrUpdate(roleGroupMemberParams));
+    }
+
+    @ApiOperation(value = "查询")
+    @ApiResponses({@ApiResponse(code = 200, message = "角色组成员信息", response = SysRoleGroupMember.class)})
+    @RequestMapping(value = "/list", method = RequestMethod.POST)
+    public Result list(@RequestParam(value = "roleId") String roleId) {
+        return ResultUtil.ok(sysRoleGroupMemberService.findByRoleId(SystemConstant.convertIdToLong(roleId)));
+    }
+
+    @ApiOperation(value = "匹配查询")
+    @ApiResponses({@ApiResponse(code = 200, message = "用户信息", response = ApproveUserResult.class)})
+    @RequestMapping(value = "/match/list", method = RequestMethod.POST)
+    public Result matchList(@Valid @RequestBody SysRoleGroupMemberMatchParams roleGroupMemberMatchParams, BindingResult bindingResult) {
+        if (bindingResult.hasErrors()) {
+            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+        }
+        return ResultUtil.ok(sysRoleGroupMemberService.matchList(roleGroupMemberMatchParams));
+    }
+}

+ 66 - 0
teachcloud-common-api/src/main/java/com/qmth/teachcloud/common/api/api/SysRoleGroupMemberController.java

@@ -0,0 +1,66 @@
+//package com.qmth.teachcloud.common.api.api;
+//
+//import com.qmth.boot.api.constant.ApiConstant;
+//import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
+//import com.qmth.teachcloud.common.bean.params.SysRoleGroupMemberMatchParams;
+//import com.qmth.teachcloud.common.bean.params.SysRoleGroupMemberParams;
+//import com.qmth.teachcloud.common.contant.SystemConstant;
+//import com.qmth.teachcloud.common.entity.SysRoleGroupMember;
+//import com.qmth.teachcloud.common.service.SysRoleGroupMemberService;
+//import com.qmth.teachcloud.common.util.Result;
+//import com.qmth.teachcloud.common.util.ResultUtil;
+//import io.swagger.annotations.Api;
+//import io.swagger.annotations.ApiOperation;
+//import io.swagger.annotations.ApiResponse;
+//import io.swagger.annotations.ApiResponses;
+//import org.springframework.validation.BindingResult;
+//import org.springframework.validation.annotation.Validated;
+//import org.springframework.web.bind.annotation.*;
+//
+//import javax.annotation.Resource;
+//import javax.validation.Valid;
+//
+///**
+// * <p>
+// * 角色组成员表 前端控制器
+// * </p>
+// *
+// * @author wangliang
+// * @since 2022-03-08
+// */
+//@Api(tags = "角色组成员Controller")
+//@RestController
+//@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.sys}/role/group")
+//@Validated
+//public class SysRoleGroupMemberController {
+//
+//    @Resource
+//    SysRoleGroupMemberService sysRoleGroupMemberService;
+//
+//    @ApiOperation(value = "新增/修改")
+//    @ApiResponses({@ApiResponse(code = 200, message = "常规信息", response = ResultUtil.class)})
+//    @RequestMapping(value = "/save", method = RequestMethod.POST)
+//    public Result save(@Valid @RequestBody SysRoleGroupMemberParams roleGroupMemberParams, BindingResult bindingResult) {
+//        if (bindingResult.hasErrors()) {
+//            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+//        }
+//        return ResultUtil.ok(sysRoleGroupMemberService.saveOrUpdate(roleGroupMemberParams));
+//    }
+//
+//    @ApiOperation(value = "查询")
+//    @ApiResponses({@ApiResponse(code = 200, message = "角色组成员信息", response = SysRoleGroupMember.class)})
+//    @RequestMapping(value = "/list", method = RequestMethod.POST)
+//    public Result list(@RequestParam(value = "roleId") String roleId) {
+//        return ResultUtil.ok(sysRoleGroupMemberService.findByRoleId(SystemConstant.convertIdToLong(roleId)));
+//    }
+//
+//    @ApiOperation(value = "匹配查询")
+//    @ApiResponses({@ApiResponse(code = 200, message = "用户信息", response = ApproveUserResult.class)})
+//    @RequestMapping(value = "/match/list", method = RequestMethod.POST)
+//    public Result matchList(@Valid @RequestBody SysRoleGroupMemberMatchParams roleGroupMemberMatchParams, BindingResult bindingResult) {
+//        if (bindingResult.hasErrors()) {
+//            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+//        }
+//        return ResultUtil.ok(sysRoleGroupMemberService.matchList(roleGroupMemberMatchParams));
+//    }
+//}

+ 62 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/SysRoleGroupMemberMatchParams.java

@@ -0,0 +1,62 @@
+package com.qmth.teachcloud.common.bean.params;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 角色组成员params
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/3/8
+ */
+public class SysRoleGroupMemberMatchParams implements Serializable {
+
+    @ApiModelProperty(value = "流程节点数据组")
+    @NotEmpty(message = "流程节点数据组不能为空")
+    private Map<String, SysRoleGroupMemberMatch> flowRoleGroupMemberMatchMap;
+
+    public Map<String, SysRoleGroupMemberMatch> getFlowRoleGroupMemberMatchMap() {
+        return flowRoleGroupMemberMatchMap;
+    }
+
+    public void setFlowRoleGroupMemberMatchMap(Map<String, SysRoleGroupMemberMatch> flowRoleGroupMemberMatchMap) {
+        this.flowRoleGroupMemberMatchMap = flowRoleGroupMemberMatchMap;
+    }
+
+    public class SysRoleGroupMemberMatch implements Serializable {
+
+        @ApiModelProperty(value = "角色id组")
+        @JsonSerialize(using = ToStringSerializer.class)
+        @NotEmpty(message = "角色id组不能为空")
+        private List<Long> roleIdList;
+
+        @ApiModelProperty(value = "用户id")
+        @JsonSerialize(using = ToStringSerializer.class)
+        @NotNull(message = "用户id不能为空")
+        private Long userId;
+
+        public List<Long> getRoleIdList() {
+            return roleIdList;
+        }
+
+        public void setRoleIdList(List<Long> roleIdList) {
+            this.roleIdList = roleIdList;
+        }
+
+        public Long getUserId() {
+            return userId;
+        }
+
+        public void setUserId(Long userId) {
+            this.userId = userId;
+        }
+    }
+}

+ 46 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/SysRoleGroupMemberParams.java

@@ -0,0 +1,46 @@
+package com.qmth.teachcloud.common.bean.params;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description: 角色组成员params
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/3/8
+ */
+public class SysRoleGroupMemberParams implements Serializable {
+
+    @ApiModelProperty(value = "角色id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @NotNull(message = "角色id不能为空")
+    private Long roleId;
+
+    @ApiModelProperty(value = "用户id组")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @NotEmpty(message = "用户id组不能为空")
+    private List<Long> userIdList;
+
+    public Long getRoleId() {
+        return roleId;
+    }
+
+    public void setRoleId(Long roleId) {
+        this.roleId = roleId;
+    }
+
+    public List<Long> getUserIdList() {
+        return userIdList;
+    }
+
+    public void setUserIdList(List<Long> userIdList) {
+        this.userIdList = userIdList;
+    }
+}

+ 80 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/SysRoleGroupMember.java

@@ -0,0 +1,80 @@
+package com.qmth.teachcloud.common.entity;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 角色组成员表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2022-03-08
+ */
+@ApiModel(value = "SysRoleGroupMember对象", description = "角色组成员表")
+public class SysRoleGroupMember implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    @ApiModelProperty(value = "角色id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long roleId;
+
+    @ApiModelProperty(value = "用户id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long userId;
+
+    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
+    private Boolean enable;
+
+    public SysRoleGroupMember() {
+
+    }
+
+    public SysRoleGroupMember(Long roleId, Long userId) {
+        this.id = SystemConstant.getDbUuid();
+        this.roleId = roleId;
+        this.userId = userId;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getRoleId() {
+        return roleId;
+    }
+
+    public void setRoleId(Long roleId) {
+        this.roleId = roleId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+}

+ 16 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysRoleGroupMemberMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.teachcloud.common.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.teachcloud.common.entity.SysRoleGroupMember;
+
+/**
+ * <p>
+ * 角色组成员表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2022-03-08
+ */
+public interface SysRoleGroupMemberMapper extends BaseMapper<SysRoleGroupMember> {
+
+}

+ 3 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysUserMapper.java

@@ -101,6 +101,9 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      */
     List<SysUser> findByRoleIds(@Param("roleIds") List<Long> roleIds);
 
+    List<ApproveUserResult> findByRoleIdsForResult(@Param("roleIds") List<Long> roleIds);
+
+
     /**
      * 根据学校id查找用户
      * @param schoolId 学校id

+ 45 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysRoleGroupMemberService.java

@@ -0,0 +1,45 @@
+package com.qmth.teachcloud.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
+import com.qmth.teachcloud.common.bean.params.SysRoleGroupMemberMatchParams;
+import com.qmth.teachcloud.common.bean.params.SysRoleGroupMemberParams;
+import com.qmth.teachcloud.common.entity.SysRoleGroupMember;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 角色组成员表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2022-03-08
+ */
+public interface SysRoleGroupMemberService extends IService<SysRoleGroupMember> {
+
+    /**
+     * 保存或修改
+     *
+     * @param roleGroupMemberParams
+     * @return
+     */
+    public boolean saveOrUpdate(SysRoleGroupMemberParams roleGroupMemberParams);
+
+    /**
+     * 根据roleId查找数据
+     *
+     * @param roleId
+     * @return
+     */
+    public List<SysRoleGroupMember> findByRoleId(Long roleId);
+
+    /**
+     * 流程数据组匹配查询
+     *
+     * @param roleGroupMemberMatchParams
+     * @return
+     */
+    public Map<String, List<ApproveUserResult>> matchList(SysRoleGroupMemberMatchParams roleGroupMemberMatchParams);
+}

+ 9 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java

@@ -216,6 +216,14 @@ public interface SysUserService extends IService<SysUser> {
      */
     List<SysUser> findByRoleIds(List<Long> roleIds);
 
+    /**
+     * 根据角色ids查找用户
+     *
+     * @param roleIds
+     * @return
+     */
+    List<ApproveUserResult> findByRoleIdsForResult(List<Long> roleIds);
+
     /**
      * 根据用户id查找该用户所属的机构集合
      *
@@ -234,6 +242,7 @@ public interface SysUserService extends IService<SysUser> {
 
     /**
      * 查找机构树下所有用户集合
+     *
      * @return 用户集合
      */
     List<SysUserResult> findSysUserResultList();

+ 107 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysRoleGroupMemberServiceImpl.java

@@ -0,0 +1,107 @@
+package com.qmth.teachcloud.common.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
+import com.qmth.teachcloud.common.bean.params.SysRoleGroupMemberMatchParams;
+import com.qmth.teachcloud.common.bean.params.SysRoleGroupMemberParams;
+import com.qmth.teachcloud.common.entity.SysRoleGroupMember;
+import com.qmth.teachcloud.common.mapper.SysRoleGroupMemberMapper;
+import com.qmth.teachcloud.common.service.SysRoleGroupMemberService;
+import com.qmth.teachcloud.common.service.SysUserService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 角色组成员表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2022-03-08
+ */
+@Service
+public class SysRoleGroupMemberServiceImpl extends ServiceImpl<SysRoleGroupMemberMapper, SysRoleGroupMember> implements SysRoleGroupMemberService {
+
+    @Resource
+    SysUserService sysUserService;
+
+    /**
+     * boolean
+     *
+     * @param roleGroupMemberParams
+     * @return
+     */
+    @Override
+    @Transactional
+    public boolean saveOrUpdate(SysRoleGroupMemberParams roleGroupMemberParams) {
+        //先查询数据库里的数据
+        List<SysRoleGroupMember> sysRoleGroupMemberDbList = this.findByRoleId(roleGroupMemberParams.getRoleId());
+        List<SysRoleGroupMember> sysRoleGroupMemberList = null;
+        List<Long> userIdList = roleGroupMemberParams.getUserIdList();
+        if (Objects.nonNull(sysRoleGroupMemberDbList) && sysRoleGroupMemberDbList.size() > 0) {//编辑
+            int count = (int) sysRoleGroupMemberDbList.stream().filter(s -> userIdList.contains(s.getUserId())).count();
+            if (count != sysRoleGroupMemberDbList.size() || userIdList.size() != sysRoleGroupMemberDbList.size()) {
+                //全量删除
+                this.removeByIds(sysRoleGroupMemberDbList.stream().map(s -> s.getId()).collect(Collectors.toList()));
+                sysRoleGroupMemberList = new ArrayList<>();
+                for (Long l : userIdList) {
+                    sysRoleGroupMemberList.add(new SysRoleGroupMember(roleGroupMemberParams.getRoleId(), l));
+                }
+            }
+        } else {
+            sysRoleGroupMemberList = new ArrayList<>();
+            for (Long l : userIdList) {
+                sysRoleGroupMemberList.add(new SysRoleGroupMember(roleGroupMemberParams.getRoleId(), l));
+            }
+        }
+        if (Objects.nonNull(sysRoleGroupMemberList)) {
+            this.saveBatch(sysRoleGroupMemberList);
+        }
+        return true;
+    }
+
+    /**
+     * 根据roleId查找数据
+     *
+     * @param roleId
+     * @return
+     */
+    @Override
+    public List<SysRoleGroupMember> findByRoleId(Long roleId) {
+        QueryWrapper<SysRoleGroupMember> sysRoleGroupMemberQueryWrapper = new QueryWrapper<>();
+        sysRoleGroupMemberQueryWrapper.lambda().eq(SysRoleGroupMember::getRoleId, roleId);
+        return this.list(sysRoleGroupMemberQueryWrapper);
+    }
+
+    /**
+     * 流程数据组匹配查询
+     *
+     * @param roleGroupMemberMatchParams
+     * @return
+     */
+    @Override
+    public Map<String, List<ApproveUserResult>> matchList(SysRoleGroupMemberMatchParams roleGroupMemberMatchParams) {
+        Map<String, SysRoleGroupMemberMatchParams.SysRoleGroupMemberMatch> map = roleGroupMemberMatchParams.getFlowRoleGroupMemberMatchMap();
+        map.forEach((k, v) -> {
+            List<Long> roleIdList = v.getRoleIdList();
+            Map<Long, Long> roleIdMap = roleIdList.stream().collect(
+                    Collectors.toMap(s -> s, Function.identity(), (dto1, dto2) -> dto1));
+
+            //查询该角色下的用户
+            List<ApproveUserResult> approveUserResultList = sysUserService.findByRoleIdsForResult(roleIdList);
+            Long userId = v.getUserId();
+            Map<Long, ApproveUserResult> approveUserResultMap = new HashMap<>();
+            for (ApproveUserResult a : approveUserResultList) {
+                if (a.getId().longValue() == userId.longValue()) {
+                }
+            }
+        });
+        return null;
+    }
+}

+ 11 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -1051,6 +1051,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return sysUserMapper.findByRoleIds(roleIds);
     }
 
+    /**
+     * 根据角色ids查找用户
+     *
+     * @param roleIds
+     * @return
+     */
+    @Override
+    public List<ApproveUserResult> findByRoleIdsForResult(List<Long> roleIds) {
+        return sysUserMapper.findByRoleIdsForResult(roleIds);
+    }
+
     @Override
     public List<Long> findOrgIdListByUserId(Long userId) {
         List<Long> orgIdList = new ArrayList<>();

+ 5 - 0
teachcloud-common/src/main/resources/mapper/SysRoleGroupMemberMapper.xml

@@ -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.qmth.teachcloud.common.mapper.SysRoleGroupMemberMapper">
+
+</mapper>

+ 15 - 0
teachcloud-common/src/main/resources/mapper/SysUserMapper.xml

@@ -247,6 +247,21 @@
         </where>
     </select>
 
+    <select id="findByRoleIdsForResult" resultType="com.qmth.teachcloud.common.bean.params.ApproveUserResult">
+        <include refid="approveUserResultHeaderCommon" />
+        join sys_role sr on sr.id = sur.role_id
+        <where>
+            <if test="roleIds != null">
+                AND sr.id IN
+                <foreach collection="roleIds" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            and su.enable = 1
+            and sr.enable = 1
+        </where>
+    </select>
+
     <select id="findVerifyCodeByUser" resultType="com.qmth.teachcloud.common.bean.dto.VerifyCodeCheckDto">
         SELECT
             id,