go_dreamfactory/modules/warorder/module.go
2024-03-07 11:46:18 +08:00

237 lines
5.5 KiB
Go

package warorder
import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
)
const modulename = "战令"
type Warorder struct {
modules.ModuleBase
service core.IService
api *apiComp
configure *configureComp
model *modelWarorder
}
func NewModule() core.IModule {
return &Warorder{}
}
func (this *Warorder) GetType() core.M_Modules {
return comm.ModuleWarorder
}
func (this *Warorder) Init(service core.IService, module core.IModule, options core.IModuleOptions) (err error) {
if err = this.ModuleBase.Init(service, module, options); err != nil {
return
}
this.service = service
return
}
func (this *Warorder) Start() (err error) {
if err = this.ModuleBase.Start(); err != nil {
return
}
return
}
func (this *Warorder) OnInstallComp() {
this.ModuleBase.OnInstallComp()
this.api = this.RegisterComp(new(apiComp)).(*apiComp)
this.model = this.RegisterComp(new(modelWarorder)).(*modelWarorder)
this.configure = this.RegisterComp(new(configureComp)).(*configureComp)
}
// 发货
func (this *Warorder) Delivery(session comm.IUserSession, pId int32) (errdata *pb.ErrorData, items []*pb.UserAtno) {
var (
confs []*cfg.GamePassCheckPriceData
conf *cfg.GamePassCheckPriceData
expconf *cfg.GamePassCheckExpData
info *pb.DBWarorders
warorder *pb.Warorder
dwarorder *pb.DreamWarorder
err error
ok bool
)
if confs, err = this.configure.getGamePassCheckPrice(); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ConfigNoFound,
Title: pb.ErrorCode_ConfigNoFound.String(),
Message: err.Error(),
}
return
}
for _, v := range confs {
if v.PasscheckType == pId {
conf = v
break
}
}
if conf == nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ConfigNoFound,
Title: pb.ErrorCode_ConfigNoFound.String(),
Message: fmt.Sprintf("no found pid:%d", pId),
}
return
}
if info, err = this.model.getUserWarorders(session.GetUserId()); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
switch conf.PasscheckType {
case 1, 2, 3:
if warorder, ok = info.Warorder[conf.PasscheckType]; !ok {
warorder = &pb.Warorder{
Vip: true,
}
info.Warorder[conf.PasscheckType] = warorder
}
warorder.Vip = true
case 4:
if dwarorder, ok = info.Dreamwarorder[conf.PasscheckType]; !ok {
dwarorder = &pb.DreamWarorder{}
info.Warorder[conf.PasscheckType] = warorder
}
if conf.PasscheckType == pId {
dwarorder.Vip = 1
} else {
dwarorder.Vip = 2
}
if conf.PasscheckType == pId {
if expconf, err = this.configure.getWarorderLvpMax(conf.PasscheckType); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ConfigNoFound,
Title: pb.ErrorCode_ConfigNoFound.ToString(),
Message: err.Error(),
}
return
}
dwarorder.Lv += this.ModuleTools.GetGlobalConf().PasscheckPro4UpLv
if dwarorder.Lv > expconf.Id {
dwarorder.Lv = expconf.Id
dwarorder.Exp = expconf.Parameter
} else {
if expconf, err = this.configure.getWarorderLvp(dwarorder.Lv, conf.PasscheckType); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ConfigNoFound,
Title: pb.ErrorCode_ConfigNoFound.ToString(),
Message: err.Error(),
}
return
}
dwarorder.Exp = expconf.Parameter
}
}
}
this.model.updateUserWarorders(session.GetUserId(), info)
return
}
// 活动开启
func (this *Warorder) ActivityOpenNotice(hdlist *pb.DBHuodong) {
switch hdlist.Itype {
case pb.HdType_HdTypeWarorder:
this.model.setopentime(2, hdlist)
break
case pb.HdType_SupplyWarOrder:
this.model.setopentime(3, hdlist)
break
case pb.HdType_MoondreamWarOrder:
this.model.setopentime(4, hdlist)
break
}
}
// 活动关闭
func (this *Warorder) ActivityCloseNotice(hdlist *pb.DBHuodong) {
switch hdlist.Itype {
case pb.HdType_HdTypeWarorder:
go this.model.settlement(2)
break
case pb.HdType_SupplyWarOrder:
go this.model.settlement(3)
break
case pb.HdType_MoondreamWarOrder:
// this.model.setopentime(4, hdlist)
break
}
}
// 红点需求
func (this *Warorder) Reddot(session comm.IUserSession, rid map[comm.ReddotType]struct{}) (items map[comm.ReddotType]*pb.ReddotItem) {
var (
selfrid []comm.ReddotType = []comm.ReddotType{comm.Reddot31104}
info *pb.DBWarorders
dwarorder *pb.DreamWarorder
confs []*cfg.GamePassCheckData
err error
ok bool
)
items = make(map[comm.ReddotType]*pb.ReddotItem)
for _, v := range selfrid {
if _, ok = rid[v]; ok {
break
}
}
if !ok {
return
}
if info, err = this.model.getUserWarorders(session.GetUserId()); err != nil {
return
}
for _, v := range selfrid {
if _, ok = rid[v]; ok {
switch v {
case comm.Reddot31104:
if dwarorder, ok = info.Dreamwarorder[4]; !ok {
break
}
if confs, err = this.configure.getorder(4); err != nil {
return
}
for _, v := range confs {
if v.Parameter <= dwarorder.Lv {
if dwarorder.Freeprogress < v.Parameter {
items[comm.Reddot31104] = &pb.ReddotItem{
Rid: int32(comm.Reddot31104),
Activated: true,
}
break
}
if dwarorder.Vip > 0 {
if dwarorder.Payprogress < v.Parameter {
items[comm.Reddot31104] = &pb.ReddotItem{
Rid: int32(comm.Reddot31104),
Activated: true,
}
break
}
}
}
}
break
}
}
}
return
}