diff --git a/app/admin/apis/system/settings.go b/app/admin/apis/system/settings.go index 176cfb60..7972e286 100644 --- a/app/admin/apis/system/settings.go +++ b/app/admin/apis/system/settings.go @@ -1,35 +1,55 @@ package system import ( - "errors" "fmt" + "go-admin/app/admin/service" + "go-admin/app/admin/service/dto" + "go-admin/common/apis" + "go-admin/common/log" + "net/http" "strings" "github.com/gin-gonic/gin" "go-admin/app/admin/models" "go-admin/tools" - "go-admin/tools/app" ) +type SysSetting struct { + apis.Api +} + // @Summary 查询系统信息 // @Description 获取JSON // @Tags 系统信息 // @Success 200 {string} string "{"code": 200, "message": "添加成功"}" // @Success 200 {string} string "{"code": -1, "message": "添加失败"}" // @Router /api/v1/setting [get] -func GetSetting(c *gin.Context) { - var s models.SysSetting - r, e := s.Get() +func (e *SysSetting) GetSetting(c *gin.Context) { + msgID := tools.GenerateMsgIDFromContext(c) + db, err := tools.GetOrm(c) + if err != nil { + log.Error(err) + return + } - if r.Logo != "" { - if !strings.HasPrefix(r.Logo, "http") { - r.Logo = fmt.Sprintf("http://%s/%s", c.Request.Host, r.Logo) + sysSettingService := service.SysSetting{} + sysSettingService.MsgID=msgID + sysSettingService.Orm=db + var model = models.SysSetting{} + err = sysSettingService.GetSysSetting(&model) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "查询失败") + return + } + + if model.Logo != "" { + if !strings.HasPrefix(model.Logo, "http") { + model.Logo = fmt.Sprintf("http://%s/%s", c.Request.Host, model.Logo) } } - tools.HasError(e, "查询失败", 500) - app.OK(c, r, "查询成功") + e.OK(c, model, "查询成功") } // @Summary 更新或提交系统信息 @@ -39,30 +59,41 @@ func GetSetting(c *gin.Context) { // @Success 200 {string} string "{"code": 200, "message": "添加成功"}" // @Success 200 {string} string "{"code": -1, "message": "添加失败"}" // @Router /api/v1/system/setting [post] -func CreateSetting(c *gin.Context) { - var s models.ResponseSystemConfig - if err := c.ShouldBind(&s); err != nil { - app.Error(c, 200, errors.New("缺少必要参数"), "") +func (e *SysSetting) CreateOrUpdateSetting(c *gin.Context) { + control := new(dto.SysSettingControl) + msgID := tools.GenerateMsgIDFromContext(c) + db, err := tools.GetOrm(c) + if err != nil { + log.Error(err) return } - var sModel models.SysSetting - sModel.Logo = s.Logo - sModel.Name = s.Name - sModel.SettingsId = s.SettingsId - - a, e := sModel.Update() - if e != nil { - app.Error(c, 200, e, "") + //更新操作 + err = control.Bind(c) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") + return + } + object, err := control.Generate() + if err != nil { + e.Error(c, http.StatusInternalServerError, err, "模型生成失败") return } - if a.Logo != "" { - if !strings.HasPrefix(a.Logo, "http") { - a.Logo = fmt.Sprintf("http://%s/%s", c.Request.Host, a.Logo) + sysSettingService := service.SysSetting{} + sysSettingService.MsgID=msgID + sysSettingService.Orm=db + err = sysSettingService.UpdateSysSetting(object) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "更新失败") + return + } + + + if object.Logo != "" { + if !strings.HasPrefix(object.Logo, "http") { + object.Logo = fmt.Sprintf("http://%s/%s", c.Request.Host, object.Logo) } } - - app.OK(c, a, "提交成功") - + e.OK(c, object, "提交成功") } diff --git a/app/admin/apis/system/sys_config/sys_config.go b/app/admin/apis/system/sys_config/sys_config.go index 1b9c4a5d..27e95e53 100644 --- a/app/admin/apis/system/sys_config/sys_config.go +++ b/app/admin/apis/system/sys_config/sys_config.go @@ -2,7 +2,9 @@ package sys_config import ( "github.com/gin-gonic/gin" + "net/http" + "go-admin/app/admin/models/system" "go-admin/app/admin/service" "go-admin/app/admin/service/dto" "go-admin/common/apis" @@ -15,6 +17,202 @@ type SysConfig struct { apis.Api } +func (e *SysConfig) GetSysConfigList(c *gin.Context) { + msgID := tools.GenerateMsgIDFromContext(c) + d := new(dto.SysConfigSearch) + db, err := tools.GetOrm(c) + if err != nil { + log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err) + app.Error(c, 500, err, "Orm获取失败") + return + } + + //查询列表 + err = d.Bind(c) + if err != nil { + log.Errorf("msgID[%s] 参数验证失败, error:%s", msgID, err) + app.Error(c, 500, err, "参数验证失败") + return + } + + list := make([]system.SysConfig, 0) + var count int64 + serviceStudent := service.SysConfig{} + serviceStudent.MsgID = msgID + serviceStudent.Orm = db + err = serviceStudent.GetSysConfigPage(d, &list, &count) + if err != nil { + log.Errorf("msgID[%s] GetSysConfigPage 查询失败, error:%s", msgID, err) + app.Error(c, 500, err, "查询失败") + return + } + e.PageOK(c, list, int(count), d.GetPageIndex(), d.GetPageSize(), "查询成功") +} + +func (e *SysConfig) GetSysConfig(c *gin.Context) { + msgID := tools.GenerateMsgIDFromContext(c) + control := new(dto.SysConfigById) + db, err := tools.GetOrm(c) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "Orm获取失败") + log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err) + app.Error(c, 500, err, "Orm获取失败") + return + } + //查看详情 + err = control.Bind(c) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") + log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err) + app.Error(c, 500, err, "Orm获取失败") + return + } + var object system.SysConfig + + serviceSysLoginLog := service.SysConfig{} + serviceSysLoginLog.MsgID = msgID + serviceSysLoginLog.Orm = db + err = serviceSysLoginLog.GetSysConfig(control, &object) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "查询失败") + log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err) + app.Error(c, 500, err, "Orm获取失败") + return + } + + e.OK(c, object, "查看成功") +} + +func (e *SysConfig) InsertSysConfig(c *gin.Context) { + msgID := tools.GenerateMsgIDFromContext(c) + control := new(dto.SysConfigControl) + db, err := tools.GetOrm(c) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "Orm获取失败") + log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err) + app.Error(c, 500, err, "Orm获取失败") + return + } + + //新增操作 + err = control.Bind(c) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") + log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err) + app.Error(c, 500, err, "Orm获取失败") + return + } + object, err := control.Generate() + if err != nil { + e.Error(c, http.StatusInternalServerError, err, "模型生成失败") + log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err) + app.Error(c, 500, err, "Orm获取失败") + return + } + // 设置创建人 + object.SetCreateBy(tools.GetUserId(c)) + + serviceSysLoginLog := service.SysConfig{} + serviceSysLoginLog.Orm = db + serviceSysLoginLog.MsgID = msgID + err = serviceSysLoginLog.InsertSysConfig(object) + if err != nil { + log.Error(err) + e.Error(c, http.StatusInternalServerError, err, "创建失败") + log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err) + app.Error(c, 500, err, "Orm获取失败") + return + } + + e.OK(c, object.GetId(), "创建成功") +} + +func (e *SysConfig) UpdateSysConfig(c *gin.Context) { + msgID := tools.GenerateMsgIDFromContext(c) + control := new(dto.SysConfigControl) + db, err := tools.GetOrm(c) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "Orm获取失败") + log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err) + app.Error(c, 500, err, "Orm获取失败") + return + } + + //更新操作 + err = control.Bind(c) + + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") + log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err) + app.Error(c, 500, err, "Orm获取失败") + return + } + object, err := control.Generate() + if err != nil { + e.Error(c, http.StatusInternalServerError, err, "模型生成失败") + log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err) + app.Error(c, 500, err, "Orm获取失败") + return + } + object.SetUpdateBy(tools.GetUserId(c)) + + serviceSysLoginLog := service.SysConfig{} + serviceSysLoginLog.Orm = db + serviceSysLoginLog.MsgID = msgID + err = serviceSysLoginLog.UpdateSysConfig(object) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "更新失败") + log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err) + app.Error(c, 500, err, "Orm获取失败") + return + } + e.OK(c, object.GetId(), "更新成功") +} + +func (e *SysConfig) DeleteSysConfig(c *gin.Context) { + msgID := tools.GenerateMsgIDFromContext(c) + control := new(dto.SysConfigById) + db, err := tools.GetOrm(c) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "Orm获取失败") + log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err) + app.Error(c, 500, err, "Orm获取失败") + return + } + + //删除操作 + err = control.Bind(c) + if err != nil { + log.Errorf("MsgID[%s] Bind error: %s", msgID, err) + e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") + log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err) + app.Error(c, 500, err, "Orm获取失败") + return + } + object, err := control.GenerateM() + if err != nil { + e.Error(c, http.StatusInternalServerError, err, "模型生成失败") + log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err) + app.Error(c, 500, err, "Orm获取失败") + return + } + + // 设置编辑人 + object.SetUpdateBy(tools.GetUserId(c)) + + serviceSysLoginLog := service.SysConfig{} + serviceSysLoginLog.Orm = db + serviceSysLoginLog.MsgID = msgID + err = serviceSysLoginLog.RemoveSysConfig(control, object) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "删除失败") + log.Errorf("msgID[%s] Orm获取失败, error:%s", msgID, err) + app.Error(c, 500, err, "Orm获取失败") + return + } + e.OK(c, object.GetId(), "删除成功") +} + // GetSysConfigByKEYForService 根据Key获取SysConfig的Service func (e *SysConfig) GetSysConfigByKEYForService(c *gin.Context) { msgID := tools.GenerateMsgIDFromContext(c) @@ -25,7 +223,7 @@ func (e *SysConfig) GetSysConfigByKEYForService(c *gin.Context) { return } var v dto.SysConfigControl - err = c.Bind(&v) + err = v.Bind(c) if err != nil { log.Errorf("msgID[%s] 参数验证错误, error:%s", msgID, err) app.Error(c, 422, err, "参数验证失败") @@ -36,6 +234,7 @@ func (e *SysConfig) GetSysConfigByKEYForService(c *gin.Context) { s.Orm = db err = s.GetSysConfigByKEY(&v) if err != nil { + log.Errorf("msgID[%s] 通过Key获取配置失败, error:%s", msgID, err) app.Error(c, 500, err, "") return } diff --git a/app/admin/apis/system/sys_login_log/sys_login_log.go b/app/admin/apis/system/sys_login_log/sys_login_log.go index 44d6952c..67e47e40 100644 --- a/app/admin/apis/system/sys_login_log/sys_login_log.go +++ b/app/admin/apis/system/sys_login_log/sys_login_log.go @@ -8,7 +8,6 @@ import ( "go-admin/app/admin/service/dto" "go-admin/common/apis" "go-admin/common/log" - common "go-admin/common/models" "go-admin/tools" "net/http" @@ -27,10 +26,8 @@ func (e *SysLoginLog) GetSysLoginLogList(c *gin.Context) { return } - req := d.Generate() - //查询列表 - err = req.Bind(c) + err = d.Bind(c) if err != nil { e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") return @@ -41,13 +38,13 @@ func (e *SysLoginLog) GetSysLoginLogList(c *gin.Context) { serviceStudent := service.SysLoginLog{} serviceStudent.MsgID = msgID serviceStudent.Orm = db - err = serviceStudent.GetSysLoginLogPage(req, &list, &count) + err = serviceStudent.GetSysLoginLogPage(d, &list, &count) if err != nil { e.Error(c, http.StatusUnprocessableEntity, err, "查询失败") return } - e.PageOK(c, list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功") + e.PageOK(c, list, int(count), d.GetPageIndex(), d.GetPageSize(), "查询成功") } func (e *SysLoginLog) GetSysLoginLog(c *gin.Context) { @@ -60,8 +57,7 @@ func (e *SysLoginLog) GetSysLoginLog(c *gin.Context) { msgID := tools.GenerateMsgIDFromContext(c) //查看详情 - req := control.Generate() - err = req.Bind(c) + err = control.Bind(c) if err != nil { e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") return @@ -71,7 +67,7 @@ func (e *SysLoginLog) GetSysLoginLog(c *gin.Context) { serviceSysLoginLog := service.SysLoginLog{} serviceSysLoginLog.MsgID = msgID serviceSysLoginLog.Orm = db - err = serviceSysLoginLog.GetSysLoginLog(req, &object) + err = serviceSysLoginLog.GetSysLoginLog(control, &object) if err != nil { e.Error(c, http.StatusUnprocessableEntity, err, "查询失败") return @@ -90,14 +86,12 @@ func (e *SysLoginLog) InsertSysLoginLog(c *gin.Context) { msgID := tools.GenerateMsgIDFromContext(c) //新增操作 - req := control.Generate() - err = req.Bind(c) + err = control.Bind(c) if err != nil { e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") return } - var object common.ActiveRecord - object, err = req.GenerateM() + object, err := control.Generate() if err != nil { e.Error(c, http.StatusInternalServerError, err, "模型生成失败") return @@ -127,15 +121,13 @@ func (e *SysLoginLog) UpdateSysLoginLog(c *gin.Context) { } msgID := tools.GenerateMsgIDFromContext(c) - req := control.Generate() //更新操作 - err = req.Bind(c) + err = control.Bind(c) if err != nil { e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") return } - var object common.ActiveRecord - object, err = req.GenerateM() + object, err := control.Generate() if err != nil { e.Error(c, http.StatusInternalServerError, err, "模型生成失败") return @@ -163,15 +155,13 @@ func (e *SysLoginLog) DeleteSysLoginLog(c *gin.Context) { msgID := tools.GenerateMsgIDFromContext(c) //删除操作 - req := control.Generate() - err = req.Bind(c) + err = control.Bind(c) if err != nil { log.Errorf("MsgID[%s] Bind error: %s", msgID, err) e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") return } - var object common.ActiveRecord - object, err = req.GenerateM() + object, err := control.GenerateM() if err != nil { e.Error(c, http.StatusInternalServerError, err, "模型生成失败") return @@ -183,7 +173,7 @@ func (e *SysLoginLog) DeleteSysLoginLog(c *gin.Context) { serviceSysLoginLog := service.SysLoginLog{} serviceSysLoginLog.Orm = db serviceSysLoginLog.MsgID = msgID - err = serviceSysLoginLog.RemoveSysLoginLog(req, object) + err = serviceSysLoginLog.RemoveSysLoginLog(control, object) if err != nil { log.Error(err) return diff --git a/app/admin/apis/system/sys_opera_log/sys_opera_log.go b/app/admin/apis/system/sys_opera_log/sys_opera_log.go index 47c6b110..31229d2b 100644 --- a/app/admin/apis/system/sys_opera_log/sys_opera_log.go +++ b/app/admin/apis/system/sys_opera_log/sys_opera_log.go @@ -8,7 +8,6 @@ import ( "go-admin/app/admin/service/dto" "go-admin/common/apis" "go-admin/common/log" - common "go-admin/common/models" "go-admin/tools" "net/http" @@ -27,10 +26,8 @@ func (e *SysOperaLog) GetSysOperaLogList(c *gin.Context) { return } - req := d.Generate() - //查询列表 - err = req.Bind(c) + err = d.Bind(c) if err != nil { e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") return @@ -41,13 +38,13 @@ func (e *SysOperaLog) GetSysOperaLogList(c *gin.Context) { serviceStudent := service.SysOperaLog{} serviceStudent.MsgID = msgID serviceStudent.Orm = db - err = serviceStudent.GetSysOperaLogPage(req, &list, &count) + err = serviceStudent.GetSysOperaLogPage(d, &list, &count) if err != nil { e.Error(c, http.StatusUnprocessableEntity, err, "查询失败") return } - e.PageOK(c, list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功") + e.PageOK(c, list, int(count), d.GetPageIndex(), d.GetPageSize(), "查询成功") } func (e *SysOperaLog) GetSysOperaLog(c *gin.Context) { @@ -60,8 +57,7 @@ func (e *SysOperaLog) GetSysOperaLog(c *gin.Context) { msgID := tools.GenerateMsgIDFromContext(c) //查看详情 - req := control.Generate() - err = req.Bind(c) + err = control.Bind(c) if err != nil { e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") return @@ -71,7 +67,7 @@ func (e *SysOperaLog) GetSysOperaLog(c *gin.Context) { serviceSysOperlog := service.SysOperaLog{} serviceSysOperlog.MsgID = msgID serviceSysOperlog.Orm = db - err = serviceSysOperlog.GetSysOperaLog(req, &object) + err = serviceSysOperlog.GetSysOperaLog(control, &object) if err != nil { e.Error(c, http.StatusUnprocessableEntity, err, "查询失败") return @@ -90,14 +86,12 @@ func (e *SysOperaLog) InsertSysOperaLog(c *gin.Context) { msgID := tools.GenerateMsgIDFromContext(c) //新增操作 - req := control.Generate() - err = req.Bind(c) + err = control.Bind(c) if err != nil { e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") return } - var object common.ActiveRecord - object, err = req.GenerateM() + object, err := control.Generate() if err != nil { e.Error(c, http.StatusInternalServerError, err, "模型生成失败") return @@ -127,15 +121,13 @@ func (e *SysOperaLog) UpdateSysOperaLog(c *gin.Context) { } msgID := tools.GenerateMsgIDFromContext(c) - req := control.Generate() //更新操作 - err = req.Bind(c) + err = control.Bind(c) if err != nil { e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") return } - var object common.ActiveRecord - object, err = req.GenerateM() + object, err := control.Generate() if err != nil { e.Error(c, http.StatusInternalServerError, err, "模型生成失败") return @@ -163,30 +155,20 @@ func (e *SysOperaLog) DeleteSysOperaLog(c *gin.Context) { msgID := tools.GenerateMsgIDFromContext(c) //删除操作 - req := control.Generate() - err = req.Bind(c) + err = control.Bind(c) if err != nil { log.Errorf("MsgID[%s] Bind error: %s", msgID, err) e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") return } - var object common.ActiveRecord - object, err = req.GenerateM() - if err != nil { - e.Error(c, http.StatusInternalServerError, err, "模型生成失败") - return - } - - // 设置编辑人 - object.SetUpdateBy(tools.GetUserId(c)) serviceSysOperaLog := service.SysOperaLog{} serviceSysOperaLog.Orm = db serviceSysOperaLog.MsgID = msgID - err = serviceSysOperaLog.RemoveSysOperaLog(req, object) + err = serviceSysOperaLog.RemoveSysOperaLog(control) if err != nil { log.Error(err) return } - e.OK(c, object.GetId(), "删除成功") + e.OK(c, control.GetId(), "删除成功") } diff --git a/app/admin/middleware/logger.go b/app/admin/middleware/logger.go index 6dc46dba..5e93e6e4 100644 --- a/app/admin/middleware/logger.go +++ b/app/admin/middleware/logger.go @@ -1,6 +1,7 @@ package middleware import ( + "fmt" "strings" "time" @@ -9,7 +10,6 @@ import ( "go-admin/app/admin/models" "go-admin/app/admin/models/system" "go-admin/app/admin/service" - "go-admin/common/global" "go-admin/common/log" "go-admin/tools" "go-admin/tools/config" @@ -17,32 +17,42 @@ import ( // LoggerToFile 日志记录到文件 func LoggerToFile() gin.HandlerFunc { - return func(c *gin.Context) { // 开始时间 startTime := time.Now() - // 处理请求 c.Next() - // 结束时间 - endTime := time.Now() + bd, bl := c.Get("body") + var body = "" + if bl { + body = bd.(string) + } - // 执行时间 - latencyTime := endTime.Sub(startTime) + rt, bl := c.Get("result") + var result = "" + if bl { + result = rt.(string) + } + + st, bl := c.Get("status") + var statusBus = 0 + if bl { + statusBus = st.(int) + } // 请求方式 reqMethod := c.Request.Method - // 请求路由 reqUri := c.Request.RequestURI - // 状态码 statusCode := c.Writer.Status() - // 请求IP clientIP := c.ClientIP() - + // 结束时间 + endTime := time.Now() + // 执行时间 + latencyTime := endTime.Sub(startTime) // 日志格式 logData := map[string]interface{}{ "statusCode": statusCode, @@ -52,16 +62,14 @@ func LoggerToFile() gin.HandlerFunc { "uri": reqUri, } log.Info(logData) - global.RequestLogger.Info(logData) - if c.Request.Method != "GET" && c.Request.Method != "OPTIONS" && config.LoggerConfig.EnabledDB { - SetDBOperLog(c, clientIP, statusCode, reqUri, reqMethod, latencyTime) + SetDBOperLog(c, clientIP, statusCode, reqUri, reqMethod, latencyTime, body, result, statusBus) } } } // SetDBOperLog 写入操作日志表 fixme 该方法后续即将弃用 -func SetDBOperLog(c *gin.Context, clientIP string, statusCode int, reqUri string, reqMethod string, latencyTime time.Duration) { +func SetDBOperLog(c *gin.Context, clientIP string, statusCode int, reqUri string, reqMethod string, latencyTime time.Duration, body string, result string, status int) { menu := models.Menu{} menu.Path = reqUri menu.Action = reqMethod @@ -73,6 +81,7 @@ func SetDBOperLog(c *gin.Context, clientIP string, statusCode int, reqUri string sysOperaLog.OperName = tools.GetUserName(c) sysOperaLog.RequestMethod = c.Request.Method sysOperaLog.OperUrl = reqUri + sysOperaLog.OperParam = body if reqUri == "/login" { sysOperaLog.BusinessType = "10" sysOperaLog.Title = "用户登录" @@ -95,14 +104,14 @@ func SetDBOperLog(c *gin.Context, clientIP string, statusCode int, reqUri string if len(menuList) > 0 { sysOperaLog.Title = menuList[0].Title } - b, _ := c.Get("body") - sysOperaLog.OperParam, _ = tools.StructToJsonStr(b) sysOperaLog.CreateBy = tools.GetUserId(c) sysOperaLog.OperTime = tools.GetCurrentTime() - sysOperaLog.LatencyTime = (latencyTime).String() + sysOperaLog.LatencyTime = fmt.Sprintf("%v", latencyTime) + + sysOperaLog.JsonResult = result sysOperaLog.UserAgent = c.Request.UserAgent() - if c.Err() == nil { - sysOperaLog.Status = "0" + if status == 200 { + sysOperaLog.Status = "2" } else { sysOperaLog.Status = "1" } @@ -113,5 +122,5 @@ func SetDBOperLog(c *gin.Context, clientIP string, statusCode int, reqUri string } serviceOperaLog := service.SysOperaLog{} serviceOperaLog.Orm = db - _ = serviceOperaLog.InsertSysOperaLog(sysOperaLog.Generate()) + _ = serviceOperaLog.InsertSysOperaLog(&sysOperaLog) } diff --git a/app/admin/models/system.go b/app/admin/models/system.go index f2a2d3b8..77525c92 100644 --- a/app/admin/models/system.go +++ b/app/admin/models/system.go @@ -2,19 +2,24 @@ package models import ( orm "go-admin/common/global" + "go-admin/common/models" ) 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 + models.ModelTime } func (SysSetting) TableName() string { return "sys_setting" } +func (s *SysSetting) GetId() interface{} { + return s.SettingsId +} + //查询 func (s *SysSetting) Get() (create SysSetting, err error) { result := orm.Eloquent.Table("sys_setting").First(&create) @@ -34,7 +39,7 @@ func (s *SysSetting) Update() (update SysSetting, err error) { } type ResponseSystemConfig struct { - Name string `json:"name" binding:"required"` // 名称 - Logo string `json:"logo" binding:"required"` // 头像 + Name string `json:"name" binding:"required"` // 名称 + Logo string `json:"logo" binding:"required"` // 头像 SettingsId int `json:"settings_id" binding:"required"` // 头像 } diff --git a/app/admin/router/sys_config.go b/app/admin/router/sys_config.go index c489d14b..e869a2cd 100644 --- a/app/admin/router/sys_config.go +++ b/app/admin/router/sys_config.go @@ -4,9 +4,6 @@ import ( "github.com/gin-gonic/gin" "go-admin/app/admin/apis/system/sys_config" "go-admin/app/admin/middleware" - "go-admin/app/admin/models/system" - "go-admin/app/admin/service/dto" - "go-admin/common/actions" jwt "go-admin/pkg/jwtauth" ) @@ -18,20 +15,17 @@ func init() { func registerSysConfigRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { r := v1.Group("/config").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) { - model := &system.SysConfig{} - r.GET("", actions.PermissionAction(), actions.IndexAction(model, new(dto.SysConfigSearch), func() interface{} { - list := make([]system.SysConfig, 0) - return &list - })) - r.GET("/:id", actions.PermissionAction(), actions.ViewAction(new(dto.SysConfigById), nil)) - r.POST("", actions.CreateAction(new(dto.SysConfigControl))) - r.PUT("/:id", actions.PermissionAction(), actions.UpdateAction(new(dto.SysConfigControl))) - r.DELETE("", actions.PermissionAction(), actions.DeleteAction(new(dto.SysConfigById))) + api := &sys_config.SysConfig{} + r.GET("", api.GetSysConfigList) + r.GET("/:id", api.GetSysConfig) + r.POST("", api.InsertSysConfig) + r.PUT("/:id", api.UpdateSysConfig) + r.DELETE("/:id", api.DeleteSysConfig) } r1 := v1.Group("/configKey").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) { - model := &sys_config.SysConfig{} - r1.POST("", model.GetSysConfigByKEYForService) + api := &sys_config.SysConfig{} + r1.POST("", api.GetSysConfigByKEYForService) } } diff --git a/app/admin/router/sysrouter.go b/app/admin/router/sysrouter.go index 859bcb16..9e68d750 100644 --- a/app/admin/router/sysrouter.go +++ b/app/admin/router/sysrouter.go @@ -219,10 +219,11 @@ func registerDeptRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddlewar } } func registerSysSettingRouter(v1 *gin.RouterGroup) { + api := system.SysSetting{} setting := v1.Group("/setting") { - setting.GET("", system.GetSetting) - setting.POST("", system.CreateSetting) + setting.GET("", api.GetSetting) + setting.POST("", api.CreateOrUpdateSetting) setting.GET("/serverInfo", monitor.ServerInfo) } } diff --git a/app/admin/service/dto/sys_config.go b/app/admin/service/dto/sys_config.go index dc62286e..1cb69e4d 100644 --- a/app/admin/service/dto/sys_config.go +++ b/app/admin/service/dto/sys_config.go @@ -1,7 +1,9 @@ package dto import ( + "encoding/json" "github.com/gin-gonic/gin" + "github.com/gin-gonic/gin/binding" "go-admin/app/admin/models/system" "go-admin/common/dto" "go-admin/common/log" @@ -9,6 +11,7 @@ import ( "go-admin/tools" ) +// SysConfigSearch 列表或者搜索使用结构体 type SysConfigSearch struct { dto.Pagination `search:"-"` ConfigName string `form:"configName" search:"type:exact;column:config_name;table:sys_config" comment:""` @@ -20,6 +23,7 @@ func (m *SysConfigSearch) GetNeedSearch() interface{} { return *m } +// Bind 映射上下文中的结构体数据 func (m *SysConfigSearch) Bind(ctx *gin.Context) error { msgID := tools.GenerateMsgIDFromContext(ctx) err := ctx.ShouldBind(m) @@ -29,11 +33,7 @@ func (m *SysConfigSearch) Bind(ctx *gin.Context) error { return err } -func (m *SysConfigSearch) Generate() dto.Index { - o := *m - return &o -} - +// SysConfigControl 增、改使用的结构体 type SysConfigControl struct { ID int `uri:"ID" comment:"编码"` // 编码 ConfigName string `json:"configName" comment:""` @@ -43,7 +43,60 @@ type SysConfigControl struct { Remark string `json:"remark" comment:""` } +// Bind 映射上下文中的结构体数据 func (s *SysConfigControl) Bind(ctx *gin.Context) error { + msgID := tools.GenerateMsgIDFromContext(ctx) + err := ctx.ShouldBindUri(s) + if err != nil { + log.Debugf("MsgID[%s] ShouldBindUri error: %s", msgID, err.Error()) + return err + } + err = ctx.ShouldBindBodyWith(s, binding.JSON) + if err != nil { + log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error()) + } + var jsonStr []byte + jsonStr, err = json.Marshal(s) + if err != nil { + log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error()) + } + ctx.Set("body", string(jsonStr)) + return err +} + +// Generate 结构体数据转化 从 SysConfigControl 至 system.SysConfig 对应的模型 +func (s *SysConfigControl) Generate() (*system.SysConfig, error) { + return &system.SysConfig{ + Model: common.Model{ID: s.ID}, + ConfigName: s.ConfigName, + ConfigKey: s.ConfigKey, + ConfigValue: s.ConfigValue, + ConfigType: s.ConfigType, + Remark: s.Remark, + }, nil +} + +// GetId 获取数据对应的ID +func (s *SysConfigControl) GetId() interface{} { + return s.ID +} + +// SysConfigById 获取单个或者删除的结构体 +type SysConfigById struct { + Id int `uri:"id"` + Ids []int `json:"ids"` +} + +func (s *SysConfigById) Generate() *SysConfigById { + cp := *s + return &cp +} + +func (s *SysConfigById) GetId() interface{} { + return s.Id +} + +func (s *SysConfigById) Bind(ctx *gin.Context) error { msgID := tools.GenerateMsgIDFromContext(ctx) err := ctx.ShouldBindUri(s) if err != nil { @@ -57,35 +110,6 @@ func (s *SysConfigControl) Bind(ctx *gin.Context) error { return err } -func (s *SysConfigControl) Generate() dto.Control { - cp := *s - return &cp -} - -func (s *SysConfigControl) GenerateM() (common.ActiveRecord, error) { - return &system.SysConfig{ - Model: common.Model{ID: s.ID}, - ConfigName: s.ConfigName, - ConfigKey: s.ConfigKey, - ConfigValue: s.ConfigValue, - ConfigType: s.ConfigType, - Remark: s.Remark, - }, nil -} - -func (s *SysConfigControl) GetId() interface{} { - return s.ID -} - -type SysConfigById struct { - dto.ObjectById -} - -func (s *SysConfigById) Generate() dto.Control { - cp := *s - return &cp -} - -func (s *SysConfigById) GenerateM() (common.ActiveRecord, error) { +func (s *SysConfigById) GenerateM() (*system.SysConfig, error) { return &system.SysConfig{}, nil } diff --git a/app/admin/service/dto/sys_login_log.go b/app/admin/service/dto/sys_login_log.go index 2723eee5..e9ad0576 100644 --- a/app/admin/service/dto/sys_login_log.go +++ b/app/admin/service/dto/sys_login_log.go @@ -13,11 +13,10 @@ import ( type SysLoginLogSearch struct { dto.Pagination `search:"-"` - - Username string `form:"username" search:"type:exact;column:username;table:sys_login_log" comment:"用户名"` - Status string `form:"status" search:"type:exact;column:status;table:sys_login_log" comment:"状态"` - Ipaddr string `form:"ipaddr" search:"type:exact;column:ipaddr;table:sys_login_log" comment:"ip地址"` - LoginLocation string `form:"loginLocation" search:"type:exact;column:login_location;table:sys_login_log" comment:"归属地"` + Username string `form:"username" search:"type:exact;column:username;table:sys_login_log" comment:"用户名"` + Status string `form:"status" search:"type:exact;column:status;table:sys_login_log" comment:"状态"` + Ipaddr string `form:"ipaddr" search:"type:exact;column:ipaddr;table:sys_login_log" comment:"ip地址"` + LoginLocation string `form:"loginLocation" search:"type:exact;column:login_location;table:sys_login_log" comment:"归属地"` } func (m *SysLoginLogSearch) GetNeedSearch() interface{} { @@ -33,13 +32,8 @@ func (m *SysLoginLogSearch) Bind(ctx *gin.Context) error { return err } -func (m *SysLoginLogSearch) Generate() dto.Index { - o := *m - return &o -} - type SysLoginLogControl struct { - ID int `uri:"ID" comment:"主键"` // 主键 + ID int `uri:"ID" comment:"主键"` // 主键 Username string `json:"username" comment:"用户名"` Status string `json:"status" comment:"状态"` Ipaddr string `json:"ipaddr" comment:"ip地址"` @@ -66,12 +60,7 @@ func (s *SysLoginLogControl) Bind(ctx *gin.Context) error { return err } -func (s *SysLoginLogControl) Generate() dto.Control { - cp := *s - return &cp -} - -func (s *SysLoginLogControl) GenerateM() (common.ActiveRecord, error) { +func (s *SysLoginLogControl) Generate() (*system.SysLoginLog, error) { return &system.SysLoginLog{ Model: common.Model{ID: s.ID}, Username: s.Username, @@ -92,14 +81,33 @@ func (s *SysLoginLogControl) GetId() interface{} { } type SysLoginLogById struct { - dto.ObjectById + Id int `uri:"id"` + Ids []int `json:"ids"` } -func (s *SysLoginLogById) Generate() dto.Control { +func (s *SysLoginLogById) GetId() interface{} { + return s.Id +} + +func (s *SysLoginLogById) Bind(ctx *gin.Context) error { + msgID := tools.GenerateMsgIDFromContext(ctx) + err := ctx.ShouldBindUri(s) + if err != nil { + log.Debugf("MsgID[%s] ShouldBindUri error: %s", msgID, err.Error()) + return err + } + err = ctx.ShouldBind(s) + if err != nil { + log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error()) + } + return err +} + +func (s *SysLoginLogById) Generate() *SysLoginLogById { cp := *s return &cp } -func (s *SysLoginLogById) GenerateM() (common.ActiveRecord, error) { +func (s *SysLoginLogById) GenerateM() (*system.SysLoginLog, error) { return &system.SysLoginLog{}, nil } diff --git a/app/admin/service/dto/sys_opera_log.go b/app/admin/service/dto/sys_opera_log.go index 2fdf531c..34155b2f 100644 --- a/app/admin/service/dto/sys_opera_log.go +++ b/app/admin/service/dto/sys_opera_log.go @@ -34,13 +34,8 @@ func (m *SysOperaLogSearch) Bind(ctx *gin.Context) error { return err } -func (m *SysOperaLogSearch) Generate() dto.Index { - o := *m - return &o -} - type SysOperaLogControl struct { - ID int `uri:"ID" comment:"编码"` // 编码 + ID int `uri:"ID" comment:"编码"` // 编码 Title string `json:"title" comment:"操作模块"` BusinessType string `json:"businessType" comment:"操作类型"` BusinessTypes string `json:"businessTypes" comment:""` @@ -75,12 +70,7 @@ func (s *SysOperaLogControl) Bind(ctx *gin.Context) error { return err } -func (s *SysOperaLogControl) Generate() dto.Control { - cp := *s - return &cp -} - -func (s *SysOperaLogControl) GenerateM() (common.ActiveRecord, error) { +func (s *SysOperaLogControl) Generate() (*system.SysOperaLog, error) { return &system.SysOperaLog{ Model: common.Model{ID: s.ID}, Title: s.Title, @@ -109,14 +99,32 @@ func (s *SysOperaLogControl) GetId() interface{} { } type SysOperaLogById struct { - dto.ObjectById + Id int `uri:"id"` + Ids []int `json:"ids"` } -func (s *SysOperaLogById) Generate() dto.Control { - cp := *s - return &cp +func (s *SysOperaLogById) GetId() interface{} { + if len(s.Ids) > 0 { + s.Ids = append(s.Ids, s.Id) + return s.Ids + } + return s.Id } -func (s *SysOperaLogById) GenerateM() (common.ActiveRecord, error) { - return &system.SysOperaLog{}, nil +func (s *SysOperaLogById) Bind(ctx *gin.Context) error { + msgID := tools.GenerateMsgIDFromContext(ctx) + err := ctx.ShouldBindUri(s) + if err != nil { + log.Debugf("MsgID[%s] ShouldBindUri error: %s", msgID, err.Error()) + return err + } + err = ctx.ShouldBind(s) + if err != nil { + log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error()) + } + return err +} + +func (s *SysOperaLogById) SetUpdateBy(id int) { + } diff --git a/app/admin/service/dto/sys_setting.go b/app/admin/service/dto/sys_setting.go new file mode 100644 index 00000000..272b4cd1 --- /dev/null +++ b/app/admin/service/dto/sys_setting.go @@ -0,0 +1,87 @@ +package dto + +import ( + "encoding/json" + "github.com/gin-gonic/gin" + "go-admin/app/admin/models" + "go-admin/common/log" + "go-admin/tools" +) + +// SysConfigControl 增、改使用的结构体 +type SysSettingControl struct { + SettingsId int `json:"settings_id" binding:"required"` // 头像 + Name string `json:"name" binding:"required"` // 名称 + Logo string `json:"logo" binding:"required"` // 头像 +} + +// Bind 映射上下文中的结构体数据 +func (s *SysSettingControl) Bind(ctx *gin.Context) error { + msgID := tools.GenerateMsgIDFromContext(ctx) + + err := ctx.ShouldBind(s) + if err != nil { + log.Errorf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error()) + return err + } + + err = ctx.ShouldBindUri(s) + if err != nil { + log.Errorf("MsgID[%s] ShouldBindUri error: %s", msgID, err.Error()) + return err + } + var jsonStr []byte + jsonStr, err = json.Marshal(s) + if err != nil { + log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error()) + } + ctx.Set("body", string(jsonStr)) + return err +} + +// Generate 结构体数据转化 从 SysConfigControl 至 system.SysConfig 对应的模型 +func (s *SysSettingControl) Generate() (*models.SysSetting, error) { + return &models.SysSetting{ + SettingsId: s.SettingsId, + Name: s.Name, + Logo: s.Logo, + }, nil +} + +// GetId 获取数据对应的ID +func (s *SysSettingControl) GetId() interface{} { + return s.SettingsId +} + +// SysConfigById 获取单个或者删除的结构体 +type SysSettingById struct { + Id int `uri:"id"` + Ids []int `json:"ids"` +} + +func (s *SysSettingById) Generate() *SysSettingById { + cp := *s + return &cp +} + +func (s *SysSettingById) GetId() interface{} { + return s.Id +} + +func (s *SysSettingById) Bind(ctx *gin.Context) error { + msgID := tools.GenerateMsgIDFromContext(ctx) + err := ctx.ShouldBindUri(s) + if err != nil { + log.Debugf("MsgID[%s] ShouldBindUri error: %s", msgID, err.Error()) + return err + } + err = ctx.ShouldBind(s) + if err != nil { + log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error()) + } + return err +} + +func (s *SysSettingById) GenerateM() (*models.SysSetting, error) { + return &models.SysSetting{}, nil +} diff --git a/app/admin/service/sys_config.go b/app/admin/service/sys_config.go index 8ab25a0c..acdbb6c8 100644 --- a/app/admin/service/sys_config.go +++ b/app/admin/service/sys_config.go @@ -1,16 +1,115 @@ package service import ( + "errors" "go-admin/app/admin/models/system" "go-admin/app/admin/service/dto" + cDto "go-admin/common/dto" "go-admin/common/log" "go-admin/common/service" + "gorm.io/gorm" ) type SysConfig struct { service.Service } + +// GetSysConfigPage 获取SysConfig列表 +func (e *SysConfig) GetSysConfigPage(c *dto.SysConfigSearch, list *[]system.SysConfig, count *int64) error { + var err error + var data system.SysConfig + msgID := e.MsgID + + err = e.Orm.Model(&data). + Scopes( + cDto.MakeCondition(c.GetNeedSearch()), + cDto.Paginate(c.GetPageSize(), c.GetPageIndex()), + ). + Find(list).Limit(-1).Offset(-1). + Count(count).Error + if err != nil { + log.Errorf("msgID[%s] db error:%s", msgID, err) + return err + } + return nil +} + +// GetSysConfig 获取SysConfig对象 +func (e *SysConfig) GetSysConfig(d *dto.SysConfigById, model *system.SysConfig) error { + var err error + var data system.SysConfig + msgID := e.MsgID + + db := e.Orm.Model(&data). + First(model, d.GetId()) + err = db.Error + if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { + err = errors.New("查看对象不存在或无权查看") + log.Errorf("msgID[%s] db error:%s", msgID, err) + return err + } + if db.Error != nil { + log.Errorf("msgID[%s] db error:%s", msgID, err) + return err + } + return nil +} + +// InsertSysConfig 创建SysConfig对象 +func (e *SysConfig) InsertSysConfig(model *system.SysConfig) error { + var err error + var data system.SysConfig + msgID := e.MsgID + + err = e.Orm.Model(&data). + Create(model).Error + if err != nil { + log.Errorf("msgID[%s] db error:%s", msgID, err) + return err + } + return nil +} + +// UpdateSysConfig 修改SysConfig对象 +func (e *SysConfig) UpdateSysConfig(c *system.SysConfig) error { + var err error + var data system.SysConfig + msgID := e.MsgID + + db := e.Orm.Model(&data). + Where(c.GetId()).Updates(c) + if db.Error != nil { + log.Errorf("msgID[%s] db error:%s", msgID, err) + return err + } + if db.RowsAffected == 0 { + return errors.New("无权更新该数据") + + } + return nil +} + +// RemoveSysConfig 删除SysConfig +func (e *SysConfig) RemoveSysConfig(d *dto.SysConfigById,c *system.SysConfig) error { + var err error + var data system.SysConfig + msgID := e.MsgID + + db := e.Orm.Model(&data). + Where(d.GetId()).Delete(c) + if db.Error != nil { + err = db.Error + log.Errorf("MsgID[%s] Delete error: %s", msgID, err) + return err + } + if db.RowsAffected == 0 { + err = errors.New("无权删除该数据") + return err + } + return nil +} + // GetSysConfigByKEY 根据Key获取SysConfig func (e *SysConfig) GetSysConfigByKEY(c *dto.SysConfigControl) error { var err error diff --git a/app/admin/service/sys_login_log.go b/app/admin/service/sys_login_log.go index c3ba5fe7..dc6ccd62 100644 --- a/app/admin/service/sys_login_log.go +++ b/app/admin/service/sys_login_log.go @@ -3,6 +3,7 @@ package service import ( "errors" "go-admin/app/admin/models/system" + "go-admin/app/admin/service/dto" cDto "go-admin/common/dto" "go-admin/common/log" common "go-admin/common/models" @@ -15,7 +16,7 @@ type SysLoginLog struct { } // GetSysLoginLogPage 获取SysLoginLog列表 -func (e *SysLoginLog) GetSysLoginLogPage(c cDto.Index, list *[]system.SysLoginLog, count *int64) error { +func (e *SysLoginLog) GetSysLoginLogPage(c *dto.SysLoginLogSearch, list *[]system.SysLoginLog, count *int64) error { var err error var data system.SysLoginLog msgID := e.MsgID @@ -35,7 +36,7 @@ func (e *SysLoginLog) GetSysLoginLogPage(c cDto.Index, list *[]system.SysLoginLo } // GetSysLoginLog 获取SysLoginLog对象 -func (e *SysLoginLog) GetSysLoginLog(d cDto.Control, model *system.SysLoginLog) error { +func (e *SysLoginLog) GetSysLoginLog(d *dto.SysLoginLogById, model *system.SysLoginLog) error { var err error var data system.SysLoginLog msgID := e.MsgID @@ -90,7 +91,7 @@ func (e *SysLoginLog) UpdateSysLoginLog(c common.ActiveRecord) error { } // RemoveSysLoginLog 删除SysLoginLog -func (e *SysLoginLog) RemoveSysLoginLog(d cDto.Control, c common.ActiveRecord) error { +func (e *SysLoginLog) RemoveSysLoginLog(d *dto.SysLoginLogById, c common.ActiveRecord) error { var err error var data system.SysLoginLog msgID := e.MsgID diff --git a/app/admin/service/sys_opera_log.go b/app/admin/service/sys_opera_log.go index ca617c50..7bcd9997 100644 --- a/app/admin/service/sys_opera_log.go +++ b/app/admin/service/sys_opera_log.go @@ -3,9 +3,9 @@ package service import ( "errors" "go-admin/app/admin/models/system" + "go-admin/app/admin/service/dto" cDto "go-admin/common/dto" "go-admin/common/log" - common "go-admin/common/models" "go-admin/common/service" "gorm.io/gorm" ) @@ -15,7 +15,7 @@ type SysOperaLog struct { } // GetSysOperaLogPage 获取SysOperaLog列表 -func (e *SysOperaLog) GetSysOperaLogPage(c cDto.Index, list *[]system.SysOperaLog, count *int64) error { +func (e *SysOperaLog) GetSysOperaLogPage(c *dto.SysOperaLogSearch, list *[]system.SysOperaLog, count *int64) error { var err error var data system.SysOperaLog msgID := e.MsgID @@ -35,7 +35,7 @@ func (e *SysOperaLog) GetSysOperaLogPage(c cDto.Index, list *[]system.SysOperaLo } // GetSysOperaLog 获取SysOperaLog对象 -func (e *SysOperaLog) GetSysOperaLog(d cDto.Control, model *system.SysOperaLog) error { +func (e *SysOperaLog) GetSysOperaLog(d *dto.SysOperaLogById, model *system.SysOperaLog) error { var err error var data system.SysOperaLog msgID := e.MsgID @@ -56,7 +56,7 @@ func (e *SysOperaLog) GetSysOperaLog(d cDto.Control, model *system.SysOperaLog) } // InsertSysOperaLog 创建SysOperaLog对象 -func (e *SysOperaLog) InsertSysOperaLog(model common.ActiveRecord) error { +func (e *SysOperaLog) InsertSysOperaLog(model *system.SysOperaLog) error { var err error var data system.SysOperaLog msgID := e.MsgID @@ -71,7 +71,7 @@ func (e *SysOperaLog) InsertSysOperaLog(model common.ActiveRecord) error { } // UpdateSysOperaLog 修改SysOperaLog对象 -func (e *SysOperaLog) UpdateSysOperaLog(c common.ActiveRecord) error { +func (e *SysOperaLog) UpdateSysOperaLog(c *system.SysOperaLog) error { var err error var data system.SysOperaLog msgID := e.MsgID @@ -90,13 +90,12 @@ func (e *SysOperaLog) UpdateSysOperaLog(c common.ActiveRecord) error { } // RemoveSysOperaLog 删除SysOperaLog -func (e *SysOperaLog) RemoveSysOperaLog(d cDto.Control, c common.ActiveRecord) error { +func (e *SysOperaLog) RemoveSysOperaLog(d *dto.SysOperaLogById) error { var err error var data system.SysOperaLog msgID := e.MsgID - db := e.Orm.Model(&data). - Where(d.GetId()).Delete(c) + db := e.Orm.Model(&data).Delete(&data, d.GetId()) if db.Error != nil { err = db.Error log.Errorf("MsgID[%s] Delete error: %s", msgID, err) @@ -107,4 +106,4 @@ func (e *SysOperaLog) RemoveSysOperaLog(d cDto.Control, c common.ActiveRecord) e return err } return nil -} \ No newline at end of file +} diff --git a/app/admin/service/sys_setting.go b/app/admin/service/sys_setting.go new file mode 100644 index 00000000..e0adb464 --- /dev/null +++ b/app/admin/service/sys_setting.go @@ -0,0 +1,53 @@ +package service + +import ( + "errors" + "go-admin/app/admin/models" + "go-admin/common/log" + "go-admin/common/service" + "gorm.io/gorm" +) + +type SysSetting struct { + service.Service +} + +// GetSysSetting 获取SysSetting对象 +func (e *SysSetting) GetSysSetting(model *models.SysSetting) error { + var err error + var data models.SysSetting + msgID := e.MsgID + + db := e.Orm.Model(&data). + First(model) + err = db.Error + if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { + err = errors.New("查看对象不存在或无权查看") + log.Errorf("msgID[%s] db error:%s", msgID, err) + return err + } + if db.Error != nil { + log.Errorf("msgID[%s] db error:%s", msgID, err) + return err + } + return nil +} + +// UpdateSysSetting 修改SysSetting对象 +func (e *SysSetting) UpdateSysSetting(c *models.SysSetting) error { + var err error + var data models.SysSetting + msgID := e.MsgID + + db := e.Orm.Model(&data). + Where(c.GetId()).Updates(c) + if db.Error != nil { + log.Errorf("msgID[%s] db error:%s", msgID, err) + return err + } + if db.RowsAffected == 0 { + return errors.New("无权更新该数据") + + } + return nil +} diff --git a/cmd/migrate/migration/version/1599190683670_migrate.go b/cmd/migrate/migration/version/1599190683670_migrate.go index f1a472b0..f81afa71 100644 --- a/cmd/migrate/migration/version/1599190683670_migrate.go +++ b/cmd/migrate/migration/version/1599190683670_migrate.go @@ -96,7 +96,7 @@ func _1599190683670Test(db *gorm.DB, version string) error { } list10 := []models.SysSetting{ - {1, "go-admin管理系统", "https://gitee.com/mydearzwj/image/raw/master/img/go-admin.png", models.BaseModel{CreatedAt: time.Now(), UpdatedAt: time.Now()}}, + {1, "go-admin管理系统", "https://gitee.com/mydearzwj/image/raw/master/img/go-admin.png", common.ModelTime{CreatedAt: time.Now(), UpdatedAt: time.Now()}}, } list11 := []models.SysJob{ diff --git a/common/apis/api.go b/common/apis/api.go index 59ffbe62..66de1a9d 100644 --- a/common/apis/api.go +++ b/common/apis/api.go @@ -1,7 +1,9 @@ package apis import ( + "encoding/json" "github.com/gin-gonic/gin" + "go-admin/common/log" "gorm.io/gorm" "net/http" @@ -27,7 +29,9 @@ func (e *Api) Error(c *gin.Context, code int, err error, msg string) { res.Msg = msg } res.RequestId = tools.GenerateMsgIDFromContext(c) - c.AbortWithStatusJSON(http.StatusOK, res.ReturnError(code)) + Return := res.ReturnError(code) + setResult(c, Return, res.RequestId, code) + c.AbortWithStatusJSON(http.StatusOK, Return) } // OK 通常成功数据处理 @@ -38,7 +42,9 @@ func (e *Api) OK(c *gin.Context, data interface{}, msg string) { res.Msg = msg } res.RequestId = tools.GenerateMsgIDFromContext(c) - c.AbortWithStatusJSON(http.StatusOK, res.ReturnOK()) + Return := res.ReturnOK() + setResult(c, Return, res.RequestId, 200) + c.AbortWithStatusJSON(http.StatusOK, Return) } // PageOK 分页数据处理 @@ -53,5 +59,18 @@ func (e *Api) PageOK(c *gin.Context, result interface{}, count int, pageIndex in // Custom 兼容函数 func (e *Api) Custom(c *gin.Context, data gin.H) { - c.AbortWithStatusJSON(http.StatusOK, data) + msgID := tools.GenerateMsgIDFromContext(c) + Return := data + setResult(c, Return, msgID, 200) + c.AbortWithStatusJSON(http.StatusOK, Return) +} + +func setResult(c *gin.Context, Return interface{}, msgID string, status int) { + var jsonStr []byte + jsonStr, err := json.Marshal(Return) + if err != nil { + log.Debugf("MsgID[%s] setResult error: %#v", msgID, err.Error()) + } + c.Set("result", string(jsonStr)) + c.Set("status", status) } diff --git a/tools/app/return.go b/tools/app/return.go index 94a05a4c..bd92e256 100644 --- a/tools/app/return.go +++ b/tools/app/return.go @@ -1,6 +1,8 @@ package app import ( + "encoding/json" + "go-admin/common/log" "net/http" "github.com/gin-gonic/gin" @@ -10,6 +12,7 @@ import ( // 失败数据处理 func Error(c *gin.Context, code int, err error, msg string) { + msgID := tools.GenerateMsgIDFromContext(c) var res Response if err != nil { res.Msg = err.Error() @@ -18,18 +21,33 @@ func Error(c *gin.Context, code int, err error, msg string) { res.Msg = msg } res.RequestId = tools.GenerateMsgIDFromContext(c) - c.AbortWithStatusJSON(http.StatusOK, res.ReturnError(code)) + Return := res.ReturnError(code) + var jsonStr []byte + jsonStr, err = json.Marshal(Return) + if err != nil { + log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error()) + } + c.Set("result",string(jsonStr)) + c.AbortWithStatusJSON(http.StatusOK, Return) } // 通常成功数据处理 func OK(c *gin.Context, data interface{}, msg string) { + msgID := tools.GenerateMsgIDFromContext(c) var res Response res.Data = data if msg != "" { res.Msg = msg } res.RequestId = tools.GenerateMsgIDFromContext(c) - c.AbortWithStatusJSON(http.StatusOK, res.ReturnOK()) + Return := res.ReturnOK() + var jsonStr []byte + jsonStr, err := json.Marshal(Return) + if err != nil { + log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error()) + } + c.Set("result",string(jsonStr)) + c.AbortWithStatusJSON(http.StatusOK, Return) } // 分页数据处理 @@ -44,5 +62,13 @@ func PageOK(c *gin.Context, result interface{}, count int, pageIndex int, pageSi // 兼容函数 func Custum(c *gin.Context, data gin.H) { - c.AbortWithStatusJSON(http.StatusOK, data) + msgID := tools.GenerateMsgIDFromContext(c) + Return := data + var jsonStr []byte + jsonStr, err := json.Marshal(Return) + if err != nil { + log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error()) + } + c.Set("result",string(jsonStr)) + c.AbortWithStatusJSON(http.StatusOK, Return) }