From 785c265aeff670aeb0d6a69d3a23adcef9c1baf6 Mon Sep 17 00:00:00 2001 From: chenweijian <820961417@qq.com> Date: Thu, 20 Apr 2023 10:19:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=B6=E6=97=8F=E8=B4=A1=E7=8C=AE=E6=8E=92?= =?UTF-8?q?=E8=A1=8C=E8=87=AA=E5=8A=A8=E5=8F=91=E5=A5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- domain/service/group_power_s/group_power.go | 148 ++++++++++++-------- 1 file changed, 87 insertions(+), 61 deletions(-) diff --git a/domain/service/group_power_s/group_power.go b/domain/service/group_power_s/group_power.go index e75792e..e3f3d92 100644 --- a/domain/service/group_power_s/group_power.go +++ b/domain/service/group_power_s/group_power.go @@ -202,45 +202,42 @@ func CalcGroupPowerMonthRankAct(model *domain.Model) error { return err } } - // 读奖励配置 - type award struct { - MedalId uint64 - MedalDay uint32 - Diamond uint32 - Noble uint32 - NobleDay uint32 - HeaddressId uint64 - HeaddressDay int - } - confMap := map[int]map[int]*award{ - 1: { - 0: {MedalId: 1, MedalDay: 30, Diamond: 300000, Noble: 5, NobleDay: 15}, - 1: {MedalId: 1, MedalDay: 30, Diamond: 100000, Noble: 5, NobleDay: 7}, - 4: {HeaddressId: 1, HeaddressDay: 30}, - }, - 2: { - 0: {MedalId: 1, MedalDay: 30, Diamond: 200000, Noble: 4, NobleDay: 15}, - 1: {MedalId: 1, MedalDay: 30, Diamond: 80000, Noble: 4, NobleDay: 7}, - 4: {HeaddressId: 1, HeaddressDay: 30}, - }, - 3: { - 0: {MedalId: 1, MedalDay: 30, Diamond: 100000, Noble: 5, NobleDay: 5}, - 1: {MedalId: 1, MedalDay: 30, Diamond: 50000}, - 4: {HeaddressId: 1, HeaddressDay: 30}, - }, - 4: { - 0: {MedalId: 1, MedalDay: 30}, - 1: {MedalId: 1, MedalDay: 30, HeaddressId: 1, HeaddressDay: 30}, - }, + // 奖励、日志 + awardList, logList, err := getAwardAndLogList(model, powerIds, response.Items, calcMonth) + if err != nil { + return err } + + return model.Transaction(func(model *domain.Model) error { + // log + err = groupPower_m.CreateActFamilyMonthRankLog(model, logList) + if err != nil { + model.Log.Errorf("CalcGroupPowerMonthRankAct err:%+v", err) + return err + } + // award + for _, v := range awardList { + err = award_tx.SendUserAward(model, v, diamond_e.GeneralActivity, msg_e.MgrSendDiamondProperty) + if err != nil { + model.Log.Errorf("CalcGroupPowerMonthRankAct award:%+v, err:%+v", v, err) + return err + } + } + return nil + }) +} + +func getAwardAndLogList(model *domain.Model, powerIds []uint64, items []group_power_cv.CvGroupPowerRankData, calcMonth string) ([]*award_tx.UserAward, []*groupPower_m.ActFamilyMonthRankLog, error) { + // 读奖励配置 + confMap := CalcGroupPowerMonthRankActConf() awardList := make([]*award_tx.UserAward, 0, 50) // 奖励 ownerMap, err := groupPower_m.GetPowerOwnerMap(model, powerIds) if err != nil { - return err + return nil, nil, err } // log list logList := make([]*groupPower_m.ActFamilyMonthRankLog, 0, 50) - for _, v := range response.Items { + for _, v := range items { teamRank := 0 if v.Rank >= 1 && v.Rank <= 3 { teamRank = v.Rank @@ -252,16 +249,17 @@ func CalcGroupPowerMonthRankAct(model *domain.Model) error { ownerId, ok := ownerMap[v.Id] if !ok || ownerId <= 0 { model.Log.Errorf("CalcGroupPowerMonthRankAct 获取势力主错误 familyId:%d", v.Id) - return bizerr.InvalidParameter + return nil, nil, bizerr.InvalidParameter } uRankConfMap, tCOk := confMap[teamRank] if !tCOk { break } + // 家族长奖励 oAward, aOk := uRankConfMap[0] if !aOk { model.Log.Errorf("CalcGroupPowerMonthRankAct 配置错误:%v", confMap) - return bizerr.InvalidParameter + return nil, nil, bizerr.InvalidParameter } oAwardJ, _ := json.Marshal(oAward) logList = append(logList, &groupPower_m.ActFamilyMonthRankLog{ @@ -272,9 +270,14 @@ func CalcGroupPowerMonthRankAct(model *domain.Model) error { UserId: ownerId, Award: string(oAwardJ), }) - awardList = append(awardList, &award_tx.UserAward{MedalId: oAward.MedalId, MedalDuration: oAward.MedalDay, - Diamond: oAward.Diamond, NobleLevel: oAward.Noble, NobleDuration: oAward.NobleDay}) - for i, u := range v.StarList { + awardList = append(awardList, &award_tx.UserAward{ + MedalId: oAward.MedalId, + MedalDuration: oAward.MedalDay, + Diamond: oAward.Diamond, + NobleLevel: oAward.Noble, + NobleDuration: oAward.NobleDay}) + // 家族成员奖励 + for i, m := range v.StarList { uRank := i + 1 confIdx := 9 if uRank >= 1 && uRank <= 3 { @@ -282,40 +285,63 @@ func CalcGroupPowerMonthRankAct(model *domain.Model) error { } else if uRank >= 4 && uRank <= 10 { confIdx = 4 } - award, aOk := uRankConfMap[confIdx] + mAward, aOk := uRankConfMap[confIdx] if !aOk { break } - awardJ, _ := json.Marshal(award) + mAwardJ, _ := json.Marshal(mAward) logList = append(logList, &groupPower_m.ActFamilyMonthRankLog{ Period: calcMonth, FamilyId: v.Id, RankFamily: v.Rank, RankUser: uRank, - UserId: u.User.Id, - Award: string(awardJ), + UserId: m.User.Id, + Award: string(mAwardJ), }) - awardList = append(awardList, &award_tx.UserAward{MedalId: award.MedalId, MedalDuration: award.MedalDay, - Diamond: award.Diamond, NobleLevel: award.Noble, NobleDuration: award.NobleDay, - HeaddressId: award.HeaddressId, HeaddressDuration: award.HeaddressDay}) + awardList = append(awardList, &award_tx.UserAward{ + MedalId: mAward.MedalId, + MedalDuration: mAward.MedalDay, + Diamond: mAward.Diamond, + NobleLevel: mAward.Noble, + NobleDuration: mAward.NobleDay, + HeaddressId: mAward.HeaddressId, + HeaddressDuration: mAward.HeaddressDay}) } } + return awardList, logList, nil +} - return model.Transaction(func(model *domain.Model) error { - // log - err = groupPower_m.CreateActFamilyMonthRankLog(model, logList) - if err != nil { - model.Log.Errorf("CalcGroupPowerMonthRankAct err:%+v", err) - return err - } - // award - for _, v := range awardList { - err = award_tx.SendUserAward(model, v, diamond_e.GeneralActivity, msg_e.MgrSendDiamondProperty) - if err != nil { - model.Log.Errorf("CalcGroupPowerMonthRankAct award:%+v, err:%+v", v, err) - return err - } - } - return nil - }) +// 奖励配置 +type awardConf struct { + MedalId uint64 + MedalDay uint32 + Diamond uint32 + Noble uint32 + NobleDay uint32 + HeaddressId uint64 + HeaddressDay int +} + +func CalcGroupPowerMonthRankActConf() map[int]map[int]*awardConf { + return map[int]map[int]*awardConf{ + 1: { + 0: {MedalId: 1, MedalDay: 30, Diamond: 300000, Noble: 5, NobleDay: 15}, + 1: {MedalId: 1, MedalDay: 30, Diamond: 100000, Noble: 5, NobleDay: 7}, + 4: {HeaddressId: 1, HeaddressDay: 30}, + }, + 2: { + 0: {MedalId: 1, MedalDay: 30, Diamond: 200000, Noble: 4, NobleDay: 15}, + 1: {MedalId: 1, MedalDay: 30, Diamond: 80000, Noble: 4, NobleDay: 7}, + 4: {HeaddressId: 1, HeaddressDay: 30}, + }, + 3: { + 0: {MedalId: 1, MedalDay: 30, Diamond: 100000, Noble: 5, NobleDay: 5}, + 1: {MedalId: 1, MedalDay: 30, Diamond: 50000}, + 4: {HeaddressId: 1, HeaddressDay: 30}, + }, + 4: { + 0: {MedalId: 1, MedalDay: 30}, + 1: {MedalId: 1, MedalDay: 30, HeaddressId: 1, HeaddressDay: 30}, + }, + } } -- 2.22.0