refactor: reorganize modules and add Linux build tooling
This commit is contained in:
10
module/base/logs/internal/logic/hello/ping.go
Normal file
10
module/base/logs/internal/logic/hello/ping.go
Normal file
@@ -0,0 +1,10 @@
|
||||
package hello
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// Ping
|
||||
func Ping(ctx *gin.Context) {
|
||||
ctx.JSON(200, gin.H{"message": "Pong"})
|
||||
}
|
||||
47
module/base/logs/internal/logic/log/create.go
Normal file
47
module/base/logs/internal/logic/log/create.go
Normal file
@@ -0,0 +1,47 @@
|
||||
package log
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"log"
|
||||
"strings"
|
||||
|
||||
"bsm/full/module/base/logs/internal/impl"
|
||||
"bsm/full/module/base/logs/internal/models"
|
||||
"git.apinb.com/bsm-sdk/core/infra"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func Create(c *gin.Context) {
|
||||
var (
|
||||
request = make([]*models.LogData, 0)
|
||||
)
|
||||
|
||||
// 验证请求IP,禁止公网网段提交
|
||||
ip := c.ClientIP()
|
||||
if ip == "127.0.0.1" || ip == "localhost" || strings.HasPrefix(ip, "10.") || strings.HasPrefix(ip, "172.") || strings.HasPrefix(ip, "192.") {
|
||||
log.Printf("request ip is not allowed")
|
||||
err := errors.New("request ip is not allowed")
|
||||
infra.Response.Error(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
err := c.BindJSON(&request)
|
||||
if err != nil {
|
||||
log.Printf("parse json error: %v", err)
|
||||
infra.Response.Error(c, err)
|
||||
return
|
||||
}
|
||||
if len(request) == 0 {
|
||||
log.Printf("request data is empty")
|
||||
infra.Response.Error(c, errors.New("request data is empty"))
|
||||
return
|
||||
}
|
||||
|
||||
if err := impl.DBService.Model(&models.LogData{}).Create(&request).Error; err != nil {
|
||||
log.Printf("save log data error: %v", err)
|
||||
infra.Response.Error(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
infra.Response.Success(c, "")
|
||||
}
|
||||
65
module/base/logs/internal/logic/log/fetch.go
Normal file
65
module/base/logs/internal/logic/log/fetch.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package log
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"bsm/full/module/base/logs/internal/impl"
|
||||
"bsm/full/module/base/logs/internal/models"
|
||||
"git.apinb.com/bsm-sdk/core/errcode"
|
||||
"git.apinb.com/bsm-sdk/core/infra"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
var (
|
||||
DefaultPage = 1
|
||||
DefaultSize = 50
|
||||
)
|
||||
|
||||
func LogFetch(c *gin.Context) {
|
||||
var request map[string]any
|
||||
err := c.BindJSON(&request)
|
||||
if err != nil {
|
||||
log.Printf("解析json异常: %v", err)
|
||||
infra.Response.Error(c, errcode.ErrJsonUnmarshal)
|
||||
return
|
||||
}
|
||||
|
||||
var (
|
||||
data []any
|
||||
count int64
|
||||
tx = impl.DBService.Model(&models.LogData{})
|
||||
)
|
||||
|
||||
var size int
|
||||
var page int
|
||||
if request["op_name"] != "" {
|
||||
tx.Where("op_name like ?", "%"+request["op_name"].(string)+"%")
|
||||
}
|
||||
if request["service"] != "" {
|
||||
tx.Where("service like ?", "%"+request["service"].(string)+"%")
|
||||
}
|
||||
if request["op_ip"] != "" {
|
||||
tx.Where("op_ip = ?", "%"+request["ip"].(string)+"%")
|
||||
}
|
||||
if request["level"] != "" {
|
||||
tx.Where("level = ?", request["level"].(int))
|
||||
}
|
||||
|
||||
if page <= 0 {
|
||||
page = DefaultPage
|
||||
}
|
||||
if size <= 0 {
|
||||
size = DefaultSize
|
||||
}
|
||||
|
||||
if err := tx.Count(&count).Limit(size).Offset((page - 1) * size).Find(&data).Error; err != nil {
|
||||
log.Printf("查询异常: %v", err)
|
||||
infra.Response.Error(c, errcode.ErrDB)
|
||||
return
|
||||
}
|
||||
|
||||
infra.Response.Success(c, map[string]any{
|
||||
"data": data,
|
||||
"total": count,
|
||||
})
|
||||
}
|
||||
34
module/base/logs/internal/logic/log/total.go
Normal file
34
module/base/logs/internal/logic/log/total.go
Normal file
@@ -0,0 +1,34 @@
|
||||
package log
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"bsm/full/module/base/logs/internal/impl"
|
||||
"bsm/full/module/base/logs/internal/models"
|
||||
"git.apinb.com/bsm-sdk/core/errcode"
|
||||
"git.apinb.com/bsm-sdk/core/infra"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func Total(c *gin.Context) {
|
||||
var request map[string]any
|
||||
err := c.BindJSON(&request)
|
||||
if err != nil {
|
||||
log.Printf("解析json异常: %v", err)
|
||||
infra.Response.Error(c, errcode.ErrJsonUnmarshal)
|
||||
return
|
||||
}
|
||||
|
||||
tx := impl.DBService.Model(&models.LogData{})
|
||||
if request["service"] != "" {
|
||||
tx.Where("service = ?", request["service"])
|
||||
}
|
||||
|
||||
var result map[string]any
|
||||
if err := tx.Select("level", "count(level)").Group("level").First(&result).Error; err != nil {
|
||||
infra.Response.Error(c, errcode.ErrDB)
|
||||
return
|
||||
}
|
||||
|
||||
infra.Response.Success(c, result)
|
||||
}
|
||||
Reference in New Issue
Block a user