package com.ruoyi.business.domain;

import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.experimental.Accessors;

/**
 * 对外业务服务对象 b_service_business
 * 
 * @author wzq
 * @date 2024-01-10
 */
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
@TableName("b_service_business")
@Accessors(chain = true)
public class ServiceBusiness implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    @JsonSerialize(using= ToStringSerializer.class)
    private Long id;

    /**
     * 基础服务主键
     */
    @TableField("service_id")
    @JsonSerialize(using= ToStringSerializer.class)
    private Long serviceId;

    /**
     * 所属系统
     */
    @TableField("belong_system")
    private String belongSystem;

    /**
     * 目录或内容 (字典:sys_dir_classify)
     */
    @TableField("dir_or_content")
    private String dirOrContent;

    /**
     * 类型(输入、查询)
     */
    @TableField("type")
    private String type;

    /**
     * 服务接口名称
     */
    @TableField("out_name")
    private String outName;

    /**
     * 服务接口描述
     */
    @TableField("out_desc")
    private String outDesc;

    /**
     * 请求方式(get、post)
     */
    @TableField("request_method")
    private String requestMethod;

    /**
     * 参数类型(表单、json)
     */
    @TableField("param_type")
    private String paramType;

    /**
     * 返回结果类型(默认json)
     */
    @TableField("result_type")
    private String resultType;

    /**
     * 数据源id
     */
    @TableField("database_id")
    @JsonSerialize(using= ToStringSerializer.class)
    private Long databaseId;

    /**
     * 数据源名称
     */
    @TableField("database_name")
    private String databaseName;

    /**
     * 表名
     */
    @TableField("table_name")
    private String tableName;

    /**
     * 表中文名
     */
    @TableField("table_remark")
    private String tableRemark;

    /**
     * 查询字段(json 字段、查询方式(精确、模糊、日期范围))
     */
    @TableField("query_field")
    private String queryField;

    /**
     * 结果字段
     */
    @TableField("result_field")
    private String resultField;

    /**
     * 自定义SQL
     */
    @TableField("result_sql")
    private String resultSql;

    /**
     * 备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 状态
     */
    @TableField("status")
    private String status;

    /**
     * 发布状态
     */
    @TableField("publish_status")
    private String publishStatus;

    /**
     * 审核状态
     */
    @TableField("has_audit")
    private String hasAudit;
    /**
     *  生存周期
     */
    @TableField("survival_cycle")
    private String  survivalCycle;


    /**
     * 生效状态
     */
    @TableField("effective_status")
    private String effectiveStatus;

    /**
     * 部门路径
     */
    @TableField("dept_id_path")
    private String deptIdPath;

    /**
     * 部门名称
     */
    @TableField("dept_name")
    private String deptName;

    /**
     * 创建人
     */
    @TableField("create_by")
    private String createBy;

    /**
     * 创建人ID
     */
    @TableField("create_user_id")
    @JsonSerialize(using= ToStringSerializer.class)
    private Long createUserId;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField("create_time")
    private Date createTime;

    /**
     * 更新人
     */
    @TableField("update_by")
    private String updateBy;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField("update_time")
    private Date updateTime;

    /**
     * 删除人
     */
    @TableField("delete_by")
    private String deleteBy;

    /**
     * 删除时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField("delete_time")
    private Date deleteTime;

    /**
     * 删除标志 0未删除，1 删除
     */
    @TableField("delete_flag")
    @TableLogic
    private String deleteFlag;


}
