This commit is contained in:
wh_zcy 2023-06-14 15:24:08 +08:00
commit c03a1c3873
26 changed files with 312 additions and 112 deletions

View File

@ -1,6 +1,7 @@
[ [
{ {
"id": "10001", "id": "10001",
"job": 1,
"race": 1, "race": 1,
"type": 1, "type": 1,
"name": { "name": {
@ -35,6 +36,7 @@
}, },
{ {
"id": "10002", "id": "10002",
"job": 2,
"race": 2, "race": 2,
"type": 1, "type": 1,
"name": { "name": {
@ -69,6 +71,7 @@
}, },
{ {
"id": "10003", "id": "10003",
"job": 3,
"race": 3, "race": 3,
"type": 1, "type": 1,
"name": { "name": {
@ -103,6 +106,7 @@
}, },
{ {
"id": "10004", "id": "10004",
"job": 4,
"race": 4, "race": 4,
"type": 1, "type": 1,
"name": { "name": {
@ -148,6 +152,7 @@
}, },
{ {
"id": "10005", "id": "10005",
"job": 1,
"race": 1, "race": 1,
"type": 1, "type": 1,
"name": { "name": {
@ -182,6 +187,7 @@
}, },
{ {
"id": "10006", "id": "10006",
"job": 2,
"race": 2, "race": 2,
"type": 1, "type": 1,
"name": { "name": {
@ -216,6 +222,7 @@
}, },
{ {
"id": "10007", "id": "10007",
"job": 3,
"race": 3, "race": 3,
"type": 1, "type": 1,
"name": { "name": {
@ -250,6 +257,7 @@
}, },
{ {
"id": "10008", "id": "10008",
"job": 4,
"race": 4, "race": 4,
"type": 1, "type": 1,
"name": { "name": {
@ -284,6 +292,7 @@
}, },
{ {
"id": "10009", "id": "10009",
"job": 1,
"race": 1, "race": 1,
"type": 1, "type": 1,
"name": { "name": {
@ -329,6 +338,7 @@
}, },
{ {
"id": "10010", "id": "10010",
"job": 2,
"race": 2, "race": 2,
"type": 1, "type": 1,
"name": { "name": {
@ -374,6 +384,7 @@
}, },
{ {
"id": "10011", "id": "10011",
"job": 3,
"race": 1, "race": 1,
"type": 1, "type": 1,
"name": { "name": {
@ -419,6 +430,7 @@
}, },
{ {
"id": "10012", "id": "10012",
"job": 4,
"race": 2, "race": 2,
"type": 1, "type": 1,
"name": { "name": {
@ -464,6 +476,7 @@
}, },
{ {
"id": "20001", "id": "20001",
"job": 1,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -509,6 +522,7 @@
}, },
{ {
"id": "20002", "id": "20002",
"job": 2,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -543,6 +557,7 @@
}, },
{ {
"id": "20003", "id": "20003",
"job": 3,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -577,6 +592,7 @@
}, },
{ {
"id": "20004", "id": "20004",
"job": 4,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -611,6 +627,7 @@
}, },
{ {
"id": "20005", "id": "20005",
"job": 1,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -645,6 +662,7 @@
}, },
{ {
"id": "20006", "id": "20006",
"job": 2,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -679,6 +697,7 @@
}, },
{ {
"id": "20007", "id": "20007",
"job": 3,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -713,6 +732,7 @@
}, },
{ {
"id": "20008", "id": "20008",
"job": 4,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -747,6 +767,7 @@
}, },
{ {
"id": "20009", "id": "20009",
"job": 1,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -792,6 +813,7 @@
}, },
{ {
"id": "20010", "id": "20010",
"job": 2,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -837,6 +859,7 @@
}, },
{ {
"id": "20011", "id": "20011",
"job": 3,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -882,6 +905,7 @@
}, },
{ {
"id": "20012", "id": "20012",
"job": 4,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -927,6 +951,7 @@
}, },
{ {
"id": "20013", "id": "20013",
"job": 1,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -972,6 +997,7 @@
}, },
{ {
"id": "20014", "id": "20014",
"job": 2,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -1006,6 +1032,7 @@
}, },
{ {
"id": "20015", "id": "20015",
"job": 3,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -1040,6 +1067,7 @@
}, },
{ {
"id": "20016", "id": "20016",
"job": 4,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -1074,6 +1102,7 @@
}, },
{ {
"id": "20017", "id": "20017",
"job": 1,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -1117,6 +1146,7 @@
}, },
{ {
"id": "20018", "id": "20018",
"job": 2,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -1160,6 +1190,7 @@
}, },
{ {
"id": "20019", "id": "20019",
"job": 3,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {
@ -1203,6 +1234,7 @@
}, },
{ {
"id": "20020", "id": "20020",
"job": 4,
"race": 0, "race": 0,
"type": 2, "type": 2,
"name": { "name": {

View File

@ -322,7 +322,7 @@
"goto": 0 "goto": 0
}, },
{ {
"id": 10020, "id": 100101,
"heroid": 25001, "heroid": 25001,
"datas": [ "datas": [
"GameMain", "GameMain",
@ -335,6 +335,44 @@
], ],
"goto": 0 "goto": 0
}, },
{
"id": 100104,
"heroid": 25001,
"datas": [
"GameMain",
"901"
],
"event": [
0
],
"goto": 0
},
{
"id": 100108,
"heroid": 25001,
"datas": [
"GameMain",
"901"
],
"event": [
0
],
"goto": 0
},
{
"id": 10020,
"heroid": 25001,
"datas": [
"GameMain",
"20020_小怪_船甲板",
"901"
],
"event": [
2,
10042
],
"goto": 0
},
{ {
"id": 10024, "id": 10024,
"heroid": 51004, "heroid": 51004,

View File

@ -20436,7 +20436,7 @@
"From": 2, "From": 2,
"Where": [], "Where": [],
"Order": "", "Order": "",
"Limit": 1, "Limit": 10,
"ExecuteCnt": 1, "ExecuteCnt": 1,
"Type": 1, "Type": 1,
"Argu": [ "Argu": [

View File

@ -98,7 +98,7 @@
### 支付发货API ### 支付发货API
- 接口名:paydelivery - 接口名:paydelivery
- 接口说明:web 服务器给玩家发送邮件 - 接口说明:web 服务器给玩家发送支付获得商品
- 请求地址:{IP}:{port}/paydelivery - 请求地址:{IP}:{port}/paydelivery
- 请求参数:uid(用户id|签名),productid(商品id|签名),orderid(订单号|签名),price(总金额|签名),sign(签名) - 请求参数:uid(用户id|签名),productid(商品id|签名),orderid(订单号|签名),price(总金额|签名),sign(签名)
- 请求样例 - 请求样例

View File

@ -402,34 +402,49 @@ const (
Diamond int32 = 2 //钻石 Diamond int32 = 2 //钻石
) )
// 门票 //定时通知类型
type NotifyType int32
const ( const (
// ArenaTicket string = "100004" //竞技场入场券 Notify1001 NotifyType = 1001 //铁匠铺炉温达到满值
// MoonFantasyTicket string = "100003" //梦境场入场券
// PhysicalMedicament string = "10017" //体力药剂
// UnifiedTicket string = "100100" //统一门票
) )
// 红点枚举 // 红点枚举
type ReddotType int32 type ReddotType int32
const ( const (
Reddot1 ReddotType = 10001 //任务----日常任务奖励红点 //任务
Reddot2 ReddotType = 10002 //任务----周常任务奖励红点 Reddot10101 ReddotType = 10101 //任务----日常活跃宝箱红点
Reddot3 ReddotType = 10003 //公会----签到红点 Reddot10102 ReddotType = 10102 //任务----周活跃宝箱红点
Reddot4 ReddotType = 10004 //任务----成就任务奖励红点 Reddot10103 ReddotType = 10103 //任务----成就任务奖励红点
Reddot5 ReddotType = 10005 //主线关卡----可挑战红点 Reddot10201 ReddotType = 10201 //任务----日常活跃奖励红点
Reddot10301 ReddotType = 10301 //任务----周常活跃奖励红点
//邮件
Reddot12101 ReddotType = 12101 //邮件-----附件红点
Reddot12102 ReddotType = 12102 //邮件-----未读邮件红点
//维京
Reddot13102 ReddotType = 13102 //维京远征 有挑战次数
//狩猎
Reddot14102 ReddotType = 14102 //狩猎 有挑战次数
//英雄
Reddot20102 ReddotType = 20102 //英雄----升级红点 前端处理
Reddot20201 ReddotType = 20201 //英雄----觉醒红点 前端处理
Reddot10 ReddotType = 10010 //英雄----共鸣红点 前端处理
Reddot20301 ReddotType = 20301 //英雄----升星红点 前端处理
//公会
Reddot15102 ReddotType = 15102 //公会----签到红点
Reddot15201 ReddotType = 15201 //公会----申请红点
//主线关卡
Reddot11100 ReddotType = 11100 //主线关卡----可挑战红点
// 铁匠铺
Reddot17102 ReddotType = 17102 // 铁匠铺手册台
Reddot17106 ReddotType = 17106 // 铁匠铺手册台收藏家奖励上
Reddot17107 ReddotType = 17107 // 铁匠铺手册台收藏家奖励按钮上
Reddot6 ReddotType = 10006 //爬塔----可挑战红点 Reddot6 ReddotType = 10006 //爬塔----可挑战红点
Reddot7 ReddotType = 10007 //爬塔----奖励红点 Reddot7 ReddotType = 10007 //爬塔----奖励红点
Reddot8 ReddotType = 10008 //英雄----升级红点 前端处理
Reddot9 ReddotType = 10009 //英雄----觉醒红点 前端处理
Reddot10 ReddotType = 10010 //英雄----共鸣红点 前端处理
Reddot11 ReddotType = 10011 //英雄----升星红点 前端处理
Reddot12 ReddotType = 10012 //装备----可穿戴红点 前端处理
Reddot13 ReddotType = 10013 //装备----可替换红点 前端处理
Reddot14 ReddotType = 10014 //装备----可强化红点 前端处理
Reddot15 ReddotType = 10015 //装备----可附魔红点 前端处理
Reddot16 ReddotType = 10016 //装备----可洗炼红点 前端处理
Reddot17 ReddotType = 10017 //星座图----红点 Reddot17 ReddotType = 10017 //星座图----红点
Reddot18 ReddotType = 10018 //英雄招募----红点 // 前端处理 Reddot18 ReddotType = 10018 //英雄招募----红点 // 前端处理
Reddot19 ReddotType = 10019 //竞技场----挑战红点 Reddot19 ReddotType = 10019 //竞技场----挑战红点
@ -439,14 +454,8 @@ const (
Reddot23 ReddotType = 10023 //熊猫武馆----可挂机红点 Reddot23 ReddotType = 10023 //熊猫武馆----可挂机红点
Reddot24 ReddotType = 10024 //熊猫武馆----可升级红点 Reddot24 ReddotType = 10024 //熊猫武馆----可升级红点
Reddot25 ReddotType = 10025 //熊猫武馆----可领取奖励红点 Reddot25 ReddotType = 10025 //熊猫武馆----可领取奖励红点
Reddot26 ReddotType = 10026 //邮件-----附件红点
Reddot27 ReddotType = 10027 //任务----日常活跃奖励红点
Reddot28 ReddotType = 10028 //任务----周常活跃奖励红点
Reddot29 ReddotType = 10029 //公会----申请红点
Reddot30 ReddotType = 10030 //邮件-----未读邮件红点
Reddot31 ReddotType = 10031 //维京远征 有挑战次数
Reddot32 ReddotType = 10032 //狩猎 有挑战次数
Reddot33 ReddotType = 10033 //附魔副本 有挑战次数 Reddot33 ReddotType = 10033 //附魔副本 有挑战次数
) )
type TaskType int32 type TaskType int32

View File

@ -234,23 +234,7 @@ type (
IReddot IReddot
} }
// 随机任务
IRtask interface {
// 条件校验
CheckCondi(uid string, condiId int32, p ...int32) (errdata *pb.ErrorData)
// 多条件校验
CheckCondis(uid string, condiIds ...int32) (condIds []int32)
// 远程任务条件校验
RemoteCheckCondi(uid string, condiId int32, rsp *pb.DBRtaskRecord) error
// 删除任务条件数据
RemoveCondi(uid string, condiId int32) error
// 更新任务条件数据
ChangeCondi(uid string, data map[int32]*pb.RtaskData) error
//任务批量触发
TriggerTask(uid string, taskParams ...*TaskParam)
// 获取任务条件记录
GetCondiData(uid string) *pb.DBRtaskRecord
}
//好友 //好友
IFriend interface { IFriend interface {
@ -467,6 +451,7 @@ type (
ISmithy interface { ISmithy interface {
CheckActivateAtlasCollect(uid string, id string) CheckActivateAtlasCollect(uid string, id string)
IReddot // 铁匠铺红点
} }
IPandaAtlas interface { IPandaAtlas interface {

View File

@ -5,25 +5,6 @@ import (
"sync" "sync"
) )
var taskParamPool = &sync.Pool{
New: func() interface{} {
return &TaskParam{}
},
}
//GetBuriedParam
func GetTaskParam(t TaskType, p ...int32) *TaskParam {
task := taskParamPool.Get().(*TaskParam)
task.TT = t
task.Params = append(task.Params, p...)
return task
}
func PuttaskParam(r *TaskParam) {
r.Params = r.Params[:0]
taskParamPool.Put(r)
}
var buriedParamPool = &sync.Pool{ var buriedParamPool = &sync.Pool{
New: func() interface{} { New: func() interface{} {
return &pb.BuriedParam{ return &pb.BuriedParam{

View File

@ -2,6 +2,8 @@ package timewheel
import ( import (
"context" "context"
"go_dreamfactory/lego/sys/log"
"runtime"
"sync" "sync"
"sync/atomic" "sync/atomic"
"time" "time"
@ -117,7 +119,6 @@ func (this *TimeWheel) Stop() {
this.stopC <- struct{}{} this.stopC <- struct{}{}
} }
//此处写法 为监控时间轮是否正常执行 //此处写法 为监控时间轮是否正常执行
func (this *TimeWheel) tickGenerator() { func (this *TimeWheel) tickGenerator() {
if this.tickQueue == nil { if this.tickQueue == nil {
@ -184,10 +185,10 @@ func (this *TimeWheel) handleTick() {
} }
if task.async { if task.async {
go task.callback(task, task.args...) go this.calltask(task, task.args...)
} else { } else {
// optimize gopool // optimize gopool
task.callback(task, task.args...) this.calltask(task, task.args...)
} }
// circle // circle
@ -209,6 +210,18 @@ func (this *TimeWheel) handleTick() {
this.currentIndex++ this.currentIndex++
} }
//执行时间轮事件 捕捉异常错误 防止程序崩溃
func (this *TimeWheel) calltask(task *Task, args ...interface{}) {
defer func() { //程序异常 收集异常信息传递给前端显示
if r := recover(); r != nil {
buf := make([]byte, 4096)
l := runtime.Stack(buf, false)
log.Errorf("timewheel err:%s", string(buf[0:l]))
}
}()
task.callback(task, task.args...)
}
func (this *TimeWheel) addAny(delay time.Duration, circle, async bool, callback func(*Task, ...interface{}), agr ...interface{}) *Task { func (this *TimeWheel) addAny(delay time.Duration, circle, async bool, callback func(*Task, ...interface{}), agr ...interface{}) *Task {
if delay <= 0 { if delay <= 0 {
delay = this.tick delay = this.tick

View File

@ -172,8 +172,8 @@ func (this *Hunting) Reddot(session comm.IUserSession, rid ...comm.ReddotType) (
reddot = make(map[comm.ReddotType]bool) reddot = make(map[comm.ReddotType]bool)
for _, v := range rid { for _, v := range rid {
switch v { switch v {
case comm.Reddot32: case comm.Reddot14102:
reddot[comm.Reddot32] = this.modelHunting.checkReddot32(session) reddot[comm.Reddot14102] = this.modelHunting.checkReddot32(session)
break break
} }
} }

View File

@ -106,18 +106,18 @@ func (this *Mail) Reddot(session comm.IUserSession, rid ...comm.ReddotType) (red
reddot = make(map[comm.ReddotType]bool) reddot = make(map[comm.ReddotType]bool)
for _, v := range rid { for _, v := range rid {
switch v { switch v {
case comm.Reddot26: case comm.Reddot12101:
if isredot := this.modelMail.checkReddot26(session.GetUserId()); isredot { if isredot := this.modelMail.checkReddot26(session.GetUserId()); isredot {
reddot[comm.Reddot26] = true reddot[comm.Reddot12101] = true
} else { } else {
reddot[comm.Reddot26] = false reddot[comm.Reddot12101] = false
} }
break break
case comm.Reddot30: case comm.Reddot12102:
if isredot := this.modelMail.checkReddot30(session.GetUserId()); isredot { if isredot := this.modelMail.checkReddot30(session.GetUserId()); isredot {
reddot[comm.Reddot30] = true reddot[comm.Reddot12102] = true
} else { } else {
reddot[comm.Reddot30] = false reddot[comm.Reddot12102] = false
} }
break break
} }

View File

@ -53,8 +53,8 @@ func (this *Mline) Start() (err error) {
func (this *Mline) Reddot(session comm.IUserSession, rid ...comm.ReddotType) (reddot map[comm.ReddotType]bool) { func (this *Mline) Reddot(session comm.IUserSession, rid ...comm.ReddotType) (reddot map[comm.ReddotType]bool) {
reddot = make(map[comm.ReddotType]bool) reddot = make(map[comm.ReddotType]bool)
for _, v := range rid { for _, v := range rid {
if v == comm.Reddot5 { if v == comm.Reddot11100 {
reddot[comm.Reddot5] = this.CheckPoint(session.GetUserId()) reddot[comm.Reddot11100] = this.CheckPoint(session.GetUserId())
break break
} }
} }

View File

@ -1 +1,8 @@
package notify package notify
import "go_dreamfactory/lego/sys/timewheel"
//定时通知
type timernotify struct {
rtask *timewheel.Task
}

View File

@ -4,6 +4,8 @@ import (
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/pb"
"time"
) )
/* /*
@ -40,3 +42,9 @@ func (this *Notify) OnInstallComp() {
this.api_comp = this.RegisterComp(new(apiComp)).(*apiComp) this.api_comp = this.RegisterComp(new(apiComp)).(*apiComp)
this.modelNotify = this.RegisterComp(new(modelNotifyComp)).(*modelNotifyComp) this.modelNotify = this.RegisterComp(new(modelNotifyComp)).(*modelNotifyComp)
} }
//添加定时通知消息
func (this *Notify) AddTimerNotify(uid string, ntype comm.NotifyType, delay time.Duration) (errdata *pb.ErrorData) {
return
}

View File

@ -0,0 +1,73 @@
package notify
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/core/cbase"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/lego/sys/timewheel"
"go_dreamfactory/pb"
"time"
)
///定时通知组件
type notifyTimer struct {
cbase.ModuleCompBase
module *Notify
timers map[string]map[comm.NotifyType]*timernotify
}
//组件初始化接口
func (this *notifyTimer) Init(service core.IService, module core.IModule, comp core.IModuleComp, opt core.IModuleOptions) (err error) {
this.ModuleCompBase.Init(service, module, comp, opt)
this.timers = make(map[string]map[comm.NotifyType]*timernotify)
return
}
func (this *notifyTimer) addTimerNotify(uid string, ntype comm.NotifyType, delay time.Duration) (errdata *pb.ErrorData) {
var (
utimers map[comm.NotifyType]*timernotify
timer *timernotify
ok bool
)
if utimers, ok = this.timers[uid]; !ok {
this.timers[uid] = make(map[comm.NotifyType]*timernotify)
utimers = this.timers[uid]
}
if timer, ok = utimers[ntype]; !ok { //还没有定时任务
utimers[ntype] = &timernotify{}
utimers[ntype].rtask = timewheel.Add(delay, this.timerNotify, uid, ntype)
} else {
timewheel.Remove(utimers[ntype].rtask)
timer.rtask = timewheel.Add(delay, this.timerNotify, uid, ntype)
}
return
}
func (this *notifyTimer) timerNotify(task *timewheel.Task, args ...interface{}) {
if len(args) != 2 {
this.module.Error("异常定时通知消息", log.Field{Key: "args", Value: args})
return
}
var (
uid string
ntype comm.NotifyType
utimers map[comm.NotifyType]*timernotify
ok bool
)
uid = args[0].(string)
ntype = args[1].(comm.NotifyType)
if utimers, ok = this.timers[uid]; !ok {
return
}
if _, ok = utimers[ntype]; !ok { //还没有定时任务
return
}
delete(utimers, ntype)
switch ntype {
case comm.Notify1001:
break
}
}

View File

@ -23,19 +23,19 @@ func (this *apiComp) Get(session comm.IUserSession, req *pb.ReddotGetReq) (errda
// reddot[v] = false // reddot[v] = false
_rid := comm.ReddotType(rid) _rid := comm.ReddotType(rid)
switch _rid { switch _rid {
case comm.Reddot1: case comm.Reddot10101:
for k, v := range this.module.ModuleTask.Reddot(session, _rid) { for k, v := range this.module.ModuleTask.Reddot(session, _rid) {
reddot[int32(k)] = v reddot[int32(k)] = v
} }
case comm.Reddot2: case comm.Reddot10102:
for k, v := range this.module.ModuleTask.Reddot(session, _rid) { for k, v := range this.module.ModuleTask.Reddot(session, _rid) {
reddot[int32(k)] = v reddot[int32(k)] = v
} }
case comm.Reddot3: case comm.Reddot15102:
for k, v := range this.module.ModuleSociaty.Reddot(session, _rid) { for k, v := range this.module.ModuleSociaty.Reddot(session, _rid) {
reddot[int32(k)] = v reddot[int32(k)] = v
} }
case comm.Reddot4: case comm.Reddot10103:
for k, v := range this.module.ModuleTask.Reddot(session, _rid) { for k, v := range this.module.ModuleTask.Reddot(session, _rid) {
reddot[int32(k)] = v reddot[int32(k)] = v
} }
@ -55,16 +55,16 @@ func (this *apiComp) Get(session comm.IUserSession, req *pb.ReddotGetReq) (errda
for k, v := range this.module.gourmet.Reddot(session, _rid) { for k, v := range this.module.gourmet.Reddot(session, _rid) {
reddot[int32(k)] = v reddot[int32(k)] = v
} }
case comm.Reddot26, comm.Reddot30: case comm.Reddot12101, comm.Reddot12102:
for k, v := range this.module.mail.Reddot(session, _rid) { for k, v := range this.module.mail.Reddot(session, _rid) {
reddot[int32(k)] = v reddot[int32(k)] = v
} }
case comm.Reddot31: case comm.Reddot13102:
for k, v := range this.module.viking.Reddot(session, _rid) { for k, v := range this.module.viking.Reddot(session, _rid) {
reddot[int32(k)] = v reddot[int32(k)] = v
} }
case comm.Reddot32: case comm.Reddot14102:
for k, v := range this.module.hunting.Reddot(session, _rid) { for k, v := range this.module.hunting.Reddot(session, _rid) {
reddot[int32(k)] = v reddot[int32(k)] = v
} }

View File

@ -19,11 +19,11 @@ func (this *apiComp) GetAll(session comm.IUserSession, req *pb.ReddotGetAllReq)
if errdata = this.GetAllCheck(session, req); errdata != nil { if errdata = this.GetAllCheck(session, req); errdata != nil {
return return
} }
for k, v := range this.module.ModuleTask.Reddot(session, comm.Reddot1, comm.Reddot2, comm.Reddot4, comm.Reddot27, for k, v := range this.module.ModuleTask.Reddot(session, comm.Reddot10101, comm.Reddot10102, comm.Reddot10103, comm.Reddot10201,
comm.Reddot28) { comm.Reddot10301) {
reddot[int32(k)] = v reddot[int32(k)] = v
} }
for k, v := range this.module.mline.Reddot(session, comm.Reddot5) { for k, v := range this.module.mline.Reddot(session, comm.Reddot11100) {
reddot[int32(k)] = v reddot[int32(k)] = v
} }
for k, v := range this.module.pagoda.Reddot(session, comm.Reddot6) { for k, v := range this.module.pagoda.Reddot(session, comm.Reddot6) {
@ -42,17 +42,17 @@ func (this *apiComp) GetAll(session comm.IUserSession, req *pb.ReddotGetAllReq)
reddot[int32(k)] = v reddot[int32(k)] = v
} }
for k, v := range this.module.sociaty.Reddot(session, comm.Reddot3, comm.Reddot29) { for k, v := range this.module.sociaty.Reddot(session, comm.Reddot15102, comm.Reddot15201) {
reddot[int32(k)] = v reddot[int32(k)] = v
} }
for k, v := range this.module.mail.Reddot(session, comm.Reddot26, comm.Reddot30) { for k, v := range this.module.mail.Reddot(session, comm.Reddot12101, comm.Reddot12102) {
reddot[int32(k)] = v reddot[int32(k)] = v
} }
for k, v := range this.module.viking.Reddot(session, comm.Reddot31) { for k, v := range this.module.viking.Reddot(session, comm.Reddot13102) {
reddot[int32(k)] = v reddot[int32(k)] = v
} }
for k, v := range this.module.hunting.Reddot(session, comm.Reddot32) { for k, v := range this.module.hunting.Reddot(session, comm.Reddot14102) {
reddot[int32(k)] = v reddot[int32(k)] = v
} }

View File

@ -143,3 +143,19 @@ func (this *modelAtlas) CheckActivateEquipAtlas(uid string, Equip []*pb.DB_Equip
} }
return true return true
} }
// 红点检测
func (this *modelAtlas) checkReddot17102(uid string) bool {
list, _ := this.module.modelAtlas.getSmithyAtlasList(uid)
for _, v := range list.Atlas {
if v.Activate == false {
return true
} else {
if v.Data2 != nil {
return true
}
}
}
return false
}

View File

@ -170,6 +170,20 @@ func (this *modelTask) updateTaskRecord(uid string, taskId int32) error {
return nil return nil
} }
// 红点检测
func (this *modelTask) checkReddot17107(uid string) bool {
dt, err := this.getTaskRecord(uid)
if err != nil {
return false
}
for _, v := range dt.Tasks {
if v.Received == 1 {
return true
}
}
return false
}
// 检查任务状态 // 检查任务状态
// func (this *modelTask) checkTaskStatus(uid string, taskId int32) bool { // func (this *modelTask) checkTaskStatus(uid string, taskId int32) bool {
// conf, _ := this.module.configure.GetSmithyTask(taskId) // conf, _ := this.module.configure.GetSmithyTask(taskId)

View File

@ -119,3 +119,19 @@ func (this *Smithy) CheckActivateAtlasCollect(uid string, id string) {
} }
return return
} }
func (this *Smithy) Reddot(session comm.IUserSession, rid ...comm.ReddotType) (reddot map[comm.ReddotType]bool) {
reddot = make(map[comm.ReddotType]bool)
for _, v := range rid {
switch v {
case comm.Reddot17102: // 铁匠铺手册台
reddot[comm.Reddot17102] = this.modelAtlas.checkReddot17102(session.GetUserId())
break
case comm.Reddot17107: // 铁匠铺手册台收藏家奖励按钮上
reddot[comm.Reddot17107] = this.modelTask.checkReddot17107(session.GetUserId())
break
}
}
return
}

View File

@ -154,11 +154,11 @@ func (this *Sociaty) Reddot(session comm.IUserSession, rid ...comm.ReddotType) (
} }
for _, v := range rid { for _, v := range rid {
switch v { switch v {
case comm.Reddot3: case comm.Reddot15102:
tf := this.modelSociaty.IsSign(session.GetUserId(), sociaty) tf := this.modelSociaty.IsSign(session.GetUserId(), sociaty)
reddot[comm.Reddot3] = !tf reddot[comm.Reddot15102] = !tf
case comm.Reddot29: case comm.Reddot15201:
reddot[comm.Reddot29] = applyReddot reddot[comm.Reddot15201] = applyReddot
} }
} }
} }

View File

@ -143,22 +143,22 @@ func (this *ModuleTask) Reddot(session comm.IUserSession, rid ...comm.ReddotType
for _, v := range rid { for _, v := range rid {
switch v { switch v {
case comm.Reddot1: case comm.Reddot10101:
tf, _ := this.modelTask.noReceiveTask(session.GetUserId(), comm.TASK_DAILY) tf, _ := this.modelTask.noReceiveTask(session.GetUserId(), comm.TASK_DAILY)
reddot[comm.Reddot1] = tf reddot[comm.Reddot10101] = tf
case comm.Reddot2: case comm.Reddot10102:
tf, _ := this.modelTask.noReceiveTask(session.GetUserId(), comm.TASK_WEEKLY) tf, _ := this.modelTask.noReceiveTask(session.GetUserId(), comm.TASK_WEEKLY)
reddot[comm.Reddot2] = tf reddot[comm.Reddot10102] = tf
case comm.Reddot4: case comm.Reddot10103:
tf, _ := this.modelTask.noReceiveTask(session.GetUserId(), comm.TASK_ACHIEVE) tf, _ := this.modelTask.noReceiveTask(session.GetUserId(), comm.TASK_ACHIEVE)
reddot[comm.Reddot4] = tf reddot[comm.Reddot10103] = tf
case comm.Reddot27: case comm.Reddot10201:
tf, _ := this.modelTaskActive.noReceiveTaskActive(session.GetUserId(), comm.TASK_DAILY) tf, _ := this.modelTaskActive.noReceiveTaskActive(session.GetUserId(), comm.TASK_DAILY)
reddot[comm.Reddot27] = tf reddot[comm.Reddot10201] = tf
case comm.Reddot28: case comm.Reddot10301:
tf, _ := this.modelTaskActive.noReceiveTaskActive(session.GetUserId(), comm.TASK_WEEKLY) tf, _ := this.modelTaskActive.noReceiveTaskActive(session.GetUserId(), comm.TASK_WEEKLY)
reddot[comm.Reddot28] = tf reddot[comm.Reddot10301] = tf
} }
} }
return return

View File

@ -180,8 +180,8 @@ func (this *Viking) Reddot(session comm.IUserSession, rid ...comm.ReddotType) (r
reddot = make(map[comm.ReddotType]bool) reddot = make(map[comm.ReddotType]bool)
for _, v := range rid { for _, v := range rid {
switch v { switch v {
case comm.Reddot31: case comm.Reddot13102:
reddot[comm.Reddot31] = this.modelViking.checkReddot31(session) reddot[comm.Reddot13102] = this.modelViking.checkReddot31(session)
break break
} }

View File

@ -8,6 +8,7 @@ import (
"go_dreamfactory/lego/utils/crypto/md5" "go_dreamfactory/lego/utils/crypto/md5"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"net/http" "net/http"
"time"
) )
type PayDeliveryResults struct { type PayDeliveryResults struct {
@ -53,8 +54,9 @@ func (this *Api_Comp) PayDelivery(c *engine.Context) {
payresp.Code = pb.ErrorCode_SignError payresp.Code = pb.ErrorCode_SignError
payresp.Msg = pb.GetErrorCodeMsg(pb.ErrorCode_SignError) payresp.Msg = pb.GetErrorCodeMsg(pb.ErrorCode_SignError)
} }
ctx, _ := context.WithTimeout(context.TODO(), time.Second*5)
if err = this.module.service.RpcCall( if err = this.module.service.RpcCall(
context.Background(), ctx,
comm.Service_Worker, comm.Service_Worker,
string(comm.Rpc_ModulePayDelivery), string(comm.Rpc_ModulePayDelivery),
payreq, payreq,

View File

@ -8,6 +8,7 @@ import (
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/sys/db" "go_dreamfactory/sys/db"
"net/http" "net/http"
"time"
) )
type SyncCrossReq struct { type SyncCrossReq struct {
@ -51,8 +52,9 @@ func (this *Api_Comp) SyncCross(c *engine.Context) {
resp.Message = err.Error() resp.Message = err.Error()
return return
} }
ctx, _ := context.WithTimeout(context.TODO(), time.Second*5)
if err = this.module.service.RpcBroadcast( if err = this.module.service.RpcBroadcast(
context.Background(), ctx,
comm.Service_Worker, comm.Service_Worker,
string(comm.Rpc_DBSyncCross), string(comm.Rpc_DBSyncCross),
pb.EmptyReq{}, pb.EmptyReq{},

View File

@ -9,6 +9,7 @@ import (
"go_dreamfactory/sys/configure" "go_dreamfactory/sys/configure"
"net/http" "net/http"
"strconv" "strconv"
"time"
) )
//上传配置文件 //上传配置文件
@ -52,8 +53,9 @@ func (this *Api_Comp) Upload(c *engine.Context) {
} }
} }
} }
ctx, _ := context.WithTimeout(context.TODO(), time.Second*5)
if err := this.module.service.RpcBroadcast( if err := this.module.service.RpcBroadcast(
context.Background(), ctx,
comm.Service_Worker, comm.Service_Worker,
string(comm.Rpc_ConfigureUpDate), string(comm.Rpc_ConfigureUpDate),
&pb.EmptyReq{}, &pb.EmptyReq{},

View File

@ -12,6 +12,7 @@ import "errors"
type GamePandamasJxData struct { type GamePandamasJxData struct {
Id string Id string
Job int32
Race int32 Race int32
Type int32 Type int32
Name string Name string
@ -41,6 +42,7 @@ func (*GamePandamasJxData) GetTypeId() int32 {
func (_v *GamePandamasJxData)Deserialize(_buf map[string]interface{}) (err error) { func (_v *GamePandamasJxData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; if _v.Id, _ok_ = _buf["id"].(string); !_ok_ { err = errors.New("id error"); return } } { var _ok_ bool; if _v.Id, _ok_ = _buf["id"].(string); !_ok_ { err = errors.New("id error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["job"].(float64); !_ok_ { err = errors.New("job error"); return }; _v.Job = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["race"].(float64); !_ok_ { err = errors.New("race error"); return }; _v.Race = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["race"].(float64); !_ok_ { err = errors.New("race error"); return }; _v.Race = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = int32(_tempNum_) }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["name"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Name error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Name, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } } {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["name"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Name error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Name, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }