添加客户端版本服务器
This commit is contained in:
parent
d5b15ce0f7
commit
a90d952d07
57
modules/version/api.go
Normal file
57
modules/version/api.go
Normal file
@ -0,0 +1,57 @@
|
||||
package version
|
||||
|
||||
import (
|
||||
"go_dreamfactory/lego/core"
|
||||
"go_dreamfactory/lego/core/cbase"
|
||||
"go_dreamfactory/lego/sys/gin"
|
||||
"go_dreamfactory/lego/sys/gin/engine"
|
||||
"reflect"
|
||||
"strings"
|
||||
)
|
||||
|
||||
/*
|
||||
web api 服务组件
|
||||
*/
|
||||
type Api_Comp struct {
|
||||
cbase.ModuleCompBase
|
||||
options *Options //模块参数
|
||||
module *Version //当前模块对象
|
||||
gin gin.ISys //gin 框架 web的热门框架
|
||||
}
|
||||
|
||||
// 组件初始化接口 启动web服务 并注册api
|
||||
func (this *Api_Comp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
|
||||
err = this.ModuleCompBase.Init(service, module, comp, options)
|
||||
this.options = options.(*Options)
|
||||
this.module = module.(*Version)
|
||||
if this.gin, err = gin.NewSys(gin.SetListenPort(this.options.Port)); err != nil {
|
||||
return
|
||||
}
|
||||
this.suitableMethods() //发射注册api
|
||||
return
|
||||
}
|
||||
|
||||
func (this *Api_Comp) suitableMethods() {
|
||||
typ := reflect.TypeOf(this)
|
||||
vof := reflect.ValueOf(this)
|
||||
for m := 0; m < typ.NumMethod(); m++ {
|
||||
method := typ.Method(m)
|
||||
mname := method.Name
|
||||
mtype := method.Type
|
||||
if method.PkgPath != "" {
|
||||
continue
|
||||
}
|
||||
if mtype.NumIn() != 2 {
|
||||
continue
|
||||
}
|
||||
context := mtype.In(1)
|
||||
if context.String() != "*engine.Context" {
|
||||
continue
|
||||
}
|
||||
if mtype.NumOut() != 0 {
|
||||
continue
|
||||
}
|
||||
this.gin.POST(strings.ToLower(mname), vof.MethodByName(mname).Interface().(func(*engine.Context)))
|
||||
this.gin.GET(strings.ToLower(mname), vof.MethodByName(mname).Interface().(func(*engine.Context)))
|
||||
}
|
||||
}
|
47
modules/version/module.go
Normal file
47
modules/version/module.go
Normal file
@ -0,0 +1,47 @@
|
||||
package version
|
||||
|
||||
import (
|
||||
"go_dreamfactory/lego/base"
|
||||
"go_dreamfactory/lego/core"
|
||||
"go_dreamfactory/lego/core/cbase"
|
||||
)
|
||||
|
||||
/*
|
||||
模块名:web
|
||||
描述:提供管理员相关的http接口
|
||||
开发:李伟
|
||||
*/
|
||||
func NewModule() core.IModule {
|
||||
m := new(Version)
|
||||
return m
|
||||
}
|
||||
|
||||
type Version struct {
|
||||
cbase.ModuleBase
|
||||
options *Options
|
||||
service base.IRPCXService
|
||||
api_comp *Api_Comp //提供weba pi服务的组件
|
||||
}
|
||||
|
||||
// 模块名
|
||||
func (this *Version) GetType() core.M_Modules {
|
||||
return "version"
|
||||
}
|
||||
|
||||
// 模块自定义参数
|
||||
func (this *Version) NewOptions() (options core.IModuleOptions) {
|
||||
return new(Options)
|
||||
}
|
||||
|
||||
func (this *Version) Init(service core.IService, module core.IModule, options core.IModuleOptions) (err error) {
|
||||
err = this.ModuleBase.Init(service, module, options)
|
||||
this.service = service.(base.IRPCXService)
|
||||
this.options = options.(*Options)
|
||||
return
|
||||
}
|
||||
|
||||
func (this *Version) OnInstallComp() {
|
||||
this.ModuleBase.OnInstallComp()
|
||||
this.api_comp = this.RegisterComp(new(Api_Comp)).(*Api_Comp)
|
||||
|
||||
}
|
25
modules/version/options.go
Normal file
25
modules/version/options.go
Normal file
@ -0,0 +1,25 @@
|
||||
package version
|
||||
|
||||
import (
|
||||
"go_dreamfactory/lego/utils/mapstructure"
|
||||
"go_dreamfactory/modules"
|
||||
)
|
||||
|
||||
type (
|
||||
Options struct {
|
||||
modules.Options
|
||||
WebDir string
|
||||
Port int
|
||||
Key string
|
||||
}
|
||||
)
|
||||
|
||||
func (this *Options) LoadConfig(settings map[string]interface{}) (err error) {
|
||||
if settings != nil {
|
||||
if err = this.Options.LoadConfig(settings); err != nil {
|
||||
return
|
||||
}
|
||||
err = mapstructure.Decode(settings, this)
|
||||
}
|
||||
return
|
||||
}
|
59
services/version/main.go
Normal file
59
services/version/main.go
Normal file
@ -0,0 +1,59 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"go_dreamfactory/modules/version"
|
||||
"go_dreamfactory/services"
|
||||
"go_dreamfactory/sys/db"
|
||||
|
||||
"go_dreamfactory/lego"
|
||||
"go_dreamfactory/lego/base/rpcx"
|
||||
"go_dreamfactory/lego/core"
|
||||
"go_dreamfactory/lego/sys/log"
|
||||
)
|
||||
|
||||
/*
|
||||
服务类型:mainte
|
||||
服务描述:数据库维护以及GM后台接口 服务
|
||||
*/
|
||||
var (
|
||||
conf = flag.String("conf", "./conf/version.yaml", "获取需要启动的服务配置文件") //启动服务的Id
|
||||
)
|
||||
|
||||
/*服务启动的入口函数*/
|
||||
func main() {
|
||||
flag.Parse()
|
||||
s := NewService(
|
||||
rpcx.SetConfPath(*conf),
|
||||
rpcx.SetVersion("1.0.0.0"),
|
||||
)
|
||||
s.OnInstallComp( //装备组件
|
||||
//services.NewGateRouteComp(), //此服务需要接受用户的消息 需要装备网关组件
|
||||
)
|
||||
lego.Run(s, //运行模块
|
||||
version.NewModule(),
|
||||
)
|
||||
}
|
||||
|
||||
func NewService(ops ...rpcx.Option) core.IService {
|
||||
s := new(Service)
|
||||
s.Configure(ops...)
|
||||
return s
|
||||
}
|
||||
|
||||
// worker 的服务对象定义
|
||||
type Service struct {
|
||||
services.ServiceBase
|
||||
}
|
||||
|
||||
// 初始化worker需要的一些系统工具
|
||||
func (this *Service) InitSys() {
|
||||
this.ServiceBase.InitSys()
|
||||
//存储系统
|
||||
if err := db.OnInit(this.GetSettings().Sys["db"]); err != nil {
|
||||
panic(fmt.Sprintf("init sys.db err: %s", err.Error()))
|
||||
} else {
|
||||
log.Infof("init sys.db success!")
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user