flexbiz-server 12.3.21 → 12.3.23
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 -1
- package/server/app.js +5 -5
- package/server/cluster.js +1 -1
- package/server/controllers/QueueManager.js +15 -0
- package/server/controllers/QueueManager_bk.js +29 -0
- package/server/controllers/controller.js +57 -55
- package/server/controllers/controllerRPT.js +9 -10
- package/server/controllers/createHandler.js +2 -2
- package/server/controllers/deleteHandler.js +3 -3
- package/server/controllers/deleteManyHandler.js +2 -0
- package/server/controllers/findHandler.js +15 -15
- package/server/controllers/importFromExcelHandler.js +2 -1
- package/server/controllers/importFromGsHandler.js +3 -2
- package/server/controllers/importFromJsonHandler.js +2 -1
- package/server/controllers/importHandler.js +2 -1
- package/server/controllers/updateBookHandler.js +3 -3
- package/server/controllers/updateHandler.js +5 -5
- package/server/libs/docs.js +44 -0
- package/server/route.js +4 -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.3.
|
|
5
|
+
"version": "12.3.23",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Van Truong Pham",
|
|
8
8
|
"email": "invncur@gmail.com"
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
],
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"dependencies": {
|
|
17
|
+
"@bull-board/api": "^6.7.10",
|
|
18
|
+
"@bull-board/express": "^6.7.10",
|
|
17
19
|
"@ffmpeg-installer/ffmpeg": "^1.0.20",
|
|
18
20
|
"agenda": "^4.1.3",
|
|
19
21
|
"agendash": "^2.1.1",
|
|
@@ -36,6 +38,7 @@
|
|
|
36
38
|
"excel-report": "latest",
|
|
37
39
|
"expo-server-sdk": "^3.6.0",
|
|
38
40
|
"express": "^4.17.1",
|
|
41
|
+
"express-basic-auth": "^1.2.1",
|
|
39
42
|
"express-session": "^1.17.2",
|
|
40
43
|
"fluent-ffmpeg": "^2.1.2",
|
|
41
44
|
"gm": "^1.23.1",
|
package/server/app.js
CHANGED
|
@@ -8,11 +8,11 @@ $next$$()});$compress_cookieParser_morgan_multer_root_dir_uploads_session$$=requ
|
|
|
8
8
|
__dirname+"/public")),$app$$.use("/admin",express.static($configs$$.paths.admin||__dirname+"/admin")),$app$$.use("/templates",express.static($configs$$.paths.templates||__dirname+"/templates")),$app$$.use("/images",express.static($configs$$.paths.images||__dirname+"/images")));$app$$.use(bodyParser.json({limit:$configs$$.limitRequestSize||"1mb"}));$app$$.use(bodyParser.urlencoded({limit:$configs$$.limitRequestSize||"1mb",extended:!0}));$app$$.use(passport.initialize());$compress_cookieParser_morgan_multer_root_dir_uploads_session$$=
|
|
9
9
|
require("morgan");var $accessLogStream_rfs$$=require("rotating-file-stream");const $logDirectory$$=$configs$$.paths.log||__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);$accessLogStream_rfs$$=$accessLogStream_rfs$$("access.log",{interval:"1d",path:$logDirectory$$});$app$$.use($compress_cookieParser_morgan_multer_root_dir_uploads_session$$("combined",{stream:$accessLogStream_rfs$$,skip:function($req$$,$res$$){return 400>$res$$.statusCode}}));$app$$.use(function($err$$,
|
|
10
10
|
$req$$,$res$$,$next$$){console.error($err$$.stack);$res$$.status(500).send("Server Error!")});global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0}).then(async()=>{console.log("Connected to Database");const $redis$$=require("redis");global.clientRedis=$redis$$.createClient();global.clientRedis.on("error",$err$$=>console.error("Redis Client Error",$err$$));global.clientRedis.on("end",()=>{console.error("Redis connection closed.")});global.clientRedis.on("connect",function(){console.log("redis connected");
|
|
11
|
-
0!=$options$$.createRedisCache&&require("./libs/redis-cache").set();$options$$.start_abci_handler&&global.getModel("assabcihandler").start();!0!==$options$$.lite?(require("./controllers/
|
|
12
|
-
$server_sslConfig$$.timeout=6E5;!1!==$options$$.useSocket?User.initSocket($server_sslConfig$$):User.initClientSockets();if(!1!==$options$$.cluster){if(!$StaticPool_StaticPool$$.listen($server_sslConfig$$,global.port))$server_sslConfig$$.once("listening",function(){console.log("server started on",global.port)});$StaticPool_StaticPool$$=require("cluster");$StaticPool_StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("worker "+$worker$$.process.pid+
|
|
13
|
-
|
|
14
|
-
()=>{console.log("load import data pool")}));$options$$.start_report_pool&&($StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool_StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0),global.reportMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.log("load report pool")}));$callbackServer$$&&$callbackServer$$()})):require("./route")($app$$,()=>{$callbackServer$$&&$callbackServer$$()}
|
|
15
|
-
{console.log("Not Connected to Database ERROR! ",$err$$)});return $app$$};process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});process.on("uncaughtException",function($err$jscomp$3_error$$){console.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);console.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
|
|
11
|
+
0!=$options$$.createRedisCache&&require("./libs/redis-cache").set();$options$$.start_abci_handler&&global.getModel("assabcihandler").start();!0!==$options$$.lite?(require("./controllers/QueueManager"),require("./route")($app$$,()=>{if(!1!==$options$$.createServer){var $StaticPool_StaticPool$$=require("sticky-session");if($configs$$.use_ssl){var $server_sslConfig$$=require("./sslConfig");$server_sslConfig$$=https.createServer($server_sslConfig$$($options$$.sslDir),$app$$)}else $server_sslConfig$$=
|
|
12
|
+
http.createServer($app$$);$server_sslConfig$$.timeout=6E5;!1!==$options$$.useSocket?User.initSocket($server_sslConfig$$):User.initClientSockets();if(!1!==$options$$.cluster){if(!$StaticPool_StaticPool$$.listen($server_sslConfig$$,global.port))$server_sslConfig$$.once("listening",function(){console.log("server started on",global.port)});$StaticPool_StaticPool$$=require("cluster");$StaticPool_StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("worker "+$worker$$.process.pid+
|
|
13
|
+
" died",$code$$,$signal$$)});$StaticPool_StaticPool$$.on("online",function($worker$$){console.info("worker "+$worker$$.process.pid+" is online")})}else $server_sslConfig$$.listen(global.port,()=>{console.log("server start at "+global.port+" port")})}$options$$.start_import_data_pool&&($StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool_StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0),global.importDataMainPool.exec({load:!0,
|
|
14
|
+
configs:JSON.stringify($configs$$)},()=>{console.log("load import data pool")}));$options$$.start_report_pool&&($StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool_StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0),global.reportMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.log("load report pool")}));$callbackServer$$&&$callbackServer$$()})):require("./route")($app$$,()=>{$callbackServer$$&&$callbackServer$$()},
|
|
15
|
+
!0)})}).catch($err$$=>{console.log("Not Connected to Database ERROR! ",$err$$)});return $app$$};process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});process.on("uncaughtException",function($err$jscomp$3_error$$){console.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);console.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
|
|
16
16
|
Error: ${$err$jscomp$3_error$$.message}
|
|
17
17
|
Stack: ${$err$jscomp$3_error$$.stack}
|
|
18
18
|
`;try{const $logDirectory$$=__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);fs.writeFile(`${$logDirectory$$}/error-${(new Date).getTime()}.txt`,$err$jscomp$3_error$$,()=>{console.log("wrote log error")})}catch($e$$){console.log($e$$)}process.exit(1)});module.exports=mainServer;
|
package/server/cluster.js
CHANGED
|
@@ -12,7 +12,7 @@ global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0}).then(async
|
|
|
12
12
|
const $files$$=fs.readdirSync(__dirname+"/data/sys");$async$$.mapSeries($files$$,function($file$$,$callback$jscomp$0$$){setImmediate(()=>{if(".js"==$file$$.substr(-3)){const $data$$=JSON.parse(JSON.stringify(require("./data/sys/"+$file$$).data)),$model$$=global.getModel(""+$file$$);console.log("creating system data...",$file$$);$model$$.deleteMany({},$e$$=>{console.error($e$$);$async$$.mapSeries($data$$,function($r$$,$callback$$){delete $r$$._id;delete $r$$.__v;delete $r$$.collection_name;delete $r$$.pkey;
|
|
13
13
|
$model$$.create($r$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$()})},function($error$$,$rs$$){$callback$jscomp$0$$($error$$,$rs$$)})})}else $callback$jscomp$0$$()})},function($error$$){if($error$$)return console.log($error$$);console.log("created system data")})}console.log("redis connected");0!=$options$$.createRedisCache&&require("./libs/redis-cache").set();global.getModel("schedule").start();$options$$.start_abci_handler&&global.getModel("assabcihandler").start();var $StaticPool_StaticPool$$=
|
|
14
14
|
global.getModel("user"),$init_system_data_server$$=$configs$$.initSysData;$init_system_data_server$$||await $StaticPool_StaticPool$$.findOne({})||($init_system_data_server$$=!0);for(let $i$$=0;$i$$<$configs$$.adminUsers.length;$i$$++){let $adminUser$$=$configs$$.adminUsers[$i$$],$u$$=await $StaticPool_StaticPool$$.findOne({email:$adminUser$$.email});$u$$||($adminUser$$.local={name:$adminUser$$.name,email:$adminUser$$.email,active:!0},$u$$=new $StaticPool_StaticPool$$($adminUser$$),$u$$.local.password=
|
|
15
|
-
$u$$.generateHash($adminUser$$.email+$adminUser$$.defaultPassword),$u$$.save(function($error$$,$user$$){if($error$$)return console.error($error$$);$user$$&&console.log("da tao thanh cong user "+$user$$.email)}))}const $async$$=require("async");$init_system_data_server$$&&$initSysData$$();require("./controllers/
|
|
15
|
+
$u$$.generateHash($adminUser$$.email+$adminUser$$.defaultPassword),$u$$.save(function($error$$,$user$$){if($error$$)return console.error($error$$);$user$$&&console.log("da tao thanh cong user "+$user$$.email)}))}const $async$$=require("async");$init_system_data_server$$&&$initSysData$$();require("./controllers/QueueManager");require("./route")($app$$);$init_system_data_server$$=$configs$$.use_ssl?https.createServer(sslConfig($sslDir$$),$app$$):http.createServer($app$$);$init_system_data_server$$.timeout=
|
|
16
16
|
6E5;$StaticPool_StaticPool$$.initSocket($init_system_data_server$$);if(!1!==$options$$.cluster){if(!require("sticky-session").listen($init_system_data_server$$,global.port))$init_system_data_server$$.once("listening",function(){console.log("server cluster started on",global.port)});$StaticPool_StaticPool$$=require("cluster");$StaticPool_StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool_StaticPool$$.on("online",
|
|
17
17
|
function($worker$$){console.info("worker "+$worker$$.process.pid+" is online");global.clientRedis.set("lastworker",JSON.stringify({pid:$worker$$.process.pid}))})}else $init_system_data_server$$.listen(global.port,()=>{console.log("server start at "+global.port+" port")});$options$$.start_import_data_pool&&($StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool_StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0),global.importDataMainPool.exec({load:!0,
|
|
18
18
|
configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.log("load import data pool")}));$options$$.start_report_pool&&($StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool_StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0),global.reportMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.log("load report pool")}))})}).catch($err$$=>{console.error("Not Connected to Database ERROR!",$err$$)})};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';const {Queue,Worker,QueueEvents}=require("bullmq"),{createBullBoard}=require("@bull-board/express"),{BullMQAdapter}=require("@bull-board/api/bullMQAdapter"),basicAuth=require("express-basic-auth"),createHandler=require("./createHandler"),updateHandler=require("./updateHandler"),deleteHandler=require("./deleteHandler"),deleteManyHandler=require("./deleteManyHandler"),importFromJsonHandler=require("./importFromJsonHandler"),importFromExcelHandler=require("./importFromExcelHandler"),importFromGsHandler=
|
|
2
|
+
require("./importFromGsHandler"),updateBookHandler=require("./updateBookHandler"),updateKeyHandler=require("./updateKeyHandler"),updateFieldHandler=require("./updateFieldHandler"),findHandler=require("./findHandler"),exportHandler=require("./exportHandler"),logHandler=require("./logHandler"),historyHandler=require("./historyHandler"),createRouteHandler=require("./createRouteHandler"),rptHandler=require("./rptHandler"),rptExcelHandler=require("./rptExcelHandler"),rptCreateRouteHandler=require("./rptCreateRouteHandler");
|
|
3
|
+
class QueueManager{constructor($connection$$){this.queues={};this.connection=$connection$$}addQueue($name$$,$handler$$,$options$$={}){const {defaultJobOptions:$defaultJobOptions$$={},workerOptions:$workerOptions$$={},isReportController:$isReportController$$=!1}=$options$$;$options$$=new Queue($name$$,{connection:this.connection,defaultJobOptions:$defaultJobOptions$$});const $worker$$=new Worker($name$$,async $job$$=>{try{const {ctrl_name:$ctrl_name$$,req:$req$$}=$job$$.data;if(!$ctrl_name$$||!$req$$)throw Error("Invalid job data");
|
|
4
|
+
const $controllerType$$=$isReportController$$?"report_controllers":"controllers",$ctrl$$=global[$controllerType$$]?.[$ctrl_name$$.trim().toUpperCase()];if(!$ctrl$$)throw Error(`${$controllerType$$} does not contain controller: ${$ctrl_name$$}`);return await $handler$$($ctrl$$,$req$$)}catch($error$$){throw console.error(`Job ${$job$$.id} in ${$name$$} failed: ${$error$$.message}`),$error$$;}},{connection:this.connection,...$workerOptions$$});$worker$$.on("completed",$job$$=>{console.log(`Job ${$job$$.id} in ${$name$$} completed successfully.`)});
|
|
5
|
+
$worker$$.on("failed",($job$$,$err$$)=>{console.error(`Job ${$job$$.id} in ${$name$$} failed with error: ${$err$$.message}`)});this.queues[$name$$]={queue:$options$$,worker:$worker$$}}getQueue($name$$){return this.queues[$name$$]?.queue}stopAllQueues(){Object.values(this.queues).forEach(({worker:$worker$$})=>$worker$$.close())}}
|
|
6
|
+
const queueManager=new QueueManager({host:"127.0.0.1",port:6379}),jobDefinitions=[{name:"createQueue",handler:createHandler,priority:1,concurrency:5},{name:"updateQueue",handler:updateHandler,priority:1,concurrency:5},{name:"deleteQueue",handler:deleteHandler,priority:1,concurrency:5},{name:"findQueue",handler:findHandler,priority:1,concurrency:5},{name:"heavyQueue",handler:async($ctrl$$,$req$$)=>new Promise(($resolve$$,$reject$$)=>{const {type_iob:$type_iob$$}=$req$$;"json"===$type_iob$$?importFromJsonHandler($ctrl$$,
|
|
7
|
+
$req$$,($error$$,$result$$)=>{if($error$$)return $reject$$($error$$);$resolve$$($result$$)}):"excel"===$type_iob$$?importFromExcelHandler($ctrl$$,$req$$,($error$$,$result$$)=>{if($error$$)return $reject$$($error$$);$resolve$$($result$$)}):"googlesheet"===$type_iob$$?importFromGsHandler($ctrl$$,$req$$,($error$$,$result$$)=>{if($error$$)return $reject$$($error$$);$resolve$$($result$$)}):"updateBook"===$type_iob$$?updateBookHandler($ctrl$$,$req$$,($error$$,$result$$)=>{if($error$$)return $reject$$($error$$);
|
|
8
|
+
$resolve$$($result$$)}):"export"===$type_iob$$?exportHandler($ctrl$$,$req$$,($error$$,$result$$)=>{if($error$$)return $reject$$($error$$);$resolve$$($result$$)}):$reject$$(Error("Invalid job type"))}),priority:15},{name:"commonQueue",handler:async($ctrl$$,$req$$)=>new Promise(($resolve$$,$reject$$)=>{const {type_iob:$type_iob$$}=$req$$;"log"===$type_iob$$?logHandler($ctrl$$,$req$$,($error$$,$result$$)=>{if($error$$)return $reject$$($error$$);$resolve$$($result$$)}):"history"===$type_iob$$?historyHandler($ctrl$$,
|
|
9
|
+
$req$$,($error$$,$result$$)=>{if($error$$)return $reject$$($error$$);$resolve$$($result$$)}):"createRoute"===$type_iob$$?createRouteHandler($ctrl$$,$req$$,($error$$,$result$$)=>{if($error$$)return $reject$$($error$$);$resolve$$($result$$)}):"updateField"===$type_iob$$?updateFieldHandler($ctrl$$,$req$$,($error$$,$result$$)=>{if($error$$)return $reject$$($error$$);$resolve$$($result$$)}):"updateKey"===$type_iob$$?updateKeyHandler($ctrl$$,$req$$,($error$$,$result$$)=>{if($error$$)return $reject$$($error$$);
|
|
10
|
+
$resolve$$($result$$)}):"deleteMany"===$type_iob$$?deleteManyHandler($ctrl$$,$req$$,($error$$,$result$$)=>{if($error$$)return $reject$$($error$$);$resolve$$($result$$)}):$reject$$(Error("Invalid job type"))}),priority:9,concurrency:5},{name:"rptQueue",handler:rptHandler,priority:5,isReportController:!0,concurrency:5},{name:"rptCommonQueue",handler:async($ctrl$$,$req$$)=>new Promise(($resolve$$,$reject$$)=>{const {type_iob:$type_iob$$}=$req$$;"excel"===$type_iob$$?rptExcelHandler($ctrl$$,$req$$,($error$$,
|
|
11
|
+
$result$$)=>{if($error$$)return $reject$$($error$$);$resolve$$($result$$)}):"createRoute"===$type_iob$$?rptCreateRouteHandler($ctrl$$,$req$$,($error$$,$result$$)=>{if($error$$)return $reject$$($error$$);$resolve$$($result$$)}):$reject$$(Error("Invalid job type"))}),priority:9,concurrency:2}];
|
|
12
|
+
jobDefinitions.forEach(({name:$name$$,handler:$handler$$,priority:$priority$$,lockDuration:$lockDuration$$,isReportController:$isReportController$$,concurrency:$concurrency$$})=>{queueManager.addQueue($name$$,async($ctrl$$,$req$$)=>new Promise(($resolve$$,$reject$$)=>{$handler$$($ctrl$$,$req$$,($error$$,$result$$)=>{if($error$$)return $reject$$($error$$);$resolve$$($result$$)})}),{defaultJobOptions:{attempts:1,priority:$priority$$},workerOptions:{...($lockDuration$$?{settings:{lockDuration:$lockDuration$$}}:
|
|
13
|
+
{}),concurrency:$concurrency$$||1},isReportController:$isReportController$$})});
|
|
14
|
+
const jobFinished=$job$$=>{const $queueEvents$$=new QueueEvents($job$$.queueName);return new Promise(($resolve$$,$reject$$)=>{const $onCompleted$$=({jobId:$jobId$$,returnvalue:$returnvalue$$})=>{$jobId$$===$job$$.id&&($resolve$$($returnvalue$$),$queueEvents$$.off("completed",$onCompleted$$))},$onFailed$$=({jobId:$jobId$$,failedReason:$failedReason$$})=>{$jobId$$===$job$$.id&&($reject$$(Error($failedReason$$)),$queueEvents$$.off("failed",$onFailed$$))};$queueEvents$$.on("completed",$onCompleted$$);
|
|
15
|
+
$queueEvents$$.on("failed",$onFailed$$)})},setupBullBoard=$app$$=>{const $bullBoard$$=createBullBoard(Object.entries(queueManager.queues).map(([,{queue:$queue$$}])=>new BullMQAdapter($queue$$)));$app$$.use("/queues",basicAuth({users:{admin:"password"},challenge:!0}),$bullBoard$$.router)};module.exports={queueManager,jobFinished,setupBullBoard};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';const {Queue,QueueEvents,Worker}=require("bullmq"),{createBullBoard}=require("@bull-board/express"),{BullMQAdapter}=require("@bull-board/api/bullMQAdapter"),basicAuth=require("express-basic-auth"),findHandler=require("./findHandler"),createHandler=require("./createHandler"),updateHandler=require("./updateHandler"),deleteHandler=require("./deleteHandler"),deleteManyHandler=require("./deleteManyHandler"),importFromJsonHandler=require("./importFromJsonHandler"),importFromGsHandler=require("./importFromGsHandler"),
|
|
2
|
+
importFromExcelHandler=require("./importFromExcelHandler"),updateBookHandler=require("./updateBookHandler"),updateKeyHandler=require("./updateKeyHandler"),updateFieldHandler=require("./updateFieldHandler"),exportHandler=require("./exportHandler"),logHandler=require("./logHandler"),historyHandler=require("./historyHandler"),createRouteHandler=require("./createRouteHandler"),rptHandler=require("./rptHandler"),rptExcelHandler=require("./rptExcelHandler"),rptCreateRouteHandler=require("./rptCreateRouteHandler"),
|
|
3
|
+
initQueue=()=>{if(!global.queues){global.queues={};var $connection$$={host:"127.0.0.1",port:6379},$defaultJobOptions$$={attempts:1,delay:0};global.queues.createQueue={queue:new Queue("creareQueue",{defaultJobOptions:{...$defaultJobOptions$$,priority:1}}),worker:new Worker("creareQueue",async $job$$=>{const {ctrl_name:$ctrl_name$$,req:$req$$}=$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");if(!$req$$)throw Error("Job data missing req");const {body:$body$$,action:$action$$,id_be_supply_by_user:$id_be_supply_by_user$$}=
|
|
4
|
+
$req$$,$ctrl$$=global.controllers[$ctrl_name$$.trim().toUpperCase()];if(!$ctrl$$)throw Error("Controller does not exist");return new Promise(($resolve$$,$reject$$)=>{createHandler($req$$.user,$ctrl$$,$body$$,($e$$,$result$$)=>{if($e$$)return $reject$$({message:$e$$.message||$e$$.error||$e$$});$resolve$$($result$$)},$id_be_supply_by_user$$,$req$$,$action$$)})},{connection:$connection$$})};global.queues.updateQueue={queue:new Queue("updateQueue",{defaultJobOptions:{...$defaultJobOptions$$,priority:1}}),
|
|
5
|
+
worker:new Worker("updateQueue",async $job$$=>{const {ctrl_name:$ctrl_name$$,req:$req$$}=$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");if(!$req$$)throw Error("Job data missing req");const $ctrl$$=global.controllers[$ctrl_name$$.trim().toUpperCase()];if(!$ctrl$$)throw Error("Controller does not exist");const {id:$id$$,data:$data$$,action:$action$$,_action:$_action$$}=$req$$;return new Promise(($resolve$$,$reject$$)=>{updateHandler($req$$.user,$ctrl$$,$id$$,$data$$,($e$$,$result$$)=>
|
|
6
|
+
{if($e$$)return $reject$$({message:$e$$.message||$e$$.error||$e$$});$resolve$$($result$$)},$action$$,$req$$,$_action$$)})},{connection:$connection$$})};global.queues.deleteQueue={queue:new Queue("deleteQueue",{defaultJobOptions:{...$defaultJobOptions$$,priority:1}}),worker:new Worker("deleteQueue",async $job$$=>{const {ctrl_name:$ctrl_name$$,req:$req$$}=$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");if(!$req$$)throw Error("Job data missing req");const $ctrl$$=global.controllers[$ctrl_name$$.trim().toUpperCase()];
|
|
7
|
+
if(!$ctrl$$)throw Error("Controller does not exist");return new Promise(($resolve$$,$reject$$)=>{deleteHandler($ctrl$$,$req$$,($e$$,$result$$)=>{if($e$$)return $reject$$({message:$e$$.message||$e$$.error||$e$$});$resolve$$($result$$)})})},{connection:$connection$$})};global.queues.deleteManyQueue={queue:new Queue("deleteManyQueue",{defaultJobOptions:{...$defaultJobOptions$$,priority:3}}),worker:new Worker("deleteManyQueue",async $job$$=>{const {ctrl_name:$ctrl_name$$,req:$req$$}=$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");
|
|
8
|
+
if(!$req$$)throw Error("Job data missing req");const $ctrl$$=global.controllers[$ctrl_name$$.trim().toUpperCase()];if(!$ctrl$$)throw Error("Controller does not exist");return new Promise(($resolve$$,$reject$$)=>{deleteManyHandler($ctrl$$,$req$$,($e$$,$result$$)=>{if($e$$)return $reject$$({message:$e$$.message||$e$$.error||$e$$});$resolve$$($result$$)})})},{connection:$connection$$})};global.queues.importFromJsonQueue={queue:new Queue("importFromJsonQueue",{defaultJobOptions:{...$defaultJobOptions$$,
|
|
9
|
+
priority:15}}),worker:new Worker("importFromJsonQueue",async $job$$=>{const {ctrl_name:$ctrl_name$$,req:$req$$}=$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");if(!$req$$)throw Error("Job data missing req");const $ctrl$$=global.controllers[$ctrl_name$$.trim().toUpperCase()];if(!$ctrl$$)throw Error("Controller does not exist");return new Promise(($resolve$$,$reject$$)=>{importFromJsonHandler($ctrl$$,$req$$,($e$$,$result$$)=>{if($e$$)return $reject$$({message:$e$$.message||$e$$.error||
|
|
10
|
+
$e$$});$resolve$$($result$$)})})},{connection:$connection$$,settings:{lockDuration:9E5}})};global.queues.importFromExcelQueue={queue:new Queue("importFromExcelQueue",{defaultJobOptions:{...$defaultJobOptions$$,priority:15}}),worker:new Worker("importFromExcelQueue",async $job$$=>{const {ctrl_name:$ctrl_name$$,req:$req$$}=$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");if(!$req$$)throw Error("Job data missing req");const $ctrl$$=global.controllers[$ctrl_name$$.trim().toUpperCase()];
|
|
11
|
+
if(!$ctrl$$)throw Error("Controller does not exist");return new Promise(($resolve$$,$reject$$)=>{importFromExcelHandler($ctrl$$,$req$$,($e$$,$result$$)=>{if($e$$)return $reject$$({message:$e$$.message||$e$$.error||$e$$});$resolve$$($result$$)})})},{connection:$connection$$,settings:{lockDuration:9E5}})};global.queues.importFromGsQueue={queue:new Queue("importFromGsQueue",{defaultJobOptions:{...$defaultJobOptions$$,priority:15}}),worker:new Worker("importFromGsQueue",async $job$$=>{const {ctrl_name:$ctrl_name$$,
|
|
12
|
+
req:$req$$}=$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");if(!$req$$)throw Error("Job data missing req");const $ctrl$$=global.controllers[$ctrl_name$$.trim().toUpperCase()];if(!$ctrl$$)throw Error("Controller does not exist");return new Promise(($resolve$$,$reject$$)=>{importFromGsHandler($ctrl$$,$req$$,($e$$,$result$$)=>{if($e$$)return $reject$$({message:$e$$.message||$e$$.error||$e$$});$resolve$$($result$$)})})},{connection:$connection$$,settings:{lockDuration:9E5}})};global.queues.findQueue=
|
|
13
|
+
{queue:new Queue("findQueue",{defaultJobOptions:{...$defaultJobOptions$$,priority:1}}),worker:new Worker("findQueue",async $job$$=>{const {ctrl_name:$ctrl_name$$,req:$req$$,shareRoute:$shareRoute$$}=$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");if(!$req$$)throw Error("Job data missing req");const $ctrl$$=global.controllers[$ctrl_name$$.trim().toUpperCase()];if(!$ctrl$$)throw Error("Controller does not exist");return new Promise(($resolve$$,$reject$$)=>{findHandler($ctrl$$,
|
|
14
|
+
$req$$,($e$$,$result$$,$dataType$$)=>{if($e$$)return $reject$$({message:$e$$.message||$e$$.error||$e$$});$resolve$$({result:$result$$,dataType:$dataType$$})},$shareRoute$$)})},{connection:$connection$$})};global.queues.exportQueue={queue:new Queue("exportQueue",{defaultJobOptions:{...$defaultJobOptions$$,priority:5}}),worker:new Worker("exportQueue",async $job$$=>{const {req:$req$$,shareRoute:$shareRoute$$,ctrl_name:$ctrl_name$$}=$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");
|
|
15
|
+
if(!$req$$)throw Error("Job data missing req");const $ctrl$$=global.controllers[$ctrl_name$$.trim().toUpperCase()];if(!$ctrl$$)throw Error("Controller does not exist");return new Promise(($resolve$$,$reject$$)=>{exportHandler($ctrl$$,$req$$,($e$$,$result$$)=>{if($e$$)return $reject$$({message:$e$$.message||$e$$.error||$e$$});$resolve$$($result$$)},$shareRoute$$)})},{connection:$connection$$})};global.queues.updateBookQueue={queue:new Queue("updateBookQueue",{defaultJobOptions:{...$defaultJobOptions$$,
|
|
16
|
+
priority:11}}),worker:new Worker("updateBookQueue",async $job$$=>{const {req:$req$$,ctrl_name:$ctrl_name$$}=$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");if(!$req$$)throw Error("Job data missing req");const $ctrl$$=global.controllers[$ctrl_name$$.trim().toUpperCase()];if(!$ctrl$$)throw Error("Controller does not exist");return new Promise(($resolve$$,$reject$$)=>{updateBookHandler($ctrl$$,$req$$,($e$$,$result$$)=>{if($e$$)return $reject$$({message:$e$$.message||$e$$.error||
|
|
17
|
+
$e$$});$resolve$$($result$$)})})},{connection:$connection$$,settings:{lockDuration:9E5}})};global.queues.updateKeyQueue={queue:new Queue("updateKeyQueue",{defaultJobOptions:{...$defaultJobOptions$$,priority:4}}),worker:new Worker("updateKeyQueue",async $job$$=>{const {req:$req$$,ctrl_name:$ctrl_name$$}=$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");if(!$req$$)throw Error("Job data missing req");const $ctrl$$=global.controllers[$ctrl_name$$.trim().toUpperCase()];if(!$ctrl$$)throw Error("Controller does not exist");
|
|
18
|
+
return new Promise(($resolve$$,$reject$$)=>{updateKeyHandler($ctrl$$,$req$$,($e$$,$result$$)=>{if($e$$)return $reject$$({message:$e$$.message||$e$$.error||$e$$});$resolve$$($result$$)})})},{connection:$connection$$})};global.queues.updateFieldQueue={queue:new Queue("updateFieldQueue",{defaultJobOptions:{...$defaultJobOptions$$,priority:5}}),worker:new Worker("updateFieldQueue",async $job$$=>{const {req:$req$$,ctrl_name:$ctrl_name$$}=$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");
|
|
19
|
+
if(!$req$$)throw Error("Job data missing req");const $ctrl$$=global.controllers[$ctrl_name$$.trim().toUpperCase()];if(!$ctrl$$)throw Error("Controller does not exist");return new Promise(($resolve$$,$reject$$)=>{updateFieldHandler($ctrl$$,$req$$,($e$$,$result$$)=>{if($e$$)return $reject$$({message:$e$$.message||$e$$.error||$e$$});$resolve$$($result$$)})})},{connection:$connection$$})};global.queues.createRouteQueue={queue:new Queue("createRouteQueue",{defaultJobOptions:{...$defaultJobOptions$$,priority:7}}),
|
|
20
|
+
worker:new Worker("createRouteQueue",async $job$$=>{const {req:$req$$,ctrl_name:$ctrl_name$$}=$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");if(!$req$$)throw Error("Job data missing req");const $ctrl$$=global.controllers[$ctrl_name$$.trim().toUpperCase()];if(!$ctrl$$)throw Error("Controller does not exist");return new Promise(($resolve$$,$reject$$)=>{createRouteHandler($ctrl$$,$req$$,($e$$,$result$$)=>{if($e$$)return $reject$$({message:$e$$.message||$e$$.error||$e$$});$resolve$$($result$$)})})},
|
|
21
|
+
{connection:$connection$$})};global.queues.logQueue={queue:new Queue("logQueue",{defaultJobOptions:{...$defaultJobOptions$$,priority:9}}),worker:new Worker("logQueue",async $job$$=>{const {req:$req$$,ctrl_name:$ctrl_name$$}=$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");if(!$req$$)throw Error("Job data missing req");const $ctrl$$=global.controllers[$ctrl_name$$.trim().toUpperCase()];if(!$ctrl$$)throw Error("Controller does not exist");return new Promise(($resolve$$,$reject$$)=>
|
|
22
|
+
{logHandler($ctrl$$,$req$$,($e$$,$result$$)=>{if($e$$)return $reject$$({message:$e$$.message||$e$$.error||$e$$});$resolve$$($result$$)})})},{connection:$connection$$})};global.queues.historyQueue={queue:new Queue("historyQueue",{defaultJobOptions:{...$defaultJobOptions$$,priority:9}}),worker:new Worker("historyQueue",async $job$$=>{const {req:$req$$,ctrl_name:$ctrl_name$$}=$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");if(!$req$$)throw Error("Job data missing req");const $ctrl$$=
|
|
23
|
+
global.controllers[$ctrl_name$$.trim().toUpperCase()];if(!$ctrl$$)throw Error("Controller does not exist");return new Promise(($resolve$$,$reject$$)=>{historyHandler($ctrl$$,$req$$,($e$$,$result$$)=>{if($e$$)return $reject$$({message:$e$$.message||$e$$.error||$e$$});$resolve$$($result$$)})})},{connection:$connection$$})};global.queues.rptQueue={queue:new Queue("rptQueue",{defaultJobOptions:{...$defaultJobOptions$$,priority:5}}),worker:new Worker("rptQueue",async $job$$=>{const {req:$req$$,ctrl_name:$ctrl_name$$}=
|
|
24
|
+
$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");if(!$req$$)throw Error("Job data missing req");const $ctrl$$=global.report_controllers[$ctrl_name$$.trim().toUpperCase()];if(!$ctrl$$)throw Error("Controller does not exist");return new Promise(($resolve$$,$reject$$)=>{rptHandler($ctrl$$,$req$$,($e$$,$result$$)=>{if($e$$)return $reject$$({message:$e$$.message||$e$$.error||$e$$});$resolve$$($result$$)})})},{connection:$connection$$})};global.queues.rptExcelQueue={queue:new Queue("rptExcelQueue",
|
|
25
|
+
{defaultJobOptions:{...$defaultJobOptions$$,priority:5}}),worker:new Worker("rptExcelQueue",async $job$$=>{const {req:$req$$,ctrl_name:$ctrl_name$$}=$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");if(!$req$$)throw Error("Job data missing req");const $ctrl$$=global.report_controllers[$ctrl_name$$.trim().toUpperCase()];if(!$ctrl$$)throw Error("Controller does not exist");return new Promise(($resolve$$,$reject$$)=>{rptExcelHandler($ctrl$$,$req$$,($e$$,$result$$)=>{if($e$$)return $reject$$({message:$e$$.message||
|
|
26
|
+
$e$$.error||$e$$});$resolve$$($result$$)})})},{connection:$connection$$})};global.queues.rptCreateRouteQueue={queue:new Queue("rptCreateRouteQueue",{defaultJobOptions:{...$defaultJobOptions$$,priority:5}}),worker:new Worker("rptCreateRouteQueue",async $job$$=>{const {req:$req$$,ctrl_name:$ctrl_name$$}=$job$$.data;if(!$ctrl_name$$)throw Error("Job data missing ctrl_name");if(!$req$$)throw Error("Job data missing req");const $ctrl$$=global.report_controllers[$ctrl_name$$.trim().toUpperCase()];if(!$ctrl$$)throw Error("Controller does not exist");
|
|
27
|
+
return new Promise(($resolve$$,$reject$$)=>{rptCreateRouteHandler($ctrl$$,$req$$,($e$$,$result$$)=>{if($e$$)return $reject$$({message:$e$$.message||$e$$.error||$e$$});$resolve$$($result$$)})})},{connection:$connection$$})}}},jobFinished=$job$$=>{const $queueEvents$$=new QueueEvents($job$$.queueName);return new Promise(($resolve$$,$reject$$)=>{const $onCompleted$$=({jobId:$jobId$$,returnvalue:$returnvalue$$})=>{$jobId$$===$job$$.id&&($resolve$$($returnvalue$$),$queueEvents$$.off("completed",$onCompleted$$))},
|
|
28
|
+
$onFailed$$=({jobId:$jobId$$,failedReason:$failedReason$$})=>{$jobId$$===$job$$.id&&($reject$$(Error($failedReason$$)),$queueEvents$$.off("failed",$onFailed$$))};$queueEvents$$.on("completed",$onCompleted$$);$queueEvents$$.on("failed",$onFailed$$)})},board=$app$$=>{const $bullboard$$=createBullBoard([new BullMQAdapter(Object.values(global.queues).map($q$$=>$q$$.queue))]);$app$$.use("/queues",basicAuth({users:{admin:"bull@123"},challenge:!0}),$bullboard$$.router)};
|
|
29
|
+
module.exports={initQueue,jobFinished,board};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use strict';const EventEmitter=require("events").EventEmitter,underscore=require("underscore"),_=require("lodash"),ckvt=require("../libs/ckvt"),OptionsModel=global.getModel("options"),Approve=global.getModel("approve"),trangthai=global.getModel("trangthai"),Participant=global.getModel("participant"),async=require("async"),permission=require("../libs/permission"),utils=require("../libs/utils"),templatevoucher=global.getModel("templatevoucher"),{evalute}=require("../libs/utils"),redisCache=require("../libs/redis-cache"),
|
|
2
|
-
dmqddvt=global.getModel("dmqddvt"),{bodyToJson,ERRORS,getNextSequence,postData,pushNotification,runWebhooks}=require("./controllerUtils"),
|
|
2
|
+
dmqddvt=global.getModel("dmqddvt"),{jobFinished,queueManager}=require("./QueueManager"),{bodyToJson,ERRORS,getNextSequence,postData,pushNotification,runWebhooks}=require("./controllerUtils"),createHandler=require("./createHandler"),importHandler=require("./importHandler"),viewHandler=require("./viewHandler");
|
|
3
3
|
class controller{constructor($router$$,$model$$,$name$$,$options$$={isVoucher:void 0,sort:void 0,check_stock:void 0,unique:void 0,require_id_app:void 0,notNeedRight:void 0}){this.name=$name$$;this.model=$model$$;this.model_name=$model$$.collection.name.substring(0,$model$$.collection.name.length-1).toLowerCase();underscore.has($model$$.schema.paths,"listinfo_code")||$model$$.schema.add({listinfo_code:{type:String}});this.router=$router$$;this.module=this.name;global.controllers[$name$$.trim().toUpperCase()]=
|
|
4
4
|
this;$options$$.findExact||($options$$.findExact={});this.keyValues=$options$$.keyValues;this.keyValues||(this.keyValues={});void 0===$options$$.require_id_app||!0===$options$$.require_id_app?(this.require_id_app=!0,this.route_name=`/:id_app/${this.module}`):(this.require_id_app=!1,this.route_name=`/${this.module}`);this.collection_name=$options$$.collection_name?$options$$.collection_name:$name$$;this.sort=$options$$.sort;this.unique=$options$$.unique;this.getting=$options$$.onGetting;this.finding=
|
|
5
5
|
$options$$.onFinding;this.found=$options$$.onFound;this.validating=$options$$.onValidating;this.saving=$options$$.onSaving;this.creating=$options$$.onCreating;this.created=$options$$.onCreated;this.updating=$options$$.onUpdating;this.updated=$options$$.onUpdated;this.deleting=$options$$.onDeleting;this.deleted=$options$$.onDeleted;this.approveData=$options$$.approveData;this.view=$options$$.onView;this.viewRequired=$options$$.onViewRequired;this.cache=$options$$.cache;this.excelParse=$options$$.onExcelParse;
|
|
@@ -8,70 +8,72 @@ this.options=$options$$;this.replaceIfExists=$options$$.replaceIfExists}async as
|
|
|
8
8
|
$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)})})}async checkData($appInfo$$,$data$$,$fn$$){const $options$$=this.options;if($data$$.trang_thai&&$data$$.ma_ct){let $tt$$=await trangthai.findOne({ma_ct:$data$$.ma_ct,ma_trang_thai:$data$$.trang_thai},{check_data:1}).lean();if($tt$$&&0==$tt$$.check_data)return $fn$$()}async.series({checkTonKho:$callback$jscomp$0$$=>{$data$$.details&&$appInfo$$&&$appInfo$$.options&&$appInfo$$.options.khong_xuat_kho_am&&0!=$options$$.check_stock?
|
|
9
9
|
(async()=>{let $details$$=$data$$.details.filter($d$$=>$d$$.ma_vt&&$d$$.sl_xuat);await $details$$.asyncJoinModel2($appInfo$$._id,"dmvt",{where:{ma_vt:"ma_vt"},fields:["tg_tk","kg_kiem_tra_ton_kho","kg_kiem_tra_ton_kho_tt",{cb:"combo"},"ten_vt"]});$details$$.forEach($d$$=>{!$d$$.combo&&$d$$.cb&&($d$$.combo=$d$$.cb)});$details$$=$details$$.filter($d$$=>$d$$.tg_tk&&!$d$$.kg_kiem_tra_ton_kho||0<($d$$.combo||[]).length);$details$$=$details$$.map($detail$$=>$detail$$.combo&&0<$detail$$.combo.length?$detail$$.combo.map($c$$=>
|
|
10
10
|
{$c$$=$c$$.toObject?$c$$.toObject():{...$c$$};$c$$.sl_xuat*=$detail$$.sl_xuat;$c$$.ma_kho=$detail$$.ma_kho;return $c$$}):[$detail$$]).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);await $details$$.asyncJoinModel2($appInfo$$._id,dmqddvt,{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},fields:"ty_le_qd"});let $data_sokho$$=[];$data$$._id&&($data_sokho$$=await global.getModel("sokho").find({id_ct:$data$$._id.toString()}).lean());$details$$.forEach($d$$=>{$d$$.he_so_qd=$d$$.ty_le_qd||1;$d$$.sl_xuat_qd=$d$$.he_so_qd*
|
|
11
|
-
$d$$.sl_xuat});$details$$=await $details$$.asyncGroupBy(["ma_vt","ma_kho","ten_vt"],["sl_xuat_qd"]);async.
|
|
12
|
-
|
|
11
|
+
$d$$.sl_xuat});$details$$=await $details$$.asyncGroupBy(["ma_vt","ma_kho","ten_vt"],["sl_xuat_qd"]);async.map($details$$,($d$$,$callback$$)=>{let $ma_kho$$=$d$$.ma_kho||$data$$.ma_kho||$data$$.ma_kho_x,$query$$={ma_vt:$d$$.ma_vt,ma_kho:$ma_kho$$,ngay:new Date,id_app:$appInfo$$._id};$d$$.kg_kiem_tra_ton_kho_tt||($d$$.ma_lo&&($query$$.ma_lo=$d$$.ma_lo),$d$$.han_sd&&($query$$.han_sd=$d$$.han_sd),$d$$.ma_tt1&&($query$$.ma_tt1=$d$$.ma_tt1),$d$$.ma_tt2&&($query$$.ma_tt2=$d$$.ma_tt2),$d$$.ma_tt3&&($query$$.ma_tt3=
|
|
12
|
+
$d$$.ma_tt3));ckvt($query$$,function($e$$,$rs$$){if($e$$)return $callback$$($e$$);$rs$$?($e$$=$rs$$.csum("ton"),$rs$$=$data_sokho$$.filter($s$$=>$s$$.ma_vt===$d$$.ma_vt&&$s$$.ma_kho===$ma_kho$$).reduce(($a$$,$b$$)=>($a$$.sl_xuat_qd||0)+($b$$.sl_xuat_qd||0),0),$d$$.sl_xuat_qd>utils.round($e$$+$rs$$,2)?$callback$$(`S\u1ea3n ph\u1ea9m ${$d$$.ma_vt} - ${$d$$.ten_vt} c\u00f3 s\u1ed1 l\u01b0\u1ee3ng xu\u1ea5t quy \u0111\u1ed5i (${$d$$.sl_xuat_qd}) l\u1edbn h\u01a1n s\u1ed1 l\u01b0\u1ee3ng t\u1ed3n quy \u0111\u1ed5i (${$e$$+
|
|
13
13
|
$rs$$})`):$callback$$()):$callback$$()})},$e$$=>{$callback$jscomp$0$$($e$$)})})():$callback$jscomp$0$$()}},$e$$=>{$fn$$($e$$)})}async cacheData($obj$$,$callback$$){$obj$$&&$obj$$.toObject&&($obj$$=$obj$$.toObject());await redisCache.set(this.model_name,$obj$$,$callback$$)}async deleteData($obj$$,$callback$$){$obj$$&&$obj$$.toObject&&($obj$$=$obj$$.toObject());await redisCache.remove(this.model_name,$obj$$,$callback$$)}createRoute($routeName$$,$handler_routeAction$$,$_options$$={method:"GET"}){const $self$$=
|
|
14
14
|
this;$_options$$.method=$_options$$.method?$_options$$.method.toUpperCase():"GET";const $route_action_key$$=`route_action_${$self$$.name}_${$routeName$$}_${$_options$$.method}`;$self$$[$route_action_key$$]=$handler_routeAction$$;$handler_routeAction$$=async function($ip_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip_req$$,$user_agent$$=$ip_req$$.header("user-agent");$ip_req$$=$ip_req$$.headers["x-forwarded-for"]||$ip_req$$.connection.remoteAddress;
|
|
15
|
-
try{const $job$$=await
|
|
16
|
-
|
|
17
|
-
$
|
|
18
|
-
$
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
$
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
15
|
+
try{const $job$$=await queueManager.getQueue("commonQueue").add(`${$self$$.module}-extra-action`,{req:{type_job:"createRoute",routeName:$routeName$$,_options:$_options$$,route_action_key:$route_action_key$$,query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip_req$$,files:$files$$},ctrl_name:$self$$.name},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}};let $url$$=`${this.route_name}/${$routeName$$}`,
|
|
16
|
+
$router$$=this.router;"DELETE"==$_options$$.method?$router$$.route($url$$).delete($handler_routeAction$$):"POST"==$_options$$.method?$router$$.route($url$$).post($handler_routeAction$$):"PUT"==$_options$$.method?$router$$.route($url$$).put($handler_routeAction$$):$router$$.route($url$$).get($handler_routeAction$$)}async requestApprove($app_info$$,$user_request$$,$obj_request$$,$next$$,$voucher_options$$,$preRequest$$){let $ctrl$$=this;if(!$app_info$$)return $next$$(null,$obj_request$$);let $obj$$;
|
|
17
|
+
$obj$$=$obj_request$$.toObject?$obj_request$$.toObject():_.cloneDeep($obj_request$$);$obj$$.ma_ct=$obj$$.ma_ct||$ctrl$$.name;let $approveDatas$$=[];$voucher_options$$||($voucher_options$$=(await OptionsModel.findOne({id_app:$obj$$.id_app,id_func:$ctrl$$.name},{option:1}).lean()||{}).option);$voucher_options$$&&$voucher_options$$.custom_approve_user&&$voucher_options$$.custom_approve_user.forEach($trang_thai_approve$$=>{let $update_after_approve$$,$update_after_deny$$;if($trang_thai_approve$$.update_after_approve)try{let $str_func$$=
|
|
18
|
+
$trang_thai_approve$$.update_after_approve;0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);$update_after_approve$$=evalute($str_func$$)}catch($e$$){console.error("request approve",$e$$,$trang_thai_approve$$.update_after_approve),$update_after_approve$$={}}else $update_after_approve$$={};$trang_thai_approve$$.update_after_approve={module:$ctrl$$.name,data:{trang_thai:$trang_thai_approve$$.trang_thai2,...($update_after_approve$$.data||{})}};if($trang_thai_approve$$.update_after_deny)try{let $str_func$$=
|
|
19
|
+
$trang_thai_approve$$.update_after_deny;0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);$update_after_deny$$=evalute($str_func$$)}catch($e$$){console.error("request approve",$e$$)}if($update_after_deny$$||$trang_thai_approve$$.trang_thai3)$trang_thai_approve$$.update_after_deny={module:$ctrl$$.name,data:{trang_thai:$trang_thai_approve$$.trang_thai3,...(($update_after_deny$$||{}).data||{})}};$approveDatas$$.push($trang_thai_approve$$)});$approveDatas$$=$approveDatas$$.filter($approveData_condition$$=>
|
|
20
|
+
{$approveData_condition$$=$approveData_condition$$.condition;if(!$approveData_condition$$)return!0;0>$approveData_condition$$.indexOf("return ")&&($approveData_condition$$=`return ${$approveData_condition$$}`);try{return evalute($approveData_condition$$,{master:$obj$$,data:$obj$$})}catch($e$$){return console.error("check condition approve",$e$$,$approveData_condition$$),!1}});$approveDatas$$.filter($a$$=>$a$$.approve_users).forEach($approveData$$=>{setImmediate(()=>{let $title$$=$approveData$$.title||
|
|
21
|
+
"Y\u00eau c\u1ea7u duy\u1ec7t";if(0<=$title$$.indexOf("return ")){var $ds_nguoi_duyet_str_func$$=$title$$;try{$title$$=evalute($ds_nguoi_duyet_str_func$$,{master:$obj$$,data:$obj$$})}catch($e$$){console.error("request approve",$e$$,$ds_nguoi_duyet_str_func$$)}}$ds_nguoi_duyet_str_func$$=$approveData$$.approve_users;let $update_after_approve$$=$approveData$$.update_after_approve,$update_after_deny$$=$approveData$$.update_after_deny;if(_.isString($ds_nguoi_duyet_str_func$$))try{let $str_func$$=$ds_nguoi_duyet_str_func$$;
|
|
22
|
+
0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);$ds_nguoi_duyet_str_func$$=evalute($str_func$$,{master:$obj$$,data:$obj$$,preRequest:$preRequest$$});if(!_.isArray($ds_nguoi_duyet_str_func$$)){console.error("danh s\u00e1ch ng\u01b0\u1eddi duy\u1ec7t ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng, hi\u1ec7n t\u1ea1i \u0111ang l\u00e0",$ds_nguoi_duyet_str_func$$);return}}catch($e$$){console.error("request approve",$e$$,$ds_nguoi_duyet_str_func$$);return}if($approveData$$.approve_users_custom)try{let $str_func$$=
|
|
23
|
+
$approveData$$.approve_users_custom;0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);let $ds_nguoi_duyet_custom$$=evalute($str_func$$,{master:$obj$$,data:$obj$$,preRequest:$preRequest$$});$ds_nguoi_duyet_custom$$&&(_.isArray($ds_nguoi_duyet_custom$$)?$ds_nguoi_duyet_str_func$$=[...$ds_nguoi_duyet_str_func$$,...$ds_nguoi_duyet_custom$$]:console.error("danh s\u00e1ch ng\u01b0\u1eddi duy\u1ec7t ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng, hi\u1ec7n t\u1ea1i \u0111ang l\u00e0",$ds_nguoi_duyet_custom$$))}catch($e$$){console.error("request approve",
|
|
24
|
+
$e$$,$approveData$$.approve_users_custom)}if($ds_nguoi_duyet_str_func$$&&0!==$ds_nguoi_duyet_str_func$$.length&&($ds_nguoi_duyet_str_func$$=[...(new Set($ds_nguoi_duyet_str_func$$))],$obj$$.trang_thai==$approveData$$.trang_thai)){let $user_approves$$=$ds_nguoi_duyet_str_func$$.map($nguoi_duyet$$=>({email:$nguoi_duyet$$,name:$nguoi_duyet$$}));$user_approves$$.joinModel2($obj$$.id_app,Participant,{where:"email",fields:"name"},()=>{[$user_request$$].joinModel2($obj$$.id_app,Participant,{where:"email",
|
|
25
|
+
fields:"name"},()=>{Approve.request($user_request$$,$user_approves$$,$title$$,$obj$$,$e$$=>{$e$$&&console.error("error create request approve:",$e$$.message||$e$$)},$update_after_approve$$,$approveData$$.template_content,$update_after_deny$$)})})}})});$next$$(null,$obj$$)}async import($user$$,$id_app$$,$data$$,$callback_main$$,$options$$={replace:!0,req:null}){importHandler($user$$,this,$id_app$$,$data$$,$callback_main$$,$options$$)}postData($obj$$,$callback$$,$options$$={}){return controller.postData($obj$$,
|
|
26
|
+
this,$callback$$,$options$$)}pushNotification($_obj$$,$eventName$$="new",$old_obj$$=null,$justFireEvents$$=!1,$options$$={title:"",data:{}}){return pushNotification(this,$_obj$$,$eventName$$,$old_obj$$,$justFireEvents$$,$options$$)}}controller.prototype.__proto__=EventEmitter.prototype;
|
|
27
27
|
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$$)});
|
|
28
28
|
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{0<=(await permission.getFieldNotRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.name)).indexOf($fieldName$$)?$res$$.send({allow:!1}):$res$$.send({allow:!0})}catch($e$$){$res$$.state(400).send($e$$.message)}})};
|
|
29
|
-
controller.prototype.find=function($_route_name_route_name$$,$shareRoute$$=!1,$method$$="GET"){let $ctrl$$=this;const $findRoute$$=async($ip$jscomp$1_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$}=$ip$jscomp$1_req$$,$user_agent$$=$ip$jscomp$1_req$$.header("user-agent");$ip$jscomp$1_req$$=$ip$jscomp$1_req$$.headers["x-forwarded-for"]||$ip$jscomp$1_req$$.connection.remoteAddress;try{const $job$$=await
|
|
30
|
-
body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$1_req$$},
|
|
31
|
-
"
|
|
32
|
-
(this.router.route($
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
controller.prototype.postAgainHandler=function($user$$,$condition$$,$callback$jscomp$0$$,$options$$={req:null}){let $model$$=this.model,$ctrl$$=this;if(!$ctrl$$.post)return $callback$jscomp$0$$(null,{message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 th\u1ef1c hi\u1ec7n xong"});const $update_tk_vt$$=$condition$$.update_tk_vt;delete $condition$$.update_tk_vt;const $user_update$$={date_updated:new Date,user_updated:$user$$.email};$model$$.find($condition$$).sort({ngay_ct:1}).lean().exec(function($e$jscomp$0$$,
|
|
29
|
+
controller.prototype.find=function($_route_name_route_name$$,$shareRoute$$=!1,$method$$="GET"){let $ctrl$$=this;const $findRoute$$=async($ip$jscomp$1_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$}=$ip$jscomp$1_req$$,$user_agent$$=$ip$jscomp$1_req$$.header("user-agent");$ip$jscomp$1_req$$=$ip$jscomp$1_req$$.headers["x-forwarded-for"]||$ip$jscomp$1_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("findQueue").add(`${$ctrl$$.name}-find`,{req:{query:$query$$,
|
|
30
|
+
body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$1_req$$,shareRoute:$shareRoute$$},ctrl_name:$ctrl$$.name},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$),{result:$result$$,dataType:$dataType$$}=$returnvalue$$;"xlsx"==$dataType$$?($res$$.setHeader("Content-Type","application/vnd.openxmlformats"),$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".xlsx"),$res$$.end($result$$,"binary")):$res$$.send($result$$)}catch($e$$){$res$$.status(400).send($e$$)}};
|
|
31
|
+
$_route_name_route_name$$=$_route_name_route_name$$||this.route_name;"GET"===$method$$?(this.router.route($_route_name_route_name$$).get($findRoute$$),this.router.route($_route_name_route_name$$+"/excel").get($findRoute$$)):(this.router.route($_route_name_route_name$$).post($findRoute$$),this.router.route($_route_name_route_name$$+"/excel").post($findRoute$$))};
|
|
32
|
+
controller.prototype.get=function($route_name$$,$shareRoute$$=!1){const $ctrl$$=this;this.router.route(`${$route_name$$||this.route_name}/:id`).get(async function($req$jscomp$4_result$$,$res$$){var $body$$=$req$jscomp$4_result$$.params.id;if(!global.mongoose.Types.ObjectId.isValid($body$$))return $res$$.status(404).send({error:ERRORS.ERR_ID_INVALID,code:ERRORS.ERR_ID_INVALID_CODE});$body$$={_id:$body$$};const $user_agent$$=$req$jscomp$4_result$$.header("user-agent"),$ip$$=$req$jscomp$4_result$$.headers["x-forwarded-for"]||
|
|
33
|
+
$req$jscomp$4_result$$.connection.remoteAddress,{query:$query$$,user:$user$$,params:$params$$}=$req$jscomp$4_result$$;try{const $job$$=await queueManager.getQueue("findQueue").add(`${$ctrl$$.name}-get`,{req:{query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,shareRoute:$shareRoute$$},ctrl_name:$ctrl$$.name},{timeout:1E4}),$returnvalue$$=await jobFinished($job$$);({result:$req$jscomp$4_result$$}=$returnvalue$$);if(0==$req$jscomp$4_result$$.length)return $res$$.status(404).send({error:ERRORS.ERR_NOT_FOUND,
|
|
34
|
+
code:ERRORS.ERR_NOT_FOUND_CODE});$res$$.send($req$jscomp$4_result$$[0])}catch($e$$){console.error($e$$),$res$$.status(400).send($e$$)}})};
|
|
35
|
+
controller.prototype.postAgainHandler=function($user$$,$condition$$,$callback$jscomp$0$$,$options$$={req:null}){let $model$$=this.model,$ctrl$$=this;if(!$ctrl$$.post)return $callback$jscomp$0$$(null,{message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n xong"});const $update_tk_vt$$=$condition$$.update_tk_vt;delete $condition$$.update_tk_vt;const $user_update$$={date_updated:new Date,user_updated:$user$$.email};$model$$.find($condition$$).sort({ngay_ct:1}).lean().exec(function($e$jscomp$0$$,
|
|
37
36
|
$objsrepost$$){console.log("start repost",$condition$$,$objsrepost$$.length," vouchers","by",$user$$.email);setImmediate(()=>{if($e$jscomp$0$$)return console.error("postAgain: find",$e$jscomp$0$$),$callback$jscomp$0$$({error:$e$jscomp$0$$.message||$e$jscomp$0$$.error||$e$jscomp$0$$});async.mapSeries($objsrepost$$,function($obj$$,$callback$$){setImmediate(async()=>{console.log("postAgain: handle data before post",$obj$$.ma_ct,$obj$$.so_ct,$obj$$.ngay_ct,"by",$user$$.email);if($ctrl$$.reposting)try{await $ctrl$$.reposting($user$$,
|
|
38
37
|
$obj$$)}catch($e$$){return $callback$$({error:"Kh\u00f4ng th\u1ec3 x\u1eed l\u00fd \u0111\u01b0\u1ee3c d\u1eef li\u1ec7u tr\u01b0\u1edbc khi repost ch\u1ee9ng t\u1eeb:"+$obj$$.so_ct+", L\u1ed7i: "+($e$$.message||$e$$.error||"")})}$update_tk_vt$$&&$obj$$.details&&(console.log("postAgain: update tk_vt..."),await $obj$$.details.filter($d$$=>$d$$.ma_vt).asyncJoinModel2($obj$$.id_app,global.getModel("dmvt"),{where:"ma_vt",fields:"tk_vt"}),$user_update$$.details=$obj$$.details);try{console.log("postAgain: update voucher..."),
|
|
39
38
|
await $model$$.updateOne({_id:$obj$$._id},{...$user_update$$})}catch($e$$){return console.error("postAgain: error update data before repost",$e$$),$callback$$({error:"Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt \u0111\u01b0\u1ee3c d\u1eef li\u1ec7u ch\u1ee9ng t\u1eeb "+$obj$$.so_ct+",Error:"+$e$$.message||$e$$.error||""})}console.log("postAgain: posting...");postData($obj$$,$ctrl$$,function($e$$,$rs$$){console.log("postAgain: reported",$obj$$.ma_ct,$obj$$.so_ct,$obj$$.ngay_ct,"by",$user$$.email);if($e$$)return $callback$$({error:$e$$.message||
|
|
40
|
-
$e$$.error||"Kh\u00f4ng th\u1ec3 post s\u1ed5 s\u00e1ch ch\u1ee9ng t\u1eeb:"+$obj$$.so_ct});$callback$$(null,$rs$$)},{req:$options$$.req})})},function($e$$){if($e$$)return console.error("postAgain: Error",$e$$),$callback$jscomp$0$$({error:$e$$.message||$e$$.error||$e$$});console.log("postAgain: finished",$condition$$,$objsrepost$$.length," vouchers","by",$user$$.email);$callback$jscomp$0$$(null,{message:"Ch\u01b0\u01a1ng tr\u00ecnh \
|
|
41
|
-
controller.prototype.updateBook=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/action/postagain`).get(async($
|
|
42
|
-
|
|
43
|
-
controller.prototype.updateKey=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/updatekey/:_id/:field/:new_value`).get(async function($ip$jscomp$4_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$4_req$$,$user_agent$$=$ip$jscomp$4_req$$.header("user-agent");$ip$jscomp$4_req$$=$ip$jscomp$4_req$$.headers["x-forwarded-for"]||$ip$jscomp$4_req$$.connection.remoteAddress;try{const $job$$=await
|
|
44
|
-
{req:{query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$4_req$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:3E5})
|
|
45
|
-
controller.prototype.updateField=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/update/:field`).get(async function($ip$jscomp$5_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$5_req$$,$user_agent$$=$ip$jscomp$5_req$$.header("user-agent");$ip$jscomp$5_req$$=$ip$jscomp$5_req$$.headers["x-forwarded-for"]||$ip$jscomp$5_req$$.connection.remoteAddress;try{const $job$$=await
|
|
46
|
-
{req:{query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$5_req$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:3E5})
|
|
47
|
-
controller.prototype.exportToExcel=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/excel/:rpt_id`).get(async function($ip$jscomp$6_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$}=$ip$jscomp$6_req$$,$user_agent$$=$ip$jscomp$6_req$$.header("user-agent");$ip$jscomp$6_req$$=$ip$jscomp$6_req$$.headers["x-forwarded-for"]||$ip$jscomp$6_req$$.connection.remoteAddress;try{const $job$$=await
|
|
48
|
-
body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$6_req$$},ctrl_name:$ctrl$$.name},{timeout:3E5})
|
|
49
|
-
|
|
50
|
-
{$
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
controller.prototype.importFromJson=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/import/json`).post(async function($
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
{req
|
|
39
|
+
$e$$.error||"Kh\u00f4ng th\u1ec3 post s\u1ed5 s\u00e1ch ch\u1ee9ng t\u1eeb:"+$obj$$.so_ct});$callback$$(null,$rs$$)},{req:$options$$.req})})},function($e$$){if($e$$)return console.error("postAgain: Error",$e$$),$callback$jscomp$0$$({error:$e$$.message||$e$$.error||$e$$});console.log("postAgain: finished",$condition$$,$objsrepost$$.length," vouchers","by",$user$$.email);$callback$jscomp$0$$(null,{message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n xong"})})})})};
|
|
40
|
+
controller.prototype.updateBook=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/action/postagain`).get(async($req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("updateBookQueue").add(`${$ctrl$$.name}-update-book`,{req:{query:$query$$,body:$body$$,user:$user$$,params:$params$$,
|
|
41
|
+
user_agent:$user_agent$$,ip:$ip$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:36E5});let $status_url$$=`${configs.api_url||configs.domain}/api${$ctrl$$.route_name}/job/${global.updateBookQueue.name}/${$job$$.id}`;$status_url$$=$status_url$$.replace(":id_app",$req$$.user.current_id_app);$res$$.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",status_url:$status_url$$})}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
42
|
+
controller.prototype.updateKey=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/updatekey/:_id/:field/:new_value`).get(async function($ip$jscomp$4_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$4_req$$,$user_agent$$=$ip$jscomp$4_req$$.header("user-agent");$ip$jscomp$4_req$$=$ip$jscomp$4_req$$.headers["x-forwarded-for"]||$ip$jscomp$4_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("commonQueue").add(`${$ctrl$$.name}-history`,
|
|
43
|
+
{req:{type_job:"updateKey",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$4_req$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:3E5}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
44
|
+
controller.prototype.updateField=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/update/:field`).get(async function($ip$jscomp$5_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$5_req$$,$user_agent$$=$ip$jscomp$5_req$$.header("user-agent");$ip$jscomp$5_req$$=$ip$jscomp$5_req$$.headers["x-forwarded-for"]||$ip$jscomp$5_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("commonQueue").add(`${$ctrl$$.name}-history`,
|
|
45
|
+
{req:{type_job:"updateField",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$5_req$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:3E5}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
46
|
+
controller.prototype.exportToExcel=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/excel/:rpt_id`).get(async function($ip$jscomp$6_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$}=$ip$jscomp$6_req$$,$user_agent$$=$ip$jscomp$6_req$$.header("user-agent");$ip$jscomp$6_req$$=$ip$jscomp$6_req$$.headers["x-forwarded-for"]||$ip$jscomp$6_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("heavyQueue").add(`${$ctrl$$.name}-export`,{req:{type_job:"export",
|
|
47
|
+
query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$6_req$$},ctrl_name:$ctrl$$.name},{timeout:3E5}),$returnvalue$$=await jobFinished($job$$);switch($returnvalue$$.ext){case "xlsx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".xlsx");$res$$.end($returnvalue$$.data,"binary");break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");
|
|
48
|
+
$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".docx");$res$$.write($returnvalue$$.data,"binary");$res$$.end(null,"binary");break;case "print":$res$$.send($returnvalue$$.data.join('<p style="page-break-before: always"></p>'));break;case "json":$res$$.json($returnvalue$$.data);break;default:$res$$.send($returnvalue$$.data)}}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
49
|
+
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$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("heavyQueue").add(`${$ctrl$$.name}-import-gs`,{req:{type_job:"googlesheet",query:$query$$,body:$body$$,user:$user$$,
|
|
50
|
+
params:$params$$,user_agent:$user_agent$$,ip:$ip$$},ctrl_name:$ctrl$$.name},{timeout:36E5});let $status_url$$=`${configs.api_url||configs.domain}/api${$ctrl$$.route_name}/job/${global.importFromGsQueue.name}/${$job$$.id}`;$status_url$$=$status_url$$.replace(":id_app",$req$$.user.current_id_app);$res$$.send({rows_imported:0,rows_error:[],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",
|
|
51
|
+
status_url:$status_url$$})}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
52
|
+
controller.prototype.importFromJson=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/import/json`).post(async function($req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("heavyQueue").add(`${$ctrl$$.name}-import-json`,{req:{type_job:"json",query:$query$$,body:$body$$,user:$user$$,
|
|
53
|
+
params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:36E5});let $status_url$$=`${configs.api_url||configs.domain}/api${$ctrl$$.route_name}/job/${global.importFromJsonQueue.name}/${$job$$.id}`;$status_url$$=$status_url$$.replace(":id_app",$req$$.user.current_id_app);$res$$.send({rows_imported:0,rows_error:[],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",
|
|
54
|
+
status_url:$status_url$$})}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
55
|
+
controller.prototype.importFromExcel=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/import/excel`).post(async function($req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("heavyQueue").add(`${$ctrl$$.name}-import-excel`,{req:{type_job:"excel",query:$query$$,body:$body$$,
|
|
56
|
+
user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:36E5});let $status_url$$=`${configs.api_url||configs.domain}/api${$ctrl$$.route_name}/job/${global.importFromExcelQueue.name}/${$job$$.id}`;$status_url$$=$status_url$$.replace(":id_app",$req$$.user.current_id_app);$res$$.send({rows_imported:0,rows_error:[],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",
|
|
57
|
+
status_url:$status_url$$})}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
57
58
|
controller.prototype.create=function(){let $ctrl$$=this;this.router.route(this.route_name).post(async function($req$$,$res$$){let $body$$=$req$$.body;if(!$body$$)return $res$$.status(411).send({error:"Kh\u00f4ng c\u00f3 n\u1ed9i dung c\u1ea7n l\u01b0u"});$req$$.files&&0<underscore.keys($req$$.files).length&&("JSON"!=$body$$.return&&($req$$.uploadFile=!0),underscore.extend($body$$,$req$$.files));const {query:$query$$,user:$user$$,params:$params$$,files:$files$$,uploadFile:$uploadFile$$}=$req$$,$user_agent$$=
|
|
58
|
-
$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $job$$=await
|
|
59
|
-
$res$$.send($returnvalue$$))});global.createQueueEvents.on("failed",({jobId:$jobId$$,failedReason:$failedReason$$})=>{$jobId$$===$job$$.id&&$res$$.status(400).send($failedReason$$)})}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
59
|
+
$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("createQueue").add(`${$ctrl$$.name}-create`,{req:{query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,uploadFile:$uploadFile$$},ctrl_name:$ctrl$$.name},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$);!1===$req$$.query.return_data?$res$$.send({_id:$returnvalue$$._id.toString()}):$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
60
60
|
controller.prototype.quickCreate=function(){let $model$$=this.model,$name$$=this.name,$ctrl$$=this,$createFromTemplate$$=async($req$$,$res$$,$body$jscomp$11_query$$)=>{if(!$body$jscomp$11_query$$){$body$jscomp$11_query$$=$req$$.params.template_code;if(!$body$jscomp$11_query$$)return $res$$.status(400).send({error:"M\u1eabu d\u1eef li\u1ec7u kh\u00f4ng t\u1ed3n t\u1ea1i"});$body$jscomp$11_query$$={id_app:$req$$.user.current_id_app,voucher_code:$name$$.toUpperCase(),code:$body$jscomp$11_query$$};$body$jscomp$11_query$$=
|
|
61
61
|
await templatevoucher.findOne($body$jscomp$11_query$$).lean();if(!$body$jscomp$11_query$$)return $res$$.status(400).send({error:"M\u1eabu d\u1eef li\u1ec7u kh\u00f4ng t\u1ed3n t\u1ea1i"})}$body$jscomp$11_query$$=$body$jscomp$11_query$$.data||{};delete $body$jscomp$11_query$$.so_ct;delete $body$jscomp$11_query$$.ngay_ct;delete $body$jscomp$11_query$$.user_created;delete $body$jscomp$11_query$$.date_created;delete $body$jscomp$11_query$$.user_updated;delete $body$jscomp$11_query$$.date_updated;delete $body$jscomp$11_query$$._id;
|
|
62
62
|
delete $body$jscomp$11_query$$.pkey;delete $body$jscomp$11_query$$.__v;let $_data$$=$req$$.query;$req$$.body&&($_data$$=Object.assign($_data$$,$req$$.body));for(let $key$$ in $_data$$)$_data$$[$key$$]&&"access_token"!==$key$$&&"token"!==$key$$&&"_id"!==$key$$&&(underscore.has($model$$.schema.paths,$key$$)&&($body$jscomp$11_query$$[$key$$]=$_data$$[$key$$]),$body$jscomp$11_query$$.details&&$body$jscomp$11_query$$.details.forEach($d$$=>{$d$$[$key$$]=$_data$$[$key$$]}));const {query:$query$$,user:$user$$,
|
|
63
|
-
params:$params$$,files:$files$$,uploadFile:$uploadFile$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $job$$=await
|
|
64
|
-
|
|
65
|
-
$res$$){$createFromTemplate$$($req$$,$res$$)})};
|
|
63
|
+
params:$params$$,files:$files$$,uploadFile:$uploadFile$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("createQueue").add(`${$ctrl$$.name}-create`,{req:{query:$query$$,body:$body$jscomp$11_query$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,uploadFile:$uploadFile$$},ctrl_name:$ctrl$$.name},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$);
|
|
64
|
+
!1===$req$$.query.return_data?$res$$.send({_id:$returnvalue$$._id.toString()}):$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}};this.router.route(`${this.route_name}/quickcreate/:template_code`).get(function($req$$,$res$$){$createFromTemplate$$($req$$,$res$$)});this.router.route(`${this.route_name}/quickcreate/:template_code`).post(function($req$$,$res$$){$createFromTemplate$$($req$$,$res$$)})};
|
|
66
65
|
controller.prototype.update=function(){let $ctrl$$=this;this.router.route(this.route_name+"/:id").put(async function($req$$,$res$$){let $body$$=$req$$.body;$req$$.files&&underscore.extend($body$$,$req$$.files);let $data$$;try{$data$$=bodyToJson($body$$)}catch($e$$){return $res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$})}const {query:$query$$,user:$user$$,params:$params$$,files:$files$$,uploadFile:$uploadFile$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||
|
|
67
|
-
$req$$.connection.remoteAddress,$id$$=$req$$.params.id;try{const $job$$=await
|
|
68
|
-
$
|
|
69
|
-
controller.prototype.delete=function(){let $ctrl$$=this;this.router.route(this.route_name+"/:id").delete(async($ip$jscomp$13_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$13_req$$,$user_agent$$=$ip$jscomp$13_req$$.header("user-agent");$ip$jscomp$13_req$$=$ip$jscomp$13_req$$.headers["x-forwarded-for"]||$ip$jscomp$13_req$$.connection.remoteAddress;try{const $job$$=await
|
|
70
|
-
body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$13_req$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:6E4})
|
|
71
|
-
controller.prototype.
|
|
72
|
-
body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$14_req
|
|
73
|
-
controller.prototype.
|
|
74
|
-
body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$15_req$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:6E4})
|
|
66
|
+
$req$$.connection.remoteAddress,$id$$=$req$$.params.id;try{const $job$$=await queueManager.getQueue("updateQueue").add(`${$ctrl$$.name}-update`,{req:{query:$query$$,id:$id$$,data:$data$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,uploadFile:$uploadFile$$},ctrl_name:$ctrl$$.name},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$);!1===$req$$.query.return_data?$res$$.send({_id:$returnvalue$$._id.toString()}):$res$$.send($returnvalue$$)}catch($e$$){console.error("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt d\u1eef li\u1ec7u",
|
|
67
|
+
$e$$),$res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$})}})};
|
|
68
|
+
controller.prototype.delete=function(){let $ctrl$$=this;this.router.route(this.route_name+"/:id").delete(async($ip$jscomp$13_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$13_req$$,$user_agent$$=$ip$jscomp$13_req$$.header("user-agent");$ip$jscomp$13_req$$=$ip$jscomp$13_req$$.headers["x-forwarded-for"]||$ip$jscomp$13_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("deleteQueue").add(`${$ctrl$$.name}-delete`,{req:{query:$query$$,
|
|
69
|
+
body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$13_req$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
70
|
+
controller.prototype.deleteMany=function($route_name$$,$shareRoute$$=!1){let $ctrl$$=this;this.router.route(`${$route_name$$||this.route_name}/action/delete`).delete(async($ip$jscomp$14_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$}=$ip$jscomp$14_req$$,$user_agent$$=$ip$jscomp$14_req$$.header("user-agent");$ip$jscomp$14_req$$=$ip$jscomp$14_req$$.headers["x-forwarded-for"]||$ip$jscomp$14_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("commonQueue").add(`${$ctrl$$.name}-delete-many`,
|
|
71
|
+
{req:{type_job:"deleteMany",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$14_req$$},shareRoute:$shareRoute$$,ctrl_name:$ctrl$$.name},{timeout:18E5}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
72
|
+
controller.prototype.history=function(){let $ctrl$$=this;this.router.route(this.route_name+"/g/history/:id").get(async function($ip$jscomp$15_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$15_req$$,$user_agent$$=$ip$jscomp$15_req$$.header("user-agent");$ip$jscomp$15_req$$=$ip$jscomp$15_req$$.headers["x-forwarded-for"]||$ip$jscomp$15_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("commonQueue").add(`${$ctrl$$.name}-history`,
|
|
73
|
+
{req:{type_job:"history",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$15_req$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
74
|
+
controller.prototype.logs=function(){let $ctrl$$=this;this.router.route(this.route_name+"/g/log/:action").get(async function($ip$jscomp$16_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$16_req$$,$user_agent$$=$ip$jscomp$16_req$$.header("user-agent");$ip$jscomp$16_req$$=$ip$jscomp$16_req$$.headers["x-forwarded-for"]||$ip$jscomp$16_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("commonQueue").add(`${$ctrl$$.name}-log`,
|
|
75
|
+
{req:{type_job:"log",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$16_req$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}})};const {Queue}=require("bullmq");
|
|
76
|
+
controller.prototype.jobStatus=function(){this.router.route(this.route_name+"/job/:queue_name/:id").get(async function($req$$,$res$$){try{const $job$$=await (new Queue($req$$.params.queue_name)).getJob($req$$.params.id);if(!$job$$)return $res$$.status(400).send({error:"Job kh\u00f4ng t\u1ed3n t\u1ea1i"});let $jsonJob$$=$job$$.toJSON();delete $jsonJob$$.data;$res$$.send($jsonJob$$)}catch($e$$){$res$$.status(400).send({error:"Kh\u00f4ng th\u1ec3 l\u1ea5y th\u00f4ng tin c\u1ee7a job n\u00e0y"})}})};
|
|
75
77
|
controller.prototype.postData=($obj$$,$cb$$,$options$$={})=>postData($obj$$,this,$cb$$,$options$$);
|
|
76
|
-
controller.prototype.route=function($setRoute$$){this.history();this.logs();this.find("/search"+this.route_name,!1,"POST");this.find();this.get();this.find(`/${this.module}/shared`,!0);this.get(`/${this.module}/shared`,!0);this.getFieldNoRight();this.create();this.quickCreate();this.update();this.delete();this.getNextId();this.exportToExcel();this.importFromExcel();this.importFromJson();this.importFromGoogleSheet();this.updateField();this.updateKey();this.updateBook()
|
|
77
|
-
controller.runWebhooks=runWebhooks;controller.postData=postData;controller.pushNotification=pushNotification;controller.create=
|
|
78
|
+
controller.prototype.route=function($setRoute$$){this.history();this.logs();this.find("/search"+this.route_name,!1,"POST");this.find();this.get();this.find(`/${this.module}/shared`,!0);this.get(`/${this.module}/shared`,!0);this.getFieldNoRight();this.create();this.quickCreate();this.update();this.delete();this.deleteMany();this.getNextId();this.exportToExcel();this.importFromExcel();this.importFromJson();this.importFromGoogleSheet();this.updateField();this.updateKey();this.updateBook();this.jobStatus();
|
|
79
|
+
$setRoute$$&&$setRoute$$(this.router)};controller.runWebhooks=runWebhooks;controller.postData=postData;controller.pushNotification=pushNotification;controller.create=async($user$$,$ctrl$$,$data$$,$callback$$,$id_be_supply_by_user$$,$req$$,$action$$="add")=>{$req$$=$req$$||{};$req$$.user=$user$$;$req$$.data=$data$$;$req$$.id_be_supply_by_user=$id_be_supply_by_user$$;$req$$.action=$action$$;return createHandler($ctrl$$,$req$$,$callback$$)};module.exports=controller;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';const _=require("lodash"),numeral=require("numeral"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),reportinfo=global.getModel("reportinfo"),{evalute,getParameterData,JSONParser}=require("../libs/utils"),utils=require("../libs/utils"),rptHandler=require("./rptHandler");
|
|
1
|
+
'use strict';const _=require("lodash"),numeral=require("numeral"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),reportinfo=global.getModel("reportinfo"),{evalute,getParameterData,JSONParser}=require("../libs/utils"),utils=require("../libs/utils"),rptHandler=require("./rptHandler"),{jobFinished,queueManager}=require("./QueueManager");
|
|
2
2
|
class controllerRPT{constructor($router$$,$rptId$$,$fecthData$$,$options$$={}){this.module=$rptId$$;this.router=$router$$;this.options=$options$$;this.fecthDataFunc=$fecthData$$;this.notNeedRight=async($user$$,$_options$$={})=>{let $nnr$$=$options$$.notNeedRight;_.isFunction($nnr$$)&&($nnr$$=$nnr$$($user$$,$_options$$));return $nnr$$};this.getDataFunc=()=>{console.log("get data from server",$rptId$$,"...");if($options$$.stream)return $fecthData$$;if(!global.reportMainPool||!$options$$.queue&&global.reportMainPool.busy())return console.log("run report on main thread",
|
|
3
3
|
$rptId$$,"..."),($req$$,$callback$$)=>{$fecthData$$($req$$,($e$jscomp$0$$,$data$$)=>{console.log("report completed",$rptId$$);setImmediate(async()=>{if($e$jscomp$0$$)return $callback$$($e$jscomp$0$$);var $func_string$jscomp$1_rptInfo$$=await reportinfo.findOne({code:($req$$.query.report_info_code||$rptId$$).toLowerCase()}).lean();if($func_string$jscomp$1_rptInfo$$&&$func_string$jscomp$1_rptInfo$$.handle_data_expression_server){if(0<=$func_string$jscomp$1_rptInfo$$.handle_data_expression_server.indexOf("async "))return $callback$$("async function is not allow");
|
|
4
4
|
$func_string$jscomp$1_rptInfo$$=`return (async ()=>{
|
|
@@ -19,12 +19,11 @@ await reportinfo.findOne({code:($req$$.query.report_info_code||$rptId$$).toLower
|
|
|
19
19
|
|
|
20
20
|
})`;try{let $rs$$=await evalute($func_string_rptInfo$$,{data:$data$$,moment,numeral,condition:$req$$.query,user:$req$$.user,_,utils,getData:getParameterData})();if($rs$$){if($rs$$.error)return console.error("handle_data_expression_server",$rs$$.error,$func_string_rptInfo$$,$rptId$$),$callback$$($rs$$.error.message||$rs$$.error);$data$$=$rs$$}}catch($e$$){return console.error("handle_data_expression_server",$e$$,$func_string_rptInfo$$,$rptId$$),$callback$$($e$$.message||$e$$)}}$callback$$(null,
|
|
21
21
|
$data$$)})})}};global.report_controllers[$rptId$$.toUpperCase()]=this;this.base_path=!1===$options$$.require_id_app?"/":"/:id_app/";const $mainRoute$$=async($ip_req$$,$res$$)=>{if($options$$.stream)rptHandler(this,$ip_req$$,($e$$,$rs$$)=>{if($e$$)return $e$$.error?$res$$.status(500).send($e$$):$res$$.status(500).send({error:$e$$.message||$e$$});$res$$.send($rs$$)},$res$$);else{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip_req$$,$user_agent$$=$ip_req$$.header("user-agent");
|
|
22
|
-
$ip_req$$=$ip_req$$.headers["x-forwarded-for"]||$ip_req$$.connection.remoteAddress;try{const $job$$=await
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
{
|
|
27
|
-
$
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
"POST"==$_options$$.method?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).post($callbackRoute_handler$$):"PUT"==$_options$$.method?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).put($callbackRoute_handler$$):this.router.route(`${this.base_path+this.module}/${$routeName$$}`).get($callbackRoute_handler$$)}}module.exports=controllerRPT;
|
|
22
|
+
$ip_req$$=$ip_req$$.headers["x-forwarded-for"]||$ip_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("rptQueue").add(`${$rptId$$}-rpt`,{req:{query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip_req$$,files:$files$$},ctrl_name:$rptId$$},{timeout:6E5}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){console.error("L\u1ed7i t\u1ea1o job cho b\u00e1o c\u00e1o",$rptId$$,$e$$),$res$$.status(400).send($e$$)}}},
|
|
23
|
+
$excelRoute$$=async($ip$jscomp$1_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$1_req$$,$user_agent$$=$ip$jscomp$1_req$$.header("user-agent");$ip$jscomp$1_req$$=$ip$jscomp$1_req$$.headers["x-forwarded-for"]||$ip$jscomp$1_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("rptCommonQueue").add(`${$rptId$$}-excel`,{req:{type_job:"excel",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,
|
|
24
|
+
ip:$ip$jscomp$1_req$$,files:$files$$},ctrl_name:$rptId$$},{timeout:6E5}),$returnvalue$$=await jobFinished($job$$),$result$$=$returnvalue$$.data;switch($returnvalue$$.type){case "xlsx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$rptId$$+".xlsx");$res$$.end($result$$,"binary");break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");$res$$.setHeader("Content-Disposition",
|
|
25
|
+
"attachment; filename="+$rptId$$+".docx");$res$$.write($result$$,"binary");$res$$.end(null,"binary");break;default:$res$$.send($result$$)}}catch($e$$){$res$$.status(400).send($e$$)}};$router$$.route(`${this.base_path+this.module}`).get($mainRoute$$);$router$$.route(`${this.base_path+this.module}`).post($mainRoute$$);$router$$.route(`${this.base_path+this.module}/excel`).get($excelRoute$$);$router$$.route(`${this.base_path+this.module}/excel`).post($excelRoute$$)}getData($req$$,$callback$$){setImmediate(()=>
|
|
26
|
+
{try{this.fecthDataFunc($req$$,$callback$$)}catch($e$$){console.error($e$$),$callback$$($e$$.message)}})}createRoute($routeName$$,$callbackRoute_handler$$,$_options$$={method:"GET"}){const $self$$=this,$rptId$$=$self$$.module;$_options$$.method=$_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$$,
|
|
27
|
+
$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$2_req$$,$user_agent$$=$ip$jscomp$2_req$$.header("user-agent");$ip$jscomp$2_req$$=$ip$jscomp$2_req$$.headers["x-forwarded-for"]||$ip$jscomp$2_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("rptCommonQueue").add(`${$self$$.module}-report-extra-action`,{req:{type_job:"createRoute",routeName:$routeName$$,_options:$_options$$,route_action_key:$route_action_key$$,query:$query$$,
|
|
28
|
+
body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$2_req$$,files:$files$$},ctrl_name:$rptId$$},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}};"DELETE"==$_options$$.method?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).delete($callbackRoute_handler$$):"POST"==$_options$$.method?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).post($callbackRoute_handler$$):
|
|
29
|
+
"PUT"==$_options$$.method?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).put($callbackRoute_handler$$):this.router.route(`${this.base_path+this.module}/${$routeName$$}`).get($callbackRoute_handler$$)}}module.exports=controllerRPT;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';const async=require("async"),underscore=require("underscore"),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"),{evalute}=require("../libs/utils"),{asyncBodyToJson,ERRORS,getNextSequence,isExists,createIdRef,fields_sync_master_detail,postData,pushNotification,runWebhooks,deletePost}=require("./controllerUtils"),
|
|
2
|
-
create=async($
|
|
3
|
-
$ctrl$$.options.isVoucher&&($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$jscomp$1$$("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$jscomp$1$$($e$$.message||
|
|
2
|
+
create=async($ctrl$$,$req$$,$callback$jscomp$1$$)=>{let {user:$user$$,data:$data$$,id_be_supply_by_user:$id_be_supply_by_user$$,action:$action$$}=$req$$;$action$$||($action$$="add");try{const $model$$=$ctrl$$.model,$voucher_options$$=(await global.getModel("options").findOne({id_app:$user$$.current_id_app,id_func:$ctrl$$.name}).lean()||{}).option,$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$jscomp$1$$($e$$.message||
|
|
3
|
+
$e$$.error||$e$$)}$schema_paths$$.ma_ct&&$ctrl$$.options.isVoucher&&($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$jscomp$1$$("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$jscomp$1$$($e$$.message||
|
|
4
4
|
$e$$.error||$e$$)}}let $requireOtp$$=$ctrl$$.options.requireOtp;$requireOtp$$&&_.isFunction($requireOtp$$)&&($requireOtp$$=$requireOtp$$($v_data$$,{action:$action$$,user:$user$$}));if($requireOtp$$&&"import"!=$action$$)try{await permission.verifyOTP($user$$.email,$v_data$$["otp-id"],$v_data$$["otp-code"])}catch($e$$){return $callback$jscomp$1$$({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$$,
|
|
5
5
|
$v_data$$,function($error$$,$v_data$$){if($error$$)return $reject$$($error$$);$resolve$$($v_data$$)})}catch($e$$){return $reject$$($e$$)}})}catch($e$$){return $callback$jscomp$1$$($e$$.message||$e$$.error||$e$$)}const $obj$jscomp$0$$=new $model$$;$schema_paths$$.exfields&&($obj$jscomp$0$$.exfields=$v_data$$.exfields||{});for(let $f$$ in $v_data$$)$schema_paths$$[$f$$]&&($obj$jscomp$0$$.set($f$$,$v_data$$[$f$$]),"exfields"!==$f$$||$obj$jscomp$0$$.exfields||($obj$jscomp$0$$.exfields={}));$schema_paths$$.id_app&&
|
|
6
6
|
($obj$jscomp$0$$.id_app=$user$$.current_id_app);const $checkVoucherNumber$$=$callback$$=>{underscore.has($model$$.schema.paths,"ngay_ct")&&$obj$jscomp$0$$.ngay_ct?setImmediate(()=>{if($voucher_options$$&&$voucher_options$$.check_so_ct&&"0"!==$voucher_options$$.check_so_ct){let $query_check$$={id_app:$obj$jscomp$0$$.id_app,so_ct:$obj$jscomp$0$$.so_ct},$tu_ngay$$,$den_ngay$$;switch($voucher_options$$.check_so_ct){case "1":$tu_ngay$$=moment($obj$jscomp$0$$.ngay_ct).startOf("day").toDate();$den_ngay$$=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
'use strict';const async=require("async"),_=require("lodash"),validator=require("../libs/validator"),permission=require("../libs/permission"),{ERRORS,checkReference,pushNotification,runWebhooks,deletePost}=require("./controllerUtils"),deleteHandler=async($ctrl$$,$req$$,$mainCallback$$)=>{let $model$$=$ctrl$$.model,$module$$=$ctrl$$.module;async.series([function($callback$$){if(!global.mongoose.Types.ObjectId.isValid($
|
|
2
|
-
|
|
1
|
+
'use strict';const async=require("async"),_=require("lodash"),validator=require("../libs/validator"),permission=require("../libs/permission"),{ERRORS,checkReference,pushNotification,runWebhooks,deletePost}=require("./controllerUtils"),deleteHandler=async($ctrl$$,$req$$,$mainCallback$$)=>{let $model$$=$ctrl$$.model,$module$$=$ctrl$$.module,$_id$$=$req$$.params.id;if(!$_id$$)return $mainCallback$$({error:"id is required"});async.series([function($callback$$){if(!global.mongoose.Types.ObjectId.isValid($_id$$))return $callback$$({error:ERRORS.ERR_NOT_FOUND,
|
|
2
|
+
code:ERRORS.ERR_NOT_FOUND_CODE});$model$$.findOne({_id:$_id$$}).exec(async function($e_user$$,$obj$$){if($e_user$$)return console.error("delete findObject",$e_user$$),$e_user$$.error?$callback$$($e_user$$):$callback$$({error:$e_user$$.message||$e_user$$.error||$e_user$$});if(!$obj$$)return $callback$$({error:ERRORS.ERR_NOT_FOUND,code:ERRORS.ERR_NOT_FOUND_CODE});$e_user$$=$req$$.user;if($obj$$.trang_thai&&($q_approve_requireOtp$$={id_ct:$obj$$._id.toString(),user_approved:{$exists:!0}},await global.getModel("approve").findOne($q_approve_requireOtp$$)))return $callback$$({error:"Kh\u00f4ng th\u1ec3 xo\u00e1 ch\u1ee9ng t\u1eeb n\u00e0y do n\u00f3 \u0111\u00e3 \u0111\u01b0\u1ee3c duy\u1ec7t"});
|
|
3
3
|
const $voucher_options$$=(await global.getModel("options").findOne({id_app:$e_user$$.current_id_app,id_func:$ctrl$$.name}).lean()||{}).option;if($obj$$.ngay_ct&&$obj$$.id_app&&$obj$$.schema&&$obj$$.schema.validate&&$obj$$.schema.validate.ngay_ct)try{await new Promise(($rs$$,$rj$$)=>{validator.unlockBook[0]($obj$$.id_app,$obj$$.ngay_ct,$unlock$$=>{if(!$unlock$$)return $rj$$(validator.unlockBook[1]);$rs$$($unlock$$)},$voucher_options$$)})}catch($e$$){return $callback$$({error:$e$$.message||$e$$.error||
|
|
4
|
-
$e$$,code:ERRORS.BOOK_LOCK})}$obj$$=$obj$$.toObject();var $q_approve_requireOtp$$=$ctrl$$.options.requireOtp;$q_approve_requireOtp$$&&_.isFunction($q_approve_requireOtp$$)&&($q_approve_requireOtp$$=$q_approve_requireOtp$$($obj$$,{action:"delete",_id:$
|
|
4
|
+
$e$$,code:ERRORS.BOOK_LOCK})}$obj$$=$obj$$.toObject();var $q_approve_requireOtp$$=$ctrl$$.options.requireOtp;$q_approve_requireOtp$$&&_.isFunction($q_approve_requireOtp$$)&&($q_approve_requireOtp$$=$q_approve_requireOtp$$($obj$$,{action:"delete",_id:$_id$$,user:$e_user$$}));if($q_approve_requireOtp$$)try{await permission.verifyOTP($e_user$$.email,$req$$.query["otp-id"],$req$$.query["otp-code"])}catch($e$$){return $callback$$({error:$e$$.message||$e$$.error||$e$$,code:ERRORS.ERR_VERIFY_OTP})}setImmediate(async()=>
|
|
5
5
|
{let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"delete",obj:$obj$$});permission.hasRight($ctrl$$.require_id_app?$obj$$.id_app:void 0,$req$$.user.email,$module$$,"delete",function($error$jscomp$0$$,$hr$$){if($hr$$)checkReference($model$$,$obj$$,function($error$$){if($error$$)return $callback$$({error:ERRORS.ERR_ARISE+($error$$.error||$error$$.message||$error$$),code:ERRORS.ERR_ARISE_CODE});$req$$.obj=$obj$$;$callback$$()});else return $callback$$({error:$error$jscomp$0$$.error||
|
|
6
6
|
$error$jscomp$0$$||ERRORS.ERR_NOT_PERMIT,code:$error$jscomp$0$$.code||ERRORS.ERR_NOT_PERMIT_CODE})},{obj:$obj$$,notNeedRight:$notNeedRight$$})})})},function($callback$$){setImmediate(()=>{let $obj$jscomp$1$$=$req$$.obj;$ctrl$$.deleting?$ctrl$$.deleting($req$$.user,$obj$jscomp$1$$,function($e$$,$obj$jscomp$0$$){if($e$$)return console.error("deleting",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$ctrl$$.dynamicDeleting?$ctrl$$.dynamicDeleting($req$$.user,$obj$jscomp$0$$,
|
|
7
7
|
function($error$$,$obj$$){if($error$$)return $callback$$($error$$);$req$$.obj=$obj$$;$callback$$()}):($req$$.obj=$obj$jscomp$0$$,$callback$$())},{req:$req$$}):$ctrl$$.dynamicDeleting?$ctrl$$.dynamicDeleting($req$$.user,$obj$jscomp$1$$,function($error$$,$obj$$){if($error$$)return $callback$$($error$$);$req$$.obj=$obj$$;$callback$$()}):($req$$.obj=$obj$jscomp$1$$,$callback$$())})},function($callback$$){setImmediate(()=>{let $obj$jscomp$0$$=$req$$.obj;$ctrl$$.emit("deleting",{...$obj$jscomp$0$$});deletePost($req$$.user,
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';const permission=require("../libs/permission"),deleteManyHandler=async($ctrl$$,$req$$,$mainCallback$$)=>{if(!$req$$.user.current_id_app)return $mainCallback$$("Kh\u00f4ng th\u1ec3 xo\u00e1 d\u1eef li\u1ec7u");permission.isAdmin($req$$.user.current_id_app,$req$$.user.email,async function($e_query$$,$admin$$){if(!$admin$$||$e_query$$)return $mainCallback$$("Kh\u00f4ng c\u00f3 quy\u1ec1n xo\u00e1 d\u1eef li\u1ec7u");$e_query$$=($req$$.body||{}).q||{};$e_query$$.id_app=$req$$.user.current_id_app;
|
|
2
|
+
try{const $rs$$=await $ctrl$$.model.deleteMany($e_query$$);$mainCallback$$(null,$rs$$)}catch($e$$){return $mainCallback$$($e$$)}})};module.exports=deleteManyHandler;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
'use strict';const fs=require("fs"),path=require("path"),async=require("async"),underscore=require("underscore"),_=require("lodash"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),numeral=require("numeral"),excelReport=require("excel-report"),redisCache=require("../libs/redis-cache"),{evalute,JSONParser}=require("../libs/utils"),permission=require("../libs/permission"),htmlReport=require("../libs/htmlReport"),utils=require("../libs/utils"),
|
|
2
|
-
{ERRORS,deleteEmptyArray}=require("./controllerUtils"),find=($ctrl$$,$req$$,$callback$jscomp$1
|
|
3
|
-
$e$$,$body_query$$.sort),$callback$$({error:`Sort ${$body_query$$.sort} is not valid`})}!$condition_sort$$&&$ctrl$$.sort&&($condition_sort$$=Object.assign({},$ctrl$$.sort));$req$$.sort=$condition_sort$$;$req$$.fetch_by_groups=$body_query$$.fetch_by_groups;delete $body_query$$.fetch_by_groups;$condition_sort$$={};let $or$$=[];for(let $k$$ in $body_query$$)if("id_app"!==$k$$&&"access_token"!==$k$$)if("_id"===$k$$&&global.mongoose.Types.ObjectId.isValid($body_query$$._id))try{let $id$$=
|
|
4
|
-
$or$$.push({_id:$id$$})}catch($error$$){console.error("find condition",$error$$)}else{if("q"===$k$$&&$body_query$$[$k$$])try{let $q$$=underscore.isObject($body_query$$[$k$$])?$body_query$$[$k$$]:JSONParser($body_query$$[$k$$]);$req$$.fetch_by_groups=$req$$.fetch_by_groups||$q$$.fetch_by_groups;delete $q$$.fetch_by_groups;for(let $key_q$$ in $q$$)"_id"===$key_q$$||$key_q$$.startsWith("$")||underscore.has($model$$.schema.paths,$key_q$$)||delete $q$$.key_q;
|
|
5
|
-
else if("object"!==typeof $q$$._id&&!global.mongoose.Types.ObjectId.isValid($q$$._id))return console.error("Condition is not valid",$q$$),$callback$$({error:"Condition is not valid"});($condition_sort$$=$q$$)||($condition_sort$$={});continue}catch($e$$){return console.error("find condition",$e$$,$body_query$$[$k$$]),$callback$$({error:"Condition is not valid"})}if("fields"!==$k$$&&underscore.has($model$$.schema.paths,$k$$))if($ctrl$$.options.findExact[$k$$])$condition_sort$$[$k$$]
|
|
6
|
-
else{let $item$$={};"number"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?$item$$[$k$$]=Number($body_query$$[$k$$]):"date"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?$item$$[$k$$]=new Date($body_query$$[$k$$]):"string"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?$item$$[$k$$]={$regex:($body_query$$[$k$$]||"").trim().replace(/[.*+\-?^${}()|[\]\\]/g,"\\$&"),$options:"i"}:$item$$[$k$$]=$body_query$$[$k$$];$or$$.push($item$$)}else"$text"===$k
|
|
7
|
-
$or$$.length&&("$and"===$body_query$$.cType?$condition_sort$$.$and=$or$$:$condition_sort$$.$or=$or$$);$shareRoute$$||0==$ctrl$$.require_id_app||($condition_sort$$.id_app=$req$$.user.current_id_app);$ctrl$$.finding?$ctrl$$.finding($req$$.user,$condition_sort$$,function($error$$,$condition$jscomp$0$$){setImmediate(()=>{if($error$$)return $callback$$({error:$error$$.message||$error$$.error||$error$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user
|
|
8
|
-
$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$callback$$()}):($req$$.condition=$condition$jscomp$0$$,$callback$$())})},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition_sort$$,function($e$$,$condition$$){if($e$$)return console.error("dynamicFinding",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message
|
|
9
|
-
function($callback$$){if($shareRoute$$)return $callback$$();setImmediate(async()=>{let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"view"});permission.getRightByItem($req$$.user.current_id_app,$model$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $callback$$({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$,
|
|
10
|
-
$admin$$;let $condition$$=$req$$.condition;$condition$$||($condition$$={});$condition$$.$and||($condition$$.$and=[]);if($ctrl$$.options.onRightByItem)$ctrl$$.options.onRightByItem($req$$.user,$_condition$$,($e$$,$_condition$$)=>{setImmediate(()=>{if($e$$)return $callback$$({error:$e$$.error||$e$$.message||$e$$});_.isObject($_condition$$)&&0<Object.keys($_condition$$).length&&$condition$$.$and.push($_condition$$)
|
|
11
|
-
else _.isObject($_condition$$)&&0<Object.keys($_condition$$).length&&$condition$$.$and.push($_condition$$),$req$$.condition_assign=$_condition$$,$req$$.condition=$condition$$,$callback$$()})},$ctrl$$.name,{notNeedRight:$notNeedRight$$})})},function($callback$jscomp$0$$){if($shareRoute$$||$req$$.admin||!$req$$.condition_assign||0===Object.keys($req$$.condition_assign).length)return $callback$jscomp$0$$();setImmediate(()=>
|
|
12
|
-
($col$$,$callback$$)=>{setImmediate(()=>{let $m$$=global.getModel($col$$.ref_collection);permission.getRightByItem($req$$.user.current_id_app,$m$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $callback$$({e:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$,code:$e$jscomp$0$$.code||ERRORS.ERR_NOT_PERMIT_CODE});if($admin$$)return $callback$$()
|
|
13
|
-
$req$$.condition[$col$$.ref_field]);$m$$.find($_condition$$,{[$col$$.ref_field]:1}).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return $callback$$($e$$);let $dsdt$$=underscore.pluck($rs$$,$col$$.ref_field);$dsdt$$.push("");$dsdt$$.push(null);$condition_assignwiths$$[$col$$.field]={$in:$dsdt$$};$callback$$()})})})},$col$$.ref_module)})},$e$$=>{setImmediate(()=>{if($e$$)return $callback$jscomp$0$$({error:$e$$.error
|
|
14
|
-
$req$$.condition_assign||$req$$.condition;$condition$$.$and||($condition$$.$and=[]);let $$or$$=$condition$$.$and.find($a$$=>$a$$.$or);$$or$$?$$or$$.$or.push($condition_assignwiths$$):$condition$$.$and.push($condition_assignwiths$$)}$callback$jscomp$0$$()})})}else $callback$jscomp$0$$()})},function($callback$$){setImmediate(async()=>{if($shareRoute$$)return $callback$$();let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,
|
|
15
|
-
$ctrl$$.module,"view",function($error$$,$permission$$){setImmediate(()=>{if($ctrl$$.options.onQuery)$req$$.permission=$permission$$,$ctrl$$.options.onQuery($req$$,$e$$=>{if($e$$)return $callback$$({error:$e$$.error||$e$$.message||$e$$});if(!$req$$.permission)return $req$$.result=[],$callback$$("0");$callback$$()});else{if(!$permission$$)return $req$$.result=[],$callback$$("0");$callback$$()}})},{notNeedRight:$notNeedRight$$})})},
|
|
16
|
-
$req$$.condition;$condition$jscomp$0$$||($condition$jscomp$0$$={});if($shareRoute$$){$condition$jscomp$0$$.shared=!0;var $data_log_fields_fields$$=(await global.getModel("app").find({sale_online:!0},{_id:1}).lean()).map($a$$=>$a$$._id);$condition$jscomp$0$$.$and||($condition$jscomp$0$$.$and=[]);$condition$jscomp$0$$.$and.push({id_app:{$in:$data_log_fields_fields$$}});$condition$jscomp$0$$.id_app&&$condition$jscomp$0$$.$and.push({id_app:$condition$jscomp$0$$.id_app})}else underscore.has($model$$.schema.paths,
|
|
2
|
+
{ERRORS,deleteEmptyArray}=require("./controllerUtils"),find=($ctrl$$,$req$$,$callback$jscomp$1$$)=>{let $model$$=$ctrl$$.model,$shareRoute$$=$req$$.shareRoute;async.series([function($callback$$){setImmediate(async()=>{var $body_query$$={};underscore.isObject($req$$.body)&&($body_query$$=$req$$.body);$body_query$$={...$req$$.query,...$body_query$$};$req$$.query=$body_query$$;if($body_query$$.sort)if("object"==typeof $body_query$$.sort)var $condition_sort$$=$body_query$$.sort;else try{$condition_sort$$=
|
|
3
|
+
JSONParser($body_query$$.sort)}catch($e$$){return console.error("error parse json",$e$$,$body_query$$.sort),$callback$$({error:`Sort ${$body_query$$.sort} is not valid`})}!$condition_sort$$&&$ctrl$$.sort&&($condition_sort$$=Object.assign({},$ctrl$$.sort));$req$$.sort=$condition_sort$$;$req$$.fetch_by_groups=$body_query$$.fetch_by_groups;delete $body_query$$.fetch_by_groups;$condition_sort$$={};let $or$$=[];for(let $k$$ in $body_query$$)if("id_app"!==$k$$&&"access_token"!==$k$$)if("_id"===$k$$&&global.mongoose.Types.ObjectId.isValid($body_query$$._id))try{let $id$$=
|
|
4
|
+
global.mongoose.Types.ObjectId($body_query$$._id);$or$$.push({_id:$id$$})}catch($error$$){console.error("find condition",$error$$)}else{if("q"===$k$$&&$body_query$$[$k$$])try{let $q$$=underscore.isObject($body_query$$[$k$$])?$body_query$$[$k$$]:JSONParser($body_query$$[$k$$]);$req$$.fetch_by_groups=$req$$.fetch_by_groups||$q$$.fetch_by_groups;delete $q$$.fetch_by_groups;for(let $key_q$$ in $q$$)"_id"===$key_q$$||$key_q$$.startsWith("$")||underscore.has($model$$.schema.paths,$key_q$$)||delete $q$$.key_q;
|
|
5
|
+
if(Object.keys($q$$).includes("_id"))if(!$q$$._id)delete $q$$._id;else if("object"!==typeof $q$$._id&&!global.mongoose.Types.ObjectId.isValid($q$$._id))return console.error("Condition is not valid",$q$$),$callback$$({error:"Condition is not valid"});($condition_sort$$=$q$$)||($condition_sort$$={});continue}catch($e$$){return console.error("find condition",$e$$,$body_query$$[$k$$]),$callback$$({error:"Condition is not valid"})}if("fields"!==$k$$&&underscore.has($model$$.schema.paths,$k$$))if($ctrl$$.options.findExact[$k$$])$condition_sort$$[$k$$]=
|
|
6
|
+
$body_query$$[$k$$];else{let $item$$={};"number"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?$item$$[$k$$]=Number($body_query$$[$k$$]):"date"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?$item$$[$k$$]=new Date($body_query$$[$k$$]):"string"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?$item$$[$k$$]={$regex:($body_query$$[$k$$]||"").trim().replace(/[.*+\-?^${}()|[\]\\]/g,"\\$&"),$options:"i"}:$item$$[$k$$]=$body_query$$[$k$$];$or$$.push($item$$)}else"$text"===$k$$&&
|
|
7
|
+
$or$$.push({$text:{$search:$body_query$$[$k$$]}})}0!==$or$$.length&&("$and"===$body_query$$.cType?$condition_sort$$.$and=$or$$:$condition_sort$$.$or=$or$$);$shareRoute$$||0==$ctrl$$.require_id_app||($condition_sort$$.id_app=$req$$.user.current_id_app);$ctrl$$.finding?$ctrl$$.finding($req$$.user,$condition_sort$$,function($error$$,$condition$jscomp$0$$){setImmediate(()=>{if($error$$)return $callback$$({error:$error$$.message||$error$$.error||$error$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,
|
|
8
|
+
$condition$jscomp$0$$,function($e$$,$condition$$){if($e$$)return console.error("dynamicFinding",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$callback$$()}):($req$$.condition=$condition$jscomp$0$$,$callback$$())})},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition_sort$$,function($e$$,$condition$$){if($e$$)return console.error("dynamicFinding",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||
|
|
9
|
+
$e$$});$req$$.condition=$condition$$;$callback$$()}):($req$$.condition=$condition_sort$$,$callback$$())})},function($callback$$){if($shareRoute$$)return $callback$$();setImmediate(async()=>{let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"view"});permission.getRightByItem($req$$.user.current_id_app,$model$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $callback$$({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$,
|
|
10
|
+
code:$e$jscomp$0$$.code||ERRORS.ERR_NOT_PERMIT_CODE});if($admin$$)return $callback$$();$req$$.admin=$admin$$;let $condition$$=$req$$.condition;$condition$$||($condition$$={});$condition$$.$and||($condition$$.$and=[]);if($ctrl$$.options.onRightByItem)$ctrl$$.options.onRightByItem($req$$.user,$_condition$$,($e$$,$_condition$$)=>{setImmediate(()=>{if($e$$)return $callback$$({error:$e$$.error||$e$$.message||$e$$});_.isObject($_condition$$)&&0<Object.keys($_condition$$).length&&$condition$$.$and.push($_condition$$);
|
|
11
|
+
$req$$.condition_assign=$_condition$$;$req$$.condition=$condition$$;$callback$$()})});else _.isObject($_condition$$)&&0<Object.keys($_condition$$).length&&$condition$$.$and.push($_condition$$),$req$$.condition_assign=$_condition$$,$req$$.condition=$condition$$,$callback$$()})},$ctrl$$.name,{notNeedRight:$notNeedRight$$})})},function($callback$jscomp$0$$){if($shareRoute$$||$req$$.admin||!$req$$.condition_assign||0===Object.keys($req$$.condition_assign).length)return $callback$jscomp$0$$();setImmediate(()=>
|
|
12
|
+
{if($ctrl$$.options.assignWiths){let $condition_assignwiths$$={};async.mapSeries($ctrl$$.options.assignWiths,($col$$,$callback$$)=>{setImmediate(()=>{let $m$$=global.getModel($col$$.ref_collection);permission.getRightByItem($req$$.user.current_id_app,$m$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $callback$$({e:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$,code:$e$jscomp$0$$.code||ERRORS.ERR_NOT_PERMIT_CODE});if($admin$$)return $callback$$();
|
|
13
|
+
$_condition$$.id_app=$req$$.user.current_id_app;$req$$.condition[$col$$.ref_field]&&($_condition$$[$col$$.ref_field]=$req$$.condition[$col$$.ref_field]);$m$$.find($_condition$$,{[$col$$.ref_field]:1}).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return $callback$$($e$$);let $dsdt$$=underscore.pluck($rs$$,$col$$.ref_field);$dsdt$$.push("");$dsdt$$.push(null);$condition_assignwiths$$[$col$$.field]={$in:$dsdt$$};$callback$$()})})})},$col$$.ref_module)})},$e$$=>{setImmediate(()=>{if($e$$)return $callback$jscomp$0$$({error:$e$$.error||
|
|
14
|
+
$e$$.message||$e$$});if(0<Object.keys($condition_assignwiths$$).length){let $condition$$=$req$$.condition_assign||$req$$.condition;$condition$$.$and||($condition$$.$and=[]);let $$or$$=$condition$$.$and.find($a$$=>$a$$.$or);$$or$$?$$or$$.$or.push($condition_assignwiths$$):$condition$$.$and.push($condition_assignwiths$$)}$callback$jscomp$0$$()})})}else $callback$jscomp$0$$()})},function($callback$$){setImmediate(async()=>{if($shareRoute$$)return $callback$$();let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,
|
|
15
|
+
{action:"view"});permission.hasRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.module,"view",function($error$$,$permission$$){setImmediate(()=>{if($ctrl$$.options.onQuery)$req$$.permission=$permission$$,$ctrl$$.options.onQuery($req$$,$e$$=>{if($e$$)return $callback$$({error:$e$$.error||$e$$.message||$e$$});if(!$req$$.permission)return $req$$.result=[],$callback$$("0");$callback$$()});else{if(!$permission$$)return $req$$.result=[],$callback$$("0");$callback$$()}})},{notNeedRight:$notNeedRight$$})})},
|
|
16
|
+
function($callback$jscomp$0$$){setImmediate(async()=>{let $condition$jscomp$0$$=$req$$.condition;$condition$jscomp$0$$||($condition$jscomp$0$$={});if($shareRoute$$){$condition$jscomp$0$$.shared=!0;var $data_log_fields_fields$$=(await global.getModel("app").find({sale_online:!0},{_id:1}).lean()).map($a$$=>$a$$._id);$condition$jscomp$0$$.$and||($condition$jscomp$0$$.$and=[]);$condition$jscomp$0$$.$and.push({id_app:{$in:$data_log_fields_fields$$}});$condition$jscomp$0$$.id_app&&$condition$jscomp$0$$.$and.push({id_app:$condition$jscomp$0$$.id_app})}else underscore.has($model$$.schema.paths,
|
|
17
17
|
"id_app")&&!1!==$ctrl$$.require_id_app&&($condition$jscomp$0$$.id_app=$req$$.user.current_id_app);"public"===$req$$.user.email&&underscore.has($model$$.schema.paths,"session_created")&&($condition$jscomp$0$$.session_created=($req$$.cookies||{}).uid);underscore.extend($condition$jscomp$0$$,$ctrl$$.keyValues);deleteEmptyArray($condition$jscomp$0$$,"$and");deleteEmptyArray($condition$jscomp$0$$,"$or");deleteEmptyArray($condition$jscomp$0$$,"$nor");underscore.has($model$$.schema.paths,"ma_ct")&&$ctrl$$.options.isVoucher&&
|
|
18
18
|
($condition$jscomp$0$$.ma_ct=$ctrl$$.name.toUpperCase());let $condition_group$$;$req$$.fetch_by_groups&&$req$$.fetch_by_groups.model_group&&$req$$.fetch_by_groups.field&&($condition_group$$=$req$$.fetch_by_groups.condition||{},$condition_group$$.status=!0,$condition_group$$.id_app=$req$$.user.current_id_app,$condition$jscomp$0$$[$req$$.fetch_by_groups.field]&&($condition_group$$[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]=$condition$jscomp$0$$[$req$$.fetch_by_groups.field]));if($req$$.query.count){let $groups_number$$=
|
|
19
19
|
0;$condition_group$$&&($groups_number$$=await global.getModel($req$$.fetch_by_groups.model_group).countDocuments($condition_group$$));$condition$jscomp$0$$.$where?(console.log("phai loai bo $where trong condition"),$model$$.count($condition$jscomp$0$$,function($e$$,$data$$){if($e$$)return console.error("count",$e$$),$e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$});$req$$.result={rows_number:$data$$,groups_number:$groups_number$$};$callback$jscomp$0$$("0")})):
|
|
@@ -11,4 +11,5 @@ $row$$[$column$$]});for(let $i$$=0;$i$$<$data_new$$.length;$i$$++){let $m$$=$dat
|
|
|
11
11
|
$_first$$[0])}setImmediate(()=>{global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTEXCEL",data:{data:$data$$,columns:$columns$$}},$req$$.user.email,$req$$.user_agent,$req$$)});let $values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){console.error("parse value",$e$$)}$values$$&&$data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}global.importDataMainPool?global.importDataMainPool.exec({user:$req$$.user,
|
|
12
12
|
id_app:$req$$.user.current_id_app,module:$name$$.toUpperCase(),data:$data$$,configs:JSON.stringify(configs),replace:!0===$req$$.query.update||"true"==$req$$.query.update},$response$$=>{setImmediate(()=>{if($response$$.error)return $callback$$({error:$response$$.error,message:$response$$.message||$response$$.error});if(0===$response$$.result.rows_error.length)$req$$.result=$response$$.result,$callback$$();else{let $message$$=[...(new Set($response$$.result.rows_error.map($r$$=>[...(new Set($r$$.error.map($r$$=>
|
|
13
13
|
$r$$.error||$r$$)))].join(", "))))].join(", ");return $callback$$({error:$response$$.result,message:$message$$})}})}):$ctrl$$.import($req$$.user,$req$$.user.current_id_app,$data$$,($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return console.error("import",$e$$),$e$$.error?($e$$.message=$e$$.message||$e$$.error,$callback$$($e$$)):$callback$$({error:$e$$.message||$e$$,message:$e$$.message||$e$$});if(0===$rs$$.rows_error.length)$req$$.result=$rs$$,$callback$$();else{let $message$$=[...(new Set($rs$$.rows_error.map($r$jscomp$0$$=>
|
|
14
|
-
[...(new Set($r$jscomp$0$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");$callback$$({message:$message$$,error:$rs$$.error||$rs$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})}],$e$$=>{if($e$$)return
|
|
14
|
+
[...(new Set($r$jscomp$0$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");$callback$$({message:$message$$,error:$rs$$.error||$rs$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})}],$e$$=>{if($e$$)return global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",$e$$.message||$e$$.error||$e$$,null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0),$mainCallback$$($e$$);
|
|
15
|
+
global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong","Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong",null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0)})};module.exports=importFromExcel;
|
|
@@ -6,5 +6,6 @@ range:$range$$});if(0==$response$$.data.values.length)return $callback$$({error:
|
|
|
6
6
|
{let $n_row$$={};$columns$$.forEach(($c$$,$index$$)=>{$n_row$$[$c$$]=$row$$[$index$$]});return $n_row$$});$req$$.data=$data$$;$callback$$()}catch($e$$){return $error$$=(($e$$.response||{}).data||{}).error||$e$$,$credentials$$&&403==$error$$.code?$callback$$({error:`Kh\u00f4ng th\u1ec3 truy c\u1eadp v\u00e0o google sheet. H\u00e3y ph\u00e2n quy\u1ec1n cho t\u00e0i kho\u1ea3n ${$credentials$$.client_email} c\u00f3 quy\u1ec1n \u0111\u1ecdc google sheet tr\u00ean`}):$callback$$($error$$)}})},function($callback$$){let $data$$=
|
|
7
7
|
$req$$.data;if($ctrl$$.options.onImport)$ctrl$$.options.onImport($req$$.user,$data$$,[],function($e$$,$new_data$$){setImmediate(()=>{if($e$$)return console.error("onImport from json:",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.data=$new_data$$||$data$$;$callback$$()})});else $req$$.data=$data$$,$callback$$()},function($callback$$){let $data$$=$req$$.data;setImmediate(()=>{global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTJSON",
|
|
8
8
|
data:{data:$data$$}},$req$$.user.email,$req$$.user_agent,$req$$)});let $values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){console.error("importFromJson",$e$$)}$values$$&&$data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}$ctrl$$.import($req$$.user,$req$$.user.current_id_app,$data$$,($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return console.error("import from json",$ctrl$$.name,$data$$.length,"rows with error:",$e$$),$e$$.error?
|
|
9
|
-
($e$$.message=$e$$.message||$e$$.error,$callback$$($e$$)):$callback$$({error:$e$$.error||$e$$.message||$e$$,message:$e$$.message||$e$$.error});if(0===$rs$$.rows_error.length)$req$$.result=$rs$$,$callback$$();else{let $message$$=[...(new Set($rs$$.rows_error.map($r$$=>[...(new Set($r$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");$callback$$({error:$rs$$.error||$rs$$,message:$message$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})}],$e$$=>{if($e$$)return
|
|
10
|
-
$mainCallback$$(null,$req$$.
|
|
9
|
+
($e$$.message=$e$$.message||$e$$.error,$callback$$($e$$)):$callback$$({error:$e$$.error||$e$$.message||$e$$,message:$e$$.message||$e$$.error});if(0===$rs$$.rows_error.length)$req$$.result=$rs$$,$callback$$();else{let $message$$=[...(new Set($rs$$.rows_error.map($r$$=>[...(new Set($r$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");$callback$$({error:$rs$$.error||$rs$$,message:$message$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})}],$e$$=>{if($e$$)return global.getModel("notification").createNotification($req$$.user.email,
|
|
10
|
+
$req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",$e$$.message||$e$$.error||$e$$,null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0),$mainCallback$$($e$$);global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong","Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong",null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0)})};
|
|
11
|
+
module.exports=importFromGs;
|
|
@@ -3,4 +3,5 @@ $callback$$()}catch($e$$){return console.error("importFromJson",$e$$),$callback$
|
|
|
3
3
|
$e$$})}$callback$$()}else return $callback$$({error:"Kh\u00f4ng t\u00ecm th\u1ea5y d\u1eef li\u1ec7u c\u1ea7n import"})},function($callback$$){let $data$$=$req$$.data;if($ctrl$$.options.onImport)$ctrl$$.options.onImport($req$$.user,$data$$,[],function($e$$,$new_data$$){setImmediate(()=>{if($e$$)return console.error("onImport from json:",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.data=$new_data$$||$data$$;$callback$$()})});else $req$$.data=$data$$,$callback$$()},
|
|
4
4
|
function($callback$$){let $data$$=$req$$.data;setImmediate(()=>{global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTJSON",data:{data:$data$$}},$req$$.user.email,$req$$.user_agent,$req$$)});let $values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){console.error("importFromJson",$e$$)}$values$$&&$data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}$ctrl$$.import($req$$.user,$req$$.user.current_id_app,
|
|
5
5
|
$data$$,($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return console.error("import from json",$ctrl$$.name,$data$$.length,"rows with error:",$e$$),$e$$.error?($e$$.message=$e$$.message||$e$$.error,$callback$$($e$$)):$callback$$({error:$e$$.error||$e$$.message||$e$$,message:$e$$.message||$e$$.error});if(0===$rs$$.rows_error.length)$req$$.result=$rs$$,$callback$$();else{let $message$$=[...(new Set($rs$$.rows_error.map($r$$=>[...(new Set($r$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");
|
|
6
|
-
$callback$$({error:$rs$$.error||$rs$$,message:$message$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})}],$e$$=>{if($e$$)return $mainCallback$$($e$$)
|
|
6
|
+
$callback$$({error:$rs$$.error||$rs$$,message:$message$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})}],$e$$=>{if($e$$)return global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",$e$$.message||$e$$.error||$e$$,null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0),$mainCallback$$($e$$);global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,
|
|
7
|
+
"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong","Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong",null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0);$mainCallback$$(null,$req$$.result)})};module.exports=importFromJSON;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
'use strict';const async=require("async"),underscore=require("underscore"),_=require("lodash"),{JSONParser}=require("../libs/utils"),
|
|
1
|
+
'use strict';const async=require("async"),underscore=require("underscore"),_=require("lodash"),{JSONParser}=require("../libs/utils"),createHandler=require("./createHandler"),create=async($user$$,$ctrl$$,$data$$,$callback$$,$id_be_supply_by_user$$,$req$$,$action$$="add")=>{$req$$=$req$$||{};$req$$.user=$user$$;$req$$.data=$data$$;$req$$.id_be_supply_by_user=$id_be_supply_by_user$$;$req$$.action=$action$$;return createHandler($ctrl$$,$req$$,$callback$$)},updateHandler=require("./updateHandler"),update=
|
|
2
|
+
async function($user$$,$ctrl$$,$id$$,$data$$,$callback$$,$action$$,$req$$,$_action$$="update"){$req$$=$req$$||{};$req$$.action=$action$$;$req$$._action=$_action$$;$req$$.user=$user$$;$req$$.id=$id$$;$req$$.data=$data$$;return updateHandler($ctrl$$,$req$$,$callback$$)};
|
|
2
3
|
async function importHandler($user$$,$ctrl$$,$id_app$$,$data$$,$callback_main$$,$options$$={replace:!0,req:null}){const $model$$=$ctrl$$.model;let $replace$$=$options$$.replace,$rows_error$$=[];var $custs_listInfo_tk_dt$$=global.getModel("listinfo");let $info$$=await $custs_listInfo_tk_dt$$.findOne({code:$ctrl$$.name.toLowerCase()}).lean(),$modelJoins$$=[];$info$$&&(await $custs_listInfo_tk_dt$$.updateModel($info$$,$ctrl$$.model),$modelJoins$$=($info$$.fields||[]).filter($f$$=>$f$$.ref_model&&"_id"==
|
|
3
4
|
$f$$.ref_field));$data$$=$data$$.filter($row$$=>{let $has_data$$=!1;for(let $key$$ in $row$$)if($row$$[$key$$]){$has_data$$=!0;break}return $has_data$$});$custs_listInfo_tk_dt$$=[];$model$$.schema.paths.ma_kh&&($custs_listInfo_tk_dt$$=$data$$.filter($r$$=>$r$$.ten_kh));$model$$.schema.paths.details&&($custs_listInfo_tk_dt$$=$custs_listInfo_tk_dt$$.concat($data$$.map($v$$=>$v$$.details||[]).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]).filter($r$$=>$r$$.ten_kh)));$custs_listInfo_tk_dt$$=$custs_listInfo_tk_dt$$.map($kh$$=>
|
|
4
5
|
{$kh$$.ma_kh||($kh$$.ma_kh=$kh$$.ten_kh.replace(/[^\w\s]/gi,"").split(" ").join("").toUpperCase());return{ma_kh:$kh$$.ma_kh,ten_kh:$kh$$.ten_kh,dia_chi:$kh$$.dia_chi||"",dien_thoai:$kh$$.dien_thoai||"",ma_so_thue:$kh$$.ma_so_thue||""}});$custs_listInfo_tk_dt$$=await $custs_listInfo_tk_dt$$.asyncGroupBy(["ma_kh","ten_kh","dia_chi","dien_thoai","ma_so_thue"],[]);for($dvts_kh$$ of $custs_listInfo_tk_dt$$)$dvts_kh$$.id_app=$id_app$$,$dvts_kh$$.user_created=$user$$.email,await global.getModel("customer").asyncCreateCustomer($dvts_kh$$);
|
|
@@ -7,6 +7,6 @@ function($e$jscomp$0$$,$condition$jscomp$0$$){setImmediate(()=>{if($e$jscomp$0$$
|
|
|
7
7
|
$condition$jscomp$0$$,$callback$$())})},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$$,function($e$$,$condition$$){if($e$$)return console.error("postAgain dynamicFinding",$e$$),$callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.condition=$condition$$;$callback$$()},{req:$req$$}):($req$$.condition=$condition$$,$callback$$())})},function($callback$$){permission.isAdmin($req$$.user.current_id_app,$req$$.user.email,function($e$$,$admin$$){setImmediate(()=>
|
|
8
8
|
{if($e$$)return $callback$$({error:$e$$.error||$e$$,code:$e$$.code});if(!$admin$$)return $callback$$({error:"B\u1ea1n ph\u1ea3i c\u00f3 quy\u1ec1n admin \u0111\u1ec3 th\u1ef1c hi\u1ec7n t\u00ednh n\u0103ng n\u00e0y"});$callback$$()})})},function($callback$$){const $condition$$=$req$$.condition;underscore.has($model$$.schema.paths,"ma_ct")&&$ctrl$$.options.isVoucher&&($condition$$.ma_ct=$ctrl$$.name.toUpperCase());let $data_log$$={...$req$$.query};delete $data_log$$.access_token;$req$$.user&&"log"!==
|
|
9
9
|
$ctrl$$.name&&"labelinfo"!==$ctrl$$.name&&"listinfo"!==$ctrl$$.name&&"reportinfo"!==$ctrl$$.name&&"moduleinfo"!==$ctrl$$.name&&"options"!==$ctrl$$.name&&global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"POSTAGAIN",data:{condition:JSON.stringify($data_log$$)}},$req$$.user.email,$req$$.user_agent,$req$$);global.importDataMainPool?(console.log("Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang c\u1eadp nh\u1eadt l\u1ea1i s\u1ed5 s\u00e1ch tr\u00ean m\u1ed9t process kh\u00e1c"),
|
|
10
|
-
global.importDataMainPool.exec({user:$req$$.user,id_app:$req$$.user.current_id_app,module:$ctrl$$.name.toUpperCase(),condition:$condition$$,configs:JSON.stringify(configs),action:"POSTAGAIN"},$response$$=>{setImmediate(()=>{$response$$.error?(console.error("L\u1ed7i khi repost voucher",$response$$.error)
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
global.importDataMainPool.exec({user:$req$$.user,id_app:$req$$.user.current_id_app,module:$ctrl$$.name.toUpperCase(),condition:$condition$$,configs:JSON.stringify(configs),action:"POSTAGAIN"},$response$$=>{setImmediate(()=>{$response$$.error?(console.error("L\u1ed7i khi repost voucher",$response$$.error),$callback$$($response$$.error)):($req$$.result={message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 th\u1ef1c hi\u1ec7n xong"},$callback$$())})})):(console.log("Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang c\u1eadp nh\u1eadt l\u1ea1i s\u1ed5 s\u00e1ch tr\u00ean process ch\u00ednh"),
|
|
11
|
+
$ctrl$$.postAgainHandler($req$$.user,$condition$$,($e$$,$rs$$)=>{if($e$$)return $callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$rs$$;$callback$$()},{req:$req$$}))}],$e$$=>{if($e$$)return global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt l\u1ea1i s\u1ed5 s\u00e1ch",$e$$.message||$e$$.error||$e$$,null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0),$mainCallback$$($e$$);global.getModel("notification").createNotification($req$$.user.email,
|
|
12
|
+
$req$$.user.email,"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 c\u1eadp nh\u1eadt l\u1ea1i s\u1ed5 s\u00e1ch xong","Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 c\u1eadp nh\u1eadt l\u1ea1i s\u1ed5 s\u00e1ch xong",null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0);$mainCallback$$(null,$req$$.result)})};module.exports=updateBookHanlder;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
'use strict';const async=require("async"),underscore=require("underscore"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),_=require("lodash"),validate=require("../libs/validate"),permission=require("../libs/permission"),validator=require("../libs/validator"),{ERRORS,isExists,createIdRef,checkReference,fields_sync_master_detail,postData,pushNotification,runWebhooks,deletePost}=require("./controllerUtils"),update=async function($
|
|
2
|
-
$
|
|
3
|
-
(await global.getModel("options").findOne({id_app:$user$$.current_id_app,id_func:$ctrl$$.name}).lean()||{}).option;let $current_obj$$;if($ctrl$$.options.requireRecaptchaToken&&configs.GOOGLE_RECAPTCHA_SECRET_KEY){if(!$data$$["g-recaptcha-response"])return $callback$jscomp$1$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u g-recaptcha-response");try{await permission.verifyReCaptcha($data$$["g-recaptcha-response"])}catch($e$$){return $callback$jscomp$1$$($e$$.message
|
|
4
|
-
$ctrl$$.options.requireOtp;$requireOtp$$&&_.isFunction($requireOtp$$)&&($requireOtp$$=$requireOtp$$($data$$,{action:$_action$$,_id:$id$$,user:$user$$}));if($requireOtp$$&&"import"!==$_action$$)try{await permission.verifyOTP($user$$.email,$data$$["otp-id"],$data$$["otp-code"])}catch($e$$){return $callback$jscomp$1$$({error:$e$$.message||$e$$.error||$e$$,code:ERRORS.ERR_VERIFY_OTP})}async.waterfall([function($callback$$){setImmediate(function(){$model$$.findOne({_id:$id$$}).exec(function($error
|
|
5
|
-
{if($error$$)return $callback$$($error$$);if(!$obj$$)return $callback$$("Kh\u00f4ng th\u1ec3 t\u00ecm th\u1ea5y \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y");$data$$.trang_thai&&($data$$.trang_thai=$data$$.trang_thai.toString());if($data$$.trang_thai||$obj$$.trang_thai){var $old_obj_q_approve$$={id_ct:$obj$$._id.toString(),user_approved:{$exists:!0}};$old_obj_q_approve$$.trang_thai=($data$$.trang_thai||$obj$$.trang_thai||"").toString();if(await global.getModel("approve").findOne($old_obj_q_approve$$))return $callback$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt ch\u1ee9ng t\u1eeb \u1edf tr\u1ea1ng th\u00e1i n\u00e0y do n\u00f3 \u0111\u00e3 \u0111\u01b0\u1ee3c duy\u1ec7t")}if($obj$$.ngay_ct&&
|
|
1
|
+
'use strict';const async=require("async"),underscore=require("underscore"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),_=require("lodash"),validate=require("../libs/validate"),permission=require("../libs/permission"),validator=require("../libs/validator"),{ERRORS,isExists,createIdRef,checkReference,fields_sync_master_detail,postData,pushNotification,runWebhooks,deletePost}=require("./controllerUtils"),update=async function($ctrl$$,$req$$,
|
|
2
|
+
$callback$jscomp$1$$){let {user:$user$$,id:$id$$,data:$data$$,action:$action$$,_action:$_action$$}=$req$$;$_action$$||($_action$$="update");delete $data$$.__v;try{const $model$$=$ctrl$$.model,$unique$$=$ctrl$$.unique,$module$$=$ctrl$$.module,$schema_paths$$=$model$$.schema.paths;underscore.has($schema_paths$$,"ma_ct")&&$ctrl$$.options.isVoucher&&($data$$.ma_ct=$ctrl$$.name.toUpperCase());delete $data$$.session_updated;delete $data$$.session_created;$req$$&&underscore.has($schema_paths$$,"session_updated")&&
|
|
3
|
+
($data$$.session_updated=($req$$.cookies||{}).uid);const $voucher_options$$=(await global.getModel("options").findOne({id_app:$user$$.current_id_app,id_func:$ctrl$$.name}).lean()||{}).option;let $current_obj$$;if($ctrl$$.options.requireRecaptchaToken&&configs.GOOGLE_RECAPTCHA_SECRET_KEY){if(!$data$$["g-recaptcha-response"])return $callback$jscomp$1$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u g-recaptcha-response");try{await permission.verifyReCaptcha($data$$["g-recaptcha-response"])}catch($e$$){return $callback$jscomp$1$$($e$$.message||
|
|
4
|
+
$e$$.error||$e$$)}}let $requireOtp$$=$ctrl$$.options.requireOtp;$requireOtp$$&&_.isFunction($requireOtp$$)&&($requireOtp$$=$requireOtp$$($data$$,{action:$_action$$,_id:$id$$,user:$user$$}));if($requireOtp$$&&"import"!==$_action$$)try{await permission.verifyOTP($user$$.email,$data$$["otp-id"],$data$$["otp-code"])}catch($e$$){return $callback$jscomp$1$$({error:$e$$.message||$e$$.error||$e$$,code:ERRORS.ERR_VERIFY_OTP})}async.waterfall([function($callback$$){setImmediate(function(){$model$$.findOne({_id:$id$$}).exec(function($error$$,
|
|
5
|
+
$obj$$){setImmediate(async()=>{if($error$$)return $callback$$($error$$);if(!$obj$$)return $callback$$("Kh\u00f4ng th\u1ec3 t\u00ecm th\u1ea5y \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y");$data$$.trang_thai&&($data$$.trang_thai=$data$$.trang_thai.toString());if($data$$.trang_thai||$obj$$.trang_thai){var $old_obj_q_approve$$={id_ct:$obj$$._id.toString(),user_approved:{$exists:!0}};$old_obj_q_approve$$.trang_thai=($data$$.trang_thai||$obj$$.trang_thai||"").toString();if(await global.getModel("approve").findOne($old_obj_q_approve$$))return $callback$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt ch\u1ee9ng t\u1eeb \u1edf tr\u1ea1ng th\u00e1i n\u00e0y do n\u00f3 \u0111\u00e3 \u0111\u01b0\u1ee3c duy\u1ec7t")}if($obj$$.ngay_ct&&
|
|
6
6
|
$obj$$.id_app&&$obj$$.schema&&$obj$$.schema.validate&&$obj$$.schema.validate.ngay_ct)try{await new Promise(($rs$$,$rj$$)=>{validator.unlockBook[0]($obj$$.id_app,$obj$$.ngay_ct,$unlock$$=>{if(!$unlock$$)return $rj$$(validator.unlockBook[1]);$rs$$($unlock$$)},$voucher_options$$)})}catch($e$$){return $callback$$($e$$.message||$e$$.error||$e$$)}underscore.has($schema_paths$$,"exfields")&&($obj$$.exfields=$obj$$.exfields||{});$old_obj_q_approve$$=$obj$$.toObject();$current_obj$$=_.cloneDeep($old_obj_q_approve$$);
|
|
7
7
|
const $data_keys$$=Object.keys($data$$);for(let $key$$ in $old_obj_q_approve$$)0>$data_keys$$.indexOf($key$$)&&($data$$[$key$$]=$old_obj_q_approve$$[$key$$]);$callback$$(null,$obj$$)})})})},function($obj$$,$callback$jscomp$0$$){setImmediate(async function(){let $notNeedRight$$=await $ctrl$$.notNeedRight($user$$,{action:$_action$$,data:$data$$,obj:$current_obj$$});async.series({old_data:$callback$$=>{permission.hasRight($user$$.current_id_app,$user$$.email,$module$$,$_action$$,function($error$$,$hr$$,
|
|
8
8
|
$c_app$$){setImmediate(()=>{if($hr$$)$ctrl$$.checkData($c_app$$,{...$data$$,_id:$obj$$._id.toString()},$e$$=>{if($e$$)return $callback$$($e$$);$callback$$(null,$obj$$)});else return $callback$$({error:$error$$.error||$error$$||ERRORS.ERR_NOT_PERMIT,code:$error$$.code||ERRORS.ERR_NOT_PERMIT_CODE})})},{obj:$current_obj$$,notNeedRight:$notNeedRight$$})},new_data:$callback$$=>{permission.hasRight($user$$.current_id_app,$user$$.email,$module$$,$_action$$,function($error$$,$hr$$,$c_app$$){setImmediate(()=>
|
package/server/libs/docs.js
CHANGED
|
@@ -259,6 +259,50 @@ $code$$=$code$$.route_name;$id_app$$&&($code$$=$code$$.replace(":id_app",$id_app
|
|
|
259
259
|
</ul>
|
|
260
260
|
</li>
|
|
261
261
|
</ul>
|
|
262
|
+
`);1!=$listinfo$$.not_delete&&$listinfo$$.fields&&0<$listinfo$$.fields.length&&($doc$$=`${$doc$$}
|
|
263
|
+
<h3>Xo\u00e1 d\u1eef li\u1ec7u theo \u0111i\u1ec1u ki\u1ec7n l\u1ecdc</h3>
|
|
264
|
+
<ul>
|
|
265
|
+
<li>
|
|
266
|
+
Url: <span style='font-weight:450;background-color:#ddd;padding:5px;border-radius:3px;border:1px solid silver;'>${$server_url$$||""}/api${$code$$}/action/delete</span>
|
|
267
|
+
<ul style='margin-top:5px'>
|
|
268
|
+
${0<=$code$$.indexOf("id_app")?"<li>id_app: id c\u1ee7a c\u00f4ng ty \u0111ang thao t\u00e1c</li>":""}
|
|
269
|
+
</ul>
|
|
270
|
+
</li>
|
|
271
|
+
<li>
|
|
272
|
+
Method: <span style='font-weight:450'>DELETE</span>
|
|
273
|
+
</li>
|
|
274
|
+
<li>
|
|
275
|
+
Body (row json):
|
|
276
|
+
<ul>
|
|
277
|
+
<li>
|
|
278
|
+
<div>
|
|
279
|
+
<div>
|
|
280
|
+
q: <b>Json</b>. \u0110i\u1ec1u ki\u1ec7n xo\u00e1 d\u1eef li\u1ec7u. s\u1eed d\u1ee5ng mongodb query. Danh s\u00e1ch c\u00e1c tr\u01b0\u1eddng d\u1eef li\u1ec7u c\u00f3 th\u1ec3 query
|
|
281
|
+
</div>
|
|
282
|
+
<table style='margin-top:10px'>
|
|
283
|
+
<tr>
|
|
284
|
+
<th>T\u00ean tr\u01b0\u1eddng</th>
|
|
285
|
+
<th>Ki\u1ec3u d\u1eef li\u1ec7u</th>
|
|
286
|
+
<th>Di\u1ec5n gi\u1ea3i</th>
|
|
287
|
+
</tr>
|
|
288
|
+
${$listinfo$$.fields.filter($f$$=>"true"!=$f$$.not_input&&1!=$f$$.not_input&&0>($f$$.grid_configs||"").indexOf("readOnly")&&"Button"!=$f$$.type&&"Link"!=$f$$.type&&types.find($t$$=>$t$$.code==$f$$.type)).map($field$$=>{let $type$$=types.find($t$$=>$t$$.code==$field$$.type);return`<tr>
|
|
289
|
+
<td>${$field$$.name}</td>
|
|
290
|
+
<td>${$type$$.type_data||$type$$.code}</td>
|
|
291
|
+
<td>${$field$$.api_description||$field$$.header}</td>
|
|
292
|
+
</tr>
|
|
293
|
+
`}).join("")}
|
|
294
|
+
</table>
|
|
295
|
+
</div>
|
|
296
|
+
</li>
|
|
297
|
+
</ul>
|
|
298
|
+
</li>
|
|
299
|
+
<li>
|
|
300
|
+
Headers:
|
|
301
|
+
<ul>
|
|
302
|
+
<li>access-token: <a href=${`${$server_url$$}/api-docs-auth`}>Token</a> \u0111\u1ec3 truy c\u1eadp h\u1ec7 th\u1ed1ng.</li>
|
|
303
|
+
</ul>
|
|
304
|
+
</li>
|
|
305
|
+
</ul>
|
|
262
306
|
`);return`<!DOCTYPE html>
|
|
263
307
|
<html>
|
|
264
308
|
<head>
|
package/server/route.js
CHANGED
|
@@ -50,7 +50,7 @@ $data$jscomp$3_req$$={code:$app$jscomp$3_id_app$$.zalo_code,app_id:$app$jscomp$3
|
|
|
50
50
|
$message_zalo_token$$.expires_in;$app$jscomp$3_id_app$$.zalo_updated=new Date}catch($e$$){return $message_zalo_token$$=(($e$$.response||{}).data||{}).message,console.error("Can't get access token from zalo",$message_zalo_token$$||$e$$),$res$$.status(400).send({error:$message_zalo_token$$||$e$$.message||$e$$})}}else return $res$$.status(400).send({error:"Ch\u01b0a khai b\u00e1o th\u00f4ng tin zalo app id v\u00e0 secret key cho c\u00f4ng ty n\u00e0y"});await $app$jscomp$3_id_app$$.save();$res$$.send({ok:!0})});
|
|
51
51
|
$app$$.get("/api-docs-auth",$createRateLimiterMiddleware_limiter_others$$,async function($document_req$$,$res$$){$document_req$$=await docs.apiAuth();return $res$$.send($document_req$$)});$app$$.get("/api-docs-fields/:code",$createRateLimiterMiddleware_limiter_others$$,async function($document$jscomp$1_req$$,$res$$){$document$jscomp$1_req$$=await docs.apiFields($document$jscomp$1_req$$.params.code,$document$jscomp$1_req$$.query.id_app,$document$jscomp$1_req$$.query.import_yn);return $res$$.send($document$jscomp$1_req$$)});
|
|
52
52
|
$app$$.get("/api-docs-input/:code",$createRateLimiterMiddleware_limiter_others$$,async function($document$jscomp$2_req$$,$res$$){$document$jscomp$2_req$$=await docs.apiDocs($document$jscomp$2_req$$.params.code,$document$jscomp$2_req$$.query.id_app);return $res$$.send($document$jscomp$2_req$$)});$app$$.get("/api-docs-report/:code",$createRateLimiterMiddleware_limiter_others$$,async function($document$jscomp$3_req$$,$res$$){$document$jscomp$3_req$$=await docs.apiReport($document$jscomp$3_req$$.params.code,
|
|
53
|
-
$document$jscomp$3_req$$.query.id_app);return $res$$.send($document$jscomp$3_req$$)});if(configs.has_api_barcode){const $qr$$=require("qr-image");$app$$.get("/qrcode",$createRateLimiterMiddleware_limiter_others$$,function($req$$,$res$$){let $report$$=$req$$.query.report,$type$$=$req$$.query.type||"svg",$size$$=5;if($req$$.query.size)try{$size$$=Number($req$$.query.size),isNaN($size$$)&&
|
|
54
|
-
$req$$.query.data)&&($report$$=Buffer.from($report$$,"base64").toString("utf8"));if(!$report$$)return $res$$.status(400).send("miss parameter 'report'");setImmediate(()=>{const $code$$=$qr$$.image($report$$,{type:$type$$,size:$size$$});$res$$.type($type$$);$code$$.pipe($res$$)})});const $bwipjs$$=require("bwip-js"),$stream$$=require("stream");$app$$.get("/barcode",$createRateLimiterMiddleware_limiter_others$$,
|
|
55
|
-
$height_req$$=Number($height_req$$.query.height||10);if(!$data$$)return $res$$.status(400).send({error:"Thi\u1ebfu c\u00e1c tham s\u1ed1 data"});$bwipjs$$.toBuffer({bcid:$code$$,text:$data$$,scale:3,height:$height_req$$,includetext:!0,textxalign:"center"},function($bufferStream_e$$,$png$$){$bufferStream_e$$?(console.error($bufferStream_e$$,$code$$,$data$$),$res$$.status(400).send({error:$bufferStream_e$$.message
|
|
56
|
-
$bufferStream_e$$.end($png$$),$bufferStream_e$$.pipe($res$$))})})}}$cb$$()};
|
|
53
|
+
$document$jscomp$3_req$$.query.id_app);return $res$$.send($document$jscomp$3_req$$)});({setupBullBoard:$limiter$jscomp$2_limiter$$}=require("./controllers/QueueManager"));$limiter$jscomp$2_limiter$$($app$$);if(configs.has_api_barcode){const $qr$$=require("qr-image");$app$$.get("/qrcode",$createRateLimiterMiddleware_limiter_others$$,function($req$$,$res$$){let $report$$=$req$$.query.report,$type$$=$req$$.query.type||"svg",$size$$=5;if($req$$.query.size)try{$size$$=Number($req$$.query.size),isNaN($size$$)&&
|
|
54
|
+
($size$$=void 0)}catch($e$$){console.error("size qrcode is not valid",$e$$)}else $size$$=5;$report$$||($report$$=$req$$.query.data)&&($report$$=Buffer.from($report$$,"base64").toString("utf8"));if(!$report$$)return $res$$.status(400).send("miss parameter 'report'");setImmediate(()=>{const $code$$=$qr$$.image($report$$,{type:$type$$,size:$size$$});$res$$.type($type$$);$code$$.pipe($res$$)})});const $bwipjs$$=require("bwip-js"),$stream$$=require("stream");$app$$.get("/barcode",$createRateLimiterMiddleware_limiter_others$$,
|
|
55
|
+
function($height_req$$,$res$$){let $code$$=$height_req$$.query.code||"code128",$data$$=$height_req$$.query.data;$height_req$$=Number($height_req$$.query.height||10);if(!$data$$)return $res$$.status(400).send({error:"Thi\u1ebfu c\u00e1c tham s\u1ed1 data"});$bwipjs$$.toBuffer({bcid:$code$$,text:$data$$,scale:3,height:$height_req$$,includetext:!0,textxalign:"center"},function($bufferStream_e$$,$png$$){$bufferStream_e$$?(console.error($bufferStream_e$$,$code$$,$data$$),$res$$.status(400).send({error:$bufferStream_e$$.message||
|
|
56
|
+
$bufferStream_e$$.error||$bufferStream_e$$})):($bufferStream_e$$=new $stream$$.PassThrough,$bufferStream_e$$.end($png$$),$bufferStream_e$$.pipe($res$$))})})}}$cb$$()};
|