package DataSource import ( "Cold_Api/controllers/lib" "github.com/beego/beego/v2/adapter/orm" orm2 "github.com/beego/beego/v2/client/orm" "github.com/beego/beego/v2/core/logs" "time" ) // 产品类型 type DataSource struct { Id int `orm:"column(ID);size(11);auto;pk"` T_id string `orm:"size(256);null"` // 数据源id T_name string `orm:"size(256);null"` // 数据源名称 T_sql string `orm:"type(text);null"` // sql语句 CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间 UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"` //auto_now 每次 model 保存时都会对时间自动更新 } type DataSource_R struct { Id int T_id string T_name string T_sql string CreateTime string UpdateTime string } func (t *DataSource) TableName() string { return "data_source" // 数据库名称 // ************** 替换 FormulaList ************** } func init() { //注册模型 orm.RegisterModel(new(DataSource)) } // ---------------- 特殊方法 ------------------- func DataSourceToDataSource_R(t DataSource) (r DataSource_R) { r.Id = t.Id r.T_id = t.T_id r.T_name = t.T_name r.T_sql = t.T_sql r.CreateTime = t.CreateTime.Format("2006-01-02 15:04:05") r.UpdateTime = t.UpdateTime.Format("2006-01-02 15:04:05") return r } // 获取 ById func Read_DataSource_ById(id int) (r DataSource, err error) { o := orm.NewOrm() r = DataSource{Id: id} err = o.Read(&r) if err != nil { logs.Error(lib.FuncName(), err) return r, err } return r, err } func Read_DataSource_ByT_id(T_id string) (r DataSource, err error) { o := orm.NewOrm() r = DataSource{T_id: T_id} err = o.Read(&r, "T_id") if err != nil { logs.Error(lib.FuncName(), err) return r, err } return r, err } // 添加 func Add_DataSource(r DataSource) (id int, err error) { o := orm.NewOrm() // 生成编号 rand_x := 0 for true { r.T_id = lib.GetRandstring(6, "", int64(rand_x)) // 1,336,336 err = o.Read(&r, "T_id") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名 if err != nil { break } rand_x += 1 } _, err = o.Insert(&r) if err != nil { logs.Error(lib.FuncName(), err) return } id = r.Id return } func Update_DataSource(r DataSource, cols ...string) error { o := orm.NewOrm() _, err := o.Update(&r, cols...) if err != nil { logs.Error(lib.FuncName(), err) return err } return nil } // 删除 func Delete_DataSource_ById(id int) (err error) { o := orm.NewOrm() v := DataSource{Id: id} _, err = o.Delete(&v) if err != nil { logs.Error(lib.FuncName(), err) return err } return nil } func Exec_DataSource_Sql(sql string, data []interface{}) (lists []orm2.Params) { o := orm.NewOrm() var pl_lists []orm2.Params _, err := o.Raw(sql).SetArgs(data...).Values(&pl_lists) if err != nil { logs.Error(lib.FuncName(), err) } return pl_lists } // 获取列表 func Read_DataSource_List(T_name string, page int, page_z int) (r []DataSource_R, cnt int64) { o := orm.NewOrm() // 也可以直接使用 Model 结构体作为表名 var map_r []DataSource qs := o.QueryTable(new(DataSource)) var offset int64 if page <= 1 { offset = 0 } else { offset = int64((page - 1) * page_z) } cond := orm.NewCondition() if len(T_name) > 0 { cond = cond.And("T_name__icontains", T_name) } _, err := qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond)).OrderBy("-Id").All(&map_r) if err != nil { logs.Error(lib.FuncName(), err) return } cnt, err = qs.SetCond((*orm2.Condition)(cond)).Count() if err != nil { logs.Error(lib.FuncName(), err) return } for _, v := range map_r { r = append(r, DataSourceToDataSource_R(v)) } return r, cnt }