2023-01-06 02:03:56 +00:00
|
|
|
package controller
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
"github.com/codinl/go-logger"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"mh-server/lib/auth"
|
|
|
|
"mh-server/lib/status"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"mh-server/model"
|
|
|
|
)
|
|
|
|
|
|
|
|
func ErpOrderList(c *gin.Context) {
|
|
|
|
req := &model.ErpOrderListReq{}
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
logger.Error(err)
|
|
|
|
RespJson(c, status.BadRequest, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
resp, err := req.List()
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("erp commodity list err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
RespOK(c, resp)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
func ErpOrderCreate(c *gin.Context) {
|
|
|
|
req := struct {
|
|
|
|
//StoreId uint32 `json:"store_id"`
|
|
|
|
Cashiers []model.ErpCashier `json:"cashiers" binding:"required"`
|
|
|
|
Salesman1 uint32 `json:"salesman_1" binding:"required"`
|
|
|
|
Salesman2 uint32 `json:"salesman_2"`
|
|
|
|
RetailType string `json:"retail_type" binding:"required"`
|
|
|
|
Tel string `json:"tel" binding:"required"`
|
|
|
|
MemberType string `json:"member_type"` // 会员类型:
|
|
|
|
ErpOrderCommodities []model.ErpOrderCommodity `json:"erp_order_commodities"`
|
|
|
|
}{}
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
2023-02-22 06:25:46 +00:00
|
|
|
logger.Error("para err:", err)
|
2023-01-06 02:03:56 +00:00
|
|
|
RespJson(c, status.BadRequest, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if len(req.Cashiers) == 0 {
|
|
|
|
logger.Error("cashiers is nil")
|
|
|
|
RespJson(c, status.BadRequest, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if len(req.ErpOrderCommodities) == 0 {
|
|
|
|
logger.Error("commodities is nil")
|
|
|
|
RespJson(c, status.BadRequest, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
jCashier, err := json.Marshal(req.Cashiers)
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("cashiers marshal err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
uc := auth.GetCurrentUser(c)
|
|
|
|
if uc == nil {
|
|
|
|
logger.Error("uc is nil")
|
|
|
|
RespJson(c, status.Unauthorized, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2023-01-18 01:10:44 +00:00
|
|
|
//uc := &auth.UserClaims{Uid: 8588420}
|
2023-01-06 02:03:56 +00:00
|
|
|
assistant := model.GetUserByUid(uc.Uid)
|
|
|
|
if assistant.UserType != 2 {
|
|
|
|
logger.Error("not assistant")
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
store, err := model.GetStore(uint32(assistant.StoreId))
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("assistant store err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
erpOrder := &model.ErpOrder{
|
|
|
|
BillSn: model.NewErpBillSn(),
|
|
|
|
RetailType: req.RetailType,
|
|
|
|
Tel: req.Tel,
|
|
|
|
StoreId: uint32(assistant.StoreId),
|
|
|
|
StoreName: store.Name,
|
2023-01-18 01:10:44 +00:00
|
|
|
MakerId: assistant.Uid,
|
2023-01-06 02:03:56 +00:00
|
|
|
MakerName: assistant.ShopAssistantName,
|
|
|
|
AuditTime: time.Now(),
|
|
|
|
AuditorId: assistant.Uid,
|
|
|
|
AuditorName: assistant.ShopAssistantName,
|
|
|
|
CashierList: string(jCashier),
|
|
|
|
Salesman1: req.Salesman1,
|
|
|
|
Salesman2: req.Salesman2,
|
|
|
|
MemberType: req.MemberType,
|
|
|
|
State: model.ErpOrderStateUnAudit,
|
|
|
|
}
|
|
|
|
|
|
|
|
commodityMap := make(map[uint32]model.ErpCommodity)
|
|
|
|
if req.RetailType == model.RetailTypeSale {
|
|
|
|
commodityIds := make([]uint32, 0, len(req.ErpOrderCommodities))
|
|
|
|
for i, _ := range req.ErpOrderCommodities {
|
|
|
|
commodityIds = append(commodityIds, req.ErpOrderCommodities[i].ErpCommodityId)
|
|
|
|
}
|
|
|
|
var commodities []model.ErpCommodity
|
|
|
|
err = model.DB.Table("erp_commodity").Where("id IN (?)", commodityIds).Find(&commodities).Error
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("commodities err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
for i, _ := range commodities {
|
|
|
|
commodityMap[commodities[i].ID] = commodities[i]
|
|
|
|
}
|
|
|
|
|
|
|
|
model.SetUserInfo(req.Tel)
|
|
|
|
}
|
|
|
|
|
|
|
|
var orderCommodityMap map[uint32]model.ErpOrderCommodity
|
|
|
|
if req.RetailType == model.RetailTypeRejected {
|
|
|
|
ids := make([]uint32, 0, len(req.ErpOrderCommodities))
|
|
|
|
for i, _ := range req.ErpOrderCommodities {
|
|
|
|
ids = append(ids, req.ErpOrderCommodities[i].RejectedOrderCommodityId)
|
|
|
|
}
|
|
|
|
orderCommodityMap, err = model.GetErpOrderCommodityMap(ids)
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("order commodity map err:", err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
begin := model.DB.Begin()
|
|
|
|
err = begin.Create(erpOrder).Error
|
|
|
|
if err != nil {
|
|
|
|
begin.Rollback()
|
|
|
|
logger.Error("create erp order err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
for i, _ := range req.ErpOrderCommodities {
|
|
|
|
req.ErpOrderCommodities[i].ErpOrderId = erpOrder.ID
|
|
|
|
|
|
|
|
if req.RetailType == model.RetailTypeRejected {
|
|
|
|
v, ok := orderCommodityMap[req.ErpOrderCommodities[i].RejectedOrderCommodityId]
|
|
|
|
if ok {
|
|
|
|
v.RejectedPrice = req.ErpOrderCommodities[i].RejectedPrice
|
|
|
|
v.RejectedCount = req.ErpOrderCommodities[i].RejectedCount
|
|
|
|
v.RejectedAmount = v.RejectedCount * v.RejectedPrice
|
|
|
|
} else {
|
2023-01-18 01:10:44 +00:00
|
|
|
begin.Rollback()
|
2023-01-06 02:03:56 +00:00
|
|
|
logger.Error("rejected order commodity id is null")
|
|
|
|
return
|
|
|
|
}
|
|
|
|
v.ID = 0
|
|
|
|
req.ErpOrderCommodities[i] = v
|
|
|
|
// 添加库存 TODO
|
|
|
|
if req.ErpOrderCommodities[i].RejectedPrice > req.ErpOrderCommodities[i].RetailPrice {
|
2023-01-18 01:10:44 +00:00
|
|
|
begin.Rollback()
|
2023-01-06 02:03:56 +00:00
|
|
|
logger.Error("rejected price gt retail price ")
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if req.ErpOrderCommodities[i].RejectedCount > req.ErpOrderCommodities[i].Count {
|
2023-01-18 01:10:44 +00:00
|
|
|
begin.Rollback()
|
2023-01-06 02:03:56 +00:00
|
|
|
logger.Error("rejected count gt retail count ")
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
} else if req.RetailType == model.RetailTypeSale {
|
|
|
|
|
|
|
|
v, ok := commodityMap[req.ErpOrderCommodities[i].ErpCommodityId]
|
|
|
|
if ok {
|
|
|
|
req.ErpOrderCommodities[i].ErpCommodityName = v.Name
|
|
|
|
req.ErpOrderCommodities[i].ErpCategoryId = v.ErpCategoryId
|
|
|
|
req.ErpOrderCommodities[i].ErpCategoryName = v.ErpCategoryName
|
|
|
|
req.ErpOrderCommodities[i].RetailPrice = v.RetailPrice
|
|
|
|
//req.ErpOrderCommodities[i].MemberPrice = v.MemberPrice
|
|
|
|
}
|
|
|
|
if req.ErpOrderCommodities[i].PresentType == 2 {
|
|
|
|
req.ErpOrderCommodities[i].RetailPrice = 0
|
|
|
|
}
|
|
|
|
|
|
|
|
// 减库存 TODO
|
|
|
|
if erpOrder.MemberType == model.ErpOrderMemberTypeMember {
|
|
|
|
req.ErpOrderCommodities[i].Amount = req.ErpOrderCommodities[i].Count * req.ErpOrderCommodities[i].MemberPrice
|
|
|
|
} else {
|
|
|
|
req.ErpOrderCommodities[i].Amount = req.ErpOrderCommodities[i].Count * req.ErpOrderCommodities[i].RetailPrice
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
erpOrder.TotalAmount += req.ErpOrderCommodities[i].Amount
|
|
|
|
erpOrder.TotalCount += req.ErpOrderCommodities[i].Count
|
|
|
|
}
|
|
|
|
|
2023-01-18 01:10:44 +00:00
|
|
|
for _, commodity := range req.ErpOrderCommodities {
|
|
|
|
err = begin.Create(&commodity).Error
|
|
|
|
if err != nil {
|
|
|
|
begin.Rollback()
|
|
|
|
logger.Error("create err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
2023-01-06 02:03:56 +00:00
|
|
|
}
|
2023-01-18 01:10:44 +00:00
|
|
|
//err = begin.Create(orderCommodities).Error
|
|
|
|
//if err != nil {
|
|
|
|
// begin.Rollback()
|
|
|
|
// logger.Error("Create")
|
|
|
|
// RespJson(c, status.InternalServerError, nil)
|
|
|
|
// return
|
|
|
|
//}
|
2023-01-06 02:03:56 +00:00
|
|
|
err = begin.Commit().Error
|
|
|
|
if err != nil {
|
|
|
|
begin.Rollback()
|
|
|
|
logger.Error("commit err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
erpOrder.Commodities = req.ErpOrderCommodities
|
|
|
|
erpOrder.Cashiers = req.Cashiers
|
|
|
|
|
|
|
|
RespOK(c, erpOrder)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2023-02-22 06:25:46 +00:00
|
|
|
func ErpOrderModify(c *gin.Context) {
|
|
|
|
req := struct {
|
|
|
|
//StoreId uint32 `json:"store_id"`
|
|
|
|
Id uint32 `json:"id" binding:"required"`
|
|
|
|
Cashiers []model.ErpCashier `json:"cashiers" binding:"required"`
|
|
|
|
Salesman1 uint32 `json:"salesman_1" binding:"required"`
|
|
|
|
Salesman2 uint32 `json:"salesman_2"`
|
|
|
|
RetailType string `json:"retail_type" binding:"required"`
|
|
|
|
Tel string `json:"tel" binding:"required"`
|
|
|
|
MemberType string `json:"member_type"` // 会员类型:
|
|
|
|
ErpOrderCommodities []model.ErpOrderCommodity `json:"erp_order_commodities"`
|
|
|
|
}{}
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
logger.Error("para err:", err)
|
|
|
|
RespJson(c, status.BadRequest, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if len(req.Cashiers) == 0 {
|
|
|
|
logger.Error("cashiers is nil")
|
|
|
|
RespJson(c, status.BadRequest, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if len(req.ErpOrderCommodities) == 0 {
|
|
|
|
logger.Error("commodities is nil")
|
|
|
|
RespJson(c, status.BadRequest, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
jCashier, err := json.Marshal(req.Cashiers)
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("cashiers marshal err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
uc := auth.GetCurrentUser(c)
|
|
|
|
if uc == nil {
|
|
|
|
logger.Error("uc is nil")
|
|
|
|
RespJson(c, status.Unauthorized, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
//uc := &auth.UserClaims{Uid: 8588420}
|
|
|
|
assistant := model.GetUserByUid(uc.Uid)
|
|
|
|
if assistant.UserType != 2 {
|
|
|
|
logger.Error("not assistant")
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
store, err := model.GetStore(uint32(assistant.StoreId))
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("assistant store err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
var originErpOrder model.ErpOrder
|
|
|
|
err = model.DB.Table("erp_order").Where("id=?", req.Id).Find(&originErpOrder).Error
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("origin erp order err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
erpOrder := &model.ErpOrder{
|
|
|
|
BillSn: originErpOrder.BillSn,
|
|
|
|
RetailType: req.RetailType,
|
|
|
|
Tel: req.Tel,
|
|
|
|
StoreId: uint32(assistant.StoreId),
|
|
|
|
StoreName: store.Name,
|
|
|
|
MakerId: uint32(originErpOrder.MakerId),
|
|
|
|
MakerName: originErpOrder.MakerName,
|
|
|
|
CashierList: string(jCashier),
|
|
|
|
Salesman1: req.Salesman1,
|
|
|
|
Salesman2: req.Salesman2,
|
|
|
|
MemberType: req.MemberType,
|
|
|
|
State: model.ErpOrderStateUnAudit,
|
|
|
|
}
|
|
|
|
erpOrder.ID = req.Id
|
|
|
|
commodityMap := make(map[uint32]model.ErpCommodity)
|
|
|
|
if req.RetailType == model.RetailTypeSale {
|
|
|
|
commodityIds := make([]uint32, 0, len(req.ErpOrderCommodities))
|
|
|
|
for i, _ := range req.ErpOrderCommodities {
|
|
|
|
commodityIds = append(commodityIds, req.ErpOrderCommodities[i].ErpCommodityId)
|
|
|
|
}
|
|
|
|
var commodities []model.ErpCommodity
|
|
|
|
err = model.DB.Table("erp_commodity").Where("id IN (?)", commodityIds).Find(&commodities).Error
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("commodities err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
for i, _ := range commodities {
|
|
|
|
commodityMap[commodities[i].ID] = commodities[i]
|
|
|
|
}
|
|
|
|
|
|
|
|
model.SetUserInfo(req.Tel)
|
|
|
|
}
|
|
|
|
|
|
|
|
var orderCommodityMap map[uint32]model.ErpOrderCommodity
|
|
|
|
if req.RetailType == model.RetailTypeRejected {
|
|
|
|
ids := make([]uint32, 0, len(req.ErpOrderCommodities))
|
|
|
|
for i, _ := range req.ErpOrderCommodities {
|
|
|
|
ids = append(ids, req.ErpOrderCommodities[i].RejectedOrderCommodityId)
|
|
|
|
}
|
|
|
|
orderCommodityMap, err = model.GetErpOrderCommodityMap(ids)
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("order commodity map err:", err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
begin := model.DB.Begin()
|
|
|
|
err = begin.Table("erp_order_commodity").Where("erp_order_id=?", req.Id).Delete(&model.ErpOrderCommodity{}).Error
|
|
|
|
if err != nil {
|
|
|
|
begin.Rollback()
|
|
|
|
logger.Error("commodities err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
err = begin.Save(erpOrder).Error
|
|
|
|
if err != nil {
|
|
|
|
begin.Rollback()
|
|
|
|
logger.Error("create erp order err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
for i, _ := range req.ErpOrderCommodities {
|
|
|
|
req.ErpOrderCommodities[i].ErpOrderId = erpOrder.ID
|
|
|
|
|
|
|
|
if req.RetailType == model.RetailTypeRejected {
|
|
|
|
v, ok := orderCommodityMap[req.ErpOrderCommodities[i].RejectedOrderCommodityId]
|
|
|
|
if ok {
|
|
|
|
v.RejectedPrice = req.ErpOrderCommodities[i].RejectedPrice
|
|
|
|
v.RejectedCount = req.ErpOrderCommodities[i].RejectedCount
|
|
|
|
v.RejectedAmount = v.RejectedCount * v.RejectedPrice
|
|
|
|
} else {
|
|
|
|
logger.Error("rejected order commodity id is null")
|
|
|
|
return
|
|
|
|
}
|
|
|
|
v.ID = 0
|
|
|
|
req.ErpOrderCommodities[i] = v
|
|
|
|
// 添加库存 TODO
|
|
|
|
if req.ErpOrderCommodities[i].RejectedPrice > req.ErpOrderCommodities[i].RetailPrice {
|
|
|
|
logger.Error("rejected price gt retail price ")
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if req.ErpOrderCommodities[i].RejectedCount > req.ErpOrderCommodities[i].Count {
|
|
|
|
logger.Error("rejected count gt retail count ")
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
} else if req.RetailType == model.RetailTypeSale {
|
|
|
|
|
|
|
|
v, ok := commodityMap[req.ErpOrderCommodities[i].ErpCommodityId]
|
|
|
|
if ok {
|
|
|
|
req.ErpOrderCommodities[i].ErpCommodityName = v.Name
|
|
|
|
req.ErpOrderCommodities[i].ErpCategoryId = v.ErpCategoryId
|
|
|
|
req.ErpOrderCommodities[i].ErpCategoryName = v.ErpCategoryName
|
|
|
|
req.ErpOrderCommodities[i].RetailPrice = v.RetailPrice
|
|
|
|
//req.ErpOrderCommodities[i].MemberPrice = v.MemberPrice
|
|
|
|
}
|
|
|
|
if req.ErpOrderCommodities[i].PresentType == 2 {
|
|
|
|
req.ErpOrderCommodities[i].RetailPrice = 0
|
|
|
|
}
|
|
|
|
|
|
|
|
// 减库存 TODO
|
|
|
|
if erpOrder.MemberType == model.ErpOrderMemberTypeMember {
|
|
|
|
req.ErpOrderCommodities[i].Amount = req.ErpOrderCommodities[i].Count * req.ErpOrderCommodities[i].MemberPrice
|
|
|
|
} else {
|
|
|
|
req.ErpOrderCommodities[i].Amount = req.ErpOrderCommodities[i].Count * req.ErpOrderCommodities[i].RetailPrice
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
erpOrder.TotalAmount += req.ErpOrderCommodities[i].Amount
|
|
|
|
erpOrder.TotalCount += req.ErpOrderCommodities[i].Count
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, commodity := range req.ErpOrderCommodities {
|
|
|
|
err = begin.Create(&commodity).Error
|
|
|
|
if err != nil {
|
|
|
|
begin.Rollback()
|
|
|
|
logger.Error("create erp order commodities err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
err = begin.Commit().Error
|
|
|
|
if err != nil {
|
|
|
|
begin.Rollback()
|
|
|
|
logger.Error("commit err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
erpOrder.Commodities = req.ErpOrderCommodities
|
|
|
|
erpOrder.Cashiers = req.Cashiers
|
|
|
|
|
|
|
|
RespOK(c, erpOrder)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2023-01-06 02:03:56 +00:00
|
|
|
func ErpOrderDetail(c *gin.Context) {
|
|
|
|
req := &struct {
|
|
|
|
ErpOrderId uint32 `json:"erp_order_id"`
|
|
|
|
}{}
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
logger.Error(err)
|
|
|
|
RespJson(c, status.BadRequest, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
var order model.ErpOrder
|
|
|
|
err := model.DB.Table("erp_order").Where("id = ?", req.ErpOrderId).Find(&order).Error
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("order err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
var orderCommodities []model.ErpOrderCommodity
|
|
|
|
err = model.DB.Table("erp_order_commodity").Where("erp_order_id=?", req.ErpOrderId).Find(&orderCommodities).Error
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("order commodities err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
order.Commodities = orderCommodities
|
|
|
|
order.SetErpCashier()
|
|
|
|
|
|
|
|
RespOK(c, order)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
func ErpOrderCommodityList(c *gin.Context) {
|
|
|
|
req := &struct {
|
|
|
|
Tel string `json:"tel"`
|
|
|
|
IMEI string `json:"imei"`
|
2023-02-09 08:59:06 +00:00
|
|
|
ErpCategoryId uint32 `json:"erp_category_id"`
|
2023-01-06 02:03:56 +00:00
|
|
|
ErpCommodityName string `json:"erp_commodity_name"`
|
|
|
|
}{}
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
logger.Error(err)
|
|
|
|
RespJson(c, status.BadRequest, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var commodities []model.ErpOrderCommodity
|
|
|
|
qs := model.DB.Table("erp_order_commodity")
|
|
|
|
if req.Tel != "" {
|
|
|
|
qs = qs.Where("tel=?", req.Tel)
|
|
|
|
}
|
|
|
|
if req.IMEI != "" {
|
|
|
|
qs = qs.Where("imei=?", req.IMEI)
|
|
|
|
}
|
|
|
|
if req.ErpCommodityName != "" {
|
|
|
|
qs = qs.Where("erp_commodity_name=?", req.ErpCommodityName)
|
|
|
|
}
|
2023-02-09 08:59:06 +00:00
|
|
|
if req.ErpCategoryId != 0 {
|
|
|
|
qs = qs.Where("erp_category_id=?", req.ErpCategoryId)
|
|
|
|
}
|
|
|
|
|
2023-01-06 02:03:56 +00:00
|
|
|
err := qs.Order("id DESC").Find(&commodities).Error
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("erp commodity list err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
RespOK(c, commodities)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
func ShopAssistantList(c *gin.Context) {
|
|
|
|
req := &struct {
|
|
|
|
StoreId uint32 `json:"store_id"`
|
|
|
|
}{}
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
logger.Error(err)
|
|
|
|
RespJson(c, status.BadRequest, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
uc := auth.GetCurrentUser(c)
|
|
|
|
if uc == nil {
|
|
|
|
logger.Error("uc is nil")
|
|
|
|
RespJson(c, status.Unauthorized, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
//uc = &auth.UserClaims{Uid: 8588420}
|
|
|
|
assistant := model.GetUserByUid(uc.Uid)
|
|
|
|
if assistant.UserType != 2 {
|
|
|
|
logger.Error("not assistant")
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
req.StoreId = uint32(assistant.StoreId)
|
|
|
|
var users []model.User
|
|
|
|
qs := model.DB.Table("user").Where("user_type=2")
|
|
|
|
if req.StoreId != 0 {
|
|
|
|
qs = qs.Where("store_id=?", req.StoreId)
|
|
|
|
}
|
|
|
|
|
|
|
|
err := qs.Order("id DESC").Find(&users).Error
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("erp commodity list err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
RespOK(c, users)
|
|
|
|
return
|
|
|
|
}
|
2023-01-13 09:32:25 +00:00
|
|
|
|
|
|
|
// 订单审核
|
|
|
|
func ErpOrderAudit(c *gin.Context) {
|
|
|
|
req := &struct {
|
|
|
|
ErpOrderId uint32 `json:"erp_order_id"`
|
|
|
|
}{}
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
logger.Error(err)
|
2023-02-09 08:59:06 +00:00
|
|
|
RespJson(c, status.BadRequest, nil)
|
2023-01-13 09:32:25 +00:00
|
|
|
return
|
|
|
|
}
|
2023-02-22 06:25:46 +00:00
|
|
|
uc := auth.GetCurrentUser(c)
|
|
|
|
if uc == nil {
|
|
|
|
logger.Error("uc is nil")
|
|
|
|
RespJson(c, status.Unauthorized, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
//uc = &auth.UserClaims{Uid: 8588420}
|
|
|
|
assistant := model.GetUserByUid(uc.Uid)
|
|
|
|
if assistant.UserType != 2 {
|
|
|
|
logger.Error("not assistant")
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
2023-01-13 09:32:25 +00:00
|
|
|
|
2023-02-22 06:25:46 +00:00
|
|
|
err := model.DB.Table("erp_order").Where("id = ?", req.ErpOrderId).Updates(map[string]interface{}{
|
|
|
|
"state": model.ErpOrderStateAudited,
|
|
|
|
"audit_time": time.Now(),
|
|
|
|
"auditor_id": uc.Uid,
|
|
|
|
"auditor_name": assistant.ShopAssistantName,
|
|
|
|
}).Error
|
2023-01-13 09:32:25 +00:00
|
|
|
if err != nil {
|
|
|
|
logger.Error("order err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
RespOK(c, nil)
|
|
|
|
return
|
|
|
|
}
|
2023-02-09 08:59:06 +00:00
|
|
|
|
|
|
|
func ErpCashierStoreList(c *gin.Context) {
|
|
|
|
req := struct {
|
|
|
|
StoreId uint32 `json:"store_id"`
|
|
|
|
PageNum int `json:"page_num"`
|
|
|
|
PageSize int `json:"page_size"`
|
|
|
|
//IsExport uint32 `json:"is_export"` // 1-导出
|
|
|
|
}{}
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
logger.Error(err)
|
|
|
|
RespJson(c, status.BadRequest, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
//uc := auth.GetCurrentUser(c)
|
|
|
|
//if uc == nil {
|
|
|
|
// logger.Error("uc is nil")
|
|
|
|
// RespJson(c, status.Unauthorized, nil)
|
|
|
|
// return
|
|
|
|
//}
|
|
|
|
|
|
|
|
////uc = &auth.UserClaims{Uid: 8588420}
|
|
|
|
//assistant := model.GetUserByUid(uc.Uid)
|
|
|
|
//if assistant.UserType != 2 {
|
|
|
|
// logger.Error("not assistant")
|
|
|
|
// RespJson(c, status.InternalServerError, nil)
|
|
|
|
// return
|
|
|
|
//}
|
|
|
|
//req.StoreId = uint32(assistant.StoreId)
|
|
|
|
|
|
|
|
resp := &model.ErpCashierStoreListResp{
|
|
|
|
PageNum: req.PageNum,
|
|
|
|
PageSize: req.PageSize,
|
|
|
|
}
|
|
|
|
page := req.PageNum - 1
|
|
|
|
if page < 0 {
|
|
|
|
page = 0
|
|
|
|
}
|
|
|
|
if req.PageSize == 0 {
|
|
|
|
req.PageSize = 10
|
|
|
|
}
|
|
|
|
|
|
|
|
qs := model.DB.Table("erp_store_cashier")
|
|
|
|
if req.StoreId != 0 {
|
|
|
|
qs = qs.Where("store_id=?", req.StoreId)
|
|
|
|
}
|
|
|
|
var count int64
|
|
|
|
err := qs.Count(&count).Error
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("count err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
resp.Total = int(count)/req.PageSize + 1
|
|
|
|
var categories []model.ErpStoreCashier
|
|
|
|
//if req.IsExport == 1 {
|
|
|
|
// //err = qs.Order("id DESC").Find(&categories).Error
|
|
|
|
// //if err != nil && err != model.RecordNotFound {
|
|
|
|
// // logger.Error("dailys err:", err)
|
|
|
|
// // RespJson(c, status.InternalServerError, nil)
|
|
|
|
// // return
|
|
|
|
// //}
|
|
|
|
// //
|
|
|
|
// //listExport, err := model.ErpStoreCashierListExport(categories)
|
|
|
|
// //if err != nil {
|
|
|
|
// // logger.Error("list export err:", err)
|
|
|
|
// // RespJson(c, status.InternalServerError, nil)
|
|
|
|
// // return
|
|
|
|
// //}
|
|
|
|
// //resp.ExportUrl = listExport
|
|
|
|
//} else {
|
|
|
|
//}
|
|
|
|
err = qs.Order("id DESC").Offset(page * req.PageSize).Limit(req.PageSize).Find(&categories).Error
|
|
|
|
if err != nil && err != model.RecordNotFound {
|
|
|
|
logger.Error("erp commodity list err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
resp.List = categories
|
|
|
|
|
|
|
|
RespOK(c, resp)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// 串码查询商品详情
|
|
|
|
func ErpOrderDel(c *gin.Context) {
|
|
|
|
req := &struct {
|
|
|
|
ErpOrderId uint32 `json:"erp_order_id"`
|
|
|
|
}{}
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
logger.Error(err)
|
|
|
|
RespJson(c, status.BadRequest, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
err := model.DB.Table("erp_order").Where("id = ?", req.ErpOrderId).Delete(&model.ErpOrder{}).Error
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("order del err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
RespOK(c, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
func UserInfoList(c *gin.Context) {
|
|
|
|
req := &struct {
|
|
|
|
Tel string `json:"tel"`
|
|
|
|
}{}
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
logger.Error(err)
|
|
|
|
RespJson(c, status.BadRequest, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var users []model.User
|
|
|
|
err := model.DB.Table("user").Where("tel LIKE '%" + req.Tel + "%'").Find(&users).Error
|
|
|
|
//err := model.NewUserQuerySet(model.DB).TelLike(req.Tel).All(&users)
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("erp commodity list err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
RespOK(c, users)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
func ErpCommodityList(c *gin.Context) {
|
|
|
|
req := &model.ErpCommodityListReq{}
|
|
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
|
|
logger.Error(err)
|
|
|
|
RespJson(c, status.BadRequest, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
resp, err := req.List()
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("erp commodity list err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
RespOK(c, resp)
|
|
|
|
return
|
|
|
|
}
|