新增订单如何防止重复提交

        上篇文章写了幂等性防抖防止重复提交,可以有效阻止连续不停的点击提交,但是现在出现了一个情况,因为网络慢或者后台服务器慢导致提交的数据处理返回超时,等了大概1分钟甚至几分钟之后的提交,幂等性防抖就不起作用,订单生成多次。

       为了解决这个问题,我在进入订单页面就请求了一个UUID,除非是重新进入该页面UUID不会变动,然后提交时候带着这个UUID去请求,如果REIDS中该UUID存在那么判断重复请求,不存在那么后台接受到了将UUID存入REDIS中,如果处理失败那么还是要移除这个KEY。

参考代码如下:

String key= MessageFormat.format("INSERT:HYKCZD:{0}:{1}",vo.getTenantId(),vo.getDjbh());
        if(redisService.haskey(key)) throw new BusinessException("本页面请求已处理,请勿重复提交");
        redisService.setCacheObject(key,vo.getZdr()+"-"+getDateTime(),7, TimeUnit.DAYS);
        PosVipCzsz czsz=czszMapper.selectById(vo.getCzszId());
        if(czsz.getType()==0){
            vo.setJe1(czsz.getJe2());
            vo.setJe2(czsz.getJe());
            vo.setJe3(czsz.getJe1());
        }else{
            validObjectParam(vo, VpczdVO.class, "je2","je3");
            Double je1=add(vo.getJe2(), vo.getJe3());
            vo.setJe1(je1);
        }
        String host=getHost(),url="pos/vpczd/cz",json= JSON.toJSONString(vo);
        JsonResult jsonResult= doGetJsonResult$post(host, url, json);
        if(!jsonResult.isSuccess()) {
            redisService.deleteObject(key);
            throw new DataIntefaceException(jsonResult.getMsg());
        }
        return 1;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值