|
|
|
|
package call
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"github.com/liangdas/mqant/log"
|
|
|
|
|
"server/common"
|
|
|
|
|
"server/db"
|
|
|
|
|
"server/pb"
|
|
|
|
|
"server/util"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
ModuleMail = "Mail"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// UpsertRedPointAndNotify 更新红点并通知客户端
|
|
|
|
|
func UpsertRedPointAndNotify(uid, num int, module string) {
|
|
|
|
|
//red := &common.PlayerRed{UID: uid}
|
|
|
|
|
//db.Mysql().Get(red)
|
|
|
|
|
//val := reflect.ValueOf(red).Elem().FieldByName(module)
|
|
|
|
|
//diff := int(val.Int()) + num
|
|
|
|
|
//if red.ID == 0 {
|
|
|
|
|
// if diff < 0 {
|
|
|
|
|
// diff = 0
|
|
|
|
|
// }
|
|
|
|
|
// val.SetInt(int64(diff))
|
|
|
|
|
// db.Mysql().Create(red)
|
|
|
|
|
//} else {
|
|
|
|
|
// update := map[string]interface{}{}
|
|
|
|
|
// if num == 0 || diff <= 0 {
|
|
|
|
|
// update[module] = 0
|
|
|
|
|
// val.SetInt(0)
|
|
|
|
|
// } else {
|
|
|
|
|
// update[module] = gorm.Expr(fmt.Sprintf("%v + ?", strings.ToLower(module)), num)
|
|
|
|
|
// val.SetInt(int64(diff))
|
|
|
|
|
// }
|
|
|
|
|
// db.Mysql().Update(&common.PlayerRed{UID: uid}, update)
|
|
|
|
|
//}
|
|
|
|
|
//send := &pb.RedPoint{}
|
|
|
|
|
switch module {
|
|
|
|
|
case ModuleMail:
|
|
|
|
|
PushMailRed(uid)
|
|
|
|
|
}
|
|
|
|
|
//send.List = append(send.List, &pb.RedInfo{ModuleName: pb.RedPointModule_RedPointMail, Num: uint32(diff)})
|
|
|
|
|
//SendNR(uid, int(pb.ServerCommonResp_CommonRedPointResp), send, "common")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func PushMailRed(uid int) {
|
|
|
|
|
//redPoints := &common.PlayerRed{UID: uid}
|
|
|
|
|
//db.Mysql().Get(redPoints)
|
|
|
|
|
var user common.PlayerDBInfo
|
|
|
|
|
err := db.Mysql().C().Model(&common.PlayerDBInfo{}).Where("id = ?", uid).Find(&user).Error
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Error("get user err, %s", err.Error())
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
rechargeInfo := GetRechargeInfo(uid)
|
|
|
|
|
list := []common.Mail{}
|
|
|
|
|
unReadCount, err := db.Mysql().QueryMailList(uid, 0, 0, user.Birth, int64(user.ChannelID), rechargeInfo.TotalRecharge, -1, true, &list)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Error("get un read mail count err, %s", err.Error())
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var platform, personal bool
|
|
|
|
|
one := &pb.RedPoint{
|
|
|
|
|
Mail: 1,
|
|
|
|
|
}
|
|
|
|
|
for _, v := range list {
|
|
|
|
|
if v.Tag == 0 && !platform {
|
|
|
|
|
platform = true
|
|
|
|
|
one.List = append(one.List, &pb.RedInfo{ModuleName: pb.RedPointModule_RedPointMail, Num: uint32(unReadCount)})
|
|
|
|
|
} else if v.Tag == 1 && !personal {
|
|
|
|
|
personal = true
|
|
|
|
|
one.List = append(one.List, &pb.RedInfo{ModuleName: pb.RedPointModule_RedPointMailPersonal, Num: uint32(unReadCount)})
|
|
|
|
|
}
|
|
|
|
|
if platform && personal {
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if unReadCount > 0 {
|
|
|
|
|
SendNR(uid, int(pb.ServerCommonResp_CommonRedPointResp), one, "common")
|
|
|
|
|
}
|
|
|
|
|
//if redPoints.Mail > 0 {
|
|
|
|
|
// one := new(pb.RedPoint)
|
|
|
|
|
// one.List = append(one.List, &pb.RedInfo{ModuleName: pb.RedPointModule_RedPointMail, Num: uint32(redPoints.Mail)})
|
|
|
|
|
// SendNR(uid, int(pb.ServerCommonResp_CommonRedPointResp), one, "common")
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func PushVipRed(uid int) {
|
|
|
|
|
vipInfo := GetVIP(uid)
|
|
|
|
|
configVip := GetConfigVIPWithout0()
|
|
|
|
|
var levelBonus []int
|
|
|
|
|
for level := 1; level <= vipInfo.Level; level++ {
|
|
|
|
|
flag := int64(1 << level)
|
|
|
|
|
if vipInfo.Draws&flag == 0 {
|
|
|
|
|
levelBonus = append(levelBonus, level)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
con := GetConfigVIPByLevel(vipInfo.Level)
|
|
|
|
|
if con == nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
var weekBonus bool
|
|
|
|
|
if con.BonusWeek != 0 { // 有周奖励
|
|
|
|
|
if vipInfo.WeekBonusAt == 0 { // 可以领取
|
|
|
|
|
weekBonus = true
|
|
|
|
|
} else {
|
|
|
|
|
weekBonus = !util.IsSameWeek(time.Now().Unix(), vipInfo.WeekBonusAt)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var award bool
|
|
|
|
|
for _, v := range configVip {
|
|
|
|
|
if util.SliceContain(levelBonus, v.Level) && v.Bonus > 0 {
|
|
|
|
|
award = true
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
if v.Level == vipInfo.Level {
|
|
|
|
|
if weekBonus && v.BonusWeek > 0 {
|
|
|
|
|
award = true
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if award {
|
|
|
|
|
PushRed(uid, pb.RedPointModule_RedPointVipReward, 1)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func PushWeekCard(uid int) {
|
|
|
|
|
cons := GetConfigWeekCard()
|
|
|
|
|
if cons == nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
weekCardData, err := GetWeekCardData(uid)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if weekCardData.ID == 0 {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
now := time.Now()
|
|
|
|
|
var award bool
|
|
|
|
|
if weekCardData.ID != 0 && weekCardData.BeginAt != 0 { // 已经购买周卡的情况下
|
|
|
|
|
if !util.IsSameDayTimeStamp(now.Unix(), weekCardData.AwardAt) {
|
|
|
|
|
award = true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if award {
|
|
|
|
|
PushRed(uid, pb.RedPointModule_RedPointWeekCard, 1)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func PushRed(uid int, module pb.RedPointModule, num uint32) {
|
|
|
|
|
one := new(pb.RedPoint)
|
|
|
|
|
one.List = append(one.List, &pb.RedInfo{ModuleName: module, Num: num})
|
|
|
|
|
log.Debug("redpoint,uid:%v,module:%v,info:%v", uid, module, one)
|
|
|
|
|
SendNR(uid, int(pb.ServerCommonResp_CommonRedPointResp), one, "common")
|
|
|
|
|
checkMail(uid, nil)
|
|
|
|
|
}
|