shawenguan 2 years ago
parent
commit
90808ffd8a
1 changed files with 305 additions and 15 deletions
  1. 305 15
      Scripts/gandart/gandartOrder.js

+ 305 - 15
Scripts/gandart/gandartOrder.js

@@ -114,8 +114,8 @@ async function all() {
         let isPass = true;
         if (isCollectionMaxNumLimitEnable()) {
             let maxLockNum = getCollectionLockMaxNum();
-            let curPayingNum = await getNftOrderList(0);
-            if (curPayingNum >= maxLockNum) {
+            let orderLstInfo = await getNftOrderList(0);
+            if (orderLstInfo.total >= maxLockNum) {
                 lk.log('当前未支付订单达到预设的限制单量');
                 lk.prependNotifyInfo(`⚠️当前未支付订单达到限制${maxLockNum}单`);
                 isPass = false;
@@ -172,22 +172,22 @@ async function getNftOrderList(status, orderType = 0, page = 1, pageSize = 6) {
                         lk.execFail();
                         // lk.appendNotifyInfo(`❌获取订单列表失败,请稍后再试`);
                     } else {
-                        let ret = JSON.parse(data);
-                        rows = ret.rows;
-                        total = ret.total || ret.recordsTotal;
+                        let info = JSON.parse(data);
+                        rows = info.rows;
+                        total = info.total || info.recordsTotal;
                     }
                 } catch (e) {
                     lk.log(`获取订单列表数据发生错误`);
                     lk.logErr(e);
                     lk.execFail();
                 } finally {
-                    resolve(total);
+                    resolve({ total: total, rows: rows });
                 }
             });
         } catch (e) {
             lk.log(`获取订单列表数据发生错误`);
             lk.logErr(e);
-            resolve(0);
+            resolve({ total: 0 });
         }
     });
 }
@@ -303,7 +303,6 @@ function checkToBuyCollection(item) {
                 body: body
             };
             lk.log(`请求购买产品[${item.collectionName}#${viewSort}]=${body}`);
-            // resolve(1);
             const collectionName = item.collectionName;
             lk.post(url, async (error, _response, data) => {
                 let retItem;
@@ -343,28 +342,319 @@ function checkToBuyCollection(item) {
     });
 }
 
-async function getOrderEndTime(orderNum) {
+async function checkTryPayAll() {
+    let orderLstInfo = await getNftOrderList(0);
+    let orderCnt = orderLstInfo.total;
+    if (orderCnt > 0) {
+        let orderLst = orderLstInfo.rows;
+        for (let info of orderLst) {
+            checkPay(info.orderNo, info.orderNum);
+        }
+    }
+}
 
+async function checkPay(orderNum, orderTotal) {
+    let orderInfo = await getOrderEndTime(orderNum);
+    if (orderInfo) {
+        let endDate = new Date(orderInfo.endDate);
+        if (new Date().getTime() < endDate.getTime()) {
+            let tranWalletList = await transactionWalletList();
+            let myWalletList = await getMyWalletList();
+            if (tranWalletList && myWalletList) {
+                let isMateWallet = false;
+                let isPaySuccess = false;
+                for (let w1 of myWalletList) {
+                    if (tranWalletList.indexOf(w1.channel) > -1) {
+                        let availableMoney = w1.availableMoney;
+                        if (availableMoney >= orderTotal) {
+                            isMateWallet = true;
+                            lk.log(`匹配到钱包${w1.channel}余额[${availableMoney}]用来支付订单额[${orderTotal}]`);
+                            let isPass = await inputMyWalletPassword(w1.channel, orderNum, orderTotal);
+                            if (isPass) {
+                                isPaySuccess = await finalPay(orderNum, orderInfo);
+                            }
+                            break;
+                        }
+                    }
+                }
+                if (!isMateWallet) {
+                    lk.log('无匹配的钱包,请检查钱包余额');
+                } else if (isPaySuccess) {
+                    lk.log('支付成功');
+                }
+            }
+        } else {
+            lk.log(`订单[${orderNum}]已超时`);
+        }
+    }
 }
 
-async function transactionWalletList(orderNum) {
+async function getOrderEndTime(orderNum) {
+    return new Promise((resolve, _reject) => {
+        try {
+            const headers = GCommonGandartHeads;
+            headers.Host = "api.gandart.com";
+            const body = `orderNum=${orderNum}`;
+            let url = {
+                url: `${config.RESALE_API}/resaleManage/getOrderEndTime`,
+                headers: headers,
+                body: body
+            };
+            lk.post(url, async (error, _response, data) => {
+                let ret;
+                try {
+                    if (error) {
+                        lk.execFail();
+                    } else {
+                        let info = JSON.parse(data);
+                        if (info.success) {
+                            ret = info.obj;
+                        }
+                    }
+                } catch (e) {
+                    lk.logErr(e);
+                    lk.execFail();
+                } finally {
+                    resolve(ret);
+                }
+            });
+        } catch (e) {
+            lk.logErr(e);
+            resolve();
+        }
+    });
+}
 
+async function transactionWalletList(orderNum) {
+    return new Promise((resolve, _reject) => {
+        try {
+            const headers = GCommonGandartHeads;
+            headers.Host = "api.gandart.com";
+            const body = `orderNum=${orderNum}`;
+            let url = {
+                url: `${config.RESALE_API}/resaleManage/getOrderEndTime`,
+                headers: headers,
+                body: body
+            };
+            lk.log(`请求订单[${orderNum}]收款钱包列表`);
+            lk.post(url, async (error, _response, data) => {
+                let ret;
+                try {
+                    if (error) {
+                        lk.log(`请求订单收款钱包列表发生错误`);
+                        lk.execFail();
+                    } else {
+                        let info = JSON.parse(data);
+                        if (info.success) {
+                            lk.log(`请求订单收款钱包列表成功`);
+                            if (info.obj) {
+                                ret = info.obj.walletList;
+                            }
+                        } else {
+                            lk.log(`请求订单[${orderNum}]收款钱包列表失败,响应:${data}`);
+                        }
+                    }
+                } catch (e) {
+                    lk.log(`请求订单收款钱包列表发生错误`);
+                    lk.logErr(e);
+                    lk.execFail();
+                } finally {
+                    resolve(ret);
+                }
+            });
+        } catch (e) {
+            lk.log(`请求订单收款钱包列表发生错误`);
+            lk.logErr(e);
+            resolve();
+        }
+    });
 }
 
 async function getMyWalletList() {
-
+    return new Promise((resolve, _reject) => {
+        try {
+            const headers = GCommonGandartHeads;
+            headers.Host = "api.gandart.com";
+            const body = ``;
+            let url = {
+                url: `${config.WALLET_API}/v2/wallet/list?`,
+                headers: headers,
+                body: body
+            };
+            lk.log(`请求个人钱包列表数据`);
+            lk.post(url, async (error, _response, data) => {
+                let ret;
+                try {
+                    if (error) {
+                        lk.log(`请求个人钱包列表数据发生错误`);
+                        lk.execFail();
+                    } else {
+                        let info = JSON.parse(data);
+                        if (info.success) {
+                            ret = info.obj;
+                        } else {
+                            lk.log(`请求个人钱包列表数据失败,响应:${data}`);
+                        }
+                    }
+                } catch (e) {
+                    lk.log(`请求个人钱包列表数据发生错误`);
+                    lk.logErr(e);
+                    lk.execFail();
+                } finally {
+                    resolve(ret);
+                }
+            });
+        } catch (e) {
+            lk.log(`请求个人钱包列表数据发生错误`);
+            lk.logErr(e);
+            resolve();
+        }
+    });
 }
 
-async function getPublickey() {
+async function inputMyWalletPassword(walletType, orderNum, orderTotal) {
+    let publicKey = await getPublicKey();
+    if (publicKey) {
+        let accountPassword = '';
+        let isOk = await confirmPassword(accountPassword);
+        if (isOk) {
+            return true;
+        }
+        return false;
+    }
+    return false;
+}
 
+async function getPublicKey() {
+    return new Promise((resolve, _reject) => {
+        try {
+            const id = item.id;
+            const viewSort = item.viewSort || 0;
+            const headers = GCommonGandartHeads;
+            headers.Host = "api.gandart.com";
+            const body = ``;
+            let url = {
+                url: `${config.BASE_API}/reg/getPublicKey`,
+                headers: headers,
+                body: body
+            };
+            lk.log(`请求支付密码相关的PublicKey`);
+            lk.post(url, async (error, _response, data) => {
+                let ret;
+                try {
+                    if (error) {
+                        lk.log(`请求PublicKey发生错误`);
+                        lk.execFail();
+                    } else {
+                        let info = JSON.parse(data);
+                        if (info.success) {
+                            lk.log(`请求PublicKey成功`);
+                            ret = info.obj;
+                        } else {
+                            lk.log(`请求PublicKey失败`);
+                        }
+                    }
+                } catch (e) {
+                    lk.log(`请求PublicKey发生错误`);
+                    lk.logErr(e);
+                    lk.execFail();
+                } finally {
+                    resolve(ret);
+                }
+            });
+        } catch (e) {
+            lk.log(`请求PublicKey发生错误`);
+            lk.logErr(e);
+            resolve();
+        }
+    });
 }
 
 async function confirmPassword(accountPassword) {
-
+    return new Promise((resolve, _reject) => {
+        try {
+            const headers = GCommonGandartHeads;
+            headers.Host = "api.gandart.com";
+            const body = `accountPassword=${accountPassword}`;
+            let url = {
+                url: `${config.BASE_API}/user/confirmPassword`,
+                headers: headers,
+                body: body
+            };
+            lk.log(`请求验证支付密码`);
+            lk.post(url, async (error, _response, data) => {
+                let ret = false;
+                try {
+                    if (error) {
+                        lk.log(`请求验证支付密码发生错误`);
+                        lk.execFail();
+                    } else {
+                        let info = JSON.parse(data);
+                        if (info.success) {
+                            lk.log(`请求验证支付密码通过`);
+                            ret = true;
+                        } else {
+                            lk.log(`请求验证支付密码失败,响应:${data}`);
+                        }
+                    }
+                } catch (e) {
+                    lk.log(`请求验证支付密码发生错误`);
+                    lk.logErr(e);
+                    lk.execFail();
+                } finally {
+                    resolve(ret);
+                }
+            });
+        } catch (e) {
+            lk.log(`请求验证支付密码发生错误`);
+            lk.logErr(e);
+            resolve();
+        }
+    });
 }
 
-async function pay(orderNum, castingId, transactionRecordId, userId) {
-
+async function finalPay(orderNum, orderInfo) {
+    return new Promise((resolve, _reject) => {
+        try {
+            const headers = GCommonGandartHeads;
+            headers.Host = "api.gandart.com";
+            const body = `orderNum=${orderNum}&castingId=${orderInfo.castingId}&transactionRecordId=${orderInfo.transactionRecordId}&userId=${orderInfo.userId}`;
+            let url = {
+                url: `${config.BASE_API}/v2/resaleManage/resale/pay`,
+                headers: headers,
+                body: body
+            };
+            lk.log(`请求支付订单[${orderNum}]=${body}`);
+            lk.post(url, async (error, _response, data) => {
+                let ret;
+                try {
+                    if (error) {
+                        lk.log(`请求支付订单[${orderNum}]发生错误`);
+                        lk.execFail();
+                        lk.appendNotifyInfo(`❌支付失败,请稍后再试`);
+                    } else {
+                        let info = JSON.parse(data);
+                        if (info.success) {
+                            ret = orderNum;
+                            lk.appendNotifyInfo(`🎉支付订单[${orderNum}]成功`);
+                        } else {
+                            lk.log(`请求支付订单[${orderNum}]失败,响应:${data}`);
+                        }
+                    }
+                } catch (e) {
+                    lk.log(`请求支付订单[${orderNum}]发生错误`);
+                    lk.logErr(e);
+                    lk.execFail();
+                } finally {
+                    resolve(ret);
+                }
+            });
+        } catch (e) {
+            lk.log(`请求支付订单[${orderNum}]发生错误`);
+            lk.logErr(e);
+            resolve();
+        }
+    });
 }