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
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) |
|
}
|
|
|