From 29918ba877731850d001fb2d1a3f3774698241c1 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期六, 10 七月 2021 18:14:18 +0800 Subject: [PATCH] 礼金bug修复 --- service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java | 83 +++++++++++++++++++++++++++-------------- 1 files changed, 54 insertions(+), 29 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 c9f7304..66c3a61 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 @@ -1,10 +1,11 @@ package com.ks.lijin.service.remote; + import com.ks.lijin.exception.*; import com.ks.lijin.mapper.LiJinExpendRecordMapper; import com.ks.lijin.pojo.DO.LiJinExpendRecord; -import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount; import com.ks.lijin.pojo.DO.LiJinProviderNotice; +import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount; import com.ks.lijin.pojo.DTO.LiJinCreateParam; import com.ks.lijin.pojo.DTO.MoneyInfo; import com.ks.lijin.pojo.DTO.TaoLijinCreateResultDTO; @@ -15,10 +16,7 @@ import com.ks.lijin.service.LiJinProviderAccountService; import com.ks.lijin.service.LiJinProviderNoticeService; import com.ks.lijin.service.LijinCreateService; -import com.ks.lijin.service.manager.LiJinProviderTaoKeAccountManager; -import com.ks.lijin.service.manager.LijinConfigManager; -import com.ks.lijin.service.manager.LijinDangerGoodsManager; -import com.ks.lijin.service.manager.LijinGoodsManager; +import com.ks.lijin.service.manager.*; import com.ks.lijin.util.Constant; import com.ks.lijin.utils.taobao.TaoBaoUtil; import com.ks.lijin.utils.taobao.TaoKeApiUtil; @@ -37,10 +35,11 @@ import org.slf4j.LoggerFactory; import org.springframework.core.task.TaskExecutor; import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.transaction.annotation.Transactional; import org.yeshi.utils.MoneyBigDecimalUtil; import org.yeshi.utils.StringUtil; +import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisPool; import javax.annotation.Resource; import java.math.BigDecimal; @@ -88,7 +87,7 @@ private LiJinProviderTaoKeAccountManager liJinProviderTaoKeAccountManager; @Resource - private StringRedisTemplate redisTemplate; + private RedisTemplate redisTemplate; @Resource private LijinGoodsManager lijinGoodsManager; @@ -97,7 +96,13 @@ private LijinDangerGoodsManager lijinDangerGoodsManager; @Resource + private LijinDangerSellerManager lijinDangerSellerManager; + + @Resource private LijinConfigManager lijinConfigManager; + + @Resource + private JedisPool jedisPool; @Override public List<MoneyInfo> getMoneyInfo(String uid, List<TaoBaoGoodsBrief> goodsBriefList) { @@ -350,7 +355,6 @@ throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_NOT_SUPPORT, "璇ュ晢鍝佹殏鏃犳硶鍒涘缓绀奸噾"); } - // 鑾峰彇鐢ㄦ埛绛夌骇 VIPEnum vipRank = vipCenterService.getVIPEnumByUid(uid); if (vipRank == null) { @@ -372,6 +376,11 @@ throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_OFFLINE, "鍟嗗搧涓嬬嚎"); } + dangerous = lijinDangerSellerManager.isDangerous(goods.getSellerId() + "", 1); + if (dangerous) { + throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_NOT_SUPPORT, "璇ュ簵閾哄晢鍝佹殏鏃犳硶鍒涘缓绀奸噾"); + } + // 鍒涘缓鐨勬窐绀奸噾-閲戦 BigDecimal lijinAmount = getTBLijinAmount(goods, vipRank); @@ -388,29 +397,38 @@ //鐢ㄦ埛鍒涘缓娣樼ぜ閲戜负鍗曠嚎绋嬫搷浣� String key = "createtblijin-" + uid; - if (redisTemplate.opsForValue().setIfAbsent(key, "1", 120, TimeUnit.SECONDS)) { - Date now = new Date(); - try { - TaoLijinCreateResultDTO taoLiJinDTO = executeTaoLiJin(auctionId, lijinAmount, params); - if (taoLiJinDTO == null) { - throw new LiJinException(1, "娣樺疂API鎺ㄥ箍绾㈠寘鍒涘缓澶辫触"); + + Jedis jedis = jedisPool.getResource(); + try { + if (jedis.setnx(key, "1") > 0) { + jedis.expire(key, 120); + logger.error("娣樼ぜ閲戝垱寤猴紝鐢ㄦ埛閿佸畾鎴愬姛 key:{}", key); + Date now = new Date(); + try { + TaoLijinCreateResultDTO taoLiJinDTO = executeTaoLiJin(auctionId, lijinAmount, params); + if (taoLiJinDTO == null) { + throw new LiJinException(1, "娣樺疂API鎺ㄥ箍绾㈠寘鍒涘缓澶辫触"); + } + logger.info("娣樼ぜ閲戝垱寤烘垚鍔�"); + //娣诲姞璐﹀彿鐨� + return addCreateSuccessRecord(uid, auctionId, lijinAmount, params.getTitle(), params.getNum(), taoLiJinDTO); + } catch (LiJinGoodsException e) { + if (e.getCode() == LiJinGoodsException.CODE_GOODS_CREATED_FULL) { + lijinGoodsManager.createdFullToday(auctionId, now); + } + jedis.del(key); + logger.info("娣樼ぜ閲戝垱寤猴紝鍒犻櫎閿佸畾鎴愬姛1 key:{}", key); + throw e; + } finally { + jedis.del(key); + logger.info("娣樼ぜ閲戝垱寤猴紝鍒犻櫎閿佸畾鎴愬姛2 key:{}", key); } - //娣诲姞璐﹀彿鐨� - return addCreateSuccessRecord(uid, auctionId, lijinAmount, params.getTitle(), params.getNum(), taoLiJinDTO); - } catch (LiJinGoodsException e) { - if (e.getCode() == LiJinGoodsException.CODE_GOODS_CREATED_FULL) { - lijinGoodsManager.createdFullToday(auctionId, now); - } - redisTemplate.delete(key); - logger.info("娣樼ぜ閲戝垱寤猴紝鍒犻櫎閿佸畾鎴愬姛1 key:{}",key); - throw e; - } finally { - redisTemplate.delete(key); - logger.info("娣樼ぜ閲戝垱寤猴紝鍒犻櫎閿佸畾鎴愬姛2 key:{}",key); + } else { + logger.error("娣樼ぜ閲戝垱寤猴紝鐢ㄦ埛閿佸畾澶辫触 key:{}", key); + throw new LiJinException(LiJinException.CODE_SERVER_BUSY, "鏈嶅姟鍣ㄧ箒蹇欙紝璇风◢鍚庡啀璇�"); } - } else { - logger.error("娣樼ぜ閲戝垱寤猴紝鐢ㄦ埛閿佸畾澶辫触 key:{}",key); - throw new LiJinException(LiJinException.CODE_SERVER_BUSY, "鏈嶅姟鍣ㄧ箒蹇欙紝璇风◢鍚庡啀璇�"); + } finally { + jedis.close(); } } @@ -439,13 +457,18 @@ record.setSendUrl(taoLiJinDTO.getTaoLiJin().getSendUrl()); record.setCreateTime(new Date()); liJinExpendRecordMapper.insertSelective(record); + logger.info("娣诲姞鍒板垱寤鸿褰曟垚鍔�"); + //娣诲姞 liJinProviderTaoKeAccountManager.createLijinSuccess(taoLiJinDTO.getAccount().getId(), goodsId, lijinAmount.multiply(new BigDecimal(num)), now); + logger.info("鎵ц娣樼ぜ閲戝垱寤烘垚鍔熶簨浠舵垚鍔�"); //绀奸噾浣欓鎵i櫎 try { lijinBalanceService.consumeLijin(uid, lijinAmount, "璐墿鎶电幇", UserLijinRecord.Category.createGoodsLijin.name(), record.getId() + ""); + logger.info("鎵i櫎璐︽埛浣欓鎴愬姛"); } catch (LijinBalanceException e) { e.printStackTrace(); + logger.info("鎵i櫎璐︽埛浣欓澶辫触锛歿}", e.getMessage()); } return record; @@ -468,6 +491,7 @@ if (listAccount == null || listAccount.size() == 0) { throw new LiJinException(1, "娌℃湁鍙敤鐨勪緵搴斿晢璐﹀彿"); } + logger.info("鑾峰彇渚涘簲鍟嗘窐绀奸噾璐﹀彿鎴愬姛"); // 閬嶅巻璐﹀彿 鐢ㄥ彲浣跨敤璐﹀彿 for (LiJinProviderTaoKeAccount account : listAccount) { @@ -478,6 +502,7 @@ //鍒涘缓绀奸噾 return new TaoLijinCreateResultDTO(account, executeTaoLiJinAPI(goodsId, lijinAmount, params)); } catch (LiJinAccountException e) {// 璐﹀彿闂 + logger.info("鑾峰彇渚涘簲鍟嗘窐绀艰处鍙峰嚭閿欙細{}", e.getMessage()); //鏇存柊璐﹀彿鐨勯敊璇俊鎭� LiJinProviderTaoKeAccount update = new LiJinProviderTaoKeAccount(); update.setId(account.getId()); -- Gitblit v1.8.0