go_dreamfactory/modules/friend/api_cross_zanandreceive.go
2023-12-13 18:06:37 +08:00

178 lines
4.4 KiB
Go

package friend
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/pb"
"go_dreamfactory/utils"
)
// 领取点赞奖励
func (this *apiComp) ZanAndReceiveCheck(session comm.IUserSession, req *pb.FriendZanAndReceiveReq) (errdata *pb.ErrorData) {
return
}
func (this *apiComp) ZanAndReceive(session comm.IUserSession, req *pb.FriendZanAndReceiveReq) (errdata *pb.ErrorData) {
if errdata = this.ZanAndReceiveCheck(session, req); errdata != nil {
return
}
var (
self *pb.DBFriend
err error
atno []*pb.UserAtno
update map[string]interface{}
pointTotal int32 // 累计友情值
)
self, err = this.module.modelFriend.GetFriend(session.GetUserId())
if err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_FriendSelfNoData,
Title: pb.ErrorCode_FriendSelfNoData.ToString(),
}
return
}
// 是否已领取点赞
for _, v := range req.Receiveid {
if _, ok := utils.Find(self.GetZandIds, v); ok {
self.GetZandIds = utils.Deletex(self.GetZandIds, v)
pointTotal += 1
}
}
// 修改获赞Id
if err = this.module.modelFriend.Change(self.Uid, map[string]interface{}{
"getZandIds": self.GetZandIds,
}); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
//设置自己的友情值
ue, err := this.module.ModuleUser.GetUserExpand(session.GetUserId())
if err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
// 今日获赠的友情点是否达到上限
if ue.FriendPointID >= int32(this.module.globalConf.FriendMaxgetnum) {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_FriendPointLimit,
Title: pb.ErrorCode_FriendPointLimit.ToString(),
}
return
}
res := &pb.UserAtno{
A: "attr",
T: "friendPoint",
N: pointTotal,
}
atno = append(atno, res)
update = map[string]interface{}{
"friendPoint": ue.FriendPoint + pointTotal,
"friendPointID": ue.FriendPointID + pointTotal,
}
if true { // 处理接受列表
var (
target *pb.DBFriend
selfId string
pointTotal int32 //友情值累加
)
uid := session.GetUserId()
selfId = session.GetUserId()
// 不能给自己点赞
for _, v := range req.Zanid {
if v == selfId {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_FriendZanSelf,
Title: pb.ErrorCode_FriendZanSelf.ToString(),
}
return
}
}
// 是否已给好友点赞
for _, v := range req.Zanid {
target, err = this.module.modelFriend.GetFriend(v)
if err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_FriendSelfNoData,
Title: pb.ErrorCode_FriendSelfNoData.ToString(),
}
return
}
if _, ok := utils.Find(target.ZanIds, selfId); !ok {
pointTotal += 1
target.ZanIds = append(target.ZanIds, selfId)
target.GetZandIds = append(target.GetZandIds, selfId)
//设置被点赞玩家
if err = this.module.modelFriend.Change(target.GetUid(), map[string]interface{}{
"zanIds": target.ZanIds,
"getZandIds": target.GetZandIds,
}); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
this.module.Error("点赞",
log.Field{Key: "uid", Value: uid},
log.Field{Key: "err", Value: err.Error()},
)
return
}
}
}
// 今日送出的友情点是否达到上限
if ue.FriendPointOD >= this.module.globalConf.FriendMaxsendnum {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_FriendPointLimit,
Title: pb.ErrorCode_FriendPointLimit.ToString(),
Message: err.Error(),
}
return
}
update["friendPointOD"] = ue.FriendPointOD + pointTotal
// 赠送X次友情点
go this.module.AsynHandleSession(session.Clone(), func(session comm.IUserSession) {
this.module.ModuleBuried.TriggerBuried(session, comm.GetBuriedParam(comm.Rtype11, 1))
})
}
if len(update) > 0 {
if err := this.module.ModuleUser.ChangeUserExpand(session.GetUserId(), update); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
}
session.SendMsg(string(this.module.GetType()), "zanandreceive", &pb.FriendZanAndReceiveResp{
Atno: atno,
})
return
}