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.
261 lines
5.9 KiB
261 lines
5.9 KiB
package v1 |
|
|
|
import ( |
|
"context" |
|
|
|
v1pb "go-common/app/interface/live/web-ucenter/api/http/v1" |
|
"go-common/app/interface/live/web-ucenter/conf" |
|
"go-common/app/service/live/xrewardcenter/api/grpc/v1" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
"go-common/library/net/metadata" |
|
) |
|
|
|
// AnchorTaskService struct |
|
type AnchorTaskService struct { |
|
conf *conf.Config |
|
// optionally add other properties here, such as dao |
|
// dao *dao.Dao |
|
conn v1.AnchorRewardClient |
|
} |
|
|
|
//NewAnchorTaskService init |
|
func NewAnchorTaskService(c *conf.Config) (s *AnchorTaskService) { |
|
s = &AnchorTaskService{ |
|
conf: c, |
|
} |
|
conn, err := v1.NewClient(conf.Conf.Warden) |
|
if err != nil { |
|
panic(err) |
|
} |
|
s.conn = conn |
|
|
|
return s |
|
} |
|
|
|
// MyReward implementation |
|
// * (主播侧)-我的主播奖励(登录态) |
|
func (s *AnchorTaskService) MyReward(ctx context.Context, req *v1pb.AnchorTaskMyRewardReq) (resp *v1pb.AnchorTaskMyRewardResp, err error) { |
|
resp = &v1pb.AnchorTaskMyRewardResp{} |
|
|
|
mid, _ := metadata.Value(ctx, "mid").(int64) |
|
|
|
if mid <= 0 { |
|
err = ecode.NoLogin |
|
return |
|
} |
|
|
|
page := req.GetPage() |
|
if page <= 0 { |
|
page = 1 |
|
} |
|
|
|
ret, err := s.conn.MyReward(ctx, &v1.AnchorTaskMyRewardReq{ |
|
Page: page, |
|
Uid: mid, |
|
}) |
|
|
|
if err != nil { |
|
return |
|
} |
|
|
|
resp.Page = &v1pb.AnchorTaskMyRewardResp_Page{ |
|
Page: ret.GetPage().GetPage(), |
|
PageSize: ret.GetPage().GetPageSize(), |
|
TotalPage: ret.GetPage().GetTotalPage(), |
|
TotalCount: ret.GetPage().GetTotalCount(), |
|
} |
|
resp.ExpireCount = ret.GetExpireCount() |
|
|
|
for _, v := range ret.Data { |
|
resp.Data = append(resp.Data, &v1pb.AnchorTaskMyRewardResp_RewardObj{ |
|
Id: v.GetId(), |
|
RewardType: v.GetRewardType(), |
|
Status: v.GetStatus(), |
|
RewardId: v.GetRewardId(), |
|
Name: v.GetName(), |
|
Icon: v.GetIcon(), |
|
AchieveTime: v.GetAchieveTime(), |
|
ExpireTime: v.GetExpireTime(), |
|
Source: v.GetSource(), |
|
RewardIntro: v.GetRewardIntro(), |
|
}) |
|
} |
|
|
|
return |
|
} |
|
|
|
// UseRecord implementation |
|
// (主播侧)-奖励使用记录(登录态) |
|
// `midware:"auth"` |
|
func (s *AnchorTaskService) UseRecord(ctx context.Context, req *v1pb.AnchorTaskUseRecordReq) (resp *v1pb.AnchorTaskUseRecordResp, err error) { |
|
resp = &v1pb.AnchorTaskUseRecordResp{} |
|
|
|
mid, _ := metadata.Value(ctx, "mid").(int64) |
|
|
|
if mid <= 0 { |
|
err = ecode.NoLogin |
|
return |
|
} |
|
|
|
page := req.GetPage() |
|
if page <= 0 { |
|
page = 1 |
|
} |
|
|
|
ret, err := s.conn.UseRecord(ctx, &v1.AnchorTaskUseRecordReq{ |
|
Page: page, |
|
Uid: mid, |
|
}) |
|
|
|
if err != nil { |
|
return |
|
} |
|
|
|
resp.Page = &v1pb.AnchorTaskUseRecordResp_Page{ |
|
Page: ret.GetPage().GetPage(), |
|
PageSize: ret.GetPage().GetPageSize(), |
|
TotalPage: ret.GetPage().GetTotalPage(), |
|
TotalCount: ret.GetPage().GetTotalCount(), |
|
} |
|
for _, v := range ret.Data { |
|
resp.Data = append(resp.Data, &v1pb.AnchorTaskUseRecordResp_RewardObj{ |
|
Id: v.GetId(), |
|
RewardId: v.GetRewardId(), |
|
Status: v.GetStatus(), |
|
Name: v.GetName(), |
|
Icon: v.GetIcon(), |
|
AchieveTime: v.GetAchieveTime(), |
|
ExpireTime: v.GetExpireTime(), |
|
Source: v.GetSource(), |
|
RewardIntro: v.GetRewardIntro(), |
|
UseTime: v.GetUseTime(), |
|
}) |
|
} |
|
return |
|
} |
|
|
|
// UseReward implementation |
|
// (主播侧)-使用奖励(登录态) |
|
// `method:"POST" midware:"auth"` |
|
func (s *AnchorTaskService) UseReward(ctx context.Context, req *v1pb.AnchorTaskUseRewardReq) (resp *v1pb.AnchorTaskUseRewardResp, err error) { |
|
|
|
resp = &v1pb.AnchorTaskUseRewardResp{} |
|
|
|
mid, _ := metadata.Value(ctx, "mid").(int64) |
|
|
|
if mid <= 0 { |
|
err = ecode.NoLogin |
|
return |
|
} |
|
|
|
id := req.GetId() |
|
|
|
if id <= 0 { |
|
err = ecode.ParamInvalid |
|
return |
|
} |
|
|
|
platform := req.GetPlatform() |
|
if "" == platform { |
|
platform = "web" |
|
} |
|
|
|
request := &v1.AnchorTaskUseRewardReq{ |
|
Id: id, |
|
Uid: mid, |
|
UsePlat: platform, |
|
} |
|
ret, err := s.conn.UseReward(ctx, request) |
|
log.Info("useReward req(%v) ret(%v), err(%v)", request, ret, err) |
|
|
|
if err != nil { |
|
|
|
statusCode := ecode.Cause(err) |
|
log.Info("useReward error statusCode(%v) ret(%v), err(%+v)", statusCode, statusCode.Code(), err) |
|
|
|
busCode := statusCode.Code() |
|
msg := "" |
|
|
|
switch busCode { |
|
case 1: |
|
msg = "参数错误" |
|
case 2: |
|
msg = "这个奖励已经过期了呢" |
|
case 3: |
|
msg = "这个奖励已经被你使用啦~" |
|
case 4: |
|
msg = "为了更好的使用体验,请在开播状态下使用【任意门】哦" |
|
case 5: |
|
msg = "奖励不存在" |
|
default: |
|
msg = "内部错误" |
|
} |
|
|
|
err = ecode.Error(ecode.Code(busCode), msg) |
|
return |
|
} |
|
|
|
resp.Result = ret.GetResult() |
|
|
|
return |
|
} |
|
|
|
// IsViewed implementation |
|
// (主播侧)-奖励和任务红点(登录态) |
|
// `midware:"auth"` |
|
func (s *AnchorTaskService) IsViewed(ctx context.Context, req *v1pb.AnchorTaskIsViewedReq) (resp *v1pb.AnchorTaskIsViewedResp, err error) { |
|
resp = &v1pb.AnchorTaskIsViewedResp{} |
|
|
|
mid, _ := metadata.Value(ctx, "mid").(int64) |
|
|
|
if mid <= 0 { |
|
err = ecode.NoLogin |
|
return |
|
} |
|
|
|
ret, err := s.conn.IsViewed(ctx, &v1.AnchorTaskIsViewedReq{ |
|
Uid: mid, |
|
}) |
|
log.Info("IsViewed req(%v) ret(%v), err(%v)", mid, ret, err) |
|
|
|
if err != nil { |
|
return |
|
} |
|
|
|
resp = &v1pb.AnchorTaskIsViewedResp{ |
|
TaskShouldNotice: ret.GetTaskShouldNotice(), |
|
ShowRewardEntry: ret.GetShowRewardEntry(), |
|
RewardShouldNotice: ret.GetRewardShouldNotice(), |
|
TaskStatus: ret.GetTaskStatus(), |
|
IsBlacked: ret.GetIsBlacked(), |
|
Url: ret.GetUrl(), |
|
} |
|
|
|
return |
|
} |
|
|
|
// AddReward implementation |
|
// (主播侧)-添加主播奖励(内部接口) |
|
// `method:"POST" internal:"true"` |
|
func (s *AnchorTaskService) AddReward(ctx context.Context, req *v1pb.AnchorTaskAddRewardReq) (resp *v1pb.AnchorTaskAddRewardResp, err error) { |
|
resp = &v1pb.AnchorTaskAddRewardResp{} |
|
|
|
ret, err := s.conn.AddReward(ctx, &v1.AnchorTaskAddRewardReq{ |
|
RewardId: req.GetRewardId(), |
|
Roomid: req.GetRoomid(), |
|
Source: req.GetSource(), |
|
Uid: req.GetUid(), |
|
OrderId: req.GetOrderId(), |
|
}) |
|
|
|
if err != nil { |
|
return |
|
} |
|
|
|
resp = &v1pb.AnchorTaskAddRewardResp{ |
|
Result: ret.GetResult(), |
|
} |
|
resp.Result = ret.GetResult() |
|
return |
|
}
|
|
|