flexbiz-server 12.6.7 → 12.6.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -3
- package/server/app.js +5 -5
- package/server/auths/local.js +10 -16
- package/server/cluster.js +11 -10
- package/server/controllers/controller.js +7 -7
- package/server/controllers/controllerRPT.js +23 -22
- package/server/controllers/controllerUtils.js +6 -2
- package/server/controllers/createHandler.js +24 -23
- package/server/controllers/findHandler.js +58 -53
- package/server/controllers/rptExcelHandler.js +23 -20
- package/server/controllers/rptHandler.js +3 -3
- package/server/controllers/updateHandler.js +40 -39
- package/server/controllers/viewHandler.js +13 -12
- package/server/global.js +3 -3
- package/server/libs/WorkerStaticPool.js +16 -16
- package/server/libs/WorkerStaticPool_v3.js +19 -0
- package/server/libs/cdpskh.js +10 -10
- package/server/libs/databanle.js +2 -2
- package/server/libs/databanletheongay.js +2 -2
- package/server/libs/excelHelper.js +8 -0
- package/server/libs/initDatabase.js +9 -9
- package/server/libs/invoiceEasy.js +1 -1
- package/server/libs/mongoosePatch.js +9 -8
- package/server/libs/mongooseSecurityPlugin.js +2 -2
- package/server/libs/permission.js +17 -16
- package/server/libs/post-book.js +16 -16
- package/server/libs/post-socai.js +8 -8
- package/server/libs/post-sokho.js +16 -15
- package/server/libs/queryBuilding.js +2 -2
- package/server/libs/redis-cache.js +7 -6
- package/server/libs/sessionContext.js +5 -4
- package/server/libs/utils.js +12 -9
- package/server/libs/validator.js +1 -1
- package/server/models/cacheSessionReport.js +1 -1
- package/server/models/data_list_config.js +7 -0
- package/server/models/dvcs.js +1 -1
- package/server/models/hd2.js +2 -2
- package/server/models/listinfo.js +2 -2
- package/server/models/onepay.js +1 -1
- package/server/models/participant.js +1 -1
- package/server/models/rptform.js +3 -5
- package/server/models/trangthai.js +2 -2
- package/server/models/user.js +3 -3
- package/server/models/workflow.js +4 -0
- package/server/modules/lists/ls-checkin.js +6 -6
- package/server/modules/lists/ls-customer.js +21 -21
- package/server/modules/lists/ls-customer_care.js +1 -2
- package/server/modules/lists/ls-deal.js +2 -3
- package/server/modules/lists/ls-dmvt.js +60 -60
- package/server/modules/lists/ls-file.js +34 -33
- package/server/modules/lists/ls-rptform.js +3 -4
- package/server/modules/lists/ls-workflow.js +1 -0
- package/server/modules/reports/calc-tinhluong.js +17 -15
- package/server/modules/reports/rp-bcqt.js +23 -23
- package/server/modules/reports/rp-cdpskh.js +7 -7
- package/server/modules/reports/rp-ckcn.js +3 -3
- package/server/modules/reports/rp-dtbanletheoct.js +7 -7
- package/server/modules/reports/rp-kgchamcong.js +2 -1
- package/server/modules/reports/rp-khoaso.js +4 -3
- package/server/modules/reports/rp-ptcttct.js +19 -17
- package/server/modules/reports/rp-pttct.js +48 -45
- package/server/modules/reports/rp-pttctkho.js +15 -14
- package/server/modules/reports/rp-pttctkho2.js +12 -12
- package/server/modules/reports/rp-scttk.js +5 -4
- package/server/modules/reports/rp-sonkc.js +1 -1
- package/server/modules/reports/rp-thnxtnpp.js +2 -2
- package/server/modules/systems/sys-app.js +19 -19
- package/server/modules/systems/sys-data_list_config.js +3 -0
- package/server/modules/systems/sys-labelinfo.js +1 -1
- package/server/modules/systems/sys-listinfo.js +8 -8
- package/server/modules/systems/sys-reportinfo.js +4 -3
- package/server/modules/systems/sys-users.js +2 -2
- package/server/modules/vouchers/vo-hd1.js +35 -35
- package/server/modules/vouchers/vo-hd2.js +64 -60
- package/server/modules/vouchers/vo-pn1.js +8 -8
- package/server/modules/vouchers/vo-pn2.js +15 -14
- package/server/modules/vouchers/vo-pn3.js +16 -16
- package/server/modules/vouchers/vo-pn9.js +21 -20
- package/server/modules/vouchers/vo-pnc.js +10 -10
- package/server/modules/vouchers/vo-pxc.js +8 -8
- package/server/route.js +51 -46
- package/server/workers/reportWorker.js +5 -4
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "flexbiz-server",
|
|
3
3
|
"main": "./server/app.js",
|
|
4
4
|
"description": "Flexible Server",
|
|
5
|
-
"version": "12.6.
|
|
5
|
+
"version": "12.6.9",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Van Truong Pham",
|
|
8
8
|
"email": "invncur@gmail.com"
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
"ejs": "^4.0.1",
|
|
33
33
|
"elliptic-nodejs": "^6.5.4",
|
|
34
34
|
"excel-report": "^1.0.3",
|
|
35
|
+
"exceljs": "^4.4.0",
|
|
35
36
|
"expo-server-sdk": "^3.6.0",
|
|
36
37
|
"express": "^4.17.1",
|
|
37
38
|
"express-session": "^1.17.2",
|
|
@@ -43,7 +44,7 @@
|
|
|
43
44
|
"imapflow": "^1.1.0",
|
|
44
45
|
"jsonwebtoken": "^8.5.1",
|
|
45
46
|
"jspdf": "^2.1.1",
|
|
46
|
-
"jszip": "^3.1
|
|
47
|
+
"jszip": "^3.10.1",
|
|
47
48
|
"load-script": "^1.0.0",
|
|
48
49
|
"lodash": "^4.17.15",
|
|
49
50
|
"mail-listener2": "^0.3.1",
|
|
@@ -82,7 +83,7 @@
|
|
|
82
83
|
"socket.io-client": "^4.1.2",
|
|
83
84
|
"socket.io-redis": "^6.1.1",
|
|
84
85
|
"sticky-session": "^1.1.2",
|
|
85
|
-
"tesseract.js": "^
|
|
86
|
+
"tesseract.js": "^7.0.0",
|
|
86
87
|
"toobusy-js": "^0.5.1",
|
|
87
88
|
"underscore": "^1.13.1",
|
|
88
89
|
"unidecode": "^0.1.8",
|
package/server/app.js
CHANGED
|
@@ -14,11 +14,11 @@ global.clientRedis=$redis_result$$.createClient({host:"127.0.0.1",port:6379,retr
|
|
|
14
14
|
global.getModel("assabcihandler").start();const {recoverBackgroundTasks:$recoverBackgroundTasks$$}=require("./libs/optimizeBookkeeping");$recoverBackgroundTasks$$().catch(console.error);require("./route")($app$$,()=>{if($options$$.createServer!==!1){var $StaticPool$$=require("sticky-session");if($configs$$.use_ssl&&$options$$.sslDir){var $cpus_report_cpus_server_sslConfig$$=require("./sslConfig");$cpus_report_cpus_server_sslConfig$$=https.createServer($cpus_report_cpus_server_sslConfig$$($options$$.sslDir),
|
|
15
15
|
$app$$)}else $cpus_report_cpus_server_sslConfig$$=http.createServer($app$$);$cpus_report_cpus_server_sslConfig$$.timeout=6E5;$options$$.useSocket!==!1&&$User$$.initSocket($cpus_report_cpus_server_sslConfig$$);if($options$$.cluster!==!1){if(!$StaticPool$$.listen($cpus_report_cpus_server_sslConfig$$,global.port))$cpus_report_cpus_server_sslConfig$$.once("listening",function(){Logger.info("[app] server started on",global.port)});$StaticPool$$=require("cluster");$StaticPool$$.on("exit",function($worker$$,
|
|
16
16
|
$code$$,$signal$$){Logger.error("[app] worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool$$.on("online",function($worker$$){console.info("[app] worker "+$worker$$.process.pid+" is online")})}else $cpus_report_cpus_server_sslConfig$$.listen(global.port,()=>{Logger.info("[app] server start at "+global.port+" port")})}$cpus_report_cpus_server_sslConfig$$=os.cpus().length;$StaticPool$$=$options$$.import_cpus||($options$$.start_import_data_pool?$options$$.start_report_pool||$options$$.start_input_data_pool?
|
|
17
|
-
1:Math.round($cpus_report_cpus_server_sslConfig$$/2):0);var $StaticPool$jscomp$0$$=$options$$.input_cpus||($options$$.start_input_data_pool?Math.max(Math.round($cpus_report_cpus_server_sslConfig$$/2),2):0);$cpus_report_cpus_server_sslConfig$$=$options$$.report_cpus||($options$$.start_import_data_pool?Math.max(Math.min($cpus_report_cpus_server_sslConfig$$-$StaticPool$jscomp$0$$-$StaticPool$$,Math.round($cpus_report_cpus_server_sslConfig$$/2))-1,2):0);
|
|
18
|
-
require("./libs/WorkerStaticPool");global.inputMainPool=new $StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$0
|
|
19
|
-
|
|
20
|
-
$callbackServer$$&&$callbackServer$$()})}else require("./route")($app$$,()=>{$callbackServer$$&&$callbackServer$$()},!0)})}).catch($err$$=>{Logger.info("[app] Not Connected to Database ERROR! ",$err$$);
|
|
21
|
-
process.on("uncaughtException",function($err$jscomp$3_error$$){Logger.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);Logger.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
|
|
17
|
+
1:Math.round($cpus_report_cpus_server_sslConfig$$/2):0);var $StaticPool$jscomp$0$$=$options$$.input_cpus||($options$$.start_input_data_pool?Math.max(Math.round($cpus_report_cpus_server_sslConfig$$/2),2):0);$cpus_report_cpus_server_sslConfig$$=$options$$.report_cpus||($options$$.start_import_data_pool?Math.max(Math.min($cpus_report_cpus_server_sslConfig$$-$StaticPool$jscomp$0$$-$StaticPool$$,Math.round($cpus_report_cpus_server_sslConfig$$/2))-1,2):0);const $timeout_input$$=$options$$.timeout_input||
|
|
18
|
+
$options$$.timeout||3E5,$timeout_import$$=$options$$.timeout_import||$options$$.timeout||36E5,$timeout_report$$=$options$$.timeout_report||$options$$.timeout||3E5;if($StaticPool$jscomp$0$$){const $StaticPool$$=require("./libs/WorkerStaticPool");global.inputMainPool=new $StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$0$$,$timeout_input$$,$StaticPool$jscomp$0$$,"input pool");global.inputMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>
|
|
19
|
+
{Logger.info("\ud83d\udd25 [app] Crud pool ready")})}$StaticPool$$&&($StaticPool$jscomp$0$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool$jscomp$0$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$$,$timeout_import$$,1,"import pool"),global.importDataMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{Logger.info("[app] Import pool ready")}));$cpus_report_cpus_server_sslConfig$$&&($StaticPool$$=require("./libs/WorkerStaticPool"),
|
|
20
|
+
global.reportMainPool=new $StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0,$cpus_report_cpus_server_sslConfig$$,$timeout_report$$,2,"report pool"),global.reportMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{Logger.info("[app] Report pool ready")}));$callbackServer$$&&$callbackServer$$()})}else require("./route")($app$$,()=>{$callbackServer$$&&$callbackServer$$()},!0)})}).catch($err$$=>{Logger.info("[app] Not Connected to Database ERROR! ",$err$$);
|
|
21
|
+
process.exit(1)});return $app$$};process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});process.on("uncaughtException",function($err$jscomp$3_error$$){Logger.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);Logger.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
|
|
22
22
|
Error: ${$err$jscomp$3_error$$.message}
|
|
23
23
|
Stack: ${$err$jscomp$3_error$$.stack}
|
|
24
24
|
`;try{const $logDirectory$$=__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);fs.writeFile(`${$logDirectory$$}/error-${(new Date).getTime()}.txt`,$err$jscomp$3_error$$,()=>{Logger.info("[app] wrote log error")})}catch($e$$){Logger.info($e$$)}process.exit(1)});module.exports=mainServer;
|
package/server/auths/local.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const User=global.getModel("user"),Participant=global.getModel("participant"),UserGroup=global.getModel("usergroup"),Customer=global.getModel("customer"),axios=require("axios"),log=global.getModel("log"),App=global.getModel("app"),Wallet=global.getModel("wallet"),Token=global.getModel("token"),BasicStrategy=require("passport-http").BasicStrategy,_crypto=require("crypto"),validator=require("validator"),email=require("../libs/email"),loadTemplate=require("../libs/load-template"),permission=require("../libs/permission"),
|
|
2
|
-
OTP=global.getModel("otp"),DIGITS="0123456789",redisCache=require("../libs/redis-cache"),utils=require("../libs/utils"),Controler=require("../controllers/controller"),{isValidObjectId}=require("mongoose"),
|
|
2
|
+
OTP=global.getModel("otp"),DIGITS="0123456789",redisCache=require("../libs/redis-cache"),utils=require("../libs/utils"),Controler=require("../controllers/controller"),{isValidObjectId}=require("mongoose"),total_time_wait_login=36E5,total_time_try_login=3;function generateOTP(){let $OTP$$="";for(let $i$$=0;$i$$<6;$i$$++)$OTP$$+=DIGITS[Math.floor(Math.random()*10)];return $OTP$$}
|
|
3
3
|
function generateToken($user$$){const $n$$=new Date;return _crypto.createHash("md5").update($user$$.email+$n$$.toISOString()).digest("hex")}function saveOTP($Phone$$,$otp_code$$,$expires$$=5){let $expire_time$$=new Date;$expire_time$$.setMinutes($expire_time$$.getMinutes()+$expires$$);return OTP.create({phone:$Phone$$,otp:$otp_code$$,expire_time:$expire_time$$})}
|
|
4
4
|
function findByUsername($username$$,$fn$$){if(!$username$$)return $fn$$("B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n");User.findOne({$or:[{email:$username$$},{"local.phone":$username$$}]},function($error$$,$result$$){return!$error$$&&$result$$&&$result$$.local?$fn$$(null,$result$$):$fn$$($error$$||`T\u00e0i kho\u1ea3n ${$username$$} kh\u00f4ng t\u1ed3n t\u1ea1i`)})}
|
|
5
5
|
async function addUserToApp($user$$,$body$$,$par_session_created$$){if($body$$.id_app){if(!await App.findById($body$$.id_app))throw Logger.error("[addUserToApp] Can't find app",$body$$.id_app),"Kh\u00f4ng th\u1ec3 t\u00ecm th\u1ea5y th\u00f4ng tin c\u00f4ng ty n\u00e0y";$user$$.current_id_app=$body$$.id_app;$par_session_created$$=await Participant.asyncCreateParticipant({id_app:$body$$.id_app,name:$body$$.name||$user$$.email,email:$body$$.email,group_id:$body$$.group_id,active:!0,session_created:$par_session_created$$,
|
|
@@ -11,21 +11,15 @@ setImmediate(function(){findByUsername($username$$,async function($err_pars_pars
|
|
|
11
11
|
void 0,User.updateOne({email:$user$$.email},{local:$user$$.local},($e$$,$rs$$)=>{if($e$$)return Logger.error("Can't update password",$user$$.email,$e$$);Logger.info("updated new password",$user$$.email,$rs$$)});else{if(!$user$$.validPassword($password$$))if($id_app$$)if(await $user$$.validAppPassword($password$$,$id_app$$))$user$$=$user$$.toObject(),$user$$.token_id_app=$id_app$$;else return $done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.");else return $err_pars_pars$$=await $user$$.getAppOfPassword($password$$),
|
|
12
12
|
$err_pars_pars$$.length>0?($user$$=$user$$.toObject(),$user$$.token_id_apps=$err_pars_pars$$.map($p$$=>$p$$.id_app),$done$$(null,$user$$)):$done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.")}else{if(!$user$$.local.password)return $done$$("M\u1eadt kh\u1ea9u cho ng\u01b0\u1eddi d\u00f9ng n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i. H\u00e3y s\u1eed d\u1ee5ng t\u00ednh n\u0103ng kh\u00f4i ph\u1ee5c m\u1eadt kh\u1ea9u \u0111\u1ec3 \u0111\u1eb7t l\u1ea1i m\u1eadt kh\u1ea9u cho ng\u01b0\u1eddi d\u00f9ng n\u00e0y");
|
|
13
13
|
if(!$user$$.validPassword($password$$))if($id_app$$)if(await $user$$.validAppPassword($password$$,$id_app$$))$user$$=$user$$.toObject(),$user$$.token_id_app=$id_app$$;else return $done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.");else return $err_pars_pars$$=await $user$$.getAppOfPassword($password$$),$err_pars_pars$$.length>0?($user$$=$user$$.toObject(),$user$$.token_id_apps=$err_pars_pars$$.map($p$$=>$p$$.id_app),$done$$(null,$user$$)):$done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.")}return $done$$(null,
|
|
14
|
-
$user$$)})})}));$app$$.get("/send-otp/:address_receive_otp",$rateLimiter$$,async($
|
|
15
|
-
$e$$),$res$$.status(400).send($e$$.messag||$e$$.error||$e$$)}}let $u$$=await User.findOne({$or:[{email:$address_receive_otp$$},{"local.phone":$address_receive_otp$$}]});if(!$u$$)return $res$$.status(400).send({error:`T\u00e0i kho\u1ea3n ${$address_receive_otp$$} kh\u00f4ng t\u1ed3n t\u1ea1i`});const $username$$=$u$$.email;var $message$jscomp$
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
(Logger.error("
|
|
23
|
-
$message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$||$e$$),$res$$.status(400).send({error:$message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$||$e$$.message||$e$$||`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi zalo "${$username$$}". Vui l\u00f2ng th\u1eed l\u1ea1i sau.`})}}}if(configs.sms&&(configs.sms.send||configs.sms.genUrlSendOTP))if(configs.sms.send)configs.sms.send($id_app$$,$message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$,$headers_req$$.query.id_app).then($rs$$=>
|
|
24
|
-
{$rs$$.error_message?$res$$.status(400).send({error:$rs$$.message||$rs$$.error||$rs$$.error_message||`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n "${$username$$}". Vui l\u00f2ng th\u1eed l\u1ea1i sau.`}):$res$$.send($optObject$$.toObject())}).catch($e$$=>{$e$$||={message:"Kh\u00f4ng th\u1ec3 g\u1eedi m\u00e3 OTP"};Logger.error("[local] [send otp via sms] Error send sms",$e$$);$res$$.status(400).send({error:$e$$.ErrorMessage||$e$$.message||$e$$.error_message||
|
|
25
|
-
`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n "${$username$$}". Vui l\u00f2ng th\u1eed l\u1ea1i sau.`})});else if($message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$=configs.sms.genUrlSendOTP($id_app$$,$message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$,$headers_req$$.query.id_app))try{await axios.get($message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$),$res$$.send($optObject$$.toObject())}catch($e$$){Logger.error($e$$),$res$$.status(400).send({error:$e$$.message||
|
|
26
|
-
$e$$.error||$e$$||`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n "${$username$$}". Vui l\u00f2ng th\u1eed l\u1ea1i sau.`})}else $res$$.status(400).send({error:`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n "${$username$$}". Vui l\u00f2ng th\u1eed l\u1ea1i sau.`});else $res$$.status(400).send({error:`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n "${$username$$}". Vui l\u00f2ng th\u1eed l\u1ea1i sau.`})}else validator.isEmail($address_receive_otp$$)&&
|
|
27
|
-
$address_receive_otp$$!=$username$$?$app$jscomp$2_email_address_id_app$$=$address_receive_otp$$:validator.isEmail($username$$)?$app$jscomp$2_email_address_id_app$$=$username$$:$u$$.email2&&validator.isEmail($u$$.email2)&&($app$jscomp$2_email_address_id_app$$=$u$$.email2),($id_app$$=$headers_req$$.query.id_app)&&isValidObjectId($id_app$$)&&($app_info_data$$=await global.getModel("app").findOne({_id:$id_app$$}).lean()),$app$jscomp$2_email_address_id_app$$?email.sendHtml({to:{address:$app$jscomp$2_email_address_id_app$$},
|
|
28
|
-
subject:"M\u00e3 x\u00e1c th\u1ef1c",html:`Xin vui l\u00f2ng g\u1eedi qu\u00fd kh\u00e1ch m\u00e3 x\u00e1c th\u1ef1c: ${$message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$}. M\u00e3 n\u00e0y s\u1ebd h\u1ebft h\u1ea1n s\u1eed d\u1ee5ng sau 5 ph\u00fat.`,app_info:$app_info_data$$},function($error$$){$error$$?(Logger.error("Error send otp to email",$error$$),$res$$.status(400).send({error:`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi email "${$username$$}". Vui l\u00f2ng th\u1eed l\u1ea1i sau.`})):
|
|
14
|
+
$user$$)})})}));$app$$.get("/send-otp/:address_receive_otp",$rateLimiter$$,async($id_app$$,$res$$)=>{let $address_receive_otp$$=$id_app$$.params.address_receive_otp.trim().toLowerCase();if(configs.GOOGLE_RECAPTCHA_SECRET_KEY){if(!$id_app$$.query["g-recaptcha-response"])return $res$$.status(400).send("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u m\u1ed9t google recaptcha token");try{await permission.verifyReCaptcha($id_app$$.query["g-recaptcha-response"])}catch($e$$){return Logger.error("Can't verify recaptcha when send otp",
|
|
15
|
+
$e$$),$res$$.status(400).send($e$$.messag||$e$$.error||$e$$)}}let $u$$=await User.findOne({$or:[{email:$address_receive_otp$$},{"local.phone":$address_receive_otp$$}]});if(!$u$$)return $res$$.status(400).send({error:`T\u00e0i kho\u1ea3n ${$address_receive_otp$$} kh\u00f4ng t\u1ed3n t\u1ea1i`});const $username$$=$u$$.email;var $message$jscomp$9_otp_code$$=generateOTP();let $phone$$;$address_receive_otp$$!=$username$$&&utils.isMobilePhone($address_receive_otp$$)?$phone$$=$address_receive_otp$$:utils.isMobilePhone($username$$)?
|
|
16
|
+
$phone$$=$username$$:utils.isMobilePhone(($u$$.local||{}).phone||"")&&($phone$$=($u$$.local||{}).phone);let $optObject$$;try{$optObject$$=await saveOTP($username$$,$message$jscomp$9_otp_code$$)}catch($e$$){return $res$$.status(400).send({error:"Kh\u00f4ng th\u1ec3 t\u1ea1o m\u00e3 OTP"})}if($phone$$){var $email_address_id_app$$=$id_app$$.query.id_app;if($email_address_id_app$$&&isValidObjectId($email_address_id_app$$)){var $app$$=await global.getModel("app").findOne({_id:$email_address_id_app$$});
|
|
17
|
+
const {zalo_otp_template_id:$zalo_otp_template_id$$,zalo_app_id:$zalo_app_id$$,zalo_secret_key:$zalo_secret_key$$,zalo_refresh_token:$zalo_refresh_token$$}=$app$$||{};if($zalo_otp_template_id$$&&$zalo_app_id$$&&$zalo_secret_key$$&&$zalo_refresh_token$$)try{return await utils.sendMessageZalo($email_address_id_app$$,$phone$$,$zalo_otp_template_id$$,{otp:$message$jscomp$9_otp_code$$}),$res$$.send($optObject$$.toObject())}catch($e$$){return $message$jscomp$9_otp_code$$=$e$$.message||$e$$.error||$e$$,
|
|
18
|
+
Logger.error("[local] [send otp via zalo] Can't send message from zalo",$message$jscomp$9_otp_code$$),$res$$.status(400).send({error:$message$jscomp$9_otp_code$$||`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi zalo "${$username$$}". Vui l\u00f2ng th\u1eed l\u1ea1i sau.`})}}if(configs.sms&&(configs.sms.send||configs.sms.genUrlSendOTP))if(configs.sms.send)configs.sms.send($phone$$,$message$jscomp$9_otp_code$$,$id_app$$.query.id_app).then($rs$$=>{$rs$$.error_message?$res$$.status(400).send({error:$rs$$.message||
|
|
19
|
+
$rs$$.error||$rs$$.error_message||`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n "${$username$$}". Vui l\u00f2ng th\u1eed l\u1ea1i sau.`}):$res$$.send($optObject$$.toObject())}).catch($e$$=>{$e$$||={message:"Kh\u00f4ng th\u1ec3 g\u1eedi m\u00e3 OTP"};Logger.error("[local] [send otp via sms] Error send sms",$e$$);$res$$.status(400).send({error:$e$$.ErrorMessage||$e$$.message||$e$$.error_message||`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n "${$username$$}". Vui l\u00f2ng th\u1eed l\u1ea1i sau.`})});
|
|
20
|
+
else if($message$jscomp$9_otp_code$$=configs.sms.genUrlSendOTP($phone$$,$message$jscomp$9_otp_code$$,$id_app$$.query.id_app))try{await axios.get($message$jscomp$9_otp_code$$),$res$$.send($optObject$$.toObject())}catch($e$$){Logger.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$||`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n "${$username$$}". Vui l\u00f2ng th\u1eed l\u1ea1i sau.`})}else $res$$.status(400).send({error:`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n "${$username$$}". Vui l\u00f2ng th\u1eed l\u1ea1i sau.`});
|
|
21
|
+
else $res$$.status(400).send({error:`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n "${$username$$}". Vui l\u00f2ng th\u1eed l\u1ea1i sau.`})}else validator.isEmail($address_receive_otp$$)&&$address_receive_otp$$!=$username$$?$email_address_id_app$$=$address_receive_otp$$:validator.isEmail($username$$)?$email_address_id_app$$=$username$$:$u$$.email2&&validator.isEmail($u$$.email2)&&($email_address_id_app$$=$u$$.email2),($id_app$$=$id_app$$.query.id_app)&&
|
|
22
|
+
isValidObjectId($id_app$$)&&($app$$=await global.getModel("app").findOne({_id:$id_app$$}).lean()),$email_address_id_app$$?email.sendHtml({to:{address:$email_address_id_app$$},subject:"M\u00e3 x\u00e1c th\u1ef1c",html:`Xin vui l\u00f2ng g\u1eedi qu\u00fd kh\u00e1ch m\u00e3 x\u00e1c th\u1ef1c: ${$message$jscomp$9_otp_code$$}. M\u00e3 n\u00e0y s\u1ebd h\u1ebft h\u1ea1n s\u1eed d\u1ee5ng sau 5 ph\u00fat.`,app_info:$app$$},function($error$$){$error$$?(Logger.error("Error send otp to email",$error$$),$res$$.status(400).send({error:`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi email "${$username$$}". Vui l\u00f2ng th\u1eed l\u1ea1i sau.`})):
|
|
29
23
|
$res$$.send($optObject$$.toObject())},configs.sender_otp):$res$$.status(400).send({error:`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n "${$username$$}". Vui l\u00f2ng th\u1eed l\u1ea1i sau.`})});$app$$.get("/verify-otp/:id/:otp",$rateLimiter$$,async function($req$$,$res$$){try{const $id$$=$req$$.params.id;if(!global.mongoose.Types.ObjectId.isValid($id$$))return $res$$.status(400).send({error:"ID c\u1ee7a m\u00e3 x\u00e1c th\u1ef1c n\u00e0y kh\u00f4ng h\u1ee3p l\u1ec7",
|
|
30
24
|
code:4001});const $otp_code$$=$req$$.params.otp,$otp$$=await OTP.findById($id$$);if(!$otp$$)return $res$$.status(400).send({error:"M\u00e3 x\u00e1c th\u1ef1c n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i",code:4001});$otp$$.tried_number=($otp$$.tried_number||0)+1;await $otp$$.save();if($otp$$.otp!=$otp_code$$||$otp$$.verified||$otp$$.tried_number>(configs.MAX_TRY_OTP||3)||$otp$$.expire_time.getTime()<(new Date).getTime())return $res$$.status(400).send({error:"M\u00e3 x\u00e1c th\u1ef1c n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i ho\u1eb7c \u0111\u00e3 h\u1ebft hi\u1ec7u l\u1ef1c",
|
|
31
25
|
code:4001});await OTP.updateOne({_id:$id$$},{verified:!0});let $user$$=await User.findOne({email:$otp$$.phone});if(!$user$$)return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n kh\u00f4ng t\u1ed3n t\u1ea1i",code:4001});if(!$user$$.local||!$user$$.local.active){$user$$.local=$user$$.local||{};$user$$.local.active=!0;try{await $user$$.save(),redisCache.set("user",$user$$.toObject(),function($e$$){$e$$?Logger.error($e$$):Logger.info("cache user infomation to redis")})}catch($e$$){return Logger.info("error verify otp, create user",
|
package/server/cluster.js
CHANGED
|
@@ -11,17 +11,18 @@ const $logDirectory$$=$configs$$.paths.log||__dirname+"/log";fs.existsSync($logD
|
|
|
11
11
|
$res$$.status(500).send("Server error!")});Logger.info("[cluster] connect to mongodb",$configs$$.database.url);$configs$$.database.url||(Logger.error("[cluster] thi\u1ebfu \u0111\u01b0\u1eddng d\u1eabn k\u1ebft n\u1ed1i v\u1edbi database trong file configs"),process.exit(1));global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0,useFindAndModify:!1,useUnifiedTopology:!0}).then(async $clientMongo_redis$$=>{Logger.info("[cluster] Connected to Database");var $result_retryStrategyRedis$$=
|
|
12
12
|
await mongoose.connection.getClient().db().admin().command({setParameter:1,transactionLifetimeLimitSeconds:$options$$.transactionLifetimeLimitSeconds||600});Logger.info("[cluster] T\u0103ng th\u1eddi gian ho\u1ea1t \u0111\u1ed9ng c\u1ee7a m\u1ed9t transaction:",$result_retryStrategyRedis$$);global.clientMongo=$clientMongo_redis$$;$clientMongo_redis$$=require("redis");({retryStrategyRedis:$result_retryStrategyRedis$$}=require("./libs/utils"));global.clientRedis=$clientMongo_redis$$.createClient({host:"127.0.0.1",
|
|
13
13
|
port:6379,retry_strategy:$result_retryStrategyRedis$$});global.clientRedis.on("error",$err$$=>{Logger.error("[cluster] Redis Client Error",$err$$);process.exit(1)});global.clientRedis.on("end",()=>{Logger.error("[cluster] Redis connection closed.")});global.clientRedis.on("connect",async function(){function $initSysData$$(){Logger.info("[cluster] creating system data...");const $files$$=fs.readdirSync(__dirname+"/data/sys");$async$$.mapSeries($files$$,function($file$$,$callback$$){setImmediate(()=>
|
|
14
|
-
{if($file$$.
|
|
14
|
+
{if($file$$.endsWith(".js")){const $data$$=JSON.parse(JSON.stringify(require("./data/sys/"+$file$$).data)),$model$$=global.getModel(""+$file$$);Logger.info("[cluster] creating system data...",$file$$);$model$$.deleteMany({},$e$$=>{Logger.error($e$$);$async$$.mapSeries($data$$,function($r$$,$callback$$){delete $r$$._id;delete $r$$.__v;delete $r$$.collection_name;delete $r$$.pkey;$model$$.create($r$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$()})},function($error$$,$rs$$){$callback$$($error$$,
|
|
15
15
|
$rs$$)})})}else $callback$$()})},function($error$$){if($error$$)return Logger.info($error$$);Logger.info("[cluster] created system data")})}Logger.info("redis connected");$options$$.createRedisCache&&require("./libs/redis-cache").set();global.getModel("schedule").start();$options$$.start_abci_handler&&global.getModel("assabcihandler").start();var {recoverBackgroundTasks:$StaticPool$$}=require("./libs/optimizeBookkeeping");$StaticPool$$().catch(console.error);$StaticPool$$=global.getModel("user");
|
|
16
|
-
var $cpus_init_system_data_report_cpus_server$$=$configs$$.initSysData;$cpus_init_system_data_report_cpus_server$$||await $StaticPool$$.findOne({})||($cpus_init_system_data_report_cpus_server$$=!0);for(var $
|
|
17
|
-
email:$
|
|
18
|
-
$configs$$.use_ssl&&$sslDir$$?https.createServer(sslConfig($sslDir$$),$app$$):http.createServer($app$$);$cpus_init_system_data_report_cpus_server$$.timeout=6E5;$StaticPool$$.initSocket($cpus_init_system_data_report_cpus_server$$);$StaticPool$$.initClientSockets();if($options$$.cluster){if(!require("sticky-session").listen($cpus_init_system_data_report_cpus_server$$,global.port))$cpus_init_system_data_report_cpus_server$$.once("listening",
|
|
19
|
-
global.port)});$StaticPool$$=require("cluster");$StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){Logger.error("[cluster] worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool$$.on("online",function($worker$$){console.info("[cluster] worker "+$worker$$.process.pid+" is online");global.clientRedis.set("lastworker",JSON.stringify({pid:$worker$$.process.pid}))})}else $cpus_init_system_data_report_cpus_server$$.listen(global.port,
|
|
20
|
-
global.port+" port")});$cpus_init_system_data_report_cpus_server$$=os.cpus().length;$StaticPool$$=$options$$.import_cpus||($options$$.start_import_data_pool?$options$$.start_report_pool||$options$$.start_input_data_pool?1:Math.round($cpus_init_system_data_report_cpus_server$$/2):0);$StaticPool$jscomp$0$$=$options$$.input_cpus||($options$$.start_input_data_pool?Math.max(Math.round($cpus_init_system_data_report_cpus_server$$/2),2):0);$cpus_init_system_data_report_cpus_server
|
|
21
|
-
($options$$.start_import_data_pool?Math.max(Math.min($cpus_init_system_data_report_cpus_server$$-$StaticPool$jscomp$0$$-$StaticPool$$,Math.round($cpus_init_system_data_report_cpus_server$$/2))-1,2):0);$StaticPool$jscomp$0
|
|
22
|
-
configs:JSON.stringify($configs$$)},()=>{Logger.info("\ud83d\udd25 [cluster] Crud pool ready")})
|
|
23
|
-
|
|
24
|
-
|
|
16
|
+
var $cpus_init_system_data_report_cpus_server$$=$configs$$.initSysData;$cpus_init_system_data_report_cpus_server$$||await $StaticPool$$.findOne({})||($cpus_init_system_data_report_cpus_server$$=!0);for(var $i_timeout_report$$=0;$i_timeout_report$$<$configs$$.adminUsers.length;$i_timeout_report$$++){var $StaticPool$jscomp$0$$=$configs$$.adminUsers[$i_timeout_report$$],$timeout_import_u$$=await $StaticPool$$.findOne({email:$StaticPool$jscomp$0$$.email});$timeout_import_u$$||($StaticPool$jscomp$0$$.local=
|
|
17
|
+
{name:$StaticPool$jscomp$0$$.name,email:$StaticPool$jscomp$0$$.email,active:!0},$timeout_import_u$$=new $StaticPool$$($StaticPool$jscomp$0$$),$timeout_import_u$$.local.password=$timeout_import_u$$.generateHash($StaticPool$jscomp$0$$.email+$StaticPool$jscomp$0$$.defaultPassword),$timeout_import_u$$.save(function($error$$,$user$$){if($error$$)return Logger.error($error$$);$user$$&&Logger.info("[cluster] da tao thanh cong user "+$user$$.email)}))}const $async$$=require("async");$cpus_init_system_data_report_cpus_server$$&&
|
|
18
|
+
$initSysData$$();require("./route")($app$$);$cpus_init_system_data_report_cpus_server$$=$configs$$.use_ssl&&$sslDir$$?https.createServer(sslConfig($sslDir$$),$app$$):http.createServer($app$$);$cpus_init_system_data_report_cpus_server$$.timeout=6E5;$StaticPool$$.initSocket($cpus_init_system_data_report_cpus_server$$);$StaticPool$$.initClientSockets();if($options$$.cluster){if(!require("sticky-session").listen($cpus_init_system_data_report_cpus_server$$,global.port))$cpus_init_system_data_report_cpus_server$$.once("listening",
|
|
19
|
+
function(){Logger.info("[cluster] server cluster started on",global.port)});$StaticPool$$=require("cluster");$StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){Logger.error("[cluster] worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool$$.on("online",function($worker$$){console.info("[cluster] worker "+$worker$$.process.pid+" is online");global.clientRedis.set("lastworker",JSON.stringify({pid:$worker$$.process.pid}))})}else $cpus_init_system_data_report_cpus_server$$.listen(global.port,
|
|
20
|
+
()=>{Logger.info("[cluster] server start at "+global.port+" port")});$cpus_init_system_data_report_cpus_server$$=os.cpus().length;$StaticPool$$=$options$$.import_cpus||($options$$.start_import_data_pool?$options$$.start_report_pool||$options$$.start_input_data_pool?1:Math.round($cpus_init_system_data_report_cpus_server$$/2):0);$StaticPool$jscomp$0$$=$options$$.input_cpus||($options$$.start_input_data_pool?Math.max(Math.round($cpus_init_system_data_report_cpus_server$$/2),2):0);$cpus_init_system_data_report_cpus_server$$=
|
|
21
|
+
$options$$.report_cpus||($options$$.start_import_data_pool?Math.max(Math.min($cpus_init_system_data_report_cpus_server$$-$StaticPool$jscomp$0$$-$StaticPool$$,Math.round($cpus_init_system_data_report_cpus_server$$/2))-1,2):0);const $timeout_input$$=$options$$.timeout_input||$options$$.timeout||3E5;$timeout_import_u$$=$options$$.timeout_import||$options$$.timeout||36E5;$i_timeout_report$$=$options$$.timeout_report||$options$$.timeout||3E5;if($StaticPool$jscomp$0$$){const $StaticPool$$=require("./libs/WorkerStaticPool");
|
|
22
|
+
global.inputMainPool=new $StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$0$$,$timeout_input$$,$StaticPool$jscomp$0$$,"input pool");global.inputMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{Logger.info("\ud83d\udd25 [cluster] Crud pool ready")})}$StaticPool$$&&($StaticPool$jscomp$0$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool$jscomp$0$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||
|
|
23
|
+
0,$StaticPool$$,$timeout_import_u$$,1,"import pool"),global.importDataMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{Logger.info("[cluster] Import pool ready")}));$cpus_init_system_data_report_cpus_server$$&&($StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0,$cpus_init_system_data_report_cpus_server$$,$i_timeout_report$$,2,"report pool"),global.reportMainPool.exec({load:!0,
|
|
24
|
+
configs:JSON.stringify($configs$$)},()=>{Logger.info("[cluster] Report pool ready")}))})}).catch($err$$=>{Logger.error("[cluster] Not Connected to Database ERROR!",$err$$);process.exit(1)})};process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});
|
|
25
|
+
process.on("uncaughtException",function($err$jscomp$3_error$$){Logger.error("[cluster]",(new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);Logger.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
|
|
25
26
|
Error: ${$err$jscomp$3_error$$.message}
|
|
26
27
|
Stack: ${$err$jscomp$3_error$$.stack}
|
|
27
28
|
`;try{const $logDirectory$$=__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);fs.writeFile(`${$logDirectory$$}/error-${(new Date).getTime()}.txt`,$err$jscomp$3_error$$,()=>{Logger.info("[cluster] wrote log error")})}catch($e$$){Logger.info($e$$)}process.exit(1)});module.exports=clusterServer;
|
|
@@ -34,10 +34,10 @@ $ds_nguoi_duyet$$);if($ds_nguoi_duyet$$&&$ds_nguoi_duyet$$.length!==0&&($ds_nguo
|
|
|
34
34
|
!1,$options$$={title:"",data:{}}){return pushNotification(this,$_obj$$,$eventName$$,$old_obj$$,$justFireEvents$$,$options$$)}}controller.prototype.__proto__=EventEmitter.prototype;controller.prototype.asyncGetNextSequence=async($id_app$$,$ma_ct$$,$field$$="so_ct",$options$$)=>new Promise($resolve$$=>{getNextSequence($id_app$$,$ma_ct$$,$field$$,($error$$,$rs$$)=>{if($error$$)return Error($error$$);$resolve$$($rs$$)},$options$$)});
|
|
35
35
|
controller.prototype.getFieldNoRight=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/field-not-right/:fieldName`).get(async($req$$,$res$$)=>{let $fieldName$$=$req$$.params.fieldName;try{(await permission.getFieldNotRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.name)).indexOf($fieldName$$)>=0?$res$$.send({allow:!1}):$res$$.send({allow:!0})}catch($e$$){$res$$.state(400).send($e$$.message)}})};
|
|
36
36
|
controller.prototype.find=function($_route_name_route_name$$,$shareRoute$$=!1,$method$$="GET"){let $ctrl$$=this;const $handlerResult$$=($res$$,$data$$)=>{const {result:$result$$,dataType:$dataType$$}=$data$$;$dataType$$=="xlsx"?($res$$.setHeader("Content-Type","application/vnd.openxmlformats"),$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".xlsx"),$res$$.end($result$$,"binary")):$res$$.send($result$$)},$findRoute$$=async($ip$jscomp$1_req$$,$res$$)=>{const {query:$query$$,
|
|
37
|
-
body:$body$$,user:$user$$,params:$params$$,headers:$headers$$}=$ip$jscomp$1_req$$;var $_req$jscomp$
|
|
38
|
-
global.inputMainPool){const $id_task$$=`task-find-${crypto.randomBytes(20).toString("hex")}`;global.inputMainPool.exec({id_task:$id_task$$,req:$_req
|
|
39
|
-
$handlerResult$$($res$$,$response$$.result)})}else handlers.findHandler($ctrl$$,$_req
|
|
40
|
-
this.router.route($_route_name_route_name$$+"/excel").post($findRoute$$))};
|
|
37
|
+
body:$body$$,user:$user$$,params:$params$$,headers:$headers$$,protocol:$protocol$$}=$ip$jscomp$1_req$$;var $_req$$=configs?.api_url||$ip$jscomp$1_req$$.get("hostName");const $user_agent$$=$ip$jscomp$1_req$$.header("user-agent");$ip$jscomp$1_req$$=$ip$jscomp$1_req$$.ip||$ip$jscomp$1_req$$.headers["x-forwarded-for"]||$ip$jscomp$1_req$$.connection.remoteAddress;try{if($_req$$={handler:"findHandler",protocol:$protocol$$,host:$_req$$,query:$query$$,body:$body$$,user:$user$$,params:$params$$,headers:$headers$$,
|
|
38
|
+
user_agent:$user_agent$$,ip:$ip$jscomp$1_req$$,shareRoute:$shareRoute$$},global.inputMainPool){const $id_task$$=`task-find-${crypto.randomBytes(20).toString("hex")}`;global.inputMainPool.exec({id_task:$id_task$$,req:$_req$$,module:$ctrl$$.name.toUpperCase(),configs:JSON.stringify(configs)},$response$$=>{if($response$$.error)return $res$$.status(400).send({error:$response$$.error.error||$response$$.error.message||$response$$.error,message:$response$$.message||$response$$.error.error||$response$$.error.message||
|
|
39
|
+
$response$$.error,code:$response$$.code});$handlerResult$$($res$$,$response$$.result)})}else handlers.findHandler($ctrl$$,$_req$$,($e$$,$returnvalue$$)=>{if($e$$)return $res$$.status(400).send($e$$);$handlerResult$$($res$$,$returnvalue$$)})}catch($e$$){$res$$.status(400).send($e$$)}};$_route_name_route_name$$=$_route_name_route_name$$||this.route_name;$method$$==="GET"?(this.router.route($_route_name_route_name$$).get($findRoute$$),this.router.route($_route_name_route_name$$+"/excel").get($findRoute$$)):
|
|
40
|
+
(this.router.route($_route_name_route_name$$).post($findRoute$$),this.router.route($_route_name_route_name$$+"/excel").post($findRoute$$))};
|
|
41
41
|
controller.prototype.get=function($route_name$$,$shareRoute$$=!1){const $ctrl$$=this;this.router.route(`${$route_name$$||this.route_name}/:id`).get(async function($req$$,$res$$){let $id$$=$req$$.params.id;if(!global.mongoose.Types.ObjectId.isValid($id$$))return $res$$.status(404).send({error:ERRORS.ERR_ID_INVALID,code:ERRORS.ERR_ID_INVALID_CODE});let $body$$={_id:$id$$};const $user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress,
|
|
42
42
|
{query:$query$$,user:$user$$,params:$params$$,headers:$headers$$}=$req$$;if($ctrl$$.getting)try{await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.getting($user$$,$id$$,$e$$=>{if($e$$)return $reject$$($e$$);$resolve$$()})})}catch($e$$){return $res$$.status(400).send($e$$)}try{handlers.findHandler($ctrl$$,{query:$query$$,body:$body$$,user:$user$$,params:$params$$,headers:$headers$$,user_agent:$user_agent$$,ip:$ip$$,shareRoute:$shareRoute$$,originalUrl:$req$$.originalUrl},($e$jscomp$19_result$$,$returnvalue$$)=>
|
|
43
43
|
{if($e$jscomp$19_result$$)return $res$$.status(400).send($e$jscomp$19_result$$);({result:$e$jscomp$19_result$$}=$returnvalue$$);if($e$jscomp$19_result$$.length==0)return $res$$.status(404).send({error:ERRORS.ERR_NOT_FOUND,code:ERRORS.ERR_NOT_FOUND_CODE});$res$$.send($e$jscomp$19_result$$[0])})}catch($e$$){Logger.error($e$$),$res$$.status(400).send($e$$)}})};
|
|
@@ -59,9 +59,9 @@ headers:$headers$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,originalUrl:
|
|
|
59
59
|
controller.prototype.exportToExcel=function(){let $ctrl$$=this;const $handlerResult$$=($res$$,$data$jscomp$3_data$jscomp$4_returnvalue$$)=>{switch($data$jscomp$3_data$jscomp$4_returnvalue$$.ext){case "xlsx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$ctrl$$.name+'".xlsx');$data$jscomp$3_data$jscomp$4_returnvalue$$=$data$jscomp$3_data$jscomp$4_returnvalue$$.data;$data$jscomp$3_data$jscomp$4_returnvalue$$?.type==
|
|
60
60
|
"Buffer"&&$data$jscomp$3_data$jscomp$4_returnvalue$$?.data&&($data$jscomp$3_data$jscomp$4_returnvalue$$=Buffer.from($data$jscomp$3_data$jscomp$4_returnvalue$$.data));$res$$.setHeader("Content-Length",$data$jscomp$3_data$jscomp$4_returnvalue$$.length);$res$$.end($data$jscomp$3_data$jscomp$4_returnvalue$$);break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$ctrl$$.name+
|
|
61
61
|
'".docx');$data$jscomp$3_data$jscomp$4_returnvalue$$=$data$jscomp$3_data$jscomp$4_returnvalue$$.data;$data$jscomp$3_data$jscomp$4_returnvalue$$?.type=="Buffer"&&$data$jscomp$3_data$jscomp$4_returnvalue$$?.data&&($data$jscomp$3_data$jscomp$4_returnvalue$$=Buffer.from($data$jscomp$3_data$jscomp$4_returnvalue$$.data));$res$$.setHeader("Content-Length",$data$jscomp$3_data$jscomp$4_returnvalue$$.length);$res$$.end($data$jscomp$3_data$jscomp$4_returnvalue$$);break;case "print":$res$$.send($data$jscomp$3_data$jscomp$4_returnvalue$$.data.join('<p style="page-break-before: always"></p>'));
|
|
62
|
-
break;case "json":$res$$.json($data$jscomp$3_data$jscomp$4_returnvalue$$.data);break;default:$res$$.send($data$jscomp$3_data$jscomp$4_returnvalue$$.data)}}
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
break;case "json":$res$$.json($data$jscomp$3_data$jscomp$4_returnvalue$$.data);break;default:$res$$.send($data$jscomp$3_data$jscomp$4_returnvalue$$.data)}},$handleRoute$$=async function($req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,headers:$headers$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $_req$$={handler:"exportHandler",query:$query$$,body:$body$$,user:$user$$,
|
|
63
|
+
params:$params$$,headers:$headers$$,user_agent:$user_agent$$,ip:$ip$$,originalUrl:$req$$.originalUrl};global.inputMainPool?global.inputMainPool.exec({req:$_req$$,module:$ctrl$$.name.toUpperCase(),configs:JSON.stringify(configs)},$response$$=>{if($response$$.error)return $res$$.status(400).send({error:$response$$.error.error||$response$$.error.message||$response$$.error,message:$response$$.message||$response$$.error.error||$response$$.error.message||$response$$.error});Logger.info("[controller][export] X\u1eed l\u00fd k\u1ebft qu\u1ea3...",
|
|
64
|
+
$response$$?.result?.ext);$handlerResult$$($res$$,$response$$.result)}):handlers.exportHandler($ctrl$$,$_req$$,($e$$,$returnvalue$$)=>{if($e$$)return $res$$.status(400).send($e$$);$handlerResult$$($res$$,$returnvalue$$)})}catch($e$$){$res$$.status(400).send($e$$)}};this.router.route(`${this.route_name}/excel/:rpt_id`).get($handleRoute$$);this.router.route(`${this.route_name}/export/:rpt_id`).get($handleRoute$$)};
|
|
65
65
|
controller.prototype.importFromGoogleSheet=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/import/googlesheet`).get(async function($req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,headers:$headers$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $_req$$={handler:"importFromGsHandler",query:$query$$,body:$body$$,user:$user$$,params:$params$$,headers:$headers$$,
|
|
66
66
|
user_agent:$user_agent$$,ip:$ip$$,originalUrl:$req$$.originalUrl};if(global.importDataMainPool){const $id_task$$=`task-import-google-sheet-${crypto.randomBytes(20).toString("hex")}`,$status_task$$=`${configs.api_url||configs.domain}/task-status/${$id_task$$}`;$_req$$.status_task=$status_task$$;$res$$.status(202).send({message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n. Khi ho\u00e0n th\u00e0nh, ch\u01b0\u01a1ng tr\u00ecnh s\u1ebd g\u1eedi cho b\u1ea1n m\u1ed9t th\u00f4ng b\u00e1o",
|
|
67
67
|
status_task:$status_task$$});global.importDataMainPool.exec({id_task:$id_task$$,req:$_req$$,module:$ctrl$$.name.toUpperCase(),configs:JSON.stringify(configs)},$e$jscomp$34_response$$=>{if($e$jscomp$34_response$$=$e$jscomp$34_response$$.error)return Logger.error("\u274c [importFromGoogleSheet] l\u1ed7i",$e$jscomp$34_response$$),global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",$e$jscomp$34_response$$.message||$e$jscomp$34_response$$.error||
|
|
@@ -11,25 +11,26 @@ $func_string_rptInfo$$=`return (async ()=>{
|
|
|
11
11
|
})`;try{let $rs$$=await evalute($func_string_rptInfo$$,{data:$data_response$$,moment,numeral,condition:$req$$.query,user:$req$$.user,_,utils,getData:getParameterData})();if($rs$$){if($rs$$.error)return Logger.error("handle_data_expression_server",$rs$$.error,$func_string_rptInfo$$,$rptId$$),$callback$$($rs$$.error.message||$rs$$.error);$data_response$$=$rs$$}}catch($e$$){return Logger.error("handle_data_expression_server",$e$$,$func_string_rptInfo$$,$rptId$$),$callback$$($e$$.message||$e$$)}}$callback$$(null,
|
|
12
12
|
$data_response$$)};this.getDataFunc=()=>{const $currentStore$$=getCurrentStore();Logger.info(`\u2705 [rptHanlder] [getDataFunc], storeId=${$currentStore$$?.storeId||"none"},sessionID=${getCurrentSession()?._debugId}`);return $options$$.stream?$fecthData$$:async($req$$,$callback$$)=>{Logger.info(`\u2705 [rptHanlder] Ch\u1ea1y b\u00e1o c\u00e1o ${$rptId$$}, sessionID=${getCurrentSession()?._debugId}`);try{await $fecthData$$($req$$,($e$$,$data$$)=>{this.handleResult($req$$,{error:$e$$,result:$data$$},
|
|
13
13
|
($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})})}catch($e$$){$callback$$($e$$)}}};const $mainRoute$$=async($req$$,$res$$)=>{if($options$$.stream)handlers.rptHandler(this,$req$$,($e$$,$rs$$)=>{if($options$$.resHandler)return $options$$.resHandler($req$$,{error:$e$$,data:$rs$$},$res$$);if($e$$)return $e$$.error?$res$$.status(500).send($e$$):$res$$.status(500).send({error:$e$$.message||$e$$});$rs$$=="__end_stream__"?Logger.info("[controllerRPT] end stream...",$rptId$$):$res$$.send($rs$$)},$res$$);else{const {query:$query$$,
|
|
14
|
-
body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$req$$;var $
|
|
15
|
-
if($options$$.waiting_message){const $status_task$$=`${configs.api_url||configs.domain}/task-status/${$id_task$$}`;$res$$.status(202).send([{message:$options$$.waiting_message,status_task:$status_task$$}])}global.reportMainPool.exec({id_task:$id_task$$,req:$
|
|
16
|
-
if($response$$.error)return $res$$.status(400).send($response$$.error);$res$$.send($response$$.result)}})}else $options$$.waiting_message&&$res$$.status(202).send([{message:$options$$.waiting_message}]),handlers.rptHandler(this,$
|
|
17
|
-
$rptId$$,$e$$),$res$$.status(400).send($e$$)}}},$excelRoute$$=async($ip$jscomp$1_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$1_req$$;var $_req$jscomp$
|
|
18
|
-
|
|
19
|
-
var $result_returnvalue$$=$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.result;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$.type;$result_returnvalue$$=$result_returnvalue$$.data;switch($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$){case "xlsx":Logger.info("[controllerRPT] send file from worker..."
|
|
20
|
-
$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xlsx');$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$?.type===
|
|
21
|
-
$res$$.setHeader("Content-Length",$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.length);$res$$.end($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$);break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document")
|
|
22
|
-
"Buffer"&&Array.isArray($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data)&&($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=Buffer.from($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data));$res$$.setHeader("Content-Length",$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.length)
|
|
23
|
-
'attachment; filename="'+$rptId$$+'".xml');$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$?.type==="Buffer"&&Array.isArray($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data)&&($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=
|
|
24
|
-
$res$$.end($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$);break;default:$res$$.send($result_returnvalue$$)}})}else handlers.rptExcelHandler(this,$_req$jscomp$
|
|
25
|
-
if(typeof $e$jscomp$7_result$$=="string")return $res$$.send($e$jscomp$7_result$$);$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xlsx');$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue
|
|
26
|
-
Buffer.from($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data));$res$$.setHeader("Content-Length",$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.length);$res$$.end($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$);break;case "docx":$res$$.setHeader("Content-Type",
|
|
27
|
-
$e$jscomp$7_result$$;$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$?.type==="Buffer"&&Array.isArray($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data)&&($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=Buffer.from($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data))
|
|
28
|
-
"application/xml");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xml');$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=$e$jscomp$7_result$$;$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$?.type==="Buffer"&&Array.isArray($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data)&&
|
|
29
|
-
$res$$.end($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$);break;default:$res$$.send($e$jscomp$7_result$$)}})}catch($e$$){$res$$.status(400).send($e$$)}};$router
|
|
30
|
-
$router$$.route(`${this.base_path+this.module}/export`).post($excelRoute$$)}getData($req$$,$callback$$){const $ctrl$$=this;let $callback_run$$=!1;setImmediate(()=>{try{$ctrl$$.fecthDataFunc($req$$,($err$$,$data$$,$event$$)=>{if($ctrl$$.options?.stream){if($err$$)return $callback$$($err$$)
|
|
31
|
-
result:$data$$},($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})})}catch($e$$){Logger.error("[report controller] [getData]",$e$$),$callback$$($e$$.message)}})}createRoute($routeName$$,$callbackRoute_handler$$,$_options$$={method:"GET",not_use_worker:!1,action_code:"view"}){const $self$$=this;$_options$$.method
|
|
32
|
-
$callbackRoute_handler$$=async function($ip$jscomp$2_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$2_req$$;var $_req$jscomp$2_user_agent$$=$ip$jscomp$2_req$$.header("user-agent");$ip$jscomp$2_req$$=$ip$jscomp$2_req$$.ip||$ip$jscomp$2_req$$.headers["x-forwarded-for"]
|
|
33
|
-
query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$_req$jscomp$2_user_agent$$,ip:$ip$jscomp$2_req$$,files:$files$$},!global.reportMainPool||global.reportMainPool.fullQueue()||$_options$$.not_use_worker)handlers.rptCreateRouteHandler($self$$,$_req$jscomp$2_user_agent$$,($e$$,$returnvalue$$)=>
|
|
34
|
-
req:$_req$jscomp$2_user_agent$$,module:$self$$.module.toUpperCase(),configs:JSON.stringify(configs)},$response$jscomp$6_result$$=>{if($response$jscomp$6_result$$.error)return $res$$.status(400).send($response$jscomp$6_result$$.error);({result:$response$jscomp$6_result$$}=$response$jscomp$6_result$$)
|
|
35
|
-
$_options$$.method=="
|
|
14
|
+
body:$body$$,user:$user$$,params:$params$$,files:$files$$,protocol:$protocol$$}=$req$$;var $_req_host$$=configs?.api_url||$req$$.get("hostName");const $user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{if($_req_host$$={handler:"rptHandler",protocol:$protocol$$,host:$_req_host$$,query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$},global.reportMainPool&&!global.reportMainPool.fullQueue()&&
|
|
15
|
+
$options$$.queue!=0){const $id_task$$=`report-${crypto.randomBytes(20).toString("hex")}`;if($options$$.waiting_message){const $status_task$$=`${configs.api_url||configs.domain}/task-status/${$id_task$$}`;$res$$.status(202).send([{message:$options$$.waiting_message,status_task:$status_task$$}])}global.reportMainPool.exec({id_task:$id_task$$,req:$_req_host$$,module:$rptId$$.toUpperCase(),configs:JSON.stringify(configs)},$response$$=>{if(!$options$$.waiting_message){if($options$$.resHandler)return $options$$.resHandler($req$$,
|
|
16
|
+
{error:$response$$.error,data:$response$$.result},$res$$);if($response$$.error)return $res$$.status(400).send($response$$.error);$res$$.send($response$$.result)}})}else $options$$.waiting_message&&$res$$.status(202).send([{message:$options$$.waiting_message}]),handlers.rptHandler(this,$_req_host$$,($e$$,$returnvalue$$)=>{if(!$options$$.waiting_message){if($options$$.resHandler)return $options$$.resHandler($req$$,{error:$e$$,data:$returnvalue$$},$res$$);if($e$$)return $res$$.status(400).send($e$$);
|
|
17
|
+
$res$$.send($returnvalue$$)}})}catch($e$$){Logger.error("L\u1ed7i t\u1ea1o job cho b\u00e1o c\u00e1o",$rptId$$,$e$$),$res$$.status(400).send($e$$)}}},$excelRoute$$=async($ip$jscomp$1_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$,protocol:$protocol$$}=$ip$jscomp$1_req$$;var $_req$jscomp$1_host$$=configs?.api_url||$ip$jscomp$1_req$$.get("host");const $user_agent$$=$ip$jscomp$1_req$$.header("user-agent");$ip$jscomp$1_req$$=$ip$jscomp$1_req$$.ip||$ip$jscomp$1_req$$.headers["x-forwarded-for"]||
|
|
18
|
+
$ip$jscomp$1_req$$.connection.remoteAddress;try{if($_req$jscomp$1_host$$={handler:"rptExcelHandler",protocol:$protocol$$,host:$_req$jscomp$1_host$$,query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$1_req$$,files:$files$$},global.reportMainPool&&!global.reportMainPool.fullQueue()&&$options$$.queue!=0){const $id_task$$=`report-export-${crypto.randomBytes(20).toString("hex")}`;global.reportMainPool.exec({id_task:$id_task$$,req:$_req$jscomp$1_host$$,module:$rptId$$.toUpperCase(),
|
|
19
|
+
configs:JSON.stringify(configs)},$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=>{if($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.error)return $res$$.status(400).send($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.error);var $result_returnvalue$$=$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.result;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$.type;$result_returnvalue$$=$result_returnvalue$$.data;switch($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$){case "xlsx":Logger.info("[controllerRPT] send file from worker...",
|
|
20
|
+
$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$,typeof $result_returnvalue$$);if(typeof $result_returnvalue$$=="string")return $res$$.send($result_returnvalue$$);$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xlsx');$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$?.type===
|
|
21
|
+
"Buffer"&&Array.isArray($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data)&&($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=Buffer.from($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data));$res$$.setHeader("Content-Length",$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.length);$res$$.end($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$);break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");
|
|
22
|
+
$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".docx');$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$?.type==="Buffer"&&Array.isArray($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data)&&($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=Buffer.from($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data));$res$$.setHeader("Content-Length",$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.length);
|
|
23
|
+
$res$$.end($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$);break;case "xml":$res$$.setHeader("Content-Type","application/xml");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xml');$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$?.type==="Buffer"&&Array.isArray($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data)&&($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=
|
|
24
|
+
Buffer.from($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data));$res$$.setHeader("Content-Length",$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.length);$res$$.end($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$);break;default:$res$$.send($result_returnvalue$$)}})}else handlers.rptExcelHandler(this,$_req$jscomp$1_host$$,($e$jscomp$7_result$$,$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$)=>{if($e$jscomp$7_result$$)return $res$$.status(400).send($e$jscomp$7_result$$);
|
|
25
|
+
$e$jscomp$7_result$$=$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data;switch($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.type){case "xlsx":Logger.info("[controllerRPT] send xls file...");if(typeof $e$jscomp$7_result$$=="string")return $res$$.send($e$jscomp$7_result$$);$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xlsx');$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=
|
|
26
|
+
$e$jscomp$7_result$$;$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$?.type==="Buffer"&&Array.isArray($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data)&&($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=Buffer.from($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data));$res$$.setHeader("Content-Length",$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.length);$res$$.end($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$);break;case "docx":$res$$.setHeader("Content-Type",
|
|
27
|
+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".docx');$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=$e$jscomp$7_result$$;$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$?.type==="Buffer"&&Array.isArray($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data)&&($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=Buffer.from($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data));
|
|
28
|
+
$res$$.setHeader("Content-Length",$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.length);$res$$.end($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$);break;case "xml":$res$$.setHeader("Content-Type","application/xml");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xml');$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=$e$jscomp$7_result$$;$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$?.type==="Buffer"&&Array.isArray($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data)&&
|
|
29
|
+
($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=Buffer.from($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data));$res$$.setHeader("Content-Length",$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.length);$res$$.end($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$);break;default:$res$$.send($e$jscomp$7_result$$)}})}catch($e$$){$res$$.status(400).send($e$$)}};$router$$&&($router$$.route(`${this.base_path+this.module}`).get($mainRoute$$),$router$$.route(`${this.base_path+
|
|
30
|
+
this.module}`).post($mainRoute$$),$router$$.route(`${this.base_path+this.module}/excel`).get($excelRoute$$),$router$$.route(`${this.base_path+this.module}/excel`).post($excelRoute$$),$router$$.route(`${this.base_path+this.module}/export`).get($excelRoute$$),$router$$.route(`${this.base_path+this.module}/export`).post($excelRoute$$))}getData($req$$,$callback$$){const $ctrl$$=this;let $callback_run$$=!1;setImmediate(()=>{try{$ctrl$$.fecthDataFunc($req$$,($err$$,$data$$,$event$$)=>{if($ctrl$$.options?.stream){if($err$$)return $callback$$($err$$);
|
|
31
|
+
$event$$!="data"||$callback_run$$||($callback_run$$=!0,this.handleResult($req$$,{error:$err$$,result:$data$$},($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)}))}else $callback_run$$=!0,this.handleResult($req$$,{error:$err$$,result:$data$$},($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})})}catch($e$$){Logger.error("[report controller] [getData]",$e$$),$callback$$($e$$.message)}})}createRoute($routeName$$,$callbackRoute_handler$$,$_options$$={method:"GET",not_use_worker:!1,action_code:"view"}){const $self$$=this;$_options$$.method=
|
|
32
|
+
$_options$$.method?$_options$$.method.toUpperCase():"GET";const $route_action_key$$=`rpt_route_action_${$self$$.module}_${$routeName$$}_${$_options$$.method}`;$self$$[$route_action_key$$]=$callbackRoute_handler$$;$callbackRoute_handler$$=async function($ip$jscomp$2_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$2_req$$;var $_req$jscomp$2_user_agent$$=$ip$jscomp$2_req$$.header("user-agent");$ip$jscomp$2_req$$=$ip$jscomp$2_req$$.ip||$ip$jscomp$2_req$$.headers["x-forwarded-for"]||
|
|
33
|
+
$ip$jscomp$2_req$$.connection.remoteAddress;try{if($_req$jscomp$2_user_agent$$={handler:"rptCreateRouteHandler",routeName:$routeName$$,_options:$_options$$,route_action_key:$route_action_key$$,query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$_req$jscomp$2_user_agent$$,ip:$ip$jscomp$2_req$$,files:$files$$},!global.reportMainPool||global.reportMainPool.fullQueue()||$_options$$.not_use_worker)handlers.rptCreateRouteHandler($self$$,$_req$jscomp$2_user_agent$$,($e$$,$returnvalue$$)=>
|
|
34
|
+
{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($returnvalue$$)});else{const $id_task$$=`report-create-route-${crypto.randomBytes(20).toString("hex")}`;global.reportMainPool.exec({id_task:$id_task$$,req:$_req$jscomp$2_user_agent$$,module:$self$$.module.toUpperCase(),configs:JSON.stringify(configs)},$response$jscomp$6_result$$=>{if($response$jscomp$6_result$$.error)return $res$$.status(400).send($response$jscomp$6_result$$.error);({result:$response$jscomp$6_result$$}=$response$jscomp$6_result$$);
|
|
35
|
+
$res$$.send($response$jscomp$6_result$$)})}}catch($e$$){$res$$.status(400).send($e$$)}};this.router&&($_options$$.method=="DELETE"?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).delete($callbackRoute_handler$$):$_options$$.method=="POST"?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).post($callbackRoute_handler$$):$_options$$.method=="PUT"?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).put($callbackRoute_handler$$):this.router.route(`${this.base_path+
|
|
36
|
+
this.module}/${$routeName$$}`).get($callbackRoute_handler$$))}}module.exports=controllerRPT;
|
|
@@ -66,5 +66,9 @@ if($query$jscomp$1_sandbox$$.collection&&$query$jscomp$1_sandbox$$.field){$query
|
|
|
66
66
|
getData,round:utils.round};try{$app$$[$p$$.name]=await evalute(`return (async ()=>{
|
|
67
67
|
${$condition$$}
|
|
68
68
|
})`,$query$jscomp$1_sandbox$$)()}catch($e$$){$app$$[$p$$.name]=$e$$.message}}else $app$$[$p$$.name]=$p$$.value})().then(()=>{$callback$$()}).catch(()=>{$callback$$()})})},function($e$jscomp$34_v$$){if($e$jscomp$34_v$$)return $callback$$($e$jscomp$34_v$$);_.extend($app$$,$obj$$);if($ctrl$$.getData4Export)$ctrl$$.getData4Export($app$$,function($error$jscomp$16_v$$){if($error$jscomp$16_v$$)return $callback$$($error$jscomp$16_v$$);for(let $key$$ in $app$$)$error$jscomp$16_v$$=$app$$[$key$$],
|
|
69
|
-
_.isDate($error$jscomp$16_v$$)&&($app$$[$key$$+"_string"]=moment($error$jscomp$16_v$$).format("DD/MM/YYYY"));$callback$$()});else{for(let $key$$ in $app$$)$e$jscomp$34_v$$=$app$$[$key$$],_.isDate($e$jscomp$34_v$$)&&($app$$[$key$$+"_string"]=moment($e$jscomp$34_v$$).format("DD/MM/YYYY"));$callback$$()}})};
|
|
70
|
-
|
|
69
|
+
_.isDate($error$jscomp$16_v$$)&&($app$$[$key$$+"_string"]=moment($error$jscomp$16_v$$).format("DD/MM/YYYY"));$callback$$()});else{for(let $key$$ in $app$$)$e$jscomp$34_v$$=$app$$[$key$$],_.isDate($e$jscomp$34_v$$)&&($app$$[$key$$+"_string"]=moment($e$jscomp$34_v$$).format("DD/MM/YYYY"));$callback$$()}})},cleanDataByMongooseSchema=($rawData$$,$mongooseSchema_paths$$)=>{if(!$rawData$$||typeof $rawData$$!=="object")return{};const $cleanedData$$={};$mongooseSchema_paths$$=$mongooseSchema_paths$$.paths;
|
|
70
|
+
for(const $key$$ in $rawData$$){if(!$mongooseSchema_paths$$[$key$$])continue;var $parsedDate_val$$=$rawData$$[$key$$];if($parsedDate_val$$===void 0||$parsedDate_val$$===null)continue;const $schemaType$$=$mongooseSchema_paths$$[$key$$];var $instanceType_numVal$$=$schemaType$$.instance;if(typeof $parsedDate_val$$!=="object"||Array.isArray($parsedDate_val$$)||$parsedDate_val$$ instanceof Date||!Object.keys($parsedDate_val$$).some($k$$=>$k$$.startsWith("$")))switch($instanceType_numVal$$){case "String":typeof $parsedDate_val$$!==
|
|
71
|
+
"string"&&($parsedDate_val$$=String($parsedDate_val$$));$parsedDate_val$$=$parsedDate_val$$.trim();$cleanedData$$[$key$$]=$parsedDate_val$$;break;case "Number":typeof $parsedDate_val$$==="string"&&($parsedDate_val$$=$parsedDate_val$$.replace(/,/g,""));$instanceType_numVal$$=Number($parsedDate_val$$);isNaN($instanceType_numVal$$)||$parsedDate_val$$===""||($cleanedData$$[$key$$]=$instanceType_numVal$$);break;case "Boolean":$cleanedData$$[$key$$]=$parsedDate_val$$===!0||$parsedDate_val$$==="true"||$parsedDate_val$$===
|
|
72
|
+
1||$parsedDate_val$$==="1";break;case "Date":$parsedDate_val$$!==""&&($parsedDate_val$$=new Date($parsedDate_val$$),isNaN($parsedDate_val$$.getTime())||($cleanedData$$[$key$$]=$parsedDate_val$$));break;case "ObjectID":case "ObjectId":typeof $parsedDate_val$$==="string"&&$parsedDate_val$$.trim()!==""&&($cleanedData$$[$key$$]=$parsedDate_val$$.trim());break;case "Array":Array.isArray($parsedDate_val$$)||($parsedDate_val$$=$parsedDate_val$$!==""?[$parsedDate_val$$]:[]);$cleanedData$$[$key$$]=$schemaType$$.schema?
|
|
73
|
+
$parsedDate_val$$.filter($item$$=>typeof $item$$!=="object"||$item$$===null||Array.isArray($item$$)||Object.keys($item$$).length===0?!1:!0).map($item$$=>cleanDataByMongooseSchema($item$$,$schemaType$$.schema)):$parsedDate_val$$.filter($v$$=>$v$$!==""&&$v$$!==null);break;default:$cleanedData$$[$key$$]=$parsedDate_val$$}}return $cleanedData$$};
|
|
74
|
+
module.exports={createIdRef,postData,asyncPostData,pushNotification,ERRORS,isExists,getData,asyncBodyToJson,bodyToJson,deleteEmptyArray,fields_sync_master_detail,runWebhooks,deletePost,getNextSequence,asyncGetNextSequence,checkReference,getParameters,prepareParameters,cleanDataByMongooseSchema};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
const async=require("async"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),numeral=require("numeral"),_=require("lodash"),validate=require("../libs/validate"),permission=require("../libs/permission"),{onAfterCommit,executeInTransaction}=require("../libs/sessionContext.js"),{evalute,convertObjectIdsToStrings}=require("../libs/utils"),{asyncBodyToJson,ERRORS,getNextSequence,isExists,createIdRef,fields_sync_master_detail,postData,runWebhooks
|
|
2
|
-
require("./controllerUtils"),createHandler=async($ctrl$$,$req$$,$callback$$)=>{$req$$.headers=$req$$.headers||{};$req$$.body=$req$$.body||{};$req$$.query=$req$$.query||{};$req$$.data=$req$$.data||{};let {user:$user$$,data:$data$$,id_be_supply_by_user:$id_be_supply_by_user$$,action:$action$$}=$req$$;$action$$||="add";let $listinfo_code$$=$req$$?.headers?.["listinfo-code"]||$req$$?.headers?.["Listinfo-Code"]||$req$$.query?.["listinfo-code"]||$data$$?.listinfo_code;if($listinfo_code
|
|
3
|
-
$ctrl$$.name){Logger.warn(`[createHandler] listinfo_code (${$listinfo_code$$}) # controller code (${$ctrl$$.name}). \u0110ang ki\u1ec3m tra t\u00ednh h\u1ee3p l\u1ec7 c\u1ee7a listinfo_code`);var $api_code_listinfo$$=await global.getModel("listinfo").findOne({code:$listinfo_code$$},{api_code:1,code:1}).lean();$api_code_listinfo$$?($api_code_listinfo$$=$api_code_listinfo$$.api_code||$api_code_listinfo$$.code,$api_code_listinfo$$!=$ctrl$$.name&&(Logger.warn(`[createHandler] api_code (${$api_code_listinfo$$}) v\u00e0 controller name (${$ctrl$$.name}) kh\u00f4ng kh\u1edbp nhau. S\u1eeda d\u1ee5ng controller name (${$ctrl$$.name}) cho listinfo_code`),
|
|
1
|
+
const async=require("async"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),numeral=require("numeral"),_=require("lodash"),validate=require("../libs/validate"),permission=require("../libs/permission"),{onAfterCommit,executeInTransaction}=require("../libs/sessionContext.js"),{evalute,convertObjectIdsToStrings}=require("../libs/utils"),{asyncBodyToJson,ERRORS,getNextSequence,isExists,createIdRef,fields_sync_master_detail,postData,runWebhooks,
|
|
2
|
+
cleanDataByMongooseSchema}=require("./controllerUtils"),createHandler=async($ctrl$$,$req$$,$callback$$)=>{$req$$.headers=$req$$.headers||{};$req$$.body=$req$$.body||{};$req$$.query=$req$$.query||{};$req$$.data=$req$$.data||{};let {user:$user$$,data:$data$$,id_be_supply_by_user:$id_be_supply_by_user$$,action:$action$$}=$req$$;$action$$||="add";let $listinfo_code$$=$req$$?.headers?.["listinfo-code"]||$req$$?.headers?.["Listinfo-Code"]||$req$$.query?.["listinfo-code"]||$data$$?.listinfo_code;if($listinfo_code$$&&
|
|
3
|
+
$listinfo_code$$!=$ctrl$$.name){Logger.warn(`[createHandler] listinfo_code (${$listinfo_code$$}) # controller code (${$ctrl$$.name}). \u0110ang ki\u1ec3m tra t\u00ednh h\u1ee3p l\u1ec7 c\u1ee7a listinfo_code`);var $api_code_listinfo$$=await global.getModel("listinfo").findOne({code:$listinfo_code$$},{api_code:1,code:1}).lean();$api_code_listinfo$$?($api_code_listinfo$$=$api_code_listinfo$$.api_code||$api_code_listinfo$$.code,$api_code_listinfo$$!=$ctrl$$.name&&(Logger.warn(`[createHandler] api_code (${$api_code_listinfo$$}) v\u00e0 controller name (${$ctrl$$.name}) kh\u00f4ng kh\u1edbp nhau. S\u1eeda d\u1ee5ng controller name (${$ctrl$$.name}) cho listinfo_code`),
|
|
4
4
|
$listinfo_code$$=$ctrl$$.name)):(Logger.warn(`[createHandler] listinfo_code (${$listinfo_code$$}) kh\u00f4ng t\u1ed3n t\u1ea1i. S\u1eeda d\u1ee5ng controller name (${$ctrl$$.name}) cho listinfo_code`),$listinfo_code$$=$ctrl$$.name)}$listinfo_code$$=$listinfo_code$$||$ctrl$$.name;$req$$.headers=$req$$.headers||{};$req$$.headers["Listinfo-Code"]=$listinfo_code$$;$data$$.listinfo_code=$listinfo_code$$;try{const $model$$=$ctrl$$.model;let $voucher_options$$=(await global.getModel("options").findOne({id_app:$user$$.current_id_app,
|
|
5
5
|
id_func:$listinfo_code$$.toLowerCase()}).lean()||{}).option;$voucher_options$$||$ctrl$$.name===$listinfo_code$$||($voucher_options$$=(await global.getModel("options").findOne({id_app:$user$$.current_id_app,id_func:$ctrl$$.name}).lean()||{}).option);const $schema_paths$$=$model$$.schema.paths;let $v_data$$;try{$v_data$$=await asyncBodyToJson($data$$,$ctrl$$,$user$$.current_id_app,$voucher_options$$)}catch($e$$){return $callback$$($e$$.message||$e$$.error||$e$$)}$schema_paths$$.ma_ct&&$ctrl$$.options.isVoucher&&
|
|
6
6
|
($v_data$$.ma_ct=$ctrl$$.name.toUpperCase());delete $v_data$$.session_created;delete $v_data$$.session_updated;$req$$&&$schema_paths$$.session_created&&($v_data$$.session_created=($req$$.cookies||{}).uid);if($ctrl$$.options.requireRecaptchaToken&&configs.GOOGLE_RECAPTCHA_SECRET_KEY){if(!$v_data$$["g-recaptcha-response"])return $callback$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u g-recaptcha-response");try{await permission.verifyReCaptcha($v_data$$["g-recaptcha-response"])}catch($e$$){return $callback$$($e$$.message||
|
|
7
7
|
$e$$.error||$e$$)}}let $requireOtp$$=$ctrl$$.options.requireOtp;$requireOtp$$&&_.isFunction($requireOtp$$)&&($requireOtp$$=$requireOtp$$($v_data$$,{action:$action$$,user:$user$$}));if($requireOtp$$&&$action$$!="import")try{await permission.verifyOTP($user$$.email,$v_data$$["otp-id"],$v_data$$["otp-code"])}catch($e$$){return $callback$$({error:$e$$.message||$e$$.error||$e$$,code:ERRORS.ERR_VERIFY_OTP})}if($ctrl$$.dynamicCreating)try{$v_data$$=await new Promise(($resolve$$,$reject$$)=>{try{$ctrl$$.dynamicCreating($user$$,
|
|
8
|
-
$v_data$$,function($error$$,$v_data$$){if($error$$)return $reject$$($error$$);$resolve$$($v_data$$)},{listinfo_code:$listinfo_code$$,req:$req$$})}catch($e$$){return $reject$$($e$$)}})}catch($e$$){return $callback$$($e$$.message||$e$$.error||$e$$)}const $obj$$=new $model$$;$schema_paths$$.exfields&&($obj$$.exfields=$v_data$$.exfields||{});for(let $f$$ in $v_data$$)$schema_paths$$[$f$$]&&($obj$$.set($f$$,$v_data$$[$f$$]),$f$$!=="exfields"
|
|
9
|
-
($obj$$.id_app=$user$$.current_id_app);const $checkVoucherNumber$$=$callback$$=>{$model$$.schema.paths.ngay_ct&&$obj$$.ngay_ct?setImmediate(()=>{if($voucher_options$$&&($voucher_options$$?.trang_thai_create_voucher_numbers?.length==0||$voucher_options$$?.trang_thai_create_voucher_numbers?.indexOf($obj$$.trang_thai)>=0)&&$voucher_options$$.check_so_ct&&$voucher_options$$.check_so_ct!=="0"){let $query_check$$={id_app:$obj$$.id_app,so_ct:$obj$$.so_ct,
|
|
10
|
-
switch($voucher_options$$.check_so_ct){case "1":$tu_ngay$$=moment($obj$$.ngay_ct).startOf("day").toDate();$den_ngay$$=moment($obj$$.ngay_ct).endOf("day").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};break;case "2":$tu_ngay$$=moment($obj$$.ngay_ct).startOf("month").toDate();$den_ngay$$=moment($obj$$.ngay_ct).endOf("month").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};break;case "3":$tu_ngay$$=moment($obj$$.ngay_ct).startOf("quarter").toDate()
|
|
11
|
-
moment($obj$$.ngay_ct).endOf("quarter").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};break;case "8":$tu_ngay$$=moment($obj$$.ngay_ct).startOf("year").toDate(),$den_ngay$$=moment($obj$$.ngay_ct).endOf("year").toDate(),$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$}}$model$$.findOne($query_check$$,{so_ct:1}).lean().then($rs$$=>{setImmediate(()=>{if($rs$$){let $msgError$$="S\u1ed1 ch\u1ee9ng t\u1eeb "+$obj$$.so_ct+" \u0111\u00e3 t\u1ed3n t\u1ea1i. H\u00e3y ch\u1ecdn m\u1ed9t s\u1ed1 ch\u1ee9ng t\u1eeb kh\u00e1c";
|
|
8
|
+
$v_data$$,function($error$$,$v_data$$){if($error$$)return $reject$$($error$$);$resolve$$($v_data$$)},{listinfo_code:$listinfo_code$$,req:$req$$})}catch($e$$){return $reject$$($e$$)}})}catch($e$$){return $callback$$($e$$.message||$e$$.error||$e$$)}$v_data$$=cleanDataByMongooseSchema($v_data$$,$model$$.schema);const $obj$$=new $model$$;$schema_paths$$.exfields&&($obj$$.exfields=$v_data$$.exfields||{});for(let $f$$ in $v_data$$)$schema_paths$$[$f$$]&&($obj$$.set($f$$,$v_data$$[$f$$]),$f$$!=="exfields"||
|
|
9
|
+
$obj$$.exfields||($obj$$.exfields={}));$schema_paths$$.id_app&&($obj$$.id_app=$user$$.current_id_app);const $checkVoucherNumber$$=$callback$$=>{$model$$.schema.paths.ngay_ct&&$obj$$.ngay_ct?setImmediate(()=>{if($voucher_options$$&&($voucher_options$$?.trang_thai_create_voucher_numbers?.length==0||$voucher_options$$?.trang_thai_create_voucher_numbers?.indexOf($obj$$.trang_thai)>=0)&&$voucher_options$$.check_so_ct&&$voucher_options$$.check_so_ct!=="0"){let $query_check$$={id_app:$obj$$.id_app,so_ct:$obj$$.so_ct,
|
|
10
|
+
listinfo_code:$listinfo_code$$},$tu_ngay$$,$den_ngay$$;switch($voucher_options$$.check_so_ct){case "1":$tu_ngay$$=moment($obj$$.ngay_ct).startOf("day").toDate();$den_ngay$$=moment($obj$$.ngay_ct).endOf("day").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};break;case "2":$tu_ngay$$=moment($obj$$.ngay_ct).startOf("month").toDate();$den_ngay$$=moment($obj$$.ngay_ct).endOf("month").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};break;case "3":$tu_ngay$$=moment($obj$$.ngay_ct).startOf("quarter").toDate();
|
|
11
|
+
$den_ngay$$=moment($obj$$.ngay_ct).endOf("quarter").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};break;case "8":$tu_ngay$$=moment($obj$$.ngay_ct).startOf("year").toDate(),$den_ngay$$=moment($obj$$.ngay_ct).endOf("year").toDate(),$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$}}$model$$.findOne($query_check$$,{so_ct:1}).lean().then($rs$$=>{setImmediate(()=>{if($rs$$){let $msgError$$="S\u1ed1 ch\u1ee9ng t\u1eeb "+$obj$$.so_ct+" \u0111\u00e3 t\u1ed3n t\u1ea1i. H\u00e3y ch\u1ecdn m\u1ed9t s\u1ed1 ch\u1ee9ng t\u1eeb kh\u00e1c";
|
|
12
12
|
if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)});else $callback$$($msgError$$)}else $callback$$()})}).catch($e$$=>{Logger.error($e$$)})}else $callback$$()}):$callback$$()},$File$$=global.getModel("file"),$Support$$=global.getModel("support");async.waterfall([function($callback$$){setImmediate(async function(){let $notNeedRight$$=await $ctrl$$.notNeedRight($user$$,{action:$action$$,obj:$obj$$});
|
|
13
13
|
permission.hasRight($obj$$.id_app,$user$$.email,$ctrl$$.module,$action$$,function($error$$,$hr$$,$c_app$$){setImmediate(()=>{if($error$$||!$hr$$)return $error$$=$error$$||"",$callback$$({error:$error$$.error||$error$$||ERRORS.ERR_NOT_PERMIT,code:$error$$.code||ERRORS.ERR_NOT_PERMIT_CODE});$ctrl$$.checkData($c_app$$,$obj$$,$e$$=>{if($e$$)return $callback$$($e$$);$ctrl$$.creating?$ctrl$$.creating($user$$,$obj$$,function($error$$,$_obj$$){if($error$$)return $callback$$($error$$);for(let $f$$ of Object.keys($schema_paths$$))$error$$=
|
|
14
14
|
$_obj$$.get?$_obj$$.get($f$$):$_obj$$[$f$$],$obj$$.set($f$$,$error$$);$callback$$(null,$obj$$)},{data:$data$$,action:$action$$}):$callback$$(null,$obj$$)})})},{data:$obj$$,notNeedRight:$notNeedRight$$,listinfo_code:$listinfo_code$$})})},($obj$$,$callback$$)=>{setImmediate(()=>{let $ma_ct$$=$listinfo_code$$||$ctrl$$.name;const $condition_qct$$={status:!0,id_app:$obj$$.id_app,cac_ma_ct:$ma_ct$$.toLowerCase()};let $_options_qct$$;$_options_qct$$=$obj$$.toObject?convertObjectIdsToStrings($obj$$.toObject()):
|
|
@@ -17,19 +17,20 @@ evalute($str_func$$,{...$_options_qct$$,master:{...$_options_qct$$},moment,numer
|
|
|
17
17
|
{if($e$$)return $callback$$($e$$);$obj$$[$field$$]=$rs$$[$field$$];$qct$$.check_duplicate?await $model$$.findOne({id_app:$obj$$.id_app,[$field$$]:$obj$$[$field$$]},{[$field$$]:1}).lean()?$count$$>=9?$callback$$(`Kh\u00f4ng th\u1ec3 t\u1ef1 \u0111\u1ed9ng t\u1ea1o gi\u00e1 tr\u1ecb cho field ${$field$$}. Gi\u00e1 tr\u1ecb "${$obj$$[$field$$]}" \u0111\u00e3 t\u1ed3n t\u1ea1i. H\u00e3y ki\u1ec3m tra l\u1ea1i th\u00f4ng s\u1ed1 quy\u1ec3n ch\u1ee9ng t\u1eeb sao cho gi\u00e1 tr\u1ecb s\u1ebd t\u1ea1o ra kh\u00f4ng b\u1ecb tr\u00f9ng v\u1edbi gi\u00e1 tr\u1ecb \u0111\u00e3 c\u00f3`):
|
|
18
18
|
($count$$++,$callback$$()):($count$$=99999,$callback$$()):($count$$=99999,$callback$$())})},$_options$$)},function($err$$){$cb$$($err$$)})},$e$$=>{$callback$$($e$$)})})}).catch($e$$=>{Logger.error($e$$)})})},$callback$$=>{setImmediate(function(){if((!$voucher_options$$?.trang_thai_create_voucher_numbers||$voucher_options$$?.trang_thai_create_voucher_numbers.length==0||$voucher_options$$?.trang_thai_create_voucher_numbers?.indexOf($obj$$.trang_thai)>=0)&&$model$$.schema.paths.so_ct)if($obj$$.so_ct&&
|
|
19
19
|
$obj$$.so_ct.toUpperCase()!==($listinfo_code$$||$ctrl$$.name).toUpperCase()&&$obj$$.so_ct.toUpperCase()!==$ctrl$$.name.toUpperCase())$checkVoucherNumber$$($error$$=>{$callback$$($error$$)});else{let $count$$=0;async.whilst(function($cb$$){$cb$$(null,$count$$<100)},function($callback$$){getNextSequence($obj$$.id_app,$listinfo_code$$||$ctrl$$.name,"so_ct",function($e$$,$rs$$){if($e$$)return $callback$$($e$$);$obj$$.so_ct=$rs$$.so_ct;$checkVoucherNumber$$($error$$=>{$error$$?$count$$>=99?$callback$$($error$$):
|
|
20
|
-
($count$$++,$callback$$()):($count$$=99999,$callback$$())})},$obj$$)},function($err$$){$callback$$($err$$)})}else $callback$$()})},function($callback$$){setImmediate(async()=>{if($model$$.schema.paths.ma_dvcs&&$ctrl$$.name!=="dvcs")if($obj$$.ma_dvcs)if(global.mongoose.Types.ObjectId.isValid($obj$$.ma_dvcs)){let $_id_dvcs$$=global.mongoose.Types.ObjectId($obj$$.ma_dvcs);await global.getModel("dvcs").findOne({_id:$_id_dvcs$$})?$callback$$():global.getModel("dvcs").create({_id:$_id_dvcs$$,
|
|
21
|
-
ten_dvcs:"Imported"},$e$$=>{
|
|
22
|
-
$e$$=>{if($e$$)return $callback$$($e$$);setImmediate(()=>{$obj$$.user_created=$action$$=="import"?$obj$$.user_created||$user$$.email:$user$$.email;$obj$$.user_updated=$user$$.email;$obj$$.date_created=new Date;$obj$$.date_updated=
|
|
23
|
-
global.mongoose.Types.ObjectId.isValid($id_be_supply_by_user$$)){let $_id$$=global.mongoose.Types.ObjectId($id_be_supply_by_user$$);await $model$$.findOne({_id:$_id$$},{_id:1})||
|
|
24
|
-
$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$({error:$msgError$$,code:ERRORS.ERR_ALREADY_EXIST_CODE})});else $callback$$({error:$msgError$$,
|
|
25
|
-
|
|
26
|
-
$
|
|
27
|
-
|
|
28
|
-
convertObjectIdsToStrings($obj_created$$.toObject());onAfterCommit(async()=>{$ctrl$$.emit("saved",$obj_created$$);$ctrl$$.emit("created",$obj_created$$);global.getModel("customer").updateActives&&
|
|
29
|
-
runWebhooks($ctrl$$,$obj_created_cv$$,$action$$.toUpperCase(),$voucher_options$$);await $ctrl$$.cacheData($obj_created_cv$$,void 0,$action$$)});$callback$$(null,$obj_created_cv$$)}},{req:$req$$})})})}})})},
|
|
30
|
-
$co_gia_tri_tam$$=!
|
|
31
|
-
$ctrl$$.
|
|
32
|
-
$callback$$,$voucher_options$$)},function($obj_created_cv$$,$callback$$){$action$$==="import"||$req$$&&($req$$.query||{}).return_data==0?$callback$$(null,{_id:$obj_created_cv$$._id.toString()}):($obj_created_cv$$.collection_name
|
|
33
|
-
$req$$.uploadFile?($error$jscomp$13_html_rs$$="<html><title>OK</title><body>"+JSON.stringify($error$jscomp$13_html_rs$$)+"</body></html>",$callback$$(null,$error$jscomp$13_html_rs$$)):$callback$$(null,$error$jscomp$13_html_rs$$)},
|
|
34
|
-
$ctrl$$.name,$e$$),$callback$$($e$$)}},createHandlerAsync=($ctrl$$,$req$$)=>new Promise(($resolve$$,$reject$$)=>{if(!$req$$.data)return $reject$$("Kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u \u0111\u1ec3 x\u1eed l\u00fd");
|
|
35
|
-
$data$$,$req$$.body=$data$$,$datas_r$$=await createHandlerAsync($ctrl$$,$req$$),$rs$$.push($datas_r$$);return $rs$$}return createHandlerAsync($ctrl$$,$req$$)});$callback$$(null,$rs$$)}catch($e$$){$callback$$($e$$)}};
|
|
20
|
+
($count$$++,$callback$$()):($count$$=99999,$callback$$())})},$obj$$)},function($err$$){$callback$$($err$$)})}else $callback$$()})},function($callback$$){setImmediate(async()=>{if($model$$.schema.paths.ma_dvcs&&$ctrl$$.name!=="dvcs")try{if($obj$$.ma_dvcs)if(global.mongoose.Types.ObjectId.isValid($obj$$.ma_dvcs)){let $_id_dvcs$$=global.mongoose.Types.ObjectId($obj$$.ma_dvcs);await global.getModel("dvcs").findOne({_id:$_id_dvcs$$})?$callback$$():global.getModel("dvcs").create({_id:$_id_dvcs$$,id_app:$obj$$.id_app,
|
|
21
|
+
ma_dvcs:"IMPORTED",ten_dvcs:"Imported"},$e$$=>{$e$$&&Logger.error("Can't import dvcs",$e$$);$callback$$()})}else $callback$$();else{let $dvcs$$=await global.getModel("dvcs").findOne({id_app:$obj$$.id_app,status:!0}).inTxn().lean();$dvcs$$||($dvcs$$=await global.getModel("dvcs").create({id_app:$obj$$.id_app,ma_dvcs:"CTY",ten_dvcs:"C\u00f4ng ty"}),console.log("[createHandler] t\u1ef1 t\u1ea1o dvcs m\u1edbi",$dvcs$$));$obj$$.ma_dvcs=$dvcs$$._id.toString();$callback$$()}}catch($e$$){Logger.error("[createHandler] t\u1ea1o \u0111\u01a1n v\u1ecb c\u01a1 s\u1edf",
|
|
22
|
+
$e$$),$callback$$("Kh\u00f4ng th\u1ec3 t\u1ea1o \u0111\u01a1n v\u1ecb c\u01a1 s\u1edf m\u1eb7c \u0111\u1ecbnh")}else $callback$$()})},$callback$$=>{$ctrl$$.validating||($ctrl$$.validating=($user$$,$obj$$,$next$$)=>{$next$$(null,$obj$$)});$ctrl$$.validating($user$$,$obj$$,$e$$=>{if($e$$)return $callback$$($e$$);setImmediate(()=>{$obj$$.user_created=$action$$=="import"?$obj$$.user_created||$user$$.email:$user$$.email;$obj$$.user_updated=$user$$.email;$obj$$.date_created=new Date;$obj$$.date_updated=
|
|
23
|
+
new Date;validate($obj$$,async $error$$=>{setImmediate(async()=>{if($error$$){let $msgError$$=$error$$;if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)});else $callback$$($msgError$$)}else{if($id_be_supply_by_user$$&&global.mongoose.Types.ObjectId.isValid($id_be_supply_by_user$$)){let $_id$$=global.mongoose.Types.ObjectId($id_be_supply_by_user$$);await $model$$.findOne({_id:$_id$$},{_id:1})||
|
|
24
|
+
($obj$$._id=$_id$$)}$callback$$()}})},$voucher_options$$)})},{action:$action$$})},function($callback$$){isExists($model$$,$ctrl$$.unique,$obj$$,$ctrl$$.replaceIfExists,async($error$$,$kq$$)=>{setImmediate(async()=>{if($error$$||$kq$$){let $msgError$$=$error$$||ERRORS.ERR_ALREADY_EXIST;if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$({error:$msgError$$,code:ERRORS.ERR_ALREADY_EXIST_CODE})});else $callback$$({error:$msgError$$,
|
|
25
|
+
code:ERRORS.ERR_ALREADY_EXIST_CODE})}else{for(let $k$$ in $ctrl$$.keyValues)$obj$$[$k$$]=$ctrl$$.keyValues[$k$$];Object.keys($model$$.schema.paths).filter($model_path$$=>$obj$$[$model_path$$]&&_.isArray($obj$$[$model_path$$])).forEach($model_path$$=>{$model$$.schema.paths[$model_path$$].schema&&$model$$.schema.paths[$model_path$$].schema.paths&&Object.keys($model$$.schema.paths[$model_path$$].schema.paths).filter($path$$=>$path$$!=="line"&&$path$$!=="_id"&&$path$$!=="__v"&&fields_sync_master_detail.indexOf($path$$)>=
|
|
26
|
+
0).forEach($path$$=>{$obj$$[$path$$]&&$obj$$[$model_path$$].filter($detail$$=>!$detail$$[$path$$]).forEach($detail$$=>{$detail$$[$path$$]=$obj$$[$path$$]})})});await createIdRef($model$$,$obj$$);if($ctrl$$.saving)try{await $ctrl$$.saving($user$$,$obj$$,$action$$)}catch($e$$){return $callback$$({error:$e$$.message||$e$$.error||$e$$})}$ctrl$$.emit("saving",$obj$$);$obj$$.save(function($error$$,$obj_created$$){setImmediate(async()=>{if($error$$){if($ctrl$$.options.onErrorSave)$ctrl$$.options.onErrorSave($user$$,
|
|
27
|
+
$obj$$,$error$$,$action$$);let $msgErrors$$=[];for(let $k$$ in $error$$.errors)$msgErrors$$.push($error$$.errors[$k$$].message);$msgErrors$$.length==0&&($msgErrors$$=$error$$.message);$msgErrors$$||=JSON.stringify($error$$);if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$$,$obj$$,$e$$=>{$e$$&&Logger.error("onErrorCreating",$e$$);$callback$$($msgErrors$$)});else $callback$$($msgErrors$$)}else $ctrl$$.populate&&($obj_created$$=$model$$.findById($obj_created$$._id).inTxn(),$obj_created$$=
|
|
28
|
+
await $ctrl$$.populate($obj_created$$)),postData($obj_created$$,$ctrl$$,function($msgErrors$$){if($msgErrors$$)if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$$,$obj$$,$e$$=>{$e$$&&($msgErrors$$=$msgErrors$$+"\n"+$e$$);$callback$$($msgErrors$$)});else $callback$$($msgErrors$$);else{const $obj_created_cv$$=convertObjectIdsToStrings($obj_created$$.toObject());onAfterCommit(async()=>{$ctrl$$.emit("saved",$obj_created$$);$ctrl$$.emit("created",$obj_created$$);global.getModel("customer").updateActives&&
|
|
29
|
+
global.getModel("customer").updateActives($obj_created$$);$req$$&&setImmediate(()=>{global.getModel("log").create({id_app:$user$$.current_id_app,id_func:$ctrl$$.name,action:$action$$.toUpperCase(),data:{id:$obj_created_cv$$._id.toString(),data:$obj_created_cv$$}},$user$$.email,$req$$.user_agent,$req$$)});runWebhooks($ctrl$$,$obj_created_cv$$,$action$$.toUpperCase(),$voucher_options$$);await $ctrl$$.cacheData($obj_created_cv$$,void 0,$action$$)});$callback$$(null,$obj_created_cv$$)}},{req:$req$$})})})}})})},
|
|
30
|
+
function($obj$$,$callback$$){setImmediate(async()=>{let $co_gia_tri_tam$$=!1;if($obj$$.exfields&&$obj$$.exfields.__files__){for(let $_file$$ of $obj$$.exfields.__files__)await $File$$.updateOne({_id:$_file$$._id},{id_link:$obj$$._id.toString(),collection_link:$ctrl$$.collection_name});delete $obj$$.exfields.__files__;$co_gia_tri_tam$$=!0}if($obj$$.exfields&&$obj$$.exfields.__supports__){for(let $_support$$ of $obj$$.exfields.__supports__)await $Support$$.updateOne({_id:$_support$$._id},{id_link:$obj$$._id.toString(),
|
|
31
|
+
collection_link:$ctrl$$.collection_name});delete $obj$$.exfields.__supports__;$co_gia_tri_tam$$=!0}$co_gia_tri_tam$$&&await $model$$.updateOne({_id:$obj$$._id},{exfields:$obj$$.exfields});$ctrl$$.created?$ctrl$$.created($user$$,$obj$$,function($error$$,$rs$$){if($error$$)return $callback$$($error$$);$ctrl$$.dynamicCreated?$ctrl$$.dynamicCreated($user$$,$rs$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$(null,$rs$$)},{listinfo_code:$listinfo_code$$}):$callback$$(null,$rs$$)}):
|
|
32
|
+
$ctrl$$.dynamicCreated?$ctrl$$.dynamicCreated($user$$,$obj$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$(null,$obj$$)},{listinfo_code:$listinfo_code$$}):$callback$$(null,$obj$$)})},function($obj$$,$callback$$){$ctrl$$.requestApprove($user$$.current_app_info,$user$$,$obj$$,$callback$$,$voucher_options$$)},function($obj_created_cv$$,$callback$$){$action$$==="import"||$req$$&&($req$$.query||{}).return_data==0?$callback$$(null,{_id:$obj_created_cv$$._id.toString()}):($obj_created_cv$$.collection_name=
|
|
33
|
+
$ctrl$$.collection_name,$ctrl$$.onView($user$$,[$obj_created_cv$$],($error$jscomp$13_html_rs$$,$viewValues$$)=>{if($error$jscomp$13_html_rs$$)return $callback$$($error$jscomp$13_html_rs$$);$error$jscomp$13_html_rs$$=$viewValues$$?$viewValues$$[0]:$obj_created_cv$$;$req$$&&$req$$.uploadFile?($error$jscomp$13_html_rs$$="<html><title>OK</title><body>"+JSON.stringify($error$jscomp$13_html_rs$$)+"</body></html>",$callback$$(null,$error$jscomp$13_html_rs$$)):$callback$$(null,$error$jscomp$13_html_rs$$)},
|
|
34
|
+
{req:$req$$}))}],($e$$,$obj_created$$)=>{$e$$?(Logger.error($e$$),$callback$$($e$$)):($e$$=$model$$.collection.name,$user$$.current_id_app&&($e$$+=$user$$.current_id_app),delete global.cacheDatas[$e$$],$callback$$(null,{obj_created:$obj_created$$}))})}catch($e$$){Logger.error("[createHanlder]",$ctrl$$.name,$e$$),$callback$$($e$$)}},createHandlerAsync=($ctrl$$,$req$$)=>new Promise(($resolve$$,$reject$$)=>{if(!$req$$.data)return $reject$$("Kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u \u0111\u1ec3 x\u1eed l\u00fd");
|
|
35
|
+
createHandler($ctrl$$,$req$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resolve$$($rs$$)})}),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{try{const $rs$$=await executeInTransaction(async()=>{var $datas_r$$=$req$$.data;if(Array.isArray($datas_r$$)){let $rs$$=[];for(let $data$$ of $datas_r$$)$req$$.data=$data$$,$req$$.body=$data$$,$datas_r$$=await createHandlerAsync($ctrl$$,$req$$),$rs$$.push($datas_r$$);return $rs$$}return createHandlerAsync($ctrl$$,$req$$)});$callback$$(null,$rs$$)}catch($e$$){$callback$$($e$$)}};
|
|
36
|
+
module.exports=withSesssion;module.exports.createHandler=createHandler;
|