Commit 785c265a authored by chenweijian's avatar chenweijian

家族贡献排行自动发奖

parent 18c512d7
......@@ -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},
},
}
}
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