reward_range_data.go 4.9 KB

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