Files
jx-callback/controllers/jx_order.go
2018-08-24 10:03:34 +08:00

234 lines
7.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package controllers
import (
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/defsch"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/model"
"github.com/astaxie/beego"
)
type OrderController struct {
beego.Controller
}
func GetUserNameFromToken(token string) string {
userName := token
if len(userName) > 10 {
userName = userName[:10]
}
return userName
}
func (c *OrderController) URLMapping() {
c.Mapping("GetStoreOrderInfo", c.GetStoreOrderInfo)
c.Mapping("GetOrderSkuInfo", c.GetOrderSkuInfo)
c.Mapping("FinishedPickup", c.FinishedPickup)
c.Mapping("SelfDelivering", c.SelfDelivering)
c.Mapping("CreateWaybillOnProviders", c.CreateWaybillOnProviders)
c.Mapping("SelfDelivered", c.SelfDelivered)
}
func (c *OrderController) orderOperate(handler func(vendorOrderID string, vendorID int, userName string) (interface{}, error)) {
var (
vendorOrderID, token string
vendorID int
err error
)
token = c.Ctx.Input.Header("token")
vendorOrderID = c.GetString("vendorOrderID")
vendorID, err1 := c.GetInt("vendorID", 0)
if vendorOrderID != "" && token != "" && err1 == nil {
result, err2 := handler(vendorOrderID, vendorID, GetUserNameFromToken(token))
if err = err2; err == nil {
retObj := &model.CallResult{
Code: "0",
}
if result != nil {
retObj.Data = string(utils.MustMarshal(result))
}
c.Data["json"] = retObj
}
}
errMsg := jxutils.Errs2Str("", err1, err)
if vendorOrderID == "" {
errMsg += "vendorOrderID is empty\n"
}
if token == "" {
errMsg += "token is empty\n"
}
if errMsg != "" {
c.Data["json"] = &model.CallResult{
Code: "-1",
Desc: errMsg,
}
}
c.ServeJSON()
}
// @Title 完成拣货
// @Description 完成拣货
// @Param token header string true "认证toke"
// @Param vendorOrderID formData string true "订单ID"
// @Param vendorID formData int true "订单所属的厂商ID"
// @Success 200 {object} business.model.CallResult
// @Failure 200 {object} business.model.CallResult
// @router /FinishedPickup [post]
func (c *OrderController) FinishedPickup() {
c.orderOperate(func(vendorOrderID string, vendorID int, userName string) (interface{}, error) {
return nil, defsch.FixedScheduler.PickupGoodsAndUpdateStatus(vendorOrderID, vendorID, userName)
})
}
// @Title 转自送
// @Description 转自送,对于配送类型为纯自送的,就是表示自送开始
// @Param token header string true "认证toke"
// @Param vendorOrderID formData string true "订单ID"
// @Param vendorID formData int true "订单所属的厂商ID"
// @Success 200 {object} business.model.CallResult
// @Failure 200 {object} business.model.CallResult
// @router /SelfDelivering [post]
func (c *OrderController) SelfDelivering() {
c.orderOperate(func(vendorOrderID string, vendorID int, userName string) (interface{}, error) {
return nil, defsch.FixedScheduler.SelfDeliveringAndUpdateStatusExt(vendorOrderID, vendorID, userName)
})
}
// @Title 自送送达
// @Description 自送送达
// @Param token header string true "认证toke"
// @Param vendorOrderID formData string true "订单ID"
// @Param vendorID formData int true "订单所属的厂商ID"
// @Success 200 {object} business.model.CallResult
// @Failure 200 {object} business.model.CallResult
// @router /SelfDelivered [post]
func (c *OrderController) SelfDelivered() {
c.orderOperate(func(vendorOrderID string, vendorID int, userName string) (interface{}, error) {
return nil, defsch.FixedScheduler.SelfDeliveredAndUpdateStatus(vendorOrderID, vendorID, userName)
})
}
// @Title 创建三方运单
// @Description 创建三方运单
// @Param token header string true "认证toke"
// @Param vendorOrderID formData string true "订单ID"
// @Param vendorID formData int true "订单所属的厂商ID"
// @Success 200 {object} business.model.CallResult
// @Failure 200 {object} business.model.CallResult
// @router /CreateWaybillOnProviders [post]
func (c *OrderController) CreateWaybillOnProviders() {
c.orderOperate(func(vendorOrderID string, vendorID int, userName string) (interface{}, error) {
return defsch.FixedScheduler.CreateWaybillOnProviders(vendorOrderID, vendorID, userName)
})
}
// @Title 得到门店订单信息
// @Description 得到门店订单信息
// @Param token header string true "认证toke"
// @Param storeID query string true "京西门店ID"
// @Param lastHours query int false "最近多少小时的信息(缺省为两天)"
// @Success 200 {object} business.model.CallResult
// @Failure 200 {object} business.model.CallResult
// @router /GetStoreOrderCountInfo [get]
func (c *OrderController) GetStoreOrderCountInfo() {
var (
storeID, token string
lastHours int
err error
)
token = c.Ctx.Input.Header("token")
storeID = c.GetString("storeID")
lastHours, err1 := c.GetInt("lastHours", 0)
if token != "" && storeID != "" && err1 == nil {
result, err2 := orderman.FixedOrderManager.GetStoreOrderCountInfo(storeID, lastHours)
if err = err2; err == nil {
c.Data["json"] = &model.CallResult{
Code: "0",
Data: string(utils.MustMarshal(result)),
}
}
}
errMsg := jxutils.Errs2Str("", err1, err)
if token == "" {
errMsg += "token is empty\n"
}
if storeID == "" {
errMsg += "storeID is empty\n"
}
if errMsg != "" {
c.Data["json"] = &model.CallResult{
Code: "-1",
Desc: errMsg,
}
}
c.ServeJSON()
}
// @Title 得到门店订单状态信息
// @Description 得到门店订单状态信息
// @Param token header string true "认证toke"
// @Param storeID query string true "京西门店ID"
// @Param lastHours query int false "最近多少小时的信息(缺省为两天)"
// @Param fromStatus query int true "起始状态(包括)"
// @Param toStatus query int false "结束状态(包括)"
// @Param offset query int false "订单列表起始序号以0开始缺省为0"
// @Param pageSize query int false "订单列表页大小缺省为50"
// @Success 200 {object} business.model.CallResult
// @Failure 200 {object} business.model.CallResult
// @router /GetStoreOrderInfo [get]
func (c *OrderController) GetStoreOrderInfo() {
var (
storeID, token string
lastHours, fromStatus, toStatus, offset, pageSize int
err error
)
token = c.Ctx.Input.Header("token")
storeID = c.GetString("storeID")
lastHours, err1 := c.GetInt("lastHours", 0)
fromStatus, err2 := c.GetInt("fromStatus", 0)
toStatus, err3 := c.GetInt("toStatus", 0)
offset, err4 := c.GetInt("offset", 0)
pageSize, err5 := c.GetInt("pageSize", 0)
if token != "" && storeID != "" && err1 == nil && err2 == nil && err3 == nil && err4 == nil && err5 == nil {
result, err2 := orderman.FixedOrderManager.GetStoreOrderInfo(storeID, lastHours, fromStatus, toStatus, offset, pageSize)
if err = err2; err == nil {
c.Data["json"] = &model.CallResult{
Code: "0",
Data: string(utils.MustMarshal(result)),
}
}
}
errMsg := jxutils.Errs2Str("", err1, err2, err3, err)
if token == "" {
errMsg += "token is empty\n"
}
if storeID == "" {
errMsg += "storeID is empty\n"
}
if errMsg != "" {
c.Data["json"] = &model.CallResult{
Code: "-1",
Desc: errMsg,
}
}
c.ServeJSON()
}
// @Title 得到订单SKU信息
// @Description 得到订单SKU信息
// @Param token header string true "认证toke"
// @Param vendorOrderID query string true "订单ID"
// @Param vendorID query int true "订单所属的厂商ID"
// @Success 200 {object} business.model.CallResult
// @Failure 200 {object} business.model.CallResult
// @router /GetOrderSkuInfo [get]
func (c *OrderController) GetOrderSkuInfo() {
c.orderOperate(func(vendorOrderID string, vendorID int, userName string) (interface{}, error) {
// globals.SugarLogger.Debugf("userName:%s", userName)
return orderman.FixedOrderManager.GetOrderSkuInfo(vendorOrderID, vendorID)
})
}