作者 陈志颖

feat:增加已过期待领取竞标任务筛选

... ... @@ -15,6 +15,8 @@ type AcceptanceTaskCommand struct {
Operator int64 `json:"operator" valid:"Required"`
// 任务参与者UID列表
Participators []int64 `json:"participators,omitempty"`
// 实际奖励素币值
SuMoney float64 `jsons:"suMoney"`
// 任务贡献占比
TaskPercentage []*domain.TaskPercentageItem `json:"taskPercentage"`
// 引用资源解决分
... ...
... ... @@ -11,12 +11,10 @@ type SearchTaskCommand struct {
CompanyId int64 `json:"companyId" valid:"Required"`
// 任务发起者UID
Sponsor int64 `json:"sponsor,omitempty"`
// 任务内容匹配(我发布的),返回所有任务类型的任务
// 任务内容匹配
TaskContentMatch string `json:"taskContentMatch,omitempty"`
// 任务名称匹配(赚素币),返回任务类型为竞标任务和抢单任务
// 任务名称匹配
TaskNameMatch string `json:"taskNameMatch,omitempty"`
//// 任务名称匹配(进行中和已完成),返回任务状态为进行中和已完成的任务
//TaskStatusMatch string `json:"taskStatusMatch,omitempty"`
// 任务类型
TaskType int `json:"taskType,omitempty"`
// 任务类型ID列表
... ...
... ... @@ -24,7 +24,6 @@ const (
TASK_STATUS_COMPLETED //已完成
TASK_STATUS_CLOSED //关闭
TASK_STATUS_UNCONFIRMED //待确认
TASK_STATUS_EXPIRED //已过期
)
// 任务
... ... @@ -103,7 +102,7 @@ type TaskStatus interface {
ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo, plannedCompletionTime time.Time) error
ApplyComplete(task *Task) error
Off(task *Task) error
Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error
Acceptance(task *Task, participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error
ConfirmTask(task *Task, plannedCompletionTime time.Time) error
RejectReceiver(task *Task) error
}
... ... @@ -209,7 +208,7 @@ func (status *UnReleasedStatus) Off(task *Task) error {
return fmt.Errorf("待发布的任务不允许关闭")
}
func (status *UnReleasedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
func (status *UnReleasedStatus) Acceptance(task *Task, participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
return fmt.Errorf("待发布的任务不允许验收")
}
... ... @@ -360,7 +359,7 @@ func (status *UnClaimedStatus) Off(task *Task) error {
return nil
}
func (status *UnClaimedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
func (status *UnClaimedStatus) Acceptance(task *Task, participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
return fmt.Errorf("待领取的任务不允许验收")
}
... ... @@ -407,7 +406,7 @@ func (status *UnderwayStatus) Off(task *Task) error {
return nil
}
func (status *UnderwayStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
func (status *UnderwayStatus) Acceptance(task *Task, participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
return fmt.Errorf("进行中的任务不允许验收")
}
... ... @@ -465,8 +464,9 @@ func (status *UnAcceptanceStatus) Off(task *Task) error {
return nil
}
func (status *UnAcceptanceStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
func (status *UnAcceptanceStatus) Acceptance(task *Task, participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
task.Participators = participators
task.SuMoney = suMoney
task.TaskPercentage = taskPercentage
task.SolveReport = solveReport
task.SolvePictureUrls = solvePictureUrls
... ... @@ -525,7 +525,7 @@ func (status *CompletedStatus) Off(task *Task) error {
return fmt.Errorf("已完成的任务不允许申请完成任务")
}
func (status *CompletedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
func (status *CompletedStatus) Acceptance(task *Task, participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
return fmt.Errorf("已完成的任务不允许验收")
}
... ... @@ -567,7 +567,7 @@ func (status *ClosedStatus) Off(task *Task) error {
return fmt.Errorf("已关闭的任务不允许关闭")
}
func (status *ClosedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
func (status *ClosedStatus) Acceptance(task *Task, participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
return fmt.Errorf("已关闭的任务不允许验收")
}
... ... @@ -611,7 +611,7 @@ func (status *UnConfirmedStatus) Off(task *Task) error {
return nil
}
func (status *UnConfirmedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
func (status *UnConfirmedStatus) Acceptance(task *Task, participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
return fmt.Errorf("待确认的任务不允许验收")
}
... ... @@ -676,8 +676,8 @@ func (task *Task) Off() error {
return task.CurrentStatus.Off(task)
}
func (task *Task) Acceptance(participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
return task.CurrentStatus.Acceptance(task, participators, taskPercentage, referenceResourceScore, solveReport, solvePictureUrls, actualCompletionTime)
func (task *Task) Acceptance(participators []*EmployeeInfo, suMoney float64, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error {
return task.CurrentStatus.Acceptance(task, participators, suMoney, taskPercentage, referenceResourceScore, solveReport, solvePictureUrls, actualCompletionTime)
}
func (task *Task) ConfirmTask(plannedCompletionTime time.Time) error {
... ...
... ... @@ -288,12 +288,15 @@ func (dao *TaskDao) CalculatePersonTask(uid int64) (map[string]interface{}, erro
} else {
completedAsParticipator = int64(count)
}
if count, err := tx.Model(taskModel).
// 已过期任务统计(竞标时间过期的竞标任务,状态为待领取)
currentTime := time.Now()
currentDay := time.Date(currentTime.Year(), currentTime.Month(), currentTime.Day(), 0, 0, 0, 0, time.Now().Location())
if count, err := tx.Model(taskModel).Relation("RobInfo").Relation("BidInfo").
Where(`task.sponsor @> '{"uid":?}'`, uid).
//Where(`task.task_type = ? `, domain.TASK_STATUS_EXPIRED).
Where(`task.task_type = ?`, 2).
Where("task.task_status = ? ", domain.TASK_STATUS_UNCLAIMED).
Where(`task.planned_completion_time < ?`, time.Now()).
Where(`task.task_type = ?`, domain.TASK_TYPE_BID).
Where("bid_info.bid_end_time >= ?", currentDay).
Where("bid_info.bid_end_time < ?", currentDay).
Count(); err != nil {
return nil, err
} else {
... ...
... ... @@ -27,7 +27,7 @@ type Task struct {
CustomerValues []int `pg:",array"`
// 任务性质
TaskNature int
// 奖励素币
// 实际奖励素币
SuMoney float64
// 最小奖励素币
MinSuMoney float64
... ...
... ... @@ -96,7 +96,6 @@ func (repository *TaskRepository) FindOne(queryOptions map[string]interface{}) (
}
}
// TODO 添加任务名称搜索
func (repository *TaskRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.Task, error) {
tx := repository.transactionContext.PgTx
var taskModels []*models.Task
... ... @@ -163,16 +162,9 @@ func (repository *TaskRepository) Find(queryOptions map[string]interface{}) (int
if taskContentMatch, ok := queryOptions["taskContentMatch"]; ok && (taskContentMatch != "") {
query = query.Where("task.task_name LIKE ?", fmt.Sprintf("%%%s%%", taskContentMatch.(string)))
}
// 任务名称匹配(赚素币)
if taskNameMatch, ok := queryOptions["taskNameMatch"]; ok && (taskNameMatch != "") { //
query = query.Where("task.task_name LIKE ?", fmt.Sprintf("%%%s%%", taskNameMatch.(string)))
//query = query.Where("task.task_type IN (?)", pg.In([]int{1, 2}))
}
//// 任务名称匹配(进行中和已完成),返回任务状态为进行中和已完成的任务
//if taskStatusMatch, ok := queryOptions["taskStatusMatch"]; ok && (taskStatusMatch != "") {
// query = query.Where("task.task_name LIKE ?", fmt.Sprintf("%%%s%%", taskStatusMatch.(string)))
// query = query.Where("task.task_status IN (?)", pg.In([]int{3, 5}))
//}
if isRewardTake, ok := queryOptions["isRewardTake"]; ok && (isRewardTake != false) {
query = query.Where(`task.is_reward_take = ?`, isRewardTake)
}
... ...