You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
4.1 KiB
117 lines
4.1 KiB
|
1 year ago
|
package es
|
||
|
|
|
||
|
|
import (
|
||
|
|
"server/common"
|
||
|
|
|
||
|
|
"github.com/liangdas/mqant/log"
|
||
|
|
"github.com/olivere/elastic/v7"
|
||
|
|
)
|
||
|
|
|
||
|
|
// QueryMailList 查询玩家邮件列表
|
||
|
|
// func (ES *EsClient) QueryMailList(uid, page, num int, list *[]common.Mail) (count int64, err error) {
|
||
|
|
// q := elastic.NewBoolQuery()
|
||
|
|
// q.Must(elastic.NewTermQuery("Receiver", uid))
|
||
|
|
// q.Filter(elastic.NewRangeQuery("Time").Gt(time.Now().Unix()-common.MailExpireTime), elastic.NewRangeQuery("Time").Lte(time.Now().Unix()),
|
||
|
|
// elastic.NewRangeQuery("Status").Gt(common.MailStatusDelete))
|
||
|
|
// count, err = ES.QueryList(common.ESIndexMail, page, num, q, list, "Status", true, "Type", true, "Time", false)
|
||
|
|
// if err != nil {
|
||
|
|
// log.Error("err:%v", err)
|
||
|
|
// return
|
||
|
|
// }
|
||
|
|
// if count > common.MailMaxCount {
|
||
|
|
// count = common.MailMaxCount
|
||
|
|
// }
|
||
|
|
// return
|
||
|
|
// }
|
||
|
|
|
||
|
|
// // QueryNewMailCount 查询玩家未读邮件个数
|
||
|
|
// func (ES *EsClient) QueryNewMailCount(uid int) int64 {
|
||
|
|
// q := elastic.NewBoolQuery()
|
||
|
|
// q.Must(elastic.NewTermQuery("Receiver", uid), elastic.NewTermQuery("Status", common.MailStatusNew))
|
||
|
|
// q.Filter(elastic.NewRangeQuery("Time").Gt(time.Now().Unix()-common.MailExpireTime), elastic.NewRangeQuery("Time").Lte(time.Now().Unix()))
|
||
|
|
// return ES.Count(common.ESIndexMail, q)
|
||
|
|
// }
|
||
|
|
|
||
|
|
// // ReadMail 查看一封邮件
|
||
|
|
// func (ES *EsClient) ReadMail(id string) *common.Mail {
|
||
|
|
// one := new(common.Mail)
|
||
|
|
// if err := ES.QueryOne(common.ESIndexMail, elastic.NewTermQuery("_id", id), one); err != nil {
|
||
|
|
// log.Error("err:%v", err)
|
||
|
|
// return nil
|
||
|
|
// }
|
||
|
|
// if one.Status == common.MailStatusNew {
|
||
|
|
// q := elastic.NewBoolQuery()
|
||
|
|
// q.Must(elastic.NewTermQuery("_id", id), elastic.NewTermQuery("Status", common.MailStatusNew))
|
||
|
|
// ES.UpdateByScript(common.ESIndexMail, q, fmt.Sprintf("ctx._source.Status=%v", common.MailStatusRead))
|
||
|
|
// }
|
||
|
|
// return one
|
||
|
|
// }
|
||
|
|
|
||
|
|
// // DrawMail 领取一封邮件
|
||
|
|
// func (ES *EsClient) DrawMail(id string) error {
|
||
|
|
// q := elastic.NewBoolQuery()
|
||
|
|
// q.Must(elastic.NewTermQuery("_id", id), elastic.NewTermQuery("Status", common.MailStatusRead))
|
||
|
|
// res, err := ES.UpdateByScript(common.ESIndexMail, q, fmt.Sprintf("ctx._source.Status=%v", common.MailStatusDraw))
|
||
|
|
// if err != nil {
|
||
|
|
// return err
|
||
|
|
// }
|
||
|
|
// if res < 1 {
|
||
|
|
// return errors.New("not updated")
|
||
|
|
// }
|
||
|
|
// return nil
|
||
|
|
// }
|
||
|
|
|
||
|
|
// // DeleteMail 删除一封邮件
|
||
|
|
// func (ES *EsClient) DeleteMail(id string) error {
|
||
|
|
// q := elastic.NewBoolQuery()
|
||
|
|
// q.Must(elastic.NewTermQuery("_id", id))
|
||
|
|
// q.MustNot(elastic.NewTermQuery("Status", common.MailStatusDelete))
|
||
|
|
// res, err := ES.UpdateByScript(common.ESIndexMail, q, fmt.Sprintf("ctx._source.Status=%v", common.MailStatusDelete))
|
||
|
|
// if err != nil {
|
||
|
|
// return err
|
||
|
|
// }
|
||
|
|
// if res < 1 {
|
||
|
|
// return errors.New("not updated")
|
||
|
|
// }
|
||
|
|
// return nil
|
||
|
|
// }
|
||
|
|
|
||
|
|
// // DeleteMailAll 一键删除邮件
|
||
|
|
// func (ES *EsClient) DeleteMailAll(uid int) error {
|
||
|
|
// q := elastic.NewBoolQuery()
|
||
|
|
// q.Must(elastic.NewTermQuery("Receiver", uid))
|
||
|
|
// q.MustNot(elastic.NewTermQuery("Status", common.MailStatusDelete))
|
||
|
|
// res, err := ES.UpdateByScript(common.ESIndexMail, q, fmt.Sprintf("ctx._source.Status=%v", common.MailStatusDelete))
|
||
|
|
// if err != nil {
|
||
|
|
// return err
|
||
|
|
// }
|
||
|
|
// if res < 1 {
|
||
|
|
// return errors.New("not updated")
|
||
|
|
// }
|
||
|
|
// return nil
|
||
|
|
// }
|
||
|
|
|
||
|
|
// QueryMailDraftList 查询邮件草稿列表
|
||
|
|
func (ES *EsClient) QueryMailDraftList(page, num int, list *[]common.MailDraft) (count int64, err error) {
|
||
|
|
q := elastic.NewBoolQuery()
|
||
|
|
// q.Must(elastic.NewTermQuery("UID", uid))
|
||
|
|
q.Filter(elastic.NewRangeQuery("Status").Gt(common.MailDraftStatusDelete))
|
||
|
|
count, err = ES.QueryList(common.ESIndexBackMailDraft, page-1, num, q, list, "Status", true, "Type", true, "Time", false)
|
||
|
|
if err != nil {
|
||
|
|
log.Error("err:%v", err)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
// SearchMailDraftList 条件查询邮件草稿列表
|
||
|
|
func (ES *EsClient) SearchMailDraftList(page, num int, q *elastic.BoolQuery, list *[]common.MailDraft) (count int64, err error) {
|
||
|
|
q.Filter(elastic.NewRangeQuery("Status").Gt(common.MailDraftStatusDelete))
|
||
|
|
count, err = ES.QueryList(common.ESIndexBackMailDraft, page-1, num, q, list, "Status", true, "Type", true, "Time", false)
|
||
|
|
if err != nil {
|
||
|
|
log.Error("err:%v", err)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
return
|
||
|
|
}
|