添加客户端版本服务器
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