LogicDeleteHandler.java 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package jnpf.database.plugins;
  2. import jnpf.constant.TableFieldsNameConst;
  3. import net.sf.jsqlparser.expression.Expression;
  4. import net.sf.jsqlparser.schema.Column;
  5. import java.util.List;
  6. /**
  7. * @author JNPF开发平台组
  8. * @user N
  9. * @copyright 引迈信息技术有限公司
  10. * @date 2023/1/3 15:07
  11. */
  12. public interface LogicDeleteHandler {
  13. String DELETE_FIELD = TableFieldsNameConst.F_DELETE_MARK;
  14. String DELETESQL = "UPDATE a SET " + DELETE_FIELD + " = 1";
  15. /**
  16. * 获取租户 ID 值表达式,只支持单个 ID 值
  17. * <p>
  18. *
  19. * @return 租户 ID 值表达式
  20. */
  21. Expression getNotDeletedValue();
  22. /**
  23. * 获取租户字段名
  24. * <p>
  25. * 默认字段名叫: tenant_id
  26. *
  27. * @return 租户字段名
  28. */
  29. default String getLogicDeleteColumn() {
  30. return DELETE_FIELD;
  31. }
  32. /**
  33. * 获取租户字段名
  34. * <p>
  35. * 默认字段名叫: tenant_id
  36. *
  37. * @return 租户字段名
  38. */
  39. default String getDeleteSql() {
  40. return DELETESQL;
  41. }
  42. /**
  43. * 根据表名判断是否忽略拼接多租户条件
  44. * <p>
  45. * 默认都要进行解析并拼接多租户条件
  46. *
  47. * @param tableName 表名
  48. * @return 是否忽略, true:表示忽略,false:需要解析并拼接多租户条件
  49. */
  50. default boolean ignoreTable(String tableName) {
  51. return false;
  52. }
  53. /**
  54. * 忽略插入租户字段逻辑
  55. *
  56. * @param columns 插入字段
  57. * @param tenantIdColumn 租户 ID 字段
  58. * @return
  59. */
  60. default boolean ignoreInsert(List<Column> columns, String tenantIdColumn) {
  61. return columns.stream().map(Column::getColumnName).anyMatch(i -> i.equalsIgnoreCase(tenantIdColumn));
  62. }
  63. }