116 lines
2.7 KiB
Go
116 lines
2.7 KiB
Go
package db
|
|
|
|
import (
|
|
"context"
|
|
"go_dreamfactory/pb"
|
|
|
|
"go_dreamfactory/lego/core"
|
|
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
"go.mongodb.org/mongo-driver/mongo/options"
|
|
)
|
|
|
|
const (
|
|
DB_MailTable core.SqlTable = "mail"
|
|
)
|
|
|
|
type IMail interface {
|
|
Mail_QueryUserMail(uId string) (mail []*pb.DB_MailData, err error)
|
|
Mail_InsertUserMail(mail *pb.DB_MailData) (err error)
|
|
Mail_ReadOneMail(objId string) (mail *pb.DB_MailData, err error)
|
|
Mail_GetMailAttachment(objId string) (itmes []*pb.MailAttachment, err error)
|
|
Mail_GetMailAttachmentState(objId string) bool
|
|
Mail_UpdateMailAttachmentState(objId string) bool
|
|
Mail_DelUserMail(objId string) bool
|
|
}
|
|
|
|
func (this *DB) Mail_QueryUserMail(uId string) (mail []*pb.DB_MailData, err error) {
|
|
|
|
if _data, err := this.mgo.Find(DB_MailTable, bson.M{"userid": uId}); err == nil {
|
|
for _data.Next(context.TODO()) {
|
|
temp := &pb.DB_MailData{}
|
|
if err = _data.Decode(temp); err == nil {
|
|
mail = append(mail, temp)
|
|
}
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
// 插入一封新的邮件
|
|
func (this *DB) Mail_InsertUserMail(mail *pb.DB_MailData) (err error) {
|
|
|
|
mail.ObjId = primitive.NewObjectID().Hex()
|
|
mail.Check = false
|
|
mail.Reward = false
|
|
|
|
if len(mail.GetItems()) > 0 {
|
|
mail.Reward = true
|
|
}
|
|
_, err = this.mgo.InsertOne(DB_MailTable, mail)
|
|
|
|
return err
|
|
}
|
|
|
|
func (this *DB) Mail_ReadOneMail(objId string) (mail *pb.DB_MailData, err error) {
|
|
|
|
err = this.mgo.FindOneAndUpdate(
|
|
DB_MailTable,
|
|
bson.M{"_id": objId},
|
|
bson.M{"$set": bson.M{
|
|
"check": false,
|
|
}},
|
|
options.FindOneAndUpdate().SetUpsert(false).SetReturnDocument(options.After),
|
|
).Decode(mail)
|
|
|
|
return mail, err
|
|
}
|
|
|
|
// 查询附件信息
|
|
func (this *DB) Mail_GetMailAttachment(objId string) (itmes []*pb.MailAttachment, err error) {
|
|
|
|
obj := this.mgo.FindOne(DB_MailTable, bson.M{"_id": objId})
|
|
var nd *pb.DB_MailData
|
|
err = obj.Decode(&nd)
|
|
itmes = nd.GetItems()
|
|
|
|
return itmes, err
|
|
}
|
|
|
|
// 查看领取附件状态
|
|
func (this *DB) Mail_GetMailAttachmentState(objId string) bool {
|
|
var nd *pb.DB_MailData
|
|
err := this.mgo.FindOne(DB_MailTable, bson.M{"_id": objId}).Decode(nd)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return nd.Reward && len(nd.GetItems()) > 0
|
|
}
|
|
|
|
// 更新领取附件状态
|
|
func (this *DB) Mail_UpdateMailAttachmentState(objId string) bool {
|
|
this.mgo.FindOneAndUpdate(
|
|
DB_MailTable,
|
|
bson.M{"_id": objId},
|
|
bson.M{"$set": bson.M{
|
|
"reward": true,
|
|
}},
|
|
options.FindOneAndUpdate().SetUpsert(false).SetReturnDocument(options.After),
|
|
)
|
|
|
|
return true
|
|
}
|
|
|
|
// 删除一封邮件
|
|
func (this *DB) Mail_DelUserMail(objId string) bool {
|
|
var obj *pb.DB_MailData
|
|
err := this.mgo.FindOne(DB_MailTable, bson.M{"_id": objId}).Decode(obj)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
this.mgo.DeleteOne(DB_MailTable, bson.M{"_id": objId})
|
|
|
|
return true
|
|
}
|