flexbiz-server
Version:
Flexible Server
14 lines (13 loc) • 6.16 kB
JavaScript
'use strict';const assproductSchema=new Schema({id_app:String,creator:{type:String,required:!0,trim:!0},id:{type:String,trim:!0},ten_san_pham:{type:String,required:!0},mieu_ta:{type:String},tong_dien_tich:{type:String},chu_dau_tu:{type:String},gia_tri_hien_tai:{type:String},dia_chi:{type:String},hien_trang:{type:String},vi_tri:{type:String},thiet_ke:{type:String},tien_nghi:{type:String},hinh_anh:{type:String},video:{type:String},duoc_chuyen_thanh_cp:{type:Boolean},co_phan:Boolean,token:{type:String,
required:!0,lowercase:!0,trim:!0},so_luong:{type:Number,default:0},so_luong_goi_dau_tu:{type:Number,default:0},tong_gia_tri_goi_dau_tu:{type:Number,default:0},tong_so_token_unactive:{type:Number,default:0},tong_gia_tri_unactive:{type:Number,default:0},da_dau_tu_unactive:{type:Number,default:0},gia_tri_da_dau_tu_unactive:{type:Number,default:0},signature:String,da_dau_tu:{type:Number,default:0},gia_tri_da_dau_tu:{type:Number,default:0},trang_thai:String,ma_loai:String,visible_to:{type:Number,default:0},
visible_to_users:[String],visible_to_usergroups:[String],update_right:[String],delete_right:[String],exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}}),thongke=async $item$$=>{var $period_het_hoat_dong_periods_of_product$$=await global.getModel("assperiod").find({id_app:$item$$.id_app,id_product:$item$$.id.toString()}).lean();let $so_luong_goi_dau_tu$$=
$period_het_hoat_dong_periods_of_product$$.map($item$$=>$item$$.tong_so_token).reduce(($a$$,$b$$)=>$a$$+$b$$,0),$tong_gia_tri_goi_dau_tu$$=$period_het_hoat_dong_periods_of_product$$.map($item$$=>$item$$.tong_so_token*$item$$.gia).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$$.da_dau_tu=$period_het_hoat_dong_periods_of_product$$.map($item$$=>$item$$.da_dau_tu).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$$.gia_tri_da_dau_tu=$period_het_hoat_dong_periods_of_product$$.map($item$$=>$item$$.da_dau_tu*$item$$.gia).reduce(($a$$,
$b$$)=>$a$$+$b$$,0);$item$$.da_dao_han=$period_het_hoat_dong_periods_of_product$$.map($item$$=>$item$$.da_dao_han).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$$.gia_tri_da_dao_han=$period_het_hoat_dong_periods_of_product$$.map($item$$=>$item$$.da_dao_han*$item$$.gia).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$$.da_rut_von=$period_het_hoat_dong_periods_of_product$$.map($item$$=>$item$$.da_rut_von).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$$.gia_tri_da_rut_von=$period_het_hoat_dong_periods_of_product$$.map($item$$=>
$item$$.da_rut_von*$item$$.gia).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$period_het_hoat_dong_periods_of_product$$=$period_het_hoat_dong_periods_of_product$$.filter($p$$=>0==$p$$.hoat_dong);$item$$.tong_so_token_unactive=$period_het_hoat_dong_periods_of_product$$.map($item$$=>$item$$.tong_so_token).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$$.tong_gia_tri_unactive=$period_het_hoat_dong_periods_of_product$$.map($item$$=>$item$$.tong_so_token*$item$$.gia).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$$.da_dau_tu_unactive=
$period_het_hoat_dong_periods_of_product$$.map($item$$=>$item$$.da_dau_tu).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$$.gia_tri_da_dau_tu_unactive=$period_het_hoat_dong_periods_of_product$$.map($item$$=>$item$$.da_dau_tu*$item$$.gia).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$$.so_luong_goi_dau_tu=$so_luong_goi_dau_tu$$-$item$$.tong_so_token_unactive+$item$$.da_dau_tu_unactive;$item$$.tong_gia_tri_goi_dau_tu=$tong_gia_tri_goi_dau_tu$$-$item$$.tong_gia_tri_unactive+$item$$.gia_tri_da_dau_tu_unactive};
assproductSchema.post("find",async function($result$$){for(let $i$$=0;$i$$<$result$$.length;$i$$++){const $item$$=$result$$[$i$$];$item$$.id&&$item$$.id_app&&await thongke($item$$)}});assproductSchema.post("findOne",async function($item$$){$item$$&&$item$$.id&&$item$$.id_app&&await thongke($item$$)});const model=mongoose.models.assproduct||mongoose.model("assproduct",assproductSchema);
(global.configs||{}).createIndexes&&(assproductSchema.index({id_app:1}),assproductSchema.index({creator:1}),assproductSchema.index({id:1}),assproductSchema.index({ten_san_pham:1}),assproductSchema.index({duoc_chuyen_thanh_cp:1}),assproductSchema.index({token:1}),assproductSchema.index({id_app:1,token:1},{unique:!0}),assproductSchema.index({ma_loai:1}),assproductSchema.index({co_phan:1}),assproductSchema.index({trang_thai:1}),assproductSchema.index({visible_to:1}),assproductSchema.index({visible_to_users:1}),
assproductSchema.index({status:1}),assproductSchema.index({user_created:1}),assproductSchema.index({creator:"text",ten_san_pham:"text",mieu_ta:"text",token:"text",ma_loai:"text"},{name:"assproduct_index3"}),model.on("index",async function($err$$){$err$$?console.error("AssProduct index error",$err$$):console.info("AssProduct indexing complete")}));
model.getTokens=async($condition_id_app$$,$id_product$$,$id_period$$)=>{$condition_id_app$$={id_app:$condition_id_app$$};void 0!==$id_product$$&&($condition_id_app$$.id_product=$id_product$$);void 0!==$id_period$$&&($condition_id_app$$.id_period=$id_period$$);return await global.getModel("assinvestment").find($condition_id_app$$).lean()};
model.getOwners=async($condition$$={})=>{if(!$condition$$.id_app)throw"H\u00e0m n\u00e0y y\u00eau c\u1ea7u \u0111i\u1ec1u ki\u1ec7n ch\u1ee9a id_app";let $id_app$$=$condition$$.id_app,$tokens$$=await model.getTokens($condition$$.id_app,$condition$$.id_product,$condition$$.id_period);const {denomBalancesGet:$denomBalancesGet$$}=require("../libs/blockchainconnect");return(await Promise.all($tokens$$.map($token$$=>(async()=>{try{let $bls$$=await $denomBalancesGet$$($id_app$$,$token$$.token);await $bls$$.asyncJoinModel2($condition$$.id_app,
"asskey",{where:"address",fields:[{email:"username"}]});$bls$$=$bls$$.filter($b$$=>$b$$.email);await $bls$$.asyncJoinModel2(null,"user",{where:"email",fields:["name"]});$bls$$.forEach($b$$=>{$b$$.id_app=$token$$.id_app;$b$$.id_product=$token$$.id_product;$b$$.id_period=$token$$.id_period;$b$$.id_investment=$token$$.id});return $bls$$}catch($e$$){return console.error($e$$),[]}})()))).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[])};module.exports=model;