|
@@ -7,6 +7,7 @@ import (
|
|
|
"eta/eta_mini_crm_ht/utils"
|
|
|
"fmt"
|
|
|
"github.com/rdlucklib/rdluck_tools/paging"
|
|
|
+ "github.com/xuri/excelize/v2"
|
|
|
"net/http"
|
|
|
"net/url"
|
|
|
"strconv"
|
|
@@ -18,6 +19,15 @@ type UserController struct {
|
|
|
BaseAuthController
|
|
|
}
|
|
|
|
|
|
+var (
|
|
|
+ templateCols = map[string]utils.ExcelColMapping{
|
|
|
+ "A": {"手机号", "Mobile"},
|
|
|
+ "B": {"最近一次阅读时间", "LastReadTime"},
|
|
|
+ "C": {"累计阅读次数", "ReadCount"},
|
|
|
+ "D": {"注册时间", "CreatedTime"},
|
|
|
+ }
|
|
|
+)
|
|
|
+
|
|
|
// TemplateList
|
|
|
// @Title 临时用户列表
|
|
|
// @Description 临时用户列表
|
|
@@ -424,15 +434,28 @@ func (this *UserController) ExportTemplateUsers() {
|
|
|
br.Msg = "查询用户失败,系统错误,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
+ list := make([]models.TemplateUsersItem, 0)
|
|
|
+ for _, v := range userList {
|
|
|
+ list = append(list, v.ToItem())
|
|
|
+ }
|
|
|
year, month, day := time.Now().Date()
|
|
|
yearStr := strconv.Itoa(year)[2:]
|
|
|
fileName := fmt.Sprintf("临时用户表%s.%d.%d.xlsx", yearStr, month, day)
|
|
|
- // https://tools.ietf.org/html/rfc6266#section-4.3
|
|
|
- fn := url.PathEscape(fileName)
|
|
|
- if fileName == fn {
|
|
|
+ file, err := utils.ExportExcel("用户列表", templateCols, models.TemplateUsersItem{}, list)
|
|
|
+ _ = this.downloadExcelFile(file, fileName)
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "下载成功"
|
|
|
+}
|
|
|
+
|
|
|
+// encodeChineseFilename 将中文文件名编码为 ISO-8859-1
|
|
|
+func (this *UserController) downloadExcelFile(file *excelize.File, filename string) (err error) {
|
|
|
+ // 对文件名进行 ISO-8859-1 编码
|
|
|
+ fn := url.PathEscape(filename)
|
|
|
+ if filename == fn {
|
|
|
fn = "filename=" + fn
|
|
|
} else {
|
|
|
- fn = "filename=" + fileName + "; filename*=utf-8''" + fn
|
|
|
+ fn = "filename=" + filename + "; filename*=utf-8''" + fn
|
|
|
}
|
|
|
this.Ctx.ResponseWriter.Header().Set("Content-Disposition", "attachment; "+fn)
|
|
|
this.Ctx.ResponseWriter.Header().Set("Content-Description", "File Transfer")
|
|
@@ -441,27 +464,12 @@ func (this *UserController) ExportTemplateUsers() {
|
|
|
this.Ctx.ResponseWriter.Header().Set("Expires", "0")
|
|
|
this.Ctx.ResponseWriter.Header().Set("Cache-Control", "must-revalidate")
|
|
|
this.Ctx.ResponseWriter.Header().Set("Pragma", "public")
|
|
|
- list := make([]models.TemplateUsersItem, 0)
|
|
|
- for _, v := range userList {
|
|
|
- list = append(list, v.ToItem())
|
|
|
- }
|
|
|
-
|
|
|
- file, err := utils.ExportExcel(fileName, "用户列表", map[string]string{"用户名": "UserName", "手机号": "Mobile"}, nil)
|
|
|
// 写入文件
|
|
|
if err = file.Write(this.Ctx.ResponseWriter); err != nil {
|
|
|
utils.FileLog.Error("导出excel文件失败:", err)
|
|
|
http.Error(this.Ctx.ResponseWriter, "导出excel文件失败", http.StatusInternalServerError)
|
|
|
}
|
|
|
- br.Ret = 200
|
|
|
- br.Success = true
|
|
|
- br.Msg = "获取成功"
|
|
|
-}
|
|
|
-
|
|
|
-// encodeChineseFilename 将中文文件名编码为 ISO-8859-1
|
|
|
-func encodeChineseFilename(filename string) string {
|
|
|
- // 对文件名进行 ISO-8859-1 编码
|
|
|
- encodedFilename := fmt.Sprintf("attachment; filename=%s", filename)
|
|
|
- return encodedFilename
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
// ExportOfficialUsers
|