You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.3 KiB
91 lines
2.3 KiB
package service |
|
|
|
import ( |
|
"context" |
|
|
|
"go-common/app/interface/main/dm2/model" |
|
account "go-common/app/service/main/account/api" |
|
thumbUpApi "go-common/app/service/main/thumbup/api" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
"go-common/library/net/metadata" |
|
) |
|
|
|
// ThumbupDM like or cancel like a dm |
|
func (s *Service) ThumbupDM(c context.Context, oid, dmid, mid int64, op int8) (err error) { |
|
if !model.CheckThumbup(op) { |
|
err = ecode.RequestErr |
|
return |
|
} |
|
// check dm state |
|
idxMap, _, err := s.dao.IndexsByid(c, model.SubTypeVideo, oid, []int64{dmid}) |
|
if err != nil { |
|
log.Error("s.dao.IndexsByid(tp:%d,oid:%d,dmid:%d), error(%v)", 1, oid, dmid, err) |
|
return |
|
} |
|
if len(idxMap) <= 0 || !model.IsDMVisible(idxMap[dmid].State) { |
|
err = ecode.DMNotFound |
|
return |
|
} |
|
reply, err := s.accountRPC.Profile3(c, &account.MidReq{ |
|
Mid: mid, |
|
}) |
|
if err != nil { |
|
log.Error("s.accountRPC.Profile3(arg:%+v), error(%v)", mid, err) |
|
return |
|
} |
|
if reply.GetProfile().GetEmailStatus() == 0 && reply.GetProfile().GetTelStatus() == 0 { |
|
err = ecode.UserCheckNoPhone |
|
return |
|
} |
|
if reply.GetProfile().GetSilence() == 1 { |
|
err = ecode.DMActSilence |
|
return |
|
} |
|
sub, err := s.subject(c, model.SubTypeVideo, oid) |
|
if err != nil { |
|
return |
|
} |
|
arg2 := &thumbUpApi.LikeReq{ |
|
Mid: mid, |
|
UpMid: sub.Mid, |
|
Business: "danmu", |
|
OriginID: oid, |
|
MessageID: dmid, |
|
Action: thumbUpApi.Action(op), |
|
} |
|
_, err = s.thumbupRPC.Like(c, arg2) |
|
if err != nil { |
|
log.Error("dmAct s.thumbupRPC.Like(arg:%+v), error(%v)", arg2, err) |
|
return |
|
} |
|
return |
|
} |
|
|
|
// ThumbupList get list |
|
func (s *Service) ThumbupList(c context.Context, oid, mid int64, dmids []int64) (res map[int64]*model.ThumbupStat, err error) { |
|
var ( |
|
statsReply *thumbUpApi.StatsReply |
|
) |
|
if statsReply, err = s.thumbupRPC.Stats(c, &thumbUpApi.StatsReq{ |
|
Business: "danmu", |
|
OriginID: oid, |
|
MessageIds: dmids, |
|
Mid: mid, |
|
IP: metadata.String(c, metadata.RemoteIP), |
|
}); err != nil { |
|
log.Error("dmAct s.thumbupRPC.StatsWithLike(oid:%+v,dmids:%+v), error(%v)", oid, dmids, err) |
|
return |
|
} |
|
res = make(map[int64]*model.ThumbupStat) |
|
if statsReply == nil { |
|
return |
|
} |
|
for id, li := range statsReply.Stats { |
|
st := new(model.ThumbupStat) |
|
st.Likes = li.LikeNumber |
|
st.UserLike = int8(li.LikeState) |
|
res[id] = st |
|
} |
|
return |
|
}
|
|
|