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