新增逻辑 根据车辆数量及单次服务数量来决定时间点是否可预约
This commit is contained in:
@@ -1 +1,9 @@
|
||||
package api
|
||||
|
||||
import "pet-house.com/business/models"
|
||||
|
||||
var CarServiceNum = 2
|
||||
|
||||
func GetCarInfo(carId int) models.ServiceCar {
|
||||
return CarMap[carId]
|
||||
}
|
||||
|
||||
@@ -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(×List)
|
||||
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() {
|
||||
|
||||
@@ -41,6 +41,7 @@ func ModuleInit() {
|
||||
&models.ServiceCarUser{},
|
||||
&models.ServiceUserMark{},
|
||||
&models.ServiceUserMarkRecord{},
|
||||
&models.ReserveTimeFilter{},
|
||||
)
|
||||
DataInit()
|
||||
DataCacheJob()
|
||||
|
||||
@@ -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})
|
||||
})
|
||||
}}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user