时间筛选框的后端处理

时间筛选框的处理和参数校验

  • 如果前端使用筛选框的筛选选项则传到后端再处理时间从而获得时间戳
  • 如果前端使用筛选框的自定义时间则使用由前端处理后传进来的时间戳

请求参数工具类

/**
 * @desc 请求参数工具类
 * @auth llp
 * @date 2022/6/28 14:36
 */
public class ReqParamUtils {

    private ReqParamUtils() {
    }

    /**
     * @desc 处理参数的开始时间和结束时间
     * @auth llp
     * @date 2022/1/20 16:42
     * @param timeOption 时间筛选的选项值
     * @param firstTime 自定义开始时间
     * @param endTime 自定义结束时间
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    public static Map<String, Object> setTimeInterval(String timeOption, long firstTime, long endTime){
        Map<String, Object> timeParams = new HashMap<>();
        // 自定义时间
        if (firstTime != 0 && endTime != 0){
            timeParams.put("firstTime", firstTime);
            timeParams.put("endTime", endTime);
            return timeParams;
        }
        // 时间筛选框
        // 全部
        if (StringUtils.equals(timeOption, TimeTypeEnum.ALL.getType())){
            return timeParams;
        }else {
            endTime = System.currentTimeMillis();
            firstTime = 0;
            // 近一周
            if (StringUtils.equals(timeOption, TimeTypeEnum.ONE_WEEK.getType())){
                firstTime = dateDifference(endTime, Calendar.DATE, CommonConst.N_MINUS_SEVEN);
            }
            // 近一个月
            else if (StringUtils.equals(timeOption, TimeTypeEnum.ONE_MONTH.getType())){
                firstTime = dateDifference(endTime, Calendar.MONTH, CommonConst.N_MINUS_ONE);
            }
            // 近三个月
            else if (StringUtils.equals(timeOption, TimeTypeEnum.THREE_MONTH.getType())){
                firstTime = dateDifference(endTime, Calendar.MONTH, CommonConst.N_MINUS_THREE);
            }
            timeParams.put("firstTime", firstTime / CommonConst.N_THOUSAND);
            timeParams.put("endTime", endTime / CommonConst.N_THOUSAND);
        }
        return timeParams;
    }

    /**
     * @desc 计算出时间间隔的时间戳(精确到秒)
     * @auth llp
     * @date 2022/1/19 11:50
     * @param nowTime 当前时间戳(精确到秒)
     * @param calendarType Calendar常量
     * @param interval 间隔值
     * @return long
     */
    private static long dateDifference(long nowTime, int calendarType, int interval){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date(nowTime));
        calendar.add(calendarType, interval);
        return calendar.getTimeInMillis();
    }

    /**
     * @desc 时间参数校验
     * @auth llp
     * @date 2022/1/20 16:53
     * @param timeOption 时间筛选框选项
     * @param firstTime 自定义开始时间
     * @param endTime 自定义结束时间
     * @return boolean
     */
    private static boolean timeValidated(String timeOption, long firstTime, long endTime){
        // 时间筛选框
        // 1、自定义时间:选项为空但  开始和结束时间戳不为 0
        // 2、筛选框选项:选项不为空  开始和结束时间戳为 0
        return (StringUtils.isBlank(timeOption) && firstTime != 0 && endTime != 0)
                || (StringUtils.isNotBlank(timeOption) && firstTime == 0 && endTime == 0);
    }
}

时间筛选枚举类

/**
 * @desc 时间类型枚举
 * @auth llp
 * @date 2022/6/28 14:41
 */
public enum TimeTypeEnum {
    /** 未使用时间筛选 */
    NO_USE("", "未使用时间筛选"),
    ALL("all", "全部"),
    ONE_WEEK("oneWeek", "近一周"),
    ONE_MONTH("oneMonth", "近一个月"),
    THREE_MONTH("threeMonth", "近三个月");

    /** 类型值 */
    private final String type;
    /** 描述 */
    private final String desc;

    TimeTypeEnum(String type, String desc) {
        this.type = type;
        this.desc = desc;
    }

    public String getType() {
        return type;
    }

    public String getDesc() {
        return desc;
    }
}

常量类

/**
 * @desc 全局常量类
 * @auth llp
 * @date 2022/6/27 9:46
 */
public interface CommonConst {
    /** ------------ 数字常量 --------------------- */
    int N_MINUS_SEVEN = -7;
    int N_MINUS_THREE = -3;
    int N_MINUS_ONE = -1;
    int N_ZERO = 0;
    int N_ONE = 1;
    int N_TWO = 2;
    int N_THOUSAND = 1000;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值