Browse Source

API增删改查忘词嗯

pixel 5 years ago
parent
commit
a7cc8c320f

+ 50 - 6
QMPlusServer/controller/api/api.go

@@ -57,7 +57,7 @@ func DeleteApi(c *gin.Context) {
 
 type AuthAndPathIn struct {
 	AuthorityId string        `json:"authorityId"`
-	Apis        []dbModel.Api `json:"apis"`
+	Apis        []dbModel.Api     `json:"apis"`
 }
 
 // @Tags Api
@@ -67,11 +67,11 @@ type AuthAndPathIn struct {
 // @Produce application/json
 // @Param data body api.AuthAndPathIn true "创建api和角色关系"
 // @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}"
-// @Router /api/setAuthAndPath [post]
-func SetAuthAndPath(c *gin.Context) {
+// @Router /api/setAuthAndApi [post]
+func SetAuthAndApi(c *gin.Context) {
 	var authAndPathIn AuthAndPathIn
 	_ = c.BindJSON(&authAndPathIn)
-	err := new(dbModel.ApiAuthority).SetAuthAndPath(authAndPathIn.AuthorityId, authAndPathIn.Apis)
+	err := new(dbModel.ApiAuthority).SetAuthAndApi(authAndPathIn.AuthorityId, authAndPathIn.Apis)
 	if err != nil {
 		servers.ReportFormat(c, false, fmt.Sprintf("添加失败:%v", err), gin.H{})
 	} else {
@@ -80,11 +80,11 @@ func SetAuthAndPath(c *gin.Context) {
 }
 
 // @Tags Api
-// @Summary 分页获取角色列表
+// @Summary 分页获取API列表
 // @Security ApiKeyAuth
 // @accept application/json
 // @Produce application/json
-// @Param data body modelInterface.PageInfo true "分页获取用户列表"
+// @Param data body modelInterface.PageInfo true "分页获取API列表"
 // @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}"
 // @Router /api/getApiList [post]
 func GetApiList(c *gin.Context) {
@@ -103,3 +103,47 @@ func GetApiList(c *gin.Context) {
 
 	}
 }
+
+// @Tags Api
+// @Summary 根据id获取api
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body modelInterface.PageInfo true "分页获取用户列表"
+// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}"
+// @Router /api/getApiById [post]
+func GetApiById(c *gin.Context) {
+	var idInfo GetById
+	_ = c.BindJSON(&idInfo)
+	err, api := new(dbModel.Api).GetApiById(idInfo.Id)
+	if err != nil {
+		servers.ReportFormat(c, false, fmt.Sprintf("获取数据失败,%v", err), gin.H{})
+	} else {
+		servers.ReportFormat(c, true, "获取数据成功", gin.H{
+			"api":     api,
+		})
+
+	}
+}
+
+
+
+// @Tags Api
+// @Summary 创建基础api
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body api.CreateApiParams true "创建api"
+// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}"
+// @Router /api/updataApi [post]
+
+ func UpdataApi(c *gin.Context) {
+	 var api dbModel.Api
+	 _ = c.BindJSON(&api)
+	 err := api.UpdataApi()
+	 if err != nil {
+		 servers.ReportFormat(c, false, fmt.Sprintf("修改数据失败,%v", err), gin.H{})
+	 } else {
+		 servers.ReportFormat(c, true, "修改数据成功", gin.H{})
+	 }
+ }

+ 1 - 1
QMPlusServer/controller/servers/paging.go

@@ -11,6 +11,6 @@ func PagingServer(paging modelInterface.Paging, info modelInterface.PageInfo) (e
 	limit := info.PageSize
 	offset := info.PageSize * (info.Page - 1)
 	err = qmsql.DEFAULTDB.Model(paging).Count(&total).Error
-	db = qmsql.DEFAULTDB.Limit(limit).Offset(offset)
+	db = qmsql.DEFAULTDB.Limit(limit).Offset(offset).Order("id desc")
 	return err, db, total
 }

+ 8 - 3
QMPlusServer/model/dbModel/api.go

@@ -16,7 +16,7 @@ type Api struct {
 
 func (a *Api) CreateApi() (err error) {
 	findOne := qmsql.DEFAULTDB.Where("path = ?", a.Path).Find(&Menu{}).Error
-	if findOne != nil {
+	if findOne == nil {
 		return errors.New("存在相同api")
 	} else {
 		err = qmsql.DEFAULTDB.Create(a).Error
@@ -29,11 +29,16 @@ func (a *Api) DeleteApi() (err error) {
 	return err
 }
 
-func (a *Api) EditApi() (err error) {
-	err = qmsql.DEFAULTDB.Update(a).Error
+func (a *Api) UpdataApi() (err error) {
+	err = qmsql.DEFAULTDB.Save(a).Error
 	return err
 }
 
+func (a *Api) GetApiById(id float64)(err error,api Api){
+	err = qmsql.DEFAULTDB.Where("id = ?",id).First(&api).Error
+	return
+}
+
 // 分页获取数据  需要分页实现这个接口即可
 func (a *Api) GetInfoList(info modelInterface.PageInfo) (err error, list interface{}, total int) {
 	// 封装分页方法 调用即可 传入 当前的结构体和分页信息

+ 3 - 4
QMPlusServer/model/dbModel/api_authority.go

@@ -1,7 +1,6 @@
 package dbModel
 
 import (
-	"fmt"
 	"github.com/jinzhu/gorm"
 	"main/init/qmsql"
 )
@@ -10,15 +9,15 @@ type ApiAuthority struct {
 	gorm.Model
 	AuthorityId string
 	Authority   Authority `gorm:"ForeignKey:AuthorityId;AssociationForeignKey:AuthorityId"` //其实没有关联的必要
-	ApiId       string
+	ApiId       uint
 	Api         Api
 }
 
 //创建角色api关联关系
-func (a *ApiAuthority) SetAuthAndPath(authId string, apis []Api) (err error) {
+func (a *ApiAuthority) SetAuthAndApi(authId string, apis []Api) (err error) {
 	err = qmsql.DEFAULTDB.Where("authority_id = ?", authId).Delete(&ApiAuthority{}).Error
 	for _, v := range apis {
-		err = qmsql.DEFAULTDB.Create(&ApiAuthority{AuthorityId: authId, ApiId: fmt.Sprintf("%v", v.ID)}).Error
+		err = qmsql.DEFAULTDB.Create(&ApiAuthority{AuthorityId: authId, ApiId: v.ID}).Error
 		if err != nil {
 			return err
 		}

+ 1 - 1
QMPlusServer/model/dbModel/authority.go

@@ -9,7 +9,7 @@ import (
 )
 
 type Authority struct {
-	gorm.Model    `json:"-"`
+	gorm.Model
 	AuthorityId   string   `json:"authorityId" gorm:"not null;unique"`
 	AuthorityName string `json:"authorityName"`
 }

+ 6 - 4
QMPlusServer/router/api.go

@@ -9,9 +9,11 @@ import (
 func InitApiRouter(Router *gin.Engine) {
 	ApiRouter := Router.Group("api").Use(middleware.JWTAuth())
 	{
-		ApiRouter.POST("createApi", api.CreateApi)
-		ApiRouter.POST("deleteApi", api.DeleteApi)
-		ApiRouter.POST("setAuthAndPath",api.SetAuthAndPath)
-		ApiRouter.POST("getApiList",api.GetApiList)
+		ApiRouter.POST("createApi", api.CreateApi)  //创建Api
+		ApiRouter.POST("deleteApi", api.DeleteApi)  //删除Api
+		ApiRouter.POST("setAuthAndPath",api.SetAuthAndApi) // 设置api和角色关系
+		ApiRouter.POST("getApiList",api.GetApiList)  //获取Api列表
+		ApiRouter.POST("getApiById",api.GetApiById)  //获取单条Api消息
+		ApiRouter.POST("updataApi",api.UpdataApi)   //更新api
 	}
 }

+ 69 - 0
QMPlusVuePage/src/api/api.js

@@ -17,4 +17,73 @@ export const getApiList = (data) => {
         method: 'post',
         data
     })
+}
+
+
+// @Tags Api
+// @Summary 创建基础api
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body api.CreateApiParams true "创建api"
+// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}"
+// @Router /api/createApi [post]
+export const createApi = (data) => {
+    return service({
+        url: "/api/createApi",
+        method: 'post',
+        data
+    })
+}
+
+// @Tags menu
+// @Summary 根据id获取菜单
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body api.GetById true "根据id获取菜单"
+// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}"
+// @Router /menu/getApiById [post]
+export const getApiById = (data) => {
+    return service({
+        url: "/api/getApiById",
+        method: 'post',
+        data
+    })
+}
+
+
+
+// @Tags Api
+// @Summary 更新api
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body api.CreateApiParams true "更新api"
+// @Success 200 {string} json "{"success":true,"data":{},"msg":"更新成功"}"
+// @Router /api/updataApi [post]
+export const updataApi = (data) => {
+    return service({
+        url: "/api/updataApi",
+        method: 'post',
+        data
+    })
+}
+
+
+
+// @Tags Api
+// @Summary 更新api
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body api.CreateApiParams true "更新api"
+// @Success 200 {string} json "{"success":true,"data":{},"msg":"更新成功"}"
+// @Router /api/setAuthApi [post]
+export const setAuthApi = (data) => {
+    return service({
+        url: "/api/setAuthApi",
+        method: 'post',
+        data
+    })
 }

+ 17 - 0
QMPlusVuePage/src/api/menu.js

@@ -97,4 +97,21 @@ export const updataBaseMenu = (data) => {
         method: 'post',
         data
     })
+}
+
+
+// @Tags menu
+// @Summary 根据id获取菜单
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body api.GetById true "根据id获取菜单"
+// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}"
+// @Router /menu/getBaseMenuById [post]
+export const getBaseMenuById = (data) => {
+    return service({
+        url: "/menu/getBaseMenuById",
+        method: 'post',
+        data
+    })
 }

+ 92 - 10
QMPlusVuePage/src/view/superAdmin/api/api.vue

@@ -1,12 +1,12 @@
 <template>
   <div>
     <div class="button-box clearflex">
-      <el-button @click="addApi" type="primary">新增api</el-button>
+      <el-button @click="openDialog('addApi')" type="primary">新增api</el-button>
     </div>
     <el-table :data="tableData" border stripe>
-      <el-table-column label="id" min-width="180" prop="ID"></el-table-column>
-      <el-table-column label="api路径" min-width="180" prop="path"></el-table-column>
-      <el-table-column label="api简介" min-width="180" prop="description"></el-table-column>
+      <el-table-column label="id" min-width="60" prop="ID"></el-table-column>
+      <el-table-column label="api路径" min-width="150" prop="path"></el-table-column>
+      <el-table-column label="api简介" min-width="150" prop="description"></el-table-column>
       <el-table-column fixed="right" label="操作" width="200">
         <template slot-scope="scope">
           <el-button @click="editApi(scope.row)" size="small" type="text">编辑</el-button>
@@ -25,6 +25,21 @@
       hide-on-single-page
       layout="total, sizes, prev, pager, next, jumper"
     ></el-pagination>
+
+    <el-dialog :visible.sync="dialogFormVisible" title="新增Api">
+      <el-form :inline="true" :model="form" label-width="80px">
+        <el-form-item label="路径">
+          <el-input autocomplete="off" v-model="form.path"></el-input>
+        </el-form-item>
+        <el-form-item label="说明">
+          <el-input autocomplete="off" v-model="form.description"></el-input>
+        </el-form-item>
+      </el-form>
+      <div class="dialog-footer" slot="footer">
+        <el-button @click="closeDialog">取 消</el-button>
+        <el-button @click="enterDialog" type="primary">确 定</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -32,23 +47,90 @@
 <script>
 // 获取列表内容封装在mixins内部  getTableData方法 初始化已封装完成
 
-import { getApiList } from '@/api/api'
+import { getApiById, getApiList, createApi, updataApi } from '@/api/api'
 import infoList from '@/view/superAdmin/mixins/infoList'
 
 export default {
   name: 'Api',
-  mixins:[infoList],
+  mixins: [infoList],
   data() {
     return {
       listApi: getApiList,
-      listKey:'list'
+      listKey: 'list',
+      dialogFormVisible: false,
+      form: {
+        path: '',
+        description: ''
+      },
+      type: ''
     }
   },
   methods: {
+    initForm() {
+      this.form = {
+        path: '',
+        description: ''
+      }
+    },
+    closeDialog() {
+      this.initForm()
+      this.dialogFormVisible = false
+    },
+    openDialog(type) {
+      this.type = type
+      this.dialogFormVisible = true
+    },
+    addApi() {
+      createApi()
+    },
+    async editApi(row) {
+      const res = await getApiById({ id: row.ID })
+      this.form = res.data.api
+      this.openDialog('edit')
+    },
+    deleteApi() {},
+    async enterDialog() {
+      switch (this.type) {
+        case 'addApi':
+          {
+            const res = await createApi(this.form)
+            if (res.success) {
+              this.$message({
+                type: 'success',
+                message: '添加成功',
+                showClose: true
+              })
+            }
+            this.getTableData()
+            this.closeDialog()
+          }
 
-    addApi() {},
-    editApi() {},
-    deleteApi() {}
+          break
+        case 'edit':
+          {
+            const res = await updataApi(this.form)
+            if (res.success) {
+              this.$message({
+                type: 'success',
+                message: '添加成功',
+                showClose: true
+              })
+            }
+            this.getTableData()
+            this.closeDialog()
+          }
+          break
+        default:
+          {
+            this.$message({
+              type: 'error',
+              message: '未知操作',
+              showClose: true
+            })
+          }
+          break
+      }
+    }
   },
   created() {
     this.getTableData()

+ 3 - 1
QMPlusVuePage/src/view/superAdmin/authority/authority.vue

@@ -4,11 +4,13 @@
       <el-button @click="addAuthority" type="primary">新增角色</el-button>
     </div>
     <el-table :data="tableData" border stripe>
+      <el-table-column label="id" min-width="180" prop="ID"></el-table-column>      
       <el-table-column label="角色id" min-width="180" prop="authorityId"></el-table-column>
       <el-table-column label="角色名称" min-width="180" prop="authorityName"></el-table-column>
       <el-table-column fixed="right" label="操作" width="500">
         <template slot-scope="scope">
-          <el-button @click="addAuthMenu(scope.row)" size="small" type="text">增加角色菜单</el-button>
+          <el-button @click="addAuthMenu(scope.row)" size="small" type="text">变更角色菜单</el-button>
+          <el-button @click="addAuthApi(scope.row)" size="small" type="text">变更角色Api</el-button>
           <el-button @click="deleteAuth(scope.row)" size="small" type="text">删除角色</el-button>
         </template>
       </el-table-column>

+ 17 - 10
QMPlusVuePage/src/view/superAdmin/menu/menu.vue

@@ -27,7 +27,7 @@
       <el-table-column fixed="right" label="操作" width="300">
         <template slot-scope="scope">
           <el-button @click="deleteMenu(scope.row.ID)" size="small" type="text">删除菜单</el-button>
-          <el-button @click="editMenu(scope.row)" size="small" type="text">编辑菜单</el-button>
+          <el-button @click="editMenu(scope.row.ID)" size="small" type="text">编辑菜单</el-button>
           <el-button @click="addMenu(scope.row.ID)" size="small" type="text">添加子菜单</el-button>
         </template>
       </el-table-column>
@@ -82,7 +82,7 @@
 <script>
 // 获取列表内容封装在mixins内部  getTableData方法 初始化已封装完成
 
-import { updataBaseMenu ,getMenuList, addBaseMenu, deleteBaseMenu } from '@/api/menu'
+import { updataBaseMenu ,getMenuList, addBaseMenu, deleteBaseMenu, getBaseMenuById } from '@/api/menu'
 import infoList from '@/view/superAdmin/mixins/infoList'
 export default {
   name: 'Menus',
@@ -93,6 +93,7 @@ export default {
       listKey:'list',
       dialogFormVisible: false,
       form: {
+        ID:0,
         path: '',
         name: '',
         hidden: '',
@@ -102,7 +103,8 @@ export default {
           title: '',
           icon: ''
         }
-      }
+      },
+      isEdit:false
     }
   },
   methods: {
@@ -151,7 +153,12 @@ export default {
     },
     // 添加menu
     async enterDialog() {
-      const res = await addBaseMenu(this.form)
+      let res
+      if(this.isEdit){
+        res = await updataBaseMenu(this.form)
+      }else{
+        res = await addBaseMenu(this.form)
+      }
       if (res.success) {
         this.$message({
           type: 'success',
@@ -172,15 +179,15 @@ export default {
     // 添加菜单方法,id为 0则为添加根菜单
     addMenu(id) {
       this.form.parentId = String(id)
+      this.isEdit = false
       this.dialogFormVisible = true
     },
     // 修改菜单方法
-    async editMenu(row){
-      row.name = "修改测试"
-      row.meta.title="修改测试"
-      row.meta.icon = "share"
-      const res = await updataBaseMenu(row)
-      console.log(res)
+    async editMenu(id){
+      const res = await getBaseMenuById({id})
+      this.form = res.data.menu
+      this.dialogFormVisible = true
+      this.isEdit = true
    }
   }
 }