Add racs/GetFailList API
This commit is contained in:
parent
35af18517c
commit
85ea3a719d
18
APIServer.go
18
APIServer.go
@ -189,6 +189,7 @@ func startSvc() {
|
|||||||
http.HandleFunc("/getuutinfo/", handleGetUutInfo)
|
http.HandleFunc("/getuutinfo/", handleGetUutInfo)
|
||||||
http.HandleFunc("/racs/inbound/", handleRacsInbound)
|
http.HandleFunc("/racs/inbound/", handleRacsInbound)
|
||||||
http.HandleFunc("/racs/outbound/", handleRacsOutbound)
|
http.HandleFunc("/racs/outbound/", handleRacsOutbound)
|
||||||
|
http.HandleFunc("/racs/getfaillist/", handleRacsGetFailList)
|
||||||
logger.Printf("[MSG] Starting HTTP Server On Port: %s\r\n", cfg.Settings.ListenPort)
|
logger.Printf("[MSG] Starting HTTP Server On Port: %s\r\n", cfg.Settings.ListenPort)
|
||||||
err := http.ListenAndServe(":"+cfg.Settings.ListenPort, nil)
|
err := http.ListenAndServe(":"+cfg.Settings.ListenPort, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -569,6 +570,23 @@ func handleRacsOutbound(w http.ResponseWriter, r *http.Request) {
|
|||||||
fmt.Fprintf(w, "%v", strings.ReplaceAll(fmt.Sprintf("%#v", rst), "map[string]string", ""))
|
fmt.Fprintf(w, "%v", strings.ReplaceAll(fmt.Sprintf("%#v", rst), "map[string]string", ""))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func handleRacsGetFailList(w http.ResponseWriter, r *http.Request) {
|
||||||
|
defer r.Body.Close()
|
||||||
|
if r.RequestURI == "/favicon.ico" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
addr := strings.Split(r.RemoteAddr, ":")[0]
|
||||||
|
uri := r.RequestURI
|
||||||
|
racs := new(racs.RACS)
|
||||||
|
rst := racs.GetFailList(cfg, logger, addr, uri)
|
||||||
|
rpl := strings.NewReplacer(
|
||||||
|
"map[string]string", "",
|
||||||
|
"map[int]map[string]string", "",
|
||||||
|
)
|
||||||
|
w.WriteHeader(http.StatusOK)
|
||||||
|
fmt.Fprintf(w, "%v", rpl.Replace(fmt.Sprintf("%s", rst)))
|
||||||
|
}
|
||||||
|
|
||||||
func parseReqParams(r *http.Request) (map[string]string, error) {
|
func parseReqParams(r *http.Request) (map[string]string, error) {
|
||||||
params := make(map[string]string, 0)
|
params := make(map[string]string, 0)
|
||||||
if err := r.ParseForm(); err != nil {
|
if err := r.ParseForm(); err != nil {
|
||||||
|
@ -13,10 +13,11 @@ MySQL:
|
|||||||
Database: ewsv3_f715
|
Database: ewsv3_f715
|
||||||
User: apisvc
|
User: apisvc
|
||||||
Password: wcqte
|
Password: wcqte
|
||||||
StorageTable: racs
|
|
||||||
IssuesTable: issues
|
IssuesTable: issues
|
||||||
IssuesView: v_issues
|
IssuesView: v_issues
|
||||||
OfflineView: v_offline
|
OfflineView: v_offline
|
||||||
|
StorageTable: racs
|
||||||
|
GetFailListSQL: SELECT * FROM v_racs
|
||||||
Remark:
|
Remark:
|
||||||
Columns_UutInfo: [usn,mac,ipaddr,status,message,first_ack,last_ack,last_change]
|
Columns_UutInfo: [usn,mac,ipaddr,status,message,first_ack,last_ack,last_change]
|
||||||
Columns_LocInfo: [mac,line,col,row,num,last_found]
|
Columns_LocInfo: [mac,line,col,row,num,last_found]
|
||||||
|
@ -22,7 +22,8 @@ type MySQL struct {
|
|||||||
User string `yaml:"User"`
|
User string `yaml:"User"`
|
||||||
Password string `yaml:"Password"`
|
Password string `yaml:"Password"`
|
||||||
IssuesTable string `yaml:"IssuesTable"`
|
IssuesTable string `yaml:"IssuesTable"`
|
||||||
StorageTable string `yaml:"StorageTable"`
|
|
||||||
IssuesView string `yaml:"IssuesView"`
|
IssuesView string `yaml:"IssuesView"`
|
||||||
OfflineView string `yaml:"OfflineView"`
|
OfflineView string `yaml:"OfflineView"`
|
||||||
|
StorageTable string `yaml:"StorageTable"`
|
||||||
|
GetFailListSQL string `yaml:"GetFailListSQL"`
|
||||||
}
|
}
|
||||||
|
67
racs/racs.go
67
racs/racs.go
@ -3,6 +3,7 @@ package racs
|
|||||||
import (
|
import (
|
||||||
"APIServer/cnf"
|
"APIServer/cnf"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
@ -35,6 +36,7 @@ func (r *RACS) Inbound(cfg cnf.Cfg, logger *log.Logger, addr string, uri string,
|
|||||||
logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, rst["ErrMsg"])
|
logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, rst["ErrMsg"])
|
||||||
return rst
|
return rst
|
||||||
}
|
}
|
||||||
|
defer dbo.Close()
|
||||||
dml := fmt.Sprintf(`INSERT INTO %s
|
dml := fmt.Sprintf(`INSERT INTO %s
|
||||||
(usn,storage,update_time,mark1,mark2,mark3) VALUES ('%s','%s',%s,'%s','%s','%s')
|
(usn,storage,update_time,mark1,mark2,mark3) VALUES ('%s','%s',%s,'%s','%s','%s')
|
||||||
ON DUPLICATE KEY UPDATE
|
ON DUPLICATE KEY UPDATE
|
||||||
@ -77,6 +79,7 @@ func (r *RACS) Outbound(cfg cnf.Cfg, logger *log.Logger, addr string, uri string
|
|||||||
logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, rst["ErrMsg"])
|
logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, rst["ErrMsg"])
|
||||||
return rst
|
return rst
|
||||||
}
|
}
|
||||||
|
defer dbo.Close()
|
||||||
dml := fmt.Sprintf(`INSERT INTO %s
|
dml := fmt.Sprintf(`INSERT INTO %s
|
||||||
(usn,storage,update_time,mark1,mark2,mark3) VALUES ('%s','%s',%s,'%s','%s','%s')
|
(usn,storage,update_time,mark1,mark2,mark3) VALUES ('%s','%s',%s,'%s','%s','%s')
|
||||||
ON DUPLICATE KEY UPDATE
|
ON DUPLICATE KEY UPDATE
|
||||||
@ -102,3 +105,67 @@ func (r *RACS) Outbound(cfg cnf.Cfg, logger *log.Logger, addr string, uri string
|
|||||||
}
|
}
|
||||||
return rst
|
return rst
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *RACS) GetFailList(cfg cnf.Cfg, logger *log.Logger, addr string, uri string) interface{} {
|
||||||
|
rst := map[string]interface{}{"Result": "OK", "ErrMsg": ""}
|
||||||
|
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s",
|
||||||
|
cfg.MySQL.User,
|
||||||
|
cfg.MySQL.Password,
|
||||||
|
cfg.MySQL.Server,
|
||||||
|
cfg.MySQL.Port,
|
||||||
|
cfg.MySQL.Database,
|
||||||
|
)
|
||||||
|
dbo, err := sql.Open("mysql", dsn)
|
||||||
|
if err != nil {
|
||||||
|
rst["Result"] = "NG"
|
||||||
|
rst["ErrMsg"] = "racs.GetFailList: " + err.Error()
|
||||||
|
logger.Printf("[ERR] %s; %s; %s\r\n", addr, uri, rst["ErrMsg"])
|
||||||
|
return rst
|
||||||
|
}
|
||||||
|
defer dbo.Close()
|
||||||
|
dml := cfg.MySQL.GetFailListSQL
|
||||||
|
qry, err := dbo.Query(dml)
|
||||||
|
if err != nil {
|
||||||
|
rst["Result"] = "NG"
|
||||||
|
rst["ErrMsg"] = "racs.GetFailList: " + err.Error()
|
||||||
|
logger.Printf("[ERR] %s; %s; %s\r\n", addr, uri, rst["ErrMsg"])
|
||||||
|
return rst
|
||||||
|
}
|
||||||
|
cols, err := qry.Columns()
|
||||||
|
if err != nil {
|
||||||
|
rst["Result"] = "NG"
|
||||||
|
rst["ErrMsg"] = "racs.GetFailList: " + err.Error()
|
||||||
|
logger.Printf("[ERR] %s; %s; %s\r\n", addr, uri, rst["ErrMsg"])
|
||||||
|
return rst
|
||||||
|
}
|
||||||
|
vals := make([][]byte, len(cols))
|
||||||
|
scans := make([]interface{}, len(cols))
|
||||||
|
for v := range vals {
|
||||||
|
scans[v] = &vals[v]
|
||||||
|
}
|
||||||
|
|
||||||
|
list := make([]map[string]string, 0)
|
||||||
|
for qry.Next() {
|
||||||
|
if err := qry.Scan(scans...); err != nil {
|
||||||
|
rst["Result"] = "NG"
|
||||||
|
rst["ErrMsg"] = "racs.GetFailList: " + err.Error()
|
||||||
|
logger.Printf("[ERR] %s; %s; %s\r\n", addr, uri, rst["ErrMsg"])
|
||||||
|
return rst
|
||||||
|
}
|
||||||
|
row := make(map[string]string)
|
||||||
|
for k, v := range vals {
|
||||||
|
key := cols[k]
|
||||||
|
row[key] = string(v)
|
||||||
|
}
|
||||||
|
list = append(list, row)
|
||||||
|
}
|
||||||
|
rst["List"] = list
|
||||||
|
jsonData, err := json.Marshal(rst)
|
||||||
|
if err != nil {
|
||||||
|
rst["Result"] = "NG"
|
||||||
|
rst["ErrMsg"] = "racs.GetFailList: " + err.Error()
|
||||||
|
logger.Printf("[ERR] %s; %s; %s\r\n", addr, uri, rst["ErrMsg"])
|
||||||
|
return rst
|
||||||
|
}
|
||||||
|
return jsonData
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user