cancel jd deli
This commit is contained in:
@@ -519,29 +519,119 @@ func RechargeMtMembers(ctx *jxcontext.Context, phone int) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
func SendJdDelivery(ctx *jxcontext.Context, dOrder *model.DeliveryOrder) (err error) {
|
||||
func SendJdDelivery(ctx *jxcontext.Context, dOrder *model.DeliveryOrder) (errCode string, err error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
)
|
||||
sendDeliveryList, _, err := dao.QueryUserDeliveryAddress(db, int64(dOrder.DeliverySendID), nil, 0, 0)
|
||||
receiveDeliveryList, _, err := dao.QueryUserDeliveryAddress(db, int64(dOrder.DeliveryReceiveID), nil, 0, 0)
|
||||
userBill, err := dao.GetUserBill(db, ctx.GetUserID(), "")
|
||||
if err != nil {
|
||||
return err
|
||||
return errCode, err
|
||||
}
|
||||
if userBill.AccountBalance < dOrder.PayPrice {
|
||||
return model.ErrCodeAccountBalanceNotEnough, err
|
||||
}
|
||||
if len(sendDeliveryList) == 0 {
|
||||
return fmt.Errorf("未找到寄件人地址!")
|
||||
return errCode, fmt.Errorf("未找到寄件人地址!")
|
||||
}
|
||||
if len(receiveDeliveryList) == 0 {
|
||||
return fmt.Errorf("未找到取件人地址!")
|
||||
return errCode, fmt.Errorf("未找到取件人地址!")
|
||||
}
|
||||
dao.WrapAddIDCULEntity(dOrder, ctx.GetUserName())
|
||||
if vendorWaybillID, err := api.JdEclpAPI.WaybillReceive(&jdeclpapi.WaybillReceiveParam{}); err == nil {
|
||||
if vendorWaybillID, err := api.JdEclpAPI.WaybillReceive(&jdeclpapi.WaybillReceiveParam{
|
||||
SalePlat: jdeclpapi.SalePlatSourceDelivery,
|
||||
CustomerCode: jdeclpapi.CustomerCode,
|
||||
OrderID: utils.Int64ToStr(jxutils.GenOrderNo()),
|
||||
SenderName: sendDeliveryList[0].ConsigneeName,
|
||||
SenderAddress: sendDeliveryList[0].Address + sendDeliveryList[0].DetailAddress,
|
||||
SenderTel: sendDeliveryList[0].ConsigneeMobile,
|
||||
ReceiveName: receiveDeliveryList[0].ConsigneeName,
|
||||
ReceiveAddress: receiveDeliveryList[0].Address + receiveDeliveryList[0].DetailAddress,
|
||||
ReceiveTel: receiveDeliveryList[0].ConsigneeMobile,
|
||||
Weight: dOrder.Weight,
|
||||
Vloumn: dOrder.Vloumn,
|
||||
PackageCount: dOrder.PackageCount,
|
||||
Description: dOrder.Description,
|
||||
Aging: 5,
|
||||
PromiseTimeType: 1, //特惠送
|
||||
}); err == nil {
|
||||
dOrder.VendorWaybillID = vendorWaybillID
|
||||
} else {
|
||||
return err
|
||||
return errCode, err
|
||||
}
|
||||
dOrder.Status = model.OrderStatusNew
|
||||
dOrder.UserID = ctx.GetUserID()
|
||||
dao.CreateEntity(db, dOrder)
|
||||
dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
dao.Rollback(db)
|
||||
panic(r)
|
||||
}
|
||||
}()
|
||||
if err = dao.CreateEntity(db, dOrder); err != nil {
|
||||
dao.Rollback(db)
|
||||
}
|
||||
//账户支出明细
|
||||
//1、账户支出增加一条记录
|
||||
if err = financial.AddBillExpend(db, userBill.BillID, model.BillTypeSpJob, dOrder.PayPrice); err != nil {
|
||||
dao.Rollback(db)
|
||||
}
|
||||
//2、账户表余额减少相应值
|
||||
userBill.AccountBalance -= dOrder.PayPrice
|
||||
if _, err = dao.UpdateEntity(db, userBill, "AccountBalance"); err != nil {
|
||||
dao.Rollback(db)
|
||||
}
|
||||
dao.Commit(db)
|
||||
return errCode, err
|
||||
}
|
||||
|
||||
func CancelJdDelivery(ctx *jxcontext.Context, vendorWaybillID, reason string) (err error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
dOrder = &model.DeliveryOrder{
|
||||
VendorWaybillID: vendorWaybillID,
|
||||
}
|
||||
)
|
||||
err = dao.GetEntity(db, &dOrder, "VendorWaybillID")
|
||||
userBill, err := dao.GetUserBill(db, ctx.GetUserID(), "")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if dOrder.ID == 0 {
|
||||
return fmt.Errorf("未找到该运单!")
|
||||
}
|
||||
if err = api.JdEclpAPI.CancelWayBill(&jdeclpapi.CancelWayBillParam{
|
||||
WaybillCode: vendorWaybillID,
|
||||
CustomerCode: jdeclpapi.CustomerCode,
|
||||
Source: "JOS",
|
||||
CancelReason: reason,
|
||||
OperatorName: ctx.GetUserName(),
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
dOrder.Status = model.OrderStatusCanceled
|
||||
dOrder.OrderFinishedAt = time.Now()
|
||||
dOrder.Comment = reason
|
||||
dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
dao.Rollback(db)
|
||||
panic(r)
|
||||
}
|
||||
}()
|
||||
if _, err = dao.UpdateEntity(db, dOrder, "Status", "OrderFinishedAt", "Comment"); err != nil {
|
||||
dao.Rollback(db)
|
||||
}
|
||||
//1、根据任务剩余数量退钱到任务保证金余额中
|
||||
userBill.AccountBalance += dOrder.PayPrice
|
||||
if _, err = dao.UpdateEntity(db, userBill, "AccountBalance"); err != nil {
|
||||
dao.Rollback(db)
|
||||
}
|
||||
//2、账户收入增加一条记录
|
||||
if err = financial.AddBillIncome(db, userBill.BillID, model.BillTypeSpJob, dOrder.PayPrice); err != nil {
|
||||
dao.Rollback(db)
|
||||
}
|
||||
dao.Commit(db)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -229,8 +229,23 @@ func (c *JobController) SendJdDelivery() {
|
||||
c.callSendJdDelivery(func(params *tJobSendJdDeliveryParams) (retVal interface{}, errCode string, err error) {
|
||||
var dOrder *model.DeliveryOrder
|
||||
if err = jxutils.Strings2Objs(params.Payload, &dOrder); err == nil {
|
||||
err = cms.SendJdDelivery(params.Ctx, dOrder)
|
||||
errCode, err = cms.SendJdDelivery(params.Ctx, dOrder)
|
||||
}
|
||||
return retVal, errCode, err
|
||||
})
|
||||
}
|
||||
|
||||
// @Title 取消京东快递
|
||||
// @Description 取消京东快递
|
||||
// @Param token header string true "认证token"
|
||||
// @Param vendorWaybillID formData string true "运单号"
|
||||
// @Param reason formData string true "取消原因"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /CancelJdDelivery [post]
|
||||
func (c *JobController) CancelJdDelivery() {
|
||||
c.callCancelJdDelivery(func(params *tJobCancelJdDeliveryParams) (retVal interface{}, errCode string, err error) {
|
||||
err = cms.CancelJdDelivery(params.Ctx, params.VendorWaybillID, params.Reason)
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user