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/basesch" "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 (c *OrderController) URLMapping() { c.Mapping("FinishedPickup", c.FinishedPickup) c.Mapping("GetStoreOrderInfo", c.GetStoreOrderInfo) c.Mapping("GetOrderSkuInfo", c.GetOrderSkuInfo) c.Mapping("CreateWaybillOnProviders", c.CreateWaybillOnProviders) c.Mapping("Swtich2SelfDeliver", c.Swtich2SelfDeliver) } func (c *OrderController) orderOperate(handler func(vendorOrderID string, vendorID int) (interface{}, error)) { var ( vendorOrderID string vendorID int err error ) vendorOrderID = c.GetString("vendorOrderID") vendorID, err1 := c.GetInt("vendorID", 0) if vendorOrderID != "" && err1 == nil { result, err2 := handler(vendorOrderID, vendorID) 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 errMsg != "" { c.Data["json"] = &model.CallResult{ Code: "-1", Data: errMsg, } } c.ServeJSON() } // @Title 完成拣货 // @Description 完成拣货 // @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) (interface{}, error) { return nil, basesch.FixedBaseScheduler.PickupGoodsAndUpdateStatus(vendorOrderID, vendorID) }) } // @Title 转自送 // @Description 转自送 // @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 /Swtich2SelfDeliver [post] func (c *OrderController) Swtich2SelfDeliver() { c.orderOperate(func(vendorOrderID string, vendorID int) (interface{}, error) { return nil, basesch.FixedBaseScheduler.Swtich2SelfDeliverAndUpdateStatus(vendorOrderID, vendorID) }) } // @Title 创建三方运单 // @Description 创建三方运单 // @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) (interface{}, error) { return basesch.FixedBaseScheduler.CreateWaybillOnProviders(vendorOrderID, vendorID) }) } // @Title 得到门店订单信息 // @Description 得到门店订单信息 // @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 string lastHours int err error ) storeID = c.GetString("storeID") lastHours, err1 := c.GetInt("lastHours", 0) if 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 storeID == "" { errMsg += "storeID is empty\n" } if errMsg != "" { c.Data["json"] = &model.CallResult{ Code: "-1", Desc: errMsg, } } c.ServeJSON() } // @Title 得到门店订单状态信息 // @Description 得到门店订单状态信息 // @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 string lastHours, fromStatus, toStatus, offset, pageSize int err error ) 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 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 storeID == "" { errMsg += "storeID is empty\n" } if errMsg != "" { c.Data["json"] = &model.CallResult{ Code: "-1", Desc: errMsg, } } c.ServeJSON() } // @Title 得到订单SKU信息 // @Description 得到订单SKU信息 // @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) (interface{}, error) { return orderman.FixedOrderManager.GetOrderSkuInfo(vendorOrderID, vendorID) }) }