预约时间修正
This commit is contained in:
+7
-92
@@ -15,7 +15,6 @@ import (
|
||||
"pet-house.com/core/server/web/web_iris"
|
||||
"pet-house.com/core/server/zap_server"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
@@ -560,10 +559,7 @@ func GetOrderDetail(orderId string) OrderDetail {
|
||||
}
|
||||
|
||||
func checkOrderServiceTime(serviceTime string, projectionServiceTime int) bool {
|
||||
type orderMainTmp struct {
|
||||
ServiceTime string
|
||||
ProjectionServiceTime int
|
||||
}
|
||||
|
||||
serviceTimeD, _ := time.Parse("2006-01-02 15:04", serviceTime)
|
||||
hour := serviceTimeD.Hour()
|
||||
if hour == 20 && projectionServiceTime > 2*60 {
|
||||
@@ -573,14 +569,9 @@ func checkOrderServiceTime(serviceTime string, projectionServiceTime int) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
var orderMainTmpList []orderMainTmp
|
||||
//服务时间>=预约时间 and 服务时间<=预计结束时间 时间范围内无订单才可预约
|
||||
database.Instance().Model(&models.OrderMain{}).Where("service_time >= ? and service_time < DATE_FORMAT(DATE_ADD('"+serviceTime+"', INTERVAL "+strconv.Itoa(projectionServiceTime)+" MINUTE), '%Y-%m-%d %H:%i') and order_status != 3 and order_status != 4 and status = 1", serviceTime).Find(&orderMainTmpList)
|
||||
//时间点订单数量<服务车辆*车辆单次服务数量 才可接受预约
|
||||
if len(orderMainTmpList) > 0 {
|
||||
return len(orderMainTmpList) >= len(CarMap)*CarServiceNum
|
||||
}
|
||||
return false
|
||||
var orderTempList []utils.OrderTemp
|
||||
database.Instance().Model(&models.OrderMain{}).Where("service_time >= DATE_SUB(NOW(), INTERVAL 7 DAY) and order_status != 3 and order_status != 4 and status = 1").Find(&orderTempList)
|
||||
return utils.CheckAvailability(orderTempList, len(CarMap), serviceTime, projectionServiceTime)
|
||||
}
|
||||
|
||||
type OrderListRequest struct {
|
||||
@@ -795,10 +786,6 @@ type OrderServiceTimeRequest struct {
|
||||
ServiceAddrId int64
|
||||
}
|
||||
|
||||
type OrderServiceTimeResponse struct {
|
||||
Times map[string][]TimeObject `json:"times"`
|
||||
}
|
||||
|
||||
// 获取订单可预约时间
|
||||
func (p DefParty) orderServiceTime() web_iris.Party {
|
||||
return web_iris.Party{Prefix: p.Prefix, PartyFunc: func(index iris.Party) {
|
||||
@@ -811,81 +798,9 @@ func (p DefParty) orderServiceTime() web_iris.Party {
|
||||
ParamError.Fail(ctx, orderServiceTimeRequest)
|
||||
return
|
||||
}
|
||||
type orderMainTmp struct {
|
||||
ServiceTime string
|
||||
ProjectionServiceTime int
|
||||
}
|
||||
var orderMainTmpList []orderMainTmp
|
||||
database.Instance().Model(&models.OrderMain{}).Where("service_time >= DATE_SUB(NOW(), INTERVAL 7 DAY) and order_status != 3 and order_status != 4 and status = 1").Find(&orderMainTmpList)
|
||||
// 执行查询
|
||||
var orderMainTmp1 []struct {
|
||||
ServiceTime string
|
||||
Count int
|
||||
ProjectionServiceTime int
|
||||
}
|
||||
err := database.Instance().Raw(`
|
||||
SELECT service_time, COUNT(1) AS count, projection_service_time
|
||||
FROM order_mains
|
||||
WHERE service_time >= DATE_SUB(NOW(), INTERVAL 7 DAY)
|
||||
AND order_status != 3
|
||||
AND order_status != 4
|
||||
AND status = 1
|
||||
GROUP BY service_time
|
||||
HAVING count > 0
|
||||
`).Scan(&orderMainTmp1).Error
|
||||
if err != nil {
|
||||
ServerError.Fail(ctx, err)
|
||||
return
|
||||
}
|
||||
|
||||
var orderTimeMap = make(map[string]string)
|
||||
var orderTimeNum = make(map[string]int)
|
||||
var orderTimeCount = make(map[string]int)
|
||||
var orderProjectionTime = make(map[string]int)
|
||||
for _, val := range orderMainTmp1 {
|
||||
orderTimeCount[val.ServiceTime] = val.Count
|
||||
orderProjectionTime[val.ServiceTime] = val.ProjectionServiceTime
|
||||
}
|
||||
|
||||
for _, value := range orderMainTmpList {
|
||||
orderTimeMap[value.ServiceTime] = value.ServiceTime
|
||||
orderTimeNum[value.ServiceTime] = orderTimeNum[value.ServiceTime] + 1
|
||||
if value.ProjectionServiceTime > 0 {
|
||||
//计算出服务时间点之后累计延长时间
|
||||
date, _ := time.Parse("2006-01-02 15:04", value.ServiceTime)
|
||||
lastDate := date.Add(time.Minute * time.Duration(value.ProjectionServiceTime))
|
||||
for t := date; t.Before(lastDate); t = t.Add(time.Hour) {
|
||||
timeStr := t.Format("2006-01-02 15:04")
|
||||
if timeStr != value.ServiceTime {
|
||||
orderTimeMap[timeStr] = timeStr
|
||||
orderTimeNum[timeStr] = orderTimeNum[timeStr] + 1
|
||||
orderTimeCount[timeStr] = orderTimeCount[timeStr] + 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
serviceTime := AddrServiceMap[orderServiceTimeRequest.ServiceAddrId]
|
||||
times := strings.Split(serviceTime.Times, ",")
|
||||
carNum := len(CarMap)
|
||||
daysMap := utils.GetStrDays(7, 60, ReserveMap, orderTimeMap, carNum, orderTimeNum, CarServiceNum, times, orderTimeCount, orderProjectionTime)
|
||||
var dayHoursMap = make(map[string][]TimeObject)
|
||||
for day, values := range daysMap {
|
||||
key := day
|
||||
for _, value := range values {
|
||||
if _, ok := dayHoursMap[key]; ok {
|
||||
dayHoursMap[key] = append(dayHoursMap[key], TimeObject{
|
||||
Time: value.Time,
|
||||
Y: value.Y,
|
||||
})
|
||||
} else {
|
||||
dayHoursMap[key] = []TimeObject{{
|
||||
Time: value.Time,
|
||||
Y: value.Y,
|
||||
}}
|
||||
}
|
||||
}
|
||||
}
|
||||
Success(ctx, headerBaseInfo, OrderServiceTimeResponse{dayHoursMap})
|
||||
var orderTempList []utils.OrderTemp
|
||||
database.Instance().Model(&models.OrderMain{}).Where("service_time >= DATE_SUB(NOW(), INTERVAL 7 DAY) and order_status != 3 and order_status != 4 and status = 1").Find(&orderTempList)
|
||||
Success(ctx, headerBaseInfo, utils.ProcessOrders(orderTempList, len(CarMap), 7))
|
||||
})
|
||||
}}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user