fix/release
mofangmin 1 year ago
parent ebc5597113
commit 6b02bd2ded
  1. 14
      call/redpoint.go
  2. 1
      call/user.go
  3. 2
      modules/hall/player.go
  4. 6
      modules/web/handler/account.go
  5. 46
      modules/web/handler/activity.go
  6. 11
      modules/web/handler/share.go
  7. 19
      modules/web/handler/task.go
  8. 46
      modules/web/handler/user.go
  9. 18
      modules/web/handler/vip.go
  10. 1
      modules/web/routers/routers_user.go
  11. 14
      pb/proto/platform.proto
  12. 18
      util/http.go

@ -8,6 +8,7 @@ import (
"server/pb" "server/pb"
"strings" "strings"
"github.com/liangdas/mqant/log"
"gorm.io/gorm" "gorm.io/gorm"
) )
@ -39,15 +40,22 @@ func UpsertRedPointAndNotify(uid, num int, module string) {
db.Mysql().Update(&common.PlayerRed{UID: uid}, update) db.Mysql().Update(&common.PlayerRed{UID: uid}, update)
} }
send := &pb.RedPoint{} send := &pb.RedPoint{}
reflect.ValueOf(send).Elem().FieldByName(module).SetUint(uint64(diff)) send.List = append(send.List, &pb.RedInfo{ModuleName: pb.RedPointModule_RedPointMail, Num: uint32(diff)})
SendNR(uid, int(pb.ServerCommonResp_CommonRedPointResp), send, "common") SendNR(uid, int(pb.ServerCommonResp_CommonRedPointResp), send, "common")
} }
func PushRed(uid int) { func PushMailRed(uid int) {
redPoints := &common.PlayerRed{UID: uid} redPoints := &common.PlayerRed{UID: uid}
db.Mysql().Get(redPoints) db.Mysql().Get(redPoints)
checkMail(uid, redPoints) checkMail(uid, redPoints)
one := new(pb.RedPoint) one := new(pb.RedPoint)
one.List = append(one.List, &pb.RedInfo{ModuleName: "mail", Num: uint32(redPoints.Mail)}) one.List = append(one.List, &pb.RedInfo{ModuleName: pb.RedPointModule_RedPointMail, Num: uint32(redPoints.Mail)})
SendNR(uid, int(pb.ServerCommonResp_CommonRedPointResp), one, "common")
}
func PushRed(uid int, module pb.RedPointModule, num uint32) {
one := new(pb.RedPoint)
one.List = append(one.List, &pb.RedInfo{ModuleName: module, Num: num})
log.Debug("redpoint,uid:%v,module:%v,info:%v", uid, module, one)
SendNR(uid, int(pb.ServerCommonResp_CommonRedPointResp), one, "common") SendNR(uid, int(pb.ServerCommonResp_CommonRedPointResp), one, "common")
} }

@ -393,6 +393,7 @@ func UpdateVip(uid int, exp, bet, settle int64) {
// 通知客户端等级变动 // 通知客户端等级变动
if update["level"] != nil { if update["level"] != nil {
SendNR(uid, int(pb.ServerCommonResp_CommonVipResp), &pb.ConfigChangeResp{Type: pb.ConfigChangeType_ConfigVipLevel}, "common") SendNR(uid, int(pb.ServerCommonResp_CommonVipResp), &pb.ConfigChangeResp{Type: pb.ConfigChangeType_ConfigVipLevel}, "common")
PushRed(uid, pb.RedPointModule_RedPointVipReward, 1)
} }
break break
} }

@ -20,7 +20,7 @@ type player struct {
} }
func (p *player) PushRedPoint() { func (p *player) PushRedPoint() {
call.PushRed(p.db.Id) call.PushMailRed(p.db.Id)
} }
// func (p *player) Send(topic string, data proto.Message) { // func (p *player) Send(topic string, data proto.Message) {

@ -1,12 +1,14 @@
package handler package handler
import ( import (
"fmt"
"server/call" "server/call"
"server/common" "server/common"
"server/config" "server/config"
"server/db" "server/db"
"server/modules/web/app" "server/modules/web/app"
"server/modules/web/values" "server/modules/web/values"
"server/pb"
"server/util" "server/util"
"time" "time"
@ -101,6 +103,10 @@ func onLogin(user *common.PlayerDBInfo, a *app.Gin, isNew bool) {
} }
call.InsertLoginRecord(uid, cid, ip, birth, deviceType) call.InsertLoginRecord(uid, cid, ip, birth, deviceType)
// 第二次登录
if db.Mysql().Count(&common.LoginRecord{}, fmt.Sprintf(" uid = %d", uid)) == 1 {
call.PushRed(uid, pb.RedPointModule_RedPointLoginAgain, 1)
}
// if db.Mysql().CountTable(common.PlayerRechargeTableName, fmt.Sprintf("uid = %d", uid)) == 0 { // if db.Mysql().CountTable(common.PlayerRechargeTableName, fmt.Sprintf("uid = %d", uid)) == 0 {
// db.Mysql().C().Table(common.PlayerRechargeTableName).Create(&common.PlayerCurrency{UID: uid, ChannelID: cid}) // db.Mysql().C().Table(common.PlayerRechargeTableName).Create(&common.PlayerCurrency{UID: uid, ChannelID: cid})
// } // }

@ -9,6 +9,7 @@ import (
"server/db" "server/db"
"server/modules/web/app" "server/modules/web/app"
"server/modules/web/values" "server/modules/web/values"
"server/pb"
"server/util" "server/util"
"sort" "sort"
"time" "time"
@ -104,6 +105,15 @@ func GetPromotions(c *gin.Context) {
a.GetUID() a.GetUID()
ret.ActivityList = call.GetConfigActivityActiveAll(a.UID) ret.ActivityList = call.GetConfigActivityActiveAll(a.UID)
ret.TaskList = GetUserTaskStatus(a) ret.TaskList = GetUserTaskStatus(a)
num := 0
for _, task := range ret.TaskList {
if task.Status == 1 {
num++
}
}
if num > 0 {
call.PushRed(a.UID, pb.RedPointModule_RedPointTask, uint32(num))
}
} }
func UploadActivityData(c *gin.Context) { func UploadActivityData(c *gin.Context) {
@ -543,6 +553,9 @@ func ActivityFreeSpinInfo(c *gin.Context) {
} else { } else {
resp.Count = common.DefaultFreeSpinNum resp.Count = common.DefaultFreeSpinNum
} }
if resp.Count > 0 {
call.PushRed(a.UID, pb.RedPointModule_RedPointSign, 1)
}
} }
func ActivityFreeSpinDraw(c *gin.Context) { func ActivityFreeSpinDraw(c *gin.Context) {
@ -974,6 +987,7 @@ func ActivitySignInfo(c *gin.Context) {
return return
} }
a.Data = resp a.Data = resp
} }
func ActivitySignDraw(c *gin.Context) { func ActivitySignDraw(c *gin.Context) {
@ -1159,6 +1173,13 @@ func ActivitySignNewInfo(c *gin.Context) {
return return
} }
call.UploadActivityData(a.UID, common.ActivityIDSign, common.ActivityDataClick, 0) call.UploadActivityData(a.UID, common.ActivityIDSign, common.ActivityDataClick, 0)
num := 0
if resp.CanSign {
num = 1
}
if num > 0 {
call.PushRed(a.UID, pb.RedPointModule_RedPointSign, uint32(num))
}
a.Data = resp a.Data = resp
} }
@ -1217,9 +1238,7 @@ func ActivitySignNewDraw(c *gin.Context) {
// ok // ok
newSign := Sign(day) newSign := Sign(day)
updates := map[string]interface{}{"sign": newSign, "finish": false, "reward": gorm.Expr("reward + ?", reward)} updates := map[string]interface{}{"sign": newSign, "finish": false, "reward": gorm.Expr("reward + ?", reward)}
if config.GetBase().Release { updates["sign_time"] = now.Unix()
updates["sign_time"] = now.Unix()
}
rows, err := db.Mysql().UpdateRes(&common.ActivitySignData{UID: a.UID, Sign: data.Sign}, updates) rows, err := db.Mysql().UpdateRes(&common.ActivitySignData{UID: a.UID, Sign: data.Sign}, updates)
if rows == 0 || err != nil { if rows == 0 || err != nil {
log.Error("err:%v", err) log.Error("err:%v", err)
@ -1243,6 +1262,7 @@ func ActivitySignNewDraw(c *gin.Context) {
} }
a.Data = values.ActivitySignDrawResp{Reward: reward, Day: day, Sign: newSign} a.Data = values.ActivitySignDrawResp{Reward: reward, Day: day, Sign: newSign}
call.UploadActivityData(a.UID, common.ActivityIDSign, common.ActivityDataJoin, reward) call.UploadActivityData(a.UID, common.ActivityIDSign, common.ActivityDataJoin, reward)
call.PushRed(a.UID, pb.RedPointModule_RedPointSign, uint32(0))
} }
// 破产礼包活动 // 破产礼包活动
@ -1851,10 +1871,17 @@ func ActivityBetDrawInfo(c *gin.Context) {
db.Mysql().Create(drawInfo) db.Mysql().Create(drawInfo)
} }
} }
a.Data = &values.ActivityBetDrawInfoResp{ resp := &values.ActivityBetDrawInfoResp{
List: call.GetConfigBetDraw(), List: call.GetConfigBetDraw(),
Lucky: drawInfo.Lucky, Lucky: drawInfo.Lucky,
} }
a.Data = resp
for _, item := range resp.List {
if resp.Lucky >= item.Cost {
call.PushRed(a.UID, pb.RedPointModule_RedPointFreeSpin, uint32(1))
break
}
}
call.UploadActivityData(a.UID, common.ActivityIDBetDraw, common.ActivityDataClick, 0) call.UploadActivityData(a.UID, common.ActivityIDBetDraw, common.ActivityDataClick, 0)
} }
@ -1921,6 +1948,17 @@ func ActivityBetDrawDraw(c *gin.Context) {
a.Data = &values.ActivityBetDrawDrawResp{ a.Data = &values.ActivityBetDrawDrawResp{
Reward: reward, Reward: reward,
} }
drawInfo = common.ActivityBetDrawData{UID: a.UID}
db.Mysql().Get(&drawInfo)
list := call.GetConfigBetDraw()
num := 0
for _, item := range list {
if drawInfo.Lucky >= item.Cost {
num++
}
}
call.PushRed(a.UID, pb.RedPointModule_RedPointFreeSpin, uint32(num))
} }
func ActivityBetDrawHistory(c *gin.Context) { func ActivityBetDrawHistory(c *gin.Context) {

@ -7,6 +7,7 @@ import (
"server/db" "server/db"
"server/modules/web/app" "server/modules/web/app"
"server/modules/web/values" "server/modules/web/values"
"server/pb"
"server/util" "server/util"
"time" "time"
@ -113,6 +114,13 @@ func ShareInfo(c *gin.Context) {
} }
resp.ShareLink = "https://" + resp.ShareLink resp.ShareLink = "https://" + resp.ShareLink
} }
num := 0
if resp.AvailableReward > 0 {
num = 1
}
if num > 0 {
call.PushRed(a.UID, pb.RedPointModule_RedPointShare, uint32(num))
}
} }
func GetActivityCode(c *gin.Context) { func GetActivityCode(c *gin.Context) {
@ -308,6 +316,9 @@ func ShareWithdraw(c *gin.Context) {
db.Mysql().Update(&common.RechargeInfo{UID: a.UID}, u) db.Mysql().Update(&common.RechargeInfo{UID: a.UID}, u)
a.Data = values.ShareWithdrawResp{Available: availableReward - req.Amount} a.Data = values.ShareWithdrawResp{Available: availableReward - req.Amount}
call.PushRed(a.UID, pb.RedPointModule_RedPointShare, uint32(0))
} }
// func ShareReference(c *gin.Context) { // func ShareReference(c *gin.Context) {

@ -6,6 +6,7 @@ import (
"server/db" "server/db"
"server/modules/web/app" "server/modules/web/app"
"server/modules/web/values" "server/modules/web/values"
"server/pb"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/liangdas/mqant/log" "github.com/liangdas/mqant/log"
@ -24,6 +25,15 @@ func GetTaskInfo(c *gin.Context) {
a.GetUID() a.GetUID()
resp := &TaskInfoResp{TaskList: GetUserTaskStatus(a)} resp := &TaskInfoResp{TaskList: GetUserTaskStatus(a)}
a.Data = resp a.Data = resp
num := 0
for _, task := range resp.TaskList {
if task.Status == 1 {
num++
}
}
if num > 0 {
call.PushRed(a.UID, pb.RedPointModule_RedPointTask, uint32(num))
}
} }
type DrawTaskReq struct { type DrawTaskReq struct {
@ -88,4 +98,13 @@ func DrawTask(c *gin.Context) {
} }
TaskComplete(a, req) TaskComplete(a, req)
a.Data = req a.Data = req
num := 0
for _, task := range GetUserTaskStatus(a) {
if task.Status == 1 {
num++
}
}
call.PushRed(a.UID, pb.RedPointModule_RedPointTask, uint32(num))
} }

@ -2,12 +2,14 @@ package handler
import ( import (
"fmt" "fmt"
"net/http/httptest"
"reflect" "reflect"
"server/call" "server/call"
"server/common" "server/common"
"server/db" "server/db"
"server/modules/web/app" "server/modules/web/app"
"server/modules/web/values" "server/modules/web/values"
"server/util"
"time" "time"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
@ -96,6 +98,9 @@ func GetUserInfo(c *gin.Context) {
a.Code = values.CodeOK a.Code = values.CodeOK
// } // }
a.Data = resp a.Data = resp
util.Go(func() {
CheckRedPoint(uid, c)
})
} }
func EditUserInfo(c *gin.Context) { func EditUserInfo(c *gin.Context) {
@ -245,3 +250,44 @@ func FavoriteGame(c *gin.Context) {
} }
} }
} }
func GetRedPoint(c *gin.Context) {
a := app.NewApp(c)
defer func() {
a.Response()
}()
CheckRedPoint(a.UID, c)
}
func newContext(c *gin.Context) *gin.Context {
// 创建一个新的 HTTP 请求
req := httptest.NewRequest(c.Request.Method, c.Request.URL.String(), c.Request.Body)
// 复制头部信息
for key, values := range c.Request.Header {
for _, value := range values {
req.Header.Add(key, value)
}
}
// 创建一个新的 gin.Context
w := httptest.NewRecorder()
nContext, _ := gin.CreateTestContext(w)
nContext.Request = req
return nContext
}
func CheckRedPoint(uid int, c *gin.Context) {
// 防止玩家未连接网关,所以延迟3秒
time.AfterFunc(time.Second*3, func() {
nc := newContext(c)
// 是否可以转动转盘
ActivityBetDrawInfo(nc)
// 是否可以签到
ActivitySignNewInfo(nc)
// 判断是否有任务可以领取
GetPromotions(nc)
// 邀请奖励
ShareInfo(nc)
// vip奖励
GetVipInfo(nc)
})
}

@ -8,6 +8,7 @@ import (
"server/db" "server/db"
"server/modules/web/app" "server/modules/web/app"
"server/modules/web/values" "server/modules/web/values"
"server/pb"
"server/util" "server/util"
"time" "time"
@ -22,7 +23,8 @@ func GetVipInfo(c *gin.Context) {
a.Response() a.Response()
}() }()
req := new(values.VipInfoReq) req := new(values.VipInfoReq)
if !a.S(req) { ok, _ := util.CheckRequestBody(c)
if ok && !a.S(req) {
return return
} }
if req.Num > 100 { if req.Num > 100 {
@ -101,7 +103,14 @@ func GetVipInfo(c *gin.Context) {
q.Filter(elastic.NewTermQuery("uid", a.UID)) q.Filter(elastic.NewTermQuery("uid", a.UID))
q.Filter(elastic.NewTermQuery("event", common.CurrencyEventVIPCashback)) q.Filter(elastic.NewTermQuery("event", common.CurrencyEventVIPCashback))
resp.TotalCashback = db.ES().SumByInt64(common.ESIndexBalance, "value", q) resp.TotalCashback = db.ES().SumByInt64(common.ESIndexBalance, "value", q)
db.ES().QueryList(common.ESIndexBalance, req.Page, req.Num, q, &resp.CashbackList, "time", false) // db.ES().QueryList(common.ESIndexBalance, req.Page, req.Num, q, &resp.CashbackList, "time", false)
num := 0
if resp.Info.Cashback > 0 {
num = 1
}
if num > 0 {
call.PushRed(a.UID, pb.RedPointModule_RedPointVipCashback, uint32(num))
}
} }
func DrawVipBonus(c *gin.Context) { func DrawVipBonus(c *gin.Context) {
@ -173,6 +182,10 @@ func DrawVipBonus(c *gin.Context) {
a.Code = values.CodeRetry a.Code = values.CodeRetry
return return
} }
vip = call.GetVIP(a.UID)
if vip.Draws == 0 {
call.PushRed(a.UID, pb.RedPointModule_RedPointVipReward, uint32(0))
}
} }
func DrawVipCashback(c *gin.Context) { func DrawVipCashback(c *gin.Context) {
@ -261,4 +274,5 @@ func DrawVipCashback(c *gin.Context) {
resp.NextCashback = util.GetNext5MinUnix() - now.Unix() resp.NextCashback = util.GetNext5MinUnix() - now.Unix()
} }
a.Data = resp a.Data = resp
call.PushRed(a.UID, pb.RedPointModule_RedPointVipCashback, uint32(0))
} }

@ -11,4 +11,5 @@ func user(e *gin.RouterGroup) {
e.POST("/user/info/edit", handler.EditUserInfo) e.POST("/user/info/edit", handler.EditUserInfo)
e.POST("/user/feedback", handler.Feedback) e.POST("/user/feedback", handler.Feedback)
e.POST("/favorite/game", handler.FavoriteGame) e.POST("/favorite/game", handler.FavoriteGame)
e.POST("/redpoint/get", handler.GetRedPoint)
} }

@ -46,8 +46,20 @@ message LoginResponse{
uint32 user_id = 2; // UIDuid一致便UID返回了 uint32 user_id = 2; // UIDuid一致便UID返回了
} }
enum RedPointModule{
RedPointInvalid = 0;
RedPointTask = 1;
RedPointSign = 2;
RedPointShare = 3;
RedPointVipCashback = 4;
RedPointMail = 5;
RedPointFreeSpin = 6; //
RedPointVipReward = 7; // vip升级奖励
RedPointLoginAgain = 8; //
}
message RedInfo { message RedInfo {
string module_name = 1;// RedPointModule module_name = 1;//
uint32 num =2 ; // uint32 num =2 ; //
} }
// //

@ -17,6 +17,7 @@ import (
"strings" "strings"
"time" "time"
"github.com/gin-gonic/gin"
"github.com/liangdas/mqant/log" "github.com/liangdas/mqant/log"
) )
@ -262,3 +263,20 @@ func ReplaceHTTPWithHTTPS(text string) string {
return httpsText return httpsText
} }
func CheckRequestBody(c *gin.Context) (bool, []byte) {
// 读取请求体
bodyBytes, err := ioutil.ReadAll(c.Request.Body)
if err != nil {
return false, nil
}
// 恢复请求体的内容,以便后续处理
c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))
// 检查请求体长度
if len(bodyBytes) == 0 {
return false, nil
}
return true, bodyBytes
}

Loading…
Cancel
Save