fix:
This commit is contained in:
parent
582c388a84
commit
39a1f1f028
|
@ -265,6 +265,7 @@ func ErpOrderCommodityList(c *gin.Context) {
|
|||
req := &struct {
|
||||
Tel string `json:"tel"`
|
||||
IMEI string `json:"imei"`
|
||||
ErpCategoryId uint32 `json:"erp_category_id"`
|
||||
ErpCommodityName string `json:"erp_commodity_name"`
|
||||
}{}
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
|
@ -284,6 +285,10 @@ func ErpOrderCommodityList(c *gin.Context) {
|
|||
if 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
|
||||
if err != nil {
|
||||
logger.Error("erp commodity list err:", err)
|
||||
|
@ -344,7 +349,7 @@ func ErpOrderAudit(c *gin.Context) {
|
|||
}{}
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
logger.Error(err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -358,3 +363,150 @@ func ErpOrderAudit(c *gin.Context) {
|
|||
RespOK(c, nil)
|
||||
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
|
||||
}
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/codinl/go-logger"
|
||||
"github.com/xuri/excelize/v2"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
@ -182,6 +185,130 @@ type ErpInventoryStockCommodity struct {
|
|||
// 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() {
|
||||
// if c.ErpCategoryId != 0 {
|
||||
// if c.ErpCategory == nil {
|
||||
|
|
|
@ -136,7 +136,7 @@ func (m *ErpOrderListReq) List() (*ErpOrderListResp, error) {
|
|||
if m.StartTime != "" {
|
||||
parse, err := time.Parse(DateTimeFormat, m.StartTime)
|
||||
if err != nil {
|
||||
logger.Errorf("err:", err)
|
||||
logger.Error("err:", err)
|
||||
//return users, 0, err
|
||||
}
|
||||
qs = qs.Where("created_at > ?", parse)
|
||||
|
@ -144,7 +144,7 @@ func (m *ErpOrderListReq) List() (*ErpOrderListResp, error) {
|
|||
if m.EndTime != "" {
|
||||
parse, err := time.Parse(DateTimeFormat, m.EndTime)
|
||||
if err != nil {
|
||||
logger.Errorf("err:", err)
|
||||
logger.Error("err:", err)
|
||||
//return users, 0, err
|
||||
}
|
||||
parse = parse.AddDate(0, 0, 1)
|
||||
|
|
|
@ -22,7 +22,6 @@ import (
|
|||
"os"
|
||||
"sort"
|
||||
"strconv"
|
||||
|
||||
//"github.com/andreburgaud/crypt2go/ecb"
|
||||
//"github.com/andreburgaud/crypt2go/padding"
|
||||
"github.com/codinl/go-logger"
|
||||
|
@ -2158,3 +2157,427 @@ func TestUnicode(t *testing.T) {
|
|||
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) {
|
||||
|
||||
}
|
||||
|
|
|
@ -291,6 +291,10 @@ func ConfigAppRouter(r gin.IRouter) {
|
|||
retail.POST("order_detail", controller.ErpOrderDetail)
|
||||
retail.POST("shop_assistant_list", controller.ShopAssistantList)
|
||||
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)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user