• 时间筛选框的后端处理


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

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

    请求参数工具类

    /**
     * @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);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85

    时间筛选枚举类

    /**
     * @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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    常量类

    /**
     * @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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    WOL唤醒配置(以太网、PHY、MAC)
    前端学习2——CSS3
    c# --- 索引器与运算符重载
    微信小程序 24 播放音乐页的完善①
    2023年最新ADB工具箱R34下载-自带驱动常见ADB命令刷机ROOT神器
    B2B电子商务网站方案:为专用设备行业注入新动力,加快产业数字化转型升级
    一文搞懂kubernetes Deployment之滚动更新、回滚应用及策略;
    DataSheet专业名词解读——每天10个专业名词(1)23.9.18 (NXP)MPC5604B/C
    【运维】Linux修改Hosts
    HR们,快看这是不是你想要的办公神器!
  • 原文地址:https://blog.csdn.net/weixin_43989102/article/details/125511894