@@ -0,0 +1,121 @@ | |||||
package hdl | |||||
import ( | |||||
"applet/app/admin/md" | |||||
"applet/app/admin/svc" | |||||
"applet/app/bigData/lib/validate" | |||||
"applet/app/db" | |||||
"applet/app/e" | |||||
"fmt" | |||||
"github.com/gin-gonic/gin" | |||||
"os" | |||||
) | |||||
func DataStatisticsList(c *gin.Context) { | |||||
var req md.ExportRecordsListReq | |||||
err := c.ShouldBindJSON(&req) | |||||
if err != nil { | |||||
err = validate.HandleValidateErr(err) | |||||
err1 := err.(e.E) | |||||
e.OutErr(c, err1.Code, err1.Error()) | |||||
return | |||||
} | |||||
if req.Limit == 0 { | |||||
req.Limit = 10 | |||||
} | |||||
if req.Page == 0 { | |||||
req.Page = 10 | |||||
} | |||||
exportRecordsDb := db.ExportRecordsDb{} | |||||
exportRecordsDb.Set() | |||||
list, total, err := exportRecordsDb.ExportRecordsExportRecordsList(req) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
e.OutSuc(c, map[string]interface{}{ | |||||
"list": list, | |||||
"total": total, | |||||
"kind": []map[string]interface{}{ | |||||
{ | |||||
"name": "商品销售明细表", | |||||
"value": 1, | |||||
}, | |||||
{ | |||||
"name": "对账单", | |||||
"value": 2, | |||||
}, | |||||
}, | |||||
}, nil) | |||||
return | |||||
} | |||||
func DataStatisticsDelete(c *gin.Context) { | |||||
var req struct { | |||||
Ids []int `json:"ids"` | |||||
} | |||||
err := c.ShouldBindJSON(&req) | |||||
if err != nil { | |||||
err = validate.HandleValidateErr(err) | |||||
err1 := err.(e.E) | |||||
e.OutErr(c, err1.Code, err1.Error()) | |||||
return | |||||
} | |||||
for _, id := range req.Ids { | |||||
exportRecordsDb := db.ExportRecordsDb{} | |||||
exportRecordsDb.Set() | |||||
exportRecords, err1 := exportRecordsDb.GetExportRecordsExportRecords(id) | |||||
if err1 != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err1.Error()) | |||||
return | |||||
} | |||||
if exportRecords == nil { | |||||
e.OutErr(c, e.ERR_NO_DATA, "未查询到相关记录") | |||||
return | |||||
} | |||||
err = os.RemoveAll("./data/export/" + exportRecords.DownloadPath) //移除文件 | |||||
if err != nil { | |||||
fmt.Println("err>>>>>>>>>>>>>>", err.Error()) | |||||
} | |||||
_, err2 := exportRecordsDb.ExportRecordsExportRecordsDelete(id) | |||||
if err2 != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err2.Error()) | |||||
return | |||||
} | |||||
} | |||||
e.OutSuc(c, "success", nil) | |||||
return | |||||
} | |||||
func DataStatisticsExport(c *gin.Context) { | |||||
var req md.DataStatisticsExportReq | |||||
err := c.ShouldBindJSON(&req) | |||||
if err != nil { | |||||
err = validate.HandleValidateErr(err) | |||||
err1 := err.(e.E) | |||||
e.OutErr(c, err1.Code, err1.Error()) | |||||
return | |||||
} | |||||
if req.EnterpriseId != 0 { | |||||
enterpriseDb := db.EnterpriseDb{} | |||||
enterpriseDb.Set() | |||||
enterprise, err1 := enterpriseDb.GetEnterprise(req.EnterpriseId) | |||||
if err1 != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err1.Error()) | |||||
return | |||||
} | |||||
req.EnterpriseName = enterprise.Name | |||||
} | |||||
go svc.DataStatisticsExport(req) | |||||
e.OutSuc(c, map[string]interface{}{ | |||||
"msg": "导出成功,请稍后刷新数据列表", | |||||
}, nil) | |||||
return | |||||
} |
@@ -0,0 +1,62 @@ | |||||
package md | |||||
type CentralKitchenForSchoolExportRecordsListReq struct { | |||||
Page int `json:"page" label:"页码"` | |||||
Kind int `json:"kind" label:"导出类型"` | |||||
Limit int `json:"limit" label:"每页数量"` | |||||
StartDate string `json:"start_date" label:"起始时间"` | |||||
EndDate string `json:"end_date" label:"截止时间"` | |||||
} | |||||
type CentralKitchenForSchoolDataStatisticsExportReq struct { | |||||
Kinds []int `json:"kinds" binding:"required" label:"导出类型"` | |||||
EnterPriseKind int `json:"enterprise_kind" binding:"required" label:"校企类型"` | |||||
StartDate string `json:"start_date" binding:"required" label:"起始时间"` | |||||
EndDate string `json:"end_date" binding:"required" label:"截止时间"` | |||||
MealKindList []int `json:"meal_kind_list" label:"就餐类型(1:早餐 2:午餐 3:晚餐)"` | |||||
EnterpriseId int `json:"enterprise_id" label:"校企id"` | |||||
EnterpriseName string `json:"enterprise_name" label:"校企名称"` | |||||
} | |||||
type CentralKitchenForSchoolDataStatisticsContrastReq struct { | |||||
Date1 []string `json:"date_1" binding:"required" label:"起始时间"` | |||||
Date2 []string `json:"date_2" binding:"required" label:"截止时间"` | |||||
MealKindList []int `json:"meal_kind_list" label:"就餐类型(1:早餐 2:午餐 3:晚餐)"` | |||||
EnterpriseId int `json:"enterprise_id" label:"校企id"` | |||||
EnterPriseKind int `json:"enterprise_kind" binding:"required" label:"校企类型"` | |||||
EnterpriseName string `json:"enterprise_name" label:"校企名称"` | |||||
} | |||||
type NursingHomeExportRecordsListReq struct { | |||||
Page int `json:"page" label:"页码"` | |||||
Kind int `json:"kind" label:"导出类型"` | |||||
Limit int `json:"limit" label:"每页数量"` | |||||
StartDate string `json:"start_date" label:"起始时间"` | |||||
EndDate string `json:"end_date" label:"截止时间"` | |||||
} | |||||
type NursingHomeDataStatisticsExportReq struct { | |||||
Kind int `json:"kind" binding:"required" label:"导出类型"` | |||||
StartDate string `json:"start_date" binding:"required" label:"起始时间"` | |||||
EndDate string `json:"end_date" binding:"required" label:"截止时间"` | |||||
EnterpriseId int `json:"enterprise_id" label:"校企id"` | |||||
EnterpriseName string `json:"enterprise_name" label:"校企名称"` | |||||
} | |||||
type ExportRecordsListReq struct { | |||||
Page int `json:"page" label:"页码"` | |||||
Kind int `json:"kind" label:"导出类型"` | |||||
Limit int `json:"limit" label:"每页数量"` | |||||
StartDate string `json:"start_date" label:"起始时间"` | |||||
EndDate string `json:"end_date" label:"截止时间"` | |||||
} | |||||
type DataStatisticsExportReq struct { | |||||
Kind int `json:"kind" binding:"required" label:"导出类型"` | |||||
StartDate string `json:"start_date" label:"起始时间"` | |||||
EndDate string `json:"end_date" label:"截止时间"` | |||||
DateForStartDate string `json:"date_for_start_date" label:"送达-起始时间"` | |||||
DateForEndDate string `json:"date_for_end_date" label:"送达-截止时间"` | |||||
EnterpriseId int `json:"enterprise_id" label:"校企id"` | |||||
EnterpriseName string `json:"enterprise_name" label:"校企名称"` | |||||
} |
@@ -10,17 +10,17 @@ type AddGoodsReq struct { | |||||
} | } | ||||
type MallBaseGoods struct { | type MallBaseGoods struct { | ||||
GoodsId string `json:"goods_id,omitempty" label:"商品ID"` // 商品id,0或不传为新建 | |||||
Title string `json:"title" binding:"required,lte=200" label:"标题"` // 商品标题 | |||||
CategoryId int `json:"category_id" binding:"required" label:"商品类目"` // 商品类目id | |||||
ImageList []string `json:"image_list" binding:"required,gt=0" label:"商品主图"` // 主图列表 | |||||
ImageListUrl []string `json:"image_list_url" ` // 主图列表 | |||||
SaleState enum.MallGoodsSaleState `json:"sale_state" label:"开售时间"` // 销售状态 | |||||
Spe []Spe `json:"spe" binding:"required,gt=0" label:"商品规格"` // 规格 | |||||
Detail []string `json:"detail" label:"商品详情"` // 商品详情 | |||||
DetailUrl []string `json:"detail_url" ` // 商品详情 | |||||
Price string `json:"price" binding:"required" label:"价格"` // 价格 | |||||
Sort int `json:"sort" label:"排序"` // 排序 | |||||
GoodsId string `json:"goods_id,omitempty" label:"商品ID"` // 商品id,0或不传为新建 | |||||
Title string `json:"title" binding:"required,lte=200" label:"标题"` // 商品标题 | |||||
CategoryId int `json:"category_id" binding:"required" label:"商品类目"` // 商品类目id | |||||
ImageList []string `json:"image_list" label:"商品主图"` // 主图列表 | |||||
ImageListUrl []string `json:"image_list_url" ` // 主图列表 | |||||
SaleState enum.MallGoodsSaleState `json:"sale_state" label:"开售时间"` // 销售状态 | |||||
Spe []Spe `json:"spe" binding:"required,gt=0" label:"商品规格"` // 规格 | |||||
Detail []string `json:"detail" label:"商品详情"` // 商品详情 | |||||
DetailUrl []string `json:"detail_url" ` // 商品详情 | |||||
Price string `json:"price" binding:"required" label:"价格"` // 价格 | |||||
Sort int `json:"sort" label:"排序"` // 排序 | |||||
} | } | ||||
type Spe struct { | type Spe struct { | ||||
@@ -0,0 +1,260 @@ | |||||
package svc | |||||
import ( | |||||
"applet/app/admin/md" | |||||
"applet/app/db" | |||||
"applet/app/db/model" | |||||
"applet/app/utils" | |||||
"applet/app/utils/logx" | |||||
"encoding/json" | |||||
"github.com/360EntSecGroup-Skylar/excelize" | |||||
"strconv" | |||||
"time" | |||||
) | |||||
func DataStatisticsExport(req md.DataStatisticsExportReq) { | |||||
var fileName, downloadPath string | |||||
var now = time.Now() | |||||
switch req.Kind { | |||||
case 1: | |||||
//商品销售明细表 | |||||
fileName = "商品销售明细表_" + utils.Int64ToStr(now.UnixMilli()) + ".xlsx" | |||||
downloadPath = "./data/export/" + fileName | |||||
//查询数据 | |||||
eg := db.Db | |||||
list, _ := db.GetOrderListExport(eg, map[string]string{ | |||||
"start_at": req.StartDate, | |||||
"end_at": req.EndDate, | |||||
"enterprise_id": strconv.Itoa(req.EnterpriseId), | |||||
"start_at_for_date": utils.TimeParseStd(req.DateForStartDate).Format("20060102"), | |||||
"end_at_for_date": utils.TimeParseStd(req.DateForEndDate).Format("20060102"), | |||||
}) | |||||
xlsx, _ := excelize.OpenFile("./static/template/商品销售明细表.xlsx") | |||||
var data = map[string]map[int64]map[string]string{} | |||||
if list != nil { | |||||
enterpriseIds := make([]int, 0) | |||||
for _, v := range *list { | |||||
enterpriseIds = append(enterpriseIds, v.EnterpriseId) | |||||
} | |||||
enterpriseMap := db.GetEnterpriseMore(eg, enterpriseIds) | |||||
for _, v := range *list { | |||||
enterpriseName := "-" | |||||
_, ok := enterpriseMap[v.EnterpriseId] | |||||
if ok { | |||||
enterpriseName = enterpriseMap[v.EnterpriseId].Name | |||||
} | |||||
if data[enterpriseName] == nil { | |||||
data[enterpriseName] = make(map[int64]map[string]string) | |||||
} | |||||
if data[enterpriseName][v.Oid] == nil { | |||||
data[enterpriseName][v.Oid] = make(map[string]string) | |||||
} | |||||
//TODO:: 查找 `order_goods` | |||||
var orderGoods []model.OrderGoods | |||||
err := eg.Where("oid = ?", v.Oid).Find(&orderGoods) | |||||
if err != nil { | |||||
logx.Error(err) | |||||
println("<<<<DataStatisticsExport111111>>>>>Error:::", err.Error()) | |||||
return | |||||
} | |||||
for _, vv := range orderGoods { | |||||
data[enterpriseName][v.Oid]["date"] = v.CreateAt.Format("2006-01-02") | |||||
data[enterpriseName][v.Oid]["goods_name"] = vv.GoodsTitle | |||||
skuData := make([]md.Sku, 0) | |||||
json.Unmarshal([]byte(vv.Sku), &skuData) | |||||
skuStr := "" | |||||
for _, v1 := range skuData { | |||||
if skuStr != "" { | |||||
skuStr += ";" | |||||
} | |||||
skuStr += v1.Value | |||||
} | |||||
data[enterpriseName][v.Oid]["sku_str"] = skuStr | |||||
data[enterpriseName][v.Oid]["num"] = utils.IntToStr(vv.Num) | |||||
} | |||||
} | |||||
} | |||||
sheetIndex := 2 //第一个表是模板表 | |||||
xlsx.NewSheet("Sheet1") //新建表格 | |||||
xlsx.CopySheet(1, sheetIndex) | |||||
xlsx.SetSheetRow("Sheet1", "A"+strconv.Itoa(2), &[]interface{}{ | |||||
"日期:" + utils.TimeParseStd(req.StartDate).Format("2006-01-02") + " ~ " + utils.TimeParseStd(req.EndDate).Format("2006-01-02"), | |||||
}) | |||||
j := 4 //表头前三行被占用了,只能从第四行开始 | |||||
for k, v := range data { | |||||
var total = 0 | |||||
for kk, vv := range v { | |||||
xlsx.SetSheetRow("Sheet1", "A"+strconv.Itoa(j), &[]interface{}{ | |||||
vv["date"], | |||||
utils.Int64ToStr(kk), | |||||
k, | |||||
vv["goods_name"], | |||||
vv["sku_str"], | |||||
vv["num"], | |||||
}) | |||||
xlsx.SetRowHeight("Sheet1", j, 18) | |||||
total += utils.StrToInt(vv["num"]) | |||||
j++ | |||||
} | |||||
style, err := xlsx.NewStyle(`{"fill":{"type":"pattern","color":["FFFFCC"],"pattern":1}, "alignment":{"horizontal":"center", "vertical": "center"}}`) | |||||
if err != nil { | |||||
logx.Error(err) | |||||
println("<<<<SupportForSchoolDataStatisticsExport>>>>>Error:::", err.Error()) | |||||
panic(err) | |||||
} | |||||
xlsx.MergeCell("Sheet1", "A"+strconv.Itoa(j), "F"+strconv.Itoa(j)) //合并单元格 | |||||
xlsx.SetCellStyle("Sheet1", "A"+strconv.Itoa(j), "F"+strconv.Itoa(j), style) | |||||
xlsx.SetSheetRow("Sheet1", "A"+strconv.Itoa(j), &[]interface{}{ | |||||
k + " 汇总: " + utils.IntToStr(total), | |||||
}) | |||||
xlsx.SetRowHeight("Sheet1", j, 20) | |||||
j++ | |||||
} | |||||
xlsx.DeleteSheet("template") //删除模板表 | |||||
//将文件保存至服务器 | |||||
xlsx.SaveAs(downloadPath) | |||||
break | |||||
case 2: | |||||
//对账单 | |||||
fileName = "对账单_" + utils.Int64ToStr(now.UnixMilli()) + ".xlsx" | |||||
downloadPath = "./data/export/" + fileName | |||||
//查询数据 | |||||
eg := db.Db | |||||
list, _ := db.GetOrderListExport(eg, map[string]string{ | |||||
"start_at": req.StartDate, | |||||
"end_at": req.EndDate, | |||||
"enterprise_id": strconv.Itoa(req.EnterpriseId), | |||||
"start_at_for_date": utils.TimeParseStd(req.DateForStartDate).Format("20060102"), | |||||
"end_at_for_date": utils.TimeParseStd(req.DateForEndDate).Format("20060102"), | |||||
}) | |||||
xlsx, _ := excelize.OpenFile("./static/template/对账单.xlsx") | |||||
var data = map[string]map[int64]map[string]string{} | |||||
if list != nil { | |||||
enterpriseIds := make([]int, 0) | |||||
for _, v := range *list { | |||||
enterpriseIds = append(enterpriseIds, v.EnterpriseId) | |||||
} | |||||
enterpriseMap := db.GetEnterpriseMore(eg, enterpriseIds) | |||||
for _, v := range *list { | |||||
enterpriseName := "-" | |||||
_, ok := enterpriseMap[v.EnterpriseId] | |||||
if ok { | |||||
enterpriseName = enterpriseMap[v.EnterpriseId].Name | |||||
} | |||||
if data[enterpriseName] == nil { | |||||
data[enterpriseName] = make(map[int64]map[string]string) | |||||
} | |||||
if data[enterpriseName][v.Oid] == nil { | |||||
data[enterpriseName][v.Oid] = make(map[string]string) | |||||
} | |||||
//TODO:: 查找 `order_goods` | |||||
var orderGoods []model.OrderGoods | |||||
err := eg.Where("oid = ?", v.Oid).Find(&orderGoods) | |||||
if err != nil { | |||||
logx.Error(err) | |||||
println("<<<<DataStatisticsExport111111>>>>>Error:::", err.Error()) | |||||
return | |||||
} | |||||
for _, vv := range orderGoods { | |||||
data[enterpriseName][v.Oid]["date"] = v.CreateAt.Format("2006-01-02") | |||||
data[enterpriseName][v.Oid]["goods_name"] = vv.GoodsTitle | |||||
skuData := make([]md.Sku, 0) | |||||
json.Unmarshal([]byte(vv.Sku), &skuData) | |||||
skuStr := "" | |||||
for _, v1 := range skuData { | |||||
if skuStr != "" { | |||||
skuStr += ";" | |||||
} | |||||
skuStr += v1.Value | |||||
} | |||||
data[enterpriseName][v.Oid]["sku_str"] = skuStr | |||||
data[enterpriseName][v.Oid]["num"] = utils.IntToStr(vv.Num) | |||||
data[enterpriseName][v.Oid]["price"] = vv.Price | |||||
} | |||||
} | |||||
} | |||||
sheetIndex := 2 //第一个表是模板表 | |||||
for k, v := range data { | |||||
xlsx.NewSheet(k) //新建表格 | |||||
xlsx.CopySheet(1, sheetIndex) | |||||
xlsx.SetSheetRow(k, "A"+strconv.Itoa(2), &[]interface{}{ | |||||
"客户: " + k, | |||||
}) | |||||
xlsx.SetSheetRow(k, "A"+strconv.Itoa(5), &[]interface{}{ | |||||
"对账单日期:" + utils.TimeParseStd(req.StartDate).Format("2006-01-02") + " ~ " + utils.TimeParseStd(req.EndDate).Format("2006-01-02"), | |||||
}) | |||||
j := 7 //表头前三行被占用了,只能从第四行开始 | |||||
var total, totalAmount float64 | |||||
for kk, vv := range v { | |||||
amount := utils.StrToFloat64(vv["num"]) * utils.StrToFloat64(vv["price"]) | |||||
xlsx.SetSheetRow(k, "A"+strconv.Itoa(j), &[]interface{}{ | |||||
vv["date"], | |||||
utils.Int64ToStr(kk), | |||||
k, | |||||
vv["goods_name"], | |||||
vv["sku_str"], | |||||
vv["num"], | |||||
vv["price"], | |||||
utils.StrToFloat64(vv["num"]) * utils.StrToFloat64(vv["price"]), | |||||
}) | |||||
xlsx.SetRowHeight("k", j, 18) | |||||
total += utils.StrToFloat64(vv["num"]) | |||||
totalAmount += amount | |||||
style, err := xlsx.NewStyle(`{"alignment":{"horizontal":"center", "vertical": "center"}}`) | |||||
if err != nil { | |||||
logx.Error(err) | |||||
println("<<<<SupportForSchoolDataStatisticsExport>>>>>Error:::", err.Error()) | |||||
panic(err) | |||||
} | |||||
xlsx.SetCellStyle(k, "A"+strconv.Itoa(j), "H"+strconv.Itoa(j), style) | |||||
j++ | |||||
} | |||||
style1, err := xlsx.NewStyle(`{"fill":{"type":"pattern","color":["FFFFCC"],"pattern":1}, "alignment":{"horizontal":"center", "vertical": "center"}}`) | |||||
if err != nil { | |||||
logx.Error(err) | |||||
println("<<<<SupportForSchoolDataStatisticsExport>>>>>Error:::", err.Error()) | |||||
panic(err) | |||||
} | |||||
xlsx.SetCellStyle(k, "A"+strconv.Itoa(j), "H"+strconv.Itoa(j), style1) | |||||
xlsx.SetSheetRow(k, "A"+strconv.Itoa(j), &[]interface{}{ | |||||
"合计", | |||||
"", | |||||
"", | |||||
"", | |||||
"", | |||||
total, | |||||
"", | |||||
totalAmount, | |||||
}) | |||||
xlsx.SetRowHeight("k", j, 20) | |||||
sheetIndex++ | |||||
} | |||||
xlsx.DeleteSheet("template") //删除模板表 | |||||
//将文件保存至服务器 | |||||
xlsx.SaveAs(downloadPath) | |||||
break | |||||
} | |||||
//新增数据 | |||||
exportRecordsDb := db.ExportRecordsDb{} | |||||
exportRecordsDb.Set() | |||||
marshal, _ := json.Marshal(req) | |||||
exportRecordsDb.ExportRecordsExportRecordsInsert(&model.ExportRecords{ | |||||
Name: fileName, | |||||
DownloadPath: downloadPath, | |||||
Kind: req.Kind, | |||||
ReqContent: string(marshal), | |||||
CreateAt: now.Format("2006-01-02 15:04:05"), | |||||
UpdateAt: now.Format("2006-01-02 15:04:05"), | |||||
}) | |||||
} |
@@ -47,12 +47,13 @@ func SchemeBindEnterprise(req md.SchemeBindEnterpriseReq) (err error) { | |||||
EnterpriseId: v, | EnterpriseId: v, | ||||
}) | }) | ||||
} | } | ||||
_, err = schemeEnterpriseDb.BatchAddSchemeEnterpriseBySession(session, mm) | |||||
if err != nil { | |||||
_ = session.Rollback() | |||||
return | |||||
if len(mm) > 0 { | |||||
_, err = schemeEnterpriseDb.BatchAddSchemeEnterpriseBySession(session, mm) | |||||
if err != nil { | |||||
_ = session.Rollback() | |||||
return | |||||
} | |||||
} | } | ||||
return session.Commit() | return session.Commit() | ||||
} | } | ||||
@@ -0,0 +1,107 @@ | |||||
package db | |||||
import ( | |||||
"applet/app/admin/md" | |||||
"applet/app/db/model" | |||||
"applet/app/utils/logx" | |||||
"reflect" | |||||
"xorm.io/xorm" | |||||
) | |||||
type ExportRecordsDb struct { | |||||
Db *xorm.Engine `json:"db"` | |||||
} | |||||
func (exportRecordsDb *ExportRecordsDb) Set() { // set方法 | |||||
exportRecordsDb.Db = Db | |||||
} | |||||
func (exportRecordsDb *ExportRecordsDb) GetExportRecordsExportRecords(id int) (m *model.ExportRecords, err error) { | |||||
m = new(model.ExportRecords) | |||||
has, err := exportRecordsDb.Db.Where("id =?", id).Get(m) | |||||
if err != nil { | |||||
return nil, logx.Error(err) | |||||
} | |||||
if has == false { | |||||
return nil, nil | |||||
} | |||||
return m, nil | |||||
} | |||||
func (exportRecordsDb *ExportRecordsDb) GetExportRecordsExportRecordsByMonth(year, month string) (m *model.ExportRecords, err error) { | |||||
m = new(model.ExportRecords) | |||||
has, err := exportRecordsDb.Db.Where("year =? and month =?", year, month).Get(m) | |||||
if err != nil { | |||||
return nil, logx.Error(err) | |||||
} | |||||
if has == false { | |||||
return nil, nil | |||||
} | |||||
return m, nil | |||||
} | |||||
func (exportRecordsDb *ExportRecordsDb) FindExportRecordsExportRecords() (*[]model.ExportRecords, error) { | |||||
var m []model.ExportRecords | |||||
if err := exportRecordsDb.Db.Desc("id").Find(&m); err != nil { | |||||
return nil, logx.Error(err) | |||||
} | |||||
return &m, nil | |||||
} | |||||
func (exportRecordsDb *ExportRecordsDb) ExportRecordsExportRecordsInsert(m *model.ExportRecords) (int, error) { | |||||
_, err := exportRecordsDb.Db.InsertOne(m) | |||||
if err != nil { | |||||
return 0, err | |||||
} | |||||
return m.Id, nil | |||||
} | |||||
func (exportRecordsDb *ExportRecordsDb) ExportRecordsExportRecordsInsertBySession(session *xorm.Session, m *model.ExportRecords) (int, error) { | |||||
_, err := session.InsertOne(m) | |||||
if err != nil { | |||||
return 0, err | |||||
} | |||||
return m.Id, nil | |||||
} | |||||
func (exportRecordsDb *ExportRecordsDb) ExportRecordsExportRecordsDelete(id interface{}) (int64, error) { | |||||
if reflect.TypeOf(id).Kind() == reflect.Slice { | |||||
return Db.In("id", id).Delete(model.ExportRecords{}) | |||||
} else { | |||||
return Db.Where("id = ?", id).Delete(model.ExportRecords{}) | |||||
} | |||||
} | |||||
func (exportRecordsDb *ExportRecordsDb) ExportRecordsExportRecordsUpdateBySession(session *xorm.Session, id interface{}, m *model.ExportRecords, forceColums ...string) (int64, error) { | |||||
var ( | |||||
affected int64 | |||||
err error | |||||
) | |||||
if forceColums != nil { | |||||
affected, err = session.Where("id=?", id).Cols(forceColums...).Update(m) | |||||
} else { | |||||
affected, err = session.Where("id=?", id).Update(m) | |||||
} | |||||
if err != nil { | |||||
return 0, err | |||||
} | |||||
return affected, nil | |||||
} | |||||
func (exportRecordsDb *ExportRecordsDb) ExportRecordsExportRecordsList(req md.ExportRecordsListReq) (m []model.ExportRecords, total int64, err error) { | |||||
sess := exportRecordsDb.Db.Desc("id") | |||||
if req.Kind != 0 { | |||||
sess.And("kind =?", req.Kind) | |||||
} | |||||
if req.StartDate != "" { | |||||
sess.And("create_at >=?", req.StartDate) | |||||
} | |||||
if req.EndDate != "" { | |||||
sess.And("create_at <=?", req.EndDate) | |||||
} | |||||
total, err = sess.Limit(req.Limit, (req.Page-1)*req.Limit).FindAndCount(&m) | |||||
if err != nil { | |||||
return | |||||
} | |||||
return | |||||
} |
@@ -100,6 +100,15 @@ func GetOrderListExport(eg *xorm.Engine, param map[string]string) (*[]model.Orde | |||||
if param["end_at"] != "" { | if param["end_at"] != "" { | ||||
sess.And("create_at <= ?", param["end_at"]) | sess.And("create_at <= ?", param["end_at"]) | ||||
} | } | ||||
if param["start_at_for_date"] != "" && param["start_at_for_date"] != "00010101" { | |||||
sess.And("date >= ?", param["start_at_for_date"]) | |||||
} | |||||
if param["end_at_for_date"] != "" && param["end_at_for_date"] != "00010101" { | |||||
sess.And("date <= ?", param["end_at_for_date"]) | |||||
} | |||||
if param["enterprise_id"] != "" && param["enterprise_id"] != "0" { | |||||
sess.And("enterprise_id = ?", param["enterprise_id"]) | |||||
} | |||||
if param["enterprise_name"] != "" { | if param["enterprise_name"] != "" { | ||||
var enterprise []model.Enterprise | var enterprise []model.Enterprise | ||||
eg.Where("name like ?", "%"+param["enterprise_name"]+"%").Find(&enterprise) | eg.Where("name like ?", "%"+param["enterprise_name"]+"%").Find(&enterprise) | ||||
@@ -0,0 +1,11 @@ | |||||
package model | |||||
type ExportRecords struct { | |||||
Id int `json:"id" xorm:"not null pk autoincr INT(11)"` | |||||
Name string `json:"name" xorm:"not null default '' comment('名称') VARCHAR(255)"` | |||||
DownloadPath string `json:"download_path" xorm:"not null default '' comment('下载地址') VARCHAR(255)"` | |||||
Kind int `json:"kind" xorm:"not null default 0 comment('类型(1:订单列表 2:退款申请表 3:预定统计表)') TINYINT(1)"` | |||||
ReqContent string `json:"req_content" xorm:"TEXT"` | |||||
CreateAt string `json:"create_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"` | |||||
UpdateAt string `json:"update_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"` | |||||
} |
@@ -147,6 +147,12 @@ func rOrder(r *gin.RouterGroup) { | |||||
r.POST("/makeRecord", orderHdl.MarkRecord) //制作记录 | r.POST("/makeRecord", orderHdl.MarkRecord) //制作记录 | ||||
} | } | ||||
func rDataStatistics(r *gin.RouterGroup) { | |||||
r.POST("/list", hdl.DataStatisticsList) //列表 | |||||
r.POST("/export", hdl.DataStatisticsExport) //导出 | |||||
r.POST("/delete", hdl.DataStatisticsDelete) //删除 | |||||
} | |||||
func rFinanceManage(r *gin.RouterGroup) { | func rFinanceManage(r *gin.RouterGroup) { | ||||
r.POST("/list", orderHdl.OrderList) //用户订单 | r.POST("/list", orderHdl.OrderList) //用户订单 | ||||
r.POST("/export", orderHdl.OrderExport) //用户订单导出 | r.POST("/export", orderHdl.OrderExport) //用户订单导出 | ||||
@@ -174,10 +180,11 @@ func AdminRoute(r *gin.RouterGroup) { | |||||
rCategory(r.Group("/category")) //商品类目 | rCategory(r.Group("/category")) //商品类目 | ||||
rGoods(r.Group("/goods")) //商品 | rGoods(r.Group("/goods")) //商品 | ||||
rRole(r.Group("/role")) //权限管理 | |||||
rSetCenter(r.Group("/setCenter")) //设置中心 | |||||
rStaff(r.Group("/staff")) //员工管理 | |||||
rGoodsPay(r.Group("/goodsPay")) //商品下单 | |||||
rOrder(r.Group("/order")) //用户订单 | |||||
rFinanceManage(r.Group("/financeManage")) //财务管理 | |||||
rRole(r.Group("/role")) //权限管理 | |||||
rSetCenter(r.Group("/setCenter")) //设置中心 | |||||
rStaff(r.Group("/staff")) //员工管理 | |||||
rGoodsPay(r.Group("/goodsPay")) //商品下单 | |||||
rOrder(r.Group("/order")) //用户订单 | |||||
rFinanceManage(r.Group("/financeManage")) //财务管理 | |||||
rDataStatistics(r.Group("/dataStatistics")) //数据统计 | |||||
} | } |
@@ -50,7 +50,7 @@ spec: | |||||
# 主容器 | # 主容器 | ||||
- name: bakery | - name: bakery | ||||
# 镜像地址(提前打包好并推送的镜像仓库) | # 镜像地址(提前打包好并推送的镜像仓库) | ||||
image: 'registry.cn-shenzhen.aliyuncs.com/fnuoos-prd/bakery:1.0.0' | |||||
image: 'registry.cn-shenzhen.aliyuncs.com/fnuoos-prd/bakery:24043014' | |||||
ports: | ports: | ||||
- name: httpsupply4001 | - name: httpsupply4001 | ||||
# 容器端口号(注意与golang web server启动的端口一致) | # 容器端口号(注意与golang web server启动的端口一致) | ||||
@@ -65,6 +65,9 @@ spec: | |||||
readOnly: true | readOnly: true | ||||
# 挂载到容器的哪个路径 | # 挂载到容器的哪个路径 | ||||
mountPath: /var/zyos | mountPath: /var/zyos | ||||
# 存储卷 用于存放前端代码 | |||||
- name: bakery # 前面volumes声明的名称 | |||||
mountPath: /data | |||||
imagePullPolicy: Always | imagePullPolicy: Always | ||||
# Nginx 容器 | # Nginx 容器 | ||||
- name: container-nginx | - name: container-nginx | ||||