123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- package newcomer
- import (
- "context"
- "fmt"
- "time"
- "go-common/app/job/main/creative/model"
- "go-common/library/log"
- )
- //UserTasks get user unfinish task.
- func (d *Dao) UserTasks(c context.Context, index string, id int64, limit int) (res []*model.UserTask, err error) {
- _getUserTaskSQL := "SELECT id, mid, task_id, task_group_id, task_type, state, task_bind_time, ctime, mtime FROM newcomers_task_user_%s WHERE state=-1 AND id > ? order by id asc limit ?"
- rows, err := d.db.Query(c, fmt.Sprintf(_getUserTaskSQL, index), id, limit)
- if err != nil {
- log.Error("UserTasks d.db.Query error(%v)", err)
- return
- }
- defer rows.Close()
- res = make([]*model.UserTask, 0)
- for rows.Next() {
- r := &model.UserTask{}
- if err = rows.Scan(&r.ID, &r.MID, &r.TaskID, &r.TaskGroupID, &r.TaskType, &r.State, &r.TaskBindTime, &r.CTime, &r.MTime); err != nil {
- log.Error("UserTasks rows.Scan error(%v)", err)
- return
- }
- res = append(res, r)
- }
- return
- }
- // getTableName by mid%100
- func getTableName(mid int64) string {
- return fmt.Sprintf("%02d", mid%100)
- }
- // UpUserTask update user task finish state
- func (d *Dao) UpUserTask(c context.Context, mid, tid int64) (int64, error) {
- _upUserTaskSQL := "UPDATE newcomers_task_user_%s SET state=? WHERE mid=? AND task_id=?"
- res, err := d.db.Exec(c, fmt.Sprintf(_upUserTaskSQL, getTableName(mid)), 0, mid, tid)
- if err != nil {
- log.Error("RewardActivate d.db.Exec mid(%d) id(%d) error(%v)", mid, tid, err)
- return 0, err
- }
- return res.RowsAffected()
- }
- //UserTasksByMIDAndState get user unfinish task by mid & state.
- func (d *Dao) UserTasksByMIDAndState(c context.Context, mid int64, state int) (res []*model.UserTask, err error) {
- _getUserTaskByMIDSQL := "SELECT id, mid, task_id, task_group_id, task_type, state, ctime, mtime FROM newcomers_task_user_%s WHERE mid=? AND state=?"
- rows, err := d.db.Query(c, fmt.Sprintf(_getUserTaskByMIDSQL, getTableName(mid)), mid, state)
- if err != nil {
- log.Error("UserTasksByMIDAndState d.db.Query error(%v)", err)
- return
- }
- defer rows.Close()
- res = make([]*model.UserTask, 0)
- for rows.Next() {
- r := &model.UserTask{}
- if err = rows.Scan(&r.ID, &r.MID, &r.TaskID, &r.TaskGroupID, &r.TaskType, &r.State, &r.CTime, &r.MTime); err != nil {
- log.Error("UserTasksByMIDAndState rows.Scan error(%v)", err)
- return
- }
- res = append(res, r)
- }
- return
- }
- //Tasks get all task.
- func (d *Dao) Tasks(c context.Context) (res []*model.Task, err error) {
- _getTaskSQL := "SELECT id, group_id, type, state, target_type, target_value, title, `desc`, comment, ctime, mtime FROM newcomers_task WHERE state=0"
- rows, err := d.db.Query(c, _getTaskSQL)
- if err != nil {
- log.Error("Tasks d.db.Query error(%v)", err)
- return
- }
- defer rows.Close()
- res = make([]*model.Task, 0)
- for rows.Next() {
- r := &model.Task{}
- if err = rows.Scan(&r.ID, &r.GroupID, &r.Type, &r.State, &r.TargetType, &r.TargetValue, &r.Title, &r.Desc, &r.Comment, &r.CTime, &r.MTime); err != nil {
- log.Error("Tasks rows.Scan error(%v)", err)
- return
- }
- res = append(res, r)
- }
- return
- }
- // TaskByTID get task by task_id
- func (d *Dao) TaskByTID(c context.Context, mid int64, tid int64) (res *model.Task, err error) {
- _getOneTaskSQL := fmt.Sprintf("SELECT task_id,task_group_id,task_type,state FROM newcomers_task_user_%s WHERE mid=? AND task_id=?", getTableName(mid))
- row := d.db.QueryRow(c, _getOneTaskSQL, mid, tid)
- res = &model.Task{}
- if err = row.Scan(&res.ID, &res.GroupID, &res.Type, &res.State); err != nil {
- log.Error("TaskByTID ow.Scan error(%v)", err)
- return
- }
- return
- }
- // CheckTaskComplete check task complete state
- func (d *Dao) CheckTaskComplete(c context.Context, mid int64, tid int64) bool {
- task, err := d.TaskByTID(c, mid, tid)
- if err != nil || task == nil {
- return false
- }
- if task.State == 0 {
- return true
- }
- return false
- }
- //UserTasksNotify get unfinish task send notify to user.
- func (d *Dao) UserTasksNotify(c context.Context, index string, id int64, start, end string, limit int) (res []*model.UserTask, err error) {
- _getUserTaskSQL := "SELECT id, mid, task_id, task_group_id, task_type, state, ctime, mtime FROM newcomers_task_user_%s WHERE state=-1 AND task_type=1 AND id>? AND ctime >= ? AND ctime <= ? order by id asc limit ?"
- rows, err := d.db.Query(c, fmt.Sprintf(_getUserTaskSQL, index), id, start, end, limit)
- if err != nil {
- log.Error("UserTasks d.db.Query error(%v)", err)
- return
- }
- defer rows.Close()
- res = make([]*model.UserTask, 0)
- for rows.Next() {
- r := &model.UserTask{}
- if err = rows.Scan(&r.ID, &r.MID, &r.TaskID, &r.TaskGroupID, &r.TaskType, &r.State, &r.CTime, &r.MTime); err != nil {
- log.Error("UserTasks rows.Scan error(%v)", err)
- return
- }
- res = append(res, r)
- }
- return
- }
- //UserTasksByMID get user unfinish task by mid.
- func (d *Dao) UserTasksByMID(c context.Context, mid int64) (res []*model.UserTask, err error) {
- _getUserTaskByMIDSQL := "SELECT id, mid, task_id, task_group_id, task_type, state, ctime, mtime FROM newcomers_task_user_%s WHERE mid=?"
- rows, err := d.db.Query(c, fmt.Sprintf(_getUserTaskByMIDSQL, getTableName(mid)), mid)
- if err != nil {
- log.Error("UserTasksByMID d.db.Query error(%v)", err)
- return
- }
- defer rows.Close()
- res = make([]*model.UserTask, 0)
- for rows.Next() {
- r := &model.UserTask{}
- if err = rows.Scan(&r.ID, &r.MID, &r.TaskID, &r.TaskGroupID, &r.TaskType, &r.State, &r.CTime, &r.MTime); err != nil {
- log.Error("UserTasksByMID rows.Scan error(%v)", err)
- return
- }
- res = append(res, r)
- }
- return
- }
- // AllGiftRewards get all GiftRewards for cache
- func (d *Dao) AllGiftRewards(c context.Context) (res map[int8][]*model.GiftReward, err error) {
- _getAllGiftRewardSQL := "SELECT task_type,reward_id,state,comment,ctime,mtime FROM newcomers_gift_reward WHERE state=0"
- rows, err := d.db.Query(c, _getAllGiftRewardSQL)
- if err != nil {
- log.Error("AllGiftRewards d.db.Query error(%v)", err)
- return
- }
- defer rows.Close()
- res = make(map[int8][]*model.GiftReward)
- for rows.Next() {
- t := &model.GiftReward{}
- if err = rows.Scan(&t.TaskType, &t.RewardID, &t.State, &t.Comment, &t.CTime, &t.MTime); err != nil {
- log.Error("AllGiftRewards rows.Scan error(%v)", err)
- return
- }
- res[t.TaskType] = append(res[t.TaskType], t)
- }
- return
- }
- // GiftRewardCount get received gift reward count
- func (d *Dao) GiftRewardCount(c context.Context, mid int64) (res int, err error) {
- sqlStr := "SELECT count(DISTINCT task_gift_id) FROM newcomers_reward_receive WHERE NOT task_gift_id=0 AND mid=?"
- row := d.db.QueryRow(c, sqlStr, mid)
- err = row.Scan(&res)
- if err != nil {
- log.Error("GiftRewardCount d.db.QueryRow error(%v)", err)
- }
- return
- }
- // BaseRewardCount get received base reward count
- func (d *Dao) BaseRewardCount(c context.Context, mid int64) (res int, err error) {
- sqlStr := "SELECT count(DISTINCT task_group_id) FROM newcomers_reward_receive WHERE NOT task_group_id=0 AND mid=?"
- row := d.db.QueryRow(c, sqlStr, mid)
- err = row.Scan(&res)
- if err != nil {
- log.Error("BaseRewardCount d.db.QueryRow error(%v)", err)
- }
- return
- }
- //CheckTasksForRewardNotify get finish task send notify to user.
- func (d *Dao) CheckTasksForRewardNotify(c context.Context, index string, id int64, startMtime, endMtime time.Time, limit int) (res []*model.UserTask, err error) {
- _getUserTaskSQL := "SELECT id, mid, task_id, task_group_id, task_type, state, ctime, mtime FROM newcomers_task_user_%s WHERE state=0 AND id>? AND mtime>=? AND mtime<=? order by id asc limit ?"
- rows, err := d.db.Query(c, fmt.Sprintf(_getUserTaskSQL, index), id, startMtime.Format("2006-01-02 15:04:05"), endMtime.Format("2006-01-02 15:04:05"), limit)
- if err != nil {
- log.Error("UserTasks d.db.Query error(%v)", err)
- return
- }
- defer rows.Close()
- res = make([]*model.UserTask, 0)
- for rows.Next() {
- r := &model.UserTask{}
- if err = rows.Scan(&r.ID, &r.MID, &r.TaskID, &r.TaskGroupID, &r.TaskType, &r.State, &r.CTime, &r.MTime); err != nil {
- log.Error("UserTasks rows.Scan error(%v)", err)
- return
- }
- res = append(res, r)
- }
- return
- }
|