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) }) } // @Title 得到订单详情 // @Description 得到订单详情 // @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 /GetOrderInfo [get] func (c *OrderController) GetOrderInfo() { c.orderOperate(func(vendorOrderID string, vendorID int, userName string) (interface{}, error) { // globals.SugarLogger.Debugf("userName:%s", userName) return orderman.FixedOrderManager.GetOrderInfo(vendorOrderID, vendorID) }) } // @Title 得到订单运单信息 // @Description 得到订单运单信息 // @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 /GetOrderInfo [get] func (c *OrderController) GetOrderWaybillInfo() { c.orderOperate(func(vendorOrderID string, vendorID int, userName string) (interface{}, error) { // globals.SugarLogger.Debugf("userName:%s", userName) return orderman.FixedOrderManager.GetOrderWaybillInfo(vendorOrderID, vendorID) }) }