jds kuaidi

This commit is contained in:
苏尹岚
2020-12-09 15:36:35 +08:00
parent 633aef8f10
commit 3de8b4ca4d
3 changed files with 22 additions and 16 deletions

View File

@@ -217,7 +217,7 @@ func GetJobDetail(ctx *jxcontext.Context, jobID int, lng, lat float64) (job *dao
return job, err
}
func AcceptJob(ctx *jxcontext.Context, jobID int) (errCode string, err error) {
func AcceptJob(ctx *jxcontext.Context, jobID int) (jobOrderID int64, errCode string, err error) {
var (
db = dao.GetDB()
userID = ctx.GetUserID()
@@ -229,15 +229,15 @@ func AcceptJob(ctx *jxcontext.Context, jobID int) (errCode string, err error) {
job.ID = jobID
err = dao.GetEntity(db, job)
if job.UserID == "" || job.Status == model.JobStatusFailed || job.Status == model.JobStatusOverdue || job.FinishedAt.Sub(time.Now()) <= 0 || job.SurplusCount <= 0 || job.LimitCountType <= 0 {
return errCode, fmt.Errorf("未找到该任务或该任务状态不正常,无法接单!")
return 0, errCode, fmt.Errorf("未找到该任务或该任务状态不正常,无法接单!")
}
num, err = checkJobOrders(db, 0, "<= "+utils.Int2Str(model.JobOrderStatusAccept), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
if num >= AcceptMaxCount {
return errCode, fmt.Errorf("每人最多接取" + utils.Int2Str(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 errCode, fmt.Errorf("您还有此任务未完成,请完成后再接取!")
return 0, errCode, fmt.Errorf("您还有此任务未完成,请完成后再接取!")
}
// num, err = checkJobOrders(db, "= "+utils.Int2Str(model.JobOrderStatusAuditUnPass), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
// if num > 0 {
@@ -247,21 +247,21 @@ func AcceptJob(ctx *jxcontext.Context, jobID int) (errCode string, err error) {
case model.JobLimitCountTypePO:
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
if num > 0 {
return errCode, fmt.Errorf("此任务只支持每人做一次!")
return 0, errCode, fmt.Errorf("此任务只支持每人做一次!")
}
case model.JobLimitCountTypePDO:
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, DayTimeBegin, DayTimeEnd)
if num > 0 {
return errCode, fmt.Errorf("此任务只支持每人每天做一次!")
return 0, errCode, fmt.Errorf("此任务只支持每人每天做一次!")
}
case model.JobLimitCountTypePWO:
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, WeekTimeBegin, WeekTimeEnd)
if num > 0 {
return errCode, fmt.Errorf("此任务只支持每人每周做一次!")
return 0, errCode, fmt.Errorf("此任务只支持每人每周做一次!")
}
case model.JobLimitCountTypeNoLimit:
default:
return errCode, fmt.Errorf("不支持的任务限次类型!%v", job.LimitCountType)
return 0, errCode, fmt.Errorf("不支持的任务限次类型!%v", job.LimitCountType)
}
jobOrder := &model.JobOrder{
JobID: jobID,
@@ -297,7 +297,7 @@ func AcceptJob(ctx *jxcontext.Context, jobID int) (errCode string, err error) {
timer := checkLimitJobOrders(db, job, jobOrder, model.JobTimerTypeAccept)
JobTimerMap[jobOrder.JobOrderID] = timer
dao.Commit(db)
return errCode, err
return jobOrder.JobOrderID, errCode, err
}
func CancelAcceptJob(ctx *jxcontext.Context, jobID int, jobOrderID int64) (err error) {
@@ -656,7 +656,7 @@ func RechargeMtMembers(ctx *jxcontext.Context, phone int) (errCode string, err e
dao.UpdateEntity(db, mtMember, "DeletedAt")
if err == nil {
job, err := dao.GetJob(db, nil, nil, nil, []int{model.JobTypeMtMember}, utils.ZeroTimeValue, utils.ZeroTimeValue, false)
errCode, err = AcceptJob(ctx, job.ID)
_, errCode, err = AcceptJob(ctx, job.ID)
if errCode != "" {
return errCode, err
}
@@ -754,10 +754,6 @@ func SendJdDelivery(ctx *jxcontext.Context, dOrder *model.DeliveryOrder) (errCod
panic(r)
}
}()
if err = dao.CreateEntity(db, dOrder); err != nil {
dao.Rollback(db)
return
}
//账户支出明细
if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeSpJob, dOrder.PayPrice); err != nil {
dao.Rollback(db)
@@ -765,7 +761,12 @@ func SendJdDelivery(ctx *jxcontext.Context, dOrder *model.DeliveryOrder) (errCod
}
dao.Commit(db)
job, err := dao.GetJob(db, nil, nil, nil, []int{model.JobTypeJdDelivery}, utils.ZeroTimeValue, utils.ZeroTimeValue, false)
errCode, err = AcceptJob(ctx, job.ID)
jobOrderID, errCode, err := AcceptJob(ctx, job.ID)
dOrder.JobOrderID = utils.Int64ToStr(jobOrderID)
if err = dao.CreateEntity(db, dOrder); err != nil {
dao.Rollback(db)
return
}
if errCode != "" {
return errCode, err
}
@@ -820,6 +821,10 @@ func CancelJdDelivery(ctx *jxcontext.Context, vendorWaybillID, reason string) (e
}
if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeSpJob, dOrder.PayPrice); err != nil {
dao.Rollback(db)
return
}
if err = CancelAcceptJob(ctx, 2, utils.Str2Int64(dOrder.JobOrderID)); err != nil {
dao.Rollback(db)
}
dao.Commit(db)
return err

View File

@@ -100,6 +100,7 @@ type DeliveryOrder struct {
ActualWeight float64 `json:"actualWeight"` //实际重量
IsWeight int `json:"isWeight"` //0代表未验重1代表验重通过2代表不通过
Comment string `orm:"size(255)" json:"comment"` //备注
JobOrderID string `orm:"column(job_order_id)" json:"jobOrderID"`
}
func (v *DeliveryOrder) TableUnique() [][]string {

View File

@@ -118,7 +118,7 @@ func (c *JobController) GetJobDetail() {
// @router /AcceptJob [post]
func (c *JobController) AcceptJob() {
c.callAcceptJob(func(params *tJobAcceptJobParams) (retVal interface{}, errCode string, err error) {
errCode, err = cms.AcceptJob(params.Ctx, params.JobID)
_, errCode, err = cms.AcceptJob(params.Ctx, params.JobID)
return retVal, errCode, err
})
}