reward_develop_data.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package models
  2. import (
  3. "errors"
  4. "fmt"
  5. "reflect"
  6. "strings"
  7. "github.com/beego/beego/v2/client/orm"
  8. )
  9. type RewardDevelopData struct {
  10. Id int `orm:"column(id);auto" description:"社区发展奖励" json:"-"`
  11. UserId string `orm:"column(user_id);size(0);null" json:"user_id"`
  12. InviteReward string `orm:"column(invite_reward);size(255);null" description:"推荐总奖励" json:"invite_reward"`
  13. InviteRewardValue string `orm:"column(invite_reward_value);size(255);null" description:"推荐总奖励价值" json:"invite_reward_value"`
  14. SmallReward string `orm:"column(small_reward);size(255);null" description:"社区总奖励" json:"small_reward"`
  15. SmallRewardValue string `orm:"column(small_reward_value);size(255);null" description:"社区总奖励价值" json:"small_reward_value"`
  16. // 关键修复点:添加 json 标签
  17. TodayCommunitySales string `orm:"column(today_community_sales);size(255);null" description:"今日社区销售" json:"today_community_sales"`
  18. }
  19. func (t *RewardDevelopData) TableName() string {
  20. return "reward_develop_data"
  21. }
  22. func init() {
  23. orm.RegisterModel(new(RewardDevelopData))
  24. }
  25. // AddRewardDevelopData insert a new RewardDevelopData into database and returns
  26. // last inserted Id on success.
  27. func AddRewardDevelopData(m *RewardDevelopData) (id int64, err error) {
  28. o := orm.NewOrm()
  29. id, err = o.Insert(m)
  30. return
  31. }
  32. // GetRewardDevelopDataById retrieves RewardDevelopData by Id. Returns error if
  33. // Id doesn't exist
  34. func GetRewardDevelopDataById(id int) (v *RewardDevelopData, err error) {
  35. o := orm.NewOrm()
  36. v = &RewardDevelopData{Id: id}
  37. if err = o.Read(v); err == nil {
  38. return v, nil
  39. }
  40. return nil, err
  41. }
  42. // GetAllRewardDevelopData retrieves all RewardDevelopData matches certain condition. Returns empty list if
  43. // no records exist
  44. func GetAllRewardDevelopData(query map[string]string, fields []string, sortby []string, order []string,
  45. offset int64, limit int64) (ml []interface{}, err error) {
  46. o := orm.NewOrm()
  47. qs := o.QueryTable(new(RewardDevelopData))
  48. // query k=v
  49. for k, v := range query {
  50. // rewrite dot-notation to Object__Attribute
  51. k = strings.Replace(k, ".", "__", -1)
  52. if strings.Contains(k, "isnull") {
  53. qs = qs.Filter(k, (v == "true" || v == "1"))
  54. } else {
  55. qs = qs.Filter(k, v)
  56. }
  57. }
  58. // order by:
  59. var sortFields []string
  60. if len(sortby) != 0 {
  61. if len(sortby) == len(order) {
  62. // 1) for each sort field, there is an associated order
  63. for i, v := range sortby {
  64. orderby := ""
  65. if order[i] == "desc" {
  66. orderby = "-" + v
  67. } else if order[i] == "asc" {
  68. orderby = v
  69. } else {
  70. return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
  71. }
  72. sortFields = append(sortFields, orderby)
  73. }
  74. qs = qs.OrderBy(sortFields...)
  75. } else if len(sortby) != len(order) && len(order) == 1 {
  76. // 2) there is exactly one order, all the sorted fields will be sorted by this order
  77. for _, v := range sortby {
  78. orderby := ""
  79. if order[0] == "desc" {
  80. orderby = "-" + v
  81. } else if order[0] == "asc" {
  82. orderby = v
  83. } else {
  84. return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
  85. }
  86. sortFields = append(sortFields, orderby)
  87. }
  88. } else if len(sortby) != len(order) && len(order) != 1 {
  89. return nil, errors.New("Error: 'sortby', 'order' sizes mismatch or 'order' size is not 1")
  90. }
  91. } else {
  92. if len(order) != 0 {
  93. return nil, errors.New("Error: unused 'order' fields")
  94. }
  95. }
  96. var l []RewardDevelopData
  97. qs = qs.OrderBy(sortFields...)
  98. if _, err = qs.Limit(limit, offset).All(&l, fields...); err == nil {
  99. if len(fields) == 0 {
  100. for _, v := range l {
  101. ml = append(ml, v)
  102. }
  103. } else {
  104. // trim unused fields
  105. for _, v := range l {
  106. m := make(map[string]interface{})
  107. val := reflect.ValueOf(v)
  108. for _, fname := range fields {
  109. m[fname] = val.FieldByName(fname).Interface()
  110. }
  111. ml = append(ml, m)
  112. }
  113. }
  114. return ml, nil
  115. }
  116. return nil, err
  117. }
  118. // UpdateRewardDevelopData updates RewardDevelopData by Id and returns error if
  119. // the record to be updated doesn't exist
  120. func UpdateRewardDevelopDataById(m *RewardDevelopData) (err error) {
  121. o := orm.NewOrm()
  122. v := RewardDevelopData{Id: m.Id}
  123. // ascertain id exists in the database
  124. if err = o.Read(&v); err == nil {
  125. var num int64
  126. if num, err = o.Update(m); err == nil {
  127. fmt.Println("Number of records updated in database:", num)
  128. }
  129. }
  130. return
  131. }
  132. // DeleteRewardDevelopData deletes RewardDevelopData by Id and returns error if
  133. // the record to be deleted doesn't exist
  134. func DeleteRewardDevelopData(id int) (err error) {
  135. o := orm.NewOrm()
  136. v := RewardDevelopData{Id: id}
  137. // ascertain id exists in the database
  138. if err = o.Read(&v); err == nil {
  139. var num int64
  140. if num, err = o.Delete(&RewardDevelopData{Id: id}); err == nil {
  141. fmt.Println("Number of records deleted in database:", num)
  142. }
  143. }
  144. return
  145. }