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

188 lines
4.2 KiB

1 year ago
package handler
import (
3 months ago
"encoding/json"
"fmt"
"github.com/gin-gonic/gin"
"github.com/liangdas/mqant/log"
1 year ago
"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{}
3 months ago
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)
1 year ago
if err != nil {
a.Code = values.CodeRetry
return
}
3 months ago
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)
}
}
1 year ago
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
}
1 year ago
// call.UpsertRedPointAndNotify(a.UID, -1, call.ModuleMail)
1 year ago
a.Data = values.ReadMailResp{Mail: *one}
1 year ago
1 year ago
}
3 months ago
func DrawMail(c *gin.Context) {
a := app.NewApp(c)
defer func() {
a.Response()
}()
req := new(values.DrawMailReq)
if !a.S(req) {
return
}
1 year ago
3 months ago
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
}
}
1 year ago
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
}
}