1.修复缺陷,优化代码:
(1)优化店员的增删改查逻辑; (2)店员绩效新增角色字段及其复选查询; (3)零售明细相关金额调整; (4)零售销售时扫码逻辑优化,非本地库存不支持销售,非本店销售不支持退货;
This commit is contained in:
parent
4bf39f8cdb
commit
c2c2782a7b
|
@ -100,6 +100,8 @@ func ErpOrderList(c *gin.Context) {
|
||||||
logger.Error("erp commodity list err:", logger.Field("err", err))
|
logger.Error("erp commodity list err:", logger.Field("err", err))
|
||||||
if err.Error() == "库存已有该串码商品" {
|
if err.Error() == "库存已有该串码商品" {
|
||||||
app.Error(c, http.StatusInternalServerError, err, err.Error())
|
app.Error(c, http.StatusInternalServerError, err, err.Error())
|
||||||
|
} else if err.Error() == "非当前门店所售商品,需前往对应门店退货" {
|
||||||
|
app.Error(c, http.StatusInternalServerError, err, err.Error())
|
||||||
} else {
|
} else {
|
||||||
app.Error(c, http.StatusInternalServerError, err, "查询失败:"+err.Error())
|
app.Error(c, http.StatusInternalServerError, err, "查询失败:"+err.Error())
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,7 +103,7 @@ func GetInventoryDetail(c *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if req.ScanCode != "" { // 当扫码时需要对返回的数据做校验
|
if req.ScanCode != "" { // 当扫码时需要对返回的数据做校验
|
||||||
err = models.CheckScanCodeResp(req.ScanCode, list)
|
err = models.CheckScanCodeResp(req.ScanCode, req.StoreId, list)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
//logger.Error("erp stock err:", err)
|
//logger.Error("erp stock err:", err)
|
||||||
app.Error(c, http.StatusInternalServerError, err, err.Error())
|
app.Error(c, http.StatusInternalServerError, err, err.Error())
|
||||||
|
|
|
@ -718,7 +718,7 @@ func ErpPurchaseDemandGet(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := model.GetErpPurchaseDemand(req)
|
resp, err := model.GetErpPurchaseDemand(req, c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("GetErpPurchaseDemand err:", logger.Field("err", err))
|
logger.Error("GetErpPurchaseDemand err:", logger.Field("err", err))
|
||||||
app.Error(c, http.StatusInternalServerError, err, "获取失败:"+err.Error())
|
app.Error(c, http.StatusInternalServerError, err, "获取失败:"+err.Error())
|
||||||
|
|
|
@ -232,6 +232,8 @@ func InsertSysUser(c *gin.Context) {
|
||||||
tools.HasError(err, "数据解析失败", 500)
|
tools.HasError(err, "数据解析失败", 500)
|
||||||
}
|
}
|
||||||
sysUser.StoreData = string(storeDataJSON)
|
sysUser.StoreData = string(storeDataJSON)
|
||||||
|
} else {
|
||||||
|
sysUser.StoreData = ""
|
||||||
}
|
}
|
||||||
begin := orm.Eloquent.Begin()
|
begin := orm.Eloquent.Begin()
|
||||||
sysUser.CreateBy = tools.GetUserIdStr(c)
|
sysUser.CreateBy = tools.GetUserIdStr(c)
|
||||||
|
@ -239,7 +241,7 @@ func InsertSysUser(c *gin.Context) {
|
||||||
|
|
||||||
// 如果添加了小程序id,则需要更新user表的user_type字段为2-店员
|
// 如果添加了小程序id,则需要更新user表的user_type字段为2-店员
|
||||||
if req.Uid != 0 {
|
if req.Uid != 0 {
|
||||||
err = models.UpdateUserType(begin, req.Uid, models.UserTypeShopAssistant)
|
err = models.UpdateUserType(begin, req.Uid, models.UserTypeShopAssistant, uint32(req.RoleId))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
begin.Rollback()
|
begin.Rollback()
|
||||||
logger.Error("UpdateUserType err:", logger.Field("err", err))
|
logger.Error("UpdateUserType err:", logger.Field("err", err))
|
||||||
|
@ -332,6 +334,8 @@ func UpdateSysUser(c *gin.Context) {
|
||||||
tools.HasError(err, "数据解析失败", 500)
|
tools.HasError(err, "数据解析失败", 500)
|
||||||
}
|
}
|
||||||
data.StoreData = string(storeDataJSON)
|
data.StoreData = string(storeDataJSON)
|
||||||
|
} else {
|
||||||
|
data.StoreData = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
begin := orm.Eloquent.Begin()
|
begin := orm.Eloquent.Begin()
|
||||||
|
@ -341,22 +345,24 @@ func UpdateSysUser(c *gin.Context) {
|
||||||
|
|
||||||
// 判断是否修改了uid
|
// 判断是否修改了uid
|
||||||
if sysInfo.Uid == 0 && req.Uid != 0 { // 新增uid,直接更新为2即可
|
if sysInfo.Uid == 0 && req.Uid != 0 { // 新增uid,直接更新为2即可
|
||||||
err = models.UpdateUserType(begin, req.Uid, models.UserTypeShopAssistant)
|
err = models.UpdateUserType(begin, req.Uid, models.UserTypeShopAssistant, uint32(req.RoleId))
|
||||||
} else if sysInfo.Uid != 0 {
|
} else if sysInfo.Uid != 0 {
|
||||||
if sysInfo.Uid != req.Uid {
|
if sysInfo.Uid != req.Uid {
|
||||||
if req.Uid != 0 {
|
// 原uid的状态更新为1
|
||||||
// 原uid的状态更新为1
|
err = models.UpdateUserType(begin, sysInfo.Uid, models.UserTypeConsumer, 0)
|
||||||
err = models.UpdateUserType(begin, sysInfo.Uid, models.UserTypeConsumer)
|
if err != nil {
|
||||||
if err != nil {
|
begin.Rollback()
|
||||||
begin.Rollback()
|
logger.Error("UpdateUserType err:", logger.Field("err", err))
|
||||||
logger.Error("UpdateUserType err:", logger.Field("err", err))
|
app.Error(c, http.StatusInternalServerError, err, "修改失败")
|
||||||
app.Error(c, http.StatusInternalServerError, err, "修改失败")
|
return
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新uid状态更新为2
|
if req.Uid != 0 {
|
||||||
err = models.UpdateUserType(begin, req.Uid, models.UserTypeShopAssistant)
|
// 新uid状态更新为2
|
||||||
|
err = models.UpdateUserType(begin, req.Uid, models.UserTypeShopAssistant, uint32(req.RoleId))
|
||||||
|
}
|
||||||
|
} else if sysInfo.Uid == req.Uid && sysInfo.RoleId != req.RoleId { // 更改了用户角色
|
||||||
|
err = models.UpdateUserType(begin, sysInfo.Uid, models.UserTypeShopAssistant, uint32(req.RoleId))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -377,6 +383,7 @@ func UpdateSysUser(c *gin.Context) {
|
||||||
app.OK(c, result, "修改成功")
|
app.OK(c, result, "修改成功")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteSysUser
|
||||||
// @Summary 删除用户数据
|
// @Summary 删除用户数据
|
||||||
// @Description 删除数据
|
// @Description 删除数据
|
||||||
// @Tags system/用户
|
// @Tags system/用户
|
||||||
|
@ -388,8 +395,36 @@ func DeleteSysUser(c *gin.Context) {
|
||||||
var data models.SysUser
|
var data models.SysUser
|
||||||
data.UpdateBy = tools.GetUserIdStr(c)
|
data.UpdateBy = tools.GetUserIdStr(c)
|
||||||
IDS := tools.IdsStrToIdsIntGroup("userId", c)
|
IDS := tools.IdsStrToIdsIntGroup("userId", c)
|
||||||
result, err := data.BatchDelete(IDS)
|
|
||||||
tools.HasError(err, "删除失败", 500)
|
begin := orm.Eloquent.Begin()
|
||||||
|
for _, item := range IDS {
|
||||||
|
data.UserId = item
|
||||||
|
result, err := data.Get()
|
||||||
|
if err != nil {
|
||||||
|
tools.HasError(err, "删除失败", 500)
|
||||||
|
}
|
||||||
|
err = models.UpdateUserType(begin, result.Uid, models.UserTypeConsumer, 0)
|
||||||
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
|
logger.Error("DeleteSysUser UpdateUserType err:", logger.Field("err", err))
|
||||||
|
tools.HasError(err, "删除失败", 500)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err := data.BatchDelete(begin, IDS)
|
||||||
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
|
logger.Error("DeleteSysUser BatchDelete err:", logger.Field("err", err))
|
||||||
|
tools.HasError(err, "删除失败", 500)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = begin.Commit().Error
|
||||||
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
|
logger.Error("DeleteSysUser commit err:", logger.Field("err", err))
|
||||||
|
tools.HasError(err, "删除失败", 500)
|
||||||
|
}
|
||||||
|
|
||||||
app.OK(c, result, "删除成功")
|
app.OK(c, result, "删除成功")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1491,6 +1491,7 @@ func (m *ErpStockListReq) stockIsEmptyList(c *gin.Context) (*ErpStockListResp, e
|
||||||
Joins("LEFT JOIN erp_stock ON erp_commodity.id = erp_stock.erp_commodity_id AND erp_stock.store_id = ?", m.StoreId).
|
Joins("LEFT JOIN erp_stock ON erp_commodity.id = erp_stock.erp_commodity_id AND erp_stock.store_id = ?", m.StoreId).
|
||||||
//Joins("LEFT JOIN erp_stock ON erp_commodity.id = erp_stock.erp_commodity_id").
|
//Joins("LEFT JOIN erp_stock ON erp_commodity.id = erp_stock.erp_commodity_id").
|
||||||
Joins("LEFT JOIN erp_category c ON erp_commodity.erp_category_id = c.id").
|
Joins("LEFT JOIN erp_category c ON erp_commodity.erp_category_id = c.id").
|
||||||
|
Group("erp_commodity.id").
|
||||||
//Where("erp_stock.count = 0 AND erp_stock.store_id = ?", m.StoreId).
|
//Where("erp_stock.count = 0 AND erp_stock.store_id = ?", m.StoreId).
|
||||||
Order("CASE WHEN c.pid = 0 THEN CAST(c.number AS SIGNED) " +
|
Order("CASE WHEN c.pid = 0 THEN CAST(c.number AS SIGNED) " +
|
||||||
"ELSE CAST(SUBSTRING(c.number, 1, 3) AS SIGNED) END, " +
|
"ELSE CAST(SUBSTRING(c.number, 1, 3) AS SIGNED) END, " +
|
||||||
|
@ -1500,6 +1501,7 @@ func (m *ErpStockListReq) stockIsEmptyList(c *gin.Context) (*ErpStockListResp, e
|
||||||
Joins("LEFT JOIN erp_stock ON erp_commodity.id = erp_stock.erp_commodity_id AND erp_stock.store_id = ?", m.StoreId).
|
Joins("LEFT JOIN erp_stock ON erp_commodity.id = erp_stock.erp_commodity_id AND erp_stock.store_id = ?", m.StoreId).
|
||||||
//Joins("LEFT JOIN erp_stock ON erp_commodity.id = erp_stock.erp_commodity_id").
|
//Joins("LEFT JOIN erp_stock ON erp_commodity.id = erp_stock.erp_commodity_id").
|
||||||
Joins("LEFT JOIN erp_category c ON erp_commodity.erp_category_id = c.id").
|
Joins("LEFT JOIN erp_category c ON erp_commodity.erp_category_id = c.id").
|
||||||
|
Group("erp_commodity.id").
|
||||||
//Where("erp_stock.count = 0 AND erp_stock.store_id = ?", m.StoreId).
|
//Where("erp_stock.count = 0 AND erp_stock.store_id = ?", m.StoreId).
|
||||||
Order("CASE WHEN c.pid = 0 THEN CAST(c.number AS SIGNED) " +
|
Order("CASE WHEN c.pid = 0 THEN CAST(c.number AS SIGNED) " +
|
||||||
"ELSE CAST(SUBSTRING(c.number, 1, 3) AS SIGNED) END, " +
|
"ELSE CAST(SUBSTRING(c.number, 1, 3) AS SIGNED) END, " +
|
||||||
|
@ -1508,7 +1510,7 @@ func (m *ErpStockListReq) stockIsEmptyList(c *gin.Context) (*ErpStockListResp, e
|
||||||
if len(storeList) == 0 {
|
if len(storeList) == 0 {
|
||||||
qs = qs.Select("erp_commodity.*, COALESCE(erp_stock.count, 0) AS total_count, " +
|
qs = qs.Select("erp_commodity.*, COALESCE(erp_stock.count, 0) AS total_count, " +
|
||||||
"COALESCE(SUM(erp_stock.dispatch_count), 0) AS total_dispatch_count").
|
"COALESCE(SUM(erp_stock.dispatch_count), 0) AS total_dispatch_count").
|
||||||
Joins("LEFT JOIN (SELECT erp_commodity_id, SUM(count) AS count FROM erp_stock GROUP BY erp_commodity_id) " +
|
Joins("LEFT JOIN (SELECT erp_commodity_id, SUM(count) AS count, SUM(dispatch_count) AS dispatch_count FROM erp_stock GROUP BY erp_commodity_id) " +
|
||||||
"erp_stock ON erp_commodity.id = erp_stock.erp_commodity_id").
|
"erp_stock ON erp_commodity.id = erp_stock.erp_commodity_id").
|
||||||
Joins("JOIN erp_category c ON erp_commodity.erp_category_id = c.id").
|
Joins("JOIN erp_category c ON erp_commodity.erp_category_id = c.id").
|
||||||
Where("erp_stock.count IS NULL OR erp_stock.count = 0").
|
Where("erp_stock.count IS NULL OR erp_stock.count = 0").
|
||||||
|
@ -1517,7 +1519,7 @@ func (m *ErpStockListReq) stockIsEmptyList(c *gin.Context) (*ErpStockListResp, e
|
||||||
"CAST(c.pid AS SIGNED), CAST(SUBSTRING(erp_commodity.serial_number, -4) AS SIGNED)")
|
"CAST(c.pid AS SIGNED), CAST(SUBSTRING(erp_commodity.serial_number, -4) AS SIGNED)")
|
||||||
es = es.Select("erp_commodity.*, COALESCE(erp_stock.count, 0) AS total_count, " +
|
es = es.Select("erp_commodity.*, COALESCE(erp_stock.count, 0) AS total_count, " +
|
||||||
"COALESCE(SUM(erp_stock.dispatch_count), 0) AS total_dispatch_count").
|
"COALESCE(SUM(erp_stock.dispatch_count), 0) AS total_dispatch_count").
|
||||||
Joins("LEFT JOIN (SELECT erp_commodity_id, SUM(count) AS count FROM erp_stock GROUP BY erp_commodity_id) " +
|
Joins("LEFT JOIN (SELECT erp_commodity_id, SUM(count) AS count, SUM(dispatch_count) AS dispatch_count FROM erp_stock GROUP BY erp_commodity_id) " +
|
||||||
"erp_stock ON erp_commodity.id = erp_stock.erp_commodity_id").
|
"erp_stock ON erp_commodity.id = erp_stock.erp_commodity_id").
|
||||||
Joins("JOIN erp_category c ON erp_commodity.erp_category_id = c.id").
|
Joins("JOIN erp_category c ON erp_commodity.erp_category_id = c.id").
|
||||||
Where("erp_stock.count IS NULL OR erp_stock.count = 0").
|
Where("erp_stock.count IS NULL OR erp_stock.count = 0").
|
||||||
|
@ -1527,7 +1529,7 @@ func (m *ErpStockListReq) stockIsEmptyList(c *gin.Context) (*ErpStockListResp, e
|
||||||
} else {
|
} else {
|
||||||
qs = qs.Select("erp_commodity.*, COALESCE(erp_stock.count, 0) AS total_count, "+
|
qs = qs.Select("erp_commodity.*, COALESCE(erp_stock.count, 0) AS total_count, "+
|
||||||
"COALESCE(SUM(erp_stock.dispatch_count), 0) AS total_dispatch_count").
|
"COALESCE(SUM(erp_stock.dispatch_count), 0) AS total_dispatch_count").
|
||||||
Joins("LEFT JOIN (SELECT erp_commodity_id, SUM(count) AS count FROM erp_stock WHERE store_id IN (?) GROUP BY erp_commodity_id) "+
|
Joins("LEFT JOIN (SELECT erp_commodity_id, SUM(count) AS count, SUM(dispatch_count) AS dispatch_count FROM erp_stock WHERE store_id IN (?) GROUP BY erp_commodity_id) "+
|
||||||
"erp_stock ON erp_commodity.id = erp_stock.erp_commodity_id", storeList).
|
"erp_stock ON erp_commodity.id = erp_stock.erp_commodity_id", storeList).
|
||||||
Joins("JOIN erp_category c ON erp_commodity.erp_category_id = c.id").
|
Joins("JOIN erp_category c ON erp_commodity.erp_category_id = c.id").
|
||||||
Where("erp_stock.count IS NULL OR erp_stock.count = 0").
|
Where("erp_stock.count IS NULL OR erp_stock.count = 0").
|
||||||
|
@ -1536,7 +1538,7 @@ func (m *ErpStockListReq) stockIsEmptyList(c *gin.Context) (*ErpStockListResp, e
|
||||||
"CAST(c.pid AS SIGNED), CAST(SUBSTRING(erp_commodity.serial_number, -4) AS SIGNED)")
|
"CAST(c.pid AS SIGNED), CAST(SUBSTRING(erp_commodity.serial_number, -4) AS SIGNED)")
|
||||||
es = es.Select("erp_commodity.*, COALESCE(erp_stock.count, 0) AS total_count, "+
|
es = es.Select("erp_commodity.*, COALESCE(erp_stock.count, 0) AS total_count, "+
|
||||||
"COALESCE(SUM(erp_stock.dispatch_count), 0) AS total_dispatch_count").
|
"COALESCE(SUM(erp_stock.dispatch_count), 0) AS total_dispatch_count").
|
||||||
Joins("LEFT JOIN (SELECT erp_commodity_id, SUM(count) AS count FROM erp_stock WHERE store_id IN (?) GROUP BY erp_commodity_id) "+
|
Joins("LEFT JOIN (SELECT erp_commodity_id, SUM(count) AS count, SUM(dispatch_count) AS dispatch_count FROM erp_stock WHERE store_id IN (?) GROUP BY erp_commodity_id) "+
|
||||||
"erp_stock ON erp_commodity.id = erp_stock.erp_commodity_id", storeList).
|
"erp_stock ON erp_commodity.id = erp_stock.erp_commodity_id", storeList).
|
||||||
Joins("JOIN erp_category c ON erp_commodity.erp_category_id = c.id").
|
Joins("JOIN erp_category c ON erp_commodity.erp_category_id = c.id").
|
||||||
Where("erp_stock.count IS NULL OR erp_stock.count = 0").
|
Where("erp_stock.count IS NULL OR erp_stock.count = 0").
|
||||||
|
@ -2110,16 +2112,18 @@ func (m *ErpStockCommodityListReq) GetDetailList(c *gin.Context) (*ErpStockCommo
|
||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func CheckScanCodeResp(scanCode string, req *ErpStockCommodityListResp) error {
|
func CheckScanCodeResp(scanCode string, storeId uint32, req *ErpStockCommodityListResp) error {
|
||||||
if req.Total == 1 { // 串码商品,只有1个;条码商品,刚好也只有1个
|
if req.Total == 1 { // 串码商品,只有1个;条码商品,刚好也只有1个
|
||||||
if req.List[0].IMEI == scanCode { // 串码商品,只有1个
|
if req.List[0].IMEI == scanCode { // 串码商品,只有1个
|
||||||
|
if req.List[0].StoreId != storeId && storeId != 0 {
|
||||||
|
return errors.New(req.List[0].ErpCommodityName + "商品非所选门店库存,请检查")
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if req.List[0].ErpBarcode == scanCode && req.List[0].IMEI != "" {
|
if req.List[0].ErpBarcode == scanCode && req.List[0].IMEI != "" {
|
||||||
return errors.New("串码类商品,请直接输入串码")
|
return errors.New("串码类商品,请直接输入串码")
|
||||||
}
|
}
|
||||||
|
|
||||||
} else { // 条码商品,数量多
|
} else { // 条码商品,数量多
|
||||||
var barCodeList []ErpStockCommodity
|
var barCodeList []ErpStockCommodity
|
||||||
var imeiLst []ErpStockCommodity
|
var imeiLst []ErpStockCommodity
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
"go-admin/logger"
|
"go-admin/logger"
|
||||||
"go-admin/tools"
|
"go-admin/tools"
|
||||||
"go-admin/tools/config"
|
"go-admin/tools/config"
|
||||||
|
"math"
|
||||||
"strconv"
|
"strconv"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
@ -128,7 +129,7 @@ func (m *ErpDecisionReportReq) DecisionReportList(c *gin.Context) (*ErpDecisionR
|
||||||
for _, commodityName := range m.CommodityName {
|
for _, commodityName := range m.CommodityName {
|
||||||
commodityNames = append(commodityNames, commodityName)
|
commodityNames = append(commodityNames, commodityName)
|
||||||
}
|
}
|
||||||
qs = qs.Where("commodity_name IN (?)", commodityNames)
|
qs = qs.Where("erp_commodity_name IN (?)", commodityNames)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(m.CategoryID) > 0 { // 商品分类id
|
if len(m.CategoryID) > 0 { // 商品分类id
|
||||||
|
@ -136,7 +137,7 @@ func (m *ErpDecisionReportReq) DecisionReportList(c *gin.Context) (*ErpDecisionR
|
||||||
for _, category := range m.CategoryID {
|
for _, category := range m.CategoryID {
|
||||||
categoryIDs = append(categoryIDs, category)
|
categoryIDs = append(categoryIDs, category)
|
||||||
}
|
}
|
||||||
qs = qs.Where("category_id IN (?)", categoryIDs)
|
qs = qs.Where("erp_category_id IN (?)", categoryIDs)
|
||||||
}
|
}
|
||||||
|
|
||||||
var count int64
|
var count int64
|
||||||
|
@ -147,11 +148,12 @@ func (m *ErpDecisionReportReq) DecisionReportList(c *gin.Context) (*ErpDecisionR
|
||||||
}
|
}
|
||||||
|
|
||||||
var commodities []ErpStock
|
var commodities []ErpStock
|
||||||
if m.IsExport == 1 { // 导出excel
|
err = qs.Order("erp_commodity_id, store_id desc").Find(&commodities).Error
|
||||||
err = qs.Order("erp_commodity_id, store_id desc").Find(&commodities).Error
|
//if m.IsExport == 1 { // 导出excel
|
||||||
} else {
|
// err = qs.Order("erp_commodity_id, store_id desc").Find(&commodities).Error
|
||||||
err = qs.Order("erp_commodity_id, store_id desc").Offset(page * m.PageSize).Limit(m.PageSize).Find(&commodities).Error
|
//} else {
|
||||||
}
|
// err = qs.Order("erp_commodity_id, store_id desc").Offset(page * m.PageSize).Limit(m.PageSize).Find(&commodities).Error
|
||||||
|
//}
|
||||||
if err != nil && err != RecordNotFound {
|
if err != nil && err != RecordNotFound {
|
||||||
logger.Error("查询无库存列表失败", logger.Field("err", err))
|
logger.Error("查询无库存列表失败", logger.Field("err", err))
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -247,14 +249,17 @@ func (m *ErpDecisionReportReq) DecisionReportList(c *gin.Context) (*ErpDecisionR
|
||||||
sumData.TotalEndStock += data.EndStock
|
sumData.TotalEndStock += data.EndStock
|
||||||
sumData.TotalEndAmount += data.EndAmount
|
sumData.TotalEndAmount += data.EndAmount
|
||||||
|
|
||||||
|
sumData.TotalBeginAmount = math.Round(sumData.TotalBeginAmount*100) / 100
|
||||||
|
sumData.TotalEndAmount = math.Round(sumData.TotalEndAmount*100) / 100
|
||||||
|
|
||||||
reportList = append(reportList, data)
|
reportList = append(reportList, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
resp.SumData = sumData
|
resp.SumData = sumData
|
||||||
resp.Total = len(reportList)
|
resp.Total = int(count)
|
||||||
resp.List = reportList
|
|
||||||
|
|
||||||
if m.IsExport == 1 {
|
if m.IsExport == 1 {
|
||||||
|
resp.List = reportList
|
||||||
resp.ExportUrl, err = reportDecisionExport(resp)
|
resp.ExportUrl, err = reportDecisionExport(resp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -262,6 +267,19 @@ func (m *ErpDecisionReportReq) DecisionReportList(c *gin.Context) (*ErpDecisionR
|
||||||
resp.Total = 0
|
resp.Total = 0
|
||||||
resp.List = nil
|
resp.List = nil
|
||||||
resp.SumData = DecisionSumData{}
|
resp.SumData = DecisionSumData{}
|
||||||
|
} else {
|
||||||
|
// 分页处理
|
||||||
|
startIdx := (resp.PageIndex - 1) * resp.PageSize
|
||||||
|
endIdx := resp.PageIndex * resp.PageSize
|
||||||
|
|
||||||
|
// 确保不超出索引范围
|
||||||
|
if startIdx >= len(reportList) {
|
||||||
|
resp.List = []DecisionReportData{}
|
||||||
|
} else if endIdx > len(reportList) {
|
||||||
|
resp.List = reportList[startIdx:]
|
||||||
|
} else {
|
||||||
|
resp.List = reportList[startIdx:endIdx]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return resp, nil
|
return resp, nil
|
||||||
|
|
|
@ -487,7 +487,7 @@ func (m *ErpOrderListReq) List(c *gin.Context) (*ErpOrderListResp, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if m.ScanCode != "" { // 扫描了串码,需要查询已售的商品数据
|
if m.ScanCode != "" { // 扫描了串码,需要查询已售的商品数据
|
||||||
return QueryListByScanCode(m.ScanCode, showConfig.ShowAll, c)
|
return QueryListByScanCode(m.StoreId, m.ScanCode, showConfig.ShowAll, c)
|
||||||
}
|
}
|
||||||
|
|
||||||
if m.CommodityName != "" { // 输入了商品名称进行查询
|
if m.CommodityName != "" { // 输入了商品名称进行查询
|
||||||
|
@ -599,7 +599,7 @@ func (m *ErpOrderListReq) List(c *gin.Context) (*ErpOrderListResp, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// QueryListByScanCode 通过扫描串码查询列表
|
// QueryListByScanCode 通过扫描串码查询列表
|
||||||
func QueryListByScanCode(scanCode, showConfig string, c *gin.Context) (*ErpOrderListResp, error) {
|
func QueryListByScanCode(storeId uint32, scanCode, showConfig string, c *gin.Context) (*ErpOrderListResp, error) {
|
||||||
resp := &ErpOrderListResp{}
|
resp := &ErpOrderListResp{}
|
||||||
|
|
||||||
// 查询扫码串码的零售销售订单的商品信息
|
// 查询扫码串码的零售销售订单的商品信息
|
||||||
|
@ -660,6 +660,10 @@ func QueryListByScanCode(scanCode, showConfig string, c *gin.Context) (*ErpOrder
|
||||||
return &ErpOrderListResp{}, errors.New("您没有该门店权限")
|
return &ErpOrderListResp{}, errors.New("您没有该门店权限")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if orders[0].StoreId != storeId && storeId != 0 {
|
||||||
|
return &ErpOrderListResp{}, errors.New("非当前门店所售商品,需前往对应门店退货")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 添加付款、销售员、商品信息
|
// 添加付款、销售员、商品信息
|
||||||
|
@ -667,6 +671,7 @@ func QueryListByScanCode(scanCode, showConfig string, c *gin.Context) (*ErpOrder
|
||||||
erpOrderListSetCashier(orders)
|
erpOrderListSetCashier(orders)
|
||||||
erpOrderListSetSalesman(orders)
|
erpOrderListSetSalesman(orders)
|
||||||
|
|
||||||
|
orders[0].Commodities = commodity
|
||||||
if len(orders) != 0 {
|
if len(orders) != 0 {
|
||||||
// 查询该串码商品是否已经退过货
|
// 查询该串码商品是否已经退过货
|
||||||
resp.List = append(resp.List, orders[0])
|
resp.List = append(resp.List, orders[0])
|
||||||
|
@ -3685,7 +3690,7 @@ func checkOrderData(req *ErpOrderCreateReq, c *gin.Context) (*ErpOrder, error) {
|
||||||
|
|
||||||
if req.RetailType == RetailTypeSale {
|
if req.RetailType == RetailTypeSale {
|
||||||
// 校验商品是否有库存,是否是对应门店库存商品
|
// 校验商品是否有库存,是否是对应门店库存商品
|
||||||
err = checkOrderCommodityStock(req, sysUser)
|
err = checkOrderCommodityStock(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -3833,11 +3838,14 @@ func checkOrderData(req *ErpOrderCreateReq, c *gin.Context) (*ErpOrder, error) {
|
||||||
// 更新订单表总退款金额和数量 备注:2024-03-12 订单表没有退款金额的字段,默认都使用订单金额字段,根据订单类型判断是零售或退款
|
// 更新订单表总退款金额和数量 备注:2024-03-12 订单表没有退款金额的字段,默认都使用订单金额字段,根据订单类型判断是零售或退款
|
||||||
//erpOrder.RejectedTotalAmount += req.ErpOrderCommodities[i].RejectedAmount
|
//erpOrder.RejectedTotalAmount += req.ErpOrderCommodities[i].RejectedAmount
|
||||||
//erpOrder.RejectedTotalCount += req.ErpOrderCommodities[i].RejectedCount
|
//erpOrder.RejectedTotalCount += req.ErpOrderCommodities[i].RejectedCount
|
||||||
erpOrder.TotalAmount += req.ErpOrderCommodities[i].ReceivedAmount
|
erpOrder.TotalAmount += v.RejectedAmount
|
||||||
erpOrder.TotalCount += int32(req.ErpOrderCommodities[i].Count)
|
erpOrder.TotalCount += int32(req.ErpOrderCommodities[i].Count)
|
||||||
|
|
||||||
|
// 订单总优惠
|
||||||
|
erpOrder.TotalDiscount += v.MemberDiscount + v.SaleDiscount
|
||||||
|
|
||||||
// 销售毛利 // todo 待测试核实 备注:产品说有亏本销售的情况,不用判断毛利是否<0
|
// 销售毛利 // todo 待测试核实 备注:产品说有亏本销售的情况,不用判断毛利是否<0
|
||||||
salesProfit := v.ReceivedAmount - float64(int32(v.WholesalePrice)*v.Count)
|
salesProfit := v.RejectedAmount - float64(int32(v.WholesalePrice)*v.Count)
|
||||||
//if salesProfit < 0 {
|
//if salesProfit < 0 {
|
||||||
// logger.Error("rejected salesProfit less than 0")
|
// logger.Error("rejected salesProfit less than 0")
|
||||||
// return nil, errors.New("商品销售毛利小于0,请检查")
|
// return nil, errors.New("商品销售毛利小于0,请检查")
|
||||||
|
@ -3971,15 +3979,18 @@ func checkOrderData(req *ErpOrderCreateReq, c *gin.Context) (*ErpOrder, error) {
|
||||||
return nil, errors.New("操作失败:" + err.Error())
|
return nil, errors.New("操作失败:" + err.Error())
|
||||||
}
|
}
|
||||||
erpOrder.StorePer = erpOrder.TotalStaffProfit * (store.SalesCommRate / 100)
|
erpOrder.StorePer = erpOrder.TotalStaffProfit * (store.SalesCommRate / 100)
|
||||||
|
erpOrder.StorePer = math.Round(erpOrder.StorePer*100) / 100
|
||||||
|
|
||||||
// 订单总优惠
|
// 订单总优惠
|
||||||
erpOrder.TotalDiscount = erpOrder.TotalRetailPrice - erpOrder.TotalAmount
|
if req.RetailType == RetailTypeSale {
|
||||||
|
erpOrder.TotalDiscount = erpOrder.TotalRetailPrice - erpOrder.TotalAmount
|
||||||
|
}
|
||||||
|
|
||||||
return erpOrder, nil
|
return erpOrder, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// 校验商品是否有库存
|
// 校验商品是否有库存
|
||||||
func checkOrderCommodityStock(req *ErpOrderCreateReq, sysUser *SysUser) error {
|
func checkOrderCommodityStock(req *ErpOrderCreateReq) error {
|
||||||
if len(req.ErpOrderCommodities) != 0 {
|
if len(req.ErpOrderCommodities) != 0 {
|
||||||
// 统计串码和非串码商品信息
|
// 统计串码和非串码商品信息
|
||||||
commodityMap := make(map[uint32]uint32) // 记录非串码商品id及其数量
|
commodityMap := make(map[uint32]uint32) // 记录非串码商品id及其数量
|
||||||
|
@ -4032,7 +4043,7 @@ func checkOrderCommodityStock(req *ErpOrderCreateReq, sysUser *SysUser) error {
|
||||||
return errors.New("商品" + "[" + commodityNameMap[commodityId] + "]库存不足")
|
return errors.New("商品" + "[" + commodityNameMap[commodityId] + "]库存不足")
|
||||||
}
|
}
|
||||||
|
|
||||||
if !CheckUserStore(imeiStockCommodity.StoreId, sysUser) {
|
if imeiStockCommodity.StoreId != req.StoreId {
|
||||||
return errors.New(commodityNameMap[commodityId] + "商品非所选门店库存,请检查")
|
return errors.New(commodityNameMap[commodityId] + "商品非所选门店库存,请检查")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3186,8 +3186,8 @@ func (r *CooperativeExportMemberPromotionReq) Export() string {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
list = InviteMemberReportListSetUser(list)
|
//list = InviteMemberReportListSetUser(list)
|
||||||
list = InviteMemberReportListSetStore(list)
|
//list = InviteMemberReportListSetStore(list)
|
||||||
|
|
||||||
//if len(storeIds) == 1 {
|
//if len(storeIds) == 1 {
|
||||||
// var store Store
|
// var store Store
|
||||||
|
@ -3225,8 +3225,8 @@ func MemberReportFile(memberReports []InviteMemberReport, fileName string) strin
|
||||||
}
|
}
|
||||||
var row []interface{}
|
var row []interface{}
|
||||||
for rowId := 0; rowId < len(memberReports); rowId++ {
|
for rowId := 0; rowId < len(memberReports); rowId++ {
|
||||||
row = []interface{}{fmt.Sprintf("%d", memberReports[rowId].Store.ID), memberReports[rowId].Store.Name,
|
row = []interface{}{fmt.Sprintf("%d", memberReports[rowId].SystemUser.StoreList[0].StoreID), memberReports[rowId].SystemUser.StoreList[0].StoreName,
|
||||||
fmt.Sprintf("%d", memberReports[rowId].User.Uid), memberReports[rowId].User.ShopAssistantName,
|
fmt.Sprintf("%d", memberReports[rowId].SystemUser.Uid), memberReports[rowId].SystemUser.NickName,
|
||||||
fmt.Sprintf("%d", memberReports[rowId].GoldCount), fmt.Sprintf("%d", memberReports[rowId].PlatinumCount),
|
fmt.Sprintf("%d", memberReports[rowId].GoldCount), fmt.Sprintf("%d", memberReports[rowId].PlatinumCount),
|
||||||
fmt.Sprintf("%d", memberReports[rowId].BlackGoldCount)}
|
fmt.Sprintf("%d", memberReports[rowId].BlackGoldCount)}
|
||||||
|
|
||||||
|
|
|
@ -1522,9 +1522,9 @@ func checkPurchaseInventory(req *ErpPurchaseInventoryReq) error {
|
||||||
req.Inventories[i].ErpCategoryID = erpCommodity.ErpCategoryId // 分类id,入库的时候前端没传,后端补充
|
req.Inventories[i].ErpCategoryID = erpCommodity.ErpCategoryId // 分类id,入库的时候前端没传,后端补充
|
||||||
req.Inventories[i].ErpCategoryName = erpCommodity.ErpCategoryName // 分类名称,入库的时候前端没传,后端补充
|
req.Inventories[i].ErpCategoryName = erpCommodity.ErpCategoryName // 分类名称,入库的时候前端没传,后端补充
|
||||||
|
|
||||||
if inventory.EmployeePrice == 0 { // 没有传入员工成本价,则默认按照商品资料设置的员工成本价加价金额
|
//if inventory.EmployeePrice == 0 { // 没有传入员工成本价,则默认按照商品资料设置的员工成本价加价金额
|
||||||
req.Inventories[i].EmployeePrice = inventory.ImplementationPrice + float64(erpCommodity.StaffCostPrice)
|
// req.Inventories[i].EmployeePrice = inventory.ImplementationPrice + float64(erpCommodity.StaffCostPrice)
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 入库的商品信息有误,不在之前的商品列表中
|
// 入库的商品信息有误,不在之前的商品列表中
|
||||||
|
@ -2408,13 +2408,13 @@ func FinishErpPurchaseDemand(req *FinishErpPurchaseDemandReq, sysUser *SysUser)
|
||||||
//}
|
//}
|
||||||
|
|
||||||
// GetErpPurchaseDemand 获取采购需求
|
// GetErpPurchaseDemand 获取采购需求
|
||||||
func GetErpPurchaseDemand(req *GetErpPurchaseDemandReq) (*GetErpPurchaseDemandResp, error) {
|
func GetErpPurchaseDemand(req *GetErpPurchaseDemandReq, c *gin.Context) (*GetErpPurchaseDemandResp, error) {
|
||||||
var err error
|
var err error
|
||||||
resp := new(GetErpPurchaseDemandResp)
|
resp := new(GetErpPurchaseDemandResp)
|
||||||
if req.HideFlag == "ON" { // 隐藏无采购需求的商品
|
if req.HideFlag == "ON" { // 隐藏无采购需求的商品
|
||||||
resp, err = getErpPurchaseDemandHide(req)
|
resp, err = getErpPurchaseDemandHide(req, c)
|
||||||
} else { // 展示所有
|
} else { // 展示所有
|
||||||
resp, err = getErpPurchaseDemandAll(req)
|
resp, err = getErpPurchaseDemandAll(req, c)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -2424,7 +2424,7 @@ func GetErpPurchaseDemand(req *GetErpPurchaseDemandReq) (*GetErpPurchaseDemandRe
|
||||||
}
|
}
|
||||||
|
|
||||||
// 展示所有采购需求
|
// 展示所有采购需求
|
||||||
func getErpPurchaseDemandAll(req *GetErpPurchaseDemandReq) (*GetErpPurchaseDemandResp, error) {
|
func getErpPurchaseDemandAll(req *GetErpPurchaseDemandReq, c *gin.Context) (*GetErpPurchaseDemandResp, error) {
|
||||||
page := req.PageIndex - 1
|
page := req.PageIndex - 1
|
||||||
if page < 0 {
|
if page < 0 {
|
||||||
page = 0
|
page = 0
|
||||||
|
@ -2469,7 +2469,7 @@ func getErpPurchaseDemandAll(req *GetErpPurchaseDemandReq) (*GetErpPurchaseDeman
|
||||||
SortCommodities(commodities)
|
SortCommodities(commodities)
|
||||||
|
|
||||||
// 批量查询门店信息
|
// 批量查询门店信息
|
||||||
stores, err := GetOnlineStores()
|
stores, err := GetOnlineStores(c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -2516,7 +2516,7 @@ func getErpPurchaseDemandAll(req *GetErpPurchaseDemandReq) (*GetErpPurchaseDeman
|
||||||
}
|
}
|
||||||
|
|
||||||
// 隐藏无采购需求的商品
|
// 隐藏无采购需求的商品
|
||||||
func getErpPurchaseDemandHide(req *GetErpPurchaseDemandReq) (*GetErpPurchaseDemandResp, error) {
|
func getErpPurchaseDemandHide(req *GetErpPurchaseDemandReq, c *gin.Context) (*GetErpPurchaseDemandResp, error) {
|
||||||
page := req.PageIndex - 1
|
page := req.PageIndex - 1
|
||||||
if page < 0 {
|
if page < 0 {
|
||||||
page = 0
|
page = 0
|
||||||
|
@ -2599,7 +2599,7 @@ func getErpPurchaseDemandHide(req *GetErpPurchaseDemandReq) (*GetErpPurchaseDema
|
||||||
resp.List = nil
|
resp.List = nil
|
||||||
} else {
|
} else {
|
||||||
// 批量查询门店信息
|
// 批量查询门店信息
|
||||||
stores, err := GetOnlineStores()
|
stores, err := GetOnlineStores(c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -2879,9 +2879,15 @@ func GetLastMonthRange() (time.Time, time.Time) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetOnlineStores 查询所有在线门店信息
|
// GetOnlineStores 查询所有在线门店信息
|
||||||
func GetOnlineStores() ([]Store, error) {
|
func GetOnlineStores(c *gin.Context) ([]Store, error) {
|
||||||
|
sysUser, err := GetSysUserByCtx(c)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
var stores []Store
|
var stores []Store
|
||||||
err := orm.Eloquent.Table("store").Where("is_online = ?", 1).Find(&stores).Error
|
err = orm.Eloquent.Table("store").Where("is_online = ? and cooperative_business_id = ? ", 1,
|
||||||
|
sysUser.CooperativeBusinessId).Find(&stores).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -3482,11 +3488,14 @@ func getReportByOrderFromCommon(req *ErpPurchaseReportByOrderReq, c *gin.Context
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if reportByOrderData.CommodityData == nil {
|
if reportByOrderData.CommodityData == nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//if reportByOrderData.CommodityData == nil {
|
||||||
|
// continue
|
||||||
|
//}
|
||||||
|
|
||||||
reportByOrderData.Amount = nAmount
|
reportByOrderData.Amount = nAmount
|
||||||
reportByOrderData.Count = nCount
|
reportByOrderData.Count = nCount
|
||||||
if nCount != 0 {
|
if nCount != 0 {
|
||||||
|
@ -3497,9 +3506,8 @@ func getReportByOrderFromCommon(req *ErpPurchaseReportByOrderReq, c *gin.Context
|
||||||
nTotalCount += nCount
|
nTotalCount += nCount
|
||||||
}
|
}
|
||||||
|
|
||||||
resp.Total = len(reportByOrderDataList)
|
|
||||||
|
|
||||||
if req.ErpCategoryID != 0 || req.ErpCommodityName != "" {
|
if req.ErpCategoryID != 0 || req.ErpCommodityName != "" {
|
||||||
|
resp.Total = len(reportByOrderDataList)
|
||||||
// 计算分页所需的切片索引
|
// 计算分页所需的切片索引
|
||||||
startIndex := page * req.PageSize
|
startIndex := page * req.PageSize
|
||||||
endIndex := (page + 1) * req.PageSize
|
endIndex := (page + 1) * req.PageSize
|
||||||
|
|
|
@ -114,7 +114,7 @@ func (m *GetStoreReq) List() ([]Store, int64, error) {
|
||||||
// }
|
// }
|
||||||
// m.CooperativeBusinessId = sysUser.CooperativeBusinessId
|
// m.CooperativeBusinessId = sysUser.CooperativeBusinessId
|
||||||
//}
|
//}
|
||||||
qs := orm.Eloquent.Table("store")
|
qs := orm.Eloquent.Table("store").Where("member_service = ?", 1)
|
||||||
if m.Name != "" {
|
if m.Name != "" {
|
||||||
qs = qs.Where("name LIKE '%" + m.Name + "%'")
|
qs = qs.Where("name LIKE '%" + m.Name + "%'")
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,9 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
"log"
|
"log"
|
||||||
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"golang.org/x/crypto/bcrypt"
|
"golang.org/x/crypto/bcrypt"
|
||||||
|
|
||||||
|
@ -395,12 +397,12 @@ func (e *SysUser) Update(begin *gorm.DB, id int) (update SysUser, err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *SysUser) BatchDelete(id []int) (Result bool, err error) {
|
func (e *SysUser) BatchDelete(begin *gorm.DB, id []int) (Result bool, err error) {
|
||||||
if err = orm.Eloquent.Table(e.TableName()).Where("user_id in (?)", id).Delete(&SysUser{}).Error; err != nil {
|
if err = begin.Table(e.TableName()).Where("user_id in (?)", id).Delete(&SysUser{}).Error; err != nil {
|
||||||
return
|
return false, err
|
||||||
}
|
}
|
||||||
Result = true
|
|
||||||
return
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *SysUser) SetPwd(pwd SysUserPwd) (Result bool, err error) {
|
func (e *SysUser) SetPwd(pwd SysUserPwd) (Result bool, err error) {
|
||||||
|
@ -430,11 +432,12 @@ func GetUserById(id uint32) *SysUserB {
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateUserType 更新uid的user_type为2
|
// UpdateUserType 更新uid的user_type为2
|
||||||
func UpdateUserType(begin *gorm.DB, uid, nType uint32) error {
|
func UpdateUserType(begin *gorm.DB, uid, nType, roleId uint32) error {
|
||||||
// 更新库存表
|
// 更新库存表
|
||||||
err := begin.Table("user").Where("uid = ?", uid).
|
err := begin.Table("user").Where("uid = ?", uid).
|
||||||
Updates(map[string]interface{}{
|
Updates(map[string]interface{}{
|
||||||
"user_type": nType,
|
"user_type": nType,
|
||||||
|
"xcx_role_id": roleId,
|
||||||
}).Error
|
}).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -442,3 +445,58 @@ func UpdateUserType(begin *gorm.DB, uid, nType uint32) error {
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetUserEffectiveStore 获取店员当前的有效门店(邀请客户时使用)
|
||||||
|
func GetUserEffectiveStore(uid uint32) ([]StoreInfo, error) {
|
||||||
|
user := new(SysUser)
|
||||||
|
err := orm.Eloquent.Table("sys_user").Where("uid", uid).Find(&user).Error
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Error:", err, "UID:", uid)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 解析门店数据
|
||||||
|
if err := json.Unmarshal([]byte(user.StoreData), &user.StoreList); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(user.StoreList) == 0 {
|
||||||
|
return nil, errors.New("no stores found")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 当前时间
|
||||||
|
now := time.Now()
|
||||||
|
|
||||||
|
// 过滤掉过期的门店
|
||||||
|
validStores := make([]StoreInfo, 0)
|
||||||
|
for _, store := range user.StoreList {
|
||||||
|
expireTime, err := time.Parse(StoreDateTimeFormat, store.ExpireTime)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Error parsing time:", err, "ExpireTime:", store.ExpireTime)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// 包含当天有效时间
|
||||||
|
expireTime = expireTime.Add(24*time.Hour - time.Second)
|
||||||
|
if expireTime.After(now) {
|
||||||
|
validStores = append(validStores, store)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(validStores) == 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 按有效时间和 store_id 排序
|
||||||
|
sort.Slice(validStores, func(i, j int) bool {
|
||||||
|
timeI, _ := time.Parse(StoreDateTimeFormat, validStores[i].ExpireTime)
|
||||||
|
timeJ, _ := time.Parse(StoreDateTimeFormat, validStores[j].ExpireTime)
|
||||||
|
|
||||||
|
if timeI.Equal(timeJ) {
|
||||||
|
return validStores[i].StoreID < validStores[j].StoreID
|
||||||
|
}
|
||||||
|
return timeI.Before(timeJ)
|
||||||
|
})
|
||||||
|
|
||||||
|
return validStores, nil
|
||||||
|
}
|
||||||
|
|
|
@ -1029,8 +1029,10 @@ type InviteMemberReport struct {
|
||||||
InviteUpgradePlatinumToBlackCount uint32 `json:"invite_upgrade_platinum_to_black_count" gorm:"default:0"` // 升级:白金->黑金数量(干预)
|
InviteUpgradePlatinumToBlackCount uint32 `json:"invite_upgrade_platinum_to_black_count" gorm:"default:0"` // 升级:白金->黑金数量(干预)
|
||||||
|
|
||||||
// invite_member_report
|
// invite_member_report
|
||||||
User *UserInfo `json:"user" gorm:"-"`
|
SystemUser *SysUser `json:"system_user" gorm:"-"` // 系统用户
|
||||||
Store *Store `json:"store" gorm:"-"` // 门店
|
//User *UserInfo `json:"user" gorm:"-"` //
|
||||||
|
//Store *Store `json:"store" gorm:"-"` // 门店
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type UserInviteListReq struct {
|
type UserInviteListReq struct {
|
||||||
|
@ -1308,6 +1310,7 @@ type UserInviteRecord struct {
|
||||||
|
|
||||||
ToUid uint32 `json:"to_uid"` // 用户ID
|
ToUid uint32 `json:"to_uid"` // 用户ID
|
||||||
FromUid uint32 `json:"from_uid"` // 邀请人ID
|
FromUid uint32 `json:"from_uid"` // 邀请人ID
|
||||||
|
StoreId uint64 `json:"store_id"` // 门店id 邀请用户门店
|
||||||
Action uint32 `json:"action"` // 1-未激活 2-激活邀请
|
Action uint32 `json:"action"` // 1-未激活 2-激活邀请
|
||||||
SpendType uint32 `json:"spend_type"` // 1-未开通 2-开通会员 3-续费 4-升级
|
SpendType uint32 `json:"spend_type"` // 1-未开通 2-开通会员 3-续费 4-升级
|
||||||
MemberLevel uint32 `json:"member_level"` // 会员等级 0-未开通 1-普通 2-黄金 3-短期 4-白金 5-黑金
|
MemberLevel uint32 `json:"member_level"` // 会员等级 0-未开通 1-普通 2-黄金 3-短期 4-白金 5-黑金
|
||||||
|
@ -1442,11 +1445,12 @@ func (m *NewUserInviteRecordReq) NewList() (*UserInviteRecordListResp, error) {
|
||||||
resp := new(UserInviteRecordListResp)
|
resp := new(UserInviteRecordListResp)
|
||||||
var records []struct {
|
var records []struct {
|
||||||
UserInviteRecord
|
UserInviteRecord
|
||||||
StoreId uint32
|
StoreId uint32
|
||||||
InviteUserName string
|
InviteUserName string
|
||||||
UserTel string
|
UserTel string
|
||||||
CreateTime time.Time
|
CreateTime time.Time
|
||||||
MemberExpire time.Time
|
MemberExpire time.Time
|
||||||
|
UserMemberLevel uint32
|
||||||
}
|
}
|
||||||
err := UpdateUserInviteRecordRenewHide()
|
err := UpdateUserInviteRecordRenewHide()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1479,14 +1483,14 @@ func (m *NewUserInviteRecordReq) NewList() (*UserInviteRecordListResp, error) {
|
||||||
|
|
||||||
qs := orm.Eloquent.Table("user_invite_record").Where("action=2")
|
qs := orm.Eloquent.Table("user_invite_record").Where("action=2")
|
||||||
countQuery := orm.Eloquent.Table("user_invite_record").Where("action=2").
|
countQuery := orm.Eloquent.Table("user_invite_record").Where("action=2").
|
||||||
Select("user_invite_record.*, B1.store_id, B1.Shop_assistant_name AS InviteUserName, " +
|
Select("user_invite_record.*, B1.nick_name AS InviteUserName, " +
|
||||||
"B2.tel AS UserTel, B2.created_at AS CreateTime, B2.member_expire AS MemberExpire").
|
"B2.tel AS UserTel, B2.created_at AS CreateTime, B2.member_expire AS MemberExpire, B2.member_level AS UserMemberLevel").
|
||||||
Joins("JOIN user B1 ON user_invite_record.from_uid = B1.uid").
|
Joins("JOIN sys_user B1 ON user_invite_record.from_uid = B1.uid").
|
||||||
Joins("JOIN user B2 ON user_invite_record.to_uid = B2.uid")
|
Joins("JOIN user B2 ON user_invite_record.to_uid = B2.uid")
|
||||||
|
|
||||||
if m.StoreId != 0 {
|
if m.StoreId != 0 {
|
||||||
qs = qs.Where("B1.store_id=?", m.StoreId)
|
qs = qs.Where("store_id=?", m.StoreId)
|
||||||
countQuery = countQuery.Where("B1.store_id=?", m.StoreId)
|
countQuery = countQuery.Where("store_id=?", m.StoreId)
|
||||||
}
|
}
|
||||||
if m.InviteUserName != "" {
|
if m.InviteUserName != "" {
|
||||||
qs = qs.Where("B1.Shop_assistant_name=?", m.InviteUserName)
|
qs = qs.Where("B1.Shop_assistant_name=?", m.InviteUserName)
|
||||||
|
@ -1662,8 +1666,8 @@ func (m *NewUserInviteRecordReq) NewList() (*UserInviteRecordListResp, error) {
|
||||||
countQuery = countQuery.Where("action_time < ?", m.RecordEndTime)
|
countQuery = countQuery.Where("action_time < ?", m.RecordEndTime)
|
||||||
}
|
}
|
||||||
if m.MemberLevel != 0 {
|
if m.MemberLevel != 0 {
|
||||||
qs = qs.Where("user_invite_record.member_level = ?", m.MemberLevel)
|
qs = qs.Where("user.member_level = ?", m.MemberLevel)
|
||||||
countQuery = countQuery.Where("user_invite_record.member_level = ?", m.MemberLevel)
|
countQuery = countQuery.Where("user.member_level = ?", m.MemberLevel)
|
||||||
}
|
}
|
||||||
|
|
||||||
var count int64
|
var count int64
|
||||||
|
@ -1674,9 +1678,9 @@ func (m *NewUserInviteRecordReq) NewList() (*UserInviteRecordListResp, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if m.IsExport == 1 { // 导出excel
|
if m.IsExport == 1 { // 导出excel
|
||||||
err = qs.Select("user_invite_record.*, B1.store_id, B1.Shop_assistant_name AS InviteUserName, " +
|
err = qs.Select("user_invite_record.*, B1.nick_name AS InviteUserName, " +
|
||||||
"B2.tel AS UserTel, B2.created_at AS CreateTime, B2.member_expire AS MemberExpire").
|
"B2.tel AS UserTel, B2.created_at AS CreateTime, B2.member_expire AS MemberExpire, B2.member_level AS UserMemberLevel").
|
||||||
Joins("JOIN user B1 ON user_invite_record.from_uid = B1.uid").
|
Joins("JOIN sys_user B1 ON user_invite_record.from_uid = B1.uid").
|
||||||
Joins("JOIN user B2 ON user_invite_record.to_uid = B2.uid").
|
Joins("JOIN user B2 ON user_invite_record.to_uid = B2.uid").
|
||||||
Order("action_time DESC").
|
Order("action_time DESC").
|
||||||
Find(&records).Error
|
Find(&records).Error
|
||||||
|
@ -1685,9 +1689,9 @@ func (m *NewUserInviteRecordReq) NewList() (*UserInviteRecordListResp, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
err = qs.Select("user_invite_record.*, B1.store_id, B1.Shop_assistant_name AS InviteUserName, " +
|
err = qs.Select("user_invite_record.*, B1.nick_name AS InviteUserName, " +
|
||||||
"B2.tel AS UserTel, B2.created_at AS CreateTime, B2.member_expire AS MemberExpire").
|
"B2.tel AS UserTel, B2.created_at AS CreateTime, B2.member_expire AS MemberExpire, B2.member_level AS UserMemberLevel").
|
||||||
Joins("JOIN user B1 ON user_invite_record.from_uid = B1.uid").
|
Joins("JOIN sys_user B1 ON user_invite_record.from_uid = B1.uid").
|
||||||
Joins("JOIN user B2 ON user_invite_record.to_uid = B2.uid").
|
Joins("JOIN user B2 ON user_invite_record.to_uid = B2.uid").
|
||||||
Order("action_time DESC").
|
Order("action_time DESC").
|
||||||
Offset(page * pageSize).
|
Offset(page * pageSize).
|
||||||
|
@ -1711,7 +1715,7 @@ func (m *NewUserInviteRecordReq) NewList() (*UserInviteRecordListResp, error) {
|
||||||
CreateTime: item.CreateTime,
|
CreateTime: item.CreateTime,
|
||||||
RecordType: uint32(CalculateMemberType(item.SpendType, item.RenewHide, item.MemberGenre, item.MemberLevel)),
|
RecordType: uint32(CalculateMemberType(item.SpendType, item.RenewHide, item.MemberGenre, item.MemberLevel)),
|
||||||
RecordTime: item.ActionTime,
|
RecordTime: item.ActionTime,
|
||||||
MemberLevel: item.MemberLevel,
|
MemberLevel: item.UserMemberLevel,
|
||||||
MemberExpire: item.MemberExpire,
|
MemberExpire: item.MemberExpire,
|
||||||
}
|
}
|
||||||
listData = append(listData, data)
|
listData = append(listData, data)
|
||||||
|
@ -1942,6 +1946,7 @@ func CalculateMemberType(spendType, renewHide, memberGenre, memberLevel uint32)
|
||||||
return Unknown
|
return Unknown
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UpdateUserInviteRecordRenewHide 更新用户邀请记录:如果不是店员干预的续费用户,则更新为1-自动续费
|
||||||
func UpdateUserInviteRecordRenewHide() error {
|
func UpdateUserInviteRecordRenewHide() error {
|
||||||
err := orm.Eloquent.Exec("UPDATE user_invite_record SET renew_hide=1 WHERE spend_type=3 AND scan=0 AND renew_hide!=1;").Error
|
err := orm.Eloquent.Exec("UPDATE user_invite_record SET renew_hide=1 WHERE spend_type=3 AND scan=0 AND renew_hide!=1;").Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -2737,7 +2742,8 @@ func CreateInviteMemberReport() {
|
||||||
|
|
||||||
func (m *CooperativeBusiness) InviteMemberReport() {
|
func (m *CooperativeBusiness) InviteMemberReport() {
|
||||||
var users []UserInfo
|
var users []UserInfo
|
||||||
err := orm.Eloquent.Table("user").Where("cooperative_business_id=?", m.ID).Where("user_type=2").Find(&users).Error
|
err := orm.Eloquent.Table("user").Where("cooperative_business_id=?", m.ID).
|
||||||
|
Where("user_type=?", UserTypeShopAssistant).Find(&users).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("cooperative err:", logger.Field("err", err))
|
logger.Error("cooperative err:", logger.Field("err", err))
|
||||||
return
|
return
|
||||||
|
@ -2839,15 +2845,16 @@ func GetSysUser(suid interface{}) (SysUser, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
type AssistantInviteMemberReportReq struct {
|
type AssistantInviteMemberReportReq struct {
|
||||||
CooperativeBusinessId uint32 `json:"cooperative_business_id"` // 合作商id
|
RoleId []uint32 `json:"roleId"` // 角色id
|
||||||
StoreId uint32 `json:"store_id"` // 门店id
|
CooperativeBusinessId uint32 `json:"cooperative_business_id"` // 合作商id
|
||||||
Uid uint32 `json:"uid"` // 店员小程序id
|
StoreId uint32 `json:"store_id"` // 门店id
|
||||||
InviteName string `json:"invite_name"` // 邀请人昵称
|
Uid uint32 `json:"uid"` // 店员小程序id
|
||||||
Date string `json:"date"` // 日期
|
InviteName string `json:"invite_name"` // 邀请人昵称
|
||||||
PageIndex int `json:"pageIndex"` // 页码
|
Date string `json:"date"` // 日期
|
||||||
PageSize int `json:"pageSize"` // 每页数量
|
PageIndex int `json:"pageIndex"` // 页码
|
||||||
IsExport uint32 `json:"is_export"` // 1-导出
|
PageSize int `json:"pageSize"` // 每页数量
|
||||||
SysUser SysUser `json:"sys_user"` //
|
IsExport uint32 `json:"is_export"` // 1-导出
|
||||||
|
SysUser SysUser `json:"sys_user"` //
|
||||||
}
|
}
|
||||||
|
|
||||||
type AssistantInviteMemberReportListResp struct {
|
type AssistantInviteMemberReportListResp struct {
|
||||||
|
@ -2861,28 +2868,41 @@ type AssistantInviteMemberReportListResp struct {
|
||||||
func (m *AssistantInviteMemberReportReq) List() (*AssistantInviteMemberReportListResp, error) {
|
func (m *AssistantInviteMemberReportReq) List() (*AssistantInviteMemberReportListResp, error) {
|
||||||
resp := new(AssistantInviteMemberReportListResp)
|
resp := new(AssistantInviteMemberReportListResp)
|
||||||
var memberReport []InviteMemberReport
|
var memberReport []InviteMemberReport
|
||||||
var users []UserInfo
|
var users []SysUser
|
||||||
err := orm.Eloquent.Table("user").Where("user_type=2").Find(&users).Error
|
us := orm.Eloquent.Table("sys_user").Where("uid != 0")
|
||||||
|
if len(m.RoleId) != 0 {
|
||||||
|
us = us.Where("role_id in (?)", m.RoleId)
|
||||||
|
}
|
||||||
|
err := us.Find(&users).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("err:", logger.Field("err", err))
|
logger.Error("err:", logger.Field("err", err))
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
uids := make(map[string]uint32, 0)
|
ids := make(map[string]uint32, 0)
|
||||||
|
sysUserMap := make(map[uint32]*SysUser, 0)
|
||||||
|
var uidList []uint32
|
||||||
for i, _ := range users {
|
for i, _ := range users {
|
||||||
uids[users[i].ShopAssistantName] = users[i].Uid
|
ids[users[i].NickName] = users[i].Uid
|
||||||
|
uidList = append(uidList, users[i].Uid)
|
||||||
|
sysUserMap[users[i].Uid] = &users[i]
|
||||||
}
|
}
|
||||||
|
|
||||||
qs := orm.Eloquent.Table("invite_member_report")
|
qs := orm.Eloquent.Table("invite_member_report")
|
||||||
|
if len(uidList) != 0 {
|
||||||
|
qs = qs.Where("uid in (?)", uidList)
|
||||||
|
}
|
||||||
|
|
||||||
if m.SysUser.UserId != 1 {
|
if m.SysUser.UserId != 1 {
|
||||||
qs = qs.Where("cooperative_business_id=?", m.SysUser.CooperativeBusinessId)
|
qs = qs.Where("cooperative_business_id=?", m.SysUser.CooperativeBusinessId)
|
||||||
} else {
|
} else {
|
||||||
qs = qs.Where("cooperative_business_id=?", m.CooperativeBusinessId)
|
qs = qs.Where("cooperative_business_id=?", m.CooperativeBusinessId)
|
||||||
}
|
}
|
||||||
//if len(uids) > 0 {
|
//if len(ids) > 0 {
|
||||||
// qs = qs.Where("uid NOT IN (?)", uids)
|
// qs = qs.Where("uid NOT IN (?)", ids)
|
||||||
//}
|
//}
|
||||||
|
|
||||||
if m.InviteName != "" {
|
if m.InviteName != "" {
|
||||||
m.Uid = uids[m.InviteName]
|
m.Uid = ids[m.InviteName]
|
||||||
if m.Uid == 0 {
|
if m.Uid == 0 {
|
||||||
qs = qs.Where("uid=?", m.Uid)
|
qs = qs.Where("uid=?", m.Uid)
|
||||||
}
|
}
|
||||||
|
@ -2926,25 +2946,21 @@ func (m *AssistantInviteMemberReportReq) List() (*AssistantInviteMemberReportLis
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//assistant := GetUserByUid(m.Uid)
|
for i, item := range memberReport {
|
||||||
//cooperative := new(CooperativeBusiness)
|
memberReport[i].SystemUser = sysUserMap[item.Uid]
|
||||||
//cooperative.ID = assistant.CooperativeBusinessId
|
|
||||||
//cooperative.SetAssistantMemberDeductConfig(uint32(assistant.StoreId))
|
storeInfo, _ := GetUserEffectiveStore(item.Uid)
|
||||||
//fmt.Println("CooperativeBusinessId:", assistant.CooperativeBusinessId, assistant.StoreId)
|
memberReport[i].SystemUser.StoreList = storeInfo
|
||||||
//fmt.Println("CooperativeAssistantMemberDeduct:", cooperative.CooperativeAssistantMemberDeduct)
|
if len(storeInfo) != 0 {
|
||||||
//if len(memberReport) > 0 {
|
memberReport[i].StoreId = uint32(storeInfo[0].StoreID)
|
||||||
// memberReport[len(memberReport)-1].GoldDeduct = cooperative.CooperativeAssistantMemberDeduct.GoldDeduct
|
}
|
||||||
// memberReport[len(memberReport)-1].PlatinumDeduct = cooperative.CooperativeAssistantMemberDeduct.PlatinumDeduct
|
|
||||||
// memberReport[len(memberReport)-1].BlackGoldDeduct = cooperative.CooperativeAssistantMemberDeduct.BlackGoldDeduct
|
memberReport[i].CooperativeBusinessId = sysUserMap[item.Uid].CooperativeBusinessId
|
||||||
//
|
memberReport[i].CooperativeName = sysUserMap[item.Uid].CooperativeName
|
||||||
// report := memberReport[len(memberReport)-1]
|
}
|
||||||
// fmt.Println("report:", report)
|
|
||||||
// memberReport[len(memberReport)-1].DeductAmount += report.GoldCount * report.GoldDeduct
|
//memberReport = InviteMemberReportListSetUser(memberReport)
|
||||||
// memberReport[len(memberReport)-1].DeductAmount += report.PlatinumCount * report.PlatinumDeduct
|
//memberReport = InviteMemberReportListSetStore(memberReport)
|
||||||
// memberReport[len(memberReport)-1].DeductAmount += report.BlackGoldCount * report.BlackGoldDeduct
|
|
||||||
//}
|
|
||||||
memberReport = InviteMemberReportListSetUser(memberReport)
|
|
||||||
memberReport = InviteMemberReportListSetStore(memberReport)
|
|
||||||
|
|
||||||
if m.IsExport == 1 {
|
if m.IsExport == 1 {
|
||||||
fileName, err := inviteMemberReport(memberReport)
|
fileName, err := inviteMemberReport(memberReport)
|
||||||
|
@ -3005,12 +3021,17 @@ func inviteMemberReport(list []InviteMemberReport) (string, error) {
|
||||||
|
|
||||||
for i := 0; i < len(list); i++ {
|
for i := 0; i < len(list); i++ {
|
||||||
storeName := ""
|
storeName := ""
|
||||||
if list[i].Store != nil {
|
if list[i].SystemUser.StoreList != nil {
|
||||||
storeName = list[i].Store.Name
|
for _, item := range list[i].SystemUser.StoreList {
|
||||||
|
if storeName != "" {
|
||||||
|
storeName += ","
|
||||||
|
}
|
||||||
|
storeName += item.StoreName
|
||||||
|
}
|
||||||
}
|
}
|
||||||
shopAssistantName := ""
|
shopAssistantName := ""
|
||||||
if list[i].User != nil {
|
if list[i].SystemUser != nil {
|
||||||
shopAssistantName = list[i].User.ShopAssistantName
|
shopAssistantName = list[i].SystemUser.NickName
|
||||||
}
|
}
|
||||||
|
|
||||||
row = []interface{}{
|
row = []interface{}{
|
||||||
|
@ -3100,57 +3121,57 @@ func inviteMemberReport(list []InviteMemberReport) (string, error) {
|
||||||
return url + fileName, nil
|
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 {
|
||||||
ids = append(ids, list[i].Uid)
|
// ids = append(ids, list[i].Uid)
|
||||||
}
|
// }
|
||||||
if len(ids) == 0 {
|
// if len(ids) == 0 {
|
||||||
return list
|
// return list
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
infoMap, err := GetUserInfoMap(ids)
|
// infoMap, err := GetUserInfoMap(ids)
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
logger.Error("user info map err:", logger.Field("err", err))
|
// logger.Error("user info map err:", logger.Field("err", err))
|
||||||
return list
|
// return list
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
for i, _ := range list {
|
// for i, _ := range list {
|
||||||
v, ok := infoMap[list[i].Uid]
|
// v, ok := infoMap[list[i].Uid]
|
||||||
if ok {
|
// if ok {
|
||||||
list[i].User = &v
|
// list[i].User = &v
|
||||||
}
|
// }
|
||||||
fmt.Println("UserInfo:", v)
|
// fmt.Println("UserInfo:", v)
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
return list
|
// return list
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
func InviteMemberReportListSetStore(list []InviteMemberReport) []InviteMemberReport {
|
//func InviteMemberReportListSetStore(list []InviteMemberReport) []InviteMemberReport {
|
||||||
ids := make([]uint32, 0, len(list))
|
// ids := make([]uint32, 0, len(list))
|
||||||
for i, _ := range list {
|
// for i, _ := range list {
|
||||||
ids = append(ids, list[i].StoreId)
|
// ids = append(ids, list[i].StoreId)
|
||||||
}
|
// }
|
||||||
if len(ids) == 0 {
|
// if len(ids) == 0 {
|
||||||
return list
|
// return list
|
||||||
}
|
// }
|
||||||
storeMap := GetStoreMapByIds(ids)
|
// storeMap := GetStoreMapByIds(ids)
|
||||||
//infoMap, err := GetUserInfoMap(ids)
|
// //infoMap, err := GetUserInfoMap(ids)
|
||||||
//if err != nil {
|
// //if err != nil {
|
||||||
// logger.Error("user info map err:",logger.Field("err",err))
|
// // logger.Error("user info map err:",logger.Field("err",err))
|
||||||
// return list
|
// // return list
|
||||||
//}
|
// //}
|
||||||
|
//
|
||||||
for i, _ := range list {
|
// for i, _ := range list {
|
||||||
v, ok := storeMap[uint64(list[i].StoreId)]
|
// v, ok := storeMap[uint64(list[i].StoreId)]
|
||||||
if ok {
|
// if ok {
|
||||||
list[i].Store = v
|
// list[i].Store = v
|
||||||
}
|
// }
|
||||||
fmt.Println("UserInfo:", v)
|
// fmt.Println("UserInfo:", v)
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
return list
|
// return list
|
||||||
}
|
//}
|
||||||
|
|
||||||
func GetCooperativeBusinessId(c *gin.Context) (uint32, error) {
|
func GetCooperativeBusinessId(c *gin.Context) (uint32, error) {
|
||||||
data, _ := c.Get(jwtauth.JwtPayloadKey)
|
data, _ := c.Get(jwtauth.JwtPayloadKey)
|
||||||
|
|
62
docs/docs.go
62
docs/docs.go
|
@ -6345,6 +6345,13 @@ const docTemplate = `{
|
||||||
"description": "每页数量",
|
"description": "每页数量",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"roleId": {
|
||||||
|
"description": "角色id",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
},
|
||||||
"store_id": {
|
"store_id": {
|
||||||
"description": "门店id",
|
"description": "门店id",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -7967,6 +7974,14 @@ const docTemplate = `{
|
||||||
"description": "金额(采购价)",
|
"description": "金额(采购价)",
|
||||||
"type": "number"
|
"type": "number"
|
||||||
},
|
},
|
||||||
|
"category_id": {
|
||||||
|
"description": "分类id",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"category_name": {
|
||||||
|
"description": "分类名称",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"commodity_id": {
|
"commodity_id": {
|
||||||
"description": "商品id",
|
"description": "商品id",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -8690,7 +8705,7 @@ const docTemplate = `{
|
||||||
},
|
},
|
||||||
"retail_price": {
|
"retail_price": {
|
||||||
"description": "指导零售价",
|
"description": "指导零售价",
|
||||||
"type": "integer"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"sale_discount": {
|
"sale_discount": {
|
||||||
"description": "零售优惠",
|
"description": "零售优惠",
|
||||||
|
@ -8698,7 +8713,7 @@ const docTemplate = `{
|
||||||
},
|
},
|
||||||
"sale_price": {
|
"sale_price": {
|
||||||
"description": "零售价",
|
"description": "零售价",
|
||||||
"type": "integer"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"sales_profit": {
|
"sales_profit": {
|
||||||
"description": "销售毛利:实际零售价-采购单价;如果为退货订单,则为实际退货价-采购单价",
|
"description": "销售毛利:实际零售价-采购单价;如果为退货订单,则为实际退货价-采购单价",
|
||||||
|
@ -8737,8 +8752,7 @@ const docTemplate = `{
|
||||||
"store_id",
|
"store_id",
|
||||||
"store_name",
|
"store_name",
|
||||||
"tel",
|
"tel",
|
||||||
"total_count",
|
"total_count"
|
||||||
"total_retail_price"
|
|
||||||
],
|
],
|
||||||
"properties": {
|
"properties": {
|
||||||
"bill_sn": {
|
"bill_sn": {
|
||||||
|
@ -8795,7 +8809,7 @@ const docTemplate = `{
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"total_retail_price": {
|
"total_retail_price": {
|
||||||
"description": "订单总指导零售价",
|
"description": "订单总指导零售价:如果是赠送商品,金额可以为0",
|
||||||
"type": "number"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"vm_count": {
|
"vm_count": {
|
||||||
|
@ -12258,18 +12272,18 @@ const docTemplate = `{
|
||||||
"description": "续费白金会员数量(自动)",
|
"description": "续费白金会员数量(自动)",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"store": {
|
|
||||||
"description": "门店",
|
|
||||||
"allOf": [
|
|
||||||
{
|
|
||||||
"$ref": "#/definitions/models.Store"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"store_id": {
|
"store_id": {
|
||||||
"description": "门店id",
|
"description": "门店id",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"system_user": {
|
||||||
|
"description": "invite_member_report",
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/definitions/models.SysUser"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"uid": {
|
"uid": {
|
||||||
"description": "店员uid",
|
"description": "店员uid",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -12285,14 +12299,6 @@ const docTemplate = `{
|
||||||
"upgrade_platinum_to_black_count": {
|
"upgrade_platinum_to_black_count": {
|
||||||
"description": "升级:白金-\u003e黑金数量(自动)",
|
"description": "升级:白金-\u003e黑金数量(自动)",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
|
||||||
"user": {
|
|
||||||
"description": "invite_member_report",
|
|
||||||
"allOf": [
|
|
||||||
{
|
|
||||||
"$ref": "#/definitions/models.UserInfo"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -13428,6 +13434,10 @@ const docTemplate = `{
|
||||||
"description": "退货金额",
|
"description": "退货金额",
|
||||||
"type": "number"
|
"type": "number"
|
||||||
},
|
},
|
||||||
|
"serial_number": {
|
||||||
|
"description": "入库编号",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"store_id": {
|
"store_id": {
|
||||||
"description": "门店id",
|
"description": "门店id",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -13956,7 +13966,7 @@ const docTemplate = `{
|
||||||
},
|
},
|
||||||
"retail_price": {
|
"retail_price": {
|
||||||
"description": "指导零售价",
|
"description": "指导零售价",
|
||||||
"type": "integer"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"sale_discount": {
|
"sale_discount": {
|
||||||
"description": "零售优惠",
|
"description": "零售优惠",
|
||||||
|
@ -13964,7 +13974,7 @@ const docTemplate = `{
|
||||||
},
|
},
|
||||||
"sale_price": {
|
"sale_price": {
|
||||||
"description": "零售价",
|
"description": "零售价",
|
||||||
"type": "integer"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"sales_profit": {
|
"sales_profit": {
|
||||||
"description": "销售毛利",
|
"description": "销售毛利",
|
||||||
|
@ -13980,7 +13990,7 @@ const docTemplate = `{
|
||||||
},
|
},
|
||||||
"staff_price": {
|
"staff_price": {
|
||||||
"description": "员工成本价",
|
"description": "员工成本价",
|
||||||
"type": "integer"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"staff_profit": {
|
"staff_profit": {
|
||||||
"description": "员工毛利",
|
"description": "员工毛利",
|
||||||
|
@ -14028,7 +14038,7 @@ const docTemplate = `{
|
||||||
},
|
},
|
||||||
"wholesale_price": {
|
"wholesale_price": {
|
||||||
"description": "采购单价",
|
"description": "采购单价",
|
||||||
"type": "integer"
|
"type": "number"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -15210,7 +15220,7 @@ const docTemplate = `{
|
||||||
},
|
},
|
||||||
"order_amount": {
|
"order_amount": {
|
||||||
"description": "消费金额",
|
"description": "消费金额",
|
||||||
"type": "integer"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"order_cards": {
|
"order_cards": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
|
|
|
@ -6334,6 +6334,13 @@
|
||||||
"description": "每页数量",
|
"description": "每页数量",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"roleId": {
|
||||||
|
"description": "角色id",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
},
|
||||||
"store_id": {
|
"store_id": {
|
||||||
"description": "门店id",
|
"description": "门店id",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -7956,6 +7963,14 @@
|
||||||
"description": "金额(采购价)",
|
"description": "金额(采购价)",
|
||||||
"type": "number"
|
"type": "number"
|
||||||
},
|
},
|
||||||
|
"category_id": {
|
||||||
|
"description": "分类id",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"category_name": {
|
||||||
|
"description": "分类名称",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"commodity_id": {
|
"commodity_id": {
|
||||||
"description": "商品id",
|
"description": "商品id",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -8679,7 +8694,7 @@
|
||||||
},
|
},
|
||||||
"retail_price": {
|
"retail_price": {
|
||||||
"description": "指导零售价",
|
"description": "指导零售价",
|
||||||
"type": "integer"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"sale_discount": {
|
"sale_discount": {
|
||||||
"description": "零售优惠",
|
"description": "零售优惠",
|
||||||
|
@ -8687,7 +8702,7 @@
|
||||||
},
|
},
|
||||||
"sale_price": {
|
"sale_price": {
|
||||||
"description": "零售价",
|
"description": "零售价",
|
||||||
"type": "integer"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"sales_profit": {
|
"sales_profit": {
|
||||||
"description": "销售毛利:实际零售价-采购单价;如果为退货订单,则为实际退货价-采购单价",
|
"description": "销售毛利:实际零售价-采购单价;如果为退货订单,则为实际退货价-采购单价",
|
||||||
|
@ -8726,8 +8741,7 @@
|
||||||
"store_id",
|
"store_id",
|
||||||
"store_name",
|
"store_name",
|
||||||
"tel",
|
"tel",
|
||||||
"total_count",
|
"total_count"
|
||||||
"total_retail_price"
|
|
||||||
],
|
],
|
||||||
"properties": {
|
"properties": {
|
||||||
"bill_sn": {
|
"bill_sn": {
|
||||||
|
@ -8784,7 +8798,7 @@
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"total_retail_price": {
|
"total_retail_price": {
|
||||||
"description": "订单总指导零售价",
|
"description": "订单总指导零售价:如果是赠送商品,金额可以为0",
|
||||||
"type": "number"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"vm_count": {
|
"vm_count": {
|
||||||
|
@ -12247,18 +12261,18 @@
|
||||||
"description": "续费白金会员数量(自动)",
|
"description": "续费白金会员数量(自动)",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"store": {
|
|
||||||
"description": "门店",
|
|
||||||
"allOf": [
|
|
||||||
{
|
|
||||||
"$ref": "#/definitions/models.Store"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"store_id": {
|
"store_id": {
|
||||||
"description": "门店id",
|
"description": "门店id",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"system_user": {
|
||||||
|
"description": "invite_member_report",
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/definitions/models.SysUser"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"uid": {
|
"uid": {
|
||||||
"description": "店员uid",
|
"description": "店员uid",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -12274,14 +12288,6 @@
|
||||||
"upgrade_platinum_to_black_count": {
|
"upgrade_platinum_to_black_count": {
|
||||||
"description": "升级:白金-\u003e黑金数量(自动)",
|
"description": "升级:白金-\u003e黑金数量(自动)",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
|
||||||
"user": {
|
|
||||||
"description": "invite_member_report",
|
|
||||||
"allOf": [
|
|
||||||
{
|
|
||||||
"$ref": "#/definitions/models.UserInfo"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -13417,6 +13423,10 @@
|
||||||
"description": "退货金额",
|
"description": "退货金额",
|
||||||
"type": "number"
|
"type": "number"
|
||||||
},
|
},
|
||||||
|
"serial_number": {
|
||||||
|
"description": "入库编号",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"store_id": {
|
"store_id": {
|
||||||
"description": "门店id",
|
"description": "门店id",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -13945,7 +13955,7 @@
|
||||||
},
|
},
|
||||||
"retail_price": {
|
"retail_price": {
|
||||||
"description": "指导零售价",
|
"description": "指导零售价",
|
||||||
"type": "integer"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"sale_discount": {
|
"sale_discount": {
|
||||||
"description": "零售优惠",
|
"description": "零售优惠",
|
||||||
|
@ -13953,7 +13963,7 @@
|
||||||
},
|
},
|
||||||
"sale_price": {
|
"sale_price": {
|
||||||
"description": "零售价",
|
"description": "零售价",
|
||||||
"type": "integer"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"sales_profit": {
|
"sales_profit": {
|
||||||
"description": "销售毛利",
|
"description": "销售毛利",
|
||||||
|
@ -13969,7 +13979,7 @@
|
||||||
},
|
},
|
||||||
"staff_price": {
|
"staff_price": {
|
||||||
"description": "员工成本价",
|
"description": "员工成本价",
|
||||||
"type": "integer"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"staff_profit": {
|
"staff_profit": {
|
||||||
"description": "员工毛利",
|
"description": "员工毛利",
|
||||||
|
@ -14017,7 +14027,7 @@
|
||||||
},
|
},
|
||||||
"wholesale_price": {
|
"wholesale_price": {
|
||||||
"description": "采购单价",
|
"description": "采购单价",
|
||||||
"type": "integer"
|
"type": "number"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -15199,7 +15209,7 @@
|
||||||
},
|
},
|
||||||
"order_amount": {
|
"order_amount": {
|
||||||
"description": "消费金额",
|
"description": "消费金额",
|
||||||
"type": "integer"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"order_cards": {
|
"order_cards": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
|
|
|
@ -324,6 +324,11 @@ definitions:
|
||||||
pageSize:
|
pageSize:
|
||||||
description: 每页数量
|
description: 每页数量
|
||||||
type: integer
|
type: integer
|
||||||
|
roleId:
|
||||||
|
description: 角色id
|
||||||
|
items:
|
||||||
|
type: integer
|
||||||
|
type: array
|
||||||
store_id:
|
store_id:
|
||||||
description: 门店id
|
description: 门店id
|
||||||
type: integer
|
type: integer
|
||||||
|
@ -1503,6 +1508,12 @@ definitions:
|
||||||
amount:
|
amount:
|
||||||
description: 金额(采购价)
|
description: 金额(采购价)
|
||||||
type: number
|
type: number
|
||||||
|
category_id:
|
||||||
|
description: 分类id
|
||||||
|
type: integer
|
||||||
|
category_name:
|
||||||
|
description: 分类名称
|
||||||
|
type: string
|
||||||
commodity_id:
|
commodity_id:
|
||||||
description: 商品id
|
description: 商品id
|
||||||
type: integer
|
type: integer
|
||||||
|
@ -2037,13 +2048,13 @@ definitions:
|
||||||
type: string
|
type: string
|
||||||
retail_price:
|
retail_price:
|
||||||
description: 指导零售价
|
description: 指导零售价
|
||||||
type: integer
|
type: number
|
||||||
sale_discount:
|
sale_discount:
|
||||||
description: 零售优惠
|
description: 零售优惠
|
||||||
type: number
|
type: number
|
||||||
sale_price:
|
sale_price:
|
||||||
description: 零售价
|
description: 零售价
|
||||||
type: integer
|
type: number
|
||||||
sales_profit:
|
sales_profit:
|
||||||
description: 销售毛利:实际零售价-采购单价;如果为退货订单,则为实际退货价-采购单价
|
description: 销售毛利:实际零售价-采购单价;如果为退货订单,则为实际退货价-采购单价
|
||||||
type: number
|
type: number
|
||||||
|
@ -2105,7 +2116,7 @@ definitions:
|
||||||
description: 订单商品数量
|
description: 订单商品数量
|
||||||
type: integer
|
type: integer
|
||||||
total_retail_price:
|
total_retail_price:
|
||||||
description: 订单总指导零售价
|
description: 订单总指导零售价:如果是赠送商品,金额可以为0
|
||||||
type: number
|
type: number
|
||||||
vm_count:
|
vm_count:
|
||||||
description: 使用会员积分
|
description: 使用会员积分
|
||||||
|
@ -2120,7 +2131,6 @@ definitions:
|
||||||
- store_name
|
- store_name
|
||||||
- tel
|
- tel
|
||||||
- total_count
|
- total_count
|
||||||
- total_retail_price
|
|
||||||
type: object
|
type: object
|
||||||
models.ErpOrderDeleteReq:
|
models.ErpOrderDeleteReq:
|
||||||
properties:
|
properties:
|
||||||
|
@ -4631,13 +4641,13 @@ definitions:
|
||||||
renewal_platinum_count:
|
renewal_platinum_count:
|
||||||
description: 续费白金会员数量(自动)
|
description: 续费白金会员数量(自动)
|
||||||
type: integer
|
type: integer
|
||||||
store:
|
|
||||||
allOf:
|
|
||||||
- $ref: '#/definitions/models.Store'
|
|
||||||
description: 门店
|
|
||||||
store_id:
|
store_id:
|
||||||
description: 门店id
|
description: 门店id
|
||||||
type: integer
|
type: integer
|
||||||
|
system_user:
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/definitions/models.SysUser'
|
||||||
|
description: invite_member_report
|
||||||
uid:
|
uid:
|
||||||
description: 店员uid
|
description: 店员uid
|
||||||
type: integer
|
type: integer
|
||||||
|
@ -4650,10 +4660,6 @@ definitions:
|
||||||
upgrade_platinum_to_black_count:
|
upgrade_platinum_to_black_count:
|
||||||
description: 升级:白金->黑金数量(自动)
|
description: 升级:白金->黑金数量(自动)
|
||||||
type: integer
|
type: integer
|
||||||
user:
|
|
||||||
allOf:
|
|
||||||
- $ref: '#/definitions/models.UserInfo'
|
|
||||||
description: invite_member_report
|
|
||||||
type: object
|
type: object
|
||||||
models.Login:
|
models.Login:
|
||||||
properties:
|
properties:
|
||||||
|
@ -5463,6 +5469,9 @@ definitions:
|
||||||
reject_amount:
|
reject_amount:
|
||||||
description: 退货金额
|
description: 退货金额
|
||||||
type: number
|
type: number
|
||||||
|
serial_number:
|
||||||
|
description: 入库编号
|
||||||
|
type: string
|
||||||
store_id:
|
store_id:
|
||||||
description: 门店id
|
description: 门店id
|
||||||
type: integer
|
type: integer
|
||||||
|
@ -5851,13 +5860,13 @@ definitions:
|
||||||
type: number
|
type: number
|
||||||
retail_price:
|
retail_price:
|
||||||
description: 指导零售价
|
description: 指导零售价
|
||||||
type: integer
|
type: number
|
||||||
sale_discount:
|
sale_discount:
|
||||||
description: 零售优惠
|
description: 零售优惠
|
||||||
type: number
|
type: number
|
||||||
sale_price:
|
sale_price:
|
||||||
description: 零售价
|
description: 零售价
|
||||||
type: integer
|
type: number
|
||||||
sales_profit:
|
sales_profit:
|
||||||
description: 销售毛利
|
description: 销售毛利
|
||||||
type: number
|
type: number
|
||||||
|
@ -5869,7 +5878,7 @@ definitions:
|
||||||
type: number
|
type: number
|
||||||
staff_price:
|
staff_price:
|
||||||
description: 员工成本价
|
description: 员工成本价
|
||||||
type: integer
|
type: number
|
||||||
staff_profit:
|
staff_profit:
|
||||||
description: 员工毛利
|
description: 员工毛利
|
||||||
type: number
|
type: number
|
||||||
|
@ -5905,7 +5914,7 @@ definitions:
|
||||||
type: number
|
type: number
|
||||||
wholesale_price:
|
wholesale_price:
|
||||||
description: 采购单价
|
description: 采购单价
|
||||||
type: integer
|
type: number
|
||||||
type: object
|
type: object
|
||||||
models.RetailMarginData:
|
models.RetailMarginData:
|
||||||
properties:
|
properties:
|
||||||
|
@ -6761,7 +6770,7 @@ definitions:
|
||||||
type: string
|
type: string
|
||||||
order_amount:
|
order_amount:
|
||||||
description: 消费金额
|
description: 消费金额
|
||||||
type: integer
|
type: number
|
||||||
order_cards:
|
order_cards:
|
||||||
items:
|
items:
|
||||||
$ref: '#/definitions/models.OrderCard'
|
$ref: '#/definitions/models.OrderCard'
|
||||||
|
|
Loading…
Reference in New Issue
Block a user