anchorTask.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. package v1
  2. import (
  3. "context"
  4. v1pb "go-common/app/interface/live/web-ucenter/api/http/v1"
  5. "go-common/app/interface/live/web-ucenter/conf"
  6. "go-common/app/service/live/xrewardcenter/api/grpc/v1"
  7. "go-common/library/ecode"
  8. "go-common/library/log"
  9. "go-common/library/net/metadata"
  10. )
  11. // AnchorTaskService struct
  12. type AnchorTaskService struct {
  13. conf *conf.Config
  14. // optionally add other properties here, such as dao
  15. // dao *dao.Dao
  16. conn v1.AnchorRewardClient
  17. }
  18. //NewAnchorTaskService init
  19. func NewAnchorTaskService(c *conf.Config) (s *AnchorTaskService) {
  20. s = &AnchorTaskService{
  21. conf: c,
  22. }
  23. conn, err := v1.NewClient(conf.Conf.Warden)
  24. if err != nil {
  25. panic(err)
  26. }
  27. s.conn = conn
  28. return s
  29. }
  30. // MyReward implementation
  31. // * (主播侧)-我的主播奖励(登录态)
  32. func (s *AnchorTaskService) MyReward(ctx context.Context, req *v1pb.AnchorTaskMyRewardReq) (resp *v1pb.AnchorTaskMyRewardResp, err error) {
  33. resp = &v1pb.AnchorTaskMyRewardResp{}
  34. mid, _ := metadata.Value(ctx, "mid").(int64)
  35. if mid <= 0 {
  36. err = ecode.NoLogin
  37. return
  38. }
  39. page := req.GetPage()
  40. if page <= 0 {
  41. page = 1
  42. }
  43. ret, err := s.conn.MyReward(ctx, &v1.AnchorTaskMyRewardReq{
  44. Page: page,
  45. Uid: mid,
  46. })
  47. if err != nil {
  48. return
  49. }
  50. resp.Page = &v1pb.AnchorTaskMyRewardResp_Page{
  51. Page: ret.GetPage().GetPage(),
  52. PageSize: ret.GetPage().GetPageSize(),
  53. TotalPage: ret.GetPage().GetTotalPage(),
  54. TotalCount: ret.GetPage().GetTotalCount(),
  55. }
  56. resp.ExpireCount = ret.GetExpireCount()
  57. for _, v := range ret.Data {
  58. resp.Data = append(resp.Data, &v1pb.AnchorTaskMyRewardResp_RewardObj{
  59. Id: v.GetId(),
  60. RewardType: v.GetRewardType(),
  61. Status: v.GetStatus(),
  62. RewardId: v.GetRewardId(),
  63. Name: v.GetName(),
  64. Icon: v.GetIcon(),
  65. AchieveTime: v.GetAchieveTime(),
  66. ExpireTime: v.GetExpireTime(),
  67. Source: v.GetSource(),
  68. RewardIntro: v.GetRewardIntro(),
  69. })
  70. }
  71. return
  72. }
  73. // UseRecord implementation
  74. // (主播侧)-奖励使用记录(登录态)
  75. // `midware:"auth"`
  76. func (s *AnchorTaskService) UseRecord(ctx context.Context, req *v1pb.AnchorTaskUseRecordReq) (resp *v1pb.AnchorTaskUseRecordResp, err error) {
  77. resp = &v1pb.AnchorTaskUseRecordResp{}
  78. mid, _ := metadata.Value(ctx, "mid").(int64)
  79. if mid <= 0 {
  80. err = ecode.NoLogin
  81. return
  82. }
  83. page := req.GetPage()
  84. if page <= 0 {
  85. page = 1
  86. }
  87. ret, err := s.conn.UseRecord(ctx, &v1.AnchorTaskUseRecordReq{
  88. Page: page,
  89. Uid: mid,
  90. })
  91. if err != nil {
  92. return
  93. }
  94. resp.Page = &v1pb.AnchorTaskUseRecordResp_Page{
  95. Page: ret.GetPage().GetPage(),
  96. PageSize: ret.GetPage().GetPageSize(),
  97. TotalPage: ret.GetPage().GetTotalPage(),
  98. TotalCount: ret.GetPage().GetTotalCount(),
  99. }
  100. for _, v := range ret.Data {
  101. resp.Data = append(resp.Data, &v1pb.AnchorTaskUseRecordResp_RewardObj{
  102. Id: v.GetId(),
  103. RewardId: v.GetRewardId(),
  104. Status: v.GetStatus(),
  105. Name: v.GetName(),
  106. Icon: v.GetIcon(),
  107. AchieveTime: v.GetAchieveTime(),
  108. ExpireTime: v.GetExpireTime(),
  109. Source: v.GetSource(),
  110. RewardIntro: v.GetRewardIntro(),
  111. UseTime: v.GetUseTime(),
  112. })
  113. }
  114. return
  115. }
  116. // UseReward implementation
  117. // (主播侧)-使用奖励(登录态)
  118. // `method:"POST" midware:"auth"`
  119. func (s *AnchorTaskService) UseReward(ctx context.Context, req *v1pb.AnchorTaskUseRewardReq) (resp *v1pb.AnchorTaskUseRewardResp, err error) {
  120. resp = &v1pb.AnchorTaskUseRewardResp{}
  121. mid, _ := metadata.Value(ctx, "mid").(int64)
  122. if mid <= 0 {
  123. err = ecode.NoLogin
  124. return
  125. }
  126. id := req.GetId()
  127. if id <= 0 {
  128. err = ecode.ParamInvalid
  129. return
  130. }
  131. platform := req.GetPlatform()
  132. if "" == platform {
  133. platform = "web"
  134. }
  135. request := &v1.AnchorTaskUseRewardReq{
  136. Id: id,
  137. Uid: mid,
  138. UsePlat: platform,
  139. }
  140. ret, err := s.conn.UseReward(ctx, request)
  141. log.Info("useReward req(%v) ret(%v), err(%v)", request, ret, err)
  142. if err != nil {
  143. statusCode := ecode.Cause(err)
  144. log.Info("useReward error statusCode(%v) ret(%v), err(%+v)", statusCode, statusCode.Code(), err)
  145. busCode := statusCode.Code()
  146. msg := ""
  147. switch busCode {
  148. case 1:
  149. msg = "参数错误"
  150. case 2:
  151. msg = "这个奖励已经过期了呢"
  152. case 3:
  153. msg = "这个奖励已经被你使用啦~"
  154. case 4:
  155. msg = "为了更好的使用体验,请在开播状态下使用【任意门】哦"
  156. case 5:
  157. msg = "奖励不存在"
  158. default:
  159. msg = "内部错误"
  160. }
  161. err = ecode.Error(ecode.Code(busCode), msg)
  162. return
  163. }
  164. resp.Result = ret.GetResult()
  165. return
  166. }
  167. // IsViewed implementation
  168. // (主播侧)-奖励和任务红点(登录态)
  169. // `midware:"auth"`
  170. func (s *AnchorTaskService) IsViewed(ctx context.Context, req *v1pb.AnchorTaskIsViewedReq) (resp *v1pb.AnchorTaskIsViewedResp, err error) {
  171. resp = &v1pb.AnchorTaskIsViewedResp{}
  172. mid, _ := metadata.Value(ctx, "mid").(int64)
  173. if mid <= 0 {
  174. err = ecode.NoLogin
  175. return
  176. }
  177. ret, err := s.conn.IsViewed(ctx, &v1.AnchorTaskIsViewedReq{
  178. Uid: mid,
  179. })
  180. log.Info("IsViewed req(%v) ret(%v), err(%v)", mid, ret, err)
  181. if err != nil {
  182. return
  183. }
  184. resp = &v1pb.AnchorTaskIsViewedResp{
  185. TaskShouldNotice: ret.GetTaskShouldNotice(),
  186. ShowRewardEntry: ret.GetShowRewardEntry(),
  187. RewardShouldNotice: ret.GetRewardShouldNotice(),
  188. TaskStatus: ret.GetTaskStatus(),
  189. IsBlacked: ret.GetIsBlacked(),
  190. Url: ret.GetUrl(),
  191. }
  192. return
  193. }
  194. // AddReward implementation
  195. // (主播侧)-添加主播奖励(内部接口)
  196. // `method:"POST" internal:"true"`
  197. func (s *AnchorTaskService) AddReward(ctx context.Context, req *v1pb.AnchorTaskAddRewardReq) (resp *v1pb.AnchorTaskAddRewardResp, err error) {
  198. resp = &v1pb.AnchorTaskAddRewardResp{}
  199. ret, err := s.conn.AddReward(ctx, &v1.AnchorTaskAddRewardReq{
  200. RewardId: req.GetRewardId(),
  201. Roomid: req.GetRoomid(),
  202. Source: req.GetSource(),
  203. Uid: req.GetUid(),
  204. OrderId: req.GetOrderId(),
  205. })
  206. if err != nil {
  207. return
  208. }
  209. resp = &v1pb.AnchorTaskAddRewardResp{
  210. Result: ret.GetResult(),
  211. }
  212. resp.Result = ret.GetResult()
  213. return
  214. }