From c960041c8912c4118cb45317e58384286c7fb4d1 Mon Sep 17 00:00:00 2001 From: YJ <YJ> Date: 星期一, 17 五月 2021 14:16:45 +0800 Subject: [PATCH] 的 --- service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java | 148 +++++++++++++++++++++++++++--------------------- 1 files changed, 83 insertions(+), 65 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 49b1ab3..2ed40f9 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 @@ -13,6 +13,7 @@ import com.ks.lijin.service.LiJinProviderAccountService; import com.ks.lijin.service.LiJinProviderNoticeService; import com.ks.lijin.service.LijinCreateService; +import com.ks.lijin.util.Constant; import com.ks.lijin.utils.taobao.TaoBaoUtil; import com.ks.lijin.utils.taobao.TaoKeApiUtil; import com.ks.vip.pojo.DO.VipGradePotence; @@ -30,6 +31,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; @Service(version = "1.0") @@ -78,11 +80,11 @@ @Override - public BigDecimal getTBLijinAmount(Long actionId, VIPEnum vipRank) throws LiJinGoodsException,LiJinAmountException { + public BigDecimal getTBLijinAmount(Long actionId, VIPEnum vipRank) throws LiJinGoodsException, LiJinAmountException { //鑾峰彇鍟嗗搧鍙垱寤虹殑娣樼ぜ閲戦潰棰濓紝鑻ヤ笉鑳藉垱寤洪渶瑕佹姏鍑虹浉鍏崇殑寮傚父锛�1.鍟嗗搧涓嶆敮鎸佺ぜ閲戝垱寤猴級 BigDecimal money = null; // 1銆佸垽鏂晢鍝� - try{ + try { TaoBaoGoodsBrief goods = TaoKeApiUtil.searchGoodsDetail(actionId); if (goods == null) { throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_OFFLINE, "鍟嗗搧涓嬬嚎"); @@ -95,16 +97,16 @@ //鍒稿悗浠� * 鍟嗗搧浣i噾姣斾緥 * 杩斿埄姣斾緥 VipGradePotence potence = vipGradePotenceService.getPotenceByVipEnum(vipRank); - if (potence != null && potence.getRebatePercent()!= null) { - money = TaoBaoUtil.getGoodsHongBaoMoney(goods,potence.getRebatePercent(),false); + if (potence != null && potence.getRebatePercent() != null) { + money = TaoBaoUtil.getGoodsHongBaoMoney(goods, potence.getRebatePercent(), false); } - } catch (TaoBaoGoodsDownException e){ + } 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,"绀奸噾鍒涘缓鐨勯噾棰濊秴鍑鸿瀹氳寖鍥�"); + throw new LiJinAmountException(LiJinAmountException.CODE_LIJIN_AMOUNT_OUTOFRANGE, "绀奸噾鍒涘缓鐨勯噾棰濊秴鍑鸿瀹氳寖鍥�"); } return money; @@ -119,8 +121,8 @@ // 姣忔棩鏈�澶ф鏁板垽鏂� Integer numMax = potence.getTaolijinMaxNumber(); - if(numMax == null || numMax.intValue() <= 0) { - throw new LiJinUserException(LiJinUserException.CODE_USER_CREATE_NUM_LIMIT, "鐢ㄦ埛鍒涘缓娣樼ぜ閲戠殑娆℃暟瓒呴檺"); + if (numMax == null || numMax.intValue() <= 0) { + throw new LiJinUserException(LiJinUserException.CODE_USER_CREATE_NUM_LIMIT, "鐢ㄦ埛鍒涘缓娣樼ぜ閲戠殑娆℃暟瓒呴檺"); } // 姣忔棩鏈�澶ч噾棰濆垽鏂� @@ -131,13 +133,13 @@ // 浣跨敤娆℃暟宸茬粡瓒呰繃鏈�澶ф鏁� int numExpend = liJinExpendRecordService.countTodayNumByExpend(uid); - if (numMax.intValue() < numExpend){ + if (numMax.intValue() < numExpend) { throw new LiJinUserException(LiJinUserException.CODE_USER_CREATE_NUM_LIMIT, "鐢ㄦ埛鍒涘缓娣樼ぜ閲戠殑娆℃暟瓒呴檺"); } // 缁熻宸蹭娇鐢ㄩ噾棰� BigDecimal moneyExpend = liJinExpendRecordService.countTodayMoneyByExpend(uid); - if(moneyExpend != null) { + if (moneyExpend != null) { moneyExpend = BigDecimal.valueOf(0); } // 娑堣�楅噾棰濆凡缁忚秴杩囨渶澶ч噾棰� @@ -146,7 +148,6 @@ } return true; } - @Override @@ -158,25 +159,25 @@ // 姣忔棩鏈�澶ф鏁板垽鏂� Integer numMax = potence.getTaolijinMaxNumber(); - if(numMax == null || numMax.intValue() <= 0) { + if (numMax == null || numMax.intValue() <= 0) { throw new LiJinUserException(LiJinUserException.CODE_USER_CREATE_NUM_LIMIT, "鐢ㄦ埛鍒涘缓娣樼ぜ閲戠殑娆℃暟瓒呴檺"); } // 姣忔棩鏈�澶ч噾棰濆垽鏂� BigDecimal moneyMax = potence.getTaolijinMaxMoney(); - if (moneyMax == null || moneyMax.compareTo(BigDecimal.valueOf(0)) <= 0 || moneyMax.compareTo(money) <= 0 ) { + if (moneyMax == null || moneyMax.compareTo(BigDecimal.valueOf(0)) <= 0 || moneyMax.compareTo(money) <= 0) { throw new LiJinUserException(LiJinUserException.CODE_USER_CREATE_MONEY_LIMIT, "鐢ㄦ埛鍒涘缓娣樼ぜ閲戠殑閲戦瓒呴檺"); } // 浣跨敤娆℃暟宸茬粡瓒呰繃鏈�澶ф鏁� int numExpend = liJinExpendRecordService.countTodayNumByExpend(uid); - if (numMax.intValue() < numExpend){ + if (numMax.intValue() < numExpend) { throw new LiJinUserException(LiJinUserException.CODE_USER_CREATE_NUM_LIMIT, "鐢ㄦ埛鍒涘缓娣樼ぜ閲戠殑娆℃暟瓒呴檺"); } // 缁熻宸蹭娇鐢ㄩ噾棰� BigDecimal moneyExpend = liJinExpendRecordService.countTodayMoneyByExpend(uid); - if(moneyExpend != null) { + if (moneyExpend != null) { moneyExpend = BigDecimal.valueOf(0); } // 鍔犱笂鏈闇�瑕佷娇鐢ㄩ噾棰� @@ -190,7 +191,6 @@ } - @Override @Transactional(rollbackFor = Exception.class) public LiJinExpendRecord createTBLijin(String uid, Long goodsId) throws LiJinException, LiJinGoodsException, LiJinUserException, LiJinAmountException { @@ -202,9 +202,9 @@ //娣樼ぜ閲戝垱寤� TaoBaoGoodsBrief goods = null; - try{ + try { goods = TaoKeApiUtil.searchGoodsDetail(goodsId); - } catch (TaoBaoGoodsDownException e){ + } catch (TaoBaoGoodsDownException e) { throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_OFFLINE, "鍟嗗搧涓嬬嚎"); } if (goods == null) { @@ -217,16 +217,11 @@ // 鎵ц鍒涘缓娣樼ぜ閲� LiJinCreateParam params = getLiJinCreateParam(); - // TODO - // params.setAppkey(); - // params.setAppsecret(); - TaoLiJinDTO taoLiJinDTO = executeTaoLiJinAPI(uid, goodsId, lijinAmount, params); if (taoLiJinDTO == null) { throw new LiJinException(1, "娣樺疂API鎺ㄥ箍绾㈠寘鍒涘缓澶辫触"); } - // 淇濆瓨璁板綍 LiJinExpendRecord record = new LiJinExpendRecord(); @@ -243,49 +238,71 @@ } - // 鍒涘缓娣樼ぜ閲� - private TaoLiJinDTO executeTaoLiJinAPI(String uid, Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinGoodsException { - String appkey =params.getAppkey(); - String appsecret = params.getAppsecret(); + /** + * 璋冪敤璐﹀彿浠ュ強娣樺疂API + * @param uid + * @param goodsId + * @param lijinAmount + * @param params + * @return + * @throws LiJinGoodsException + * @throws LiJinException + */ + private TaoLiJinDTO executeTaoLiJinAPI(String uid, Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinGoodsException, LiJinException { + // 鏌ヨ渚涘簲鍟嗚处鍙蜂俊鎭� + List<LiJinProviderAccount> listAccount = liJinProviderAccountService.listByProviderId(Constant.PROVIDER_DEFAULT_ID); + if (listAccount == null || listAccount.size() == 0) { + throw new LiJinException(1, "渚涘簲鍟嗚处鍙蜂笉瀛樺湪"); + } + + TaoLiJinDTO taoLiJinDTO = null; + // 閬嶅巻璐﹀彿 鐢ㄥ彲浣跨敤璐﹀彿 + for (LiJinProviderAccount account : listAccount) { + params.setAppkey(account.getAppKey()); + params.setAppsecret(account.getAppSecret()); + try { + taoLiJinDTO = executeTaoLiJinAPI(uid, goodsId, lijinAmount, params); + if (taoLiJinDTO != null) { + break; + } + } catch (LiJinException e) { + // 閫氱煡鐩稿簲渚涘簲鍟� TODO + executor.execute(new Runnable() { + @Override + public void run() { + LiJinProviderNotice notice = new LiJinProviderNotice(); + notice.setRead(false); + notice.setProviderId(account.getProviderId()); + if (e.getCode() == LiJinException.CODE_TLJ_NO_MONEY) { + // 瀹樻柟鐜╂硶閽卞寘浣欓涓嶈冻 + notice.setTitle("鐜╂硶閽卞寘浣欓涓嶈冻"); + notice.setContent("璐﹀彿锛�" + account.getAccountName() + "瀹樻柟鐜╂硶閽卞寘浣欓涓嶈冻"); + notice.setType(NoticeTypeEnum.noMoney.name()); + liJinProviderNoticeService.save(notice); + } else if (e.getCode() == LiJinException.CODE_TLJ_UN_PAID) { + // 鏈垱寤鸿处鎴� + } + } + }); + } + } // 鍒涘缓娣樼ぜ閲戠孩鍖� - TaoLiJinDTO taoLiJinDTO = null; - try { - taoLiJinDTO = TaoKeApiUtil.createTaoLiJin(goodsId, params.getTitle(), lijinAmount, - params.getNum(), params.getSendStartTime(), params.getSendEndTime(), - params.getUseStartTime(), params.getUseEndTime(), new TaoKeAppInfo(appkey, appsecret, params.getPid())); - } catch (LiJinException e) { - // 閫氱煡鐩稿簲渚涘簲鍟� TODO - executor.execute(new Runnable() { - @Override - public void run() { - LiJinProviderAccount account = liJinProviderAccountService.getByAppInfo(appkey, appsecret); - if (account == null) { - return; - } - LiJinProviderNotice notice = new LiJinProviderNotice(); - notice.setRead(false); - notice.setProviderId(account.getProviderId()); - - if (e.getCode() == LiJinException.CODE_TLJ_FORBIDDEN) { - // 璇ュ晢鍝佷笉鏀寔鍒涘缓娣樼ぜ閲戠孩鍖� - } else if (e.getCode() == LiJinException.CODE_TLJ_NO_MONEY) { - // 瀹樻柟鐜╂硶閽卞寘浣欓涓嶈冻 - notice.setTitle("鐜╂硶閽卞寘浣欓涓嶈冻"); - notice.setContent("璐﹀彿锛�"+ appkey +"瀹樻柟鐜╂硶閽卞寘浣欓涓嶈冻"); - notice.setType(NoticeTypeEnum.noMoney.name()); - liJinProviderNoticeService.save(notice); - } else if (e.getCode() == LiJinException.CODE_TLJ_UN_PAID) { - // 鏈垱寤鸿处鎴� - } - } - }); - } - return taoLiJinDTO; + 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())); } - - private BigDecimal getTBLijinAmount(TaoBaoGoodsBrief goods, VIPEnum vipRank) throws LiJinGoodsException,LiJinAmountException { + /** + * 鑾峰彇鍟嗗搧鍙垱寤虹殑绀奸噾閲戦 + * @param goods 鍟嗗搧 + * @param vipRank 浼氬憳绛夌骇 + * @return + * @throws LiJinGoodsException + * @throws LiJinAmountException + */ + private BigDecimal getTBLijinAmount(TaoBaoGoodsBrief goods, VIPEnum vipRank) throws + LiJinGoodsException, LiJinAmountException { //鑾峰彇鍟嗗搧鍙垱寤虹殑娣樼ぜ閲戦潰棰濓紝鑻ヤ笉鑳藉垱寤洪渶瑕佹姏鍑虹浉鍏崇殑寮傚父锛�1.鍟嗗搧涓嶆敮鎸佺ぜ閲戝垱寤猴級 BigDecimal money = null; @@ -296,19 +313,20 @@ //鍒稿悗浠� * 鍟嗗搧浣i噾姣斾緥 * 杩斿埄姣斾緥 VipGradePotence potence = vipGradePotenceService.getPotenceByVipEnum(vipRank); - if (potence != null && potence.getRebatePercent()!= null) { - money = TaoBaoUtil.getGoodsHongBaoMoney(goods,potence.getRebatePercent(),false); + if (potence != null && potence.getRebatePercent() != null) { + money = TaoBaoUtil.getGoodsHongBaoMoney(goods, potence.getRebatePercent(), false); } // 閲戦涓虹┖ 鎴栬�呭皬浜庨浂 鍒欐姏鍑哄紓甯� if (money == null || money.compareTo(BigDecimal.valueOf(0)) <= 0) { - throw new LiJinAmountException(LiJinAmountException.CODE_LIJIN_AMOUNT_OUTOFRANGE,"绀奸噾鍒涘缓鐨勯噾棰濊秴鍑鸿瀹氳寖鍥�"); + throw new LiJinAmountException(LiJinAmountException.CODE_LIJIN_AMOUNT_OUTOFRANGE, "绀奸噾鍒涘缓鐨勯噾棰濊秴鍑鸿瀹氳寖鍥�"); } return money; } /** * 鍒涘缓娣樼ぜ閲戝熀鏈弬鏁� + * * @return */ private LiJinCreateParam getLiJinCreateParam() { -- Gitblit v1.8.0