diff --git a/src/handler/proxyhandler.go b/src/handler/proxyhandler.go index fd016e4b6fb42ded8d807e81bc8a9c8f2217f82b..f3805d5d005c98d48924fb756a1437fb52d1a78c 100644 --- a/src/handler/proxyhandler.go +++ b/src/handler/proxyhandler.go @@ -63,11 +63,13 @@ func Proxy(c *gin.Context) { res = service.SensitiveFilter(proxyData, res) } //计次 - err = service.CallCounts(proxyData) - if err != nil { - Return(nil, err, resp) - return nil - } + go service.CallCounts(proxyData) + //err = service.CallCounts(proxyData) + //if err != nil { + // Return(nil, err, resp) + // return nil + //} + ////个人申请调用计次 //err = service.ApplyCallCounts(proxyData) //if err != nil { @@ -90,6 +92,8 @@ func getProxyURL(proxyData model.ProxyData, req *http.Request) string { if rawQuery == "" { if proxyData.Name == "时空服务" { result = realPath + "?f=json" + } else { + result = realPath } } else { result = realPath + "?" + rawQuery diff --git a/src/model/tables/daliy.go b/src/model/tables/daliy.go new file mode 100644 index 0000000000000000000000000000000000000000..b069775018d540e6a3f4f248421a2dc8c4355335 --- /dev/null +++ b/src/model/tables/daliy.go @@ -0,0 +1,11 @@ +package tables + +type Service_daliy_count struct { + ServiceId int `json:"service_id"` + Date string `json:"date" ` + Count int `json:"count" ` +} + +func (*Service_daliy_count) TableName() string { + return "service_daliy_count" +} diff --git a/src/service/field.go b/src/service/field.go index 697f4e4558c1713bb094e739b748fe2cc429c8dc..82de222a7e7558f9b6a4a74710ee76a372db5d37 100644 --- a/src/service/field.go +++ b/src/service/field.go @@ -184,13 +184,35 @@ func CallCounts(proxyData model.ProxyData) (err error) { if err != nil { return } + date := time.Now().Format(config.LocalDateFormat) + session := db.NewSession() + session.Begin() sql1 := fmt.Sprintf(`BEGIN WORK; LOCK TABLE service IN SHARE ROW EXCLUSIVE MODE; update service set request_count =request_count+1 where id = %d; update service_apply set request_count =request_count+1 where id = %d; COMMIT WORK; `, proxyData.Service_id, proxyData.Apply_id) - _, err = db.SQL(sql1).Execute() + _, err = session.SQL(sql1).Execute() + if err != nil { + fmt.Println("error******service、service_apply更新失败:" + err.Error()) + return + } + sql := fmt.Sprintf(`BEGIN WORK; +LOCK TABLE service_daliy_count IN SHARE ROW EXCLUSIVE MODE; +INSERT INTO service_daliy_count ( service_id,date,count) VALUES +(%d,'%s',%d) ON conflict (service_id,date) DO +UPDATE SET service_id =%d ,date='%s',count=(service_daliy_count.count+1); +COMMIT WORK; +`, proxyData.Service_id, date, 1, proxyData.Service_id, date) + _, err = session.SQL(sql).Execute() + if err != nil { + fmt.Println("error******service_daliy_count更新失败:" + err.Error()) + session.Rollback() + return + } + session.Commit() + //查询service_daliy_count 表有更新没有插入 return }