package System import ( "fmt" "github.com/beego/beego/v2/adapter/orm" orm2 "github.com/beego/beego/v2/client/orm" "time" ) type News struct { Id int `orm:"column(ID);size(11);auto;pk"` T_uuid string `orm:"size(256);null"` // T_Title string `orm:"size(256);null"` // 标题 T_Url string `orm:"size(256);null"` // 地址 T_Tag int `orm:"size(2);null"` // 标记 0未阅读 1 已阅读 CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now 每次 model 保存时都会对时间自动更新 } type News_R struct { Id int T_uuid string T_Title string T_Url string T_Tag int CreateTime string } func (t *News) TableName() string { return "news" // 数据库名称 } func init() { //注册模型 orm.RegisterModel(new(News)) } func NewsToNews_R(r News) (m News_R) { m.Id = r.Id m.T_uuid = r.T_uuid m.T_Title = r.T_Title m.T_Url = r.T_Url m.T_Tag = r.T_Tag m.CreateTime = r.CreateTime.Format("2006-01-02 15:04:05") return } // 添加 func Add_News(r News) (id int64, err error) { o := orm.NewOrm() r.T_Tag = 0 id, err = o.Insert(&r) if err != nil { fmt.Println(err) } return id, err } // 获取列表 func Read_News_List(T_uuid string, T_Title string, T_Tag int, page int, page_z int) (r_ []News_R, cnt int64) { o := orm.NewOrm() // 也可以直接使用 Model 结构体作为表名 qs := o.QueryTable(new(News)) var offset int64 if page <= 1 { offset = 0 } else { offset = int64((page - 1) * page_z) } // 过滤 cond := orm.NewCondition() cond1 := cond.And("T_uuid", T_uuid) // .AndNot("status__in", 1).Or("profile__age__gt", 2000) if len(T_Title) > 0 { //cond1.AndCond(cond.And("T_class", class)) cond1 = cond1.And("T_Title__icontains", T_Title) } if T_Tag == 0 { cond1 = cond1.And("T_Tag", 0) } var r []News // 查询 qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond1)).OrderBy("-Id").All(&r) cnt, _ = qs.SetCond((*orm2.Condition)(cond1)).Count() for _, v := range r { r_ = append(r_, NewsToNews_R(v)) } return r_, cnt } // 修改 排序 func Update_News_Tag(Id int, T_uuid string) (err error) { o := orm.NewOrm() v := News{Id: Id} if err = o.Read(&v, "Id"); err == nil { var num int64 if v.T_uuid != T_uuid { return } v.T_Tag = 1 if num, err = o.Update(&v, "T_Tag"); err == nil { fmt.Println("Number of records updated in database:", num) } } return }