实战:第三章:更新数据只能是下月修改,当月不能修改

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 实战:第三章:更新数据只能是下月修改,当月不能修改

第一种:可以利用缓存,commissionMerchantsBean是传入的参数对象

           //将合作对象更改后,应该在下个月份才生效
            //根据merchants_id查询tst_commission_merchants表获取import_partner_employee_id
            CommissionMerchantsBean merchantsBean = commissionDaoC.getCommissionMerchants(commissionMerchantsBean);
            //获取缓存中的生效时间
            String effectTimeImport = RedisUtils.getKey("effectTimeImport:" + commissionMerchants.getCommission_merchants_id());
            String effectTimeRelation = RedisUtils.getKey("effectTimeRelation:" + commissionMerchants.getCommission_merchants_id());
            if(tst.project.utils.StringUtils.isEmpty(effectTimeImport)){
                //如果为空,设置缓存
                RedisUtils.setKey("effectTimeImport:" + commissionMerchants.getCommission_merchants_id(),String.valueOf(TimeUtils.dateToStr(nextMonthStartTimes,"yyyy-MM")));
            }
            //重新获取
            String effectTimeImport2 = RedisUtils.getKey("effectTimeImport:" + commissionMerchants.getCommission_merchants_id());
      //导入的生效日期不等于当月的则将传入的import_partner_employee_id设置为库中原来的数据
            if(effectTimeImport2.compareTo(TimeUtils.dateToStr(new Date(),"yyyy-MM")) != 0){
                //如果不为空,且缓存中的日期是几个月前的设置下月为生效日期
                RedisUtils.setKey("effectTimeImport:" + commissionMerchants.getCommission_merchants_id(),String.valueOf(TimeUtils.dateToStr(nextMonthStartTimes,"yyyy-MM")));
                //设置导入合作对象员工id为原来的数据
                String importPartnerEmployeeId = merchantsBean.getImport_partner_employee_id();
                commissionMerchantsBean.setImport_partner_employee_id(importPartnerEmployeeId);
            }
            if(tst.project.utils.StringUtils.isEmpty(effectTimeRelation)){
                //如果为空,设置缓存
                RedisUtils.setKey("effectTimeRelation:" + commissionMerchants.getCommission_merchants_id(),String.valueOf(TimeUtils.dateToStr(nextMonthStartTimes,"yyyy-MM")));
            }
            //重新获取
            String effectTimeRelation2 = RedisUtils.getKey("effectTimeRelation:" + commissionMerchants.getCommission_merchants_id());
      //关联的生效日期不等于当月的则将传入的relation_partner_employee_id设置为库中原来的数据
      if(effectTimeRelation2.compareTo(TimeUtils.dateToStr(new Date(),"yyyy-MM")) != 0){
        //如果不为空,且缓存中的日期是几个月前的设置下月为生效日期
                RedisUtils.setKey("effectTimeRelation:" + commissionMerchants.getCommission_merchants_id(),String.valueOf(TimeUtils.dateToStr(nextMonthStartTimes,"yyyy-MM")));
                //设置关联合作对象员工id为原来的数据
                String relationPartnerEmployeeId = merchantsBean.getRelation_partner_employee_id();
                commissionMerchantsBean.setRelation_partner_employee_id(relationPartnerEmployeeId);
            }
            //设置生效时间为下个月
            int num=commissionDaoC.updateCommissionMerchants(commissionMerchantsBean);
            if(num<=0){
                throw new AppException("更新失败!");
            }

第二种:可以利用定时任务

第三种:可以使用信息队列

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
9月前
|
JSON Java Maven
如何批量查询自己的CSDN博客质量分
如何批量查询自己的CSDN博客质量分
166 0
|
3月前
|
数据安全/隐私保护
自动阅读专业版第六次更新
自动阅读专业版第六次更新
15 0
|
8月前
uniapp写一个随时间变化的预约日期列表
const today = new Date(); const dateArray = []; const dayOfWeekArray = []; const yearMonthDayArray = [];
51 0
【SQL开发实战技巧】系列(十九):数据仓库中时间类型操作(进阶)如何一个SQL打印当月或一年的日历?如何确定某月内第一个和最后—个周内某天的日期?
如何一个SQL打印出当月日历或当年日历???如何统计一年内属于周内某一天的所有日期???如何确定某月内第一个和最后—个周内某天的日期???【SQL开发实战技巧】这一系列博主当作复习旧知识来进行写作,毕竟SQL开发在数据分析场景非常重要且基础,面试也会经常问SQL开发和调优经验,相信当我写完这一系列文章,也能再有所收获,未来面对SQL面试也能游刃有余~。本例要求返回当月内第一个星期一与最后一个星期一,我们分别找上月末及当月末之前七天的下一周周一即可。
【SQL开发实战技巧】系列(十九):数据仓库中时间类型操作(进阶)如何一个SQL打印当月或一年的日历?如何确定某月内第一个和最后—个周内某天的日期?
【SQL开发实战技巧】系列(十七):数据仓库中时间类型操作(初级)确定两个日期之间的工作天数、计算—年中周内各日期出现次数、确定当前记录和下一条记录之间相差的天数
如何确定两个日期之间的工作日有多少天、计算—年中每周内各日期出现次数、确定当前记录和下一条记录之间相差的天数【SQL开发实战技巧】这一系列博主当作复习旧知识来进行写作,毕竟SQL开发在数据分析场景非常重要且基础,面试也会经常问SQL开发和调优经验,相信当我写完这一系列文章,也能再有所收获,未来面对SQL面试也能游刃有余~。本章节的三个需求:确定两个日期之间的工作天数、计算—年中周内各日期出现次数、确定当前记录和下一条记录之间相差的天数有些许难度,不过建议还是学会比较好。
【SQL开发实战技巧】系列(十七):数据仓库中时间类型操作(初级)确定两个日期之间的工作天数、计算—年中周内各日期出现次数、确定当前记录和下一条记录之间相差的天数
|
数据库
mybaits传入的时间参数与数据库实际插入的时间晚8个小时
mybaits传入的时间参数与数据库实际插入的时间晚8个小时
89 0
mybaits传入的时间参数与数据库实际插入的时间晚8个小时
|
前端开发
前端项目实战197-初始化当月日期得参数
前端项目实战197-初始化当月日期得参数
77 0
SAP报错因为不允许对公司代码 XXXX科目 XXXXXXXXXX进行销项/进项税相关操作,所以税码XX无效
问题描述:因为不允许对公司代码 3300 科目 6001000000 进行销项/进项税相关操作,所以税码 Z1 无效
SAP报错因为不允许对公司代码 XXXX科目 XXXXXXXXXX进行销项/进项税相关操作,所以税码XX无效
|
存储 关系型数据库 MySQL
利用MySQL一次性创建下个月的表格——存储过程实战
利用MySQL一次性创建下个月的表格——存储过程实战
196 0
利用MySQL一次性创建下个月的表格——存储过程实战
SAP MM 并非奇怪现象之MB5B报表查不到某一笔出库记录?
SAP MM 并非奇怪现象之MB5B报表查不到某一笔出库记录?
SAP MM 并非奇怪现象之MB5B报表查不到某一笔出库记录?