From 19533a17aa55fafc70d0a385928e785cb50e1ebc Mon Sep 17 00:00:00 2001 From: admin <2780501319@qq.com> Date: 星期五, 30 七月 2021 02:05:14 +0800 Subject: [PATCH] 爱奇艺视频更新 --- src/main/java/com/yeshi/buwan/pptv/PPTVVipManager.java | 92 ++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 89 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/yeshi/buwan/pptv/PPTVVipManager.java b/src/main/java/com/yeshi/buwan/pptv/PPTVVipManager.java index cd91b68..109505b 100644 --- a/src/main/java/com/yeshi/buwan/pptv/PPTVVipManager.java +++ b/src/main/java/com/yeshi/buwan/pptv/PPTVVipManager.java @@ -1,14 +1,25 @@ package com.yeshi.buwan.pptv; import com.yeshi.buwan.domain.user.LoginUserExtra; -import com.yeshi.buwan.domain.vip.VIPOrderRecord; +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; import javax.annotation.Resource; @@ -24,15 +35,30 @@ @Resource private LoginUserService loginUserService; + @Resource + private PPTVService pptvService; + + @Resource + private VideoBuyRecordService videoBuyRecordService; + + @Resource + private RedisManager redisManager; + /** * 璐拱VIP + * * @param record * @throws PPTVException * @throws VIPException */ - public void buyVIP(VIPOrderRecord record) throws PPTVException, VIPException { - if (record.getState() != VIPOrderRecord.STATE_PAY) { + @Transactional(rollbackFor = Exception.class) + public void buyVIP(OrderRecord record) throws PPTVException, VIPException { + if (record.getState() != OrderRecord.STATE_PAY) { throw new VIPException(11, "灏氭湭鏀粯鎴愬姛"); + } + + if (record.getOrderType() != OrderType.vip) { + throw new VIPException(41, "涓嶆槸VIP璁㈠崟"); } VIPPrice price = vipPriceService.selectByType(record.getType()); if (price == null) { @@ -56,6 +82,66 @@ if (!success) { throw new VIPException(21, "PPTV浼氬憳璐拱澶辫触"); } + + redisManager.cacheCommonString(PPTVUtil.getBuyGoodsCacheKey(record.getUid(), price.getPptvGoodsNo()), "1", 60); + + } + + + /** + * 璐拱鍗曠墖 + * + * @param record + * @throws PPTVException + * @throws VIPException + */ + @Transactional(rollbackFor = Exception.class) + public void buyVideo(OrderRecord record) throws PPTVException, OrderException, VideoBuyRecordException { + if (record.getState() != OrderRecord.STATE_PAY) { + throw new OrderException(11, "灏氭湭鏀粯鎴愬姛"); + } + + if (record.getOrderType() != OrderType.video) { + throw new OrderException(41, "涓嶆槸鍗曠墖璁㈠崟"); + } + + PPTVProgram program = pptvService.selectProgramById(record.getVideoVid()); + + + if (program.getGoodsInfo() == null || StringUtil.isNullOrEmpty(program.getGoodsInfo().getGoodsNo())) { + throw new PPTVException(41, "褰辩墖鍟嗗搧淇℃伅涓虹┖"); + } + + + LoginUserExtra extra = loginUserService.getExtra(record.getUid()); + if (extra == null) { + throw new OrderException(13, "鐢ㄦ埛淇℃伅鑾峰彇澶辫触"); + } + + if (StringUtil.isNullOrEmpty(extra.getPptvUid())) { + throw new OrderException(14, "pptvuid鑾峰彇澶辫触"); + } + + if (StringUtil.isNullOrEmpty(extra.getPptvOpenId())) { + loginUserService.updatePPTVOpenId(record.getUid()); + } + + boolean success = PPTVApiUtil.buyGoods(extra.getPptvOpenId(), "buwan_" + record.getId(), program.getGoodsInfo().getGoodsNo(), record.getPayTime()); + if (!success) { + 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