Example #1
0
 APIClient.sendTemplate(receiverOpenId, TemplateId, url, Color_Title, data, function (err, result) {
     if (err) {
         rePromise.reject(err);
     } else {
         rePromise.resolve(result);
     }
 });
Example #2
0
 OAuthClient_Desktop.getUser(result.data['openid'], function (err, userInfo) {
     if (err) {
         rePromise.reject(err);
     } else {
         rePromise.resolve(_tranWechatUserInfoToAVOS(userInfo));
     }
 });
Example #3
0
 }, function (err, data) {
     if (err) {
         rePromise.reject(err);
     } else {
         rePromise.resolve(data);
     }
 });
Example #4
0
 promise = promise.then(function(results) {
   if (results.length != 1) {
     return AV.Promise.error('查找到的订单数为: ' + results.length);
   }
   order = results[0];
   if (order.get('state') == 'paid') {
     return AV.Promise.error('订单已支付');
   }
   if (charge.paid) {
     console.log('pay order :' + order.get('orderNumber'))
     AV.Cloud.requestSmsCode({
       mobilePhoneNumber: order.get('user').get('mobilePhoneNumber'),
       template: "orderPaySmsV2",
       orderNumber: order.get('orderNumber')
     }).then(function() {
       console.log("发送成功");
     }, function(err) {
       console.log("发送失败" + err);
     });
     return orderMethod.payOrderP(order);
   } else {
     if (order.get('state') == 'paying') {
       order.set('state', 'unpay');
       return order.save();
     }
   }
 });
Example #5
0
		return query.find().then(function (results) {
			var totalSeats = 0;
			for (var i = 0; i < results.length; i++) {
				totalSeats += results[i].get('totalSeat');
			}
			if (totalSeats < (route.get('passengerNumber') + passengers.length)) {
				return AV.Promise.error('该路线人数已满');
			}
			var promise = AV.Promise.as();
			promise = promise.then(function () {
				route.increment('passengerNumber', passengers.length);
				route.fetchWhenSave(true);
				return route.save();
			});
			promise = promise.then(function (route) {
				if (route.get('passengerNumber') > totalSeats) {
					route.increment('passengerNumber', -passengers.length);
					route.save();
					return AV.Promise.error('该路线人数已满');
				}
				var order = new Order();
				order.set('user', user);
				order.set('route', route);
				order.relation('passengers').add(passengers);
				if (coupons.length != 0) {
					order.relation('coupons').add(coupons);
				}
				order.set('orderNumber', genOrderNumber());
				order.set('price', price);
				order.set('isDeleted', false);
				order.set('state', 'unpay');
				order.fetchWhenSave(true);
				order.set('priceToPay', countFinalPrice(price, coupons)); //计算折扣后的价格
				return order.save();
			})
			promise = promise.then(function (newOrder) {
				var promises = [];
				coupons.forEach(function (coupon) {
					coupon.set('order', newOrder);
					coupon.set('isUsed', true);
					promises.push(coupon.save());
				});
				var promise = AV.Promise.all(promises);
				return promise.then(function () {
					return new AV.Promise(function (resolve, reject) {
						resolve({
							order: newOrder,
							passengers: passengers,
							coupons: coupons
						});
					});
				});
			});
			return promise;
		});
Example #6
0
	.then(function(results) {
		if (results.length == 0) {
			return AV.Promise.error("没有找到对应的代理优惠码优惠规则");
		}
		if (results.length > 1) {
			return AV.Promise.error('有不止一个对应的代理优惠码优惠规则');
		}

		agentCommissionRuleMapQuery.equalTo('source', location);
		agentCommissionRuleMapQuery.equalTo('isDeleted', false);
		return agentCommissionRuleMapQuery.find();
	})
Example #7
0
function addAgentCommissionRule(description, commissionFunction) {
	var agentCommissionRule = new AgentCommissionRule();
	if (description == null) {
		return AV.Promise.error('未填写描述');
	}
	if (commissionFunction == null) {
		return AV.Promise.error('函数为空');
	}
	agentCommissionRule.set('description', description);
	agentCommissionRule.set('commissionFunction', commissionFunction);
	agentCommissionRule.set('isDeleted', false);
	return agentCommissionRule.save();
}
Example #8
0
exports.sendTemplateMsg = function (title, senderName, msg, url, receiverOpenId) {
    var TemplateId = 'Gguvq37B78_L8Uv9LZgp0gf8kQ5O8Xmthqttb7IrwVY';//用户咨询提醒
    var Color_Title = '#46bfb9';
    var Color_Context = '#30bf4c';
    var data = {
        first: {//标题
            value: title,
            color: Color_Title
        },
        keyword1: {//用户名称
            value: senderName,
            color: Color_Context
        },
        keyword2: {
            value: msg,
            color: Color_Context
        },
        remark: {//咨询内容
            value: '点击回复' + senderName,
            color: Color_Title
        }
    };
    var rePromise = new AV.Promise(null);
    APIClient.sendTemplate(receiverOpenId, TemplateId, url, Color_Title, data, function (err, result) {
        if (err) {
            rePromise.reject(err);
        } else {
            rePromise.resolve(result);
        }
    });
    return rePromise;
};
 function (senz_list_result, behavior_id) {
     console.log("refined senzes : " + senz_list_result.length);
     logger.info(config.logEventType.p2m, "receive user<" + user_id + ">'s several observation without probability from " + new Date(start_time) + " to " + new Date(end_time));
     var promises = [];
     senz_list_result.forEach(function (senz_object) {
         var prob = senz_object["prob"];
         var senz_list = senz_object["senzList"];
         var es_result = _middlewareExpertsSystem(senz_list);
         // First of all, A pre-defined experts system would try to give a prediction.
         if (es_result["assertion"]){
             logger.info(config.logEventType.anl, "Experts system predict user<" + user_id + ">'s observation from " + new Date(start_time) + " to " + new Date(end_time));
             promises.push(es_result["prediction"]);
         }
         // If experts system could not give an answer about prediction.
         // Then middleware of "Behavior 2 Event" which is made of GMMHMM would solve it.
         else {
             logger.info(config.logEventType.anl, "request with user<" + user_id + ">'s a observation from " + new Date(start_time) + " to " + new Date(end_time));
             promises.push(algo.middlewareUserBehavior2Event(algo_type, tag, senz_list));
         }
     });
     return AV.Promise.when(promises).then(
         function (predict_result1, predict_result2, predict_result3){ return AV.Promise.as([predict_result1, predict_result2, predict_result3], senz_list_result, behavior_id); },
         function (error){ return AV.Promise.error(error); }
     );
 },
var createOnBoot = function(app_list){
	var installation_query = new AV.Query(Installation);
	var installation_promises = [];
	app_list.forEach(function(appId){
		var app = {
			"__type": "Pointer",
			"className": "Application",
			"objectId": appId
		};
		installation_query.equalTo("application", app);
		installation_query.descending("updatedAt");
		installation_promises.push(installation_query.find());
	});
	return AV.Promise.all(installation_promises)
		.then(function(installation_lists){
			var connection_promises = [];
			installation_lists.forEach(function(installations){ //every app's installation record
				var de_weight_installations = DupInstallationFilter(installations);
				logger.debug("createOnBoot", de_weight_installations.length);
				de_weight_installations.forEach(function(installation){   //certain app's installations
					connection_promises.push(createAIConnection(installation));
				})
			});
			return AV.Promise.all(connection_promises);
		})
		.catch(function(e){
			return AV.Promise.error(e);
		});
};
Example #11
0
	return query.get(orderId).then(function (result) {
		order = result;
		var promises = [];
		promises.push(order.relation('coupons').query().find());
		promises.push(order.relation('passengers').query().find());
		var ticketQ = order.relation('tickets').query();
		ticketQ.include('schedule');
		promises.push(ticketQ.find());
		var transactionQ = new AV.Query(Transaction);
		transactionQ.equalTo('order', order);
		promises.push(transactionQ.find());
		return AV.Promise.when(promises).then(function (couponsR, passengersR, ticketsR, transactionsR) {
			coupons = couponsR;
			passengers = passengersR;
			tickets = ticketsR;
			transactions = transactionsR;
			return new AV.Promise(function (resolve, reject) {
				resolve({
					order: order,
					passengers: passengers,
					coupons: coupons,
					tickets: tickets,
					transactions: transactions
				});
			});
		});
	});
Example #12
0
	}).then(function (results) {
		passengers = results;
		var promise = AV.Promise.as();
		if (order.get('state') != 'unpay' && order.get('state') != 'paying') {
			promise = promise.then(function () {
				var query = new AV.Query(Transaction);
				query.equalTo('order', order);
				return query.find();
			}).then(function (results) {
				transactions = results;
			});
			if (order.get('state') != 'cancelling' && order.get('state') != 'cancelled') {
				promise = promise.then(function () {
					var query = order.relation('tickets').query();
					query.include('schedule');
					return query.find();
				}).then(function (results) {
					tickets = results;
				});
			}
		}
		return promise.then(function () {
			return new AV.Promise(function (resolve, reject) {
				resolve({
					order: order,
					passengers: passengers,
					coupons: coupons,
					tickets: tickets,
					transactions: transactions
				});
			});
		});
	});
Example #13
0
 function (result_in_db){
     return AV.Promise.as(
         result_in_db.id,
         result_in_db.updatedAt.toString(),
         result_in_db.get("content")
     );
 },
Example #14
0
router.get('/move-category-2-down',(req,res) => {

    let currentId = parseInt(req.query.currentId);
    let targetId = parseInt(req.query.targetId);

    AV.Promise.when(
        new AV.Promise(resolve => {

            let query = new AV.Query(ProductCategory2);
            query.equalTo('category2Id',currentId);

            query.first().done(item => {
                item.set('index',item.get('index') + 1);
                return item.save();
            }).done(resolve);

        }),
        new AV.Promise(resolve => {

            let query = new AV.Query(ProductCategory2);
            query.equalTo('category2Id',targetId);

            query.first().done(item => {
                item.set('index',item.get('index') - 1);
                return item.save();
            }).done(resolve);
        })
    ).then(()=> res.send({success:1}));

});
Example #15
0
	.then(function(results) {
		if (results.length != 0) {
			return AV.Promise.error('该规则已绑定代理,请先取消绑定');
		}
		agentCommissionRule.set('isDeleted', true);
		return agentCommissionRule.save();
	});
Example #16
0
	return query.get(orderId).then(function (result) {
		order = result;
		if(order.get('isDeleted')){
			return AV.Promise.error('该订单已删除');
		}
		return order.relation('coupons').query().find();
	}).then(function (results) {
Example #17
0
router.get('/get-product', (req, res) => {
    let page = parseInt(req.query['page']) || 1;
    let limit = parseInt(req.query['limit']) || 1000;
    let productMethodId = req.query['product-method-id'] ? parseInt(req.query['product-method-id']) : 3;
    let category1Id = req.query['category1-id'] ? parseInt(req.query['category1-id']) : 0;
    let category2Id = req.query['category2-id'] ? parseInt(req.query['category2-id']) : 0;
    let onsale = req.query.onsale ? parseInt(req.query.onsale) : 0;
    let select = 'detail, mainImage, name, use, instruction, detailImage';
    let options = {page, limit, onsale, productMethodId, category1Id, category2Id, select};
    AV.Promise.when(
        new AV.Promise(resolve => {
            product.getProducts(options, false).then(items => {
                if (items) {
                    items.forEach(n => {
                        let mainImage = n.get('mainImage');
                        if(mainImage) {
                            for(let i in mainImage) {
                                if(!n.mainImage) {
                                    n.mainImage = mainImage[i].url.replace('ac-QuiPuWpJ.clouddn.com','lc-QuiPuWpJ.cn-n1.lcfile.com');
                                }
                            }
                        }
                    });
                }
                data = extend(data, {product: items});
                resolve();
            });
        }),
        //查询category1
        new AV.Promise(resolve => {
            if(!category1Id) {
                return resolve();
            }

            let query = new AV.Query(ProductCategory1);
            query.equalTo('category1Id', category1Id);
            query.ascending('index');
            query.first().then(category1 => {
                data = extend(data, {category1});
                resolve();
            });
        }),

        //查询categoty2
        new AV.Promise(resolve => {

            if (!category2Id) {
                return resolve();
            }

            let query = new AV.Query(ProductCategory2);
            query.equalTo('category2Id', category2Id);
            query.ascending('index');
            query.first().then(category2 => {
                data = extend(data, {category2});
                resolve();
            });
        })
    ).then(() => res.render('admin/crontab', data));
});
Example #18
0
	.then(function(results) {
		if (results.length == 0) {
			return AV.Promise.error("没有找到对应的提成规则");
		}
		if (results.length > 1) {
			return AV.Promise.error('有不止一个对应的提成规则');
		}
		agentCommissionRule.id = results[0].get('agentCommissionRule').id;

		agentInfo.set('agent', user);
		agentInfo.set('agentSource', location);
		agentInfo.set('agentCommissionRule', agentCommissionRule);
		agentInfo.set('preliveConsumer', 0);
		agentInfo.set('liveConsumer', 0);
		agentInfo.set('isDeleted', false);
		return agentInfo.save();
	})
			function(app){
				var cert_url = app.get('cert_url') || "";
				var key_url = app.get('key_url') || "";
				return AV.Promise.all([
					AV.Cloud.httpRequest({ url: cert_url }),
					AV.Cloud.httpRequest({ url: key_url }),
					app.get('passphrase')
				]);
			})
Example #20
0
	.then(function(results) {
		if (results.length != 0) {
			return AV.Promise.error('该地点所对应的提成规则已存在');
		}
		agentCommissionRuleMap.set('source', location);
		agentCommissionRuleMap.set('agentCommissionRule', agentCommissionRule);
		agentCommissionRuleMap.set('isDeleted', false);
		return agentCommissionRuleMap.save();
	});
 function (model){
     if (description != undefined){
         //logger.info(config.logEventType.upd, "Training is over. Updating model to database.");
         return Model.updateModel(description);
     }
     else{
         return AV.Promise.as(model);
     }
 },
Example #22
0
module.exports = function(params,callback,error) {
    
    let promise = new AV.Promise();

    let name = params.name;
    let html = params.html;
    let htmlHeight = params.htmlHeight;
    let segmentHeight = params.segmentHeight;

    let segments = new Array(Math.ceil(htmlHeight / segmentHeight));
    
    html = html.replace(/https/g,'http');
    
    //淘宝发布的Mobile尺寸最大高度为960,故需要分段
    let options = {
        siteType: 'html',
        shotSize: {
            width: 750,
            height: segmentHeight
        },
        quality:80 //渲染质量,默认值75
    };

    let index = 0;
    async.forEachSeries(segments,(segment,cb) => {
        
        let option = extend(options, {
            shotOffset: {
                left: 0,
                right: 0,
                top: index * segmentHeight,
                bottom: 0
            }
        });

        if (htmlHeight % segmentHeight !==0 && index === segments.length - 1) {
            option.shotSize.height = htmlHeight % segmentHeight;
        }

        let fileName = name.replace(/\s/g,'').substr(0,20);
        let indexLen = index < 9 ? 0 : '';
        webshot(html,`shot/${fileName}_${indexLen}${index + 1}.jpg`, option, function (err) {
            if(err) {
                console.info(err);
                return false;
            }
            index ++;
            cb();
        });
        
    },()=> {
        promise.resolve();
    });

    return promise;
    
};
Example #23
0
router.post('/transaction/pay', function(req, res) {
  var charge = req.body.data.object;
  var order;
  var promise = AV.Promise.as();
  console.log('charge :' + charge.id);
  if (charge.description != password) {
    res.status(404);
    res.sendStatus(404);
    return;
  }
  promise = promise.then(function() {
    var query = new AV.Query(Order);
    query.equalTo('orderNumber', charge.order_no);
    query.include('route');
    query.include('user');
    return query.find();
  });
  promise = promise.then(function(results) {
    if (results.length != 1) {
      return AV.Promise.error('查找到的订单数为: ' + results.length);
    }
    order = results[0];
    if (order.get('state') == 'paid') {
      return AV.Promise.error('订单已支付');
    }
    if (charge.paid) {
      console.log('pay order :' + order.get('orderNumber'))
      AV.Cloud.requestSmsCode({
        mobilePhoneNumber: order.get('user').get('mobilePhoneNumber'),
        template: "orderPaySmsV2",
        orderNumber: order.get('orderNumber')
      }).then(function() {
        console.log("发送成功");
      }, function(err) {
        console.log("发送失败" + err);
      });
      return orderMethod.payOrderP(order);
    } else {
      if (order.get('state') == 'paying') {
        order.set('state', 'unpay');
        return order.save();
      }
    }
  });
  promise = promise.then(function() {
    return transactionMethod.logOrderPayTransactionP(order, charge, true);
  });
  promise.then(function() {
    res.status(200);
    res.sendStatus(200);
  }, function(error) {
    console.log(error.toString());
    res.status(200);
    res.sendStatus(200);
  })
});
Example #24
0
        }).done(items => {
            //批量更新index
            let promises = [];
            items.forEach((item, i) => {
                item.set('index', i);
                promises.push(item.save());
            });
            return AV.Promise.when(promises);

        }).done(()=>res.send({success: 1}));
 function (){
     if (obs != undefined) {
         //logger.info(config.logEventType.u2e, "Observation is correct. Start to train.");
         return Model.train(obs, 50);
     }
     else{
         //logger.error(config.logEventType.u2e, "Observation is incorrect. Failed to train.");
         return AV.Promise.error("Obs is undefined.");
     }
 },
router.get('/:id/rush', function(req, res, next) {
  AV.Promise.when([
    redisConn.hgetAsync('moneyPackages', req.params.id),
    new AV.Query(User).find() // 查询 User 只是为了再抢红包时模拟用户身份
  ]).then(function(moneyPackage, users) {
    res.render('money-package/rush', {
      moneyPackage: JSON.parse(moneyPackage),
      users: users
    });
  });
});
Example #27
0
    queryProduct.first().then(item => {
        
        if(item) {
            res.send({success:0,message:'已有产品引用该分类,无法删除'});
            return AV.Promise.error();
        }

        queryCategory2.equalTo('category2Id', category2Id);
        return queryCategory2.first();
        
    }).done(item => {
Example #28
0
    query2.first().then(item => {
        
        if(item) {
            res.send({success: 0,message:'该分类含有子分类,请先删除所有子分类再进行删除'});
            return AV.Promise.error();
        }

        query1.equalTo('category1Id', category1Id);
        return query1.first();
        
    }).done(item => {
		.then(function(installation_lists){
			var connection_promises = [];
			installation_lists.forEach(function(installations){ //every app's installation record
				var de_weight_installations = DupInstallationFilter(installations);
				logger.debug("createOnBoot", de_weight_installations.length);
				de_weight_installations.forEach(function(installation){   //certain app's installations
					connection_promises.push(createAIConnection(installation));
				})
			});
			return AV.Promise.all(connection_promises);
		})
Example #30
0
	.then(function(result) {
		user = result;
		if (user.get('isAgent') == true) {
			return AV.Promise.error('该用户已经是代理');
		}

		discountRuleMapQuery.equalTo('source', location);
		discountRuleMapQuery.equalTo('type', 'agent');
		discountRuleMapQuery.equalTo('isDeleted', false);

		return discountRuleMapQuery.find();
	}, function(result) {