From 43a604467d91ef42148bfb3b5526618e91ea4adc Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 25 五月 2021 19:05:33 +0800
Subject: [PATCH] 礼金创建修改

---
 service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java |   73 ++++++++++++++++++++++++------------
 1 files changed, 49 insertions(+), 24 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 7ed1037..dd90b7a 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
@@ -3,10 +3,11 @@
 import com.ks.lijin.exception.*;
 import com.ks.lijin.mapper.LiJinExpendRecordMapper;
 import com.ks.lijin.pojo.DO.LiJinExpendRecord;
-import com.ks.lijin.pojo.DO.LiJinProviderAccount;
+import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount;
 import com.ks.lijin.pojo.DO.LiJinProviderNotice;
 import com.ks.lijin.pojo.DTO.LiJinCreateParam;
 import com.ks.lijin.pojo.DTO.MoneyInfo;
+import com.ks.lijin.pojo.DTO.TaoLijinCreateResultDTO;
 import com.ks.lijin.pojo.DTO.taobao.TaoKeAppInfo;
 import com.ks.lijin.pojo.DTO.taobao.TaoLiJinDTO;
 import com.ks.lijin.pojo.Enums.NoticeTypeEnum;
@@ -14,6 +15,7 @@
 import com.ks.lijin.service.LiJinProviderAccountService;
 import com.ks.lijin.service.LiJinProviderNoticeService;
 import com.ks.lijin.service.LijinCreateService;
+import com.ks.lijin.service.manager.LiJinProviderTaoKeAccountManager;
 import com.ks.lijin.util.Constant;
 import com.ks.lijin.utils.taobao.TaoBaoUtil;
 import com.ks.lijin.utils.taobao.TaoKeApiUtil;
@@ -32,7 +34,6 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.math.RoundingMode;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -68,6 +69,9 @@
     private LiJinExpendRecordService liJinExpendRecordService;
 
 
+    @Resource
+    private LiJinProviderTaoKeAccountManager liJinProviderTaoKeAccountManager;
+
     @Override
     public List<MoneyInfo> getMoneyInfo(String uid, List<TaoBaoGoodsBrief> goodsBriefList) {
         VIPEnum vipRank = null;
@@ -93,7 +97,7 @@
             //璁$畻杩斿埄姣斾緥
             BigDecimal rebateRate = potence.getRebatePercent();
             BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(goods);
-            BigDecimal fanliMoney = TaoBaoUtil.getGoodsHongBaoMoney(goods,rebateRate,false);
+            BigDecimal fanliMoney = TaoBaoUtil.getGoodsHongBaoMoney(goods, rebateRate, false);
             moneyInfo.setFanliAmount(fanliMoney);
             moneyInfo.setFirstOrderAmount(null);
             list.add(moneyInfo);
@@ -259,25 +263,45 @@
         BigDecimal lijinAmount = getTBLijinAmount(goods, vipRank);
 
         // 鎵ц鍒涘缓娣樼ぜ閲�
-        LiJinCreateParam params = getLiJinCreateParam();
+        LiJinCreateParam params = getLiJinCreateBaseParam();
 
 
-        TaoLiJinDTO taoLiJinDTO = executeTaoLiJinAPI(uid, goodsId, lijinAmount, params);
+        TaoLijinCreateResultDTO taoLiJinDTO = executeTaoLiJin(goodsId, lijinAmount, params);
         if (taoLiJinDTO == null) {
             throw new LiJinException(1, "娣樺疂API鎺ㄥ箍绾㈠寘鍒涘缓澶辫触");
         }
 
+        //娣诲姞璐﹀彿鐨�
+        return addCreateSuccessRecord(uid, goodsId, lijinAmount, params.getTitle(), params.getNum(), taoLiJinDTO);
+    }
+
+
+    /**
+     * 娣诲姞鍒涘缓璁板綍
+     *
+     * @param uid
+     * @param goodsId
+     * @param lijinAmount
+     * @param title
+     * @param num
+     * @param taoLiJinDTO
+     */
+    private LiJinExpendRecord addCreateSuccessRecord(String uid, Long goodsId, BigDecimal lijinAmount, String title, int num, TaoLijinCreateResultDTO taoLiJinDTO) {
+        Date now = new Date();
         // 淇濆瓨璁板綍
         LiJinExpendRecord record = new LiJinExpendRecord();
         record.setUid(uid);
         record.setGoodsId(goodsId + "");
-        record.setTitle(params.getTitle());
-        record.setNum(params.getNum());
+        record.setTitle(title);
+        record.setNum(num);
         record.setMoney(lijinAmount);
-        record.setRightsId(taoLiJinDTO.getRightsId());
-        record.setSendUrl(taoLiJinDTO.getSendUrl());
+        record.setAccountId(taoLiJinDTO.getAccount().getId());
+        record.setRightsId(taoLiJinDTO.getTaoLiJin().getRightsId());
+        record.setSendUrl(taoLiJinDTO.getTaoLiJin().getSendUrl());
         record.setCreateTime(new Date());
         liJinExpendRecordMapper.insertSelective(record);
+        //娣诲姞
+        liJinProviderTaoKeAccountManager.createLijinSuccess(taoLiJinDTO.getAccount().getId(), goodsId, lijinAmount.multiply(new BigDecimal(num)), now);
         return record;
     }
 
@@ -285,7 +309,6 @@
     /**
      * 璋冪敤璐﹀彿浠ュ強娣樺疂API
      *
-     * @param uid
      * @param goodsId
      * @param lijinAmount
      * @param params
@@ -293,24 +316,22 @@
      * @throws LiJinGoodsException
      * @throws LiJinException
      */
-    private TaoLiJinDTO executeTaoLiJinAPI(String uid, Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinGoodsException, LiJinException {
+    private TaoLijinCreateResultDTO executeTaoLiJin(Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinGoodsException, LiJinException {
         // 鏌ヨ渚涘簲鍟嗚处鍙蜂俊鎭�
-        List<LiJinProviderAccount> listAccount = liJinProviderAccountService.listByProviderId(Constant.PROVIDER_DEFAULT_ID);
+        List<LiJinProviderTaoKeAccount> listAccount = liJinProviderAccountService.listByProviderId(Constant.PROVIDER_DEFAULT_ID);
         if (listAccount == null || listAccount.size() == 0) {
-            throw new LiJinException(1, "渚涘簲鍟嗚处鍙蜂笉瀛樺湪");
+            throw new LiJinException(1, "娌℃湁鍙敤鐨勪緵搴斿晢璐﹀彿");
         }
 
-        TaoLiJinDTO taoLiJinDTO = null;
         // 閬嶅巻璐﹀彿 鐢ㄥ彲浣跨敤璐﹀彿
-        for (LiJinProviderAccount account : listAccount) {
+        for (LiJinProviderTaoKeAccount account : listAccount) {
             params.setAppkey(account.getAppKey());
             params.setAppsecret(account.getAppSecret());
+            params.setPid(account.getPid());
             try {
-                taoLiJinDTO = executeTaoLiJinAPI(uid, goodsId, lijinAmount, params);
-                if (taoLiJinDTO != null) {
-                    break;
-                }
-            } catch (LiJinException e) {
+                //鍒涘缓绀奸噾
+                return new TaoLijinCreateResultDTO(account, executeTaoLiJinAPI(goodsId, lijinAmount, params));
+            } catch (LiJinAccountException e) {// 璐﹀彿闂
                 // 閫氱煡鐩稿簲渚涘簲鍟�  TODO
                 executor.execute(new Runnable() {
                     @Override
@@ -318,25 +339,29 @@
                         LiJinProviderNotice notice = new LiJinProviderNotice();
                         notice.setRead(false);
                         notice.setProviderId(account.getProviderId());
-                        if (e.getCode() == LiJinException.CODE_TLJ_NO_MONEY) {
+                        if (e.getCode() == LiJinAccountException.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) {
+                        } else if (e.getCode() == LiJinAccountException.CODE_TLJ_UN_PAID) {
                             // 鏈垱寤鸿处鎴�
                         }
                     }
                 });
             }
         }
+        throw new LiJinException(1, "娌℃湁鍙敤鐨勪緵搴斿晢璐﹀彿");
+    }
 
-        // 鍒涘缓娣樼ぜ閲戠孩鍖�
+
+    private TaoLiJinDTO executeTaoLiJinAPI(Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinException, LiJinGoodsException, LiJinAccountException {
         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()));
     }
+
 
     /**
      * 鑾峰彇鍟嗗搧鍙垱寤虹殑绀奸噾閲戦
@@ -375,7 +400,7 @@
      *
      * @return
      */
-    private LiJinCreateParam getLiJinCreateParam() {
+    private LiJinCreateParam getLiJinCreateBaseParam() {
         Date date = new Date();
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
         SimpleDateFormat formatStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

--
Gitblit v1.8.0