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); } }) });
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}); } },
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()); });
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(); }
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'); } });
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); } }); });
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); });
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}); }); } });
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() }