123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- const req = require('../../utils/request')
- const company = getApp().globalData.company
- const dateF = require("../../utils/date")
- const Parse = getApp().Parse;
- const uid = Parse.User.current()?.id
- async function getStores(params) {
- let {
- val,
- uid,
- skip,
- limit,
- isShow
- } = params
- let wh1 = val ? `AND (store."storeName" LIKE '%` + val + "%'" + 'OR store."storeAddress" LIKE ' + "'%" + val + "%')" : ``
- let sql = `SELECT * ,
- ("perCapita" * 1) price,
- (SELECT room."price" FROM "ShopRoom" room
- WHERE room."shop" = store."objectId"
- AND room."isDeleted" IS NOT TRUE
- AND room."isEnabled" = TRUE
- ORDER BY room."price" ASC LIMIT 1
- ) "minPrice",
- (SELECT clt."isCollect" FROM "DramaShopCollect" clt
- WHERE clt."homestayStore" = store."objectId"
- AND clt."isCollect" = TRUE
- AND clt."isDeleted" IS NOT TRUE
- AND clt."user" = '${uid}'
- LIMIT 1
- ) "iscollect"
- FROM "ShopStore" store
- WHERE "company" = '${company}'
- AND "type" = 'stay'
- AND "isVerified" IS TRUE
- AND "isDeleted" IS NOT TRUE
- ${wh1}
- ${isShow?`ORDER BY "isShow" DESC,"iscollect","index"`:`ORDER BY "iscollect","isShow" DESC,"index"`}
- OFFSET ${skip ?? 0} LIMIT ${limit ?? 10}`
- // console.log(sql)
- let res = await req.customSQL(sql);
- return res
- }
- /**获取收货地址 */
- async function getAddress() {
- let address = null
- let query = new Parse.Query("ShopAddress")
- let addressId = wx.getStorageSync('addressId')
- if (addressId) {
- query.equalTo('objectId', addressId)
- } else {
- let user = Parse.User.current();
- query.equalTo("user", user.id);
- query.descending("is_default")
- }
- let res = await query.first()
- if (res?.id) {
- address = res?.toJSON() || null
- }
- return address
- }
- /**
- * 获取当前房间被占用日期
- * @param {*} rid 房间id
- */
- async function getRoomOccupiaDate(rid) {
- let query = new Parse.Query('RoomOrder')
- query.equalTo('company', company)
- query.notEqualTo('isDeleted', true)
- query.equalTo('isPay', true)
- query.equalTo('room',rid)
- query.containedIn('status', [100, 200, 300, 500, 602, 102, 104])
- query.greaterThan('endTime', new Date(new Date().setHours(14, 1, 0))) //查询订单结束时间大于今天14点01的订单
- query.limit(180)
- let d = await query.find()
- let dList = []
- for (let i in d) {
- let item = d[i]
- let list = getDateList(item?.get('startTime'), item?.get('endTime'))
- dList = [...dList, ...list]
- }
- return dList
- }
- /**返回两个时间之中的 年-月-日 */
- function getDateList(startTime, endTime) {
- startTime.setHours(0, 0, 0, 0);
- endTime.setHours(0, 0, 0, 0);
- let diff = endTime - startTime;
- let diffDate = Math.ceil(diff / (1000 * 60 * 60 * 24));
- let list = []
- for (let i = 0; i < diffDate; i++) {
- let current = new Date(startTime)
- current.setDate(startTime.getDate() + i)
- list.push({
- year: current.getFullYear(),
- month: current.getMonth(),
- date: current.getDate()
- })
- }
- return list
- }
- /**
- * 判断当前时间段内该房间是否空闲
- * @param {*} fromto 时间段{from,to}
- * @param {*} rid 房间id
- */
- async function isFree(fromto, rid) {
- let {
- from,
- to
- } = fromto
- let endObj = {
- start: new Date(from),
- end: new Date(to),
- }
- let startObj = {
- start: new Date(from),
- end: new Date(to),
- }
- let middleObj = {
- start: new Date(from),
- end: new Date(to),
- }
- endObj.start.setHours(14, 1, 0);
- endObj.end.setHours(14, 1, 0);
- startObj.start.setHours(11, 59, 0);
- startObj.end.setHours(13, 59, 0);
- startObj.end.setDate(endObj.end.getDate()-1)
- middleObj.start.setHours(11, 59, 0)
- middleObj.end.setHours(13, 59, 0)
- let query = new Parse.Query('RoomOrder')
- query.equalTo('company', company)
- query.notEqualTo('isDeleted', true)
- query.equalTo('isPay', true)
- query.containedIn('status', [100, 200, 300, 500, 602, 102, 104])
- query.equalTo('room',rid)
- //订单结束时间在范围内
- let endQuery = new Parse.Query('RoomOrder')
- endQuery.greaterThan('endTime', endObj.start)
- endQuery.lessThan('endTime', endObj.end)
- //订单开始时间在范围内
- let startQuery = new Parse.Query('RoomOrder')
- startQuery.greaterThanOrEqualTo('startTime', startObj.start)
- startQuery.lessThanOrEqualTo('startTime', startObj.end)
- //所选时间包含在订单时间之内
- let middleQuery = new Parse.Query('RoomOrder')
- middleQuery.lessThanOrEqualTo('startTime', middleObj.start)
- middleQuery.greaterThanOrEqualTo('endTime',middleObj.end)
- //查询fromto之间进行的订单
- let mainQuery = Parse.Query.and(
- query,Parse.Query.or(endQuery, startQuery,middleQuery)
- )
-
- let c = await mainQuery.count()
- if (c && c > 0) {
- return false
- } else {
- return true
- }
- }
- /**获取两个date的间隔天数 */
- function getDays(date1, date2) {
- const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());
- const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());
- const timeDiff = Math.abs(d2.getTime() - d1.getTime()); //绝对值
- const daysDiff = Math.ceil(timeDiff / (1000 * 60 * 60 * 24)); //向上取整
- return daysDiff;
- }
- module.exports = {
- getStores,
- getAddress,
- isFree,
- getRoomOccupiaDate,
- getDays
- };
|