From 70ed38bf585d3d5544778a477556b2f1a56be64b Mon Sep 17 00:00:00 2001
From: admin <2780501319@qq.com>
Date: 星期一, 05 七月 2021 23:54:49 +0800
Subject: [PATCH] 日志修改

---
 service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java |  124 ++++++++++++++++++++++++++++++++++++++---
 1 files changed, 114 insertions(+), 10 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 2d6d175..c9f7304 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
@@ -16,20 +16,28 @@
 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.util.Constant;
 import com.ks.lijin.utils.taobao.TaoBaoUtil;
 import com.ks.lijin.utils.taobao.TaoKeApiUtil;
+import com.ks.vip.exception.LijinBalanceException;
+import com.ks.vip.pojo.DO.UserLijinRecord;
 import com.ks.vip.pojo.DO.VipGradePotence;
 import com.ks.vip.pojo.Enums.VIPEnum;
+import com.ks.vip.service.LijinBalanceService;
 import com.ks.vip.service.VipCenterService;
 import com.ks.vip.service.VipGradePotenceService;
 import com.ks.vip.service.VipGradeService;
 import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
 import org.apache.dubbo.config.annotation.Reference;
 import org.apache.dubbo.config.annotation.Service;
+import org.slf4j.Logger;
+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;
@@ -47,6 +55,8 @@
 @Service(version = "1.0")
 public class LijinCreateServiceImpl implements LijinCreateService {
 
+    Logger logger = LoggerFactory.getLogger(LijinCreateService.class);
+
     @Resource(name = "taskExecutor")
     private TaskExecutor executor;
 
@@ -59,14 +69,17 @@
     @Resource
     private LiJinProviderAccountService liJinProviderAccountService;
 
-    @Reference(version = "1.0")
+    @Reference(version = "1.0", check = false)
     private VipCenterService vipCenterService;
 
-    @Reference(version = "1.0")
+    @Reference(version = "1.0", check = false)
     private VipGradePotenceService vipGradePotenceService;
 
-    @Reference(version = "1.0")
+    @Reference(version = "1.0", check = false)
     private VipGradeService vipGradeService;
+
+    @Reference(version = "1.0", check = false)
+    private LijinBalanceService lijinBalanceService;
 
     @Resource
     private LiJinExpendRecordService liJinExpendRecordService;
@@ -75,10 +88,16 @@
     private LiJinProviderTaoKeAccountManager liJinProviderTaoKeAccountManager;
 
     @Resource
-    private RedisTemplate redisTemplate;
+    private StringRedisTemplate redisTemplate;
 
     @Resource
     private LijinGoodsManager lijinGoodsManager;
+
+    @Resource
+    private LijinDangerGoodsManager lijinDangerGoodsManager;
+
+    @Resource
+    private LijinConfigManager lijinConfigManager;
 
     @Override
     public List<MoneyInfo> getMoneyInfo(String uid, List<TaoBaoGoodsBrief> goodsBriefList) {
@@ -182,11 +201,45 @@
     }
 
     @Override
-    public boolean userCanCreateTBLijin(String uid) throws LiJinUserException {
+    public int getTodayLeftCount(String uid, Date registerDate) {
+        VipGradePotence potence = vipCenterService.getVipPotence(uid);
+        if (potence == null) {
+            return 0;
+        }
+        // 姣忔棩鏈�澶ф鏁板垽鏂�
+        Integer numMax = potence.getTaolijinMaxNumber();
+        if (numMax == null || numMax.intValue() <= 0) {
+            return 0;
+        }
+        // 浣跨敤娆℃暟宸茬粡瓒呰繃鏈�澶ф鏁�
+        int numExpend = liJinExpendRecordService.countTodayNumByExpend(uid);
+        if (registerDate != null) {
+            //鍒ゆ柇鏂扮敤鎴�
+            String newerHour = lijinConfigManager.getConfigValue("newer-hour");
+            String dayPlusCount = lijinConfigManager.getConfigValue("newer-everyday-plus-lijin-count");
+            if (!StringUtil.isNullOrEmpty(newerHour) && !StringUtil.isNullOrEmpty(dayPlusCount)) {
+                //鏂扮敤鎴锋瘡鏃ラ檮鍔犳鏁�
+                if (System.currentTimeMillis() - registerDate.getTime() < 1000 * 60 * 60L * Integer.parseInt(dayPlusCount)) {
+                    numMax += Integer.parseInt(dayPlusCount);
+                }
+            }
+        }
+
+        if (numMax.intValue() > numExpend) {
+            return numMax.intValue() - numExpend;
+        } else {
+            return 0;
+        }
+    }
+
+
+    @Override
+    public boolean userCanCreateTBLijin(String uid, Date registerDate) throws LiJinUserException {
         VipGradePotence potence = vipCenterService.getVipPotence(uid);
         if (potence == null) {
             return false;
         }
+
 
         // 姣忔棩鏈�澶ф鏁板垽鏂�
         Integer numMax = potence.getTaolijinMaxNumber();
@@ -202,6 +255,18 @@
 
         // 浣跨敤娆℃暟宸茬粡瓒呰繃鏈�澶ф鏁�
         int numExpend = liJinExpendRecordService.countTodayNumByExpend(uid);
+        if (registerDate != null) {
+            //鍒ゆ柇鏂扮敤鎴�
+            String newerHour = lijinConfigManager.getConfigValue("newer-hour");
+            String dayPlusCount = lijinConfigManager.getConfigValue("newer-everyday-plus-lijin-count");
+            if (!StringUtil.isNullOrEmpty(newerHour) && !StringUtil.isNullOrEmpty(dayPlusCount)) {
+                //鏂扮敤鎴锋瘡鏃ラ檮鍔犳鏁�
+                if (System.currentTimeMillis() - registerDate.getTime() < 1000 * 60 * 60L * Integer.parseInt(dayPlusCount)) {
+                    numMax += Integer.parseInt(dayPlusCount);
+                }
+            }
+        }
+
         if (numMax.intValue() <= numExpend) {
             throw new LiJinUserException(LiJinUserException.CODE_USER_CREATE_NUM_LIMIT, "鐢ㄦ埛鍒涘缓娣樼ぜ閲戠殑娆℃暟瓒呴檺");
         }
@@ -225,6 +290,14 @@
         if (potence == null) {
             return false;
         }
+        //鏌ヨ绀奸噾浣欓
+        BigDecimal balance = lijinBalanceService.getBalance(uid);
+        if (balance != null) {
+            if (money.compareTo(balance) > 0) {
+                throw new LiJinUserException(LiJinUserException.CODE_USER_BALANCE_NOT_ENOUGH, "绀奸噾浣欓涓嶈冻");
+            }
+        }
+
 
         // 姣忔棩鏈�澶ф鏁板垽鏂�
         Integer numMax = potence.getTaolijinMaxNumber();
@@ -263,8 +336,20 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public LiJinExpendRecord createTBLijin(String uid, Long goodsId) throws LiJinException, LiJinGoodsException, LiJinUserException, LiJinAmountException {
+        return createTBLijin(uid, null, goodsId);
+    }
 
-        userCanCreateTBLijin(uid);
+    @Override
+    public LiJinExpendRecord createTBLijin(String uid, Date registerDate, Long auctionId) throws LiJinException, LiJinGoodsException, LiJinUserException, LiJinAmountException {
+
+        //鐢ㄦ埛鏄惁鏈夊垱寤烘潈闄�
+        userCanCreateTBLijin(uid, registerDate);
+        //鍟嗗搧鏄惁鍦ㄥ嵄闄╁晢鍝佷腑
+        boolean dangerous = lijinDangerGoodsManager.isDangerous(auctionId + "", 1);
+        if (dangerous) {
+            throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_NOT_SUPPORT, "璇ュ晢鍝佹殏鏃犳硶鍒涘缓绀奸噾");
+        }
+
 
         // 鑾峰彇鐢ㄦ埛绛夌骇
         VIPEnum vipRank = vipCenterService.getVIPEnumByUid(uid);
@@ -279,7 +364,7 @@
         //娣樼ぜ閲戝垱寤�
         TaoBaoGoodsBrief goods = null;
         try {
-            goods = TaoKeApiUtil.searchGoodsDetail(goodsId);
+            goods = TaoKeApiUtil.searchGoodsDetail(auctionId);
         } catch (TaoBaoGoodsDownException e) {
             throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_OFFLINE, "鍟嗗搧涓嬬嚎");
         }
@@ -290,6 +375,14 @@
         // 鍒涘缓鐨勬窐绀奸噾-閲戦
         BigDecimal lijinAmount = getTBLijinAmount(goods, vipRank);
 
+        //鏌ヨ绀奸噾浣欓
+        BigDecimal balance = lijinBalanceService.getBalance(uid);
+        if (balance != null && lijinAmount != null) {
+            if (lijinAmount.compareTo(balance) > 0) {
+                throw new LiJinUserException(LiJinUserException.CODE_USER_BALANCE_NOT_ENOUGH, "绀奸噾浣欓涓嶈冻");
+            }
+        }
+
         // 鎵ц鍒涘缓娣樼ぜ閲�
         LiJinCreateParam params = getLiJinCreateBaseParam();
 
@@ -298,21 +391,25 @@
         if (redisTemplate.opsForValue().setIfAbsent(key, "1", 120, TimeUnit.SECONDS)) {
             Date now = new Date();
             try {
-                TaoLijinCreateResultDTO taoLiJinDTO = executeTaoLiJin(goodsId, lijinAmount, params);
+                TaoLijinCreateResultDTO taoLiJinDTO = executeTaoLiJin(auctionId, lijinAmount, params);
                 if (taoLiJinDTO == null) {
                     throw new LiJinException(1, "娣樺疂API鎺ㄥ箍绾㈠寘鍒涘缓澶辫触");
                 }
                 //娣诲姞璐﹀彿鐨�
-                return addCreateSuccessRecord(uid, goodsId, lijinAmount, params.getTitle(), params.getNum(), taoLiJinDTO);
+                return addCreateSuccessRecord(uid, auctionId, lijinAmount, params.getTitle(), params.getNum(), taoLiJinDTO);
             } catch (LiJinGoodsException e) {
                 if (e.getCode() == LiJinGoodsException.CODE_GOODS_CREATED_FULL) {
-                    lijinGoodsManager.createdFullToday(goodsId, now);
+                    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, "鏈嶅姟鍣ㄧ箒蹇欙紝璇风◢鍚庡啀璇�");
         }
     }
@@ -344,6 +441,13 @@
         liJinExpendRecordMapper.insertSelective(record);
         //娣诲姞
         liJinProviderTaoKeAccountManager.createLijinSuccess(taoLiJinDTO.getAccount().getId(), goodsId, lijinAmount.multiply(new BigDecimal(num)), now);
+        //绀奸噾浣欓鎵i櫎
+        try {
+            lijinBalanceService.consumeLijin(uid, lijinAmount, "璐墿鎶电幇", UserLijinRecord.Category.createGoodsLijin.name(), record.getId() + "");
+        } catch (LijinBalanceException e) {
+            e.printStackTrace();
+        }
+
         return record;
     }
 

--
Gitblit v1.8.0