소스 검색

资源权限功能示例

pixel 5 년 전
부모
커밋
b782321e79

+ 119 - 0
QMPlusServer/controller/api/exa_customer.go

@@ -1 +1,120 @@
 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,
+		})
+	}
+}

+ 1 - 0
QMPlusServer/init/initRouter/init_router.go

@@ -28,5 +28,6 @@ func InitRouter() *gin.Engine {
 	router.InitCasbinRouter(ApiGroup)                // 权限相关路由
 	router.InitJwtRouter(ApiGroup)                   // jwt相关路由
 	router.InitSystemRouter(ApiGroup)                // system相关路由
+	router.InitCustomerRouter(ApiGroup)             // 客户路由
 	return Router
 }

+ 1 - 0
QMPlusServer/init/registTable/regist_table.go

@@ -19,5 +19,6 @@ func RegistTable(db *gorm.DB) {
 		dbModel.ExaFileUploadAndDownload{},
 		dbModel.ExaFile{},
 		dbModel.ExaFileChunk{},
+		dbModel.ExaCustomer{},
 	)
 }

+ 67 - 0
QMPlusServer/model/dbModel/exa_customer.go

@@ -1 +1,68 @@
 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
+	}
+}

+ 6 - 1
QMPlusServer/model/sysModel/sys_api.go

@@ -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
 	}
 }

+ 5 - 0
QMPlusServer/model/sysModel/sys_authority.go

@@ -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
+}

+ 17 - 0
QMPlusServer/router/exp_customer.go

@@ -1 +1,18 @@
 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)   // 获取客户列表
+	}
+}

+ 0 - 1
QMPlusVuePage/src/view/superAdmin/api/api.vue

@@ -1,6 +1,5 @@
 <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="路径">