Commit decd1aec authored by 张宇迪's avatar 张宇迪

添加协程,更新表加锁

parent 3dc9a289
......@@ -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
......
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"
}
......@@ -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
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment