jds kuaidi
This commit is contained in:
@@ -217,7 +217,7 @@ func GetJobDetail(ctx *jxcontext.Context, jobID int, lng, lat float64) (job *dao
|
|||||||
return job, err
|
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 (
|
var (
|
||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
userID = ctx.GetUserID()
|
userID = ctx.GetUserID()
|
||||||
@@ -229,15 +229,15 @@ func AcceptJob(ctx *jxcontext.Context, jobID int) (errCode string, err error) {
|
|||||||
job.ID = jobID
|
job.ID = jobID
|
||||||
err = dao.GetEntity(db, job)
|
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 {
|
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)
|
num, err = checkJobOrders(db, 0, "<= "+utils.Int2Str(model.JobOrderStatusAccept), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||||
if num >= AcceptMaxCount {
|
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)
|
num, err = checkJobOrders(db, jobID, "<= "+utils.Int2Str(model.JobOrderStatusWaitAudit), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||||
if num > 0 {
|
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)
|
// num, err = checkJobOrders(db, "= "+utils.Int2Str(model.JobOrderStatusAuditUnPass), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||||
// if num > 0 {
|
// if num > 0 {
|
||||||
@@ -247,21 +247,21 @@ func AcceptJob(ctx *jxcontext.Context, jobID int) (errCode string, err error) {
|
|||||||
case model.JobLimitCountTypePO:
|
case model.JobLimitCountTypePO:
|
||||||
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||||
if num > 0 {
|
if num > 0 {
|
||||||
return errCode, fmt.Errorf("此任务只支持每人做一次!")
|
return 0, errCode, fmt.Errorf("此任务只支持每人做一次!")
|
||||||
}
|
}
|
||||||
case model.JobLimitCountTypePDO:
|
case model.JobLimitCountTypePDO:
|
||||||
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, DayTimeBegin, DayTimeEnd)
|
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, DayTimeBegin, DayTimeEnd)
|
||||||
if num > 0 {
|
if num > 0 {
|
||||||
return errCode, fmt.Errorf("此任务只支持每人每天做一次!")
|
return 0, errCode, fmt.Errorf("此任务只支持每人每天做一次!")
|
||||||
}
|
}
|
||||||
case model.JobLimitCountTypePWO:
|
case model.JobLimitCountTypePWO:
|
||||||
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, WeekTimeBegin, WeekTimeEnd)
|
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, WeekTimeBegin, WeekTimeEnd)
|
||||||
if num > 0 {
|
if num > 0 {
|
||||||
return errCode, fmt.Errorf("此任务只支持每人每周做一次!")
|
return 0, errCode, fmt.Errorf("此任务只支持每人每周做一次!")
|
||||||
}
|
}
|
||||||
case model.JobLimitCountTypeNoLimit:
|
case model.JobLimitCountTypeNoLimit:
|
||||||
default:
|
default:
|
||||||
return errCode, fmt.Errorf("不支持的任务限次类型!%v", job.LimitCountType)
|
return 0, errCode, fmt.Errorf("不支持的任务限次类型!%v", job.LimitCountType)
|
||||||
}
|
}
|
||||||
jobOrder := &model.JobOrder{
|
jobOrder := &model.JobOrder{
|
||||||
JobID: jobID,
|
JobID: jobID,
|
||||||
@@ -297,7 +297,7 @@ func AcceptJob(ctx *jxcontext.Context, jobID int) (errCode string, err error) {
|
|||||||
timer := checkLimitJobOrders(db, job, jobOrder, model.JobTimerTypeAccept)
|
timer := checkLimitJobOrders(db, job, jobOrder, model.JobTimerTypeAccept)
|
||||||
JobTimerMap[jobOrder.JobOrderID] = timer
|
JobTimerMap[jobOrder.JobOrderID] = timer
|
||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
return errCode, err
|
return jobOrder.JobOrderID, errCode, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func CancelAcceptJob(ctx *jxcontext.Context, jobID int, jobOrderID int64) (err error) {
|
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")
|
dao.UpdateEntity(db, mtMember, "DeletedAt")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
job, err := dao.GetJob(db, nil, nil, nil, []int{model.JobTypeMtMember}, utils.ZeroTimeValue, utils.ZeroTimeValue, false)
|
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 != "" {
|
if errCode != "" {
|
||||||
return errCode, err
|
return errCode, err
|
||||||
}
|
}
|
||||||
@@ -754,10 +754,6 @@ func SendJdDelivery(ctx *jxcontext.Context, dOrder *model.DeliveryOrder) (errCod
|
|||||||
panic(r)
|
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 {
|
if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeSpJob, dOrder.PayPrice); err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
@@ -765,7 +761,12 @@ func SendJdDelivery(ctx *jxcontext.Context, dOrder *model.DeliveryOrder) (errCod
|
|||||||
}
|
}
|
||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
job, err := dao.GetJob(db, nil, nil, nil, []int{model.JobTypeJdDelivery}, utils.ZeroTimeValue, utils.ZeroTimeValue, false)
|
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 != "" {
|
if errCode != "" {
|
||||||
return errCode, err
|
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 {
|
if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeSpJob, dOrder.PayPrice); err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err = CancelAcceptJob(ctx, 2, utils.Str2Int64(dOrder.JobOrderID)); err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
}
|
}
|
||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -100,6 +100,7 @@ type DeliveryOrder struct {
|
|||||||
ActualWeight float64 `json:"actualWeight"` //实际重量
|
ActualWeight float64 `json:"actualWeight"` //实际重量
|
||||||
IsWeight int `json:"isWeight"` //0代表未验重,1代表验重通过,2代表不通过
|
IsWeight int `json:"isWeight"` //0代表未验重,1代表验重通过,2代表不通过
|
||||||
Comment string `orm:"size(255)" json:"comment"` //备注
|
Comment string `orm:"size(255)" json:"comment"` //备注
|
||||||
|
JobOrderID string `orm:"column(job_order_id)" json:"jobOrderID"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *DeliveryOrder) TableUnique() [][]string {
|
func (v *DeliveryOrder) TableUnique() [][]string {
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ func (c *JobController) GetJobDetail() {
|
|||||||
// @router /AcceptJob [post]
|
// @router /AcceptJob [post]
|
||||||
func (c *JobController) AcceptJob() {
|
func (c *JobController) AcceptJob() {
|
||||||
c.callAcceptJob(func(params *tJobAcceptJobParams) (retVal interface{}, errCode string, err error) {
|
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
|
return retVal, errCode, err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user