flexbiz-server 12.3.15 → 12.3.16
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
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.16",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Van Truong Pham",
|
|
8
8
|
"email": "invncur@gmail.com"
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"axios": "^0.20.0",
|
|
22
22
|
"body-parser": "^1.19.0",
|
|
23
23
|
"brorand": "^1.1.0",
|
|
24
|
-
"
|
|
24
|
+
"bullmq": "^5.42.0",
|
|
25
25
|
"bwip-js": "^3.1.0",
|
|
26
26
|
"cheerio": "^1.0.0-rc.10",
|
|
27
27
|
"compression": "^1.7.4",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
'use strict';const EventEmitter=require("events").EventEmitter,underscore=require("underscore"),_=require("lodash"),Queue=require("
|
|
2
|
-
link=global.getModel("link"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),templatevoucher=global.getModel("templatevoucher"),{evalute,JSONParser}=require("../libs/utils"),redisCache=require("../libs/redis-cache"),dmqddvt=global.getModel("dmqddvt"),StaticPool=require("../libs/WorkerStaticPool"),validator=require("../libs/validator"),{bodyToJson,ERRORS,getNextSequence,postData,pushNotification,runWebhooks,deletePost}=
|
|
3
|
-
create=require("./createHandler"),update=require("./updateHandler"),importHandler=require("./importHandler"),viewHandler=require("./viewHandler"),findHandler=require("./findHandler"),exportHandler=require("./exportHandler");
|
|
1
|
+
'use strict';const EventEmitter=require("events").EventEmitter,underscore=require("underscore"),_=require("lodash"),{Queue,QueueEvents}=require("bullmq"),ckvt=require("../libs/ckvt"),OptionsModel=global.getModel("options"),Approve=global.getModel("approve"),log=global.getModel("log"),trangthai=global.getModel("trangthai"),Participant=global.getModel("participant"),async=require("async"),excel=require("../libs/excel"),permission=require("../libs/permission"),utils=require("../libs/utils"),fs=require("fs"),
|
|
2
|
+
path=require("path"),link=global.getModel("link"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),templatevoucher=global.getModel("templatevoucher"),{evalute,JSONParser}=require("../libs/utils"),redisCache=require("../libs/redis-cache"),dmqddvt=global.getModel("dmqddvt"),StaticPool=require("../libs/WorkerStaticPool"),validator=require("../libs/validator"),{bodyToJson,ERRORS,getNextSequence,postData,pushNotification,runWebhooks,deletePost}=
|
|
3
|
+
require("./controllerUtils"),create=require("./createHandler"),update=require("./updateHandler"),importHandler=require("./importHandler"),viewHandler=require("./viewHandler"),findHandler=require("./findHandler"),exportHandler=require("./exportHandler");
|
|
4
4
|
class controller{constructor($router$$,$model$$,$name$$,$options$jscomp$0$$={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()]=
|
|
5
5
|
this;$options$jscomp$0$$.findExact||($options$jscomp$0$$.findExact={});this.keyValues=$options$jscomp$0$$.keyValues;this.keyValues||(this.keyValues={});void 0===$options$jscomp$0$$.require_id_app||!0===$options$jscomp$0$$.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$jscomp$0$$.collection_name?$options$jscomp$0$$.collection_name:$name$$;this.sort=$options$jscomp$0$$.sort;this.unique=
|
|
6
6
|
$options$jscomp$0$$.unique;this.getting=$options$jscomp$0$$.onGetting;this.finding=$options$jscomp$0$$.onFinding;this.found=$options$jscomp$0$$.onFound;this.validating=$options$jscomp$0$$.onValidating;this.saving=$options$jscomp$0$$.onSaving;this.creating=$options$jscomp$0$$.onCreating;this.created=$options$jscomp$0$$.onCreated;this.updating=$options$jscomp$0$$.onUpdating;this.updated=$options$jscomp$0$$.onUpdated;this.deleting=$options$jscomp$0$$.onDeleting;this.deleted=$options$jscomp$0$$.onDeleted;
|
|
7
7
|
this.approveData=$options$jscomp$0$$.approveData;this.view=$options$jscomp$0$$.onView;this.viewRequired=$options$jscomp$0$$.onViewRequired;this.cache=$options$jscomp$0$$.cache;this.asyncView=async($user$$,$items$$,$options$$)=>{const $self$$=this;return new Promise($resolve$$=>{$self$$.onView($user$$,$items$$,($error$$,$rs$$)=>{if($error$$)return console.error($error$$),$resolve$$($items$$);$resolve$$($rs$$)},$options$$)})};this.onView=async($user$$,$rows$$,$next$$,$options$$)=>{viewHandler($user$$,
|
|
8
|
-
this,$rows$$,$next$$,$options$$)};this.excelParse=$options$jscomp$0$$.onExcelParse;this.options=$options$jscomp$0$$;this.replaceIfExists=$options$jscomp$0$$.replaceIfExists;this.notNeedRight=async($user$$,$_options$$={})=>{let $nnr$$=$options$jscomp$0$$.notNeedRight;_.isFunction($nnr$$)&&($nnr$$=$nnr$$($user$$,$_options$$));return $nnr$$};const $ctrl$$=this;this.findQueue=new Queue("findQueue");this.findQueue.process(async $job$$=>{const {req:$req$$,
|
|
9
|
-
$reject$$)=>{findHandler($ctrl$$,$req$$,($e$$,$result$$,$dataType$$)=>{if($e$$)return $reject$$($e$$);$resolve$$({result:$result$$,dataType:$dataType$$})},$shareRoute$$)})})}getProperty($name$$){return this[$name$$]}getNextId(){let $ma_ct$$=this.name;this.router.route(`${this.route_name}/next/:field`).get(($field_req$$,$res$$)=>{let $id_app$$=$field_req$$.user.current_id_app;$field_req$$=$field_req$$.params.field;"so_ct"===$field_req
|
|
10
|
-
$ma_ct$$,$field_req$$,($e$$,$rs$$)=>{if($e$$)return console.error("getNextId",$e$$),$e$$.error?$res$$.status(400).send($e$$):$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$$=>
|
|
8
|
+
this,$rows$$,$next$$,$options$$)};this.excelParse=$options$jscomp$0$$.onExcelParse;this.options=$options$jscomp$0$$;this.replaceIfExists=$options$jscomp$0$$.replaceIfExists;this.notNeedRight=async($user$$,$_options$$={})=>{let $nnr$$=$options$jscomp$0$$.notNeedRight;_.isFunction($nnr$$)&&($nnr$$=$nnr$$($user$$,$_options$$));return $nnr$$};const $ctrl$$=this;this.findQueue=new Queue("findQueue");this.findQueueEvents=new QueueEvents("findQueue");this.findQueue.process(async $job$$=>{const {req:$req$$,
|
|
9
|
+
shareRoute:$shareRoute$$}=$job$$.data;return new Promise(($resolve$$,$reject$$)=>{findHandler($ctrl$$,$req$$,($e$$,$result$$,$dataType$$)=>{if($e$$)return $reject$$($e$$);$resolve$$({result:$result$$,dataType:$dataType$$})},$shareRoute$$)})})}getProperty($name$$){return this[$name$$]}getNextId(){let $ma_ct$$=this.name;this.router.route(`${this.route_name}/next/:field`).get(($field_req$$,$res$$)=>{let $id_app$$=$field_req$$.user.current_id_app;$field_req$$=$field_req$$.params.field;"so_ct"===$field_req$$?
|
|
10
|
+
$res$$.send({[$field_req$$]:$ma_ct$$}):getNextSequence($id_app$$,$ma_ct$$,$field_req$$,($e$$,$rs$$)=>{if($e$$)return console.error("getNextId",$e$$),$e$$.error?$res$$.status(400).send($e$$):$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$$=>
|
|
11
11
|
{$data$$.details&&$appInfo$$&&$appInfo$$.options&&$appInfo$$.options.khong_xuat_kho_am&&0!=$options$$.check_stock?(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||
|
|
12
12
|
0<($d$$.combo||[]).length);$details$$=$details$$.map($detail$$=>$detail$$.combo&&0<$detail$$.combo.length?$detail$$.combo.map($c$$=>{$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());
|
|
13
13
|
$details$$.forEach($d$$=>{$d$$.he_so_qd=$d$$.ty_le_qd||1;$d$$.sl_xuat_qd=$d$$.he_so_qd*$d$$.sl_xuat});$details$$=await $details$$.asyncGroupBy(["ma_vt","ma_kho","ten_vt"],["sl_xuat_qd"]);async.mapSeries($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&&
|
|
@@ -29,10 +29,12 @@ console.error("danh s\u00e1ch ng\u01b0\u1eddi duy\u1ec7t ph\u1ea3i l\u00e0 m\u1e
|
|
|
29
29
|
$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$$,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;
|
|
30
30
|
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$$)});
|
|
31
31
|
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)}})};
|
|
32
|
-
controller.prototype.find=function($_route_name_route_name$$,$shareRoute$$=!1,$method$$="GET"){let $ctrl$$=this;const $findRoute$$=($
|
|
33
|
-
{
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
controller.prototype.find=function($_route_name_route_name$$,$shareRoute$$=!1,$method$$="GET"){let $ctrl$$=this;const $findRoute$$=async($ip_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$}=$ip_req$$,$user_agent$$=$ip_req$$.header("user-agent");$ip_req$$=$ip_req$$.headers["x-forwarded-for"]||$ip_req$$.connection.remoteAddress;try{const $job$$=await this.findQueue.add({req:{query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip_req$$},
|
|
33
|
+
shareRoute:$shareRoute$$},{timeout:6E4});this.findQueueEvents.on("completed",({jobId:$jobId$$,returnvalue:$returnvalue$$})=>{if($jobId$$===$job$$.id){const {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$$)}});this.findQueueEvents.on("failed",({jobId:$jobId$$,failedReason:$failedReason$$})=>
|
|
34
|
+
{$jobId$$===$job$$.id&&$res$$.status(400).send($failedReason$$)})}catch($e$$){$res$$.status(400).send($e$$)}};$_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$$))};
|
|
35
|
+
controller.prototype.get=function($route_name$$,$shareRoute$$=!1){this.router.route(`${$route_name$$||this.route_name}/:id`).get(async function($req$$,$res$$){var $body$$=$req$$.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$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress,{query:$query$$,user:$user$$,
|
|
36
|
+
params:$params$$}=$req$$;try{const $job$$=await this.findQueue.add({req:{query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$},shareRoute:$shareRoute$$},{timeout:6E4});this.findQueueEvents.on("completed",({jobId:$jobId$jscomp$2_result$$,returnvalue:$returnvalue$$})=>{if($jobId$jscomp$2_result$$===$job$$.id){({result:$jobId$jscomp$2_result$$}=$returnvalue$$);if(0==$jobId$jscomp$2_result$$.length)return $res$$.status(404).send({error:ERRORS.ERR_NOT_FOUND,code:ERRORS.ERR_NOT_FOUND_CODE});
|
|
37
|
+
$res$$.send($jobId$jscomp$2_result$$[0])}});this.findQueueEvents.on("failed",({jobId:$jobId$$,failedReason:$failedReason$$})=>{$jobId$$===$job$$.id&&$res$$.status(400).send($failedReason$$)})}catch($e$$){console.error($e$$),$res$$.status(400).send($e$$)}})};
|
|
36
38
|
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$$,
|
|
37
39
|
$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
40
|
$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..."),
|
|
@@ -109,10 +111,10 @@ id_app:$req$$.user.current_id_app,module:$name$$.toUpperCase(),data:$data$$,conf
|
|
|
109
111
|
$e$$,message:$e$$.message||$e$$});if(0===$rs$$.rows_error.length)$res$$.send($rs$$);else{let $message$$=[...(new Set($rs$$.rows_error.map($r$jscomp$0$$=>[...(new Set($r$jscomp$0$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");$res$$.status(400).send({message:$message$$,error:$rs$$.error||$rs$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})})};
|
|
110
112
|
controller.prototype.create=function(){let $name$$=this.name,$ctrl$$=this;this.router.route(this.route_name).post(function($req$$,$res$$){let $session$$=$req$$.session;if(!0===$session$$["creating_"+$name$$])return $res$$.status(400).send({error:"\u0110ang x\u1eed l\u00fd d\u1eef li\u1ec7u"});$session$$["creating_"+$name$$]=!0;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&&
|
|
111
113
|
("JSON"!=$body$$.return&&($req$$.uploadFile=!0),underscore.extend($body$$,$req$$.files));create($req$$.user,$ctrl$$,$body$$,($e$$,$rs$$)=>{setImmediate(()=>{$session$$["creating_"+$name$$]=!1;if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});!1===$req$$.query.return_data?$res$$.send({_id:$rs$$._id.toString()}):$res$$.send($rs$$)})},null,$req$$)})};
|
|
112
|
-
controller.prototype.quickCreate=function(){let $model$$=this.model,$name$$=this.name,$ctrl$$=this,$createFromTemplate$$=async($req$$,$res$$,$body$jscomp$
|
|
113
|
-
!1,$res$$.status(400).send({error:"M\u1eabu d\u1eef li\u1ec7u kh\u00f4ng t\u1ed3n t\u1ea1i"});$body$jscomp$
|
|
114
|
-
{};delete $body$jscomp$
|
|
115
|
-
"token"!==$key$$&&"_id"!==$key$$&&(underscore.has($model$$.schema.paths,$key$$)&&($body$jscomp$
|
|
114
|
+
controller.prototype.quickCreate=function(){let $model$$=this.model,$name$$=this.name,$ctrl$$=this,$createFromTemplate$$=async($req$$,$res$$,$body$jscomp$3_query$$)=>{let $session$$=$req$$.session;if(!0===$session$$["creating_"+$name$$])return $res$$.status(400).send({error:"\u0110ang x\u1eed l\u00fd d\u1eef li\u1ec7u"});$session$$["creating_"+$name$$]=!0;if(!$body$jscomp$3_query$$){$body$jscomp$3_query$$=$req$$.params.template_code;if(!$body$jscomp$3_query$$)return $session$$["creating_"+$name$$]=
|
|
115
|
+
!1,$res$$.status(400).send({error:"M\u1eabu d\u1eef li\u1ec7u kh\u00f4ng t\u1ed3n t\u1ea1i"});$body$jscomp$3_query$$={id_app:$req$$.user.current_id_app,voucher_code:$name$$.toUpperCase(),code:$body$jscomp$3_query$$};$body$jscomp$3_query$$=await templatevoucher.findOne($body$jscomp$3_query$$).lean();if(!$body$jscomp$3_query$$)return $session$$["creating_"+$name$$]=!1,$res$$.status(400).send({error:"M\u1eabu d\u1eef li\u1ec7u kh\u00f4ng t\u1ed3n t\u1ea1i"})}$body$jscomp$3_query$$=$body$jscomp$3_query$$.data||
|
|
116
|
+
{};delete $body$jscomp$3_query$$.so_ct;delete $body$jscomp$3_query$$.ngay_ct;delete $body$jscomp$3_query$$.user_created;delete $body$jscomp$3_query$$.date_created;delete $body$jscomp$3_query$$.user_updated;delete $body$jscomp$3_query$$.date_updated;delete $body$jscomp$3_query$$._id;delete $body$jscomp$3_query$$.pkey;delete $body$jscomp$3_query$$.__v;let $_data$$=$req$$.query;$req$$.body&&($_data$$=Object.assign($_data$$,$req$$.body));for(let $key$$ in $_data$$)$_data$$[$key$$]&&"access_token"!==$key$$&&
|
|
117
|
+
"token"!==$key$$&&"_id"!==$key$$&&(underscore.has($model$$.schema.paths,$key$$)&&($body$jscomp$3_query$$[$key$$]=$_data$$[$key$$]),$body$jscomp$3_query$$.details&&$body$jscomp$3_query$$.details.forEach($d$$=>{$d$$[$key$$]=$_data$$[$key$$]}));create($req$$.user,$ctrl$$,$body$jscomp$3_query$$,($e$$,$rs$$)=>{setImmediate(()=>{$session$$["creating_"+$name$$]=!1;if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)})},
|
|
116
118
|
null,$req$$)};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$$)})};
|
|
117
119
|
controller.prototype.update=function(){let $ctrl$$=this,$name$$=this.name;this.router.route(this.route_name+"/:id").put(function($req$$,$res$$){let $session$$=$req$$.session;if(!0===$session$$["updating_"+$name$$])return $res$$.status(400).send({error:"\u0110ang x\u1eed l\u00fd d\u1eef li\u1ec7u"});$session$$["updating_"+$name$$]=!0;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||
|
|
118
120
|
$e$$.error||$e$$})}update($req$$.user,$ctrl$$,$req$$.params.id,$data$$,($e$$,$rs$$)=>{setImmediate(()=>{$session$$["updating_"+$name$$]=!1;if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});!1===$req$$.query.return_data?$res$$.send({_id:$rs$$._id.toString()}):$res$$.send($rs$$)})},null,$req$$)})};
|
|
@@ -12,7 +12,7 @@ else _.isObject($_condition$$)&&0<Object.keys($_condition$$).length&&$condition$
|
|
|
12
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$$();$_condition$$.id_app=$req$$.user.current_id_app;$req$$.condition[$col$$.ref_field]&&($_condition$$[$col$$.ref_field]=
|
|
13
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||$e$$.message||$e$$});if(0<Object.keys($condition_assignwiths$$).length){let $condition$$=
|
|
14
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,{action:"view"});permission.hasRight($req$$.user.current_id_app,$req$$.user.email,
|
|
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$$})})},
|
|
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$$})})},function($callback$jscomp$0$$){setImmediate(async()=>{let $condition$jscomp$0$$=
|
|
16
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,
|
|
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$$=
|
|
@@ -26,8 +26,8 @@ $query$$.group($group_sort$$));if($req$$.query.match){let $match$$=JSONParser($r
|
|
|
26
26
|
$query$$.append($aggregate$$)}}catch($e$$){return $callback$$({error:$e$$.message||$e$$.error||$e$$})}else underscore.has($model$$.schema.paths,"id_app")&&0<Object.keys($gfields$$).length&&Object.keys($gfields$$).find($k$$=>1==$gfields$$[$k$$])&&($gfields$$.id_app=1),$query$$=$model$$.find($condition$$,$gfields$$);var $group_sort$$=$req$$.sort;if($group_sort$$){$group_sort$$._id=1;for(var $key$jscomp$0$$ in $group_sort$$)if("textScore"!==$key$jscomp$0$$&&1!=$group_sort$$[$key$jscomp$0$$]&&-1!=$group_sort$$[$key$jscomp$0$$])return console.error("sort is valid",
|
|
27
27
|
$group_sort$$,$key$jscomp$0$$,$group_sort$$[$key$jscomp$0$$]),$callback$$({error:`Sort ${JSON.stringify($group_sort$$)} is not valid`})}else $gfields$$.textScore&&($group_sort$$={textScore:{$meta:"textScore"}});$group_sort$$&&$query$$.sort($group_sort$$);"xlsx"!==$req$$.query.type_data&&"json_export"!==$req$$.query.type_data&&"1"!=$req$$.query.rpt&&($limit$$&&($limit$$=Number($limit$$)),$limit$$||($limit$$=!1!==$ctrl$$.require_id_app&&"right"!==$ctrl$$.name&&"labelinfo"!==$ctrl$$.name?20:500),$limit$$&&
|
|
28
28
|
500<$limit$$&&!$req$$.query.print&&!1!==$ctrl$$.require_id_app&&"right"!==$ctrl$$.name&&"labelinfo"!==$ctrl$$.name&&($limit$$=500),$page$$?($key$jscomp$0$$=(Number($page$$)-1)*$limit$$,0>$key$jscomp$0$$&&($key$jscomp$0$$=0),$query$$.skip($key$jscomp$0$$).limit($limit$$)):$query$$.limit($limit$$));$query$$.lean&&($query$$=$query$$.lean());$query$$.exec(($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})})};$data_log_fields_fields$$=$req$$.query;delete $data_log_fields_fields$$.access_token;$req$$.user&&!$data_log_fields_fields$$.count&&
|
|
29
|
-
"log"!==$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:"QUERY",data:{condition:JSON.stringify($data_log_fields_fields$$)}},$req$$.user.email,$req$$.
|
|
30
|
-
|
|
29
|
+
"log"!==$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:"QUERY",data:{condition:JSON.stringify($data_log_fields_fields$$)}},$req$$.user.email,$req$$.user_agent,$req$$);let $condition_groups$$=[],$limit$$=Number($req$$.query.limit||20),$page_fetch$$=Number($req$$.query.page||0);isNaN($page_fetch$$)&&($page_fetch$$=
|
|
30
|
+
0);isNaN($limit$$)&&($limit$$=20);if($condition_group$$){let $field_ref$$=$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field;$data_log_fields_fields$$={[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]:1};let $limit_group$$=$req$$.fetch_by_groups.limit_group||10,$page$$=Number($req$$.query.page||0);isNaN($page$$)&&($page$$=0);let $skip$$=0;1<$page$$&&($skip$$=($page$$-1)*$limit_group$$);0>$skip$$&&($skip$$=0);(await global.getModel($req$$.fetch_by_groups.model_group).find($condition_group$$,
|
|
31
31
|
$data_log_fields_fields$$).sort({stt:1,[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]:1}).skip($skip$$).limit($limit_group$$).lean()).forEach($g$$=>{let $c$$={...$condition$jscomp$0$$};$c$$[$req$$.fetch_by_groups.field]=$g$$[$field_ref$$];$condition_groups$$.push($c$$)});0==$condition_groups$$.length?$condition_groups$$=[$condition$jscomp$0$$]:($page_fetch$$=0,$req$$.fetch_by_groups.limit&&($limit$$=Math.max(Number($req$$.fetch_by_groups.limit),Math.round($limit$$/$condition_groups$$.length))))}else $condition_groups$$=
|
|
32
32
|
[$condition$jscomp$0$$];async.map($condition_groups$$,($condition$$,$cb$$)=>{$fetchData$$($condition$$,$limit$$,$page_fetch$$,$cb$$)},($e$jscomp$0$$,$obj4views$$)=>{if($e$jscomp$0$$)return console.error("exec query find",$e$jscomp$0$$,JSON.stringify($condition$jscomp$0$$)),$callback$jscomp$0$$({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$});let $obj4view$$=$obj4views$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$obj4view$$||($obj4view$$=[]);async.series({found:function($callback$$){$ctrl$$.found?
|
|
33
33
|
$ctrl$$.found($req$$.user,$condition$jscomp$0$$,$obj4view$$,function($error$$,$items$$){setImmediate(()=>{$callback$$($error$$,$items$$)})}):$callback$$(null,$obj4view$$)},set_collection_name:function($callback$$){$obj4view$$.forEach($obj$$=>{$obj$$.collection_name||($obj$$.collection_name=$ctrl$$.collection_name)});$callback$$(null)}},function($error$jscomp$0$$,$rs$jscomp$1$$){setImmediate(()=>{if($error$jscomp$0$$)return $callback$jscomp$0$$({error:$error$jscomp$0$$.error||$error$jscomp$0$$.message||
|
package/server/models/log.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
'use strict';const logSchema=new Schema({id_app:{type:String},id_func:{type:String},action:{type:String},description:{type:String},data:{},ip:{type:String},user_agent:{type:String},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});logSchema.index({id_app:1,id_func:1,action:1});logSchema.index({"data.id":1});logSchema.index({ip:1});logSchema.index({user_created:1});
|
|
2
2
|
logSchema.index({date_created:1});logSchema.index({id_func:"text",action:"text",user_created:"text",description:"text"});logSchema.index({status:1});logSchema.index({user_created:1,visible_to:1,visible_to_users:1});const Log=mongoose.models.log||mongoose.model("log",logSchema);
|
|
3
|
-
Log.create=function($
|
|
3
|
+
Log.create=function($ip_log$$,$user_created$$,$user_agent$$,$req$$){const $l$$=new Log;$l$$.id_app=$ip_log$$.id_app;$l$$.id_func=$ip_log$$.id_func;$l$$.action=$ip_log$$.action;$l$$.description=$ip_log$$.description;$l$$.data=$ip_log$$.data;$l$$.user_agent=$user_agent$$;$l$$.user_created=$user_created$$;$req$$&&($req$$.headers||$req$$.connection)&&(($ip_log$$=$req$$.ip)||($req$$.headers?$req$$.headers["x-forwarded-for"]:""),$ip_log$$||($ip_log$$=$req$$.connection?$req$$.connection.remoteAddress:""),
|
|
4
|
+
$l$$.ip=$ip_log$$);$l$$.save(function($error$$){$error$$&&console.log("Can't create log\n"+$error$$,$l$$)})};module.exports=Log;
|