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