作者 yangfu

榜单编辑修改

@@ -522,6 +522,12 @@ func EditRankRange(id int64, name string, rangetype int8, relationId []int64, co @@ -522,6 +522,12 @@ func EditRankRange(id int64, name string, rangetype int8, relationId []int64, co
522 } 522 }
523 } else { 523 } else {
524 //移除不在当前范围的榜单数据 524 //移除不在当前范围的榜单数据
  525 + if err = removeRanksNotIn(o, companyid, rankRange.RankTypeId, rankRange.Id, relationId); err != nil {
  526 + log.Error("更新rank数据失败:%s", err)
  527 + o.Rollback()
  528 + return protocol.NewErrWithMessage("1")
  529 + }
  530 + //移除在其他范围的榜单数据
525 if err = removeRanksOutRange(o, companyid, rankRange.RankTypeId, rankRange.Id, relationId); err != nil { 531 if err = removeRanksOutRange(o, companyid, rankRange.RankTypeId, rankRange.Id, relationId); err != nil {
526 log.Error("更新rank数据失败:%s", err) 532 log.Error("更新rank数据失败:%s", err)
527 o.Rollback() 533 o.Rollback()
@@ -960,6 +966,28 @@ where company_id=%v and rank_type_id=%v and rank_range_id<>%v and enable_status= @@ -960,6 +966,28 @@ where company_id=%v and rank_type_id=%v and rank_range_id<>%v and enable_status=
960 return 966 return
961 } 967 }
962 968
  969 +//移除参与范围外 其他参与范围的已统计版本记录
  970 +//@rankRangeId 当前参与范围编号
  971 +func removeRanksNotIn(o orm.Ormer, companyId, rankTypeId, rankRangeId int64, relationIds []int64) (err error) {
  972 + if len(relationIds) > 0 {
  973 + return
  974 + }
  975 + var sqlRemoveRanks = fmt.Sprintf(`
  976 + update rank set enable_status=0,update_at=NOW()
  977 +where company_id=%v and rank_type_id=%v and rank_range_id=%v and enable_status=1 and rank_period_id in
  978 +(
  979 + select id from rank_period where company_id=%v and rank_type_id=%v and status=1
  980 +)
  981 +`, companyId, rankTypeId, rankRangeId,
  982 + companyId, rankTypeId)
  983 +
  984 + sqlRemoveRanks += fmt.Sprintf(" and relation_id not in (%v)", utils.JoinInt64s(relationIds, ","))
  985 + if err = utils.ExecuteSQLWithOrmer(o, sqlRemoveRanks); err != nil {
  986 + return
  987 + }
  988 + return
  989 +}
  990 +
963 //移除已存在的榜单记录(榜单周期内) 991 //移除已存在的榜单记录(榜单周期内)
964 //同时只会存在在一个排行榜单里面 992 //同时只会存在在一个排行榜单里面
965 func removeAllRanks(o orm.Ormer, companyId, rankTypeId int64, rankRangeId int64, relationIds []int64) (err error) { 993 func removeAllRanks(o orm.Ormer, companyId, rankTypeId int64, rankRangeId int64, relationIds []int64) (err error) {