UNPKG

flexbiz-server

Version:

Flexible Server

32 lines (31 loc) 15.7 kB
const model=global.getModel("assinvestment"),assproduct=global.getModel("assproduct"),assperiod=global.getModel("assperiod"),trangthai=global.getModel("trangthai"),introducer=global.getModel("introducer"),asskey=global.getModel("asskey"),introducecode=global.getModel("introducecode"),App=global.getModel("app"),Usergroup=global.getModel("usergroup"),Participant=global.getModel("participant"),pt1=global.getModel("pt1"),customer=global.getModel("customer"),controller=require("../../controllers/controller"), {isSupperAdmin}=require("../../libs/utils"),async=require("async"),moment=require("moment"),xacdinhnguoinhanhoahong=async $investment$$=>{$investment$$.ty_le_hoa_hong=void 0;$investment$$.address_hoa_hong=void 0;$investment$$.denom_hoa_hong=void 0;$investment$$.ky_tra_hoa_hong=void 0;$investment$$.introduce_code=void 0;try{const $intro$$=await introducer.findOne({id_app:$investment$$.id_app,be_introduced:$investment$$.user_created});if($intro$$&&$intro$$.introduce_code){const $introduce_code$$=await introducecode.findOne({id_app:$investment$$.id_app, introduce_code:$intro$$.introduce_code}).lean();let $receiver$$;if($introduce_code$$){if($introduce_code$$.wallet_address_receive_reward)$receiver$$=$introduce_code$$.wallet_address_receive_reward;else{let $k$$=await asskey.findOne({id_app:$investment$$.id_app,username:$intro$$.be_introduced_by});if($k$$)$receiver$$=$k$$.address;else return}var $appInfo$$=await App.findOne({_id:$investment$$.id_app});if($appInfo$$&&$appInfo$$.wallet_token&&$appInfo$$.wallet_address){var $usergroup$$,$par$$=await Participant.findOne({id_app:$investment$$.id_app, email:$intro$$.be_introduced_by}).lean();$par$$&&$par$$.group_id&&($usergroup$$=await Usergroup.findOne({id_app:$investment$$.id_app,_id:$par$$.group_id}).lean());$usergroup$$||={};var $period$$=await assperiod.findOne({id_app:$investment$$.id_app,id:$investment$$.id_period});$period$$||={};$period$$.ty_le_hoa_hong_groups=$period$$.ty_le_hoa_hong_groups||[];var $ty_le_hoa_hong_group$$=$period$$.ty_le_hoa_hong_groups.find($t$$=>$t$$.id_user_group===$usergroup$$._id);$ty_le_hoa_hong_group$$||=$period$$.ty_le_hoa_hong_groups.find($t$$=> !$t$$.id_user_group)||{};var $ty_le_hoa_hong$$=$ty_le_hoa_hong_group$$.ty_le_hoa_hong||$usergroup$$.ty_le_hoa_hong||$appInfo$$.ty_le_hoa_hong||0;var $tang_gioi_thieu_denom$$=$ty_le_hoa_hong_group$$.denom||$usergroup$$.tang_gioi_thieu_denom||$appInfo$$.tang_gioi_thieu_denom;$investment$$.ty_le_hoa_hong=$ty_le_hoa_hong$$;$investment$$.address_hoa_hong=$receiver$$;$investment$$.denom_hoa_hong=$tang_gioi_thieu_denom$$;$investment$$.ky_tra_hoa_hong=$period$$.ky_tra_hoa_hong;$investment$$.introduce_code= $intro$$.introduce_code}}}else Logger.info("user nay khong co nguoi gioi thieu",$investment$$.user_created)}catch($e$$){Logger.error("Khong the tinh hoa hong cho nguoi gioi thieu",$e$$)}},phathanh=async($period$$,$obj$$,$product$$)=>{$obj$$.id_product=$period$$.id_product;$obj$$.gia=$period$$.gia;$obj$$.lai_suat_cam_ket=$period$$.lai_suat_cam_ket;$obj$$.lai_suat_truoc_han=$period$$.lai_suat_truoc_han;$obj$$.ky_han=$period$$.ky_han;$obj$$.cho_phep_rut_von=$period$$.cho_phep_rut_von;$obj$$.cho_phep_chuyen_nhuong= $period$$.cho_phep_chuyen_nhuong;$obj$$.denom=$period$$.denom;$obj$$.tg_xu_ly_rut_von=$period$$.tg_xu_ly_rut_von;$obj$$.co_phan=$period$$.co_phan;$obj$$.goi_dau_tu=$period$$.goi_dau_tu;$obj$$.ky_tinh_lai=$period$$.ky_tinh_lai;$obj$$.co_phan?($obj$$.ngay_phat_hanh=$period$$.ngay_phat_hanh,$obj$$.ngay_dao_han=null):($obj$$.ngay_phat_hanh=new Date,$obj$$.ngay_dao_han=$obj$$.ky_han>0?moment($obj$$.ngay_phat_hanh).add($obj$$.ky_han,"days").toDate():$period$$.ngay_chia_loi_nhuan);switch($obj$$.ky_tinh_lai){case 1:$obj$$.ngay_tinh_lai_ky_truoc= $obj$$.ngay_phat_hanh;$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"days").toDate();break;case 2:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh;$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"weeks").toDate();break;case 3:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh;$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"months").toDate();break;case 4:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh; $obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"quarters").toDate();break;case 5:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh;$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"years").toDate();break;case 9:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh,$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"hours").toDate()}var $hoahong_totalMoney$$=Number($obj$$.gia)*Number($obj$$.so_luong);const $productCreator$$= $product$$.creator;await global.getModel("assbank").sendCoins($period$$.id_app,$obj$$.creator,$productCreator$$,$hoahong_totalMoney$$,$obj$$.denom,{id_product:$obj$$.id_product,id_period:$obj$$.id_period,event:"INVESTMENT",memo:"Thanh to\u00e1n \u0111\u1ea7u t\u01b0"});if($obj$$.ky_tra_hoa_hong==0&&$obj$$.ty_le_hoa_hong>0&&$obj$$.address_hoa_hong){$hoahong_totalMoney$$=Math.roundBy($obj$$.ty_le_hoa_hong*$hoahong_totalMoney$$/100,0);let $denomHoaHong$$=$obj$$.denom_hoa_hong;$denomHoaHong$$==""&&($denomHoaHong$$= $obj$$.denom);await global.getModel("assbank").sendCoins($period$$.id_app,$productCreator$$,$obj$$.address_hoa_hong,$hoahong_totalMoney$$,$denomHoaHong$$,{id_product:$obj$$.id_product,id_period:$obj$$.id_period,event:"BONUS-INVESTMENT",memo:"Hoa h\u1ed3ng"});$obj$$.hoa_hong_da_tra=$hoahong_totalMoney$$}await global.getModel("assbank").mintCoins($period$$.id_app,$obj$$.creator,$obj$$.so_luong,$obj$$.token,{id_product:$obj$$.id_product,id_period:$obj$$.id_period,event:"INVESTMENT",memo:"Nh\u1eadn token \u0111\u1ea7u t\u01b0"}); $period$$.da_dau_tu=($period$$.da_dau_tu||0)+$obj$$.so_luong;await $period$$.save();$product$$.da_dau_tu=($product$$.da_dau_tu||0)+$obj$$.so_luong;$product$$.gia_tri_da_dau_tu=($product$$.gia_tri_da_dau_tu||0)+$obj$$.so_luong*$obj$$.gia;await $product$$.save()}; module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assinvestment",{sort:{date_created:-1},unique:["token"],notNeedRight:!0,requireOtp:($data$$,$options$$)=>$data$$.trang_thai=="0"||$data$$.trang_thai=="2"||$data$$.trang_thai=="7"||isSupperAdmin($options$$.user.email.toLowerCase())?!1:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>{let $id_app$$=$user$$.current_id_app;async.mapSeries($items$$, ($item$$,$cb$$)=>{setImmediate(async()=>{$item$$.wallet_address=$item$$.creator;$item$$.id_period&&(await [$item$$].asyncJoinModel2($id_app$$,assperiod,{where:{id_period:"id"},fields:"ten_ky_han ky_han id_product gia lai_suat_cam_ket lai_suat_truoc_han cho_phep_rut_von cho_phep_chuyen_nhuong denom tg_xu_ly_rut_von co_phan id_rpt ky_tinh_lai goi_dau_tu tru_lai_da_tra han_tt".split(" ")}),await [$item$$].asyncJoinModel2($id_app$$,assproduct,{where:{id_product:"id"},fields:["ma_loai","ten_san_pham", {product_token:"token"},{gia_tri_hien_tai_san_pham:"gia_tri_hien_tai"},{tong_gia_tri_huy_dong:"tong_gia_tri"},{tong_so_token_phat_hanh:"tong_so_token"}]}),$item$$.tong_gia_tri=($item$$.gia||0)*($item$$.so_luong||0),$item$$.lai_du_tinh=Math.roundBy($item$$.lai_suat_cam_ket/365/100*$item$$.tong_gia_tri*$item$$.ky_han,0),$item$$.tong_gia_tri_dao_han=$item$$.tong_gia_tri+$item$$.lai_du_tinh);$item$$.con_lai=$item$$.da_dao_han?0:$item$$.so_luong-($item$$.da_rut_von||0);$item$$.han_tt||($item$$.han_tt= 1);if($item$$.trang_thai=="0"||$item$$.trang_thai=="2"){let $tg_hien_tai$$=(new Date).getTime(),$tg_tao$$=(new Date($item$$.date_created)).getTime();($tg_hien_tai$$-$tg_tao$$)/864E5>$item$$.han_tt&&($item$$.trang_thai="7")}try{$item$$.goi_dau_tu&&($item$$.market_value=await model.getInvestmentMarketValue($item$$.id_app,$item$$.token))}catch($e$$){Logger.error($e$$)}$cb$$(null,$item$$)})},async()=>{await $items$$.asyncJoinModel2(null,trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.trang_thai,ma_ct:"ASSINVESTMENT"}), fields:["ten_trang_thai","color"]}]);await $items$$.asyncJoinModel2($id_app$$,customer,[{where:$a$$=>({of_user:$a$$.user_created}),fields:["ma_kh","ten_kh"]}]);await $items$$.asyncJoinModel2($id_app$$,pt1,[{where:$a$$=>({id_assinvestment:$a$$._id}),fields:[{id_pt1:"_id"},{ma_ct_pt1:"ma_ct"}]}]);$next$$(null,$items$$)})},onCreating:async($frm_frm_step_product$jscomp$1_user$$,$obj$$,$next$$)=>{if(!$obj$$.id_period)return $next$$("B\u1ea1n c\u1ea7n ch\u1ecdn m\u1ed9t g\u00f3i \u0111\u1ea7u t\u01b0"); if(!await global.getModel("asskey").findOne({id_app:$frm_frm_step_product$jscomp$1_user$$.current_id_app,username:$frm_frm_step_product$jscomp$1_user$$.email,address:$obj$$.creator}).lean())return $next$$("\u0110\u1ecba ch\u1ec9 v\u00ed n\u00e0y kh\u00f4ng thu\u1ed9c v\u1ec1 b\u1ea1n");$obj$$.da_rut_von=0;$obj$$.da_dao_han=!1;$obj$$.user_created=$frm_frm_step_product$jscomp$1_user$$.email;await xacdinhnguoinhanhoahong($obj$$);const $period$$=await assperiod.findOne({id_app:$frm_frm_step_product$jscomp$1_user$$.current_id_app, id:$obj$$.id_period});if(!$period$$)return Logger.error("Can't find period",{id_app:$frm_frm_step_product$jscomp$1_user$$.current_id_app,id:$obj$$.id_period}),$next$$("G\u00f3i \u0111\u1ea7u t\u01b0 kh\u00f4ng t\u1ed3n t\u1ea1i");if($period$$.goi_dau_tu&&$period$$.frm_step_code){$frm_frm_step_product$jscomp$1_user$$=await global.getModel("financialroadmap").findOne({id_app:$period$$.id_app,code:$period$$.id_product.toString()}).lean();if(!$frm_frm_step_product$jscomp$1_user$$)return $next$$("L\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh cho g\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i"); $frm_frm_step_product$jscomp$1_user$$=($frm_frm_step_product$jscomp$1_user$$.steps||[]).find($s$$=>$s$$.code===$period$$.frm_step_code);if(!$frm_frm_step_product$jscomp$1_user$$)return $next$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i trong l\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh");if($frm_frm_step_product$jscomp$1_user$$.trang_thai=="5")return $next$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y \u0111\u00e3 ho\u00e0n th\u00e0nh k\u00eau g\u1ecdi v\u1ed1n");if($frm_frm_step_product$jscomp$1_user$$.trang_thai!= "4")return $next$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y ch\u01b0a c\u00f3 hi\u1ec7u l\u1ef1c")}if(!$period$$.hoat_dong)return $next$$($period$$.ten_ky_han+" doesn't active");if($period$$.tong_so_token>0&&($period$$.da_dau_tu||0)+($obj$$.so_luong||0)>$period$$.tong_so_token)return $next$$("This package has sold out");$frm_frm_step_product$jscomp$1_user$$=await assproduct.findOne({id_app:$period$$.id_app,id:$period$$.id_product});if(!$frm_frm_step_product$jscomp$1_user$$)throw"D\u1ef1 \u00e1n kh\u00f4ng t\u1ed3n t\u1ea1i"; $obj$$.product_token=$frm_frm_step_product$jscomp$1_user$$.token;$obj$$.id=(new Date).getTime().toString();$obj$$.token=`${$obj$$.product_token}${$obj$$.id}`;if($obj$$.trang_thai!="1")return $next$$(null,$obj$$);try{await phathanh($period$$,$obj$$,$frm_frm_step_product$jscomp$1_user$$)}catch($e$$){return $next$$($e$$)}$next$$(null,$obj$$)}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if(!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 x\u00f3a"); $fn$$(null,$obj$$)};$contr_router$$.updating=async function($product$jscomp$2_user$$,$data$$,$obj$$,$fn$$){var $frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$=$product$jscomp$2_user$$.current_id_app,$creator_tg_tao$$=$obj$$.creator;if(!await global.getModel("asskey").findOne({id_app:$frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$,username:$product$jscomp$2_user$$.email,address:$creator_tg_tao$$}).lean())return $fn$$("\u0110\u1ecba ch\u1ec9 v\u00ed n\u00e0y kh\u00f4ng thu\u1ed9c v\u1ec1 b\u1ea1n"); if($data$$.trang_thai=="0"&&$obj$$.trang_thai!="0")return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt");if($data$$.trang_thai&&$data$$.trang_thai!="1")return $fn$$(null,$data$$,$obj$$);delete $data$$.da_rut_von;delete $data$$.da_dao_han;$data$$.user_created=$obj$$.user_created;$data$$.creator=$obj$$.creator;$data$$.id_period=$data$$.id_period||$obj$$.id_period;$data$$.id_app=$obj$$.id_app;await xacdinhnguoinhanhoahong($data$$);const $period$$=await assperiod.findOne({id_app:$frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$, id:$data$$.id_period});if(!$period$$)return $fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 kh\u00f4ng t\u1ed3n t\u1ea1i");$product$jscomp$2_user$$=await assproduct.findOne({id_app:$period$$.id_app,id:$period$$.id_product});if(!$product$jscomp$2_user$$)throw"D\u1ef1 \u00e1n kh\u00f4ng t\u1ed3n t\u1ea1i";$data$$.product_token=$product$jscomp$2_user$$.token;$data$$.id=$obj$$.id;$data$$.token=$obj$$.token;$data$$.id&&($data$$.id=(new Date).getTime().toString());$data$$.token&&($data$$.token=`${$data$$.product_token}${$data$$.id}`); if($data$$.trang_thai=="1"&&$obj$$.trang_thai!="1"){if($period$$.goi_dau_tu&&$period$$.frm_step_code){$frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$=await global.getModel("financialroadmap").findOne({id_app:$period$$.id_app,code:$period$$.id_product.toString()}).lean();if(!$frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$)return $fn$$("L\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh cho g\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");$frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$= ($frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$.steps||[]).find($s$$=>$s$$.code===$period$$.frm_step_code);if(!$frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$)return $fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i trong l\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh");if($frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$.trang_thai=="5")return $fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y \u0111\u00e3 ho\u00e0n th\u00e0nh k\u00eau g\u1ecdi v\u1ed1n"); if($frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$.trang_thai!="4")return $fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y ch\u01b0a c\u00f3 hi\u1ec7u l\u1ef1c")}if(!$period$$.hoat_dong)return $fn$$($period$$.ten_ky_han+" doesn't active");if($period$$.tong_so_token>0&&($period$$.da_dau_tu||0)+($obj$$.so_luong||0)>$period$$.tong_so_token)return $fn$$("This package has sold out");if($obj$$.trang_thai=="0"||$obj$$.trang_thai=="2")if($frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$= (new Date).getTime(),$creator_tg_tao$$=(new Date($obj$$.date_created)).getTime(),($frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$-$creator_tg_tao$$)/864E5>($period$$.han_tt||1))return model.updateMany({_id:$obj$$._id},{trang_thai:"7"}).then($rs$$=>{Logger.info("update investment",$rs$$.id)}),$fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y \u0111\u00e3 h\u1ebft h\u1ea1n thanh to\u00e1n");$data$$.creator=$data$$.creator||$obj$$.creator;$data$$.id_period=$data$$.id_period||$obj$$.id_period; $data$$.so_luong=$data$$.so_luong||$obj$$.so_luong;$data$$.ty_le_hoa_hong=$data$$.ty_le_hoa_hong!=void 0?Number($data$$.ty_le_hoa_hong):$obj$$.ty_le_hoa_hong;$data$$.denom_hoa_hong=$data$$.denom_hoa_hong||$obj$$.denom_hoa_hong||"";$data$$.address_hoa_hong=$data$$.address_hoa_hong||$obj$$.address_hoa_hong||"";$data$$.ky_tra_hoa_hong=$data$$.ky_tra_hoa_hong==void 0?$obj$$.ky_tra_hoa_hong:$data$$.ky_tra_hoa_hong;$data$$.ky_tinh_lai=$data$$.ky_tinh_lai!=void 0?$data$$.ky_tinh_lai:$obj$$.ky_tinh_lai;try{await phathanh($period$$, $data$$,$product$jscomp$2_user$$)}catch($e$$){return $fn$$($e$$)}$fn$$(null,$data$$,$obj$$)}else return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt")};$contr_router$$.route()};