2025-06-04 09:51:39 +08:00

83 lines
2.0 KiB
Go

package handler
import (
"encoding/json"
"fmt"
"github.com/rabbitmq/amqp091-go"
"math/rand"
"samba/pkg/log"
"samba/proto"
"samba/util/util"
"strconv"
)
func onAddClickHouseLog(_ *amqp091.Delivery, msg map[string]interface{}) {
req, err := util.MapToStructT[proto.NtfClickHouseSql](msg["p"])
if err != nil {
log.Error(err.Error())
return
}
dbs := gDBServices.Get(req.UId)
_, err = dbs.Exec(req.Sql)
if err != nil {
log.Error(fmt.Sprintf("error:%v inserting clickhouse sql: %v", err, req.Sql))
}
log.Debug(req.Sql)
return
}
func onInsertClickHouse(_ *amqp091.Delivery, msg map[string]interface{}) {
req, err := util.MapToStructT[proto.ReqInsertClickHouse](msg["p"])
if err != nil {
log.Error(err.Error())
return
}
dbs := gDBServices.Get(int64(rand.Int()))
var sql string
if sql, err = util.MapToInsertSQL(req.TableName, req.Values); err == nil {
log.Debug(sql)
_, err = dbs.Exec(sql)
}
if err != nil {
d, _ := json.Marshal(req.Values)
log.Error(fmt.Sprintf("error:%v inserting clickhouse.tablename:%v, values:%v", err, req.TableName, string(d)))
}
return
}
func onReqGetOnlineFlow(d *amqp091.Delivery, msg map[string]interface{}) {
req, err := util.MapToStructT[proto.ReqGetOnlineFlow](msg["p"])
if err != nil {
log.Error(err.Error())
return
}
log.Debug(fmt.Sprintf("onReqGetOnlineFlow date=%s, time=%d", req.Date, req.TimeStamp))
dbs := gDBServices.Get(0)
rsp := &proto.RspGetOnlineFlow{}
defer func() {
rid, _ := msg["rid"].(string)
SendMsgToRPC(d, dbs, rsp, rid, "onReqGetOnlineFlow")
}()
date, err := strconv.Atoi(req.Date)
if err != nil {
rsp.Err = err.Error()
return
}
res, err := dbs.Select("SELECT * FROM online_flow WHERE date=? AND time=?", date, req.TimeStamp)
if err != nil {
rsp.Err = err.Error()
return
}
for res.Next() {
var flow proto.OnlineFlow
if err = res.Scan(&flow.Time, &flow.Api, &flow.Date, &flow.Online, &flow.Onplay); err != nil {
rsp.Err = err.Error()
return
}
rsp.Flows = append(rsp.Flows, flow)
}
}