记录上家公司的合理设计点

1 设计日志
 

create table exection_log(
    id bigint(20) 主键,
    biz_uuid, varchar(128) '业务标识',
    ip, varchar(128) '',
    url, varchar(128) '请求url',
    line, varchar(128) 错误代码行数,
    param mediument 请求参数,
    main_message mediument 主要异常信息,
    message mediument 全部异常信息,
    create_time datetime, 创建时间
);

create table oper_log{
    id bigint(20) 主键,
    oper_module varchar 模块标题,
    oper_no varchar 模块编码,
    oper_type varchar 模块类型,
    url, varchar 请求url,
    oper_desc  mediument 操作描述,
    delete_status int(2) 删除状态0:有效,1:无效,
    creator int 操作人,
    updator int 更新人,
    create_time datetime, 创建时间,
    update_time datetime, 更新时间
}

create table message_record_consume{
    id bigint(20) 主键,
    message_data_json mediument,消息内容,
    exception_data_json mediument,异常消息,
    message_type varchar,消息类型,
    consume_time,消息结束时间,
    consume_source varchar, 消息来源,
    ip varchar, ip,
    biz_uuid varchar ,业务消息uuid,
    create_time datetime, 创建时间,
    update_time datetime, 更新时间
}

create table message_record_producer{
    id bigint(20) 主键,
    message_data_json mediument,消息内容,
    exception_data_json mediument,异常消息,
    sending_time datetime 消息发送时间,
    sent_time datetime 消息最后一次发送的时间,
    ack_time datetime 收到消息ack的时间,
    retry_count int 发送消息重试次数,
    message_status varchar 消息状态,sending sent acked,
    message_type 消息类型,
    message_target varchar 消息发送目标,
    biz_uuid,varchar 消息业务记录uuid,
    biz_type varchar 消息业务类型,
    producer_key varchar 消息生产者key,
    message_source varchar 消息来源,
    create_time datetime, 创建时间,
    update_time datetime, 更新时间
}

create table file{
    id bigint(20) 主键,
    type tinyint(2) 类型,
    function_code varchar 功能编码,
    function_name varchar 功能名称,
    biz_id bigint 单据id,
    status tinyint 状态,
    start_time datetime 开始时间,
    end_time datetime 结束时间,
    row_number int 导出记录数,
    file_name varchar 文件名称,
    file_size bigint 文件大小,
    path varchar(500) 文件路径,
    create_id int 创建人,
    create_name varchar 创建人名称;
}

create table serial_number{
    id bigint(20) 主键,
    fix varchar 前缀,
    date_format varchar 时间格式,
    serial_number varchar 流水号;
}

create table dict{
    id bigint(20) 主键,
    value varchar 数据值,
    lable varchar 标签名,
    type tinyint 类型,
    description varchar 描述,
    is_default tinyint 是否默认,
    sort int 排序,
    remarks varchar 备注信息,
    delete_status tinyint 删除标识,
    create 创建人,
    update 修改人,
    c_time, 创建时间,
    u_time, 更新时间;
}


create table reqlog{
    id bigint(20) 主键,
    type int 接口类型,
    business_no varchar 业务编号,
    sender varchar 发送方,
    receiver varchar 接收方,
    send_content mediumtext 发送内容,
    receive_content mediumtext 响应内容, 
    status tinyint 请求成功与否(状态),
    delete_status tinyint 删除状态,
    c_time datetime 创建时间;
}








2  一个接口有多个业务实现的初始化设计
 


private ConcurrentHashMap(String,FormOperation) opreationMap = new ConcurrentHashMap<>();

@Resource
protected void setForeOperation(FormOperation[] operations){
        //p.getProcDefKey()   实现标识
        for(ForeOperation p : operations){
                operationMap.put(p.getProcDefKey(),p)
        }
}


3 发送rabbitMq消息时,在接收者消费端,接收到的消息会多出双引号,解决办法是,将json串,转换成JSONArray类型。

如:JSONArray array = JSONUtil.parseArray(json);

4 读取properties文件经常在windows可以,但部署linux不行,使用此工具方法。

import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.ResourceLoader;
import org.springframework.core.io.Resource;
import java.io.InputStreamReader;
import java.util.Properties;

public class ConfigInfo{

    private static Properties cache = new Properties();
    
    static{

        try{
            ResourceLoader resourceLoader = new DefaultResourceLoader();
            Resource resource = resourceLoader.getResource("classpath:file.properties");
            InputStreamReader isr = new InputStreamReader(resource.getInputerStream(),"utf-8");
            cache.load(isr);
        }catch(){
        }
    }
    
    public static String getValue(String key){
        return cache.getProperty(key);
    }

}

5 创建枚举


@Getter
@AllArgsConstructor
public enum Enum{
 
    TYPE_1(1,"111"),
    TYPE_2(2,"222"),
    TYPE_3(3,"333");

    private int code;
    private String desc;

    /**
     * 自己定义一个静态方法,通过code返回枚举常量对象
     */
    public static Enum getValue(int code){
 
        for (Enum enum: Enum.values()) {
            if(enum.getCode() == code){
                return  enum;
            }
        }
        return null;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程治铭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值