版本2准备另起炉灶

This commit is contained in:
george
2018-07-13 17:44:47 +08:00
parent b34de685b8
commit 092ecf605b
568 changed files with 0 additions and 33758 deletions

View File

@@ -1,18 +0,0 @@
appname = PPGo_Job2
httpport = 8080
runmode = dev
# 允许同时运行的任务数
jobs.pool = 1000
# 站点名称
site.name = 定时任务管理器
# 数据库配置
db.host = 127.0.0.1
db.user = root
db.password = "123456"
db.port = 3306
db.name = ppgo_job2
db.prefix = pp_
db.timezone = Asia/Shanghai

View File

@@ -1,215 +0,0 @@
/**********************************************
** @Des: 管理员
** @Author: haodaquan
** @Date: 2017-09-16 14:17:37
** @Last Modified by: haodaquan
** @Last Modified time: 2017-09-17 11:14:07
***********************************************/
package controllers
import (
"fmt"
"strconv"
"strings"
"time"
"github.com/astaxie/beego"
"github.com/george518/PPGo_Job2/libs"
"github.com/george518/PPGo_Job2/models"
)
type AdminController struct {
BaseController
}
func (self *AdminController) List() {
self.Data["pageTitle"] = "管理员管理"
self.display()
//self.TplName = "admin/list.html"
}
func (self *AdminController) Add() {
self.Data["pageTitle"] = "新增管理员"
// 角色
filters := make([]interface{}, 0)
filters = append(filters, "status", 1)
result, _ := models.RoleGetList(1, 1000, filters...)
list := make([]map[string]interface{}, len(result))
for k, v := range result {
row := make(map[string]interface{})
row["id"] = v.Id
row["role_name"] = v.RoleName
list[k] = row
}
self.Data["role"] = list
self.display()
}
func (self *AdminController) Edit() {
self.Data["pageTitle"] = "编辑管理员"
id, _ := self.GetInt("id", 0)
Admin, _ := models.AdminGetById(id)
row := make(map[string]interface{})
row["id"] = Admin.Id
row["login_name"] = Admin.LoginName
row["real_name"] = Admin.RealName
row["phone"] = Admin.Phone
row["email"] = Admin.Email
row["role_ids"] = Admin.RoleIds
self.Data["admin"] = row
role_ids := strings.Split(Admin.RoleIds, ",")
filters := make([]interface{}, 0)
filters = append(filters, "status", 1)
result, _ := models.RoleGetList(1, 1000, filters...)
list := make([]map[string]interface{}, len(result))
for k, v := range result {
row := make(map[string]interface{})
row["checked"] = 0
for i := 0; i < len(role_ids); i++ {
role_id, _ := strconv.Atoi(role_ids[i])
if role_id == v.Id {
row["checked"] = 1
}
fmt.Println(role_ids[i])
}
row["id"] = v.Id
row["role_name"] = v.RoleName
list[k] = row
}
self.Data["role"] = list
self.display()
}
func (self *AdminController) AjaxSave() {
Admin_id, _ := self.GetInt("id")
if Admin_id == 0 {
Admin := new(models.Admin)
Admin.LoginName = strings.TrimSpace(self.GetString("login_name"))
Admin.RealName = strings.TrimSpace(self.GetString("real_name"))
Admin.Phone = strings.TrimSpace(self.GetString("phone"))
Admin.Email = strings.TrimSpace(self.GetString("email"))
Admin.RoleIds = strings.TrimSpace(self.GetString("roleids"))
Admin.UpdateTime = time.Now().Unix()
Admin.UpdateId = self.userId
Admin.Status = 1
// 检查登录名是否已经存在
_, err := models.AdminGetByName(Admin.LoginName)
if err == nil {
self.ajaxMsg("登录名已经存在", MSG_ERR)
}
//新增
pwd, salt := libs.Password(4, "")
Admin.Password = pwd
Admin.Salt = salt
Admin.CreateTime = time.Now().Unix()
Admin.CreateId = self.userId
if _, err := models.AdminAdd(Admin); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("", MSG_OK)
}
Admin, _ := models.AdminGetById(Admin_id)
//修改
Admin.Id = Admin_id
Admin.UpdateTime = time.Now().Unix()
Admin.UpdateId = self.userId
Admin.LoginName = strings.TrimSpace(self.GetString("login_name"))
Admin.RealName = strings.TrimSpace(self.GetString("real_name"))
Admin.Phone = strings.TrimSpace(self.GetString("phone"))
Admin.Email = strings.TrimSpace(self.GetString("email"))
Admin.RoleIds = strings.TrimSpace(self.GetString("roleids"))
Admin.UpdateTime = time.Now().Unix()
Admin.UpdateId = self.userId
Admin.Status = 1
resetPwd, _ := self.GetInt("reset_pwd")
if resetPwd == 1 {
pwd, salt := libs.Password(4, "")
Admin.Password = pwd
Admin.Salt = salt
}
//普通管理员不可修改超级管理员资料
if self.userId != 1 && Admin.Id == 1 {
self.ajaxMsg("不可修改超级管理员资料", MSG_ERR)
}
if err := Admin.Update(); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg(strconv.Itoa(resetPwd), MSG_OK)
}
func (self *AdminController) AjaxDel() {
Admin_id, _ := self.GetInt("id")
status := strings.TrimSpace(self.GetString("status"))
if Admin_id == 1 {
self.ajaxMsg("超级管理员不允许操作", MSG_ERR)
}
Admin_status := 0
if status == "enable" {
Admin_status = 1
}
Admin, _ := models.AdminGetById(Admin_id)
Admin.UpdateTime = time.Now().Unix()
Admin.Status = Admin_status
Admin.Id = Admin_id
if err := Admin.Update(); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("操作成功", MSG_OK)
}
func (self *AdminController) Table() {
//列表
page, err := self.GetInt("page")
if err != nil {
page = 1
}
limit, err := self.GetInt("limit")
if err != nil {
limit = 30
}
realName := strings.TrimSpace(self.GetString("realName"))
StatusText := make(map[int]string)
StatusText[0] = "<font color='red'>禁用</font>"
StatusText[1] = "正常"
self.pageSize = limit
//查询条件
filters := make([]interface{}, 0)
//
if realName != "" {
filters = append(filters, "real_name__icontains", realName)
}
result, count := models.AdminGetList(page, self.pageSize, filters...)
list := make([]map[string]interface{}, len(result))
for k, v := range result {
row := make(map[string]interface{})
row["id"] = v.Id
row["login_name"] = v.LoginName
row["real_name"] = v.RealName
row["phone"] = v.Phone
row["email"] = v.Email
row["role_ids"] = v.RoleIds
row["create_time"] = beego.Date(time.Unix(v.CreateTime, 0), "Y-m-d H:i:s")
row["update_time"] = beego.Date(time.Unix(v.UpdateTime, 0), "Y-m-d H:i:s")
row["status"] = v.Status
row["status_text"] = StatusText[v.Status]
list[k] = row
}
self.ajaxList("成功", MSG_OK, count, list)
}

View File

@@ -1,118 +0,0 @@
/**********************************************
** @Des: 权限因子
** @Author: haodaquan
** @Date: 2017-09-09 16:14:31
** @Last Modified by: haodaquan
** @Last Modified time: 2017-09-17 11:23:40
***********************************************/
package controllers
import (
"fmt"
"strings"
"time"
"github.com/george518/PPGo_Job2/models"
)
type AuthController struct {
BaseController
}
func (self *AuthController) Index() {
self.Data["pageTitle"] = "权限因子"
self.display()
}
func (self *AuthController) List() {
self.Data["zTree"] = true //引入ztreecss
self.Data["pageTitle"] = "权限因子"
self.display()
}
//获取全部节点
func (self *AuthController) GetNodes() {
filters := make([]interface{}, 0)
filters = append(filters, "status", 1)
result, count := models.AuthGetList(1, 1000, filters...)
list := make([]map[string]interface{}, len(result))
for k, v := range result {
row := make(map[string]interface{})
row["id"] = v.Id
row["pId"] = v.Pid
row["name"] = v.AuthName
row["open"] = true
list[k] = row
}
self.ajaxList("成功", MSG_OK, count, list)
}
//获取一个节点
func (self *AuthController) GetNode() {
id, _ := self.GetInt("id")
result, _ := models.AuthGetById(id)
// if err == nil {
// self.ajaxMsg(err.Error(), MSG_ERR)
// }
row := make(map[string]interface{})
row["id"] = result.Id
row["pid"] = result.Pid
row["auth_name"] = result.AuthName
row["auth_url"] = result.AuthUrl
row["sort"] = result.Sort
row["is_show"] = result.IsShow
row["icon"] = result.Icon
fmt.Println(row)
self.ajaxList("成功", MSG_OK, 0, row)
}
//新增或修改
func (self *AuthController) AjaxSave() {
auth := new(models.Auth)
auth.UserId = self.userId
auth.Pid, _ = self.GetInt("pid")
auth.AuthName = strings.TrimSpace(self.GetString("auth_name"))
auth.AuthUrl = strings.TrimSpace(self.GetString("auth_url"))
auth.Sort, _ = self.GetInt("sort")
auth.IsShow, _ = self.GetInt("is_show")
auth.Icon = strings.TrimSpace(self.GetString("icon"))
auth.UpdateTime = time.Now().Unix()
auth.Status = 1
id, _ := self.GetInt("id")
if id == 0 {
//新增
auth.CreateTime = time.Now().Unix()
auth.CreateId = self.userId
auth.UpdateId = self.userId
if _, err := models.AuthAdd(auth); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
} else {
auth.Id = id
auth.UpdateId = self.userId
if err := auth.Update(); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
}
self.ajaxMsg("", MSG_OK)
}
//删除
func (self *AuthController) AjaxDel() {
id, _ := self.GetInt("id")
auth, _ := models.AuthGetById(id)
auth.Id = id
auth.Status = 0
if err := auth.Update(); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("", MSG_OK)
}

View File

@@ -1,126 +0,0 @@
/************************************************************
** @Description: controllers
** @Author: haodaquan
** @Date: 2018-06-10 19:50
** @Last Modified by: haodaquan
** @Last Modified time: 2018-06-10 19:50
*************************************************************/
package controllers
import (
"strings"
"time"
"github.com/astaxie/beego"
"github.com/george518/PPGo_Job2/models"
)
type BanController struct {
BaseController
}
func (self *BanController) List() {
self.Data["pageTitle"] = "禁用命令管理"
self.display()
}
func (self *BanController) Add() {
self.Data["pageTitle"] = "新增禁用命令"
// 角色
filters := make([]interface{}, 0)
filters = append(filters, "status", 1)
result, _ := models.RoleGetList(1, 1000, filters...)
list := make([]map[string]interface{}, len(result))
for k, v := range result {
row := make(map[string]interface{})
row["id"] = v.Id
row["role_name"] = v.RoleName
list[k] = row
}
self.Data["role"] = list
self.display()
}
func (self *BanController) Edit() {
self.Data["pageTitle"] = "编辑禁用命令"
id, _ := self.GetInt("id", 0)
ban, _ := models.BanGetById(id)
row := make(map[string]interface{})
row["id"] = ban.Id
row["code"] = ban.Code
self.Data["ban"] = row
self.display()
}
func (self *BanController) AjaxSave() {
id, _ := self.GetInt("id")
if id == 0 {
ban := new(models.Ban)
ban.Code = strings.TrimSpace(self.GetString("code"))
ban.CreateTime = time.Now().Unix()
if _, err := models.BanAdd(ban); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("", MSG_OK)
}
ban, _ := models.BanGetById(id)
//修改
ban.Id = id
ban.UpdateTime = time.Now().Unix()
ban.Code = strings.TrimSpace(self.GetString("code"))
if err := ban.Update(); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("", MSG_OK)
}
func (self *BanController) AjaxDel() {
id, _ := self.GetInt("id")
ban, _ := models.BanGetById(id)
ban.UpdateTime = time.Now().Unix()
ban.Status = 1
if err := ban.Update(); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("操作成功", MSG_OK)
}
func (self *BanController) Table() {
//列表
page, err := self.GetInt("page")
if err != nil {
page = 1
}
limit, err := self.GetInt("limit")
if err != nil {
limit = 30
}
code := strings.TrimSpace(self.GetString("code"))
self.pageSize = limit
//查询条件
filters := make([]interface{}, 0)
filters = append(filters, "status", 0)
if code != "" {
filters = append(filters, "code__icontains", code)
}
result, count := models.BanGetList(page, self.pageSize, filters...)
list := make([]map[string]interface{}, len(result))
for k, v := range result {
row := make(map[string]interface{})
row["id"] = v.Id
row["code"] = v.Code
row["create_time"] = beego.Date(time.Unix(v.CreateTime, 0), "Y-m-d H:i:s")
list[k] = row
}
self.ajaxList("成功", MSG_OK, count, list)
}

View File

@@ -1,240 +0,0 @@
/**********************************************
** @Des: base controller
** @Author: haodaquan
** @Date: 2017-09-07 16:54:40
** @Last Modified by: haodaquan
** @Last Modified time: 2017-09-18 10:28:01
***********************************************/
package controllers
import (
"strconv"
"strings"
"github.com/astaxie/beego"
"github.com/george518/PPGo_Job2/libs"
"github.com/george518/PPGo_Job2/models"
)
const (
MSG_OK = 0
MSG_ERR = -1
)
type BaseController struct {
beego.Controller
controllerName string
actionName string
user *models.Admin
userId int
userName string
loginName string
pageSize int
allowUrl string
}
//前期准备
func (self *BaseController) Prepare() {
self.pageSize = 20
controllerName, actionName := self.GetControllerAndAction()
self.controllerName = strings.ToLower(controllerName[0 : len(controllerName)-10])
self.actionName = strings.ToLower(actionName)
self.Data["version"] = beego.AppConfig.String("version")
self.Data["siteName"] = beego.AppConfig.String("site.name")
self.Data["curRoute"] = self.controllerName + "." + self.actionName
self.Data["curController"] = self.controllerName
self.Data["curAction"] = self.actionName
// noAuth := "ajaxsave/ajaxdel/table/loginin/loginout/getnodes/start"
// isNoAuth := strings.Contains(noAuth, self.actionName)
//fmt.Println(self.controllerName)
if (strings.Compare(self.controllerName, "apidoc")) != 0 {
self.auth()
}
self.Data["loginUserId"] = self.userId
self.Data["loginUserName"] = self.userName
}
//登录权限验证
func (self *BaseController) auth() {
arr := strings.Split(self.Ctx.GetCookie("auth"), "|")
self.userId = 0
if len(arr) == 2 {
idstr, password := arr[0], arr[1]
userId, _ := strconv.Atoi(idstr)
if userId > 0 {
user, err := models.AdminGetById(userId)
if err == nil && password == libs.Md5([]byte(self.getClientIp()+"|"+user.Password+user.Salt)) {
self.userId = user.Id
self.loginName = user.LoginName
self.userName = user.RealName
self.user = user
self.AdminAuth()
}
isHasAuth := strings.Contains(self.allowUrl, self.controllerName+"/"+self.actionName)
noAuth := "ajaxsave/ajaxdel/table/loginin/loginout/getnodes/start/show/ajaxapisave/index/group/public/env/code/apidetail"
isNoAuth := strings.Contains(noAuth, self.actionName)
if isHasAuth == false && isNoAuth == false {
self.Ctx.WriteString("没有权限")
self.ajaxMsg("没有权限", MSG_ERR)
return
}
}
}
if self.userId == 0 && (self.controllerName != "login" && self.actionName != "loginin") {
self.redirect(beego.URLFor("LoginController.Login"))
}
}
func (self *BaseController) AdminAuth() {
// 左侧导航栏
filters := make([]interface{}, 0)
filters = append(filters, "status", 1)
if self.userId != 1 {
//普通管理员
adminAuthIds, _ := models.RoleAuthGetByIds(self.user.RoleIds)
adminAuthIdArr := strings.Split(adminAuthIds, ",")
filters = append(filters, "id__in", adminAuthIdArr)
}
result, _ := models.AuthGetList(1, 1000, filters...)
list := make([]map[string]interface{}, len(result))
list2 := make([]map[string]interface{}, len(result))
allow_url := ""
i, j := 0, 0
for _, v := range result {
if v.AuthUrl != " " || v.AuthUrl != "/" {
allow_url += v.AuthUrl
}
row := make(map[string]interface{})
if v.Pid == 1 && v.IsShow == 1 {
row["Id"] = int(v.Id)
row["Sort"] = v.Sort
row["AuthName"] = v.AuthName
row["AuthUrl"] = v.AuthUrl
row["Icon"] = v.Icon
row["Pid"] = int(v.Pid)
list[i] = row
i++
}
if v.Pid != 1 && v.IsShow == 1 {
row["Id"] = int(v.Id)
row["Sort"] = v.Sort
row["AuthName"] = v.AuthName
row["AuthUrl"] = v.AuthUrl
row["Icon"] = v.Icon
row["Pid"] = int(v.Pid)
list2[j] = row
j++
}
}
self.Data["SideMenu1"] = list[:i] //一级菜单
self.Data["SideMenu2"] = list2[:j] //二级菜单
self.allowUrl = allow_url + "/home/index"
}
// 是否POST提交
func (self *BaseController) isPost() bool {
return self.Ctx.Request.Method == "POST"
}
//获取用户IP地址
func (self *BaseController) getClientIp() string {
s := strings.Split(self.Ctx.Request.RemoteAddr, ":")
return s[0]
}
// 重定向
func (self *BaseController) redirect(url string) {
self.Redirect(url, 302)
self.StopRun()
}
//加载模板
func (self *BaseController) display(tpl ...string) {
var tplname string
if len(tpl) > 0 {
tplname = strings.Join([]string{tpl[0], "html"}, ".")
} else {
tplname = self.controllerName + "/" + self.actionName + ".html"
}
self.Layout = "public/layout.html"
self.TplName = tplname
}
//ajax返回
func (self *BaseController) ajaxMsg(msg interface{}, msgno int) {
out := make(map[string]interface{})
out["status"] = msgno
out["message"] = msg
self.Data["json"] = out
self.ServeJSON()
self.StopRun()
}
//ajax返回 列表
func (self *BaseController) ajaxList(msg interface{}, msgno int, count int64, data interface{}) {
out := make(map[string]interface{})
out["code"] = msgno
out["msg"] = msg
out["count"] = count
out["data"] = data
self.Data["json"] = out
self.ServeJSON()
self.StopRun()
}
//资源分组信息
func serverGroupLists() (sgl map[int]string) {
Filters := make([]interface{}, 0)
Filters = append(Filters, "status", 1)
groupResult, n := models.ServerGroupGetList(1, 1000, Filters...)
sgl = make(map[int]string, n)
for _, gv := range groupResult {
sgl[gv.Id] = gv.GroupName
}
//sgl[0] = "默认分组"
return sgl
}
func taskGroupLists() (gl map[int]string) {
groupFilters := make([]interface{}, 0)
groupFilters = append(groupFilters, "status", 1)
groupResult, n := models.GroupGetList(1, 1000, groupFilters...)
gl = make(map[int]string, n)
for _, gv := range groupResult {
gl[gv.Id] = gv.GroupName
}
return gl
}
type serverList struct {
GroupId int
GroupName string
Servers []string
}
func serverLists() (sls []serverList) {
serverGroup := serverGroupLists()
Filters := make([]interface{}, 0)
Filters = append(Filters, "status__in", 1)
Result, _ := models.TaskServerGetList(1, 1000, Filters...)
for k, v := range serverGroup {
sl := serverList{}
sl.GroupId = k
sl.GroupName = v
servers := make([]string, 0)
for _, sv := range Result {
if sv.GroupId == k {
servers = append(servers, strconv.Itoa(sv.Id), sv.ServerName)
}
}
sl.Servers = servers
sls = append(sls, sl)
}
return sls
}

View File

@@ -1,23 +0,0 @@
/**********************************************
** @Des: This file ...
** @Author: haodaquan
** @Date: 2017-09-08 10:21:13
** @Last Modified by: haodaquan
** @Last Modified time: 2017-09-09 18:04:41
***********************************************/
package controllers
type HomeController struct {
BaseController
}
func (self *HomeController) Index() {
self.Data["pageTitle"] = "系统首页"
//self.display()
self.TplName = "public/main.html"
}
func (self *HomeController) Start() {
self.Data["pageTitle"] = "控制面板"
self.display()
}

View File

@@ -1,73 +0,0 @@
/**********************************************
** @Des: login
** @Author: haodaquan
** @Date: 2017-09-07 16:30:10
** @Last Modified by: haodaquan
** @Last Modified time: 2017-09-17 11:55:21
***********************************************/
package controllers
import (
"fmt"
"strconv"
"time"
"strings"
"github.com/astaxie/beego"
"github.com/george518/PPGo_Job2/libs"
"github.com/george518/PPGo_Job2/models"
)
type LoginController struct {
BaseController
}
func (self *LoginController) Login() {
//if self.userId > 0 {
// self.redirect(beego.URLFor("HomeController.Index"))
//}
self.TplName = "login/login.html"
}
//登录 TODO:XSRF过滤
func (self *LoginController) LoginIn() {
//self.ajaxMsg("登录成功", MSG_OK)
if self.userId > 0 {
self.ajaxMsg("登录成功", MSG_OK)
}
if self.isPost() {
username := strings.TrimSpace(self.GetString("username"))
password := strings.TrimSpace(self.GetString("password"))
if username != "" && password != "" {
user, err := models.AdminGetByName(username)
fmt.Println(user)
if err != nil || user.Password != libs.Md5([]byte(password+user.Salt)) {
self.ajaxMsg("帐号或密码错误", MSG_ERR)
} else if user.Status == -1 {
self.ajaxMsg("该帐号已禁用", MSG_ERR)
} else {
user.LastIp = self.getClientIp()
user.LastLogin = time.Now().Unix()
user.Update()
authkey := libs.Md5([]byte(self.getClientIp() + "|" + user.Password + user.Salt))
self.Ctx.SetCookie("auth", strconv.Itoa(user.Id)+"|"+authkey, 7*86400)
self.ajaxMsg("登录成功", MSG_OK)
}
}
}
self.ajaxMsg("请求方式错误", MSG_ERR)
}
//登出
func (self *LoginController) LoginOut() {
self.Ctx.SetCookie("auth", "")
self.redirect(beego.URLFor("LoginController.Login"))
}
func (self *LoginController) NoAuth() {
self.Ctx.WriteString("没有权限")
}

View File

@@ -1,155 +0,0 @@
/**********************************************
** @Des: This file ...
** @Author: haodaquan
** @Date: 2017-09-14 14:23:32
** @Last Modified by: haodaquan
** @Last Modified time: 2017-09-17 11:31:13
***********************************************/
package controllers
import (
"fmt"
"strconv"
"strings"
"time"
"github.com/astaxie/beego"
"github.com/george518/PPGo_Job2/models"
)
type RoleController struct {
BaseController
}
func (self *RoleController) List() {
self.Data["pageTitle"] = "角色管理"
self.display()
}
func (self *RoleController) Add() {
self.Data["zTree"] = true //引入ztreecss
self.Data["pageTitle"] = "新增角色"
self.display()
}
func (self *RoleController) Edit() {
self.Data["zTree"] = true //引入ztreecss
self.Data["pageTitle"] = "编辑角色"
id, _ := self.GetInt("id", 0)
role, _ := models.RoleGetById(id)
row := make(map[string]interface{})
row["id"] = role.Id
row["role_name"] = role.RoleName
row["detail"] = role.Detail
self.Data["role"] = row
//获取选择的树节点
roleAuth, _ := models.RoleAuthGetById(id)
authId := make([]int, 0)
for _, v := range roleAuth {
authId = append(authId, v.AuthId)
}
self.Data["auth"] = authId
fmt.Println(authId)
self.display()
}
func (self *RoleController) AjaxSave() {
role := new(models.Role)
role.RoleName = strings.TrimSpace(self.GetString("role_name"))
role.Detail = strings.TrimSpace(self.GetString("detail"))
role.CreateTime = time.Now().Unix()
role.UpdateTime = time.Now().Unix()
role.Status = 1
auths := strings.TrimSpace(self.GetString("nodes_data"))
role_id, _ := self.GetInt("id")
if role_id == 0 {
//新增
role.CreateTime = time.Now().Unix()
role.UpdateTime = time.Now().Unix()
role.CreateId = self.userId
role.UpdateId = self.userId
if id, err := models.RoleAdd(role); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
} else {
ra := new(models.RoleAuth)
authsSlice := strings.Split(auths, ",")
for _, v := range authsSlice {
aid, _ := strconv.Atoi(v)
ra.AuthId = aid
ra.RoleId = id
models.RoleAuthAdd(ra)
}
}
self.ajaxMsg("", MSG_OK)
}
//修改
role.Id = role_id
role.UpdateTime = time.Now().Unix()
role.UpdateId = self.userId
if err := role.Update(); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
} else {
// 删除该角色权限
models.RoleAuthDelete(role_id)
ra := new(models.RoleAuth)
authsSlice := strings.Split(auths, ",")
for _, v := range authsSlice {
aid, _ := strconv.Atoi(v)
ra.AuthId = aid
ra.RoleId = int64(role_id)
models.RoleAuthAdd(ra)
}
}
self.ajaxMsg("", MSG_OK)
}
func (self *RoleController) AjaxDel() {
role_id, _ := self.GetInt("id")
role, _ := models.RoleGetById(role_id)
role.Status = 0
role.Id = role_id
role.UpdateTime = time.Now().Unix()
if err := role.Update(); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
// 删除该角色权限
//models.RoleAuthDelete(role_id)
self.ajaxMsg("", MSG_OK)
}
func (self *RoleController) Table() {
//列表
page, err := self.GetInt("page")
if err != nil {
page = 1
}
limit, err := self.GetInt("limit")
if err != nil {
limit = 30
}
roleName := strings.TrimSpace(self.GetString("roleName"))
self.pageSize = limit
//查询条件
filters := make([]interface{}, 0)
filters = append(filters, "status", 1)
if roleName != "" {
filters = append(filters, "role_name__icontains", roleName)
}
result, count := models.RoleGetList(page, self.pageSize, filters...)
list := make([]map[string]interface{}, len(result))
for k, v := range result {
row := make(map[string]interface{})
row["id"] = v.Id
row["role_name"] = v.RoleName
row["detail"] = v.Detail
row["create_time"] = beego.Date(time.Unix(v.CreateTime, 0), "Y-m-d H:i:s")
row["update_time"] = beego.Date(time.Unix(v.UpdateTime, 0), "Y-m-d H:i:s")
list[k] = row
}
self.ajaxList("成功", MSG_OK, count, list)
}

View File

@@ -1,223 +0,0 @@
/************************************************************
** @Description: controllers
** @Author: haodaquan
** @Date: 2018-06-09 16:11
** @Last Modified by: haodaquan
** @Last Modified time: 2018-06-09 16:11
*************************************************************/
package controllers
import (
"strings"
"time"
"github.com/george518/PPGo_Job2/models"
)
type ServerController struct {
BaseController
}
func (self *ServerController) List() {
self.Data["pageTitle"] = "资源管理"
self.display()
}
func (self *ServerController) Add() {
self.Data["pageTitle"] = "新增服务器资源"
self.Data["serverGroup"] = serverGroupLists()
self.display()
}
func (self *ServerController) GetServerByGroupId() {
gid, _ := self.GetInt("gid", 0)
if gid == 0 {
self.ajaxMsg("groupId is not exist", MSG_ERR)
}
//列表
page, err := self.GetInt("page")
if err != nil {
page = 1
}
limit, err := self.GetInt("limit")
if err != nil {
limit = 30
}
serverName := strings.TrimSpace(self.GetString("serverName"))
StatusText := []string{
"正常",
"<font color='red'>禁用</font>",
}
loginType := [2]string{
"密码",
"密钥",
}
serverGroup := serverGroupLists()
self.pageSize = limit
//查询条件
filters := make([]interface{}, 0)
filters = append(filters, "status", 0)
filters = append(filters, "group_id", gid)
result, count := models.TaskServerGetList(page, self.pageSize, filters...)
list := make([]map[string]interface{}, len(result))
for k, v := range result {
row := make(map[string]interface{})
row["id"] = v.Id
row["server_name"] = v.ServerName
row["detail"] = v.Detail
if serverGroup[v.GroupId] == "" {
v.GroupId = 0
}
row["group_name"] = serverGroup[v.GroupId]
row["type"] = loginType[v.Type]
row["status"] = v.Status
row["status_text"] = StatusText[v.Status]
list[k] = row
}
self.ajaxList("成功", MSG_OK, count, list)
}
func (self *ServerController) Edit() {
self.Data["pageTitle"] = "编辑服务器资源"
id, _ := self.GetInt("id", 0)
server, _ := models.TaskServerGetById(id)
row := make(map[string]interface{})
row["id"] = server.Id
row["server_name"] = server.ServerName
row["group_id"] = server.GroupId
row["server_ip"] = server.ServerIp
row["server_account"] = server.ServerAccount
row["server_outer_ip"] = server.ServerOuterIp
row["port"] = server.Port
row["type"] = server.Type
row["password"] = server.Password
row["public_key_src"] = server.PublicKeySrc
row["private_key_src"] = server.PrivateKeySrc
row["detail"] = server.Detail
self.Data["server"] = row
self.Data["serverGroup"] = serverGroupLists()
self.display()
}
func (self *ServerController) AjaxSave() {
server_id, _ := self.GetInt("id")
if server_id == 0 {
server := new(models.TaskServer)
server.ServerName = strings.TrimSpace(self.GetString("server_name"))
server.ServerAccount = strings.TrimSpace(self.GetString("server_account"))
server.ServerOuterIp = strings.TrimSpace(self.GetString("server_outer_ip"))
server.ServerIp = strings.TrimSpace(self.GetString("server_ip"))
server.PrivateKeySrc = strings.TrimSpace(self.GetString("private_key_src"))
server.PublicKeySrc = strings.TrimSpace(self.GetString("public_key_src"))
server.Password = strings.TrimSpace(self.GetString("password"))
server.Detail = strings.TrimSpace(self.GetString("detail"))
server.Type, _ = self.GetInt("type")
server.Port, _ = self.GetInt("port")
server.GroupId, _ = self.GetInt("group_id")
server.CreateTime = time.Now().Unix()
server.UpdateTime = time.Now().Unix()
server.Status = 0
if _, err := models.TaskServerAdd(server); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("", MSG_OK)
}
server, _ := models.TaskServerGetById(server_id)
//修改
server.Id = server_id
server.UpdateTime = time.Now().Unix()
server.ServerName = strings.TrimSpace(self.GetString("server_name"))
server.ServerAccount = strings.TrimSpace(self.GetString("server_account"))
server.ServerOuterIp = strings.TrimSpace(self.GetString("server_outer_ip"))
server.ServerIp = strings.TrimSpace(self.GetString("server_ip"))
server.PrivateKeySrc = strings.TrimSpace(self.GetString("private_key_src"))
server.PublicKeySrc = strings.TrimSpace(self.GetString("public_key_src"))
server.Detail = strings.TrimSpace(self.GetString("detail"))
server.Password = strings.TrimSpace(self.GetString("password"))
server.Type, _ = self.GetInt("type")
server.Port, _ = self.GetInt("port")
server.GroupId, _ = self.GetInt("group_id")
if err := server.Update(); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("", MSG_OK)
}
func (self *ServerController) AjaxDel() {
id, _ := self.GetInt("id")
server, _ := models.TaskServerGetById(id)
server.UpdateTime = time.Now().Unix()
server.Status = 1
server.Id = id
//TODO 查询服务器是否用于定时任务
if err := server.Update(); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("操作成功", MSG_OK)
}
func (self *ServerController) Table() {
//列表
page, err := self.GetInt("page")
if err != nil {
page = 1
}
limit, err := self.GetInt("limit")
if err != nil {
limit = 30
}
serverName := strings.TrimSpace(self.GetString("serverName"))
StatusText := []string{
"正常",
"<font color='red'>禁用</font>",
}
loginType := [2]string{
"密码",
"密钥",
}
serverGroup := serverGroupLists()
self.pageSize = limit
//查询条件
filters := make([]interface{}, 0)
filters = append(filters, "status", 0)
//
if serverName != "" {
filters = append(filters, "server_name__icontains", serverName)
}
result, count := models.TaskServerGetList(page, self.pageSize, filters...)
list := make([]map[string]interface{}, len(result))
for k, v := range result {
row := make(map[string]interface{})
row["id"] = v.Id
row["server_name"] = v.ServerName
row["detail"] = v.Detail
if serverGroup[v.GroupId] == "" {
v.GroupId = 0
}
row["group_name"] = serverGroup[v.GroupId]
row["type"] = loginType[v.Type]
row["status"] = v.Status
row["status_text"] = StatusText[v.Status]
list[k] = row
}
self.ajaxList("成功", MSG_OK, count, list)
}

View File

@@ -1,128 +0,0 @@
/************************************************************
** @Description: controllers
** @Author: haodaquan
** @Date: 2018-06-08 21:57
** @Last Modified by: haodaquan
** @Last Modified time: 2018-06-08 21:57
*************************************************************/
package controllers
import (
"strings"
"time"
"fmt"
"github.com/astaxie/beego"
"github.com/george518/PPGo_Job2/models"
)
type ServerGroupController struct {
BaseController
}
func (self *ServerGroupController) List() {
self.Data["pageTitle"] = "资源分组管理"
self.display()
}
func (self *ServerGroupController) Add() {
self.Data["pageTitle"] = "新增分组"
self.display()
}
func (self *ServerGroupController) Edit() {
self.Data["pageTitle"] = "编辑分组"
id, _ := self.GetInt("id", 0)
group, _ := models.TaskGroupGetById(id)
row := make(map[string]interface{})
row["id"] = group.Id
row["group_name"] = group.GroupName
row["description"] = group.Description
self.Data["group"] = row
self.display()
}
func (self *ServerGroupController) AjaxSave() {
servergroup := new(models.ServerGroup)
servergroup.GroupName = strings.TrimSpace(self.GetString("group_name"))
servergroup.Description = strings.TrimSpace(self.GetString("description"))
servergroup.Status = 1
servergroup_id, _ := self.GetInt("id")
fmt.Println(servergroup_id)
if servergroup_id == 0 {
//新增
servergroup.CreateTime = time.Now().Unix()
servergroup.UpdateTime = time.Now().Unix()
servergroup.CreateId = self.userId
servergroup.UpdateId = self.userId
if _, err := models.ServerGroupAdd(servergroup); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("", MSG_OK)
}
//修改
servergroup.Id = servergroup_id
servergroup.UpdateTime = time.Now().Unix()
servergroup.UpdateId = self.userId
if err := servergroup.Update(); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("", MSG_OK)
}
func (self *ServerGroupController) AjaxDel() {
group_id, _ := self.GetInt("id")
group, _ := models.TaskGroupGetById(group_id)
group.Status = 0
group.Id = group_id
group.UpdateTime = time.Now().Unix()
//TODO 如果分组下有服务器 需要处理
filters := make([]interface{}, 0)
filters = append(filters, "group_id", group_id)
filters = append(filters, "status", 0)
_, n := models.TaskServerGetList(1, 1, filters...)
if n > 0 {
self.ajaxMsg("分组下有服务器资源,请先处理", MSG_ERR)
}
if err := group.Update(); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("", MSG_OK)
}
func (self *ServerGroupController) Table() {
//列表
page, err := self.GetInt("page")
if err != nil {
page = 1
}
limit, err := self.GetInt("limit")
if err != nil {
limit = 30
}
groupName := strings.TrimSpace(self.GetString("groupName"))
self.pageSize = limit
//查询条件
filters := make([]interface{}, 0)
filters = append(filters, "status", 1)
if groupName != "" {
filters = append(filters, "group_name__contains", groupName)
}
result, count := models.ServerGroupGetList(page, self.pageSize, filters...)
list := make([]map[string]interface{}, len(result))
for k, v := range result {
row := make(map[string]interface{})
row["id"] = v.Id
row["group_name"] = v.GroupName
row["description"] = v.Description
row["create_time"] = beego.Date(time.Unix(v.CreateTime, 0), "Y-m-d H:i:s")
row["update_time"] = beego.Date(time.Unix(v.UpdateTime, 0), "Y-m-d H:i:s")
list[k] = row
}
self.ajaxList("成功", MSG_OK, count, list)
}

View File

@@ -1,172 +0,0 @@
/************************************************************
** @Description: controllers
** @Author: haodaquan
** @Date: 2018-06-11 21:11
** @Last Modified by: haodaquan
** @Last Modified time: 2018-06-11 21:11
*************************************************************/
package controllers
import (
"strings"
"time"
"github.com/astaxie/beego"
"github.com/george518/PPGo_Job2/models"
)
type TaskController struct {
BaseController
}
func (self *TaskController) List() {
self.Data["pageTitle"] = "任务管理"
self.display()
}
func (self *TaskController) Add() {
self.Data["pageTitle"] = "新增任务"
//self.Data["serverGroup"] = serverGroupLists()
self.Data["serverGroup"] = serverGroupLists()
//fmt.Println(self.Data["serverGroup"])
self.Data["taskGroup"] = taskGroupLists()
self.display()
}
func (self *TaskController) Edit() {
self.Data["pageTitle"] = "编辑任务"
id, _ := self.GetInt("id", 0)
server, _ := models.TaskServerGetById(id)
row := make(map[string]interface{})
row["id"] = server.Id
row["server_name"] = server.ServerName
row["group_id"] = server.GroupId
row["server_ip"] = server.ServerIp
row["server_account"] = server.ServerAccount
row["server_outer_ip"] = server.ServerOuterIp
row["port"] = server.Port
row["type"] = server.Type
row["password"] = server.Password
row["public_key_src"] = server.PublicKeySrc
row["private_key_src"] = server.PrivateKeySrc
row["detail"] = server.Detail
self.Data["server"] = row
self.Data["serverGroup"] = serverGroupLists()
self.display()
}
func (self *TaskController) AjaxSave() {
server_id, _ := self.GetInt("id")
if server_id == 0 {
server := new(models.TaskServer)
server.ServerName = strings.TrimSpace(self.GetString("server_name"))
server.ServerAccount = strings.TrimSpace(self.GetString("server_account"))
server.ServerOuterIp = strings.TrimSpace(self.GetString("server_outer_ip"))
server.ServerIp = strings.TrimSpace(self.GetString("server_ip"))
server.PrivateKeySrc = strings.TrimSpace(self.GetString("private_key_src"))
server.PublicKeySrc = strings.TrimSpace(self.GetString("public_key_src"))
server.Password = strings.TrimSpace(self.GetString("password"))
server.Detail = strings.TrimSpace(self.GetString("detail"))
server.Type, _ = self.GetInt("type")
server.Port, _ = self.GetInt("port")
server.GroupId, _ = self.GetInt("group_id")
server.CreateTime = time.Now().Unix()
server.UpdateTime = time.Now().Unix()
server.Status = 0
if _, err := models.TaskServerAdd(server); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("", MSG_OK)
}
server, _ := models.TaskServerGetById(server_id)
//修改
server.Id = server_id
server.UpdateTime = time.Now().Unix()
server.ServerName = strings.TrimSpace(self.GetString("server_name"))
server.ServerAccount = strings.TrimSpace(self.GetString("server_account"))
server.ServerOuterIp = strings.TrimSpace(self.GetString("server_outer_ip"))
server.ServerIp = strings.TrimSpace(self.GetString("server_ip"))
server.PrivateKeySrc = strings.TrimSpace(self.GetString("private_key_src"))
server.PublicKeySrc = strings.TrimSpace(self.GetString("public_key_src"))
server.Detail = strings.TrimSpace(self.GetString("detail"))
server.Password = strings.TrimSpace(self.GetString("password"))
server.Type, _ = self.GetInt("type")
server.Port, _ = self.GetInt("port")
server.GroupId, _ = self.GetInt("group_id")
if err := server.Update(); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("", MSG_OK)
}
func (self *TaskController) AjaxDel() {
id, _ := self.GetInt("id")
server, _ := models.TaskServerGetById(id)
server.UpdateTime = time.Now().Unix()
server.Status = 1
server.Id = id
//TODO 查询服务器是否用于定时任务
if err := server.Update(); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("操作成功", MSG_OK)
}
func (self *TaskController) Table() {
//列表
page, err := self.GetInt("page")
if err != nil {
page = 1
}
limit, err := self.GetInt("limit")
if err != nil {
limit = 30
}
taskName := strings.TrimSpace(self.GetString("taskName"))
StatusText := []string{
"<font color='red'><i class='fa fa-minus-square'></i></font>",
"<font color='green'><i class='fa fa-check-square'></i></font>",
}
taskGroup := taskGroupLists()
self.pageSize = limit
//查询条件
filters := make([]interface{}, 0)
filters = append(filters, "status", 0)
//
if taskName != "" {
filters = append(filters, "task_name__icontains", taskName)
}
result, count := models.TaskGetList(page, self.pageSize, filters...)
list := make([]map[string]interface{}, len(result))
for k, v := range result {
row := make(map[string]interface{})
row["id"] = v.Id
row["task_name"] = StatusText[v.Status] + "&nbsp;" + v.TaskName
row["description"] = v.Description
if name, ok := taskGroup[v.GroupId]; ok {
row["group_name"] = name
} else {
row["group_name"] = "默认分组"
}
//row["status_text"] = StatusText[v.Status]
row["status"] = v.Status
row["pre_time"] = beego.Date(time.Unix(v.PrevTime, 0), "Y-m-d H:i:s")
row["execute_times"] = v.ExecuteTimes
list[k] = row
}
self.ajaxList("成功", MSG_OK, count, list)
}

View File

@@ -1,128 +0,0 @@
/************************************************************
** @Description: controllers
** @Author: haodaquan
** @Date: 2018-06-10 22:24
** @Last Modified by: haodaquan
** @Last Modified time: 2018-06-10 22:24
*************************************************************/
package controllers
import (
"strings"
"time"
"fmt"
"github.com/astaxie/beego"
"github.com/george518/PPGo_Job2/models"
)
type GroupController struct {
BaseController
}
func (self *GroupController) List() {
self.Data["pageTitle"] = "任务分组管理"
self.display()
}
func (self *GroupController) Add() {
self.Data["pageTitle"] = "新增分组"
self.display()
}
func (self *GroupController) Edit() {
self.Data["pageTitle"] = "编辑分组"
id, _ := self.GetInt("id", 0)
group, _ := models.GroupGetById(id)
row := make(map[string]interface{})
row["id"] = group.Id
row["group_name"] = group.GroupName
row["description"] = group.Description
self.Data["group"] = row
self.display()
}
func (self *GroupController) AjaxSave() {
group := new(models.Group)
group.GroupName = strings.TrimSpace(self.GetString("group_name"))
group.Description = strings.TrimSpace(self.GetString("description"))
group.Status = 1
group_id, _ := self.GetInt("id")
fmt.Println(group_id)
if group_id == 0 {
//新增
group.CreateTime = time.Now().Unix()
group.UpdateTime = time.Now().Unix()
group.CreateId = self.userId
group.UpdateId = self.userId
if _, err := models.GroupAdd(group); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("", MSG_OK)
}
//修改
group.Id = group_id
group.UpdateTime = time.Now().Unix()
group.UpdateId = self.userId
if err := group.Update(); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("", MSG_OK)
}
func (self *GroupController) AjaxDel() {
group_id, _ := self.GetInt("id")
group, _ := models.GroupGetById(group_id)
group.Status = 0
group.Id = group_id
group.UpdateTime = time.Now().Unix()
//TODO 如果分组下有任务 不处理
//filters := make([]interface{}, 0)
//filters = append(filters, "group_id", group_id)
//filters = append(filters, "status", 0)
//_, n := models.TaskServerGetList(1, 1, filters...)
//if n > 0 {
// self.ajaxMsg("分组下有服务器资源,请先处理", MSG_ERR)
//}
if err := group.Update(); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("", MSG_OK)
}
func (self *GroupController) Table() {
//列表
page, err := self.GetInt("page")
if err != nil {
page = 1
}
limit, err := self.GetInt("limit")
if err != nil {
limit = 30
}
groupName := strings.TrimSpace(self.GetString("groupName"))
self.pageSize = limit
//查询条件
filters := make([]interface{}, 0)
filters = append(filters, "status", 1)
if groupName != "" {
filters = append(filters, "group_name__contains", groupName)
}
result, count := models.GroupGetList(page, self.pageSize, filters...)
list := make([]map[string]interface{}, len(result))
for k, v := range result {
row := make(map[string]interface{})
row["id"] = v.Id
row["group_name"] = v.GroupName
row["description"] = v.Description
row["create_time"] = beego.Date(time.Unix(v.CreateTime, 0), "Y-m-d H:i:s")
row["update_time"] = beego.Date(time.Unix(v.UpdateTime, 0), "Y-m-d H:i:s")
list[k] = row
}
self.ajaxList("成功", MSG_OK, count, list)
}

View File

@@ -1,78 +0,0 @@
/**********************************************
** @Des: 用户
** @Author: haodaquan
** @Date: 2017-09-16 14:17:37
** @Last Modified by: haodaquan
** @Last Modified time: 2017-09-17 11:14:07
***********************************************/
package controllers
import (
"strings"
"time"
"github.com/george518/PPGo_Job2/libs"
"github.com/george518/PPGo_Job2/models"
)
type UserController struct {
BaseController
}
func (self *UserController) Edit() {
self.Data["pageTitle"] = "资料修改"
id := self.userId
Admin, _ := models.AdminGetById(id)
row := make(map[string]interface{})
row["id"] = Admin.Id
row["login_name"] = Admin.LoginName
row["real_name"] = Admin.RealName
row["phone"] = Admin.Phone
row["email"] = Admin.Email
self.Data["admin"] = row
self.display()
}
func (self *UserController) AjaxSave() {
Admin_id, _ := self.GetInt("id")
Admin, _ := models.AdminGetById(Admin_id)
//修改
Admin.Id = Admin_id
Admin.UpdateTime = time.Now().Unix()
Admin.UpdateId = self.userId
Admin.LoginName = strings.TrimSpace(self.GetString("login_name"))
Admin.RealName = strings.TrimSpace(self.GetString("real_name"))
Admin.Phone = strings.TrimSpace(self.GetString("phone"))
Admin.Email = strings.TrimSpace(self.GetString("email"))
resetPwd := self.GetString("reset_pwd")
if resetPwd == "1" {
pwdOld := strings.TrimSpace(self.GetString("password_old"))
pwdOldMd5 := libs.Md5([]byte(pwdOld + Admin.Salt))
if Admin.Password != pwdOldMd5 {
self.ajaxMsg("旧密码错误", MSG_ERR)
}
pwdNew1 := strings.TrimSpace(self.GetString("password_new1"))
pwdNew2 := strings.TrimSpace(self.GetString("password_new2"))
if len(pwdNew1) < 6 {
self.ajaxMsg("密码长度需要六位以上", MSG_ERR)
}
if pwdNew1 != pwdNew2 {
self.ajaxMsg("两次密码不一致", MSG_ERR)
}
pwd, salt := libs.Password(4, pwdNew1)
Admin.Password = pwd
Admin.Salt = salt
}
Admin.UpdateTime = time.Now().Unix()
Admin.UpdateId = self.userId
Admin.Status = 1
if err := Admin.Update(); err != nil {
self.ajaxMsg(err.Error(), MSG_ERR)
}
self.ajaxMsg("", MSG_OK)
}

View File

@@ -1,69 +0,0 @@
/**********************************************
** @Des: This file ...
** @Author: haodaquan
** @Date: 2017-09-08 00:24:25
** @Last Modified by: haodaquan
** @Last Modified time: 2017-09-17 10:12:06
***********************************************/
package libs
import (
"crypto/md5"
"fmt"
"math/rand"
"regexp"
"time"
)
var emailPattern = regexp.MustCompile("[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[a-zA-Z0-9](?:[\\w-]*[\\w])?")
func Md5(buf []byte) string {
hash := md5.New()
hash.Write(buf)
return fmt.Sprintf("%x", hash.Sum(nil))
}
func SizeFormat(size float64) string {
units := []string{"Byte", "KB", "MB", "GB", "TB"}
n := 0
for size > 1024 {
size /= 1024
n += 1
}
return fmt.Sprintf("%.2f %s", size, units[n])
}
func IsEmail(b []byte) bool {
return emailPattern.Match(b)
}
func Password(len int, pwdO string) (pwd string, salt string) {
salt = GetRandomString(4)
defaultPwd := "george518"
if pwdO != "" {
defaultPwd = pwdO
}
pwd = Md5([]byte(defaultPwd + salt))
return pwd, salt
}
// 生成32位MD5
// func MD5(text string) string{
// ctx := md5.New()
// ctx.Write([]byte(text))
// return hex.EncodeToString(ctx.Sum(nil))
// }
//生成随机字符串
func GetRandomString(lens int) string {
str := "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
bytes := []byte(str)
result := []byte{}
r := rand.New(rand.NewSource(time.Now().UnixNano()))
for i := 0; i < lens; i++ {
result = append(result, bytes[r.Intn(len(bytes))])
}
return string(result)
}

View File

@@ -1,29 +0,0 @@
/************************************************************
** @Description: PPGo_Job2
** @Author: haodaquan
** @Date: 2018-06-05 22:24
** @Last Modified by: haodaquan
** @Last Modified time: 2018-06-05 22:24
*************************************************************/
package main
import (
"github.com/astaxie/beego"
"github.com/george518/PPGo_Job2/models"
_ "github.com/george518/PPGo_Job2/routers"
)
const (
VERSION = "1.0.0"
)
func init() {
//初始化数据模型
models.Init()
//jobs.InitJobs()
}
func main() {
beego.BConfig.WebConfig.Session.SessionOn = true
beego.Run()
}

View File

@@ -1,96 +0,0 @@
/**********************************************
** @Des: This file ...
** @Author: haodaquan
** @Date: 2017-09-16 15:42:43
** @Last Modified by: haodaquan
** @Last Modified time: 2017-09-17 11:48:17
***********************************************/
package models
import (
"github.com/astaxie/beego/orm"
)
type Admin struct {
Id int
LoginName string
RealName string
Password string
RoleIds string
Phone string
Email string
Salt string
LastLogin int64
LastIp string
Status int
CreateId int
UpdateId int
CreateTime int64
UpdateTime int64
}
func (a *Admin) TableName() string {
return TableName("uc_admin")
}
func AdminAdd(a *Admin) (int64, error) {
return orm.NewOrm().Insert(a)
}
func AdminGetByName(loginName string) (*Admin, error) {
a := new(Admin)
err := orm.NewOrm().QueryTable(TableName("uc_admin")).Filter("login_name", loginName).One(a)
if err != nil {
return nil, err
}
return a, nil
}
func AdminGetList(page, pageSize int, filters ...interface{}) ([]*Admin, int64) {
offset := (page - 1) * pageSize
list := make([]*Admin, 0)
query := orm.NewOrm().QueryTable(TableName("uc_admin"))
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(&list)
return list, total
}
func AdminGetById(id int) (*Admin, error) {
r := new(Admin)
err := orm.NewOrm().QueryTable(TableName("uc_admin")).Filter("id", id).One(r)
if err != nil {
return nil, err
}
return r, nil
}
func (a *Admin) Update(fields ...string) error {
if _, err := orm.NewOrm().Update(a, fields...); err != nil {
return err
}
return nil
}
// func RoleAuthDelete(id int) (int64, error) {
// query := orm.NewOrm().QueryTable(TableName("role_auth"))
// return query.Filter("role_id", id).Delete()
// }
// func RoleAuthMultiAdd(ras []*RoleAuth) (n int, err error) {
// query := orm.NewOrm().QueryTable(TableName("role_auth"))
// i, _ := query.PrepareInsert()
// for _, ra := range ras {
// _, err := i.Insert(ra)
// if err == nil {
// n = n + 1
// }
// }
// i.Close() // 别忘记关闭 statement
// return n, err
// }

View File

@@ -1,92 +0,0 @@
/**********************************************
** @Des: 权限因子
** @Author: haodaquan
** @Date: 2017-09-09 20:50:36
** @Last Modified by: haodaquan
** @Last Modified time: 2017-09-17 21:42:08
***********************************************/
package models
import (
"fmt"
"github.com/astaxie/beego/orm"
)
type Auth struct {
Id int
AuthName string
AuthUrl string
UserId int
Pid int
Sort int
Icon string
IsShow int
Status int
CreateId int
UpdateId int
CreateTime int64
UpdateTime int64
}
func (a *Auth) TableName() string {
return TableName("uc_auth")
}
func AuthGetList(page, pageSize int, filters ...interface{}) ([]*Auth, int64) {
offset := (page - 1) * pageSize
list := make([]*Auth, 0)
query := orm.NewOrm().QueryTable(TableName("uc_auth"))
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("pid", "sort").Limit(pageSize, offset).All(&list)
return list, total
}
func AuthGetListByIds(authIds string, userId int) ([]*Auth, error) {
list1 := make([]*Auth, 0)
var list []orm.Params
//list:=[]orm.Params
var err error
if userId == 1 {
//超级管理员
_, err = orm.NewOrm().Raw("select id,auth_name,auth_url,pid,icon,is_show from pp_uc_auth where status=? order by pid asc,sort asc", 1).Values(&list)
} else {
_, err = orm.NewOrm().Raw("select id,auth_name,auth_url,pid,icon,is_show from pp_uc_auth where status=1 and id in("+authIds+") order by pid asc,sort asc", authIds).Values(&list)
}
for k, v := range list {
fmt.Println(k, v)
}
fmt.Println(list)
return list1, err
}
func AuthAdd(auth *Auth) (int64, error) {
return orm.NewOrm().Insert(auth)
}
func AuthGetById(id int) (*Auth, error) {
a := new(Auth)
err := orm.NewOrm().QueryTable(TableName("uc_auth")).Filter("id", id).One(a)
if err != nil {
return nil, err
}
return a, nil
}
func (a *Auth) Update(fields ...string) error {
if _, err := orm.NewOrm().Update(a, fields...); err != nil {
return err
}
return nil
}

View File

@@ -1,81 +0,0 @@
/************************************************************
** @Description: models
** @Author: haodaquan
** @Date: 2018-06-10 19:51
** @Last Modified by: haodaquan
** @Last Modified time: 2018-06-10 19:51
*************************************************************/
/************************************************************
** @Description: models
** @Author: haodaquan
** @Date: 2018-06-08 21:49
** @Last Modified by: haodaquan
** @Last Modified time: 2018-06-08 21:49
*************************************************************/
package models
import (
"fmt"
"github.com/astaxie/beego/orm"
)
type Ban struct {
Id int
Code string
CreateTime int64
UpdateTime int64
Status int
}
func (t *Ban) TableName() string {
return TableName("task_ban")
}
func (t *Ban) Update(fields ...string) error {
if t.Code == "" {
return fmt.Errorf("命令不能为空")
}
if _, err := orm.NewOrm().Update(t, fields...); err != nil {
return err
}
return nil
}
func BanAdd(obj *Ban) (int64, error) {
if obj.Code == "" {
return 0, fmt.Errorf("命令不能为空")
}
return orm.NewOrm().Insert(obj)
}
func BanGetById(id int) (*Ban, error) {
obj := &Ban{
Id: id,
}
err := orm.NewOrm().Read(obj)
if err != nil {
return nil, err
}
return obj, nil
}
func BanDelById(id int) error {
_, err := orm.NewOrm().QueryTable(TableName("task_ban")).Filter("id", id).Delete()
return err
}
func BanGetList(page, pageSize int, filters ...interface{}) ([]*Ban, int64) {
offset := (page - 1) * pageSize
list := make([]*Ban, 0)
query := orm.NewOrm().QueryTable(TableName("task_ban"))
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(&list)
return list, total
}

View File

@@ -1,55 +0,0 @@
/*
* @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"
"fmt"
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)
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"
fmt.Println(dsn)
if timezone != "" {
dsn = dsn + "&loc=" + url.QueryEscape(timezone)
}
orm.RegisterDataBase("default", "mysql", dsn)
orm.RegisterModel(
new(Admin),
new(Auth),
new(Role),
new(RoleAuth),
new(ServerGroup),
new(TaskServer),
new(Ban),
new(Group),
new(Task),
)
if beego.AppConfig.String("runmode") == "dev" {
orm.Debug = true
}
}
func TableName(name string) string {
return beego.AppConfig.String("db.prefix") + name
}

View File

@@ -1,66 +0,0 @@
/**********************************************
** @Des: This file ...
** @Author: haodaquan
** @Date: 2017-09-14 15:24:51
** @Last Modified by: haodaquan
** @Last Modified time: 2017-09-17 11:48:52
***********************************************/
package models
import (
"github.com/astaxie/beego/orm"
)
type Role struct {
Id int
RoleName string
Detail string
Status int
CreateId int
UpdateId int
CreateTime int64
UpdateTime int64
}
func (a *Role) TableName() string {
return TableName("uc_role")
}
func RoleGetList(page, pageSize int, filters ...interface{}) ([]*Role, int64) {
offset := (page - 1) * pageSize
list := make([]*Role, 0)
query := orm.NewOrm().QueryTable(TableName("uc_role"))
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(&list)
return list, total
}
func RoleAdd(role *Role) (int64, error) {
id, err := orm.NewOrm().Insert(role)
if err != nil {
return 0, err
}
return id, nil
}
func RoleGetById(id int) (*Role, error) {
r := new(Role)
err := orm.NewOrm().QueryTable(TableName("uc_role")).Filter("id", id).One(r)
if err != nil {
return nil, err
}
return r, nil
}
func (r *Role) Update(fields ...string) error {
if _, err := orm.NewOrm().Update(r, fields...); err != nil {
return err
}
return nil
}

View File

@@ -1,77 +0,0 @@
/**********************************************
** @Des: This file ...
** @Author: haodaquan
** @Date: 2017-09-15 11:44:13
** @Last Modified by: haodaquan
** @Last Modified time: 2017-09-17 11:49:13
***********************************************/
package models
import (
"bytes"
"strconv"
"strings"
"github.com/astaxie/beego/orm"
)
type RoleAuth struct {
AuthId int `orm:"pk"`
RoleId int64
}
func (ra *RoleAuth) TableName() string {
return TableName("uc_role_auth")
}
func RoleAuthAdd(ra *RoleAuth) (int64, error) {
return orm.NewOrm().Insert(ra)
}
func RoleAuthGetById(id int) ([]*RoleAuth, error) {
list := make([]*RoleAuth, 0)
query := orm.NewOrm().QueryTable(TableName("uc_role_auth"))
_, err := query.Filter("role_id", id).All(&list, "AuthId")
if err != nil {
return nil, err
}
return list, nil
}
func RoleAuthDelete(id int) (int64, error) {
query := orm.NewOrm().QueryTable(TableName("uc_role_auth"))
return query.Filter("role_id", id).Delete()
}
//获取多个
func RoleAuthGetByIds(RoleIds string) (Authids string, err error) {
list := make([]*RoleAuth, 0)
query := orm.NewOrm().QueryTable(TableName("uc_role_auth"))
ids := strings.Split(RoleIds, ",")
_, err = query.Filter("role_id__in", ids).All(&list, "AuthId")
if err != nil {
return "", err
}
b := bytes.Buffer{}
for _, v := range list {
if v.AuthId != 0 && v.AuthId != 1 {
b.WriteString(strconv.Itoa(v.AuthId))
b.WriteString(",")
}
}
Authids = strings.TrimRight(b.String(), ",")
return Authids, nil
}
func RoleAuthMultiAdd(ras []*RoleAuth) (n int, err error) {
query := orm.NewOrm().QueryTable(TableName("uc_role_auth"))
i, _ := query.PrepareInsert()
for _, ra := range ras {
_, err := i.Insert(ra)
if err == nil {
n = n + 1
}
}
i.Close() // 别忘记关闭 statement
return n, err
}

View File

@@ -1,116 +0,0 @@
/************************************************************
** @Description: models
** @Author: haodaquan
** @Date: 2018-06-09 16:11
** @Last Modified by: haodaquan
** @Last Modified time: 2018-06-09 16:11
*************************************************************/
package models
import (
"fmt"
"github.com/astaxie/beego/orm"
)
type TaskServer struct {
Id int
GroupId int
ServerName string
ServerAccount string
ServerOuterIp 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, filters ...interface{}) ([]*TaskServer, int64) {
offset := (page - 1) * pageSize
list := make([]*TaskServer, 0)
query := orm.NewOrm().QueryTable(TableName("task_server"))
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(&list)
return list, total
}

View File

@@ -1,77 +0,0 @@
/************************************************************
** @Description: models
** @Author: haodaquan
** @Date: 2018-06-08 21:49
** @Last Modified by: haodaquan
** @Last Modified time: 2018-06-08 21:49
*************************************************************/
package models
import (
"fmt"
"github.com/astaxie/beego/orm"
)
type ServerGroup struct {
Id int
CreateId int
UpdateId int
GroupName string
Description string
CreateTime int64
UpdateTime int64
Status int
}
func (t *ServerGroup) TableName() string {
return TableName("task_server_group")
}
func (t *ServerGroup) Update(fields ...string) error {
if t.GroupName == "" {
return fmt.Errorf("组名不能为空")
}
if _, err := orm.NewOrm().Update(t, fields...); err != nil {
return err
}
return nil
}
func ServerGroupAdd(obj *ServerGroup) (int64, error) {
if obj.GroupName == "" {
return 0, fmt.Errorf("组名不能为空")
}
return orm.NewOrm().Insert(obj)
}
func TaskGroupGetById(id int) (*ServerGroup, error) {
obj := &ServerGroup{
Id: id,
}
err := orm.NewOrm().Read(obj)
if err != nil {
return nil, err
}
return obj, nil
}
func ServerGroupDelById(id int) error {
_, err := orm.NewOrm().QueryTable(TableName("task_server_group")).Filter("id", id).Delete()
return err
}
func ServerGroupGetList(page, pageSize int, filters ...interface{}) ([]*ServerGroup, int64) {
offset := (page - 1) * pageSize
list := make([]*ServerGroup, 0)
query := orm.NewOrm().QueryTable(TableName("task_server_group"))
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(&list)
return list, total
}

View File

@@ -1,108 +0,0 @@
/************************************************************
** @Description: models
** @Author: haodaquan
** @Date: 2018-06-11 21:26
** @Last Modified by: haodaquan
** @Last Modified time: 2018-06-11 21:26
*************************************************************/
package models
import (
"fmt"
"time"
"github.com/astaxie/beego/orm"
)
const (
TASK_SUCCESS = 0 // 任务执行成功
TASK_ERROR = -1 // 任务执行出错
TASK_TIMEOUT = -2 // 任务执行超时
)
type Task struct {
Id int
GroupId int
TaskName string
Description string
CronSpec string
Concurrent int
Command string
Timeout int
ExecuteTimes int
PrevTime int64
Status int
CreateId int
UpdateId int
CreateTime int64
UpdateTime 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
}

View File

@@ -1,78 +0,0 @@
/************************************************************
** @Description: models
** @Author: haodaquan
** @Date: 2018-06-10 22:24
** @Last Modified by: haodaquan
** @Last Modified time: 2018-06-10 22:24
*************************************************************/
package models
import (
"fmt"
"github.com/astaxie/beego/orm"
)
type Group struct {
Id int
CreateId int
UpdateId int
GroupName string
Description string
CreateTime int64
UpdateTime int64
Status int
}
func (t *Group) TableName() string {
return TableName("task_group")
}
func (t *Group) Update(fields ...string) error {
if t.GroupName == "" {
return fmt.Errorf("组名不能为空")
}
if _, err := orm.NewOrm().Update(t, fields...); err != nil {
return err
}
return nil
}
func GroupAdd(obj *Group) (int64, error) {
if obj.GroupName == "" {
return 0, fmt.Errorf("组名不能为空")
}
return orm.NewOrm().Insert(obj)
}
func GroupGetById(id int) (*Group, error) {
obj := &Group{
Id: id,
}
err := orm.NewOrm().Read(obj)
if err != nil {
return nil, err
}
return obj, nil
}
func GroupDelById(id int) error {
_, err := orm.NewOrm().QueryTable(TableName("task_group")).Filter("id", id).Delete()
return err
}
func GroupGetList(page, pageSize int, filters ...interface{}) ([]*Group, int64) {
offset := (page - 1) * pageSize
list := make([]*Group, 0)
query := orm.NewOrm().QueryTable(TableName("task_group"))
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(&list)
return list, total
}

File diff suppressed because one or more lines are too long

View File

@@ -1,37 +0,0 @@
package routers
import (
"github.com/astaxie/beego"
"github.com/george518/PPGo_Job2/controllers"
)
func init() {
// 默认登录
//beego.Router("/", &controllers.MainController{}, "*:Index")
beego.Router("/", &controllers.LoginController{}, "*:Login")
beego.Router("/login_in", &controllers.LoginController{}, "*:LoginIn")
beego.Router("/login_out", &controllers.LoginController{}, "*:LoginOut")
//beego.Router("/no_auth", &controllers.LoginController{}, "*:NoAuth")
beego.Router("/home", &controllers.HomeController{}, "*:Index")
beego.Router("/home/start", &controllers.HomeController{}, "*:Start")
//beego.AutoRouter(&controllers.ApiController{})
//beego.AutoRouter(&controllers.ApiSourceController{})
//beego.AutoRouter(&controllers.ApiPublicController{})
//beego.AutoRouter(&controllers.TemplateController{})
//beego.AutoRouter(&controllers.ApiDocController{})
//// beego.AutoRouter(&controllers.ApiMonitorController{})
//beego.AutoRouter(&controllers.EnvController{})
beego.AutoRouter(&controllers.TaskController{})
beego.AutoRouter(&controllers.GroupController{})
//资源分组管理
beego.AutoRouter(&controllers.ServerGroupController{})
beego.AutoRouter(&controllers.ServerController{})
beego.AutoRouter(&controllers.BanController{})
//权限用户相关
beego.AutoRouter(&controllers.AuthController{})
beego.AutoRouter(&controllers.RoleController{})
beego.AutoRouter(&controllers.AdminController{})
beego.AutoRouter(&controllers.UserController{})
}

View File

@@ -1,87 +0,0 @@
/*
* @Author: georgehao
* @Date: 2018-04-08 09:50:56
* @Last Modified by: george
* @Last Modified time: 2018-04-10 15:47:52
*/
.nav-title{
height: 45px;
border: #e4e4e4 1px solid;
line-height: 45px;
padding-left: 10px;
padding-right: 10px;
margin-bottom: 10px;
}
.tl{
text-align: left;
}
.tr{
text-align: right;
}
.fl{
float: left;
}
.fr{
float: right;
}
.ml20{
margin-left: 20px;
}
.pp-main{
padding-left: 20px;
padding-right: 20px;
}
.pp-form .width20{
width: 20%;
}
.pp-form .width40{
width: 40%;
}
.pp-form .width60{
width: 60%;
}
.pp-form .width90{
width: 90%;
}
/*pre.prettyprinted,pre.prettyprinted ol li{
background: #393D49 !important;
}*/
/*上传框*/
.input-file{
display: inline-block;
position: relative;
overflow: hidden;
}
.input-file input[type="file"] {
position: absolute;
top: 0;
right: 0;
font-size: 14px;
background-color: #fff;
transform: translate(-300px, 0px) scale(4);
height: 40px;
opacity: 0;
filter: alpha(opacity=0);
}
.search_text{
text-align: right;padding-right: 10px;
}
.mw400{
min-width: 400px;
}
.mw200{
min-width: 200px;
}

View File

@@ -1,106 +0,0 @@
/*
* @Author: georgehao
* @Date: 2018-04-08 09:50:56
* @Last Modified by: haodaquan
* @Last Modified time: 2018-04-08 22:33:36
*/
.layui-header{
height:50px;
}
.layui-layout-admin .layui-logo{
line-height:50px;
height:50px;
font-size:20px;
}
.layui-nav layui-layout-right{
line-height:50px;
height: 50px;
}
.layui-layout-admin .layui-side{
top:50px;
}
.layui-layout-admin .layui-body{
top:50px;
}
.pp-nav-item{
line-height: 50px !important;
height: 50px !important;
}
.pp-nav-child a{
line-height: 30px!important;
height: 30px!important;
}
.pp-nav-item a{
line-height: 50px;
height: 50px;
}
.layui-nav .layui-nav-item .layui-nav-itemed{
line-height: 50px;
height: 50px;
}
.layui-nav-child{
top:50px;
}
.layui-layout-admin .layui-footer{
line-height: 35px;
height: 35px;
}
.pp-side-fold {
height: 30px;
background-color: #4A5064;
color: #aeb9c2;
line-height: 30px;
text-align: center;
cursor: pointer
}
.back_space1{
margin-right: 5px;
}
a.pointer{
cursor: pointer;
}
.pp-ddsided{
width: 50px;
}
a.pp-pointer{
padding-right: 0px !important;
}
.pp-sided{
width: 50px;
}
.pp-main{
left: 50px !important;
}
.pp-tab{
margin-top:0px;
}
.pp-tab-title{
background: #000;
}
.layui-this{
background: #fff;
}
.layui-tab-title li.pp-tab-li{
border: 0px;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 434 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,2 +0,0 @@
/** layui-v2.2.6 MIT License By https://www.layui.com */
html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 701 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Some files were not shown because too many files have changed in this diff Show More