package jnpf.permission.mapper; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.google.common.collect.Lists; import jnpf.base.mapper.SuperMapper; import jnpf.constant.PermissionConst; import jnpf.permission.entity.UserRelationEntity; import jnpf.util.RandomUtil; import jnpf.util.StringUtil; import jnpf.util.UserProvider; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; /** * 用户关系 * * @author JNPF开发平台组 * @version V3.1.0 * @copyright 引迈信息技术有限公司 * @date 2019年9月26日 上午9:18 */ public interface UserRelationMapper extends SuperMapper { default List getListByUserId(String userId) { return getListByUserIdAll(Collections.singletonList(userId)); } default List getListByUserIdAndObjType(String userId, String objectType) { QueryWrapper query = new QueryWrapper<>(); query.lambda().in(UserRelationEntity::getUserId, userId); query.lambda().in(UserRelationEntity::getObjectType, objectType); query.lambda().orderByAsc(UserRelationEntity::getSortCode).orderByDesc(UserRelationEntity::getCreatorTime); return this.selectList(query); } default List getListByUserIdAll(List userId) { if (userId.size() > 0) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().in(UserRelationEntity::getUserId, userId); return this.selectList(queryWrapper); } return new ArrayList<>(); } default List getListByObjectId(String objectId) { return getListByObjectId(objectId, null); } default List getListByObjectType(String objectType) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(UserRelationEntity::getObjectType, objectType); return this.selectList(queryWrapper); } default List getListByObjectId(String objectId, String objectType) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(UserRelationEntity::getObjectId, objectId); if (objectType != null) { queryWrapper.lambda().eq(UserRelationEntity::getObjectType, objectType); } queryWrapper.lambda().orderByAsc(UserRelationEntity::getSortCode).orderByDesc(UserRelationEntity::getCreatorTime); return this.selectList(queryWrapper); } default List getListByObjectIdAll(List objectId) { List list = new ArrayList<>(); if (objectId.size() > 0) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().in(UserRelationEntity::getObjectId, objectId); list = this.selectList(queryWrapper); } return list; } default void deleteAllByObjId(String objId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(UserRelationEntity::getObjectId, objId); this.deleteByIds(selectList(queryWrapper)); } default void deleteAllByUserId(List userId) { if (CollectionUtil.isEmpty(userId)) { return; } QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().in(UserRelationEntity::getUserId, userId); this.deleteByIds(selectList(queryWrapper)); } default UserRelationEntity getInfo(String id) { return this.selectById(id); } default void save(String objectId, List entitys) { List existList = this.getListByObjectId(objectId); List relationList = new ArrayList<>(); for (int i = 0; i < entitys.size(); i++) { UserRelationEntity entity = entitys.get(i); entity.setId(RandomUtil.uuId()); entity.setSortCode(Long.parseLong(i + "")); entity.setCreatorUserId(UserProvider.getUser().getUserId()); if (existList.stream().filter(t -> t.getUserId().equals(entity.getUserId())).count() == 0) { relationList.add(entity); } } for (UserRelationEntity entity : relationList) { this.insert(entity); } } default void save(List list) { for (UserRelationEntity entity : list) { this.insert(entity); } } default List getRelationByUserIds(List userIds) { if (userIds.size() == 0) { return new ArrayList<>(); } QueryWrapper query = new QueryWrapper<>(); query.lambda().in(UserRelationEntity::getUserId, userIds); return this.selectList(query); } default List getListByObjectType(String userId, String objectType) { QueryWrapper query = new QueryWrapper<>(); query.lambda().eq(UserRelationEntity::getUserId, userId); if (StringUtil.isNotEmpty(objectType)) { query.lambda().eq(UserRelationEntity::getObjectType, objectType); } query.lambda().orderByAsc(UserRelationEntity::getSortCode).orderByDesc(UserRelationEntity::getCreatorTime); return this.selectList(query); } default List getAllOrgRelationByUserId(String userId) { return this.getListByObjectType(userId, PermissionConst.ORGANIZE); } default Boolean existByObj(String objectType, String objectId) { return existByObj(objectType, Arrays.asList(objectId)); } default Boolean existByObj(String objectType, List objectId) { if (CollectionUtil.isEmpty(objectId)) return false; QueryWrapper query = new QueryWrapper<>(); query.lambda() .eq(UserRelationEntity::getObjectType, objectType) .in(UserRelationEntity::getObjectId, objectId); return this.selectCount(query) > 0; } default List getListByUserId(String userId, String objectType) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(UserRelationEntity::getUserId, userId); queryWrapper.lambda().eq(UserRelationEntity::getObjectType, objectType); return this.selectList(queryWrapper); } default List getListByOrgId(List orgIdList) { if (CollectionUtil.isNotEmpty(orgIdList)) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(UserRelationEntity::getObjectType, PermissionConst.ORGANIZE); List> lists = Lists.partition(orgIdList, 1000); queryWrapper.lambda().and(t -> { for (List ids : lists) { t.or().in(UserRelationEntity::getObjectId, ids); } }); return this.selectList(queryWrapper); } return new ArrayList<>(); } default void deleteByPosIdAndUserId(@NotNull List collect, String userId){ LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); if (CollectionUtil.isNotEmpty(collect)) { wrapper.in(UserRelationEntity::getObjectId, collect); } wrapper.eq(UserRelationEntity::getUserId, userId); wrapper.eq(UserRelationEntity::getObjectType, PermissionConst.POSITION); List userRelationEntities = this.selectList(wrapper); this.deleteByIds(userRelationEntities); } }