package jnpf.permission.mapper; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.collect.Lists; import jnpf.base.mapper.SuperMapper; import jnpf.permission.entity.GroupEntity; import jnpf.permission.model.usergroup.GroupPagination; import jnpf.util.DateUtil; import jnpf.util.RandomUtil; import jnpf.util.StringUtil; import jnpf.util.UserProvider; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; /** * 分组管理Mapper * * @author :JNPF开发平台组 * @version: V3.1.0 * @copyright 引迈信息技术有限公司 * @date :2022/3/10 17:56 */ public interface GroupMapper extends SuperMapper { default List getList(GroupPagination pagination) { QueryWrapper queryWrapper = new QueryWrapper<>(); // 定义变量判断是否需要使用修改时间倒序 boolean flag = false; // 判断关键字 String keyword = pagination.getKeyword(); if (StringUtil.isNotEmpty(keyword)) { flag = true; queryWrapper.lambda().and( t -> t.like(GroupEntity::getFullName, keyword) .or().like(GroupEntity::getEnCode, keyword) .or().like(GroupEntity::getDescription, keyword) ); } if (pagination.getEnabledMark() != null) { queryWrapper.lambda().eq(GroupEntity::getEnabledMark, pagination.getEnabledMark()); } // 获取列表 queryWrapper.lambda().orderByAsc(GroupEntity::getSortCode).orderByAsc(GroupEntity::getCreatorTime); if (flag) { queryWrapper.lambda().orderByDesc(GroupEntity::getLastModifyTime); } //不分页 if (Objects.equals(pagination.getDataType(), 1)) { return selectList(queryWrapper); } //有分页 Page page = new Page<>(pagination.getCurrentPage(), pagination.getPageSize()); IPage iPage = this.selectPage(page, queryWrapper); return pagination.setData(iPage.getRecords(), iPage.getTotal()); } default List list() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(GroupEntity::getEnabledMark, 1); queryWrapper.lambda().orderByAsc(GroupEntity::getSortCode).orderByAsc(GroupEntity::getCreatorTime); return this.selectList(queryWrapper); } default Map getGroupMap() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().select(GroupEntity::getId, GroupEntity::getFullName); return this.selectList(queryWrapper).stream().collect(Collectors.toMap(GroupEntity::getId, GroupEntity::getFullName)); } default Map getGroupEncodeMap(boolean enabledMark) { QueryWrapper queryWrapper = new QueryWrapper<>(); if (enabledMark) { queryWrapper.lambda().eq(GroupEntity::getEnabledMark, 1); } queryWrapper.lambda().select(GroupEntity::getId, GroupEntity::getFullName, GroupEntity::getEnCode); return this.selectList(queryWrapper).stream().collect(Collectors.toMap(group -> group.getFullName() + "/" + group.getEnCode(), GroupEntity::getId)); } default GroupEntity getInfo(String id) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(GroupEntity::getId, id); return this.selectOne(queryWrapper); } default GroupEntity getInfo(String fullName, String enCode) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(GroupEntity::getFullName, fullName); queryWrapper.lambda().eq(GroupEntity::getEnCode, enCode); return this.selectOne(queryWrapper); } default void crete(GroupEntity entity) { entity.setId(RandomUtil.uuId()); entity.setCreatorUserId(UserProvider.getUser().getUserId()); entity.setCreatorTime(DateUtil.getNowDate()); entity.setEnabledMark(1); this.insert(entity); } default Boolean update(String id, GroupEntity entity) { entity.setId(id); entity.setLastModifyUserId(UserProvider.getUser().getUserId()); entity.setLastModifyTime(DateUtil.getNowDate()); entity.setEnabledMark(1); int i = this.updateById(entity); return i > 0; } default void delete(GroupEntity entity) { this.deleteById(entity.getId()); } default Boolean isExistByFullName(String fullName, String id) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(GroupEntity::getFullName, fullName); if (!StringUtil.isEmpty(id)) { queryWrapper.lambda().ne(GroupEntity::getId, id); } return this.selectCount(queryWrapper) > 0; } default Boolean isExistByEnCode(String enCode, String id) { if (StringUtil.isEmpty(enCode)) return false; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(GroupEntity::getEnCode, enCode); if (!StringUtil.isEmpty(id)) { queryWrapper.lambda().ne(GroupEntity::getId, id); } return this.selectCount(queryWrapper) > 0; } default List getListByIds(List idList) { return this.getListByIds(idList, true); } default List getListByIds(List idList, Boolean filterEnabledMark) { if (CollectionUtil.isEmpty(idList)) return Collections.EMPTY_LIST; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().in(GroupEntity::getId, idList); if (idList.size() > 1000) { List> lists = Lists.partition(idList, 1000); queryWrapper.lambda().and(t -> { for (List list : lists) { t.in(GroupEntity::getId, list).or(); } }); } else { queryWrapper.lambda().in(GroupEntity::getId, idList); } if (filterEnabledMark) { queryWrapper.lambda().eq(GroupEntity::getEnabledMark, 1); } return this.selectList(queryWrapper); } }