zoukankan      html  css  js  c++  java
  • GinAdmin——基于golang的web管理平台

    GinAdmin

    这个项目是以Gin框架为基础搭建的后台管理平台,虽然很多人都认为go是用来开发高性能服务端项目的,但是也难免有要做web管理端的需求,总不能再使用别的语言来开发吧。所以整合出了GinAdmin项目,请大家多提意见指正!

    GitHub地址

    依赖

    • golang > 1.8

    依赖

    • Gin
    • BootStrap
    • LayUi
    • WebUpload

    使用文档

    开始使用

    1. git 克隆地址

      git clone https://github.com/gphper/ginadmin.git
      
    2. 下载依赖包

      go mod download
      
    3. 配置 conf/config.ini文件

      [mysql]
      username=root
      password=123456
      database=db_beego
      host=127.0.0.1
      port=3306
      max_open_conn=50
      max_idle_conn=20
      [session]
      session_name=gosession_id
      [base]
      port=:8091
      

    项目目录

    |--api  // Api接口控制器
    |--comment // 封装的公共方法
    |--conf // 配置文件
    |--controllers // Admin控制器存在目录
    |--logs // 日志存放目录
    |--middleware //中间件
    |--models //Gorm中的model类
    |--router //自定义路由目录
    |--statics //css js等静态文件目录
    |--uploadfile //上传文件目录
    |--views //视图模板目录
    

    分页

    1. 使用 comment/util.go 里面的 PageOperation 进行分页
      adminDb := models.Db.Table("admin_users").Select("nickname","username").Where("uid != ?", 1)
      adminUserData := comment.PageOperation(c, adminDb, 1, &adminUserList)
      
    2. 在html中使用
      {{ .adminUserData.PageHtml }}
      

    日志

    1. 自定义日志 在 comment/loggers 目录下新建logger
      参考 userlog.go 文件
      
    2. 调用自定义的的logger写日志
      loggers.UserLogger.Info("无法获取网址",
      zap.String("url", "http://www.baidu.com"),
      zap.Int("attempt", 3),
      zap.Duration("backoff", time.Second),)
      

    数据库

    1. 数据库迁移,将定义好的model填充写到下面的 AutoMigrate 方法中

      Db.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(&AdminUsers{},&AdminGroup{})
      
    2. 数据填充,将数据写入到 modelsdefault.go 下面的 FillData

    定时任务

    • comment/cron/cron.go 添加定时执行任务

    配置文件

    1. 现在 conf/conf.go 添加配置项的 struct 类型,例如

      type AppConf struct {
      	BaseConf `ini:"base"`
      }
      type BaseConf struct {
      	Port string `ini:"port"`
      }
      
    2. conf/conf.ini 添加配置信息

      [base]
      port=:8091
      
    3. 在代码中调用配置文件的信息

      conf.App.BaseConf.Port
      

    模板页面

    • 所有的后台模板都写到 views/template 目录下面,并且分目录存储,调用时按照 目录/模板名称 的方式调用

    用户权限

    • 菜单权限定义到 comment/menu/menu.go 文件下,定义完之后在用户组管理里面编辑权限

    • 在控制器中可用从 gin.context 获取权限

      privs,_ := c.Get("userPrivs")
      
    • template 中判断权限的函数 judgeContainPriv 定义在 comment/template/default.go 文件下

      "judgeContainPriv": func(privMap map[string]interface{},priv string)bool {
      	//判断权限是all的全通过
      	_,o :=privMap["all"]
      	if o {
      		return true
      	}
      	_,ok := privMap[priv]
      	return ok
      },
      
  • 相关阅读:
    20201231《信息安全专业导论》第一周学习总结
    Python模拟进程状态
    Python gui
    2020-2021-1 20201208《信息安全专业导论》第10周学习总结
    2020-2021-1 20201208 《信息安全专业导论》第九周学习总结
    熟悉编程语言
    俄罗斯方块
    小学四则运算编程实践
    2020-2021-1-1 《信息安全专业导论》第八周学习总结
    2020-2021-1 20201208 《信息安全专业导论》第七周学习总结
  • 原文地址:https://www.cnblogs.com/itsuibi/p/14696493.html
Copyright © 2011-2022 走看看