开发过程中遇到的问题,持续记录

文章讨论了API接口设计中的规范,强调日期应以JSON格式返回,以及在处理并发请求时,如何避免订单号因时间戳重复而引发的系统异常,提倡使用UUID或其他唯一标识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.结果集返回中 date 必须是json 格式,返回对象,msg 返回信息。

场景:对外接口,data 返回的是msg,对方解析失败。

示例 :

  public static BaseResult successResult(Object data,String msg) {
        BaseResult result = new BaseResult();
        result.setTimestamp(timestamp());
        result.setResultCode(BizExceptionCodeEumn.SUCCESS);
        result.setResponse(data);
        result.setMsg(msg);
        return result;
    }
    //错误返回
  return BaseResult.successResult("已接收到发票申请请求");

2024.02.21 记录

2.并发生成单号、流水号等 不能根据时间戳来生成。可以通过UUID 或其他不会重复的字段

场景:使用时间戳来作为订单号。并发请求的时候导致订单号重复,引起系统异常

正例:

public String generateOrderNo(String userId) {
        int count = -1;
        String hashCode = String.valueOf(-userId.hashCode());
        String num = hashCode.substring(hashCode.length() - 6);
        String caseNo = "";
        do {
            caseNo = "PC" + DateUtils.getDate("yyMMdd") + num + StringUtils.createRandom(true, 8);
            count = super.count(Wrappers.<DidiCancelCaseInfo>lambdaQuery().eq(DidiCancelCaseInfo::getInscompanyCaseNo, caseNo));
        } while (count != 0);
        return caseNo;
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值