-
Notifications
You must be signed in to change notification settings - Fork 0
/
hera.go
157 lines (136 loc) · 5.03 KB
/
hera.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
package apiServer
import (
"encoding/json"
"fmt"
"net/http"
commonfunc "github.com/jin123/mocke-server/src/common"
)
type ApiResult struct {
Errno int `json:"errno"`
Errmsg string `json:"errmsg"`
Data []interface{} `json:"data"`
}
var apiRes ApiResult
type hera struct {
MethodMap map[string]string
}
func CreateInstance() *hera {
return new(hera)
}
func (my *hera) SetMethod() {
my.MethodMap = map[string]string{
"productGetHotelsDetailindex": "GetHotelsDetail",
"productGetAllHotelindex": "GetAllHotel",
"productDoubleCheckbeforeCheckRoomType": "DoubleCheckBeforeCheckRoomType",
"productDoubleCheckbeforeCreateOrder": "DoubleCheckBeforeCreateOrder",
"productGetRoomPriceOneHotelindex": "GetRoomPriceOneHotel",
"productGetMultiHotelRoomStockindex": "GetMultiHotelRoomStock",
}
}
//获取酒店详情
func (my *hera) GetHotelsDetail(r *http.Request, jsonStr string) string {
return jsonStr
}
//标准价下单之前对房量和房价进行验证(酒店下所有房型),频率无限制
func (my *hera) DoubleCheckBeforeCheckRoomType(r *http.Request, jsonStr string) string {
//dates := commonfunc.GetBetweenDates(r.PostFormValue("check_in"), r.PostFormValue("check_out"))
str := my.FormatApiResponsV2(r.PostFormValue("check_in"), r.PostFormValue("check_out"), "room_count_detail", "biz_date", jsonStr)
return str
}
//标准价下单之前对房量和房价进行验证 ,频率无限制
func (my *hera) DoubleCheckBeforeCreateOrder(r *http.Request, jsonStr string) string {
dates := commonfunc.GetBetweenDates(r.PostFormValue("check_in"), r.PostFormValue("check_out"))
responseData := make([]interface{}, len(dates))
apiResultMap := commonfunc.JsonToMap(jsonStr)
allData := apiResultMap.(map[string]interface{})["data"]
detailArrs := allData.(map[string]interface{})["room_price"]
detailArrs = detailArrs.([]interface{})[0]
for i, selectDate := range dates {
newMaps := make(map[string]interface{})
for key, value := range detailArrs.(map[string]interface{}) {
newMaps[key] = value
}
newMaps["biz_date"] = selectDate + " 00:00:00"
responseData[i] = newMaps
}
allData.(map[string]interface{})["room_price"] = responseData
apiResultMap.(map[string]interface{})["data"] = allData
jsonStr = commonfunc.MapToJson(apiResultMap)
//fmt.Println("apiResultMap=", apiResultMap)
return jsonStr
}
//通用的格式化时间的数据V1
func (my *hera) FormatApiResponsV1(startTime string, endTime string, fileld string, jsonStr string) string {
dates := commonfunc.GetBetweenDates(startTime, endTime)
responseData := make([]interface{}, len(dates))
err := json.Unmarshal([]byte(jsonStr), &apiRes)
if err != nil {
fmt.Println("json数据解析失败: ", err)
}
apiData := apiRes.Data
template := apiData[0]
for i, selectDate := range dates {
maps := template.(map[string]interface{})
newMaps := make(map[string]interface{})
for key, value := range maps {
newMaps[key] = value
}
newMaps[fileld] = selectDate + " 00:00:00"
responseData[i] = newMaps
}
fmt.Println("responseData=", responseData)
apiRes.Data = responseData
newResponse, err := json.Marshal(apiRes)
if err != nil {
fmt.Println("JSON ERR:", err)
}
jsonStr = string(newResponse)
fmt.Println(jsonStr)
return jsonStr
}
//通用的格式化时间的数据V2 field 要格式化的字段,secondField是date下的二维map字段
func (my *hera) FormatApiResponsV2(startTime string, endTime string, secondField string, fileld string, jsonStr string) string {
dates := commonfunc.GetBetweenDates(startTime, endTime)
err := json.Unmarshal([]byte(jsonStr), &apiRes)
if err != nil {
fmt.Println(jsonStr)
fmt.Println("json数据解析失败v2: ", err)
return ""
}
apiData := apiRes.Data
dataMap := apiData[0]
fmt.Println("dataMap=", dataMap)
roomDetailMap := dataMap.(map[string]interface{})[secondField]
eachRoomDetailMap := roomDetailMap.([]interface{})[0]
roomCountDetail := make([]interface{}, len(dates))
for i, selectDate := range dates {
newMaps := make(map[string]interface{})
for key, value := range eachRoomDetailMap.(map[string]interface{}) {
newMaps[key] = value
}
newMaps[fileld] = selectDate + " 00:00:00"
roomCountDetail[i] = newMaps
}
dataMap.(map[string]interface{})["room_count_detail"] = roomCountDetail
apiData[0] = dataMap
apiRes.Data = apiData
newResponse, err := json.Marshal(apiRes)
if err != nil {
fmt.Println("JSON ERR:", err)
}
jsonStr = string(newResponse)
fmt.Println(jsonStr)
return jsonStr
}
//获取酒店房型价格
func (my *hera) GetRoomPriceOneHotel(r *http.Request, jsonStr string) string {
return my.FormatApiResponsV1(r.PostFormValue("start_time"), r.PostFormValue("end_time"), "biz_date", jsonStr)
}
//获取酒店的房型的库存
func (my *hera) GetMultiHotelRoomStock(r *http.Request, jsonStr string) string {
return my.FormatApiResponsV1(r.PostFormValue("start_time"), r.PostFormValue("end_time"), "biz_date", jsonStr)
}
//返回所有酒店id集合数据暂时不动
func (my *hera) GetAllHotel(r *http.Request, jsonStr1 string) string {
return jsonStr1
}