| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- package models
- import (
- "errors"
- "fmt"
- "reflect"
- "strings"
- "github.com/beego/beego/v2/client/orm"
- )
- type RewardRangeData struct {
- Id int `orm:"column(id);auto" description:"代理奖励列表" json:"-"`
- UserId string `orm:"column(user_id);size(0);null" json:"user_id"`
- Sales string `orm:"column(sales);size(255);null" description:"总累计业绩" json:"sales"`
- PromoteName string `orm:"column(promote_name);size(255);null" description:"级别" json:"promote_name"`
- CommunityReward string `orm:"column(community_reward);size(255);null" description:"累计奖励" json:"community_reward"`
- CommunityRewardValue string `orm:"column(community_reward_value);size(255);null" description:"累计奖励价值" json:"community_reward_value"`
- TodayTeamSales string `orm:"column(today_team_sales);size(255);null" description:"今天新增业绩" json:"today_team_sales"`
- CommunitySales string `orm:"column(community_sales);size(255);null" description:"小区业绩" json:"community_sales"`
- GlobalReward string `orm:"column(global_reward);size(255);null" description:"累计分红奖励" json:"global_reward"`
- GlobalRewardValue string `orm:"column(global_reward_value);size(255);null" description:"累计分红奖励价值" json:"global_reward_value"`
- }
- func (t *RewardRangeData) TableName() string {
- return "reward_range_data"
- }
- func init() {
- orm.RegisterModel(new(RewardRangeData))
- }
- // AddRewardRangeData insert a new RewardRangeData into database and returns
- // last inserted Id on success.
- // AddRewardRangeData 向数据库中插入一条奖励范围数据记录,并返回插入记录的ID
- func AddRewardRangeData(m *RewardRangeData) (id int64, err error) {
- o := orm.NewOrm()
- id, err = o.Insert(m)
- return
- }
- // GetRewardRangeDataById retrieves RewardRangeData by Id. Returns error if
- // Id doesn't exist
- // GetRewardRangeDataById 根据ID获取奖励范围数据
- // 参数 id: 奖励范围数据的ID
- // 返回值 v: 奖励范围数据对象指针, err: 错误信息
- func GetRewardRangeDataById(id int) (v *RewardRangeData, err error) {
- o := orm.NewOrm()
- v = &RewardRangeData{Id: id}
- if err = o.Read(v); err == nil {
- return v, nil
- }
- return nil, err
- }
- // GetAllRewardRangeData retrieves all RewardRangeData matches certain condition. Returns empty list if
- // GetAllRewardRangeData 根据查询条件获取奖励范围数据列表
- // 参数:
- // - query: 查询条件 map,键为字段名,值为字段值。支持点号表示法(如 "user.name")和 isnull 判断
- // - fields: 需要返回的字段列表,为空时返回所有字段
- // - sortby: 排序字段列表
- // - order: 排序方向列表,支持 "asc" 和 "desc"
- // - offset: 分页偏移量
- // - limit: 返回记录数限制
- //
- // 返回:
- // - ml: 结果列表,当指定 fields 时返回 map[string]interface{},否则返回 RewardRangeData 对象
- // - err: 错误信息
- //
- // no records exist
- func GetAllRewardRangeData(query map[string]string, fields []string, sortby []string, order []string,
- offset int64, limit int64) (ml []interface{}, err error) {
- o := orm.NewOrm()
- qs := o.QueryTable(new(RewardRangeData))
- // query k=v
- for k, v := range query {
- // rewrite dot-notation to Object__Attribute
- k = strings.Replace(k, ".", "__", -1)
- if strings.Contains(k, "isnull") {
- qs = qs.Filter(k, (v == "true" || v == "1"))
- } else {
- qs = qs.Filter(k, v)
- }
- }
- // order by:
- var sortFields []string
- if len(sortby) != 0 {
- if len(sortby) == len(order) {
- // 1) for each sort field, there is an associated order
- for i, v := range sortby {
- orderby := ""
- if order[i] == "desc" {
- orderby = "-" + v
- } else if order[i] == "asc" {
- orderby = v
- } else {
- return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
- }
- sortFields = append(sortFields, orderby)
- }
- qs = qs.OrderBy(sortFields...)
- } else if len(sortby) != len(order) && len(order) == 1 {
- // 2) there is exactly one order, all the sorted fields will be sorted by this order
- for _, v := range sortby {
- orderby := ""
- if order[0] == "desc" {
- orderby = "-" + v
- } else if order[0] == "asc" {
- orderby = v
- } else {
- return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
- }
- sortFields = append(sortFields, orderby)
- }
- } else if len(sortby) != len(order) && len(order) != 1 {
- return nil, errors.New("Error: 'sortby', 'order' sizes mismatch or 'order' size is not 1")
- }
- } else {
- if len(order) != 0 {
- return nil, errors.New("Error: unused 'order' fields")
- }
- }
- var l []RewardRangeData
- qs = qs.OrderBy(sortFields...)
- if _, err = qs.Limit(limit, offset).All(&l, fields...); err == nil {
- if len(fields) == 0 {
- for _, v := range l {
- ml = append(ml, v)
- }
- } else {
- // trim unused fields
- for _, v := range l {
- m := make(map[string]interface{})
- val := reflect.ValueOf(v)
- for _, fname := range fields {
- m[fname] = val.FieldByName(fname).Interface()
- }
- ml = append(ml, m)
- }
- }
- return ml, nil
- }
- return nil, err
- }
- // UpdateRewardRangeData updates RewardRangeData by Id and returns error if
- // the record to be updated doesn't exist
- func UpdateRewardRangeDataById(m *RewardRangeData) (err error) {
- o := orm.NewOrm()
- v := RewardRangeData{Id: m.Id}
- // ascertain id exists in the database
- if err = o.Read(&v); err == nil {
- var num int64
- if num, err = o.Update(m); err == nil {
- fmt.Println("Number of records updated in database:", num)
- }
- }
- return
- }
- // DeleteRewardRangeData deletes RewardRangeData by Id and returns error if
- // the record to be deleted doesn't exist
- func DeleteRewardRangeData(id int) (err error) {
- o := orm.NewOrm()
- v := RewardRangeData{Id: id}
- // ascertain id exists in the database
- if err = o.Read(&v); err == nil {
- var num int64
- if num, err = o.Delete(&RewardRangeData{Id: id}); err == nil {
- fmt.Println("Number of records deleted in database:", num)
- }
- }
- return
- }
|