core

package
v0.0.0-...-9a229c4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 1, 2019 License: MIT Imports: 36 Imported by: 0

Documentation

Overview

aes加解密

验证token中间件

通用工具类

核心包初始化

日志处理,使用logrus日志框架

通行证

rbac 权限相关

gin默认的没有返回错误码给前端,所以需要重新自定义(用的还是gin本身处理方式稍微改造了一下)

session相关

数据库操作

类型别名,所有都用单字母标识,没有特殊含义,只是为了方便编写

Index

Constants

View Source
const (
	//长度16、24、32必须是这三种中的一种,否则加密解密是报错
	AesSalt           = "amasd-salt123456"
	SessionCookieName = "AMASD_SESSION_ID"
	SessionExpires    = 1800
	EnvDev            = "dev"
	EnvTesting        = "testing"
	EnvProduction     = "production"
	ErrorDir          = "error"
	LogTypeDb         = "db"
	LogTypeProject    = "project"
	LogTypeSpider     = "spiders"
	LogTypeTask       = "task"
	LogTypeServer     = "server"
	LogTypeAdmin      = "admin"
	LogTypeScrapyd    = "scrapyd"
	LogTypeInit       = "init"
	LogTypeSystem     = "system"
)
View Source
const (
	Stdout int32 = iota
	Stderr
	RotateLogs
)

所有输出类型

View Source
const SuperAdminRoleId = 1 //超级管理员角色id

Variables

View Source
var (
	//返回码
	PromptMsg = map[string]string{
		"success":  "成功",
		"fail":     "未知错误",
		"no_login": "重新登录",

		"parameter_error":    "参数错误",
		"parameter_required": "请输入必填项",
		"add_error":          "添加失败",
		"update_error":       "更新失败",
		"del_error":          "删除失败",
		"extra_long_error":   "%s最多可输入%s字符",

		"token_valid":   "Token 无效",
		"token_expired": "Token 过期",

		"login_password_error": "用户名或密码错误",
		"login_user_disable":   "此用户不允许登录",

		"scrapyd_server_error":              "请检查爬虫服务器是否可用",
		"file_upload_error":                 "请确定上传正确的文件",
		"host_error":                        "请输入正确的服务器访问地址",
		"host_repeat_error":                 "此服务器已存在不能重复添加",
		"server_info_error":                 "服务器信息获取错误",
		"server_username_error":             "请输入服务器用户名和密码",
		"server_cutback_task_running_error": "所减少的服务器有正在运行的爬虫或者定时任务,请先删除或者停止",
		"server_del_task_running_error":     "此服务器有正在运行的爬虫或者定时任务,请先删除或者停止",
		"server_monitor_address_error":      "请输入监控地址",
		"server_monitor_password_error":     "请输入监控访问密码",

		"project_name_repeat":               "项目名称重复,请重新输入",
		"project_version_repeat":            "项目版本号重复,请重新输入",
		"project_info_error":                "项目信息获取错误",
		"project_server_error":              "请选择已有服务器",
		"project_server_relation_error":     "部分服务器关联失败,请重试,包括: %s",
		"project_update_version_error":      "部分服务器版本更新失败,请重新操作",
		"project_no_server":                 "当前项目无可用服务器,请先关联服务器",
		"project_server_relation_all_error": "服务器关联失败,请重新操作",
		"task_running_error":                "当前项目有正在运行的爬虫不允许更新,请手动关闭或等待执行完",
		"project_spider_number_error":       "获取不到项目下爬虫信息,请重新尝试",
		"project_spider_update_error":       "爬虫信息更新失败,请重新尝试",
		"project_del_error":                 "项目删除失败,请重试(某些服务器上的项目文件可能已经删除)",
		"project_task_running_error":        "当前项目有正在运行的爬虫或者定时任务,请先删除或者停止",

		"task_add_error":    "部分任务添加失败,包括: %s",
		"task_update_error": "部分任务停止失败,包括: %s",

		"system_username_error":               "请输入用户名",
		"system_username_repeat_error":        "用户名重复",
		"system_email_format_error":           "请输入正确的邮箱",
		"system_email_repeat_error":           "邮箱重复",
		"system_display_name_error":           "请输入昵称",
		"system_password_error":               "请输入密码",
		"system_password_not_equal_error":     "密码输入不一致",
		"system_admin_not_del_error":          "此用户不允许删除",
		"system_menu_error":                   "密码输入不一致",
		"system_menu_name_error":              "请输入菜单名称",
		"system_menu_app_error":               "输入模块名称",
		"system_menu_controller_error":        "输入控制器名称",
		"system_menu_action_error":            "输入方法名称",
		"system_menu_status_error":            "状态类型错误",
		"system_menu_info_error":              "菜单信息获取失败",
		"system_notice_scrapyd_error":         "请输入scrapyd服务异常通知标题和内容",
		"system_notice_task_finished_error":   "请输入任务运行结束通知标题和内容",
		"system_notice_task_error":            "请输入任务运行异常通知标题和内容",
		"system_notice_email_smtp_error":      "请输入正确的发件服务器",
		"system_notice_email_error":           "请输入邮箱设置相关信息",
		"system_notice_email_port_error":      "请输入正确的发件服务器端口",
		"system_notice_email_address_error":   "请输入正确的发件人邮箱地址",
		"system_notice_email_addressee_error": "请输入正确的收件人邮箱地址",
		"system_notice_dingtalk_error":        "请输入钉钉群机器人webhook地址",
		"system_notice_work_weixin_error":     "请输入企业微信群机器人webhook地址",
		"system_notice_webhook_error":         "请输入正确的的webhook地址",
	}
	//运行文件所在路径
	RootPath = ""
	//当前运行环境
	Env = ""
	//监听端口
	HttpPort       = "8000"
	NoticeSettings = B{}
)
View Source
var (
	Cron *cron.Cron
)
View Source
var Log = logrus.New()
View Source
var (
	SessionUserInfoKey = "session_user_info"
)

Functions

func AesDecrypt

func AesDecrypt(cryted string) string

func AesEncrypt

func AesEncrypt(orig string) string

func AuthValidateToken

func AuthValidateToken(c *gin.Context)

验证Token

func Bytes2Str

func Bytes2Str(b []byte) string

字节数组转字符串

func CalculationPages

func CalculationPages(totalCount int, pageSize int) int

计算页数

func CheckLoginStatus

func CheckLoginStatus(a Auth) gin.HandlerFunc

检查登录状态

func CompletionUrl

func CompletionUrl(url string) string

补全url

func DateToTimestamp

func DateToTimestamp(date string) int

日期格式化成时间戳

func Error

func Error(c *gin.Context, message string)

错误跳转

func FormatDateByString

func FormatDateByString(timestamp string, format ...string) string

格式化字符串类型的时间戳

func GenerateToken

func GenerateToken(id int64) string

生成Token

func GetPassportInstance

func GetPassportInstance() *passport

获取当前对象实例

func GetRbacInstance

func GetRbacInstance() *rbac

获取当前对象实例

func GetSession

func GetSession() sessions.Session

获取session

func InIntArray

func InIntArray(element int, target []int) bool

判断元素是否在数字数组中

func InStringArray

func InStringArray(element string, array []string) bool

判断元素是否在字符串数组中

func InitCron

func InitCron()

func InitDb

func InitDb(dbPath string)

func InitLog

func InitLog(logPath string)

初始化日志

func IsAjax

func IsAjax(c *gin.Context) bool

判断请求是否为ajax

func IsDomain

func IsDomain(d string) bool

验证域名 xxx.xx.xx 或者 xxx.xx.xx.xx

func IsEmail

func IsEmail(email string) bool

验证邮箱

func IsNumber

func IsNumber(s string) bool

func IsUrl

func IsUrl(url string) bool

验证给定的参数是否是url格式

func JoinBatchUpdateSql

func JoinBatchUpdateSql(table string, fields []B, whereField string) string

拼接批量更新sql

func Md5

func Md5(str string) string

func NewHook

func NewHook(output WriterMap, formatter logrus.Formatter, rl *rotatelogs.RotateLogs) *writePathHook

生成一个新的钩子

func NowToDate

func NowToDate(format ...string) string

格式化当前系统时间

func PKCS7Padding

func PKCS7Padding(ciphertext []byte, blocksize int) []byte

补码

func PKCS7UnPadding

func PKCS7UnPadding(origData []byte) []byte

去码

func RecoveryWithWriter

func RecoveryWithWriter() gin.HandlerFunc

恢复任何异常,此处使用了gin原生捕获错误的代码,这里只是为了将错误信息通过logrus的方式写入日志文件

func SetSession

func SetSession() gin.HandlerFunc

设置session

func Str2bytes

func Str2bytes(s string) []byte

字符串转换字节数组

func StringArrayToInt

func StringArrayToInt(str []string) []int

字符串数组转换成int类型数组

func SupplementDir

func SupplementDir(path string) string

补充路径

func TimeDifference

func TimeDifference(startTimestamp int, endTimestamp int) string

计算两个时间戳的时间差

func TrimHtml

func TrimHtml(src string) string

去除内容的html标签

func WriteLog

func WriteLog(logType string, logLevel logrus.Level, fields logrus.Fields, log ...interface{})

记录日志

Types

type A

type A map[string]interface{}

func PageResponse

func PageResponse(items interface{}, page int, pageSize int, totalCount int) A

type ApiAuth

type ApiAuth struct{}

api验证

func (*ApiAuth) Check

func (a *ApiAuth) Check(c *gin.Context)

type Auth

type Auth interface {
	Check(c *gin.Context) //校验具体的信息
}

初始验证,主要用于web的登录和api的token

type B

type B map[string]string

type BaseController

type BaseController struct{}

func (*BaseController) Fail

func (b *BaseController) Fail(c *gin.Context, data ...interface{})

func (*BaseController) Success

func (b *BaseController) Success(c *gin.Context, data A, message ...interface{})

type BaseModel

type BaseModel struct {
}

func (*BaseModel) Delete

func (b *BaseModel) Delete(obj interface{}) bool

func (*BaseModel) Insert

func (b *BaseModel) Insert(obj interface{}) bool

type C

type C map[string]B

type Curl

type Curl struct {
	ResponseHeaders map[string]string
	ResponseBody    string
	// contains filtered or unexported fields
}

Request构造类

func NewCurl

func NewCurl() *Curl

创建一个Curl实例

func (*Curl) Delete

func (c *Curl) Delete(url string) (string, error)

发起Delete请求

func (*Curl) Get

func (c *Curl) Get(url string, params B) (string, error)

发起get请求

func (*Curl) PATCH

func (c *Curl) PATCH(url string) (string, error)

发起put请求

func (*Curl) Post

func (c *Curl) Post(url string, params A) (string, error)

发起post请求

func (*Curl) PostForm

func (c *Curl) PostForm(url string, postData *bytes.Buffer) (string, error)

func (*Curl) Put

func (c *Curl) Put(url string) (string, error)

发起Put请求

func (*Curl) SetCookies

func (c *Curl) SetCookies(cookies B) *Curl

设置请求cookies

func (*Curl) SetHeaders

func (c *Curl) SetHeaders(headers B) *Curl

设置请求头

func (*Curl) SetTimeOut

func (c *Curl) SetTimeOut(TimeOutSecond int) *Curl

设置超时时间

type Timestamp

type Timestamp int

func (Timestamp) MarshalJSON

func (t Timestamp) MarshalJSON() ([]byte, error)

type WebAuth

type WebAuth struct{}

web验证

func (*WebAuth) Check

func (w *WebAuth) Check(c *gin.Context)

type WriterMap

type WriterMap map[logrus.Level]int32

不同日志等级的写入类型

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL