v2版本正式上线测试版

This commit is contained in:
george
2018-07-13 17:53:34 +08:00
parent 092ecf605b
commit 7bbe5585d8
661 changed files with 40153 additions and 2053 deletions

45
V1/models/init.go Normal file
View File

@@ -0,0 +1,45 @@
/*
* @Author: haodaquan
* @Date: 2017-06-20 09:44:44
* @Last Modified by: haodaquan
* @Last Modified time: 2017-06-21 12:21:37
*/
package models
import (
"net/url"
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
"github.com/gpmgo/gopm/modules/log"
)
func Init() {
dbhost := beego.AppConfig.String("db.host")
dbport := beego.AppConfig.String("db.port")
dbuser := beego.AppConfig.String("db.user")
dbpassword := beego.AppConfig.String("db.password")
dbname := beego.AppConfig.String("db.name")
timezone := beego.AppConfig.String("db.timezone")
if dbport == "" {
dbport = "3306"
}
dsn := dbuser + ":" + dbpassword + "@tcp(" + dbhost + ":" + dbport + ")/" + dbname + "?charset=utf8"
log.Fatal(dsn)
if timezone != "" {
dsn = dsn + "&loc=" + url.QueryEscape(timezone)
}
orm.RegisterDataBase("default", "mysql", dsn)
orm.RegisterModel(new(User), new(Task), new(TaskGroup), new(TaskLog), new(TaskServer))
if beego.AppConfig.String("runmode") == "dev" {
orm.Debug = true
}
}
func TableName(name string) string {
return beego.AppConfig.String("db.prefix") + name
}

107
V1/models/task.go Normal file
View File

@@ -0,0 +1,107 @@
/*
* @Author: haodaquan
* @Date: 2017-06-21 12:22:00
* @Last Modified by: haodaquan
* @Last Modified time: 2017-06-21 12:22:10
*/
package models
import (
"fmt"
"github.com/astaxie/beego/orm"
"time"
)
const (
TASK_SUCCESS = 0 // 任务执行成功
TASK_ERROR = -1 // 任务执行出错
TASK_TIMEOUT = -2 // 任务执行超时
)
type Task struct {
Id int
UserId int
ServerId int
GroupId int
TaskName string
TaskType int
Description string
CronSpec string
Concurrent int
Command string
Status int
Timeout int
ExecuteTimes int
PrevTime int64
CreateTime int64
}
func (t *Task) TableName() string {
return TableName("task")
}
func (t *Task) Update(fields ...string) error {
if _, err := orm.NewOrm().Update(t, fields...); err != nil {
return err
}
return nil
}
func TaskAdd(task *Task) (int64, error) {
if task.TaskName == "" {
return 0, fmt.Errorf("TaskName字段不能为空")
}
if task.CronSpec == "" {
return 0, fmt.Errorf("CronSpec字段不能为空")
}
if task.Command == "" {
return 0, fmt.Errorf("Command字段不能为空")
}
if task.CreateTime == 0 {
task.CreateTime = time.Now().Unix()
}
return orm.NewOrm().Insert(task)
}
func TaskGetList(page, pageSize int, filters ...interface{}) ([]*Task, int64) {
offset := (page - 1) * pageSize
tasks := make([]*Task, 0)
query := orm.NewOrm().QueryTable(TableName("task"))
if len(filters) > 0 {
l := len(filters)
for k := 0; k < l; k += 2 {
query = query.Filter(filters[k].(string), filters[k+1])
}
}
total, _ := query.Count()
query.OrderBy("-id").Limit(pageSize, offset).All(&tasks)
return tasks, total
}
func TaskResetGroupId(groupId int) (int64, error) {
return orm.NewOrm().QueryTable(TableName("task")).Filter("group_id", groupId).Update(orm.Params{
"group_id": 0,
})
}
func TaskGetById(id int) (*Task, error) {
task := &Task{
Id: id,
}
err := orm.NewOrm().Read(task)
if err != nil {
return nil, err
}
return task, nil
}
func TaskDel(id int) error {
_, err := orm.NewOrm().QueryTable(TableName("task")).Filter("id", id).Delete()
return err
}

69
V1/models/task_group.go Normal file
View File

@@ -0,0 +1,69 @@
/*
* @Author: haodaquan
* @Date: 2017-06-21 12:22:37
* @Last Modified by: haodaquan
* @Last Modified time: 2017-06-21 12:22:55
*/
package models
import (
"fmt"
"github.com/astaxie/beego/orm"
)
type TaskGroup struct {
Id int
UserId int
GroupName string
Description string
CreateTime int64
}
func (t *TaskGroup) TableName() string {
return TableName("task_group")
}
func (t *TaskGroup) Update(fields ...string) error {
if t.GroupName == "" {
return fmt.Errorf("组名不能为空")
}
if _, err := orm.NewOrm().Update(t, fields...); err != nil {
return err
}
return nil
}
func TaskGroupAdd(obj *TaskGroup) (int64, error) {
if obj.GroupName == "" {
return 0, fmt.Errorf("组名不能为空")
}
return orm.NewOrm().Insert(obj)
}
func TaskGroupGetById(id int) (*TaskGroup, error) {
obj := &TaskGroup{
Id: id,
}
err := orm.NewOrm().Read(obj)
if err != nil {
return nil, err
}
return obj, nil
}
func TaskGroupDelById(id int) error {
_, err := orm.NewOrm().QueryTable(TableName("task_group")).Filter("id", id).Delete()
return err
}
func TaskGroupGetList(page, pageSize int) ([]*TaskGroup, int64) {
offset := (page - 1) * pageSize
list := make([]*TaskGroup, 0)
query := orm.NewOrm().QueryTable(TableName("task_group"))
total, _ := query.Count()
query.OrderBy("-id").Limit(pageSize, offset).All(&list)
return list, total
}

76
V1/models/task_log.go Normal file
View File

@@ -0,0 +1,76 @@
/*
* @Author: haodaquan
* @Date: 2017-06-21 12:23:22
* @Last Modified by: haodaquan
* @Last Modified time: 2017-06-22 14:57:13
*/
package models
import (
"github.com/astaxie/beego/orm"
)
type TaskLog struct {
Id int
TaskId int
Output string
Error string
Status int
ProcessTime int
CreateTime int64
}
func (t *TaskLog) TableName() string {
return TableName("task_log")
}
func TaskLogAdd(t *TaskLog) (int64, error) {
return orm.NewOrm().Insert(t)
}
func TaskLogGetList(page, pageSize int, filters ...interface{}) ([]*TaskLog, int64) {
offset := (page - 1) * pageSize
logs := make([]*TaskLog, 0)
query := orm.NewOrm().QueryTable(TableName("task_log"))
if len(filters) > 0 {
l := len(filters)
for k := 0; k < l; k += 2 {
query = query.Filter(filters[k].(string), filters[k+1])
}
}
total, _ := query.Count()
query.OrderBy("-id").Limit(pageSize, offset).All(&logs)
return logs, total
}
func TaskLogGetById(id int) (*TaskLog, error) {
obj := &TaskLog{
Id: id,
}
err := orm.NewOrm().Read(obj)
if err != nil {
return nil, err
}
return obj, nil
}
func TaskLogDelById(id int) error {
_, err := orm.NewOrm().QueryTable(TableName("task_log")).Filter("id", id).Delete()
return err
}
func TaskLogDelByTaskId(taskId int) (int64, error) {
return orm.NewOrm().QueryTable(TableName("task_log")).Filter("task_id", taskId).Delete()
}
// func GetTodaySuccessNum() (num, error) {
// o := orm.NewOrm()
// var r RawSeter
// r = o.Raw("SELECT COUNT(*) AS num WHERE create_time>=? AND status<0", "")
// }

107
V1/models/task_server.go Normal file
View File

@@ -0,0 +1,107 @@
/*
* @Author: haodaquan
* @Date: 2017-08-16 12:22:37
* @Last Modified by: haodaquan
* @Last Modified time: 2017-08-16 12:22:55
*/
package models
import (
"fmt"
"github.com/astaxie/beego/orm"
)
type TaskServer struct {
Id int
ServerName string
ServerAccount string
ServerIp string
Port int
Password string
PrivateKeySrc string
PublicKeySrc string
Type int
Detail string
CreateTime int64
UpdateTime int64
Status int
}
func (t *TaskServer) TableName() string {
return TableName("task_server")
}
func (t *TaskServer) Update(fields ...string) error {
if t.ServerName == "" {
return fmt.Errorf("服务器名不能为空")
}
if t.ServerIp == "" {
return fmt.Errorf("服务器IP不能为空")
}
if t.ServerAccount == "" {
return fmt.Errorf("登录账户不能为空")
}
if t.Type == 0 && t.Password == "" {
return fmt.Errorf("服务器密码不能为空")
}
if t.Type == 1 && t.PrivateKeySrc == "" {
return fmt.Errorf("私钥不能为空")
}
if _, err := orm.NewOrm().Update(t, fields...); err != nil {
return err
}
return nil
}
func TaskServerAdd(obj *TaskServer) (int64, error) {
if obj.ServerName == "" {
return 0,fmt.Errorf("服务器名不能为空")
}
if obj.ServerIp == "" {
return 0,fmt.Errorf("服务器IP不能为空")
}
if obj.ServerAccount == "" {
return 0,fmt.Errorf("登录账户不能为空")
}
if obj.Type == 0 && obj.Password == "" {
return 0,fmt.Errorf("服务器密码不能为空")
}
if obj.Type == 1 && obj.PrivateKeySrc == "" {
return 0,fmt.Errorf("私钥不能为空")
}
return orm.NewOrm().Insert(obj)
}
func TaskServerGetById(id int) (*TaskServer, error) {
obj := &TaskServer{
Id: id,
}
err := orm.NewOrm().Read(obj)
if err != nil {
return nil, err
}
return obj, nil
}
func TaskServerDelById(id int) error {
_, err := orm.NewOrm().QueryTable(TableName("task_server")).Filter("id", id).Delete()
return err
}
func TaskServerGetList(page, pageSize int) ([]*TaskServer, int64) {
offset := (page - 1) * pageSize
list := make([]*TaskServer, 0)
query := orm.NewOrm().QueryTable(TableName("task_server"))
total, _ := query.Count()
query.OrderBy("-id").Limit(pageSize, offset).All(&list)
return list, total
}

63
V1/models/user.go Normal file
View File

@@ -0,0 +1,63 @@
/*
* @Author: haodaquan
* @Date: 2017-06-20 09:35:45
* @Last Modified by: haodaquan
* @Last Modified time: 2017-06-20 09:37:34
*/
package models
import (
"github.com/astaxie/beego/orm"
)
type User struct {
Id int
UserName string
Password string
Salt string
Email string
LastLogin int64
LastIp string
Status int
}
func (u *User) TableName() string {
return TableName("user")
}
func (u *User) Update(fields ...string) error {
if _, err := orm.NewOrm().Update(u, fields...); err != nil {
return err
}
return nil
}
func UserAdd(user *User) (int64, error) {
return orm.NewOrm().Insert(user)
}
func UserGetById(id int) (*User, error) {
u := new(User)
err := orm.NewOrm().QueryTable(TableName("user")).Filter("id", id).One(u)
if err != nil {
return nil, err
}
return u, nil
}
func UserGetByName(userName string) (*User, error) {
u := new(User)
err := orm.NewOrm().QueryTable(TableName("user")).Filter("user_name", userName).One(u)
if err != nil {
return nil, err
}
return u, nil
}
func UserUpdate(user *User, fields ...string) error {
_, err := orm.NewOrm().Update(user, fields...)
return err
}