123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- package newcomer
- import (
- "context"
- "fmt"
- "go-common/app/interface/main/creative/model/newcomer"
- "go-common/library/ecode"
- "go-common/library/log"
- )
- // H5TaskList for H5 detail task list
- func (s *Service) H5TaskList(c context.Context, mid int64, from string) (res *newcomer.H5TaskRewardList, err error) {
- var (
- u *UserTaskInfo
- tasks []*newcomer.Task
- taskTypeMap = make(map[int8][]*newcomer.Task) // taskType-task
- taskGroupMap = make(map[int64][]*newcomer.Task) // groupID-task
- )
- // get user tasks
- userTasks, err := s.newc.UserTasks(c, mid)
- if err != nil {
- log.Error("TaskList s.newc.UserTasks mid(%d)|error(%v)", mid, err)
- return
- }
- if len(userTasks) == 0 {
- // return:User did not receive the task
- res = &newcomer.H5TaskRewardList{
- TaskReceived: newcomer.NoBindTask,
- }
- return
- }
- // get user info
- u, err = s.getUserTaskInfo(c, mid, userTasks)
- if err != nil {
- return
- }
- // get tasks
- tasks = s.getTasksInfoByType(userTasks, newcomer.DefualtTaskType)
- if len(tasks) == 0 {
- err = ecode.CreativeNewcomerNoTask
- log.Error("TaskList s.GetTaskByType len(tasks) == 0")
- return
- }
- // group by groupID & taskType
- taskGroupMap, taskTypeMap = s.groupByTasks(tasks)
- // add task label & redirect
- s.addLabelRedirect(tasks, from)
- // task_gift
- taskGift, err := s.getTaskGiftData(c, mid, taskTypeMap, newcomer.FromH5)
- if err != nil {
- return
- }
- // task_groups
- tgs, err := s.getTaskGroupData(c, mid, taskGroupMap)
- if err != nil {
- return
- }
- // if userLevel == UserTaskLevel01 , set unlock state
- if u.UserTaskLevel == newcomer.UserTaskLevel01 {
- for _, v := range tgs {
- if v.TaskType == newcomer.AdvancedTaskType {
- v.RewardState = newcomer.RewardUnlock
- }
- }
- }
- // add tips
- s.addTaskGroupTip(tgs)
- s.addGiftTip(taskGift, taskTypeMap)
- res = &newcomer.H5TaskRewardList{
- TaskReceived: newcomer.BindTask,
- TaskGroups: tgs,
- TaskGift: taskGift,
- }
- return
- }
- // addLabelRedirect add label & redirect
- func (s *Service) addLabelRedirect(tasks []*newcomer.Task, from string) {
- if len(tasks) == 0 {
- return
- }
- for _, v := range tasks {
- if v == nil {
- continue
- }
- t, ok := s.TaskMapCache[v.ID]
- if !ok {
- continue
- }
- m, ook := newcomer.H5RedirectMap[from][t.TargetType]
- if !ook || len(m) == 0 {
- continue
- }
- v.Label = m[0]
- v.Redirect = m[1]
- }
- }
- // addGiftTip get gift tip
- func (s *Service) addGiftTip(tg []*newcomer.TaskGift, kindMap map[int8][]*newcomer.Task) {
- for _, v := range tg {
- if v == nil {
- continue
- }
- if v.State != newcomer.RewardUnlock {
- if tip, ok := newcomer.GiftTipMap[v.State][v.Type]; ok {
- v.Tip = tip
- } else {
- v.Tip = ""
- }
- continue
- }
- // 判断还需要完成奖几个任务
- if len(kindMap[v.Type]) == 0 {
- v.Tip = ""
- continue
- }
- unfinished := 0
- for _, v := range kindMap[v.Type] {
- if v == nil {
- continue
- }
- if v.CompleteSate == newcomer.TaskIncomplete {
- unfinished++
- }
- }
- v.Tip = fmt.Sprintf("再完成%d个任务就能领取了呢", unfinished)
- }
- }
- // addTaskGroupTip get taskGroup tip
- func (s *Service) addTaskGroupTip(tr []*newcomer.TaskRewardGroup) {
- for _, v := range tr {
- if v == nil {
- continue
- }
- if tip, ok := newcomer.TaskGroupTipMap[v.RewardState][v.GroupID]; ok {
- v.Tip = tip
- } else {
- v.Tip = ""
- }
- }
- }
|