UNPKG

flexbiz-server

Version:

Flexible Server

11 lines (10 loc) 2.34 kB
'use strict';const {evalute}=require("../libs/utils"),axios=require("axios"),async=require("async"),smsaccountSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},account_name:{type:String,required:!0,trim:!0},account_type:{type:String,uppercase:!0,required:!0,trim:!0,default:"QC"},script_send:{type:String,required:!0},template:String,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:""}});(global.configs||{}).createIndexes&&(smsaccountSchema.index({id_app:1,account_name:1},{unique:!0}),smsaccountSchema.index({account_name:"text"}),smsaccountSchema.index({account_type:1}),smsaccountSchema.index({status:1}),smsaccountSchema.index({user_created:1,visible_to:1,visible_to_users:1}));const model=mongoose.models.smsaccount||mongoose.model("smsaccount",smsaccountSchema); model.send=async($account_start$$,$phone$$,$content$$)=>{try{if(!$phone$$)throw"Y\u00eau c\u1ea7u s\u1ed1 \u0111i\u1ec7n tho\u1ea1i ng\u01b0\u1eddi nh\u1eadn";if(!$account_start$$.script_send)throw"Script \u0111\u1ec3 g\u1eedi sms kh\u00f4ng t\u1ed3n t\u1ea1i";if(!$content$$)throw"Y\u00eau c\u1ea7u n\u1ed9i dung g\u1eedi \u0111i";let $str_func$$=`return (async ()=>{ try{ ${$account_start$$.script_send} }catch(e){ return {error:e} } })`,$phones$$=[...(new Set($phone$$.split(",")))];if(30>$phones$$.length)throw"M\u1ed7i l\u1ea7n g\u1eedi t\u1ed1i thi\u1ec3u l\u00e0 30 kh\u00e1ch h\u00e0ng, s\u1ed1 kh\u00e1ch hi\u1ec7n \u0111ang y\u00eau c\u1ea7u g\u1eedi l\u00e0 "+$phones$$.length;let $groups$$=[];for($account_start$$=0;$account_start$$<$phones$$.length;)$groups$$.push($phones$$.slice($account_start$$,$account_start$$+970)),$account_start$$+=970;if(1<$groups$$.length&&30>$groups$$[$groups$$.length-1].length){let $last_group$$= $groups$$.pop();$groups$$[0]=[...$groups$$[0],...$last_group$$]}return new Promise(($res$$,$rej$$)=>{async.mapSeries($groups$$,($group$$,$callback$$)=>{setImmediate(async()=>{try{let $data$$=await evalute($str_func$$,{axios,phone:$group$$.join(","),content:$content$$})();$callback$$(null,$data$$)}catch($e$$){$callback$$($e$$)}})},($e$$,$rs$$)=>{$e$$?$rej$$($e$$):$res$$($rs$$)})})}catch($e$$){throw console.error($e$$),$e$$;}};module.exports=model;