正在显示
6 个修改的文件
包含
305 行增加
和
0 行删除
| @@ -287,3 +287,74 @@ func (c RankController) RankRangeInfo() { | @@ -287,3 +287,74 @@ func (c RankController) RankRangeInfo() { | ||
| 287 | msg = protocol.NewReturnResponse(rspData, nil) | 287 | msg = protocol.NewReturnResponse(rspData, nil) |
| 288 | return | 288 | return |
| 289 | } | 289 | } |
| 290 | + | ||
| 291 | +//RankRangeSort ... | ||
| 292 | +//@router /rank/range/sort | ||
| 293 | +func (c RankController) RankRangeSort() { | ||
| 294 | + var msg *protocol.ResponseMessage | ||
| 295 | + defer func() { | ||
| 296 | + c.ResposeJson(msg) | ||
| 297 | + }() | ||
| 298 | + type Parameter struct { | ||
| 299 | + RankTypeId int64 `json:"rank_type_id"` | ||
| 300 | + Id []int64 `json:"id"` | ||
| 301 | + } | ||
| 302 | + var param Parameter | ||
| 303 | + if err := json.Unmarshal(c.Ctx.Input.RequestBody, ¶m); err != nil { | ||
| 304 | + log.Error("json 解析失败 err:%s", err) | ||
| 305 | + msg = protocol.BadRequestParam("1") | ||
| 306 | + return | ||
| 307 | + } | ||
| 308 | + err := serverank.RankRangeSort(param.Id) | ||
| 309 | + msg = protocol.NewReturnResponse(nil, err) | ||
| 310 | + return | ||
| 311 | +} | ||
| 312 | + | ||
| 313 | +//RankItemList ... | ||
| 314 | +//@router /rank/item/list | ||
| 315 | +func (c RankController) RankItemList() { | ||
| 316 | + var msg *protocol.ResponseMessage | ||
| 317 | + defer func() { | ||
| 318 | + c.ResposeJson(msg) | ||
| 319 | + }() | ||
| 320 | + type Parameter struct { | ||
| 321 | + RankTypeId int64 `json:"rank_type_id"` | ||
| 322 | + } | ||
| 323 | + var param Parameter | ||
| 324 | + if err := json.Unmarshal(c.Ctx.Input.RequestBody, ¶m); err != nil { | ||
| 325 | + log.Error("json 解析失败 err:%s", err) | ||
| 326 | + msg = protocol.BadRequestParam("1") | ||
| 327 | + return | ||
| 328 | + } | ||
| 329 | + companyid := c.GetCompanyId() | ||
| 330 | + items := serverank.GetRankItemList(companyid, param.RankTypeId) | ||
| 331 | + rspdata := map[string][]protocol.RankItemInfo{ | ||
| 332 | + "all": serverank.AllRankItem, | ||
| 333 | + "checked": items, | ||
| 334 | + } | ||
| 335 | + msg = protocol.NewReturnResponse(rspdata, nil) | ||
| 336 | + return | ||
| 337 | +} | ||
| 338 | + | ||
| 339 | +//RankItemEdit ... | ||
| 340 | +//@router /rank/item/edit | ||
| 341 | +func (c RankController) RankItemEdit() { | ||
| 342 | + var msg *protocol.ResponseMessage | ||
| 343 | + defer func() { | ||
| 344 | + c.ResposeJson(msg) | ||
| 345 | + }() | ||
| 346 | + type Parameter struct { | ||
| 347 | + RankTypeId int64 `json:"rank_type_id"` | ||
| 348 | + ItemKey []string `json:"item_key"` | ||
| 349 | + } | ||
| 350 | + var param Parameter | ||
| 351 | + if err := json.Unmarshal(c.Ctx.Input.RequestBody, ¶m); err != nil { | ||
| 352 | + log.Error("json 解析失败 err:%s", err) | ||
| 353 | + msg = protocol.BadRequestParam("1") | ||
| 354 | + return | ||
| 355 | + } | ||
| 356 | + companyid := c.GetCompanyId() | ||
| 357 | + err := serverank.GetRankItemEdit(companyid, param.RankTypeId, param.ItemKey) | ||
| 358 | + msg = protocol.NewReturnResponse(nil, err) | ||
| 359 | + return | ||
| 360 | +} |
models/rank_item.go
0 → 100644
| 1 | +package models | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + "time" | ||
| 6 | + | ||
| 7 | + "github.com/astaxie/beego/orm" | ||
| 8 | +) | ||
| 9 | + | ||
| 10 | +type RankItem struct { | ||
| 11 | + Id int64 `orm:"column(id);auto"` | ||
| 12 | + CompanyId int64 `orm:"column(company_id);null" description:"公司编号 company.id"` | ||
| 13 | + RankTypeId int64 `orm:"column(rank_type_id)" description:"表rank_type.id 榜单类型编号"` | ||
| 14 | + CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间"` | ||
| 15 | + UpdateAt time.Time `orm:"column(update_at);type(timestamp);null" description:"更新时间"` | ||
| 16 | + SortNum int `orm:"column(sort_num);null" description:"序号"` | ||
| 17 | + ItemName string `orm:"column(item_name);size(50);null" description:"评比项名称"` | ||
| 18 | + ItemKey string `orm:"column(item_key);size(50);null" description:"评比项键值(排行榜排序使用)"` | ||
| 19 | +} | ||
| 20 | + | ||
| 21 | +func (t *RankItem) TableName() string { | ||
| 22 | + return "rank_item" | ||
| 23 | +} | ||
| 24 | + | ||
| 25 | +func init() { | ||
| 26 | + orm.RegisterModel(new(RankItem)) | ||
| 27 | +} | ||
| 28 | + | ||
| 29 | +// AddRankItem insert a new NewRankItem into database and returns | ||
| 30 | +// last inserted Id on success. | ||
| 31 | +func AddRankItem(m *RankItem) (id int64, err error) { | ||
| 32 | + o := orm.NewOrm() | ||
| 33 | + id, err = o.Insert(m) | ||
| 34 | + return | ||
| 35 | +} | ||
| 36 | + | ||
| 37 | +// GetRankItemById retrieves NewRankItem by Id. Returns error if | ||
| 38 | +// Id doesn't exist | ||
| 39 | +func GetRankItemById(id int64) (v *RankItem, err error) { | ||
| 40 | + o := orm.NewOrm() | ||
| 41 | + v = &RankItem{Id: id} | ||
| 42 | + if err = o.Read(v); err == nil { | ||
| 43 | + return v, nil | ||
| 44 | + } | ||
| 45 | + return nil, err | ||
| 46 | +} | ||
| 47 | + | ||
| 48 | +// UpdateRankItem updates RankItem by Id and returns error if | ||
| 49 | +// the record to be updated doesn't exist | ||
| 50 | +func UpdateRankItemById(m *RankItem) (err error) { | ||
| 51 | + o := orm.NewOrm() | ||
| 52 | + v := RankItem{Id: m.Id} | ||
| 53 | + // ascertain id exists in the database | ||
| 54 | + if err = o.Read(&v); err == nil { | ||
| 55 | + var num int64 | ||
| 56 | + if num, err = o.Update(m); err == nil { | ||
| 57 | + fmt.Println("Number of records updated in database:", num) | ||
| 58 | + } | ||
| 59 | + } | ||
| 60 | + return | ||
| 61 | +} | ||
| 62 | + | ||
| 63 | +func GetRankItemByCompanyid(companyid int64, rankTypeId int64) ([]RankItem, error) { | ||
| 64 | + var ( | ||
| 65 | + data []RankItem | ||
| 66 | + err error | ||
| 67 | + ) | ||
| 68 | + o := orm.NewOrm() | ||
| 69 | + _, err = o.QueryTable(&RankItem{}). | ||
| 70 | + Filter("company_id", companyid). | ||
| 71 | + Filter("rank_yype_id", rankTypeId). | ||
| 72 | + All(&data) | ||
| 73 | + if err == orm.ErrNoRows { | ||
| 74 | + return data, nil | ||
| 75 | + } | ||
| 76 | + return data, err | ||
| 77 | +} |
| @@ -16,6 +16,7 @@ type RankRange struct { | @@ -16,6 +16,7 @@ type RankRange struct { | ||
| 16 | Data string `orm:"column(data);size(1000);null" description:"人员范围数据(type:2,4 有值 对于人员数据/部门数据)"` | 16 | Data string `orm:"column(data);size(1000);null" description:"人员范围数据(type:2,4 有值 对于人员数据/部门数据)"` |
| 17 | CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间"` | 17 | CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间"` |
| 18 | UpdateAt time.Time `orm:"column(update_at);type(timestamp);null" description:"更新时间"` | 18 | UpdateAt time.Time `orm:"column(update_at);type(timestamp);null" description:"更新时间"` |
| 19 | + SortNum int `orm:"column(sort_num)"` | ||
| 19 | } | 20 | } |
| 20 | 21 | ||
| 21 | func (t *RankRange) TableName() string { | 22 | func (t *RankRange) TableName() string { |
| @@ -40,3 +40,18 @@ type RankRangeRelation struct { | @@ -40,3 +40,18 @@ type RankRangeRelation struct { | ||
| 40 | Id int64 `json:"id"` | 40 | Id int64 `json:"id"` |
| 41 | Name string `json:"name"` | 41 | Name string `json:"name"` |
| 42 | } | 42 | } |
| 43 | + | ||
| 44 | +//排行榜评比项 | ||
| 45 | +type RankItemInfo struct { | ||
| 46 | + ItemName string `json:"item_name"` | ||
| 47 | + ItemKey string `json:"item_key"` | ||
| 48 | + SortNum int `json:"sort_num"` | ||
| 49 | +} | ||
| 50 | + | ||
| 51 | +type RankItemAll []RankItemInfo | ||
| 52 | + | ||
| 53 | +func (a RankItemAll) Len() int { return len(a) } | ||
| 54 | +func (a RankItemAll) Swap(i, j int) { a[i], a[j] = a[j], a[i] } | ||
| 55 | +func (a RankItemAll) Less(i, j int) bool { | ||
| 56 | + return a[i].SortNum < a[j].SortNum | ||
| 57 | +} |
| @@ -114,6 +114,9 @@ func init() { | @@ -114,6 +114,9 @@ func init() { | ||
| 114 | beego.NSRouter("/range/edit", &controllers.RankController{}, "post:RankRangeEdit"), | 114 | beego.NSRouter("/range/edit", &controllers.RankController{}, "post:RankRangeEdit"), |
| 115 | beego.NSRouter("/range/add", &controllers.RankController{}, "post:RankRangeAdd"), | 115 | beego.NSRouter("/range/add", &controllers.RankController{}, "post:RankRangeAdd"), |
| 116 | beego.NSRouter("/range/info", &controllers.RankController{}, "post:RankRangeInfo"), | 116 | beego.NSRouter("/range/info", &controllers.RankController{}, "post:RankRangeInfo"), |
| 117 | + beego.NSRouter("/range/sort", &controllers.RankController{}, "post:RankRangeSort"), | ||
| 118 | + beego.NSRouter("/item/list", &controllers.RankController{}, "post:RankItemList"), | ||
| 119 | + beego.NSRouter("/item/edit", &controllers.RankController{}, "post:RankItemEdit"), | ||
| 117 | ), | 120 | ), |
| 118 | ) | 121 | ) |
| 119 | 122 |
| @@ -6,6 +6,7 @@ import ( | @@ -6,6 +6,7 @@ import ( | ||
| 6 | "oppmg/models" | 6 | "oppmg/models" |
| 7 | "oppmg/protocol" | 7 | "oppmg/protocol" |
| 8 | "oppmg/utils" | 8 | "oppmg/utils" |
| 9 | + "sort" | ||
| 9 | "time" | 10 | "time" |
| 10 | 11 | ||
| 11 | "github.com/astaxie/beego/orm" | 12 | "github.com/astaxie/beego/orm" |
| @@ -398,5 +399,142 @@ func GetRankRangeInfo(id int64) protocol.ResponseRankRangeInfo { | @@ -398,5 +399,142 @@ func GetRankRangeInfo(id int64) protocol.ResponseRankRangeInfo { | ||
| 398 | } | 399 | } |
| 399 | } | 400 | } |
| 400 | return rspdata | 401 | return rspdata |
| 402 | +} | ||
| 403 | + | ||
| 404 | +func RankRangeSort(ids []int64) error { | ||
| 405 | + var updateData []*models.RankRange | ||
| 406 | + for i := range ids { | ||
| 407 | + m := &models.RankRange{ | ||
| 408 | + Id: ids[i], | ||
| 409 | + SortNum: i, | ||
| 410 | + } | ||
| 411 | + updateData = append(updateData, m) | ||
| 412 | + } | ||
| 413 | + o := orm.NewOrm() | ||
| 414 | + o.Begin() | ||
| 415 | + for i := range updateData { | ||
| 416 | + err := models.UpdateRankRangeById(updateData[i], []string{"SortNum"}, o) | ||
| 417 | + if err != nil { | ||
| 418 | + o.Rollback() | ||
| 419 | + log.Error("更新rank_range数据失败:%s", err) | ||
| 420 | + return protocol.NewErrWithMessage("1") | ||
| 421 | + } | ||
| 422 | + } | ||
| 423 | + o.Commit() | ||
| 424 | + return nil | ||
| 425 | +} | ||
| 426 | + | ||
| 427 | +var AllRankItem = []protocol.RankItemInfo{ | ||
| 428 | + protocol.RankItemInfo{ | ||
| 429 | + ItemName: "总分", | ||
| 430 | + ItemKey: "zongfen", | ||
| 431 | + }, | ||
| 432 | + protocol.RankItemInfo{ | ||
| 433 | + ItemName: "发现", | ||
| 434 | + ItemKey: "faxian", | ||
| 435 | + }, | ||
| 436 | + protocol.RankItemInfo{ | ||
| 437 | + ItemName: "把握", | ||
| 438 | + ItemKey: "bawo", | ||
| 439 | + }, | ||
| 440 | + protocol.RankItemInfo{ | ||
| 441 | + ItemName: "发现数量", | ||
| 442 | + ItemKey: "faxianshuliang", | ||
| 443 | + }, | ||
| 444 | + protocol.RankItemInfo{ | ||
| 445 | + ItemName: "评论数量", | ||
| 446 | + ItemKey: "pinglunshuliang", | ||
| 447 | + }, | ||
| 448 | +} | ||
| 449 | + | ||
| 450 | +func GetRankItemList(companyid int64, rankTypeId int64) []protocol.RankItemInfo { | ||
| 451 | + var ( | ||
| 452 | + rankitemData []models.RankItem | ||
| 453 | + err error | ||
| 454 | + ) | ||
| 455 | + rspData := make([]protocol.RankItemInfo, 0) | ||
| 456 | + rankitemData, err = models.GetRankItemByCompanyid(companyid, rankTypeId) | ||
| 457 | + if err != nil { | ||
| 458 | + log.Error("获取rank_item数据失败:%s", err) | ||
| 459 | + return rspData | ||
| 460 | + } | ||
| 461 | + for i := range rankitemData { | ||
| 462 | + for ii := range AllRankItem { | ||
| 463 | + if rankitemData[i].ItemKey == AllRankItem[ii].ItemKey { | ||
| 464 | + m := protocol.RankItemInfo{ | ||
| 465 | + ItemKey: rankitemData[i].ItemKey, | ||
| 466 | + ItemName: rankitemData[i].ItemName, | ||
| 467 | + SortNum: rankitemData[i].SortNum, | ||
| 468 | + } | ||
| 469 | + rspData = append(rspData, m) | ||
| 470 | + } | ||
| 471 | + } | ||
| 472 | + } | ||
| 473 | + sort.Sort(protocol.RankItemAll(rspData)) | ||
| 474 | + return rspData | ||
| 475 | +} | ||
| 401 | 476 | ||
| 477 | +func GetRankItemEdit(companyid int64, rankTypeid int64, itemKey []string) error { | ||
| 478 | + var ( | ||
| 479 | + rankitemData []models.RankItem | ||
| 480 | + err error | ||
| 481 | + ) | ||
| 482 | + rankitemData, err = models.GetRankItemByCompanyid(companyid, rankTypeid) | ||
| 483 | + if err != nil { | ||
| 484 | + log.Error("获取rank_item数据失败:%s", err) | ||
| 485 | + return nil | ||
| 486 | + } | ||
| 487 | + var ( | ||
| 488 | + newItems []models.RankItem | ||
| 489 | + ) | ||
| 490 | + for i := range itemKey { | ||
| 491 | + for ii := range AllRankItem { | ||
| 492 | + if AllRankItem[ii].ItemKey == itemKey[i] { | ||
| 493 | + m := models.RankItem{ | ||
| 494 | + CompanyId: companyid, | ||
| 495 | + RankTypeId: rankTypeid, | ||
| 496 | + ItemName: AllRankItem[ii].ItemName, | ||
| 497 | + SortNum: i, | ||
| 498 | + } | ||
| 499 | + newItems = append(newItems, m) | ||
| 500 | + break | ||
| 501 | + } | ||
| 502 | + } | ||
| 503 | + } | ||
| 504 | + var ( | ||
| 505 | + delIds []int64 | ||
| 506 | + addItems []models.RankItem | ||
| 507 | + updateItems []models.RankItem | ||
| 508 | + ) | ||
| 509 | + | ||
| 510 | + for i := range rankitemData { | ||
| 511 | + var has bool = false | ||
| 512 | + for ii := range newItems { | ||
| 513 | + if rankitemData[i].ItemKey == newItems[ii].ItemKey { | ||
| 514 | + has = true | ||
| 515 | + newItems[ii].Id = rankitemData[i].Id | ||
| 516 | + updateItems = append(updateItems, newItems[ii]) | ||
| 517 | + break | ||
| 518 | + } | ||
| 519 | + } | ||
| 520 | + if !has { | ||
| 521 | + delIds = append(delIds, rankitemData[i].Id) | ||
| 522 | + } | ||
| 523 | + } | ||
| 524 | + for i := range newItems { | ||
| 525 | + var has bool = false | ||
| 526 | + for ii := range rankitemData { | ||
| 527 | + if rankitemData[i].ItemKey == newItems[ii].ItemKey { | ||
| 528 | + has = true | ||
| 529 | + break | ||
| 530 | + } | ||
| 531 | + } | ||
| 532 | + if !has { | ||
| 533 | + addItems = append(addItems, newItems[i]) | ||
| 534 | + } | ||
| 535 | + } | ||
| 536 | + o := orm.NewOrm() | ||
| 537 | + o.Begin() | ||
| 538 | + o.Commit() | ||
| 539 | + return nil | ||
| 402 | } | 540 | } |
-
请 注册 或 登录 后发表评论