|
|
|
|
package handler
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"encoding/json"
|
|
|
|
|
"fmt"
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
"github.com/liangdas/mqant/log"
|
|
|
|
|
"server/call"
|
|
|
|
|
"server/common"
|
|
|
|
|
"server/db"
|
|
|
|
|
"server/modules/web/app"
|
|
|
|
|
"server/modules/web/values"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
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{}
|
|
|
|
|
var user common.PlayerDBInfo
|
|
|
|
|
err := db.Mysql().C().Model(&common.PlayerDBInfo{}).Where("id = ?", a.UID).Find(&user).Error
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Error("get user err, %s", err.Error())
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
rechargeInfo := call.GetRechargeInfo(a.UID)
|
|
|
|
|
count, err := db.Mysql().QueryMailList(a.UID, req.Page, req.Num, user.Birth, int64(user.ChannelID), rechargeInfo.TotalRecharge, req.Tag, false, &list)
|
|
|
|
|
if err != nil {
|
|
|
|
|
a.Code = values.CodeRetry
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
for i := range list {
|
|
|
|
|
if len(list[i].Enc) > 0 {
|
|
|
|
|
list[i].Enclosure = new(common.CurrencyPair)
|
|
|
|
|
json.Unmarshal([]byte(list[i].Enc), &list[i].Enclosure)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
resp := values.MailListResp{
|
|
|
|
|
List: list,
|
|
|
|
|
Count: int(count),
|
|
|
|
|
}
|
|
|
|
|
a.Data = resp
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func ReadMail(c *gin.Context) {
|
|
|
|
|
a := app.NewApp(c)
|
|
|
|
|
defer func() {
|
|
|
|
|
a.Response()
|
|
|
|
|
}()
|
|
|
|
|
req := new(values.ReadMailReq)
|
|
|
|
|
if !a.S(req) {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if req.ID == 0 && req.All {
|
|
|
|
|
a.Code = values.CodeRetry
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if req.ID > 0 {
|
|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
a.Data = values.ReadMailResp{Mail: *one}
|
|
|
|
|
} else if req.All {
|
|
|
|
|
count, err := db.Mysql().UpdateRes(&common.Mail{Receiver: a.UID, 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)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func DrawMail(c *gin.Context) {
|
|
|
|
|
a := app.NewApp(c)
|
|
|
|
|
defer func() {
|
|
|
|
|
a.Response()
|
|
|
|
|
}()
|
|
|
|
|
req := new(values.DrawMailReq)
|
|
|
|
|
if !a.S(req) {
|
|
|
|
|
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 := new(common.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().UpdateWRes(&common.Mail{}, map[string]interface{}{"status": common.MailStatusDraw},
|
|
|
|
|
fmt.Sprintf("id = %d and status < %d and status != %d", id, common.MailStatusDraw, common.MailStatusDelete))
|
|
|
|
|
if count == 0 || err != nil {
|
|
|
|
|
log.Error("err:%v", err)
|
|
|
|
|
a.Code = values.CodeRetry
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if _, err := call.UpdateCurrencyPro(&common.UpdateCurrency{
|
|
|
|
|
CurrencyBalance: &common.CurrencyBalance{
|
|
|
|
|
UID: a.UID,
|
|
|
|
|
Event: common.CurrencyEventDrawMail,
|
|
|
|
|
Type: common.CurrencyINR,
|
|
|
|
|
Value: pairs.Value,
|
|
|
|
|
NeedBet: call.GetConfigCurrencyResourceNeedBet(common.CurrencyResourceBonus, pairs.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
|
|
|
|
|
}
|
|
|
|
|
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++
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
}
|