This commit is contained in:
li 2023-02-09 16:59:06 +08:00
parent 582c388a84
commit 39a1f1f028
5 changed files with 710 additions and 4 deletions

View File

@ -265,6 +265,7 @@ func ErpOrderCommodityList(c *gin.Context) {
req := &struct { req := &struct {
Tel string `json:"tel"` Tel string `json:"tel"`
IMEI string `json:"imei"` IMEI string `json:"imei"`
ErpCategoryId uint32 `json:"erp_category_id"`
ErpCommodityName string `json:"erp_commodity_name"` ErpCommodityName string `json:"erp_commodity_name"`
}{} }{}
if err := c.ShouldBindJSON(&req); err != nil { if err := c.ShouldBindJSON(&req); err != nil {
@ -284,6 +285,10 @@ func ErpOrderCommodityList(c *gin.Context) {
if req.ErpCommodityName != "" { if req.ErpCommodityName != "" {
qs = qs.Where("erp_commodity_name=?", req.ErpCommodityName) qs = qs.Where("erp_commodity_name=?", req.ErpCommodityName)
} }
if req.ErpCategoryId != 0 {
qs = qs.Where("erp_category_id=?", req.ErpCategoryId)
}
err := qs.Order("id DESC").Find(&commodities).Error err := qs.Order("id DESC").Find(&commodities).Error
if err != nil { if err != nil {
logger.Error("erp commodity list err:", err) logger.Error("erp commodity list err:", err)
@ -344,7 +349,7 @@ func ErpOrderAudit(c *gin.Context) {
}{} }{}
if err := c.ShouldBindJSON(&req); err != nil { if err := c.ShouldBindJSON(&req); err != nil {
logger.Error(err) logger.Error(err)
RespJson(c, status.InternalServerError, nil) RespJson(c, status.BadRequest, nil)
return return
} }
@ -358,3 +363,150 @@ func ErpOrderAudit(c *gin.Context) {
RespOK(c, nil) RespOK(c, nil)
return return
} }
func ErpCashierStoreList(c *gin.Context) {
req := struct {
StoreId uint32 `json:"store_id"`
PageNum int `json:"page_num"`
PageSize int `json:"page_size"`
//IsExport uint32 `json:"is_export"` // 1-导出
}{}
if err := c.ShouldBindJSON(&req); err != nil {
logger.Error(err)
RespJson(c, status.BadRequest, nil)
return
}
//uc := auth.GetCurrentUser(c)
//if uc == nil {
// logger.Error("uc is nil")
// RespJson(c, status.Unauthorized, nil)
// return
//}
////uc = &auth.UserClaims{Uid: 8588420}
//assistant := model.GetUserByUid(uc.Uid)
//if assistant.UserType != 2 {
// logger.Error("not assistant")
// RespJson(c, status.InternalServerError, nil)
// return
//}
//req.StoreId = uint32(assistant.StoreId)
resp := &model.ErpCashierStoreListResp{
PageNum: req.PageNum,
PageSize: req.PageSize,
}
page := req.PageNum - 1
if page < 0 {
page = 0
}
if req.PageSize == 0 {
req.PageSize = 10
}
qs := model.DB.Table("erp_store_cashier")
if req.StoreId != 0 {
qs = qs.Where("store_id=?", req.StoreId)
}
var count int64
err := qs.Count(&count).Error
if err != nil {
logger.Error("count err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
resp.Total = int(count)/req.PageSize + 1
var categories []model.ErpStoreCashier
//if req.IsExport == 1 {
// //err = qs.Order("id DESC").Find(&categories).Error
// //if err != nil && err != model.RecordNotFound {
// // logger.Error("dailys err:", err)
// // RespJson(c, status.InternalServerError, nil)
// // return
// //}
// //
// //listExport, err := model.ErpStoreCashierListExport(categories)
// //if err != nil {
// // logger.Error("list export err:", err)
// // RespJson(c, status.InternalServerError, nil)
// // return
// //}
// //resp.ExportUrl = listExport
//} else {
//}
err = qs.Order("id DESC").Offset(page * req.PageSize).Limit(req.PageSize).Find(&categories).Error
if err != nil && err != model.RecordNotFound {
logger.Error("erp commodity list err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
resp.List = categories
RespOK(c, resp)
return
}
// 串码查询商品详情
func ErpOrderDel(c *gin.Context) {
req := &struct {
ErpOrderId uint32 `json:"erp_order_id"`
}{}
if err := c.ShouldBindJSON(&req); err != nil {
logger.Error(err)
RespJson(c, status.BadRequest, nil)
return
}
err := model.DB.Table("erp_order").Where("id = ?", req.ErpOrderId).Delete(&model.ErpOrder{}).Error
if err != nil {
logger.Error("order del err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
RespOK(c, nil)
return
}
func UserInfoList(c *gin.Context) {
req := &struct {
Tel string `json:"tel"`
}{}
if err := c.ShouldBindJSON(&req); err != nil {
logger.Error(err)
RespJson(c, status.BadRequest, nil)
return
}
var users []model.User
err := model.DB.Table("user").Where("tel LIKE '%" + req.Tel + "%'").Find(&users).Error
//err := model.NewUserQuerySet(model.DB).TelLike(req.Tel).All(&users)
if err != nil {
logger.Error("erp commodity list err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
RespOK(c, users)
return
}
func ErpCommodityList(c *gin.Context) {
req := &model.ErpCommodityListReq{}
if err := c.ShouldBindJSON(&req); err != nil {
logger.Error(err)
RespJson(c, status.BadRequest, nil)
return
}
resp, err := req.List()
if err != nil {
logger.Error("erp commodity list err:", err)
RespJson(c, status.InternalServerError, nil)
return
}
RespOK(c, resp)
return
}

View File

@ -1,6 +1,9 @@
package model package model
import ( import (
"fmt"
"github.com/codinl/go-logger"
"github.com/xuri/excelize/v2"
"time" "time"
) )
@ -182,6 +185,130 @@ type ErpInventoryStockCommodity struct {
// erp_inventory_stock_commodity // erp_inventory_stock_commodity
} }
type ErpCommodityListReq struct {
SerialNumber string `json:"serial_number"`
Name string `json:"name"`
ErpCategoryId uint32 `json:"erp_category_id"`
IMEI string `json:"imei"`
ErpSupplierId uint32 `json:"erp_supplier_id"`
PageNum int `json:"page_num"`
PageSize int `json:"page_size"`
IsExport uint32 `json:"is_export"` // 1-导出
}
type ErpCommodityListResp struct {
List []ErpCommodity `json:"list"`
Total int `json:"total"`
PageNum int `json:"page_num"`
PageSize int `json:"page_size"`
ExportUrl string `json:"export_url"`
}
func (m *ErpCommodityListReq) List() (*ErpCommodityListResp, error) {
resp := &ErpCommodityListResp{
PageNum: m.PageNum,
PageSize: m.PageSize,
}
page := m.PageNum - 1
if page < 0 {
page = 0
}
if m.PageSize == 0 {
m.PageSize = 10
}
qs := DB.Table("erp_commodity")
if m.SerialNumber != "" {
qs = qs.Where("serial_number=?", m.SerialNumber)
}
if m.Name != "" {
//qs = qs.Where("name Like %" + m.Name + "%")
qs = qs.Where("name LIKE ?", m.Name)
}
if m.IMEI != "" {
qs = qs.Where("imei=?", m.IMEI)
}
if m.ErpCategoryId != 0 {
qs = qs.Where("erp_category_id=?", m.ErpCategoryId)
}
if m.ErpSupplierId != 0 {
qs = qs.Where("erp_supplier_id=?", m.ErpSupplierId)
}
var count int64
err := qs.Count(&count).Error
if err != nil {
logger.Error("count err:", err)
return resp, err
}
resp.Total = int(count)/m.PageSize + 1
var commodities []ErpCommodity
if m.IsExport == 1 {
err = qs.Order("id DESC").Find(&commodities).Error
if err != nil && err != RecordNotFound {
logger.Error("dailys err:", err)
return resp, err
}
listExport, err := ErpCommodityListExport(commodities)
if err != nil {
logger.Error("list export err:", err)
}
resp.ExportUrl = listExport
} else {
err = qs.Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&commodities).Error
if err != nil && err != RecordNotFound {
logger.Error("erp commodity list err:", err)
return resp, err
}
resp.List = commodities
}
return resp, nil
}
func ErpCommodityListExport(list []ErpCommodity) (string, error) {
file := excelize.NewFile()
streamWriter, err := file.NewStreamWriter("Sheet1")
if err != nil {
fmt.Println(err)
}
url := "http://39.108.188.218:8000/img/export/"
fileName := time.Now().Format(TimeFormat) + "商品" + ".xlsx"
//title := []interface{}{"供应商编号", "供应商名称", "联系人", "手机号", "地址", "开户银行", "银行账号", "付款周期/天"}
title := []interface{}{"商品编号", "商品名称", "商品分类", "是否串码", "主供应商", "零售价", "最低零售价", "员工成本价",
"采购价", "提成等级1", "提成等级2", "产地", "备注", "会员折扣(零售价的百分比)"}
cell, _ := excelize.CoordinatesToCellName(1, 1)
if err = streamWriter.SetRow(cell, title); err != nil {
fmt.Println(err)
}
var row []interface{}
for rowId := 0; rowId < len(list); rowId++ {
isIMEI := "否"
if list[rowId].IMEIType == 2 {
isIMEI = "是"
}
row = []interface{}{list[rowId].SerialNumber, list[rowId].Name, list[rowId].ErpCategoryName,
isIMEI, list[rowId].ErpSupplierName, list[rowId].RetailPrice,
list[rowId].MinRetailPrice, list[rowId].StaffCostPrice, list[rowId].WholesalePrice, list[rowId].Brokerage1,
list[rowId].Brokerage2, list[rowId].Origin, list[rowId].Remark, list[rowId].MemberDiscount}
cell, _ := excelize.CoordinatesToCellName(1, rowId+2)
if err := streamWriter.SetRow(cell, row); err != nil {
fmt.Println(err)
}
}
if err := streamWriter.Flush(); err != nil {
fmt.Println(err)
}
if err := file.SaveAs("/www/server/images/export/" + fileName); err != nil {
//if err := file.SaveAs("./" + fileName); err != nil {
fmt.Println(err)
}
return url + fileName, nil
}
//func (c *ErpCommodity) IdInit() { //func (c *ErpCommodity) IdInit() {
// if c.ErpCategoryId != 0 { // if c.ErpCategoryId != 0 {
// if c.ErpCategory == nil { // if c.ErpCategory == nil {

View File

@ -136,7 +136,7 @@ func (m *ErpOrderListReq) List() (*ErpOrderListResp, error) {
if m.StartTime != "" { if m.StartTime != "" {
parse, err := time.Parse(DateTimeFormat, m.StartTime) parse, err := time.Parse(DateTimeFormat, m.StartTime)
if err != nil { if err != nil {
logger.Errorf("err:", err) logger.Error("err:", err)
//return users, 0, err //return users, 0, err
} }
qs = qs.Where("created_at > ?", parse) qs = qs.Where("created_at > ?", parse)
@ -144,7 +144,7 @@ func (m *ErpOrderListReq) List() (*ErpOrderListResp, error) {
if m.EndTime != "" { if m.EndTime != "" {
parse, err := time.Parse(DateTimeFormat, m.EndTime) parse, err := time.Parse(DateTimeFormat, m.EndTime)
if err != nil { if err != nil {
logger.Errorf("err:", err) logger.Error("err:", err)
//return users, 0, err //return users, 0, err
} }
parse = parse.AddDate(0, 0, 1) parse = parse.AddDate(0, 0, 1)

View File

@ -22,7 +22,6 @@ import (
"os" "os"
"sort" "sort"
"strconv" "strconv"
//"github.com/andreburgaud/crypt2go/ecb" //"github.com/andreburgaud/crypt2go/ecb"
//"github.com/andreburgaud/crypt2go/padding" //"github.com/andreburgaud/crypt2go/padding"
"github.com/codinl/go-logger" "github.com/codinl/go-logger"
@ -2158,3 +2157,427 @@ func TestUnicode(t *testing.T) {
fmt.Println("===", string(newStr)) fmt.Println("===", string(newStr))
} }
func packageAndDefer() int {
val := 10
defer func() {
val += 1
fmt.Println("11", val)
}()
return val
}
func TestModel(t *testing.T) {
fmt.Println(packageAndDefer())
m := make(map[uint32]string, 0)
fmt.Println(m)
//// A header for a Go map.
//type hmap struct {
// // Note: the format of the hmap is also encoded in cmd/compile/internal/reflectdata/reflect.go.
// // Make sure this stays in sync with the compiler's definition.
// count int // # live cells == size of map. Must be first (used by len() builtin)
// flags uint8
// B uint8 // log_2 of # of buckets (can hold up to loadFactor * 2^B items)
// noverflow uint16 // approximate number of overflow buckets; see incrnoverflow for details
// hash0 uint32 // hash seed
// buckets unsafe.Pointer // array of 2^B Buckets. may be nil if count==0.
// oldbuckets unsafe.Pointer // previous bucket array of half the size, non-nil only when growing
// nevacuate uintptr // progress counter for evacuation (buckets less than this have been evacuated)
// extra *mapextra // optional fields
//}
}
type UserPromotion struct {
Automatic uint32 `json:"automatic"`
Promotion uint32 `json:"promotion"`
Shopper uint32 `json:"shopper"`
Date string `json:"date"`
}
// 店员推广续费会员
func TestUserAddress_Create(t *testing.T) {
InitTestDB()
InitDBProd()
DB = DBDev
contentTime, err := time.Parse(DateTimeFormat, "2023-02-01")
if err != nil {
logger.Error("err=?", err)
}
list := make([]UserPromotion, 0)
for i := 0; i < 6; i++ {
startTime := contentTime.AddDate(0, i*(-1), 0)
endTime := startTime.AddDate(0, -1, 0)
shopper, _ := NewUserInviteQuerySet(DB).CreatedAtLte(startTime).CreatedAtGte(endTime).SpendTypeEq(3).InviteFormEq(1).Count()
var userInvites []UserInvite
_ = NewUserInviteQuerySet(DB).CreatedAtLte(startTime).CreatedAtGte(endTime).SpendTypeEq(3).All(&userInvites)
promotion := &UserPromotion{
Automatic: 0,
Promotion: 0,
Shopper: uint32(shopper),
Date: endTime.Format("2006-01"),
}
for _, invite := range userInvites {
if invite.InviteForm == 1 {
continue
}
var fund FundRecord
err := NewFundRecordQuerySet(DBProd).UidEq(invite.ToUid).FundTypeEq("member_fee").OrderDescByID().Limit(1).One(&fund)
if err != nil {
logger.Error("err:", err)
}
if fund.Amount == 34900 || fund.Amount == 59900 || fund.Amount == 200 {
promotion.Promotion += 1
} else {
promotion.Automatic += 1
}
}
list = append(list, *promotion)
//fmt.Println("", promotion.Date, ",", promotion.Promotion, ",", promotion.Automatic, ",", promotion.Shopper)
}
file := excelize.NewFile()
streamWriter, err := file.NewStreamWriter("Sheet1")
if err != nil {
fmt.Println(err)
}
fileName := time.Now().Format(TimeFormat) + "店员推广续费会员数据" + ".xlsx"
style1 := &excelize.Style{
Border: []excelize.Border{{
Type: "left",
Color: "#000000",
Style: 1,
}},
Fill: excelize.Fill{
Type: "pattern",
Pattern: 1,
Color: []string{"#000000"},
},
}
styleId, err := file.NewStyle(style1)
if err != nil {
logger.Error("err:", err)
}
styleId, _ = file.NewStyle(`{"fill":{"type":"pattern","color":["#E0EBF5"],"pattern":1}}`)
title := []interface{}{"日期", "线上领券续费", "原价续费", "店员推广续费"}
cell, _ := excelize.CoordinatesToCellName(1, 1)
if err = streamWriter.SetRow(cell, title); err != nil {
fmt.Println(err)
}
fmt.Println("style:", styleId)
var row []interface{}
for rowId := 0; rowId < len(list); rowId++ {
row = []interface{}{list[rowId].Date, list[rowId].Promotion, list[rowId].Automatic, list[rowId].Shopper}
cell, _ := excelize.CoordinatesToCellName(1, rowId+2)
fmt.Println("cell", cell)
//name, err := excelize.CoordinatesToCellName(1, rowId+2)
//if err != nil {
// logger.Error("err:", err)
//}
//fmt.Println("ColumnNumberToName-----:", name)
if err := streamWriter.SetRow(cell, row); err != nil {
fmt.Println(err)
}
err = file.SetCellStyle("Sheet1", cell, cell, styleId)
if err != nil {
logger.Error("err:", err)
}
}
if err := streamWriter.Flush(); err != nil {
fmt.Println(err)
}
fmt.Println("fileName", fileName)
//if err := file.SaveAs("/www/server/images/export/" + fileName); err != nil {
if err := file.SaveAs("./" + fileName); err != nil {
fmt.Println(err)
}
}
func TestGoodsStockFile(t *testing.T) {
file := excelize.NewFile()
//streamWriter, err := file.NewStreamWriter("Sheet1")
//if err != nil {
// fmt.Println(err)
//}
fileName := time.Now().Format(TimeFormat) + "店员推广续费会员数据" + ".xlsx"
styleBorder := &excelize.Style{
Border: []excelize.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,
}},
}
styleFill := &excelize.Style{
Border: []excelize.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,
}},
Fill: excelize.Fill{
Type: "pattern",
Pattern: 1,
Color: []string{"E0EBF5"},
},
}
styleBorderId, err := file.NewStyle(styleBorder)
if err != nil {
logger.Error("err:", err)
}
styleFillId, err := file.NewStyle(styleFill)
if err != nil {
logger.Error("err:", err)
}
title := []interface{}{"日期", "线上领券续费", "原价续费", "店员推广续费"}
//if err = streamWriter.SetRow(cell, title); err != nil {
// fmt.Println(err)
//}
for i, _ := range title {
cell, _ := excelize.CoordinatesToCellName(1+i, 1)
err = file.SetCellValue("Sheet1", cell, title[i])
err = file.SetCellStyle("Sheet1", cell, cell, styleFillId)
//err = file.SetCellStyle("Sheet1", cell, cell, styleBorderId)
}
fmt.Println("style:", styleBorderId)
fmt.Println("style:", styleFillId)
if err != nil {
logger.Error("err:", err)
}
fmt.Println("fileName", fileName)
if err := file.SaveAs("./" + fileName); err != nil {
fmt.Println(err)
}
}
// 拉新数据
func TestOrderCardUserRentCard(t *testing.T) {
InitDBProd()
DB = DBProd
var cards []OrderCard
err := DBProd.Raw("SELECT * FROM order_card WHERE uid IN (41062552,61322858,79502493,5151314,75683046,92301496,84098843) AND card_status IN (2,3,4);").Scan(&cards).Error
if err != nil {
logger.Error("err:", err)
}
userOrderMap := make(map[uint32]OrderCard, 0)
//storeMap := make(map[uint32]Store, 0)
storeIds := make([]uint32, 0, len(cards))
gameIds := make([]uint32, 0, len(cards))
userIds := make([]uint32, 0, len(cards))
for i, _ := range cards {
if cards[i].CardStatus == 4 {
var userOrder OrderCard
//err = NewOrderCardQuerySet(DBProd.Debug()).SerialNumberEq(cards[i].SerialNumber).CreatedAtGt(cards[i].RevertTime).OrderAscByID().Limit(1).One(&userOrder)
err = NewOrderCardQuerySet(DBProd.Debug()).SerialNumberEq(cards[i].SerialNumber).CreatedAtGt(cards[i].DeliveryTime).OrderAscByID().Limit(1).One(&userOrder)
if err != nil {
logger.Error("err:", err)
}
userOrderMap[cards[i].ID] = userOrder
userIds = append(userIds, userOrder.Uid)
if cards[i].ID == 16395 {
fmt.Println("userOrder", userOrder)
}
}
storeIds = append(storeIds, cards[i].StoreId)
gameIds = append(gameIds, cards[i].GameCardId)
}
storeMap, err := GetStoreMap(storeIds)
if err != nil {
logger.Error("err:", err)
}
gameMap := GetGameCardMap(gameIds)
userMap, _ := GetUserMap(userIds)
file := excelize.NewFile()
streamWriter, err := file.NewStreamWriter("Sheet1")
if err != nil {
fmt.Println(err)
}
fileName := time.Now().Format(TimeFormat) + "锁卡订单数据" + ".xlsx"
title := []interface{}{"订单id", "门店id", "门店名称", "游戏id", "游戏名称", "游戏卡编码", "锁卡时间", "订单状态", "还卡时间", "借卡用户uid", "开通会员时间", "是否拉新"}
cell, _ := excelize.CoordinatesToCellName(1, 1)
if err = streamWriter.SetRow(cell, title); err != nil {
fmt.Println(err)
}
list := cards
var row []interface{}
for rowId := 0; rowId < len(list); rowId++ {
store, _ := storeMap[list[rowId].StoreId]
gameCard := gameMap[list[rowId].GameCardId]
userOrder, _ := userOrderMap[list[rowId].ID]
userInfo := userMap[userOrder.Uid]
if userInfo == nil {
userInfo = &User{}
}
if userInfo == nil {
fmt.Println("---------------userInfo")
}
row = []interface{}{list[rowId].ID, store.ID, store.Name, list[rowId].GameCardId, gameCard.Name, list[rowId].SerialNumber,
list[rowId].CreatedAt.Format(TimeFormat), GetOrderStatus(list[rowId].CardStatus), list[rowId].DeliveryTime.Format(TimeFormat),
userOrder.Uid, GetUserOpenMemberTime(userInfo.OpenMemberTime), IsPullingNew(userInfo.OpenMemberTime, list[rowId].DeliveryTime),
}
cell, _ := excelize.CoordinatesToCellName(1, rowId+2)
if err := streamWriter.SetRow(cell, row); err != nil {
fmt.Println(err)
}
}
if err := streamWriter.Flush(); err != nil {
fmt.Println(err)
}
//if err := file.SaveAs("/www/server/images/export/" + fileName); err != nil {
if err := file.SaveAs("./" + fileName); err != nil {
fmt.Println(err)
}
return
}
func GetGameCardMap(ids []uint32) map[uint32]GameCard {
gameMap := make(map[uint32]GameCard, 0)
if len(ids) == 0 {
return gameMap
}
var games []GameCard
err := NewGameCardQuerySet(DBProd).IDIn(ids...).All(&games)
if err != nil {
logger.Error("err:", err)
}
for i, _ := range games {
gameMap[games[i].ID] = games[i]
}
return gameMap
}
func GetOrderStatus(status uint32) string {
switch status {
case 2:
return "游玩中"
case 3:
return "归还中"
case 4:
return "已完成"
}
return ""
}
func IsPullingNew(open, revert time.Time) string {
if open.AddDate(0, 1, 0).After(revert) {
return "是"
} else {
return "否"
}
}
func GetUserOpenMemberTime(open time.Time) string {
if open.IsZero() {
return ""
} else {
return open.Format(TimeFormat)
}
}
type OpenMember struct {
Last int `json:"last"`
Now int `json:"now"`
Date string `json:"date"`
}
func TestUserMember(t *testing.T) {
//InitTestDB()
InitDBProd()
DB = DBProd
contentTime, err := time.Parse(DateTimeFormat, "2023-02-01")
if err != nil {
logger.Error("err=?", err)
}
list := make([]OpenMember, 0)
for i := 0; i < 6; i++ {
startTime := contentTime.AddDate(0, i*(-1), 0)
endTime := startTime.AddDate(0, -1, 0)
countNow, _ := NewUserQuerySet(DBProd).OpenMemberTimeGte(endTime).OpenMemberTimeLte(startTime).MemberLevelIn(2, 4, 5).Count()
countLast, _ := NewUserQuerySet(DBProd).OpenMemberTimeGte(endTime.AddDate(-1, 0, 0)).
OpenMemberTimeLte(startTime.AddDate(-1, 0, 0)).MemberLevelIn(2, 4, 5).Count()
list = append(list, OpenMember{
Last: countLast,
Now: countNow,
Date: endTime.Format("2006-01"),
})
}
file := excelize.NewFile()
streamWriter, err := file.NewStreamWriter("Sheet1")
if err != nil {
fmt.Println(err)
}
fileName := time.Now().Format(TimeFormat) + "去年同期会员" + ".xlsx"
title := []interface{}{"日期", "黄金会员(去年)", "黄金会员(今年)"}
cell, _ := excelize.CoordinatesToCellName(1, 1)
if err = streamWriter.SetRow(cell, title); err != nil {
fmt.Println(err)
}
var row []interface{}
for rowId := 0; rowId < len(list); rowId++ {
row = []interface{}{GetMonth(list[rowId].Date), list[rowId].Last, list[rowId].Now}
cell, _ := excelize.CoordinatesToCellName(1, rowId+2)
if err := streamWriter.SetRow(cell, row); err != nil {
fmt.Println(err)
}
}
if err := streamWriter.Flush(); err != nil {
fmt.Println(err)
}
//if err := file.SaveAs("/www/server/images/export/" + fileName); err != nil {
if err := file.SaveAs("./" + fileName); err != nil {
fmt.Println(err)
}
}
func GetMonth(date string) string {
return date[len(date)-2:] + "月份"
}
func TestNameSunHash(t *testing.T) {
}

View File

@ -291,6 +291,10 @@ func ConfigAppRouter(r gin.IRouter) {
retail.POST("order_detail", controller.ErpOrderDetail) retail.POST("order_detail", controller.ErpOrderDetail)
retail.POST("shop_assistant_list", controller.ShopAssistantList) retail.POST("shop_assistant_list", controller.ShopAssistantList)
retail.POST("order_audit", controller.ErpOrderAudit) retail.POST("order_audit", controller.ErpOrderAudit)
retail.POST("cashier_store_list", controller.ErpCashierStoreList)
retail.POST("order_del", controller.ErpOrderDel)
retail.POST("user_info/list", controller.UserInfoList)
retail.POST("commodity_list", controller.ErpCommodityList)
} }
} }