package com.zm.order.tool.server.manager;

/**
 * @Description 针对0库0表 0库1表数据 特殊处理下
 * @Author: ph
 * @Date: 2021/10/9 下午2:27
 */
public class SpecialAlgorithm {

    /**
     * 是否重定向
     *
     * @param userId
     * @param dbSize
     * @return
     */
    public static boolean isForward(Long userId, int dbSize) {
        long dbIndex = userId % dbSize;
        return (dbIndex == 0L || dbIndex == 1L);
    }

    /**
     * 是否重定向
     *
     * @param userId
     * @param dbSize
     * @param tbSize
     * @return
     */
    public static boolean isForward(Long userId, int dbSize, int tbSize) {
        long dbIndex = userId % dbSize;
        long tbIndex = userId / dbSize % tbSize;
        return (dbIndex == 0L || dbIndex == 1L) && (tbIndex == 0L);
    }

    /**
     * 重定向
     *
     * @param userId
     * @param dbSize
     * @return
     */
    public static long forward(Long userId, int dbSize) {
        String s = userId + "";
        int hashCode = s.hashCode();
        if (hashCode < 0) {
            hashCode = - hashCode;
        }
        return hashCode % dbSize;
    }

    /**
     * 重定向
     *
     * @param userId
     * @param dbSize
     * @param tbSize
     * @return
     */
    public static long forward(Long userId, int dbSize, int tbSize) {
        String s = userId + "";
        int hashCode = s.hashCode();
        if (hashCode < 0) {
            hashCode = -hashCode;
        }
        return hashCode / dbSize % tbSize;
    }
}
