flexbiz-server 12.0.20 → 12.0.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 +3 -3
- package/server/global.js +2 -2
- package/server/libs/blockchainconnect.js +30 -27
- package/server/models/approve.js +14 -14
- package/server/models/area.js +3 -3
- package/server/models/assbuy.js +2 -2
- package/server/models/asscashwithdraw.js +2 -2
- package/server/models/assinvestment.js +4 -4
- package/server/models/asskey.js +1 -1
- package/server/models/assneedtobuy.js +3 -3
- package/server/models/assperiod.js +4 -4
- package/server/models/assproduct.js +3 -3
- package/server/models/assprofitsharing.js +3 -3
- package/server/models/assreceiver.js +1 -1
- package/server/models/assrequest.js +3 -3
- package/server/models/asssell.js +4 -4
- package/server/models/asstransfer.js +4 -4
- package/server/models/asswithdraw.js +2 -2
- package/server/models/bangtinhluong.js +1 -1
- package/server/models/bg1.js +8 -8
- package/server/models/bg2.js +7 -7
- package/server/models/cart.js +4 -4
- package/server/models/cddiem.js +1 -1
- package/server/models/cddt.js +2 -2
- package/server/models/cdtk.js +2 -2
- package/server/models/cdvt.js +3 -3
- package/server/models/chamcong.js +2 -2
- package/server/models/checkin.js +3 -2
- package/server/models/dmdt.js +4 -4
- package/server/models/dmdvt.js +1 -1
- package/server/models/dmgiaban.js +5 -5
- package/server/models/dmgiamua.js +4 -4
- package/server/models/dmkho.js +4 -4
- package/server/models/dmkhuyenmai.js +3 -3
- package/server/models/dmkhuyenmaihd.js +2 -2
- package/server/models/dmlo.js +2 -2
- package/server/models/dmloaicong.js +1 -1
- package/server/models/dmloaitask.js +1 -1
- package/server/models/dmloaits.js +1 -1
- package/server/models/dmnghiepvu.js +2 -2
- package/server/models/dmnguonvon.js +1 -1
- package/server/models/dmnhnv.js +3 -3
- package/server/models/dmnv.js +3 -3
- package/server/models/dmphi.js +2 -2
- package/server/models/dmqct.js +3 -3
- package/server/models/dmqddvt.js +1 -1
- package/server/models/dmtanggiamts.js +1 -1
- package/server/models/dmto.js +3 -3
- package/server/models/dmtt.js +2 -2
- package/server/models/dmvt.js +6 -6
- package/server/models/dmyt.js +3 -3
- package/server/models/file.js +2 -2
- package/server/models/listinfo.js +43 -38
- package/server/models/moduleinfo.js +3 -3
- package/server/models/otp.js +1 -1
- package/server/models/pbl.js +11 -11
- package/server/models/pdn.js +8 -8
- package/server/models/pkk.js +2 -2
- package/server/models/pnc.js +8 -8
- package/server/models/pnk.js +6 -6
- package/server/models/po1.js +10 -10
- package/server/models/pxc.js +8 -8
- package/server/models/pxk.js +6 -6
- package/server/models/quanhuyen.js +1 -1
- package/server/models/reportinfo.js +4 -4
- package/server/models/right.js +2 -2
- package/server/models/rpt.js +1 -1
- package/server/models/rptobject.js +2 -2
- package/server/models/socai.js +8 -7
- package/server/models/socaitmp.js +11 -11
- package/server/models/sodiemthuong.js +2 -2
- package/server/models/sokho.js +9 -8
- package/server/models/sokhocapphat.js +9 -8
- package/server/models/sokhokhongton.js +9 -9
- package/server/models/sokhott.js +9 -8
- package/server/models/sophanbokh.js +3 -3
- package/server/models/sosanxuat.js +4 -4
- package/server/models/sotinhkh.js +1 -1
- package/server/models/tableinfo.js +3 -3
- package/server/models/templaterpt.js +1 -1
- package/server/models/templatestore.js +2 -2
- package/server/models/templatevoucher.js +1 -1
- package/server/models/tinhthanh.js +1 -1
- package/server/models/tokens.js +1 -1
- package/server/models/trangthai.js +2 -2
- package/server/models/usergroup.js +1 -1
- package/server/models/vat.js +2 -2
- package/server/models/xaphuong.js +1 -1
- package/server/modules/lists/ls-approve.js +1 -1
- package/server/modules/lists/ls-file.js +16 -14
- package/server/modules/lists/ls-participant.js +5 -4
- package/server/modules/reports/rp-assinterest.js +3 -2
- package/server/modules/reports/rp-thgt.js +2 -2
- package/server/modules/systems/sys-user.js +19 -16
- package/server/modules/vouchers/vo-pkk.js +4 -7
- package/server/route.js +3 -5
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.0.
|
|
5
|
+
"version": "12.0.23",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Van Truong Pham",
|
|
8
8
|
"email": "invncur@gmail.com"
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"async": "^3.2.0",
|
|
22
22
|
"axios": "^0.20.0",
|
|
23
23
|
"body-parser": "^1.19.0",
|
|
24
|
-
"
|
|
24
|
+
"bwip-js": "^3.1.0",
|
|
25
25
|
"cheerio": "^1.0.0-rc.10",
|
|
26
26
|
"compression": "^1.7.4",
|
|
27
27
|
"compression-webpack-plugin": "^3.0.0",
|
|
@@ -38,7 +38,6 @@
|
|
|
38
38
|
"fluent-ffmpeg": "^2.1.2",
|
|
39
39
|
"gm": "^1.23.1",
|
|
40
40
|
"google-translate": "^3.0.0",
|
|
41
|
-
"jsbarcode": "^3.11.5",
|
|
42
41
|
"jsonwebtoken": "^8.5.1",
|
|
43
42
|
"jspdf": "^2.1.1",
|
|
44
43
|
"jszip": "^3.1.5",
|
|
@@ -55,6 +54,7 @@
|
|
|
55
54
|
"multer": "0.1.8",
|
|
56
55
|
"natives": "^1.1.6",
|
|
57
56
|
"ng-node-compile": "^2.0.52",
|
|
57
|
+
"node-tesseract-ocr": "^2.2.1",
|
|
58
58
|
"node-worker-threads-pool": "^1.4.3",
|
|
59
59
|
"node-xlsx": "latest",
|
|
60
60
|
"node-zip": "latest",
|
package/server/global.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';const prototypes=require("./libs/prototypes.js"),async=require("async"),TransactionPool=require("./libs/BlockchainTransactionPool"),leanID=require("./libs/mongooseLeanId"),deletePost=require("./libs/mongooseDeletePost"),fs=require("fs");global.blockchainTransactionPool=new TransactionPool;global.new_schedules=[];global.rootDir=__dirname;global.ctrlVouchers={};global.controllers={};global.report_controllers={};global.postingVouchers={};global.cacheDatas={};global.clientIO={};
|
|
2
2
|
global.model_books="socai sokho sokhott sokhokhongton sosanxuat vatvao vatra tdttno tdttco vsocai socaitmp".split(" ");global.webPush=require("web-push");global.mongoose=require("mongoose");global.mongoose.plugin(leanID);global.mongoose.plugin(deletePost);global.Schema=global.mongoose.Schema;global.mongoose.set("useFindAndModify",!1);global.mongoose.set("useCreateIndex",!0);
|
|
3
|
-
global.getModel=$model_name$$=>{$model_name$$=$model_name$$.split(".js")[0];"kbmpttct"===$model_name$$&&($model_name$$="kbmPttct");"kbmtkgtgt"===$model_name$$&&($model_name$$="kbmTkgtgt");"token"===$model_name$$&&($model_name$$="tokens");var $model_model_path$$=mongoose.models[$model_name$$];if($model_model_path$$)return $model_model_path$$;$model_model_path$$=(((global.configs||{}).paths||{}).models||"./models")+
|
|
4
|
-
$model_model_path$$=__dirname+"/models/"+$model_name$$+".js";if(fs.existsSync($model_model_path$$))return require($model_model_path$$);console.error("model",$model_name$$,"is not exists. using base model");return require("./models/base")};global.getLib=$lib_name$$=>require("./libs/"+$lib_name$$);
|
|
3
|
+
global.getModel=$model_name$$=>{$model_name$$=$model_name$$.split(".js")[0];"kbmpttct"===$model_name$$&&($model_name$$="kbmPttct");"kbmtkgtgt"===$model_name$$&&($model_name$$="kbmTkgtgt");"token"===$model_name$$&&($model_name$$="tokens");"bn1"===$model_name$$&&($model_name$$="pc1");"bc1"===$model_name$$&&($model_name$$="pt1");var $model_model_path$$=mongoose.models[$model_name$$];if($model_model_path$$)return $model_model_path$$;$model_model_path$$=(((global.configs||{}).paths||{}).models||"./models")+
|
|
4
|
+
"/"+$model_name$$+".js";if(fs.existsSync($model_model_path$$))return require($model_model_path$$);$model_model_path$$=__dirname+"/models/"+$model_name$$+".js";if(fs.existsSync($model_model_path$$))return require($model_model_path$$);console.error("model",$model_name$$,"is not exists. using base model");return require("./models/base")};global.getLib=$lib_name$$=>require("./libs/"+$lib_name$$);
|
|
5
5
|
const pointSchema=new global.mongoose.Schema({type:{type:String,enum:["Point"],required:!0,default:"Point"},coordinates:{type:[Number],required:!0}}),polygonSchema=new global.mongoose.Schema({type:{type:String,enum:["Polygon"],required:!0,default:"Polygon"},coordinates:{type:[[[Number]]],required:!0}});global.customTypes={Point:pointSchema,Polygon:polygonSchema};const EventEmitter=require("events");class GlobalEmitter extends EventEmitter{}global.globalEvents=new GlobalEmitter;
|
|
6
6
|
const Message=global.getModel("message"),Notification=global.getModel("notification"),User=global.getModel("user"),Sysconfig=global.getModel("sysconfig");global.getSysConfig=async $cf_code$$=>{if($cf_code$$=await Sysconfig.findOne({code:$cf_code$$}))return $cf_code$$.value};global.asyncCountUnRead=async $email$$=>new Promise($resolve$$=>{setImmediate(()=>{Message.countDocuments({email:$email$$,read:!1},($e$$,$rs$$)=>{$resolve$$($rs$$||0)})})});
|
|
7
7
|
global.alertMessage=function($email$$){setImmediate(()=>{Message.countDocuments({email_owner:$email$$,email_receiver:$email$$,read:!1},function($error$$,$count$$){$error$$?console.log($error$$):User.emitEvent($email$$,"message:count",$count$$,!1)})})};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
'use strict';const model=global.getModel("asskey"),Token=global.getModel("token"),User=global.getModel("user"),axios=require("axios"),{SigningStargateClient}=require("@cosmjs/stargate"),{DirectSecp256k1HdWallet,Registry}=require("@cosmjs/proto-signing"),{Type,Field}=require("protobufjs"),_=require("lodash"),forever=require("async/forever"),CryptoJS=require("crypto-js"),hexToBinary=$s$$=>{let $ret$$="";const $lookupTable$$={0:"0000",1:"0001",2:"0010",3:"0011",4:"0100",5:"0101",
|
|
2
|
-
9:"1001",a:"1010",b:"1011",c:"1100",d:"1101",e:"1110",f:"1111"};for(let $i$$=0;$i$$<$s$$.length;$i$$+=1)if($lookupTable$$[$s$$[$i$$]])$ret$$+=$lookupTable$$[$s$$[$i$$]];else return null;return $ret$$},getHashById=async $id_rs$$=>{$id_rs$$=await bcQuery(`findhash/${$id_rs$$}`);if($id_rs$$.code)throw $id_rs$$.message;return $id_rs$$.Findhash},getLatestHash=async()=>{let $rs$$=await bcQuery("findhash?pagination.offset=0&pagination.limit=1&pagination.countTotal=true&pagination.reverse=true");
|
|
3
|
-
return 0<$rs$$.Findhash.length?$rs$$.Findhash[0]:null},getAdjustedDifficulty=async $lastestHash_timeTaken$$=>{if(!$lastestHash_timeTaken$$)return 1;let {DIFFICULTY_ADJUSTMENT_INTERVAL:$DIFFICULTY_ADJUSTMENT_INTERVAL$$,BLOCK_GENERATION_INTERVAL:$BLOCK_GENERATION_INTERVAL$$}=configs;$DIFFICULTY_ADJUSTMENT_INTERVAL$$||($DIFFICULTY_ADJUSTMENT_INTERVAL$$=10);$BLOCK_GENERATION_INTERVAL$$||($BLOCK_GENERATION_INTERVAL$$=60);if(0===Number($lastestHash_timeTaken$$.id)%$DIFFICULTY_ADJUSTMENT_INTERVAL$$&&
|
|
4
|
-
Number($lastestHash_timeTaken$$.id)){const $prevAdjustmentBlock$$=await getHashById(Number($lastestHash_timeTaken$$.id)+1-$DIFFICULTY_ADJUSTMENT_INTERVAL$$),$timeExpected$$=$BLOCK_GENERATION_INTERVAL$$*$DIFFICULTY_ADJUSTMENT_INTERVAL$$;$lastestHash_timeTaken$$=Number($lastestHash_timeTaken$$.timestamp)-Number($prevAdjustmentBlock$$.timestamp);console.log("adjusted difficulty",{DIFFICULTY_ADJUSTMENT_INTERVAL:$DIFFICULTY_ADJUSTMENT_INTERVAL$$,BLOCK_GENERATION_INTERVAL:$BLOCK_GENERATION_INTERVAL$$,
|
|
5
|
-
timeTaken:$lastestHash_timeTaken$$});return $lastestHash_timeTaken$$<$timeExpected$$/2?Number($prevAdjustmentBlock$$.difficulty)+1:$lastestHash_timeTaken$$>2*$timeExpected$$?Math.max(1,Number($prevAdjustmentBlock$$.difficulty)-1):Number($prevAdjustmentBlock$$.difficulty)}return Number($lastestHash_timeTaken$$.difficulty)},calculateHash=($index$$,$previousHash$$,$timestamp$$,$data$$,$difficulty$$,$nonce$$)=>CryptoJS.SHA256($index$$+$previousHash$$+$timestamp$$+$data
|
|
6
|
-
hashMatchesDifficulty=($hash_hashInBinary$$,$difficulty$$)=>{$hash_hashInBinary$$=hexToBinary($hash_hashInBinary$$);$difficulty$$="0".repeat($difficulty$$);return $hash_hashInBinary$$.startsWith($difficulty$$)},findHash=async $lastestHash$$=>{let $id$$,$previousHash$$,$difficulty$$,$timestamp$$=Math.round((new Date).getTime()/1E3);$lastestHash$$||($lastestHash$$=await getLatestHash());$lastestHash$$?($id$$=Number($lastestHash$$.id)+1,$previousHash$$=$lastestHash$$.hash
|
|
7
|
-
($id$$=0,$previousHash$$="",$difficulty$$=1);let $nonce$$=0;return new Promise($rs$$=>{forever($cb$$=>{const $hash$$=calculateHash($id$$,$previousHash$$,$timestamp$$,"",$difficulty$$,$nonce$$);if(hashMatchesDifficulty($hash$$,$difficulty$$))return $cb$$({id:$id$$,hash:$hash$$,previousHash:$previousHash$$,timestamp:$timestamp$$,data:"",difficulty:$difficulty$$,nonce:$nonce$$});$nonce$$++;$cb$$()},$h$$=>{$rs$$($h$$)})})},mining=async($id_app
|
|
8
|
-
console.log("find hash...");try{$found$$=await findHash($lastestHash$$)}catch($e$$){return console.error($e$$),$fn$$($e$$.message||$e$$.error||$e$$)}$lastestHash$$={creator:$from_address$$,hash:$found$$.hash,previousHash:$found$$.previousHash,timestamp:$found$$.timestamp,data:$found$$.data,difficulty:$found$$.difficulty,nonce:$found$$.nonce};console.log("send hash...");createTx($id_app$$,null,{values:$lastestHash$$,typeUrl:"/pvtruong.flexzen.flexzen.MsgCreateFindhash",
|
|
9
|
-
memo:"",username:$username$$}).then($rs$$=>{if($rs$$.code)return 5===$rs$$.code?$fn$$({error:"B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y"}):$fn$$({error:$rs$$.rawLog});console.log("found a hash",$found$$);$fn$$(null,$found$$)}).catch($e$$=>{$fn$$($e$$)})},getAccount=async $address$$=>(await axios.get(`${configs.BLOCKCHAIN_URL}/auth/accounts/${$address$$}`)).data.result.value,getWallet=async($id_app$$,$key_client_username
|
|
10
|
-
await model.findOne({id_app:$id_app$$,username:$key_client_username$$,address:$address$$});if(!$id_app$$)throw{message:`User ${$key_client_username$$} has not the wallet ${$address$$}`};global.client_cosmos=global.client_cosmos||{};$key_client_username$$="client_"+$id_app$$._id.toString();return global.client_cosmos[$key_client_username$$]&&global.client_cosmos[$key_client_username$$].wallet?global.client_cosmos[$key_client_username$$].wallet:await DirectSecp256k1HdWallet.fromMnemonic($id_app$$.mnemonic,
|
|
1
|
+
'use strict';const model=global.getModel("asskey"),Token=global.getModel("token"),User=global.getModel("user"),axios=require("axios"),{SigningStargateClient}=require("@cosmjs/stargate"),{DirectSecp256k1HdWallet,Registry}=require("@cosmjs/proto-signing"),{Type,Field}=require("protobufjs"),_=require("lodash"),numeral=require("numeral"),forever=require("async/forever"),CryptoJS=require("crypto-js"),hexToBinary=$s$$=>{let $ret$$="";const $lookupTable$$={0:"0000",1:"0001",2:"0010",3:"0011",4:"0100",5:"0101",
|
|
2
|
+
6:"0110",7:"0111",8:"1000",9:"1001",a:"1010",b:"1011",c:"1100",d:"1101",e:"1110",f:"1111"};for(let $i$$=0;$i$$<$s$$.length;$i$$+=1)if($lookupTable$$[$s$$[$i$$]])$ret$$+=$lookupTable$$[$s$$[$i$$]];else return null;return $ret$$},getHashById=async $id_rs$$=>{$id_rs$$=await bcQuery(`findhash/${$id_rs$$}`);if($id_rs$$.code)throw $id_rs$$.message;return $id_rs$$.Findhash},getLatestHash=async()=>{let $rs$$=await bcQuery("findhash?pagination.offset=0&pagination.limit=1&pagination.countTotal=true&pagination.reverse=true");
|
|
3
|
+
if($rs$$.code)throw $rs$$.message;return 0<$rs$$.Findhash.length?$rs$$.Findhash[0]:null},getAdjustedDifficulty=async $lastestHash_timeTaken$$=>{if(!$lastestHash_timeTaken$$)return 1;let {DIFFICULTY_ADJUSTMENT_INTERVAL:$DIFFICULTY_ADJUSTMENT_INTERVAL$$,BLOCK_GENERATION_INTERVAL:$BLOCK_GENERATION_INTERVAL$$}=configs;$DIFFICULTY_ADJUSTMENT_INTERVAL$$||($DIFFICULTY_ADJUSTMENT_INTERVAL$$=10);$BLOCK_GENERATION_INTERVAL$$||($BLOCK_GENERATION_INTERVAL$$=60);if(0===Number($lastestHash_timeTaken$$.id)%$DIFFICULTY_ADJUSTMENT_INTERVAL$$&&
|
|
4
|
+
0!==Number($lastestHash_timeTaken$$.id)){const $prevAdjustmentBlock$$=await getHashById(Number($lastestHash_timeTaken$$.id)+1-$DIFFICULTY_ADJUSTMENT_INTERVAL$$),$timeExpected$$=$BLOCK_GENERATION_INTERVAL$$*$DIFFICULTY_ADJUSTMENT_INTERVAL$$;$lastestHash_timeTaken$$=Number($lastestHash_timeTaken$$.timestamp)-Number($prevAdjustmentBlock$$.timestamp);console.log("adjusted difficulty",{DIFFICULTY_ADJUSTMENT_INTERVAL:$DIFFICULTY_ADJUSTMENT_INTERVAL$$,BLOCK_GENERATION_INTERVAL:$BLOCK_GENERATION_INTERVAL$$,
|
|
5
|
+
timeExpected:$timeExpected$$,timeTaken:$lastestHash_timeTaken$$});return $lastestHash_timeTaken$$<$timeExpected$$/2?Number($prevAdjustmentBlock$$.difficulty)+1:$lastestHash_timeTaken$$>2*$timeExpected$$?Math.max(1,Number($prevAdjustmentBlock$$.difficulty)-1):Number($prevAdjustmentBlock$$.difficulty)}return Number($lastestHash_timeTaken$$.difficulty)},calculateHash=($index$$,$previousHash$$,$timestamp$$,$data$$,$difficulty$$,$nonce$$)=>CryptoJS.SHA256($index$$+$previousHash$$+$timestamp$$+$data$$+
|
|
6
|
+
$difficulty$$+$nonce$$).toString(),hashMatchesDifficulty=($hash_hashInBinary$$,$difficulty$$)=>{$hash_hashInBinary$$=hexToBinary($hash_hashInBinary$$);$difficulty$$="0".repeat($difficulty$$);return $hash_hashInBinary$$.startsWith($difficulty$$)},findHash=async $lastestHash$$=>{let $id$$,$previousHash$$,$difficulty$$,$timestamp$$=Math.round((new Date).getTime()/1E3);$lastestHash$$||($lastestHash$$=await getLatestHash());$lastestHash$$?($id$$=Number($lastestHash$$.id)+1,$previousHash$$=$lastestHash$$.hash,
|
|
7
|
+
$difficulty$$=await getAdjustedDifficulty($lastestHash$$)):($id$$=0,$previousHash$$="",$difficulty$$=1);let $nonce$$=0;return new Promise($rs$$=>{forever($cb$$=>{const $hash$$=calculateHash($id$$,$previousHash$$,$timestamp$$,"",$difficulty$$,$nonce$$);if(hashMatchesDifficulty($hash$$,$difficulty$$))return $cb$$({id:$id$$,hash:$hash$$,previousHash:$previousHash$$,timestamp:$timestamp$$,data:"",difficulty:$difficulty$$,nonce:$nonce$$});$nonce$$++;$cb$$()},$h$$=>{$rs$$($h$$)})})},mining=async($id_app$$,
|
|
8
|
+
$username$$,$from_address$$,$fn$$,$lastestHash$$)=>{let $found$$;console.log("find hash...");try{$found$$=await findHash($lastestHash$$)}catch($e$$){return console.error($e$$),$fn$$($e$$.message||$e$$.error||$e$$)}$lastestHash$$={creator:$from_address$$,hash:$found$$.hash,previousHash:$found$$.previousHash,timestamp:$found$$.timestamp,data:$found$$.data,difficulty:$found$$.difficulty,nonce:$found$$.nonce};console.log("send hash...");createTx($id_app$$,null,{values:$lastestHash$$,typeUrl:"/pvtruong.flexzen.flexzen.MsgCreateFindhash",
|
|
9
|
+
from_address:$from_address$$,memo:"",username:$username$$}).then($rs$$=>{if($rs$$.code)return 5===$rs$$.code?$fn$$({error:"B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y"}):$fn$$({error:$rs$$.rawLog});console.log("found a hash",$found$$);$fn$$(null,$found$$)}).catch($e$$=>{$fn$$($e$$)})},getAccount=async $address$$=>(await axios.get(`${configs.BLOCKCHAIN_URL}/auth/accounts/${$address$$}`)).data.result.value,getWallet=async($id_app$$,$key_client_username$$,
|
|
10
|
+
$address$$)=>{$id_app$$=await model.findOne({id_app:$id_app$$,username:$key_client_username$$,address:$address$$});if(!$id_app$$)throw{message:`User ${$key_client_username$$} has not the wallet ${$address$$}`};global.client_cosmos=global.client_cosmos||{};$key_client_username$$="client_"+$id_app$$._id.toString();return global.client_cosmos[$key_client_username$$]&&global.client_cosmos[$key_client_username$$].wallet?global.client_cosmos[$key_client_username$$].wallet:await DirectSecp256k1HdWallet.fromMnemonic($id_app$$.mnemonic,
|
|
11
11
|
{prefix:configs.ADDRESS_PREFIX})},getKeyByAddress=async $address$$=>await model.findOne({address:$address$$}),getKeyInfo=async($account$jscomp$1_id_app$$,$username$$,$address$$)=>{$account$jscomp$1_id_app$$=await getAccount($account$jscomp$1_id_app$$,$username$$,$address$$);$address$$=await bankBalancesGet($address$$);return{account:$account$jscomp$1_id_app$$,balance:$address$$}},connectWithSigner=async($RPC$$,$wallet$$,$options$$)=>await SigningStargateClient.connectWithSigner($RPC$$,$wallet$$,$options$$),
|
|
12
12
|
getClient=async($id_app$jscomp$3_wallet$$,$client$jscomp$1_username$$,$account$jscomp$2_address$$)=>{var $key_client$jscomp$1_w$$=await model.findOne({id_app:$id_app$jscomp$3_wallet$$,username:$client$jscomp$1_username$$,address:$account$jscomp$2_address$$});if(!$key_client$jscomp$1_w$$)throw{message:`User ${$client$jscomp$1_username$$} has not the wallet ${$account$jscomp$2_address$$}`};global.client_cosmos=global.client_cosmos||{};$key_client$jscomp$1_w$$="client_"+$key_client$jscomp$1_w$$._id.toString();
|
|
13
13
|
if(global.client_cosmos[$key_client$jscomp$1_w$$])return global.client_cosmos[$key_client$jscomp$1_w$$];$id_app$jscomp$3_wallet$$=await getWallet($id_app$jscomp$3_wallet$$,$client$jscomp$1_username$$,$account$jscomp$2_address$$);$account$jscomp$2_address$$=await getAccount($account$jscomp$2_address$$);$client$jscomp$1_username$$=await connectWithSigner(configs.BLOCKCHAIN_RPC,$id_app$jscomp$3_wallet$$);global.client_cosmos[$key_client$jscomp$1_w$$]={wallet:$id_app$jscomp$3_wallet$$,account:$account$jscomp$2_address$$,
|
|
@@ -24,23 +24,26 @@ $events$jscomp$1_rs$$.page=$page$$;$events$jscomp$1_rs$$.txs.forEach($r$$=>{$r$$
|
|
|
24
24
|
$url$$),$reject$$($e$$))})})},ping=async $from_address$$=>{console.log("ping from ",$from_address$$,"...");let $key$$=await model.findOne({address:$from_address$$});$key$$&&createTx($key$$.id_app,null,{values:{creator:$from_address$$,data:0},typeUrl:"/pvtruong.flexzen.flexzen.MsgPing",from_address:$from_address$$,username:$key$$.username}).then(async $rs$$=>{console.log("Pingged",$rs$$.code)})},processEventTx=async $data$$=>{try{let $senders$$=[],$receivers$$=[],$owners$$=[];for(let $key$$ in $data$$.result.events)$data$$.result.events[$key$$].forEach(async $action$$=>
|
|
25
25
|
{0<$key$$.indexOf(".owner")?$owners$$.push($action$$):0<$key$$.indexOf(".sender")?$senders$$.push($action$$):(0<$key$$.indexOf(".receiver")||0<$key$$.indexOf(".recipient"))&&$receivers$$.push($action$$)});[...(new Set($senders$$))].forEach(async $sender$$=>{let $u$$=await getKeyByAddress($sender$$);$u$$&&User.emitEvent($u$$.user_created,"blockchain.wallet.changed",{sender:$sender$$,data:$data$$})});[...(new Set($receivers$$))].forEach(async $receiver$$=>{let $u$$=await getKeyByAddress($receiver$$);
|
|
26
26
|
$u$$&&User.emitEvent($u$$.user_created,"blockchain.wallet.changed",{receiver:$receiver$$,data:$data$$})});[...(new Set($owners$$))].filter($o$$=>!$senders$$.find($s$$=>$s$$==$o$$)).filter($o$$=>!$receivers$$.find($s$$=>$s$$==$o$$)).forEach(async $owner$$=>{let $u$$=await getKeyByAddress($owner$$);$u$$&&User.emitEvent($u$$.user_created,"blockchain.wallet.changed",{receiver:$owner$$,sender:$owner$$,data:$data$$})})}catch($e$$){console.error("error emit events",$e$$.message)}};let notificationPool={};
|
|
27
|
-
const processEventAt=async $events$$=>{let $receivers$$=[];for(let $key$$ in $events$$)$events$$[$key$$].forEach(async $action$$=>{(0<=$key$$.indexOf(".receiver")||0<=$key$$.indexOf(".recipient")||0<=$key$$.indexOf(".sender")||0<=$key$$.indexOf(".creator")||0<=$key$$.indexOf(".owner")||0<=$key$$.indexOf(".buyer")||0<=$key$$.indexOf(".seller"))&&$receivers$$.push($action$$)});[...(new Set($receivers$$))].forEach(async $receiver$$=>{let $u$$=await getKeyByAddress($receiver$$);$u$$&&$events$$["at.action"].forEach(($
|
|
28
|
-
$id$jscomp$2_index$jscomp$
|
|
29
|
-
"",$timestamp$$=$events$$["at.timestamp"]&&$events$$["at.timestamp"].length>$id$jscomp$2_index$jscomp$
|
|
30
|
-
"";
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
$events$$["at.
|
|
36
|
-
$
|
|
37
|
-
$events$$["at.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
$
|
|
27
|
+
const processEventAt=async $events$$=>{let $receivers$$=[];for(let $key$$ in $events$$)$events$$[$key$$].forEach(async $action$$=>{(0<=$key$$.indexOf(".receiver")||0<=$key$$.indexOf(".recipient")||0<=$key$$.indexOf(".sender")||0<=$key$$.indexOf(".creator")||0<=$key$$.indexOf(".owner")||0<=$key$$.indexOf(".buyer")||0<=$key$$.indexOf(".seller"))&&$receivers$$.push($action$$)});[...(new Set($receivers$$))].forEach(async $receiver$$=>{let $u$$=await getKeyByAddress($receiver$$);$u$$&&$events$$["at.action"].forEach(async($_u_action$$,
|
|
28
|
+
$id$jscomp$2_index$jscomp$17_title_token$$)=>{let $creator$$=$events$$["at.creator"]&&$events$$["at.creator"].length>$id$jscomp$2_index$jscomp$17_title_token$$?$events$$["at.creator"][$id$jscomp$2_index$jscomp$17_title_token$$]:"",$owner$$=$events$$["at.owner"]&&$events$$["at.owner"].length>$id$jscomp$2_index$jscomp$17_title_token$$?$events$$["at.owner"][$id$jscomp$2_index$jscomp$17_title_token$$]:"",$memo$$=$events$$["at.memo"]&&$events$$["at.memo"].length>$id$jscomp$2_index$jscomp$17_title_token$$?
|
|
29
|
+
$events$$["at.memo"][$id$jscomp$2_index$jscomp$17_title_token$$]:"",$timestamp$$=$events$$["at.timestamp"]&&$events$$["at.timestamp"].length>$id$jscomp$2_index$jscomp$17_title_token$$?$events$$["at.timestamp"][$id$jscomp$2_index$jscomp$17_title_token$$]:"";$timestamp$$=Number($timestamp$$||0)+$id$jscomp$2_index$jscomp$17_title_token$$;switch($_u_action$$){case "send":$_u_action$$=$events$$["at.sender"]&&$events$$["at.sender"].length>$id$jscomp$2_index$jscomp$17_title_token$$?$events$$["at.sender"][$id$jscomp$2_index$jscomp$17_title_token$$]:
|
|
30
|
+
"";if($receiver$$!==$_u_action$$){var $id_invest_noti_sender$jscomp$1_token$$="";$_u_action$$&&($_u_action$$=await getKeyByAddress($_u_action$$))&&($id_invest_noti_sender$jscomp$1_token$$=$_u_action$$.name);$_u_action$$=$events$$["at.denom"]&&$events$$["at.denom"].length>$id$jscomp$2_index$jscomp$17_title_token$$?$events$$["at.denom"][$id$jscomp$2_index$jscomp$17_title_token$$]:"vnd";$id$jscomp$2_index$jscomp$17_title_token$$=`${$id_invest_noti_sender$jscomp$1_token$$||"unknow"} \u0111\u00e3 g\u1eedi cho b\u1ea1n ${numeral($events$$["at.amount"]&&
|
|
31
|
+
$events$$["at.amount"].length>$id$jscomp$2_index$jscomp$17_title_token$$?$events$$["at.amount"][$id$jscomp$2_index$jscomp$17_title_token$$]:0).format()} ${$_u_action$$}`;$id_invest_noti_sender$jscomp$1_token$$={title:$id$jscomp$2_index$jscomp$17_title_token$$,receiver:$receiver$$,body:`${$id$jscomp$2_index$jscomp$17_title_token$$} v\u1edbi n\u1ed9i dung: ${$memo$$}`,data:{key:"send:"+$timestamp$$}}}break;case "withdraw":$id$jscomp$2_index$jscomp$17_title_token$$=$events$$["at.idWithdraw"]&&$events$$["at.idWithdraw"].length>
|
|
32
|
+
$id$jscomp$2_index$jscomp$17_title_token$$?$events$$["at.idWithdraw"][$id$jscomp$2_index$jscomp$17_title_token$$]:"";$id_invest_noti_sender$jscomp$1_token$$={title:"X\u1eed l\u00fd r\u00fat v\u1ed1n",receiver:$receiver$$,body:$memo$$||`Y\u00eau c\u1ea7u r\u00fat v\u1ed1n s\u1ed1 ${$id$jscomp$2_index$jscomp$17_title_token$$} \u0111\u00e3 \u0111\u01b0\u1ee3c x\u1eed l\u00fd xong`,data:{key:"withdraw:"+$id$jscomp$2_index$jscomp$17_title_token$$+$timestamp$$,id_withdraw:$events$$["at.idWithdraw"]}};break;
|
|
33
|
+
case "buy":$receiver$$===$creator$$&&($id_invest_noti_sender$jscomp$1_token$$={title:"Mua th\u00e0nh c\u00f4ng",receiver:$receiver$$,body:$memo$$||`B\u1ea1n \u0111\u00e3 mua th\u00e0nh c\u00f4ng ${$events$$["at.amount"][$id$jscomp$2_index$jscomp$17_title_token$$]} ${$events$$["at.token"][$id$jscomp$2_index$jscomp$17_title_token$$]}`,data:{key:`buy:${$events$$["at.idNeedToBuy"][$id$jscomp$2_index$jscomp$17_title_token$$]}-${$events$$["at.idSell"][$id$jscomp$2_index$jscomp$17_title_token$$]}`+$timestamp$$,
|
|
34
|
+
id_need_to_buy:$events$$["at.idNeedToBuy"][$id$jscomp$2_index$jscomp$17_title_token$$],id_sell:$events$$["at.idSell"][$id$jscomp$2_index$jscomp$17_title_token$$]}});break;case "sell":$receiver$$===$creator$$&&($id_invest_noti_sender$jscomp$1_token$$={title:"B\u00e1n th\u00e0nh c\u00f4ng",receiver:$receiver$$,body:$memo$$||`B\u1ea1n \u0111\u00e3 b\u00e1n th\u00e0nh c\u00f4ng ${$events$$["at.amount"][$id$jscomp$2_index$jscomp$17_title_token$$]} ${$events$$["at.token"][$id$jscomp$2_index$jscomp$17_title_token$$]}`,
|
|
35
|
+
data:{key:`sell:${$events$$["at.idSell"][$id$jscomp$2_index$jscomp$17_title_token$$]}-${$events$$["at.idBuy"][$id$jscomp$2_index$jscomp$17_title_token$$]}`+$timestamp$$,id_sell:$events$$["at.idSell"][$id$jscomp$2_index$jscomp$17_title_token$$],id_buy:$events$$["at.idBuy"][$id$jscomp$2_index$jscomp$17_title_token$$]}});break;case "sell-expired":if($receiver$$===$creator$$){let $id_sell$$=$events$$["at.idSell"][$id$jscomp$2_index$jscomp$17_title_token$$];global.getModel("asssell").updateOne({id:$id_sell$$},
|
|
36
|
+
{trang_thai:"9"}).then($rs$$=>{console.log("updated expired asssell",$id_sell$$,$rs$$)});$id_invest_noti_sender$jscomp$1_token$$={title:"Tin b\u00e1n h\u1ebft h\u1ea1n",receiver:$receiver$$,body:$memo$$||`Tin b\u00e1n s\u1ed1 ${$id_sell$$} \u0111\u00e3 h\u1ebft h\u1ea1n. Token \u0111\u00e3 \u0111\u01b0\u1ee3c chuy\u1ec3n l\u1ea1i v\u00e0o v\u00ed c\u1ee7a b\u1ea1n`,data:{key:"sell-expired:"+$id_sell$$+$timestamp$$,id_sell:$id_sell$$}}}break;case "need-to-buy-expired":if($receiver$$===$creator$$){let $id_need_to_buy$$=
|
|
37
|
+
Number($events$$["at.idNeedToBuy"][$id$jscomp$2_index$jscomp$17_title_token$$]);global.getModel("assneedtobuy").updateOne({id:$id_need_to_buy$$},{trang_thai:"9"}).then($rs$$=>{console.log("updated expired need to buy",$id_need_to_buy$$,$rs$$)});$id_invest_noti_sender$jscomp$1_token$$={title:"Tin mua h\u1ebft h\u1ea1n",receiver:$receiver$$,body:$memo$$||`Tin mua s\u1ed1 ${$events$$["at.idNeedToBuy"][$id$jscomp$2_index$jscomp$17_title_token$$]} \u0111\u00e3 h\u1ebft h\u1ea1n. Ti\u1ec1n c\u1ecdc \u0111\u00e3 \u0111\u01b0\u1ee3c chuy\u1ec3n l\u1ea1i v\u00e0o v\u00ed c\u1ee7a b\u1ea1n`,
|
|
38
|
+
data:{key:"need-to-buy-expired:"+$events$$["at.idNeedToBuy"][$id$jscomp$2_index$jscomp$17_title_token$$]+$timestamp$$,id_need_to_buy:$events$$["at.idNeedToBuy"][$id$jscomp$2_index$jscomp$17_title_token$$]}}}break;case "invest-interest":$receiver$$===$owner$$&&($id_invest_noti_sender$jscomp$1_token$$=Number($events$$["at.idInvestment"][$id$jscomp$2_index$jscomp$17_title_token$$]),$_u_action$$=Number($events$$["at.kyTraLai"][$id$jscomp$2_index$jscomp$17_title_token$$]),$id$jscomp$2_index$jscomp$17_title_token$$=
|
|
39
|
+
$events$$["at.token"][$id$jscomp$2_index$jscomp$17_title_token$$],$id_invest_noti_sender$jscomp$1_token$$={title:"L\u00e3i \u0111\u1ecbnh k\u1ef3",receiver:$receiver$$,body:$memo$$||`Nh\u1eadn l\u00e3i t\u1eeb kho\u1ea3n \u0111\u1ea7u t\u01b0 ${$id$jscomp$2_index$jscomp$17_title_token$$}`,data:{key:"invest-interest:"+$id_invest_noti_sender$jscomp$1_token$$+"-"+$_u_action$$+$timestamp$$,id_invest:$id_invest_noti_sender$jscomp$1_token$$,ky_tra_lai:$_u_action$$,token:$id$jscomp$2_index$jscomp$17_title_token$$}});
|
|
40
|
+
break;case "profit-sharing":$receiver$$===$owner$$&&($id_invest_noti_sender$jscomp$1_token$$=$events$$["at.token"][$id$jscomp$2_index$jscomp$17_title_token$$],$id_invest_noti_sender$jscomp$1_token$$={title:"L\u1ee3i nhu\u1eadn \u0111\u01b0\u1ee3c chia",receiver:$receiver$$,body:$memo$$||`B\u1ea1n \u0111\u01b0\u1ee3c chia l\u1ee3i nhu\u1eadn t\u1eeb kho\u1ea3n \u0111\u1ea7u t\u01b0 ${$id_invest_noti_sender$jscomp$1_token$$}`,data:{key:"profit-sharing"+$timestamp$$,id_profit_sharing:$events$$["at.idProfitSharing"][$id$jscomp$2_index$jscomp$17_title_token$$],
|
|
41
|
+
id_product:$events$$["at.idProduct"][$id$jscomp$2_index$jscomp$17_title_token$$],amount:$events$$["at.amount"][$id$jscomp$2_index$jscomp$17_title_token$$],denom:$events$$["at.denom"][$id$jscomp$2_index$jscomp$17_title_token$$],token:$id_invest_noti_sender$jscomp$1_token$$}});break;case "profit-sharing-error":$receiver$$===$owner$$&&($id_invest_noti_sender$jscomp$1_token$$={title:"Kh\u00f4ng th\u1ec3 chia l\u1ee3i nhu\u1eadn",receiver:$receiver$$,body:$memo$$,data:{key:"profit-sharing-error"+$timestamp$$,
|
|
42
|
+
id_profit_sharing:$events$$["at.idProfitSharing"][$id$jscomp$2_index$jscomp$17_title_token$$],id_product:$events$$["at.idProduct"][$id$jscomp$2_index$jscomp$17_title_token$$],amount:$events$$["at.amount"][$id$jscomp$2_index$jscomp$17_title_token$$],denom:$events$$["at.denom"][$id$jscomp$2_index$jscomp$17_title_token$$],token:$events$$["at.token"][$id$jscomp$2_index$jscomp$17_title_token$$]}});break;case "invest-expired":if($receiver$$===$owner$$){let $id_invest$$=Number($events$$["at.idInvestment"][$id$jscomp$2_index$jscomp$17_title_token$$]),
|
|
43
|
+
$token$$=$events$$["at.token"][$id$jscomp$2_index$jscomp$17_title_token$$];global.getModel("assinvestment").updateOne({id:$id_invest$$},{trang_thai:"5"}).then($rs$$=>{console.log("updated expired assinvestment",$id_invest$$,$rs$$)});$token$$&&global.getModel("asssell").updateOne({token:$token$$},{trang_thai:"5"}).then($rs$$=>{console.log("updated expired asssell for token",$token$$,$rs$$)});$id_invest_noti_sender$jscomp$1_token$$={title:"Kho\u1ea3n \u0111\u1ea7u t\u01b0 \u0111\u00e1o h\u1ea1n",receiver:$receiver$$,
|
|
44
|
+
body:$memo$$||`Kho\u1ea3n \u0111\u1ea7u t\u01b0 ${$token$$} \u0111\u00e3 \u0111\u00e1o h\u1ea1n. Ti\u1ec1n g\u1ed1c v\u00e0 l\u00e3i \u0111\u00e3 \u0111\u01b0\u1ee3c chuy\u1ec3n v\u00e0o v\u00ed c\u1ee7a b\u1ea1n`,data:{key:"invest-expired:"+$id_invest$$+$timestamp$$,id_invest:$id_invest$$,token:$token$$}}}break;case "exchange":$id_invest_noti_sender$jscomp$1_token$$={title:"Giao d\u1ecbch c\u1ee7a b\u1ea1n \u0111\u00e3 kh\u1edbp l\u1ec7nh",receiver:$receiver$$,body:$memo$$||`\u0110\u00e3 kh\u1edbp l\u1ec7nh giao d\u1ecbch gi\u1eefa tin mua s\u1ed1 ${$events$$["at.idNeedToBuy"][$id$jscomp$2_index$jscomp$17_title_token$$]} v\u00e0 tin b\u00e1n s\u1ed1 ${$events$$["at.idSell"][$id$jscomp$2_index$jscomp$17_title_token$$]}. V\u00ed c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt s\u1ed1 d\u01b0`,
|
|
45
|
+
data:{key:`exchange:${$events$$["at.idSell"][$id$jscomp$2_index$jscomp$17_title_token$$]}-${$events$$["at.idNeedToBuy"][$id$jscomp$2_index$jscomp$17_title_token$$]}`+$timestamp$$,id_sell:$events$$["at.idSell"][$id$jscomp$2_index$jscomp$17_title_token$$],id_need_to_buy:$events$$["at.idNeedToBuy"][$id$jscomp$2_index$jscomp$17_title_token$$]}};break;default:console.log("don't implement action",$_u_action$$)}$id_invest_noti_sender$jscomp$1_token$$&&($id_invest_noti_sender$jscomp$1_token$$.user=$u$$.user_created,
|
|
46
|
+
$id_invest_noti_sender$jscomp$1_token$$.data.key=$id_invest_noti_sender$jscomp$1_token$$.user+$id_invest_noti_sender$jscomp$1_token$$.data.key,notificationPool[$id_invest_noti_sender$jscomp$1_token$$.data.key]=$id_invest_noti_sender$jscomp$1_token$$)})})},WS=require("ws");let notiInterval,connectSocket=!1;
|
|
44
47
|
const setupSocket=()=>{if(!connectSocket){var $ws$$=new WS(configs.BLOCKCHAIN_SOCKET);$ws$$.on("error",$e$$=>{connectSocket=!1;console.error("Can't connect to blockchain socket server",$e$$.message);notiInterval&&(clearInterval(notiInterval),notiInterval=null)});$ws$$.on("close",()=>{connectSocket=!1;notiInterval&&(clearInterval(notiInterval),notiInterval=null);setTimeout(()=>{setupSocket()},5E3)});$ws$$.on("open",()=>{console.log("connected to blockchain socket");connectSocket=!0;$ws$$.send(JSON.stringify({jsonrpc:"2.0",
|
|
45
48
|
method:"subscribe",id:"0",params:{query:"tm.event = 'Tx'"}}));$ws$$.send(JSON.stringify({jsonrpc:"2.0",method:"subscribe",id:"1",params:{query:"at.event = 'auto'"}}));notiInterval=setInterval(()=>{const $values$$=Object.values(notificationPool);notificationPool={};0<$values$$.length&&console.log("create notifications",$values$$);$values$$.forEach($noti$$=>{User.emitEvent($noti$$.user,"blockchain.wallet.changed",{receiver:$noti$$.receiver,data:$noti$$.data});global.createNotification("SYSTEM",$noti$$.user,
|
|
46
49
|
$noti$$.title,$noti$$.body,$e$$=>{$e$$&&console.error($e$$.message)},$noti$$.data,!0)})},3E3)});$ws$$.on("message",async $data$jscomp$8_msg$$=>{($data$jscomp$8_msg$$=JSON.parse($data$jscomp$8_msg$$))&&$data$jscomp$8_msg$$.result&&$data$jscomp$8_msg$$.result.events&&($data$jscomp$8_msg$$.result.events["at.event"]&&$data$jscomp$8_msg$$.result.events["at.action"]&&processEventAt($data$jscomp$8_msg$$.result.events,$data$jscomp$8_msg$$),$data$jscomp$8_msg$$.result.events["tx.hash"]&&0<$data$jscomp$8_msg$$.result.events["tx.hash"].length&&
|
package/server/models/approve.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';const App=require("./app"),Options=require("./options"),ngcompile=require("ng-node-compile"),email=require("../libs/email"),utils=require("../libs/utils"),File=require("./file"),underscore=require("underscore"),crypto=require("crypto"),validator=require("validator"),User=require("./user"),moment=require("moment"),participant=require("./participant"),approveSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},id_ct:{type:String,required:!0,maxlength:1024},ma_ct:{type:String,
|
|
2
|
-
required:!0,maxlength:32},trang_thai:{type:String},user_request:{type:String,required:!0,maxlength:128},user_request_name:{type:String,required:!0,maxlength:1024},user_approves:[{email:{type:String,maxlength:128},name:{type:String,maxlength:1024}}],user_approved:{type:String,maxlength:128},user_approved_name:{type:String,maxlength:1024},date_approved:Date,approved_reason:String,user_denied:{type:String,maxlength:128},user_denied_name:{type:String,maxlength:1024},
|
|
3
|
-
maxlength:4E3},update_after_approve:Schema.Types.Mixed,title:{type:String,maxlength:1024},data:Schema.Types.Mixed,template_content:String,status:{type:Boolean,default:!1},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:2},visible_to_users:[String]});approveSchema.index({id_ct:1,id_app:1});approveSchema.index({trang_thai:1});
|
|
4
|
-
approveSchema.index({user_denied:1});approveSchema.index({status:1});approveSchema.index({user_request:"text",user_request_name:"text"},{name:"approve_index"});const model=mongoose.models.approve||mongoose.model("approve",approveSchema);let renderRequests=$requests$$=>$requests$$&&0!==$requests$$.length?`
|
|
2
|
+
required:!0,maxlength:32,trim:!0},trang_thai:{type:String},user_request:{type:String,required:!0,maxlength:128,trim:!0},user_request_name:{type:String,required:!0,maxlength:1024},user_approves:[{email:{type:String,maxlength:128,trim:!0},name:{type:String,maxlength:1024}}],user_approved:{type:String,maxlength:128,trim:!0},user_approved_name:{type:String,maxlength:1024},date_approved:Date,approved_reason:String,user_denied:{type:String,maxlength:128,trim:!0},user_denied_name:{type:String,maxlength:1024},
|
|
3
|
+
date_denied:Date,denied_reason:{type:String,maxlength:4E3},update_after_approve:Schema.Types.Mixed,title:{type:String,maxlength:1024},data:Schema.Types.Mixed,template_content:String,status:{type:Boolean,default:!1},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:2},visible_to_users:[String]});approveSchema.index({id_ct:1,id_app:1});approveSchema.index({trang_thai:1});
|
|
4
|
+
approveSchema.index({user_approved:1});approveSchema.index({user_denied:1});approveSchema.index({status:1});approveSchema.index({user_request:"text",user_request_name:"text"},{name:"approve_index"});const model=mongoose.models.approve||mongoose.model("approve",approveSchema);let renderRequests=$requests$$=>$requests$$&&0!==$requests$$.length?`
|
|
5
5
|
<p style='margin-top:50px'>
|
|
6
6
|
<hr/>
|
|
7
7
|
<h5>Danh s\u00e1ch \u0111\u00e3 duy\u1ec7t ho\u1eb7c t\u1eeb ch\u1ed1i</h5>
|
|
@@ -59,19 +59,19 @@ participant,{where:{user_denied:"email"},fields:{user_denied_name:"name"}});let
|
|
|
59
59
|
$emails$$=[$rq$$.user_request],$rqs$$=$e$jscomp$5_requests$$.map($a$$=>$a$$.user_request),$aps$$=$e$jscomp$5_requests$$.filter($r$$=>$r$$._id.toString()!==$rq$$._id.toString()).map($a$$=>$a$$.user_approved);$emails$$=[...(new Set($emails$$.concat($rqs$$).concat($aps$$)))].filter($r$$=>$r$$&&$r$$!==$rq$$.user_approved);$emails$$.forEach($email_receiver$$=>{email.sendHtml({to:{name:$email_receiver$$,address:$email_receiver$$},subject:`[\u0110\u00e3 duy\u1ec7t] ${$rq$$.title}`,html:$email_content$$,
|
|
60
60
|
app_info:$app_info$$},function($error$$){$error$$&&console.error("Khong the gui thong bao da duyet toi "+$rq$$.user_request+"\n"+$error$$)})})}catch($e$$){console.log("Error send email",$e$$.message)}}):console.log("don't find email template or report template to send notify email to request user")})};
|
|
61
61
|
model.approve=function($_c$$,$callback$$,$token$$,$options$$={reason:""}){let $key_data$$,$_id$$,$user_approved$$,$user_approved_name$$,$trang_thai$$;if(underscore.isObject($_c$$))$_id$$=$_c$$.id_request,$user_approved$$=$_c$$.email,$user_approved_name$$=$_c$$.name,$trang_thai$$=$_c$$.trang_thai;else try{const $decipher$$=crypto.createDecipher("aes192","PVT@1");let $decrypted$$=$decipher$$.update($_c$$,"hex","utf8");$decrypted$$+=$decipher$$.final("utf8");$key_data$$=JSON.parse($decrypted$$);$_id$$=
|
|
62
|
-
$key_data$$.id_request;$user_approved$$=$key_data$$.email;$user_approved_name$$=$key_data$$.name;$trang_thai$$=$key_data$$.trang_thai}catch($e$$){return $callback$$("Y\u00eau c\u1ea7u n\u00e0y kh\u00f4ng c\u00f3 gi\u00e1 tr\u1ecb")}if(!$_id$$||!$user_approved$$)return $callback$$("request id and approve user are required");$_c$$={_id:$_id$$};void 0!==$trang_thai$$&&null!==$trang_thai$$&&
|
|
63
|
-
"Y\u00eau c\u1ea7u n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");if($rq$$.date_approved)return $callback$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c duy\u1ec7t b\u1edfi "+$rq$$.user_approved_name);if($rq$$.date_denied)return $callback$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 b\u1ecb t\u1eeb ch\u1ed1i duy\u1ec7t b\u1edfi "+$rq$$.user_denied_name);$rq$$.date_approved=
|
|
64
|
-
"";if(!$rq$$.user_approves||!$rq$$.user_approves.find($u$$=>0<=$u$$.email.indexOf($user_approved$$)))return $callback$$("User n\u00e0y kh\u00f4ng c\u00f3 quy\u1ec1n duy\u1ec7t y\u00eau c\u1ea7u n\u00e0y");$rq$$.save(($e$jscomp$2$$,$approve$$)=>{if($e$jscomp$2$$)return $callback$$($e$jscomp$2$$);model.sendNotifyApproved($rq$$,$token$$);if($rq$$.update_after_approve
|
|
65
|
-
($ctrl$$=global.controllers[$module_name$$.toUpperCase()]);let $_m$$;$rq$$.update_after_approve.model?$_m$$=global.getModel($rq$$.update_after_approve.model):$ctrl$$&&($_m$$=$ctrl$$.getProperty("model"));if(!$_m$$)return;$_m$$.findOneAndUpdate({_id:$rq$$.id_ct},$rq$$.update_after_approve.data,async $e$jscomp$1$$=>{if($e$jscomp$1$$)return console.error("Can't update data after approved, error:"
|
|
66
|
-
await User.findOne({email:$user_approved$$});$u$$.current_id_app=$obj$$.id_app;const $app_info$$=await App.findOne({_id:$obj$$.id_app});$ctrl$$.handleAfterAproved&&await $ctrl$$.handleAfterAproved($obj$$);console.log("request to approve next step");$ctrl$$.onView($u$$,[$obj$$.toObject()],($e$jscomp$0$$,$rs$$)=>{$ctrl$$.requestApprove($app_info$$,$u$$,$rs$$[0],$e$$=>{$e$$&&console.error($e$$)})})}}catch($e$$){console.error($e$$)}})}catch($e$$){console.error("Can't update data after approved, error:",
|
|
62
|
+
$key_data$$.id_request;$user_approved$$=$key_data$$.email;$user_approved_name$$=$key_data$$.name;$trang_thai$$=$key_data$$.trang_thai}catch($e$$){return $callback$$("Y\u00eau c\u1ea7u n\u00e0y kh\u00f4ng c\u00f3 gi\u00e1 tr\u1ecb")}if(!$_id$$||!$user_approved$$)return $callback$$("request id and approve user are required");if(!global.mongoose.Types.ObjectId.isValid($_id$$))return $callback$$("request id '"+$_id$$+"' is not valid");$_c$$={_id:$_id$$};void 0!==$trang_thai$$&&null!==$trang_thai$$&&
|
|
63
|
+
($_c$$.trang_thai=$trang_thai$$);model.findOne($_c$$,($e$jscomp$3$$,$rq$$)=>{if($e$jscomp$3$$||!$rq$$)return $callback$$($e$jscomp$3$$||"Y\u00eau c\u1ea7u n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");if($rq$$.date_approved)return $callback$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c duy\u1ec7t b\u1edfi "+$rq$$.user_approved_name);if($rq$$.date_denied)return $callback$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 b\u1ecb t\u1eeb ch\u1ed1i duy\u1ec7t b\u1edfi "+$rq$$.user_denied_name);$rq$$.date_approved=
|
|
64
|
+
new Date;$rq$$.user_approved=$user_approved$$;$rq$$.user_approved_name=$user_approved_name$$;$rq$$.approved_reason=$options$$.reason||"";if(!$rq$$.user_approves||!$rq$$.user_approves.find($u$$=>0<=$u$$.email.indexOf($user_approved$$)))return $callback$$("User n\u00e0y kh\u00f4ng c\u00f3 quy\u1ec1n duy\u1ec7t y\u00eau c\u1ea7u n\u00e0y");$rq$$.save(($e$jscomp$2$$,$approve$$)=>{if($e$jscomp$2$$)return $callback$$($e$jscomp$2$$);model.sendNotifyApproved($rq$$,$token$$);if($rq$$.update_after_approve&&
|
|
65
|
+
$rq$$.update_after_approve.data)try{let $module_name$$=$rq$$.update_after_approve.module||$rq$$.update_after_approve.model,$ctrl$$;$module_name$$&&($ctrl$$=global.controllers[$module_name$$.toUpperCase()]);let $_m$$;$rq$$.update_after_approve.model?$_m$$=global.getModel($rq$$.update_after_approve.model):$ctrl$$&&($_m$$=$ctrl$$.getProperty("model"));if(!$_m$$)return;$_m$$.findOneAndUpdate({_id:$rq$$.id_ct},$rq$$.update_after_approve.data,async $e$jscomp$1$$=>{if($e$jscomp$1$$)return console.error("Can't update data after approved, error:",
|
|
66
|
+
$e$jscomp$1$$);if($ctrl$$)try{const $obj$$=await $_m$$.findOne({_id:$rq$$.id_ct});if($obj$$){const $u$$=await User.findOne({email:$user_approved$$});$u$$.current_id_app=$obj$$.id_app;const $app_info$$=await App.findOne({_id:$obj$$.id_app});$ctrl$$.handleAfterAproved&&await $ctrl$$.handleAfterAproved($obj$$);console.log("request to approve next step");$ctrl$$.onView($u$$,[$obj$$.toObject()],($e$jscomp$0$$,$rs$$)=>{$ctrl$$.requestApprove($app_info$$,$u$$,$rs$$[0],$e$$=>{$e$$&&console.error($e$$)})})}}catch($e$$){console.error($e$$)}})}catch($e$$){console.error("Can't update data after approved, error:",
|
|
67
67
|
$e$$.message)}$callback$$(null,$approve$$)})})};
|
|
68
68
|
model.deny=function($_c$jscomp$2_encrypted$$,$callback$$,$token$$,$options$$={reason:""}){let $key_data$$,$_id$$,$user_denied$$,$user_denied_name$$,$trang_thai$$;if(underscore.isObject($_c$jscomp$2_encrypted$$))$_id$$=$_c$jscomp$2_encrypted$$.id_request,$user_denied$$=$_c$jscomp$2_encrypted$$.email,$user_denied_name$$=$_c$jscomp$2_encrypted$$.name,$trang_thai$$=$_c$jscomp$2_encrypted$$.trang_thai;else try{const $decipher$$=crypto.createDecipher("aes192","PVT@1");let $decrypted$$=$decipher$$.update($_c$jscomp$2_encrypted$$,
|
|
69
|
-
"hex","utf8");$decrypted$$+=$decipher$$.final("utf8");$key_data$$=JSON.parse($decrypted$$);$_id$$=$key_data$$.id_request;$user_denied$$=$key_data$$.email;$user_denied_name$$=$key_data$$.name;$trang_thai$$=$key_data$$.trang_thai}catch($e$$){return $callback$$("Y\u00eau c\u1ea7u n\u00e0y kh\u00f4ng c\u00f3 gi\u00e1 tr\u1ecb")}if(!$_id$$||!$user_denied$$)return $callback$$("request id and deny user are required")
|
|
70
|
-
$trang_thai$$);model.findOne($_c$jscomp$2_encrypted$$,($e$jscomp$2$$,$rq$$)=>{if($e$jscomp$2$$||!$rq$$)return $callback$$($e$jscomp$2$$||"Y\u00eau c\u1ea7u n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");if($rq$$.date_approved)return $callback$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c duy\u1ec7t b\u1edfi "+$rq$$.user_approved_name);if($rq$$.date_denied)return $callback$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 b\u1ecb t\u1eeb ch\u1ed1i duy\u1ec7t b\u1edfi "
|
|
71
|
-
new Date;$rq$$.user_denied=$user_denied$$;$rq$$.user_denied_name=$user_denied_name$$;$rq$$.denied_reason=$options$$.reason||"";if(!$rq$$.user_approves||!$rq$$.user_approves.find($u$$=>0<=$u$$.email.indexOf($user_denied$$)))return $callback$$("User n\u00e0y kh\u00f4ng c\u00f3 quy\u1ec1n duy\u1ec7t y\u00eau c\u1ea7u n\u00e0y");$rq$$.save(($e$jscomp$1$$,$approve$$)=>{if($e$jscomp$1$$)return $callback$$($e$jscomp$1$$);App.emitEvent($rq$$.id_app,null,{_id:$rq$$.id_ct,
|
|
72
|
-
code:$rq$$.ma_ct},$token$$,[$rq$$.user_request]);validator.isEmail($rq$$.user_request)&&Options.findOne({id_app:$rq$$.id_app,id_func:{$regex:$rq$$.ma_ct,$options:"i"}}).lean().exec(($e$jscomp$0$$,$option$$)=>{$rq$$.template_content||$option$$&&$option$$.option&&$option$$.option.system&&($option$$.option.system.templateEmail||$option$$.option.system.templateRpt)?App.findOne({_id:$rq$$.id_app}).lean().exec(async($e$jscomp$19_requests
|
|
73
|
-
$e$jscomp$19_requests$$=await model.find({id_ct:$rq$$.data._id}).sort({trang_thai:-1}).lean();await $e$jscomp$19_requests$$.asyncJoinModel2($rq$$.id_app,participant,{where:{user_approved:"email"},fields:{user_approved_name:"name"}});await $e$jscomp$19_requests$$.asyncJoinModel2($rq$$.id_app,participant,{where:{user_denied:"email"},fields:{user_denied_name:"name"}});let $template$$=
|
|
74
|
-
$template$$=`
|
|
69
|
+
"hex","utf8");$decrypted$$+=$decipher$$.final("utf8");$key_data$$=JSON.parse($decrypted$$);$_id$$=$key_data$$.id_request;$user_denied$$=$key_data$$.email;$user_denied_name$$=$key_data$$.name;$trang_thai$$=$key_data$$.trang_thai}catch($e$$){return $callback$$("Y\u00eau c\u1ea7u n\u00e0y kh\u00f4ng c\u00f3 gi\u00e1 tr\u1ecb")}if(!$_id$$||!$user_denied$$)return $callback$$("request id and deny user are required");if(!global.mongoose.Types.ObjectId.isValid($_id$$))return $callback$$("request id '"+$_id$$+
|
|
70
|
+
"' is not valid");$_c$jscomp$2_encrypted$$={_id:$_id$$};void 0!==$trang_thai$$&&null!==$trang_thai$$&&($_c$jscomp$2_encrypted$$.trang_thai=$trang_thai$$);model.findOne($_c$jscomp$2_encrypted$$,($e$jscomp$2$$,$rq$$)=>{if($e$jscomp$2$$||!$rq$$)return $callback$$($e$jscomp$2$$||"Y\u00eau c\u1ea7u n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");if($rq$$.date_approved)return $callback$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c duy\u1ec7t b\u1edfi "+$rq$$.user_approved_name);if($rq$$.date_denied)return $callback$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 b\u1ecb t\u1eeb ch\u1ed1i duy\u1ec7t b\u1edfi "+
|
|
71
|
+
$rq$$.user_denied_name);$rq$$.date_denied=new Date;$rq$$.user_denied=$user_denied$$;$rq$$.user_denied_name=$user_denied_name$$;$rq$$.denied_reason=$options$$.reason||"";if(!$rq$$.user_approves||!$rq$$.user_approves.find($u$$=>0<=$u$$.email.indexOf($user_denied$$)))return $callback$$("User n\u00e0y kh\u00f4ng c\u00f3 quy\u1ec1n duy\u1ec7t y\u00eau c\u1ea7u n\u00e0y");$rq$$.save(($e$jscomp$1$$,$approve$$)=>{if($e$jscomp$1$$)return $callback$$($e$jscomp$1$$);App.emitEvent($rq$$.id_app,null,{_id:$rq$$.id_ct,
|
|
72
|
+
id_app:$rq$$.id_app,body:"Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 b\u1ecb t\u1eeb ch\u1ed1i duy\u1ec7t",code:$rq$$.ma_ct},$token$$,[$rq$$.user_request]);validator.isEmail($rq$$.user_request)&&Options.findOne({id_app:$rq$$.id_app,id_func:{$regex:$rq$$.ma_ct,$options:"i"}}).lean().exec(($e$jscomp$0$$,$option$$)=>{$rq$$.template_content||$option$$&&$option$$.option&&$option$$.option.system&&($option$$.option.system.templateEmail||$option$$.option.system.templateRpt)?App.findOne({_id:$rq$$.id_app}).lean().exec(async($e$jscomp$19_requests$$,
|
|
73
|
+
$app_info$$)=>{if($e$jscomp$19_requests$$||!$app_info$$)return console.log("khong the tim thay thong tin cong ty nay");$e$jscomp$19_requests$$=await model.find({id_ct:$rq$$.data._id}).sort({trang_thai:-1}).lean();await $e$jscomp$19_requests$$.asyncJoinModel2($rq$$.id_app,participant,{where:{user_approved:"email"},fields:{user_approved_name:"name"}});await $e$jscomp$19_requests$$.asyncJoinModel2($rq$$.id_app,participant,{where:{user_denied:"email"},fields:{user_denied_name:"name"}});let $template$$=
|
|
74
|
+
($rq$$.template_content||$option$$.option.system.templateEmail||$option$$.option.system.templateRpt).split("<em>").join("").split("</em>").join("");$template$$=`
|
|
75
75
|
<div>
|
|
76
76
|
<h3>Y\u00eau c\u1ea7u d\u01b0\u1edbi \u0111\u00e2y \u0111\u00e3 b\u1ecb t\u1eeb ch\u1ed1i duy\u1ec7t b\u1edfi ${$rq$$.user_denied_name} </h3>
|
|
77
77
|
<div style='color:red'>L\u00fd do t\u1eeb ch\u1ed1i: ${$rq$$.denied_reason} </div>
|
package/server/models/area.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
'use strict';const areaSchema=new Schema({id_app:{type:String,required:!0},area_type:{type:String,uppercase:!0,maxlength:32},area_code:{type:String,required:!0,uppercase:!0,maxlength:32},area_name:{type:String,required:!0,maxlength:1024},stt:{type:Number,default:0},ma_kho:{type:String,maxlength:32},color:{type:String,maxlength:32},picture:{type:String,maxlength:1024},short_description:{type:String,maxlength:1024},description:{type:String},tinh_thanh:{type:String,maxlength:1024},
|
|
2
|
-
maxlength:1024},address:{type:String,required:!0,maxlength:1024},phone:{type:String,maxlength:1024},email:{type:String,maxlength:1024},active:{type:Boolean,default:!0},location:Schema.Types.Mixed,exfields:Schema.Types.Mixed,coWorking:{type:Boolean},coLiving:{type:Boolean},id_company:String,shared:Boolean,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,
|
|
3
|
-
default:0},visible_to_users:[String],dataview_to:{type:Number,default:0},dataview_to_users:[String]});areaSchema.index({id_app:1,area_type:1,area_name:1,area_code:1,address:1});areaSchema.index({area_name:"text",area_code:"text",address:"text"},{name:"area_index"});areaSchema.index({status:1});areaSchema.index({user_created:1,visible_to:1,visible_to_users:1});const model=mongoose.models.area||mongoose.model("area",areaSchema);module.exports=model;
|
|
1
|
+
'use strict';const areaSchema=new Schema({id_app:{type:String,required:!0},area_type:{type:String,uppercase:!0,maxlength:32,trim:!0},area_code:{type:String,required:!0,uppercase:!0,maxlength:32,trim:!0},area_name:{type:String,required:!0,maxlength:1024},stt:{type:Number,default:0},ma_kho:{type:String,maxlength:32,trim:!0},color:{type:String,maxlength:32},picture:{type:String,maxlength:1024},short_description:{type:String,maxlength:1024},description:{type:String},tinh_thanh:{type:String,maxlength:1024},
|
|
2
|
+
quan_huyen:{type:String,maxlength:1024},address:{type:String,required:!0,maxlength:1024},phone:{type:String,maxlength:1024},email:{type:String,maxlength:1024},active:{type:Boolean,default:!0},location:Schema.Types.Mixed,exfields:Schema.Types.Mixed,coWorking:{type:Boolean},coLiving:{type:Boolean},id_company:String,shared:Boolean,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,
|
|
3
|
+
default:""},visible_to:{type:Number,default:0},visible_to_users:[String],dataview_to:{type:Number,default:0},dataview_to_users:[String]});areaSchema.index({id_app:1,area_type:1,area_name:1,area_code:1,address:1});areaSchema.index({area_name:"text",area_code:"text",address:"text"},{name:"area_index"});areaSchema.index({status:1});areaSchema.index({user_created:1,visible_to:1,visible_to_users:1});const model=mongoose.models.area||mongoose.model("area",areaSchema);module.exports=model;
|
package/server/models/assbuy.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
'use strict';const assbuySchema=new Schema({id_app:String,creator:{type:String,required:!0},id:{type:String},id_sell:{type:String,required:!0},token:{type:String,required:!0,lowercase:!0},nguyen_gia:{type:Number},denom:{type:String,required:!0,lowercase:!0},so_luong_ban:{type:Number},gia_ban:{type:Number},so_luong:{type:Number,required:!0},gia_mua:{type:Number,required:!0},tong_gia_tri:{type:Number},exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,
|
|
2
|
-
date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});assbuySchema.index({id_app:1});assbuySchema.index({creator:1});assbuySchema.index({id:1});assbuySchema.index({id_sell:1});assbuySchema.index({denom:1});assbuySchema.index({token:1});assbuySchema.index({status:1});assbuySchema.index({user_created:1});assbuySchema.index({creator:"text",id_sell:"text",token:"text",denom:"text"},{name:"assbuy_index2"});
|
|
1
|
+
'use strict';const assbuySchema=new Schema({id_app:String,creator:{type:String,required:!0},id:{type:String,trim:!0},id_sell:{type:String,required:!0},token:{type:String,required:!0,lowercase:!0},nguyen_gia:{type:Number},denom:{type:String,required:!0,lowercase:!0,trim:!0},so_luong_ban:{type:Number},gia_ban:{type:Number},so_luong:{type:Number,required:!0},gia_mua:{type:Number,required:!0},tong_gia_tri:{type:Number},exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,
|
|
2
|
+
default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});assbuySchema.index({id_app:1});assbuySchema.index({creator:1});assbuySchema.index({id:1});assbuySchema.index({id_sell:1});assbuySchema.index({denom:1});assbuySchema.index({token:1});assbuySchema.index({status:1});assbuySchema.index({user_created:1});assbuySchema.index({creator:"text",id_sell:"text",token:"text",denom:"text"},{name:"assbuy_index2"});
|
|
3
3
|
const model=mongoose.models.assbuy||mongoose.model("assbuy",assbuySchema);model.on("index",async function($err$$){$err$$?console.error("assbuy index error",$err$$):console.info("assbuy indexing complete")});module.exports=model;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
'use strict';const asscashwithdrawSchema=new Schema({id_app:String,creator:{type:String,required:!0},id:{type:String},token:{type:String,required:!0,lowercase:!0},amount:{type:Number,required:!0},require_date:Date,payer:{type:String},payment_date:Date,trang_thai:String,note:String,ten_ngan_hang:String,ten_tk:String,so_tk:String,exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},
|
|
2
|
-
default:""},user_updated:{type:String,default:""}});asscashwithdrawSchema.index({id_app:1});asscashwithdrawSchema.index({creator:1});asscashwithdrawSchema.index({id:1});asscashwithdrawSchema.index({payer:1});asscashwithdrawSchema.index({token:1});asscashwithdrawSchema.index({require_date:-1});asscashwithdrawSchema.index({payment_date:-1});asscashwithdrawSchema.index({trang_thai:1});asscashwithdrawSchema.index({status:1});asscashwithdrawSchema.index({user_created:1});
|
|
1
|
+
'use strict';const asscashwithdrawSchema=new Schema({id_app:String,creator:{type:String,required:!0,trim:!0},id:{type:String,trim:!0},token:{type:String,required:!0,lowercase:!0,trim:!0},amount:{type:Number,required:!0},require_date:Date,payer:{type:String,trim:!0},payment_date:Date,trang_thai:String,note:String,ten_ngan_hang:String,ten_tk:String,so_tk:String,exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},
|
|
2
|
+
user_created:{type:String,default:""},user_updated:{type:String,default:""}});asscashwithdrawSchema.index({id_app:1});asscashwithdrawSchema.index({creator:1});asscashwithdrawSchema.index({id:1});asscashwithdrawSchema.index({payer:1});asscashwithdrawSchema.index({token:1});asscashwithdrawSchema.index({require_date:-1});asscashwithdrawSchema.index({payment_date:-1});asscashwithdrawSchema.index({trang_thai:1});asscashwithdrawSchema.index({status:1});asscashwithdrawSchema.index({user_created:1});
|
|
3
3
|
asscashwithdrawSchema.index({creator:"text",token:"text",payer:"text",note:"text"},{name:"asscashwithdraw_index2"});const model=mongoose.models.asscashwithdraw||mongoose.model("asscashwithdraw",asscashwithdrawSchema);model.on("index",async function($err$$){$err$$?console.error("asscashwithdraw index error",$err$$):console.info("asscashwithdraw indexing complete")});module.exports=model;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
'use strict';const assinvestmentSchema=new Schema({id_app:String,so_hd:{required:!0,type:String,set:function($so_hd$$){this._previous_so_hd=this.so_hd;return $so_hd$$}},ngay_hd:{type:Date,default:Date.now},creator:{type:String,required:!0},id:{type:String},id_product:{type:String},ten_san_pham:{type:String},id_period:{type:String,required:!0},ten_ky_han:{type:String},product_token:{type:String,lowercase:!0},token:{type:String,lowercase:!0},co_phan:Boolean,
|
|
2
|
-
required:!0},tong_gia_tri:{type:Number},lai_suat_cam_ket:{type:Number},ky_tinh_lai:{type:Number},ngay_phat_hanh:{type:Date},ky_han:{type:Number},ngay_dao_han:{type:Date},cho_phep_rut_von:{type:Boolean},lai_suat_truoc_han:{type:Number},tg_xu_ly_rut_von:{type:Number},cho_phep_chuyen_nhuong:{type:Boolean},denom:{type:String},da_dao_han:{type:Boolean},trang_thai:{type:String,default:"1"},thong_tin_hop_dong:Schema.Types.Mixed,exfields:Schema.Types.Mixed,
|
|
3
|
-
default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});assinvestmentSchema.index({id_app:1});assinvestmentSchema.index({creator:1});assinvestmentSchema.index({id:1});assinvestmentSchema.index({id_product:1});assinvestmentSchema.index({ten_san_pham:1});assinvestmentSchema.index({product_token:1});assinvestmentSchema.index({co_phan:1});assinvestmentSchema.index({id_period:1});
|
|
4
|
-
assinvestmentSchema.index({cho_phep_rut_von:1});assinvestmentSchema.index({cho_phep_chuyen_nhuong:1});assinvestmentSchema.index({da_dao_han:1});assinvestmentSchema.index({denom:1});assinvestmentSchema.index({token:1});assinvestmentSchema.index({status:1});assinvestmentSchema.index({user_created:1});assinvestmentSchema.index({creator:"text",product_token:"text",token:"text",ten_san_pham:"text",ten_ky_han:"text",denom:"text"},{name:"assinvestment_index2"});
|
|
1
|
+
'use strict';const assinvestmentSchema=new Schema({id_app:String,so_hd:{required:!0,type:String,set:function($so_hd$$){this._previous_so_hd=this.so_hd;return $so_hd$$},trim:!0},ngay_hd:{type:Date,default:Date.now},creator:{type:String,required:!0,trim:!0},id:{type:String,trim:!0},id_product:{type:String,trim:!0},ten_san_pham:{type:String},id_period:{type:String,required:!0,trim:!0},ten_ky_han:{type:String},product_token:{type:String,lowercase:!0,trim:!0},token:{type:String,lowercase:!0,trim:!0},co_phan:Boolean,
|
|
2
|
+
lai_da_tra:Number,gia:{type:Number},so_luong:{type:Number,required:!0},tong_gia_tri:{type:Number},lai_suat_cam_ket:{type:Number},ky_tinh_lai:{type:Number},ngay_phat_hanh:{type:Date},ky_han:{type:Number},ngay_dao_han:{type:Date},cho_phep_rut_von:{type:Boolean},lai_suat_truoc_han:{type:Number},tg_xu_ly_rut_von:{type:Number},cho_phep_chuyen_nhuong:{type:Boolean},denom:{type:String,trim:!0},da_dao_han:{type:Boolean},trang_thai:{type:String,default:"1"},thong_tin_hop_dong:Schema.Types.Mixed,exfields:Schema.Types.Mixed,
|
|
3
|
+
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:""}});assinvestmentSchema.index({id_app:1});assinvestmentSchema.index({creator:1});assinvestmentSchema.index({id:1});assinvestmentSchema.index({id_product:1});assinvestmentSchema.index({ten_san_pham:1});assinvestmentSchema.index({product_token:1});assinvestmentSchema.index({co_phan:1});assinvestmentSchema.index({id_period:1});
|
|
4
|
+
assinvestmentSchema.index({ten_ky_han:1});assinvestmentSchema.index({cho_phep_rut_von:1});assinvestmentSchema.index({cho_phep_chuyen_nhuong:1});assinvestmentSchema.index({da_dao_han:1});assinvestmentSchema.index({denom:1});assinvestmentSchema.index({token:1});assinvestmentSchema.index({status:1});assinvestmentSchema.index({user_created:1});assinvestmentSchema.index({creator:"text",product_token:"text",token:"text",ten_san_pham:"text",ten_ky_han:"text",denom:"text"},{name:"assinvestment_index2"});
|
|
5
5
|
assinvestmentSchema.pre("save",function($next$$){if(!this.so_hd)return $next$$();const $self$$=this;this.isNew||this.so_hd!=this._previous_so_hd?mongoose.models.customer.countDocuments({id_app:this.id_app,so_hd:this.so_hd},($e$$,$count$$)=>{0<$count$$?$next$$(Error(`S\u1ed1 h\u1ee3p \u0111\u1ed3ng '${$self$$.so_hd}' \u0111\u00e3 t\u1ed3n t\u1ea1i`)):$next$$()}):$next$$()});const model=mongoose.models.assinvestment||mongoose.model("assinvestment",assinvestmentSchema);
|
|
6
6
|
model.on("index",async function($err$$){$err$$?console.error("AssInvestmnet index error",$err$$):console.info("AssInvestmnet indexing complete")});
|
|
7
7
|
model.getPercentOfSteps=$steps$$=>{let $owners$$=[];$steps$$.filter($s$$=>"4"==$s$$.trang_thai||"5"==$s$$.trang_thai).sort(($a$$,$b$$)=>$a$$.stt-$b$$.stt).forEach($s$$=>{let $owner$$={code:$s$$.code,name:$s$$.name,sl_slot:$s$$.sl_slot,gt_slot:$s$$.gt_slot,dillution:$s$$.dillution,raise:$s$$.raise,percent:$s$$.dillution||100,investment:$s$$.raise||$s$$.valuation};$owners$$.forEach($o$$=>{$o$$.percent*=1-$s$$.dillution/100});$owners$$.push($owner$$);$owners$$.forEach($o$$=>{$o$$.valuation=Math.round($s$$.valuation*
|
package/server/models/asskey.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';const asskeySchema=new Schema({id_app:String,name:String,username:{type:String,required:!0,maxlength:1024},address:{type:String,required:!0,maxlength:2024},mnemonic:String,private_key:String,note:String,asset:{type:String,uppercase:!0},exfields:Schema.Types.Mixed,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:""}});asskeySchema.index({id_app:1});
|
|
1
|
+
'use strict';const asskeySchema=new Schema({id_app:String,name:String,username:{type:String,required:!0,maxlength:1024,trim:!0},address:{type:String,required:!0,maxlength:2024,trim:!0},mnemonic:String,private_key:String,note:String,asset:{type:String,uppercase:!0,trim:!0},exfields:Schema.Types.Mixed,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:""}});asskeySchema.index({id_app:1});
|
|
2
2
|
asskeySchema.index({username:1,address:1});asskeySchema.index({note:1});asskeySchema.index({name:1});asskeySchema.index({status:1});asskeySchema.index({user_created:1});asskeySchema.index({username:"text",address:"text",note:"text",name:"text"},{name:"asskey_index"});const model=mongoose.models.asskey||mongoose.model("asskey",asskeySchema);model.on("index",async function($err$$){$err$$?console.error("asskey index error",$err$$):console.info("asskey indexing complete")});module.exports=model;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';const assneedtobuySchema=new Schema({id_app:String,creator:{type:String,required:!0},id:{type:String},id_product:{type:String},product_token:{type:String,lowercase:!0},ten_san_pham:{type:String},id_period:{type:String,required:!0},ten_ky_han:{type:String},ky_han:Number,gia_goc:Number,lai_suat_cam_ket:Number,ten_lh_dt:String,so_luong:Number,thoi_gian_con_lai:Number,gia_mua:Number,denom:{type:String,lowercase:!0},ngay_het_han:Date,trang_thai:String,
|
|
2
|
-
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:""}});assneedtobuySchema.index({id_app:1});assneedtobuySchema.index({creator:1});assneedtobuySchema.index({id:1});assneedtobuySchema.index({id_product:1});assneedtobuySchema.index({product_token:1});assneedtobuySchema.index({ten_san_pham:1});assneedtobuySchema.index({id_period:1});assneedtobuySchema.index({ten_ky_han:1});
|
|
3
|
-
assneedtobuySchema.index({gia_goc:1});assneedtobuySchema.index({lai_suat_cam_ket:1});assneedtobuySchema.index({ten_lh_dt:1});assneedtobuySchema.index({so_luong:1});assneedtobuySchema.index({ngay_het_han:1});assneedtobuySchema.index({denom:1});assneedtobuySchema.index({trang_thai:1});assneedtobuySchema.index({status:1});assneedtobuySchema.index({user_created:1});assneedtobuySchema.index({creator:"text",ten_san_pham:"text",ten_ky_han:"text",denom:"text"},{name:"assneedtobuy_index2"});
|
|
1
|
+
'use strict';const assneedtobuySchema=new Schema({id_app:String,creator:{type:String,required:!0,trim:!0},id:{type:String,trim:!0},id_product:{type:String,trim:!0},product_token:{type:String,lowercase:!0,trim:!0},ten_san_pham:{type:String},id_period:{type:String,required:!0,trim:!0},ten_ky_han:{type:String},ky_han:Number,gia_goc:Number,lai_suat_cam_ket:Number,ten_lh_dt:String,so_luong:Number,thoi_gian_con_lai:Number,gia_mua:Number,denom:{type:String,lowercase:!0,trim:!0},ngay_het_han:Date,trang_thai:String,
|
|
2
|
+
exfields:Schema.Types.Mixed,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:""}});assneedtobuySchema.index({id_app:1});assneedtobuySchema.index({creator:1});assneedtobuySchema.index({id:1});assneedtobuySchema.index({id_product:1});assneedtobuySchema.index({product_token:1});assneedtobuySchema.index({ten_san_pham:1});assneedtobuySchema.index({id_period:1});assneedtobuySchema.index({ten_ky_han:1});
|
|
3
|
+
assneedtobuySchema.index({ky_han:1});assneedtobuySchema.index({gia_goc:1});assneedtobuySchema.index({lai_suat_cam_ket:1});assneedtobuySchema.index({ten_lh_dt:1});assneedtobuySchema.index({so_luong:1});assneedtobuySchema.index({ngay_het_han:1});assneedtobuySchema.index({denom:1});assneedtobuySchema.index({trang_thai:1});assneedtobuySchema.index({status:1});assneedtobuySchema.index({user_created:1});assneedtobuySchema.index({creator:"text",ten_san_pham:"text",ten_ky_han:"text",denom:"text"},{name:"assneedtobuy_index2"});
|
|
4
4
|
const model=mongoose.models.assneedtobuy||mongoose.model("assneedtobuy",assneedtobuySchema);model.on("index",async function($err$$){$err$$?console.error("assneedtobuy index error",$err$$):console.info("assneedtobuy indexing complete")});module.exports=model;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
'use strict';const assperiodSchema=new Schema({id_app:String,creator:{type:String},id:{type:String},ten_ky_han:{type:String},id_product:{type:String},ten_san_pham:{type:String},product_token:{type:String,lowercase:!0},gia:{type:Number},lai_suat_cam_ket:{type:Number},lai_suat_truoc_han:{type:Number},ky_han:{type:Number},ky_tinh_lai:{type:Number},chia_loi_nhuan:Boolean,loi_nhuan_duoc_chia:Number,ngay_chia_loi_nhuan:Date,lai_suat_thoi_gian_con_lai:Number,tong_so_token:{type:Number},
|
|
2
|
-
cho_phep_rut_von:{type:Boolean},tg_xu_ly_rut_von:{type:Number,default:0},cho_phep_chuyen_nhuong:{type:Boolean},hoat_dong:{type:Boolean},denom:{type:String},co_phan:Boolean,goi_dau_tu:Boolean,ngay_phat_hanh:Date,id_rpt:String,lai_suat_tang_them_so_huu_token:Number,token_so_huu:String,so_luong_so_huu:Number,so_ngay_dau_tu_toi_thieu:Number,tru_lai_da_tra:Boolean,trang_thai:String,visible_to:{type:Number,default:0},visible_to_users:[String],exfields:Schema.Types.Mixed,
|
|
3
|
-
date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});assperiodSchema.index({id_app:1});assperiodSchema.index({creator:1});assperiodSchema.index({id:1});assperiodSchema.index({ten_ky_han:1});assperiodSchema.index({id_product:1});assperiodSchema.index({product_token:1});assperiodSchema.index({visible_to:1});assperiodSchema.index({visible_to_users:1});assperiodSchema.index({ten_san_pham:1});
|
|
4
|
-
assperiodSchema.index({ngay_phat_hanh:-1});assperiodSchema.index({cho_phep_rut_von:1});assperiodSchema.index({cho_phep_chuyen_nhuong:1});assperiodSchema.index({hoat_dong:1});assperiodSchema.index({denom:1});assperiodSchema.index({trang_thai:1});assperiodSchema.index({status:1});assperiodSchema.index({user_created:1});assperiodSchema.index({creator:"text",ten_san_pham:"text",ten_ky_han:"text",denom:"text"},{name:"assperiod_index2"});
|
|
1
|
+
'use strict';const assperiodSchema=new Schema({id_app:String,creator:{type:String,trim:!0},id:{type:String,trim:!0},ten_ky_han:{type:String},id_product:{type:String,trim:!0},ten_san_pham:{type:String},product_token:{type:String,lowercase:!0,trim:!0},gia:{type:Number},lai_suat_cam_ket:{type:Number},lai_suat_truoc_han:{type:Number},ky_han:{type:Number},ky_tinh_lai:{type:Number},chia_loi_nhuan:Boolean,loi_nhuan_duoc_chia:Number,ngay_chia_loi_nhuan:Date,lai_suat_thoi_gian_con_lai:Number,tong_so_token:{type:Number},
|
|
2
|
+
da_dau_tu:{type:Number},cho_phep_rut_von:{type:Boolean},tg_xu_ly_rut_von:{type:Number,default:0},cho_phep_chuyen_nhuong:{type:Boolean},hoat_dong:{type:Boolean},denom:{type:String,trim:!0},co_phan:Boolean,goi_dau_tu:Boolean,ngay_phat_hanh:Date,id_rpt:String,lai_suat_tang_them_so_huu_token:Number,token_so_huu:String,so_luong_so_huu:Number,so_ngay_dau_tu_toi_thieu:Number,tru_lai_da_tra:Boolean,trang_thai:String,visible_to:{type:Number,default:0},visible_to_users:[String],exfields:Schema.Types.Mixed,
|
|
3
|
+
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:""}});assperiodSchema.index({id_app:1});assperiodSchema.index({creator:1});assperiodSchema.index({id:1});assperiodSchema.index({ten_ky_han:1});assperiodSchema.index({id_product:1});assperiodSchema.index({product_token:1});assperiodSchema.index({visible_to:1});assperiodSchema.index({visible_to_users:1});assperiodSchema.index({ten_san_pham:1});
|
|
4
|
+
assperiodSchema.index({co_phan:1});assperiodSchema.index({ngay_phat_hanh:-1});assperiodSchema.index({cho_phep_rut_von:1});assperiodSchema.index({cho_phep_chuyen_nhuong:1});assperiodSchema.index({hoat_dong:1});assperiodSchema.index({denom:1});assperiodSchema.index({trang_thai:1});assperiodSchema.index({status:1});assperiodSchema.index({user_created:1});assperiodSchema.index({creator:"text",ten_san_pham:"text",ten_ky_han:"text",denom:"text"},{name:"assperiod_index2"});
|
|
5
5
|
const model=mongoose.models.assperiod||mongoose.model("assperiod",assperiodSchema);model.on("index",async function($err$$){$err$$?console.error("AssPeriod index error",$err$$):console.info("AssPeriod indexing complete")});module.exports=model;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';const assproductSchema=new Schema({id_app:String,creator:{type:String,required:!0},id:{type:String},ten_san_pham:{type:String,required:!0},mieu_ta:{type:String},tong_dien_tich:{type:String},chu_dau_tu:{type:String},gia_tri_hien_tai:{type:String},dia_chi:{type:String},hien_trang:{type:String},vi_tri:{type:String},thiet_ke:{type:String},tien_nghi:{type:String},hinh_anh:{type:String},video:{type:String},duoc_chuyen_thanh_cp:{type:Boolean},co_phan:Boolean,token:{type:String,
|
|
2
|
-
so_luong:Number,so_luong_goi_dau_tu:Number,tong_gia_tri_goi_dau_tu:Number,da_dau_tu:Number,gia_tri_da_dau_tu:Number,trang_thai:String,ma_loai:String,visible_to:{type:Number,default:0},visible_to_users:[String],exfields:Schema.Types.Mixed,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:""}});assproductSchema.index({id_app:1});
|
|
3
|
-
assproductSchema.index({id:1});assproductSchema.index({ten_san_pham:1});assproductSchema.index({duoc_chuyen_thanh_cp:1});assproductSchema.index({token:1});assproductSchema.index({ma_loai:1});assproductSchema.index({co_phan:1});assproductSchema.index({trang_thai:1});assproductSchema.index({visible_to:1});assproductSchema.index({visible_to_users:1});assproductSchema.index({status:1});assproductSchema.index({user_created:1});
|
|
1
|
+
'use strict';const assproductSchema=new Schema({id_app:String,creator:{type:String,required:!0,trim:!0},id:{type:String,trim:!0},ten_san_pham:{type:String,required:!0},mieu_ta:{type:String},tong_dien_tich:{type:String},chu_dau_tu:{type:String},gia_tri_hien_tai:{type:String},dia_chi:{type:String},hien_trang:{type:String},vi_tri:{type:String},thiet_ke:{type:String},tien_nghi:{type:String},hinh_anh:{type:String},video:{type:String},duoc_chuyen_thanh_cp:{type:Boolean},co_phan:Boolean,token:{type:String,
|
|
2
|
+
required:!0,lowercase:!0,trim:!0},so_luong:Number,so_luong_goi_dau_tu:Number,tong_gia_tri_goi_dau_tu:Number,da_dau_tu:Number,gia_tri_da_dau_tu:Number,trang_thai:String,ma_loai:String,visible_to:{type:Number,default:0},visible_to_users:[String],exfields:Schema.Types.Mixed,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:""}});assproductSchema.index({id_app:1});
|
|
3
|
+
assproductSchema.index({creator:1});assproductSchema.index({id:1});assproductSchema.index({ten_san_pham:1});assproductSchema.index({duoc_chuyen_thanh_cp:1});assproductSchema.index({token:1});assproductSchema.index({ma_loai:1});assproductSchema.index({co_phan:1});assproductSchema.index({trang_thai:1});assproductSchema.index({visible_to:1});assproductSchema.index({visible_to_users:1});assproductSchema.index({status:1});assproductSchema.index({user_created:1});
|
|
4
4
|
assproductSchema.index({creator:"text",ten_san_pham:"text",mieu_ta:"text",token:"text",ma_loai:"text"},{name:"assproduct_index3"});const model=mongoose.models.assproduct||mongoose.model("assproduct",assproductSchema);model.on("index",async function($err$$){$err$$?console.error("AssProduct index error",$err$$):console.info("AssProduct indexing complete")});module.exports=model;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
'use strict';const assprofitsharingSchema=new Schema({id_app:String,creator:{type:String,required:!0},id:{type:String},id_product:{type:String,required:!0},ten_san_pham:{type:String},token:{type:String,lowercase:!0},id_period:String,denom:{type:String,required:!0},da_chia_loi_nhuan:Boolean,loi_nhuan_duoc_chia:Number,ngay_chia_loi_nhuan:Date,trang_thai:String,exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},
|
|
2
|
-
user_created:{type:String,default:""},user_updated:{type:String,default:""}});assprofitsharingSchema.index({id_app:1});assprofitsharingSchema.index({creator:1});assprofitsharingSchema.index({id:1});assprofitsharingSchema.index({id_product:1});assprofitsharingSchema.index({id_period:1});assprofitsharingSchema.index({token:1});assprofitsharingSchema.index({ten_san_pham:1});assprofitsharingSchema.index({denom:1});assprofitsharingSchema.index({trang_thai:1});
|
|
3
|
-
assprofitsharingSchema.index({creator:"text",ten_san_pham:"text",ten_ky_han:"text",denom:"text"},{name:"assprofitsharing_index2"});const model=mongoose.models.assprofitsharing||mongoose.model("assprofitsharing",assprofitsharingSchema);model.on("index",async function($err$$){$err$$?console.error("assprofitsharing index error",$err$$):console.info("assprofitsharing indexing complete")});module.exports=model;
|
|
1
|
+
'use strict';const assprofitsharingSchema=new Schema({id_app:String,creator:{type:String,required:!0,trim:!0},id:{type:String,trim:!0},id_product:{type:String,required:!0,trim:!0},ten_san_pham:{type:String},token:{type:String,lowercase:!0,trim:!0},id_period:String,denom:{type:String,required:!0,trim:!0},da_chia_loi_nhuan:Boolean,loi_nhuan_duoc_chia:Number,ngay_chia_loi_nhuan:Date,trang_thai:String,exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},
|
|
2
|
+
date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});assprofitsharingSchema.index({id_app:1});assprofitsharingSchema.index({creator:1});assprofitsharingSchema.index({id:1});assprofitsharingSchema.index({id_product:1});assprofitsharingSchema.index({id_period:1});assprofitsharingSchema.index({token:1});assprofitsharingSchema.index({ten_san_pham:1});assprofitsharingSchema.index({denom:1});assprofitsharingSchema.index({trang_thai:1});
|
|
3
|
+
assprofitsharingSchema.index({status:1});assprofitsharingSchema.index({user_created:1});assprofitsharingSchema.index({creator:"text",ten_san_pham:"text",ten_ky_han:"text",denom:"text"},{name:"assprofitsharing_index2"});const model=mongoose.models.assprofitsharing||mongoose.model("assprofitsharing",assprofitsharingSchema);model.on("index",async function($err$$){$err$$?console.error("assprofitsharing index error",$err$$):console.info("assprofitsharing indexing complete")});module.exports=model;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';const assreceiverSchema=new Schema({id_app:String,name:{type:String,maxlength:1024,required:!0},address:{type:String,required:!0,maxlength:2024},note:{type:String},exfields:Schema.Types.Mixed,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:""}});assreceiverSchema.index({id_app:1});assreceiverSchema.index({address:1});assreceiverSchema.index({name:1});
|
|
1
|
+
'use strict';const assreceiverSchema=new Schema({id_app:String,name:{type:String,maxlength:1024,required:!0},address:{type:String,required:!0,maxlength:2024,trim:!0},note:{type:String},exfields:Schema.Types.Mixed,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:""}});assreceiverSchema.index({id_app:1});assreceiverSchema.index({address:1});assreceiverSchema.index({name:1});
|
|
2
2
|
assreceiverSchema.index({note:1});assreceiverSchema.index({status:1});assreceiverSchema.index({user_created:1});assreceiverSchema.index({address:"text",name:"text",note:"text"},{name:"assreceiver_index2"});const model=mongoose.models.assreceiver||mongoose.model("assreceiver",assreceiverSchema);model.on("index",async function($err$$){$err$$?console.error("assreceiver index error",$err$$):console.info("assreceiver indexing complete")});module.exports=model;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';const assrequestSchema=new Schema({id_app:String,receiver_name:String,receiver_address:{type:String,required:!0},request_id:{type:String,required:!0},amount:{type:Number,required:!0},denom:{type:String,required:!0,lowercase:!0},order_id:{type:String,required:!0},order_info:{type:String,required:!0},trang_thai:{type:String,default:"0"},sender_address:String,sender_name:String,sender_user:String,sender_date:Date,transaction:Schema.Types.Mixed,return_url:String,
|
|
2
|
-
exfields:Schema.Types.Mixed,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:""}});assrequestSchema.index({id_app:1});assrequestSchema.index({sender_address:1});assrequestSchema.index({sender_name:1});assrequestSchema.index({sender_user:1});assrequestSchema.index({sender_date:1});assrequestSchema.index({request_id:1});assrequestSchema.index({denom:1});
|
|
3
|
-
assrequestSchema.index({order_info:1});assrequestSchema.index({receiver_name:1});assrequestSchema.index({receiver_address:1});assrequestSchema.index({status:1});assrequestSchema.index({user_created:1});assrequestSchema.index({trang_thai:1});assrequestSchema.index({receiver_address:"text",order_id:"text",order_info:"text",receiver_name:"text",sender_name:"text"},{name:"assrequest_index2"});const model=mongoose.models.assrequest||mongoose.model("assrequest",assrequestSchema);
|
|
1
|
+
'use strict';const assrequestSchema=new Schema({id_app:String,receiver_name:String,receiver_address:{type:String,required:!0,trim:!0},request_id:{type:String,required:!0,trim:!0},amount:{type:Number,required:!0},denom:{type:String,required:!0,lowercase:!0,trim:!0},order_id:{type:String,required:!0,trim:!0},order_info:{type:String,required:!0},trang_thai:{type:String,default:"0"},sender_address:String,sender_name:String,sender_user:String,sender_date:Date,transaction:Schema.Types.Mixed,return_url:String,
|
|
2
|
+
notify_url:String,payment_url:String,exfields:Schema.Types.Mixed,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:""}});assrequestSchema.index({id_app:1});assrequestSchema.index({sender_address:1});assrequestSchema.index({sender_name:1});assrequestSchema.index({sender_user:1});assrequestSchema.index({sender_date:1});assrequestSchema.index({request_id:1});assrequestSchema.index({denom:1});
|
|
3
|
+
assrequestSchema.index({order_id:1});assrequestSchema.index({order_info:1});assrequestSchema.index({receiver_name:1});assrequestSchema.index({receiver_address:1});assrequestSchema.index({status:1});assrequestSchema.index({user_created:1});assrequestSchema.index({trang_thai:1});assrequestSchema.index({receiver_address:"text",order_id:"text",order_info:"text",receiver_name:"text",sender_name:"text"},{name:"assrequest_index2"});const model=mongoose.models.assrequest||mongoose.model("assrequest",assrequestSchema);
|
|
4
4
|
model.on("index",async function($err$$){$err$$?console.error("assrequest index error",$err$$):console.info("assrequest indexing complete")});module.exports=model;
|
package/server/models/asssell.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';const asssellSchema=new Schema({id_app:String,creator:{type:String,required:!0},id:{type:String},id_product:{type:String},ten_san_pham:{type:String},product_token:{type:String,lowercase:!0},id_period:{type:String},ten_ky_han:{type:String},ten_lh_dt:String,ky_han:Number,token:{type:String,required:!0,lowercase:!0},gia_goc:{type:Number},lai_suat_cam_ket:Number,denom:{type:String,required:!0,lowercase:!0},so_luong:{type:Number},
|
|
2
|
-
required:!0},buyer:String,id_need_to_buy:String,fee:Number,exchange_address:String,exfields:Schema.Types.Mixed,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:""}});asssellSchema.index({id_app:1});asssellSchema.index({creator:1});asssellSchema.index({id:1});asssellSchema.index({denom:1});
|
|
3
|
-
asssellSchema.index({
|
|
4
|
-
const model=mongoose.models.asssell||mongoose.model("asssell",asssellSchema);model.on("index",async function($err$$){$err$$?console.error("asssell index error",$err$$):console.info("asssell indexing complete")});module.exports=model;
|
|
1
|
+
'use strict';const asssellSchema=new Schema({id_app:String,creator:{type:String,required:!0,trim:!0},id:{type:String,trim:!0},id_product:{type:String,trim:!0},ten_san_pham:{type:String},product_token:{type:String,lowercase:!0,trim:!0},id_period:{type:String,trim:!0},ten_ky_han:{type:String,trim:!0},ten_lh_dt:String,ky_han:Number,token:{type:String,required:!0,lowercase:!0,trim:!0},gia_goc:{type:Number},lai_suat_cam_ket:Number,denom:{type:String,required:!0,lowercase:!0,trim:!0},so_luong:{type:Number},
|
|
2
|
+
gia_ban:{type:Number},tong_gia_tri:{type:Number},ngay_het_han:{type:Date,required:!0},buyer:String,id_need_to_buy:String,fee:Number,exchange_address:String,exfields:Schema.Types.Mixed,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:""}});asssellSchema.index({id_app:1});asssellSchema.index({creator:1});asssellSchema.index({id:1});asssellSchema.index({denom:1});
|
|
3
|
+
asssellSchema.index({token:1});asssellSchema.index({id_product:1});asssellSchema.index({ten_san_pham:1});asssellSchema.index({product_token:1});asssellSchema.index({id_period:1});asssellSchema.index({ky_han:1});asssellSchema.index({gia_goc:1});asssellSchema.index({lai_suat_cam_ket:1});asssellSchema.index({ten_lh_dt:1});asssellSchema.index({ngay_het_han:-1});asssellSchema.index({status:1});asssellSchema.index({user_created:1});
|
|
4
|
+
asssellSchema.index({creator:"text",token:"text",denom:"text",ten_san_pham:"text",ten_ky_han:"text"},{name:"asssell_index2"});const model=mongoose.models.asssell||mongoose.model("asssell",asssellSchema);model.on("index",async function($err$$){$err$$?console.error("asssell index error",$err$$):console.info("asssell indexing complete")});module.exports=model;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';const asstransferSchema=new Schema({id_app:String,txhash:String,sender_address:{type:String,required:!0},sender_name:{type:String},receiver_name:{type:String},receiver_address:{type:String,required:!0},receiver_users:[],amount:{type:Number,required:!0},denom:{type:String,required:!0,lowercase:!0},memo:{type:String},request_id:{type:String},so1_id:{type:String},trang_thai:{type:String},transaction:Schema.Types.Mixed,exfields:Schema.Types.Mixed,
|
|
2
|
-
default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});asstransferSchema.index({id_app:1});asstransferSchema.index({txhash:1},{unique:!0});asstransferSchema.index({sender_address:1});asstransferSchema.index({sender_name:1});asstransferSchema.index({receiver_address:1});asstransferSchema.index({receiver_name:1});asstransferSchema.index({request_id:1});asstransferSchema.index({so1_id:1});
|
|
3
|
-
asstransferSchema.index({denom:1});asstransferSchema.index({status:1});asstransferSchema.index({user_created:1});asstransferSchema.index({trang_thai:1});asstransferSchema.index({receiver_address:"text",sender_address:"text",memo:"text",sender_name:"text",receiver_name:"text"},{name:"asstransfer_index2"});const model=mongoose.models.asstransfer||mongoose.model("asstransfer",asstransferSchema);
|
|
4
|
-
module.exports=model;
|
|
1
|
+
'use strict';const asstransferSchema=new Schema({id_app:String,txhash:String,sender_address:{type:String,required:!0,trim:!0},sender_name:{type:String,trim:!0},receiver_name:{type:String,trim:!0},receiver_address:{type:String,required:!0,trim:!0},receiver_users:[],amount:{type:Number,required:!0},denom:{type:String,required:!0,lowercase:!0,trim:!0},memo:{type:String},request_id:{type:String,trim:!0},so1_id:{type:String,trim:!0},trang_thai:{type:String},transaction:Schema.Types.Mixed,exfields:Schema.Types.Mixed,
|
|
2
|
+
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:""}});asstransferSchema.index({id_app:1});asstransferSchema.index({txhash:1},{unique:!0});asstransferSchema.index({sender_address:1});asstransferSchema.index({sender_name:1});asstransferSchema.index({receiver_address:1});asstransferSchema.index({receiver_name:1});asstransferSchema.index({request_id:1});asstransferSchema.index({so1_id:1});
|
|
3
|
+
asstransferSchema.index({memo:1});asstransferSchema.index({denom:1});asstransferSchema.index({status:1});asstransferSchema.index({user_created:1});asstransferSchema.index({trang_thai:1});asstransferSchema.index({receiver_address:"text",sender_address:"text",memo:"text",sender_name:"text",receiver_name:"text"},{name:"asstransfer_index2"});const model=mongoose.models.asstransfer||mongoose.model("asstransfer",asstransferSchema);
|
|
4
|
+
model.on("index",async function($err$$){$err$$?console.error("asstransfer index error",$err$$):console.info("asstransfer indexing complete")});module.exports=model;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
'use strict';const asswithdrawSchema=new Schema({id_app:String,creator:{type:String,required:!0},id:{type:String},token:{type:String,required:!0,lowercase:!0},so_luong:{type:Number,required:!0},gia:{type:Number,default:0},von:{type:Number,default:0},lai_cam_ket:{type:Number,default:0},lai_thuong:{type:Number,default:0},ngay:{type:Date},denom:{type:String,lowercase:!0,required:!0},exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},
|
|
2
|
-
default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});asswithdrawSchema.index({id_app:1});asswithdrawSchema.index({creator:1});asswithdrawSchema.index({id:1});asswithdrawSchema.index({denom:1});asswithdrawSchema.index({token:1});asswithdrawSchema.index({status:1});asswithdrawSchema.index({user_created:1});asswithdrawSchema.index({creator:"text",token:"text",denom:"text"},{name:"asswithdraw_index2"});
|
|
1
|
+
'use strict';const asswithdrawSchema=new Schema({id_app:String,creator:{type:String,required:!0,trim:!0},id:{type:String,trim:!0},token:{type:String,required:!0,lowercase:!0,trim:!0},so_luong:{type:Number,required:!0},gia:{type:Number,default:0},von:{type:Number,default:0},lai_cam_ket:{type:Number,default:0},lai_thuong:{type:Number,default:0},ngay:{type:Date},denom:{type:String,lowercase:!0,required:!0,trim:!0},exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},
|
|
2
|
+
date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});asswithdrawSchema.index({id_app:1});asswithdrawSchema.index({creator:1});asswithdrawSchema.index({id:1});asswithdrawSchema.index({denom:1});asswithdrawSchema.index({token:1});asswithdrawSchema.index({status:1});asswithdrawSchema.index({user_created:1});asswithdrawSchema.index({creator:"text",token:"text",denom:"text"},{name:"asswithdraw_index2"});
|
|
3
3
|
const model=mongoose.models.asswithdraw||mongoose.model("asswithdraw",asswithdrawSchema);model.on("index",async function($err$$){$err$$?console.error("asswithdraw index error",$err$$):console.info("asswithdraw indexing complete")});module.exports=model;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';const bangtinhluongSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_bp:{type:String,required:!0,uppercase:!0,maxlength:32},ma_nv:{type:String,required:!0,uppercase:!0,maxlength:32},ma_kho:String,ten_nv:String,thang:Number,nam:Number,loai_luong:Number,ngay_cong:Number,ngay_phep:Number,ngay_khong_phep:Number,ngay_khong_luong:Number,cham_cong:Boolean,tinh_luong:Boolean,luong_co_ban:Number,so_ngay_lam_mot_thang:Number,luong_binh_quan_ngay:Number,tong_ngay_tang_ca:Number,
|
|
1
|
+
'use strict';const bangtinhluongSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_bp:{type:String,required:!0,uppercase:!0,maxlength:32,trim:!0},ma_nv:{type:String,required:!0,uppercase:!0,maxlength:32,trim:!0},ma_kho:String,ten_nv:String,thang:Number,nam:Number,loai_luong:Number,ngay_cong:Number,ngay_phep:Number,ngay_khong_phep:Number,ngay_khong_luong:Number,cham_cong:Boolean,tinh_luong:Boolean,luong_co_ban:Number,so_ngay_lam_mot_thang:Number,luong_binh_quan_ngay:Number,tong_ngay_tang_ca:Number,
|
|
2
2
|
luong_tang_ca:Number,tong_ngay_khong_luong:Number,tong_ngay_cong_tinh_luong:Number,tru_luong:Number,luong_thang:Number,luong_bhxh:Number,bhxh:Boolean,bhyt:Boolean,bhtn:Boolean,giam_tru:[],gt_bhxh:Number,gt_bhyt:Number,gt_bhtn:Number,gt_kpcd:Number,tong_bao_hiem_nv:Number,cty_bhxh:Number,cty_bhyt:Number,cty_bhtn:Number,ct_kpcd:Number,tong_bao_hiem_cty:Number,phu_cap:[],so_ngay_tinh_phu_cap:Number,tong_phu_cap:Number,tong_thu_nhap:Number,tong_luong:Number,luong_tang_ca_mien_thue:Number,tong_phu_cap_mien_thue:Number,
|
|
3
3
|
ttncn_tong_thu_nhap_mien_thue:Number,ttncn_so_nguoi_phu_thuoc:Number,ttncn_muc_gt_phu_thuoc:Number,ttncn_gt_phu_thuoc:Number,ttncn_gt_tu_thien:Number,ttncn_so_thang_gt_ban_than:Number,ttncn_muc_gt_ban_than:Number,ttncn_gt_ban_than:Number,ttncn_tong_giam_tru:Number,ttncn_thu_nhap_chiu_thue:Number,ttncn_thue_theo_bac:[],ttncn_tong_thue:Number,exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,
|
|
4
4
|
default:""},user_updated:{type:String,default:""}});bangtinhluongSchema.index({id_app:1,ma_nv:1,ma_bp:1});bangtinhluongSchema.index({thang:-1,nam:-1});bangtinhluongSchema.index({ma_bp:1});bangtinhluongSchema.index({ma_kho:1});bangtinhluongSchema.index({ten_nv:1});bangtinhluongSchema.index({loai_luong:1});bangtinhluongSchema.index({status:1});bangtinhluongSchema.index({user_created:1});bangtinhluongSchema.index({ma_nv:"text",ten_nv:"text"},{name:"bangtinhluong_index_text"});
|
package/server/models/bg1.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
'use strict';const validVt=require("../libs/validator-vt"),validator=require("../libs/validator"),detailSchema=new Schema({ma_vt:{type:String,required:!0,uppercase:!0,maxlength:1024},ma_dvt:{type:String,required:!0,maxlength:32},so_luong:{type:Number,default:0},gia:{type:Number,default:0},gia_nt:{type:Number,default:0},tien:{type:Number,default:0},tien_nt:{type:Number,default:0},ty_le_ck:{type:Number,default:0},tien_ck:{type:Number,default:0},tien_ck_nt:{type:Number,default:0},tt:{type:Number,
|
|
2
|
-
tt_nt:{type:Number,default:0},promotion:Schema.Types.Mixed,dien_giai:{type:String,maxlength:1024},ma_bp:{type:String,uppercase:!0,default:"",maxlength:32},ma_phi:{type:String,uppercase:!0,default:"",maxlength:32},ma_hd:{type:String,uppercase:!0,default:"",maxlength:32},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32
|
|
3
|
-
default:"",uppercase:!0,maxlength:32},picture:String,exfields_detail:Schema.Types.Mixed,line:{type:Number,default:0}});detailSchema.validate={ma_vt:validVt.existsVt,ma_dvt:validator.existsDvt};
|
|
4
|
-
const bg1Schema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,maxlength:1024},ma_ct:{type:String,default:"BG1",required:!0,uppercase:!0,maxlength:32},ma_gd:{type:String,default:"0",maxlength:32},ong_ba:{type:String,maxlength:32},so_ct:{type:String,uppercase:!0,trim:!0,maxlength:32},ngay_ct:{type:Date,default:Date.now,required:!0},ma_nt:{type:String,required:"ma_nt is required",default:"VND",trim:!0,uppercase:!0,maxlength:32},ty_gia:{type:Number,required:!0,
|
|
5
|
-
default:1},trang_thai:{type:String,default:"1",maxlength:32},ma_kh:{type:String,uppercase:!0,maxlength:32},ten_kh:String,ma_kho:{type:String,uppercase:!0,maxlength:32},ma_nv:{type:String,uppercase:!0,maxlength:32},ten_nv:String,id_bao_gia_mua:{type:String,maxlength:1024},ma_thue:{type:String,uppercase:!0,maxlength:32},thue_suat:{type:Number,default:0},t_thue:{type:Number,default:0},t_thue_nt:{type:Number,default:0},ty_le_ck_hd:{type:Number,default:0},
|
|
6
|
-
maxlength:1024},exfields:Schema.Types.Mixed,ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},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:""},visible_to:{type:Number,default:0},visible_to_users:[String],details:{type:[detailSchema]},promotion:Schema.Types.Mixed});
|
|
7
|
-
bg1Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});bg1Schema.index({dien_giai:"text",so_ct:"text",ma_kh:"text",ten_kh:"text",ma_nv:"text",ten_nv:"text"},{name:"bg1_index"});bg1Schema.index({ma_ct:1});bg1Schema.index({ma_kh:1});bg1Schema.index({user_created:1,date_created:-1});bg1Schema.index({date_updated:-1});bg1Schema.index({trang_thai:1});bg1Schema.index({status:1});
|
|
8
|
-
module.exports=mongoose.models.bg1||mongoose.model("bg1",bg1Schema);
|
|
1
|
+
'use strict';const validVt=require("../libs/validator-vt"),validator=require("../libs/validator"),detailSchema=new Schema({ma_vt:{type:String,required:!0,uppercase:!0,maxlength:1024,trim:!0},ma_dvt:{type:String,required:!0,maxlength:32,trim:!0},so_luong:{type:Number,default:0},gia:{type:Number,default:0},gia_nt:{type:Number,default:0},tien:{type:Number,default:0},tien_nt:{type:Number,default:0},ty_le_ck:{type:Number,default:0},tien_ck:{type:Number,default:0},tien_ck_nt:{type:Number,default:0},tt:{type:Number,
|
|
2
|
+
default:0},tt_nt:{type:Number,default:0},promotion:Schema.Types.Mixed,dien_giai:{type:String,maxlength:1024},ma_bp:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_phi:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_hd:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},
|
|
3
|
+
ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},picture:String,exfields_detail:Schema.Types.Mixed,line:{type:Number,default:0}});detailSchema.validate={ma_vt:validVt.existsVt,ma_dvt:validator.existsDvt};
|
|
4
|
+
const bg1Schema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,maxlength:1024},ma_ct:{type:String,default:"BG1",required:!0,uppercase:!0,maxlength:32,trim:!0},ma_gd:{type:String,default:"0",maxlength:32,trim:!0},ong_ba:{type:String,maxlength:32},so_ct:{type:String,uppercase:!0,trim:!0,maxlength:32},ngay_ct:{type:Date,default:Date.now,required:!0},ma_nt:{type:String,required:"ma_nt is required",default:"VND",trim:!0,uppercase:!0,maxlength:32},ty_gia:{type:Number,required:!0,
|
|
5
|
+
min:0,default:1},trang_thai:{type:String,default:"1",maxlength:32,trim:!0},ma_kh:{type:String,uppercase:!0,maxlength:32,trim:!0},ten_kh:String,ma_kho:{type:String,uppercase:!0,maxlength:32,trim:!0},ma_nv:{type:String,uppercase:!0,maxlength:32,trim:!0},ten_nv:String,id_bao_gia_mua:{type:String,maxlength:1024},ma_thue:{type:String,uppercase:!0,maxlength:32,trim:!0},thue_suat:{type:Number,default:0},t_thue:{type:Number,default:0},t_thue_nt:{type:Number,default:0},ty_le_ck_hd:{type:Number,default:0},
|
|
6
|
+
tien_ck_hd:{type:Number,default:0},dien_giai:{type:String,maxlength:1024},exfields:Schema.Types.Mixed,ma_dt:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},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:""},visible_to:{type:Number,default:0},visible_to_users:[String],details:{type:[detailSchema]},promotion:Schema.Types.Mixed});
|
|
7
|
+
bg1Schema.validate={ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh};bg1Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});bg1Schema.index({dien_giai:"text",so_ct:"text",ma_kh:"text",ten_kh:"text",ma_nv:"text",ten_nv:"text"},{name:"bg1_index"});bg1Schema.index({ma_ct:1});bg1Schema.index({ma_kh:1});bg1Schema.index({user_created:1,date_created:-1});bg1Schema.index({date_updated:-1});bg1Schema.index({trang_thai:1});bg1Schema.index({status:1});
|
|
8
|
+
bg1Schema.index({user_created:1,visible_to:1,visible_to_users:1});module.exports=mongoose.models.bg1||mongoose.model("bg1",bg1Schema);
|
package/server/models/bg2.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
'use strict';const validVt=require("../libs/validator-vt"),validator=require("../libs/validator"),detailSchema=new Schema({ma_vt:{type:String,required:!0,uppercase:!0,maxlength:1024},ma_dvt:{type:String,required:!0,maxlength:32},so_luong:{type:Number,default:0},gia:{type:Number,default:0},gia_nt:{type:Number,default:0},gia_truoc:{type:Number,default:0},gia_truoc_nt:{type:Number,default:0},tien:{type:Number,default:0},tien_nt:{type:Number,default:0},ty_le_ck:{type:Number,default:0},
|
|
2
|
-
default:0},tien_ck_nt:{type:Number,default:0},gia_ban_muc_tieu:{type:Number,default:0},gia_ban_muc_tieu_nt:{type:Number,default:0},gia_ban_de_nghi:{type:Number,default:0},gia_ban_de_nghi_nt:{type:Number,default:0},gia_ban_truoc:{type:Number,default:0},gia_ban_truoc_nt:{type:Number,default:0},gia_von_nk:{type:Number,default:0},gia_von_nk_nt:{type:Number,default:0},tien_hang_nk:{type:Number,default:0},tien_hang_nk_nt:{type:Number,default:0},thue_suat_nk:{type:Number,default:0},
|
|
3
|
-
default:0},tien_thue_nk_nt:{type:Number,default:0},tt:{type:Number,default:0},tt_nt:{type:Number,default:0},dien_giai:{type:String,maxlength:1024},ma_kh:{type:String,uppercase:!0,default:"",maxlength:32},ma_bp:{type:String,uppercase:!0,default:"",maxlength:32},ma_phi:{type:String,uppercase:!0,default:"",maxlength:32},ma_hd:{type:String,uppercase:!0,default:"",maxlength:32},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32
|
|
4
|
-
default:"",uppercase:!0,maxlength:32},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32},picture:String,duoc_chon:Boolean,exfields_detail:Schema.Types.Mixed,line:{type:Number,default:0}});detailSchema.validate={ma_kh:validator.existsKh,ma_vt:validVt.existsVt,ma_dvt:validator.existsDvt};
|
|
5
|
-
const bg2Schema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,required:!0,maxlength:1024},ma_ct:{type:String,default:"BG2",required:!0,uppercase:!0,maxlength:32},ma_gd:{type:String,default:"0",maxlength:32},so_ct:{type:String,required:!0,uppercase:!0,trim:!0,maxlength:32},ngay_ct:{type:Date,default:Date.now,required:!0},ma_nt:{type:String,required:"ma_nt is required",default:"VND",trim:!0,uppercase:!0,maxlength:32},ty_gia:{type:Number,required:!0,
|
|
6
|
-
ma_kh:{type:String,uppercase:!0,default:"",maxlength:32},ten_kh:String,ma_kho:{type:String,uppercase:!0,default:"",maxlength:32},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32},ten_nv:String,ma_bp:{type:String,uppercase:!0,default:"",maxlength:32},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},ma_thue:{type:String,uppercase:!0,maxlength:32},thue_suat:{type:Number,default:0},t_thue:{type:Number,default:0},t_thue_nt:{type:Number,
|
|
7
|
-
maxlength:1024},id_dnm:{type:String,maxlength:1024},id_po1:{type:String,maxlength:1024},exfields:Schema.Types.Mixed,trang_thai:{type:String,maxlength:32},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:""},visible_to:{type:Number,default:0},visible_to_users:[String],details:{type:[detailSchema]}});
|
|
1
|
+
'use strict';const validVt=require("../libs/validator-vt"),validator=require("../libs/validator"),detailSchema=new Schema({ma_vt:{type:String,required:!0,uppercase:!0,maxlength:1024,trim:!0},ma_dvt:{type:String,required:!0,maxlength:32,trim:!0},so_luong:{type:Number,default:0},gia:{type:Number,default:0},gia_nt:{type:Number,default:0},gia_truoc:{type:Number,default:0},gia_truoc_nt:{type:Number,default:0},tien:{type:Number,default:0},tien_nt:{type:Number,default:0},ty_le_ck:{type:Number,default:0},
|
|
2
|
+
tien_ck:{type:Number,default:0},tien_ck_nt:{type:Number,default:0},gia_ban_muc_tieu:{type:Number,default:0},gia_ban_muc_tieu_nt:{type:Number,default:0},gia_ban_de_nghi:{type:Number,default:0},gia_ban_de_nghi_nt:{type:Number,default:0},gia_ban_truoc:{type:Number,default:0},gia_ban_truoc_nt:{type:Number,default:0},gia_von_nk:{type:Number,default:0},gia_von_nk_nt:{type:Number,default:0},tien_hang_nk:{type:Number,default:0},tien_hang_nk_nt:{type:Number,default:0},thue_suat_nk:{type:Number,default:0},
|
|
3
|
+
tien_thue_nk:{type:Number,default:0},tien_thue_nk_nt:{type:Number,default:0},tt:{type:Number,default:0},tt_nt:{type:Number,default:0},dien_giai:{type:String,maxlength:1024},ma_kh:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_bp:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_phi:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_hd:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_nv:{type:String,
|
|
4
|
+
uppercase:!0,default:"",maxlength:32,trim:!0},ma_vt2:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},picture:String,duoc_chon:Boolean,exfields_detail:Schema.Types.Mixed,line:{type:Number,default:0}});detailSchema.validate={ma_kh:validator.existsKh,ma_vt:validVt.existsVt,ma_dvt:validator.existsDvt};
|
|
5
|
+
const bg2Schema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,required:!0,maxlength:1024},ma_ct:{type:String,default:"BG2",required:!0,uppercase:!0,maxlength:32,trim:!0},ma_gd:{type:String,default:"0",maxlength:32,trim:!0},so_ct:{type:String,required:!0,uppercase:!0,trim:!0,maxlength:32},ngay_ct:{type:Date,default:Date.now,required:!0},ma_nt:{type:String,required:"ma_nt is required",default:"VND",trim:!0,uppercase:!0,maxlength:32},ty_gia:{type:Number,required:!0,
|
|
6
|
+
min:0,default:1},ma_kh:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ten_kh:String,ma_kho:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ten_nv:String,ma_bp:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_thue:{type:String,uppercase:!0,maxlength:32,trim:!0},thue_suat:{type:Number,default:0},t_thue:{type:Number,default:0},t_thue_nt:{type:Number,
|
|
7
|
+
default:0},ong_ba:{type:String,maxlength:1024},dien_giai:{type:String,maxlength:1024},id_dnm:{type:String,maxlength:1024,trim:!0},id_po1:{type:String,maxlength:1024,trim:!0},exfields:Schema.Types.Mixed,trang_thai:{type:String,maxlength:32},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:""},visible_to:{type:Number,default:0},visible_to_users:[String],details:{type:[detailSchema]}});
|
|
8
8
|
bg2Schema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh};bg2Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});bg2Schema.index({dien_giai:"text",so_ct:"text",ma_kh:"text",ten_kh:"text",ma_nv:"text",ten_nv:"text"},{name:"bg2_index"});bg2Schema.index({ma_ct:1});bg2Schema.index({ma_kh:1});bg2Schema.index({id_dnm:1});bg2Schema.index({id_po1:1});bg2Schema.index({user_created:1,date_created:-1});bg2Schema.index({date_updated:-1});
|
|
9
9
|
bg2Schema.index({trang_thai:1});bg2Schema.index({status:1});bg2Schema.index({user_created:1,visible_to:1,visible_to_users:1});module.exports=mongoose.models.bg2||mongoose.model("bg2",bg2Schema);
|