优惠券状态改变的定时器

原来的思路:先查询出所有的优惠券,然后遍历优惠券,比较结束时间跟当前时间,改变其状态。这是我想第一反应的方法。

                      后来别告知,这样的话服务器扛不住,分分种就崩那种,后来改变了写法,记录一下。

                    1、SQL实现

<!--定时器修改优惠券状态-->
    <update id="updateByJob">
        UPDATE t_discount
        SET state = #{setState}
        WHERE
        state = #{whereState}
        <if test="endTime != null">
            and date_format(end_time,'%Y-%m-%d %H:%i') <![CDATA[<]]> date_format(#{endTime}, '%Y-%m-%d %H:%i')
        </if>
        <if test="startTime != null">
            and date_format(start_time,'%Y-%m-%d %H:%i') <![CDATA[<=]]> date_format(#{startTime}, '%Y-%m-%d %H:%i')
        </if>
    </update>

                 2、控制层传值

 //优惠券  定时更新下载券状态 (每分钟执行一次)
    @Scheduled(cron = "0 0/1 * * * ? ")
    public void couponStatus() {
        Map<String, Object> map = new HashMap<>();
        map.put("whereState", 1);
        map.put("setState", 2);
        map.put("startTime", new Date());
        this.discountService.updateByJob(map);
        map = new HashMap<>();
        map.put("whereState", 2);
        map.put("setState", 3);
        map.put("endTime", new Date());
        this.discountService.updateByJob(map);

    }

                   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值