cancel jd deli
This commit is contained in:
@@ -519,29 +519,119 @@ func RechargeMtMembers(ctx *jxcontext.Context, phone int) (err error) {
|
|||||||
return err
|
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 (
|
var (
|
||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
)
|
)
|
||||||
sendDeliveryList, _, err := dao.QueryUserDeliveryAddress(db, int64(dOrder.DeliverySendID), nil, 0, 0)
|
sendDeliveryList, _, err := dao.QueryUserDeliveryAddress(db, int64(dOrder.DeliverySendID), nil, 0, 0)
|
||||||
receiveDeliveryList, _, err := dao.QueryUserDeliveryAddress(db, int64(dOrder.DeliveryReceiveID), nil, 0, 0)
|
receiveDeliveryList, _, err := dao.QueryUserDeliveryAddress(db, int64(dOrder.DeliveryReceiveID), nil, 0, 0)
|
||||||
|
userBill, err := dao.GetUserBill(db, ctx.GetUserID(), "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return errCode, err
|
||||||
|
}
|
||||||
|
if userBill.AccountBalance < dOrder.PayPrice {
|
||||||
|
return model.ErrCodeAccountBalanceNotEnough, err
|
||||||
}
|
}
|
||||||
if len(sendDeliveryList) == 0 {
|
if len(sendDeliveryList) == 0 {
|
||||||
return fmt.Errorf("未找到寄件人地址!")
|
return errCode, fmt.Errorf("未找到寄件人地址!")
|
||||||
}
|
}
|
||||||
if len(receiveDeliveryList) == 0 {
|
if len(receiveDeliveryList) == 0 {
|
||||||
return fmt.Errorf("未找到取件人地址!")
|
return errCode, fmt.Errorf("未找到取件人地址!")
|
||||||
}
|
}
|
||||||
dao.WrapAddIDCULEntity(dOrder, ctx.GetUserName())
|
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
|
dOrder.VendorWaybillID = vendorWaybillID
|
||||||
} else {
|
} else {
|
||||||
return err
|
return errCode, err
|
||||||
}
|
}
|
||||||
dOrder.Status = model.OrderStatusNew
|
dOrder.Status = model.OrderStatusNew
|
||||||
dOrder.UserID = ctx.GetUserID()
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -229,8 +229,23 @@ func (c *JobController) SendJdDelivery() {
|
|||||||
c.callSendJdDelivery(func(params *tJobSendJdDeliveryParams) (retVal interface{}, errCode string, err error) {
|
c.callSendJdDelivery(func(params *tJobSendJdDeliveryParams) (retVal interface{}, errCode string, err error) {
|
||||||
var dOrder *model.DeliveryOrder
|
var dOrder *model.DeliveryOrder
|
||||||
if err = jxutils.Strings2Objs(params.Payload, &dOrder); err == nil {
|
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
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user