flexbiz-server
Version:
Flexible Server
11 lines (10 loc) • 4.29 kB
JavaScript
const controller=require("../controllers/controller"),{executeInTransaction}=require("../libs/sessionContext"),assrequestSchema=new Schema({id_app:String,receiver_name:String,receiver_address:{type:String,required:!0,trim:!0},request_id:{type:String,required:!0,trim:!0},amount:{type:Number,required:!0},denom:{type:String,required:!0,lowercase:!0,trim:!0},order_id:{type:String,required:!0,trim:!0},order_info:{type:String,required:!0},ma_ct:String,trang_thai:{type:String,default:"0"},sender_address:String,
sender_name:String,sender_user:String,sender_date:Date,transaction:Schema.Types.Mixed,return_url:String,notify_url:String,payment_url: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:""}});
(global.configs||{}).createIndexes&&(assrequestSchema.index({id_app:1}),assrequestSchema.index({sender_address:1}),assrequestSchema.index({sender_name:1}),assrequestSchema.index({sender_user:1}),assrequestSchema.index({sender_date:1}),assrequestSchema.index({request_id:1}),assrequestSchema.index({ma_ct:1}),assrequestSchema.index({denom:1}),assrequestSchema.index({order_id:1}),assrequestSchema.index({order_info:1}),assrequestSchema.index({receiver_name:1}),assrequestSchema.index({receiver_address:1}),
assrequestSchema.index({status:1}),assrequestSchema.index({user_created:1}),assrequestSchema.index({trang_thai:1}),assrequestSchema.index({receiver_address:"text",order_id:"text",order_info:"text",receiver_name:"text",sender_name:"text"},{name:"assrequest_index2"}));const model=mongoose.models.assrequest||mongoose.model("assrequest",assrequestSchema);
model.createVirtualPaymentClientURL=async($order$$,$_app_client_ip$$,$_paymentViaWallet_item$$)=>{$_app_client_ip$$=await global.getModel("app").findOne({_id:$order$$.id_app});$_paymentViaWallet_item$$=await model.create({id_app:$order$$.id_app,user_created:$order$$.user_created,user_updated:$order$$.user_created,receiver_name:$_paymentViaWallet_item$$.wallet_configs.receiver_name,receiver_address:$_paymentViaWallet_item$$.wallet_configs.receiver_address,request_id:$order$$._id.toString(),ma_ct:$order$$.ma_ct||
"",amount:$order$$.amount,denom:$_paymentViaWallet_item$$.wallet_configs.denom,order_id:$order$$.so_ct||$order$$._id.toString(),order_info:"Thanh to\u00e1n cho \u0111\u01a1n h\u00e0ng "+($order$$.so_ct||$order$$._id.toString())});$_paymentViaWallet_item$$.return_url=`${configs.domain?`https://${configs.domain}`:configs.api_url}/public/${$order$$.id_app}/assrequest/${$_paymentViaWallet_item$$._id.toString()}/callback`;await $_paymentViaWallet_item$$.save();return($_app_client_ip$$.domain||"")+"/#/payment/"+
$_paymentViaWallet_item$$._id.toString()};
model.verifyReturnUrl=async($id_app$$,$id_transaction$$,$query$$)=>{const $again_link$$=`${configs.domain?`https://${configs.domain}`:configs.api_url}/public/payment/again`;let $request$$=await model.findOne({_id:$id_transaction$$}).lean();if(!$request$$)throw"Y\u00eau c\u1ea7u thanh to\u00e1n kh\u00f4ng t\u1ed3n t\u1ea1i";const $results$$={...$query$$};$results$$.isSuccess=$request$$.trang_thai=="1";if($results$$.isSuccess&&$request$$.ma_ct){let $_v$$=global.getModel(`${$request$$.ma_ct.toLowerCase()}`);const $obj_updated$$=
await $_v$$.findOne({_id:$request$$.request_id});try{await executeInTransaction(async()=>{let $ctrl$$=global.controllers[$request$$.ma_ct.toUpperCase()];$ctrl$$&&$obj_updated$$&&($ctrl$$.handleAfterPayment?(Logger.info("handle after payment"),await $ctrl$$.handleAfterPayment($obj_updated$$),controller.pushNotification($ctrl$$,$obj_updated$$,"payment",null,!1,{title:`Bill ${$obj_updated$$.so_ct} \u0111\u00e3 \u0111\u01b0\u1ee3c thanh to\u00e1n`})):(await $_v$$.updateOne({_id:$request$$.request_id},
{trang_thai:"5"}),$ctrl$$.post&&await controller.asyncPostData($obj_updated$$,$ctrl$$),controller.pushNotification($ctrl$$,$obj_updated$$,"update")),$results$$.result_url=$obj_updated$$.again_link||$again_link$$)})}catch($e$$){Logger.error("error update status for voucher",$request$$.ma_ct,$e$$),$results$$.result_url=$obj_updated$$.again_link||$again_link$$}}else $results$$.result_url=$again_link$$;return $results$$};module.exports=model;