From 166f5320d3f9271d2111d60e40858d5ece9cc560 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 23 Dec 2019 15:27:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=95=E8=AF=89=E9=AA=91=E6=89=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/waybill.go | 40 +++++++++++++++++++++++ business/model/dao/dao_order.go | 20 ++++++++++++ business/partner/delivery/dada/waybill.go | 5 +++ business/partner/delivery/mtps/waybill.go | 5 +++ business/partner/partner_delivery.go | 2 ++ controllers/jx_order.go | 29 ++++++++++++++++ routers/commentsRouter_controllers.go | 18 ++++++++++ 7 files changed, 119 insertions(+) diff --git a/business/jxcallback/orderman/waybill.go b/business/jxcallback/orderman/waybill.go index 1e9cba812..0e4daf02d 100644 --- a/business/jxcallback/orderman/waybill.go +++ b/business/jxcallback/orderman/waybill.go @@ -1,11 +1,17 @@ package orderman import ( + "fmt" "time" + "git.rosy.net.cn/jx-callback/business/partner" + + "git.rosy.net.cn/baseapi/platformapi/dadaapi" + "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler" "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/globals" @@ -19,6 +25,17 @@ var ( model.WaybillStatusRefuseFailedGetGoods: model.OrderStatusRefuseFailedGetGoods, model.WaybillStatusDeliverFailed: model.OrderStatusDeliverFailed, } + complaintReasonsMap = map[int]string{ + 1: "骑手态度恶劣", + 2: "骑手接单后未取货", + 3: "骑手取货太慢", + 4: "骑手送货太慢", + 5: "货品未送达", + 6: "货品有损坏", + 7: "骑手违规收取顾客其他费用", + 69: "骑手恶意取消订单", + 71: "骑手提前点击取货/送达", + } ) func (w *OrderManager) LoadPendingWaybills() []*model.Waybill { @@ -220,3 +237,26 @@ func (c *OrderManager) LoadWaybill(vendorWaybillID string, waybillVendorID int) } return bill, err } + +func GetComplaintReasons() (complaintReasonList []*dadaapi.ComplaintReason) { + for k, v := range complaintReasonsMap { + complaintReason := &dadaapi.ComplaintReason{ + ID: k, + Reason: v, + } + complaintReasonList = append(complaintReasonList, complaintReason) + } + return complaintReasonList +} + +func ComplaintRider(ctx *jxcontext.Context, orderID string, vendorID, complaintID int) (err error) { + db := dao.GetDB() + p := partner.GetDeliveryPlatformFromVendorID(vendorID).Handler + wayBillList, err := dao.GetWayBillByOrderID(db, model.OrderStatusFinished, vendorID, orderID) + if err == nil && len(wayBillList) > 0 { + err = p.ComplaintRider(wayBillList[0], complaintID, complaintReasonsMap[complaintID]) + } else { + return fmt.Errorf("未查询到到相关订单,订单要求必须是完成!订单号:[%v]", orderID) + } + return err +} diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index df0b8c0c5..344d0caba 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -1027,3 +1027,23 @@ func LoadPendingOrders(db *DaoDB, orderCreatedAfter time.Time, beforStatus int) err = GetRows(db, &orderList, sql, sqlParams...) return orderList, err } + +func GetWayBillByOrderID(db *DaoDB, orderStatus, waybillVendorID int, vendorOrderID string) (wayBillList []*model.Waybill, err error) { + sql := ` + SELECT b.* + FROM goods_order a + LEFT JOIN waybill b ON IF(a.waybill_vendor_id = -1,a.vendor_order_id,a.vendor_waybill_id) = b.vendor_waybill_id + WHERE a.vendor_order_id = ? + ` + sqlParams := []interface{}{vendorOrderID} + if orderStatus > 0 { + sql += ` AND a.status = ?` + sqlParams = append(sqlParams, orderStatus) + } + if waybillVendorID > 0 { + sql += ` AND b.waybill_vendor_id = ?` + sqlParams = append(sqlParams, waybillVendorID) + } + err = GetRows(db, &wayBillList, sql, sqlParams...) + return wayBillList, err +} diff --git a/business/partner/delivery/dada/waybill.go b/business/partner/delivery/dada/waybill.go index 559300b3d..cb55cf8ee 100644 --- a/business/partner/delivery/dada/waybill.go +++ b/business/partner/delivery/dada/waybill.go @@ -363,3 +363,8 @@ func limitOrderWeight(weight int) int { } return weight } + +func (c *DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, resonContent string) (err error) { + err = api.DadaAPI.ComplaintRider(bill.VendorOrderID, resonID) + return err +} diff --git a/business/partner/delivery/mtps/waybill.go b/business/partner/delivery/mtps/waybill.go index 25fca1ea7..6fb53291e 100644 --- a/business/partner/delivery/mtps/waybill.go +++ b/business/partner/delivery/mtps/waybill.go @@ -246,3 +246,8 @@ func limitOrderWeight(weight int) int { } return weight } + +func (c *DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, resonContent string) (err error) { + err = api.MtpsAPI.EvaluateRider(utils.Str2Int64(bill.VendorWaybillID2), bill.VendorWaybillID, 1, resonContent) + return err +} diff --git a/business/partner/partner_delivery.go b/business/partner/partner_delivery.go index 3c3869413..36a45b563 100644 --- a/business/partner/partner_delivery.go +++ b/business/partner/partner_delivery.go @@ -38,6 +38,8 @@ type IDeliveryPlatformHandler interface { CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo *WaybillFeeInfo, err error) + //投诉骑手 + ComplaintRider(bill *model.Waybill, resonID int, resonContent string) (err error) } type IDeliveryUpdateStoreHandler interface { diff --git a/controllers/jx_order.go b/controllers/jx_order.go index 964fc08a4..1ee893884 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -875,3 +875,32 @@ func (c *OrderController) RefreshOrdersWithoutJxStoreID() { return retVal, "", err }) } + +// @Title 获取投诉原因 +// @Description 获取投诉原因 +// @Param token header string true "认证token" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetComplaintReasons [get] +func (c *OrderController) GetComplaintReasons() { + c.callGetComplaintReasons(func(params *tOrderGetComplaintReasonsParams) (retVal interface{}, errCode string, err error) { + retVal = orderman.GetComplaintReasons() + return retVal, "", err + }) +} + +// @Title 投诉骑手(三方运送) +// @Description 投诉骑手(三方运送) +// @Param token header string true "认证token" +// @Param orderID formData string true "订单号" +// @Param vendorID formData int true "平台厂商ID" +// @Param complaintID formData int true "投诉原因ID" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /ComplaintRider [post] +func (c *OrderController) ComplaintRider() { + c.callComplaintRider(func(params *tOrderComplaintRiderParams) (retVal interface{}, errCode string, err error) { + err = orderman.ComplaintRider(params.Ctx, params.OrderID,params.VendorID, params.ComplaintID) + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 3561948ae..2b51ceb30 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -783,6 +783,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"], + beego.ControllerComments{ + Method: "ComplaintRider", + Router: `/ComplaintRider`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"], beego.ControllerComments{ Method: "ConfirmReceiveGoods", @@ -864,6 +873,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"], + beego.ControllerComments{ + Method: "GetComplaintReasons", + Router: `/GetComplaintReasons`, + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"], beego.ControllerComments{ Method: "GetOrderInfo",