新增逻辑 根据车辆数量及单次服务数量来决定时间点是否可预约

This commit is contained in:
yan.y
2024-04-09 11:32:10 +08:00
parent 5421ae8a87
commit 74ae25bcd0
7 changed files with 181 additions and 0 deletions
+8
View File
@@ -1 +1,9 @@
package api
import "pet-house.com/business/models"
var CarServiceNum = 2
func GetCarInfo(carId int) models.ServiceCar {
return CarMap[carId]
}
+16
View File
@@ -112,6 +112,8 @@ var PetBaseInfoMap map[int]models.PetBaseInfo
var ServiceAddrMap map[int64]models.ServiceAddr
var PetGoodsMap map[string][]models.PetGoods
var GoodsMap map[int64]models.Goods
var CarMap map[int]models.ServiceCar
var ReserveMap map[string]models.ReserveTimeFilter
func DataInit() {
//--------------------------------------------------宠物基础信息数据---------------------------------------------------------
@@ -150,6 +152,20 @@ func DataInit() {
GoodsMap[value.Id] = value
}
zap_server.ZAPLOG.Info("dataInit GoodsMap : ", zap.Any("GoodsMap", GoodsMap))
var carList []models.ServiceCar
database.Instance().Model(&models.ServiceCar{}).Find(&carList)
CarMap = make(map[int]models.ServiceCar)
for _, value := range carList {
CarMap[value.Id] = value
}
zap_server.ZAPLOG.Info("dataInit CarMap : ", zap.Any("CarMap", CarMap))
var timesList []models.ReserveTimeFilter
database.Instance().Model(&models.ReserveTimeFilter{}).Find(&timesList)
ReserveMap = make(map[string]models.ReserveTimeFilter)
for _, value := range timesList {
ReserveMap[value.Content] = value
}
zap_server.ZAPLOG.Info("dataInit ReserveMap : ", zap.Any("ReserveMap", CarMap))
}
func DataCacheJob() {
+1
View File
@@ -41,6 +41,7 @@ func ModuleInit() {
&models.ServiceCarUser{},
&models.ServiceUserMark{},
&models.ServiceUserMarkRecord{},
&models.ReserveTimeFilter{},
)
DataInit()
DataCacheJob()
+42
View File
@@ -7,6 +7,7 @@ import (
"go.uber.org/zap"
"io"
"pet-house.com/business/models"
"pet-house.com/business/utils"
"pet-house.com/core/server/database"
"pet-house.com/core/server/web/web_iris"
"pet-house.com/core/server/zap_server"
@@ -221,11 +222,52 @@ func (p DefParty) orderList() web_iris.Party {
}}
}
type TimeObject struct {
Time string `json:"time"`
Y bool `json:"y"`
}
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) {
index.Post(OrderBase+"/orderServiceTime", func(ctx *context.Context) {
headerBaseInfo := GetHeaderBaseInfo(ctx)
type orderMainTmp struct {
ServiceTime string
}
var orderMainTmpList []orderMainTmp
database.Instance().Model(&models.OrderMain{}).Where("service_time >= DATE_SUB(NOW(), INTERVAL 7 DAY) and status != 3 and status != 5").Find(&orderMainTmpList)
var orderTimeMap = make(map[string]string)
var orderTimeNum = make(map[string]int)
for _, value := range orderMainTmpList {
orderTimeMap[value.ServiceTime] = value.ServiceTime
orderTimeNum[value.ServiceTime] = orderTimeNum[value.ServiceTime] + 1
}
carNum := len(CarMap)
daysMap := utils.GetStrDays(7, 30, ReserveMap, orderTimeMap, carNum, orderTimeNum, 2)
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})
})
}}
}