flexbiz-server
Version:
Flexible Server
15 lines (14 loc) • 6.76 kB
JavaScript
'use strict';const model=global.getModel("cart"),User=global.getModel("user"),App=global.getModel("app"),controller=require("../../controllers/controller"),Dmvt=global.getModel("dmvt"),underscore=require("underscore"),getGiaBan=require("../../libs/getGiaban"),utils=require("../../libs/utils"),ckvt=require("../../libs/ckvt"),async=require("async"),moment=require("moment"),cart=function($router$$){(new controller($router$$,model,"cart",{requireRecaptchaToken:!1,notNeedRight:!0,sort:{stt:1,user:1},onFinding:($user$$,
$condition$$,$next$$,$options$$={})=>{$options$$.req&&"public"===$user$$.email?$condition$$.session_created=($options$$.req.cookies||{}).uid:$condition$$.user_created=$user$$.email;$next$$(null,$condition$$)},onView:async($user$$,$result$$,$fn$$)=>{async.series({app:$callback$$=>{$result$$.joinModel2(null,App,{where:{id_app_vt:"_id"},fields:[{name_app_vt:"name"}]},function($kq$$){$callback$$(null,$kq$$)})},user:$callback$$=>{$result$$.joinModel2(null,User,{where:{user:"email"},fields:[{user_name:"name"},
{partner:"partner"}]},function($kq$$){$callback$$(null,$kq$$)})},vt:$callback$jscomp$0$$=>{$result$$.joinModel2(null,Dmvt,{where:{ma_vt:"ma_vt",id_app_vt:"id_app"},fields:["ten_vt","ten_vt_eng","picture_thumb","picture","ma_danh_muc",{gia_ban_le0:"gia_ban_le0"},"chieu_cao","chieu_rong","chieu_sau","trong_luong","kg_kiem_tra_ton_kho_tt","tg_tk","kg_kiem_tra_ton_kho","ton_kho_online_hien_tai","ma_thue","thue_suat"]},function($kq$$){setImmediate(async()=>{await $result$$.filter($r$$=>$r$$.ma_thue).asyncJoinModel2(null,
"vat",{where:{ma_thue:"ma_thue",id_app_vt:"id_app"},fields:[{thue_suat:"thue_suat"}]});async.mapSeries($result$$.filter($item$$=>$item$$.ton_kho_online_hien_tai),($item$$,$callback$$)=>{setImmediate(async()=>{if($item$$.kg_kiem_tra_ton_kho_tt){if($item$$.ma_dvt){var $ds_kho_online_dvtqd$$=await global.getModel("dmqddvt").findOne({id_app:$item$$.id_app_vt,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt}).lean();$ds_kho_online_dvtqd$$&&($item$$.ton=$ds_kho_online_dvtqd$$.tu&&$ds_kho_online_dvtqd$$.mau?utils.round($item$$.ton_kho_online_hien_tai*
$ds_kho_online_dvtqd$$.mau/$ds_kho_online_dvtqd$$.tu,4):utils.round($item$$.ton_kho_online_hien_tai/($ds_kho_online_dvtqd$$.ty_le_qd||1),4))}$callback$$()}else{$ds_kho_online_dvtqd$$=(await global.getModel("dmkho").find({id_app:$item$$.id_app_vt,la_kho_online:!0},{ma_kho:1}).lean()).map($k$$=>$k$$.ma_kho);let $condition$$={ma_vt:$item$$.ma_vt,id_app:$item$$.id_app_vt};$item$$.ma_tt1&&($condition$$.ma_tt1=$item$$.ma_tt1);$item$$.ma_tt2&&($condition$$.ma_tt2=$item$$.ma_tt2);$item$$.ma_tt3&&($condition$$.ma_tt3=
$item$$.ma_tt3);$condition$$.groupBy=["ma_vt"];$condition$$.ngay=new Date;$condition$$.ma_kho={$in:$ds_kho_online_dvtqd$$};ckvt($condition$$,async function($dvtqd$$,$rs$$){$item$$.ton=$rs$$.map($r$$=>$r$$.ton00||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$$.ma_dvt&&($dvtqd$$=await global.getModel("dmqddvt").findOne({id_app:$item$$.id_app_vt,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt}).lean())&&($item$$.ton=$dvtqd$$.tu&&$dvtqd$$.mau?utils.round($item$$.ton*$dvtqd$$.mau/$dvtqd$$.tu,4):utils.round($item$$.ton/
($dvtqd$$.ty_le_qd||1),4));$callback$$()})}})},()=>{$callback$jscomp$0$$(null,$kq$$)})})})},giaban:$callback$jscomp$0$$=>{async.mapSeries($result$$,($item$$,$callback$$)=>{setImmediate(()=>{if($item$$.km_yn_for&&"SO1"===$item$$.km_yn_for.toUpperCase())return $callback$$();let $condition$$={ma_vt:$item$$.ma_vt,id_app:$item$$.id_app_vt,user:$user$$};$item$$.ma_tt1&&($condition$$.ma_tt1=$item$$.ma_tt1);$item$$.ma_tt2&&($condition$$.ma_tt2=$item$$.ma_tt2);$item$$.ma_tt3&&($condition$$.ma_tt3=$item$$.ma_tt3);
$condition$$.sl_xuat=$item$$.sl_xuat;$condition$$.online=!0;getGiaBan($condition$$,async($e$$,$gia$$)=>{$e$$&&console.log("error when get gia_ban on cart",$e$$);$item$$.tien_hang_ct_nt=0;$item$$.tien_hang_ct=0;$item$$.tien_ck=0;$item$$.tien_ck_nt=0;$item$$.ty_le_ck=0;$e$$=$item$$.thue_suat||0;$gia$$?(delete $gia$$._id,delete $gia$$.ma_vt,delete $gia$$.ten_vt,underscore.extend($item$$,$gia$$),$item$$.gia_ban=$item$$.gia_ban_nt=$item$$.gia_ban_le,$item$$.gia_ban_ct=$item$$.gia_ban_ct_nt=$item$$.gia_ban/
(1+$e$$/100),$gia$$.sl_ap_dung?$item$$.tien_ck?($item$$.tien_ck=$item$$.tien_ck_nt=Math.roundBy(($item$$.tien_ck||0)*Math.min($item$$.sl_xuat,$gia$$.sl_ap_dung)),$item$$.ty_le_ck=0):$item$$.tien_ck=$item$$.tien_ck_nt=Math.roundBy(($item$$.ty_le_ck||0)*$item$$.gia_ban_ct/100*Math.min($item$$.sl_xuat,$gia$$.sl_ap_dung)):$item$$.tien_ck?($item$$.tien_ck=$item$$.tien_ck_nt=Math.roundBy(($item$$.tien_ck||0)*$item$$.sl_xuat),$item$$.ty_le_ck=0):$item$$.tien_ck=$item$$.tien_ck_nt=Math.roundBy(($item$$.ty_le_ck||
0)*$item$$.gia_ban_ct/100*$item$$.sl_xuat),$gia$$.promotion&&0<$gia$$.promotion.length&&await Promise.all($gia$$.promotion.map($p$$=>{($p$$.details_km||[]).forEach($r$$=>{$r$$.km_yn_for=`${$item$$.id_app_vt}-${$item$$.ma_vt}`});return($p$$.details_km||[]).asyncJoinModel2($item$$.id_app_vt,global.getModel("dmvt"),{where:"ma_vt",fields:"ma_dvt chieu_cao chieu_rong chieu_sau trong_luong tg_tk kg_kiem_tra_ton_kho_tt kg_kiem_tra_ton_kho".split(" ")})}))):($item$$.gia_ban=$item$$.gia_ban_nt=$item$$.gia_ban_le0,
$item$$.gia_ban_ct=$item$$.gia_ban_ct_nt=$item$$.gia_ban/(1+$e$$/100));$item$$.tien_hang=$item$$.tien_hang_nt=Math.roundBy($item$$.gia_ban*$item$$.sl_xuat);$item$$.tien_hang_ct_nt=$item$$.tien_hang_ct=Math.roundBy($item$$.sl_xuat*$item$$.gia_ban_ct_nt);$item$$.so_tien_max&&($item$$.tien_ck=$item$$.tien_ck_nt=Math.min($item$$.so_tien_max,$item$$.tien_ck_nt));$item$$.tien_thue_nt=$item$$.tien_thue=Math.roundBy(($item$$.tien_hang_ct_nt-$item$$.tien_ck_nt)*$e$$/100);$item$$.tien=$item$$.tien_nt=$item$$.tien_hang_ct_nt-
($item$$.tien_ck_nt||0)+($item$$.tien_thue_nt||0);delete $item$$.ck_sl_tu2;delete $item$$.exfields;delete $item$$.user_created;delete $item$$.user_updated;$callback$$(null)})})},($e$$,$rs$$)=>{$callback$jscomp$0$$(null,$rs$$)})}},$error$$=>{if($error$$)return $fn$$($error$$);try{let $freeshipModel$$=global.getModel("ecompromotion_freeships"),$tu_ngay$$=moment().startOf("date").toDate(),$hieu_luc_tu$$={$lte:moment().endOf("date").toDate()},$hieu_luc_den$$={$gte:$tu_ngay$$};Promise.all($result$$.filter($i$$=>
$i$$.id_app_vt).map($item$$=>(async()=>{let $freeship$$=await $freeshipModel$$.find({id_app:$item$$.id_app_vt,hieu_luc_tu:$hieu_luc_tu$$,hieu_luc_den:$hieu_luc_den$$,shared:!0,trang_thai:"1",$or:[{"details.0":{$exists:!1}},{"details.ma_danh_muc":{$in:[$item$$.ma_danh_muc,null,void 0,""]},"details.ma_vt":{$in:[$item$$.ma_vt,"",null,void 0]}}]}).lean();$item$$.freeship=$freeship$$})())).then(()=>{$fn$$(null,$result$$)}).catch($e$$=>{console.error($e$$);$fn$$(null,$result$$)})}catch($e$$){console.error($e$$),
$fn$$(null,$result$$)}})}})).route()};module.exports=cart;