From 745320cbb4edfa4fbc8f0f95483a4ee7893d5769 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 22 四月 2021 20:18:08 +0800
Subject: [PATCH] 3.9.2完善

---
 src/main/java/com/yeshi/buwan/pptv/PPTVVipManager.java |   54 ++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 40 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/yeshi/buwan/pptv/PPTVVipManager.java b/src/main/java/com/yeshi/buwan/pptv/PPTVVipManager.java
index b29dc83..109505b 100644
--- a/src/main/java/com/yeshi/buwan/pptv/PPTVVipManager.java
+++ b/src/main/java/com/yeshi/buwan/pptv/PPTVVipManager.java
@@ -1,15 +1,22 @@
 package com.yeshi.buwan.pptv;
 
 import com.yeshi.buwan.domain.user.LoginUserExtra;
-import com.yeshi.buwan.domain.vip.OrderType;
 import com.yeshi.buwan.domain.vip.OrderRecord;
+import com.yeshi.buwan.domain.vip.OrderType;
 import com.yeshi.buwan.domain.vip.VIPPrice;
+import com.yeshi.buwan.domain.vip.VideoBuyRecord;
 import com.yeshi.buwan.exception.PPTVException;
+import com.yeshi.buwan.exception.ParamsException;
+import com.yeshi.buwan.exception.order.OrderException;
 import com.yeshi.buwan.exception.vip.VIPException;
+import com.yeshi.buwan.exception.vip.VideoBuyRecordException;
+import com.yeshi.buwan.pptv.entity.PPTVProgram;
 import com.yeshi.buwan.pptv.entity.PPTVSeries;
 import com.yeshi.buwan.service.inter.LoginUserService;
 import com.yeshi.buwan.service.inter.juhe.PPTVService;
 import com.yeshi.buwan.service.inter.vip.VIPPriceService;
+import com.yeshi.buwan.service.inter.vip.VideoBuyRecordService;
+import com.yeshi.buwan.util.RedisManager;
 import com.yeshi.buwan.util.StringUtil;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
@@ -30,6 +37,12 @@
 
     @Resource
     private PPTVService pptvService;
+
+    @Resource
+    private VideoBuyRecordService videoBuyRecordService;
+
+    @Resource
+    private RedisManager redisManager;
 
     /**
      * 璐拱VIP
@@ -69,6 +82,9 @@
         if (!success) {
             throw new VIPException(21, "PPTV浼氬憳璐拱澶辫触");
         }
+
+        redisManager.cacheCommonString(PPTVUtil.getBuyGoodsCacheKey(record.getUid(), price.getPptvGoodsNo()), "1", 60);
+
     }
 
 
@@ -80,42 +96,52 @@
      * @throws VIPException
      */
     @Transactional(rollbackFor = Exception.class)
-    public void buyVideo(OrderRecord record) throws PPTVException, VIPException {
+    public void buyVideo(OrderRecord record) throws PPTVException, OrderException, VideoBuyRecordException {
         if (record.getState() != OrderRecord.STATE_PAY) {
-            throw new VIPException(11, "灏氭湭鏀粯鎴愬姛");
+            throw new OrderException(11, "灏氭湭鏀粯鎴愬姛");
         }
 
         if (record.getOrderType() != OrderType.video) {
-            throw new VIPException(41, "涓嶆槸鍗曠墖璁㈠崟");
+            throw new OrderException(41, "涓嶆槸鍗曠墖璁㈠崟");
         }
 
-        PPTVSeries pptvSeries = pptvService.getSeriesDetail(record.getVideoInfoId());
-        if (pptvSeries == null) {
-            throw new VIPException(41, "褰辩墖淇℃伅鑾峰彇澶辫触");
-        }
+        PPTVProgram program = pptvService.selectProgramById(record.getVideoVid());
 
-        if (pptvSeries.getGoodsInfo() == null || StringUtil.isNullOrEmpty(pptvSeries.getGoodsInfo().getGoodsNo())) {
-            throw new VIPException(41, "褰辩墖鍟嗗搧淇℃伅涓虹┖");
+
+        if (program.getGoodsInfo() == null || StringUtil.isNullOrEmpty(program.getGoodsInfo().getGoodsNo())) {
+            throw new PPTVException(41, "褰辩墖鍟嗗搧淇℃伅涓虹┖");
         }
 
 
         LoginUserExtra extra = loginUserService.getExtra(record.getUid());
         if (extra == null) {
-            throw new VIPException(13, "鐢ㄦ埛淇℃伅鑾峰彇澶辫触");
+            throw new OrderException(13, "鐢ㄦ埛淇℃伅鑾峰彇澶辫触");
         }
 
         if (StringUtil.isNullOrEmpty(extra.getPptvUid())) {
-            throw new VIPException(14, "pptvuid鑾峰彇澶辫触");
+            throw new OrderException(14, "pptvuid鑾峰彇澶辫触");
         }
 
         if (StringUtil.isNullOrEmpty(extra.getPptvOpenId())) {
             loginUserService.updatePPTVOpenId(record.getUid());
         }
 
-        boolean success = PPTVApiUtil.buyGoods(extra.getPptvOpenId(), "buwan_" + record.getId(), pptvSeries.getGoodsInfo().getGoodsNo(), record.getPayTime());
+        boolean success = PPTVApiUtil.buyGoods(extra.getPptvOpenId(), "buwan_" + record.getId(), program.getGoodsInfo().getGoodsNo(), record.getPayTime());
         if (!success) {
-            throw new VIPException(21, "PPTV浼氬憳璐拱澶辫触");
+            throw new VideoBuyRecordException(21, "PPTV鍗曠墖璐拱澶辫触");
         }
+
+        PPTVSeries series = pptvService.selectSeriesBySeriesCode(record.getVideoCid());
+
+        VideoBuyRecord buyRecord = VideoBuyRecord.create(record, series.getInfoID(), series.getSeriesCode(), program.getProgramCode(), program.getGoodsInfo().getGoodsNo());
+
+        try {
+            videoBuyRecordService.addRecord(buyRecord);
+        } catch (ParamsException e) {
+            throw new VideoBuyRecordException(ParamsException.CODE_PARAMS_NOT_ENOUGH, e.getMessage());
+        }
+
+        redisManager.cacheCommonString(PPTVUtil.getBuyGoodsCacheKey(buyRecord.getLoginUid(), buyRecord.getGoodsNo()), "1", 60);
     }
 
 

--
Gitblit v1.8.0