140 lines
3.5 KiB
Go
140 lines
3.5 KiB
Go
package friend
|
|
|
|
import (
|
|
"go_dreamfactory/comm"
|
|
"go_dreamfactory/lego/sys/log"
|
|
"go_dreamfactory/pb"
|
|
cfg "go_dreamfactory/sys/configure/structs"
|
|
"go_dreamfactory/utils"
|
|
)
|
|
|
|
// 点赞
|
|
func (this *apiComp) ZanCheck(session comm.IUserSession, req *pb.FriendZanReq) (errdata *pb.ErrorData) {
|
|
if len(req.FriendIds) == 0 {
|
|
errdata = &pb.ErrorData{
|
|
Code: pb.ErrorCode_ReqParameterError,
|
|
Title: pb.ErrorCode_ReqParameterError.ToString(),
|
|
}
|
|
this.module.Error("参数错误", log.Field{Key: "uid", Value: session.GetUserId()}, log.Field{Key: "params", Value: req.String()})
|
|
}
|
|
return
|
|
}
|
|
|
|
func (this *apiComp) Zan(session comm.IUserSession, req *pb.FriendZanReq) (errdata *pb.ErrorData) {
|
|
if errdata = this.ZanCheck(session, req); errdata != nil {
|
|
return
|
|
}
|
|
|
|
var (
|
|
target *pb.DBFriend
|
|
err error
|
|
selfId string
|
|
)
|
|
|
|
uid := session.GetUserId()
|
|
selfId = session.GetUserId()
|
|
|
|
// 不能给自己点赞
|
|
for _, v := range req.FriendIds {
|
|
if v == selfId {
|
|
errdata = &pb.ErrorData{
|
|
Code: pb.ErrorCode_FriendZanSelf,
|
|
Title: pb.ErrorCode_FriendZanSelf.ToString(),
|
|
}
|
|
return
|
|
}
|
|
}
|
|
|
|
var (
|
|
pointTotal int32 //友情值累加
|
|
)
|
|
// 是否已给好友点赞
|
|
for _, v := range req.FriendIds {
|
|
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
|
|
}
|
|
}
|
|
}
|
|
|
|
//设置友情值
|
|
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.FriendPointOD >= this.module.globalConf.FriendMaxsendnum {
|
|
errdata = &pb.ErrorData{
|
|
Code: pb.ErrorCode_FriendPointLimit,
|
|
Title: pb.ErrorCode_FriendPointLimit.ToString(),
|
|
Message: err.Error(),
|
|
}
|
|
return
|
|
}
|
|
|
|
update := map[string]interface{}{
|
|
"friendPointOD": ue.FriendPointOD + pointTotal,
|
|
}
|
|
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
|
|
}
|
|
|
|
rsp := &pb.FriendZanResp{
|
|
Flag: true,
|
|
}
|
|
|
|
// 给好友发友情点
|
|
s, _ := this.module.GetUserSession(target.Uid)
|
|
res := &cfg.Gameatn{
|
|
A: "attr",
|
|
T: "friendPoint",
|
|
N: 1,
|
|
}
|
|
this.module.DispenseRes(s, []*cfg.Gameatn{res}, true)
|
|
|
|
session.SendMsg(string(this.module.GetType()), FriendSubTypeZan, rsp)
|
|
|
|
// 赠送X次友情点
|
|
go this.module.AsynHandleSession(session.Clone(), func(session comm.IUserSession) {
|
|
this.module.ModuleBuried.TriggerBuried(session, comm.GetBuriedParam(comm.Rtype11, 1))
|
|
this.module.WriteUserLog(session.GetUserId(), "FriendGetrewardReq", res)
|
|
})
|
|
return
|
|
}
|