anniversary.go 3.65 KB
Newer Older
hujiebin's avatar
hujiebin committed
1 2 3
package cp_m

import (
hujiebin's avatar
hujiebin committed
4
	"fmt"
hujiebin's avatar
hujiebin committed
5 6
	"git.hilo.cn/hilo-common/domain"
	"git.hilo.cn/hilo-common/resource/mysql"
hujiebin's avatar
hujiebin committed
7
	"hilo-user/_const/enum/cp_e"
hujiebin's avatar
hujiebin committed
8
	"hilo-user/domain/model/user_m"
hujiebin's avatar
hujiebin committed
9
	"time"
hujiebin's avatar
hujiebin committed
10 11 12 13 14
)

// CpAnniversary  cp纪念日
type CpAnniversary struct {
	mysql.Entity
hujiebin's avatar
hujiebin committed
15
	Type      cp_e.AnniversaryItemType
hujiebin's avatar
hujiebin committed
16
	CpId      mysql.ID
hujiebin's avatar
hujiebin committed
17 18 19 20 21 22
	UserId1   mysql.ID
	UserId2   mysql.ID
	Content   string
	Timestamp int64
	IsRemind  bool
	Reminded  mysql.YesNo
hujiebin's avatar
hujiebin committed
23
	Sort      int
hujiebin's avatar
hujiebin committed
24 25
}

hujiebin's avatar
hujiebin committed
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
// 初始化6个cp纪念日
// 1)我们在一起;2)XXX的生日;3)XXX的生日;4)第一次说我爱你;5)第一次亲吻;6)结婚纪念日
// todo 翻译
func InitCpAnniversary(model *domain.Model, cp CpRelationTmp) error {
	users, err := user_m.GetUserMapByIds(model, []uint64{cp.UserId1, cp.UserId2})
	if err != nil {
		return err
	}
	if err := AddCpAnniversary(model, cp_e.AnniversaryItemTypeNormal, cp, "我们在一起", time.Now().Unix(), true, 100); err != nil {
		return err
	}
	if err := AddCpAnniversary(model, cp_e.AnniversaryItemTypeAnniversary, cp, fmt.Sprintf("%s的生日", users[cp.UserId1].Nick), int64(users[cp.UserId1].Birthday), true, 0); err != nil {
		return err
	}
	if err := AddCpAnniversary(model, cp_e.AnniversaryItemTypeAnniversary, cp, fmt.Sprintf("%s的生日", users[cp.UserId2].Nick), int64(users[cp.UserId2].Birthday), true, 0); err != nil {
		return err
	}
	if err := AddCpAnniversary(model, cp_e.AnniversaryItemTypeNormal, cp, "第一次说我爱你", 0, false, 0); err != nil {
		return err
	}
	if err := AddCpAnniversary(model, cp_e.AnniversaryItemTypeNormal, cp, "第一次亲吻", 0, false, 0); err != nil {
		return err
	}
	if err := AddCpAnniversary(model, cp_e.AnniversaryItemTypeAnniversary, cp, "结婚纪念日", 0, false, 0); err != nil {
		return err
	}
	return nil
}

hujiebin's avatar
hujiebin committed
55
// 添加cp纪念日
hujiebin's avatar
hujiebin committed
56
func AddCpAnniversary(model *domain.Model, Type cp_e.AnniversaryItemType, cp CpRelationTmp, content string, ts int64, isRemind bool, sort int) error {
hujiebin's avatar
hujiebin committed
57
	return model.DB().Model(CpAnniversary{}).Create(&CpAnniversary{
hujiebin's avatar
hujiebin committed
58
		CpId:      cp.ID,
hujiebin's avatar
hujiebin committed
59
		Type:      Type,
hujiebin's avatar
hujiebin committed
60 61 62 63 64 65
		UserId1:   cp.UserId1,
		UserId2:   cp.UserId2,
		Content:   content,
		Timestamp: ts,
		IsRemind:  isRemind,
		Reminded:  mysql.NO,
hujiebin's avatar
hujiebin committed
66
		Sort:      sort,
hujiebin's avatar
hujiebin committed
67 68 69 70
	}).Error
}

// 更新cp纪念日
hujiebin's avatar
hujiebin committed
71
func UpdateCpAnniversary(model *domain.Model, id mysql.ID, content string, ts int64, isRemind bool) error {
hujiebin's avatar
hujiebin committed
72 73
	updates := map[string]interface{}{
		"content":   content,
hujiebin's avatar
hujiebin committed
74
		"timestamp": ts,
hujiebin's avatar
hujiebin committed
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
		"is_remind": isRemind,
	}
	return model.DB().Model(CpAnniversary{}).Where("id = ?", id).Updates(updates).Error
}

func DelCpAnniversary(model *domain.Model, id mysql.ID) error {
	return model.DB().Model(CpAnniversary{}).Where("id = ? ", id).Delete(&CpAnniversary{}).Error
}

// 根据用户id获取所有纪念日
func GetAllCpAnniversary(model *domain.Model, userId mysql.ID) []CpAnniversary {
	var res []CpAnniversary
	relation, exists := GetCpRelation(model, userId)
	if !exists {
		return res
	}
hujiebin's avatar
hujiebin committed
91
	if err := model.DB().Model(CpAnniversary{}).Where("cp_id = ?", relation.ID).Order("`sort` DESC,updated_time DESC,id ASC").Find(&res).Error; err != nil {
hujiebin's avatar
hujiebin committed
92 93 94 95
		model.Log.Errorf("GetAllCpAnniversary fail:%v", err)
	}
	return res
}
hujiebin's avatar
hujiebin committed
96 97 98 99 100

// 获取所有需要提醒的纪念日
func GetNeedRemindCpAnniversary(model *domain.Model) []CpAnniversary {
	var res []CpAnniversary
	if err := model.DB().Model(CpAnniversary{}).
hujiebin's avatar
hujiebin committed
101
		Where("`timestamp` > ?", time.Now().Unix()).
hujiebin's avatar
hujiebin committed
102 103 104 105 106 107 108 109 110 111 112
		Where("is_remind = 1").
		Where("reminded = ?", mysql.NO).
		Find(&res).Error; err != nil {
		model.Log.Errorf("GetNeedRemindCpAnniversary fail:%v", err)
	}
	return res
}

func UpdateCpAnniversaryReminded(model *domain.Model, id mysql.ID) error {
	return model.DB().Model(CpAnniversary{}).Where("id = ?", id).Update("reminded", mysql.YES).Error
}