171 lines
5.2 KiB
Go
171 lines
5.2 KiB
Go
package order
|
|
|
|
import (
|
|
"fusenapi/constants"
|
|
"fusenapi/utils/configs"
|
|
"fusenapi/utils/format"
|
|
)
|
|
|
|
// 获取订单生产状态
|
|
func GetOrderStatus(orderStatus constants.Order, deliveryMethod constants.DeliveryMethod) constants.Order {
|
|
switch orderStatus {
|
|
//已支付
|
|
case constants.STATUS_NEW_PART_PAY, constants.STATUS_NEW_PAY_COMPLETED, constants.STATUS_NEW_SURE:
|
|
return constants.STATUS_FONT_PAID
|
|
//生产中
|
|
case constants.STATUS_NEW_PRODUTING, constants.STATUS_NEW_PRODUT_COMPLETED:
|
|
return constants.STATUS_FONT_PRODUCTION
|
|
//运输中-直邮单
|
|
case constants.STATUS_NEW_DELIVER, constants.STATUS_NEW_UPS:
|
|
return constants.STATUS_FONT_SHIPPED
|
|
//到达-云仓
|
|
case constants.STATUS_NEW_ARRIVAL:
|
|
return constants.STATUS_FONT_INVENTORY
|
|
//订单完成
|
|
case constants.STATUS_NEW_COMPLETED:
|
|
if deliveryMethod == constants.DELIVERY_METHOD_CLOUD {
|
|
return constants.STATUS_FONT_COMPLETED_CLOUD
|
|
}
|
|
return constants.STATUS_FONT_COMPLETED
|
|
//订单关闭
|
|
default:
|
|
return constants.STATUS_FONT_CLOSED
|
|
}
|
|
}
|
|
|
|
type GetOrderStatusAndLogisticsReq struct {
|
|
OrderStatus constants.Order
|
|
DeliveryMethod constants.DeliveryMethod
|
|
IsPayCompleted int64
|
|
OrderCtime int64
|
|
|
|
SureTime int64
|
|
ProductTime int64
|
|
ProductEndtime int64
|
|
DeliverTime int64
|
|
UpsDeliverTime int64
|
|
UpsTime int64
|
|
ArrivalTime int64
|
|
RecevieTime int64
|
|
|
|
WebSetTimeInfo configs.WebSetTimeInfo
|
|
}
|
|
|
|
type GetOrderStatusAndLogisticsRes struct {
|
|
OrderStatus constants.Order
|
|
LogisticsStatus constants.Order
|
|
|
|
Times []GetOrderStatusAndLogisticsResTimes
|
|
}
|
|
|
|
type GetOrderStatusAndLogisticsResTimes struct {
|
|
Key int `json:"key"`
|
|
Time string `json:"time"`
|
|
}
|
|
|
|
// 获取订单物流状态
|
|
func GetOrderStatusAndLogistics(req GetOrderStatusAndLogisticsReq) (res GetOrderStatusAndLogisticsRes) {
|
|
var status constants.Order
|
|
logisticsStatus := constants.LOGISTICS_STATUS_DRAW
|
|
|
|
times := make([]GetOrderStatusAndLogisticsResTimes, 5)
|
|
m := 1
|
|
for i := 0; i < 5; i++ {
|
|
times[i] = GetOrderStatusAndLogisticsResTimes{
|
|
Key: m,
|
|
Time: "",
|
|
}
|
|
m++
|
|
}
|
|
|
|
switch req.OrderStatus {
|
|
//已支付
|
|
case constants.STATUS_NEW_PART_PAY, constants.STATUS_NEW_PAY_COMPLETED, constants.STATUS_NEW_SURE:
|
|
status = constants.STATUS_FONT_PAID
|
|
logisticsStatus = constants.LOGISTICS_STATUS_DRAW
|
|
//生产中
|
|
case constants.STATUS_NEW_PRODUTING, constants.STATUS_NEW_PRODUT_COMPLETED:
|
|
//直邮单有完成的物流状态
|
|
if req.DeliveryMethod == constants.DELIVERY_METHOD_ADDRESS {
|
|
if req.OrderStatus == constants.STATUS_NEW_PRODUTING {
|
|
logisticsStatus = constants.LOGISTICS_STATUS_DRAW
|
|
} else {
|
|
logisticsStatus = constants.LOGISTICS_STATUS_SHIPPING
|
|
}
|
|
}
|
|
status = constants.STATUS_FONT_PRODUCTION
|
|
//运输中-直邮单
|
|
case constants.STATUS_NEW_DELIVER, constants.STATUS_NEW_UPS:
|
|
if req.DeliveryMethod == constants.DELIVERY_METHOD_ADDRESS {
|
|
if req.OrderStatus == constants.STATUS_NEW_DELIVER {
|
|
logisticsStatus = constants.LOGISTICS_STATUS_UPS
|
|
} else {
|
|
logisticsStatus = constants.LOGISTICS_STATUS_UPS_ARRIVAL
|
|
}
|
|
}
|
|
status = constants.STATUS_FONT_SHIPPED
|
|
//到达-云仓
|
|
case constants.STATUS_NEW_ARRIVAL:
|
|
case constants.STATUS_NEW_COMPLETED:
|
|
if req.DeliveryMethod == constants.DELIVERY_METHOD_CLOUD {
|
|
status = constants.STATUS_FONT_COMPLETED_CLOUD
|
|
logisticsStatus = constants.LOGISTICS_STATUS_UPS
|
|
} else {
|
|
status = constants.STATUS_FONT_COMPLETED
|
|
logisticsStatus = constants.LOGISTICS_STATUS_ARRIVAL
|
|
}
|
|
|
|
//订单关闭
|
|
default:
|
|
status = constants.STATUS_FONT_CLOSED
|
|
}
|
|
res.OrderStatus = status
|
|
res.LogisticsStatus = logisticsStatus
|
|
|
|
var daySecond int64 = 3600 * 24
|
|
|
|
if req.DeliveryMethod == constants.DELIVERY_METHOD_ADDRESS {
|
|
switch logisticsStatus {
|
|
case constants.LOGISTICS_STATUS_DRAW:
|
|
times[1].Time = format.TimeIntToFormat(req.OrderCtime + req.WebSetTimeInfo.ProductDay*daySecond)
|
|
case constants.LOGISTICS_STATUS_SHIPPING:
|
|
if req.ProductEndtime > 0 {
|
|
times[2].Time = format.TimeIntToFormat(req.ProductEndtime + req.WebSetTimeInfo.FactoryDeliverDay*daySecond)
|
|
} else {
|
|
times[2].Time = format.TimeIntToFormat(req.OrderCtime + req.WebSetTimeInfo.FactoryDeliverDay*daySecond)
|
|
}
|
|
case constants.LOGISTICS_STATUS_UPS:
|
|
if req.DeliverTime > 0 {
|
|
times[2].Time = format.TimeIntToFormat(req.DeliverTime)
|
|
times[3].Time = format.TimeIntToFormat(req.DeliverTime + req.WebSetTimeInfo.DeliverUpsDay*daySecond)
|
|
}
|
|
case constants.LOGISTICS_STATUS_UPS_ARRIVAL:
|
|
if req.DeliverTime > 0 {
|
|
times[2].Time = format.TimeIntToFormat(req.DeliverTime)
|
|
}
|
|
if req.UpsDeliverTime > 0 {
|
|
times[3].Time = format.TimeIntToFormat(req.UpsDeliverTime)
|
|
times[4].Time = format.TimeIntToFormat(req.UpsDeliverTime + req.WebSetTimeInfo.UpsTransDay*daySecond)
|
|
}
|
|
case constants.LOGISTICS_STATUS_ARRIVAL:
|
|
if req.DeliverTime > 0 {
|
|
times[2].Time = format.TimeIntToFormat(req.DeliverTime)
|
|
}
|
|
if req.UpsDeliverTime > 0 {
|
|
times[3].Time = format.TimeIntToFormat(req.UpsDeliverTime)
|
|
}
|
|
if req.UpsTime > 0 {
|
|
times[4].Time = format.TimeIntToFormat(req.UpsTime)
|
|
}
|
|
}
|
|
res.Times = times
|
|
} else {
|
|
timesData := times[0:3]
|
|
if logisticsStatus == constants.LOGISTICS_STATUS_DRAW {
|
|
timesData[1].Time = format.TimeIntToFormat(req.OrderCtime + req.WebSetTimeInfo.ProductDay*daySecond)
|
|
}
|
|
res.Times = timesData
|
|
}
|
|
return res
|
|
}
|