anniversary.go 1.67 KB
Newer Older
hujiebin's avatar
hujiebin committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
package cp_cron

import (
	"encoding/json"
	"git.hilo.cn/hilo-common/domain"
	"git.hilo.cn/hilo-common/resource/config"
	"git.hilo.cn/hilo-common/sdk/tencentyun"
	"github.com/robfig/cron"
	"hilo-user/domain/model/cp_m"
	"hilo-user/domain/model/user_m"
)

// 纪念日
type CpAnniversaryNoticeMsg struct {
	Identifier string `json:"identifier"`
	Content    string `json:"content"`
	Date       string `json:"date"`
}

func CpAnniversaryNotice() {
	c := cron.New()
	// 1小时操作一次
	spec := "0 0 */1 * * ?"
	if !config.AppIsRelease() {
		// 测服1分钟
		spec = "0 * * * * ?"
	}
	_ = c.AddFunc(spec, func() {
		var model = domain.CreateModelNil()
		anniversary := cp_m.GetNeedRemindCpAnniversary(model)
		for _, v := range anniversary {
			var userIds []uint64
			userIds = append(userIds, v.UserId1, v.UserId2)
			users, err := user_m.GetUserMapByIds(model, userIds)
			if err != nil || len(users) < 2 {
				model.Log.Errorf("GetUserMapByIds fail:%v", err)
				continue
			}
			data, _ := json.Marshal(CpAnniversaryNoticeMsg{
				Identifier: "CpAnniversaryNotice",
				Content:    v.Content,
				Date:       v.Date,
			})
			if err := tencentyun.BatchSendCustomMsg(model, 1, users[0].ExternalId, []string{users[1].ExternalId}, string(data), "cp纪念日"); err != nil {
				model.Log.Errorf("BatchSendCustomMsg fail:%v", err)
			}
			if err := tencentyun.BatchSendCustomMsg(model, 1, users[1].ExternalId, []string{users[0].ExternalId}, string(data), "cp纪念日"); err != nil {
				model.Log.Errorf("BatchSendCustomMsg fail:%v", err)
			}
			if err := cp_m.UpdateCpAnniversaryReminded(model, v.ID); err != nil {
				model.Log.Errorf("UpdateCpAnniversaryReminded fail:%v", err)
			}
		}
	})
	c.Start()
}