作者 tangxvhui

榜单设置

  1 +package controllers
  2 +
  3 +import (
  4 + "encoding/json"
  5 + "oppmg/common/log"
  6 + "oppmg/protocol"
  7 + serverank "oppmg/services/rank"
  8 +)
  9 +
  10 +type RankController struct {
  11 + BaseController
  12 +}
  13 +
  14 +//GetRankType ..
  15 +//@router /rank/list
  16 +func (c RankController) GetRankType() {
  17 + var msg *protocol.ResponseMessage
  18 + defer func() {
  19 + c.ResposeJson(msg)
  20 + }()
  21 + companyid := c.GetCompanyId()
  22 + rspData := serverank.GetRankList(companyid)
  23 + msg = protocol.NewReturnResponse(rspData, nil)
  24 + return
  25 +}
  26 +
  27 +//EditRankType ...
  28 +//@router /rank/edit
  29 +func (c RankController) EditRankType() {
  30 + var msg *protocol.ResponseMessage
  31 + defer func() {
  32 + c.ResposeJson(msg)
  33 + }()
  34 + type Parameter struct {
  35 + Id int64 `json:"id"`
  36 + Name string `json:"name"`
  37 + }
  38 + var param Parameter
  39 + if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
  40 + log.Error("json 解析失败 err:%s", err)
  41 + msg = protocol.BadRequestParam("1")
  42 + return
  43 + }
  44 + companyid := c.GetCompanyId()
  45 + err := serverank.UpdateRankType(param.Id, param.Name, companyid)
  46 + msg = protocol.NewReturnResponse(nil, err)
  47 + return
  48 +}
  49 +
  50 +//EditRankType ...
  51 +//@router /rank/forbid_allow
  52 +func (c RankController) RankTypeForbidAllow() {
  53 + var msg *protocol.ResponseMessage
  54 + defer func() {
  55 + c.ResposeJson(msg)
  56 + }()
  57 + type Parameter struct {
  58 + Id int64 `json:"id"`
  59 + status int `json:"status"`
  60 + }
  61 + var param Parameter
  62 + if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
  63 + log.Error("json 解析失败 err:%s", err)
  64 + msg = protocol.BadRequestParam("1")
  65 + return
  66 + }
  67 + var err error
  68 + companyid := c.GetCompanyId()
  69 + switch param.status {
  70 + case 1:
  71 + err = serverank.ForbidRank(param.Id, companyid)
  72 + case 2:
  73 + err = serverank.AllowRank(param.Id, companyid)
  74 + }
  75 + msg = protocol.NewReturnResponse(nil, err)
  76 + return
  77 +}
  78 +
  79 +//RankSeasonList ...
  80 +//@router /rank/season/list
  81 +func (c RankController) RankSeasonList() {
  82 + var msg *protocol.ResponseMessage
  83 + defer func() {
  84 + c.ResposeJson(msg)
  85 + }()
  86 +
  87 + var param protocol.RequestPageInfo
  88 + if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
  89 + log.Error("json 解析失败 err:%s", err)
  90 + msg = protocol.BadRequestParam("1")
  91 + return
  92 + }
  93 + companyid := c.GetCompanyId()
  94 + rspData, err := serverank.RankSeasonList(param.PageIndex, param.PageSize, companyid)
  95 + msg = protocol.NewReturnResponse(rspData, err)
  96 + return
  97 +}
  98 +
  99 +//RankSeasonAdd ...
  100 +//@router /rank/season/add
  101 +func (c RankController) RankSeasonAdd() {
  102 + var msg *protocol.ResponseMessage
  103 + defer func() {
  104 + c.ResposeJson(msg)
  105 + }()
  106 + type Parameter struct {
  107 + Name string `json:"name"`
  108 + BeginTime string `json:"begin_time"`
  109 + EndTime string `json:"end_time"`
  110 + }
  111 + var param Parameter
  112 + if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
  113 + log.Error("json 解析失败 err:%s", err)
  114 + msg = protocol.BadRequestParam("1")
  115 + return
  116 + }
  117 + var (
  118 + beginTime int64
  119 + endTime int64
  120 + )
  121 + companyid := c.GetCompanyId()
  122 + err := serverank.AddRankSeason(beginTime, endTime, param.Name, companyid)
  123 + msg = protocol.NewReturnResponse(nil, err)
  124 + return
  125 +}
  126 +
  127 +//RankSeasonEdit ...
  128 +//@router /rank/season/edit
  129 +func (c RankController) RankSeasonEdit() {
  130 + var msg *protocol.ResponseMessage
  131 + defer func() {
  132 + c.ResposeJson(msg)
  133 + }()
  134 + type Parameter struct {
  135 + Id int64 `json:"id"`
  136 + Name string `json:"name"`
  137 + BeginTime string `json:"begin_time"`
  138 + EndTime string `json:"end_time"`
  139 + }
  140 + var param Parameter
  141 + if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
  142 + log.Error("json 解析失败 err:%s", err)
  143 + msg = protocol.BadRequestParam("1")
  144 + return
  145 + }
  146 + var (
  147 + beginTime int64
  148 + endTime int64
  149 + )
  150 + companyid := c.GetCompanyId()
  151 + err := serverank.EditRankSeason(param.Id, beginTime, endTime, param.Name, companyid)
  152 + msg = protocol.NewReturnResponse(nil, err)
  153 + return
  154 +}
  1 +package models
  2 +
  3 +import (
  4 + "fmt"
  5 + "time"
  6 +
  7 + "github.com/astaxie/beego/orm"
  8 +)
  9 +
  10 +type RankPeriod struct {
  11 + Id int64 `orm:"column(id);auto" description:"主键"`
  12 + CompanyId int64 `orm:"column(company_id);null" description:"公司编号 表company.id"`
  13 + SeasonName string `orm:"column(season_name);size(50);null" description:"赛季名称"`
  14 + BeginTime time.Time `orm:"column(begin_time);type(timestamp);null" description:"开始时间"`
  15 + EndTime time.Time `orm:"column(end_time);type(timestamp);null" description:"结束时间"`
  16 + CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间"`
  17 + UpdateAt time.Time `orm:"column(update_at);type(timestamp);null" description:"更新时间"`
  18 + Status int8 `orm:"column(status);null" description:"状态 0:未开始 1:开始 2:结束 "`
  19 + RankRangeBack string `orm:"column(rank_range_back)" description:"赛季结束时,备份赛季参与人设置"`
  20 + RankItemBack string `orm:"column(rank_item_back)" description:"赛季结束时,备份赛季评比项设置"`
  21 +}
  22 +
  23 +func (t *RankPeriod) TableName() string {
  24 + return "rank_period"
  25 +}
  26 +
  27 +func init() {
  28 + orm.RegisterModel(new(RankPeriod))
  29 +}
  30 +
  31 +//状态 0:未开始 1:开始 2:结束
  32 +const (
  33 + RANKPERIOD_STATUS_NOT int8 = 0
  34 + RANKPERIOD_STATUS_BEGIN int8 = 1
  35 + RANKPERIOD_STATUS_END int8 = 2
  36 +)
  37 +
  38 +// AddNewRankPeriod insert a new RankPeriod into database and returns
  39 +// last inserted Id on success.
  40 +func AddRankPeriod(m *RankPeriod) (id int64, err error) {
  41 + o := orm.NewOrm()
  42 + id, err = o.Insert(m)
  43 + return
  44 +}
  45 +
  46 +// GetNewRankPeriodById retrieves RankPeriod by Id. Returns error if
  47 +// Id doesn't exist
  48 +func GetRankPeriodById(id int64) (v *RankPeriod, err error) {
  49 + o := orm.NewOrm()
  50 + v = &RankPeriod{Id: id}
  51 + if err = o.Read(v); err == nil {
  52 + return v, nil
  53 + }
  54 + return nil, err
  55 +}
  56 +
  57 +// UpdateNewRankPeriod updates RankPeriod by Id and returns error if
  58 +// the record to be updated doesn't exist
  59 +func UpdateRankPeriodById(m *RankPeriod) (err error) {
  60 + o := orm.NewOrm()
  61 + v := RankPeriod{Id: m.Id}
  62 + // ascertain id exists in the database
  63 + if err = o.Read(&v); err == nil {
  64 + var num int64
  65 + if num, err = o.Update(m); err == nil {
  66 + fmt.Println("Number of records updated in database:", num)
  67 + }
  68 + }
  69 + return
  70 +}
  1 +package models
  2 +
  3 +import (
  4 + "errors"
  5 + "fmt"
  6 + "reflect"
  7 + "strings"
  8 + "time"
  9 +
  10 + "github.com/astaxie/beego/orm"
  11 +)
  12 +
  13 +type NewRankRange struct {
  14 + Id int `orm:"column(id);auto"`
  15 + Name string `orm:"column(name);size(50);null" description:"名称"`
  16 + CompanyId int `orm:"column(company_id);null" description:"公司编号 表company.id"`
  17 + Type int8 `orm:"column(type);null" description:"1:所有员工 2:指定员工 3:所有部门 4:指定部门"`
  18 + Data string `orm:"column(data);size(1000);null" description:"人员范围数据(type:2,4 有值 对于人员数据/部门数据)"`
  19 + CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间"`
  20 + UpdateAt time.Time `orm:"column(update_at);type(timestamp);null" description:"更新时间"`
  21 +}
  22 +
  23 +func (t *NewRankRange) TableName() string {
  24 + return "rank_range"
  25 +}
  26 +
  27 +func init() {
  28 + orm.RegisterModel(new(NewRankRange))
  29 +}
  30 +
  31 +// AddNewRankRange insert a new NewRankRange into database and returns
  32 +// last inserted Id on success.
  33 +func AddNewRankRange(m *NewRankRange) (id int64, err error) {
  34 + o := orm.NewOrm()
  35 + id, err = o.Insert(m)
  36 + return
  37 +}
  38 +
  39 +// GetNewRankRangeById retrieves NewRankRange by Id. Returns error if
  40 +// Id doesn't exist
  41 +func GetNewRankRangeById(id int) (v *NewRankRange, err error) {
  42 + o := orm.NewOrm()
  43 + v = &NewRankRange{Id: id}
  44 + if err = o.Read(v); err == nil {
  45 + return v, nil
  46 + }
  47 + return nil, err
  48 +}
  49 +
  50 +// GetAllNewRankRange retrieves all NewRankRange matches certain condition. Returns empty list if
  51 +// no records exist
  52 +func GetAllNewRankRange(query map[string]string, fields []string, sortby []string, order []string,
  53 + offset int64, limit int64) (ml []interface{}, err error) {
  54 + o := orm.NewOrm()
  55 + qs := o.QueryTable(new(NewRankRange))
  56 + // query k=v
  57 + for k, v := range query {
  58 + // rewrite dot-notation to Object__Attribute
  59 + k = strings.Replace(k, ".", "__", -1)
  60 + if strings.Contains(k, "isnull") {
  61 + qs = qs.Filter(k, (v == "true" || v == "1"))
  62 + } else {
  63 + qs = qs.Filter(k, v)
  64 + }
  65 + }
  66 + // order by:
  67 + var sortFields []string
  68 + if len(sortby) != 0 {
  69 + if len(sortby) == len(order) {
  70 + // 1) for each sort field, there is an associated order
  71 + for i, v := range sortby {
  72 + orderby := ""
  73 + if order[i] == "desc" {
  74 + orderby = "-" + v
  75 + } else if order[i] == "asc" {
  76 + orderby = v
  77 + } else {
  78 + return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
  79 + }
  80 + sortFields = append(sortFields, orderby)
  81 + }
  82 + qs = qs.OrderBy(sortFields...)
  83 + } else if len(sortby) != len(order) && len(order) == 1 {
  84 + // 2) there is exactly one order, all the sorted fields will be sorted by this order
  85 + for _, v := range sortby {
  86 + orderby := ""
  87 + if order[0] == "desc" {
  88 + orderby = "-" + v
  89 + } else if order[0] == "asc" {
  90 + orderby = v
  91 + } else {
  92 + return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
  93 + }
  94 + sortFields = append(sortFields, orderby)
  95 + }
  96 + } else if len(sortby) != len(order) && len(order) != 1 {
  97 + return nil, errors.New("Error: 'sortby', 'order' sizes mismatch or 'order' size is not 1")
  98 + }
  99 + } else {
  100 + if len(order) != 0 {
  101 + return nil, errors.New("Error: unused 'order' fields")
  102 + }
  103 + }
  104 +
  105 + var l []NewRankRange
  106 + qs = qs.OrderBy(sortFields...)
  107 + if _, err = qs.Limit(limit, offset).All(&l, fields...); err == nil {
  108 + if len(fields) == 0 {
  109 + for _, v := range l {
  110 + ml = append(ml, v)
  111 + }
  112 + } else {
  113 + // trim unused fields
  114 + for _, v := range l {
  115 + m := make(map[string]interface{})
  116 + val := reflect.ValueOf(v)
  117 + for _, fname := range fields {
  118 + m[fname] = val.FieldByName(fname).Interface()
  119 + }
  120 + ml = append(ml, m)
  121 + }
  122 + }
  123 + return ml, nil
  124 + }
  125 + return nil, err
  126 +}
  127 +
  128 +// UpdateNewRankRange updates NewRankRange by Id and returns error if
  129 +// the record to be updated doesn't exist
  130 +func UpdateNewRankRangeById(m *NewRankRange) (err error) {
  131 + o := orm.NewOrm()
  132 + v := NewRankRange{Id: m.Id}
  133 + // ascertain id exists in the database
  134 + if err = o.Read(&v); err == nil {
  135 + var num int64
  136 + if num, err = o.Update(m); err == nil {
  137 + fmt.Println("Number of records updated in database:", num)
  138 + }
  139 + }
  140 + return
  141 +}
  142 +
  143 +// DeleteNewRankRange deletes NewRankRange by Id and returns error if
  144 +// the record to be deleted doesn't exist
  145 +func DeleteNewRankRange(id int) (err error) {
  146 + o := orm.NewOrm()
  147 + v := NewRankRange{Id: id}
  148 + // ascertain id exists in the database
  149 + if err = o.Read(&v); err == nil {
  150 + var num int64
  151 + if num, err = o.Delete(&NewRankRange{Id: id}); err == nil {
  152 + fmt.Println("Number of records deleted in database:", num)
  153 + }
  154 + }
  155 + return
  156 +}
  1 +package models
  2 +
  3 +import (
  4 + "fmt"
  5 + "time"
  6 +
  7 + "github.com/astaxie/beego/orm"
  8 +)
  9 +
  10 +type RankType struct {
  11 + Id int64 `orm:"column(id);pk"`
  12 + CompanyId int64 `orm:"column(company_id)"`
  13 + Name string `orm:"column(name)"`
  14 + EnableStatus int8 `orm:"column(enable_status)"`
  15 + CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间"`
  16 + UpdataAt time.Time `orm:"column(update_at);type(timestamp);null" description:"更新时间"`
  17 + Type int8 `orm:"column(type)"`
  18 +}
  19 +
  20 +func (t *RankType) TableName() string {
  21 + return "rank_type"
  22 +}
  23 +
  24 +func init() {
  25 + orm.RegisterModel(new(RankType))
  26 +}
  27 +
  28 +//榜单类型
  29 +const (
  30 + RANK_TYPE_SEASON int8 = 1 //季赛榜
  31 + RANK_TYPE_YEAR int8 = 2 //年榜
  32 +)
  33 +
  34 +//榜单状态
  35 +const (
  36 + RANK_STATUS_YES int8 = 1 //启用
  37 + RANK_STATUS_NO int8 = 2 //禁用
  38 +)
  39 +
  40 +// AddRank insert a new Rank into database and returns
  41 +// last inserted Id on success.
  42 +func AddRank(m *RankType) (id int64, err error) {
  43 + o := orm.NewOrm()
  44 + nowTime := time.Now()
  45 + m.CreateAt = nowTime
  46 + m.UpdataAt = nowTime
  47 + id, err = o.Insert(m)
  48 + return
  49 +}
  50 +
  51 +// GetRankById retrieves Rank by Id. Returns error if
  52 +// Id doesn't exist
  53 +func GetRankById(id int64) (v *RankType, err error) {
  54 + o := orm.NewOrm()
  55 + v = &RankType{Id: id}
  56 + if err = o.Read(v); err == nil {
  57 + return v, nil
  58 + }
  59 + return nil, err
  60 +}
  61 +
  62 +// UpdateRank updates Rank by Id and returns error if
  63 +// the record to be updated doesn't exist
  64 +func UpdateRankById(m *RankType, cols []string, om ...orm.Ormer) (err error) {
  65 + var o orm.Ormer
  66 + if len(om) > 0 {
  67 + o = om[0]
  68 + } else {
  69 + o = orm.NewOrm()
  70 + }
  71 + m.UpdataAt = time.Now()
  72 + if len(cols) > 0 {
  73 + cols = append(cols, "UpdateAt")
  74 + }
  75 + var num int64
  76 + if num, err = o.Update(m, cols...); err == nil {
  77 + fmt.Println("Number of records updated in database:", num)
  78 + }
  79 +
  80 + return
  81 +}
  1 +package protocol
  2 +
  3 +//获取公司的榜单类型列表
  4 +type ResponseRankType struct {
  5 + Id int `json:"id" orm:"column(id)"`
  6 + Name string `json:"name" orm:"column(name)"`
  7 + Status int8 `json:"status" orm:"column(status)"`
  8 + RankType int8 `json:"rank_type" orm:"column(rank_type)"`
  9 +}
  10 +
  11 +// ResponseRankSeasonList 赛季列表
  12 +type ResponseRankSeasonList struct {
  13 + ResponsePageInfo
  14 + List []RankSeasonItem `json:"lists"`
  15 +}
  16 +type RankSeasonItem struct {
  17 + Id int64 `json:"id" orm:"column(id)"`
  18 + SeasonName string `json:"season_name" orm:"column(season_name)"`
  19 + BeginTime string `json:"begin_time" orm:"column(begin_time)"`
  20 + EndTime string `json:"end_time" orm:"column(end_time)"`
  21 + Status int8 `json:"status" orm:"column(status)"`
  22 +}
@@ -103,6 +103,14 @@ func init() { @@ -103,6 +103,14 @@ func init() {
103 beego.NSRouter("/info", &controllers.AuditController{}, "post:AuditInfo"), 103 beego.NSRouter("/info", &controllers.AuditController{}, "post:AuditInfo"),
104 beego.NSRouter("/allow_forbid", &controllers.AuditController{}, "post:AllowForbidAudit"), 104 beego.NSRouter("/allow_forbid", &controllers.AuditController{}, "post:AllowForbidAudit"),
105 ), 105 ),
  106 + beego.NSNamespace("/rank",
  107 + beego.NSRouter("/list", &controllers.RankController{}, "post:GetRankType"),
  108 + beego.NSRouter("/edit", &controllers.RankController{}, "post:EditRankType"),
  109 + beego.NSRouter("/forbid_allow", &controllers.RankController{}, "post:RankTypeForbidAllow"),
  110 + beego.NSRouter("/season/add", &controllers.RankController{}, "post:RankSeasonAdd"),
  111 + beego.NSRouter("/season/list", &controllers.RankController{}, "post:RankSeasonList"),
  112 + beego.NSRouter("/season/edit", &controllers.RankController{}, "post:RankSeasonEdit"),
  113 + ),
106 ) 114 )
107 115
108 nsAuth := beego.NewNamespace("/auth", 116 nsAuth := beego.NewNamespace("/auth",
@@ -98,33 +98,7 @@ func buildSqlForAuditList(usercompanyid int64, companyid int64, userid int64) st @@ -98,33 +98,7 @@ func buildSqlForAuditList(usercompanyid int64, companyid int64, userid int64) st
98 unionsql = sql1 + " UNION " + sql2 98 unionsql = sql1 + " UNION " + sql2
99 return fmt.Sprintf(allsql, unionsql) 99 return fmt.Sprintf(allsql, unionsql)
100 } 100 }
101 - // //获取权限  
102 - // if ok := redisdata.ExistUserPermission(userid); !ok {  
103 - // //尝试重数据库获取  
104 - // log.Debug("从数据库读取权限")  
105 - // permissionMap, err := serverabc.GetUserPermission(usercompanyid, serverabc.M_SYSTEM_OPPORTUNITY)  
106 - // if err != nil {  
107 - // log.Debug("从数据库未获得对应权限 :%s", err)  
108 - // unionsql = sql1 + " UNION " + sql2  
109 - // return fmt.Sprintf(allsql, unionsql)  
110 - // }  
111 - // if v, ok := permissionMap[serverabc.M_SYSTEM_OPPORTUNITY]; !ok {  
112 - // unionsql = sql1 + " UNION " + sql2  
113 - // return fmt.Sprintf(allsql, unionsql)  
114 - // } else {  
115 - // permissionObject = v  
116 - // }  
117 - // } else {  
118 - // //使用缓存  
119 - // log.Debug("从缓存读取权限")  
120 - // permissionObject, err = redisdata.GetUserPermission(userid, serverabc.M_SYSTEM_OPPORTUNITY)  
121 - // if err != nil {  
122 - // log.Debug("从缓存未获得对应权限 :%s", err)  
123 - // unionsql = sql1 + " UNION " + sql2  
124 - // return fmt.Sprintf(allsql, unionsql)  
125 - // }  
126 - // }  
127 - // ------------------------- 101 +
128 var ( 102 var (
129 usrPermission *serverabc.OptionOpportunity 103 usrPermission *serverabc.OptionOpportunity
130 ok bool 104 ok bool
  1 +package rank
  2 +
  3 +import (
  4 + "fmt"
  5 + "oppmg/common/log"
  6 + "oppmg/models"
  7 + "oppmg/protocol"
  8 + "oppmg/utils"
  9 + "time"
  10 +)
  11 +
  12 +//GetRankList 获取榜单类型列表
  13 +func GetRankList(companyid int64) []protocol.ResponseRankType {
  14 + var (
  15 + rspData = make([]protocol.ResponseRankType, 0)
  16 + err error
  17 + )
  18 + sqlString := `SELECT id,name,status,rank_type FROM rank WHERE company_id=?`
  19 + err = utils.ExecuteQueryAll(&rspData, sqlString, companyid)
  20 + if err != nil {
  21 + log.Error("获取榜单列表失败,err%s", err)
  22 + return rspData
  23 + }
  24 + if len(rspData) >= 2 {
  25 + return rspData
  26 + }
  27 + if len(rspData) < 2 {
  28 + AddDefaultRankType(companyid)
  29 + }
  30 + err = utils.ExecuteQueryAll(&rspData, sqlString, companyid)
  31 + if err != nil {
  32 + log.Error("获取榜单列表失败,err%s", err)
  33 + return rspData
  34 + }
  35 + return rspData
  36 +}
  37 +
  38 +func AddDefaultRankType(companyid int64) []*models.RankType {
  39 + var (
  40 + rankA *models.RankType
  41 + rankB *models.RankType
  42 + err error
  43 + )
  44 + rankA = &models.RankType{
  45 + CompanyId: companyid,
  46 + Name: "季赛榜",
  47 + Type: models.RANK_TYPE_SEASON,
  48 + EnableStatus: models.RANK_STATUS_YES,
  49 + }
  50 + rankB = &models.RankType{
  51 + CompanyId: companyid,
  52 + Name: "年榜",
  53 + Type: models.RANK_TYPE_YEAR,
  54 + EnableStatus: models.RANK_STATUS_YES,
  55 + }
  56 + _, err = models.AddRank(rankA)
  57 + if err != nil {
  58 + log.Error("添加榜单失败:AddRank,err:%s", err)
  59 + }
  60 + _, err = models.AddRank(rankB)
  61 + if err != nil {
  62 + log.Error("添加榜单失败:AddRank,err:%s", err)
  63 + }
  64 + ranks := []*models.RankType{
  65 + rankA, rankB,
  66 + }
  67 + return ranks
  68 +}
  69 +
  70 +func UpdateRankType(id int64, name string, companyid int64) error {
  71 + var (
  72 + err error
  73 + ranktype *models.RankType
  74 + )
  75 + ranktype, err = models.GetRankById(id)
  76 + if err != nil {
  77 + log.Error("获取榜单类型数据失败:%s", err)
  78 + return protocol.NewErrWithMessage("1")
  79 + }
  80 + if ranktype.CompanyId != companyid {
  81 + log.Error("数据无法与公司id对应")
  82 + return protocol.NewErrWithMessage("1")
  83 + }
  84 + ranktype.Name = name
  85 + err = models.UpdateRankById(ranktype, []string{"Name"})
  86 + if err != nil {
  87 + log.Error("更新榜单数据失败:%s", err)
  88 + return protocol.NewErrWithMessage("1")
  89 + }
  90 + return nil
  91 +}
  92 +
  93 +//ForbidRank 禁用榜单
  94 +func ForbidRank(id int64, companyid int64) error {
  95 + var (
  96 + err error
  97 + ranktype *models.RankType
  98 + )
  99 + ranktype, err = models.GetRankById(id)
  100 + if err != nil {
  101 + log.Error("获取榜单类型数据失败:%s", err)
  102 + return protocol.NewErrWithMessage("1")
  103 + }
  104 + if ranktype.CompanyId != companyid {
  105 + log.Error("数据无法与公司id对应")
  106 + return protocol.NewErrWithMessage("1")
  107 + }
  108 + ranktype.EnableStatus = models.RANK_STATUS_NO
  109 + err = models.UpdateRankById(ranktype, []string{"EnableStatus"})
  110 + if err != nil {
  111 + log.Error("更新榜单数据失败:%s", err)
  112 + return protocol.NewErrWithMessage("1")
  113 + }
  114 + return nil
  115 +
  116 +}
  117 +
  118 +//AllowRank 启用榜单
  119 +func AllowRank(id int64, companyid int64) error {
  120 + var (
  121 + err error
  122 + ranktype *models.RankType
  123 + )
  124 + ranktype, err = models.GetRankById(id)
  125 + if err != nil {
  126 + log.Error("获取榜单类型数据失败:%s", err)
  127 + return protocol.NewErrWithMessage("1")
  128 + }
  129 + if ranktype.CompanyId != companyid {
  130 + log.Error("数据无法与公司id对应")
  131 + return protocol.NewErrWithMessage("1")
  132 + }
  133 + ranktype.EnableStatus = models.RANK_STATUS_YES
  134 + err = models.UpdateRankById(ranktype, []string{"EnableStatus"})
  135 + if err != nil {
  136 + log.Error("更新榜单数据失败:%s", err)
  137 + return protocol.NewErrWithMessage("1")
  138 + }
  139 + return nil
  140 +
  141 +}
  142 +
  143 +//RankSeasonList ..获取赛季列表
  144 +func RankSeasonList(pageindex int, pagesize int, companyid int64) (protocol.ResponseRankSeasonList, error) {
  145 + var (
  146 + err error
  147 + listdata []protocol.RankSeasonItem
  148 + cnt int64
  149 + )
  150 + rspData := protocol.ResponseRankSeasonList{
  151 + ResponsePageInfo: protocol.ResponsePageInfo{
  152 + TotalPage: 0, CurrentPage: pageindex,
  153 + },
  154 + List: make([]protocol.RankSeasonItem, 0),
  155 + }
  156 + pageStart := (pageindex - 1) * pagesize
  157 + datasql := `SELECT id,season_name,begin_time,end_time,status FROM rank_period WHERE company_id = ?`
  158 + datasql = fmt.Sprintf("%s ORDER BY begin_time DESC limit %d,%d", datasql, pageStart, pagesize)
  159 + countsql := `SELECT COUNT(*) FROM rank_period WHERE company_id = ?`
  160 + err = utils.ExecuteQueryOne(&cnt, countsql, companyid)
  161 + if err != nil {
  162 + log.Error("EXCUTE SQL ERR:%s", err)
  163 + return rspData, nil
  164 + }
  165 + if cnt <= 0 {
  166 + return rspData, nil
  167 + }
  168 + err = utils.ExecuteQueryAll(&listdata, datasql, companyid)
  169 + if err != nil {
  170 + log.Error("EXCUTE SQL ERR:%s", err)
  171 + return rspData, nil
  172 + }
  173 + return rspData, err
  174 +}
  175 +
  176 +func AddRankSeason(beginTime int64, endTime int64, name string, companyid int64) error {
  177 + var (
  178 + err error
  179 + )
  180 + m := &models.RankPeriod{
  181 + CompanyId: companyid,
  182 + SeasonName: name,
  183 + BeginTime: time.Unix(beginTime, 0),
  184 + EndTime: time.Unix(endTime, 0),
  185 + Status: 0,
  186 + }
  187 + _, err = models.AddRankPeriod(m)
  188 + if err != nil {
  189 + log.Error("添加赛季失败;%s", err)
  190 + }
  191 + return nil
  192 +}
  193 +
  194 +func EditRankSeason(id int64, beginTime int64, endTime int64, name string, companyid int64) error {
  195 + var (
  196 + err error
  197 + m *models.RankPeriod
  198 + )
  199 + m, err = models.GetRankPeriodById(id)
  200 + if err != nil {
  201 + log.Error("获取赛季失败;%s", err)
  202 + return protocol.NewErrWithMessage("1")
  203 + }
  204 + if m.CompanyId != companyid {
  205 + log.Error("公司不匹配")
  206 + return protocol.NewErrWithMessage("1")
  207 + }
  208 + m.SeasonName = name
  209 + m.BeginTime = time.Unix(beginTime, 0)
  210 + m.EndTime = time.Unix(endTime, 0)
  211 + err = models.UpdateRankPeriodById(m)
  212 + if err != nil {
  213 + log.Error("更新赛季失败;%s", err)
  214 + }
  215 + return nil
  216 +}
  217 +
  218 +//获取赛季参与人列表
  219 +func GetRankRangeList() {
  220 +
  221 +}