一个简单的当天是否是节假日查询(golang)

一.方案

1.调用外部接口查看今天是否节假日,优点:不需要每年更新。缺点:慢以及不免费

2.通过调用redis每年定期添加相关节假日,然后再本地查询,优点:免费而且可以随时调整。缺点:需要每年手动更新。(因为每年调休不一样)

这里就说第二种方案吧,第一种方案调个外部接口就行。

1.能够用图形化操作/添加 解决方法:用阿里云的DMS 图形化直接管理redis数据库

2.能让不同产品设置 不同的节假日是否能使用 解决方法:redis里面添加相应产品id

二.主要代码逻辑:

year, month, day := now.Date()
	// 今日日期
	today := time.Date(year, month, day, 0, 0, 0, 0, time.Local).Format("2006-01-02")
	valueStr, err = s.redisStore.Get(fmt.Sprintf("limit_产品_day_%v", today)).Result()
	if err != nil && err != redis.Nil {
		// 发生了不为空的错误
		logrus.Errorf("[service/http/产品] Redis query error.")
		return 0, false
	} else if err == nil {
		splittedStr := strings.Split(valueStr, "-")
		for _, item := range splittedStr {
			num, err := strconv.ParseInt(item, 10, 64)
			if err != nil {
				logrus.Errorf("[service/http/产品] Convert strings to numbers err: %v", err)
				return 0, false
			}

			if num == 0 || order.产品ID == num {
				return 0, false
			}
		}
	}

首先获取当天时间 注意time.Local  注意一下你的时区

按照limit_产品_day_XXXX-XX-XX的格式去redis取数据

找不到键值对跳过表示今天没设置禁止登录

找得到不报错

将里面的键值字符串X-X-X-X 按照-分隔符分割

取出来的数字就是我对应要禁止的产品类型

比如0 就是表示所有的产品今天禁用

再比如1-2-3-4 就是把id为1到4的产品全禁止了

三.手动添加

可以直接访问redis 去根据格式来设置键值对

不过一般都是部署在某某云服务器上

这里以阿里云的DMS图形化界面为例子展示

1.点开阿里云的DMS

控制台搜索数据管理DMS 点开(注意需要相关权限 )

2.点开redis

在实例找到redis 进入DB0 点旁边的新增键值对按你的格式设置就行

记得每年年末可以点旁边的模糊搜索 来删除键值对

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值