增加功能列表协议

This commit is contained in:
wh_zcy 2022-09-08 14:57:59 +08:00
parent 3c5b1ea290
commit 5e2eba49d4
21 changed files with 419 additions and 62 deletions

View File

@ -11,13 +11,21 @@ linters:
disable-all: true disable-all: true
enable: enable:
- nilerr - nilerr
# 检查没有判断err的场景这些没有检查的场景可能导致致命bug在某些场景
- errcheck - errcheck
# 简化代码
- gosimple - gosimple
# 检查源代码、报告可疑的结构体如果Printf函数调用参数没有对齐字符串格式
- govet - govet
# 检查没有使用参数
- ineffassign - ineffassign
# 专业做静态检查的工具其它的工具只是一个简单的github仓库
- staticcheck - staticcheck
# 类似编译的前端解析和检查type
- typecheck - typecheck
# 检查没有使用的go代码包含没有使用的常量、变量、函数、和类型
- unused - unused
# more linters https://golangci-lint.run/usage/linters/ # more linters https://golangci-lint.run/usage/linters/
linters-settings: linters-settings:

View File

@ -36,7 +36,7 @@ func (r *Robot) BuildSecStr() string {
//处理登录请求 //处理登录请求
func (r *Robot) AccountLogin() { func (r *Robot) AccountLogin() {
log.Printf("区服:[%d] 账号:[%s] login...", r.opts.ServerId, r.opts.Account) log.Printf("区服:[%s] 账号:[%s] login...", r.opts.ServerId, r.opts.Account)
builders := []*TestCase{ builders := []*TestCase{
{ {
id: "login", id: "login",

View File

@ -143,12 +143,6 @@ func (r *Robot) addBuilders(builders []*TestCase) {
} }
} }
func (r *Robot) printBuilders() {
for k, v := range r.builderMap {
zlog.Debugf("%v %s.%s", k, v.mainType, v.subType)
}
}
//处理用例,发送请求 //处理用例,发送请求
func (r *Robot) handleReq() { func (r *Robot) handleReq() {
for len(r.builderMap) > 0 { for len(r.builderMap) > 0 {

View File

@ -54,11 +54,11 @@ func (c *ConnServiceImpl) WsConnect(wsUrl string) error {
} }
c.ws = ws c.ws = ws
ticker := time.NewTicker(2 * time.Second)
defer ticker.Stop()
go func() { go func() {
timer := time.NewTimer(2 * time.Second)
for { for {
_ = <-ticker.C timer.Reset(2 * time.Second)
<-timer.C
if err := c.ws.WriteMessage(websocket.PingMessage, []byte{}); err != nil { if err := c.ws.WriteMessage(websocket.PingMessage, []byte{}); err != nil {
c.obs.Notify(observer.EVENT_PING, err) c.obs.Notify(observer.EVENT_PING, err)
break break

View File

@ -6,5 +6,5 @@ type WindowDefaultOptions struct {
windowAction common.WindowAction windowAction common.WindowAction
windowMode common.WindowMode windowMode common.WindowMode
windowAspect common.WindowAspect windowAspect common.WindowAspect
windowVisible bool // windowVisible bool
} }

View File

@ -12,20 +12,20 @@ type mainMenu struct {
// aboutSelf *fyne.MenuItem // aboutSelf *fyne.MenuItem
} }
func newMainMenu() *mainMenu { // func newMainMenu() *mainMenu {
var mm mainMenu // var mm mainMenu
// help // // help
mm.sysLog = fyne.NewMenuItem("Show Log", func() { // mm.sysLog = fyne.NewMenuItem("Show Log", func() {
newLogViewer().Win.Show() // newLogViewer().Win.Show()
}) // })
mm.helpMenu = fyne.NewMenu("Help", // mm.helpMenu = fyne.NewMenu("Help",
mm.sysLog, // mm.sysLog,
// mm.aboutSelf, // // mm.aboutSelf,
) // )
mm.MainMenu = fyne.NewMainMenu( // mm.MainMenu = fyne.NewMainMenu(
mm.helpMenu, // mm.helpMenu,
) // )
return &mm // return &mm
} // }

View File

@ -37,7 +37,6 @@ type MainWindowImpl struct {
UIImpl UIImpl
WindowDefaultOptions WindowDefaultOptions
w fyne.Window w fyne.Window
mm *mainMenu
tb *toolBar //工具条 tb *toolBar //工具条
toys *toys // side toys *toys // side
sb *statusBar //状态栏 sb *statusBar //状态栏
@ -55,6 +54,7 @@ func NewMainWindow(ui *UIImpl) MainWindow {
ui.obs.AddListener(observer.EVENT_PING, observer.Listener{ ui.obs.AddListener(observer.EVENT_PING, observer.Listener{
OnNotify: func(data interface{}, args ...interface{}) { OnNotify: func(data interface{}, args ...interface{}) {
logrus.Debug("即将于服务器断开链接")
conf := dialog.NewConfirm("链接中断", data.(error).Error(), func( conf := dialog.NewConfirm("链接中断", data.(error).Error(), func(
b bool) { b bool) {
if b { if b {
@ -121,9 +121,9 @@ func (ui *MainWindowImpl) quiteHandle() {
} }
// CreateWindow .... // CreateWindow ....
func (ui *MainWindowImpl) CreateWindow(title string, width, height float32, _ bool) { func (ui *MainWindowImpl) CreateWindow(_ string, width, height float32, _ bool) {
// init window // init window
title = fmt.Sprintf(common.APP_WIN_TITLE, "登录", ui.app.Metadata().Version, ui.app.Metadata().Build, common.APP_NAME) title := fmt.Sprintf(common.APP_WIN_TITLE, "登录", ui.app.Metadata().Version, ui.app.Metadata().Build, common.APP_NAME)
w := ui.app.NewWindow(title) w := ui.app.NewWindow(title)
ui.AddWindow("main", w) ui.AddWindow("main", w)
ui.w = w ui.w = w
@ -134,10 +134,6 @@ func (ui *MainWindowImpl) CreateWindow(title string, width, height float32, _ bo
w.Resize(fyne.NewSize(width, height)) w.Resize(fyne.NewSize(width, height))
} }
// create main window menu
// ui.mm = newMainMenu()
// w.SetMainMenu(ui.mm.MainMenu)
w.SetMaster() w.SetMaster()
w.CenterOnScreen() w.CenterOnScreen()
_ = ui.createChooseServerPopUp(w) _ = ui.createChooseServerPopUp(w)

View File

@ -13,6 +13,7 @@ import (
"go_dreamfactory/modules/linestory" "go_dreamfactory/modules/linestory"
"go_dreamfactory/modules/mainline" "go_dreamfactory/modules/mainline"
"go_dreamfactory/modules/rtask" "go_dreamfactory/modules/rtask"
"go_dreamfactory/modules/sys"
"go_dreamfactory/modules/task" "go_dreamfactory/modules/task"
"go_dreamfactory/modules/user" "go_dreamfactory/modules/user"
"go_dreamfactory/pb" "go_dreamfactory/pb"
@ -34,6 +35,8 @@ var (
viewRegister = map[string]MyCaseView{ viewRegister = map[string]MyCaseView{
// gm // gm
ff(comm.ModuleGM, "cmd"): &formview.BingoView{}, ff(comm.ModuleGM, "cmd"): &formview.BingoView{},
//sys
ff(comm.ModuleSys, "funclist"): &formview.SysFuncListView{},
//user //user
ff(comm.ModuleUser, user.UserSubTypeModifyName): &formview.UserModifynameView{}, ff(comm.ModuleUser, user.UserSubTypeModifyName): &formview.UserModifynameView{},
ff(comm.ModuleUser, user.UserSubTypeModifySign): &formview.UserSignView{}, ff(comm.ModuleUser, user.UserSubTypeModifySign): &formview.UserSignView{},
@ -95,6 +98,7 @@ var (
CaseIndex = map[string][]string{ CaseIndex = map[string][]string{
"": { "": {
string(comm.ModuleGM), string(comm.ModuleGM),
string(comm.ModuleSys),
string(comm.ModuleUser), string(comm.ModuleUser),
string(comm.ModuleHero), string(comm.ModuleHero),
string(comm.ModuleTask), string(comm.ModuleTask),
@ -109,6 +113,9 @@ var (
string(comm.ModuleLinestory), string(comm.ModuleLinestory),
}, },
"gm": {ff(comm.ModuleGM, "cmd")}, "gm": {ff(comm.ModuleGM, "cmd")},
"sys": {
ff(comm.ModuleSys, "funclist"),
},
"user": { "user": {
ff(comm.ModuleUser, user.UserSubTypeModifyName), ff(comm.ModuleUser, user.UserSubTypeModifyName),
ff(comm.ModuleUser, user.UserSubTypeModifySign), ff(comm.ModuleUser, user.UserSubTypeModifySign),
@ -194,6 +201,18 @@ var (
Rsp: &pb.GMCmdResp{}, Rsp: &pb.GMCmdResp{},
Enabled: true, Enabled: true,
}, },
"sys": {
NavLabel: "系统",
MainType: string(comm.ModuleSys),
Enabled: true,
},
ff(comm.ModuleSys, "funclist"): {
NavLabel: "功能列表",
Desc: "返回未开启的功能列表",
MainType: string(comm.ModuleSys),
SubType: sys.SysSubTypeFunc,
Enabled: true,
},
// user // user
"user": { "user": {
NavLabel: "用户", NavLabel: "用户",

View File

@ -25,7 +25,6 @@ import (
type appPbGen struct { type appPbGen struct {
appAdapter appAdapter
obs observer.Observer
folderList *folderList folderList *folderList
folderChk *widget.List folderChk *widget.List
} }

View File

@ -56,7 +56,7 @@ func (a *appWelcome) OpenDefault() bool {
} }
func (a *appWelcome) ShortCut() fyne.Shortcut { func (a *appWelcome) ShortCut() fyne.Shortcut {
return &desktop.CustomShortcut{KeyName: fyne.Key1, Modifier: desktop.AltModifier} return &desktop.CustomShortcut{KeyName: fyne.Key1, Modifier: fyne.KeyModifierAlt}
} }
func (a *appWelcome) Icon() fyne.Resource { func (a *appWelcome) Icon() fyne.Resource {

View File

@ -168,10 +168,10 @@ func (this *toyUserInfo) dataListener() {
this.setProp(5, common.USERINFO_GOLD, rsp.Gold) this.setProp(5, common.USERINFO_GOLD, rsp.Gold)
} }
// listener exp // listener exp
if data.Msg.MainType == string(comm.ModuleUser) && // if data.Msg.MainType == string(comm.ModuleUser) &&
data.Msg.SubType == "" { // data.Msg.SubType == "" {
//TODO change exp //TODO change exp
} // }
}, },
}) })

View File

@ -29,25 +29,3 @@ func getTaskTagSelect() *widget.Select {
return tagSelect return tagSelect
} }
// 获取道具类型
func getItemTypeSelect() *widget.Select {
var tagSelect *widget.Select
tagSelect = widget.NewSelect([]string{
common.AAP_TESTCASE_FORM_TASK_DAY,
common.APP_TESTCASE_FORM_TASK_WEEK,
common.APP_TESTCASE_FORM_TASK_ACHIEVE}, func(s string) {
switch s {
case common.AAP_TESTCASE_FORM_TASK_DAY:
tagSelect.Selected = "1"
case common.APP_TESTCASE_FORM_TASK_WEEK:
tagSelect.Selected = "2"
case common.APP_TESTCASE_FORM_TASK_ACHIEVE:
tagSelect.Selected = "3"
default:
tagSelect.Selected = "0"
}
})
tagSelect.SetSelectedIndex(0)
return tagSelect
}

View File

@ -0,0 +1,28 @@
package formview
import (
"go_dreamfactory/cmd/v2/model"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/pb"
"fyne.io/fyne/v2"
"github.com/sirupsen/logrus"
)
type SysFuncListView struct {
BaseformView
}
func (this *SysFuncListView) CreateView(t *model.TestCase) fyne.CanvasObject {
this.form.OnSubmit = func() {
if err := service.GetPttService().SendToClient(
t.MainType,
t.SubType,
&pb.SysFuncListReq{},
); err != nil {
logrus.Error(err)
return
}
}
return this.form
}

View File

@ -32,6 +32,7 @@ const (
//模块名定义处 //模块名定义处
const ( const (
ModuleSys core.M_Modules = "sys" //系统
ModuleGate core.M_Modules = "gateway" //gate模块 网关服务模块 ModuleGate core.M_Modules = "gateway" //gate模块 网关服务模块
ModuleWeb core.M_Modules = "web" //后台模块 ModuleWeb core.M_Modules = "web" //后台模块
ModuleUser core.M_Modules = "user" //用户模块 ModuleUser core.M_Modules = "user" //用户模块

View File

@ -136,7 +136,6 @@ func (this *ServiceBase) Run(mod ...core.IModule) {
//添加进程结束信号 //添加进程结束信号
signal.Notify(c, signal.Notify(c,
os.Interrupt, //退出信号 ctrl+c退出 os.Interrupt, //退出信号 ctrl+c退出
os.Kill, //kill 信号
syscall.SIGHUP, //终端控制进程结束(终端连接断开) syscall.SIGHUP, //终端控制进程结束(终端连接断开)
syscall.SIGINT, //用户发送INTR字符(Ctrl+C)触发 syscall.SIGINT, //用户发送INTR字符(Ctrl+C)触发
syscall.SIGTERM, //结束程序(可以被捕获、阻塞或忽略) syscall.SIGTERM, //结束程序(可以被捕获、阻塞或忽略)

28
modules/sys/api.go Normal file
View File

@ -0,0 +1,28 @@
package sys
import (
"go_dreamfactory/lego/core"
"go_dreamfactory/modules"
)
const (
SysSubTypeFunc = "funclist"
)
type apiComp struct {
modules.MCompGate
service core.IService
moduleSys *ModuleSys
}
func (this *apiComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.MCompGate.Init(service, module, comp, options)
this.moduleSys = module.(*ModuleSys)
this.service = service
return
}
func (this *apiComp) Start() (err error) {
err = this.MCompGate.Start()
return
}

37
modules/sys/api_func.go Normal file
View File

@ -0,0 +1,37 @@
package sys
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"google.golang.org/protobuf/proto"
)
func (this *apiComp) FunclistCheck(session comm.IUserSession, req *pb.SysFuncListReq) (code pb.ErrorCode) {
return
}
func (this *apiComp) Funclist(session comm.IUserSession, req *pb.SysFuncListReq) (code pb.ErrorCode, data proto.Message) {
rsp := &pb.SysFuncListResp{}
iuser := this.moduleSys.ModuleUser
user := iuser.GetUser(session.GetUserId())
if user == nil {
code = pb.ErrorCode_UserSessionNobeing
return
}
var funcList []string
confList := this.moduleSys.configure.getOpencondList()
for _, v := range confList {
// 返回未开启的功能列表
if user.Lv < v.Main {
funcList = append(funcList, v.Id)
}
}
rsp.FuncIds = funcList
if err := session.SendMsg(string(this.moduleSys.GetType()), SysSubTypeFunc, rsp); err != nil {
code = pb.ErrorCode_SystemError
}
return
}

47
modules/sys/config.go Normal file
View File

@ -0,0 +1,47 @@
package sys
import (
"fmt"
"go_dreamfactory/lego/core"
"go_dreamfactory/modules"
cfg "go_dreamfactory/sys/configure/structs"
)
const (
gameOpencond = "game_opencond.json"
)
type configureComp struct {
modules.MCompConfigure
}
func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
err = this.MCompConfigure.Init(service, module, comp, options)
this.LoadConfigure(gameOpencond, cfg.NewGameOpencond)
return
}
func (this *configureComp) getOpencondCfg() (data *cfg.GameOpencond, err error) {
var (
v interface{}
ok bool
)
if v, err = this.GetConfigure(gameOpencond); err != nil {
return
} else {
if data, ok = v.(*cfg.GameOpencond); !ok {
err = fmt.Errorf("%T no is *cfg.GameOpencond", v)
return
}
}
return
}
func (this *configureComp) getOpencondList() (list []*cfg.GameOpencondData) {
if cfg, err := this.getOpencondCfg(); err != nil {
return nil
} else {
list = cfg.GetDataList()
}
return
}

27
modules/sys/module.go Normal file
View File

@ -0,0 +1,27 @@
package sys
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/modules"
)
type ModuleSys struct {
modules.ModuleBase
api *apiComp
configure *configureComp
}
func NewModule() core.IModule {
return &ModuleSys{}
}
func (this *ModuleSys) OnInstallComp() {
this.ModuleBase.OnInstallComp()
this.api = this.RegisterComp(new(apiComp)).(*apiComp)
this.configure = this.RegisterComp(new(configureComp)).(*configureComp)
}
func (this *ModuleSys) GetType() core.M_Modules {
return comm.ModuleSys
}

194
pb/sys_msg.pb.go Normal file
View File

@ -0,0 +1,194 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.0
// protoc v3.20.0
// source: sys/sys_msg.proto
package pb
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type SysFuncListReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *SysFuncListReq) Reset() {
*x = SysFuncListReq{}
if protoimpl.UnsafeEnabled {
mi := &file_sys_sys_msg_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SysFuncListReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SysFuncListReq) ProtoMessage() {}
func (x *SysFuncListReq) ProtoReflect() protoreflect.Message {
mi := &file_sys_sys_msg_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SysFuncListReq.ProtoReflect.Descriptor instead.
func (*SysFuncListReq) Descriptor() ([]byte, []int) {
return file_sys_sys_msg_proto_rawDescGZIP(), []int{0}
}
type SysFuncListResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
FuncIds []string `protobuf:"bytes,1,rep,name=funcIds,proto3" json:"funcIds"` //功能ID
}
func (x *SysFuncListResp) Reset() {
*x = SysFuncListResp{}
if protoimpl.UnsafeEnabled {
mi := &file_sys_sys_msg_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SysFuncListResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SysFuncListResp) ProtoMessage() {}
func (x *SysFuncListResp) ProtoReflect() protoreflect.Message {
mi := &file_sys_sys_msg_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SysFuncListResp.ProtoReflect.Descriptor instead.
func (*SysFuncListResp) Descriptor() ([]byte, []int) {
return file_sys_sys_msg_proto_rawDescGZIP(), []int{1}
}
func (x *SysFuncListResp) GetFuncIds() []string {
if x != nil {
return x.FuncIds
}
return nil
}
var File_sys_sys_msg_proto protoreflect.FileDescriptor
var file_sys_sys_msg_proto_rawDesc = []byte{
0x0a, 0x11, 0x73, 0x79, 0x73, 0x2f, 0x73, 0x79, 0x73, 0x5f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x22, 0x10, 0x0a, 0x0e, 0x53, 0x79, 0x73, 0x46, 0x75, 0x6e, 0x63, 0x4c, 0x69,
0x73, 0x74, 0x52, 0x65, 0x71, 0x22, 0x2b, 0x0a, 0x0f, 0x53, 0x79, 0x73, 0x46, 0x75, 0x6e, 0x63,
0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x75, 0x6e, 0x63,
0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x66, 0x75, 0x6e, 0x63, 0x49,
0x64, 0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
}
var (
file_sys_sys_msg_proto_rawDescOnce sync.Once
file_sys_sys_msg_proto_rawDescData = file_sys_sys_msg_proto_rawDesc
)
func file_sys_sys_msg_proto_rawDescGZIP() []byte {
file_sys_sys_msg_proto_rawDescOnce.Do(func() {
file_sys_sys_msg_proto_rawDescData = protoimpl.X.CompressGZIP(file_sys_sys_msg_proto_rawDescData)
})
return file_sys_sys_msg_proto_rawDescData
}
var file_sys_sys_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_sys_sys_msg_proto_goTypes = []interface{}{
(*SysFuncListReq)(nil), // 0: SysFuncListReq
(*SysFuncListResp)(nil), // 1: SysFuncListResp
}
var file_sys_sys_msg_proto_depIdxs = []int32{
0, // [0:0] is the sub-list for method output_type
0, // [0:0] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
}
func init() { file_sys_sys_msg_proto_init() }
func file_sys_sys_msg_proto_init() {
if File_sys_sys_msg_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_sys_sys_msg_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SysFuncListReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_sys_sys_msg_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SysFuncListResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_sys_sys_msg_proto_rawDesc,
NumEnums: 0,
NumMessages: 2,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_sys_sys_msg_proto_goTypes,
DependencyIndexes: file_sys_sys_msg_proto_depIdxs,
MessageInfos: file_sys_sys_msg_proto_msgTypes,
}.Build()
File_sys_sys_msg_proto = out.File
file_sys_sys_msg_proto_rawDesc = nil
file_sys_sys_msg_proto_goTypes = nil
file_sys_sys_msg_proto_depIdxs = nil
}

View File

@ -23,6 +23,7 @@ import (
"go_dreamfactory/modules/rtask" "go_dreamfactory/modules/rtask"
"go_dreamfactory/modules/shop" "go_dreamfactory/modules/shop"
"go_dreamfactory/modules/smithy" "go_dreamfactory/modules/smithy"
"go_dreamfactory/modules/sys"
"go_dreamfactory/modules/task" "go_dreamfactory/modules/task"
"go_dreamfactory/modules/user" "go_dreamfactory/modules/user"
"go_dreamfactory/modules/viking" "go_dreamfactory/modules/viking"
@ -56,6 +57,7 @@ func main() {
services.NewGateRouteComp(), //此服务需要接受用户的消息 需要装备网关组件 services.NewGateRouteComp(), //此服务需要接受用户的消息 需要装备网关组件
) )
lego.Run(s, //运行模块 lego.Run(s, //运行模块
sys.NewModule(),
user.NewModule(), user.NewModule(),
items.NewModule(), items.NewModule(),
mail.NewModule(), mail.NewModule(),