|
|
- // Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved.
- package main
-
- import (
- "flag"
- "fmt"
- "github.com/kardianos/service"
- "leit.com/leit_seat_aps/common"
- "leit.com/leit_seat_aps/config"
- "leit.com/leit_seat_aps/db"
- "leit.com/leit_seat_aps/glog"
- "leit.com/leit_seat_aps/mes"
- "log"
- "os"
- "path/filepath"
- )
-
- //基于windows系统服务器,安装成服务
-
- type program struct{}
-
- func (p *program) Start(s service.Service) error {
- // Start should not block. Do the actual work async.
- go p.run()
- return nil
- }
- func (p *program) run() {
- imain()
- }
- func (p *program) Stop(s service.Service) error {
- return nil
- }
-
- func main() {
- svcConfig := &service.Config{
- Name: "mes",
- DisplayName: "mes",
- Description: "this is mes",
- }
-
- prg := &program{}
- s, err := service.New(prg, svcConfig)
- if err != nil {
- log.Fatal(err)
- }
- if len(os.Args) > 1 {
- verb := os.Args[1]
- switch verb {
- case "install":
- s.Install()
- log.Println("服务安装成功")
- return
- case "remove":
- s.Uninstall()
- log.Println("服务卸载成功")
- return
- case "start":
- s.Start()
- log.Println("服务启动")
- return
- case "stop":
- s.Stop()
- log.Println("服务暂停")
- return
- }
-
- }
- err = s.Run()
- if err != nil {
- log.Println(err)
- }
- }
-
- /******************************************************************************
- *
- * @Function Name :系统入口函数
- *-----------------------------------------------------------------------------
- *
- * @Description :
- *
- * @Function Parameters:
- *
- * @Return Value :
- *
- * @Author : Lou Wenzhi
- *
- * @Date : 2021/3/5 13:05
- *
- ******************************************************************************/
- func imain() {
- //初始化日志
- baseDir := ""
- flag.StringVar(&baseDir, "dir", "log", "running in a directory")
- flag.Parse()
-
- defer glog.Flush()
- pathLogDir := filepath.Join(baseDir, "glog")
- //备注,因为是打包成windows服务,路径需要转义
- pathLogDir = common.EnsureDir(pathLogDir)
- glog.DefaultInit(true, pathLogDir)
-
- glog.Infoln("启动日志", "InitDB return success")
-
- //加载配置
- path := common.EnsureDir("config/config.yaml")
- fmt.Println(path)
- conf, err := config.ReadYamlConfig(path)
- if err != nil {
- log.Printf("failed to read yaml config due to: %v", err)
- return
- }
- ////加载配置
- //err = config.InitConfig()
- //if err != nil {
- // log.Printf("failed to read yaml config due to: %v", err)
- // return
- //}
- //初始化数据库
- connstring := fmt.Sprintf("server=%s;user id=%s;password=%s;database=%s;port=%d;encrypt=disable",
- conf.Server, conf.User, conf.Password, conf.DbName, conf.Port)
-
- if err := db.InitMssqlDb(connstring); err != nil {
- glog.Infoln("初始化数据库", "InitMssqlDb return fail")
- return
- }
- // 创建etcd监听连接
- //if err = etcd.InitEtcdClient(); err != nil {
- // glog.Infoln("初始化EtCD连接", "InitJobLock return fail")
- // return
- //}
- //
- //// register app service to etcd
- //if config.AppConfig.UseETCD {
- // CheckServiceDao := etcd.NewETCDServiceImplement(etcd.AppEtcdClient, config.AppConfig.App.LocalAddr)
- // defer CheckServiceDao.RevokeLease()
- // err = CheckServiceDao.RegisterService(config.AppConfig.App.Name)
- // if err != nil {
- // log.Fatal("register service to etcd failed, error:", err)
- // }
- //}
- // 基于派工下达计划生成生产包装
- mes.GenProductionPack()
- }
|