UNPKG

flexbiz-server

Version:

Flexible Server

16 lines (15 loc) 7.72 kB
const model=global.getModel("dmgiathitruong"),dmvt=global.getModel("dmvt"),dmkh=global.getModel("customer"),controller=require("../../controllers/controller"),async=require("async"),dmqddvt=global.getModel("dmqddvt"),moment=require("moment"),{groupBy}=require("lodash"),{onAfterCommit}=require("../../libs/sessionContext"),tinhgiathaydoi=$obj$$=>{onAfterCommit(async()=>{var $ds_hom_nay_gia_thi_truong_td_ngay_cap_nhat$$=moment($obj$$.ngay).format("YYYY-MM-DD");await global.getModel("dmgiathitruong_ngay").findOneAndUpdate({id_app:$obj$$.id_app, ngay:$ds_hom_nay_gia_thi_truong_td_ngay_cap_nhat$$},{ngay:$ds_hom_nay_gia_thi_truong_td_ngay_cap_nhat$$,id_app:$obj$$.id_app},{new:!0,upsert:!0});var $ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$={id_app:$obj$$.id_app,ma_vt:$obj$$.ma_vt,ngay:{$gte:moment($obj$$.ngay).startOf("date").toDate(),$lte:moment($obj$$.ngay).endOf("date").toDate()}};$ds_hom_nay_gia_thi_truong_td_ngay_cap_nhat$$=await model.find($ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$).sort({ngay:-1}).lean(); let $gia_thi_truong_tb_hom_nay$$=$ds_hom_nay_gia_thi_truong_td_ngay_cap_nhat$$.length>0?$ds_hom_nay_gia_thi_truong_td_ngay_cap_nhat$$.map($d$$=>$d$$.gia_thi_truong_qd||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0)/$ds_hom_nay_gia_thi_truong_td_ngay_cap_nhat$$.length:0;$ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$={id_app:$obj$$.id_app,ma_vt:$obj$$.ma_vt,ngay:{$lt:moment($obj$$.ngay).startOf("date").toDate()}};$ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$= ($ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$=await model.findOne($ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$,{ngay:1}).sort({ngay:-1}).lean())?$ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$.ngay:moment($obj$$.ngay).subtract(1,"days").toDate();$ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$={id_app:$obj$$.id_app, ma_vt:$obj$$.ma_vt,ngay:{$gte:moment($ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$).startOf("date").toDate(),$lte:moment($ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$).endOf("date").toDate()}};$ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$=await model.find($ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$).sort({ngay:-1}).lean(); let $gia_thi_truong_tb_td$$=($ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$=$ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$.length>0?$ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$.map($d$$=>$d$$.gia_thi_truong_qd||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0)/$ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$.length:0)?$gia_thi_truong_tb_hom_nay$$- $ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$:0;await Promise.all($ds_hom_nay_gia_thi_truong_td_ngay_cap_nhat$$.map($hom_nay$$=>(async()=>{await model.updateOne({_id:$hom_nay$$._id},{gia_thi_truong_tb:$gia_thi_truong_tb_hom_nay$$,gia_thi_truong_tb_td:$gia_thi_truong_tb_td$$})})()));$ds_hom_nay_gia_thi_truong_td_ngay_cap_nhat$$=0;($ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$=await model.findOne({id_app:$obj$$.id_app, ma_vt:$obj$$.ma_vt,tinh_thanh:$obj$$.tinh_thanh,ngay:{$lte:$obj$$.ngay},_id:{$ne:$obj$$._id}}).sort({ngay:-1}).lean())&&($ds_hom_nay_gia_thi_truong_td_ngay_cap_nhat$$=$obj$$.gia_thi_truong_qd-$ds_hom_truoc_gia_thi_truong_tb_hom_truoc_ngay_hom_truoc_query_query_ngay_hom_truoc_truoc_do$$.gia_thi_truong_qd);await model.updateOne({_id:$obj$$._id},{gia_thi_truong_td:$ds_hom_nay_gia_thi_truong_td_ngay_cap_nhat$$,gia_thi_truong_tb:$gia_thi_truong_tb_hom_nay$$,gia_thi_truong_tb_td:$gia_thi_truong_tb_td$$})})}; module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"dmgiathitruong",{sort:{ngay:-1,ma_vt:1,ma_kh:1,sl_tu:1,sl_den:1},notNeedRight:($user$$,$options$$)=>$options$$.action=="view"?!0:!1,onFinding:async($latest_user$$,$condition$$,$next$$,$options$$={})=>{if($condition$$.ngay&&(typeof $condition$$.ngay=="string"||$condition$$.ngay.getTime))try{$condition$$.ngay={$gte:moment($condition$$.ngay).startOf("date").toDate(),$lte:moment($condition$$.ngay).endOf("date").toDate()}}catch($e$$){return $next$$("\u0110i\u1ec1u ki\u1ec7n ngay kh\u00f4ng h\u1ee3p l\u1ec7")}else $condition$$.latest&& ($latest_user$$=await model.findOne({id_app:$latest_user$$.current_id_app,status:!0},{ngay:1}).sort({ngay:-1}).lean(),$condition$$.ngay={$gte:moment(($latest_user$$||{}).ngay).startOf("date").toDate(),$lte:moment(($latest_user$$||{}).ngay).endOf("date").toDate()});delete $condition$$.latest;$condition$$.unique&&!$options$$.req.query.unique&&($options$$.req.query.unique=$condition$$.unique);delete $condition$$.unique;$next$$(null,$condition$$)},onCreating:async($dvt_he_so_qd_user$$,$obj$$,$next$$)=> {$dvt_he_so_qd_user$$=($dvt_he_so_qd_user$$=await dmqddvt.findOne({ma_vt:$obj$$.ma_vt,id_app:$obj$$.id_app,ma_dvt:$obj$$.ma_dvt}))&&$dvt_he_so_qd_user$$.ty_le_qd?$dvt_he_so_qd_user$$.ty_le_qd:1;$obj$$.gia_mua_qd=$obj$$.gia_mua/$dvt_he_so_qd_user$$;$obj$$.gia_thi_truong_qd=$obj$$.gia_thi_truong/$dvt_he_so_qd_user$$;$next$$(null,$obj$$)},onCreated:async($user$$,$obj$$,$next$$)=>{tinhgiathaydoi($obj$$);$next$$(null,$obj$$)},onUpdating:async($dvt$jscomp$1_he_so_qd$jscomp$1_user$$,$data$$,$obj$$,$next$$)=> {$data$$.ma_vt=$data$$.ma_vt||$obj$$.ma_vt;$data$$.ma_dvt=$data$$.ma_dvt||$obj$$.ma_dvt;$data$$.gia_mua=$data$$.gia_mua!==void 0?$data$$.gia_mua:$obj$$.gia_mua;$data$$.gia_thi_truong=$data$$.gia_thi_truong||$obj$$.gia_thi_truong;$data$$.ngay=$data$$.ngay||$obj$$.ngay;$data$$.tinh_thanh=$data$$.tinh_thanh||$obj$$.tinh_thanh;$dvt$jscomp$1_he_so_qd$jscomp$1_user$$=($dvt$jscomp$1_he_so_qd$jscomp$1_user$$=await dmqddvt.findOne({ma_vt:$data$$.ma_vt,id_app:$obj$$.id_app,ma_dvt:$data$$.ma_dvt}))&&$dvt$jscomp$1_he_so_qd$jscomp$1_user$$.ty_le_qd? $dvt$jscomp$1_he_so_qd$jscomp$1_user$$.ty_le_qd:1;$data$$.gia_mua_qd=$data$$.gia_mua/$dvt$jscomp$1_he_so_qd$jscomp$1_user$$;$data$$.gia_thi_truong_qd=$data$$.gia_thi_truong/$dvt$jscomp$1_he_so_qd$jscomp$1_user$$;$next$$(null,$data$$,$obj$$)},onUpdated:async($user$$,$obj$$,$next$$)=>{tinhgiathaydoi($obj$$);$next$$(null,$obj$$)}});$contr_router$$.view=function($user$$,$items$$,$fn$$,$options$$={}){let $id_app$$=$user$$.current_id_app;async.parallel([function($callback$$){$items$$.filter($r$$=>$r$$.ma_kh).joinModel2($id_app$$, dmkh,{where:"ma_kh",fields:"ten_kh"},function($rs$$){$callback$$(null,$rs$$)})},function($callback$$){$items$$.joinModel2($id_app$$,dmvt,{where:"ma_vt",fields:["ten_vt","ma_nvt","ma_danh_muc_cty","ma_danh_muc"]},function($rs$$){$callback$$(null,$rs$$)})},function($callback$$){$items$$.joinModel2($id_app$$,"dmgiathitruong_theodoi",{where:$item$$=>({tinh_thanh:$item$$.tinh_thanh,ma_vt:$item$$.ma_vt,user:$user$$.email}),fields:["follow",{follow_id:"_id"}]},function($rs$$){$callback$$(null,$rs$$)})}], function(){if($options$$.req.query.unique){let $groups$$=groupBy($items$$,$item$$=>$item$$.ma_vt+"::"+($item$$.tinh_thanh||""));$items$$=Object.keys($groups$$).map($g$$=>$groups$$[$g$$][0])}$fn$$(null,$items$$)})};$contr_router$$.route()};