前言
5月20日:微信开放520大额红包红包
4月1日:B站用户名变为绿色 ,无论是否大会员
618、双11、双12等等电商节:铺天盖地的各种营销活动
春节:喜庆元素
国家公祭日:灰白主题
等等这样,这个不用多想都是提前配置,另外需要提前准备不同的物料,通常是前端的图片、样式、图标、字体等等
为什么聊到这个
因为这就是规划中的一部分,只是没有时间来做来聊。
我如果没记错的话,在上次双十一期间,明显发现双十一期间的购物方式和平常有点差别,平常,因为我开通了先买后付,所以直接下单非常顺畅,连密码/人脸都不需要,但是双十一期间需要直接扣款,当然能猜测是双十一期间资金等方面的问题,但是这个是如何做的?什么时间段有什么限制?什么时间段额度会变化?如何定义?
如何做
本篇只是一些想法探讨,并不涉及具体实现,当然后面这部分做好了也会发文。
github.com/wnhyang/coo…,此想法会贴切本项目,并不具备通用性,需要注意。
数据存储
首先要有一个地方存储节假日数据,大概就是如下这样,能确定某天是否是工作日/休息日,是否某些购物节等等
日期 | 类型 |
---|---|
2025-04-27 | 劳动节(班) |
2025-04-01 | 愚人节 |
2025-05-20 | 520 |
2025-05-31 | 端午节(休) |
2025-06-01 | 儿童节,端午节(休) |
2025-06-02 | 端午节(休) |
2025-06-17 | 618购物节 |
2025-06-18 | 618购物节 |
2025-06-19 | 618购物节 |
而且日期关联到节日并非是简单的中文xx节,而是对应一个复杂结构,最好是能额外配置的,比如是
{
"code" : "618",
"name" : "618购物节",
"discount" : "0.95",
"weight" : "1.2"
}
设置618标签的日期都具备额外的属性,这些属性可以结合到策略规则中,如折扣95%,临时额度上调1.2等等
数据录入
使用类似antdv
的<font style="color:rgba(0, 0, 0, 0.88);">Calendar</font>
的组件就好
方法/API
数据增删改的问题解决了后就要考虑需要提供哪些服务了,如下,一点点想法
是否工作日isWorkday
- api,作为
api
给自己和外部服务 - 字段,作为系统内置字段可以被指标、规则引用,默认计算系统内置的事件时间是否是工作日
- 日期字段函数,可以使用
isWorkday(now)
的方式获取确认now
这个日期是否是工作日,布尔类型
什么日子whatDay
- api,作为
api
给自己和外部服务 - 日期字段函数,可以使用
whatDay(now)
的方式获取now
是什么日子,然后可以.name
等等获取对象的具体基础属性
isWorkday(date:Date)
,
{
"day" : "2025-05-20" // yyyy-MM-dd等各种格式,但必须到日
}
whatDay(date:Date)
{
"day" : "2025-05-20", // yyyy-MM-dd等各种格式,但必须到日
"isWorkday" : true/false,
"config" : {
"code: : "520", //
"name" : "520节?!"
}
}
扩展
前面都是暂时的一些想法,当然不是很成熟,还没有动手来做,但一定会做。
另外还有一个问题这种判断工作日等这一类与普通的规则层级其实是不同的,比如有下策略
xxx策略
- 规则1,条件
cond1
,动作action1
- 规则2,条件
cond2
,动作action2
- 规则2,条件
cond2
,动作action2
如果要统一增加节假日的判断,那么就需要调整所有的规则cond
,是否可以增加规则层级或者策略增加条件从而避免这样繁琐的操作,另外如果真的把上面讲的节假日配置权重做好了,是否可以在规则的上一层直接做一个类似策略变量的东西,其下的规则能直接使用,如定义多个策略变量policy1.whatday.name
、policy1.whatday.weight
,其下的规则能直接使用,比如在规则条件时不用常量来定义某些数字了,可以使用表达式policy1.whatday.weight*2000
、policy1.whatday.add+50
,等等
小结
本篇算是空谈吧,实现可能要段时间了。