reward_range_data.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  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:"代理奖励列表" json:"-"`
  11. UserId string `orm:"column(user_id);size(0);null" json:"user_id"`
  12. Sales string `orm:"column(sales);size(255);null" description:"总累计业绩" json:"sales"`
  13. PromoteName string `orm:"column(promote_name);size(255);null" description:"级别" json:"promote_name"`
  14. CommunityReward string `orm:"column(community_reward);size(255);null" description:"累计奖励" json:"community_reward"`
  15. CommunityRewardValue string `orm:"column(community_reward_value);size(255);null" description:"累计奖励价值" json:"community_reward_value"`
  16. TodayTeamSales string `orm:"column(today_team_sales);size(255);null" description:"今天新增业绩" json:"today_team_sales"`
  17. CommunitySales string `orm:"column(community_sales);size(255);null" description:"小区业绩" json:"community_sales"`
  18. GlobalReward string `orm:"column(global_reward);size(255);null" description:"累计分红奖励" json:"global_reward"`
  19. GlobalRewardValue string `orm:"column(global_reward_value);size(255);null" description:"累计分红奖励价值" json:"global_reward_value"`
  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. // AddRewardRangeData 向数据库中插入一条奖励范围数据记录,并返回插入记录的ID
  30. func AddRewardRangeData(m *RewardRangeData) (id int64, err error) {
  31. o := orm.NewOrm()
  32. id, err = o.Insert(m)
  33. return
  34. }
  35. // GetRewardRangeDataById retrieves RewardRangeData by Id. Returns error if
  36. // Id doesn't exist
  37. // GetRewardRangeDataById 根据ID获取奖励范围数据
  38. // 参数 id: 奖励范围数据的ID
  39. // 返回值 v: 奖励范围数据对象指针, err: 错误信息
  40. func GetRewardRangeDataById(id int) (v *RewardRangeData, err error) {
  41. o := orm.NewOrm()
  42. v = &RewardRangeData{Id: id}
  43. if err = o.Read(v); err == nil {
  44. return v, nil
  45. }
  46. return nil, err
  47. }
  48. // GetAllRewardRangeData retrieves all RewardRangeData matches certain condition. Returns empty list if
  49. // GetAllRewardRangeData 根据查询条件获取奖励范围数据列表
  50. // 参数:
  51. // - query: 查询条件 map,键为字段名,值为字段值。支持点号表示法(如 "user.name")和 isnull 判断
  52. // - fields: 需要返回的字段列表,为空时返回所有字段
  53. // - sortby: 排序字段列表
  54. // - order: 排序方向列表,支持 "asc" 和 "desc"
  55. // - offset: 分页偏移量
  56. // - limit: 返回记录数限制
  57. //
  58. // 返回:
  59. // - ml: 结果列表,当指定 fields 时返回 map[string]interface{},否则返回 RewardRangeData 对象
  60. // - err: 错误信息
  61. //
  62. // no records exist
  63. func GetAllRewardRangeData(query map[string]string, fields []string, sortby []string, order []string,
  64. offset int64, limit int64) (ml []interface{}, err error) {
  65. o := orm.NewOrm()
  66. qs := o.QueryTable(new(RewardRangeData))
  67. // query k=v
  68. for k, v := range query {
  69. // rewrite dot-notation to Object__Attribute
  70. k = strings.Replace(k, ".", "__", -1)
  71. if strings.Contains(k, "isnull") {
  72. qs = qs.Filter(k, (v == "true" || v == "1"))
  73. } else {
  74. qs = qs.Filter(k, v)
  75. }
  76. }
  77. // order by:
  78. var sortFields []string
  79. if len(sortby) != 0 {
  80. if len(sortby) == len(order) {
  81. // 1) for each sort field, there is an associated order
  82. for i, v := range sortby {
  83. orderby := ""
  84. if order[i] == "desc" {
  85. orderby = "-" + v
  86. } else if order[i] == "asc" {
  87. orderby = v
  88. } else {
  89. return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
  90. }
  91. sortFields = append(sortFields, orderby)
  92. }
  93. qs = qs.OrderBy(sortFields...)
  94. } else if len(sortby) != len(order) && len(order) == 1 {
  95. // 2) there is exactly one order, all the sorted fields will be sorted by this order
  96. for _, v := range sortby {
  97. orderby := ""
  98. if order[0] == "desc" {
  99. orderby = "-" + v
  100. } else if order[0] == "asc" {
  101. orderby = v
  102. } else {
  103. return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
  104. }
  105. sortFields = append(sortFields, orderby)
  106. }
  107. } else if len(sortby) != len(order) && len(order) != 1 {
  108. return nil, errors.New("Error: 'sortby', 'order' sizes mismatch or 'order' size is not 1")
  109. }
  110. } else {
  111. if len(order) != 0 {
  112. return nil, errors.New("Error: unused 'order' fields")
  113. }
  114. }
  115. var l []RewardRangeData
  116. qs = qs.OrderBy(sortFields...)
  117. if _, err = qs.Limit(limit, offset).All(&l, fields...); err == nil {
  118. if len(fields) == 0 {
  119. for _, v := range l {
  120. ml = append(ml, v)
  121. }
  122. } else {
  123. // trim unused fields
  124. for _, v := range l {
  125. m := make(map[string]interface{})
  126. val := reflect.ValueOf(v)
  127. for _, fname := range fields {
  128. m[fname] = val.FieldByName(fname).Interface()
  129. }
  130. ml = append(ml, m)
  131. }
  132. }
  133. return ml, nil
  134. }
  135. return nil, err
  136. }
  137. // UpdateRewardRangeData updates RewardRangeData by Id and returns error if
  138. // the record to be updated doesn't exist
  139. func UpdateRewardRangeDataById(m *RewardRangeData) (err error) {
  140. o := orm.NewOrm()
  141. v := RewardRangeData{Id: m.Id}
  142. // ascertain id exists in the database
  143. if err = o.Read(&v); err == nil {
  144. var num int64
  145. if num, err = o.Update(m); err == nil {
  146. fmt.Println("Number of records updated in database:", num)
  147. }
  148. }
  149. return
  150. }
  151. // DeleteRewardRangeData deletes RewardRangeData by Id and returns error if
  152. // the record to be deleted doesn't exist
  153. func DeleteRewardRangeData(id int) (err error) {
  154. o := orm.NewOrm()
  155. v := RewardRangeData{Id: id}
  156. // ascertain id exists in the database
  157. if err = o.Read(&v); err == nil {
  158. var num int64
  159. if num, err = o.Delete(&RewardRangeData{Id: id}); err == nil {
  160. fmt.Println("Number of records deleted in database:", num)
  161. }
  162. }
  163. return
  164. }