提交 b782321e 编写于 作者: Mr.奇淼('s avatar Mr.奇淼(

资源权限功能示例

上级 c92b348d
package api
import (
"fmt"
"gin-vue-admin/controller/servers"
"gin-vue-admin/middleware"
"gin-vue-admin/model/dbModel"
"gin-vue-admin/model/modelInterface"
"github.com/gin-gonic/gin"
)
// @Tags SysApi
// @Summary 创建客户
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body dbModel.ExaCustomer true "创建客户"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /customer/createExaCustomer [post]
func CreateExaCustomer(c *gin.Context) {
var cu dbModel.ExaCustomer
_ = c.BindJSON(&cu)
claims, _ := c.Get("claims")
waitUse := claims.(*middleware.CustomClaims)
cu.SysUserID = waitUse.ID
cu.SysUserAuthorityID = waitUse.AuthorityId
err := cu.CreateExaCustomer()
if err != nil {
servers.ReportFormat(c, false, fmt.Sprintf("创建失败:%v", err), gin.H{})
} else {
servers.ReportFormat(c, true, "创建成功", gin.H{})
}
}
// @Tags SysApi
// @Summary 删除客户
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body dbModel.ExaCustomer true "删除客户"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /customer/deleteExaCustomer [post]
func DeleteExaCustomer(c *gin.Context) {
var cu dbModel.ExaCustomer
_ = c.BindJSON(&cu)
err := cu.DeleteExaCustomer()
if err != nil {
servers.ReportFormat(c, false, fmt.Sprintf("创建失败:%v", err), gin.H{})
} else {
servers.ReportFormat(c, true, "创建成功", gin.H{})
}
}
// @Tags SysApi
// @Summary 更新客户信息
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body dbModel.ExaCustomer true "创建客户"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /customer/updataExaCustomer [post]
func UpdataExaCustomer(c *gin.Context) {
var cu dbModel.ExaCustomer
_ = c.BindJSON(&cu)
err := cu.UpdataExaCustomer()
if err != nil {
servers.ReportFormat(c, false, fmt.Sprintf("创建失败:%v", err), gin.H{})
} else {
servers.ReportFormat(c, true, "创建成功", gin.H{})
}
}
// @Tags SysApi
// @Summary 获取单一客户信息
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body dbModel.ExaCustomer true "获取单一客户信息"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /customer/getExaCustomer [post]
func GetExaCustomer(c *gin.Context) {
var cu dbModel.ExaCustomer
_ = c.BindJSON(&cu)
err,customer := cu.GetExaCustomer()
if err != nil {
servers.ReportFormat(c, false, fmt.Sprintf("创建失败:%v", err), gin.H{})
} else {
servers.ReportFormat(c, true, "创建成功", gin.H{
"customer":customer,
})
}
}
// @Tags SysApi
// @Summary 获取权限客户列表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body modelInterface.PageInfo true "获取权限客户列表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /customer/getExaCustomerList [post]
func GetExaCustomerList(c *gin.Context) {
claims, _ := c.Get("claims")
waitUse := claims.(*middleware.CustomClaims)
var cu dbModel.ExaCustomer
cu.SysUserAuthorityID = waitUse.AuthorityId
var pageInfo modelInterface.PageInfo
_ = c.BindJSON(&pageInfo)
err, customerList, total := cu.GetInfoList(pageInfo)
if err != nil {
servers.ReportFormat(c, false, fmt.Sprintf("创建失败:%v", err), gin.H{})
} else {
servers.ReportFormat(c, true, "创建成功", gin.H{
"customer":customerList,
"total": total,
"page": pageInfo.Page,
"pageSize": pageInfo.PageSize,
})
}
}
\ No newline at end of file
......@@ -28,5 +28,6 @@ func InitRouter() *gin.Engine {
router.InitCasbinRouter(ApiGroup) // 权限相关路由
router.InitJwtRouter(ApiGroup) // jwt相关路由
router.InitSystemRouter(ApiGroup) // system相关路由
router.InitCustomerRouter(ApiGroup) // 客户路由
return Router
}
......@@ -19,5 +19,6 @@ func RegistTable(db *gorm.DB) {
dbModel.ExaFileUploadAndDownload{},
dbModel.ExaFile{},
dbModel.ExaFileChunk{},
dbModel.ExaCustomer{},
)
}
package dbModel
import (
"gin-vue-admin/controller/servers"
"gin-vue-admin/init/qmsql"
"gin-vue-admin/model/modelInterface"
"gin-vue-admin/model/sysModel"
"github.com/jinzhu/gorm"
)
type ExaCustomer struct {
gorm.Model
CustomerName string `json:"customerName"`
CustomerPhoneData string `json:"customerPhoneData"`
SysUserID uint `json:"sysUserId"`
SysUserAuthorityID string `json:"sysUserAuthorityID"`
SysUser sysModel.SysUser `json:"sysUser"`
}
//创建用户
func (e *ExaCustomer)CreateExaCustomer()(err error){
err = qmsql.DEFAULTDB.Create(e).Error
return err
}
//删除用户
func (e *ExaCustomer)DeleteExaCustomer()(err error){
err = qmsql.DEFAULTDB.Delete(e).Error
return err
}
//更新用户
func (e *ExaCustomer)UpdataExaCustomer()(err error){
err = qmsql.DEFAULTDB.Save(e).Error
return err
}
//获取用户信息
func (e *ExaCustomer)GetExaCustomer()(err error,customer ExaCustomer){
err= qmsql.DEFAULTDB.Where("id = ?",e.ID).First(&customer).Error
return
}
//获取用户列表
// 分页获取数据 需要分页实现这个接口即可
func (e *ExaCustomer) GetInfoList(info modelInterface.PageInfo) (err error, list interface{}, total int) {
// 封装分页方法 调用即可 传入 当前的结构体和分页信息
err, db, total := servers.PagingServer(e, info)
if err != nil {
return
} else {
var a sysModel.SysAuthority
a.AuthorityId = e.SysUserAuthorityID
err,auth := a.GetAuthorityInfo()
var dataId []string
for _,v := range auth.DataAuthorityId{
dataId = append(dataId, v.AuthorityId)
}
var CustomerList []ExaCustomer
err = db.Where("sys_user_authority_id in (?)",dataId).Find(&CustomerList).Count(&total).Error
if err!=nil{
return err, CustomerList, total
}else{
err = db.Preload("SysUser").Where("sys_user_authority_id in (?)",dataId).Find(&CustomerList).Error
}
return err, CustomerList, total
}
}
\ No newline at end of file
......@@ -71,7 +71,12 @@ func (a *SysApi) GetInfoList(info modelInterface.PageInfo) (err error, list inte
return
} else {
var apiList []SysApi
err = db.Order("group", true).Where("path LIKE ?", "%"+a.Path+"%").Find(&apiList).Count(&total).Error
err = qmsql.DEFAULTDB.Where("path LIKE ?", "%"+a.Path+"%").Find(&apiList).Count(&total).Error
if err!=nil{
return err, apiList, total
}else{
err = db.Order("group", true).Where("path LIKE ?", "%"+a.Path+"%").Find(&apiList).Error
}
return err, apiList, total
}
}
......@@ -74,3 +74,8 @@ func (a *SysAuthority) SetDataAuthority() error {
err := qmsql.DEFAULTDB.Model(&s).Association("DataAuthorityId").Replace(&a.DataAuthorityId).Error
return err
}
func (a *SysAuthority) GetAuthorityInfo() (err error,sa SysAuthority) {
err = qmsql.DEFAULTDB.Preload("DataAuthorityId").Where("authority_id = ?",a.AuthorityId).First(&sa).Error
return err,sa
}
\ No newline at end of file
package router
import (
"gin-vue-admin/controller/api"
"gin-vue-admin/middleware"
"github.com/gin-gonic/gin"
)
func InitCustomerRouter(Router *gin.RouterGroup) {
ApiRouter := Router.Group("customer").Use(middleware.JWTAuth()).Use(middleware.CasbinHandler())
{
ApiRouter.POST("createExaCustomer", api.CreateExaCustomer) // 创建客户
ApiRouter.POST("updataExaCustomer", api.UpdataExaCustomer) // 更新客户
ApiRouter.POST("deleteExaCustomer", api.DeleteExaCustomer) // 删除客户
ApiRouter.POST("getExaCustomer", api.GetExaCustomer) // 获取单一客户信息
ApiRouter.POST("getExaCustomerList", api.GetExaCustomerList) // 获取客户列表
}
}
<template>
<div>
<div class="button-box clearflex"></div>
<div class="search-term">
<el-form :inline="true" :model="searchInfo" class="demo-form-inline">
<el-form-item label="路径">
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册