印度包网
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.
 
 
 

192 lines
4.3 KiB

package handler
import (
"server/call"
"server/common"
"server/db"
"server/modules/web/app"
"server/modules/web/values"
"server/pb"
"github.com/gin-gonic/gin"
"github.com/liangdas/mqant/log"
)
func MailList(c *gin.Context) {
a := app.NewApp(c)
defer func() {
a.Response()
}()
req := new(values.MailListReq)
if !a.S(req) {
return
}
if req.Num*req.Page > common.MailMaxCount {
a.Code = values.CodeParam
return
}
list := []common.Mail{}
count, err := db.Mysql().QueryMailList(a.UID, req.Page, req.Num, &list, req.Tag)
if err != nil {
a.Code = values.CodeRetry
return
}
// for i := range list {
// list[i].Enclosure = []*pb.CurrencyPair{}
// if len(list[i].Enc) > 0 {
// json.Unmarshal([]byte(list[i].Enc), &list[i].Enclosure)
// }
// }
resp := values.MailListResp{
List: list,
Count: int(count),
}
a.Data = resp
call.PushRed(a.UID, pb.RedPointModule_RedPointMail, 0)
}
func ReadMail(c *gin.Context) {
a := app.NewApp(c)
defer func() {
a.Response()
}()
req := new(values.ReadMailReq)
if !a.S(req) {
return
}
// id, err := strconv.Atoi(req.ID)
// if err != nil {
// log.Error("err:%v", err)
// a.Code = values.CodeRetry
// return
// }
id := req.ID
one := &common.Mail{ID: id}
err := db.Mysql().Get(one)
if err != nil {
a.Code = values.CodeRetry
return
}
count, err := db.Mysql().UpdateRes(&common.Mail{ID: id, Status: common.MailStatusNew}, map[string]interface{}{"status": common.MailStatusRead})
if count == 0 || err != nil {
log.Error("err:%v", err)
a.Code = values.CodeRetry
return
}
call.UpsertRedPointAndNotify(a.UID, -1, call.ModuleMail)
a.Data = values.ReadMailResp{Mail: *one}
}
// func DrawMail(c *gin.Context) {
// a := app.NewApp(c)
// defer func() {
// a.Response()
// }()
// req := new(values.DrawMailReq)
// if !a.S(req) {
// return
// }
// // id, err := strconv.Atoi(req.ID)
// // if err != nil {
// // log.Error("err:%v", err)
// // a.Code = values.CodeRetry
// // return
// // }
// id := req.ID
// one := &common.Mail{ID: id}
// err := db.Mysql().Get(one)
// if err != nil {
// a.Code = values.CodeRetry
// return
// }
// if len(one.Enc) == 0 {
// a.Code = values.CodeMailUndrawable
// return
// }
// if one.Status > common.MailStatusRead {
// a.Code = values.CodeMailDrew
// return
// }
// pairs := []*pb.CurrencyPair{}
// err = json.Unmarshal([]byte(one.Enc), &pairs)
// if err != nil {
// log.Error("err:%v", err)
// a.Code = values.CodeRetry
// return
// }
// count, err := db.Mysql().UpdateRes(&common.Mail{ID: id, Status: common.MailStatusRead}, map[string]interface{}{"status": common.MailStatusDraw})
// if count == 0 || err != nil {
// log.Error("err:%v", err)
// a.Code = values.CodeRetry
// return
// }
// for _, v := range pairs {
// if _, err := call.UpdateCurrencyPro(&common.UpdateCurrency{
// ShouldNotify: true,
// CurrencyBalance: &common.CurrencyBalance{
// UID: a.UID,
// Event: common.CurrencyEventMailDraw,
// Type: common.CurrencyType(v.Type),
// Value: v.Value,
// },
// }); err != nil {
// log.Error("err:%v", err)
// a.Code = values.CodeRetry
// return
// }
// }
// }
func DeleteMail(c *gin.Context) {
a := app.NewApp(c)
defer func() {
a.Response()
}()
req := new(values.DeleteMailReq)
if !a.S(req) {
return
}
count := 0
for _, v := range req.ID {
// id, err := strconv.Atoi(v)
// if err != nil {
// log.Error("err:%v", err)
// a.Code = values.CodeRetry
// return
// }
id := v
one := &common.Mail{ID: id}
err := db.Mysql().Get(one)
if err != nil {
a.Code = values.CodeRetry
return
}
status := one.Status
count, err := db.Mysql().UpdateRes(&common.Mail{ID: id}, map[string]interface{}{"status": common.MailStatusDelete})
if count == 0 || err != nil {
log.Error("err:%v", err)
a.Code = values.CodeRetry
return
}
if status == common.MailStatusNew {
count++
}
}
if count > 0 {
call.UpsertRedPointAndNotify(a.UID, -count, call.ModuleMail)
}
}
func DeleteMailAll(c *gin.Context) {
a := app.NewApp(c)
defer func() {
a.Response()
}()
err := db.Mysql().Update(&common.Mail{Receiver: a.UID}, map[string]interface{}{"status": common.MailStatusDelete})
if err != nil {
a.Code = values.CodeRetry
return
}
call.UpsertRedPointAndNotify(a.UID, 0, call.ModuleMail)
}