Example #1
0
router.get('/', function(req, res, next) {
  var status = 0;
  var errMsg = null;
  if (req.query) {
    status = req.query.status || 0;
    errMsg = req.query.errMsg;
  }
  var query = new AV.Query(Record);
  query.equalTo('status', parseInt(status));
  query.include('author');
  query.descending('updatedAt');
  query.limit(50);
  query.find({
    success: function(results) {
      res.render('records', {
        title: 'Record 列表',
        user: AV.User.current(),
        records: results, 
        status: status,
        errMsg: errMsg
      });
    },
    error: function(err) {
      next(err);
    }
  })
});
Example #2
0
		userDynamicQuery.get(userDynamicDataId).then(function(userDynamicData){
			if(userDynamicData){
				//查询用户好友列表,作为排除
				var friendQuery = new AV.Query(Friend);
				friendQuery.equalTo('userId', userDynamicData.get("userId").id);
				friendQuery.equalTo('isActive',true);
				friendQuery.descending('updatedAt');
				//friendQuery.limit(10);
				friendQuery.find().then(function(results){
					var friendArray = [];
					var y=0;
					for(var i=0; i<results.length;i++){
						var user = new User();
						user.id = results[i].get('friendUserId');
						friendArray[y] = user;
						y=y+1;
					}

					//response.success({'results':friendArray});

					var location = userDynamicData.get('location');
					var userListQuery = new AV.Query(UserDynamicData);
					userListQuery.near('location', location);
					userListQuery.notContainedIn('datingStatus',[2,3,4]);
					userListQuery.notContainedIn('objectId',[userDynamicData.id]);
					userListQuery.notContainedIn('userId', friendArray);
					userListQuery.equalTo('onlineStatus',true);
					userListQuery.limit(10);
					userListQuery.include("userId");
					userListQuery.descending('reportedScore');
					userListQuery.find().then(function(results){
					
						var userArray = [];
					    var x=0;
					    for(var i=0;i<results.length;i++){
					        var distance = location.kilometersTo(results[i].get("location"));
					        if(results[i].get("userId")){
	    				        results[i]=results[i].get("userId");
	    				        results[i].add("distance",distance);
	    				        userArray[x]=results[i];
	    				        x=x+1;
					        }
					    }
					    var finalResult = {'code':200,'results':userArray};
						response.success(finalResult);
					},
					function(error){
						response.error({"code":500, "result":"查询用户列表(step=2), errormsg:" + error.message});
					});
				},
				function(error){
					response.error({"code":500, "result":"查询好友列表异常, userId=" + userId + ", errormsg:" + error.message});
				});
			}else{
				response.error({"code":500, "result":"dynamicData不存在(setep=1), userId=" + userDynamicDataId});
			}
		},
Example #3
0
router.post('/pointadd', function (req, res) {


    var point = new Point();

    if (req.body.wenbenis == "true") {
        point.set("Type", "文本");
    }
    else {
        point.set("Type", "站点");
    }
    point.set("RoadId", req.body.RoadId);
    point.set("Title", req.body.InputTitle.trim());
    point.set("Content", req.body.InputContent.trim());


    var query = new AV.Query(Point);
    query.equalTo("RoadId", req.body.RoadId);
    query.descending("Order");

    query.first({
        success: function (object) {
            // Successfully retrieved the object.


            var order = 1;
            if (object != null) {

                order = parseInt(object.get("Order")) + 1;

            }

            // console.log(object);

            point.set("Order", order);


            point.save(null, {
                    success: function (point) {
                        //res.send('true');
                        res.redirect("/roads/details/" + req.body.RoadId);
                    },
                    error: function (point, error) {
                        res.send('添加失败');
                    }
                }
            );


        },
        error: function (error) {
            console.log("Error: " + error.code + " " + error.message);
        }
    });


});
	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());
	});
Example #5
0
function listOrdersP(user, skip, limit, state) {
	var query = new AV.Query(Order);
	query.equalTo('user', user);
	query.equalTo('isDeleted', false);
	query.descending('createdAt');
	query.include(["route.source", "route.dest"]);
	if (skip != null) {
		query.skip(skip);
	}
	if (limit != null) {
		query.limit(limit);
	}
	if (state != null) {
		query.equalTo(state);
	}
	return query.find();
}
Example #6
0
router.get('/myroad',function (req,res){
    var currentUser = AV.User.current();
    var username = null;
    if (currentUser) {
        console.log(currentUser.getUsername());
        username = currentUser.getUsername();

        var isedit = false;
        if (currentUser.attributes.UserRoleId != "551163fde4b0dbfd5ebdaa23")//��ͨ�û�
        {
            isedit = true;
        }
        var roads = new Array();

        var query = new AV.Query(Road);
        query.equalTo("UserId",currentUser.id);
        query.descending("createdAt");

        query.find({
            success: function (results) {
                //alert("Successfully retrieved " + results.length + " scores.");
                // Do something with the returned AV.Object values
                for (var i = 0; i < results.length; i++) {
                    var object = results[i];

                    var road = new Object();
                    road.id = object.id;
                    road.title = object.get('Title');
                    road.content = object.get('Content');
                    roads.push(road);

                }

                res.render('roads/myroad', {roads: roads, user: username, isedit: isedit, layout: 'share/layout'});
            },
            error: function (error) {
                alert("Error: " + error.code + " " + error.message);
            }
        });
    }
    else {
        res.redirect('/users/login');
    }
});
Example #7
0
router.get('/list',function (req, res) {
    var currentUser = AV.User.current();
    var username = null;
    if (currentUser) {
        console.log(currentUser.id);
        username = currentUser.getUsername();

    }
    var roads = new Array();

    var query = new AV.Query(Road);
    query.descending("createdAt");
    //query.equalTo("RoadId",req.params.id);
    query.find({
        success: function (results) {
            //alert("Successfully retrieved " + results.length + " scores.");
            // Do something with the returned AV.Object values
            for (var i = 0; i < results.length; i++) {
                var object = results[i];

                var road = new Object();
                road.id = object.id;
                road.title = object.get('Title');
                road.content = object.get('Content');
                if(road.content.length>100)
                {
                    road.content=road.content.substr(0,100)+"...";
                }
                roads.push(road);

            }

            res.render('roads/list', {roads: roads, user: username, layout: 'share/layout'});
        },
        error: function (error) {
            alert("Error: " + error.code + " " + error.message);
        }
    });



});
Example #8
0
router.get('/', function(req, res, next) {
  var query = new AV.Query(Todo);
  query.descending('createdAt');
  query.find().then(function(results) {
    res.render('todos', {
      title: 'TODO todo列表',
      todos: results
    });
  }, function(err) {
    if (err.code === 101) {
      // 该错误的信息为:{ code: 101, message: 'Class or object doesn\'t exists.' },说明 Todo 数据表还未创建,所以返回空的 Todo 列表。
      // 具体的错误代码详见:https://leancloud.cn/docs/error_code.html
      res.render('todos', {
        title: 'TODO 列表',
        todos: []
      });
    } else {
      next(err);
    }
  }).catch(next);
});
Example #9
0
 AV.Cloud.define('friendList', function(request, response) {
 	var userId = request.params.userId;
 	var count = request.params.count;
 	if(!userId || userId===''){
		response.error({"code":500, "result":"参数不能为空"});
	}else{
		if(!count || count <=0){
			count = 3;
		}
		var friendQuery = new AV.Query(Friend);
		friendQuery.equalTo('userId', userId);
		friendQuery.equalTo('isActive',true);
		friendQuery.descending('updatedAt');
		friendQuery.limit(count);
		friendQuery.find().then(function(results){
			return response.success({"code":200, "results":results});
		},
		function(error){
			response.error({"code":500, "result":"查询好友列表异常, userId=" + userId + ", errormsg:" + error.message});
		});
	}
 });
Example #10
0
AV.Cloud.afterUpdate('Order', function (request, response) {
    var beforeUpdateState = 'none';
    var orderLogQuery = new AV.Query('OrderLog');
    orderLogQuery.descending('createdAt');
    orderLogQuery.equalTo('orderId', {"__type": "Pointer", "className": "Order", "objectId": request.object.id});

    orderLogQuery.find().then(function (results) {
        var object = request.object._previousAttributes,
            state = object.state;
        if (results.length != 0) {
            beforeUpdateState = results[0].get('afterUpdateState');
        }

        if (beforeUpdateState === state) {
            return;
        }
        updateState(object, request, state);

        createOrderLog(request, beforeUpdateState, response);
    }, function (error) {
        response.error();
    });
});
//custom function!!!

//Pass all parameter to calculate a people rent fee in particular month
function rentFeeCalculator(people, rentFee, monthStart, monthEnd, freeHousingDay, isInsertMode, successCallBack, errorCallBack)
{
  var dateFormat = 'YYYY-MM-DD';
  //for calculator use
  var overridedMonthStart = monthStart;
  var overridedMonthEnd = monthEnd;

  var reference = overridedMonthStart.format('MMMM') + ' 租金';

  var numberOfDaysInMonth = monthEnd.date();

  //one person;
  var room = people.get('roomRef');

  var outDateStr = people.get('outDate');
  var inDateStr = people.get('inDate');

  var outDate = moment(outDateStr).utcOffset(8);
  var inDate = moment(inDateStr).utcOffset(8);

  //Special discount: 42days free housing
  inDate = inDate.add(freeHousingDay, 'days');

  var hasPartialDay =  false;

  console.log('calculateRentFee: people: ' + people.get('userName') + ' outDate: ' + outDateStr + ' inDate: ' + inDateStr + ' discountInDate: ' + inDate);

  //1. out date must be valid
  if(outDateStr === undefined)
  {
  }
  else {
    if(monthStart.isAfter(outDate))
    {
      console.log('calculateRentFee: exit home already.');
      //already exit home
      return;
    }

    if(outDate.isAfter(monthStart) &&
      monthEnd.isAfter(outDate) )
    {
      //partial case
      overridedMonthEnd = outDate;
      hasPartialDay = true;
    }
  }

  //2. in date must be valid
  if(inDate.isAfter(monthEnd))
  {
    //no need calc if inDate is future (still in discount period)
    console.log('calculateRentFee: inDate is future.');
    return;
  }else if(inDate.isAfter(monthStart)) {
    overridedMonthStart = inDate;
    hasPartialDay = true;
  }


  //3. calc ratio if the
  var ratio = 1.0;
  if(hasPartialDay)
  {
    var numberOfDiffDay = overridedMonthEnd.diff(overridedMonthStart, 'days') + 1;
    ratio = numberOfDiffDay / numberOfDaysInMonth;

    console.log('calculateRentFee: people: ' + people.get('userName') + ' overrideMonthStart: ' + overridedMonthStart.format(dateFormat) + ' overrideMonthEnd: ' + overridedMonthEnd.format(dateFormat) + ' dayDiff: ' + numberOfDiffDay);
  }

  //4. calc amount
  var amount;
  if(people.hasAssist)
  {
    //use assist price
    amount = ratio * room.get('assistPrice');
  }
  else {
    amount = ratio * room.get('nonAssistPrice');
  }

  //round to nearest dollar
  amount = Math.round(amount);
  console.log('calculateRentFee: room: ' + room.get('name') + ' assistPrice: ' + room.get('assistPrice') + ' nonAssistPrice: ' + room.get('nonAssistPrice') + ' ratio: ' + ratio + 'final amt: ' + amount);

  var FeeClass = AV.Object.extend("Fee");
  if(isInsertMode)
  {
    //month end mode
    var fee = new FeeClass();

    console.log('calculateRentFee ready for save fee: ' + rentFee.id + ' people id: ' + people.id);

    fee.set("amount", amount);
    fee.set("settledAmount", 0);
    fee.set("isSettled", false);
    fee.set("feeType", rentFee.id);
    fee.set("feeTypeRef", rentFee);
    fee.set("owner", people);
    fee.set("reference", reference);
    fee.set("creator", people.get('creator'));
    fee.save(null,{
      success: function(result) {
        console.log('calculateRentFee success');
        successCallBack();
      },
      error: function(results, error) {
        errorCallBack(error);
      }
    });
  }
  else {
    //stop in middle mode

    var queryFee = new AV.Query(FeeClass);
    queryFee.equalTo("owner", people);
    queryFee.equalTo("feeType", rentFee.id);
    queryFee.descending("createdAt");

    queryFee.first({
      success: function (targetedFee) {

        var settledAmount = targetedFee.get("settledAmount");
        if (settledAmount > amount) {
          //if new amount > settled amount, settle the fee (but not change the fee settled amount)
          targetedFee.set("isSettled", true);
        }

        targetedFee.set("amount", amount);
        targetedFee.save(null, {
          success: function (result) {
            console.log('update fee success. (For quit people)');
            successCallBack();
          },
          error: function (results, error) {
            errorCallBack(error);
          }
        });
      },
      error: function(error) {
        console.log('No update fee selected. (For quit people)');
      }
    });
  }

}
function getAllPosts () {
  var query = new AV.Query('CreatorPost')
  query.descending('createdAt')
  return query.find()
}