flexbiz-server 12.6.20 → 12.7.1
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 +1 -3
- package/server/app.js +348 -25
- package/server/cluster.js +5 -27
- package/server/models/account.js +0 -7
- package/server/models/actionLog.js +0 -2
- package/server/models/afflink.js +0 -2
- package/server/models/aimemory.js +0 -1
- package/server/models/app.js +0 -16
- package/server/models/approve.js +0 -95
- package/server/models/assabcihandler.js +0 -35
- package/server/models/assbank.js +0 -19
- package/server/models/assbooking.js +0 -4
- package/server/models/assbuy.js +0 -3
- package/server/models/asscashwithdraw.js +0 -4
- package/server/models/assfindhash.js +0 -2
- package/server/models/assinvestment.js +0 -13
- package/server/models/assissue.js +0 -2
- package/server/models/asskey.js +0 -15
- package/server/models/assneedtobuy.js +0 -6
- package/server/models/assperiod.js +0 -7
- package/server/models/assproduct.js +0 -13
- package/server/models/assprofitsharing.js +0 -4
- package/server/models/assreceiver.js +0 -2
- package/server/models/assrequest.js +0 -10
- package/server/models/asssell.js +0 -7
- package/server/models/asstransaction.js +0 -3
- package/server/models/asstransfer.js +0 -4
- package/server/models/assuser_identity.js +0 -4
- package/server/models/asswithdraw.js +0 -4
- package/server/models/attend.js +0 -2
- package/server/models/banggiaban.js +0 -8
- package/server/models/bangtinhluong.js +0 -6
- package/server/models/base.js +0 -1
- package/server/models/bg1.js +0 -9
- package/server/models/bg2.js +0 -10
- package/server/models/cache.js +0 -3
- package/server/models/cacheDataReport.js +0 -2
- package/server/models/cacheSessionReport.js +0 -5
- package/server/models/calllog.js +0 -4
- package/server/models/cart.js +0 -5
- package/server/models/cddiem.js +0 -2
- package/server/models/cddt.js +0 -3
- package/server/models/cdkh.js +0 -5
- package/server/models/cdkhtheongay.js +0 -5
- package/server/models/cdnphep.js +0 -2
- package/server/models/cdtk.js +0 -3
- package/server/models/cdtktheongay.js +0 -3
- package/server/models/cdvt.js +0 -5
- package/server/models/cdvtnpp.js +0 -6
- package/server/models/cdvttheongay.js +0 -5
- package/server/models/chamcong.js +0 -7
- package/server/models/chat_message.js +0 -2
- package/server/models/chat_session.js +0 -2
- package/server/models/checkin.js +0 -4
- package/server/models/checkinactivity.js +0 -3
- package/server/models/checkinkpi.js +0 -4
- package/server/models/checkinlocation.js +0 -2
- package/server/models/chitietluongds.js +0 -12
- package/server/models/chitieukpi.js +0 -3
- package/server/models/chudethaoluan.js +0 -3
- package/server/models/ckgtluong.js +0 -2
- package/server/models/colleague.js +0 -2
- package/server/models/comment.js +0 -4
- package/server/models/congdoansx.js +0 -4
- package/server/models/congtacvien.js +0 -4
- package/server/models/congthuctinhgiaban.js +0 -8
- package/server/models/consultant.js +0 -4
- package/server/models/contract.js +0 -6
- package/server/models/counter.js +0 -2
- package/server/models/csluongtheods.js +0 -3
- package/server/models/csphucap.js +0 -2
- package/server/models/ctds.js +0 -5
- package/server/models/ctds2.js +0 -7
- package/server/models/currency.js +0 -3
- package/server/models/custom_report.js +0 -1
- package/server/models/customer.js +0 -31
- package/server/models/customer_care.js +0 -2
- package/server/models/data_list_config.js +0 -7
- package/server/models/databanle.js +0 -8
- package/server/models/datlich.js +0 -4
- package/server/models/deal.js +0 -2
- package/server/models/dh2.js +0 -20
- package/server/models/diagram.js +0 -2
- package/server/models/dinhmucsx.js +0 -8
- package/server/models/dkhoc.js +0 -6
- package/server/models/dknphep.js +0 -2
- package/server/models/dmban.js +0 -4
- package/server/models/dmbp.js +0 -12
- package/server/models/dmca.js +0 -2
- package/server/models/dmchietkhau.js +0 -8
- package/server/models/dmchietkhauhd.js +0 -19
- package/server/models/dmchinhanh.js +0 -2
- package/server/models/dmcpmh.js +0 -2
- package/server/models/dmdiemthuong.js +0 -3
- package/server/models/dmdoi.js +0 -4
- package/server/models/dmdoituongdanhgia.js +0 -2
- package/server/models/dmdt.js +0 -8
- package/server/models/dmdvt.js +0 -3
- package/server/models/dmgiaban.js +0 -9
- package/server/models/dmgiamua.js +0 -5
- package/server/models/dmgiathitruong.js +0 -5
- package/server/models/dmgiathitruong_ngay.js +0 -2
- package/server/models/dmgiathitruong_theodoi.js +0 -2
- package/server/models/dmhoahonghd.js +0 -8
- package/server/models/dmhoahongnpp.js +0 -8
- package/server/models/dmkc.js +0 -3
- package/server/models/dmkho.js +0 -7
- package/server/models/dmkhuyenmai.js +0 -9
- package/server/models/dmkhuyenmaihd.js +0 -11
- package/server/models/dmletet.js +0 -2
- package/server/models/dmlo.js +0 -4
- package/server/models/dmloaicong.js +0 -4
- package/server/models/dmloaitask.js +0 -2
- package/server/models/dmloaits.js +0 -2
- package/server/models/dmnckkm.js +0 -4
- package/server/models/dmnghiepvu.js +0 -4
- package/server/models/dmnguonvon.js +0 -2
- package/server/models/dmnhnv.js +0 -4
- package/server/models/dmnv.js +0 -17
- package/server/models/dmnvt.js +0 -10
- package/server/models/dmphatdichvu.js +0 -4
- package/server/models/dmphi.js +0 -3
- package/server/models/dmqct.js +0 -3
- package/server/models/dmqddvt.js +0 -3
- package/server/models/dmtanggiamts.js +0 -3
- package/server/models/dmto.js +0 -4
- package/server/models/dmtt.js +0 -6
- package/server/models/dmvt.js +0 -17
- package/server/models/dmyt.js +0 -4
- package/server/models/dn0.js +0 -13
- package/server/models/dnm.js +0 -11
- package/server/models/dokho.js +0 -2
- package/server/models/domain.js +0 -2
- package/server/models/dvcs.js +0 -3
- package/server/models/ecomcategories.js +0 -3
- package/server/models/ecomcategories_cty.js +0 -3
- package/server/models/ecomproductlines.js +0 -2
- package/server/models/ecompromotion_flashsales.js +0 -2
- package/server/models/ecompromotion_freeships.js +0 -2
- package/server/models/email.js +0 -2
- package/server/models/endpoint.js +0 -1
- package/server/models/events.js +0 -3
- package/server/models/evoucher.js +0 -5
- package/server/models/experiencejourney.js +0 -2
- package/server/models/experiencejourneydata.js +0 -4
- package/server/models/experiencejourneypersona.js +0 -3
- package/server/models/experiencejourneystage.js +0 -2
- package/server/models/exportexceltemplate.js +0 -2
- package/server/models/fbconversation.js +0 -15
- package/server/models/fbmessage.js +0 -2
- package/server/models/fbpage.js +0 -2
- package/server/models/fbpost.js +0 -2
- package/server/models/fieldright.js +0 -2
- package/server/models/fifo_dk.js +0 -2
- package/server/models/fifo_lot.js +0 -3
- package/server/models/fifo_trace.js +0 -4
- package/server/models/file.js +0 -4
- package/server/models/filechunk.js +0 -2
- package/server/models/financialroadmap.js +0 -3
- package/server/models/flow.js +0 -2
- package/server/models/flowdata.js +0 -3
- package/server/models/flowpending.js +0 -2
- package/server/models/folder.js +0 -4
- package/server/models/follow.js +0 -2
- package/server/models/forminfo.js +0 -5
- package/server/models/giaoca.js +0 -4
- package/server/models/giatb.js +0 -3
- package/server/models/group.js +0 -9
- package/server/models/gt_ctgt.js +0 -4
- package/server/models/gt_hspb.js +0 -3
- package/server/models/gt_sltk.js +0 -3
- package/server/models/gt_thcppstk.js +0 -3
- package/server/models/hanmucton.js +0 -4
- package/server/models/hd1.js +0 -11
- package/server/models/hd2.js +0 -26
- package/server/models/hd3.js +0 -17
- package/server/models/hd4.js +0 -13
- package/server/models/hd7.js +0 -17
- package/server/models/hd8.js +0 -12
- package/server/models/hde.js +0 -11
- package/server/models/hmcn.js +0 -3
- package/server/models/hmcnct.js +0 -2
- package/server/models/hspbts.js +0 -4
- package/server/models/htl.js +0 -13
- package/server/models/importexceltemplate.js +0 -2
- package/server/models/introducebonus.js +0 -4
- package/server/models/introducecode.js +0 -3
- package/server/models/introducer.js +0 -4
- package/server/models/kbbtpb.js +0 -7
- package/server/models/kbmPttct.js +0 -4
- package/server/models/kbmTkgtgt.js +0 -5
- package/server/models/kbm_bcdkt_old.js +0 -4
- package/server/models/kbm_kqhdkd_old.js +0 -3
- package/server/models/kbm_lcttgt_old.js +0 -5
- package/server/models/kbm_lctttt_old.js +0 -4
- package/server/models/kbm_pttct_old.js +0 -4
- package/server/models/kbm_tkgtgt_old.js +0 -5
- package/server/models/kbmbcdkt.js +0 -4
- package/server/models/kbmbcqt.js +0 -4
- package/server/models/kbmkqhdkd.js +0 -3
- package/server/models/kbmlcttgt.js +0 -6
- package/server/models/kbmlctttt.js +0 -4
- package/server/models/kbmtmbctc.js +0 -4
- package/server/models/kehoachdtcp.js +0 -3
- package/server/models/kehoachmh.js +0 -8
- package/server/models/keyresult.js +0 -7
- package/server/models/khunghangthanhvien.js +0 -3
- package/server/models/label.js +0 -2
- package/server/models/labelinfo.js +0 -2
- package/server/models/lenhcapphat.js +0 -8
- package/server/models/lenhsx.js +0 -8
- package/server/models/lienhe.js +0 -4
- package/server/models/like_module.js +0 -2
- package/server/models/link.js +0 -2
- package/server/models/listinfo.js +0 -1365
- package/server/models/loaidiem.js +0 -2
- package/server/models/lock.js +0 -2
- package/server/models/log.js +0 -8
- package/server/models/mailaccount.js +0 -3
- package/server/models/mailgroup.js +0 -3
- package/server/models/mailreceived.js +0 -2
- package/server/models/mailsent.js +0 -2
- package/server/models/mailtemplate.js +0 -2
- package/server/models/maudanhgia.js +0 -2
- package/server/models/menuinfo.js +0 -2
- package/server/models/message.js +0 -8
- package/server/models/message2.js +0 -4
- package/server/models/message2setting.js +0 -3
- package/server/models/moduleinfo.js +0 -4
- package/server/models/momo.js +0 -18
- package/server/models/news.js +0 -3
- package/server/models/newsfeed.js +0 -4
- package/server/models/note.js +0 -2
- package/server/models/notification.js +0 -8
- package/server/models/okr.js +0 -4
- package/server/models/okrdiagram.js +0 -3
- package/server/models/onepay.js +0 -24
- package/server/models/opportunity.js +0 -4
- package/server/models/options.js +0 -2
- package/server/models/originimportid.js +0 -1
- package/server/models/otp.js +0 -1
- package/server/models/parameter.js +0 -2
- package/server/models/participant.js +0 -21
- package/server/models/partner.js +0 -1
- package/server/models/payload.js +0 -1
- package/server/models/pbl.js +0 -16
- package/server/models/pc0.js +0 -13
- package/server/models/pc1.js +0 -14
- package/server/models/pc2.js +0 -13
- package/server/models/pc3.js +0 -13
- package/server/models/pc5.js +0 -8
- package/server/models/pc6.js +0 -14
- package/server/models/pcl.js +0 -6
- package/server/models/pdn.js +0 -9
- package/server/models/pdx.js +0 -9
- package/server/models/pgh.js +0 -5
- package/server/models/phieudanhgia.js +0 -3
- package/server/models/pht.js +0 -8
- package/server/models/phucap.js +0 -4
- package/server/models/pkc.js +0 -6
- package/server/models/pkh.js +0 -6
- package/server/models/pkk.js +0 -10
- package/server/models/pkt.js +0 -12
- package/server/models/pn1.js +0 -18
- package/server/models/pn2.js +0 -12
- package/server/models/pn3.js +0 -13
- package/server/models/pn5.js +0 -14
- package/server/models/pn6.js +0 -14
- package/server/models/pn9.js +0 -17
- package/server/models/pnc.js +0 -9
- package/server/models/pnh.js +0 -11
- package/server/models/pnk.js +0 -10
- package/server/models/po1.js +0 -19
- package/server/models/ppb.js +0 -6
- package/server/models/productcode.js +0 -2
- package/server/models/profile.js +0 -4
- package/server/models/pt1.js +0 -12
- package/server/models/pt5.js +0 -8
- package/server/models/ptl.js +0 -5
- package/server/models/ptthanhtoan.js +0 -6
- package/server/models/purchase_contract.js +0 -17
- package/server/models/pxc.js +0 -9
- package/server/models/pxh.js +0 -11
- package/server/models/pxk.js +0 -9
- package/server/models/qts.js +0 -14
- package/server/models/qts_dieuchinh.js +0 -3
- package/server/models/qts_dieuchuyen.js +0 -4
- package/server/models/quanhuyen.js +0 -2
- package/server/models/reason.js +0 -2
- package/server/models/receivedinvoice.js +0 -2
- package/server/models/reportinfo.js +0 -5
- package/server/models/right.js +0 -4
- package/server/models/rpt.js +0 -2
- package/server/models/rptform.js +0 -3
- package/server/models/rptobject.js +0 -2
- package/server/models/sale_contract.js +0 -9
- package/server/models/schedule.js +0 -18
- package/server/models/schedule_log.js +0 -2
- package/server/models/shipbook.js +0 -12
- package/server/models/shortcut.js +0 -2
- package/server/models/smsaccount.js +0 -10
- package/server/models/smssend.js +0 -2
- package/server/models/so1.js +0 -22
- package/server/models/so3.js +0 -9
- package/server/models/so5.js +0 -15
- package/server/models/so9.js +0 -19
- package/server/models/socai.js +0 -28
- package/server/models/socainpp.js +0 -18
- package/server/models/socaitc.js +0 -6
- package/server/models/socaitmp.js +0 -16
- package/server/models/socaitt.js +0 -4
- package/server/models/sodiemthuong.js +0 -4
- package/server/models/sokho.js +0 -27
- package/server/models/sokhocapphat.js +0 -18
- package/server/models/sokhokhongton.js +0 -19
- package/server/models/sokhonpp.js +0 -19
- package/server/models/sokhotc.js +0 -8
- package/server/models/sokhott.js +0 -18
- package/server/models/sophanbokh.js +0 -3
- package/server/models/sosanxuat.js +0 -5
- package/server/models/sotinhkh.js +0 -2
- package/server/models/spdd_ck.js +0 -3
- package/server/models/spdd_dk.js +0 -3
- package/server/models/step.js +0 -2
- package/server/models/strategicdiagram.js +0 -3
- package/server/models/strategicgoal.js +0 -4
- package/server/models/strategickpi.js +0 -6
- package/server/models/strategicobjective.js +0 -5
- package/server/models/strategicplan.js +0 -5
- package/server/models/subscribe.js +0 -2
- package/server/models/support.js +0 -2
- package/server/models/synctime.js +0 -2
- package/server/models/sys_job_queue_book_keeping.js +0 -2
- package/server/models/sysconfig.js +0 -2
- package/server/models/sysgroup.js +0 -2
- package/server/models/tableinfo.js +0 -3
- package/server/models/task.js +0 -9
- package/server/models/taskreg.js +0 -4
- package/server/models/tc.js +0 -2
- package/server/models/tdttco.js +0 -9
- package/server/models/tdttco_tt.js +0 -5
- package/server/models/tdttno.js +0 -9
- package/server/models/tdttno_tt.js +0 -5
- package/server/models/templaterpt.js +0 -2
- package/server/models/templatestore.js +0 -3
- package/server/models/templatevoucher.js +0 -3
- package/server/models/tinhthanh.js +0 -2
- package/server/models/tokens.js +0 -3
- package/server/models/tontucthoi.js +0 -9
- package/server/models/trangthai.js +0 -4
- package/server/models/trangthaiapp.js +0 -4
- package/server/models/transaction.js +0 -16
- package/server/models/trialinfo.js +0 -2
- package/server/models/user.js +0 -40
- package/server/models/usergroup.js +0 -7
- package/server/models/vanchuyen.js +0 -12
- package/server/models/vat.js +0 -3
- package/server/models/vatra.js +0 -6
- package/server/models/vatvao.js +0 -6
- package/server/models/versioninfo.js +0 -2
- package/server/models/vietqrbanks.js +0 -2
- package/server/models/vsocai.js +0 -6
- package/server/models/wallet.js +0 -8
- package/server/models/warranty.js +0 -3
- package/server/models/warrantyclaim.js +0 -2
- package/server/models/warrantypolicy.js +0 -1
- package/server/models/workflow.js +0 -4
- package/server/models/xaphuong.js +0 -2
- package/server/models/xhd.js +0 -10
- package/server/models/ytdd_ck.js +0 -4
- package/server/models/ytdd_dk.js +0 -4
- package/server/models/zalo.js +0 -17
- package/server/modules/lists/bg-cddiem.js +0 -6
- package/server/modules/lists/bg-cddt.js +0 -7
- package/server/modules/lists/bg-cdkh.js +0 -11
- package/server/modules/lists/bg-cdnphep.js +0 -6
- package/server/modules/lists/bg-cdtk.js +0 -9
- package/server/modules/lists/bg-cdvt.js +0 -8
- package/server/modules/lists/bg-cdvtnpp.js +0 -8
- package/server/modules/lists/bg-fifo_dk.js +0 -8
- package/server/modules/lists/ls-account.js +0 -4
- package/server/modules/lists/ls-afflink.js +0 -3
- package/server/modules/lists/ls-approve.js +0 -5
- package/server/modules/lists/ls-assabcihandler.js +0 -3
- package/server/modules/lists/ls-assbank.js +0 -3
- package/server/modules/lists/ls-assbooking.js +0 -20
- package/server/modules/lists/ls-assbuy.js +0 -8
- package/server/modules/lists/ls-asscashwithdraw.js +0 -8
- package/server/modules/lists/ls-assinvestment.js +0 -31
- package/server/modules/lists/ls-assissue.js +0 -3
- package/server/modules/lists/ls-asskey.js +0 -41
- package/server/modules/lists/ls-assneedtobuy.js +0 -10
- package/server/modules/lists/ls-assperiod.js +0 -19
- package/server/modules/lists/ls-assproduct.js +0 -9
- package/server/modules/lists/ls-assprofitsharing.js +0 -8
- package/server/modules/lists/ls-assreceiver.js +0 -3
- package/server/modules/lists/ls-assrequest.js +0 -4
- package/server/modules/lists/ls-asssell.js +0 -13
- package/server/modules/lists/ls-asstransaction.js +0 -3
- package/server/modules/lists/ls-asstransfer.js +0 -3
- package/server/modules/lists/ls-assuser_identity.js +0 -1
- package/server/modules/lists/ls-asswithdraw.js +0 -12
- package/server/modules/lists/ls-bangtinhluong.js +0 -2
- package/server/modules/lists/ls-calllog.js +0 -4
- package/server/modules/lists/ls-cart.js +0 -14
- package/server/modules/lists/ls-chamcong.js +0 -3
- package/server/modules/lists/ls-chat_session.js +0 -5
- package/server/modules/lists/ls-checkin.js +0 -24
- package/server/modules/lists/ls-checkinactivity.js +0 -8
- package/server/modules/lists/ls-checkinkpi.js +0 -3
- package/server/modules/lists/ls-checkinlocation.js +0 -1
- package/server/modules/lists/ls-chitietluongds.js +0 -4
- package/server/modules/lists/ls-chitieukpi.js +0 -1
- package/server/modules/lists/ls-chudethaoluan.js +0 -1
- package/server/modules/lists/ls-ckgtluong.js +0 -1
- package/server/modules/lists/ls-comment.js +0 -9
- package/server/modules/lists/ls-congdoansx.js +0 -3
- package/server/modules/lists/ls-congtacvien.js +0 -5
- package/server/modules/lists/ls-consultant.js +0 -2
- package/server/modules/lists/ls-contract.js +0 -7
- package/server/modules/lists/ls-csluongtheods.js +0 -1
- package/server/modules/lists/ls-csphucap.js +0 -1
- package/server/modules/lists/ls-ctds.js +0 -4
- package/server/modules/lists/ls-ctds2.js +0 -4
- package/server/modules/lists/ls-currency.js +0 -1
- package/server/modules/lists/ls-customer.js +0 -22
- package/server/modules/lists/ls-customer_care.js +0 -1
- package/server/modules/lists/ls-datlich.js +0 -9
- package/server/modules/lists/ls-dckhauhaots.js +0 -3
- package/server/modules/lists/ls-deal.js +0 -3
- package/server/modules/lists/ls-diagram.js +0 -1
- package/server/modules/lists/ls-dkhoc.js +0 -6
- package/server/modules/lists/ls-dknphep.js +0 -1
- package/server/modules/lists/ls-dmban.js +0 -4
- package/server/modules/lists/ls-dmbp.js +0 -7
- package/server/modules/lists/ls-dmca.js +0 -1
- package/server/modules/lists/ls-dmchietkhau.js +0 -19
- package/server/modules/lists/ls-dmchietkhauhd.js +0 -4
- package/server/modules/lists/ls-dmchinhanh.js +0 -1
- package/server/modules/lists/ls-dmchucvu.js +0 -2
- package/server/modules/lists/ls-dmcpmh.js +0 -1
- package/server/modules/lists/ls-dmdiemthuong.js +0 -4
- package/server/modules/lists/ls-dmdoi.js +0 -4
- package/server/modules/lists/ls-dmdoituongdanhgia.js +0 -1
- package/server/modules/lists/ls-dmdt.js +0 -11
- package/server/modules/lists/ls-dmdvt.js +0 -2
- package/server/modules/lists/ls-dmgiaban.js +0 -4
- package/server/modules/lists/ls-dmgiamua.js +0 -4
- package/server/modules/lists/ls-dmgiathitruong.js +0 -15
- package/server/modules/lists/ls-dmgiathitruong_ngay.js +0 -2
- package/server/modules/lists/ls-dmgiathitruong_theodoi.js +0 -1
- package/server/modules/lists/ls-dmhoahonghd.js +0 -1
- package/server/modules/lists/ls-dmhoahongnpp.js +0 -1
- package/server/modules/lists/ls-dmkc.js +0 -3
- package/server/modules/lists/ls-dmkho.js +0 -7
- package/server/modules/lists/ls-dmkhuyenmai.js +0 -5
- package/server/modules/lists/ls-dmkhuyenmaihd.js +0 -3
- package/server/modules/lists/ls-dmletet.js +0 -1
- package/server/modules/lists/ls-dmlo.js +0 -1
- package/server/modules/lists/ls-dmloaicong.js +0 -1
- package/server/modules/lists/ls-dmloaits.js +0 -1
- package/server/modules/lists/ls-dmnckkm.js +0 -7
- package/server/modules/lists/ls-dmnghiepvu.js +0 -1
- package/server/modules/lists/ls-dmnguonvon.js +0 -1
- package/server/modules/lists/ls-dmnhnv.js +0 -6
- package/server/modules/lists/ls-dmnhtask.js +0 -5
- package/server/modules/lists/ls-dmnkh.js +0 -6
- package/server/modules/lists/ls-dmntt.js +0 -6
- package/server/modules/lists/ls-dmnv.js +0 -14
- package/server/modules/lists/ls-dmnvt.js +0 -7
- package/server/modules/lists/ls-dmphatdichvu.js +0 -3
- package/server/modules/lists/ls-dmphi.js +0 -6
- package/server/modules/lists/ls-dmqct.js +0 -2
- package/server/modules/lists/ls-dmqddvt.js +0 -3
- package/server/modules/lists/ls-dmtanggiamts.js +0 -1
- package/server/modules/lists/ls-dmto.js +0 -5
- package/server/modules/lists/ls-dmtt.js +0 -7
- package/server/modules/lists/ls-dmvt.js +0 -52
- package/server/modules/lists/ls-dmyt.js +0 -1
- package/server/modules/lists/ls-dokho.js +0 -1
- package/server/modules/lists/ls-dvcs.js +0 -1
- package/server/modules/lists/ls-ecomcategories.js +0 -5
- package/server/modules/lists/ls-ecomcategories_cty.js +0 -5
- package/server/modules/lists/ls-email.js +0 -4
- package/server/modules/lists/ls-events.js +0 -3
- package/server/modules/lists/ls-evoucher.js +0 -3
- package/server/modules/lists/ls-experiencejourney.js +0 -1
- package/server/modules/lists/ls-experiencejourneydata.js +0 -3
- package/server/modules/lists/ls-experiencejourneypersona.js +0 -4
- package/server/modules/lists/ls-experiencejourneystage.js +0 -1
- package/server/modules/lists/ls-fbconversation.js +0 -2
- package/server/modules/lists/ls-fbmessage.js +0 -2
- package/server/modules/lists/ls-fbpage.js +0 -11
- package/server/modules/lists/ls-fbpost.js +0 -2
- package/server/modules/lists/ls-file.js +0 -38
- package/server/modules/lists/ls-financialroadmap.js +0 -3
- package/server/modules/lists/ls-flow.js +0 -6
- package/server/modules/lists/ls-flowdata.js +0 -1
- package/server/modules/lists/ls-flowpending.js +0 -3
- package/server/modules/lists/ls-folder.js +0 -1
- package/server/modules/lists/ls-forminfo.js +0 -1
- package/server/modules/lists/ls-giaoca.js +0 -5
- package/server/modules/lists/ls-group.js +0 -5
- package/server/modules/lists/ls-hmcn.js +0 -2
- package/server/modules/lists/ls-hspbts.js +0 -3
- package/server/modules/lists/ls-introducebonus.js +0 -4
- package/server/modules/lists/ls-introducecode.js +0 -10
- package/server/modules/lists/ls-introducer.js +0 -21
- package/server/modules/lists/ls-kbm-bcdkt.js +0 -1
- package/server/modules/lists/ls-kbm-bcqt.js +0 -5
- package/server/modules/lists/ls-kbm-kqhdkd.js +0 -1
- package/server/modules/lists/ls-kbm-lcttgt.js +0 -1
- package/server/modules/lists/ls-kbm-lctttt.js +0 -1
- package/server/modules/lists/ls-kbm-pttct.js +0 -3
- package/server/modules/lists/ls-kbm-tkgtgt.js +0 -3
- package/server/modules/lists/ls-kbm-tmbctc.js +0 -3
- package/server/modules/lists/ls-kehoachdtcp.js +0 -4
- package/server/modules/lists/ls-keyresult.js +0 -7
- package/server/modules/lists/ls-khunghangthanhvien.js +0 -1
- package/server/modules/lists/ls-label.js +0 -1
- package/server/modules/lists/ls-lienhe.js +0 -4
- package/server/modules/lists/ls-like-module.js +0 -1
- package/server/modules/lists/ls-link.js +0 -1
- package/server/modules/lists/ls-loaidiem.js +0 -1
- package/server/modules/lists/ls-lock.js +0 -1
- package/server/modules/lists/ls-log.js +0 -3
- package/server/modules/lists/ls-mailaccount.js +0 -5
- package/server/modules/lists/ls-mailreceived.js +0 -5
- package/server/modules/lists/ls-mailsent.js +0 -4
- package/server/modules/lists/ls-mailtemplate.js +0 -4
- package/server/modules/lists/ls-maudanhgia.js +0 -3
- package/server/modules/lists/ls-message2.js +0 -8
- package/server/modules/lists/ls-message2setting.js +0 -5
- package/server/modules/lists/ls-news.js +0 -7
- package/server/modules/lists/ls-newsfeed.js +0 -4
- package/server/modules/lists/ls-note.js +0 -6
- package/server/modules/lists/ls-okr.js +0 -5
- package/server/modules/lists/ls-okrdiagram.js +0 -1
- package/server/modules/lists/ls-opportunity.js +0 -5
- package/server/modules/lists/ls-options.js +0 -4
- package/server/modules/lists/ls-parameter.js +0 -3
- package/server/modules/lists/ls-participant.js +0 -12
- package/server/modules/lists/ls-phieudanhgia.js +0 -7
- package/server/modules/lists/ls-phucap.js +0 -2
- package/server/modules/lists/ls-productcode.js +0 -9
- package/server/modules/lists/ls-profile.js +0 -1
- package/server/modules/lists/ls-ptthanhtoan.js +0 -3
- package/server/modules/lists/ls-qts-dieuchinh.js +0 -2
- package/server/modules/lists/ls-qts-dieuchuyen.js +0 -8
- package/server/modules/lists/ls-reason.js +0 -1
- package/server/modules/lists/ls-rpt.js +0 -5
- package/server/modules/lists/ls-rptform.js +0 -3
- package/server/modules/lists/ls-shortcut.js +0 -1
- package/server/modules/lists/ls-smsaccount.js +0 -1
- package/server/modules/lists/ls-smssend.js +0 -3
- package/server/modules/lists/ls-sosanxuat.js +0 -4
- package/server/modules/lists/ls-step.js +0 -1
- package/server/modules/lists/ls-strategicdiagram.js +0 -1
- package/server/modules/lists/ls-strategicgoal.js +0 -3
- package/server/modules/lists/ls-strategickpi.js +0 -7
- package/server/modules/lists/ls-strategicobjective.js +0 -3
- package/server/modules/lists/ls-strategicplan.js +0 -6
- package/server/modules/lists/ls-support.js +0 -3
- package/server/modules/lists/ls-task.js +0 -28
- package/server/modules/lists/ls-taskreg.js +0 -2
- package/server/modules/lists/ls-tc.js +0 -1
- package/server/modules/lists/ls-templaterpt.js +0 -5
- package/server/modules/lists/ls-templatevoucher.js +0 -1
- package/server/modules/lists/ls-tontucthoi.js +0 -3
- package/server/modules/lists/ls-trangthaiapp.js +0 -3
- package/server/modules/lists/ls-transaction.js +0 -4
- package/server/modules/lists/ls-usergroup.js +0 -7
- package/server/modules/lists/ls-vat.js +0 -1
- package/server/modules/lists/ls-vatra.js +0 -5
- package/server/modules/lists/ls-vatvao.js +0 -6
- package/server/modules/lists/ls-warranty.js +0 -3
- package/server/modules/lists/ls-workflow.js +0 -1
- package/server/modules/lists/ls_hanmucton.js +0 -3
- package/server/modules/lists/ls_hspb.js +0 -4
- package/server/modules/lists/ls_spdd_ck.js +0 -3
- package/server/modules/lists/ls_spdd_dk.js +0 -3
- package/server/modules/lists/ls_ytdd_ck.js +0 -4
- package/server/modules/lists/ls_ytdd_dk.js +0 -4
- package/server/modules/lists/sys-attend.js +0 -4
- package/server/modules/lists/sys-follow.js +0 -4
- package/server/modules/lists/sys-right.js +0 -2
- package/server/modules/public/app.js +0 -4
- package/server/modules/public/approve.js +0 -37
- package/server/modules/public/callin.js +0 -7
- package/server/modules/public/comment.js +0 -5
- package/server/modules/public/dmnvt.js +0 -4
- package/server/modules/public/dmvt.js +0 -9
- package/server/modules/public/file.js +0 -11
- package/server/modules/public/forminfo.js +0 -1
- package/server/modules/public/group.js +0 -4
- package/server/modules/public/introducecode.js +0 -1
- package/server/modules/public/listinfo.js +0 -1
- package/server/modules/public/media-webhook.js +0 -1
- package/server/modules/public/partner.js +0 -1
- package/server/modules/public/paymentCallback.js +0 -32
- package/server/modules/public/province.js +0 -1
- package/server/modules/public/ptthanhtoan.js +0 -4
- package/server/modules/public/subscribe.js +0 -30
- package/server/modules/public/support.js +0 -3
- package/server/modules/public/tableinfo.js +0 -1
- package/server/modules/public/trialinfo.js +0 -4
- package/server/modules/public/versioninfo.js +0 -1
- package/server/modules/reports/calc-tinhgiafifo.js +0 -8
- package/server/modules/reports/calc-tinhgiatb.js +0 -7
- package/server/modules/reports/calc-tinhgiathanh.js +0 -7
- package/server/modules/reports/calc-tinhkhauhaots.js +0 -3
- package/server/modules/reports/calc-tinhluong.js +0 -68
- package/server/modules/reports/rp-analyzedata.js +0 -6
- package/server/modules/reports/rp-assbonus.js +0 -4
- package/server/modules/reports/rp-assinterest.js +0 -8
- package/server/modules/reports/rp-assproductowners.js +0 -3
- package/server/modules/reports/rp-asssupply.js +0 -1
- package/server/modules/reports/rp-asstransferlog.js +0 -10
- package/server/modules/reports/rp-backup.js +0 -4
- package/server/modules/reports/rp-banggiatb.js +0 -3
- package/server/modules/reports/rp-bangtinhkhauhao.js +0 -6
- package/server/modules/reports/rp-baoCaoFifoKy.js +0 -1
- package/server/modules/reports/rp-baocaokhachhang.js +0 -6
- package/server/modules/reports/rp-bcdkt.js +0 -11
- package/server/modules/reports/rp-bcintroducebonus.js +0 -4
- package/server/modules/reports/rp-bckhtiemnang.js +0 -3
- package/server/modules/reports/rp-bcqt.js +0 -85
- package/server/modules/reports/rp-bkchamcong.js +0 -5
- package/server/modules/reports/rp-bkct.js +0 -13
- package/server/modules/reports/rp-bkshipbook.js +0 -8
- package/server/modules/reports/rp-bkvanchuyen.js +0 -8
- package/server/modules/reports/rp-bkvatra.js +0 -7
- package/server/modules/reports/rp-bkvatvao.js +0 -7
- package/server/modules/reports/rp-capnhatsocaitc.js +0 -4
- package/server/modules/reports/rp-cdpsdiem.js +0 -4
- package/server/modules/reports/rp-cdpsdt.js +0 -5
- package/server/modules/reports/rp-cdpskh.js +0 -8
- package/server/modules/reports/rp-cdpsnphep.js +0 -3
- package/server/modules/reports/rp-cdpstk.js +0 -4
- package/server/modules/reports/rp-chitietchitientheohoadon.js +0 -12
- package/server/modules/reports/rp-chitiettaisan.js +0 -13
- package/server/modules/reports/rp-chitietthutientheohoadon.js +0 -13
- package/server/modules/reports/rp-ckcn.js +0 -3
- package/server/modules/reports/rp-ckdiem.js +0 -2
- package/server/modules/reports/rp-cktk.js +0 -3
- package/server/modules/reports/rp-ckvt.js +0 -10
- package/server/modules/reports/rp-ckvttheokho.js +0 -4
- package/server/modules/reports/rp-ckvttheotg.js +0 -4
- package/server/modules/reports/rp-ckvttt.js +0 -3
- package/server/modules/reports/rp-congnophaithutheotuoino.js +0 -3
- package/server/modules/reports/rp-congnophaitratheotuoino.js +0 -3
- package/server/modules/reports/rp-congnosapthu.js +0 -4
- package/server/modules/reports/rp-congnosaptra.js +0 -4
- package/server/modules/reports/rp-congviectheobp.js +0 -9
- package/server/modules/reports/rp-congviectheodt.js +0 -8
- package/server/modules/reports/rp-congviectheokh.js +0 -8
- package/server/modules/reports/rp-congviectheonv.js +0 -9
- package/server/modules/reports/rp-congviectheotimeline.js +0 -6
- package/server/modules/reports/rp-ctbanle.js +0 -15
- package/server/modules/reports/rp-ctbanle2.js +0 -20
- package/server/modules/reports/rp-ctbanlectv.js +0 -20
- package/server/modules/reports/rp-ctbanlenpp.js +0 -24
- package/server/modules/reports/rp-ctdanhgianhanvien.js +0 -8
- package/server/modules/reports/rp-cthangbanbitralai.js +0 -4
- package/server/modules/reports/rp-ctmuahang.js +0 -7
- package/server/modules/reports/rp-cttralaihang.js +0 -4
- package/server/modules/reports/rp-databanle.js +0 -10
- package/server/modules/reports/rp-diemthuong.js +0 -2
- package/server/modules/reports/rp-dkcn.js +0 -3
- package/server/modules/reports/rp-dktk.js +0 -2
- package/server/modules/reports/rp-dsnhanviencm.js +0 -9
- package/server/modules/reports/rp-dsnhanvientb.js +0 -9
- package/server/modules/reports/rp-dtbanlekempk.js +0 -12
- package/server/modules/reports/rp-dtbanletheoct.js +0 -22
- package/server/modules/reports/rp-dtbanletheoctkempk.js +0 -25
- package/server/modules/reports/rp-dtbanletheokh.js +0 -17
- package/server/modules/reports/rp-dtbanletheokhnpp.js +0 -19
- package/server/modules/reports/rp-dtbanletheokho.js +0 -15
- package/server/modules/reports/rp-dtbanletheonam.js +0 -3
- package/server/modules/reports/rp-dtbanletheongay.js +0 -1
- package/server/modules/reports/rp-dtbanletheonpp.js +0 -23
- package/server/modules/reports/rp-dtbanletheonv.js +0 -19
- package/server/modules/reports/rp-dtbanletheoquy.js +0 -3
- package/server/modules/reports/rp-dtbanletheosp.js +0 -9
- package/server/modules/reports/rp-dtbanletheospnpp.js +0 -6
- package/server/modules/reports/rp-dtbanletheothang.js +0 -3
- package/server/modules/reports/rp-dtbanletheothungan.js +0 -12
- package/server/modules/reports/rp-dtbanletheovt.js +0 -2
- package/server/modules/reports/rp-dtbanletheovtnpp.js +0 -2
- package/server/modules/reports/rp-dutoanthuchitheodt.js +0 -4
- package/server/modules/reports/rp-getPXC2PNC.js +0 -8
- package/server/modules/reports/rp-getariseofaccountsbymonth.js +0 -4
- package/server/modules/reports/rp-getbtpb.js +0 -6
- package/server/modules/reports/rp-getcashbycashier.js +0 -7
- package/server/modules/reports/rp-getcschietkhau.js +0 -5
- package/server/modules/reports/rp-getdinhmuc4lenhcp.js +0 -7
- package/server/modules/reports/rp-getdinhmuc4pxk.js +0 -9
- package/server/modules/reports/rp-getdk4pht.js +0 -8
- package/server/modules/reports/rp-getdk4pkc.js +0 -10
- package/server/modules/reports/rp-getdttheoca.js +0 -5
- package/server/modules/reports/rp-getinvoice2pay.js +0 -4
- package/server/modules/reports/rp-getinvoice2receive.js +0 -4
- package/server/modules/reports/rp-getinvoice2return.js +0 -5
- package/server/modules/reports/rp-getinvoice2return_bl.js +0 -6
- package/server/modules/reports/rp-getkehoachmh4lenhcp.js +0 -4
- package/server/modules/reports/rp-getkhauhao.js +0 -7
- package/server/modules/reports/rp-getluong.js +0 -8
- package/server/modules/reports/rp-getluongchuyen.js +0 -5
- package/server/modules/reports/rp-getpn2fee.js +0 -5
- package/server/modules/reports/rp-getpn2return.js +0 -5
- package/server/modules/reports/rp-getthanhpham4pnk.js +0 -7
- package/server/modules/reports/rp-getvc2xhd.js +0 -11
- package/server/modules/reports/rp-gt_cpnvltt.js +0 -6
- package/server/modules/reports/rp-hangbanbitralai.js +0 -5
- package/server/modules/reports/rp-hangthanhvien.js +0 -3
- package/server/modules/reports/rp-hoadonbanhangtheohantt.js +0 -5
- package/server/modules/reports/rp-hoadonmuahangtheohantt.js +0 -5
- package/server/modules/reports/rp-hoahong.js +0 -15
- package/server/modules/reports/rp-kcsns.js +0 -19
- package/server/modules/reports/rp-kgchamcong.js +0 -1
- package/server/modules/reports/rp-khoaso.js +0 -11
- package/server/modules/reports/rp-kiemtrasocaitcvssocai.js +0 -6
- package/server/modules/reports/rp-kqdanhgianhanvien.js +0 -5
- package/server/modules/reports/rp-kqhdkd.js +0 -1
- package/server/modules/reports/rp-lcttgt.js +0 -16
- package/server/modules/reports/rp-lctttt.js +0 -11
- package/server/modules/reports/rp-linkslist.js +0 -4
- package/server/modules/reports/rp-phanbochitienchohoadon.js +0 -11
- package/server/modules/reports/rp-phanbothutienchohoadon.js +0 -11
- package/server/modules/reports/rp-ptbitralai.js +0 -7
- package/server/modules/reports/rp-ptcttct.js +0 -24
- package/server/modules/reports/rp-ptdonhang.js +0 -8
- package/server/modules/reports/rp-pttct.js +0 -52
- package/server/modules/reports/rp-pttctkho.js +0 -32
- package/server/modules/reports/rp-pttctkho2.js +0 -29
- package/server/modules/reports/rp-referredusers.js +0 -5
- package/server/modules/reports/rp-sctbhxh.js +0 -4
- package/server/modules/reports/rp-sctcnkh.js +0 -11
- package/server/modules/reports/rp-sctdiem.js +0 -3
- package/server/modules/reports/rp-sctdt.js +0 -7
- package/server/modules/reports/rp-sctdtcp.js +0 -11
- package/server/modules/reports/rp-sctluong.js +0 -6
- package/server/modules/reports/rp-sctthuetncn.js +0 -4
- package/server/modules/reports/rp-scttk.js +0 -9
- package/server/modules/reports/rp-sctvt.js +0 -5
- package/server/modules/reports/rp-sctvt_sl.js +0 -5
- package/server/modules/reports/rp-sctvtnpp.js +0 -6
- package/server/modules/reports/rp-sctvttt.js +0 -5
- package/server/modules/reports/rp-search.js +0 -4
- package/server/modules/reports/rp-socai.js +0 -6
- package/server/modules/reports/rp-socaitk.js +0 -1
- package/server/modules/reports/rp-sochut.js +0 -7
- package/server/modules/reports/rp-sokho.js +0 -7
- package/server/modules/reports/rp-sokhott.js +0 -5
- package/server/modules/reports/rp-sonkbh.js +0 -5
- package/server/modules/reports/rp-sonkc.js +0 -6
- package/server/modules/reports/rp-sonkct.js +0 -5
- package/server/modules/reports/rp-sonkmh.js +0 -5
- package/server/modules/reports/rp-sonktt.js +0 -5
- package/server/modules/reports/rp-soquy.js +0 -11
- package/server/modules/reports/rp-sosanhkhvatt.js +0 -13
- package/server/modules/reports/rp-sosanhkhvatt2.js +0 -5
- package/server/modules/reports/rp-sotaisan.js +0 -13
- package/server/modules/reports/rp-sotiengui.js +0 -7
- package/server/modules/reports/rp-taodinhmuctudkhoc.js +0 -5
- package/server/modules/reports/rp-thbanhangkempk.js +0 -28
- package/server/modules/reports/rp-thdanhgianhanvien.js +0 -9
- package/server/modules/reports/rp-thgt.js +0 -6
- package/server/modules/reports/rp-thnxt.js +0 -11
- package/server/modules/reports/rp-thnxt_sl.js +0 -9
- package/server/modules/reports/rp-thnxtnpp.js +0 -10
- package/server/modules/reports/rp-thnxttt.js +0 -9
- package/server/modules/reports/rp-tkbanhangtheogioithieu.js +0 -9
- package/server/modules/reports/rp-tkgioithieukh.js +0 -4
- package/server/modules/reports/rp-tkgtgt.js +0 -76
- package/server/modules/reports/rp-tkgtgt_old.js +0 -7
- package/server/modules/reports/rp-tmbctc.js +0 -20
- package/server/modules/reports/rp-tonghopbanhang.js +0 -6
- package/server/modules/reports/rp-tonghopmuahang.js +0 -5
- package/server/modules/reports/rp-tonghoptralaihang.js +0 -5
- package/server/modules/reports/rp-tongquanbanle.js +0 -20
- package/server/modules/reports/rp-tongquanbds.js +0 -3
- package/server/modules/reports/rp-tongquancongty.js +0 -6
- package/server/modules/reports/rp-tongquanctvnpp.js +0 -12
- package/server/modules/reports/rp-tongquannvbh.js +0 -14
- package/server/modules/reports/rp-tongquannvnpp.js +0 -5
- package/server/modules/reports/rp-uoctinhnvl.js +0 -11
- package/server/modules/reports/rp-wallet.js +0 -3
- package/server/modules/reports/rpt-tkdiemtichluy.js +0 -9
- package/server/modules/systems/sys-app.js +0 -34
- package/server/modules/systems/sys-colleague.js +0 -11
- package/server/modules/systems/sys-data_list_config.js +0 -1
- package/server/modules/systems/sys-domain.js +0 -1
- package/server/modules/systems/sys-ecomproductlines.js +0 -1
- package/server/modules/systems/sys-exportexceltemplate.js +0 -1
- package/server/modules/systems/sys-fieldright.js +0 -1
- package/server/modules/systems/sys-importexceltemplate.js +0 -1
- package/server/modules/systems/sys-labelinfo.js +0 -4
- package/server/modules/systems/sys-listinfo.js +0 -10
- package/server/modules/systems/sys-menuinfo.js +0 -4
- package/server/modules/systems/sys-message.js +0 -14
- package/server/modules/systems/sys-moduleinfo.js +0 -4
- package/server/modules/systems/sys-notification.js +0 -8
- package/server/modules/systems/sys-quanhuyen.js +0 -1
- package/server/modules/systems/sys-reportinfo.js +0 -5
- package/server/modules/systems/sys-rptobject.js +0 -1
- package/server/modules/systems/sys-schedule.js +0 -10
- package/server/modules/systems/sys-sysconfig.js +0 -1
- package/server/modules/systems/sys-sysgroup.js +0 -1
- package/server/modules/systems/sys-tableinfo.js +0 -1
- package/server/modules/systems/sys-templatestore.js +0 -5
- package/server/modules/systems/sys-tinhthanh.js +0 -1
- package/server/modules/systems/sys-token.js +0 -3
- package/server/modules/systems/sys-trangthai.js +0 -3
- package/server/modules/systems/sys-trialinfo.js +0 -1
- package/server/modules/systems/sys-user.js +0 -45
- package/server/modules/systems/sys-users.js +0 -10
- package/server/modules/systems/sys-versioninfo.js +0 -1
- package/server/modules/systems/sys-vietqrbanks.js +0 -1
- package/server/modules/systems/sys-xaphuong.js +0 -1
- package/server/modules/vouchers/vo-banggiaban.js +0 -8
- package/server/modules/vouchers/vo-bc1.js +0 -34
- package/server/modules/vouchers/vo-bc5.js +0 -15
- package/server/modules/vouchers/vo-bg1.js +0 -10
- package/server/modules/vouchers/vo-bg2.js +0 -12
- package/server/modules/vouchers/vo-bn1.js +0 -36
- package/server/modules/vouchers/vo-bn5.js +0 -15
- package/server/modules/vouchers/vo-dh2.js +0 -35
- package/server/modules/vouchers/vo-dinhmucsx.js +0 -6
- package/server/modules/vouchers/vo-dkb.js +0 -21
- package/server/modules/vouchers/vo-dn0.js +0 -9
- package/server/modules/vouchers/vo-dnm.js +0 -20
- package/server/modules/vouchers/vo-hd1.js +0 -37
- package/server/modules/vouchers/vo-hd2.js +0 -108
- package/server/modules/vouchers/vo-hd3.js +0 -38
- package/server/modules/vouchers/vo-hd4.js +0 -13
- package/server/modules/vouchers/vo-hd7.js +0 -29
- package/server/modules/vouchers/vo-hd8.js +0 -29
- package/server/modules/vouchers/vo-hde.js +0 -39
- package/server/modules/vouchers/vo-htl.js +0 -11
- package/server/modules/vouchers/vo-kbbtpb.js +0 -6
- package/server/modules/vouchers/vo-kehoachmh.js +0 -11
- package/server/modules/vouchers/vo-lenhcapphat.js +0 -9
- package/server/modules/vouchers/vo-lenhsx.js +0 -12
- package/server/modules/vouchers/vo-pbl.js +0 -94
- package/server/modules/vouchers/vo-pc0.js +0 -14
- package/server/modules/vouchers/vo-pc1.js +0 -31
- package/server/modules/vouchers/vo-pc2.js +0 -25
- package/server/modules/vouchers/vo-pc3.js +0 -14
- package/server/modules/vouchers/vo-pc5.js +0 -15
- package/server/modules/vouchers/vo-pc6.js +0 -19
- package/server/modules/vouchers/vo-pcl.js +0 -7
- package/server/modules/vouchers/vo-pdn.js +0 -11
- package/server/modules/vouchers/vo-pdx.js +0 -9
- package/server/modules/vouchers/vo-pgh.js +0 -16
- package/server/modules/vouchers/vo-pht.js +0 -6
- package/server/modules/vouchers/vo-pkc.js +0 -5
- package/server/modules/vouchers/vo-pkh.js +0 -9
- package/server/modules/vouchers/vo-pkk.js +0 -12
- package/server/modules/vouchers/vo-pkt.js +0 -12
- package/server/modules/vouchers/vo-pn1.js +0 -30
- package/server/modules/vouchers/vo-pn2.js +0 -17
- package/server/modules/vouchers/vo-pn3.js +0 -18
- package/server/modules/vouchers/vo-pn5.js +0 -18
- package/server/modules/vouchers/vo-pn6.js +0 -18
- package/server/modules/vouchers/vo-pn9.js +0 -23
- package/server/modules/vouchers/vo-pnc.js +0 -19
- package/server/modules/vouchers/vo-pnh.js +0 -17
- package/server/modules/vouchers/vo-pnk.js +0 -14
- package/server/modules/vouchers/vo-pnknpp.js +0 -12
- package/server/modules/vouchers/vo-po1.js +0 -14
- package/server/modules/vouchers/vo-ppb.js +0 -8
- package/server/modules/vouchers/vo-pt1.js +0 -20
- package/server/modules/vouchers/vo-pt5.js +0 -15
- package/server/modules/vouchers/vo-ptl.js +0 -8
- package/server/modules/vouchers/vo-purchase_contract.js +0 -9
- package/server/modules/vouchers/vo-pxc.js +0 -24
- package/server/modules/vouchers/vo-pxh.js +0 -18
- package/server/modules/vouchers/vo-pxk.js +0 -15
- package/server/modules/vouchers/vo-pxknpp.js +0 -14
- package/server/modules/vouchers/vo-qts.js +0 -12
- package/server/modules/vouchers/vo-sale_contract.js +0 -11
- package/server/modules/vouchers/vo-shipbook.js +0 -17
- package/server/modules/vouchers/vo-so1.js +0 -125
- package/server/modules/vouchers/vo-so3.js +0 -41
- package/server/modules/vouchers/vo-so5.js +0 -57
- package/server/modules/vouchers/vo-so7.js +0 -97
- package/server/modules/vouchers/vo-so9.js +0 -119
- package/server/modules/vouchers/vo-vanchuyen.js +0 -14
- package/server/modules/vouchers/vo-xhd.js +0 -33
- package/server/transactionMiddleware.js +0 -4
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "flexbiz-server",
|
|
3
3
|
"main": "./server/app.js",
|
|
4
4
|
"description": "Flexible Server",
|
|
5
|
-
"version": "12.
|
|
5
|
+
"version": "12.7.1",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Van Truong Pham",
|
|
8
8
|
"email": "invncur@gmail.com"
|
|
@@ -68,7 +68,6 @@
|
|
|
68
68
|
"natives": "^1.1.6",
|
|
69
69
|
"ng-node-compile": "^2.0.52",
|
|
70
70
|
"node-cron": "^4.2.1",
|
|
71
|
-
"node-worker-threads-pool": "^1.4.3",
|
|
72
71
|
"node-xlsx": "^0.24.0",
|
|
73
72
|
"node-zip": "^1.1.1",
|
|
74
73
|
"nodemailer": "^6.10.0",
|
|
@@ -95,7 +94,6 @@
|
|
|
95
94
|
"socket.io-redis": "^6.1.1",
|
|
96
95
|
"sticky-session": "^1.1.2",
|
|
97
96
|
"tesseract.js": "^7.0.0",
|
|
98
|
-
"toobusy-js": "^0.5.1",
|
|
99
97
|
"underscore": "^1.13.1",
|
|
100
98
|
"unidecode": "^0.1.8",
|
|
101
99
|
"validate.js": "^0.13.1",
|
package/server/app.js
CHANGED
|
@@ -1,25 +1,348 @@
|
|
|
1
|
-
require(
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
function(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
1
|
+
require('events').EventEmitter.defaultMaxListeners = 10000000;
|
|
2
|
+
const os = require('os');
|
|
3
|
+
const express = require('express');
|
|
4
|
+
const bodyParser = require('body-parser');
|
|
5
|
+
const crypto = require("crypto");
|
|
6
|
+
const passport = require('passport');
|
|
7
|
+
const https = require("https");
|
|
8
|
+
const http = require('http');
|
|
9
|
+
const fs = require("fs");
|
|
10
|
+
const cors=require('cors');
|
|
11
|
+
//const path = require("path");
|
|
12
|
+
require('./global');
|
|
13
|
+
//const { transactionMiddleware } = require("./transactionMiddleware.js");
|
|
14
|
+
const defaultConfigs = require('./defaultConfigs');
|
|
15
|
+
|
|
16
|
+
const mainServer = function(app,options={port:443,useSocket:true},callbackServer= null) {
|
|
17
|
+
const configs = global.configs = {...defaultConfigs,...options.configs,lite:options.lite};
|
|
18
|
+
//Ưu tiên sử dụng kết nối mongodb qua biến môi trường;
|
|
19
|
+
configs.database.url=process.env.MONGO_URI || configs.database.url;
|
|
20
|
+
//Logger.info("request size",configs.limitRequestSize,configs.limitFileSize)
|
|
21
|
+
|
|
22
|
+
if(!configs.admins) configs.admins = configs.adminUsers.map(u=>u.email);
|
|
23
|
+
if(!configs.supportUsers) configs.supportUsers =[...configs.admins];
|
|
24
|
+
|
|
25
|
+
if(!configs.public_token) configs.public_token = "flex.public.token";
|
|
26
|
+
const _port = options.port || configs.port || configs.PORT || 443;
|
|
27
|
+
configs.port = _port;
|
|
28
|
+
global.port = _port;
|
|
29
|
+
//xử lý tiếng việt không dâu
|
|
30
|
+
//const VietnameseCollationPlugin = require('./libs/viCollation');
|
|
31
|
+
//global.mongoose.plugin(VietnameseCollationPlugin);
|
|
32
|
+
//
|
|
33
|
+
const User = global.getModel('user');
|
|
34
|
+
//set timezone
|
|
35
|
+
const moment = require('moment-timezone');
|
|
36
|
+
moment.tz.setDefault(configs.timezone || 'Asia/Ho_Chi_Minh');
|
|
37
|
+
//app
|
|
38
|
+
if(!app) app = express();
|
|
39
|
+
app.set('trust proxy', 1);
|
|
40
|
+
//check too busy
|
|
41
|
+
// [OPTIMIZE] Thay thế toobusy-js (bản cuối phát hành 07/2016, đã ngừng phát triển ~10 năm)
|
|
42
|
+
// bằng chính thuật toán mà toobusy-js từng dùng: đặt 1 timer hẹn giờ N ms, đo xem thực tế
|
|
43
|
+
// nó bị trễ (fire chậm) bao nhiêu so với N ms — phần trễ đó CHÍNH LÀ độ trễ (lag) của event
|
|
44
|
+
// loop. Không cần cài thêm package nào, không phụ thuộc bên thứ ba nào có nguy cơ bị bỏ rơi.
|
|
45
|
+
const LAG_CHECK_INTERVAL_MS = 500; // giống interval mặc định của toobusy-js
|
|
46
|
+
const maxLagMs = configs.maxLag || 70; // giống maxLag mặc định của toobusy-js (70ms)
|
|
47
|
+
let currentLagMs = 0;
|
|
48
|
+
(function scheduleLagCheck() {
|
|
49
|
+
const expectedFireAt = Date.now() + LAG_CHECK_INTERVAL_MS;
|
|
50
|
+
const timer = setTimeout(() => {
|
|
51
|
+
currentLagMs = Math.max(0, Date.now() - expectedFireAt);
|
|
52
|
+
scheduleLagCheck();
|
|
53
|
+
}, LAG_CHECK_INTERVAL_MS);
|
|
54
|
+
timer.unref(); // không giữ process sống chỉ vì timer này (giống hành vi toobusy-js)
|
|
55
|
+
})();
|
|
56
|
+
function isServerTooBusy() {
|
|
57
|
+
return currentLagMs > maxLagMs;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
app.use(function(req, res, next) {
|
|
61
|
+
if (isServerTooBusy()) {
|
|
62
|
+
Logger.error("Server is busy right now. This request has been cancel:",req.originalUrl,"lag:",currentLagMs+"ms");
|
|
63
|
+
res.status(503).send({error:"Server is busy right now, sorry."});
|
|
64
|
+
} else {
|
|
65
|
+
next();
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
//
|
|
69
|
+
const session = require('express-session');
|
|
70
|
+
app.use(session({secret: 'QV098PVT123456HLBN', resave: false, saveUninitialized: true,cookie: { secure: false }}));
|
|
71
|
+
|
|
72
|
+
//cookie uid
|
|
73
|
+
const cookieParser = require('cookie-parser')
|
|
74
|
+
app.use(cookieParser())
|
|
75
|
+
app.use(function (req, res, next) {
|
|
76
|
+
let uid = req.cookies.uid;
|
|
77
|
+
if(!uid){
|
|
78
|
+
uid = req.headers["uid"];
|
|
79
|
+
}
|
|
80
|
+
if(!uid){
|
|
81
|
+
uid = "uid:" + crypto.randomBytes(20).toString('hex')
|
|
82
|
+
res.cookie("uid",uid,{
|
|
83
|
+
expires: new Date(Date.now() + 365 * 24 * 3600000), // cookie will be removed after 24 hours,
|
|
84
|
+
sameSite: 'none',
|
|
85
|
+
secure:true
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
res.set('uid', uid);
|
|
89
|
+
//Logger.info("uid",uid,req.originalUrl,req.method);
|
|
90
|
+
req.cookies.uid = uid;
|
|
91
|
+
next();
|
|
92
|
+
})
|
|
93
|
+
//compression
|
|
94
|
+
const compress = require('compression');
|
|
95
|
+
app.use(compress());
|
|
96
|
+
//allow upload file to server
|
|
97
|
+
const root_dir_uploads = configs.paths.uploads || (__dirname + '/uploads');
|
|
98
|
+
const limitFileSize = configs.limitFileSize || 1024 * 1024 * 5;
|
|
99
|
+
Logger.warn("[app] [limitFileSize]",limitFileSize);
|
|
100
|
+
app.use(function (req, res, next) {
|
|
101
|
+
const size = req.headers['content-lenght'];
|
|
102
|
+
if(size && size> limitFileSize){
|
|
103
|
+
return res.status(400).send({error:"File too large"});
|
|
104
|
+
}
|
|
105
|
+
next()
|
|
106
|
+
})
|
|
107
|
+
const multer = require('multer')({
|
|
108
|
+
dest: root_dir_uploads,
|
|
109
|
+
limits: {files:1,fileSize: limitFileSize }
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
app.use(multer);
|
|
113
|
+
//allow cross domain
|
|
114
|
+
const corsOptions = {
|
|
115
|
+
credentials: true,
|
|
116
|
+
exposedHeaders: ["set-cookie","uid"],
|
|
117
|
+
origin: (origin, callback) => {
|
|
118
|
+
callback(null, true);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
app.use(cors(corsOptions));
|
|
122
|
+
if(!configs.paths) configs.paths={}
|
|
123
|
+
//static
|
|
124
|
+
if(options.lite!==true){
|
|
125
|
+
app.use('/', express.static(configs.paths.public || __dirname + '/public'));
|
|
126
|
+
app.use('/admin', express.static(configs.paths.admin || (__dirname + '/admin')));
|
|
127
|
+
app.use('/templates', express.static(configs.paths.templates|| (__dirname + '/templates')));
|
|
128
|
+
app.use('/images', express.static(configs.paths.images || (__dirname + '/images')));
|
|
129
|
+
}
|
|
130
|
+
//
|
|
131
|
+
const limitRequestSize = configs.limitRequestSize||'1mb';
|
|
132
|
+
Logger.warn("[app] [limitRequestSize]",limitRequestSize);
|
|
133
|
+
app.use(bodyParser.json({limit: limitRequestSize}));
|
|
134
|
+
app.use(bodyParser.urlencoded({limit: limitRequestSize,extended: true}));
|
|
135
|
+
|
|
136
|
+
app.use(passport.initialize());
|
|
137
|
+
//log access
|
|
138
|
+
const morgan = require('morgan')
|
|
139
|
+
const rfs = require('rotating-file-stream')
|
|
140
|
+
const logDirectory = configs.paths.log || (__dirname + '/log');
|
|
141
|
+
fs.existsSync(logDirectory) || fs.mkdirSync(logDirectory);
|
|
142
|
+
const accessLogStream = rfs('access.log', {
|
|
143
|
+
interval: '1d', // rotate daily
|
|
144
|
+
path: logDirectory
|
|
145
|
+
})
|
|
146
|
+
app.use(morgan('combined', {
|
|
147
|
+
stream: accessLogStream,
|
|
148
|
+
skip: function(req, res) {
|
|
149
|
+
return res.statusCode < 400
|
|
150
|
+
}
|
|
151
|
+
}))
|
|
152
|
+
//handle error default
|
|
153
|
+
// eslint-disable-next-line no-unused-vars
|
|
154
|
+
app.use(function (err, req, res, next) {
|
|
155
|
+
Logger.error(err.stack)
|
|
156
|
+
res.status(500).send('Server Error!')
|
|
157
|
+
})
|
|
158
|
+
//connect to mongodb
|
|
159
|
+
Logger.info("[app] connect to mongodb",configs.database.url);
|
|
160
|
+
if(!configs.database.url){
|
|
161
|
+
Logger.error("[app] thiếu đường dẫn kết nối với database trong file config");
|
|
162
|
+
process.exit(1)
|
|
163
|
+
}
|
|
164
|
+
// [MONGOOSE 6+] mongoose.set('strictQuery', ...) tránh warning "strictQuery deprecation"
|
|
165
|
+
// xuất hiện từ mongoose 6.x/7.x. Đặt `true` để giữ đúng hành vi lọc query như mongoose 5.x
|
|
166
|
+
// (field không có trong schema sẽ bị bỏ qua khỏi filter thay vì báo lỗi/query nguyên trạng).
|
|
167
|
+
// Nếu bạn nâng lên mongoose 7+ và muốn dùng hành vi mặc định mới, có thể đổi thành false.
|
|
168
|
+
if (typeof global.mongoose.set === 'function') {
|
|
169
|
+
global.mongoose.set('strictQuery', true);
|
|
170
|
+
}
|
|
171
|
+
// [MONGOOSE 6+] ĐÃ XOÁ 3 option: useNewUrlParser, useFindAndModify, useUnifiedTopology.
|
|
172
|
+
// Từ mongoose 6.0.0 trở đi, 3 option này KHÔNG còn được driver hỗ trợ nữa — truyền vào sẽ
|
|
173
|
+
// khiến connect() reject với MongoParseError ngay lập tức (đây chính là nguyên nhân server
|
|
174
|
+
// liên tục restart: connect() lỗi -> rơi vào .catch() bên dưới -> process.exit(1) -> process
|
|
175
|
+
// manager tự khởi động lại -> lỗi lặp lại y hệt). Mongoose 6+ tự động hành xử như thể cả 3
|
|
176
|
+
// option này đều bật (useFindAndModify tự động = false), nên chỉ cần bỏ hẳn, không cần thay
|
|
177
|
+
// bằng option nào khác.
|
|
178
|
+
global.mongoose.connect(configs.database.url).then(async () => {
|
|
179
|
+
if(!options.lite){
|
|
180
|
+
//Tăng thời gian hoạt động của một transaction;
|
|
181
|
+
let transactionLifetimeLimitSeconds = configs.transactionLifetimeLimitSeconds || 10 * 60;
|
|
182
|
+
const client = mongoose.connection.getClient();
|
|
183
|
+
const adminDb = client.db().admin();
|
|
184
|
+
const result = await adminDb.command({
|
|
185
|
+
setParameter: 1,
|
|
186
|
+
transactionLifetimeLimitSeconds
|
|
187
|
+
});
|
|
188
|
+
Logger.warn("[app] Tăng thời gian hoạt động của một transaction lên",transactionLifetimeLimitSeconds,result);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
//
|
|
192
|
+
Logger.info("[app] Connected to Database");
|
|
193
|
+
const redis = require('redis');
|
|
194
|
+
const {retryStrategyRedis} = require("./libs/utils");
|
|
195
|
+
global.clientRedis = redis.createClient({
|
|
196
|
+
host: '127.0.0.1',
|
|
197
|
+
port: 6379,
|
|
198
|
+
retry_strategy: retryStrategyRedis
|
|
199
|
+
});
|
|
200
|
+
global.clientRedis.on("error", (err) => {
|
|
201
|
+
Logger.error("Redis Client Error", err)
|
|
202
|
+
process.exit(1);
|
|
203
|
+
});
|
|
204
|
+
global.clientRedis.on("end", () => {
|
|
205
|
+
Logger.error("[app] Redis connection closed.");
|
|
206
|
+
});
|
|
207
|
+
global.clientRedis.on("connect", function() {
|
|
208
|
+
Logger.info("[app] redis connected");
|
|
209
|
+
//Đăng ký nhận thông báo từ các process khác
|
|
210
|
+
User.initClientSockets();
|
|
211
|
+
//
|
|
212
|
+
if(options.lite!==true){
|
|
213
|
+
if(options.createRedisCache){
|
|
214
|
+
const redisCache = require('./libs/redis-cache');
|
|
215
|
+
redisCache.set();
|
|
216
|
+
}
|
|
217
|
+
//start schedule
|
|
218
|
+
const new_schedule = global.getModel('schedule');
|
|
219
|
+
new_schedule.start();
|
|
220
|
+
//xử lý các task tối ưu hoá sổ sách
|
|
221
|
+
const {recoverBackgroundTasks} = require('./libs/optimizeBookkeeping');
|
|
222
|
+
recoverBackgroundTasks().catch(console.error);
|
|
223
|
+
//routes
|
|
224
|
+
const route = require('./route');
|
|
225
|
+
route(app,()=>{
|
|
226
|
+
//create server
|
|
227
|
+
if(options.createServer!==false){
|
|
228
|
+
let server;
|
|
229
|
+
if (configs.use_ssl && options.sslDir) {
|
|
230
|
+
const sslConfig = require("./sslConfig");
|
|
231
|
+
server = https.createServer(sslConfig(options.sslDir), app);
|
|
232
|
+
} else {
|
|
233
|
+
server = http.createServer(app);
|
|
234
|
+
}
|
|
235
|
+
server.timeout = 10*60*1000;
|
|
236
|
+
//init socket
|
|
237
|
+
if(options.useSocket!==false){
|
|
238
|
+
User.initSocket(server);
|
|
239
|
+
}
|
|
240
|
+
//
|
|
241
|
+
// [OPTIMIZE] Đã bỏ nhánh cluster/sticky-session (require('cluster') + 'sticky-session').
|
|
242
|
+
// Server giờ luôn chạy đơn tiến trình (single process) và listen trực tiếp.
|
|
243
|
+
// Nếu sau này cần scale ra nhiều tiến trình, khuyến nghị dùng PM2 (`pm2 start app.js -i max`)
|
|
244
|
+
// hoặc orchestrator ở tầng infra (Docker/K8s replicas) thay vì tự quản lý cluster trong code —
|
|
245
|
+
// vừa đơn giản hơn, vừa tránh các vấn đề sticky session khi có nhiều instance phía sau load balancer.
|
|
246
|
+
server.listen(global.port, () => {
|
|
247
|
+
Logger.info('[app] server start at ' + global.port + ' port');
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
//Tính toán số lượng worker cần thiết cho mỗi pool
|
|
251
|
+
const cpus = os.cpus().length;
|
|
252
|
+
const import_cpus = options.import_cpus || (options.start_import_data_pool?(!options.start_report_pool && !options.start_input_data_pool? Math.round(cpus/2):1):0)
|
|
253
|
+
const input_cpus = options.input_cpus || (options.start_input_data_pool?Math.max(Math.round(cpus/2),2):0);
|
|
254
|
+
const report_cpus = options.report_cpus || (options.start_import_data_pool?Math.max(Math.min(cpus -input_cpus -import_cpus,Math.round(cpus/2))-1,2):0);
|
|
255
|
+
const timeout_input = options.timeout_input || options.timeout || 5*60*1000;
|
|
256
|
+
const timeout_import = options.timeout_import || options.timeout || 60*60*1000;
|
|
257
|
+
const timeout_report = options.timeout_report || options.timeout || 5*60*1000;
|
|
258
|
+
//khởi tạo các pool
|
|
259
|
+
if(input_cpus){
|
|
260
|
+
const StaticPool = require("./libs/WorkerStaticPool");
|
|
261
|
+
global.inputMainPool = new StaticPool(
|
|
262
|
+
__dirname + '/workers/inputWorker.js',//worker file
|
|
263
|
+
options.max_queue_imports||0,//limit queue
|
|
264
|
+
input_cpus,//concurrency
|
|
265
|
+
timeout_input,
|
|
266
|
+
input_cpus,//auto start workers
|
|
267
|
+
"input pool"//name of pool
|
|
268
|
+
);
|
|
269
|
+
global.inputMainPool.exec({
|
|
270
|
+
load:true,
|
|
271
|
+
configs: JSON.stringify(configs),
|
|
272
|
+
},()=>{
|
|
273
|
+
Logger.info("🔥 [app] Crud pool ready");
|
|
274
|
+
})
|
|
275
|
+
}
|
|
276
|
+
if(import_cpus){
|
|
277
|
+
const StaticPool = require("./libs/WorkerStaticPool");
|
|
278
|
+
global.importDataMainPool = new StaticPool(
|
|
279
|
+
__dirname + '/workers/inputWorker.js',//worker file
|
|
280
|
+
options.max_queue_imports||0,//limit queue
|
|
281
|
+
import_cpus,//concurrency
|
|
282
|
+
timeout_import,//timeout 1 hour
|
|
283
|
+
1,
|
|
284
|
+
"import pool"//name of pool
|
|
285
|
+
);
|
|
286
|
+
global.importDataMainPool.exec({
|
|
287
|
+
load:true,
|
|
288
|
+
configs: JSON.stringify(configs),
|
|
289
|
+
},()=>{
|
|
290
|
+
Logger.info("[app] Import pool ready");
|
|
291
|
+
})
|
|
292
|
+
}
|
|
293
|
+
if(report_cpus){
|
|
294
|
+
const StaticPool = require("./libs/WorkerStaticPool");
|
|
295
|
+
global.reportMainPool = new StaticPool(
|
|
296
|
+
__dirname + '/workers/reportWorker.js',
|
|
297
|
+
options.max_queue_reports||0,
|
|
298
|
+
report_cpus,//concurrency
|
|
299
|
+
timeout_report,
|
|
300
|
+
2,
|
|
301
|
+
"report pool"//name of pool
|
|
302
|
+
);
|
|
303
|
+
global.reportMainPool.exec({
|
|
304
|
+
load:true,
|
|
305
|
+
configs: JSON.stringify(configs),
|
|
306
|
+
},()=>{
|
|
307
|
+
Logger.info("[app] Report pool ready");
|
|
308
|
+
})
|
|
309
|
+
}
|
|
310
|
+
if(callbackServer) callbackServer();
|
|
311
|
+
});
|
|
312
|
+
}else{
|
|
313
|
+
//routes
|
|
314
|
+
const route = require('./route');
|
|
315
|
+
route(app,()=>{
|
|
316
|
+
if(callbackServer) callbackServer();
|
|
317
|
+
},true);
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
}).catch((err) => {
|
|
321
|
+
Logger.info("[app] Not Connected to Database ERROR! ", err);
|
|
322
|
+
process.exit(1)
|
|
323
|
+
});
|
|
324
|
+
return app;
|
|
325
|
+
}
|
|
326
|
+
process.on("SIGINT", async () => {
|
|
327
|
+
if(global.sharedRedisConnection) await global.sharedRedisConnection.quit(); // Đóng kết nối Redis
|
|
328
|
+
process.exit(0);
|
|
329
|
+
});
|
|
330
|
+
process.on('uncaughtException', function (err) {
|
|
331
|
+
Logger.error((new Date).toUTCString() + ' uncaughtException:', err.message);
|
|
332
|
+
Logger.error(err.stack);
|
|
333
|
+
let error = `
|
|
334
|
+
Error: ${err.message}
|
|
335
|
+
Stack: ${err.stack}
|
|
336
|
+
`
|
|
337
|
+
try{
|
|
338
|
+
const logDirectory = (__dirname + '/log');
|
|
339
|
+
fs.existsSync(logDirectory) || fs.mkdirSync(logDirectory);
|
|
340
|
+
fs.writeFile(`${logDirectory}/error-${new Date().getTime()}.txt`,error,()=>{
|
|
341
|
+
Logger.info("[app] wrote log error");
|
|
342
|
+
});
|
|
343
|
+
}catch(e){
|
|
344
|
+
Logger.info(e);
|
|
345
|
+
}
|
|
346
|
+
process.exit(1)
|
|
347
|
+
})
|
|
348
|
+
module.exports = mainServer
|
package/server/cluster.js
CHANGED
|
@@ -1,27 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
$res$$.set("uid",$uid$$);$req$$.cookies.uid=$uid$$;$next$$()});$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$=require("compression");$app$$.use($_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$());$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$=$configs$$.paths.uploads||__dirname+"/uploads";const $limitFileSize$$=$configs$$.limitFileSize||$configs$$.limitRequestSize||1048576;$app$$.use(function($req$jscomp$2_size$$,
|
|
7
|
-
$res$$,$next$$){if(($req$jscomp$2_size$$=$req$jscomp$2_size$$.headers["content-lenght"])&&$req$jscomp$2_size$$>$limitFileSize$$)return $res$$.status(400).send({error:"File too large"});$next$$()});$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$=require("multer")({dest:$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$,limits:{files:1,fileSize:$limitFileSize$$}});$app$$.use($_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$);
|
|
8
|
-
$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$=require("cors");$app$$.use($_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$({credentials:!0,exposedHeaders:["set-cookie","uid"],origin:($origin$$,$callback$$)=>{$callback$$(null,!0)}}));$configs$$.paths||($configs$$.paths={});$app$$.use("/",express.static($configs$$.paths.public||__dirname+"/public"));$app$$.use("/admin",express.static($configs$$.paths.admin||__dirname+"/admin"));$app$$.use("/templates",
|
|
9
|
-
express.static($configs$$.paths.templates||__dirname+"/templates"));$app$$.use("/images",express.static($configs$$.paths.images||__dirname+"/images"));$app$$.use(bodyParser.json({limit:$configs$$.limitRequestSize||"1mb"}));$app$$.use(bodyParser.urlencoded({limit:$configs$$.limitRequestSize||"1mb",extended:!0}));$app$$.use(passport.initialize());$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$=require("morgan");$_port_accessLogStream_rfs$$=require("rotating-file-stream");
|
|
10
|
-
const $logDirectory$$=$configs$$.paths.log||__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);$_port_accessLogStream_rfs$$=$_port_accessLogStream_rfs$$("access-cluster.log",{interval:"1d",path:$logDirectory$$});$app$$.use($_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$("combined",{stream:$_port_accessLogStream_rfs$$,skip:function($req$$,$res$$){return $res$$.statusCode<400}}));$app$$.use(function($err$$,$req$$,$res$$,$next$$){Logger.error($err$$.stack);
|
|
11
|
-
$res$$.status(500).send("Server error!")});Logger.info("[cluster] connect to mongodb",$configs$$.database.url);$configs$$.database.url||(Logger.error("[cluster] thi\u1ebfu \u0111\u01b0\u1eddng d\u1eabn k\u1ebft n\u1ed1i v\u1edbi database trong file configs"),process.exit(1));global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0,useFindAndModify:!1,useUnifiedTopology:!0}).then(async $clientMongo_redis$$=>{Logger.info("[cluster] Connected to Database");global.clientMongo=$clientMongo_redis$$;
|
|
12
|
-
$clientMongo_redis$$=require("redis");const {retryStrategyRedis:$retryStrategyRedis$$}=require("./libs/utils");global.clientRedis=$clientMongo_redis$$.createClient({host:"127.0.0.1",port:6379,retry_strategy:$retryStrategyRedis$$});global.clientRedis.on("error",$err$$=>{Logger.error("[cluster] Redis Client Error",$err$$);process.exit(1)});global.clientRedis.on("end",()=>{Logger.error("[cluster] Redis connection closed.")});global.clientRedis.on("connect",async function(){function $initSysData$$(){Logger.info("[cluster] creating system data...");
|
|
13
|
-
const $files$$=fs.readdirSync(__dirname+"/data/sys");$async$$.mapSeries($files$$,function($file$$,$callback$$){setImmediate(()=>{if($file$$.endsWith(".js")){const $data$$=JSON.parse(JSON.stringify(require("./data/sys/"+$file$$).data)),$model$$=global.getModel(""+$file$$);Logger.info("[cluster] creating system data...",$file$$);$model$$.deleteMany({},$e$$=>{Logger.error($e$$);$async$$.mapSeries($data$$,function($r$$,$callback$$){delete $r$$._id;delete $r$$.__v;delete $r$$.collection_name;delete $r$$.pkey;
|
|
14
|
-
$model$$.create($r$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$()})},function($error$$,$rs$$){$callback$$($error$$,$rs$$)})})}else $callback$$()})},function($error$$){if($error$$)return Logger.info($error$$);Logger.info("[cluster] created system data")})}Logger.info("redis connected");$options$$.createRedisCache&&require("./libs/redis-cache").set();global.getModel("schedule").start();var {recoverBackgroundTasks:$StaticPool$$}=require("./libs/optimizeBookkeeping");$StaticPool$$().catch(console.error);
|
|
15
|
-
$StaticPool$$=global.getModel("user");var $cpus_init_system_data_report_cpus_server$$=$configs$$.initSysData;$cpus_init_system_data_report_cpus_server$$||await $StaticPool$$.findOne({})||($cpus_init_system_data_report_cpus_server$$=!0);for(var $i_timeout_report$$=0;$i_timeout_report$$<$configs$$.adminUsers.length;$i_timeout_report$$++){var $StaticPool$jscomp$0$$=$configs$$.adminUsers[$i_timeout_report$$],$timeout_import_u$$=await $StaticPool$$.findOne({email:$StaticPool$jscomp$0$$.email});$timeout_import_u$$||
|
|
16
|
-
($StaticPool$jscomp$0$$.local={name:$StaticPool$jscomp$0$$.name,email:$StaticPool$jscomp$0$$.email,active:!0},$timeout_import_u$$=new $StaticPool$$($StaticPool$jscomp$0$$),$timeout_import_u$$.local.password=$timeout_import_u$$.generateHash($StaticPool$jscomp$0$$.email+$StaticPool$jscomp$0$$.defaultPassword),$timeout_import_u$$.save(function($error$$,$user$$){if($error$$)return Logger.error($error$$);$user$$&&Logger.info("[cluster] da tao thanh cong user "+$user$$.email)}))}const $async$$=require("async");
|
|
17
|
-
$cpus_init_system_data_report_cpus_server$$&&$initSysData$$();require("./route")($app$$);$cpus_init_system_data_report_cpus_server$$=$configs$$.use_ssl&&$sslDir$$?https.createServer(sslConfig($sslDir$$),$app$$):http.createServer($app$$);$cpus_init_system_data_report_cpus_server$$.timeout=6E5;$StaticPool$$.initSocket($cpus_init_system_data_report_cpus_server$$);$StaticPool$$.initClientSockets();if($options$$.cluster){if(!require("sticky-session").listen($cpus_init_system_data_report_cpus_server$$,
|
|
18
|
-
global.port))$cpus_init_system_data_report_cpus_server$$.once("listening",function(){Logger.info("[cluster] server cluster started on",global.port)});$StaticPool$$=require("cluster");$StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){Logger.error("[cluster] worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool$$.on("online",function($worker$$){console.info("[cluster] worker "+$worker$$.process.pid+" is online");global.clientRedis.set("lastworker",JSON.stringify({pid:$worker$$.process.pid}))})}else $cpus_init_system_data_report_cpus_server$$.listen(global.port,
|
|
19
|
-
()=>{Logger.info("[cluster] server start at "+global.port+" port")});$cpus_init_system_data_report_cpus_server$$=os.cpus().length;$StaticPool$$=$options$$.import_cpus||($options$$.start_import_data_pool?$options$$.start_report_pool||$options$$.start_input_data_pool?1:Math.round($cpus_init_system_data_report_cpus_server$$/2):0);$StaticPool$jscomp$0$$=$options$$.input_cpus||($options$$.start_input_data_pool?Math.max(Math.round($cpus_init_system_data_report_cpus_server$$/2),2):0);$cpus_init_system_data_report_cpus_server$$=
|
|
20
|
-
$options$$.report_cpus||($options$$.start_import_data_pool?Math.max(Math.min($cpus_init_system_data_report_cpus_server$$-$StaticPool$jscomp$0$$-$StaticPool$$,Math.round($cpus_init_system_data_report_cpus_server$$/2))-1,2):0);const $timeout_input$$=$options$$.timeout_input||$options$$.timeout||3E5;$timeout_import_u$$=$options$$.timeout_import||$options$$.timeout||36E5;$i_timeout_report$$=$options$$.timeout_report||$options$$.timeout||3E5;if($StaticPool$jscomp$0$$){const $StaticPool$$=require("./libs/WorkerStaticPool");
|
|
21
|
-
global.inputMainPool=new $StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$0$$,$timeout_input$$,$StaticPool$jscomp$0$$,"input pool");global.inputMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{Logger.info("\ud83d\udd25 [cluster] Crud pool ready")})}$StaticPool$$&&($StaticPool$jscomp$0$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool$jscomp$0$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||
|
|
22
|
-
0,$StaticPool$$,$timeout_import_u$$,1,"import pool"),global.importDataMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{Logger.info("[cluster] Import pool ready")}));$cpus_init_system_data_report_cpus_server$$&&($StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0,$cpus_init_system_data_report_cpus_server$$,$i_timeout_report$$,2,"report pool"),global.reportMainPool.exec({load:!0,
|
|
23
|
-
configs:JSON.stringify($configs$$)},()=>{Logger.info("[cluster] Report pool ready")}))})}).catch($err$$=>{Logger.error("[cluster] Not Connected to Database ERROR!",$err$$);process.exit(1)})};process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});
|
|
24
|
-
process.on("uncaughtException",function($err$jscomp$3_error$$){Logger.error("[cluster]",(new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);Logger.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
|
|
25
|
-
Error: ${$err$jscomp$3_error$$.message}
|
|
26
|
-
Stack: ${$err$jscomp$3_error$$.stack}
|
|
27
|
-
`;try{const $logDirectory$$=__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);fs.writeFile(`${$logDirectory$$}/error-${(new Date).getTime()}.txt`,$err$jscomp$3_error$$,()=>{Logger.info("[cluster] wrote log error")})}catch($e$$){Logger.info($e$$)}process.exit(1)});module.exports=clusterServer;
|
|
1
|
+
const server = require("./app");
|
|
2
|
+
const clusterServer = function(app,sslDir,configs={},port = 9999,options ={start_import_data_pool:false,start_report_pool:true,createRedisCache:true}){
|
|
3
|
+
server(app,{sslDir,configs,port,...options})
|
|
4
|
+
}
|
|
5
|
+
module.exports =clusterServer;
|
package/server/models/account.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
const dmnt=require("./currency"),accountSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},tk:{type:String,required:"tk is required",uppercase:!0,trim:!0,maxlength:32},ten_tk:{type:String,required:"ten_tk is required",trim:!0,maxlength:1024},ten_tk2:{type:String,maxlength:1024},tk_me:{type:String,default:"",trim:!0,uppercase:!0,maxlength:32},loai_tk:{type:Number,min:0,max:1,default:1,enum:[0,1]},tk_cn:{type:Boolean,default:!1,required:!0},ma_nt:{type:String,uppercase:!0,required:"ma_nt is required",
|
|
2
|
-
default:"VND",trim:!0,maxlength:32},tk_kho_yn:Boolean,tk_cp_yn:Boolean,tk_bp_yn:Boolean,tk_dt_yn:Boolean,tk_hd_yn:Boolean,tk_nv_yn:Boolean,tk_td1_yn:Boolean,tk_td2_yn:Boolean,tk_td3_yn:Boolean,not_du_co_yn:Boolean,not_du_no_yn:Boolean,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:""},visible_to:{type:Number,default:0},visible_to_users:[String],
|
|
3
|
-
update_right:[String],delete_right:[String]},{toJSON:{virtuals:!0}});
|
|
4
|
-
(global.configs||{}).createIndexes&&(accountSchema.index({id_app:1,tk:1,status:1}),accountSchema.index({id_app:1,tk:1,ten_tk:1,status:1}),accountSchema.index({id_app:1,tk_me:1}),accountSchema.index({id_app:1,tk:1,loai_tk:1,ten_tk:1,status:1}),accountSchema.index({id_app:1,loai_tk:1,status:1}),accountSchema.index({id_app:1,tk_cn:1,status:1}),accountSchema.index({id_app:1,tk:1},{unique:!0}),accountSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,status:1}),accountSchema.index({id_app:1,
|
|
5
|
-
user_created:1,visible_to:1,visible_to_users:1,status:1,tk:1,ten_tk:1}),accountSchema.index({id_app:1,ten_tk:"text",ten_tk2:"text",tk:"text",ma_nt:"text"},{name:"account_index"}));accountSchema.validate={ma_nt:[function($id_app$$,$value$$,$callback$$){if(!$value$$)return $callback$$(!0);dmnt.findOne({id_app:$id_app$$,ma_nt:$value$$},function($error$$,$nt$$){if($error$$)return $callback$$(!1);$nt$$&&$callback$$(!0)})},"M\u00e3 ngo\u1ea1i t\u1ec7 kh\u00f4ng t\u1ed3n t\u1ea1i"]};
|
|
6
|
-
const model=mongoose.models.account||mongoose.model("account",accountSchema);model.referenceKeys={tk:[{model:"vsocai",key:"tk",error:"T\u00e0i kho\u1ea3n ${obj.tk} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u"},{model:"cdtk",key:"tk",error:"T\u00e0i kho\u1ea3n ${obj.tk} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u"},{model:"cdkh",key:"tk",error:"T\u00e0i kho\u1ea3n ${obj.tk} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u"},{model:"dmvt",key:"tk_vt",error:"T\u00e0i kho\u1ea3n ${obj.tk} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u"}]};
|
|
7
|
-
module.exports=model;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const mongoose=require("mongoose"),actionLogSchema=new mongoose.Schema({idempotencyKey:{type:String,required:!0,unique:!0,index:!0},actionType:{type:String,required:!0,index:!0},status:{type:String,enum:["PENDING","SUCCESS","FAILED"],default:"PENDING"},payload:{type:mongoose.Schema.Types.Mixed,default:{}},result:{type:mongoose.Schema.Types.Mixed,default:{}},expiresAt:{type:Date,default:()=>new Date(+new Date+2592E6),index:{expires:"0s"}}},{timestamps:!0}),ActionLog=mongoose.model("actionLog",actionLogSchema);
|
|
2
|
-
module.exports=ActionLog;
|
package/server/models/afflink.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const afflinkScheam=new Schema({id_app:{type:String,required:!0,maxlength:1024},title:{type:String,required:!0},page_link:{type:String,required:!0},of_user:String,da_truy_cap:{type:Number,default:0},da_dat_hang:{type:Number,default: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:""}});
|
|
2
|
-
(global.configs||{}).createIndexes&&(afflinkScheam.index({id_app:1}),afflinkScheam.index({status:1}),afflinkScheam.index({of_user:1}),afflinkScheam.index({user_created:1,visible_to:1,visible_to_users:1}));module.exports=mongoose.models.afflink||mongoose.model("afflink",afflinkScheam);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const mongoose=require("mongoose"),aiMemorySchema=new mongoose.Schema({id_app:{type:String,required:!0},user_id:{type:String,required:!0,index:!0},core_memories:[{type:String}],last_summarized_date:{type:Date,default:Date.now}},{timestamps:!0});module.exports=mongoose.model("aimemory",aiMemorySchema);
|
package/server/models/app.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
const User=require("./user"),Participant=require("./participant"),_=require("lodash"),{runWithoutSession}=require("../libs/sessionContext"),appScheam=new global.Schema({menu_code:{type:String,uppercase:!0,trim:!0,maxlength:32},app_code:{type:String,uppercase:!0,trim:!0,maxlength:32},name:{type:String,required:!0,maxlength:1024},name_en:{type:String,maxlength:1024},short_name:{type:String,maxlength:1024},address:{type:String,maxlength:1024},address_en:{type:String,maxlength:1024},factory_address:{type:String,
|
|
2
|
-
maxlength:1024},factory_address_en:{type:String,maxlength:1024},city:{type:String,maxlength:1024},province:{type:String,maxlength:1024},country:{type:String,maxlength:1024},phone:{type:String,maxlength:1024},fax:{type:String,maxlength:1024},email:{type:String,maxlength:1024},website:{type:String,maxlength:1024},sale_online:{type:Boolean,default:!1},facebook:{type:String,maxlength:2024},zalo:{type:String,maxlength:2024},messager:{type:String,maxlength:2024},bao_hanh:{type:String},van_chuyen:{type:String},
|
|
3
|
-
dieu_khoan_su_dung:{type:String},dieu_khoan_su_dung_en:{type:String},dieu_khoan_kygui:{type:String},dieu_khoan_kygui_en:{type:String},dieu_khoan_congtacvien:{type:String},dieu_khoan_congtacvien_en:{type:String},chinh_sach_dau_tu:{type:String},chinh_sach_dau_tu_en:{type:String},gioi_thieu:{type:String},nganh_nghe:{type:String},keywords:{type:String},site_name:{type:String},ngay_dn:{type:Date,required:!0},ngay_ks:{type:Date,required:!0},nam_bd:{type:Number,required:!0},ngay_ky1:{type:Date,required:!0},
|
|
4
|
-
ma_so_thue:{type:String,maxlength:1024},dia_chi_xuat_hoa_don:String,nguoi_nop_thue:{type:String,maxlength:1024},giam_doc:{type:String,maxlength:1024},ke_toan_truong:{type:String,maxlength:1024},ma_nganh_kd:{type:String,maxlength:1024},ten_nganh_kd:{type:String},ma_cqt:{type:String},ten_cqt:{type:String},wallet_address:{type:String,maxlength:2024},wallet_token:{type:String,maxlength:2024},exchange_fee:Number,wallet_network:{type:String,maxlength:2024},tang_duoc_gioi_thieu:Number,tang_gioi_thieu:Number,
|
|
5
|
-
ty_le_hoa_hong:Number,tang_gioi_thieu_denom:String,ten_chu_tai_khoan:String,tai_khoan_ngan_hang:String,ten_ngan_hang:String,chi_nhanh_ngan_hang:String,so_bin:String,so_ngay_lam_mot_thang:{type:Number,default:24},logo:{type:String,maxlength:1024},logo_watermark:{type:String,maxlength:1024},account_types_accept:[],options:{},allow_modules:[String],partner:String,server:String,owner:String,default_password:String,google_credentials:String,email_host:String,email_port:Number,email_secure:{type:Boolean,
|
|
6
|
-
default:!0},email_authMethod:{type:String,default:"LOGIN"},email_user:String,email_pass:String,email_name:String,invoice_service:String,viettel_version:{type:String,maxlength:1024},viettel_user:{type:String,maxlength:1024},viettel_password:{type:String,maxlength:1024},viettel_token:{type:String},viettel_url_service:{type:String,maxlength:1024},viettel_direct_issue:Boolean,ma_hoa_don:String,ky_hieu_hoa_don:String,so_serial:String,vnpt_user:{type:String,maxlength:1024},vnpt_password:{type:String,maxlength:1024},
|
|
7
|
-
vnpt_url_service:{type:String,maxlength:1024},vnpt_ky_hieu_hoa_don:String,vnpt_so_serial:String,easy_user:{type:String,maxlength:1024},easy_password:{type:String,maxlength:1024},easy_url_service:{type:String,maxlength:1024},easy_ky_hieu_hoa_don:String,easy_so_serial:String,facebook_webhook_verify_token:String,facebook_webhook:String,sip_uri:String,sip_password:String,sip_websocket:String,voiip_access_token:String,voiip_webhook:String,zalo_app_id:String,zalo_secret_key:String,zalo_code:String,zalo_oa_id:String,
|
|
8
|
-
zalo_code_verifier:String,zalo_code_challenge:String,zalo_access_token:String,zalo_refresh_token:String,zalo_expires_in:Number,zalo_updated:Date,zalo_otp_template_id:String,exfields:global.Schema.Types.Mixed,domain:String,ssl_key:String,ssl_cert:String,ssl_ca:String,ai_name:String,ai_api_key:String,ai_model:String,expire_date:Date,dung_luong_duoc_su_dung:Number,so_tai_lieu_duoc_su_dung:Number,trang_thai:{type:String,default:"0"},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},
|
|
9
|
-
date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});
|
|
10
|
-
(global.configs||{}).createIndexes&&(appScheam.index({app_code:1},{unique:!0}),appScheam.index({name:1,province:1}),appScheam.index({menu_code:1}),appScheam.index({trang_thai:1}),appScheam.index({sale_online:1}),appScheam.index({date_created:1}),appScheam.index({date_updated:1}),appScheam.index({user_created:"text"},{name:"app_index_created"}),appScheam.index({name:"text",province:"text",name_en:"text",address:"text",phone:"text",email:"text",ma_so_thue:"text"},{name:"app_index"}));
|
|
11
|
-
const App=global.mongoose.models.app||global.mongoose.model("app",appScheam);
|
|
12
|
-
App.participants=async $app$$=>{_.isString($app$$)&&($app$$=await App.getInfo($app$$));let $participants$$=await Participant.find({id_app:$app$$._id});if($app$$.user_created&&!$participants$$.find($p$$=>$p$$.email===$app$$.user_created)){let $_p$$={email:$app$$.user_created,name:$app$$.user_created.split("@")[0],admin:!0,active:!0,cancel:!1,id_app:$app$$._id};$participants$$.push($_p$$);Participant.createParticipant($_p$$,$e$$=>{$e$$&&Logger.error("create participant for user owner",$e$$)})}return $participants$$};
|
|
13
|
-
App.getInfo=async function($id_app$$,$field$$){return new Promise(($resolve$$,$reject$$)=>{App.findOne({_id:$id_app$$}).lean().then($rs$$=>{if(!$rs$$)return $reject$$(Error("App is not exists"));$resolve$$($field$$?$rs$$[$field$$]:$rs$$)}).catch($e$$=>{$reject$$($e$$)})})};
|
|
14
|
-
App.emitEvent=function($id_app$$,$event$$,$_data$$,$c_token$$=null,$users$$=null,$_createNotify$$=!1,$_push$$=!0){runWithoutSession(()=>{App.findOne({_id:$id_app$$}).lean().then(async $app$$=>{$app$$&&($_data$$.company=$app$$.name,$_data$$.id_app=$id_app$$,$users$$?$users$$=$users$$.map($u$$=>({email:$u$$,name:$u$$})):($users$$=await App.participants($app$$),$users$$.find($u$$=>$app$$.user_created===$u$$.email)||$users$$.push({email:$app$$.user_created,name:$app$$.user_created})),$users$$.forEach(function($user$$){let $data$$=
|
|
15
|
-
_.cloneDeep($_data$$);!$data$$.title||!$_createNotify$$&&$event$$?$event$$&&($data$$.app_info=$app$$,User.emitEvent($user$$.email,$event$$,$data$$,$_push$$,$c_token$$)):global.createNotification($data$$.user_updated||"SYSTEM",$user$$.email,$data$$.title,$data$$.body,($e$$,$notify$$)=>{$e$$?Logger.error("[app][emitEvent][createNotification]",$e$$):$event$$&&($notify$$&&($data$$.notify_id=$notify$$._id.toString()),$data$$.app_info=$app$$,User.emitEvent($user$$.email,$event$$,$data$$,$_push$$,$c_token$$))},
|
|
16
|
-
$data$$,!$event$$,$c_token$$)}))}).catch($e$$=>{Logger.error($e$$)})})};module.exports=App;
|