Commit 785c265a authored by chenweijian's avatar chenweijian

家族贡献排行自动发奖

parent 18c512d7
...@@ -202,45 +202,42 @@ func CalcGroupPowerMonthRankAct(model *domain.Model) error { ...@@ -202,45 +202,42 @@ func CalcGroupPowerMonthRankAct(model *domain.Model) error {
return err return err
} }
} }
// 读奖励配置 // 奖励、日志
type award struct { awardList, logList, err := getAwardAndLogList(model, powerIds, response.Items, calcMonth)
MedalId uint64 if err != nil {
MedalDay uint32 return err
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},
},
} }
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) // 奖励 awardList := make([]*award_tx.UserAward, 0, 50) // 奖励
ownerMap, err := groupPower_m.GetPowerOwnerMap(model, powerIds) ownerMap, err := groupPower_m.GetPowerOwnerMap(model, powerIds)
if err != nil { if err != nil {
return err return nil, nil, err
} }
// log list // log list
logList := make([]*groupPower_m.ActFamilyMonthRankLog, 0, 50) logList := make([]*groupPower_m.ActFamilyMonthRankLog, 0, 50)
for _, v := range response.Items { for _, v := range items {
teamRank := 0 teamRank := 0
if v.Rank >= 1 && v.Rank <= 3 { if v.Rank >= 1 && v.Rank <= 3 {
teamRank = v.Rank teamRank = v.Rank
...@@ -252,16 +249,17 @@ func CalcGroupPowerMonthRankAct(model *domain.Model) error { ...@@ -252,16 +249,17 @@ func CalcGroupPowerMonthRankAct(model *domain.Model) error {
ownerId, ok := ownerMap[v.Id] ownerId, ok := ownerMap[v.Id]
if !ok || ownerId <= 0 { if !ok || ownerId <= 0 {
model.Log.Errorf("CalcGroupPowerMonthRankAct 获取势力主错误 familyId:%d", v.Id) model.Log.Errorf("CalcGroupPowerMonthRankAct 获取势力主错误 familyId:%d", v.Id)
return bizerr.InvalidParameter return nil, nil, bizerr.InvalidParameter
} }
uRankConfMap, tCOk := confMap[teamRank] uRankConfMap, tCOk := confMap[teamRank]
if !tCOk { if !tCOk {
break break
} }
// 家族长奖励
oAward, aOk := uRankConfMap[0] oAward, aOk := uRankConfMap[0]
if !aOk { if !aOk {
model.Log.Errorf("CalcGroupPowerMonthRankAct 配置错误:%v", confMap) model.Log.Errorf("CalcGroupPowerMonthRankAct 配置错误:%v", confMap)
return bizerr.InvalidParameter return nil, nil, bizerr.InvalidParameter
} }
oAwardJ, _ := json.Marshal(oAward) oAwardJ, _ := json.Marshal(oAward)
logList = append(logList, &groupPower_m.ActFamilyMonthRankLog{ logList = append(logList, &groupPower_m.ActFamilyMonthRankLog{
...@@ -272,9 +270,14 @@ func CalcGroupPowerMonthRankAct(model *domain.Model) error { ...@@ -272,9 +270,14 @@ func CalcGroupPowerMonthRankAct(model *domain.Model) error {
UserId: ownerId, UserId: ownerId,
Award: string(oAwardJ), Award: string(oAwardJ),
}) })
awardList = append(awardList, &award_tx.UserAward{MedalId: oAward.MedalId, MedalDuration: oAward.MedalDay, awardList = append(awardList, &award_tx.UserAward{
Diamond: oAward.Diamond, NobleLevel: oAward.Noble, NobleDuration: oAward.NobleDay}) MedalId: oAward.MedalId,
for i, u := range v.StarList { MedalDuration: oAward.MedalDay,
Diamond: oAward.Diamond,
NobleLevel: oAward.Noble,
NobleDuration: oAward.NobleDay})
// 家族成员奖励
for i, m := range v.StarList {
uRank := i + 1 uRank := i + 1
confIdx := 9 confIdx := 9
if uRank >= 1 && uRank <= 3 { if uRank >= 1 && uRank <= 3 {
...@@ -282,40 +285,63 @@ func CalcGroupPowerMonthRankAct(model *domain.Model) error { ...@@ -282,40 +285,63 @@ func CalcGroupPowerMonthRankAct(model *domain.Model) error {
} else if uRank >= 4 && uRank <= 10 { } else if uRank >= 4 && uRank <= 10 {
confIdx = 4 confIdx = 4
} }
award, aOk := uRankConfMap[confIdx] mAward, aOk := uRankConfMap[confIdx]
if !aOk { if !aOk {
break break
} }
awardJ, _ := json.Marshal(award) mAwardJ, _ := json.Marshal(mAward)
logList = append(logList, &groupPower_m.ActFamilyMonthRankLog{ logList = append(logList, &groupPower_m.ActFamilyMonthRankLog{
Period: calcMonth, Period: calcMonth,
FamilyId: v.Id, FamilyId: v.Id,
RankFamily: v.Rank, RankFamily: v.Rank,
RankUser: uRank, RankUser: uRank,
UserId: u.User.Id, UserId: m.User.Id,
Award: string(awardJ), Award: string(mAwardJ),
}) })
awardList = append(awardList, &award_tx.UserAward{MedalId: award.MedalId, MedalDuration: award.MedalDay, awardList = append(awardList, &award_tx.UserAward{
Diamond: award.Diamond, NobleLevel: award.Noble, NobleDuration: award.NobleDay, MedalId: mAward.MedalId,
HeaddressId: award.HeaddressId, HeaddressDuration: award.HeaddressDay}) 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 type awardConf struct {
err = groupPower_m.CreateActFamilyMonthRankLog(model, logList) MedalId uint64
if err != nil { MedalDay uint32
model.Log.Errorf("CalcGroupPowerMonthRankAct err:%+v", err) Diamond uint32
return err Noble uint32
} NobleDay uint32
// award HeaddressId uint64
for _, v := range awardList { HeaddressDay int
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) func CalcGroupPowerMonthRankActConf() map[int]map[int]*awardConf {
return err return map[int]map[int]*awardConf{
} 1: {
} 0: {MedalId: 1, MedalDay: 30, Diamond: 300000, Noble: 5, NobleDay: 15},
return nil 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},
},
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment