|
|
|
|
@ -1,15 +1,10 @@ |
|
|
|
|
package call |
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
"fmt" |
|
|
|
|
"reflect" |
|
|
|
|
"github.com/liangdas/mqant/log" |
|
|
|
|
"server/common" |
|
|
|
|
"server/db" |
|
|
|
|
"server/pb" |
|
|
|
|
"strings" |
|
|
|
|
|
|
|
|
|
"github.com/liangdas/mqant/log" |
|
|
|
|
"gorm.io/gorm" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
const ( |
|
|
|
|
@ -18,30 +13,34 @@ const ( |
|
|
|
|
|
|
|
|
|
// 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) |
|
|
|
|
//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 := &pb.RedPoint{} |
|
|
|
|
send.List = append(send.List, &pb.RedInfo{ModuleName: pb.RedPointModule_RedPointMail, Num: uint32(diff)}) |
|
|
|
|
SendNR(uid, int(pb.ServerCommonResp_CommonRedPointResp), send, "common") |
|
|
|
|
//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) { |
|
|
|
|
@ -61,15 +60,23 @@ func PushMailRed(uid int) { |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if unReadCount > 0 { |
|
|
|
|
var platform, personal bool |
|
|
|
|
one := &pb.RedPoint{ |
|
|
|
|
List: []*pb.RedInfo{ |
|
|
|
|
{ |
|
|
|
|
ModuleName: pb.RedPointModule_RedPointMail, |
|
|
|
|
Num: uint32(unReadCount), |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
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 {
|
|
|
|
|
|