mirror of
https://gitee.com/XM-GO/PandaX.git
synced 2026-04-23 02:48:34 +08:00
【修复】导出功能
This commit is contained in:
@@ -2,8 +2,6 @@ package api
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/kakuilan/kgo"
|
||||
"os"
|
||||
entity "pandax/apps/system/entity"
|
||||
services "pandax/apps/system/services"
|
||||
"pandax/base/biz"
|
||||
@@ -128,20 +126,15 @@ func (p *DictApi) DeleteDictType(rc *ctx.ReqCtx) {
|
||||
// @Success 200 {string} string "{"code": 400, "message": "删除失败"}"
|
||||
// @Router /system/dict/type/export [get]
|
||||
func (p *DictApi) ExportDictType(rc *ctx.ReqCtx) {
|
||||
filename := rc.GinCtx.Query("filename")
|
||||
status := rc.GinCtx.Query("status")
|
||||
dictName := rc.GinCtx.Query("dictName")
|
||||
dictType := rc.GinCtx.Query("dictType")
|
||||
|
||||
list := p.DictType.FindList(entity.SysDictType{Status: status, DictName: dictName, DictType: dictType})
|
||||
fileName := utils.GetFileName(config.Conf.Server.ExcelDir, "字典")
|
||||
fileName := utils.GetFileName(config.Conf.Server.ExcelDir, filename)
|
||||
utils.InterfaceToExcel(*list, fileName)
|
||||
|
||||
line, err := kgo.KFile.ReadFile(fileName)
|
||||
if err != nil {
|
||||
os.Remove(fileName)
|
||||
biz.ErrIsNil(err, "读取文件失败")
|
||||
}
|
||||
rc.Download(line, fileName)
|
||||
rc.Download(fileName)
|
||||
}
|
||||
|
||||
// @Summary 字典数据列表
|
||||
|
||||
@@ -3,8 +3,6 @@ package api
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/kakuilan/kgo"
|
||||
"os"
|
||||
entity "pandax/apps/system/entity"
|
||||
services "pandax/apps/system/services"
|
||||
"pandax/base/biz"
|
||||
@@ -194,18 +192,13 @@ func (r *RoleApi) DeleteRole(rc *ctx.ReqCtx) {
|
||||
// @Success 200 {string} string "{"code": 400, "message": "删除失败"}"
|
||||
// @Router /system/dict/type/export [get]
|
||||
func (p *RoleApi) ExportRole(rc *ctx.ReqCtx) {
|
||||
filename := rc.GinCtx.Query("filename")
|
||||
status := rc.GinCtx.Query("status")
|
||||
roleName := rc.GinCtx.Query("roleName")
|
||||
roleKey := rc.GinCtx.Query("roleKey")
|
||||
|
||||
list := p.RoleApp.FindList(entity.SysRole{Status: status, RoleName: roleName, RoleKey: roleKey})
|
||||
fileName := utils.GetFileName(config.Conf.Server.ExcelDir, "角色")
|
||||
fileName := utils.GetFileName(config.Conf.Server.ExcelDir, filename)
|
||||
utils.InterfaceToExcel(*list, fileName)
|
||||
|
||||
line, err := kgo.KFile.ReadFile(fileName)
|
||||
if err != nil {
|
||||
os.Remove(fileName)
|
||||
biz.ErrIsNil(err, "读取文件失败")
|
||||
}
|
||||
rc.Download(line, fileName)
|
||||
rc.Download(fileName)
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@ import (
|
||||
"github.com/kakuilan/kgo"
|
||||
"github.com/mssola/user_agent"
|
||||
"net/http"
|
||||
"os"
|
||||
"pandax/apps/system/api/form"
|
||||
"pandax/apps/system/api/vo"
|
||||
"pandax/apps/system/entity"
|
||||
@@ -411,6 +410,7 @@ func (u *UserApi) DeleteSysUser(rc *ctx.ReqCtx) {
|
||||
// @Success 200 {string} string "{"code": 400, "message": "删除失败"}"
|
||||
// @Router /system/dict/type/export [get]
|
||||
func (u *UserApi) ExportUser(rc *ctx.ReqCtx) {
|
||||
filename := rc.GinCtx.Query("filename")
|
||||
status := rc.GinCtx.Query("status")
|
||||
userName := rc.GinCtx.Query("username")
|
||||
phone := rc.GinCtx.Query("phone")
|
||||
@@ -420,15 +420,9 @@ func (u *UserApi) ExportUser(rc *ctx.ReqCtx) {
|
||||
user.Username = userName
|
||||
user.Phone = phone
|
||||
list := u.UserApp.FindList(user)
|
||||
fileName := utils.GetFileName(config.Conf.Server.ExcelDir, "用户")
|
||||
fileName := utils.GetFileName(config.Conf.Server.ExcelDir, filename)
|
||||
utils.InterfaceToExcel(*list, fileName)
|
||||
|
||||
line, err := kgo.KFile.ReadFile(fileName)
|
||||
if err != nil {
|
||||
os.Remove(fileName)
|
||||
biz.ErrIsNil(err, "读取文件失败")
|
||||
}
|
||||
rc.Download(line, fileName)
|
||||
rc.Download(fileName)
|
||||
}
|
||||
|
||||
// 构建前端路由
|
||||
|
||||
@@ -2,18 +2,9 @@ package entity
|
||||
|
||||
import "pandax/base/model"
|
||||
|
||||
type UserName struct {
|
||||
Username string `gorm:"type:varchar(64)" json:"username"`
|
||||
}
|
||||
|
||||
type PassWord struct {
|
||||
// 密码
|
||||
Password string `gorm:"type:varchar(128)" json:"password"`
|
||||
}
|
||||
|
||||
type LoginM struct {
|
||||
UserName
|
||||
PassWord
|
||||
Username string `gorm:"type:varchar(64)" json:"username"`
|
||||
Password string `gorm:"type:varchar(128)" json:"password"`
|
||||
}
|
||||
|
||||
type SysUserId struct {
|
||||
|
||||
@@ -60,9 +60,9 @@ func (rc *ReqCtx) Handle(handler HandlerFunc) {
|
||||
}
|
||||
}
|
||||
|
||||
func (rc *ReqCtx) Download(data []byte, filename string) {
|
||||
func (rc *ReqCtx) Download(filename string) {
|
||||
rc.noRes = true
|
||||
ginx.Download(rc.GinCtx, data, filename)
|
||||
ginx.Download(rc.GinCtx, filename)
|
||||
}
|
||||
|
||||
// 新建请求上下文,默认需要校验token
|
||||
|
||||
@@ -47,10 +47,11 @@ func PathParamInt(g *gin.Context, pm string) int {
|
||||
}
|
||||
|
||||
// 文件下载
|
||||
func Download(g *gin.Context, data []byte, filename string) {
|
||||
g.Header("Content-Type", "application/octet-stream")
|
||||
g.Header("Content-Disposition", "attachment; filename="+filename)
|
||||
g.Data(http.StatusOK, "application/octet-stream", data)
|
||||
func Download(g *gin.Context, filename string) {
|
||||
g.Writer.Header().Add("success", "true")
|
||||
g.Writer.Header().Set("Content-Length", "-1")
|
||||
g.Writer.Header().Set("Content-Disposition", "attachment; filename="+filename)
|
||||
g.File(filename)
|
||||
}
|
||||
|
||||
// 返回统一成功结果
|
||||
|
||||
@@ -2,10 +2,8 @@ package utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/kakuilan/kgo"
|
||||
"github.com/xuri/excelize/v2"
|
||||
"reflect"
|
||||
"time"
|
||||
)
|
||||
|
||||
func ExportExcel(head []string, datas [][]any, filePath string) error {
|
||||
@@ -19,8 +17,8 @@ func ExportExcel(head []string, datas [][]any, filePath string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetFileName(path, model string) string {
|
||||
return path + fmt.Sprintf("%s_%s.xlsx", model, kgo.KTime.Date("20060102150405", time.Now()))
|
||||
func GetFileName(path, filename string) string {
|
||||
return path + filename
|
||||
}
|
||||
|
||||
func InterfaceToExcel(data any, fileName string) {
|
||||
|
||||
@@ -40,9 +40,9 @@ redis:
|
||||
port: 6379
|
||||
|
||||
mysql:
|
||||
host: 127.0.0.1
|
||||
username: root
|
||||
password: 123456
|
||||
host: 47.104.252.2
|
||||
username: pandax
|
||||
password: pandax
|
||||
db-name: pandax
|
||||
config: charset=utf8&loc=Local&parseTime=true
|
||||
|
||||
|
||||
Reference in New Issue
Block a user