From 61229e527688452c3dc67a219c6017e034ec7dd6 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期六, 29 五月 2021 14:28:28 +0800 Subject: [PATCH] 礼金创建优化 --- service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java | 55 ++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 42 insertions(+), 13 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 e0d2e75..6ca1517 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,6 +16,7 @@ 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.LijinGoodsManager; import com.ks.lijin.util.Constant; import com.ks.lijin.utils.taobao.TaoBaoUtil; import com.ks.lijin.utils.taobao.TaoKeApiUtil; @@ -76,6 +77,9 @@ @Resource private RedisTemplate redisTemplate; + @Resource + private LijinGoodsManager lijinGoodsManager; + @Override public List<MoneyInfo> getMoneyInfo(String uid, List<TaoBaoGoodsBrief> goodsBriefList) { VIPEnum vipRank = null; @@ -100,7 +104,6 @@ } //璁$畻杩斿埄姣斾緥 BigDecimal rebateRate = potence.getRebatePercent(); - BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(goods); BigDecimal fanliMoney = TaoBaoUtil.getGoodsHongBaoMoney(goods, rebateRate, false); moneyInfo.setFanliAmount(fanliMoney); moneyInfo.setFirstOrderAmount(null); @@ -113,6 +116,12 @@ @Override public BigDecimal getTBLijinAmount(Long actionId, String uid) throws LiJinGoodsException, LiJinUserException, LiJinAmountException { + + if (!lijinGoodsManager.todayCanCreate(actionId)) { + throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_CREATED_FULL, "浠婃棩绀奸噾鍒涘缓娆℃暟宸茶揪涓婇檺"); + } + + // 鑾峰彇鐢ㄦ埛绛夌骇 VIPEnum vipRank = vipCenterService.getVIPEnumByUid(uid); if (vipRank == null) { @@ -121,6 +130,10 @@ // 1銆佸垽鏂晢鍝� 骞惰绠楅噾棰� BigDecimal money = getTBLijinAmount(actionId, vipRank); + + if (!lijinGoodsManager.isLijinMoneyAvaiable(money)) { + throw new LiJinAmountException(LiJinAmountException.CODE_LIJIN_AMOUNT_OUTOFRANGE, "绀奸噾鏈湪瑙勫畾鑼冨洿鍐�"); + } // 2銆佸垽鏂敤鎴� boolean result = userCanCreateTBLijin(uid, money); @@ -133,6 +146,10 @@ @Override public BigDecimal getTBLijinAmount(Long actionId, VIPEnum vipRank) throws LiJinGoodsException, LiJinAmountException { + if (!lijinGoodsManager.todayCanCreate(actionId)) { + throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_CREATED_FULL, "浠婃棩绀奸噾鍒涘缓娆℃暟宸茶揪涓婇檺"); + } + //鑾峰彇鍟嗗搧鍙垱寤虹殑娣樼ぜ閲戦潰棰濓紝鑻ヤ笉鑳藉垱寤洪渶瑕佹姏鍑虹浉鍏崇殑寮傚父锛�1.鍟嗗搧涓嶆敮鎸佺ぜ閲戝垱寤猴級 BigDecimal money = null; // 1銆佸垽鏂晢鍝� @@ -149,17 +166,17 @@ //鍒稿悗浠� * 鍟嗗搧浣i噾姣斾緥 * 杩斿埄姣斾緥 VipGradePotence potence = vipGradePotenceService.getPotenceByVipEnum(vipRank); - if (potence != null && potence.getRebatePercent() != null) { - money = TaoBaoUtil.getGoodsHongBaoMoney(goods, potence.getRebatePercent(), false); + if (potence != null && potence.getTaolijinPercent() != null) { + money = TaoBaoUtil.getGoodsHongBaoMoney(goods, potence.getTaolijinPercent(), false); } } catch (TaoBaoGoodsDownException e) { throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_OFFLINE, "鍟嗗搧涓嬬嚎"); } - // 閲戦涓虹┖ 鎴栬�呭皬浜庨浂 鍒欐姏鍑哄紓甯� - if (money == null || money.compareTo(BigDecimal.valueOf(0)) <= 0) { - throw new LiJinAmountException(LiJinAmountException.CODE_LIJIN_AMOUNT_OUTOFRANGE, "绀奸噾鍒涘缓鐨勯噾棰濊秴鍑鸿瀹氳寖鍥�"); + if (!lijinGoodsManager.isLijinMoneyAvaiable(money)) { + throw new LiJinAmountException(LiJinAmountException.CODE_LIJIN_AMOUNT_OUTOFRANGE, "绀奸噾鏈湪瑙勫畾鑼冨洿鍐�"); } + return money; } @@ -246,6 +263,9 @@ @Override @Transactional(rollbackFor = Exception.class) public LiJinExpendRecord createTBLijin(String uid, Long goodsId) throws LiJinException, LiJinGoodsException, LiJinUserException, LiJinAmountException { + + userCanCreateTBLijin(uid); + // 鑾峰彇鐢ㄦ埛绛夌骇 VIPEnum vipRank = vipCenterService.getVIPEnumByUid(uid); if (vipRank == null) { @@ -272,6 +292,7 @@ //鐢ㄦ埛鍒涘缓娣樼ぜ閲戜负鍗曠嚎绋嬫搷浣� String key = "createtblijin-" + uid; if (redisTemplate.opsForValue().setIfAbsent(key, "1", 120, TimeUnit.SECONDS)) { + Date now = new Date(); try { TaoLijinCreateResultDTO taoLiJinDTO = executeTaoLiJin(goodsId, lijinAmount, params); if (taoLiJinDTO == null) { @@ -279,6 +300,11 @@ } //娣诲姞璐﹀彿鐨� return addCreateSuccessRecord(uid, goodsId, lijinAmount, params.getTitle(), params.getNum(), taoLiJinDTO); + } catch (LiJinGoodsException e) { + if (e.getCode() == LiJinGoodsException.CODE_GOODS_CREATED_FULL) { + lijinGoodsManager.createdFullToday(goodsId, now); + } + throw e; } finally { redisTemplate.delete(key); } @@ -328,7 +354,7 @@ * @throws LiJinGoodsException * @throws LiJinException */ - private TaoLijinCreateResultDTO executeTaoLiJin(Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinGoodsException, LiJinException { + private TaoLijinCreateResultDTO executeTaoLiJin(Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinGoodsException, LiJinException, LiJinAmountException { // 鏌ヨ渚涘簲鍟嗚处鍙蜂俊鎭� List<LiJinProviderTaoKeAccount> listAccount = liJinProviderAccountService.listValidByProviderId(Constant.PROVIDER_DEFAULT_ID, LiJinProviderTaoKeAccount.ERROR_CODE_NORMAL); if (listAccount == null || listAccount.size() == 0) { @@ -385,7 +411,7 @@ } - private TaoLiJinDTO executeTaoLiJinAPI(Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinException, LiJinGoodsException, LiJinAccountException { + private TaoLiJinDTO executeTaoLiJinAPI(Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinException, LiJinGoodsException, LiJinAccountException, LiJinAmountException { return TaoKeApiUtil.createTaoLiJin(goodsId, params.getTitle(), lijinAmount, params.getNum(), params.getSendStartTime(), params.getSendEndTime(), params.getUseStartTime(), params.getUseEndTime(), new TaoKeAppInfo(params.getAppkey(), params.getAppsecret(), params.getPid())); @@ -403,6 +429,9 @@ */ private BigDecimal getTBLijinAmount(TaoBaoGoodsBrief goods, VIPEnum vipRank) throws LiJinGoodsException, LiJinAmountException { + if (!lijinGoodsManager.todayCanCreate(goods.getAuctionId())) { + throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_CREATED_FULL, "浠婃棩绀奸噾鍒涘缓娆℃暟宸茶揪涓婇檺"); + } //鑾峰彇鍟嗗搧鍙垱寤虹殑娣樼ぜ閲戦潰棰濓紝鑻ヤ笉鑳藉垱寤洪渶瑕佹姏鍑虹浉鍏崇殑寮傚父锛�1.鍟嗗搧涓嶆敮鎸佺ぜ閲戝垱寤猴級 BigDecimal money = null; @@ -413,14 +442,14 @@ //鍒稿悗浠� * 鍟嗗搧浣i噾姣斾緥 * 杩斿埄姣斾緥 VipGradePotence potence = vipGradePotenceService.getPotenceByVipEnum(vipRank); - if (potence != null && potence.getRebatePercent() != null) { - money = TaoBaoUtil.getGoodsHongBaoMoney(goods, potence.getRebatePercent(), false); + if (potence != null && potence.getTaolijinPercent() != null) { + money = TaoBaoUtil.getGoodsHongBaoMoney(goods, potence.getTaolijinPercent(), false); } - // 閲戦涓虹┖ 鎴栬�呭皬浜庨浂 鍒欐姏鍑哄紓甯� - if (money == null || money.compareTo(BigDecimal.valueOf(0)) <= 0) { - throw new LiJinAmountException(LiJinAmountException.CODE_LIJIN_AMOUNT_OUTOFRANGE, "绀奸噾鍒涘缓鐨勯噾棰濊秴鍑鸿瀹氳寖鍥�"); + if (!lijinGoodsManager.isLijinMoneyAvaiable(money)) { + throw new LiJinAmountException(LiJinAmountException.CODE_LIJIN_AMOUNT_OUTOFRANGE, "绀奸噾鏈湪瑙勫畾鑼冨洿鍐�"); } + return money; } -- Gitblit v1.8.0