From a4f0ddd308a07e5bcb7f49a560e404a51aa24974 Mon Sep 17 00:00:00 2001 From: Sas Andy Date: Fri, 2 May 2025 16:05:35 +0700 Subject: [PATCH] revisi gw point --- config-point-member.json | 2 +- source/lib_cashback.ts | 2 +- source/lib_member.ts | 96 +++++++++++++++++++++++++++++++++++++ source/server.ts | 101 +++++++++++++++++++++++++++++++++++++-- 4 files changed, 196 insertions(+), 5 deletions(-) diff --git a/config-point-member.json b/config-point-member.json index 2f47650..9eaef73 100644 --- a/config-point-member.json +++ b/config-point-member.json @@ -1,5 +1,5 @@ { - "base_url": "http://devone.aplikasi.web.id/one-api/", + "base_url": "http://-----//one-api/", "schedule": ["*/2 * * * *"], "delay": 5, "row_per_batch": 50 diff --git a/source/lib_cashback.ts b/source/lib_cashback.ts index 636351d..162c5b3 100644 --- a/source/lib_cashback.ts +++ b/source/lib_cashback.ts @@ -4,7 +4,7 @@ import logging from "./config/logging"; import { NAME_SPACE } from "./server"; export const getOrder = async () => { - let url = config.base_url + "tools/member/cashbackpoint/list/"; + let url = config.base_url + "tools/member/cashbackpoint/list/2025-04-29"; logging.info(NAME_SPACE, "\t INFO : " + url); try { const resp = await axios.get(url, { diff --git a/source/lib_member.ts b/source/lib_member.ts index 9ba4588..1f392ec 100644 --- a/source/lib_member.ts +++ b/source/lib_member.ts @@ -97,6 +97,77 @@ export const downloadV2 = async () => { } } }; +export const updateLastMemberDownloaded = async (date: any) => { + const url = + config.base_url + + "tools/member/Membergateway/updateLastMemberDownloaded/" + + date; + logging.info(NAME_SPACE, "\t INFO : " + url); + try { + const resp = await axios.get(url, { + responseType: "arraybuffer", + }); + const jresp = JSON.parse(resp.data.toString()); + return jresp; + } catch (e) { + if (axios.isAxiosError(e)) { + logging.error(NAME_SPACE, e.response?.data.toString()); + } else if (e instanceof Error) { + logging.error(NAME_SPACE, e.message); + } + } +}; +export const updateStatusGatewayLastUploadMember = async (date: any) => { + const url = + config.base_url + + "tools/member/Membergateway/updateStatusGatewayLastUploadMember/" + + date; + logging.info(NAME_SPACE, "\t INFO : " + url); + try { + const resp = await axios.get(url, { + responseType: "arraybuffer", + }); + const jresp = JSON.parse(resp.data.toString()); + return jresp; + } catch (e) { + if (axios.isAxiosError(e)) { + logging.error(NAME_SPACE, e.response?.data.toString()); + } else if (e instanceof Error) { + logging.error(NAME_SPACE, e.message); + } + } +}; +export const updateStatusLastInfoDownloaded = async (date: any) => { + const url = + config.base_url + + "tools/member/Downloadinfo/updateStatusLastInfoDownloaded/" + + date; + logging.info(NAME_SPACE, "\t INFO : " + url); + try { + const resp = await axios.get(url, { + responseType: "arraybuffer", + }); + const jresp = JSON.parse(resp.data.toString()); + return jresp; + } catch (e) { + if (axios.isAxiosError(e)) { + logging.error(NAME_SPACE, e.response?.data.toString()); + } else if (e instanceof Error) { + logging.error(NAME_SPACE, e.message); + } + } +}; +export const getDate = () => { + const now = new Date(); + const year = now.getFullYear(); + const month = String(now.getMonth() + 1).padStart(2, "0"); + const day = String(now.getDate()).padStart(2, "0"); + const hours = String(now.getHours()).padStart(2, "0"); + const minutes = String(now.getMinutes()).padStart(2, "0"); + const seconds = String(now.getSeconds()).padStart(2, "0"); + const formattedDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; + return formattedDate; +}; export const generate = async (prm: any) => { const url = config.base_url + "tools/member/Membergateway/generateV2"; logging.info(NAME_SPACE, "\t INFO : " + url); @@ -121,6 +192,31 @@ export const generate = async (prm: any) => { } } }; +export const updateStatusUploadMember = async (prm: any) => { + const url = + config.base_url + "tools/member/Membergateway/updateStatusUploadMember"; + logging.info(NAME_SPACE, "\t INFO : " + url); + try { + const resp = await axios.post( + url, + { + data: prm, + }, + { + headers: { "Content-Type": "application/json; charset=UTF-8" }, + responseType: "arraybuffer", + } + ); + const jresp = JSON.parse(resp.data.toString()); + return jresp; + } catch (e) { + if (axios.isAxiosError(e)) { + logging.error(NAME_SPACE, e.response?.data.toString()); + } else if (e instanceof Error) { + logging.error(NAME_SPACE, e.message); + } + } +}; export const getDataNatInfo = async () => { const url = config.base_url + "tools/member/downloadinfo/downloadInfo"; logging.info(NAME_SPACE, "\t INFO : " + url); diff --git a/source/server.ts b/source/server.ts index 20de894..bf06ed4 100644 --- a/source/server.ts +++ b/source/server.ts @@ -11,6 +11,11 @@ import { uploadV2, downloadV2, generate, + getDate, + updateLastMemberDownloaded, + updateStatusGatewayLastUploadMember, + updateStatusUploadMember, + updateStatusLastInfoDownloaded, } from "./lib_member"; import { uploadPayment } from "./lib_payment"; import { retur } from "./lib_retur"; @@ -64,16 +69,51 @@ async function one_result_job() { logging.info(NAME_SPACE, "\t wait 1s"); await delay(1000); if (member.length > 0) { + // console.log("memberNat.length"); + // let dateNow = "2025-01-25 12:49:24"; + let dateNow = getDate(); + var usglum = await updateStatusGatewayLastUploadMember(dateNow); + + if (usglum["status"] != "OK") { + logging.error(NAME_SPACE, "\t Error", usglum); + } else { + logging.info( + NAME_SPACE, + "Last status upload member gateway " + dateNow + ); + } logging.info(NAME_SPACE, "Start Upload Member To National"); for (let i = 0; i < member.length; i++) { const e = member[i]; + logging.info( + NAME_SPACE, + `\t\ Upload Member ${i + 1} of ${member.length}` + ); logging.info(NAME_SPACE, "\t\tStart Upload " + e["MemberNumber"]); var dn = await uploadV2(e); - logging.error(NAME_SPACE, "\t\t response", dn); + // logging.error(NAME_SPACE, "\t\t response", dn); if (dn["status"] != "OK") { logging.error(NAME_SPACE, "\t\t Error", dn); + let dateNow = e["MemberLastUpdated"]; + var usglum2 = await updateStatusGatewayLastUploadMember(dateNow); + + if (usglum2["status"] != "OK") { + logging.error(NAME_SPACE, "\t\t Error", usglum2); + } else { + logging.info( + NAME_SPACE, + "\t\t Last status upload member gateway " + dateNow + ); + } } else { - logging.info(NAME_SPACE, "\t\t Success", dn); + logging.info(NAME_SPACE, "\t\t Success", dn["data"]); + var usum = await updateStatusUploadMember(e); + + if (usum["status"] != "OK") { + logging.error(NAME_SPACE, "\t\t Error", usum); + } else { + logging.info(NAME_SPACE, "\t\t success ", usum["data"]); + } } logging.info(NAME_SPACE, "\t\t wait 1s"); await delay(1000); @@ -101,15 +141,38 @@ async function one_result_job() { //Sleep logging.info(NAME_SPACE, "\t wait 1s"); await delay(1000); - // console.log("memberNat.length"); if (memberNat.length > 0) { + // console.log("memberNat.length"); + // let dateNow = "2025-01-25 12:49:24"; + let dateNow = getDate(); + var ulmd = await updateLastMemberDownloaded(dateNow); + + if (ulmd["status"] != "OK") { + logging.error(NAME_SPACE, "Error", ulmd); + } else { + logging.info(NAME_SPACE, "Last status download gateway " + dateNow); + } logging.info(NAME_SPACE, "Start Generate Member National"); for (let i = 0; i < memberNat.length; i++) { const e = memberNat[i]; + logging.info( + NAME_SPACE, + `\t\tGenerate Member ${i + 1} of ${memberNat.length} ` + ); logging.info(NAME_SPACE, "\t\tStart generate " + e["MemberNumber"]); var dn = await generate(e); if (dn["status"] != "OK") { logging.error(NAME_SPACE, "\t\t Error", dn); + var ulmd2 = await updateLastMemberDownloaded(e["MemberLastUpdated"]); + + if (ulmd2["status"] != "OK") { + logging.error(NAME_SPACE, "\t\t Error", ulmd2); + } else { + logging.info( + NAME_SPACE, + "\t\t Last status download gateway" + e["MemberLastUpdated"] + ); + } } else { logging.info(NAME_SPACE, "\t\t Success", dn); } @@ -131,9 +194,24 @@ async function one_result_job() { logging.info(NAME_SPACE, "\t Success, total data", inf["total"]); } if (infoList.length > 0) { + let dateNow = getDate(); + var uslid = await updateStatusLastInfoDownloaded(dateNow); + + if (uslid["status"] != "OK") { + logging.error(NAME_SPACE, "\t Error", uslid); + } else { + logging.info( + NAME_SPACE, + "\t Last status download info gateway " + dateNow + ); + } logging.info(NAME_SPACE, "\t Start Insert info"); for (let i = 0; i < infoList.length; i++) { const e = infoList[i]; + logging.info( + NAME_SPACE, + `\t\t Insert info ${i + 1} of ${infoList.length}` + ); logging.info(NAME_SPACE, "\t\t Start Insert info ", e["member_nik"]); // {"member_nik":"0123459547894563","member_point":"20000","member_visit":"2"} var insert = await insertNatInfo( @@ -143,6 +221,19 @@ async function one_result_job() { ); if (insert["status"] != "OK") { logging.error(NAME_SPACE, "\t\t Error", insert); + // let dateNow = getDate(); + var usli2 = await updateStatusLastInfoDownloaded( + e["Tx_inLastUpdated"] + ); + + if (usli2["status"] != "OK") { + logging.error(NAME_SPACE, "\t\t Error", usli2); + } else { + logging.info( + NAME_SPACE, + "\t\t Last status download info gateway " + dateNow + ); + } } else { logging.info(NAME_SPACE, "\t\t Success insert/update data", insert); } @@ -193,6 +284,10 @@ async function cashback() { logging.info(NAME_SPACE, "Start update cashback"); for (let i = 0; i < listOrder.length; i++) { const e = listOrder[i]; + logging.info( + NAME_SPACE, + `\t update cashback ${i + 1} of ${listOrder.length}` + ); logging.info( NAME_SPACE, "\t Start update cashback " + e["T_OrderHeaderLabNumber"]