BaseService.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. package com.fjhx.base;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.baomidou.mybatisplus.core.conditions.Wrapper;
  4. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5. import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.baomidou.mybatisplus.extension.service.IService;
  8. import org.springblade.core.log.exception.ServiceException;
  9. import org.springblade.core.secure.utils.AuthUtil;
  10. import java.util.Collection;
  11. import java.util.Date;
  12. import java.util.List;
  13. import java.util.Map;
  14. public interface BaseService<T> extends IService<T> {
  15. /**
  16. * 乐观锁
  17. */
  18. default void optimisticLock(boolean flag) {
  19. if (!flag) {
  20. throw new ServiceException("系统繁忙,请稍候再试");
  21. }
  22. }
  23. /**
  24. * 获取分页
  25. */
  26. default Page<T> createPage(Map<String, String> condition) {
  27. String pageNumStr = condition.get("pageNum");
  28. String pageSizeStr = condition.get("pageSize");
  29. int pageNum = ObjectUtil.isEmpty(pageNumStr) ? 1 : Integer.parseInt(pageNumStr);
  30. int pageSize = ObjectUtil.isEmpty(pageSizeStr) ? 10 : Integer.parseInt(pageSizeStr);
  31. return new Page<>(pageNum, pageSize);
  32. }
  33. /**
  34. * 获取分页
  35. */
  36. default Page<Map<String, Object>> createPageMap(Map<String, String> condition) {
  37. String pageNumStr = condition.get("pageNum");
  38. String pageSizeStr = condition.get("pageSize");
  39. int pageNum = ObjectUtil.isEmpty(pageNumStr) ? 1 : Integer.parseInt(pageNumStr);
  40. int pageSize = ObjectUtil.isEmpty(pageSizeStr) ? 10 : Integer.parseInt(pageSizeStr);
  41. return new Page<>(pageNum, pageSize);
  42. }
  43. /**
  44. * 执行分页查询
  45. *
  46. * @param condition 条件
  47. * @param queryWrapper wrapper
  48. * @return 分页后的对象
  49. */
  50. default Page<T> page(Map<String, String> condition, Wrapper<T> queryWrapper) {
  51. Page<T> page = createPage(condition);
  52. return getBaseMapper().selectPage(page, queryWrapper);
  53. }
  54. /**
  55. * 条件查询
  56. */
  57. default List<T> list(SFunction<T, ?> column, Object val) {
  58. return lambdaQuery().eq(column, val).list();
  59. }
  60. /**
  61. * 条件查询
  62. */
  63. default T getOne(SFunction<T, ?> column, Object val) {
  64. return lambdaQuery().eq(column, val).one();
  65. }
  66. /**
  67. * 按指定规则删除
  68. */
  69. default boolean remove(SFunction<T, ?> column, Object val) {
  70. return remove(Wrappers.<T>lambdaQuery().eq(column, val));
  71. }
  72. @Override
  73. default boolean save(T entity) {
  74. setCreateInfo(entity);
  75. return IService.super.save(entity);
  76. }
  77. @Override
  78. default boolean saveBatch(Collection<T> entityList) {
  79. entityList.forEach(this::setCreateInfo);
  80. return IService.super.saveBatch(entityList);
  81. }
  82. @Override
  83. default boolean saveOrUpdateBatch(Collection<T> entityList) {
  84. entityList.forEach(item -> {
  85. if (item instanceof BaseEntity) {
  86. if (ObjectUtil.isEmpty(((BaseEntity) item).getId())) {
  87. setCreateInfo(item);
  88. } else {
  89. setUpdateInfo(item);
  90. }
  91. }
  92. });
  93. return IService.super.saveOrUpdateBatch(entityList);
  94. }
  95. @Override
  96. default boolean updateById(T entity) {
  97. setUpdateInfo(entity);
  98. return IService.super.updateById(entity);
  99. }
  100. @Override
  101. default boolean update(T entity, Wrapper<T> updateWrapper) {
  102. setUpdateInfo(entity);
  103. return IService.super.update(entity, updateWrapper);
  104. }
  105. @Override
  106. default boolean updateBatchById(Collection<T> entityList) {
  107. entityList.forEach(this::setUpdateInfo);
  108. return IService.super.updateBatchById(entityList);
  109. }
  110. @Override
  111. default boolean saveOrUpdate(T entity, Wrapper<T> updateWrapper) {
  112. if (entity instanceof BaseEntity) {
  113. if (ObjectUtil.isEmpty(((BaseEntity) entity).getId())) {
  114. setCreateInfo(entity);
  115. } else {
  116. setUpdateInfo(entity);
  117. }
  118. }
  119. return IService.super.saveOrUpdate(entity, updateWrapper);
  120. }
  121. /**
  122. * 调新增方法时默认传入创建人、创建时间、租户id
  123. */
  124. default void setCreateInfo(T entity) {
  125. if (entity instanceof BaseEntity) {
  126. ((BaseEntity) entity).setTenantId(AuthUtil.getTenantId());
  127. ((BaseEntity) entity).setCreateUser(AuthUtil.getUserId());
  128. ((BaseEntity) entity).setCreateTime(new Date());
  129. ((BaseEntity) entity).setUpdateUser(null);
  130. ((BaseEntity) entity).setUpdateTime(null);
  131. }
  132. }
  133. /**
  134. * 调编辑方法时默认传入更新人、更新时间
  135. */
  136. default void setUpdateInfo(T entity) {
  137. if (entity instanceof BaseEntity) {
  138. ((BaseEntity) entity).setTenantId(null);
  139. ((BaseEntity) entity).setCreateUser(null);
  140. ((BaseEntity) entity).setCreateTime(null);
  141. ((BaseEntity) entity).setUpdateUser(AuthUtil.getUserId());
  142. ((BaseEntity) entity).setUpdateTime(new Date());
  143. }
  144. }
  145. }