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