From decd1aecacd0290652699442eb6e4dbee4805586 Mon Sep 17 00:00:00 2001 From: zyd Date: Mon, 29 Jun 2020 11:32:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8D=8F=E7=A8=8B=EF=BC=8C?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=A1=A8=E5=8A=A0=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/handler/proxyhandler.go | 14 +++++++++----- src/model/tables/daliy.go | 11 +++++++++++ src/service/field.go | 24 +++++++++++++++++++++++- 3 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 src/model/tables/daliy.go diff --git a/src/handler/proxyhandler.go b/src/handler/proxyhandler.go index fd016e4..f3805d5 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 0000000..b069775 --- /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 697f4e4..82de222 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 } -- 2.26.0