ProductOTA.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package Product
  2. import (
  3. "Yunlot/logs"
  4. "Yunlot/models"
  5. "github.com/astaxie/beego/cache"
  6. _ "github.com/astaxie/beego/cache/redis"
  7. "github.com/beego/beego/v2/adapter/orm"
  8. orm2 "github.com/beego/beego/v2/client/orm"
  9. _ "github.com/go-sql-driver/mysql"
  10. )
  11. // OTA
  12. type ProductOTA struct {
  13. Id int `orm:"column(ID);size(11);auto;pk" json:"Id" form:"Id"`
  14. T_uuid string `orm:"size(8);index" json:"T_uuid" form:"T_uuid"` // 用户识别码(8位) ,管理员可以为空
  15. T_ProductID string `orm:"size(8);index" json:"T_ProductID" form:"T_ProductID"` // 产品型号 随机生成(8位)
  16. T_name string `orm:"size(256);" json:"T_name" form:"T_name"` // 固件名称
  17. T_version string `orm:"size(200);" json:"T_version" form:"T_version"` // 版本
  18. T_file string `orm:"type(text);default('')" json:"T_file" form:"T_file"` // 文件
  19. T_md5 string `orm:"type(text);default('')" json:"T_md5" form:"T_md5"` // 文件 MD5
  20. T_size int `orm:"size(256);" json:"T_size" form:"T_size"` // 文件大小 字节
  21. T_describe string `orm:"type(text);default('')" json:"T_describe" form:"T_describe"` // 描述
  22. T_publish bool `orm:"" json:"T_publish" form:"T_publish"` // 全量发布(类型所有设备 全部更新)默认:不发布 \ 全量发布
  23. CreateTime models.Time `orm:"column(create_time);type(timestamp);auto_now_add" json:"CreateTime"`
  24. }
  25. func (t *ProductOTA) TableName() string {
  26. return "ProductOTA" // 数据库名称 // ************** 替换 FormulaList **************
  27. }
  28. var redis_ProductOTA cache.Cache
  29. func init() {
  30. //注册模型
  31. orm.RegisterModel(new(ProductOTA))
  32. }
  33. // 添加
  34. func (t *ProductOTA) Add() (is bool) {
  35. o := orm.NewOrm()
  36. id, err := o.Insert(t)
  37. if err != nil {
  38. return false
  39. }
  40. println(id)
  41. return true
  42. }
  43. // 获取
  44. func (t *ProductOTA) Read() (bool bool) {
  45. o := orm.NewOrm()
  46. err := o.Read(t) // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
  47. if err != nil {
  48. return false
  49. }
  50. return true
  51. }
  52. // 删除
  53. func (t *ProductOTA) Delete() bool {
  54. o := orm.NewOrm()
  55. if num, err := o.Delete(t); err == nil {
  56. logs.Println("Number of records deleted in database:", num)
  57. } else {
  58. return false
  59. }
  60. return true
  61. }
  62. // 获取列表
  63. func (t *ProductOTA) Lists(PageIndex int, PageSize int) (r []ProductOTA, Total int64) {
  64. o := orm.NewOrm()
  65. // 也可以直接使用 Model 结构体作为表名
  66. qs := o.QueryTable(new(ProductOTA))
  67. var offset int64
  68. if PageIndex <= 1 {
  69. offset = 0
  70. } else {
  71. offset = int64((PageIndex - 1) * PageSize)
  72. }
  73. // 筛选参数
  74. cond := orm.NewCondition()
  75. if len(t.T_name) > 0 {
  76. cond = cond.And("T_name__icontains", t.T_name) // .AndNot("status__in", 1).Or("profile__age__gt", 2000)
  77. }
  78. if len(t.T_version) > 0 {
  79. cond = cond.And("T_version__icontains", t.T_version) // .AndNot("status__in", 1).Or("profile__age__gt", 2000)
  80. }
  81. if len(t.T_uuid) == 8 {
  82. cond = cond.And("T_uuid", t.T_uuid) // 用户识别码
  83. }
  84. // 执行
  85. qs.Limit(PageSize, offset).SetCond((*orm2.Condition)(cond)).All(&r)
  86. Total, _ = qs.SetCond((*orm2.Condition)(cond)).Count()
  87. return r, Total
  88. }