| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package mapLeague
- import (
- "f1-game/internal/component/redis"
- "f1-game/internal/data"
- "f1-game/internal/enum"
- nameLocal "f1-game/internal/name/local"
- nameRemote "f1-game/internal/name/remote"
- "f1-game/internal/pb"
- "f1-game/nodes/map/internal/db"
- dbBattleReport "f1-game/nodes/map/internal/db/data/battle_report"
- cproto "github.com/cherry-game/cherry/net/proto"
- )
- func (p *actorLeague) initReport() {
- p.Local().Register(nameLocal.MapLeague_ReportList, p.reportList)
- p.Remote().Register(nameRemote.MapLeague_ReportAdd, p.reportAdd)
- }
- // 获取联盟战报列表
- func (p *actorLeague) reportList(session *cproto.Session, req *pb.I32Str) {
- var (
- mapLeagueReportTable = db.GetMapLeagueReportTable(p.leagueID)
- category = enum.ReportCategory(req.Key) // 分类 0:全部 1:开拓 2:交战
- groupID = req.Value // 战报组ID
- rsp = &pb.ReportGroupList{}
- )
- // 根据分类和战报组ID来精确获取战报组列表
- reportGroups := dbBattleReport.FilterReportGroups(mapLeagueReportTable.BattleReport.Groups, category, groupID, data.Const.MapBattleReportPage)
- if len(reportGroups) == 0 {
- p.Response(session, rsp)
- return
- }
- var (
- groupIDList []string // 战报组ID列表
- reportIDList []string // 战报ID列表
- )
- for _, group := range reportGroups {
- groupIDList = append(groupIDList, group.GroupID)
- }
- // 批量获取战报组ID对应的战报ID列表
- reportIDMap := redis.Game.GetReportIDListOfGroup(groupIDList...)
- for _, ids := range reportIDMap {
- reportIDList = append(reportIDList, ids...)
- }
- // 从redis批量获取战报集合
- reportMap := redis.Game.GetBattleReports(reportIDList...)
- for _, group := range reportGroups {
- groupProto := group.ToProto(reportIDMap, reportMap, true)
- if groupProto == nil {
- continue
- }
- rsp.List = append(rsp.List, groupProto)
- }
- p.Response(session, rsp)
- }
- // 增加战报组
- func (p *actorLeague) reportAdd(req *pb.ReportGroup) {
- var (
- mapLeagueReportTable = db.GetMapLeagueReportTable(p.leagueID)
- groupID = req.GroupID // 战报组ID
- category = enum.ReportCategory(req.Category) // 分类 0:全部 1:开拓 2:交战
- )
- // 联盟建筑被攻击的战报,需要单独处理加到redis
- if enum.IsDurabilityBattle(enum.TileBattleType(req.List[0].BattleType)) {
- redis.Game.AddReports(req.GroupID, req.List...)
- }
- // 添加联盟战报记录
- dbBattleReport.AddReportGroup(&mapLeagueReportTable.BattleReport.Groups, groupID, category, req.List[0].Time)
- mapLeagueReportTable.Save2Queue()
- }
|