1.新增店员绩效导出excel功能;
2.新增租卡会员统计导出excel功能;
This commit is contained in:
parent
be82112908
commit
013a52f66b
|
@ -239,19 +239,13 @@ func CooperativeMemberPromotionStatisticList(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
list, count, err := req.List()
|
ret, err := req.List()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Errorf("err:", err)
|
logger.Errorf("err:", err)
|
||||||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
ret := models.CooperativeMemberPromotionStatisticListResp{
|
|
||||||
Count: count,
|
|
||||||
PageIndex: req.Page,
|
|
||||||
List: list,
|
|
||||||
}
|
|
||||||
|
|
||||||
app.OK(c, ret, "")
|
app.OK(c, ret, "")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,9 @@ package models
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/codinl/go-logger"
|
"github.com/codinl/go-logger"
|
||||||
|
"github.com/xuri/excelize/v2"
|
||||||
orm "go-admin/common/global"
|
orm "go-admin/common/global"
|
||||||
|
"go-admin/tools/config"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -701,7 +703,7 @@ type CooperativeMemberPromotionStatistic struct {
|
||||||
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
||||||
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
||||||
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_count"` // 续费黑金会员数量
|
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_count"` // 续费黑金会员数量
|
||||||
Date string `json:"date" gorm:"index"` //
|
Date string `json:"date" gorm:"index"` // 日期
|
||||||
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
|
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
|
||||||
|
|
||||||
UpgradeGoldToPlatinumCount uint32 `json:"upgrade_gold_to_platinum_count" gorm:"default:0"` // 升级:黄金->白金数量
|
UpgradeGoldToPlatinumCount uint32 `json:"upgrade_gold_to_platinum_count" gorm:"default:0"` // 升级:黄金->白金数量
|
||||||
|
@ -724,12 +726,18 @@ type CooperativeMemberPromotionStatisticReq struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type CooperativeMemberPromotionStatisticListResp struct {
|
type CooperativeMemberPromotionStatisticListResp struct {
|
||||||
Count int64 `json:"count"`
|
|
||||||
PageIndex int `json:"pageIndex"`
|
|
||||||
List []CooperativeMemberPromotionStatistic `json:"list"`
|
List []CooperativeMemberPromotionStatistic `json:"list"`
|
||||||
|
Total int64 `json:"total"` // 总条数
|
||||||
|
PageIndex int `json:"pageIndex"` // 页码
|
||||||
|
PageSize int `json:"pageSize"` // 每页展示条数
|
||||||
|
ExportUrl string `json:"export_url"` // 导出excel地址
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *CooperativeMemberPromotionStatisticReq) List() ([]CooperativeMemberPromotionStatistic, int64, error) {
|
func (m *CooperativeMemberPromotionStatisticReq) List() (*CooperativeMemberPromotionStatisticListResp, error) {
|
||||||
|
resp := &CooperativeMemberPromotionStatisticListResp{
|
||||||
|
PageIndex: m.Page,
|
||||||
|
PageSize: m.PageSize,
|
||||||
|
}
|
||||||
list := make([]CooperativeMemberPromotionStatistic, 0)
|
list := make([]CooperativeMemberPromotionStatistic, 0)
|
||||||
|
|
||||||
page := m.Page - 1
|
page := m.Page - 1
|
||||||
|
@ -778,8 +786,11 @@ func (m *CooperativeMemberPromotionStatisticReq) List() ([]CooperativeMemberProm
|
||||||
if !endTime.IsZero() {
|
if !endTime.IsZero() {
|
||||||
qs = qs.Where("created_at<?", endTime)
|
qs = qs.Where("created_at<?", endTime)
|
||||||
}
|
}
|
||||||
err = qs.Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&memberDayStorePromotions).Error
|
if m.IsExport == 1 {
|
||||||
|
err = qs.Order("id DESC").Find(&memberDayStorePromotions).Error
|
||||||
|
} else {
|
||||||
|
err = qs.Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&memberDayStorePromotions).Error
|
||||||
|
}
|
||||||
list = CooperativeMemberPromotionStoreDayToStatistic(memberDayStorePromotions)
|
list = CooperativeMemberPromotionStoreDayToStatistic(memberDayStorePromotions)
|
||||||
} else {
|
} else {
|
||||||
var memberDayPromotions []CooperativeMemberPromotionDay
|
var memberDayPromotions []CooperativeMemberPromotionDay
|
||||||
|
@ -790,10 +801,13 @@ func (m *CooperativeMemberPromotionStatisticReq) List() ([]CooperativeMemberProm
|
||||||
if !endTime.IsZero() {
|
if !endTime.IsZero() {
|
||||||
qs = qs.Where("created_at<?", endTime)
|
qs = qs.Where("created_at<?", endTime)
|
||||||
}
|
}
|
||||||
err = qs.Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&memberDayPromotions).Error
|
if m.IsExport == 1 {
|
||||||
|
err = qs.Order("id DESC").Find(&memberDayPromotions).Error
|
||||||
|
} else {
|
||||||
|
err = qs.Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&memberDayPromotions).Error
|
||||||
|
}
|
||||||
list = CooperativeMemberPromotionDayListToStatistic(memberDayPromotions)
|
list = CooperativeMemberPromotionDayListToStatistic(memberDayPromotions)
|
||||||
}
|
}
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
if m.StoreId != 0 {
|
if m.StoreId != 0 {
|
||||||
var memberStorePromotions []CooperativeMemberPromotionStore
|
var memberStorePromotions []CooperativeMemberPromotionStore
|
||||||
|
@ -810,7 +824,11 @@ func (m *CooperativeMemberPromotionStatisticReq) List() ([]CooperativeMemberProm
|
||||||
if !endTime.IsZero() {
|
if !endTime.IsZero() {
|
||||||
qs = qs.Where("created_at<?", endTime)
|
qs = qs.Where("created_at<?", endTime)
|
||||||
}
|
}
|
||||||
err = qs.Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&memberStorePromotions).Error
|
if m.IsExport == 1 {
|
||||||
|
err = qs.Order("id DESC").Find(&memberStorePromotions).Error
|
||||||
|
} else {
|
||||||
|
err = qs.Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&memberStorePromotions).Error
|
||||||
|
}
|
||||||
list = CooperativeMemberPromotionStoreToStatistic(memberStorePromotions)
|
list = CooperativeMemberPromotionStoreToStatistic(memberStorePromotions)
|
||||||
} else {
|
} else {
|
||||||
var memberPromotions []CooperativeMemberPromotion
|
var memberPromotions []CooperativeMemberPromotion
|
||||||
|
@ -824,23 +842,171 @@ func (m *CooperativeMemberPromotionStatisticReq) List() ([]CooperativeMemberProm
|
||||||
if !endTime.IsZero() {
|
if !endTime.IsZero() {
|
||||||
qs = qs.Where("created_at<?", endTime)
|
qs = qs.Where("created_at<?", endTime)
|
||||||
}
|
}
|
||||||
err = qs.Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&memberPromotions).Error
|
if m.IsExport == 1 {
|
||||||
|
err = qs.Order("id DESC").Find(&memberPromotions).Error
|
||||||
|
} else {
|
||||||
|
err = qs.Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&memberPromotions).Error
|
||||||
|
}
|
||||||
list = CooperativeMemberPromotionToStatistic(memberPromotions)
|
list = CooperativeMemberPromotionToStatistic(memberPromotions)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if err != nil && err != RecordNotFound {
|
if err != nil && err != RecordNotFound {
|
||||||
logger.Error("count err:", err)
|
logger.Error("count err:", err)
|
||||||
return list, count, err
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加门店信息
|
||||||
|
err = cooperativeMemberPromotionAddStoreInfo(list)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("cooperativeMemberPromotionAddStoreInfo err:", err)
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = qs.Count(&count).Error
|
err = qs.Count(&count).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("count err:", err)
|
logger.Error("count err:", err)
|
||||||
return list, 0, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return list, count, nil
|
if m.IsExport == 1 {
|
||||||
|
fileName, err := promotionStatisticListExport(list)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("count err:", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
resp.ExportUrl = fileName
|
||||||
|
} else {
|
||||||
|
resp.List = list
|
||||||
|
resp.Total = count
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加门店信息
|
||||||
|
func cooperativeMemberPromotionAddStoreInfo(list []CooperativeMemberPromotionStatistic) error {
|
||||||
|
// 查询门店信息
|
||||||
|
var storeList []Store
|
||||||
|
err := orm.Eloquent.Table("store").Find(&storeList).Error
|
||||||
|
if err != nil {
|
||||||
|
logger.Errorf("err:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
storeMap := make(map[uint32]Store, 0)
|
||||||
|
for i, _ := range storeList {
|
||||||
|
storeMap[storeList[i].ID] = storeList[i]
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, _ := range list {
|
||||||
|
store := storeMap[list[i].StoreId]
|
||||||
|
list[i].Store = &store
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出租卡会员统计excel
|
||||||
|
func promotionStatisticListExport(list []CooperativeMemberPromotionStatistic) (string, error) {
|
||||||
|
file := excelize.NewFile()
|
||||||
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
|
url := ExportUrl
|
||||||
|
fileName := time.Now().Format(TimeFormat) + "租卡会员统计" + ".xlsx"
|
||||||
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
title1 := []interface{}{"合作商", "门店", "开通会员", "开通会员", "开通会员", "续费会员", "续费会员", "续费会员",
|
||||||
|
"升级会员数", "升级会员数", "升级会员数", "日期"}
|
||||||
|
title2 := []interface{}{"合作商", "门店", "黄金会员_数量", "白金会员_数量", "黑金会员_数量", "黄金会员_数量", "白金会员_数量",
|
||||||
|
"黑金会员_数量", "黄金->白金", "黄金->黑金", "白金->黑金", "日期"}
|
||||||
|
for i, _ := range title1 {
|
||||||
|
cell, _ := excelize.CoordinatesToCellName(1+i, 1)
|
||||||
|
err := file.SetCellValue(fSheet, cell, title1[i])
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("file set value err:", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, _ := range title2 {
|
||||||
|
cell, _ := excelize.CoordinatesToCellName(1+i, 2)
|
||||||
|
err := file.SetCellValue(fSheet, cell, title2[i])
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("file set value err:", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var row []interface{}
|
||||||
|
nExcelStartRow := 0
|
||||||
|
|
||||||
|
for i := 0; i < len(list); i++ {
|
||||||
|
row = []interface{}{
|
||||||
|
list[i].CooperativeName, // 合作商
|
||||||
|
list[i].Store.Name, // 门店名称
|
||||||
|
list[i].GoldCount, // 开通会员:黄金会员数量
|
||||||
|
list[i].PlatinumCount, // 开通会员:白金会员数量
|
||||||
|
list[i].BlackGoldCount, // 开通会员:黑金会员数量
|
||||||
|
list[i].RenewalGoldCount, // 续费会员:黄金会员数量
|
||||||
|
list[i].RenewalPlatinumCount, // 续费会员:白金会员数量
|
||||||
|
list[i].RenewalBlackGoldCount, // 续费会员:黑金会员数量
|
||||||
|
list[i].UpgradeGoldToPlatinumCount, // 升级:黄金->白金数量
|
||||||
|
list[i].UpgradeGoldToBlackCount, // 升级:黄金->黑金数量
|
||||||
|
list[i].UpgradePlatinumToBlackCount, // 升级:白金->黑金数量
|
||||||
|
list[i].Date,
|
||||||
|
}
|
||||||
|
|
||||||
|
for j, _ := range row {
|
||||||
|
cell, _ := excelize.CoordinatesToCellName(1+j, nExcelStartRow+3)
|
||||||
|
err := file.SetCellValue(fSheet, cell, row[j])
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("file set value err:", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nExcelStartRow++
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置所有单元格的样式: 居中、加边框
|
||||||
|
style, _ := file.NewStyle(`{"alignment":{"horizontal":"center","vertical":"center"},
|
||||||
|
"border":[{"type":"left","color":"000000","style":1},
|
||||||
|
{"type":"top","color":"000000","style":1},
|
||||||
|
{"type":"right","color":"000000","style":1},
|
||||||
|
{"type":"bottom","color":"000000","style":1}]}`)
|
||||||
|
|
||||||
|
// 设置单元格的样式: 居中、加边框、自动换行
|
||||||
|
style1, _ := file.NewStyle(`{"alignment":{"horizontal":"center","vertical":"center","wrap_text":true},
|
||||||
|
"border":[{"type":"left","color":"000000","style":1},
|
||||||
|
{"type":"top","color":"000000","style":1},
|
||||||
|
{"type":"right","color":"000000","style":1},
|
||||||
|
{"type":"bottom","color":"000000","style":1}]}`)
|
||||||
|
|
||||||
|
endRow := fmt.Sprintf("L%d", nExcelStartRow+2)
|
||||||
|
// 合并单元格
|
||||||
|
_ = file.MergeCell(fSheet, "A1", "A2")
|
||||||
|
_ = file.MergeCell(fSheet, "B1", "B2")
|
||||||
|
_ = file.MergeCell(fSheet, "C1", "E1")
|
||||||
|
_ = file.MergeCell(fSheet, "F1", "H1")
|
||||||
|
_ = file.MergeCell(fSheet, "I1", "K1")
|
||||||
|
_ = file.MergeCell(fSheet, "L1", "L2")
|
||||||
|
//设置单元格高度
|
||||||
|
file.SetRowHeight("Sheet1", 1, 18)
|
||||||
|
file.SetRowHeight("Sheet1", 2, 18)
|
||||||
|
// 设置单元格大小
|
||||||
|
file.SetColWidth("Sheet1", "A", "A", 15)
|
||||||
|
file.SetColWidth("Sheet1", "B", "B", 20)
|
||||||
|
// 从列 C 到列 K,逐一设置宽度为 20
|
||||||
|
for col := 'C'; col <= 'K'; col++ {
|
||||||
|
colName := string(col)
|
||||||
|
file.SetColWidth("Sheet1", colName, colName, 12)
|
||||||
|
}
|
||||||
|
// 应用样式到整个表格
|
||||||
|
_ = file.SetCellStyle("Sheet1", "A1", "L1", style1)
|
||||||
|
_ = file.SetCellStyle("Sheet1", "A2", endRow, style)
|
||||||
|
|
||||||
|
fmt.Println("save fileName:", config.ExportConfig.Path+fileName)
|
||||||
|
if err := file.SaveAs(config.ExportConfig.Path + fileName); err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
return url + fileName, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func CooperativeMemberPromotionDayListToStatistic(list []CooperativeMemberPromotionDay) []CooperativeMemberPromotionStatistic {
|
func CooperativeMemberPromotionDayListToStatistic(list []CooperativeMemberPromotionDay) []CooperativeMemberPromotionStatistic {
|
||||||
|
|
|
@ -2648,6 +2648,116 @@ func (m *AssistantInviteMemberReportReq) List() ([]InviteMemberReport, int64, er
|
||||||
return memberReport, count, nil
|
return memberReport, count, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 店员绩效导出excel
|
||||||
|
func inviteMemberReport(list []InviteMemberReport) (string, error) {
|
||||||
|
file := excelize.NewFile()
|
||||||
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
|
url := ExportUrl
|
||||||
|
fileName := time.Now().Format(TimeFormat) + "店员绩效" + ".xlsx"
|
||||||
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
title1 := []interface{}{"昵称", "小程序ID", "合作商", "门店",
|
||||||
|
"开通会员数", "开通会员数", "开通会员数", "开通会员数", "开通会员数",
|
||||||
|
"续费会员数(干预)", "续费会员数(干预)", "续费会员数(干预)",
|
||||||
|
"升级会员数(干预)", "升级会员数(干预)", "升级会员数(干预)",
|
||||||
|
"续费会员数(自动)", "续费会员数(自动)", "续费会员数(自动)", "续费会员数(自动)", "续费会员数(自动)",
|
||||||
|
"升级会员数(自动)", "升级会员数(自动)", "升级会员数(自动)"}
|
||||||
|
title2 := []interface{}{"昵称", "小程序ID", "合作商", "门店",
|
||||||
|
"年费黄金会员_数量", "半年黄金", "季度黄金", "年费白金会员_数量", "年费黑金会员_数量",
|
||||||
|
"年费黄金", "年费白金", "年费黑金",
|
||||||
|
"黄金->白金", "黄金->黑金", "白金->黑金",
|
||||||
|
"续费会员数(自动)", "续费会员数(自动)", "续费会员数(自动)", "续费会员数(自动)", "续费会员数(自动)",
|
||||||
|
"升级会员数(自动)", "升级会员数(自动)", "升级会员数(自动)"}
|
||||||
|
for i, _ := range title1 {
|
||||||
|
cell, _ := excelize.CoordinatesToCellName(1+i, 1)
|
||||||
|
err := file.SetCellValue(fSheet, cell, title1[i])
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("file set value err:", logger.Field("err", err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, _ := range title2 {
|
||||||
|
cell, _ := excelize.CoordinatesToCellName(1+i, 2)
|
||||||
|
err := file.SetCellValue(fSheet, cell, title2[i])
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("file set value err:", logger.Field("err", err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var row []interface{}
|
||||||
|
nExcelStartRow := 0
|
||||||
|
|
||||||
|
for i := 0; i < len(list); i++ {
|
||||||
|
row = []interface{}{
|
||||||
|
list[i].CooperativeName, // 合作商
|
||||||
|
list[i].Store.Name, // 门店名称
|
||||||
|
list[i].GoldCount, // 开通会员:黄金会员数量
|
||||||
|
list[i].PlatinumCount, // 开通会员:白金会员数量
|
||||||
|
list[i].BlackGoldCount, // 开通会员:黑金会员数量
|
||||||
|
list[i].RenewalGoldCount, // 续费会员:黄金会员数量
|
||||||
|
list[i].RenewalPlatinumCount, // 续费会员:白金会员数量
|
||||||
|
list[i].RenewalBlackGoldCount, // 续费会员:黑金会员数量
|
||||||
|
list[i].UpgradeGoldToPlatinumCount, // 升级:黄金->白金数量
|
||||||
|
list[i].UpgradeGoldToBlackCount, // 升级:黄金->黑金数量
|
||||||
|
list[i].UpgradePlatinumToBlackCount, // 升级:白金->黑金数量
|
||||||
|
list[i].Date,
|
||||||
|
}
|
||||||
|
|
||||||
|
for j, _ := range row {
|
||||||
|
cell, _ := excelize.CoordinatesToCellName(1+j, nExcelStartRow+3)
|
||||||
|
err := file.SetCellValue(fSheet, cell, row[j])
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("file set value err:", logger.Field("err", err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nExcelStartRow++
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置所有单元格的样式: 居中、加边框
|
||||||
|
style, _ := file.NewStyle(`{"alignment":{"horizontal":"center","vertical":"center"},
|
||||||
|
"border":[{"type":"left","color":"000000","style":1},
|
||||||
|
{"type":"top","color":"000000","style":1},
|
||||||
|
{"type":"right","color":"000000","style":1},
|
||||||
|
{"type":"bottom","color":"000000","style":1}]}`)
|
||||||
|
|
||||||
|
// 设置单元格的样式: 居中、加边框、自动换行
|
||||||
|
style1, _ := file.NewStyle(`{"alignment":{"horizontal":"center","vertical":"center","wrap_text":true},
|
||||||
|
"border":[{"type":"left","color":"000000","style":1},
|
||||||
|
{"type":"top","color":"000000","style":1},
|
||||||
|
{"type":"right","color":"000000","style":1},
|
||||||
|
{"type":"bottom","color":"000000","style":1}]}`)
|
||||||
|
|
||||||
|
endRow := fmt.Sprintf("L%d", nExcelStartRow+2)
|
||||||
|
// 合并单元格
|
||||||
|
_ = file.MergeCell(fSheet, "A1", "A2")
|
||||||
|
_ = file.MergeCell(fSheet, "B1", "B2")
|
||||||
|
_ = file.MergeCell(fSheet, "C1", "E1")
|
||||||
|
_ = file.MergeCell(fSheet, "F1", "H1")
|
||||||
|
_ = file.MergeCell(fSheet, "I1", "K1")
|
||||||
|
_ = file.MergeCell(fSheet, "L1", "L2")
|
||||||
|
//设置单元格高度
|
||||||
|
file.SetRowHeight("Sheet1", 1, 18)
|
||||||
|
file.SetRowHeight("Sheet1", 2, 18)
|
||||||
|
// 设置单元格大小
|
||||||
|
file.SetColWidth("Sheet1", "A", "A", 15)
|
||||||
|
file.SetColWidth("Sheet1", "B", "B", 20)
|
||||||
|
// 从列 C 到列 K,逐一设置宽度为 20
|
||||||
|
for col := 'C'; col <= 'K'; col++ {
|
||||||
|
colName := string(col)
|
||||||
|
file.SetColWidth("Sheet1", colName, colName, 12)
|
||||||
|
}
|
||||||
|
// 应用样式到整个表格
|
||||||
|
_ = file.SetCellStyle("Sheet1", "A1", "L1", style1)
|
||||||
|
_ = file.SetCellStyle("Sheet1", "A2", endRow, style)
|
||||||
|
|
||||||
|
fmt.Println("save fileName:", config.ExportConfig.Path+fileName)
|
||||||
|
if err := file.SaveAs(config.ExportConfig.Path + fileName); err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
return url + fileName, nil
|
||||||
|
}
|
||||||
|
|
||||||
func InviteMemberReportListSetUser(list []InviteMemberReport) []InviteMemberReport {
|
func InviteMemberReportListSetUser(list []InviteMemberReport) []InviteMemberReport {
|
||||||
ids := make([]uint32, 0, len(list))
|
ids := make([]uint32, 0, len(list))
|
||||||
for i, _ := range list {
|
for i, _ := range list {
|
||||||
|
|
15
docs/docs.go
15
docs/docs.go
|
@ -5368,6 +5368,7 @@ const docTemplate = `{
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"date": {
|
"date": {
|
||||||
|
"description": "日期",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"day_time": {
|
"day_time": {
|
||||||
|
@ -5421,8 +5422,9 @@ const docTemplate = `{
|
||||||
"models.CooperativeMemberPromotionStatisticListResp": {
|
"models.CooperativeMemberPromotionStatisticListResp": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"count": {
|
"export_url": {
|
||||||
"type": "integer"
|
"description": "导出excel地址",
|
||||||
|
"type": "string"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
|
@ -5431,6 +5433,15 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pageIndex": {
|
"pageIndex": {
|
||||||
|
"description": "页码",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"pageSize": {
|
||||||
|
"description": "每页展示条数",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"total": {
|
||||||
|
"description": "总条数",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5357,6 +5357,7 @@
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"date": {
|
"date": {
|
||||||
|
"description": "日期",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"day_time": {
|
"day_time": {
|
||||||
|
@ -5410,8 +5411,9 @@
|
||||||
"models.CooperativeMemberPromotionStatisticListResp": {
|
"models.CooperativeMemberPromotionStatisticListResp": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"count": {
|
"export_url": {
|
||||||
"type": "integer"
|
"description": "导出excel地址",
|
||||||
|
"type": "string"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
|
@ -5420,6 +5422,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pageIndex": {
|
"pageIndex": {
|
||||||
|
"description": "页码",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"pageSize": {
|
||||||
|
"description": "每页展示条数",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"total": {
|
||||||
|
"description": "总条数",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -757,6 +757,7 @@ definitions:
|
||||||
description: 创建时间
|
description: 创建时间
|
||||||
type: string
|
type: string
|
||||||
date:
|
date:
|
||||||
|
description: 日期
|
||||||
type: string
|
type: string
|
||||||
day_time:
|
day_time:
|
||||||
type: string
|
type: string
|
||||||
|
@ -795,13 +796,21 @@ definitions:
|
||||||
type: object
|
type: object
|
||||||
models.CooperativeMemberPromotionStatisticListResp:
|
models.CooperativeMemberPromotionStatisticListResp:
|
||||||
properties:
|
properties:
|
||||||
count:
|
export_url:
|
||||||
type: integer
|
description: 导出excel地址
|
||||||
|
type: string
|
||||||
list:
|
list:
|
||||||
items:
|
items:
|
||||||
$ref: '#/definitions/models.CooperativeMemberPromotionStatistic'
|
$ref: '#/definitions/models.CooperativeMemberPromotionStatistic'
|
||||||
type: array
|
type: array
|
||||||
pageIndex:
|
pageIndex:
|
||||||
|
description: 页码
|
||||||
|
type: integer
|
||||||
|
pageSize:
|
||||||
|
description: 每页展示条数
|
||||||
|
type: integer
|
||||||
|
total:
|
||||||
|
description: 总条数
|
||||||
type: integer
|
type: integer
|
||||||
type: object
|
type: object
|
||||||
models.CooperativeMemberPromotionStatisticReq:
|
models.CooperativeMemberPromotionStatisticReq:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user