update gui
This commit is contained in:
parent
749faa1b65
commit
3b50014bc4
@ -23,5 +23,6 @@ const (
|
|||||||
const (
|
const (
|
||||||
BOLTDB_NAME = "my.db"
|
BOLTDB_NAME = "my.db"
|
||||||
BOLTDB_BUCKETNAME = "robotBucket"
|
BOLTDB_BUCKETNAME = "robotBucket"
|
||||||
BUCKET_CONF = "gen"
|
BUCKET_LUBANCONF = "lubanConf"
|
||||||
|
BUCKET_SSHCONF = "sshConf"
|
||||||
)
|
)
|
||||||
|
@ -92,6 +92,7 @@ const (
|
|||||||
TOOLBAR_GEN = "生成代码"
|
TOOLBAR_GEN = "生成代码"
|
||||||
TOOLBAR_SEC = "密码器"
|
TOOLBAR_SEC = "密码器"
|
||||||
TOOLBAR_WEL = "欢迎"
|
TOOLBAR_WEL = "欢迎"
|
||||||
|
TOOLBAR_TERM = "终端"
|
||||||
|
|
||||||
//monitor
|
//monitor
|
||||||
APP_MONITOR_TITLE_ID = "编号"
|
APP_MONITOR_TITLE_ID = "编号"
|
||||||
|
@ -17,8 +17,8 @@ func NewItemModelList() *ItemModelList {
|
|||||||
|
|
||||||
func (s *ItemModelList) AsInterfaceArray() []interface{} {
|
func (s *ItemModelList) AsInterfaceArray() []interface{} {
|
||||||
rs := make([]interface{}, len(s.DataList))
|
rs := make([]interface{}, len(s.DataList))
|
||||||
for i := range s.DataList {
|
for i, v := range s.DataList {
|
||||||
rs[i] = s.DataList[i]
|
rs[i] = v
|
||||||
}
|
}
|
||||||
return rs
|
return rs
|
||||||
}
|
}
|
||||||
|
7
cmd/v2/model/ssh.go
Normal file
7
cmd/v2/model/ssh.go
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
type SSHModel struct {
|
||||||
|
Ip string
|
||||||
|
UserName string
|
||||||
|
Password string
|
||||||
|
}
|
@ -6,7 +6,6 @@ import (
|
|||||||
"go_dreamfactory/cmd/v2/lib/common"
|
"go_dreamfactory/cmd/v2/lib/common"
|
||||||
"go_dreamfactory/cmd/v2/model"
|
"go_dreamfactory/cmd/v2/model"
|
||||||
"log"
|
"log"
|
||||||
"sync"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/boltdb/bolt"
|
"github.com/boltdb/bolt"
|
||||||
@ -14,9 +13,12 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type DbService interface {
|
type DbService interface {
|
||||||
Save(conf *model.GenTool) error
|
// 保存鲁班工具配置
|
||||||
Update() error
|
SaveLubanConf(conf *model.GenTool) error
|
||||||
Get(key string) *model.GenTool
|
// 获取鲁班工具配置
|
||||||
|
GetLubanConf(key string) *model.GenTool
|
||||||
|
// 保存SSH连接信息
|
||||||
|
SaveSSHConf(conf *model.SSHModel) error
|
||||||
}
|
}
|
||||||
|
|
||||||
type DbServiceImpl struct {
|
type DbServiceImpl struct {
|
||||||
@ -33,11 +35,11 @@ func GetDbService() DbService {
|
|||||||
return dbservice
|
return dbservice
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *DbServiceImpl) Save(conf *model.GenTool) error {
|
func (this *DbServiceImpl) save(key string, model interface{}) error {
|
||||||
boltDb = GetBoltDb()
|
boltDb = GetBoltDb()
|
||||||
defer boltDb.Close()
|
defer boltDb.Close()
|
||||||
if err := boltDb.Update(func(tx *bolt.Tx) error {
|
if err := boltDb.Update(func(tx *bolt.Tx) error {
|
||||||
b, err2 := json.Marshal(conf)
|
b, err2 := json.Marshal(model)
|
||||||
if err2 != nil {
|
if err2 != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -45,7 +47,7 @@ func (this *DbServiceImpl) Save(conf *model.GenTool) error {
|
|||||||
if c == nil {
|
if c == nil {
|
||||||
return fmt.Errorf("Bucket %s not found!", common.BOLTDB_BUCKETNAME)
|
return fmt.Errorf("Bucket %s not found!", common.BOLTDB_BUCKETNAME)
|
||||||
}
|
}
|
||||||
return c.Put([]byte(common.BUCKET_CONF), b)
|
return c.Put([]byte(key), b)
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
logrus.Errorf("save err: %v", err)
|
logrus.Errorf("save err: %v", err)
|
||||||
return err
|
return err
|
||||||
@ -53,42 +55,66 @@ func (this *DbServiceImpl) Save(conf *model.GenTool) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *DbServiceImpl) Get(key string) *model.GenTool {
|
func (this *DbServiceImpl) get(key string, model interface{}) (b *bolt.Bucket, err error) {
|
||||||
boltDb = GetBoltDb()
|
boltDb = GetBoltDb()
|
||||||
defer boltDb.Close()
|
if err = boltDb.View(func(tx *bolt.Tx) error {
|
||||||
conf := &model.GenTool{}
|
b = tx.Bucket([]byte(common.BOLTDB_BUCKETNAME))
|
||||||
if err := boltDb.View(func(tx *bolt.Tx) error {
|
if b == nil {
|
||||||
c := tx.Bucket([]byte(common.BOLTDB_BUCKETNAME))
|
|
||||||
if c == nil {
|
|
||||||
return fmt.Errorf("Bucket %s not found!", common.BOLTDB_BUCKETNAME)
|
return fmt.Errorf("Bucket %s not found!", common.BOLTDB_BUCKETNAME)
|
||||||
}
|
}
|
||||||
|
|
||||||
val := c.Get([]byte(key))
|
|
||||||
if err := json.Unmarshal(val, conf); err != nil {
|
|
||||||
logrus.Errorf("get gen conf err:%v", err)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
logrus.Errorf("get db conf err: %v", err)
|
logrus.Errorf("get db conf err: %v", err)
|
||||||
return nil
|
return nil, err
|
||||||
}
|
}
|
||||||
return conf
|
return b, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *DbServiceImpl) Update() error {
|
func (this *DbServiceImpl) SaveLubanConf(conf *model.GenTool) error {
|
||||||
return nil
|
return this.save(common.BUCKET_LUBANCONF, conf)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *DbServiceImpl) GetLubanConf(key string) *model.GenTool {
|
||||||
|
defer boltDb.Close()
|
||||||
|
model := &model.GenTool{}
|
||||||
|
if b, err := this.get(key, model); err != nil {
|
||||||
|
return nil
|
||||||
|
} else {
|
||||||
|
val := b.Get([]byte(key))
|
||||||
|
if err = json.Unmarshal(val, model); err != nil {
|
||||||
|
logrus.Errorf("get gen 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 {
|
||||||
|
defer boltDb.Close()
|
||||||
|
model := &model.SSHModel{}
|
||||||
|
if b, err := this.get(key, model); err != nil {
|
||||||
|
return nil
|
||||||
|
} else {
|
||||||
|
val := b.Get([]byte(key))
|
||||||
|
if err = json.Unmarshal(val, model); err != nil {
|
||||||
|
logrus.Errorf("get gen conf err:%v", err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return model
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
boltDb *bolt.DB
|
boltDb *bolt.DB
|
||||||
bucket *bolt.Bucket
|
bucket *bolt.Bucket
|
||||||
once sync.Once
|
|
||||||
err error
|
err error
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetBoltDb() *bolt.DB {
|
func GetBoltDb() *bolt.DB {
|
||||||
// once.Do(func() {
|
|
||||||
boltDb, err = bolt.Open(common.BOLTDB_NAME, 0600, &bolt.Options{Timeout: 5 * time.Second})
|
boltDb, err = bolt.Open(common.BOLTDB_NAME, 0600, &bolt.Options{Timeout: 5 * time.Second})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@ -106,6 +132,5 @@ func GetBoltDb() *bolt.DB {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
// })
|
|
||||||
return boltDb
|
return boltDb
|
||||||
}
|
}
|
||||||
|
@ -61,6 +61,7 @@ func (p *PttServiceImpl) SendToClient(mainType, subType string, rsp proto.Messag
|
|||||||
now := time.Now()
|
now := time.Now()
|
||||||
if err = p.connService.SendMsg(msg, rsp); err != nil {
|
if err = p.connService.SendMsg(msg, rsp); err != nil {
|
||||||
logrus.WithField("err", err).Error(err)
|
logrus.WithField("err", err).Error(err)
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
p.obs.Notify(observer.EVENT_RST, now)
|
p.obs.Notify(observer.EVENT_RST, now)
|
||||||
return
|
return
|
||||||
|
98
cmd/v2/service/sshService.go
Normal file
98
cmd/v2/service/sshService.go
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"net"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"golang.org/x/crypto/ssh"
|
||||||
|
)
|
||||||
|
|
||||||
|
type SSHService struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewSSHService() *SSHService {
|
||||||
|
return &SSHService{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ss *SSHService) Connect(user, password, host, key string, port int, cipherList []string) (*ssh.Session, error) {
|
||||||
|
var (
|
||||||
|
auth []ssh.AuthMethod //认证方式
|
||||||
|
addr string
|
||||||
|
clientConfig *ssh.ClientConfig
|
||||||
|
client *ssh.Client
|
||||||
|
config ssh.Config
|
||||||
|
session *ssh.Session
|
||||||
|
err error
|
||||||
|
)
|
||||||
|
auth = make([]ssh.AuthMethod, 0)
|
||||||
|
if key == "" {
|
||||||
|
// 密码认证
|
||||||
|
auth = append(auth, ssh.Password(password))
|
||||||
|
} else {
|
||||||
|
// 秘钥认证
|
||||||
|
pemBytes, err := ioutil.ReadFile(key)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var signer ssh.Signer
|
||||||
|
if password == "" {
|
||||||
|
signer, err = ssh.ParsePrivateKey(pemBytes)
|
||||||
|
} else {
|
||||||
|
signer, err = ssh.ParsePrivateKeyWithPassphrase(pemBytes, []byte(password))
|
||||||
|
}
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
// 加载秘钥
|
||||||
|
auth = append(auth, ssh.PublicKeys(signer))
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置ssh 的配置参数
|
||||||
|
if len(cipherList) == 0 {
|
||||||
|
config = ssh.Config{
|
||||||
|
// 连接所允许的加密算法, go的SSH包允许的算法
|
||||||
|
Ciphers: []string{"aes128-ctr", "aes192-ctr", "aes256-ctr", "aes128-gcm@openssh.com", "arcfour256", "arcfour128", "aes128-cbc", "3des-cbc", "aes192-cbc", "aes256-cbc"},
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
config = ssh.Config{
|
||||||
|
Ciphers: cipherList,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
clientConfig = &ssh.ClientConfig{
|
||||||
|
User: user,
|
||||||
|
Auth: auth,
|
||||||
|
Timeout: time.Second * 30,
|
||||||
|
Config: config,
|
||||||
|
// 默认密钥不受信任时,Go 的 ssh 包会在 HostKeyCallback 里把连接干掉(1.8 之后加的应该)。但是我们使用用户名密码连接的时候,这个太正常了,所以让他 return nil 就好了
|
||||||
|
HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error {
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
}
|
||||||
|
addr = fmt.Sprintf("%s:%d", host, port)
|
||||||
|
|
||||||
|
if client, err = ssh.Dial("tcp", addr, clientConfig); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if session, err = client.NewSession(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 使用 session.Shell() 模拟终端时,所建立的终端参数
|
||||||
|
modes := ssh.TerminalModes{
|
||||||
|
ssh.ECHO: 0, //disable echoing
|
||||||
|
ssh.TTY_OP_ISPEED: 14400, //input speed=14.4kbaud
|
||||||
|
ssh.TTY_OP_OSPEED: 14400,
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := session.RequestPty("xterm", 80, 40, modes); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return session, nil
|
||||||
|
}
|
53
cmd/v2/service/ssh_test.go
Normal file
53
cmd/v2/service/ssh_test.go
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
username = "root"
|
||||||
|
password = "Legu.cc()123"
|
||||||
|
ip = "10.0.0.9"
|
||||||
|
port = 22
|
||||||
|
cmd = "ls"
|
||||||
|
cmds = "cd /home/liwei/go_dreamfactory&&git pull&&exit" //exit结尾,否则程序不会退出
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSSHConnect(t *testing.T) {
|
||||||
|
ciphers := []string{}
|
||||||
|
ssh := &SSHService{}
|
||||||
|
|
||||||
|
session, err := ssh.Connect(username, password, ip, "", port, ciphers)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
defer session.Close()
|
||||||
|
|
||||||
|
cmdlist := strings.Split(cmds, "&&")
|
||||||
|
stdinBuf, err := session.StdinPipe()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var stdoutBuf, errBuf bytes.Buffer
|
||||||
|
session.Stdout = &stdoutBuf
|
||||||
|
session.Stderr = &errBuf
|
||||||
|
|
||||||
|
if err := session.Shell(); err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, c := range cmdlist {
|
||||||
|
c = c + "\n"
|
||||||
|
stdinBuf.Write([]byte(c))
|
||||||
|
}
|
||||||
|
|
||||||
|
session.Wait()
|
||||||
|
t.Logf(stdoutBuf.String() + errBuf.String())
|
||||||
|
// if err := session.Run(cmd); err != nil {
|
||||||
|
// t.Logf("run err: %v", err)
|
||||||
|
// }
|
||||||
|
// t.Logf("res: %v", session.Stdout)
|
||||||
|
}
|
@ -24,6 +24,7 @@ var (
|
|||||||
&appWelcome{},
|
&appWelcome{},
|
||||||
&appGen{},
|
&appGen{},
|
||||||
&appLock{},
|
&appLock{},
|
||||||
|
&appTerm{},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -291,6 +291,19 @@ var (
|
|||||||
Req: &pb.TaskListReq{},
|
Req: &pb.TaskListReq{},
|
||||||
Rsp: &pb.TaskListResp{},
|
Rsp: &pb.TaskListResp{},
|
||||||
Enabled: true,
|
Enabled: true,
|
||||||
|
Print: func(rsp proto.Message) string {
|
||||||
|
in := rsp.(*pb.UserMessage)
|
||||||
|
out := &pb.TaskListResp{}
|
||||||
|
if !comm.ProtoUnmarshal(in, out) {
|
||||||
|
return errors.New("unmarshal err").Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
var formatStr strings.Builder
|
||||||
|
for i, v := range out.List {
|
||||||
|
formatStr.WriteString(fmt.Sprintf("%d- %v\n", (i + 1), v))
|
||||||
|
}
|
||||||
|
return formatStr.String()
|
||||||
|
},
|
||||||
},
|
},
|
||||||
ff(comm.ModuleTask, task.TaskSubTypeActiveList): {
|
ff(comm.ModuleTask, task.TaskSubTypeActiveList): {
|
||||||
NavLabel: "活跃度列表",
|
NavLabel: "活跃度列表",
|
||||||
@ -321,8 +334,6 @@ var (
|
|||||||
Desc: "英雄列表",
|
Desc: "英雄列表",
|
||||||
MainType: string(comm.ModuleHero),
|
MainType: string(comm.ModuleHero),
|
||||||
SubType: hero.HeroSubTypeList,
|
SubType: hero.HeroSubTypeList,
|
||||||
Req: &pb.HeroListReq{},
|
|
||||||
Rsp: &pb.HeroListResp{},
|
|
||||||
Print: func(rsp proto.Message) string {
|
Print: func(rsp proto.Message) string {
|
||||||
in := rsp.(*pb.UserMessage)
|
in := rsp.(*pb.UserMessage)
|
||||||
out := &pb.HeroListResp{}
|
out := &pb.HeroListResp{}
|
||||||
|
@ -30,7 +30,7 @@ func (this *appGen) LazyInit(obs observer.Observer) error {
|
|||||||
this.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_GEN, theme.ContentCopyIcon(), nil)
|
this.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_GEN, theme.ContentCopyIcon(), nil)
|
||||||
|
|
||||||
// load
|
// load
|
||||||
gt := service.GetDbService().Get(common.BUCKET_CONF)
|
gt := service.GetDbService().GetLubanConf(common.BUCKET_LUBANCONF)
|
||||||
logrus.Debugf("%v", gt)
|
logrus.Debugf("%v", gt)
|
||||||
|
|
||||||
content := container.NewMax()
|
content := container.NewMax()
|
||||||
@ -40,29 +40,29 @@ func (this *appGen) LazyInit(obs observer.Observer) error {
|
|||||||
serverAddr.PlaceHolder = "服务器地址 例如: 10.0.1.11"
|
serverAddr.PlaceHolder = "服务器地址 例如: 10.0.1.11"
|
||||||
|
|
||||||
projectDir := widget.NewEntry()
|
projectDir := widget.NewEntry()
|
||||||
projectDir.PlaceHolder = "项目目录 例如: E:\\projects\\workspace\\go_dreamfactory"
|
projectDir.PlaceHolder = "项目目录 例如: E:\\projects\\workspace\\go_dreamfactory\\"
|
||||||
|
|
||||||
workDir := widget.NewEntry()
|
workDir := widget.NewEntry()
|
||||||
workDir.PlaceHolder = "LuBan目录 例如: E:\\svn\\dreamworks\\client\\dreamworks\\ExcelFile"
|
workDir.PlaceHolder = "LuBan目录 例如: E:\\svn\\dreamworks\\client\\dreamworks\\ExcelFile\\"
|
||||||
|
|
||||||
// client
|
// client
|
||||||
client := widget.NewEntry()
|
client := widget.NewEntry()
|
||||||
client.PlaceHolder = "配置Luban Client.exe路径 例如: \\Luban.Client\\Luban.Client.exe"
|
client.PlaceHolder = "配置Luban Client.exe路径 例如: Luban.Client\\Luban.Client.exe"
|
||||||
|
|
||||||
//define
|
//define
|
||||||
define := widget.NewEntry()
|
define := widget.NewEntry()
|
||||||
define.PlaceHolder = "定义文件"
|
define.PlaceHolder = "定义文件"
|
||||||
define.Text = "\\Defines\\__root__.xml"
|
define.Text = "Defines\\__root__.xml"
|
||||||
|
|
||||||
// output
|
// output
|
||||||
outputCodeDir := widget.NewEntry()
|
outputCodeDir := widget.NewEntry()
|
||||||
outputCodeDir.Text = "\\sys\\configure\\structs"
|
outputCodeDir.Text = "sys\\configure\\structs"
|
||||||
outputJsonDir := widget.NewEntry()
|
outputJsonDir := widget.NewEntry()
|
||||||
outputJsonDir.Text = "\\bin\\json"
|
outputJsonDir.Text = "bin\\json"
|
||||||
|
|
||||||
//input
|
//input
|
||||||
inputDir := widget.NewEntry()
|
inputDir := widget.NewEntry()
|
||||||
inputDir.Text = "\\Datas"
|
inputDir.Text = "Datas"
|
||||||
|
|
||||||
//genType
|
//genType
|
||||||
var genTypeText string
|
var genTypeText string
|
||||||
@ -75,7 +75,7 @@ func (this *appGen) LazyInit(obs observer.Observer) error {
|
|||||||
serverAddr.Text = gt.ServerAddr
|
serverAddr.Text = gt.ServerAddr
|
||||||
projectDir.Text = gt.ProjectDir //"E:\\projects\\workspace\\go_dreamfactory"
|
projectDir.Text = gt.ProjectDir //"E:\\projects\\workspace\\go_dreamfactory"
|
||||||
workDir.Text = gt.WorkDir // "E:\\svn\\dreamworks\\client\\dreamworks\\ExcelFile"
|
workDir.Text = gt.WorkDir // "E:\\svn\\dreamworks\\client\\dreamworks\\ExcelFile"
|
||||||
client.Text = gt.Client //"\\Luban.Client\\Luban.Client.exe"
|
client.Text = gt.Client //"Luban.Client\\Luban.Client.exe"
|
||||||
genType.Selected = gt.GenType
|
genType.Selected = gt.GenType
|
||||||
genTypeText = gt.GenType
|
genTypeText = gt.GenType
|
||||||
}
|
}
|
||||||
@ -107,7 +107,7 @@ func (this *appGen) LazyInit(obs observer.Observer) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
saveBtn := widget.NewButtonWithIcon("保存配置", theme.DocumentSaveIcon(), func() {
|
saveBtn := widget.NewButtonWithIcon("保存配置", theme.DocumentSaveIcon(), func() {
|
||||||
if err := service.GetDbService().Save(&model.GenTool{
|
if err := service.GetDbService().SaveLubanConf(&model.GenTool{
|
||||||
ServerAddr: serverAddr.Text,
|
ServerAddr: serverAddr.Text,
|
||||||
ProjectDir: projectDir.Text,
|
ProjectDir: projectDir.Text,
|
||||||
Client: client.Text,
|
Client: client.Text,
|
||||||
@ -139,12 +139,12 @@ func (this *appGen) LazyInit(obs observer.Observer) error {
|
|||||||
commandStr := `%s -h %s -j cfg -- -d %s --input_data_dir %s --output_code_dir %s --output_data_dir %s --gen_types %s --go:bright_module_name bright -s server`
|
commandStr := `%s -h %s -j cfg -- -d %s --input_data_dir %s --output_code_dir %s --output_data_dir %s --gen_types %s --go:bright_module_name bright -s server`
|
||||||
|
|
||||||
arg := fmt.Sprintf(commandStr,
|
arg := fmt.Sprintf(commandStr,
|
||||||
fmt.Sprintf("%s\\%s", workDir.Text, client.Text),
|
fmt.Sprintf("%s%s", workDir.Text, client.Text),
|
||||||
serverAddr.Text,
|
serverAddr.Text,
|
||||||
fmt.Sprintf("%s\\%s", workDir.Text, define.Text),
|
fmt.Sprintf("%s%s", workDir.Text, define.Text),
|
||||||
fmt.Sprintf("%s\\%s", workDir.Text, inputDir.Text),
|
fmt.Sprintf("%s%s", workDir.Text, inputDir.Text),
|
||||||
fmt.Sprintf("%s\\%s", projectDir.Text, outputCodeDir.Text),
|
fmt.Sprintf("%s%s", projectDir.Text, outputCodeDir.Text),
|
||||||
fmt.Sprintf("%s\\%s", projectDir.Text, outputJsonDir.Text),
|
fmt.Sprintf("%s%s", projectDir.Text, outputJsonDir.Text),
|
||||||
getType(),
|
getType(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
76
cmd/v2/ui/tool_ssh.go
Normal file
76
cmd/v2/ui/tool_ssh.go
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
package ui
|
||||||
|
|
||||||
|
import (
|
||||||
|
"go_dreamfactory/cmd/v2/lib/common"
|
||||||
|
"go_dreamfactory/cmd/v2/service/observer"
|
||||||
|
|
||||||
|
"fyne.io/fyne/v2"
|
||||||
|
"fyne.io/fyne/v2/container"
|
||||||
|
"fyne.io/fyne/v2/theme"
|
||||||
|
"fyne.io/fyne/v2/widget"
|
||||||
|
"golang.org/x/crypto/ssh"
|
||||||
|
"golang.org/x/crypto/ssh/terminal"
|
||||||
|
)
|
||||||
|
|
||||||
|
type appTerm struct {
|
||||||
|
appAdapter
|
||||||
|
|
||||||
|
obs observer.Observer
|
||||||
|
}
|
||||||
|
|
||||||
|
type termResizer struct {
|
||||||
|
widget.Icon
|
||||||
|
|
||||||
|
term *terminal.Terminal
|
||||||
|
debug bool
|
||||||
|
sess *ssh.Session
|
||||||
|
win fyne.Window
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *appTerm) LazyInit(obs observer.Observer) error {
|
||||||
|
this.obs = obs
|
||||||
|
|
||||||
|
this.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_TERM, theme.ContentCopyIcon(), nil)
|
||||||
|
content := container.NewMax()
|
||||||
|
content.Objects = []fyne.CanvasObject{}
|
||||||
|
|
||||||
|
//cmd input
|
||||||
|
multiEntry := widget.NewMultiLineEntry()
|
||||||
|
multiEntry.PlaceHolder = "命令输入,使用;分隔"
|
||||||
|
|
||||||
|
//config
|
||||||
|
ip := widget.NewEntry()
|
||||||
|
userName := widget.NewEntry()
|
||||||
|
password := widget.NewPasswordEntry()
|
||||||
|
|
||||||
|
configForm := widget.NewForm(
|
||||||
|
&widget.FormItem{Text: "IP:", Widget: ip},
|
||||||
|
&widget.FormItem{Text: "用户名:", Widget: userName},
|
||||||
|
&widget.FormItem{Text: "密码:", Widget: password},
|
||||||
|
)
|
||||||
|
saveBtn := widget.NewButtonWithIcon("保存配置", theme.DocumentSaveIcon(), func() {
|
||||||
|
|
||||||
|
})
|
||||||
|
connBtn := widget.NewButtonWithIcon("连接", theme.ConfirmIcon(), func() {
|
||||||
|
|
||||||
|
})
|
||||||
|
btns := container.NewGridWithColumns(2, saveBtn, connBtn)
|
||||||
|
|
||||||
|
//term
|
||||||
|
t := &termResizer{win: toolWin.w}
|
||||||
|
t.ExtendBaseWidget(t)
|
||||||
|
|
||||||
|
split := container.NewVSplit(container.NewGridWithColumns(2,
|
||||||
|
multiEntry,
|
||||||
|
container.NewBorder(configForm, btns, widget.NewSeparator(), nil)), t)
|
||||||
|
split.Offset = 0.3
|
||||||
|
content.Objects = append(content.Objects, split)
|
||||||
|
|
||||||
|
this.tabItem.Content = content
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *appTerm) GetAppName() string {
|
||||||
|
return common.TOOLBAR_TERM
|
||||||
|
}
|
@ -40,6 +40,10 @@ func NewToolWindow(ui *UIImpl) ToolWindow {
|
|||||||
openApp1(common.TOOLBAR_SEC)
|
openApp1(common.TOOLBAR_SEC)
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
widget.NewToolbarAction(theme.ContentUndoIcon(), func() {
|
||||||
|
openApp1(common.TOOLBAR_TERM)
|
||||||
|
}),
|
||||||
|
|
||||||
widget.NewToolbarSpacer(),
|
widget.NewToolbarSpacer(),
|
||||||
widget.NewToolbarAction(theme.HelpIcon(), func() {
|
widget.NewToolbarAction(theme.HelpIcon(), func() {
|
||||||
showAbout()
|
showAbout()
|
||||||
|
@ -122,6 +122,7 @@ func (this *toyUserInfo) dataListener() {
|
|||||||
rsp := &pb.UserModifynameResp{}
|
rsp := &pb.UserModifynameResp{}
|
||||||
if !comm.ProtoUnmarshal(data, rsp) {
|
if !comm.ProtoUnmarshal(data, rsp) {
|
||||||
logrus.Error("unmarshal err")
|
logrus.Error("unmarshal err")
|
||||||
|
return
|
||||||
}
|
}
|
||||||
// updatename
|
// updatename
|
||||||
this.setProp(2, common.USERINFO_NAME, rsp.Name)
|
this.setProp(2, common.USERINFO_NAME, rsp.Name)
|
||||||
@ -162,6 +163,7 @@ func (this *toyUserInfo) dataListener() {
|
|||||||
rsp := &pb.UserResChangePush{}
|
rsp := &pb.UserResChangePush{}
|
||||||
if !comm.ProtoUnmarshal(data.Msg, rsp) {
|
if !comm.ProtoUnmarshal(data.Msg, rsp) {
|
||||||
logrus.Error("unmarshal err")
|
logrus.Error("unmarshal err")
|
||||||
|
return
|
||||||
}
|
}
|
||||||
this.setProp(5, common.USERINFO_GOLD, rsp.Gold)
|
this.setProp(5, common.USERINFO_GOLD, rsp.Gold)
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,6 @@ func (this *HeroListView) CreateView(t *model.TestCase) fyne.CanvasObject {
|
|||||||
this.subWindows.itemListData.DataList = append(this.subWindows.itemListData.DataList, fm)
|
this.subWindows.itemListData.DataList = append(this.subWindows.itemListData.DataList, fm)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.subWindows.reloadListData()
|
|
||||||
|
|
||||||
split := container.NewHSplit(this.subWindows.dataListWidget, container.NewVBox(starBtn, lvBtn))
|
split := container.NewHSplit(this.subWindows.dataListWidget, container.NewVBox(starBtn, lvBtn))
|
||||||
split.Offset = 1
|
split.Offset = 1
|
||||||
@ -118,7 +117,8 @@ func (this *HeroListView) dataListener() {
|
|||||||
|
|
||||||
rsp := &pb.HeroListResp{}
|
rsp := &pb.HeroListResp{}
|
||||||
if !comm.ProtoUnmarshal(data, rsp) {
|
if !comm.ProtoUnmarshal(data, rsp) {
|
||||||
logrus.Error("unmarshal err")
|
logrus.Error("hero_list unmarshal err")
|
||||||
|
return
|
||||||
}
|
}
|
||||||
this.heroList = rsp.List
|
this.heroList = rsp.List
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
"go_dreamfactory/comm"
|
"go_dreamfactory/comm"
|
||||||
"go_dreamfactory/modules/task"
|
"go_dreamfactory/modules/task"
|
||||||
"go_dreamfactory/pb"
|
"go_dreamfactory/pb"
|
||||||
|
"time"
|
||||||
|
|
||||||
"fyne.io/fyne/v2"
|
"fyne.io/fyne/v2"
|
||||||
"fyne.io/fyne/v2/container"
|
"fyne.io/fyne/v2/container"
|
||||||
@ -71,7 +72,9 @@ func (this *TaskListView) CreateView(t *model.TestCase) fyne.CanvasObject {
|
|||||||
func (this *TaskListView) dataListener() {
|
func (this *TaskListView) dataListener() {
|
||||||
this.obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{
|
this.obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{
|
||||||
OnNotify: func(d interface{}, args ...interface{}) {
|
OnNotify: func(d interface{}, args ...interface{}) {
|
||||||
|
time.Sleep(time.Millisecond * 20)
|
||||||
data := d.(*pb.UserMessage)
|
data := d.(*pb.UserMessage)
|
||||||
|
logrus.Debugf("%s %s ...", data.MainType, data.SubType)
|
||||||
if !(data.MainType == string(comm.ModuleTask) &&
|
if !(data.MainType == string(comm.ModuleTask) &&
|
||||||
data.SubType == task.TaskSubTypeList) {
|
data.SubType == task.TaskSubTypeList) {
|
||||||
return
|
return
|
||||||
@ -79,7 +82,8 @@ func (this *TaskListView) dataListener() {
|
|||||||
|
|
||||||
rsp := &pb.TaskListResp{}
|
rsp := &pb.TaskListResp{}
|
||||||
if !comm.ProtoUnmarshal(data, rsp) {
|
if !comm.ProtoUnmarshal(data, rsp) {
|
||||||
logrus.Error("unmarshal err")
|
logrus.Error("task_list unmarshal err")
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
this.itemListData = model.NewItemModelList()
|
this.itemListData = model.NewItemModelList()
|
||||||
|
5
go.mod
5
go.mod
@ -41,9 +41,12 @@ require (
|
|||||||
gopkg.in/yaml.v2 v2.4.0
|
gopkg.in/yaml.v2 v2.4.0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
require golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
|
||||||
|
|
||||||
require (
|
require (
|
||||||
fyne.io/systray v1.10.1-0.20220621085403-9a2652634e93 // indirect
|
fyne.io/systray v1.10.1-0.20220621085403-9a2652634e93 // indirect
|
||||||
github.com/PuerkitoBio/goquery v1.8.0 // indirect
|
github.com/PuerkitoBio/goquery v1.8.0 // indirect
|
||||||
|
github.com/agiledragon/gomonkey/v2 v2.8.0
|
||||||
github.com/akutz/memconn v0.1.0 // indirect
|
github.com/akutz/memconn v0.1.0 // indirect
|
||||||
github.com/andybalholm/cascadia v1.3.1 // indirect
|
github.com/andybalholm/cascadia v1.3.1 // indirect
|
||||||
github.com/apache/thrift v0.16.0 // indirect
|
github.com/apache/thrift v0.16.0 // indirect
|
||||||
@ -163,7 +166,7 @@ require (
|
|||||||
go.opentelemetry.io/otel/trace v1.6.3 // indirect
|
go.opentelemetry.io/otel/trace v1.6.3 // indirect
|
||||||
go.uber.org/atomic v1.7.0 // indirect
|
go.uber.org/atomic v1.7.0 // indirect
|
||||||
go.uber.org/zap v1.17.0 // indirect
|
go.uber.org/zap v1.17.0 // indirect
|
||||||
golang.org/x/crypto v0.0.0-20220408190544-5352b0902921 // indirect
|
golang.org/x/crypto v0.0.0-20220824171710-5757bc0c5503 // indirect
|
||||||
golang.org/x/image v0.0.0-20220601225756-64ec528b34cd // indirect
|
golang.org/x/image v0.0.0-20220601225756-64ec528b34cd // indirect
|
||||||
golang.org/x/mobile v0.0.0-20211207041440-4e6c2922fdee // indirect
|
golang.org/x/mobile v0.0.0-20211207041440-4e6c2922fdee // indirect
|
||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
|
||||||
|
5
go.sum
5
go.sum
@ -60,6 +60,8 @@ github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00
|
|||||||
github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y=
|
github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y=
|
||||||
github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U=
|
github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U=
|
||||||
github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI=
|
github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI=
|
||||||
|
github.com/agiledragon/gomonkey/v2 v2.8.0 h1:u2K2nNGyk0ippzklz1CWalllEB9ptD+DtSXeCX5O000=
|
||||||
|
github.com/agiledragon/gomonkey/v2 v2.8.0/go.mod h1:ap1AmDzcVOAz1YpeJ3TCzIgstoaWLA6jbbgxfB4w2iY=
|
||||||
github.com/akavel/rsrc v0.10.2/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c=
|
github.com/akavel/rsrc v0.10.2/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c=
|
||||||
github.com/akutz/memconn v0.1.0 h1:NawI0TORU4hcOMsMr11g7vwlCdkYeLKXBcxWu2W/P8A=
|
github.com/akutz/memconn v0.1.0 h1:NawI0TORU4hcOMsMr11g7vwlCdkYeLKXBcxWu2W/P8A=
|
||||||
github.com/akutz/memconn v0.1.0/go.mod h1:Jo8rI7m0NieZyLI5e2CDlRdRqRRB4S7Xp77ukDjH+Fw=
|
github.com/akutz/memconn v0.1.0/go.mod h1:Jo8rI7m0NieZyLI5e2CDlRdRqRRB4S7Xp77ukDjH+Fw=
|
||||||
@ -828,6 +830,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y
|
|||||||
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
golang.org/x/crypto v0.0.0-20220408190544-5352b0902921 h1:iU7T1X1J6yxDr0rda54sWGkHgOp5XJrqm79gcNlC2VM=
|
golang.org/x/crypto v0.0.0-20220408190544-5352b0902921 h1:iU7T1X1J6yxDr0rda54sWGkHgOp5XJrqm79gcNlC2VM=
|
||||||
golang.org/x/crypto v0.0.0-20220408190544-5352b0902921/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
golang.org/x/crypto v0.0.0-20220408190544-5352b0902921/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
|
golang.org/x/crypto v0.0.0-20220824171710-5757bc0c5503 h1:vJ2V3lFLg+bBhgroYuRfyN583UzVveQmIXjc8T/y3to=
|
||||||
|
golang.org/x/crypto v0.0.0-20220824171710-5757bc0c5503/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||||
@ -1039,6 +1043,7 @@ golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s=
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s=
|
||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
|
||||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
@ -3,6 +3,7 @@ package rtask
|
|||||||
import (
|
import (
|
||||||
"go_dreamfactory/comm"
|
"go_dreamfactory/comm"
|
||||||
"go_dreamfactory/pb"
|
"go_dreamfactory/pb"
|
||||||
|
"go_dreamfactory/utils"
|
||||||
|
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
)
|
)
|
||||||
@ -54,6 +55,12 @@ func (this *apiComp) Choose(session comm.IUserSession, req *pb.RtaskChooseReq) (
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 更新完成的任务
|
// 更新完成的任务
|
||||||
|
//验证该任务是否已完成
|
||||||
|
if _, ok := utils.Findx(frtaskArr.RtaskIds, req.RtaskId); ok {
|
||||||
|
code = pb.ErrorCode_RtaskFinished
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
frtaskArr.RtaskIds = append(frtaskArr.RtaskIds, req.RtaskId)
|
frtaskArr.RtaskIds = append(frtaskArr.RtaskIds, req.RtaskId)
|
||||||
if rtask.FrtaskIds == nil {
|
if rtask.FrtaskIds == nil {
|
||||||
rtask.FrtaskIds = make(map[int32]*pb.FrtaskIds)
|
rtask.FrtaskIds = make(map[int32]*pb.FrtaskIds)
|
||||||
@ -69,7 +76,10 @@ func (this *apiComp) Choose(session comm.IUserSession, req *pb.RtaskChooseReq) (
|
|||||||
//发奖励
|
//发奖励
|
||||||
code = this.moduleRtask.DispenseRes(session, conf.Reward, true)
|
code = this.moduleRtask.DispenseRes(session, conf.Reward, true)
|
||||||
|
|
||||||
rsp := &pb.RtaskChooseResp{}
|
rsp := &pb.RtaskChooseResp{
|
||||||
|
RtaskId: req.RtaskId,
|
||||||
|
ChooseId: req.ChooseId,
|
||||||
|
}
|
||||||
|
|
||||||
if err := session.SendMsg(string(this.moduleRtask.GetType()), RtaskSubTypeChoose, rsp); err != nil {
|
if err := session.SendMsg(string(this.moduleRtask.GetType()), RtaskSubTypeChoose, rsp); err != nil {
|
||||||
code = pb.ErrorCode_SystemError
|
code = pb.ErrorCode_SystemError
|
||||||
|
@ -73,7 +73,7 @@ func (this *ModelRtask) checkCondi(uid string, condiId int32) (ok bool) {
|
|||||||
//验证限定条件
|
//验证限定条件
|
||||||
if condi, ok := this.moduleRtask.rtaskHandleMap[condiId]; ok {
|
if condi, ok := this.moduleRtask.rtaskHandleMap[condiId]; ok {
|
||||||
if ok = condi.fn(uid, condi.cfg); !ok {
|
if ok = condi.fn(uid, condi.cfg); !ok {
|
||||||
log.Infof("uid: %v do rtask %v condition not reach", uid, condiId)
|
log.Debugf("uid: %v do rtask %v condition not reach", uid, condiId)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
@ -105,8 +105,10 @@ func (this *ModelRtask) HeroLvTarget(uid string, cfg *cfg.GameRdtaskCondiData) (
|
|||||||
h := heroModule.(comm.IHero)
|
h := heroModule.(comm.IHero)
|
||||||
var hero *pb.DBHero
|
var hero *pb.DBHero
|
||||||
for _, v := range h.GetHeroList(uid) {
|
for _, v := range h.GetHeroList(uid) {
|
||||||
|
// 查找指定英雄
|
||||||
if cast.ToString(cfg.Data1) == v.HeroID {
|
if cast.ToString(cfg.Data1) == v.HeroID {
|
||||||
hero = v
|
hero = v
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if hero != nil {
|
if hero != nil {
|
||||||
@ -127,6 +129,7 @@ func (this *ModelRtask) EquipNum(uid string, cfg *cfg.GameRdtaskCondiData) (ok b
|
|||||||
for _, v := range h.GetHeroList(uid) {
|
for _, v := range h.GetHeroList(uid) {
|
||||||
if cast.ToString(cfg.Data1) == v.HeroID {
|
if cast.ToString(cfg.Data1) == v.HeroID {
|
||||||
hero = v
|
hero = v
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,8 +170,8 @@ func (this *ModelRtask) TaskDay(uid string, cfg *cfg.GameRdtaskCondiData) (ok bo
|
|||||||
}
|
}
|
||||||
|
|
||||||
itask := taskModule.(comm.ITask)
|
itask := taskModule.(comm.ITask)
|
||||||
|
var task *pb.DBTask
|
||||||
if task := itask.GetTaskById(uid, cfg.Data1); task == nil {
|
if task = itask.GetTaskById(uid, cfg.Data1); task == nil {
|
||||||
return false
|
return false
|
||||||
} else {
|
} else {
|
||||||
//任务完成
|
//任务完成
|
||||||
@ -192,6 +195,7 @@ func (this *ModelRtask) HeroStarTarget(uid string, cfg *cfg.GameRdtaskCondiData)
|
|||||||
for _, v := range h.GetHeroList(uid) {
|
for _, v := range h.GetHeroList(uid) {
|
||||||
if cast.ToString(cfg.Data1) == v.HeroID {
|
if cast.ToString(cfg.Data1) == v.HeroID {
|
||||||
hero = v
|
hero = v
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -270,6 +270,9 @@ type RtaskChooseResp struct {
|
|||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
RtaskId int32 `protobuf:"varint,1,opt,name=rtaskId,proto3" json:"rtaskId"` //任务ID
|
||||||
|
ChooseId int32 `protobuf:"varint,2,opt,name=chooseId,proto3" json:"chooseId"` //选项配置ID
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *RtaskChooseResp) Reset() {
|
func (x *RtaskChooseResp) Reset() {
|
||||||
@ -304,6 +307,20 @@ func (*RtaskChooseResp) Descriptor() ([]byte, []int) {
|
|||||||
return file_rtask_rtask_msg_proto_rawDescGZIP(), []int{5}
|
return file_rtask_rtask_msg_proto_rawDescGZIP(), []int{5}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *RtaskChooseResp) GetRtaskId() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.RtaskId
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *RtaskChooseResp) GetChooseId() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.ChooseId
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
// 任务完成推送
|
// 任务完成推送
|
||||||
type RtaskFinishPush struct {
|
type RtaskFinishPush struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
@ -466,18 +483,22 @@ var file_rtask_rtask_msg_proto_rawDesc = []byte{
|
|||||||
0x6f, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b,
|
0x6f, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b,
|
||||||
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49,
|
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49,
|
||||||
0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20,
|
0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20,
|
||||||
0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x49, 0x64, 0x22, 0x11, 0x0a,
|
0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x49, 0x64, 0x22, 0x47, 0x0a,
|
||||||
0x0f, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70,
|
0x0f, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70,
|
||||||
0x22, 0x2b, 0x0a, 0x0f, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x50,
|
0x12, 0x18, 0x0a, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
|
||||||
0x75, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x01,
|
0x05, 0x52, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68,
|
||||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x2d, 0x0a,
|
0x6f, 0x6f, 0x73, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x68,
|
||||||
0x11, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52,
|
0x6f, 0x6f, 0x73, 0x65, 0x49, 0x64, 0x22, 0x2b, 0x0a, 0x0f, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x46,
|
||||||
0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20,
|
0x69, 0x6e, 0x69, 0x73, 0x68, 0x50, 0x75, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x74, 0x61,
|
||||||
0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x12,
|
0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x74, 0x61, 0x73,
|
||||||
0x52, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65,
|
0x6b, 0x49, 0x64, 0x22, 0x2d, 0x0a, 0x11, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x65, 0x74, 0x52,
|
||||||
0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20,
|
0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x74, 0x61, 0x73,
|
||||||
0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x06, 0x5a, 0x04,
|
0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b,
|
||||||
0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
0x49, 0x64, 0x22, 0x2e, 0x0a, 0x12, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x65, 0x74, 0x52, 0x65,
|
||||||
|
0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x74, 0x61, 0x73,
|
||||||
|
0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b,
|
||||||
|
0x49, 0x64, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
|
||||||
|
0x6f, 0x33,
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
Loading…
Reference in New Issue
Block a user