重複借還款重複劃扣解決思路與代碼,借款鎖人,還款鎖單

重複借款問題

解決方案:redis鎖

Talk is cheap,Show me the code 別叨叨,看代碼

生產核心代碼

   String creatOrderKey = "Loan:" + loanCreateReqDto.getUserId(); //鎖用戶id

    Long currentTime = System.currentTimeMillis();

//userId放入redis false key之前已經存在會返回false,不存在 加鎖成功true(獲取到鎖) 

    boolean lock = redisTemplate.opsForValue().setIfAbsent(creatOrderKey, currentTime);

try {

        if (lock) {//加鎖成功

//校驗各種信息,邏輯處理,生成借款訂單

            logger.info("借款:結果:resultDto:{}",JSON.toJSONString(resultDto));

        } else {//加鎖失敗

            logger.info("任務已在進行中,,稍後再試");

        }

    } catch (Exception e) {

        logger.info("借款異常 ", e);

    } finally {

        if (lock) {

            redisTemplate.delete(creatOrderKey);

            logger.info("任務結束,釋放鎖!");

        } else {

            logger.info("(當前線程)沒有獲取到鎖,無需釋放鎖!");

            Long createTime = (Long) redisTemplate.opsForValue().get(creatOrderKey);

         
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章