更改工具配置

This commit is contained in:
wh_zcy 2022-12-27 13:42:00 +08:00
parent aa66fed5dd
commit 146d98797b
10 changed files with 152 additions and 266 deletions

View File

@ -4,5 +4,5 @@ Website = "http://legu.cc"
Icon = "app.png"
Name = "RobotGUI"
ID = "cc.legu.app"
Version = "1.0.21"
Build = 25
Version = "1.2.2"
Build = 29

View File

@ -25,11 +25,3 @@ const (
CONFIG_SERVICE_NAME = "name"
CONFIG_SERVICE_URL = "url"
)
const (
BOLTDB_NAME = "my.db"
BOLTDB_BUCKETNAME = "robotBucket"
BUCKET_LUBANCONF = "lubanConf"
BUCKET_SSHCONF = "sshConf"
BUCKET_PBCONF = "pbConf"
)

View File

@ -21,6 +21,10 @@ func TestConver(t *testing.T) {
fmt.Println(s)
}
func TestIsUpgrade(t *testing.T) {
IsUpgrade("1.2.2", "1.0.21")
}
func TestJsonToPb(t *testing.T) {
jsonStr := `{"account":"zhaocy","sid":"dfz"}`
login := &pb.UserLoginReq{}
@ -45,7 +49,7 @@ func TestDiv(t *testing.T) {
value, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", numF/1e6), 64)
fmt.Println(reflect.TypeOf(value), value)
fmt.Println(FormatFloatCommon(numF / 1e6))
num, _ := FormatFloat(numF, 2)
fmt.Println(reflect.TypeOf(num), num)
// 舍弃的尾数不为0强制进位

View File

@ -13,11 +13,14 @@ func newDefaultConfig() *Config {
}
type Config struct {
Pressure PressureConfig `json:"Pressure,omitempty"`
UserCount int32 `json:"UserCount,omitempty"` //用户数
SId string `json:"sid,omitempty"` //区服ID
WsAddr string `json:"wsAddr,omitempty"` //websocket addr
IntervalS int32 `json:"intervalS,omitempty"` //间隔时间s
Pressure PressureConfig `json:"Pressure,omitempty"`
UserCount int32 `json:"UserCount,omitempty"` //用户数
SId string `json:"sid,omitempty"` //区服ID
WsAddr string `json:"wsAddr,omitempty"` //websocket addr
IntervalS int32 `json:"intervalS,omitempty"` //间隔时间s
LubanConf *LubanConfig `json:"lubanConf,omitempty"` //luban工具配置
PbConf *ProtobufConfig `json:"pbConf,omitempty"` //Pb配置
SyncConf *SyncConfig `json:"syncConf,omitempty"` //同步配置
}
//压测配置
@ -26,3 +29,40 @@ type PressureConfig struct {
Concurrency int32 `json:"concurrency,omitempty"` //并发量
DurationS int32 `json:"duration,omitempty"` //持续时间 秒
}
//luban
type LubanConfig struct {
ServerAddr string
ProjectDir string
WorkDir string
Client string
GenType string
TmpDir string
InputDir string //输入目录
OutputCodeDir string //输出Code目录
OutputJsonDir string //输出json目录
}
type ProtobufConfig struct {
ProtoDir string
OutputDir string
}
type SyncConfig struct {
Ip string
Port string
UserName string
Password string
LocalDir string
RemoteDir string
ServerIp string
WorkDir string
LubanCli string
DataDir string
JsonDir string
SaveDir string //保存目录
LogDir string //远程日志目录
Editor string //编辑器
}

View File

@ -30,7 +30,6 @@ var (
connService service.ConnService
pttService service.PttService
configService service.ConfigService
dbService service.DbService
obs = observer.NewObserver()
logger *logrus.Logger
)
@ -50,10 +49,6 @@ func init() {
os.Exit(1)
}
if err = setupDb(); err != nil {
fmt.Println(err)
os.Exit(1)
}
if err = setupWsConn(); err != nil {
fmt.Println(err)
os.Exit(1)
@ -86,7 +81,7 @@ func main() {
checkVersion(app, w)
}
w.SetContent(container.NewGridWithColumns(3,
w.SetContent(container.NewGridWithColumns(2,
widget.NewButton("工具", func() {
toolWindow := ui.NewToolWindow(appUI, w)
toolWindow.CreateWindow(common.APP_NAME, 1499, 800, true)
@ -97,11 +92,11 @@ func main() {
mainWindow.CreateWindow(common.APP_NAME, 1499, 800, true)
w.Hide()
}),
widget.NewButton("自动化测试", func() {
perfWindow := ui.NewPerfWindow(appUI, w)
perfWindow.CreateWindow(common.APP_NAME, 800, 600, true)
w.Hide()
}),
// widget.NewButton("自动化测试", func() {
// perfWindow := ui.NewPerfWindow(appUI, w)
// perfWindow.CreateWindow(common.APP_NAME, 800, 600, true)
// w.Hide()
// }),
))
w.SetFixedSize(true)
w.Resize(fyne.NewSize(400, 200))
@ -140,11 +135,6 @@ func setupWsConn() (err error) {
return
}
func setupDb() (err error) {
dbService = service.NewDbService()
return
}
func setupConfig() (err error) {
configService, err = service.NewConfigService()
if err != nil {

View File

@ -1,170 +0,0 @@
package service
import (
"encoding/json"
"fmt"
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/model"
"log"
"time"
"github.com/boltdb/bolt"
"github.com/sirupsen/logrus"
)
type DbService interface {
// 保存鲁班工具配置
SaveLubanConf(conf *model.GenTool) error
// 获取鲁班工具配置
GetLubanConf(key string) *model.GenTool
// 保存SSH连接信息
SaveSSHConf(conf *model.SSHModel) error
//获取终端配置
GetSSHConf(key string) *model.SSHModel
// 保存pb配置
SavePbConf(conf *model.PbConfModel) error
// 获取pb配置
GetPbConf() *model.PbConfModel
}
type DbServiceImpl struct {
}
var dbservice DbService
func NewDbService() DbService {
dbservice = &DbServiceImpl{}
return dbservice
}
func GetDbService() DbService {
return dbservice
}
func (this *DbServiceImpl) save(key string, model interface{}) error {
boltDb = GetBoltDb()
defer boltDb.Close()
if err := boltDb.Update(func(tx *bolt.Tx) error {
b, err2 := json.Marshal(model)
if err2 != nil {
return err
}
c := tx.Bucket([]byte(common.BOLTDB_BUCKETNAME))
if c == nil {
return fmt.Errorf("Bucket %s not found!", common.BOLTDB_BUCKETNAME)
}
return c.Put([]byte(key), b)
}); err != nil {
logrus.Errorf("save err: %v", err)
return err
}
return nil
}
func (this *DbServiceImpl) SaveLubanConf(conf *model.GenTool) error {
return this.save(common.BUCKET_LUBANCONF, conf)
}
func (this *DbServiceImpl) SavePbConf(conf *model.PbConfModel) error {
return this.save(common.BUCKET_PBCONF, conf)
}
func (this *DbServiceImpl) GetLubanConf(key string) *model.GenTool {
boltDb = GetBoltDb()
defer boltDb.Close()
model := &model.GenTool{}
if err = boltDb.View(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte(common.BOLTDB_BUCKETNAME))
if b == nil {
return fmt.Errorf("Bucket %s not found!", common.BOLTDB_BUCKETNAME)
}
val := b.Get([]byte(key))
if err = json.Unmarshal(val, model); err != nil {
logrus.Errorf("get gen conf err:%v", err)
return err
}
return nil
}); err != nil {
logrus.Errorf("get db conf err: %v", err)
return nil
}
return model
}
func (this *DbServiceImpl) SaveSSHConf(conf *model.SSHModel) error {
return this.save(common.BUCKET_SSHCONF, conf)
}
func (this *DbServiceImpl) GetSSHConf(key string) *model.SSHModel {
boltDb = GetBoltDb()
defer boltDb.Close()
model := &model.SSHModel{}
if err = boltDb.View(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte(common.BOLTDB_BUCKETNAME))
if b == nil {
return fmt.Errorf("Bucket %s not found!", common.BOLTDB_BUCKETNAME)
}
val := b.Get([]byte(key))
if err = json.Unmarshal(val, model); err != nil {
logrus.Errorf("get gen conf err:%v", err)
return err
}
return nil
}); err != nil {
logrus.Errorf("get db conf err: %v", err)
return nil
}
return model
}
func (this *DbServiceImpl) GetPbConf() *model.PbConfModel {
boltDb = GetBoltDb()
defer boltDb.Close()
model := &model.PbConfModel{}
if err = boltDb.View(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte(common.BOLTDB_BUCKETNAME))
if b == nil {
return fmt.Errorf("Bucket %s not found!", common.BOLTDB_BUCKETNAME)
}
val := b.Get([]byte(common.BUCKET_PBCONF))
if err = json.Unmarshal(val, model); err != nil {
logrus.Errorf("get gen conf err:%v", err)
return err
}
return nil
}); err != nil {
logrus.Errorf("get db conf err: %v", err)
return nil
}
return model
}
var (
boltDb *bolt.DB
bucket *bolt.Bucket
err error
)
func GetBoltDb() *bolt.DB {
boltDb, err = bolt.Open(common.BOLTDB_NAME, 0600, &bolt.Options{Timeout: 5 * time.Second})
if err != nil {
log.Fatal(err)
}
boltDb.Update(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte(common.BOLTDB_BUCKETNAME))
if b != nil {
bucket = b
} else {
bucket, err = tx.CreateBucket([]byte(common.BOLTDB_BUCKETNAME))
if err != nil {
return fmt.Errorf("create bucket: %s", err)
}
}
return nil
})
return boltDb
}

View File

@ -102,6 +102,7 @@ func (ss *SSHService) getSftp() (*sftp.Client, error) {
if ss.Client == nil {
return nil, errors.New("ssh client is nil")
}
var err error
sftpOne.Do(func() {
if sftpCli, err = sftp.NewClient(ss.Client); err != nil {
return
@ -209,6 +210,7 @@ func (ss *SSHService) ScpCopy(localFilePath, remoteDir string) error {
//批量copy
func (ss *SSHService) BatchScpCoy(cfs []CopyFiles, remoteDir string) error {
var err error
sftpCli, err = ss.getSftp()
if err != nil {
return fmt.Errorf("new sftp client error: %w", err)
@ -285,6 +287,7 @@ func (ss *SSHService) Scp(targetDir, srcFileName string) (int, error) {
//Download
func (ss *SSHService) ScpDownload(localDir, remoteFilePath string) error {
var err error
sftpCli, err = ss.getSftp()
if err != nil {
return fmt.Errorf("new sftp client error: %w", err)
@ -342,6 +345,7 @@ func (ss *SSHService) GetRemoteDir(remoteDir string) (files []File, err error) {
}
func (ss *SSHService) BatchScpDownload(localDir, remoteDir string) error {
var err error
sftpCli, err = ss.getSftp()
if err != nil {
return fmt.Errorf("new sftp client error: %w", err)

View File

@ -4,7 +4,7 @@ import (
"errors"
"fmt"
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/model"
os_storage "go_dreamfactory/cmd/v2/lib/storage"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer"
"os/exec"
@ -36,9 +36,11 @@ func (this *appGen) LazyInit(ptService service.PttService, obs observer.Observer
this.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_GEN, theme.ContentCopyIcon(), nil)
// load
gt := service.GetDbService().GetLubanConf(common.BUCKET_LUBANCONF)
logrus.Debugf("%v", gt)
storage, _ := os_storage.NewOSStorage()
conf, err := storage.LoadConfig()
if err != nil {
return err
}
content := container.NewMax()
content.Objects = []fyne.CanvasObject{}
@ -83,14 +85,14 @@ func (this *appGen) LazyInit(ptService service.PttService, obs observer.Observer
})
genType.PlaceHolder = "生成类型"
if gt != nil {
serverAddr.Text = gt.ServerAddr
projectDir.Text = gt.ProjectDir
workDir.Text = gt.WorkDir
client.Text = gt.Client
genType.Selected = gt.GenType
genTypeText = gt.GenType
tmpDir.Text = gt.TmpDir
if conf.LubanConf != nil {
serverAddr.Text = conf.LubanConf.ServerAddr
projectDir.Text = conf.LubanConf.ProjectDir
workDir.Text = conf.LubanConf.WorkDir
client.Text = conf.LubanConf.Client
genType.Selected = conf.LubanConf.GenType
genTypeText = conf.LubanConf.GenType
tmpDir.Text = conf.LubanConf.TmpDir
}
form := widget.NewForm(
@ -127,7 +129,7 @@ func (this *appGen) LazyInit(ptService service.PttService, obs observer.Observer
}
saveBtn := widget.NewButtonWithIcon("保存配置", theme.DocumentSaveIcon(), func() {
if err := service.GetDbService().SaveLubanConf(&model.GenTool{
lubanconf := &os_storage.LubanConfig{
ServerAddr: serverAddr.Text,
ProjectDir: projectDir.Text,
Client: client.Text,
@ -137,7 +139,9 @@ func (this *appGen) LazyInit(ptService service.PttService, obs observer.Observer
OutputJsonDir: outputJsonDir.Text,
GenType: genTypeText,
TmpDir: tmpDir.Text,
}); err != nil {
}
conf.LubanConf = lubanconf
if err := storage.StoreConfig(conf); err != nil {
logrus.WithField("err", err).Debug("保存配置")
}
logrus.Debug("save luban conf")

View File

@ -4,7 +4,7 @@ import (
"errors"
"fmt"
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/model"
os_storage "go_dreamfactory/cmd/v2/lib/storage"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer"
"go_dreamfactory/utils"
@ -35,8 +35,11 @@ func (this *appPbGen) LazyInit(ptService service.PttService, obs observer.Observ
countLabel := widget.NewLabel("")
//load
pcm := service.GetDbService().GetPbConf()
logrus.Debugf("%v", pcm)
storage, _ := os_storage.NewOSStorage()
conf, err := storage.LoadConfig()
if err != nil {
return err
}
// 打开目录
openFolder := func(entry *widget.Entry) {
@ -78,9 +81,9 @@ func (this *appPbGen) LazyInit(ptService service.PttService, obs observer.Observ
}), outDir)),
)
if pcm != nil {
protoDir.SetText(pcm.ProtoDir)
outDir.SetText(pcm.OutputDir)
if conf.PbConf != nil {
protoDir.SetText(conf.PbConf.ProtoDir)
outDir.SetText(conf.PbConf.OutputDir)
}
//打开资源管理器
@ -157,11 +160,14 @@ func (this *appPbGen) LazyInit(ptService service.PttService, obs observer.Observ
confBtn := &widget.Button{Text: "保存配置", Icon: theme.DocumentSaveIcon()}
confBtn.OnTapped = func() {
if err := service.GetDbService().SavePbConf(&model.PbConfModel{
pbconf := &os_storage.ProtobufConfig{
ProtoDir: protoDir.Text,
OutputDir: outDir.Text,
}); err != nil {
}
conf.PbConf = pbconf
if err := storage.StoreConfig(conf); err != nil {
logrus.WithField("err", err).Debug("保存配置")
return
}
logrus.Debug("save pb conf")
}

View File

@ -3,7 +3,7 @@ package ui
import (
"fmt"
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/model"
os_storage "go_dreamfactory/cmd/v2/lib/storage"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer"
"image/color"
@ -57,8 +57,11 @@ func (app *appTerm) LazyInit(ptService service.PttService, obs observer.Observer
content.Objects = []fyne.CanvasObject{}
//load term conf
sshConf := service.GetDbService().GetSSHConf(common.BUCKET_SSHCONF)
logrus.Debugf("%v", sshConf)
storage, _ := os_storage.NewOSStorage()
conf, err := storage.LoadConfig()
if err != nil {
return err
}
//left-top
localDir := widget.NewEntry()
@ -125,21 +128,21 @@ func (app *appTerm) LazyInit(ptService service.PttService, obs observer.Observer
)
//set input entry
if sshConf != nil {
ip.Text = sshConf.Ip
port.Text = sshConf.Port
userName.Text = sshConf.UserName
password.Text = sshConf.Password
localDir.Text = sshConf.LocalDir
remoteDir.Text = sshConf.RemoteDir
if conf.SyncConf != nil {
ip.Text = conf.SyncConf.Ip
port.Text = conf.SyncConf.Port
userName.Text = conf.SyncConf.UserName
password.Text = conf.SyncConf.Password
localDir.Text = conf.SyncConf.LocalDir
remoteDir.Text = conf.SyncConf.RemoteDir
// //
lubanAddr.Text = sshConf.ServerIp
workDir.Text = sshConf.WorkDir
lubanCli.Text = sshConf.LubanCli
dataDir.Text = sshConf.DataDir
jsonDir.Text = sshConf.JsonDir
lubanAddr.Text = conf.SyncConf.ServerIp
workDir.Text = conf.SyncConf.WorkDir
lubanCli.Text = conf.SyncConf.LubanCli
dataDir.Text = conf.SyncConf.DataDir
jsonDir.Text = conf.SyncConf.JsonDir
} else {
sshConf = &model.SSHModel{
conf.SyncConf = &os_storage.SyncConfig{
Ip: "10.0.0.9",
UserName: "root",
Password: "Legu.cc()123",
@ -160,19 +163,22 @@ func (app *appTerm) LazyInit(ptService service.PttService, obs observer.Observer
// save func
saveFunc := func() {
sshConf.Ip = ip.Text
sshConf.UserName = userName.Text
sshConf.Password = password.Text
sshConf.Port = port.Text
sshConf.LocalDir = localDir.Text
sshConf.RemoteDir = remoteDir.Text
sshConf.ServerIp = lubanAddr.Text
sshConf.WorkDir = workDir.Text
sshConf.LubanCli = lubanCli.Text
sshConf.DataDir = dataDir.Text
sshConf.JsonDir = jsonDir.Text
if err := service.GetDbService().SaveSSHConf(sshConf); err != nil {
logrus.WithField("err", err).Debug("保存配置")
syncConf := &os_storage.SyncConfig{
Ip: ip.Text,
UserName: userName.Text,
Password: password.Text,
Port: port.Text,
LocalDir: localDir.Text,
RemoteDir: remoteDir.Text,
ServerIp: lubanAddr.Text,
WorkDir: workDir.Text,
LubanCli: lubanCli.Text,
DataDir: dataDir.Text,
JsonDir: jsonDir.Text,
}
conf.SyncConf = syncConf
if err := storage.StoreConfig(conf); err != nil {
logrus.Error(err)
}
}
saveBtn1 := widget.NewButtonWithIcon("保存配置", theme.DocumentSaveIcon(), saveFunc)
@ -598,22 +604,32 @@ func (a *appTerm) createDownloadWindow() fyne.Window {
// 进度条
downloadProgress := widget.NewProgressBarInfinite()
var sshConf *model.SSHModel
var (
storage os_storage.Storage
conf *os_storage.Config
err error
)
defer func() {
downloadProgress.Hide()
//加载配置
sshConf = service.GetDbService().GetSSHConf(common.BUCKET_SSHCONF)
if sshConf != nil {
if sshConf.LogDir == "" {
storage, _ = os_storage.NewOSStorage()
conf, err = storage.LoadConfig()
if err != nil {
return
}
// sshConf = service.GetDbService().GetSSHConf(common.BUCKET_SSHCONF)
if conf.SyncConf != nil {
if conf.SyncConf.LogDir == "" {
remoteLogDirEntry.Text = "/home/liwei/go_dreamfactory/bin/log/"
} else {
remoteLogDirEntry.Text = sshConf.LogDir
remoteLogDirEntry.Text = conf.SyncConf.LogDir
}
saveDirEntry.Text = sshConf.SaveDir
editorEntry.Text = sshConf.Editor
saveDirEntry.Text = conf.SyncConf.SaveDir
editorEntry.Text = conf.SyncConf.Editor
} else {
sshConf = &model.SSHModel{}
conf.SyncConf = &os_storage.SyncConfig{}
}
remoteLogDirEntry.Refresh()
@ -641,11 +657,11 @@ func (a *appTerm) createDownloadWindow() fyne.Window {
EditorBtn := widget.NewButtonWithIcon("打开编辑器", theme.FolderIcon(), nil)
saveConfBtn := widget.NewButtonWithIcon("保存配置", theme.DocumentSaveIcon(), func() {
// 保存配置
sshConf.LogDir = remoteLogDirEntry.Text
sshConf.SaveDir = saveDirEntry.Text
sshConf.Editor = editorEntry.Text
if err := service.GetDbService().SaveSSHConf(sshConf); err != nil {
logrus.WithField("err", err).Debug("保存日志配置")
conf.SyncConf.LogDir = remoteLogDirEntry.Text
conf.SyncConf.SaveDir = saveDirEntry.Text
conf.SyncConf.Editor = editorEntry.Text
if err := storage.StoreConfig(conf); err != nil {
logrus.Error(err)
}
})