123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- package grpc
- import (
- "context"
- pb "go-common/app/service/main/push/api/grpc/v1"
- "go-common/app/service/main/push/model"
- "go-common/app/service/main/push/service"
- "go-common/library/net/rpc/warden"
- )
- // New warden rpc server
- func New(c *warden.ServerConfig, svc *service.Service) *warden.Server {
- svr := warden.NewServer(c)
- pb.RegisterPushServer(svr.Server(), &server{svc: svc})
- ws, err := svr.Start()
- if err != nil {
- panic(err)
- }
- return ws
- }
- type server struct {
- svc *service.Service
- }
- // AddReport 上报
- func (s *server) AddReport(ctx context.Context, req *pb.AddReportRequest) (reply *pb.AddReportReply, err error) {
- reply = new(pb.AddReportReply)
- if req.Report == nil {
- return
- }
- r := req.Report
- err = s.svc.AddReport(ctx, &model.Report{
- APPID: int64(r.APPID),
- PlatformID: int(r.PlatformID),
- Mid: r.Mid,
- Buvid: r.Buvid,
- DeviceToken: r.DeviceToken,
- Build: int(r.Build),
- TimeZone: int(r.TimeZone),
- NotifySwitch: int(r.NotifySwitch),
- DeviceBrand: r.DeviceBrand,
- DeviceModel: r.DeviceModel,
- OSVersion: r.OSVersion,
- Extra: r.Extra,
- })
- return
- }
- // DelReport 删除上报
- func (s *server) DelReport(ctx context.Context, req *pb.DelReportRequest) (reply *pb.DelReportReply, err error) {
- reply = new(pb.DelReportReply)
- err = s.svc.DelReport(ctx, int64(req.APPID), req.Mid, req.DeviceToken)
- return
- }
- // DelInvalidReports 删除无效token
- func (s *server) DelInvalidReports(ctx context.Context, req *pb.DelInvalidReportsRequest) (reply *pb.DelInvalidReportsReply, err error) {
- reply = new(pb.DelInvalidReportsReply)
- err = s.svc.DelInvalidReports(ctx, int(req.Type))
- return
- }
- // AddReportCache 上报缓存
- func (s *server) AddReportCache(ctx context.Context, req *pb.AddReportCacheRequest) (reply *pb.AddReportCacheReply, err error) {
- reply = new(pb.AddReportCacheReply)
- if req.Report == nil {
- return
- }
- r := req.Report
- err = s.svc.AddReportCache(ctx, &model.Report{
- APPID: int64(r.APPID),
- PlatformID: int(r.PlatformID),
- Mid: r.Mid,
- Buvid: r.Buvid,
- DeviceToken: r.DeviceToken,
- Build: int(r.Build),
- TimeZone: int(r.TimeZone),
- NotifySwitch: int(r.NotifySwitch),
- DeviceBrand: r.DeviceBrand,
- DeviceModel: r.DeviceModel,
- OSVersion: r.OSVersion,
- Extra: r.Extra,
- })
- return
- }
- // AddUserReportCache 用户的上报缓存
- func (s *server) AddUserReportCache(ctx context.Context, req *pb.AddUserReportCacheRequest) (reply *pb.AddUserReportCacheReply, err error) {
- reply = new(pb.AddUserReportCacheReply)
- var reports []*model.Report
- for _, r := range req.Reports {
- reports = append(reports, &model.Report{
- APPID: int64(r.APPID),
- PlatformID: int(r.PlatformID),
- Mid: r.Mid,
- Buvid: r.Buvid,
- DeviceToken: r.DeviceToken,
- Build: int(r.Build),
- TimeZone: int(r.TimeZone),
- NotifySwitch: int(r.NotifySwitch),
- DeviceBrand: r.DeviceBrand,
- DeviceModel: r.DeviceModel,
- OSVersion: r.OSVersion,
- Extra: r.Extra,
- })
- }
- err = s.svc.AddUserReportCache(ctx, req.Mid, reports)
- return
- }
- // AddTokenCache token缓存
- func (s *server) AddTokenCache(ctx context.Context, req *pb.AddTokenCacheRequest) (reply *pb.AddTokenCacheReply, err error) {
- reply = new(pb.AddTokenCacheReply)
- if req.Report == nil {
- return
- }
- r := req.Report
- err = s.svc.AddTokenCache(ctx, &model.Report{
- APPID: int64(r.APPID),
- PlatformID: int(r.PlatformID),
- Mid: r.Mid,
- Buvid: r.Buvid,
- DeviceToken: r.DeviceToken,
- Build: int(r.Build),
- TimeZone: int(r.TimeZone),
- NotifySwitch: int(r.NotifySwitch),
- DeviceBrand: r.DeviceBrand,
- DeviceModel: r.DeviceModel,
- OSVersion: r.OSVersion,
- Extra: r.Extra,
- })
- return
- }
- // AddTokensCache 批量token缓存
- func (s *server) AddTokensCache(ctx context.Context, req *pb.AddTokensCacheRequest) (reply *pb.AddTokensCacheReply, err error) {
- reply = new(pb.AddTokensCacheReply)
- if len(req.Reports) == 0 {
- return
- }
- reports := make(map[string]*model.Report, len(req.Reports))
- for _, v := range req.Reports {
- reports[v.DeviceToken] = &model.Report{
- APPID: int64(v.APPID),
- PlatformID: int(v.PlatformID),
- Mid: v.Mid,
- Buvid: v.Buvid,
- DeviceToken: v.DeviceToken,
- Build: int(v.Build),
- TimeZone: int(v.TimeZone),
- NotifySwitch: int(v.NotifySwitch),
- DeviceBrand: v.DeviceBrand,
- DeviceModel: v.DeviceModel,
- OSVersion: v.OSVersion,
- Extra: v.Extra,
- }
- }
- err = s.svc.AddTokensCache(ctx, reports)
- return
- }
- // AddCallback 回执
- func (s *server) AddCallback(ctx context.Context, req *pb.AddCallbackRequest) (reply *pb.AddCallbackReply, err error) {
- reply = new(pb.AddCallbackReply)
- cb := &model.Callback{
- Task: req.Task,
- APP: req.APP,
- Platform: int(req.Platform),
- Mid: int64(req.Mid),
- Pid: int(req.Pid),
- Token: req.Token,
- Buvid: req.Buvid,
- Click: uint8(req.Click),
- }
- if req.Extra != nil {
- cb.Extra = &model.CallbackExtra{
- Status: int(req.Extra.Status),
- Channel: int(req.Extra.Channel),
- }
- }
- err = s.svc.AddCallback(ctx, cb)
- return
- }
- // AddMidProgress 记录任务中mid数
- func (s *server) AddMidProgress(ctx context.Context, req *pb.AddMidProgressRequest) (reply *pb.AddMidProgressReply, err error) {
- reply = new(pb.AddMidProgressReply)
- err = s.svc.AddMidProgress(ctx, req.Task, req.MidTotal, req.MidValid)
- return
- }
- // Setting 获取用户业务开关配置
- func (s *server) Setting(ctx context.Context, req *pb.SettingRequest) (reply *pb.SettingReply, err error) {
- reply = new(pb.SettingReply)
- res, err := s.svc.Setting(ctx, req.Mid)
- if err != nil || res == nil {
- return
- }
- reply.Settings = make(map[int32]int32, len(res))
- for k, v := range res {
- reply.Settings[int32(k)] = int32(v)
- }
- return
- }
- // SetSetting 设置用户业务开关
- func (s *server) SetSetting(ctx context.Context, req *pb.SetSettingRequest) (reply *pb.SetSettingReply, err error) {
- reply = new(pb.SetSettingReply)
- err = s.svc.SetSetting(ctx, req.Mid, int(req.Type), int(req.Value))
- return
- }
|