package com.fjhx.base; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.secure.utils.AuthUtil; import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Map; public interface BaseService extends IService { /** * 乐观锁 */ default void optimisticLock(boolean flag) { if (!flag) { throw new ServiceException("系统繁忙,请稍候再试"); } } /** * 获取分页 */ default Page createPage(Map condition) { String pageNumStr = condition.get("pageNum"); String pageSizeStr = condition.get("pageSize"); int pageNum = ObjectUtil.isEmpty(pageNumStr) ? 1 : Integer.parseInt(pageNumStr); int pageSize = ObjectUtil.isEmpty(pageSizeStr) ? 10 : Integer.parseInt(pageSizeStr); return new Page<>(pageNum, pageSize); } /** * 获取分页 */ default Page> createPageMap(Map condition) { String pageNumStr = condition.get("pageNum"); String pageSizeStr = condition.get("pageSize"); int pageNum = ObjectUtil.isEmpty(pageNumStr) ? 1 : Integer.parseInt(pageNumStr); int pageSize = ObjectUtil.isEmpty(pageSizeStr) ? 10 : Integer.parseInt(pageSizeStr); return new Page<>(pageNum, pageSize); } /** * 执行分页查询 * * @param condition 条件 * @param queryWrapper wrapper * @return 分页后的对象 */ default Page page(Map condition, Wrapper queryWrapper) { Page page = createPage(condition); return getBaseMapper().selectPage(page, queryWrapper); } /** * 条件查询 */ default List list(SFunction column, Object val) { return lambdaQuery().eq(column, val).list(); } /** * 条件查询 */ default T getOne(SFunction column, Object val) { return lambdaQuery().eq(column, val).one(); } /** * 按指定规则删除 */ default boolean remove(SFunction column, Object val) { return remove(Wrappers.lambdaQuery().eq(column, val)); } @Override default boolean save(T entity) { setCreateInfo(entity); return IService.super.save(entity); } @Override default boolean saveBatch(Collection entityList) { entityList.forEach(this::setCreateInfo); return IService.super.saveBatch(entityList); } @Override default boolean saveOrUpdateBatch(Collection entityList) { entityList.forEach(item -> { if (item instanceof BaseEntity) { if (ObjectUtil.isEmpty(((BaseEntity) item).getId())) { setCreateInfo(item); } else { setUpdateInfo(item); } } }); return IService.super.saveOrUpdateBatch(entityList); } @Override default boolean updateById(T entity) { setUpdateInfo(entity); return IService.super.updateById(entity); } @Override default boolean update(T entity, Wrapper updateWrapper) { setUpdateInfo(entity); return IService.super.update(entity, updateWrapper); } @Override default boolean updateBatchById(Collection entityList) { entityList.forEach(this::setUpdateInfo); return IService.super.updateBatchById(entityList); } @Override default boolean saveOrUpdate(T entity, Wrapper updateWrapper) { if (entity instanceof BaseEntity) { if (ObjectUtil.isEmpty(((BaseEntity) entity).getId())) { setCreateInfo(entity); } else { setUpdateInfo(entity); } } return IService.super.saveOrUpdate(entity, updateWrapper); } /** * 调新增方法时默认传入创建人、创建时间、租户id */ default void setCreateInfo(T entity) { if (entity instanceof BaseEntity) { ((BaseEntity) entity).setTenantId(AuthUtil.getTenantId()); ((BaseEntity) entity).setCreateUser(AuthUtil.getUserId()); ((BaseEntity) entity).setCreateTime(new Date()); ((BaseEntity) entity).setUpdateUser(null); ((BaseEntity) entity).setUpdateTime(null); } } /** * 调编辑方法时默认传入更新人、更新时间 */ default void setUpdateInfo(T entity) { if (entity instanceof BaseEntity) { ((BaseEntity) entity).setTenantId(null); ((BaseEntity) entity).setCreateUser(null); ((BaseEntity) entity).setCreateTime(null); ((BaseEntity) entity).setUpdateUser(AuthUtil.getUserId()); ((BaseEntity) entity).setUpdateTime(new Date()); } } }