mh_goadmin_server/app/admin/models/system.go
2023-11-23 20:38:11 +08:00

128 lines
2.7 KiB
Go

package models
import (
"errors"
"github.com/codinl/go-logger"
"github.com/gin-gonic/gin"
orm "go-admin/common/global"
"net"
"net/http"
"strings"
)
type SysSetting struct {
SettingsId int `json:"settings_id" gorm:"primary_key;AUTO_INCREMENT"`
Name string `json:"name" gorm:"type:varchar(256);"`
Logo string `json:"logo" gorm:"type:varchar(256);"`
BaseModel
}
func (SysSetting) TableName() string {
return "sys_setting"
}
// 查询
func (s *SysSetting) Get() (create SysSetting, err error) {
result := orm.Eloquent.Table("sys_setting").First(&create)
if result.Error != nil {
err = result.Error
return
}
return create, nil
}
// 修改
func (s *SysSetting) Update() (update SysSetting, err error) {
if err = orm.Eloquent.Table("sys_setting").Model(&update).Updates(&s).Error; err != nil {
return
}
return
}
type ResponseSystemConfig struct {
Name string `json:"name" binding:"required"` // 名称
Logo string `json:"logo" binding:"required"` // 头像
}
const (
LoggingEventInventoryImport = "inventory_import"
LoggingEventCreateSupplier = "create_supplier"
LoggingEventEditSupplier = "edit_supplier"
)
type Logging struct {
Model
Machine string `json:"machine"`
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
StoreName string `json:"store_name"`
OperatorUid uint32 `json:"operator_uid" gorm:"index"`
Operator string `json:"operator"`
Function string `json:"function"`
Event string `json:"event"`
EventName string `json:"event_name"`
Ip string `json:"ip"`
}
func (m *Logging) Create(c *gin.Context) error {
defer func() {
if err := recover(); err != nil {
logger.Error("recover create logging err:", err)
return
}
}()
go func() {
if c != nil {
sysUser, err := GetSysUserByCtx(c)
if err != nil {
logger.Error("sys user err:", err)
//return err
}
ip, err := GetIP(c.Request)
if err != nil {
logger.Error("get ip err:", err)
}
m.Machine = c.Request.UserAgent()
m.StoreId = sysUser.StoreId
m.StoreName = sysUser.StoreName
m.OperatorUid = uint32(sysUser.UserId)
m.Operator = sysUser.NickName
m.Ip = ip
}
err := orm.Eloquent.Create(m).Error
if err != nil {
logger.Error("create logging err:", err)
return
}
}()
return nil
}
func GetIP(r *http.Request) (string, error) {
ip := r.Header.Get("X-Real-IP")
if net.ParseIP(ip) != nil {
return ip, nil
}
ip = r.Header.Get("X-Forward-For")
for _, i := range strings.Split(ip, ",") {
if net.ParseIP(i) != nil {
return i, nil
}
}
ip, _, err := net.SplitHostPort(r.RemoteAddr)
if err != nil {
return "", err
}
if net.ParseIP(ip) != nil {
return ip, nil
}
return "", errors.New("no valid ip found")
}