活动开启结束通知

This commit is contained in:
meixiongfeng 2023-08-25 15:41:41 +08:00
parent 906cb85fc3
commit e561b35f8f
3 changed files with 90 additions and 6 deletions

View File

@ -440,6 +440,7 @@ const ( //Rpc
Rpc_Activity core.Rpc_Key = "Rpc_Activity"
Rpc_ActivityOver core.Rpc_Key = "Rpc_ActivityOver" //活动结束
Rpc_ActivityStar core.Rpc_Key = "Rpc_ActivityStar" //活动开启
)
// 事件类型定义处

View File

@ -14,6 +14,8 @@ import (
cfg "go_dreamfactory/sys/configure/structs"
"go_dreamfactory/sys/db"
"go_dreamfactory/utils"
"go.mongodb.org/mongo-driver/bson"
)
type Activity struct {
@ -111,6 +113,7 @@ func (this *Activity) Start() (err error) {
}
}
this.service.RegisterFunctionName(string(comm.Rpc_ActivityOver), this.Rpc_ActivityOver)
this.service.RegisterFunctionName(string(comm.Rpc_ActivityStar), this.Rpc_ActivityStar)
return
}
@ -450,6 +453,66 @@ func (this *Activity) Rpc_ActivityOver(ctx context.Context, args *pb.RPCGeneralR
)
szOverActivity = args.Param2
for _, v := range szOverActivity {
hd := &pb.DBHuodong{}
if err := this.modelhdList.DB.FindOne(core.SqlTable(this.modelhdList.TableName), bson.M{"_id": v}).Decode(hd); err != nil {
switch hd.Itype {
case pb.HdType_HdTypeWarorder, pb.HdType_SupplyWarOrder, pb.HdType_MoondreamWarOrder:
this.warorder.ActivityCloseNotice(hd)
break
case pb.HdType_HdTypePay, pb.HdType_ShopCenterPayPakcge:
this.pay.ActivityCloseNotice(hd)
break
case pb.HdType_XSFundPhysical, pb.HdType_XSFundRecruit, pb.HdType_XSFundExp:
this.shopcenter.ActivityCloseNotice(hd)
break
case pb.HdType_AddUpRecharge:
this.addrecharge.ActivityCloseNotice(hd)
break
case pb.HdType_KFSevenTask:
this.kftask.ActivityCloseNotice(hd)
break
}
}
}
this.Debug("szOverActivity", log.Field{Key: "args", Value: szOverActivity})
return
}
// 活动开启通知
func (this *Activity) Rpc_ActivityStar(ctx context.Context, args *pb.RPCGeneralReqB1, reply *pb.EmptyResp) (err error) {
this.Debug("Rpc_ActivityStar",
log.Field{Key: "args", Value: args.String()},
)
var (
szOverActivity []string
)
szOverActivity = args.Param2
for _, v := range szOverActivity {
hd := &pb.DBHuodong{}
if err := this.modelhdList.DB.FindOne(core.SqlTable(this.modelhdList.TableName), bson.M{"_id": v}).Decode(hd); err != nil {
switch hd.Itype {
case pb.HdType_HdTypeWarorder, pb.HdType_SupplyWarOrder, pb.HdType_MoondreamWarOrder:
this.warorder.ActivityOpenNotice(hd)
break
case pb.HdType_HdTypePay, pb.HdType_ShopCenterPayPakcge:
this.pay.ActivityOpenNotice(hd)
break
case pb.HdType_XSFundPhysical, pb.HdType_XSFundRecruit, pb.HdType_XSFundExp:
this.shopcenter.ActivityOpenNotice(hd)
break
case pb.HdType_AddUpRecharge:
this.addrecharge.ActivityOpenNotice(hd)
break
case pb.HdType_KFSevenTask:
this.kftask.ActivityOpenNotice(hd)
break
}
}
}
this.Debug("szOverActivity", log.Field{Key: "args", Value: szOverActivity})
return
}

View File

@ -32,7 +32,7 @@ type Activity struct {
//组件初始化接口
func (this *Activity) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.TableName = comm.TableCaravan
this.TableName = comm.TableHdInfo
this.MCompModel.Init(service, module, comp, options)
this.module = module.(*Timer)
this.service = service.(base.IRPCXService)
@ -47,9 +47,11 @@ func (this *Activity) Start() (err error) {
if db.IsCross() {
return
}
err = this.MCompModel.Start()
if err = this.MCompModel.Start(); err != nil {
return
}
timer := time.NewTicker(time.Second * 1)
this.LoadActivityData()
go func() {
locp:
for {
@ -86,13 +88,17 @@ func (this *Activity) LoadActivityData() {
func (this *Activity) CheckActivityData() {
var (
szEnd []string
szEnd []string // 活动结束
szStar []string // 有活动开启
)
this.module.Debugf("ticker:%d", configure.Now().Unix())
//this.module.Debugf("ticker:%d", configure.Now().Unix())
for _, v := range this.activity {
if v.Etime > configure.Now().Unix() { // 有活动结束
if v.Etime == configure.Now().Unix() { // 有活动结束
szEnd = append(szEnd, v.Id)
}
if v.Stime == configure.Now().Unix() { // 有活动结束
szStar = append(szStar, v.Id)
}
}
if len(szEnd) > 0 {
if err := this.service.RpcCall(
@ -108,4 +114,18 @@ func (this *Activity) CheckActivityData() {
this.module.Errorln(err)
}
}
if len(szStar) > 0 {
if err := this.service.RpcCall(
context.Background(),
comm.Service_Worker,
string(comm.Rpc_ActivityStar),
pb.RPCGeneralReqB1{
Param1: "starActivity",
Param2: szStar,
},
nil,
); err != nil {
this.module.Errorln(err)
}
}
}