商品定时上下架的另一种解决方案,无需定时任务和额外控件,纯逻辑处理,效率高且消耗低

目录

前言:

方案解决:

一、定义商品状态:

二、必须满足条件:

三、业务逻辑处理方式:

四、代码例子:


前言:

        这段时间创业,开发类似于电商平台的系统,遇到定时上下架的问题,但是我又不想通过延迟消息队列去处理这个事情。所以通过思考研究后,想到了该方案。所以我就研究出另一种定时上下架的方案。

方案解决:

一、定义商品状态:

上架(出售)、定时上架(伪上架)、下架(仓库)

二、必须满足条件:

1.已上架的商品不支持定时上架设置
2.某个商品或批量商品定时上架设置后,商品处于伪上架功能。且商品不能立即上架,除非先下架
3.被下架的商品不受定时任务管理,但是可以手动再上架或定时上架

三、业务逻辑处理方式:

每次查询某个商品或商品列表(商品列表查询肯定是分页的,所以一次性的量肯定不会特别大)

搜索引擎的就不用说了,一样的

如果只是单独的定时上架,不含下架的话,可以先有逻辑,再通过定时任务慢慢修改状态,或者就直接使用这种逻辑就可以。无需管数据库种的状态如何

(1)、未到上架时间逻辑处理
        通过sql脚本或者代码判断当前时间和上架时间,
        如果当前时间小于上架时间就直接将商品状态返回为伪上架状态
  
(2)、已到上架时间,未到下架时间逻辑处理    
     通过sql脚本或者代码判断当前时间和上架时间,
     如果当前时间大于等于且小于下架时间,直接将商品状态返回为上架状态
                          
(3)、已到下架时间逻辑处理
     通过sql脚本或者代码判断当前时间和下架时间,
     如果当前大于等于下架时间,直接将商品状态返回为下架状态

四、代码例子:

假设:商品状态,1-上架,0-下架,2-定时上架下架

if (vo.getShelfStatus()==2){
	//当前时间大于等于自动上架时间,则为上架状态,否则是定时上架下架状态
	vo.setShelfStatus(new Date().compareTo(vo.getAutoShelfTime())>-1?1:vo.getShelfStatus());
	//当前时间大于等于自动下架时间,则为下架状态,否则是上架状态
	vo.setShelfStatus(new Date().compareTo(vo.getAutoSoldTime())>-1?0:vo.getShelfStatus());
}

基于以上三种逻辑判断,都是围绕伪上架状态展开的,所以只要是伪上架状态,就可以判断时间就行。如果是人为手动操作上下架,就直接满足上面说的三个条件即可。

无论是业务逻辑处理,还是数据展示,这种方案都是没有任何问题,无非就是对这种定时判断多了一点逻辑代码。
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Garc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值