package com.ruoyi.framework.config;

import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler;

import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 * 按年份参数，组成动态表名
 */
public class YearTableNameHandler implements TableNameHandler {

    //用于记录哪些表可以使用该月份动态表名处理器（即哪些表按月分表）
    private List<String> tableNames;
    //构造函数，构造动态表名处理器的时候，传递tableNames参数
    public YearTableNameHandler(String ...tableNames) {
        this.tableNames = Arrays.asList(tableNames);
    }

    //动态表名接口实现方法
    @Override
    public String dynamicTableName(String sql, String tableName) {
        if (this.tableNames.contains(tableName)){
            Calendar cal = Calendar.getInstance();
            cal.setTime(new Date());
            return tableName + "_" + cal.get(Calendar.YEAR);  //表名增加年份后缀
        }else{
            return tableName;   //表名原样返回
        }
    }
}
