package service import ( "errors" "fmt" "rtzh_elec_temperature/logger" "rtzh_elec_temperature/rtelec_app_public_lib/models" "rtzh_elec_temperature/tools" "strconv" "strings" "github.com/astaxie/beego/orm" ) //日志操作管理 type LogService struct { BaseService } //保存日志 func (c *LogService) SaveLog(logdesc string) { logobj := models.Log_operate{} logobj.Appid, _ = strconv.Atoi(RtelecManageApp().RegAppID) logobj.Context = logdesc logobj.Usrname = c.UserInfo.Usrname logobj.CreateAt = tools.NowTime() db := orm.NewOrm() db.Using("iss") _, err := db.Insert(&logobj) if err != nil { logger.Logger.Error(err) logger.Logger.Println(fmt.Sprintf("%+v", logobj)) } } //查询日志记录信息 func (c *LogService) GetLog(startdate, enddate, username, content string, pageIndex, pageSize int) (interface{}, error) { db := orm.NewOrm() db.Using("iss") sqlParameters := []interface{}{} sqlCommandText := "select * from log_operate " totalSql := "select count(1) recordcount from log_operate " var sqlCondition []string if content != "" { sqlCondition = append(sqlCondition, "context like ?") sqlParameters = append(sqlParameters, "%"+content+"%") } if username != "" { sqlCondition = append(sqlCondition, "usrname like ?") sqlParameters = append(sqlParameters, "%"+username+"%") } if startdate != "" && enddate != "" { sqlCondition = append(sqlCondition, "create_at between ? and ?") sqlParameters = append(sqlParameters, startdate) sqlParameters = append(sqlParameters, enddate) } else if startdate != "" { sqlCondition = append(sqlCondition, "create_at>=?") sqlParameters = append(sqlParameters, startdate) } else if enddate != "" { sqlCondition = append(sqlCondition, "create_at<=?") sqlParameters = append(sqlParameters, enddate) } sqlCondition = append(sqlCondition, "appid=?") sqlParameters = append(sqlParameters, RtelecManageApp().RegAppID) if len(sqlCondition) > 0 { sqlCommandText += " where " + strings.Join(sqlCondition, " and ") totalSql += " where " + strings.Join(sqlCondition, " and ") } sqlCommandText += fmt.Sprintf(" order by id desc limit %d,%d", (pageIndex-1)*pageSize, pageSize) list := []orm.Params{} _, err := db.Raw(sqlCommandText, sqlParameters).Values(&list) var total = 0 if err == nil { totalrowset := []orm.Params{} _, err = db.Raw(totalSql, sqlParameters).Values(&totalrowset) if err != nil { logger.Logger.Error(err) logger.Logger.Println(fmt.Sprintf("Error SQL:%s 参数:%+v", totalSql, sqlParameters)) } else if len(totalrowset) > 0 { total, _ = strconv.Atoi(tools.IsEmpty(totalrowset[0]["recordcount"])) } } else { logger.Logger.Error(err) logger.Logger.Println(fmt.Sprintf("Error SQL:%s 参数:%+v", sqlCommandText, sqlParameters)) } if len(list) == 0 { return map[string]interface{}{"list": []interface{}{}, "total": total}, err } else { return map[string]interface{}{"list": list, "total": total}, err } } //删除日志 func (c *LogService) Delete(id string) error { if id == "" { return errors.New("删除日志时ID不允许为空") } db := orm.NewOrm() db.Using("iss") idint, _ := strconv.ParseInt(id, 10, 64) logObject := models.Log_operate{Id: idint} _, err := db.Delete(&logObject) return err }