123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330 |
- package controller
- import (
- "Medical_OAuth/app/admin/model"
- "Medical_OAuth/app/admin/service"
- "Medical_OAuth/app/admin/service/dto"
- "encoding/json"
- "fmt"
- "github.com/gin-gonic/gin"
- "github.com/gin-gonic/gin/binding"
- "github.com/tealeg/xlsx"
- "gogs.baozhida.cn/zoie/OAuth-core/api"
- "gogs.baozhida.cn/zoie/OAuth-core/pkg/jwtauth/user"
- _ "gogs.baozhida.cn/zoie/OAuth-core/pkg/response"
- "os"
- )
- type ServMenu struct {
- api.Api
- }
- // GetPage 获取菜单列表
- // @Summary 获取菜单列表
- // @Description 获取菜单列表
- // @Tags 服务菜单
- // @Param serviceId query string true "服务ID"
- // @Param name query string false "菜单名称"
- // @Param visible query string false "显示状态"
- // @Success 200 {object} response.Response{data=response.Page{list=[]model.ServMenu}} "{"code": 200, "data": [...]}"
- // @Router /api/serv-menu [get]
- // @Security Bearer
- func (e ServMenu) GetPage(c *gin.Context) {
- s := service.ServMenu{}
- serv := service.SysService{}
- req := dto.ServMenuGetPageReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.Form).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- // 查询服务信息
- var servObject model.SysService
- servReq := dto.SysServiceGetReq{Id: req.ServiceId}
- err = serv.Get(&servReq, &servObject, nil)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- var list = make([]model.ServMenu, 0)
- if err = s.GetPage(&req, &list).Error; err != nil {
- e.Error(500, err, "查询失败")
- return
- }
- e.OK(list, "查询成功")
- }
- // Get 通过id获取菜单
- // @Summary 通过id获取菜单
- // @Description 通过id获取菜单
- // @Tags 服务菜单
- // @Param id path string true "菜单id"
- // @Success 200 {object} response.Response{data=model.ServMenu} "{"code": 200, "data": [...]}"
- // @Router /api/serv-menu/{id} [get]
- // @Security Bearer
- func (e ServMenu) Get(c *gin.Context) {
- req := dto.ServMenuGetReq{}
- s := service.ServMenu{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, nil).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- var object = model.ServMenu{}
- err = s.Get(&req, &object).Error
- if err != nil {
- e.Error(500, err, "查询失败")
- return
- }
- e.OK(object, "查询成功")
- }
- // Insert 创建菜单
- // @Summary 创建菜单
- // @Description 创建菜单
- // @Tags 服务菜单
- // @Accept application/json
- // @Product application/json
- // @Param data body dto.ServMenuInsertReq true "data"
- // @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
- // @Router /api/serv-menu [post]
- // @Security Bearer
- func (e ServMenu) Insert(c *gin.Context) {
- req := dto.ServMenuInsertReq{}
- s := service.ServMenu{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.JSON).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- // 设置创建人
- req.SetCreateBy(user.GetUserId(c))
- err = s.Insert(&req).Error
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.OK(req.GetId(), "创建成功")
- }
- // Update 修改菜单
- // @Summary 修改菜单
- // @Description 修改菜单
- // @Tags 服务菜单
- // @Accept application/json
- // @Product application/json
- // @Param id path string true "菜单id"
- // @Param data body dto.ServMenuUpdateReq true "body"
- // @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
- // @Router /api/serv-menu/{id} [put]
- // @Security Bearer
- func (e ServMenu) Update(c *gin.Context) {
- s := service.ServMenu{}
- req := dto.ServMenuUpdateReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.JSON, nil).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- req.SetUpdateBy(user.GetUserId(c))
- err = s.Update(&req).Error
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- e.OK(req.GetId(), "更新成功")
- }
- // Delete 删除菜单
- // @Summary 删除菜单
- // @Description 删除菜单
- // @Tags 服务菜单
- // @Accept application/json
- // @Product application/json
- // @Param data body dto.ServMenuDeleteReq true "body"
- // @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
- // @Router /api/serv-menu [delete]
- // @Security Bearer
- func (e ServMenu) Delete(c *gin.Context) {
- s := service.ServMenu{}
- req := dto.ServMenuDeleteReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.JSON).
- MakeService(&s.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- req.SetUpdateBy(user.GetUserId(c))
- err = s.Remove(&req).Error
- if err != nil {
- e.Logger.Errorf("RemoveServMenu error, %s", err)
- e.Error(500, err, "删除失败")
- return
- }
- e.OK(req.GetId(), "删除成功")
- }
- // Export 导出菜单
- // @Summary 导出菜单
- // @Description 导出菜单
- // @Tags 服务菜单
- // @Accept application/json
- // @Product application/json
- // @Param data body dto.ServMenuExportReq true "body"
- // @Success 200 {object} response.Response "{"code": 200}"
- // @Router /api/serv-menu/export [get]
- // @Security Bearer
- func (e ServMenu) Export(c *gin.Context) {
- s := service.ServMenu{}
- serv := service.SysService{}
- req := dto.ServMenuExportReq{}
- err := e.MakeContext(c).
- MakeOrm().
- Bind(&req, binding.Form).
- MakeService(&s.Service).
- MakeService(&serv.Service).
- Errors
- if err != nil {
- e.Logger.Error(err)
- e.Error(500, err, err.Error())
- return
- }
- // 查询服务信息
- var servObject model.SysService
- servReq := dto.SysServiceGetReq{Id: req.ServiceId}
- err = serv.Get(&servReq, &servObject, nil)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- if req.Type == "json" {
- var list = make([]model.ServMenu, 0)
- jsonReq := dto.ServMenuGetPageReq{
- ServiceId: req.ServiceId,
- }
- if err = s.GetPage(&jsonReq, &list).Error; err != nil {
- e.Error(500, err, "查询失败")
- return
- }
- jsonBytes, err := json.Marshal(list)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- filename := fmt.Sprintf("%s菜单.json", servObject.Name)
- file, err := os.Create(filename)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- defer file.Close()
- if _, err := file.Write(jsonBytes); err != nil {
- e.Error(500, err, err.Error())
- return
- }
- c.Header("Content-Disposition", "attachment; filename="+filename)
- c.Header("Content-Type", "application/octet-stream")
- c.FileAttachment(filename, file.Name())
- }
- if req.Type == "excel" {
- var list = make([]model.ServMenu, 0)
- jsonReq := dto.ServMenuGetPageReq{
- ServiceId: req.ServiceId,
- }
- if err = s.GetList(&jsonReq, &list); err != nil {
- e.Error(500, err, "查询失败")
- return
- }
- file := xlsx.NewFile()
- sheet, err := file.AddSheet("Sheet1")
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- // Add header row
- headerRow := sheet.AddRow()
- headerRow.AddCell().SetValue("id")
- headerRow.AddCell().SetValue("service_id")
- headerRow.AddCell().SetValue("menu_path")
- headerRow.AddCell().SetValue("parent_id")
- headerRow.AddCell().SetValue("name")
- headerRow.AddCell().SetValue("sort")
- headerRow.AddCell().SetValue("menu_type")
- headerRow.AddCell().SetValue("icon")
- headerRow.AddCell().SetValue("component")
- headerRow.AddCell().SetValue("is_frame")
- headerRow.AddCell().SetValue("path")
- headerRow.AddCell().SetValue("permission")
- headerRow.AddCell().SetValue("visible")
- // Add data rows
- for _, v := range list {
- dataRow := sheet.AddRow()
- dataRow.AddCell().SetValue(v.Id)
- dataRow.AddCell().SetValue(v.ServiceId)
- dataRow.AddCell().SetValue(v.MenuPath)
- dataRow.AddCell().SetValue(v.ParentId)
- dataRow.AddCell().SetValue(v.Name)
- dataRow.AddCell().SetValue(v.Sort)
- dataRow.AddCell().SetValue(v.MenuType)
- dataRow.AddCell().SetValue(v.Icon)
- dataRow.AddCell().SetValue(v.Component)
- dataRow.AddCell().SetValue(v.IsFrame)
- dataRow.AddCell().SetValue(v.Path)
- dataRow.AddCell().SetValue(v.Permission)
- dataRow.AddCell().SetValue(v.Visible)
- }
- filename := fmt.Sprintf("%s菜单.xlsx", servObject.Name)
- // Set content type and headers
- c.Header("Content-Disposition", "attachment; filename="+filename)
- c.Header("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
- // Write file to response
- err = file.Write(c.Writer)
- if err != nil {
- e.Error(500, err, err.Error())
- return
- }
- c.FileAttachment(filename, filename)
- }
- e.Error(500, err, "类型错误!")
- return
- }
|