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, &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 } // 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 := 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 } }