package com.ruoyi.common.core.mybatisplus.core; import cn.hutool.core.bean.copier.CopyOptions; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.page.PagePlus; import java.io.Serializable; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.function.Function; /** * 自定义 Service 接口, 实现 数据库实体与 vo 对象转换返回 * * @param 数据实体类 * @param vo类 * @author Lion Li */ public interface IServicePlus extends IService { /** * @param id 主键id * @param copyOptions copy条件 * @return V对象 */ V getVoById(Serializable id, CopyOptions copyOptions); default V getVoById(Serializable id) { return getVoById(id, new CopyOptions()); } /** * @param convertor 自定义转换器 */ default V getVoById(Serializable id, Function convertor) { return convertor.apply(getById(id)); } /** * @param idList id列表 * @param copyOptions copy条件 * @return V对象 */ List listVoByIds(Collection idList, CopyOptions copyOptions); default List listVoByIds(Collection idList) { return listVoByIds(idList, new CopyOptions()); } /** * @param convertor 自定义转换器 */ default List listVoByIds(Collection idList, Function, List> convertor) { List list = getBaseMapper().selectBatchIds(idList); if (list == null) { return null; } return convertor.apply(list); } /** * @param columnMap 表字段 map 对象 * @param copyOptions copy条件 * @return V对象 */ List listVoByMap(Map columnMap, CopyOptions copyOptions); default List listVoByMap(Map columnMap) { return listVoByMap(columnMap, new CopyOptions()); } /** * @param convertor 自定义转换器 */ default List listVoByMap(Map columnMap, Function, List> convertor) { List list = getBaseMapper().selectByMap(columnMap); if (list == null) { return null; } return convertor.apply(list); } /** * @param queryWrapper 查询条件 * @param copyOptions copy条件 * @return V对象 */ V getVoOne(Wrapper queryWrapper, CopyOptions copyOptions); default V getVoOne(Wrapper queryWrapper) { return getVoOne(queryWrapper, new CopyOptions()); } /** * @param convertor 自定义转换器 */ default V getVoOne(Wrapper queryWrapper, Function convertor) { return convertor.apply(getOne(queryWrapper, true)); } /** * @param queryWrapper 查询条件 * @param copyOptions copy条件 * @return V对象 */ List listVo(Wrapper queryWrapper, CopyOptions copyOptions); default List listVo(Wrapper queryWrapper) { return listVo(queryWrapper, new CopyOptions()); } /** * @param convertor 自定义转换器 */ default List listVo(Wrapper queryWrapper, Function, List> convertor) { List list = getBaseMapper().selectList(queryWrapper); if (list == null) { return null; } return convertor.apply(list); } default List listVo() { return listVo(Wrappers.emptyWrapper()); } /** * @param convertor 自定义转换器 */ default List listVo(Function, List> convertor) { return listVo(Wrappers.emptyWrapper(), convertor); } /** * @param page 分页对象 * @param queryWrapper 查询条件 * @param copyOptions copy条件 * @return V对象 */ PagePlus pageVo(PagePlus page, Wrapper queryWrapper, CopyOptions copyOptions); default PagePlus pageVo(PagePlus page, Wrapper queryWrapper) { return pageVo(page, queryWrapper, new CopyOptions()); } /** * @param convertor 自定义转换器 */ default PagePlus pageVo(PagePlus page, Wrapper queryWrapper, Function, List> convertor) { PagePlus result = getBaseMapper().selectPage(page, queryWrapper); return result.setRecordsVo(convertor.apply(result.getRecords())); } default PagePlus pageVo(PagePlus page) { return pageVo(page, Wrappers.emptyWrapper()); } /** * @param convertor 自定义转换器 */ default PagePlus pageVo(PagePlus page, Function, List> convertor) { return pageVo(page, Wrappers.emptyWrapper(), convertor); } boolean saveAll(Collection entityList); boolean saveOrUpdateAll(Collection entityList); }