aa
This commit is contained in:
@@ -296,10 +296,10 @@ func AcceptJob(ctx *jxcontext.Context, jobID, dropShippingDeliveryID, dropShippi
|
||||
if job.UserID == "" || job.Status == model.JobStatusFailed || job.Status == model.JobStatusOverdue || job.FinishedAt.Sub(time.Now()) <= 0 || job.SurplusCount <= 0 || job.LimitCountType <= 0 {
|
||||
return 0, errCode, fmt.Errorf("未找到该任务或该任务状态不正常,无法接单!")
|
||||
}
|
||||
num, err = checkJobOrders(db, 0, "<= "+utils.Int2Str(model.JobOrderStatusAccept), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||
if num >= AcceptMaxCount {
|
||||
return 0, errCode, fmt.Errorf("每人最多接取" + utils.Int2Str(AcceptMaxCount) + "个任务,请核实!")
|
||||
}
|
||||
// num, err = checkJobOrders(db, 0, "<= "+utils.Int2Str(model.JobOrderStatusAccept), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||
// if num >= AcceptMaxCount {
|
||||
// return 0, errCode, fmt.Errorf("每人最多接取" + utils.Int2Str(AcceptMaxCount) + "个任务,请核实!")
|
||||
// }
|
||||
num, err = checkJobOrders(db, jobID, "<= "+utils.Int2Str(model.JobOrderStatusWaitAudit), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||
if num > 0 {
|
||||
return 0, errCode, fmt.Errorf("您还有此任务未完成,请完成后再接取!")
|
||||
@@ -1038,9 +1038,11 @@ func SendJdDelivery(ctx *jxcontext.Context, dOrder *model.DeliveryOrder) (errCod
|
||||
dao.Rollback(db)
|
||||
return
|
||||
}
|
||||
dao.Commit(db)
|
||||
job, err := dao.GetJob(db, nil, nil, nil, []int{model.JobTypeJdDelivery}, utils.ZeroTimeValue, utils.ZeroTimeValue, false)
|
||||
jobOrderID, errCode, err := AcceptJob(ctx, job.ID, 0, 0)
|
||||
if err != nil {
|
||||
return errCode, fmt.Errorf("发送失败![%v]", err)
|
||||
}
|
||||
dOrder.JobOrderID = utils.Int64ToStr(jobOrderID)
|
||||
dOrder.SendName = sendDelivery.ConsigneeName
|
||||
dOrder.SendMobile = sendDelivery.ConsigneeMobile
|
||||
@@ -1062,6 +1064,7 @@ func SendJdDelivery(ctx *jxcontext.Context, dOrder *model.DeliveryOrder) (errCod
|
||||
dao.Rollback(db)
|
||||
return
|
||||
}
|
||||
dao.Commit(db)
|
||||
if errCode != "" {
|
||||
return errCode, err
|
||||
}
|
||||
@@ -1133,40 +1136,75 @@ func GetJdDelivery(ctx *jxcontext.Context, status int, fromTime, toTime string,
|
||||
if status != 0 {
|
||||
statuss = append(statuss, status)
|
||||
}
|
||||
pages, _ := dao.GetDeliveryOrders(db, []string{ctx.GetUserID()}, []int{model.OrderStatusNew, model.OrderStatusDelivering}, utils.ZeroTimeValue, utils.ZeroTimeValue, 9999, 0)
|
||||
for _, v := range pages.Data.([]*dao.GetDeliveryOrdersResult) {
|
||||
if v != nil && v.VendorWaybillID != "" {
|
||||
var (
|
||||
isDeliverying bool
|
||||
isFinished bool
|
||||
)
|
||||
if results, err := api.JdEclpAPI.QueryDynamicTraceInfo(v.VendorWaybillID); err == nil {
|
||||
for _, result := range results {
|
||||
if result.State == jdeclpapi.TraceInfoStateM640 {
|
||||
isDeliverying = true
|
||||
}
|
||||
if result.State == jdeclpapi.TraceInfoState150 {
|
||||
isFinished = true
|
||||
}
|
||||
}
|
||||
}
|
||||
dOrder := &model.DeliveryOrder{}
|
||||
dOrder.ID = v.ID
|
||||
if err = dao.GetEntity(db, dOrder); err == nil {
|
||||
if isFinished {
|
||||
dOrder.Status = model.OrderStatusFinished
|
||||
} else if isDeliverying {
|
||||
dOrder.Status = model.OrderStatusDelivering
|
||||
} else {
|
||||
continue
|
||||
}
|
||||
dao.UpdateEntity(db, dOrder, "Status")
|
||||
}
|
||||
}
|
||||
}
|
||||
RefreshJdDelivery(ctx)
|
||||
return dao.GetDeliveryOrders(db, []string{ctx.GetUserID()}, statuss, utils.Str2Time(fromTime), utils.Str2Time(toTime), pageSize, offset)
|
||||
}
|
||||
|
||||
func RefreshJdDelivery(ctx *jxcontext.Context) (err error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
userID string
|
||||
userIDs []string
|
||||
)
|
||||
if ctx.GetUserName() == "jxadmin" {
|
||||
userID = ""
|
||||
} else {
|
||||
userID = ctx.GetUserID()
|
||||
userIDs = append(userIDs, userID)
|
||||
}
|
||||
pages, _ := dao.GetDeliveryOrders(db, userIDs, []int{model.OrderStatusNew, model.OrderStatusDelivering}, utils.ZeroTimeValue, utils.ZeroTimeValue, 9999, 0)
|
||||
list := pages.Data.([]*dao.GetDeliveryOrdersResult)
|
||||
task := tasksch.NewParallelTask("RefreshJdDelivery", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(true), jxcontext.AdminCtx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
v := batchItemList[0].(*dao.GetDeliveryOrdersResult)
|
||||
if v != nil && v.VendorWaybillID != "" {
|
||||
var (
|
||||
isDeliverying, isFinished, isCancel bool
|
||||
)
|
||||
if results, err := api.JdEclpAPI.QueryDynamicTraceInfo(v.VendorWaybillID); err == nil {
|
||||
for _, result := range results {
|
||||
if result.State == jdeclpapi.TraceInfoStateM640 {
|
||||
isDeliverying = true
|
||||
}
|
||||
if result.State == jdeclpapi.TraceInfoStateM650 || result.State == jdeclpapi.TraceInfoStateM790 {
|
||||
isCancel = true
|
||||
break
|
||||
}
|
||||
if result.State == jdeclpapi.TraceInfoState150 {
|
||||
isFinished = true
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
dOrder := &model.DeliveryOrder{}
|
||||
dOrder.ID = v.ID
|
||||
if err = dao.GetEntity(db, dOrder); err == nil {
|
||||
if isCancel {
|
||||
//退钱给发快递的
|
||||
dOrder.Status = model.OrderStatusCanceled
|
||||
userBill, _ := dao.GetUserBill(db, v.UserID, "")
|
||||
err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeSpJob, v.PayPrice+v.DiffPrice, 2)
|
||||
} else if isFinished {
|
||||
//快递任务要完成
|
||||
dOrder.Status = model.OrderStatusFinished
|
||||
err = AuditJob(ctx, utils.Str2Int(dOrder.JobOrderID), model.JobOrderStatusAuditPass, "快递完成,自动审核通过", "")
|
||||
} else if isDeliverying {
|
||||
dOrder.Status = model.OrderStatusDelivering
|
||||
} else {
|
||||
return retVal, err
|
||||
}
|
||||
if err == nil {
|
||||
dao.UpdateEntity(db, dOrder, "Status")
|
||||
}
|
||||
}
|
||||
}
|
||||
return retVal, err
|
||||
}, list)
|
||||
tasksch.HandleTask(task, nil, true).Run()
|
||||
task.GetID()
|
||||
return err
|
||||
}
|
||||
|
||||
func GetDeliveryDetail(ctx *jxcontext.Context, vendorWaybillID string) (queryDynamicTraceInfo []*jdeclpapi.QueryDynamicTraceInfoResult, err error) {
|
||||
return api.JdEclpAPI.QueryDynamicTraceInfo(vendorWaybillID)
|
||||
}
|
||||
@@ -1239,10 +1277,11 @@ func CheckJdDeliveryWeight(ctx *jxcontext.Context) (err error) {
|
||||
return retVal, err
|
||||
}
|
||||
deliveryOrder.IsWeight = 2 //超重
|
||||
deliveryOrder.DiffPrice = utils.Float64TwoInt(diffPrice)
|
||||
}
|
||||
}
|
||||
deliveryOrder.ActualWeight = waybill.Weight
|
||||
dao.UpdateEntity(db, deliveryOrder, "IsWeight", "ActualWeight")
|
||||
dao.UpdateEntity(db, deliveryOrder, "IsWeight", "ActualWeight", "DiffPrice")
|
||||
return retVal, err
|
||||
}, deliveryOrders)
|
||||
tasksch.HandleTask(task, nil, true).Run()
|
||||
|
||||
@@ -303,6 +303,7 @@ func AddMessageGroup(ctx *jxcontext.Context, groupID int, userID string) (err er
|
||||
db = dao.GetDB()
|
||||
)
|
||||
messageGroupMembers, err := dao.GetMessageGroupMembers(db, groupID, 0, userID)
|
||||
messageGroupMembers3, err := dao.GetMessageGroupMembers(db, 0, 0, userID)
|
||||
messageGroupsResult, err := dao.GetMessageGroups(db, userID, groupID, model.GroupTypeMulit, false, "")
|
||||
messageGroupsResult2, err := dao.GetMessageGroups(db, "", groupID, model.GroupTypeMulit, false, "")
|
||||
messageGroupsResult3, err := dao.GetMessageGroups(db, userID, 0, model.GroupTypeMulit, false, "")
|
||||
@@ -313,6 +314,9 @@ func AddMessageGroup(ctx *jxcontext.Context, groupID int, userID string) (err er
|
||||
if len(messageGroupMembers) > 0 {
|
||||
return fmt.Errorf("此用户已经在该群组中了!")
|
||||
}
|
||||
if len(messageGroupMembers3) > 0 {
|
||||
return fmt.Errorf("您已经有群组[%v]了,不能申请加入其它群!", messageGroupMembers3[0].GroupID)
|
||||
}
|
||||
if len(messageGroupsResult) > 0 {
|
||||
return fmt.Errorf("请不要加入自己创建的群!")
|
||||
}
|
||||
|
||||
@@ -46,6 +46,8 @@ func doDailyWork() {
|
||||
event.DeleteMessageRecord(jxcontext.AdminCtx)
|
||||
//自动确认收货(刷新状态)
|
||||
cms.RefreshDropShippingJob(jxcontext.AdminCtx)
|
||||
//刷新京东快递
|
||||
cms.RefreshJdDelivery(jxcontext.AdminCtx)
|
||||
}
|
||||
|
||||
// 按时间序列循环
|
||||
|
||||
Reference in New Issue
Block a user