Browse Source

add:日志列表,打印日志优化

zoie 2 years ago
parent
commit
3132d81145
8 changed files with 303 additions and 44 deletions
  1. 47 11
      controllers/Logs.go
  2. 33 14
      controllers/TaskData.go
  3. 32 0
      lib/lib.go
  4. 81 0
      models/Account/Tokey.go
  5. 16 15
      models/System/Logs.go
  6. 79 0
      models/System/UserLogs.go
  7. 4 4
      models/Task/TaskData.go
  8. 11 0
      routers/Logs.go

+ 47 - 11
controllers/Logs.go

@@ -14,24 +14,60 @@ type LogsController struct {
 
 // 列表 -
 func (c *LogsController) List() {
+	var log_jsons lib.LOG_JSONS
 	page, _ := c.GetInt("page")
-	println(page)
 	if page < 1 {
 		page = 1
 	}
+	page_z, _ := c.GetInt("page_z")
+	if page_z < 1 {
+		page_z = conf.Page_size
+	}
 
 	Class_1 := c.GetString("Class_1")
 
-	c.Data["Class_1"] = Class_1
-	c.Data["Class_List"] = System.Read_Logs_Class()
+	var cnt int64
+	List, cnt := System.Read_Logs_ALL(page, page_z, Class_1)
+	page_size := math.Ceil(float64(cnt) / float64(page_z))
+	log_jsons.Class_1 = Class_1
+	log_jsons.Class_List = System.Read_Logs_Class()
+	log_jsons.List = List
+	log_jsons.Page = page
+	log_jsons.Page_size = int(page_size)
+	log_jsons.Pages = lib.Func_page(int64(page), int64(page_size))
+	log_jsons.Num = int(cnt)
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: log_jsons}
+	c.ServeJSON()
+	return
+}
+
+// 列表 -
+func (c *LogsController) UserLogs() {
+	var log_jsons lib.LOG_JSONS
+	page, _ := c.GetInt("page")
+	if page < 1 {
+		page = 1
+	}
+	page_z, _ := c.GetInt("page_z")
+	if page_z < 1 {
+		page_z = conf.Page_size
+	}
+
+	Class_1 := c.GetString("Class_1")
 
 	var cnt int64
-	c.Data["List"], cnt = System.Read_Logs_ALL(page, Class_1)
-	page_size := math.Ceil(float64(cnt) / float64(conf.Page_size))
-	c.Data["Page"] = page
-	c.Data["Page_size"] = page_size
-	c.Data["Pages"] = lib.Func_page(int64(page), int64(page_size))
-	c.Data["cnt"] = cnt
-
-	c.TplName = "System/Logs.html"
+	List, cnt := System.Read_UserLogs_ALL(page, page_z, Class_1)
+	page_size := math.Ceil(float64(cnt) / float64(page_z))
+	log_jsons.Class_1 = Class_1
+	log_jsons.Class_List = System.Read_UserLogs_Class()
+	log_jsons.List = List
+	log_jsons.Page = page
+	log_jsons.Page_size = int(page_size)
+	log_jsons.Pages = lib.Func_page(int64(page), int64(page_size))
+	log_jsons.Num = int(cnt)
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: log_jsons}
+	c.ServeJSON()
+	return
 }

+ 33 - 14
controllers/TaskData.go

@@ -84,6 +84,8 @@ func (c *TaskDataController) TaskDataClass_List() {
 
 // 添加-
 func (c *TaskDataController) TaskData_AddS() {
+	// 获取登录用户的uuid
+	T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
 
 	T_task_id := c.GetString("T_task_id")
 	Task_r, is := Task.Read_Task(T_task_id)
@@ -118,7 +120,7 @@ func (c *TaskDataController) TaskData_AddS() {
 		}
 	}
 
-	// System.Add_UserLogs(user_r.T_uuid, "任务数据", "添加数据"+Task_r.T_name, Task_r.T_task_id+"结果:"+string(len(T_Data_list))+"/"+string(T_Data_list_x)+"|=> "+T_Data)
+	System.Add_UserLogs_T(T_uuid, "任务数据", "添加数据"+Task_r.T_name, Task_r.T_task_id+"结果:"+string(len(T_Data_list))+"/"+string(T_Data_list_x)+"|=> "+T_Data)
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: strconv.Itoa(T_Data_list_x)}
 	c.ServeJSON()
@@ -127,6 +129,8 @@ func (c *TaskDataController) TaskData_AddS() {
 
 // 添加-
 func (c *TaskDataController) TaskData_Add() {
+	// 获取登录用户的uuid
+	T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
 
 	T_sn := c.GetString("T_sn")
 	T_id, _ := c.GetInt("T_id")
@@ -149,7 +153,7 @@ func (c *TaskDataController) TaskData_Add() {
 		return
 	}
 
-	// System.Add_UserLogs(user_r.T_uuid, "任务数据", "添加数据"+Task_r.T_name, Task_r.T_task_id+"|"+T_sn+"|"+strconv.Itoa(T_id)+"|"+fmt.Sprintf("%.2f", T_t)+"|"+fmt.Sprintf("%.2f", T_rh)+T_time)
+	System.Add_UserLogs_T(T_uuid, "任务数据", "添加数据"+Task_r.T_name, Task_r.T_task_id+"|"+T_sn+"|"+strconv.Itoa(T_id)+"|"+fmt.Sprintf("%.2f", T_t)+"|"+fmt.Sprintf("%.2f", T_rh)+T_time)
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
 	c.ServeJSON()
@@ -158,6 +162,8 @@ func (c *TaskDataController) TaskData_Add() {
 
 // 修改-
 func (c *TaskDataController) TaskData_Up() {
+	// 获取登录用户的uuid
+	T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
 
 	Id, err := c.GetInt("Id")
 	if err != nil {
@@ -194,7 +200,7 @@ func (c *TaskDataController) TaskData_Up() {
 		return
 	}
 
-	// System.Add_UserLogs(user_r.T_uuid, "任务数据", "修改数据"+Task_r.T_name, Task_r.T_task_id+"|"+strconv.Itoa(Id)+"|"+fmt.Sprintf("%.2f", T_t)+"|"+fmt.Sprintf("%.2f", T_rh)+T_time)
+	System.Add_UserLogs_T(T_uuid, "任务数据", "修改数据"+Task_r.T_name, Task_r.T_task_id+"|"+strconv.Itoa(Id)+"|"+fmt.Sprintf("%.2f", T_t)+"|"+fmt.Sprintf("%.2f", T_rh)+T_time)
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
 	c.ServeJSON()
@@ -203,6 +209,8 @@ func (c *TaskDataController) TaskData_Up() {
 
 // 删除-
 func (c *TaskDataController) TaskData_Del() {
+	// 获取登录用户的uuid
+	T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
 
 	Id, err := c.GetInt("Id")
 	if err != nil {
@@ -225,7 +233,7 @@ func (c *TaskDataController) TaskData_Del() {
 		c.ServeJSON()
 		return
 	}
-	// System.Add_UserLogs(user_r.T_uuid, "任务数据", "删除"+Task_r.T_name, Task_r.T_task_id+"|"+strconv.Itoa(Id))
+	System.Add_UserLogs_T(T_uuid, "任务数据", "删除"+Task_r.T_name, Task_r.T_task_id+"|"+strconv.Itoa(Id))
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
 	c.ServeJSON()
@@ -234,6 +242,8 @@ func (c *TaskDataController) TaskData_Del() {
 
 // 删除-
 func (c *TaskDataController) TaskData_Del_t_id() {
+	// 获取登录用户的uuid
+	T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
 
 	Id, err := c.GetInt("Id")
 	if err != nil {
@@ -256,7 +266,7 @@ func (c *TaskDataController) TaskData_Del_t_id() {
 		c.ServeJSON()
 		return
 	}
-	// System.Add_UserLogs(user_r.T_uuid, "任务数据", "删除"+Task_r.T_name, Task_r.T_task_id+"|"+strconv.Itoa(Id))
+	System.Add_UserLogs_T(T_uuid, "任务数据", "删除"+Task_r.T_name, Task_r.T_task_id+"|"+strconv.Itoa(Id))
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
 	c.ServeJSON()
@@ -342,6 +352,9 @@ func (c *TaskDataController) Export_Data_Excel() {
 
 // 打包数据本地数据
 func (c *TaskDataController) TaskData_Import_TaskData() {
+	// 获取登录用户的uuid
+	T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+
 	T_task_id := c.GetString("T_task_id")
 	_, is := Task.Read_Task(T_task_id)
 	if !is {
@@ -350,24 +363,25 @@ func (c *TaskDataController) TaskData_Import_TaskData() {
 		return
 	}
 	sql_file := fmt.Sprintf("%sZ_TaskData_%s.sql", conf.Sql_Temp_Path, T_task_id)
-	err := Task.Dump_TaskData(T_task_id, conf.MysqlServer2_Username, conf.MysqlServer2_Password, conf.MysqlServer2_UrlPort, conf.MysqlServer2_Database, sql_file)
+	org, err := Task.Dump_TaskData(T_task_id, conf.MysqlServer2_Username, conf.MysqlServer2_Password, conf.MysqlServer2_UrlPort, conf.MysqlServer2_Database, sql_file)
 	if err != nil {
-		System.Add_Logs("任务数据-打包本地数据", "导出线上数据Z_TaskData_"+T_task_id, err.Error())
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "Z_TaskData_" + T_task_id + "线上数据导出失败!"}
 		c.ServeJSON()
 		return
 	}
+	System.Add_UserLogs_T(T_uuid, "任务数据-打包本地数据", "导出线上数据Z_TaskData_"+T_task_id, org)
 
 	i := 0
 	flag := false
 	Task.CREATE_TaskData(conf.Local_AliasName, T_task_id)
 	for i < 10 {
 		Task.Truncate_TaskData(conf.Local_AliasName, T_task_id)
-		err = Task.Insert_TaskData(conf.MysqlServer_Username, conf.MysqlServer_Password, conf.MysqlServer_UrlPort, conf.MysqlServer_Database, sql_file)
+		org, err := Task.Insert_TaskData(conf.MysqlServer_Username, conf.MysqlServer_Password, conf.MysqlServer_UrlPort, conf.MysqlServer_Database, sql_file)
 		if err != nil {
 			logs.Println("任务数据-打包本地数据", "线下导入数据Z_TaskData_"+T_task_id, err.Error())
 		} else {
 			if Task.Check_TaskData_Num(T_task_id) {
+				System.Add_UserLogs_T(T_uuid, "任务数据-打包本地数据", "线下导入数据Z_TaskData_"+T_task_id, org)
 				flag = true
 				break
 			}
@@ -376,7 +390,6 @@ func (c *TaskDataController) TaskData_Import_TaskData() {
 	}
 	// 重试10次后仍然没有成功导入数据
 	if !flag {
-		System.Add_Logs("任务数据-打包本地数据", "线下导入数据Z_TaskData_"+T_task_id, err.Error())
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "Z_TaskData_" + T_task_id + "线下导入数据失败!"}
 		c.ServeJSON()
 		return
@@ -392,6 +405,9 @@ func (c *TaskDataController) TaskData_Import_TaskData() {
 
 // 更新线上数据
 func (c *TaskDataController) TaskData_Up_TaskData() {
+	// 获取登录用户的uuid
+	T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+
 	T_task_id := c.GetString("T_task_id")
 
 	Task_r, is := Task.Read_Task(T_task_id)
@@ -402,23 +418,25 @@ func (c *TaskDataController) TaskData_Up_TaskData() {
 	}
 
 	sql_file := fmt.Sprintf("%sZ_TaskData_%s.sql", conf.Sql_Temp_Path, T_task_id)
-	err := Task.Dump_TaskData(T_task_id, conf.MysqlServer_Username, conf.MysqlServer_Password, conf.MysqlServer_UrlPort, conf.MysqlServer_Database, sql_file)
+	org, err := Task.Dump_TaskData(T_task_id, conf.MysqlServer_Username, conf.MysqlServer_Password, conf.MysqlServer_UrlPort, conf.MysqlServer_Database, sql_file)
 	if err != nil {
-		System.Add_Logs("任务数据-更新线上数据", "导出线下数据Z_TaskData_"+T_task_id, err.Error())
+		logs.Println(T_uuid, "任务数据-更新线上数据", "导出线下数据Z_TaskData_"+T_task_id, err.Error())
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "Z_TaskData_" + T_task_id + "线下数据导出失败!"}
 		c.ServeJSON()
 		return
 	}
+	System.Add_UserLogs_T(T_uuid, "任务数据-更新线上数据", "线上导入数据Z_TaskData_"+T_task_id, org)
 
 	i := 0
 	flag := false
 	for i < 10 {
 		Task.Truncate_TaskData(conf.Server_AliasName, T_task_id)
-		err = Task.Insert_TaskData(conf.MysqlServer2_Username, conf.MysqlServer2_Password, conf.MysqlServer2_UrlPort, conf.MysqlServer2_Database, sql_file)
+		org, err = Task.Insert_TaskData(conf.MysqlServer2_Username, conf.MysqlServer2_Password, conf.MysqlServer2_UrlPort, conf.MysqlServer2_Database, sql_file)
 		if err != nil {
-			System.Add_Logs("任务数据-更新线上数据", "线上导入数据Z_TaskData_"+T_task_id, err.Error())
+			logs.Println(T_uuid, "任务数据-更新线上数据", "线上导入数据Z_TaskData_"+T_task_id, err.Error())
 		} else {
 			if Task.Check_TaskData_Num(T_task_id) {
+				System.Add_UserLogs_T(T_uuid, "任务数据-更新线上数据", "线上导入数据Z_TaskData_"+T_task_id, org)
 				flag = true
 				break
 			}
@@ -438,11 +456,12 @@ func (c *TaskDataController) TaskData_Up_TaskData() {
 	// 提交后将当前任务 报告编写 标志为 1
 	Task_r.T_delivery_state = 1
 	if !Task.Update_Task(Task_r, "T_delivery_state") {
-		System.Add_Logs("任务数据-更新线上数据", "修改任务报告编写状态"+Task_r.T_name, Task_r.T_task_id)
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
 		c.ServeJSON()
 		return
 	}
+	// 向线上用户日志表写入数据
+	System.Add_UserLogs_T(T_uuid, "任务", "修改", Task_r)
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
 	c.ServeJSON()

+ 32 - 0
lib/lib.go

@@ -3,11 +3,13 @@ package lib
 import (
 	"bytes"
 	"bzd_server/logs"
+	"bzd_server/models/Account"
 	"encoding/json"
 	"errors"
 	"fmt"
 	"github.com/signintech/gopdf"
 	"io/ioutil"
+	"log"
 	"math/rand"
 	"os/exec"
 	"runtime"
@@ -55,6 +57,36 @@ type R_JSONS_s struct {
 	Pages     []Page_T
 }
 
+type LOG_JSONS struct {
+	//必须的大写开头
+	Class_1    string
+	Class_List interface{}
+	List       interface{}
+	Num        int
+	Page       int
+	Page_size  int
+	Pages      []Page_T
+}
+
+// 获取登录用户uuid
+func GetAdminT_Uuid(GetCookie string, GetString string) (string, bool) {
+	// 自适应 参数
+	User_tokey := GetCookie
+	if len(User_tokey) == 0 {
+		User_tokey = GetString
+	}
+	if len(User_tokey) == 0 {
+		return "", false
+	}
+	// 判断 tokey 是否存在
+	tokey, is := Account.Read_Tokey(User_tokey)
+	if !is {
+		return "", false
+	}
+	log.Println("登录 User_uuid 为:", tokey)
+	return tokey, true
+}
+
 // func_page 分页   [{3 1} {4 2} {4 3} {4 4} {4 5} {4 6} {4 7} {4 8} {4 9} {5 2}]-
 type Page_T struct {
 	A int

+ 81 - 0
models/Account/Tokey.go

@@ -0,0 +1,81 @@
+package Account
+
+import (
+	"bzd_server/conf"
+	"fmt"
+	"github.com/astaxie/beego/cache"
+	_ "github.com/astaxie/beego/cache/redis"
+	uuid "github.com/satori/go.uuid"
+	"time"
+)
+
+var redisCache_Tokey cache.Cache
+
+func init() {
+	//注册模型
+	//orm.RegisterModel(new(Tokey))
+
+	config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
+		"redis_Tokey", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
+	fmt.Println(config)
+	var err error
+	redisCache_Tokey, err = cache.NewCache("redis", config)
+	if err != nil || redisCache_Tokey == nil {
+		errMsg := "failed to init redis"
+		fmt.Println(errMsg, err)
+	}
+}
+
+// ---------------- Redis -------------------
+//Redis_Set(m.T_sn,m) // Redis 更新缓存
+func Redis_Tokey_Set(key string, r string) (err error) {
+	err = redisCache_Tokey.Put(key, r, 24*time.Hour)
+	if err != nil {
+		fmt.Println("set key:", key, ",value:", r, err)
+	}
+	return
+}
+
+//if r,is :=Redis_Get(T_sn);is{
+//return r,nil
+//}
+func Redis_Tokey_Get(key string) (r string, is bool) {
+	if redisCache_Tokey.IsExist(key) {
+		//println("找到key:",key)
+		v := redisCache_Tokey.Get(key)
+		value := string(v.([]byte))
+		return value, true
+	}
+	//println("没有 找到key:",key)
+	return "", false
+}
+
+func Redis_DelK(key string) (err error) {
+	err = redisCache_Tokey.Delete(key)
+	return
+}
+
+// ---------------- 特殊方法 -------------------
+
+// 验证 TOKEY
+func Read_Tokey(User_tokey string) (string, bool) {
+
+	return Redis_Tokey_Get(User_tokey)
+}
+
+// 添加 Tokey
+func Add_Tokey(User_uuid string) (Tokey string) {
+
+	for true {
+		Tokey = uuid.NewV4().String()
+		_, is := Redis_Tokey_Get(Tokey)
+		if !is {
+			break
+		}
+		fmt.Print("申请 TOKEY 重复!重新生成。", Tokey)
+	}
+	Redis_Tokey_Set(Tokey, User_uuid)
+
+	return Tokey
+}
+

+ 16 - 15
models/System/Logs.go

@@ -1,7 +1,6 @@
 package System
 
 import (
-	"bzd_server/conf"
 	"fmt"
 	"github.com/beego/beego/v2/adapter/orm"
 	orm2 "github.com/beego/beego/v2/client/orm"
@@ -10,12 +9,15 @@ import (
 
 type Logs struct {
 	Id         int    `orm:"column(ID);size(11);auto;pk"`
-	Logs_class string `orm:"size(256);null"` //
-	Logs_Title string `orm:"size(256);null"` // 标题
-	Logs_Txt string `orm:"type(text);null"` // 详情
+	Logs_class string `orm:"size(256);null"`  //
+	Logs_Title string `orm:"size(256);null"`  // 标题
+	Logs_Txt   string `orm:"type(text);null"` // 详情
 
-	CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"`     //auto_now 每次 model 保存时都会对时间自动更新
-	UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"` //auto_now_add 第一次保存时才设置时间
+	CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now 每次 model 保存时都会对时间自动更新
+	UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"`     //auto_now_add 第一次保存时才设置时间
+}
+
+type L_JSON struct {
 }
 
 func (t *Logs) TableName() string {
@@ -29,15 +31,14 @@ func init() {
 }
 
 // 添加  System.Add_Logs("MqttServer","参数请求 [Rt_Parameter]","base")
-func Add_Logs(Logs_class string,Logs_Title string,Logs_Txt string) {
+func Add_Logs(Logs_class string, Logs_Title string, Logs_Txt string) {
 	o := orm.NewOrm()
-	m := Logs{Logs_class:Logs_class,Logs_Title:Logs_Title,Logs_Txt:Logs_Txt}
+	m := Logs{Logs_class: Logs_class, Logs_Title: Logs_Title, Logs_Txt: Logs_Txt}
 	o.Insert(&m)
 }
 
-
 // 获取列表
-func Read_Logs_ALL(page int,Logs_class string) (r []Logs,cnt int64) {
+func Read_Logs_ALL(page, page_z int, Logs_class string) (r []Logs, cnt int64) {
 
 	o := orm.NewOrm()
 	// 也可以直接使用 Model 结构体作为表名
@@ -47,17 +48,19 @@ func Read_Logs_ALL(page int,Logs_class string) (r []Logs,cnt int64) {
 	if page <= 1 {
 		offset = 0
 	} else {
-		offset = int64((page - 1) * conf.Page_size)
+		offset = int64((page - 1) * page_z)
 	}
 
-	qs.Limit(conf.Page_size, offset).Filter("Logs_class__icontains", Logs_class).OrderBy("-Id").All(&r)
+	qs.Limit(page_z, offset).Filter("Logs_class__icontains", Logs_class).OrderBy("-Id").All(&r)
 	cnt, _ = qs.Filter("Logs_class__icontains", Logs_class).Count()
 
-	return r,cnt
+	return r, cnt
 }
+
 type CLASS_lists struct {
 	Logs_class string
 }
+
 // 获取列表
 func Read_Logs_Class() (lists orm2.ParamsList) {
 	o := orm.NewOrm()
@@ -68,7 +71,5 @@ func Read_Logs_Class() (lists orm2.ParamsList) {
 	}
 	fmt.Println(len(pl_lists))
 
-
 	return pl_lists
 }
-

+ 79 - 0
models/System/UserLogs.go

@@ -0,0 +1,79 @@
+package System
+
+import (
+	"encoding/json"
+	"fmt"
+	"github.com/beego/beego/v2/adapter/orm"
+	orm2 "github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type UserLogs struct {
+	Id         int    `orm:"column(ID);size(11);auto;pk"`
+	Logs_uuid  string `orm:"size(256);null"`  //
+	Logs_class string `orm:"size(256);null"`  //
+	Logs_Title string `orm:"size(256);null"`  // 标题
+	Logs_Txt   string `orm:"type(text);null"` // 详情
+
+	CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now 每次 model 保存时都会对时间自动更新
+	UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"`     //auto_now_add 第一次保存时才设置时间
+}
+
+func (t *UserLogs) TableName() string {
+	return "UserLogs" // 数据库名称   // ************** 替换 FormulaList **************
+}
+
+func init() {
+	//注册模型
+	orm.RegisterModel(new(UserLogs))
+
+}
+
+// 添加  System.Add_UserLogs(user_r.T_user,"登陆", "管理员登陆", "")
+func Add_UserLogs(Logs_uuid string, Logs_class string, Logs_Title string, Logs_Txt string) {
+	o := orm.NewOrm()
+	m := UserLogs{Logs_uuid: Logs_uuid, Logs_class: Logs_class, Logs_Title: Logs_Title, Logs_Txt: Logs_Txt}
+	o.Insert(&m)
+}
+func Add_UserLogs_T(Logs_uuid string, Logs_class string, Logs_Title string, Logs_Txt_T interface{}) {
+	o := orm.NewOrm()
+	jsonStu, err := json.Marshal(Logs_Txt_T)
+	if err != nil {
+		fmt.Println("Add_UserLogs_T JSON ,err=", err)
+	}
+	m := UserLogs{Logs_uuid: Logs_uuid, Logs_class: Logs_class, Logs_Title: Logs_Title, Logs_Txt: string(jsonStu)}
+	o.Insert(&m)
+}
+
+// 获取列表
+func Read_UserLogs_ALL(page, page_z int, Logs_class string) (r []UserLogs, cnt int64) {
+
+	o := orm.NewOrm()
+	// 也可以直接使用 Model 结构体作为表名
+
+	qs := o.QueryTable(new(UserLogs))
+	var offset int64
+	if page <= 1 {
+		offset = 0
+	} else {
+		offset = int64((page - 1) * page_z)
+	}
+
+	qs.Limit(page_z, offset).Filter("Logs_class__icontains", Logs_class).OrderBy("-Id").All(&r)
+	cnt, _ = qs.Filter("Logs_class__icontains", Logs_class).Count()
+
+	return r, cnt
+}
+
+// 获取列表
+func Read_UserLogs_Class() (lists orm2.ParamsList) {
+	o := orm.NewOrm()
+	var pl_lists orm2.ParamsList
+	num, err := o.Raw("SELECT DISTINCT logs_class FROM UserLogs LIMIT 0,1000").ValuesFlat(&pl_lists)
+	if err == nil {
+		fmt.Println("user nums: ", num)
+	}
+	fmt.Println(len(pl_lists))
+
+	return pl_lists
+}

+ 4 - 4
models/Task/TaskData.go

@@ -405,7 +405,7 @@ func Add_TaskData_List(alias_name, T_task_id string, TaskList []*TaskData_) (int
 	return succeeds, fails
 }
 
-func Dump_TaskData(T_task_id, root, password, url_port, database, sql_file string) error {
+func Dump_TaskData(T_task_id, root, password, url_port, database, sql_file string) (string, error) {
 	// url_port 127.0.0.1:3306
 	// mysql8.0 以上加 --column-statistics=0
 	// mysqldump --column-statistics=0 -uroot -proot -h127.0.0.1 -P3306 cold_verify Z_TaskData_ixEfo5zk2Oeb> /Data/Z_TaskData_ixEfo5zk2Oeb.sql
@@ -422,10 +422,10 @@ func Dump_TaskData(T_task_id, root, password, url_port, database, sql_file strin
 
 	logs.Println(org)
 	_, err := lib.Command(org)
-	return err
+	return org, err
 }
 
-func Insert_TaskData(root, password, url_port, database, sql_file string) error {
+func Insert_TaskData(root, password, url_port, database, sql_file string) (string, error) {
 	// url_port 127.0.0.1:3306
 	// mysql -uroot -proot -h127.0.0.1 -P3306 cold_verify_local < /data/Z_TaskData_ixEfo5zk2Oeb.sql
 	host_port := strings.Split(url_port, ":")
@@ -433,7 +433,7 @@ func Insert_TaskData(root, password, url_port, database, sql_file string) error
 		root, password, host_port[0], host_port[1], database, sql_file)
 	logs.Println(org)
 	_, err := lib.Command(org)
-	return err
+	return org, err
 }
 
 func Read_Local_Mysql_Version() int {

+ 11 - 0
routers/Logs.go

@@ -0,0 +1,11 @@
+package routers
+
+import (
+	"bzd_server/controllers"
+	beego "github.com/beego/beego/v2/server/web"
+)
+
+func init() {
+	beego.Router("/Logs/List", &controllers.LogsController{}, "*:List")         //
+	beego.Router("/UserLogs/List", &controllers.LogsController{}, "*:UserLogs") //
+}