128 lines
2.7 KiB
Go
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")
|
|
}
|