From da5b3386849e41a39a442ac4ec48049868ce8d0b Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 26 五月 2021 11:17:52 +0800 Subject: [PATCH] 礼金创建优化 --- service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java | 47 ++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 38 insertions(+), 9 deletions(-) diff --git a/service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java b/service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java index dd90b7a..e0d2e75 100644 --- a/service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java +++ b/service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java @@ -28,6 +28,7 @@ import org.apache.dubbo.config.annotation.Reference; import org.apache.dubbo.config.annotation.Service; import org.springframework.core.task.TaskExecutor; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.transaction.annotation.Transactional; import org.yeshi.utils.MoneyBigDecimalUtil; import org.yeshi.utils.StringUtil; @@ -39,6 +40,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.concurrent.TimeUnit; @Service(version = "1.0") @@ -68,9 +70,11 @@ @Resource private LiJinExpendRecordService liJinExpendRecordService; - @Resource private LiJinProviderTaoKeAccountManager liJinProviderTaoKeAccountManager; + + @Resource + private RedisTemplate redisTemplate; @Override public List<MoneyInfo> getMoneyInfo(String uid, List<TaoBaoGoodsBrief> goodsBriefList) { @@ -265,14 +269,22 @@ // 鎵ц鍒涘缓娣樼ぜ閲� LiJinCreateParam params = getLiJinCreateBaseParam(); - - TaoLijinCreateResultDTO taoLiJinDTO = executeTaoLiJin(goodsId, lijinAmount, params); - if (taoLiJinDTO == null) { - throw new LiJinException(1, "娣樺疂API鎺ㄥ箍绾㈠寘鍒涘缓澶辫触"); + //鐢ㄦ埛鍒涘缓娣樼ぜ閲戜负鍗曠嚎绋嬫搷浣� + String key = "createtblijin-" + uid; + if (redisTemplate.opsForValue().setIfAbsent(key, "1", 120, TimeUnit.SECONDS)) { + try { + TaoLijinCreateResultDTO taoLiJinDTO = executeTaoLiJin(goodsId, lijinAmount, params); + if (taoLiJinDTO == null) { + throw new LiJinException(1, "娣樺疂API鎺ㄥ箍绾㈠寘鍒涘缓澶辫触"); + } + //娣诲姞璐﹀彿鐨� + return addCreateSuccessRecord(uid, goodsId, lijinAmount, params.getTitle(), params.getNum(), taoLiJinDTO); + } finally { + redisTemplate.delete(key); + } + } else { + throw new LiJinException(LiJinException.CODE_SERVER_BUSY, "鏈嶅姟鍣ㄧ箒蹇欙紝璇风◢鍚庡啀璇�"); } - - //娣诲姞璐﹀彿鐨� - return addCreateSuccessRecord(uid, goodsId, lijinAmount, params.getTitle(), params.getNum(), taoLiJinDTO); } @@ -318,7 +330,7 @@ */ private TaoLijinCreateResultDTO executeTaoLiJin(Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinGoodsException, LiJinException { // 鏌ヨ渚涘簲鍟嗚处鍙蜂俊鎭� - List<LiJinProviderTaoKeAccount> listAccount = liJinProviderAccountService.listByProviderId(Constant.PROVIDER_DEFAULT_ID); + List<LiJinProviderTaoKeAccount> listAccount = liJinProviderAccountService.listValidByProviderId(Constant.PROVIDER_DEFAULT_ID, LiJinProviderTaoKeAccount.ERROR_CODE_NORMAL); if (listAccount == null || listAccount.size() == 0) { throw new LiJinException(1, "娌℃湁鍙敤鐨勪緵搴斿晢璐﹀彿"); } @@ -332,6 +344,23 @@ //鍒涘缓绀奸噾 return new TaoLijinCreateResultDTO(account, executeTaoLiJinAPI(goodsId, lijinAmount, params)); } catch (LiJinAccountException e) {// 璐﹀彿闂 + //鏇存柊璐﹀彿鐨勯敊璇俊鎭� + LiJinProviderTaoKeAccount update = new LiJinProviderTaoKeAccount(); + update.setId(account.getId()); + if (e.getCode() == LiJinAccountException.CODE_TLJ_NO_MONEY) { + //璧勯噾涓嶈冻 + update.setErrorCode(LiJinProviderTaoKeAccount.ERROR_CODE_MONEY_NOT_ENOUGH); + } else if (e.getCode() == LiJinAccountException.CODE_TLJ_NO_GOODS) { + //鍟嗗搧鏁伴噺涓嶈冻 + update.setErrorCode(LiJinProviderTaoKeAccount.ERROR_CODE_GOODS_NOT_ENOUGH); + } else { + //璐﹀彿寮傚父 + update.setErrorCode(LiJinProviderTaoKeAccount.ERROR_CODE_OTHER); + } + update.setErrorMsg(e.getMsg()); + update.setUpdateTime(new Date()); + liJinProviderAccountService.updateByPrimaryKeySelective(update); + // 閫氱煡鐩稿簲渚涘簲鍟� TODO executor.execute(new Runnable() { @Override -- Gitblit v1.8.0