diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index f7f4d63ef..e48a7c47a 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -2,6 +2,7 @@ package misc import ( "git.rosy.net.cn/jx-callback/business/jxstore/partner/pdd" + bidaServer "git.rosy.net.cn/jx-callback/business/q_bida" "time" "git.rosy.net.cn/jx-callback/business/jxstore/event" @@ -37,6 +38,11 @@ func Init() { //同步油站信息 cms.InitStation(jxcontext.AdminCtx) }, stationTimeList) + + // 每两小时更新一下订单信息UpdateOrderStatus + ScheduleTimerFuncByInterval(func() { + bidaServer.UpdateOrderStatus() + }, 5*time.Second, 2*time.Hour) } } diff --git a/business/model/user_vendor_order.go b/business/model/user_vendor_order.go index c2d9bb68a..9f33b7c3a 100644 --- a/business/model/user_vendor_order.go +++ b/business/model/user_vendor_order.go @@ -32,7 +32,7 @@ type UserVendorOrder struct { Bulk float64 `orm:"column(bulk)" json:"bulk"` // 体积抛比系数 Increment float64 `orm:"column(increment)" json:"increment"` // 增值(物流) ChannelType int `orm:"size(8);column(channel_type)" json:"channelType"` // 渠道类型(1-快递,2-物流,3-国际物流,4-整车) - OrderStatus int `orm:"size(8);column(order_status)" json:"orderType"` // 订单状态(2-待支付,3-支付失败,4-支付成功,5-待取件,6-配送,110-完成,150-取消) + OrderStatus int `orm:"size(8);column(order_status)" json:"orderType"` // 订单状态(2-待支付,3-支付失败,4-支付成功,10预下单11待取件12运输中15已签收16取消订单17终止揽收) Img string `orm:"column(img)" json:"img"` // 包裹图片 IsForward int `orm:"column(is_forward)" json:"isForward"` // 1否,2是 转寄单 } diff --git a/business/q_bida/q_bida_server.go b/business/q_bida/q_bida_server.go index c3496b60a..2b7236016 100644 --- a/business/q_bida/q_bida_server.go +++ b/business/q_bida/q_bida_server.go @@ -457,3 +457,61 @@ func ManagerGetOrderList(param *model.OrderListReq) ([]*model.UserVendorOrder, e } return result, nil } + +// DeleteOrderByLocalId 删除订单 +func DeleteOrderByLocalId(userId, localId string) (int64, error) { + sql := `SELECT * FROM user_vendor_order uo WHERE 1=1 AND user_id = ? AND local_way_bill =? ` + paramSql := make([]interface{}, 0, 0) + paramSql = append(paramSql, userId, localId) + + data := model.UserVendorOrder{} + if err := dao.GetRow(dao.GetDB(), &data, sql, paramSql); err != nil { + return 0, err + } + if data.ID <= 0 { + return 0, errors.New("用户数据不存在") + } + // 待支付,支付失败,取消,可以删除 + if data.OrderStatus == 2 || data.OrderStatus == 3 || data.OrderStatus == 150 { + return dao.DeleteEntity(dao.GetDB(), &model.UserVendorOrder{UserId: userId, LocalWayBill: localId}, "UserId", "LocalWayBill") + } + + // 支付成功保留15天,可以删除 + if !data.CreatedAt.IsZero() && data.CreatedAt.AddDate(0, 0, 15).Unix() > time.Now().Unix() { + return dao.DeleteEntity(dao.GetDB(), &model.UserVendorOrder{UserId: userId, LocalWayBill: localId}, "UserId", "LocalWayBill") + } + return 0, errors.New("订单完成后保存15天,才可以删除") +} + +// UpdateOrderStatus 查询所有支付成功的订单 +func UpdateOrderStatus() { + // 查询状态值为【4-支付成功,10预下单11待取件12运输中17终止揽收】//2,3 15已签收16取消订单 完成订单 + db := dao.GetDB() + sql := `SELECT * FROM user_vendor_order uo WHERE order_status IN (4,10,11,12,17) ` + var data []*model.UserVendorOrder + if err := dao.GetRows(db, &data, sql); err != nil { + globals.SugarLogger.Debug("Scheduled task Err = ", err) + return + } + + for _, v := range data { + if v.LocalWayBill == v.OtherWayBill { + globals.SugarLogger.Debug("ERROR ", "第三方订单Id写入错误,") + continue + } + if v.OrderStatus == 2 || v.OrderStatus == 3 || v.OrderStatus == 15 || v.OrderStatus == 16 { + continue + } + otherOrder, err := QueryOrderDetail(v.Type, v.OtherWayBill) + if err != nil { + globals.SugarLogger.Debug("Get Order Fail To QBiDa:", err) + continue + } + param := model.UserVendorOrder{ModelIDCUL: model.ModelIDCUL{ID: v.ModelIDCUL.ID}} + param.OrderStatus = otherOrder.Status + 10 + if _, err := dao.UpdateEntity(db, ¶m, "OrderStatus"); err != nil { + globals.SugarLogger.Debug("Update Order Status Fail ", err) + continue + } + } +} diff --git a/controllers/q_bida.go b/controllers/q_bida.go index d2ea04893..6d6270034 100644 --- a/controllers/q_bida.go +++ b/controllers/q_bida.go @@ -230,3 +230,18 @@ func (c *QBiDaExpressController) GetOrderList() { return result, "", err }) } + +// DeleteOrder 删除订单 +// @Title Q必达 +// @Description 删除未支付订单,已支付订单一个星期后才能删除 +// @Param token header string true "管理员token" +// @Param localOrderId formData string true "本地订单" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /DeleteOrder [post] +func (c *QBiDaExpressController) DeleteOrder() { + c.callDeleteOrder(func(params *tExpressDeleteOrderParams) (interface{}, string, error) { + count, err := bidaServer.DeleteOrderByLocalId(params.Ctx.GetUserID(), params.LocalOrderId) + return count, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 7f569dd11..b57ab7136 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1069,4 +1069,13 @@ func init() { MethodParams: param.Make(), Filters: nil, Params: nil}) + // 删除订单 + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:QBiDaExpressController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:QBiDaExpressController"], + beego.ControllerComments{ + Method: "DeleteOrder", + Router: "/DeleteOrder", + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) }