正在显示
60 个修改的文件
包含
2284 行增加
和
239 行删除
| @@ -6,6 +6,22 @@ import ( | @@ -6,6 +6,22 @@ import ( | ||
| 6 | domainService "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/domain_service" | 6 | domainService "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/domain_service" |
| 7 | ) | 7 | ) |
| 8 | 8 | ||
| 9 | +func CreateRejectTaskReceiverService(options map[string]interface{}) (service.RejectTaskReceiverService, error) { | ||
| 10 | + var transactionContext *pgTransaction.TransactionContext | ||
| 11 | + if value, ok := options["transactionContext"]; ok { | ||
| 12 | + transactionContext = value.(*pgTransaction.TransactionContext) | ||
| 13 | + } | ||
| 14 | + return domainService.NewRejectTaskReceiverService(transactionContext) | ||
| 15 | +} | ||
| 16 | + | ||
| 17 | +func CreateConfirmRobTaskService(options map[string]interface{}) (service.ConfirmRobTaskService, error) { | ||
| 18 | + var transactionContext *pgTransaction.TransactionContext | ||
| 19 | + if value, ok := options["transactionContext"]; ok { | ||
| 20 | + transactionContext = value.(*pgTransaction.TransactionContext) | ||
| 21 | + } | ||
| 22 | + return domainService.NewConfirmRobTaskService(transactionContext) | ||
| 23 | +} | ||
| 24 | + | ||
| 9 | func CreateReleaseTaskService(options map[string]interface{}) (service.ReleaseTaskService, error) { | 25 | func CreateReleaseTaskService(options map[string]interface{}) (service.ReleaseTaskService, error) { |
| 10 | var transactionContext *pgTransaction.TransactionContext | 26 | var transactionContext *pgTransaction.TransactionContext |
| 11 | if value, ok := options["transactionContext"]; ok { | 27 | if value, ok := options["transactionContext"]; ok { |
| @@ -61,3 +61,11 @@ func CreateProjectBelongRepository(options map[string]interface{}) (domain.Proje | @@ -61,3 +61,11 @@ func CreateProjectBelongRepository(options map[string]interface{}) (domain.Proje | ||
| 61 | } | 61 | } |
| 62 | return repository.NewProjectBelongRepository(transactionContext) | 62 | return repository.NewProjectBelongRepository(transactionContext) |
| 63 | } | 63 | } |
| 64 | + | ||
| 65 | +func CreateRejectTaskRecordRepository(options map[string]interface{}) (domain.RejectTaskRecordRepository, error) { | ||
| 66 | + var transactionContext *pg.TransactionContext | ||
| 67 | + if value, ok := options["transactionContext"]; ok { | ||
| 68 | + transactionContext = value.(*pg.TransactionContext) | ||
| 69 | + } | ||
| 70 | + return repository.NewRejectTaskRecordRepository(transactionContext) | ||
| 71 | +} |
| @@ -3,6 +3,7 @@ package command | @@ -3,6 +3,7 @@ package command | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | 5 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" |
| 6 | + "time" | ||
| 6 | 7 | ||
| 7 | "github.com/astaxie/beego/validation" | 8 | "github.com/astaxie/beego/validation" |
| 8 | ) | 9 | ) |
| @@ -22,6 +23,8 @@ type AcceptanceTaskCommand struct { | @@ -22,6 +23,8 @@ type AcceptanceTaskCommand struct { | ||
| 22 | SolveReport string `json:"solveReport,omitempty"` | 23 | SolveReport string `json:"solveReport,omitempty"` |
| 23 | // 解决图片URL列表 | 24 | // 解决图片URL列表 |
| 24 | SolvePictureUrls []string `json:"solvePictureUrls,omitempty"` | 25 | SolvePictureUrls []string `json:"solvePictureUrls,omitempty"` |
| 26 | + // 实际完成时间 | ||
| 27 | + ActualCompletionTime time.Time `json:"actualCompletionTime"` | ||
| 25 | } | 28 | } |
| 26 | 29 | ||
| 27 | //func (acceptanceTaskCommand *AcceptanceTaskCommand) Valid(validation *validation.Validation) { | 30 | //func (acceptanceTaskCommand *AcceptanceTaskCommand) Valid(validation *validation.Validation) { |
| @@ -2,6 +2,7 @@ package command | @@ -2,6 +2,7 @@ package command | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | + "time" | ||
| 5 | 6 | ||
| 6 | "github.com/astaxie/beego/validation" | 7 | "github.com/astaxie/beego/validation" |
| 7 | ) | 8 | ) |
| @@ -13,12 +14,10 @@ type ChooseSuccessfulBidderCommand struct { | @@ -13,12 +14,10 @@ type ChooseSuccessfulBidderCommand struct { | ||
| 13 | Operator int64 `json:"operator" valid:"Required"` | 14 | Operator int64 `json:"operator" valid:"Required"` |
| 14 | // 中标者uid | 15 | // 中标者uid |
| 15 | SuccessfulBidder int64 `json:"successfulBidder" valid:"Required"` | 16 | SuccessfulBidder int64 `json:"successfulBidder" valid:"Required"` |
| 17 | + // 计划完成时间 | ||
| 18 | + PlannedCompletionTime time.Time `json:"plannedCompletionTime" valid:"Required"` | ||
| 16 | } | 19 | } |
| 17 | 20 | ||
| 18 | -//func (chooseSuccessfulBidderCommand *ChooseSuccessfulBidderCommand) Valid(validation *validation.Validation) { | ||
| 19 | -// validation.SetError("CustomValid", "未实现的自定义认证") | ||
| 20 | -//} | ||
| 21 | - | ||
| 22 | func (chooseSuccessfulBidderCommand *ChooseSuccessfulBidderCommand) ValidateCommand() error { | 21 | func (chooseSuccessfulBidderCommand *ChooseSuccessfulBidderCommand) ValidateCommand() error { |
| 23 | valid := validation.Validation{} | 22 | valid := validation.Validation{} |
| 24 | b, err := valid.Valid(chooseSuccessfulBidderCommand) | 23 | b, err := valid.Valid(chooseSuccessfulBidderCommand) |
| 1 | +package command | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + "time" | ||
| 6 | + | ||
| 7 | + "github.com/astaxie/beego/validation" | ||
| 8 | +) | ||
| 9 | + | ||
| 10 | +type ConfirmRobTaskCommand struct { | ||
| 11 | + // 任务ID | ||
| 12 | + TaskId int64 `json:"taskId" valid:"Required"` | ||
| 13 | + // 操作人uid | ||
| 14 | + Operator int64 `json:"operator" valid:"Required"` | ||
| 15 | + // 计划完成时间 | ||
| 16 | + PlannedCompletionTime time.Time `json:"plannedCompletionTime" valid:"Required"` | ||
| 17 | +} | ||
| 18 | + | ||
| 19 | +func (confirmRobTaskCommand *ConfirmRobTaskCommand) ValidateCommand() error { | ||
| 20 | + valid := validation.Validation{} | ||
| 21 | + b, err := valid.Valid(confirmRobTaskCommand) | ||
| 22 | + if err != nil { | ||
| 23 | + return err | ||
| 24 | + } | ||
| 25 | + if !b { | ||
| 26 | + for _, validErr := range valid.Errors { | ||
| 27 | + return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
| 28 | + } | ||
| 29 | + } | ||
| 30 | + return nil | ||
| 31 | +} |
| @@ -14,17 +14,19 @@ type CreateTaskCommand struct { | @@ -14,17 +14,19 @@ type CreateTaskCommand struct { | ||
| 14 | // 任务名称 | 14 | // 任务名称 |
| 15 | TaskName string `json:"taskName" valid:"Required"` | 15 | TaskName string `json:"taskName" valid:"Required"` |
| 16 | // 任务类型 | 16 | // 任务类型 |
| 17 | - TaskType int `json:"taskType" valid:"Required"` | 17 | + TaskType int `json:"taskType,omitempty"` |
| 18 | // 任务发起者uid | 18 | // 任务发起者uid |
| 19 | Sponsor int64 `json:"sponsor" valid:"Required"` | 19 | Sponsor int64 `json:"sponsor" valid:"Required"` |
| 20 | // 引用类型 | 20 | // 引用类型 |
| 21 | ReferenceResourceType int `json:"referenceResourceType,omitempty"` | 21 | ReferenceResourceType int `json:"referenceResourceType,omitempty"` |
| 22 | // 引用资源项列表 | 22 | // 引用资源项列表 |
| 23 | ReferenceResourceItems []*domain.ReferenceResourceItem `json:"referenceResourceItems,omitempty"` | 23 | ReferenceResourceItems []*domain.ReferenceResourceItem `json:"referenceResourceItems,omitempty"` |
| 24 | + // 项目归属 | ||
| 25 | + ProjectBelong int `json:"projectBelong,omitempty"` | ||
| 24 | // 客户价值列表 | 26 | // 客户价值列表 |
| 25 | - CustomerValue []string `json:"customerValue,omitempty"` | 27 | + CustomerValues []int `json:"customerValues,omitempty"` |
| 26 | // 任务性质 | 28 | // 任务性质 |
| 27 | - TaskNature string `json:"taskNature,omitempty"` | 29 | + TaskNature int `json:"taskNature,omitempty"` |
| 28 | // 奖励素币 | 30 | // 奖励素币 |
| 29 | SuMoney float64 `json:"suMoney,omitempty"` | 31 | SuMoney float64 `json:"suMoney,omitempty"` |
| 30 | // 验收标准 | 32 | // 验收标准 |
| @@ -39,12 +41,14 @@ type CreateTaskCommand struct { | @@ -39,12 +41,14 @@ type CreateTaskCommand struct { | ||
| 39 | BidStartTime time.Time `json:"bidStartTime,omitempty"` | 41 | BidStartTime time.Time `json:"bidStartTime,omitempty"` |
| 40 | // 竞标结束时间 | 42 | // 竞标结束时间 |
| 41 | BidEndTime time.Time `json:"bidEndTime,omitempty"` | 43 | BidEndTime time.Time `json:"bidEndTime,omitempty"` |
| 44 | + // 是否截止时间前一天提醒 | ||
| 45 | + IsRemind bool `json:"isRemind,omitempty"` | ||
| 46 | + // 计划完成时间 | ||
| 47 | + PlannedCompletionTime time.Time `json:"plannedCompletionTime,omitempty"` | ||
| 48 | + // 指派人员uid | ||
| 49 | + AssignedPerson int64 `json:"assignedPerson,omitempty"` | ||
| 42 | } | 50 | } |
| 43 | 51 | ||
| 44 | -//func (createTaskCommand *CreateTaskCommand) Valid(validation *validation.Validation) { | ||
| 45 | -// validation.SetError("CustomValid", "未实现的自定义认证") | ||
| 46 | -//} | ||
| 47 | - | ||
| 48 | func (createTaskCommand *CreateTaskCommand) ValidateCommand() error { | 52 | func (createTaskCommand *CreateTaskCommand) ValidateCommand() error { |
| 49 | valid := validation.Validation{} | 53 | valid := validation.Validation{} |
| 50 | b, err := valid.Valid(createTaskCommand) | 54 | b, err := valid.Valid(createTaskCommand) |
| 1 | +package command | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + | ||
| 6 | + "github.com/astaxie/beego/validation" | ||
| 7 | +) | ||
| 8 | + | ||
| 9 | +type RejectTaskReceiverCommand struct { | ||
| 10 | + // 任务ID | ||
| 11 | + TaskId int64 `json:"taskId" valid:"Required"` | ||
| 12 | + // 操作人uid | ||
| 13 | + Operator int64 `json:"operator" valid:"Required"` | ||
| 14 | + // 驳回理由 | ||
| 15 | + RejectReason string `json:"rejectReason" valid:"Required"` | ||
| 16 | +} | ||
| 17 | + | ||
| 18 | +func (rejectTaskReceiverCommand *RejectTaskReceiverCommand) ValidateCommand() error { | ||
| 19 | + valid := validation.Validation{} | ||
| 20 | + b, err := valid.Valid(rejectTaskReceiverCommand) | ||
| 21 | + if err != nil { | ||
| 22 | + return err | ||
| 23 | + } | ||
| 24 | + if !b { | ||
| 25 | + for _, validErr := range valid.Errors { | ||
| 26 | + return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
| 27 | + } | ||
| 28 | + } | ||
| 29 | + return nil | ||
| 30 | +} |
| @@ -14,10 +14,12 @@ type SearchOffTaskRecordCommand struct { | @@ -14,10 +14,12 @@ type SearchOffTaskRecordCommand struct { | ||
| 14 | TaskContentMatch string `json:"taskContentMatch,omitempty"` | 14 | TaskContentMatch string `json:"taskContentMatch,omitempty"` |
| 15 | // 任务类型 | 15 | // 任务类型 |
| 16 | TaskType int `json:"taskType,omitempty"` | 16 | TaskType int `json:"taskType,omitempty"` |
| 17 | + // 项目归属 | ||
| 18 | + ProjectBelongs []int `json:"projectBelongs,omitempty"` | ||
| 17 | // 客户价值 | 19 | // 客户价值 |
| 18 | - CustomerValue []string `json:"customerValue,omitempty"` | 20 | + CustomerValues []int `json:"customerValues,omitempty"` |
| 19 | // 任务性质 | 21 | // 任务性质 |
| 20 | - TaskNature string `json:"taskNature,omitempty"` | 22 | + TaskNatures []int `json:"taskNatures,omitempty"` |
| 21 | // 关闭任务时间区间-开始时间 | 23 | // 关闭任务时间区间-开始时间 |
| 22 | OffStartTime time.Time `json:"offStartTime,omitempty"` | 24 | OffStartTime time.Time `json:"offStartTime,omitempty"` |
| 23 | // 关闭任务时间区间-截止时间 | 25 | // 关闭任务时间区间-截止时间 |
| 1 | +package command | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + "time" | ||
| 6 | + | ||
| 7 | + "github.com/astaxie/beego/validation" | ||
| 8 | +) | ||
| 9 | + | ||
| 10 | +type SearchRejectTaskRecordCommand struct { | ||
| 11 | + // 公司ID | ||
| 12 | + CompanyId int64 `json:"companyId" valid:"Required"` | ||
| 13 | + // 任务内容匹配 | ||
| 14 | + TaskContentMatch string `json:"taskContentMatch,omitempty"` | ||
| 15 | + // 任务类型 | ||
| 16 | + TaskType int `json:"taskType,omitempty"` | ||
| 17 | + // 项目归属 | ||
| 18 | + ProjectBelongs []int `json:"projectBelongs,omitempty"` | ||
| 19 | + // 客户价值 | ||
| 20 | + CustomerValues []int `json:"customerValues,omitempty"` | ||
| 21 | + // 任务性质 | ||
| 22 | + TaskNatures []int `json:"taskNatures,omitempty"` | ||
| 23 | + // 驳回任务时间区间-开始时间 | ||
| 24 | + RejectStartTime time.Time `json:"rejectStartTime,omitempty"` | ||
| 25 | + // 驳回任务时间区间-截止时间 | ||
| 26 | + RejectEndTime time.Time `json:"rejectEndTime,omitempty"` | ||
| 27 | + // 查询偏离量 | ||
| 28 | + Offset int `json:"offset,omitempty"` | ||
| 29 | + // 查询限制 | ||
| 30 | + Limit int `json:"limit,omitempty"` | ||
| 31 | +} | ||
| 32 | + | ||
| 33 | +func (searchRejectTaskRecordCommand *SearchRejectTaskRecordCommand) ValidateCommand() error { | ||
| 34 | + valid := validation.Validation{} | ||
| 35 | + b, err := valid.Valid(searchRejectTaskRecordCommand) | ||
| 36 | + if err != nil { | ||
| 37 | + return err | ||
| 38 | + } | ||
| 39 | + if !b { | ||
| 40 | + for _, validErr := range valid.Errors { | ||
| 41 | + return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
| 42 | + } | ||
| 43 | + } | ||
| 44 | + return nil | ||
| 45 | +} |
| @@ -9,7 +9,7 @@ import ( | @@ -9,7 +9,7 @@ import ( | ||
| 9 | type SearchTaskCommand struct { | 9 | type SearchTaskCommand struct { |
| 10 | // 公司ID | 10 | // 公司ID |
| 11 | CompanyId int64 `json:"companyId" valid:"Required"` | 11 | CompanyId int64 `json:"companyId" valid:"Required"` |
| 12 | - // 任务发起者 | 12 | + // 任务发起者UID |
| 13 | Sponsor int64 `json:"sponsor,omitempty"` | 13 | Sponsor int64 `json:"sponsor,omitempty"` |
| 14 | // 任务内容匹配 | 14 | // 任务内容匹配 |
| 15 | TaskContentMatch string `json:"taskContentMatch,omitempty"` | 15 | TaskContentMatch string `json:"taskContentMatch,omitempty"` |
| @@ -17,36 +17,38 @@ type SearchTaskCommand struct { | @@ -17,36 +17,38 @@ type SearchTaskCommand struct { | ||
| 17 | TaskType int `json:"taskType,omitempty"` | 17 | TaskType int `json:"taskType,omitempty"` |
| 18 | // 任务状态 | 18 | // 任务状态 |
| 19 | TaskStatus int `json:"taskStatus,omitempty"` | 19 | TaskStatus int `json:"taskStatus,omitempty"` |
| 20 | + // 项目归属 | ||
| 21 | + ProjectBelongs []int `json:"projectBelongs,omitempty"` | ||
| 20 | // 客户价值 | 22 | // 客户价值 |
| 21 | - CustomerValue []string `json:"customerValue,omitempty"` | 23 | + CustomerValues []int `json:"customerValues,omitempty"` |
| 22 | // 任务性质 | 24 | // 任务性质 |
| 23 | - TaskNature string `json:"taskNature,omitempty"` | 25 | + TaskNatures []int `json:"taskNatures,omitempty"` |
| 24 | // 是否悬赏任务 | 26 | // 是否悬赏任务 |
| 25 | IsRewardTake bool `json:"isRewardTake,omitempty"` | 27 | IsRewardTake bool `json:"isRewardTake,omitempty"` |
| 26 | // 竞标参与者UID | 28 | // 竞标参与者UID |
| 27 | Bidder int64 `json:"bidder,omitempty"` | 29 | Bidder int64 `json:"bidder,omitempty"` |
| 28 | // 竞标时间(1全部,2已截止,3未截止) | 30 | // 竞标时间(1全部,2已截止,3未截止) |
| 29 | BidTimeMatch int `json:"bidTimeMatch,omitempty"` | 31 | BidTimeMatch int `json:"bidTimeMatch,omitempty"` |
| 30 | - // 任务领取人 | 32 | + // 任务领取人UID |
| 31 | Receiver int64 `json:"receiver,omitempty"` | 33 | Receiver int64 `json:"receiver,omitempty"` |
| 32 | - // 任务参与者 | 34 | + // 任务参与者UID |
| 33 | Participator int64 `json:"participator,omitempty"` | 35 | Participator int64 `json:"participator,omitempty"` |
| 34 | - //是否过滤关闭状态任务 | 36 | + // 指派人员UID |
| 37 | + AssignedPerson int64 `json:"assignedPerson,omitempty"` | ||
| 38 | + // 是否过滤关闭状态任务 | ||
| 35 | IsFilterCloseStatus bool `json:"isFilterCloseStatus,omitempty"` | 39 | IsFilterCloseStatus bool `json:"isFilterCloseStatus,omitempty"` |
| 36 | - //是否过滤待发布状态任务 | 40 | + // 是否过滤待发布状态任务 |
| 37 | IsFilterUnReleasedStatus bool `json:"isFilterUnReleasedStatus,omitempty"` | 41 | IsFilterUnReleasedStatus bool `json:"isFilterUnReleasedStatus,omitempty"` |
| 38 | - //按创建任务时间排序(ASC,DESC) | 42 | + // 按创建任务时间排序(ASC,DESC) |
| 39 | SortByCreateTime string `json:"sortByCreateTime,omitempty"` | 43 | SortByCreateTime string `json:"sortByCreateTime,omitempty"` |
| 40 | - //按发布任务时间排序(ASC,DESC) | 44 | + // 按发布任务时间排序(ASC,DESC) |
| 41 | SortByReleaseTime string `json:"sortByReleaseTime,omitempty"` | 45 | SortByReleaseTime string `json:"sortByReleaseTime,omitempty"` |
| 42 | - //按领取任务时间排序(ASC,DESC) | 46 | + // 按领取任务时间排序(ASC,DESC) |
| 43 | SortByReceiveTime string `json:"sortByReceiveTime,omitempty"` | 47 | SortByReceiveTime string `json:"sortByReceiveTime,omitempty"` |
| 44 | - //按完成任务操作时间排序(ASC,DESC) | 48 | + // 按完成任务操作时间排序(ASC,DESC) |
| 45 | SortByCompleteTime string `json:"sortByCompleteTime,omitempty"` | 49 | SortByCompleteTime string `json:"sortByCompleteTime,omitempty"` |
| 46 | - //按验收方验收时间排序(ASC,DESC) | 50 | + // 按验收方验收时间排序(ASC,DESC) |
| 47 | SortByAcceptanceTime string `json:"sortByAcceptanceTime,omitempty"` | 51 | SortByAcceptanceTime string `json:"sortByAcceptanceTime,omitempty"` |
| 48 | - //按参与竞标时间排序(ASC,DESC) | ||
| 49 | - SortByBidTime string `json:"sortByBidTime,omitempty"` | ||
| 50 | // 查询偏离量 | 52 | // 查询偏离量 |
| 51 | Offset int `json:"offset,omitempty"` | 53 | Offset int `json:"offset,omitempty"` |
| 52 | // 查询限制 | 54 | // 查询限制 |
| @@ -17,10 +17,12 @@ type UpdateTaskCommand struct { | @@ -17,10 +17,12 @@ type UpdateTaskCommand struct { | ||
| 17 | ReferenceResourceType int `json:"referenceResourceType,omitempty"` | 17 | ReferenceResourceType int `json:"referenceResourceType,omitempty"` |
| 18 | // 引用资源项列表 | 18 | // 引用资源项列表 |
| 19 | ReferenceResourceItems []*domain.ReferenceResourceItem `json:"referenceResourceItems,omitempty"` | 19 | ReferenceResourceItems []*domain.ReferenceResourceItem `json:"referenceResourceItems,omitempty"` |
| 20 | + // 项目归属 | ||
| 21 | + ProjectBelong int `json:"projectBelong,omitempty"` | ||
| 20 | // 客户价值列表 | 22 | // 客户价值列表 |
| 21 | - CustomerValue []string `json:"customerValue,omitempty"` | 23 | + CustomerValues []int `json:"customerValues,omitempty"` |
| 22 | // 任务性质 | 24 | // 任务性质 |
| 23 | - TaskNature string `json:"taskNature,omitempty"` | 25 | + TaskNature int `json:"taskNature,omitempty"` |
| 24 | // 奖励素币 | 26 | // 奖励素币 |
| 25 | SuMoney float64 `json:"suMoney,omitempty"` | 27 | SuMoney float64 `json:"suMoney,omitempty"` |
| 26 | // 验收标准 | 28 | // 验收标准 |
| @@ -35,12 +37,14 @@ type UpdateTaskCommand struct { | @@ -35,12 +37,14 @@ type UpdateTaskCommand struct { | ||
| 35 | BidStartTime time.Time `json:"bidStartTime,omitempty"` | 37 | BidStartTime time.Time `json:"bidStartTime,omitempty"` |
| 36 | // 竞标结束时间 | 38 | // 竞标结束时间 |
| 37 | BidEndTime time.Time `json:"bidEndTime,omitempty"` | 39 | BidEndTime time.Time `json:"bidEndTime,omitempty"` |
| 40 | + // 是否截止时间前一天提醒 | ||
| 41 | + IsRemind bool `json:"isRemind,omitempty"` | ||
| 42 | + // 计划完成时间 | ||
| 43 | + PlannedCompletionTime time.Time `json:"plannedCompletionTime,omitempty"` | ||
| 44 | + // 指派人员uid | ||
| 45 | + AssignedPerson int64 `json:"assignedPerson,omitempty"` | ||
| 38 | } | 46 | } |
| 39 | 47 | ||
| 40 | -//func (updateTaskCommand *UpdateTaskCommand) Valid(validation *validation.Validation) { | ||
| 41 | -// validation.SetError("CustomValid", "未实现的自定义认证") | ||
| 42 | -//} | ||
| 43 | - | ||
| 44 | func (updateTaskCommand *UpdateTaskCommand) ValidateCommand() error { | 48 | func (updateTaskCommand *UpdateTaskCommand) ValidateCommand() error { |
| 45 | valid := validation.Validation{} | 49 | valid := validation.Validation{} |
| 46 | b, err := valid.Valid(updateTaskCommand) | 50 | b, err := valid.Valid(updateTaskCommand) |
| 1 | +package dto | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
| 5 | + "time" | ||
| 6 | +) | ||
| 7 | + | ||
| 8 | +type OffTaskRecordDto struct { | ||
| 9 | + // 关闭任务记录ID | ||
| 10 | + OffTaskRecordId int64 `json:"offTaskRecordId"` | ||
| 11 | + // 任务 | ||
| 12 | + Task *TaskDto `json:"task"` | ||
| 13 | + // 操作人 | ||
| 14 | + Operator *domain.EmployeeInfo `json:"operator"` | ||
| 15 | + // 关闭理由 | ||
| 16 | + OffReason string `json:"offReason"` | ||
| 17 | + // 创建时间 | ||
| 18 | + CreateTime time.Time `json:"createTime"` | ||
| 19 | +} | ||
| 20 | + | ||
| 21 | +func (dto *OffTaskRecordDto) LoadDto(offTaskRecord *domain.OffTaskRecord, projectBelongMap map[int]*domain.ProjectBelong, customerValueMap map[int]*domain.CustomerValue, taskNatureMap map[int]*domain.TaskNature) error { | ||
| 22 | + dto.OffTaskRecordId = offTaskRecord.OffTaskRecordId | ||
| 23 | + taskDto := &TaskDto{} | ||
| 24 | + if err := taskDto.LoadDto(offTaskRecord.Task, projectBelongMap, customerValueMap, taskNatureMap); err != nil { | ||
| 25 | + return err | ||
| 26 | + } | ||
| 27 | + dto.Task = taskDto | ||
| 28 | + dto.Operator = offTaskRecord.Operator | ||
| 29 | + dto.OffReason = offTaskRecord.OffReason | ||
| 30 | + dto.CreateTime = offTaskRecord.CreateTime | ||
| 31 | + return nil | ||
| 32 | +} |
| 1 | +package dto | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
| 5 | + "time" | ||
| 6 | +) | ||
| 7 | + | ||
| 8 | +type RejectTaskRecordDto struct { | ||
| 9 | + // 关闭任务记录ID | ||
| 10 | + RejectTaskRecordId int64 `json:"rejectTaskRecordId"` | ||
| 11 | + // 任务 | ||
| 12 | + Task *TaskDto `json:"task"` | ||
| 13 | + // 操作人 | ||
| 14 | + Operator *domain.EmployeeInfo `json:"operator"` | ||
| 15 | + // 关闭理由 | ||
| 16 | + RejectReason string `json:"rejectReason"` | ||
| 17 | + // 创建时间 | ||
| 18 | + CreateTime time.Time `json:"createTime"` | ||
| 19 | +} | ||
| 20 | + | ||
| 21 | +func (dto *RejectTaskRecordDto) LoadDto(rejectTaskRecord *domain.RejectTaskRecord, projectBelongMap map[int]*domain.ProjectBelong, customerValueMap map[int]*domain.CustomerValue, taskNatureMap map[int]*domain.TaskNature) error { | ||
| 22 | + dto.RejectTaskRecordId = rejectTaskRecord.RejectTaskRecordId | ||
| 23 | + taskDto := &TaskDto{} | ||
| 24 | + if err := taskDto.LoadDto(rejectTaskRecord.Task, projectBelongMap, customerValueMap, taskNatureMap); err != nil { | ||
| 25 | + return err | ||
| 26 | + } | ||
| 27 | + dto.Task = taskDto | ||
| 28 | + dto.Operator = rejectTaskRecord.Operator | ||
| 29 | + dto.RejectReason = rejectTaskRecord.RejectReason | ||
| 30 | + dto.CreateTime = rejectTaskRecord.CreateTime | ||
| 31 | + return nil | ||
| 32 | +} |
pkg/application/task/dto/task_dto.go
0 → 100644
| 1 | +package dto | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
| 6 | + "time" | ||
| 7 | +) | ||
| 8 | + | ||
| 9 | +type TaskDto struct { | ||
| 10 | + // 任务ID | ||
| 11 | + TaskId int64 `json:"taskId"` | ||
| 12 | + // 公司ID | ||
| 13 | + CompanyId int64 `json:"companyId"` | ||
| 14 | + // 任务名称 | ||
| 15 | + TaskName string `json:"taskName"` | ||
| 16 | + // 任务类型Type | ||
| 17 | + TaskType int `json:"taskType"` | ||
| 18 | + // 任务发起者 | ||
| 19 | + Sponsor *domain.EmployeeInfo `json:"sponsor"` | ||
| 20 | + // 任务状态 | ||
| 21 | + TaskStatus int `json:"taskStatus"` | ||
| 22 | + // 引用资源 | ||
| 23 | + ReferenceResource *domain.ReferenceResource `json:"referenceResource"` | ||
| 24 | + // 项目归属 | ||
| 25 | + ProjectBelong *domain.ProjectBelong `json:"projectBelong"` | ||
| 26 | + // 客户价值列表 | ||
| 27 | + CustomerValues []*domain.CustomerValue `json:"customerValues"` | ||
| 28 | + // 任务性质 | ||
| 29 | + TaskNature *domain.TaskNature `json:"taskNature"` | ||
| 30 | + // 奖励素币 | ||
| 31 | + SuMoney float64 `json:"suMoney"` | ||
| 32 | + // 验收标准 | ||
| 33 | + AcceptanceStandard string `json:"acceptanceStandard"` | ||
| 34 | + // 任务描述 | ||
| 35 | + TaskDescription string `json:"taskDescription"` | ||
| 36 | + // 任务图片URL列表 | ||
| 37 | + TaskPictureUrls []string `json:"taskPictureUrls"` | ||
| 38 | + // 是否悬赏任务 | ||
| 39 | + IsRewardTake bool `json:"isRewardTake"` | ||
| 40 | + // 抢单任务信息 | ||
| 41 | + RobInfo *domain.RobInfo `json:"robInfo"` | ||
| 42 | + // 竞标任务信息 | ||
| 43 | + BidInfo *domain.BidInfo `json:"bidInfo"` | ||
| 44 | + // 任务参与者列表 | ||
| 45 | + Participators []*domain.EmployeeInfo `json:"participators"` | ||
| 46 | + // 任务贡献占比 | ||
| 47 | + TaskPercentage []*domain.TaskPercentageItem `json:"taskPercentage"` | ||
| 48 | + // 解决报告 | ||
| 49 | + SolveReport string `json:"solveReport"` | ||
| 50 | + // 解决图片URL列表 | ||
| 51 | + SolvePictureUrls []string `json:"solvePictureUrls"` | ||
| 52 | + // 指派人员 | ||
| 53 | + AssignedPerson *domain.EmployeeInfo `json:"assignedPerson"` | ||
| 54 | + // 计划完成时间 | ||
| 55 | + PlannedCompletionTime time.Time `json:"plannedCompletionTime"` | ||
| 56 | + // 实际完成时间 | ||
| 57 | + ActualCompletionTime time.Time `json:"actualCompletionTime"` | ||
| 58 | + // 创建时间 | ||
| 59 | + CreateTime time.Time `json:"createTime"` | ||
| 60 | + // 发布任务时间 | ||
| 61 | + ReleaseTime time.Time `json:"releaseTime"` | ||
| 62 | + // 领取任务时间 | ||
| 63 | + ReceiveTime time.Time `json:"receiveTime"` | ||
| 64 | + // 完成任务操作时间 | ||
| 65 | + CompleteTime time.Time `json:"completeTime"` | ||
| 66 | + // 验收方验收时间 | ||
| 67 | + AcceptanceTime time.Time `json:"acceptanceTime"` | ||
| 68 | +} | ||
| 69 | + | ||
| 70 | +func (dto *TaskDto) LoadDto(task *domain.Task, projectBelongMap map[int]*domain.ProjectBelong, customerValueMap map[int]*domain.CustomerValue, taskNatureMap map[int]*domain.TaskNature) error { | ||
| 71 | + dto.TaskId = task.TaskId | ||
| 72 | + dto.CompanyId = task.CompanyId | ||
| 73 | + dto.TaskName = task.TaskName | ||
| 74 | + dto.TaskType = task.TaskType | ||
| 75 | + dto.Sponsor = task.Sponsor | ||
| 76 | + dto.TaskStatus = task.TaskStatus | ||
| 77 | + dto.ReferenceResource = task.ReferenceResource | ||
| 78 | + if task.ProjectBelong != 0 { | ||
| 79 | + if projectBelong, ok := projectBelongMap[task.ProjectBelong]; ok { | ||
| 80 | + dto.ProjectBelong = projectBelong | ||
| 81 | + } else { | ||
| 82 | + return fmt.Errorf("无效的项目归属") | ||
| 83 | + } | ||
| 84 | + } | ||
| 85 | + if len(task.CustomerValues) > 0 { | ||
| 86 | + for _, customerValueId := range task.CustomerValues { | ||
| 87 | + if customerValue, ok := customerValueMap[customerValueId]; ok { | ||
| 88 | + dto.CustomerValues = append(dto.CustomerValues, customerValue) | ||
| 89 | + } else { | ||
| 90 | + return fmt.Errorf("无效的客户价值") | ||
| 91 | + } | ||
| 92 | + } | ||
| 93 | + } | ||
| 94 | + if task.TaskNature != 0 { | ||
| 95 | + if taskNature, ok := taskNatureMap[task.TaskNature]; ok { | ||
| 96 | + dto.TaskNature = taskNature | ||
| 97 | + } else { | ||
| 98 | + return fmt.Errorf("无效的任务性质") | ||
| 99 | + } | ||
| 100 | + } | ||
| 101 | + dto.SuMoney = task.SuMoney | ||
| 102 | + dto.AcceptanceStandard = task.AcceptanceStandard | ||
| 103 | + dto.TaskDescription = task.TaskDescription | ||
| 104 | + dto.TaskPictureUrls = task.TaskPictureUrls | ||
| 105 | + dto.IsRewardTake = task.IsRewardTake | ||
| 106 | + dto.RobInfo = task.RobInfo | ||
| 107 | + dto.BidInfo = task.BidInfo | ||
| 108 | + dto.Participators = task.Participators | ||
| 109 | + dto.TaskPercentage = task.TaskPercentage | ||
| 110 | + dto.SolveReport = task.SolveReport | ||
| 111 | + dto.SolvePictureUrls = task.SolvePictureUrls | ||
| 112 | + dto.AssignedPerson = task.AssignedPerson | ||
| 113 | + dto.PlannedCompletionTime = task.PlannedCompletionTime | ||
| 114 | + dto.ActualCompletionTime = task.ActualCompletionTime | ||
| 115 | + dto.CreateTime = task.CreateTime | ||
| 116 | + dto.ReleaseTime = task.ReleaseTime | ||
| 117 | + dto.ReceiveTime = task.ReceiveTime | ||
| 118 | + dto.CompleteTime = task.CompleteTime | ||
| 119 | + dto.AcceptanceTime = task.AcceptanceTime | ||
| 120 | + return nil | ||
| 121 | +} |
| 1 | +package query | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + | ||
| 6 | + "github.com/astaxie/beego/validation" | ||
| 7 | +) | ||
| 8 | + | ||
| 9 | +type GetRejectTaskRecordQuery struct { | ||
| 10 | + // 驳回任务记录ID | ||
| 11 | + RejectTaskRecordId int64 `json:"rejectTaskRecordId" valid:"Required"` | ||
| 12 | +} | ||
| 13 | + | ||
| 14 | +func (getRejectTaskRecordQuery *GetRejectTaskRecordQuery) ValidateQuery() error { | ||
| 15 | + valid := validation.Validation{} | ||
| 16 | + b, err := valid.Valid(getRejectTaskRecordQuery) | ||
| 17 | + if err != nil { | ||
| 18 | + return err | ||
| 19 | + } | ||
| 20 | + if !b { | ||
| 21 | + for _, validErr := range valid.Errors { | ||
| 22 | + return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
| 23 | + } | ||
| 24 | + } | ||
| 25 | + return nil | ||
| 26 | +} |
| @@ -7,6 +7,7 @@ import ( | @@ -7,6 +7,7 @@ import ( | ||
| 7 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/event/subscriber" | 7 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/event/subscriber" |
| 8 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/factory" | 8 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/factory" |
| 9 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/task/command" | 9 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/task/command" |
| 10 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/task/dto" | ||
| 10 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/task/query" | 11 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/task/query" |
| 11 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | 12 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" |
| 12 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain/service" | 13 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain/service" |
| @@ -18,6 +19,74 @@ import ( | @@ -18,6 +19,74 @@ import ( | ||
| 18 | type TaskService struct { | 19 | type TaskService struct { |
| 19 | } | 20 | } |
| 20 | 21 | ||
| 22 | +// 对抢单任务进行确认 | ||
| 23 | +func (taskService *TaskService) ConfirmRobTask(confirmRobTaskCommand *command.ConfirmRobTaskCommand) (interface{}, error) { | ||
| 24 | + if err := confirmRobTaskCommand.ValidateCommand(); err != nil { | ||
| 25 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
| 26 | + } | ||
| 27 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 28 | + if err != nil { | ||
| 29 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 30 | + } | ||
| 31 | + if err := transactionContext.StartTransaction(); err != nil { | ||
| 32 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 33 | + } | ||
| 34 | + defer func() { | ||
| 35 | + transactionContext.RollbackTransaction() | ||
| 36 | + }() | ||
| 37 | + var confirmRobTaskService service.ConfirmRobTaskService | ||
| 38 | + if value, err := factory.CreateConfirmRobTaskService(map[string]interface{}{ | ||
| 39 | + "transactionContext": transactionContext, | ||
| 40 | + }); err != nil { | ||
| 41 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 42 | + } else { | ||
| 43 | + confirmRobTaskService = value | ||
| 44 | + //confirmRobTaskService.Subscribe(&subscriber.AbilityServiceSubscriber{}) | ||
| 45 | + } | ||
| 46 | + if task, err := confirmRobTaskService.Confirm(confirmRobTaskCommand.TaskId, confirmRobTaskCommand.Operator, confirmRobTaskCommand.PlannedCompletionTime); err != nil { | ||
| 47 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 48 | + } else { | ||
| 49 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
| 50 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 51 | + } | ||
| 52 | + return task, nil | ||
| 53 | + } | ||
| 54 | +} | ||
| 55 | + | ||
| 56 | +// 驳回任务领取人 | ||
| 57 | +func (taskService *TaskService) RejectTaskReceiver(rejectTaskReceiverCommand *command.RejectTaskReceiverCommand) (interface{}, error) { | ||
| 58 | + if err := rejectTaskReceiverCommand.ValidateCommand(); err != nil { | ||
| 59 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
| 60 | + } | ||
| 61 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 62 | + if err != nil { | ||
| 63 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 64 | + } | ||
| 65 | + if err := transactionContext.StartTransaction(); err != nil { | ||
| 66 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 67 | + } | ||
| 68 | + defer func() { | ||
| 69 | + transactionContext.RollbackTransaction() | ||
| 70 | + }() | ||
| 71 | + var rejectTaskReceiverService service.RejectTaskReceiverService | ||
| 72 | + if value, err := factory.CreateRejectTaskReceiverService(map[string]interface{}{ | ||
| 73 | + "transactionContext": transactionContext, | ||
| 74 | + }); err != nil { | ||
| 75 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 76 | + } else { | ||
| 77 | + rejectTaskReceiverService = value | ||
| 78 | + //rejectTaskReceiverService.Subscribe(&subscriber.AbilityServiceSubscriber{}) | ||
| 79 | + } | ||
| 80 | + if task, err := rejectTaskReceiverService.Reject(rejectTaskReceiverCommand.TaskId, rejectTaskReceiverCommand.Operator, rejectTaskReceiverCommand.RejectReason); err != nil { | ||
| 81 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 82 | + } else { | ||
| 83 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
| 84 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 85 | + } | ||
| 86 | + return task, nil | ||
| 87 | + } | ||
| 88 | +} | ||
| 89 | + | ||
| 21 | // 对任务进行抢单 | 90 | // 对任务进行抢单 |
| 22 | func (taskService *TaskService) RobTask(robTaskCommand *command.RobTaskCommand) (interface{}, error) { | 91 | func (taskService *TaskService) RobTask(robTaskCommand *command.RobTaskCommand) (interface{}, error) { |
| 23 | if err := robTaskCommand.ValidateCommand(); err != nil { | 92 | if err := robTaskCommand.ValidateCommand(); err != nil { |
| @@ -109,7 +178,7 @@ func (taskService *TaskService) ChooseSuccessfulBidder(chooseSuccessfulBidderCom | @@ -109,7 +178,7 @@ func (taskService *TaskService) ChooseSuccessfulBidder(chooseSuccessfulBidderCom | ||
| 109 | chooseSuccessfulBidderService = value | 178 | chooseSuccessfulBidderService = value |
| 110 | chooseSuccessfulBidderService.Subscribe(&subscriber.AbilityServiceSubscriber{}) | 179 | chooseSuccessfulBidderService.Subscribe(&subscriber.AbilityServiceSubscriber{}) |
| 111 | } | 180 | } |
| 112 | - if task, err := chooseSuccessfulBidderService.Choose(chooseSuccessfulBidderCommand.TaskId, chooseSuccessfulBidderCommand.SuccessfulBidder, chooseSuccessfulBidderCommand.Operator); err != nil { | 181 | + if task, err := chooseSuccessfulBidderService.Choose(chooseSuccessfulBidderCommand.TaskId, chooseSuccessfulBidderCommand.SuccessfulBidder, chooseSuccessfulBidderCommand.Operator, chooseSuccessfulBidderCommand.PlannedCompletionTime); err != nil { |
| 113 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 182 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 114 | } else { | 183 | } else { |
| 115 | if err := transactionContext.CommitTransaction(); err != nil { | 184 | if err := transactionContext.CommitTransaction(); err != nil { |
| @@ -244,7 +313,7 @@ func (taskService *TaskService) AcceptanceTask(acceptanceTaskCommand *command.Ac | @@ -244,7 +313,7 @@ func (taskService *TaskService) AcceptanceTask(acceptanceTaskCommand *command.Ac | ||
| 244 | acceptanceTaskService = value | 313 | acceptanceTaskService = value |
| 245 | acceptanceTaskService.Subscribe(&subscriber.AbilityServiceSubscriber{}) | 314 | acceptanceTaskService.Subscribe(&subscriber.AbilityServiceSubscriber{}) |
| 246 | } | 315 | } |
| 247 | - if task, err := acceptanceTaskService.Acceptance(acceptanceTaskCommand.TaskId, acceptanceTaskCommand.Operator, acceptanceTaskCommand.Participators, acceptanceTaskCommand.TaskPercentage, acceptanceTaskCommand.ReferenceResourceScore, acceptanceTaskCommand.SolveReport, acceptanceTaskCommand.SolvePictureUrls); err != nil { | 316 | + if task, err := acceptanceTaskService.Acceptance(acceptanceTaskCommand.TaskId, acceptanceTaskCommand.Operator, acceptanceTaskCommand.Participators, acceptanceTaskCommand.TaskPercentage, acceptanceTaskCommand.ReferenceResourceScore, acceptanceTaskCommand.SolveReport, acceptanceTaskCommand.SolvePictureUrls, acceptanceTaskCommand.ActualCompletionTime); err != nil { |
| 248 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 317 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 249 | } else { | 318 | } else { |
| 250 | if err := transactionContext.CommitTransaction(); err != nil { | 319 | if err := transactionContext.CommitTransaction(); err != nil { |
| @@ -277,15 +346,77 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask | @@ -277,15 +346,77 @@ func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTask | ||
| 277 | } else { | 346 | } else { |
| 278 | taskRepository = value | 347 | taskRepository = value |
| 279 | } | 348 | } |
| 349 | + var projectBelongRepository domain.ProjectBelongRepository | ||
| 350 | + if value, err := factory.CreateProjectBelongRepository(map[string]interface{}{ | ||
| 351 | + "transactionContext": transactionContext, | ||
| 352 | + }); err != nil { | ||
| 353 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 354 | + } else { | ||
| 355 | + projectBelongRepository = value | ||
| 356 | + } | ||
| 357 | + projectBelongMap := make(map[int]*domain.ProjectBelong) | ||
| 358 | + if _, projectBelongs, err := projectBelongRepository.Find(map[string]interface{}{ | ||
| 359 | + "companyId": searchTaskCommand.CompanyId, | ||
| 360 | + }); err != nil { | ||
| 361 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 362 | + } else { | ||
| 363 | + for _, projectBelong := range projectBelongs { | ||
| 364 | + projectBelongMap[projectBelong.ProjectBelongId] = projectBelong | ||
| 365 | + } | ||
| 366 | + } | ||
| 367 | + var customerValueRepository domain.CustomerValueRepository | ||
| 368 | + if value, err := factory.CreateCustomerValueRepository(map[string]interface{}{ | ||
| 369 | + "transactionContext": transactionContext, | ||
| 370 | + }); err != nil { | ||
| 371 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 372 | + } else { | ||
| 373 | + customerValueRepository = value | ||
| 374 | + } | ||
| 375 | + customerValueMap := make(map[int]*domain.CustomerValue) | ||
| 376 | + if _, customerValues, err := customerValueRepository.Find(map[string]interface{}{ | ||
| 377 | + "companyId": searchTaskCommand.CompanyId, | ||
| 378 | + }); err != nil { | ||
| 379 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 380 | + } else { | ||
| 381 | + for _, customerValue := range customerValues { | ||
| 382 | + customerValueMap[customerValue.CustomerValueId] = customerValue | ||
| 383 | + } | ||
| 384 | + } | ||
| 385 | + var taskNatureRepository domain.TaskNatureRepository | ||
| 386 | + if value, err := factory.CreateTaskNatureRepository(map[string]interface{}{ | ||
| 387 | + "transactionContext": transactionContext, | ||
| 388 | + }); err != nil { | ||
| 389 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 390 | + } else { | ||
| 391 | + taskNatureRepository = value | ||
| 392 | + } | ||
| 393 | + taskNatureMap := make(map[int]*domain.TaskNature) | ||
| 394 | + if _, taskNatures, err := taskNatureRepository.Find(map[string]interface{}{ | ||
| 395 | + "companyId": searchTaskCommand.CompanyId, | ||
| 396 | + }); err != nil { | ||
| 397 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 398 | + } else { | ||
| 399 | + for _, taskNature := range taskNatures { | ||
| 400 | + taskNatureMap[taskNature.TaskNatureId] = taskNature | ||
| 401 | + } | ||
| 402 | + } | ||
| 280 | if count, tasks, err := taskRepository.Find(tool_funs.SimpleStructToMap(searchTaskCommand)); err != nil { | 403 | if count, tasks, err := taskRepository.Find(tool_funs.SimpleStructToMap(searchTaskCommand)); err != nil { |
| 281 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 404 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 282 | } else { | 405 | } else { |
| 406 | + var taskDtos []*dto.TaskDto | ||
| 407 | + for _, task := range tasks { | ||
| 408 | + taskDto := &dto.TaskDto{} | ||
| 409 | + if err := taskDto.LoadDto(task, projectBelongMap, customerValueMap, taskNatureMap); err != nil { | ||
| 410 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 411 | + } | ||
| 412 | + taskDtos = append(taskDtos, taskDto) | ||
| 413 | + } | ||
| 283 | if err := transactionContext.CommitTransaction(); err != nil { | 414 | if err := transactionContext.CommitTransaction(); err != nil { |
| 284 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 415 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| 285 | } | 416 | } |
| 286 | return map[string]interface{}{ | 417 | return map[string]interface{}{ |
| 287 | "count": count, | 418 | "count": count, |
| 288 | - "tasks": tasks, | 419 | + "tasks": taskDtos, |
| 289 | }, nil | 420 | }, nil |
| 290 | } | 421 | } |
| 291 | } | 422 | } |
| @@ -305,6 +436,60 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand * | @@ -305,6 +436,60 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand * | ||
| 305 | defer func() { | 436 | defer func() { |
| 306 | transactionContext.RollbackTransaction() | 437 | transactionContext.RollbackTransaction() |
| 307 | }() | 438 | }() |
| 439 | + var projectBelongRepository domain.ProjectBelongRepository | ||
| 440 | + if value, err := factory.CreateProjectBelongRepository(map[string]interface{}{ | ||
| 441 | + "transactionContext": transactionContext, | ||
| 442 | + }); err != nil { | ||
| 443 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 444 | + } else { | ||
| 445 | + projectBelongRepository = value | ||
| 446 | + } | ||
| 447 | + projectBelongMap := make(map[int]*domain.ProjectBelong) | ||
| 448 | + if _, projectBelongs, err := projectBelongRepository.Find(map[string]interface{}{ | ||
| 449 | + "companyId": searchOffTaskRecordCommand.CompanyId, | ||
| 450 | + }); err != nil { | ||
| 451 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 452 | + } else { | ||
| 453 | + for _, projectBelong := range projectBelongs { | ||
| 454 | + projectBelongMap[projectBelong.ProjectBelongId] = projectBelong | ||
| 455 | + } | ||
| 456 | + } | ||
| 457 | + var customerValueRepository domain.CustomerValueRepository | ||
| 458 | + if value, err := factory.CreateCustomerValueRepository(map[string]interface{}{ | ||
| 459 | + "transactionContext": transactionContext, | ||
| 460 | + }); err != nil { | ||
| 461 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 462 | + } else { | ||
| 463 | + customerValueRepository = value | ||
| 464 | + } | ||
| 465 | + customerValueMap := make(map[int]*domain.CustomerValue) | ||
| 466 | + if _, customerValues, err := customerValueRepository.Find(map[string]interface{}{ | ||
| 467 | + "companyId": searchOffTaskRecordCommand.CompanyId, | ||
| 468 | + }); err != nil { | ||
| 469 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 470 | + } else { | ||
| 471 | + for _, customerValue := range customerValues { | ||
| 472 | + customerValueMap[customerValue.CustomerValueId] = customerValue | ||
| 473 | + } | ||
| 474 | + } | ||
| 475 | + var taskNatureRepository domain.TaskNatureRepository | ||
| 476 | + if value, err := factory.CreateTaskNatureRepository(map[string]interface{}{ | ||
| 477 | + "transactionContext": transactionContext, | ||
| 478 | + }); err != nil { | ||
| 479 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 480 | + } else { | ||
| 481 | + taskNatureRepository = value | ||
| 482 | + } | ||
| 483 | + taskNatureMap := make(map[int]*domain.TaskNature) | ||
| 484 | + if _, taskNatures, err := taskNatureRepository.Find(map[string]interface{}{ | ||
| 485 | + "companyId": searchOffTaskRecordCommand.CompanyId, | ||
| 486 | + }); err != nil { | ||
| 487 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 488 | + } else { | ||
| 489 | + for _, taskNature := range taskNatures { | ||
| 490 | + taskNatureMap[taskNature.TaskNatureId] = taskNature | ||
| 491 | + } | ||
| 492 | + } | ||
| 308 | var taskRepository domain.TaskRepository | 493 | var taskRepository domain.TaskRepository |
| 309 | if value, err := factory.CreateTaskRepository(map[string]interface{}{ | 494 | if value, err := factory.CreateTaskRepository(map[string]interface{}{ |
| 310 | "transactionContext": transactionContext, | 495 | "transactionContext": transactionContext, |
| @@ -326,8 +511,9 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand * | @@ -326,8 +511,9 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand * | ||
| 326 | "taskStatus": domain.TASK_STATUS_CLOSED, | 511 | "taskStatus": domain.TASK_STATUS_CLOSED, |
| 327 | "taskContentMatch": searchOffTaskRecordCommand.TaskContentMatch, | 512 | "taskContentMatch": searchOffTaskRecordCommand.TaskContentMatch, |
| 328 | "taskType": searchOffTaskRecordCommand.TaskType, | 513 | "taskType": searchOffTaskRecordCommand.TaskType, |
| 329 | - "customerValue": searchOffTaskRecordCommand.CustomerValue, | ||
| 330 | - "taskNature": searchOffTaskRecordCommand.TaskNature, | 514 | + "projectBelongs": searchOffTaskRecordCommand.ProjectBelongs, |
| 515 | + "customerValues": searchOffTaskRecordCommand.CustomerValues, | ||
| 516 | + "taskNatures": searchOffTaskRecordCommand.TaskNatures, | ||
| 331 | }) | 517 | }) |
| 332 | if err != nil { | 518 | if err != nil { |
| 333 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 519 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| @@ -345,19 +531,25 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand * | @@ -345,19 +531,25 @@ func (taskService *TaskService) SearchOffTaskRecord(searchOffTaskRecordCommand * | ||
| 345 | }); err != nil { | 531 | }); err != nil { |
| 346 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 532 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 347 | } else { | 533 | } else { |
| 348 | - if err := transactionContext.CommitTransaction(); err != nil { | ||
| 349 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 350 | - } | 534 | + var offTaskRecordDtos []*dto.OffTaskRecordDto |
| 351 | for _, offTaskRecord := range offTaskRecords { | 535 | for _, offTaskRecord := range offTaskRecords { |
| 352 | for _, task := range tasks { | 536 | for _, task := range tasks { |
| 353 | if offTaskRecord.Task.TaskId == task.TaskId { | 537 | if offTaskRecord.Task.TaskId == task.TaskId { |
| 354 | offTaskRecord.Task = task | 538 | offTaskRecord.Task = task |
| 355 | } | 539 | } |
| 356 | } | 540 | } |
| 541 | + offTaskRecordDto := &dto.OffTaskRecordDto{} | ||
| 542 | + if err := offTaskRecordDto.LoadDto(offTaskRecord, projectBelongMap, customerValueMap, taskNatureMap); err != nil { | ||
| 543 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 544 | + } | ||
| 545 | + offTaskRecordDtos = append(offTaskRecordDtos, offTaskRecordDto) | ||
| 546 | + } | ||
| 547 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
| 548 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 357 | } | 549 | } |
| 358 | return map[string]interface{}{ | 550 | return map[string]interface{}{ |
| 359 | "count": count, | 551 | "count": count, |
| 360 | - "offTaskRecords": offTaskRecords, | 552 | + "offTaskRecords": offTaskRecordDtos, |
| 361 | }, nil | 553 | }, nil |
| 362 | } | 554 | } |
| 363 | } | 555 | } |
| @@ -399,6 +591,176 @@ func (taskService *TaskService) GetOffTaskRecord(getOffTaskRecordQuery *query.Ge | @@ -399,6 +591,176 @@ func (taskService *TaskService) GetOffTaskRecord(getOffTaskRecordQuery *query.Ge | ||
| 399 | } | 591 | } |
| 400 | } | 592 | } |
| 401 | 593 | ||
| 594 | +// 搜索驳回任务记录 | ||
| 595 | +func (taskService *TaskService) SearchRejectTaskRecord(searchRejectTaskRecordCommand *command.SearchRejectTaskRecordCommand) (interface{}, error) { | ||
| 596 | + if err := searchRejectTaskRecordCommand.ValidateCommand(); err != nil { | ||
| 597 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
| 598 | + } | ||
| 599 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 600 | + if err != nil { | ||
| 601 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 602 | + } | ||
| 603 | + if err := transactionContext.StartTransaction(); err != nil { | ||
| 604 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 605 | + } | ||
| 606 | + defer func() { | ||
| 607 | + transactionContext.RollbackTransaction() | ||
| 608 | + }() | ||
| 609 | + var projectBelongRepository domain.ProjectBelongRepository | ||
| 610 | + if value, err := factory.CreateProjectBelongRepository(map[string]interface{}{ | ||
| 611 | + "transactionContext": transactionContext, | ||
| 612 | + }); err != nil { | ||
| 613 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 614 | + } else { | ||
| 615 | + projectBelongRepository = value | ||
| 616 | + } | ||
| 617 | + projectBelongMap := make(map[int]*domain.ProjectBelong) | ||
| 618 | + if _, projectBelongs, err := projectBelongRepository.Find(map[string]interface{}{ | ||
| 619 | + "companyId": searchRejectTaskRecordCommand.CompanyId, | ||
| 620 | + }); err != nil { | ||
| 621 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 622 | + } else { | ||
| 623 | + for _, projectBelong := range projectBelongs { | ||
| 624 | + projectBelongMap[projectBelong.ProjectBelongId] = projectBelong | ||
| 625 | + } | ||
| 626 | + } | ||
| 627 | + var customerValueRepository domain.CustomerValueRepository | ||
| 628 | + if value, err := factory.CreateCustomerValueRepository(map[string]interface{}{ | ||
| 629 | + "transactionContext": transactionContext, | ||
| 630 | + }); err != nil { | ||
| 631 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 632 | + } else { | ||
| 633 | + customerValueRepository = value | ||
| 634 | + } | ||
| 635 | + customerValueMap := make(map[int]*domain.CustomerValue) | ||
| 636 | + if _, customerValues, err := customerValueRepository.Find(map[string]interface{}{ | ||
| 637 | + "companyId": searchRejectTaskRecordCommand.CompanyId, | ||
| 638 | + }); err != nil { | ||
| 639 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 640 | + } else { | ||
| 641 | + for _, customerValue := range customerValues { | ||
| 642 | + customerValueMap[customerValue.CustomerValueId] = customerValue | ||
| 643 | + } | ||
| 644 | + } | ||
| 645 | + var taskNatureRepository domain.TaskNatureRepository | ||
| 646 | + if value, err := factory.CreateTaskNatureRepository(map[string]interface{}{ | ||
| 647 | + "transactionContext": transactionContext, | ||
| 648 | + }); err != nil { | ||
| 649 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 650 | + } else { | ||
| 651 | + taskNatureRepository = value | ||
| 652 | + } | ||
| 653 | + taskNatureMap := make(map[int]*domain.TaskNature) | ||
| 654 | + if _, taskNatures, err := taskNatureRepository.Find(map[string]interface{}{ | ||
| 655 | + "companyId": searchRejectTaskRecordCommand.CompanyId, | ||
| 656 | + }); err != nil { | ||
| 657 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 658 | + } else { | ||
| 659 | + for _, taskNature := range taskNatures { | ||
| 660 | + taskNatureMap[taskNature.TaskNatureId] = taskNature | ||
| 661 | + } | ||
| 662 | + } | ||
| 663 | + var taskRepository domain.TaskRepository | ||
| 664 | + if value, err := factory.CreateTaskRepository(map[string]interface{}{ | ||
| 665 | + "transactionContext": transactionContext, | ||
| 666 | + }); err != nil { | ||
| 667 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 668 | + } else { | ||
| 669 | + taskRepository = value | ||
| 670 | + } | ||
| 671 | + var rejectTaskRecordRepository domain.RejectTaskRecordRepository | ||
| 672 | + if value, err := factory.CreateRejectTaskRecordRepository(map[string]interface{}{ | ||
| 673 | + "transactionContext": transactionContext, | ||
| 674 | + }); err != nil { | ||
| 675 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 676 | + } else { | ||
| 677 | + rejectTaskRecordRepository = value | ||
| 678 | + } | ||
| 679 | + _, tasks, err := taskRepository.Find(map[string]interface{}{ | ||
| 680 | + "companyId": searchRejectTaskRecordCommand.CompanyId, | ||
| 681 | + "taskStatus": domain.TASK_STATUS_CLOSED, | ||
| 682 | + "taskContentMatch": searchRejectTaskRecordCommand.TaskContentMatch, | ||
| 683 | + "taskType": searchRejectTaskRecordCommand.TaskType, | ||
| 684 | + "projectBelongs": searchRejectTaskRecordCommand.ProjectBelongs, | ||
| 685 | + "customerValues": searchRejectTaskRecordCommand.CustomerValues, | ||
| 686 | + "taskNatures": searchRejectTaskRecordCommand.TaskNatures, | ||
| 687 | + }) | ||
| 688 | + if err != nil { | ||
| 689 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 690 | + } | ||
| 691 | + var taskIds []int64 | ||
| 692 | + for _, task := range tasks { | ||
| 693 | + taskIds = append(taskIds, task.TaskId) | ||
| 694 | + } | ||
| 695 | + if count, rejectTaskRecords, err := rejectTaskRecordRepository.Find(map[string]interface{}{ | ||
| 696 | + "taskIds": taskIds, | ||
| 697 | + "rejectStartTime": searchRejectTaskRecordCommand.RejectStartTime, | ||
| 698 | + "rejectEndTime": searchRejectTaskRecordCommand.RejectEndTime, | ||
| 699 | + "offset": searchRejectTaskRecordCommand.Offset, | ||
| 700 | + "limit": searchRejectTaskRecordCommand.Limit, | ||
| 701 | + }); err != nil { | ||
| 702 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 703 | + } else { | ||
| 704 | + var rejectTaskRecordDtos []*dto.RejectTaskRecordDto | ||
| 705 | + for _, rejectTaskRecord := range rejectTaskRecords { | ||
| 706 | + for _, task := range tasks { | ||
| 707 | + if rejectTaskRecord.Task.TaskId == task.TaskId { | ||
| 708 | + rejectTaskRecord.Task = task | ||
| 709 | + } | ||
| 710 | + } | ||
| 711 | + rejectTaskRecordDto := &dto.RejectTaskRecordDto{} | ||
| 712 | + if err := rejectTaskRecordDto.LoadDto(rejectTaskRecord, projectBelongMap, customerValueMap, taskNatureMap); err != nil { | ||
| 713 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 714 | + } | ||
| 715 | + rejectTaskRecordDtos = append(rejectTaskRecordDtos, rejectTaskRecordDto) | ||
| 716 | + } | ||
| 717 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
| 718 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 719 | + } | ||
| 720 | + return map[string]interface{}{ | ||
| 721 | + "count": count, | ||
| 722 | + "offTaskRecords": rejectTaskRecordDtos, | ||
| 723 | + }, nil | ||
| 724 | + } | ||
| 725 | +} | ||
| 726 | + | ||
| 727 | +// 返回驳回任务记录 | ||
| 728 | +func (taskService *TaskService) GetRejectTaskRecord(getRejectTaskRecordQuery *query.GetRejectTaskRecordQuery) (interface{}, error) { | ||
| 729 | + if err := getRejectTaskRecordQuery.ValidateQuery(); err != nil { | ||
| 730 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
| 731 | + } | ||
| 732 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 733 | + if err != nil { | ||
| 734 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 735 | + } | ||
| 736 | + if err := transactionContext.StartTransaction(); err != nil { | ||
| 737 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 738 | + } | ||
| 739 | + defer func() { | ||
| 740 | + transactionContext.RollbackTransaction() | ||
| 741 | + }() | ||
| 742 | + var rejectTaskRecordRepository domain.RejectTaskRecordRepository | ||
| 743 | + if value, err := factory.CreateRejectTaskRecordRepository(map[string]interface{}{ | ||
| 744 | + "transactionContext": transactionContext, | ||
| 745 | + }); err != nil { | ||
| 746 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 747 | + } else { | ||
| 748 | + rejectTaskRecordRepository = value | ||
| 749 | + } | ||
| 750 | + rejectTaskRecord, err := rejectTaskRecordRepository.FindOne(map[string]interface{}{"rejectTaskRecordId": getRejectTaskRecordQuery.RejectTaskRecordId}) | ||
| 751 | + if err != nil { | ||
| 752 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 753 | + } | ||
| 754 | + if rejectTaskRecord == nil { | ||
| 755 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(getRejectTaskRecordQuery.RejectTaskRecordId))) | ||
| 756 | + } else { | ||
| 757 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
| 758 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 759 | + } | ||
| 760 | + return rejectTaskRecord, nil | ||
| 761 | + } | ||
| 762 | +} | ||
| 763 | + | ||
| 402 | // 创建新任务 | 764 | // 创建新任务 |
| 403 | func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTaskCommand) (interface{}, error) { | 765 | func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTaskCommand) (interface{}, error) { |
| 404 | if err := createTaskCommand.ValidateCommand(); err != nil { | 766 | if err := createTaskCommand.ValidateCommand(); err != nil { |
| @@ -439,6 +801,19 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | @@ -439,6 +801,19 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | ||
| 439 | if sponsor == nil { | 801 | if sponsor == nil { |
| 440 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的发布者") | 802 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的发布者") |
| 441 | } | 803 | } |
| 804 | + var assignedPerson *domain.EmployeeInfo | ||
| 805 | + if createTaskCommand.AssignedPerson != 0 { | ||
| 806 | + employee, err := employeeRepository.FindOne(map[string]interface{}{ | ||
| 807 | + "uid": createTaskCommand.AssignedPerson, | ||
| 808 | + }) | ||
| 809 | + if err != nil { | ||
| 810 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 811 | + } | ||
| 812 | + if employee == nil { | ||
| 813 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的指派人员") | ||
| 814 | + } | ||
| 815 | + assignedPerson = employee.EmployeeInfo | ||
| 816 | + } | ||
| 442 | newTask := &domain.Task{ | 817 | newTask := &domain.Task{ |
| 443 | TaskStatus: domain.TASK_STATUS_UNRELEASED, | 818 | TaskStatus: domain.TASK_STATUS_UNRELEASED, |
| 444 | CompanyId: createTaskCommand.CompanyId, | 819 | CompanyId: createTaskCommand.CompanyId, |
| @@ -449,14 +824,17 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | @@ -449,14 +824,17 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | ||
| 449 | ReferenceResourceType: createTaskCommand.ReferenceResourceType, | 824 | ReferenceResourceType: createTaskCommand.ReferenceResourceType, |
| 450 | ReferenceResourceItems: createTaskCommand.ReferenceResourceItems, | 825 | ReferenceResourceItems: createTaskCommand.ReferenceResourceItems, |
| 451 | }, | 826 | }, |
| 452 | - CustomerValue: createTaskCommand.CustomerValue, | ||
| 453 | - TaskNature: createTaskCommand.TaskNature, | ||
| 454 | - SuMoney: createTaskCommand.SuMoney, | ||
| 455 | - AcceptanceStandard: createTaskCommand.AcceptanceStandard, | ||
| 456 | - TaskDescription: createTaskCommand.TaskDescription, | ||
| 457 | - TaskPictureUrls: createTaskCommand.TaskPictureUrls, | ||
| 458 | - IsRewardTake: createTaskCommand.IsRewardTake, | ||
| 459 | - CreateTime: time.Now(), | 827 | + ProjectBelong: createTaskCommand.ProjectBelong, |
| 828 | + CustomerValues: createTaskCommand.CustomerValues, | ||
| 829 | + TaskNature: createTaskCommand.TaskNature, | ||
| 830 | + SuMoney: createTaskCommand.SuMoney, | ||
| 831 | + AcceptanceStandard: createTaskCommand.AcceptanceStandard, | ||
| 832 | + TaskDescription: createTaskCommand.TaskDescription, | ||
| 833 | + TaskPictureUrls: createTaskCommand.TaskPictureUrls, | ||
| 834 | + IsRewardTake: createTaskCommand.IsRewardTake, | ||
| 835 | + AssignedPerson: assignedPerson, | ||
| 836 | + PlannedCompletionTime: createTaskCommand.PlannedCompletionTime, | ||
| 837 | + CreateTime: time.Now(), | ||
| 460 | } | 838 | } |
| 461 | var taskRepository domain.TaskRepository | 839 | var taskRepository domain.TaskRepository |
| 462 | if value, err := factory.CreateTaskRepository(map[string]interface{}{ | 840 | if value, err := factory.CreateTaskRepository(map[string]interface{}{ |
| @@ -487,7 +865,7 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | @@ -487,7 +865,7 @@ func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTask | ||
| 487 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 865 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 488 | } else { | 866 | } else { |
| 489 | if createTaskCommand.TaskType == domain.TASK_TYPE_BID { | 867 | if createTaskCommand.TaskType == domain.TASK_TYPE_BID { |
| 490 | - if err := taskDao.AddBidInfo(task.TaskId, createTaskCommand.BidStartTime, createTaskCommand.BidEndTime); err != nil { | 868 | + if err := taskDao.AddBidInfo(task.TaskId, createTaskCommand.BidStartTime, createTaskCommand.BidEndTime, createTaskCommand.IsRemind); err != nil { |
| 491 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 869 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 492 | } | 870 | } |
| 493 | } | 871 | } |
| @@ -545,10 +923,68 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | @@ -545,10 +923,68 @@ func (taskService *TaskService) GetTask(getTaskQuery *query.GetTaskQuery) (inter | ||
| 545 | if task == nil { | 923 | if task == nil { |
| 546 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(getTaskQuery.TaskId))) | 924 | return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(getTaskQuery.TaskId))) |
| 547 | } else { | 925 | } else { |
| 926 | + var projectBelongRepository domain.ProjectBelongRepository | ||
| 927 | + if value, err := factory.CreateProjectBelongRepository(map[string]interface{}{ | ||
| 928 | + "transactionContext": transactionContext, | ||
| 929 | + }); err != nil { | ||
| 930 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 931 | + } else { | ||
| 932 | + projectBelongRepository = value | ||
| 933 | + } | ||
| 934 | + projectBelongMap := make(map[int]*domain.ProjectBelong) | ||
| 935 | + if _, projectBelongs, err := projectBelongRepository.Find(map[string]interface{}{ | ||
| 936 | + "companyId": task.CompanyId, | ||
| 937 | + }); err != nil { | ||
| 938 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 939 | + } else { | ||
| 940 | + for _, projectBelong := range projectBelongs { | ||
| 941 | + projectBelongMap[projectBelong.ProjectBelongId] = projectBelong | ||
| 942 | + } | ||
| 943 | + } | ||
| 944 | + var customerValueRepository domain.CustomerValueRepository | ||
| 945 | + if value, err := factory.CreateCustomerValueRepository(map[string]interface{}{ | ||
| 946 | + "transactionContext": transactionContext, | ||
| 947 | + }); err != nil { | ||
| 948 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 949 | + } else { | ||
| 950 | + customerValueRepository = value | ||
| 951 | + } | ||
| 952 | + customerValueMap := make(map[int]*domain.CustomerValue) | ||
| 953 | + if _, customerValues, err := customerValueRepository.Find(map[string]interface{}{ | ||
| 954 | + "companyId": task.CompanyId, | ||
| 955 | + }); err != nil { | ||
| 956 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 957 | + } else { | ||
| 958 | + for _, customerValue := range customerValues { | ||
| 959 | + customerValueMap[customerValue.CustomerValueId] = customerValue | ||
| 960 | + } | ||
| 961 | + } | ||
| 962 | + var taskNatureRepository domain.TaskNatureRepository | ||
| 963 | + if value, err := factory.CreateTaskNatureRepository(map[string]interface{}{ | ||
| 964 | + "transactionContext": transactionContext, | ||
| 965 | + }); err != nil { | ||
| 966 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 967 | + } else { | ||
| 968 | + taskNatureRepository = value | ||
| 969 | + } | ||
| 970 | + taskNatureMap := make(map[int]*domain.TaskNature) | ||
| 971 | + if _, taskNatures, err := taskNatureRepository.Find(map[string]interface{}{ | ||
| 972 | + "companyId": task.CompanyId, | ||
| 973 | + }); err != nil { | ||
| 974 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 975 | + } else { | ||
| 976 | + for _, taskNature := range taskNatures { | ||
| 977 | + taskNatureMap[taskNature.TaskNatureId] = taskNature | ||
| 978 | + } | ||
| 979 | + } | ||
| 980 | + taskDto := &dto.TaskDto{} | ||
| 981 | + if err := taskDto.LoadDto(task, projectBelongMap, customerValueMap, taskNatureMap); err != nil { | ||
| 982 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 983 | + } | ||
| 548 | if err := transactionContext.CommitTransaction(); err != nil { | 984 | if err := transactionContext.CommitTransaction(); err != nil { |
| 549 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 985 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| 550 | } | 986 | } |
| 551 | - return task, nil | 987 | + return taskDto, nil |
| 552 | } | 988 | } |
| 553 | } | 989 | } |
| 554 | 990 | ||
| @@ -619,7 +1055,7 @@ func (taskService *TaskService) UpdateTask(updateTaskCommand *command.UpdateTask | @@ -619,7 +1055,7 @@ func (taskService *TaskService) UpdateTask(updateTaskCommand *command.UpdateTask | ||
| 619 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 1055 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 620 | } else { | 1056 | } else { |
| 621 | if task.TaskType == domain.TASK_TYPE_BID { | 1057 | if task.TaskType == domain.TASK_TYPE_BID { |
| 622 | - if err := taskDao.UpdateBidInfo(updateTaskCommand.TaskId, updateTaskCommand.BidStartTime, updateTaskCommand.BidEndTime); err != nil { | 1058 | + if err := taskDao.UpdateBidInfo(updateTaskCommand.TaskId, updateTaskCommand.BidStartTime, updateTaskCommand.BidEndTime, updateTaskCommand.IsRemind); err != nil { |
| 623 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 1059 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 624 | } | 1060 | } |
| 625 | } | 1061 | } |
| @@ -12,6 +12,8 @@ type BidInfo struct { | @@ -12,6 +12,8 @@ type BidInfo struct { | ||
| 12 | BidStartTime time.Time `json:"bidStartTime"` | 12 | BidStartTime time.Time `json:"bidStartTime"` |
| 13 | // 竞标结束时间 | 13 | // 竞标结束时间 |
| 14 | BidEndTime time.Time `json:"bidEndTime"` | 14 | BidEndTime time.Time `json:"bidEndTime"` |
| 15 | + //是否截止时间前一天提醒 | ||
| 16 | + IsRemind bool `json:"isRemind"` | ||
| 15 | // 中标时间 | 17 | // 中标时间 |
| 16 | WinBidTime time.Time `json:"winBidTime"` | 18 | WinBidTime time.Time `json:"winBidTime"` |
| 17 | } | 19 | } |
| @@ -23,10 +23,12 @@ type TaskReleased struct { | @@ -23,10 +23,12 @@ type TaskReleased struct { | ||
| 23 | TaskStatus int `json:"taskStatus"` | 23 | TaskStatus int `json:"taskStatus"` |
| 24 | // 引用资源 | 24 | // 引用资源 |
| 25 | ReferenceResource *domain.ReferenceResource `json:"referenceResource"` | 25 | ReferenceResource *domain.ReferenceResource `json:"referenceResource"` |
| 26 | + // 项目归属 | ||
| 27 | + ProjectBelong int `json:"projectBelong"` | ||
| 26 | // 客户价值列表 | 28 | // 客户价值列表 |
| 27 | - CustomerValue []string `json:"customerValue"` | 29 | + CustomerValues []int `json:"customerValues"` |
| 28 | // 任务性质 | 30 | // 任务性质 |
| 29 | - TaskNature string `json:"taskNature"` | 31 | + TaskNature int `json:"taskNature"` |
| 30 | // 奖励素币 | 32 | // 奖励素币 |
| 31 | SuMoney float64 `json:"suMoney"` | 33 | SuMoney float64 `json:"suMoney"` |
| 32 | // 验收标准 | 34 | // 验收标准 |
pkg/domain/reject_task_record.go
0 → 100644
| 1 | +package domain | ||
| 2 | + | ||
| 3 | +import "time" | ||
| 4 | + | ||
| 5 | +// 驳回任务记录 | ||
| 6 | +type RejectTaskRecord struct { | ||
| 7 | + // 驳回任务记录ID | ||
| 8 | + RejectTaskRecordId int64 `json:"rejectTaskRecordId"` | ||
| 9 | + // 任务 | ||
| 10 | + Task *Task `json:"task"` | ||
| 11 | + // 操作人 | ||
| 12 | + Operator *EmployeeInfo `json:"operator"` | ||
| 13 | + // 驳回理由 | ||
| 14 | + RejectReason string `json:"rejectReason"` | ||
| 15 | + // 创建时间 | ||
| 16 | + CreateTime time.Time `json:"createTime"` | ||
| 17 | +} | ||
| 18 | + | ||
| 19 | +type RejectTaskRecordRepository interface { | ||
| 20 | + Save(rejectTaskRecord *RejectTaskRecord) (*RejectTaskRecord, error) | ||
| 21 | + Remove(rejectTaskRecord *RejectTaskRecord) (*RejectTaskRecord, error) | ||
| 22 | + FindOne(queryOptions map[string]interface{}) (*RejectTaskRecord, error) | ||
| 23 | + Find(queryOptions map[string]interface{}) (int64, []*RejectTaskRecord, error) | ||
| 24 | +} | ||
| 25 | + | ||
| 26 | +func (rejectTaskRecord *RejectTaskRecord) Identify() interface{} { | ||
| 27 | + if rejectTaskRecord.RejectTaskRecordId == 0 { | ||
| 28 | + return nil | ||
| 29 | + } | ||
| 30 | + return rejectTaskRecord.RejectTaskRecordId | ||
| 31 | +} | ||
| 32 | + | ||
| 33 | +func (rejectTaskRecord *RejectTaskRecord) Update(data map[string]interface{}) error { | ||
| 34 | + if rejectReason, ok := data["rejectReason"]; ok && rejectReason != "" { | ||
| 35 | + rejectTaskRecord.RejectReason = rejectReason.(string) | ||
| 36 | + } | ||
| 37 | + return nil | ||
| 38 | +} |
| @@ -3,9 +3,10 @@ package service | @@ -3,9 +3,10 @@ package service | ||
| 3 | import ( | 3 | import ( |
| 4 | coreDomain "github.com/linmadan/egglib-go/core/domain" | 4 | coreDomain "github.com/linmadan/egglib-go/core/domain" |
| 5 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | 5 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" |
| 6 | + "time" | ||
| 6 | ) | 7 | ) |
| 7 | 8 | ||
| 8 | type AcceptanceTaskService interface { | 9 | type AcceptanceTaskService interface { |
| 9 | coreDomain.DomainEventPublisher | 10 | coreDomain.DomainEventPublisher |
| 10 | - Acceptance(taskId int64, operatorUid int64, participators []int64, taskPercentage []*domain.TaskPercentageItem, referenceResourceScore []*domain.ReferenceResourceItem, solveReport string, solvePictureUrls []string) (*domain.Task, error) | 11 | + Acceptance(taskId int64, operatorUid int64, participators []int64, taskPercentage []*domain.TaskPercentageItem, referenceResourceScore []*domain.ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) (*domain.Task, error) |
| 11 | } | 12 | } |
| @@ -3,9 +3,10 @@ package service | @@ -3,9 +3,10 @@ package service | ||
| 3 | import ( | 3 | import ( |
| 4 | coreDomain "github.com/linmadan/egglib-go/core/domain" | 4 | coreDomain "github.com/linmadan/egglib-go/core/domain" |
| 5 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | 5 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" |
| 6 | + "time" | ||
| 6 | ) | 7 | ) |
| 7 | 8 | ||
| 8 | type ChooseSuccessfulBidderService interface { | 9 | type ChooseSuccessfulBidderService interface { |
| 9 | coreDomain.DomainEventPublisher | 10 | coreDomain.DomainEventPublisher |
| 10 | - Choose(taskId int64, successfulBidderUid int64, operatorUid int64) (*domain.Task, error) | 11 | + Choose(taskId int64, successfulBidderUid int64, operatorUid int64, plannedCompletionTime time.Time) (*domain.Task, error) |
| 11 | } | 12 | } |
pkg/domain/service/confirm_rob_task.go
0 → 100644
| 1 | +package service | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + coreDomain "github.com/linmadan/egglib-go/core/domain" | ||
| 5 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
| 6 | + "time" | ||
| 7 | +) | ||
| 8 | + | ||
| 9 | +type ConfirmRobTaskService interface { | ||
| 10 | + coreDomain.DomainEventPublisher | ||
| 11 | + Confirm(taskId int64, operatorUid int64, plannedCompletionTime time.Time) (*domain.Task, error) | ||
| 12 | +} |
pkg/domain/service/reject_task_receiver.go
0 → 100644
| 1 | +package service | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + coreDomain "github.com/linmadan/egglib-go/core/domain" | ||
| 5 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
| 6 | +) | ||
| 7 | + | ||
| 8 | +type RejectTaskReceiverService interface { | ||
| 9 | + coreDomain.DomainEventPublisher | ||
| 10 | + Reject(taskId int64, operatorUid int64, rejectReason string) (*domain.Task, error) | ||
| 11 | +} |
| @@ -42,10 +42,12 @@ type Task struct { | @@ -42,10 +42,12 @@ type Task struct { | ||
| 42 | TaskStatus int `json:"taskStatus"` | 42 | TaskStatus int `json:"taskStatus"` |
| 43 | // 引用资源 | 43 | // 引用资源 |
| 44 | ReferenceResource *ReferenceResource `json:"referenceResource"` | 44 | ReferenceResource *ReferenceResource `json:"referenceResource"` |
| 45 | + // 项目归属 | ||
| 46 | + ProjectBelong int `json:"projectBelong"` | ||
| 45 | // 客户价值列表 | 47 | // 客户价值列表 |
| 46 | - CustomerValue []string `json:"customerValue"` | 48 | + CustomerValues []int `json:"customerValues"` |
| 47 | // 任务性质 | 49 | // 任务性质 |
| 48 | - TaskNature string `json:"taskNature"` | 50 | + TaskNature int `json:"taskNature"` |
| 49 | // 奖励素币 | 51 | // 奖励素币 |
| 50 | SuMoney float64 `json:"suMoney"` | 52 | SuMoney float64 `json:"suMoney"` |
| 51 | // 验收标准 | 53 | // 验收标准 |
| @@ -68,6 +70,12 @@ type Task struct { | @@ -68,6 +70,12 @@ type Task struct { | ||
| 68 | SolveReport string `json:"solveReport"` | 70 | SolveReport string `json:"solveReport"` |
| 69 | // 解决图片URL列表 | 71 | // 解决图片URL列表 |
| 70 | SolvePictureUrls []string `json:"solvePictureUrls"` | 72 | SolvePictureUrls []string `json:"solvePictureUrls"` |
| 73 | + // 指派人员 | ||
| 74 | + AssignedPerson *EmployeeInfo `json:"assignedPerson"` | ||
| 75 | + // 计划完成时间 | ||
| 76 | + PlannedCompletionTime time.Time `json:"plannedCompletionTime"` | ||
| 77 | + // 实际完成时间 | ||
| 78 | + ActualCompletionTime time.Time `json:"actualCompletionTime"` | ||
| 71 | // 创建时间 | 79 | // 创建时间 |
| 72 | CreateTime time.Time `json:"createTime"` | 80 | CreateTime time.Time `json:"createTime"` |
| 73 | // 发布任务时间 | 81 | // 发布任务时间 |
| @@ -87,10 +95,12 @@ type TaskStatus interface { | @@ -87,10 +95,12 @@ type TaskStatus interface { | ||
| 87 | Release(task *Task) error | 95 | Release(task *Task) error |
| 88 | Rob(task *Task, receiver *EmployeeInfo) error | 96 | Rob(task *Task, receiver *EmployeeInfo) error |
| 89 | Bib(task *Task, bidder *EmployeeInfo) error | 97 | Bib(task *Task, bidder *EmployeeInfo) error |
| 90 | - ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo) error | 98 | + ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo, plannedCompletionTime time.Time) error |
| 91 | ApplyComplete(task *Task) error | 99 | ApplyComplete(task *Task) error |
| 92 | Off(task *Task) error | 100 | Off(task *Task) error |
| 93 | - Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string) error | 101 | + Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error |
| 102 | + ConfirmTask(task *Task, plannedCompletionTime time.Time) error | ||
| 103 | + RejectReceiver(task *Task) error | ||
| 94 | } | 104 | } |
| 95 | 105 | ||
| 96 | type UnReleasedStatus struct{} | 106 | type UnReleasedStatus struct{} |
| @@ -105,11 +115,14 @@ func (status *UnReleasedStatus) Update(task *Task, data map[string]interface{}) | @@ -105,11 +115,14 @@ func (status *UnReleasedStatus) Update(task *Task, data map[string]interface{}) | ||
| 105 | if referenceResourceItems, ok := data["referenceResourceItems"]; ok { | 115 | if referenceResourceItems, ok := data["referenceResourceItems"]; ok { |
| 106 | task.ReferenceResource.ReferenceResourceItems = referenceResourceItems.([]*ReferenceResourceItem) | 116 | task.ReferenceResource.ReferenceResourceItems = referenceResourceItems.([]*ReferenceResourceItem) |
| 107 | } | 117 | } |
| 108 | - if customerValue, ok := data["customerValue"]; ok { | ||
| 109 | - task.CustomerValue = customerValue.([]string) | 118 | + if projectBelong, ok := data["projectBelong"]; ok { |
| 119 | + task.ProjectBelong = projectBelong.(int) | ||
| 120 | + } | ||
| 121 | + if customerValues, ok := data["customerValues"]; ok { | ||
| 122 | + task.CustomerValues = customerValues.([]int) | ||
| 110 | } | 123 | } |
| 111 | if taskNature, ok := data["taskNature"]; ok { | 124 | if taskNature, ok := data["taskNature"]; ok { |
| 112 | - task.TaskNature = taskNature.(string) | 125 | + task.TaskNature = taskNature.(int) |
| 113 | } | 126 | } |
| 114 | if suMoney, ok := data["suMoney"]; ok { | 127 | if suMoney, ok := data["suMoney"]; ok { |
| 115 | task.SuMoney = suMoney.(float64) | 128 | task.SuMoney = suMoney.(float64) |
| @@ -121,6 +134,9 @@ func (status *UnReleasedStatus) Update(task *Task, data map[string]interface{}) | @@ -121,6 +134,9 @@ func (status *UnReleasedStatus) Update(task *Task, data map[string]interface{}) | ||
| 121 | if bidEndTime, ok := data["bidEndTime"]; ok { | 134 | if bidEndTime, ok := data["bidEndTime"]; ok { |
| 122 | task.BidInfo.BidEndTime = bidEndTime.(time.Time) | 135 | task.BidInfo.BidEndTime = bidEndTime.(time.Time) |
| 123 | } | 136 | } |
| 137 | + if isRemind, ok := data["isRemind"]; ok { | ||
| 138 | + task.BidInfo.IsRemind = isRemind.(bool) | ||
| 139 | + } | ||
| 124 | } | 140 | } |
| 125 | if acceptanceStandard, ok := data["acceptanceStandard"]; ok { | 141 | if acceptanceStandard, ok := data["acceptanceStandard"]; ok { |
| 126 | task.AcceptanceStandard = acceptanceStandard.(string) | 142 | task.AcceptanceStandard = acceptanceStandard.(string) |
| @@ -134,13 +150,26 @@ func (status *UnReleasedStatus) Update(task *Task, data map[string]interface{}) | @@ -134,13 +150,26 @@ func (status *UnReleasedStatus) Update(task *Task, data map[string]interface{}) | ||
| 134 | if isRewardTake, ok := data["isRewardTake"]; ok { | 150 | if isRewardTake, ok := data["isRewardTake"]; ok { |
| 135 | task.IsRewardTake = isRewardTake.(bool) | 151 | task.IsRewardTake = isRewardTake.(bool) |
| 136 | } | 152 | } |
| 153 | + if task.TaskType == TASK_TYPE_DESIGNATE { | ||
| 154 | + if plannedCompletionTime, ok := data["plannedCompletionTime"]; ok { | ||
| 155 | + task.PlannedCompletionTime = plannedCompletionTime.(time.Time) | ||
| 156 | + } | ||
| 157 | + if assignedPerson, ok := data["assignedPerson"]; ok { | ||
| 158 | + task.AssignedPerson = assignedPerson.(*EmployeeInfo) | ||
| 159 | + } | ||
| 160 | + } | ||
| 137 | return nil | 161 | return nil |
| 138 | } | 162 | } |
| 139 | 163 | ||
| 140 | func (status *UnReleasedStatus) Release(task *Task) error { | 164 | func (status *UnReleasedStatus) Release(task *Task) error { |
| 141 | task.ReleaseTime = time.Now() | 165 | task.ReleaseTime = time.Now() |
| 142 | - task.TaskStatus = TASK_STATUS_UNCLAIMED | ||
| 143 | - task.CurrentStatus = &UnClaimedStatus{} | 166 | + if task.TaskType == TASK_TYPE_DESIGNATE { |
| 167 | + task.TaskStatus = TASK_STATUS_UNDERWAY | ||
| 168 | + task.CurrentStatus = &UnderwayStatus{} | ||
| 169 | + } else { | ||
| 170 | + task.TaskStatus = TASK_STATUS_UNCLAIMED | ||
| 171 | + task.CurrentStatus = &UnClaimedStatus{} | ||
| 172 | + } | ||
| 144 | return nil | 173 | return nil |
| 145 | } | 174 | } |
| 146 | 175 | ||
| @@ -152,7 +181,7 @@ func (status *UnReleasedStatus) Bib(task *Task, bidder *EmployeeInfo) error { | @@ -152,7 +181,7 @@ func (status *UnReleasedStatus) Bib(task *Task, bidder *EmployeeInfo) error { | ||
| 152 | return fmt.Errorf("待发布的任务不允许竞标") | 181 | return fmt.Errorf("待发布的任务不允许竞标") |
| 153 | } | 182 | } |
| 154 | 183 | ||
| 155 | -func (status *UnReleasedStatus) ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo) error { | 184 | +func (status *UnReleasedStatus) ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo, plannedCompletionTime time.Time) error { |
| 156 | return fmt.Errorf("待发布的任务不允许选择竞标任务的中标人") | 185 | return fmt.Errorf("待发布的任务不允许选择竞标任务的中标人") |
| 157 | } | 186 | } |
| 158 | 187 | ||
| @@ -164,10 +193,18 @@ func (status *UnReleasedStatus) Off(task *Task) error { | @@ -164,10 +193,18 @@ func (status *UnReleasedStatus) Off(task *Task) error { | ||
| 164 | return fmt.Errorf("待发布的任务不允许关闭") | 193 | return fmt.Errorf("待发布的任务不允许关闭") |
| 165 | } | 194 | } |
| 166 | 195 | ||
| 167 | -func (status *UnReleasedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string) error { | 196 | +func (status *UnReleasedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error { |
| 168 | return fmt.Errorf("待发布的任务不允许验收") | 197 | return fmt.Errorf("待发布的任务不允许验收") |
| 169 | } | 198 | } |
| 170 | 199 | ||
| 200 | +func (status *UnReleasedStatus) ConfirmTask(task *Task, plannedCompletionTime time.Time) error { | ||
| 201 | + return fmt.Errorf("待发布的任务不允许确认任务领取人") | ||
| 202 | +} | ||
| 203 | + | ||
| 204 | +func (status *UnReleasedStatus) RejectReceiver(task *Task) error { | ||
| 205 | + return fmt.Errorf("待发布的任务不允许驳回任务领取人") | ||
| 206 | +} | ||
| 207 | + | ||
| 171 | type UnClaimedStatus struct{} | 208 | type UnClaimedStatus struct{} |
| 172 | 209 | ||
| 173 | func (status *UnClaimedStatus) Update(task *Task, data map[string]interface{}) error { | 210 | func (status *UnClaimedStatus) Update(task *Task, data map[string]interface{}) error { |
| @@ -188,8 +225,8 @@ func (status *UnClaimedStatus) Rob(task *Task, receiver *EmployeeInfo) error { | @@ -188,8 +225,8 @@ func (status *UnClaimedStatus) Rob(task *Task, receiver *EmployeeInfo) error { | ||
| 188 | ReceiveTime: currentTime, | 225 | ReceiveTime: currentTime, |
| 189 | } | 226 | } |
| 190 | task.ReceiveTime = currentTime | 227 | task.ReceiveTime = currentTime |
| 191 | - task.TaskStatus = TASK_STATUS_UNDERWAY | ||
| 192 | - task.CurrentStatus = &UnderwayStatus{} | 228 | + task.TaskStatus = TASK_STATUS_UNCONFIRMED |
| 229 | + task.CurrentStatus = &UnConfirmedStatus{} | ||
| 193 | return nil | 230 | return nil |
| 194 | } | 231 | } |
| 195 | 232 | ||
| @@ -216,7 +253,7 @@ func (status *UnClaimedStatus) Bib(task *Task, bidder *EmployeeInfo) error { | @@ -216,7 +253,7 @@ func (status *UnClaimedStatus) Bib(task *Task, bidder *EmployeeInfo) error { | ||
| 216 | } | 253 | } |
| 217 | } | 254 | } |
| 218 | 255 | ||
| 219 | -func (status *UnClaimedStatus) ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo) error { | 256 | +func (status *UnClaimedStatus) ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo, plannedCompletionTime time.Time) error { |
| 220 | if task.TaskType != TASK_TYPE_BID { | 257 | if task.TaskType != TASK_TYPE_BID { |
| 221 | return fmt.Errorf("类型不符合的任务不允许选择竞中标人") | 258 | return fmt.Errorf("类型不符合的任务不允许选择竞中标人") |
| 222 | } | 259 | } |
| @@ -228,6 +265,7 @@ func (status *UnClaimedStatus) ChooseSuccessfulBidder(task *Task, successfulBidd | @@ -228,6 +265,7 @@ func (status *UnClaimedStatus) ChooseSuccessfulBidder(task *Task, successfulBidd | ||
| 228 | task.BidInfo.WinBidTime = winBidTime | 265 | task.BidInfo.WinBidTime = winBidTime |
| 229 | task.ReceiveTime = winBidTime | 266 | task.ReceiveTime = winBidTime |
| 230 | task.TaskStatus = TASK_STATUS_UNDERWAY | 267 | task.TaskStatus = TASK_STATUS_UNDERWAY |
| 268 | + task.PlannedCompletionTime = plannedCompletionTime | ||
| 231 | task.CurrentStatus = &UnderwayStatus{} | 269 | task.CurrentStatus = &UnderwayStatus{} |
| 232 | return nil | 270 | return nil |
| 233 | } | 271 | } |
| @@ -243,10 +281,18 @@ func (status *UnClaimedStatus) Off(task *Task) error { | @@ -243,10 +281,18 @@ func (status *UnClaimedStatus) Off(task *Task) error { | ||
| 243 | return nil | 281 | return nil |
| 244 | } | 282 | } |
| 245 | 283 | ||
| 246 | -func (status *UnClaimedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string) error { | 284 | +func (status *UnClaimedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error { |
| 247 | return fmt.Errorf("待领取的任务不允许验收") | 285 | return fmt.Errorf("待领取的任务不允许验收") |
| 248 | } | 286 | } |
| 249 | 287 | ||
| 288 | +func (status *UnClaimedStatus) ConfirmTask(task *Task, plannedCompletionTime time.Time) error { | ||
| 289 | + return fmt.Errorf("待领取的任务不允许确认任务领取人") | ||
| 290 | +} | ||
| 291 | + | ||
| 292 | +func (status *UnClaimedStatus) RejectReceiver(task *Task) error { | ||
| 293 | + return fmt.Errorf("待领取的任务不允许驳回任务领取人") | ||
| 294 | +} | ||
| 295 | + | ||
| 250 | type UnderwayStatus struct{} | 296 | type UnderwayStatus struct{} |
| 251 | 297 | ||
| 252 | func (status *UnderwayStatus) Update(task *Task, data map[string]interface{}) error { | 298 | func (status *UnderwayStatus) Update(task *Task, data map[string]interface{}) error { |
| @@ -265,7 +311,7 @@ func (status *UnderwayStatus) Bib(task *Task, bidder *EmployeeInfo) error { | @@ -265,7 +311,7 @@ func (status *UnderwayStatus) Bib(task *Task, bidder *EmployeeInfo) error { | ||
| 265 | return fmt.Errorf("进行中的任务不允许竞标") | 311 | return fmt.Errorf("进行中的任务不允许竞标") |
| 266 | } | 312 | } |
| 267 | 313 | ||
| 268 | -func (status *UnderwayStatus) ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo) error { | 314 | +func (status *UnderwayStatus) ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo, plannedCompletionTime time.Time) error { |
| 269 | return fmt.Errorf("进行中的任务不允许选择竞标任务的中标人") | 315 | return fmt.Errorf("进行中的任务不允许选择竞标任务的中标人") |
| 270 | } | 316 | } |
| 271 | 317 | ||
| @@ -282,10 +328,32 @@ func (status *UnderwayStatus) Off(task *Task) error { | @@ -282,10 +328,32 @@ func (status *UnderwayStatus) Off(task *Task) error { | ||
| 282 | return nil | 328 | return nil |
| 283 | } | 329 | } |
| 284 | 330 | ||
| 285 | -func (status *UnderwayStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string) error { | 331 | +func (status *UnderwayStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error { |
| 286 | return fmt.Errorf("进行中的任务不允许验收") | 332 | return fmt.Errorf("进行中的任务不允许验收") |
| 287 | } | 333 | } |
| 288 | 334 | ||
| 335 | +func (status *UnderwayStatus) ConfirmTask(task *Task, plannedCompletionTime time.Time) error { | ||
| 336 | + return fmt.Errorf("进行中的任务不允许确认任务领取人") | ||
| 337 | +} | ||
| 338 | + | ||
| 339 | +func (status *UnderwayStatus) RejectReceiver(task *Task) error { | ||
| 340 | + if task.TaskType == TASK_TYPE_DESIGNATE { | ||
| 341 | + return fmt.Errorf("类型不符合的任务不允许驳回领取人") | ||
| 342 | + } | ||
| 343 | + if task.TaskType == TASK_TYPE_ROB { | ||
| 344 | + task.RobInfo.Receiver = nil | ||
| 345 | + task.RobInfo.ReceiveTime = time.Time{} | ||
| 346 | + } | ||
| 347 | + if task.TaskType == TASK_TYPE_BID { | ||
| 348 | + task.BidInfo.SuccessfulBidder = nil | ||
| 349 | + task.BidInfo.WinBidTime = time.Time{} | ||
| 350 | + } | ||
| 351 | + task.ReceiveTime = time.Time{} | ||
| 352 | + task.TaskStatus = TASK_STATUS_UNCLAIMED | ||
| 353 | + task.CurrentStatus = &UnClaimedStatus{} | ||
| 354 | + return nil | ||
| 355 | +} | ||
| 356 | + | ||
| 289 | type UnAcceptanceStatus struct{} | 357 | type UnAcceptanceStatus struct{} |
| 290 | 358 | ||
| 291 | func (status *UnAcceptanceStatus) Update(task *Task, data map[string]interface{}) error { | 359 | func (status *UnAcceptanceStatus) Update(task *Task, data map[string]interface{}) error { |
| @@ -304,7 +372,7 @@ func (status *UnAcceptanceStatus) Bib(task *Task, bidder *EmployeeInfo) error { | @@ -304,7 +372,7 @@ func (status *UnAcceptanceStatus) Bib(task *Task, bidder *EmployeeInfo) error { | ||
| 304 | return fmt.Errorf("待验收的任务不允许竞标") | 372 | return fmt.Errorf("待验收的任务不允许竞标") |
| 305 | } | 373 | } |
| 306 | 374 | ||
| 307 | -func (status *UnAcceptanceStatus) ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo) error { | 375 | +func (status *UnAcceptanceStatus) ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo, plannedCompletionTime time.Time) error { |
| 308 | return fmt.Errorf("待验收的任务不允许选择竞标任务的中标人") | 376 | return fmt.Errorf("待验收的任务不允许选择竞标任务的中标人") |
| 309 | } | 377 | } |
| 310 | 378 | ||
| @@ -318,7 +386,7 @@ func (status *UnAcceptanceStatus) Off(task *Task) error { | @@ -318,7 +386,7 @@ func (status *UnAcceptanceStatus) Off(task *Task) error { | ||
| 318 | return nil | 386 | return nil |
| 319 | } | 387 | } |
| 320 | 388 | ||
| 321 | -func (status *UnAcceptanceStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string) error { | 389 | +func (status *UnAcceptanceStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error { |
| 322 | task.Participators = participators | 390 | task.Participators = participators |
| 323 | task.TaskPercentage = taskPercentage | 391 | task.TaskPercentage = taskPercentage |
| 324 | task.SolveReport = solveReport | 392 | task.SolveReport = solveReport |
| @@ -333,12 +401,21 @@ func (status *UnAcceptanceStatus) Acceptance(task *Task, participators []*Employ | @@ -333,12 +401,21 @@ func (status *UnAcceptanceStatus) Acceptance(task *Task, participators []*Employ | ||
| 333 | } | 401 | } |
| 334 | } | 402 | } |
| 335 | } | 403 | } |
| 404 | + task.ActualCompletionTime = actualCompletionTime | ||
| 336 | task.TaskStatus = TASK_STATUS_COMPLETED | 405 | task.TaskStatus = TASK_STATUS_COMPLETED |
| 337 | task.AcceptanceTime = time.Now() | 406 | task.AcceptanceTime = time.Now() |
| 338 | task.CurrentStatus = &CompletedStatus{} | 407 | task.CurrentStatus = &CompletedStatus{} |
| 339 | return nil | 408 | return nil |
| 340 | } | 409 | } |
| 341 | 410 | ||
| 411 | +func (status *UnAcceptanceStatus) ConfirmTask(task *Task, plannedCompletionTime time.Time) error { | ||
| 412 | + return fmt.Errorf("待验收的任务不允许确认任务领取人") | ||
| 413 | +} | ||
| 414 | + | ||
| 415 | +func (status *UnAcceptanceStatus) RejectReceiver(task *Task) error { | ||
| 416 | + return fmt.Errorf("待验收的任务不允许驳回任务领取人") | ||
| 417 | +} | ||
| 418 | + | ||
| 342 | type CompletedStatus struct{} | 419 | type CompletedStatus struct{} |
| 343 | 420 | ||
| 344 | func (status *CompletedStatus) Update(task *Task, data map[string]interface{}) error { | 421 | func (status *CompletedStatus) Update(task *Task, data map[string]interface{}) error { |
| @@ -357,7 +434,7 @@ func (status *CompletedStatus) Bib(task *Task, bidder *EmployeeInfo) error { | @@ -357,7 +434,7 @@ func (status *CompletedStatus) Bib(task *Task, bidder *EmployeeInfo) error { | ||
| 357 | return fmt.Errorf("已完成的任务不允许竞标") | 434 | return fmt.Errorf("已完成的任务不允许竞标") |
| 358 | } | 435 | } |
| 359 | 436 | ||
| 360 | -func (status *CompletedStatus) ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo) error { | 437 | +func (status *CompletedStatus) ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo, plannedCompletionTime time.Time) error { |
| 361 | return fmt.Errorf("已完成的任务不允许选择竞标任务的中标人") | 438 | return fmt.Errorf("已完成的任务不允许选择竞标任务的中标人") |
| 362 | } | 439 | } |
| 363 | 440 | ||
| @@ -369,10 +446,18 @@ func (status *CompletedStatus) Off(task *Task) error { | @@ -369,10 +446,18 @@ func (status *CompletedStatus) Off(task *Task) error { | ||
| 369 | return fmt.Errorf("已完成的任务不允许申请完成任务") | 446 | return fmt.Errorf("已完成的任务不允许申请完成任务") |
| 370 | } | 447 | } |
| 371 | 448 | ||
| 372 | -func (status *CompletedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string) error { | 449 | +func (status *CompletedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error { |
| 373 | return fmt.Errorf("已完成的任务不允许验收") | 450 | return fmt.Errorf("已完成的任务不允许验收") |
| 374 | } | 451 | } |
| 375 | 452 | ||
| 453 | +func (status *CompletedStatus) ConfirmTask(task *Task, plannedCompletionTime time.Time) error { | ||
| 454 | + return fmt.Errorf("已完成的任务不允许确认任务领取人") | ||
| 455 | +} | ||
| 456 | + | ||
| 457 | +func (status *CompletedStatus) RejectReceiver(task *Task) error { | ||
| 458 | + return fmt.Errorf("已完成的任务不允许驳回任务领取人") | ||
| 459 | +} | ||
| 460 | + | ||
| 376 | type ClosedStatus struct{} | 461 | type ClosedStatus struct{} |
| 377 | 462 | ||
| 378 | func (status *ClosedStatus) Update(task *Task, data map[string]interface{}) error { | 463 | func (status *ClosedStatus) Update(task *Task, data map[string]interface{}) error { |
| @@ -391,7 +476,7 @@ func (status *ClosedStatus) Bib(task *Task, bidder *EmployeeInfo) error { | @@ -391,7 +476,7 @@ func (status *ClosedStatus) Bib(task *Task, bidder *EmployeeInfo) error { | ||
| 391 | return fmt.Errorf("已关闭的任务不允许竞标") | 476 | return fmt.Errorf("已关闭的任务不允许竞标") |
| 392 | } | 477 | } |
| 393 | 478 | ||
| 394 | -func (status *ClosedStatus) ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo) error { | 479 | +func (status *ClosedStatus) ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo, plannedCompletionTime time.Time) error { |
| 395 | return fmt.Errorf("已关闭的任务不允许选择竞标任务的中标人") | 480 | return fmt.Errorf("已关闭的任务不允许选择竞标任务的中标人") |
| 396 | } | 481 | } |
| 397 | 482 | ||
| @@ -403,10 +488,73 @@ func (status *ClosedStatus) Off(task *Task) error { | @@ -403,10 +488,73 @@ func (status *ClosedStatus) Off(task *Task) error { | ||
| 403 | return fmt.Errorf("已关闭的任务不允许关闭") | 488 | return fmt.Errorf("已关闭的任务不允许关闭") |
| 404 | } | 489 | } |
| 405 | 490 | ||
| 406 | -func (status *ClosedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string) error { | 491 | +func (status *ClosedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error { |
| 407 | return fmt.Errorf("已关闭的任务不允许验收") | 492 | return fmt.Errorf("已关闭的任务不允许验收") |
| 408 | } | 493 | } |
| 409 | 494 | ||
| 495 | +func (status *ClosedStatus) ConfirmTask(task *Task, plannedCompletionTime time.Time) error { | ||
| 496 | + return fmt.Errorf("已关闭的任务不允许确认任务领取人") | ||
| 497 | +} | ||
| 498 | + | ||
| 499 | +func (status *ClosedStatus) RejectReceiver(task *Task) error { | ||
| 500 | + return fmt.Errorf("已关闭的任务不允许驳回任务领取人") | ||
| 501 | +} | ||
| 502 | + | ||
| 503 | +type UnConfirmedStatus struct{} | ||
| 504 | + | ||
| 505 | +func (status *UnConfirmedStatus) Update(task *Task, data map[string]interface{}) error { | ||
| 506 | + return fmt.Errorf("待确认的任务不允许编辑") | ||
| 507 | +} | ||
| 508 | + | ||
| 509 | +func (status *UnConfirmedStatus) Release(task *Task) error { | ||
| 510 | + return fmt.Errorf("待确认的任务不允许重新发布") | ||
| 511 | +} | ||
| 512 | + | ||
| 513 | +func (status *UnConfirmedStatus) Rob(task *Task, receiver *EmployeeInfo) error { | ||
| 514 | + return fmt.Errorf("待确认的任务不允许抢单") | ||
| 515 | +} | ||
| 516 | + | ||
| 517 | +func (status *UnConfirmedStatus) Bib(task *Task, bidder *EmployeeInfo) error { | ||
| 518 | + return fmt.Errorf("待确认的任务不允许竞标") | ||
| 519 | +} | ||
| 520 | + | ||
| 521 | +func (status *UnConfirmedStatus) ChooseSuccessfulBidder(task *Task, successfulBidder *EmployeeInfo, plannedCompletionTime time.Time) error { | ||
| 522 | + return fmt.Errorf("待确认的任务不允许选择竞标任务的中标人") | ||
| 523 | +} | ||
| 524 | + | ||
| 525 | +func (status *UnConfirmedStatus) ApplyComplete(task *Task) error { | ||
| 526 | + return fmt.Errorf("待确认的任务不允许申请完成任务") | ||
| 527 | +} | ||
| 528 | + | ||
| 529 | +func (status *UnConfirmedStatus) Off(task *Task) error { | ||
| 530 | + task.TaskStatus = TASK_STATUS_CLOSED | ||
| 531 | + task.CurrentStatus = &ClosedStatus{} | ||
| 532 | + return nil | ||
| 533 | +} | ||
| 534 | + | ||
| 535 | +func (status *UnConfirmedStatus) Acceptance(task *Task, participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error { | ||
| 536 | + return fmt.Errorf("待确认的任务不允许验收") | ||
| 537 | +} | ||
| 538 | + | ||
| 539 | +func (status *UnConfirmedStatus) ConfirmTask(task *Task, plannedCompletionTime time.Time) error { | ||
| 540 | + task.PlannedCompletionTime = plannedCompletionTime | ||
| 541 | + task.TaskStatus = TASK_STATUS_UNDERWAY | ||
| 542 | + task.CurrentStatus = &UnderwayStatus{} | ||
| 543 | + return nil | ||
| 544 | +} | ||
| 545 | + | ||
| 546 | +func (status *UnConfirmedStatus) RejectReceiver(task *Task) error { | ||
| 547 | + if task.TaskType != TASK_TYPE_ROB { | ||
| 548 | + return fmt.Errorf("类型不符合的任务不允许在待确认状态下驳回领取人") | ||
| 549 | + } | ||
| 550 | + task.RobInfo.Receiver = nil | ||
| 551 | + task.RobInfo.ReceiveTime = time.Time{} | ||
| 552 | + task.ReceiveTime = time.Time{} | ||
| 553 | + task.TaskStatus = TASK_STATUS_UNCLAIMED | ||
| 554 | + task.CurrentStatus = &UnClaimedStatus{} | ||
| 555 | + return nil | ||
| 556 | +} | ||
| 557 | + | ||
| 410 | type TaskRepository interface { | 558 | type TaskRepository interface { |
| 411 | Save(task *Task) (*Task, error) | 559 | Save(task *Task) (*Task, error) |
| 412 | Remove(task *Task) (*Task, error) | 560 | Remove(task *Task) (*Task, error) |
| @@ -437,8 +585,8 @@ func (task *Task) Bib(bidder *EmployeeInfo) error { | @@ -437,8 +585,8 @@ func (task *Task) Bib(bidder *EmployeeInfo) error { | ||
| 437 | return task.CurrentStatus.Bib(task, bidder) | 585 | return task.CurrentStatus.Bib(task, bidder) |
| 438 | } | 586 | } |
| 439 | 587 | ||
| 440 | -func (task *Task) ChooseSuccessfulBidder(successfulBidder *EmployeeInfo) error { | ||
| 441 | - return task.CurrentStatus.ChooseSuccessfulBidder(task, successfulBidder) | 588 | +func (task *Task) ChooseSuccessfulBidder(successfulBidder *EmployeeInfo, plannedCompletionTime time.Time) error { |
| 589 | + return task.CurrentStatus.ChooseSuccessfulBidder(task, successfulBidder, plannedCompletionTime) | ||
| 442 | } | 590 | } |
| 443 | 591 | ||
| 444 | func (task *Task) ApplyComplete() error { | 592 | func (task *Task) ApplyComplete() error { |
| @@ -449,6 +597,14 @@ func (task *Task) Off() error { | @@ -449,6 +597,14 @@ func (task *Task) Off() error { | ||
| 449 | return task.CurrentStatus.Off(task) | 597 | return task.CurrentStatus.Off(task) |
| 450 | } | 598 | } |
| 451 | 599 | ||
| 452 | -func (task *Task) Acceptance(participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string) error { | ||
| 453 | - return task.CurrentStatus.Acceptance(task, participators, taskPercentage, referenceResourceScore, solveReport, solvePictureUrls) | 600 | +func (task *Task) Acceptance(participators []*EmployeeInfo, taskPercentage []*TaskPercentageItem, referenceResourceScore []*ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) error { |
| 601 | + return task.CurrentStatus.Acceptance(task, participators, taskPercentage, referenceResourceScore, solveReport, solvePictureUrls, actualCompletionTime) | ||
| 602 | +} | ||
| 603 | + | ||
| 604 | +func (task *Task) ConfirmTask(plannedCompletionTime time.Time) error { | ||
| 605 | + return task.CurrentStatus.ConfirmTask(task, plannedCompletionTime) | ||
| 606 | +} | ||
| 607 | + | ||
| 608 | +func (task *Task) RejectReceiver() error { | ||
| 609 | + return task.CurrentStatus.RejectReceiver(task) | ||
| 454 | } | 610 | } |
| @@ -23,21 +23,21 @@ func (dao *TaskDao) AddRobInfo(taskId int64, receiver *domain.EmployeeInfo) erro | @@ -23,21 +23,21 @@ func (dao *TaskDao) AddRobInfo(taskId int64, receiver *domain.EmployeeInfo) erro | ||
| 23 | return err | 23 | return err |
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | -func (dao *TaskDao) AddBidInfo(taskId int64, bidStartTime time.Time, bidEndTime time.Time) error { | 26 | +func (dao *TaskDao) AddBidInfo(taskId int64, bidStartTime time.Time, bidEndTime time.Time, isRemind bool) error { |
| 27 | tx := dao.transactionContext.PgTx | 27 | tx := dao.transactionContext.PgTx |
| 28 | _, err := tx.QueryOne( | 28 | _, err := tx.QueryOne( |
| 29 | pg.Scan(), | 29 | pg.Scan(), |
| 30 | - "INSERT INTO bid_infos (task_id, bid_start_time, bid_end_time) VALUES (?, ?, ?)", | ||
| 31 | - taskId, bidStartTime, bidEndTime) | 30 | + "INSERT INTO bid_infos (task_id, bid_start_time, bid_end_time, is_remind) VALUES (?, ?, ?, ?)", |
| 31 | + taskId, bidStartTime, bidEndTime, isRemind) | ||
| 32 | return err | 32 | return err |
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | -func (dao *TaskDao) UpdateBidInfo(taskId int64, bidStartTime time.Time, bidEndTime time.Time) error { | 35 | +func (dao *TaskDao) UpdateBidInfo(taskId int64, bidStartTime time.Time, bidEndTime time.Time, isRemind bool) error { |
| 36 | tx := dao.transactionContext.PgTx | 36 | tx := dao.transactionContext.PgTx |
| 37 | _, err := tx.QueryOne( | 37 | _, err := tx.QueryOne( |
| 38 | pg.Scan(), | 38 | pg.Scan(), |
| 39 | - "UPDATE bid_infos SET bid_start_time=?, bid_end_time=? WHERE task_id=?", | ||
| 40 | - bidStartTime, bidEndTime, taskId) | 39 | + "UPDATE bid_infos SET bid_start_time=?, bid_end_time=?, is_remind=? WHERE task_id=?", |
| 40 | + bidStartTime, bidEndTime, isRemind, taskId) | ||
| 41 | return err | 41 | return err |
| 42 | } | 42 | } |
| 43 | 43 |
| @@ -16,7 +16,7 @@ type AcceptanceTaskService struct { | @@ -16,7 +16,7 @@ type AcceptanceTaskService struct { | ||
| 16 | transactionContext *pgTransaction.TransactionContext | 16 | transactionContext *pgTransaction.TransactionContext |
| 17 | } | 17 | } |
| 18 | 18 | ||
| 19 | -func (service *AcceptanceTaskService) Acceptance(taskId int64, operatorUid int64, participators []int64, taskPercentage []*domain.TaskPercentageItem, referenceResourceScore []*domain.ReferenceResourceItem, solveReport string, solvePictureUrls []string) (*domain.Task, error) { | 19 | +func (service *AcceptanceTaskService) Acceptance(taskId int64, operatorUid int64, participators []int64, taskPercentage []*domain.TaskPercentageItem, referenceResourceScore []*domain.ReferenceResourceItem, solveReport string, solvePictureUrls []string, actualCompletionTime time.Time) (*domain.Task, error) { |
| 20 | var employeeRepository domain.EmployeeRepository | 20 | var employeeRepository domain.EmployeeRepository |
| 21 | var taskRepository domain.TaskRepository | 21 | var taskRepository domain.TaskRepository |
| 22 | var suMoneyTransactionRecordRepository domain.SuMoneyTransactionRecordRepository | 22 | var suMoneyTransactionRecordRepository domain.SuMoneyTransactionRecordRepository |
| @@ -72,7 +72,7 @@ func (service *AcceptanceTaskService) Acceptance(taskId int64, operatorUid int64 | @@ -72,7 +72,7 @@ func (service *AcceptanceTaskService) Acceptance(taskId int64, operatorUid int64 | ||
| 72 | participatorInfos = append(participatorInfos, participator.EmployeeInfo) | 72 | participatorInfos = append(participatorInfos, participator.EmployeeInfo) |
| 73 | } | 73 | } |
| 74 | } | 74 | } |
| 75 | - if err := task.Acceptance(participatorInfos, taskPercentage, referenceResourceScore, solveReport, solvePictureUrls); err != nil { | 75 | + if err := task.Acceptance(participatorInfos, taskPercentage, referenceResourceScore, solveReport, solvePictureUrls, actualCompletionTime); err != nil { |
| 76 | return nil, err | 76 | return nil, err |
| 77 | } | 77 | } |
| 78 | for _, taskPercentageItem := range taskPercentage { | 78 | for _, taskPercentageItem := range taskPercentage { |
| @@ -16,7 +16,7 @@ type ChooseSuccessfulBidderService struct { | @@ -16,7 +16,7 @@ type ChooseSuccessfulBidderService struct { | ||
| 16 | transactionContext *pgTransaction.TransactionContext | 16 | transactionContext *pgTransaction.TransactionContext |
| 17 | } | 17 | } |
| 18 | 18 | ||
| 19 | -func (service *ChooseSuccessfulBidderService) Choose(taskId int64, successfulBidderUid int64, operatorUid int64) (*domain.Task, error) { | 19 | +func (service *ChooseSuccessfulBidderService) Choose(taskId int64, successfulBidderUid int64, operatorUid int64, plannedCompletionTime time.Time) (*domain.Task, error) { |
| 20 | var employeeRepository domain.EmployeeRepository | 20 | var employeeRepository domain.EmployeeRepository |
| 21 | var taskRepository domain.TaskRepository | 21 | var taskRepository domain.TaskRepository |
| 22 | var taskDao *dao.TaskDao | 22 | var taskDao *dao.TaskDao |
| @@ -65,7 +65,7 @@ func (service *ChooseSuccessfulBidderService) Choose(taskId int64, successfulBid | @@ -65,7 +65,7 @@ func (service *ChooseSuccessfulBidderService) Choose(taskId int64, successfulBid | ||
| 65 | if successfulBidder == nil { | 65 | if successfulBidder == nil { |
| 66 | return nil, fmt.Errorf("无效的中标人") | 66 | return nil, fmt.Errorf("无效的中标人") |
| 67 | } | 67 | } |
| 68 | - if err := task.ChooseSuccessfulBidder(successfulBidder.EmployeeInfo); err != nil { | 68 | + if err := task.ChooseSuccessfulBidder(successfulBidder.EmployeeInfo, plannedCompletionTime); err != nil { |
| 69 | return nil, err | 69 | return nil, err |
| 70 | } | 70 | } |
| 71 | if err := taskDao.SetSuccessfulBidder(taskId, task.BidInfo.SuccessfulBidder, task.BidInfo.WinBidTime); err != nil { | 71 | if err := taskDao.SetSuccessfulBidder(taskId, task.BidInfo.SuccessfulBidder, task.BidInfo.WinBidTime); err != nil { |
| 1 | +package domain_service | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + coreDomain "github.com/linmadan/egglib-go/core/domain" | ||
| 6 | + pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | ||
| 7 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
| 8 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/repository" | ||
| 9 | + "time" | ||
| 10 | +) | ||
| 11 | + | ||
| 12 | +type ConfirmRobTaskService struct { | ||
| 13 | + coreDomain.BaseEventPublisher | ||
| 14 | + transactionContext *pgTransaction.TransactionContext | ||
| 15 | +} | ||
| 16 | + | ||
| 17 | +func (service *ConfirmRobTaskService) Confirm(taskId int64, operatorUid int64, plannedCompletionTime time.Time) (*domain.Task, error) { | ||
| 18 | + var employeeRepository domain.EmployeeRepository | ||
| 19 | + var taskRepository domain.TaskRepository | ||
| 20 | + if repository, err := repository.NewEmployeeRepository(service.transactionContext); err != nil { | ||
| 21 | + return nil, err | ||
| 22 | + } else { | ||
| 23 | + employeeRepository = repository | ||
| 24 | + } | ||
| 25 | + if repository, err := repository.NewTaskRepository(service.transactionContext); err != nil { | ||
| 26 | + return nil, err | ||
| 27 | + } else { | ||
| 28 | + taskRepository = repository | ||
| 29 | + } | ||
| 30 | + operator, err := employeeRepository.FindOne(map[string]interface{}{ | ||
| 31 | + "uid": operatorUid, | ||
| 32 | + }) | ||
| 33 | + if err != nil { | ||
| 34 | + return nil, err | ||
| 35 | + } | ||
| 36 | + if operator == nil { | ||
| 37 | + return nil, fmt.Errorf("无效的操作者") | ||
| 38 | + } | ||
| 39 | + task, err := taskRepository.FindOne(map[string]interface{}{ | ||
| 40 | + "taskId": taskId, | ||
| 41 | + }) | ||
| 42 | + if err != nil { | ||
| 43 | + return nil, err | ||
| 44 | + } | ||
| 45 | + if task == nil { | ||
| 46 | + return nil, fmt.Errorf("无效的任务") | ||
| 47 | + } | ||
| 48 | + if operator.EmployeeInfo.Uid != task.Sponsor.Uid { | ||
| 49 | + return nil, fmt.Errorf("无效的任务发布者") | ||
| 50 | + } | ||
| 51 | + if err := task.ConfirmTask(plannedCompletionTime); err != nil { | ||
| 52 | + return nil, err | ||
| 53 | + } | ||
| 54 | + if task, err := taskRepository.Save(task); err != nil { | ||
| 55 | + return nil, err | ||
| 56 | + } else { | ||
| 57 | + return task, nil | ||
| 58 | + } | ||
| 59 | +} | ||
| 60 | + | ||
| 61 | +func NewConfirmRobTaskService(transactionContext *pgTransaction.TransactionContext) (*ConfirmRobTaskService, error) { | ||
| 62 | + if transactionContext == nil { | ||
| 63 | + return nil, fmt.Errorf("transactionContext参数不能为nil") | ||
| 64 | + } else { | ||
| 65 | + return &ConfirmRobTaskService{ | ||
| 66 | + transactionContext: transactionContext, | ||
| 67 | + }, nil | ||
| 68 | + } | ||
| 69 | +} |
| 1 | +package domain_service | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + coreDomain "github.com/linmadan/egglib-go/core/domain" | ||
| 6 | + pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | ||
| 7 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
| 8 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/repository" | ||
| 9 | + "time" | ||
| 10 | +) | ||
| 11 | + | ||
| 12 | +type RejectTaskReceiverService struct { | ||
| 13 | + coreDomain.BaseEventPublisher | ||
| 14 | + transactionContext *pgTransaction.TransactionContext | ||
| 15 | +} | ||
| 16 | + | ||
| 17 | +func (service *RejectTaskReceiverService) Reject(taskId int64, operatorUid int64, rejectReason string) (*domain.Task, error) { | ||
| 18 | + var employeeRepository domain.EmployeeRepository | ||
| 19 | + var taskRepository domain.TaskRepository | ||
| 20 | + var rejectTaskRecordRepository domain.RejectTaskRecordRepository | ||
| 21 | + if repository, err := repository.NewEmployeeRepository(service.transactionContext); err != nil { | ||
| 22 | + return nil, err | ||
| 23 | + } else { | ||
| 24 | + employeeRepository = repository | ||
| 25 | + } | ||
| 26 | + if repository, err := repository.NewTaskRepository(service.transactionContext); err != nil { | ||
| 27 | + return nil, err | ||
| 28 | + } else { | ||
| 29 | + taskRepository = repository | ||
| 30 | + } | ||
| 31 | + if repository, err := repository.NewRejectTaskRecordRepository(service.transactionContext); err != nil { | ||
| 32 | + return nil, err | ||
| 33 | + } else { | ||
| 34 | + rejectTaskRecordRepository = repository | ||
| 35 | + } | ||
| 36 | + operator, err := employeeRepository.FindOne(map[string]interface{}{ | ||
| 37 | + "uid": operatorUid, | ||
| 38 | + }) | ||
| 39 | + if err != nil { | ||
| 40 | + return nil, err | ||
| 41 | + } | ||
| 42 | + if operator == nil { | ||
| 43 | + return nil, fmt.Errorf("无效的操作者") | ||
| 44 | + } | ||
| 45 | + task, err := taskRepository.FindOne(map[string]interface{}{ | ||
| 46 | + "taskId": taskId, | ||
| 47 | + }) | ||
| 48 | + if err != nil { | ||
| 49 | + return nil, err | ||
| 50 | + } | ||
| 51 | + if task == nil { | ||
| 52 | + return nil, fmt.Errorf("无效的任务") | ||
| 53 | + } | ||
| 54 | + if operator.EmployeeInfo.Uid != task.Sponsor.Uid { | ||
| 55 | + return nil, fmt.Errorf("无效的任务发布者") | ||
| 56 | + } | ||
| 57 | + if err := task.RejectReceiver(); err != nil { | ||
| 58 | + return nil, err | ||
| 59 | + } | ||
| 60 | + rejectTaskRecord := &domain.RejectTaskRecord{ | ||
| 61 | + Task: task, | ||
| 62 | + Operator: operator.EmployeeInfo, | ||
| 63 | + RejectReason: rejectReason, | ||
| 64 | + CreateTime: time.Now(), | ||
| 65 | + } | ||
| 66 | + if _, err := rejectTaskRecordRepository.Save(rejectTaskRecord); err != nil { | ||
| 67 | + return nil, err | ||
| 68 | + } | ||
| 69 | + if task, err := taskRepository.Save(task); err != nil { | ||
| 70 | + return nil, err | ||
| 71 | + } else { | ||
| 72 | + return task, nil | ||
| 73 | + } | ||
| 74 | +} | ||
| 75 | + | ||
| 76 | +func NewRejectTaskReceiverService(transactionContext *pgTransaction.TransactionContext) (*RejectTaskReceiverService, error) { | ||
| 77 | + if transactionContext == nil { | ||
| 78 | + return nil, fmt.Errorf("transactionContext参数不能为nil") | ||
| 79 | + } else { | ||
| 80 | + return &RejectTaskReceiverService{ | ||
| 81 | + transactionContext: transactionContext, | ||
| 82 | + }, nil | ||
| 83 | + } | ||
| 84 | +} |
| @@ -87,7 +87,7 @@ func (service *ReleaseTaskService) Release(taskId int64, operatorUid int64) (*do | @@ -87,7 +87,7 @@ func (service *ReleaseTaskService) Release(taskId int64, operatorUid int64) (*do | ||
| 87 | taskReleasedEvent.Sponsor = task.Sponsor | 87 | taskReleasedEvent.Sponsor = task.Sponsor |
| 88 | taskReleasedEvent.TaskStatus = task.TaskStatus | 88 | taskReleasedEvent.TaskStatus = task.TaskStatus |
| 89 | taskReleasedEvent.ReferenceResource = task.ReferenceResource | 89 | taskReleasedEvent.ReferenceResource = task.ReferenceResource |
| 90 | - taskReleasedEvent.CustomerValue = task.CustomerValue | 90 | + taskReleasedEvent.CustomerValues = task.CustomerValues |
| 91 | taskReleasedEvent.TaskNature = task.TaskNature | 91 | taskReleasedEvent.TaskNature = task.TaskNature |
| 92 | taskReleasedEvent.SuMoney = task.SuMoney | 92 | taskReleasedEvent.SuMoney = task.SuMoney |
| 93 | taskReleasedEvent.AcceptanceStandard = task.AcceptanceStandard | 93 | taskReleasedEvent.AcceptanceStandard = task.AcceptanceStandard |
| @@ -33,6 +33,7 @@ func init() { | @@ -33,6 +33,7 @@ func init() { | ||
| 33 | (*models.CustomerValue)(nil), | 33 | (*models.CustomerValue)(nil), |
| 34 | (*models.TaskNature)(nil), | 34 | (*models.TaskNature)(nil), |
| 35 | (*models.ProjectBelong)(nil), | 35 | (*models.ProjectBelong)(nil), |
| 36 | + (*models.RejectTaskRecord)(nil), | ||
| 36 | } { | 37 | } { |
| 37 | err := DB.CreateTable(model, &orm.CreateTableOptions{ | 38 | err := DB.CreateTable(model, &orm.CreateTableOptions{ |
| 38 | Temp: false, | 39 | Temp: false, |
| @@ -16,6 +16,8 @@ type BidInfo struct { | @@ -16,6 +16,8 @@ type BidInfo struct { | ||
| 16 | BidStartTime time.Time | 16 | BidStartTime time.Time |
| 17 | // 竞标结束时间 | 17 | // 竞标结束时间 |
| 18 | BidEndTime time.Time | 18 | BidEndTime time.Time |
| 19 | + //是否截止时间前一天提醒 | ||
| 20 | + IsRemind bool | ||
| 19 | // 中标时间 | 21 | // 中标时间 |
| 20 | WinBidTime time.Time | 22 | WinBidTime time.Time |
| 21 | TaskId int64 `pg:",unique"` | 23 | TaskId int64 `pg:",unique"` |
| 1 | +package models | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
| 5 | + "time" | ||
| 6 | +) | ||
| 7 | + | ||
| 8 | +type RejectTaskRecord struct { | ||
| 9 | + TableName string `pg:"reject_task_records,alias:reject_task_record"` | ||
| 10 | + // 驳回任务记录ID | ||
| 11 | + Id int64 `pg:",pk"` | ||
| 12 | + // 任务 | ||
| 13 | + TaskId int64 | ||
| 14 | + // 操作人 | ||
| 15 | + Operator *domain.EmployeeInfo | ||
| 16 | + // 驳回理由 | ||
| 17 | + RejectReason string | ||
| 18 | + // 创建时间 | ||
| 19 | + CreateTime time.Time | ||
| 20 | +} |
| @@ -21,10 +21,12 @@ type Task struct { | @@ -21,10 +21,12 @@ type Task struct { | ||
| 21 | TaskStatus int | 21 | TaskStatus int |
| 22 | // 引用资源 | 22 | // 引用资源 |
| 23 | ReferenceResource *domain.ReferenceResource | 23 | ReferenceResource *domain.ReferenceResource |
| 24 | + // 项目归属 | ||
| 25 | + ProjectBelong int | ||
| 24 | // 客户价值列表 | 26 | // 客户价值列表 |
| 25 | - CustomerValue []string `pg:",array"` | 27 | + CustomerValues []int `pg:",array"` |
| 26 | // 任务性质 | 28 | // 任务性质 |
| 27 | - TaskNature string | 29 | + TaskNature int |
| 28 | // 奖励素币 | 30 | // 奖励素币 |
| 29 | SuMoney float64 | 31 | SuMoney float64 |
| 30 | // 验收标准 | 32 | // 验收标准 |
| @@ -43,6 +45,12 @@ type Task struct { | @@ -43,6 +45,12 @@ type Task struct { | ||
| 43 | SolveReport string | 45 | SolveReport string |
| 44 | // 解决图片URL列表 | 46 | // 解决图片URL列表 |
| 45 | SolvePictureUrls []string `pg:",array"` | 47 | SolvePictureUrls []string `pg:",array"` |
| 48 | + // 指派人员 | ||
| 49 | + AssignedPerson *domain.EmployeeInfo | ||
| 50 | + // 计划完成时间 | ||
| 51 | + PlannedCompletionTime time.Time | ||
| 52 | + // 实际完成时间 | ||
| 53 | + ActualCompletionTime time.Time | ||
| 46 | // 抢单任务信息 | 54 | // 抢单任务信息 |
| 47 | RobInfo *RobInfo | 55 | RobInfo *RobInfo |
| 48 | // 竞标任务信息 | 56 | // 竞标任务信息 |
| @@ -75,6 +75,9 @@ func (repository *CustomerValueRepository) Find(queryOptions map[string]interfac | @@ -75,6 +75,9 @@ func (repository *CustomerValueRepository) Find(queryOptions map[string]interfac | ||
| 75 | if customerValueNameMatch, ok := queryOptions["customerValueNameMatch"]; ok && (customerValueNameMatch != "") { | 75 | if customerValueNameMatch, ok := queryOptions["customerValueNameMatch"]; ok && (customerValueNameMatch != "") { |
| 76 | query = query.Where(`customer_value.customer_value_name LIKE ?`, fmt.Sprintf("%%%s%%", customerValueNameMatch.(string))) | 76 | query = query.Where(`customer_value.customer_value_name LIKE ?`, fmt.Sprintf("%%%s%%", customerValueNameMatch.(string))) |
| 77 | } | 77 | } |
| 78 | + if customerValueIds, ok := queryOptions["customerValueIds"]; ok { | ||
| 79 | + query = query.Where(`customer_value.id IN (?)`, pg.In(customerValueIds.([]int))) | ||
| 80 | + } | ||
| 78 | if offset, ok := queryOptions["offset"]; ok { | 81 | if offset, ok := queryOptions["offset"]; ok { |
| 79 | offset := offset.(int) | 82 | offset := offset.(int) |
| 80 | if offset > -1 { | 83 | if offset > -1 { |
| 1 | +package repository | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + "time" | ||
| 6 | + | ||
| 7 | + "github.com/go-pg/pg" | ||
| 8 | + pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | ||
| 9 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
| 10 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/pg/models" | ||
| 11 | +) | ||
| 12 | + | ||
| 13 | +type RejectTaskRecordRepository struct { | ||
| 14 | + transactionContext *pgTransaction.TransactionContext | ||
| 15 | +} | ||
| 16 | + | ||
| 17 | +func (repository *RejectTaskRecordRepository) Save(rejectTaskRecord *domain.RejectTaskRecord) (*domain.RejectTaskRecord, error) { | ||
| 18 | + tx := repository.transactionContext.PgTx | ||
| 19 | + if rejectTaskRecord.Identify() == nil { | ||
| 20 | + if _, err := tx.QueryOne( | ||
| 21 | + pg.Scan(&rejectTaskRecord.RejectTaskRecordId, &rejectTaskRecord.Task.TaskId, &rejectTaskRecord.Operator, &rejectTaskRecord.RejectReason, &rejectTaskRecord.CreateTime), | ||
| 22 | + "INSERT INTO reject_task_records (task_id, operator, reject_reason, create_time) VALUES (?, ?, ?, ?) RETURNING id, task_id, operator, reject_reason, create_time", | ||
| 23 | + rejectTaskRecord.Task.TaskId, rejectTaskRecord.Operator, rejectTaskRecord.RejectReason, rejectTaskRecord.CreateTime); err != nil { | ||
| 24 | + return rejectTaskRecord, err | ||
| 25 | + } | ||
| 26 | + } else { | ||
| 27 | + if _, err := tx.QueryOne( | ||
| 28 | + pg.Scan(&rejectTaskRecord.RejectTaskRecordId, &rejectTaskRecord.Task, &rejectTaskRecord.Operator, &rejectTaskRecord.RejectReason, &rejectTaskRecord.CreateTime), | ||
| 29 | + "UPDATE reject_task_records SET task_id=?, operator=?, reject_reason=?, create_time=? WHERE id=? RETURNING id, task_id, operator, reject_reason, create_time", | ||
| 30 | + rejectTaskRecord.Task.TaskId, rejectTaskRecord.Operator, rejectTaskRecord.RejectReason, rejectTaskRecord.CreateTime, rejectTaskRecord.Identify()); err != nil { | ||
| 31 | + return rejectTaskRecord, err | ||
| 32 | + } | ||
| 33 | + } | ||
| 34 | + return rejectTaskRecord, nil | ||
| 35 | +} | ||
| 36 | +func (repository *RejectTaskRecordRepository) Remove(rejectTaskRecord *domain.RejectTaskRecord) (*domain.RejectTaskRecord, error) { | ||
| 37 | + tx := repository.transactionContext.PgTx | ||
| 38 | + rejectTaskRecordModel := new(models.RejectTaskRecord) | ||
| 39 | + rejectTaskRecordModel.Id = rejectTaskRecord.Identify().(int64) | ||
| 40 | + if _, err := tx.Model(rejectTaskRecordModel).WherePK().Delete(); err != nil { | ||
| 41 | + return rejectTaskRecord, err | ||
| 42 | + } | ||
| 43 | + return rejectTaskRecord, nil | ||
| 44 | +} | ||
| 45 | +func (repository *RejectTaskRecordRepository) FindOne(queryOptions map[string]interface{}) (*domain.RejectTaskRecord, error) { | ||
| 46 | + tx := repository.transactionContext.PgTx | ||
| 47 | + rejectTaskRecordModel := new(models.RejectTaskRecord) | ||
| 48 | + query := tx.Model(rejectTaskRecordModel) | ||
| 49 | + if rejectTaskRecordId, ok := queryOptions["rejectTaskRecordId"]; ok { | ||
| 50 | + query = query.Where("reject_task_record.id = ?", rejectTaskRecordId) | ||
| 51 | + } | ||
| 52 | + if err := query.First(); err != nil { | ||
| 53 | + if err.Error() == "pg: no rows in result set" { | ||
| 54 | + return nil, fmt.Errorf("没有此驳回任务记录") | ||
| 55 | + } else { | ||
| 56 | + return nil, err | ||
| 57 | + } | ||
| 58 | + } | ||
| 59 | + if rejectTaskRecordModel.Id == 0 { | ||
| 60 | + return nil, nil | ||
| 61 | + } else { | ||
| 62 | + return repository.transformPgModelToDomainModel(rejectTaskRecordModel) | ||
| 63 | + } | ||
| 64 | +} | ||
| 65 | +func (repository *RejectTaskRecordRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.RejectTaskRecord, error) { | ||
| 66 | + tx := repository.transactionContext.PgTx | ||
| 67 | + var rejectTaskRecordModels []*models.RejectTaskRecord | ||
| 68 | + rejectTaskRecords := make([]*domain.RejectTaskRecord, 0) | ||
| 69 | + query := tx.Model(&rejectTaskRecordModels) | ||
| 70 | + if taskIds, ok := queryOptions["taskIds"]; ok { | ||
| 71 | + if len(taskIds.([]int64)) > 0 { | ||
| 72 | + query = query.Where(`reject_task_record.task_id IN (?)`, pg.In(taskIds.([]int64))) | ||
| 73 | + } else { | ||
| 74 | + return int64(0), rejectTaskRecords, nil | ||
| 75 | + } | ||
| 76 | + } | ||
| 77 | + if rejectStartTime, ok := queryOptions["rejectStartTime"]; ok && !rejectStartTime.(time.Time).IsZero() { | ||
| 78 | + query = query.Where(`reject_task_record.create_time > ?`, rejectStartTime) | ||
| 79 | + } | ||
| 80 | + if rejectEndTime, ok := queryOptions["rejectEndTime"]; ok && !rejectEndTime.(time.Time).IsZero() { | ||
| 81 | + query = query.Where(`reject_task_record.create_time < ?`, rejectEndTime) | ||
| 82 | + } | ||
| 83 | + if offset, ok := queryOptions["offset"]; ok { | ||
| 84 | + offset := offset.(int) | ||
| 85 | + if offset > -1 { | ||
| 86 | + query = query.Offset(offset) | ||
| 87 | + } | ||
| 88 | + } else { | ||
| 89 | + query = query.Offset(0) | ||
| 90 | + } | ||
| 91 | + if limit, ok := queryOptions["limit"]; ok { | ||
| 92 | + limit := limit.(int) | ||
| 93 | + if limit > -1 { | ||
| 94 | + query = query.Limit(limit) | ||
| 95 | + } | ||
| 96 | + } else { | ||
| 97 | + query = query.Limit(20) | ||
| 98 | + } | ||
| 99 | + if count, err := query.Order("id DESC").SelectAndCount(); err != nil { | ||
| 100 | + return 0, rejectTaskRecords, err | ||
| 101 | + } else { | ||
| 102 | + for _, rejectTaskRecordModel := range rejectTaskRecordModels { | ||
| 103 | + if rejectTaskRecord, err := repository.transformPgModelToDomainModel(rejectTaskRecordModel); err != nil { | ||
| 104 | + return 0, rejectTaskRecords, err | ||
| 105 | + } else { | ||
| 106 | + rejectTaskRecords = append(rejectTaskRecords, rejectTaskRecord) | ||
| 107 | + } | ||
| 108 | + } | ||
| 109 | + return int64(count), rejectTaskRecords, nil | ||
| 110 | + } | ||
| 111 | +} | ||
| 112 | +func (repository *RejectTaskRecordRepository) transformPgModelToDomainModel(rejectTaskRecordModel *models.RejectTaskRecord) (*domain.RejectTaskRecord, error) { | ||
| 113 | + return &domain.RejectTaskRecord{ | ||
| 114 | + RejectTaskRecordId: rejectTaskRecordModel.Id, | ||
| 115 | + Task: &domain.Task{ | ||
| 116 | + TaskId: rejectTaskRecordModel.TaskId, | ||
| 117 | + }, | ||
| 118 | + Operator: rejectTaskRecordModel.Operator, | ||
| 119 | + RejectReason: rejectTaskRecordModel.RejectReason, | ||
| 120 | + CreateTime: rejectTaskRecordModel.CreateTime, | ||
| 121 | + }, nil | ||
| 122 | +} | ||
| 123 | +func NewRejectTaskRecordRepository(transactionContext *pgTransaction.TransactionContext) (*RejectTaskRecordRepository, error) { | ||
| 124 | + if transactionContext == nil { | ||
| 125 | + return nil, fmt.Errorf("transactionContext参数不能为nil") | ||
| 126 | + } else { | ||
| 127 | + return &RejectTaskRecordRepository{ | ||
| 128 | + transactionContext: transactionContext, | ||
| 129 | + }, nil | ||
| 130 | + } | ||
| 131 | +} |
| @@ -31,9 +31,9 @@ func (repository *TaskRepository) Save(task *domain.Task) (*domain.Task, error) | @@ -31,9 +31,9 @@ func (repository *TaskRepository) Save(task *domain.Task) (*domain.Task, error) | ||
| 31 | return task, err | 31 | return task, err |
| 32 | } | 32 | } |
| 33 | if _, err := tx.QueryOne( | 33 | if _, err := tx.QueryOne( |
| 34 | - pg.Scan(&task.TaskId, &task.CompanyId, &task.TaskName, &task.TaskType, &task.Sponsor, &task.TaskStatus, &task.ReferenceResource, pg.Array(&task.CustomerValue), &task.TaskNature, &task.SuMoney, &task.AcceptanceStandard, &task.TaskDescription, pg.Array(&task.TaskPictureUrls), &task.IsRewardTake, &task.CreateTime, &task.ReleaseTime, &task.Participators, &task.TaskPercentage, &task.SolveReport, pg.Array(&task.SolvePictureUrls)), | ||
| 35 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, create_time, release_time, participators, task_percentage, solve_report, solve_picture_urls) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, create_time, release_time, participators, task_percentage, solve_report, solve_picture_urls", | ||
| 36 | - takeId, task.CompanyId, task.TaskName, task.TaskType, task.Sponsor, task.TaskStatus, task.ReferenceResource, pg.Array(task.CustomerValue), task.TaskNature, task.SuMoney, task.AcceptanceStandard, task.TaskDescription, pg.Array(task.TaskPictureUrls), task.IsRewardTake, task.CreateTime, task.ReleaseTime, task.Participators, task.TaskPercentage, task.SolveReport, pg.Array(task.SolvePictureUrls)); err != nil { | 34 | + pg.Scan(&task.TaskId, &task.CompanyId, &task.TaskName, &task.TaskType, &task.Sponsor, &task.TaskStatus, &task.ReferenceResource, &task.ProjectBelong, pg.Array(&task.CustomerValues), &task.TaskNature, &task.SuMoney, &task.AcceptanceStandard, &task.TaskDescription, pg.Array(&task.TaskPictureUrls), &task.IsRewardTake, &task.CreateTime, &task.ReleaseTime, &task.Participators, &task.TaskPercentage, &task.SolveReport, pg.Array(&task.SolvePictureUrls), &task.AssignedPerson, &task.PlannedCompletionTime, &task.ActualCompletionTime), |
| 35 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, create_time, release_time, participators, task_percentage, solve_report, solve_picture_urls, assigned_person, planned_completion_time, actual_completion_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, create_time, release_time, participators, task_percentage, solve_report, solve_picture_urls, assigned_person, planned_completion_time, actual_completion_time", | ||
| 36 | + takeId, task.CompanyId, task.TaskName, task.TaskType, task.Sponsor, task.TaskStatus, task.ReferenceResource, task.ProjectBelong, pg.Array(task.CustomerValues), task.TaskNature, task.SuMoney, task.AcceptanceStandard, task.TaskDescription, pg.Array(task.TaskPictureUrls), task.IsRewardTake, task.CreateTime, task.ReleaseTime, task.Participators, task.TaskPercentage, task.SolveReport, pg.Array(task.SolvePictureUrls), task.AssignedPerson, task.PlannedCompletionTime, task.ActualCompletionTime); err != nil { | ||
| 37 | return task, err | 37 | return task, err |
| 38 | } | 38 | } |
| 39 | } else { | 39 | } else { |
| @@ -45,9 +45,9 @@ func (repository *TaskRepository) Save(task *domain.Task) (*domain.Task, error) | @@ -45,9 +45,9 @@ func (repository *TaskRepository) Save(task *domain.Task) (*domain.Task, error) | ||
| 45 | taskReceiverUid = task.BidInfo.SuccessfulBidder.Uid | 45 | taskReceiverUid = task.BidInfo.SuccessfulBidder.Uid |
| 46 | } | 46 | } |
| 47 | if _, err := tx.QueryOne( | 47 | if _, err := tx.QueryOne( |
| 48 | - pg.Scan(&task.TaskId, &task.CompanyId, &task.TaskName, &task.TaskType, &task.Sponsor, &task.TaskStatus, &task.ReferenceResource, pg.Array(&task.CustomerValue), &task.TaskNature, &task.SuMoney, &task.AcceptanceStandard, &task.TaskDescription, pg.Array(&task.TaskPictureUrls), &task.IsRewardTake, &task.CreateTime, &task.ReleaseTime, &task.Participators, &task.TaskPercentage, &task.SolveReport, pg.Array(&task.SolvePictureUrls), &task.ReceiveTime, &task.CompleteTime, &task.AcceptanceTime), | ||
| 49 | - "UPDATE tasks SET company_id=?, task_name=?, task_type=?, sponsor=?, task_status=?, reference_resource=?, customer_value=?, task_nature=?, su_money=?, acceptance_standard=?, task_description=?, task_picture_urls=?, is_reward_take=?, receiver_uid=?, create_time=?, release_time=?, participators=?, task_percentage=?, solve_report=?, solve_picture_urls=?, receive_time=?, complete_time=?, acceptance_time=? WHERE id=? RETURNING id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, create_time, release_time, participators, task_percentage, solve_report, solve_picture_urls, receive_time, complete_time, acceptance_time", | ||
| 50 | - task.CompanyId, task.TaskName, task.TaskType, task.Sponsor, task.TaskStatus, task.ReferenceResource, pg.Array(task.CustomerValue), task.TaskNature, task.SuMoney, task.AcceptanceStandard, task.TaskDescription, pg.Array(task.TaskPictureUrls), task.IsRewardTake, taskReceiverUid, task.CreateTime, task.ReleaseTime, task.Participators, task.TaskPercentage, task.SolveReport, pg.Array(task.SolvePictureUrls), task.ReceiveTime, task.CompleteTime, task.AcceptanceTime, task.Identify()); err != nil { | 48 | + pg.Scan(&task.TaskId, &task.CompanyId, &task.TaskName, &task.TaskType, &task.Sponsor, &task.TaskStatus, &task.ReferenceResource, &task.ProjectBelong, pg.Array(&task.CustomerValues), &task.TaskNature, &task.SuMoney, &task.AcceptanceStandard, &task.TaskDescription, pg.Array(&task.TaskPictureUrls), &task.IsRewardTake, &task.CreateTime, &task.ReleaseTime, &task.Participators, &task.TaskPercentage, &task.SolveReport, pg.Array(&task.SolvePictureUrls), &task.AssignedPerson, &task.PlannedCompletionTime, &task.ActualCompletionTime, &task.ReceiveTime, &task.CompleteTime, &task.AcceptanceTime), |
| 49 | + "UPDATE tasks SET company_id=?, task_name=?, task_type=?, sponsor=?, task_status=?, reference_resource=?, project_belong=?, customer_values=?, task_nature=?, su_money=?, acceptance_standard=?, task_description=?, task_picture_urls=?, is_reward_take=?, receiver_uid=?, create_time=?, release_time=?, participators=?, task_percentage=?, solve_report=?, solve_picture_urls=?, assigned_person=?, planned_completion_time=?, actual_completion_time=?, receive_time=?, complete_time=?, acceptance_time=? WHERE id=? RETURNING id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, create_time, release_time, participators, task_percentage, solve_report, solve_picture_urls, assigned_person, planned_completion_time, actual_completion_time, receive_time, complete_time, acceptance_time", | ||
| 50 | + task.CompanyId, task.TaskName, task.TaskType, task.Sponsor, task.TaskStatus, task.ReferenceResource, task.ProjectBelong, pg.Array(task.CustomerValues), task.TaskNature, task.SuMoney, task.AcceptanceStandard, task.TaskDescription, pg.Array(task.TaskPictureUrls), task.IsRewardTake, taskReceiverUid, task.CreateTime, task.ReleaseTime, task.Participators, task.TaskPercentage, task.SolveReport, pg.Array(task.SolvePictureUrls), task.AssignedPerson, task.PlannedCompletionTime, task.ActualCompletionTime, task.ReceiveTime, task.CompleteTime, task.AcceptanceTime, task.Identify()); err != nil { | ||
| 51 | return task, err | 51 | return task, err |
| 52 | } | 52 | } |
| 53 | } | 53 | } |
| @@ -114,25 +114,33 @@ func (repository *TaskRepository) Find(queryOptions map[string]interface{}) (int | @@ -114,25 +114,33 @@ func (repository *TaskRepository) Find(queryOptions map[string]interface{}) (int | ||
| 114 | if taskType, ok := queryOptions["taskType"]; ok && (taskType != 0) { | 114 | if taskType, ok := queryOptions["taskType"]; ok && (taskType != 0) { |
| 115 | query = query.Where(`task.task_type = ?`, taskType) | 115 | query = query.Where(`task.task_type = ?`, taskType) |
| 116 | } | 116 | } |
| 117 | - if taskNature, ok := queryOptions["taskNature"]; ok && (taskNature != "") { | ||
| 118 | - query = query.Where(`task.task_nature = ?`, taskNature) | 117 | + if projectBelongs, ok := queryOptions["projectBelongs"]; ok && len(projectBelongs.([]int)) != 0 { |
| 118 | + query = query.WhereGroup(func(q *orm.Query) (*orm.Query, error) { | ||
| 119 | + for _, value := range projectBelongs.([]int) { | ||
| 120 | + q = q.WhereOr("task.project_belongs @> ?", pg.Array([]int{value})) | ||
| 121 | + } | ||
| 122 | + return q, nil | ||
| 123 | + }) | ||
| 119 | } | 124 | } |
| 120 | - if customerValue, ok := queryOptions["customerValue"]; ok && len(customerValue.([]string)) != 0 { | 125 | + if taskNatures, ok := queryOptions["taskNatures"]; ok && len(taskNatures.([]int)) != 0 { |
| 121 | query = query.WhereGroup(func(q *orm.Query) (*orm.Query, error) { | 126 | query = query.WhereGroup(func(q *orm.Query) (*orm.Query, error) { |
| 122 | - for _, value := range customerValue.([]string) { | ||
| 123 | - q = q.WhereOr("task.customer_value @> ?", pg.Array([]string{value})) | 127 | + for _, value := range taskNatures.([]int) { |
| 128 | + q = q.WhereOr("task.task_natures @> ?", pg.Array([]int{value})) | ||
| 124 | } | 129 | } |
| 125 | return q, nil | 130 | return q, nil |
| 126 | }) | 131 | }) |
| 127 | } | 132 | } |
| 128 | - if taskContentMatch, ok := queryOptions["taskContentMatch"]; ok && (taskContentMatch != "") { | 133 | + if customerValues, ok := queryOptions["customerValues"]; ok && len(customerValues.([]int)) != 0 { |
| 129 | query = query.WhereGroup(func(q *orm.Query) (*orm.Query, error) { | 134 | query = query.WhereGroup(func(q *orm.Query) (*orm.Query, error) { |
| 130 | - q = q.WhereOr("task.task_name LIKE ?", fmt.Sprintf("%%%s%%", taskContentMatch.(string))). | ||
| 131 | - WhereOr("task.task_nature = ?", taskContentMatch.(string)). | ||
| 132 | - WhereOr("task.customer_value @> ?", pg.Array([]string{taskContentMatch.(string)})) | 135 | + for _, value := range customerValues.([]int) { |
| 136 | + q = q.WhereOr("task.customer_values @> ?", pg.Array([]int{value})) | ||
| 137 | + } | ||
| 133 | return q, nil | 138 | return q, nil |
| 134 | }) | 139 | }) |
| 135 | } | 140 | } |
| 141 | + if taskContentMatch, ok := queryOptions["taskContentMatch"]; ok && (taskContentMatch != "") { | ||
| 142 | + query = query.Where("task.task_name LIKE ?", fmt.Sprintf("%%%s%%", taskContentMatch.(string))) | ||
| 143 | + } | ||
| 136 | if isRewardTake, ok := queryOptions["isRewardTake"]; ok && (isRewardTake != false) { | 144 | if isRewardTake, ok := queryOptions["isRewardTake"]; ok && (isRewardTake != false) { |
| 137 | query = query.Where(`task.is_reward_take = ?`, isRewardTake) | 145 | query = query.Where(`task.is_reward_take = ?`, isRewardTake) |
| 138 | } | 146 | } |
| @@ -154,6 +162,9 @@ func (repository *TaskRepository) Find(queryOptions map[string]interface{}) (int | @@ -154,6 +162,9 @@ func (repository *TaskRepository) Find(queryOptions map[string]interface{}) (int | ||
| 154 | if participator, ok := queryOptions["participator"]; ok && (participator != int64(0)) { | 162 | if participator, ok := queryOptions["participator"]; ok && (participator != int64(0)) { |
| 155 | query = query.Where(`task.participators @> '[{"uid":?}]'`, participator) | 163 | query = query.Where(`task.participators @> '[{"uid":?}]'`, participator) |
| 156 | } | 164 | } |
| 165 | + if assignedPerson, ok := queryOptions["assignedPerson"]; ok && (assignedPerson != int64(0)) { | ||
| 166 | + query = query.Where(`task.assignedPerson @> '{"uid":?}'`, assignedPerson) | ||
| 167 | + } | ||
| 157 | if taskIds, ok := queryOptions["taskIds"]; ok { | 168 | if taskIds, ok := queryOptions["taskIds"]; ok { |
| 158 | query = query.Where(`task.id IN (?)`, pg.In(taskIds.([]int64))) | 169 | query = query.Where(`task.id IN (?)`, pg.In(taskIds.([]int64))) |
| 159 | } | 170 | } |
| @@ -255,6 +266,7 @@ func (repository *TaskRepository) transformPgModelToDomainModel(taskModel *model | @@ -255,6 +266,7 @@ func (repository *TaskRepository) transformPgModelToDomainModel(taskModel *model | ||
| 255 | BidStartTime: taskModel.BidInfo.BidStartTime, | 266 | BidStartTime: taskModel.BidInfo.BidStartTime, |
| 256 | BidEndTime: taskModel.BidInfo.BidEndTime, | 267 | BidEndTime: taskModel.BidInfo.BidEndTime, |
| 257 | SuccessfulBidder: taskModel.BidInfo.SuccessfulBidder, | 268 | SuccessfulBidder: taskModel.BidInfo.SuccessfulBidder, |
| 269 | + IsRemind: taskModel.BidInfo.IsRemind, | ||
| 258 | WinBidTime: taskModel.BidInfo.WinBidTime, | 270 | WinBidTime: taskModel.BidInfo.WinBidTime, |
| 259 | } | 271 | } |
| 260 | } | 272 | } |
| @@ -278,34 +290,41 @@ func (repository *TaskRepository) transformPgModelToDomainModel(taskModel *model | @@ -278,34 +290,41 @@ func (repository *TaskRepository) transformPgModelToDomainModel(taskModel *model | ||
| 278 | case domain.TASK_STATUS_CLOSED: | 290 | case domain.TASK_STATUS_CLOSED: |
| 279 | currentStatus = &domain.ClosedStatus{} | 291 | currentStatus = &domain.ClosedStatus{} |
| 280 | break | 292 | break |
| 293 | + case domain.TASK_STATUS_UNCONFIRMED: | ||
| 294 | + currentStatus = &domain.UnConfirmedStatus{} | ||
| 295 | + break | ||
| 281 | } | 296 | } |
| 282 | return &domain.Task{ | 297 | return &domain.Task{ |
| 283 | - TaskId: taskModel.Id, | ||
| 284 | - CompanyId: taskModel.CompanyId, | ||
| 285 | - TaskName: taskModel.TaskName, | ||
| 286 | - TaskType: taskModel.TaskType, | ||
| 287 | - Sponsor: taskModel.Sponsor, | ||
| 288 | - TaskStatus: taskModel.TaskStatus, | ||
| 289 | - ReferenceResource: taskModel.ReferenceResource, | ||
| 290 | - CustomerValue: taskModel.CustomerValue, | ||
| 291 | - TaskNature: taskModel.TaskNature, | ||
| 292 | - SuMoney: taskModel.SuMoney, | ||
| 293 | - AcceptanceStandard: taskModel.AcceptanceStandard, | ||
| 294 | - TaskDescription: taskModel.TaskDescription, | ||
| 295 | - TaskPictureUrls: taskModel.TaskPictureUrls, | ||
| 296 | - IsRewardTake: taskModel.IsRewardTake, | ||
| 297 | - CreateTime: taskModel.CreateTime, | ||
| 298 | - ReleaseTime: taskModel.ReleaseTime, | ||
| 299 | - ReceiveTime: taskModel.ReceiveTime, | ||
| 300 | - CompleteTime: taskModel.CompleteTime, | ||
| 301 | - AcceptanceTime: taskModel.AcceptanceTime, | ||
| 302 | - RobInfo: robInfo, | ||
| 303 | - BidInfo: bidInfo, | ||
| 304 | - Participators: taskModel.Participators, | ||
| 305 | - TaskPercentage: taskModel.TaskPercentage, | ||
| 306 | - SolveReport: taskModel.SolveReport, | ||
| 307 | - SolvePictureUrls: taskModel.SolvePictureUrls, | ||
| 308 | - CurrentStatus: currentStatus, | 298 | + TaskId: taskModel.Id, |
| 299 | + CompanyId: taskModel.CompanyId, | ||
| 300 | + TaskName: taskModel.TaskName, | ||
| 301 | + TaskType: taskModel.TaskType, | ||
| 302 | + Sponsor: taskModel.Sponsor, | ||
| 303 | + TaskStatus: taskModel.TaskStatus, | ||
| 304 | + ReferenceResource: taskModel.ReferenceResource, | ||
| 305 | + ProjectBelong: taskModel.ProjectBelong, | ||
| 306 | + CustomerValues: taskModel.CustomerValues, | ||
| 307 | + TaskNature: taskModel.TaskNature, | ||
| 308 | + SuMoney: taskModel.SuMoney, | ||
| 309 | + AcceptanceStandard: taskModel.AcceptanceStandard, | ||
| 310 | + TaskDescription: taskModel.TaskDescription, | ||
| 311 | + TaskPictureUrls: taskModel.TaskPictureUrls, | ||
| 312 | + IsRewardTake: taskModel.IsRewardTake, | ||
| 313 | + AssignedPerson: taskModel.AssignedPerson, | ||
| 314 | + PlannedCompletionTime: taskModel.PlannedCompletionTime, | ||
| 315 | + ActualCompletionTime: taskModel.ActualCompletionTime, | ||
| 316 | + CreateTime: taskModel.CreateTime, | ||
| 317 | + ReleaseTime: taskModel.ReleaseTime, | ||
| 318 | + ReceiveTime: taskModel.ReceiveTime, | ||
| 319 | + CompleteTime: taskModel.CompleteTime, | ||
| 320 | + AcceptanceTime: taskModel.AcceptanceTime, | ||
| 321 | + RobInfo: robInfo, | ||
| 322 | + BidInfo: bidInfo, | ||
| 323 | + Participators: taskModel.Participators, | ||
| 324 | + TaskPercentage: taskModel.TaskPercentage, | ||
| 325 | + SolveReport: taskModel.SolveReport, | ||
| 326 | + SolvePictureUrls: taskModel.SolvePictureUrls, | ||
| 327 | + CurrentStatus: currentStatus, | ||
| 309 | }, nil | 328 | }, nil |
| 310 | } | 329 | } |
| 311 | 330 |
| 1 | +package controllers | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "encoding/json" | ||
| 5 | + | ||
| 6 | + "github.com/astaxie/beego" | ||
| 7 | + "github.com/linmadan/egglib-go/web/beego/utils" | ||
| 8 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/task/command" | ||
| 9 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/task/query" | ||
| 10 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/task/service" | ||
| 11 | +) | ||
| 12 | + | ||
| 13 | +type RejectTaskRecordController struct { | ||
| 14 | + beego.Controller | ||
| 15 | +} | ||
| 16 | + | ||
| 17 | +func (controller *RejectTaskRecordController) GetRejectTaskRecord() { | ||
| 18 | + taskService := service.NewTaskService(nil) | ||
| 19 | + getRejectTaskRecordQuery := &query.GetRejectTaskRecordQuery{} | ||
| 20 | + rejectTaskRecordId, _ := controller.GetInt64(":rejectTaskRecordId") | ||
| 21 | + getRejectTaskRecordQuery.RejectTaskRecordId = rejectTaskRecordId | ||
| 22 | + data, err := taskService.GetRejectTaskRecord(getRejectTaskRecordQuery) | ||
| 23 | + var response utils.JsonResponse | ||
| 24 | + if err != nil { | ||
| 25 | + response = utils.ResponseError(controller.Ctx, err) | ||
| 26 | + } else { | ||
| 27 | + response = utils.ResponseData(controller.Ctx, data) | ||
| 28 | + } | ||
| 29 | + controller.Data["json"] = response | ||
| 30 | + controller.ServeJSON() | ||
| 31 | +} | ||
| 32 | + | ||
| 33 | +func (controller *RejectTaskRecordController) SearchRejectTaskRecord() { | ||
| 34 | + taskService := service.NewTaskService(nil) | ||
| 35 | + searchRejectTaskRecordCommand := &command.SearchRejectTaskRecordCommand{} | ||
| 36 | + json.Unmarshal(controller.Ctx.Input.GetData("requestBody").([]byte), searchRejectTaskRecordCommand) | ||
| 37 | + data, err := taskService.SearchRejectTaskRecord(searchRejectTaskRecordCommand) | ||
| 38 | + var response utils.JsonResponse | ||
| 39 | + if err != nil { | ||
| 40 | + response = utils.ResponseError(controller.Ctx, err) | ||
| 41 | + } else { | ||
| 42 | + response = utils.ResponseData(controller.Ctx, data) | ||
| 43 | + } | ||
| 44 | + controller.Data["json"] = response | ||
| 45 | + controller.ServeJSON() | ||
| 46 | +} |
| @@ -13,6 +13,40 @@ type TaskController struct { | @@ -13,6 +13,40 @@ type TaskController struct { | ||
| 13 | beego.Controller | 13 | beego.Controller |
| 14 | } | 14 | } |
| 15 | 15 | ||
| 16 | +func (controller *TaskController) RejectTaskReceiver() { | ||
| 17 | + taskService := service.NewTaskService(nil) | ||
| 18 | + rejectTaskReceiverCommand := &command.RejectTaskReceiverCommand{} | ||
| 19 | + json.Unmarshal(controller.Ctx.Input.GetData("requestBody").([]byte), rejectTaskReceiverCommand) | ||
| 20 | + taskId, _ := controller.GetInt64(":taskId") | ||
| 21 | + rejectTaskReceiverCommand.TaskId = taskId | ||
| 22 | + data, err := taskService.RejectTaskReceiver(rejectTaskReceiverCommand) | ||
| 23 | + var response utils.JsonResponse | ||
| 24 | + if err != nil { | ||
| 25 | + response = utils.ResponseError(controller.Ctx, err) | ||
| 26 | + } else { | ||
| 27 | + response = utils.ResponseData(controller.Ctx, data) | ||
| 28 | + } | ||
| 29 | + controller.Data["json"] = response | ||
| 30 | + controller.ServeJSON() | ||
| 31 | +} | ||
| 32 | + | ||
| 33 | +func (controller *TaskController) ConfirmRobTask() { | ||
| 34 | + taskService := service.NewTaskService(nil) | ||
| 35 | + confirmRobTaskCommand := &command.ConfirmRobTaskCommand{} | ||
| 36 | + json.Unmarshal(controller.Ctx.Input.GetData("requestBody").([]byte), confirmRobTaskCommand) | ||
| 37 | + taskId, _ := controller.GetInt64(":taskId") | ||
| 38 | + confirmRobTaskCommand.TaskId = taskId | ||
| 39 | + data, err := taskService.ConfirmRobTask(confirmRobTaskCommand) | ||
| 40 | + var response utils.JsonResponse | ||
| 41 | + if err != nil { | ||
| 42 | + response = utils.ResponseError(controller.Ctx, err) | ||
| 43 | + } else { | ||
| 44 | + response = utils.ResponseData(controller.Ctx, data) | ||
| 45 | + } | ||
| 46 | + controller.Data["json"] = response | ||
| 47 | + controller.ServeJSON() | ||
| 48 | +} | ||
| 49 | + | ||
| 16 | func (controller *TaskController) RobTask() { | 50 | func (controller *TaskController) RobTask() { |
| 17 | taskService := service.NewTaskService(nil) | 51 | taskService := service.NewTaskService(nil) |
| 18 | robTaskCommand := &command.RobTaskCommand{} | 52 | robTaskCommand := &command.RobTaskCommand{} |
| 1 | +package routers | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "github.com/astaxie/beego" | ||
| 5 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/port/beego/controllers" | ||
| 6 | +) | ||
| 7 | + | ||
| 8 | +func init() { | ||
| 9 | + beego.Router("/reject-task-records/:rejectTaskRecordId", &controllers.RejectTaskRecordController{}, "Get:GetRejectTaskRecord") | ||
| 10 | + beego.Router("/reject-task-records/search-reject-task-record", &controllers.RejectTaskRecordController{}, "Post:SearchRejectTaskRecord") | ||
| 11 | +} |
| @@ -6,6 +6,8 @@ import ( | @@ -6,6 +6,8 @@ import ( | ||
| 6 | ) | 6 | ) |
| 7 | 7 | ||
| 8 | func init() { | 8 | func init() { |
| 9 | + beego.Router("/tasks/:taskId/reject-task-receiver", &controllers.TaskController{}, "Post:RejectTaskReceiver") | ||
| 10 | + beego.Router("/tasks/:taskId/confirm-rob-task", &controllers.TaskController{}, "Post:ConfirmRobTask") | ||
| 9 | beego.Router("/tasks/:taskId/rob", &controllers.TaskController{}, "Post:RobTask") | 11 | beego.Router("/tasks/:taskId/rob", &controllers.TaskController{}, "Post:RobTask") |
| 10 | beego.Router("/tasks/:taskId/bid", &controllers.TaskController{}, "Post:BidTask") | 12 | beego.Router("/tasks/:taskId/bid", &controllers.TaskController{}, "Post:BidTask") |
| 11 | beego.Router("/tasks/:taskId/apply-complete", &controllers.TaskController{}, "Post:ApplyCompleteTask") | 13 | beego.Router("/tasks/:taskId/apply-complete", &controllers.TaskController{}, "Post:ApplyCompleteTask") |
| @@ -13,8 +13,38 @@ import ( | @@ -13,8 +13,38 @@ import ( | ||
| 13 | ) | 13 | ) |
| 14 | 14 | ||
| 15 | var _ = Describe("搜索关闭任务记录", func() { | 15 | var _ = Describe("搜索关闭任务记录", func() { |
| 16 | + var projectBelongId int | ||
| 17 | + var taskNatureId int | ||
| 18 | + var customerValueId1 int | ||
| 19 | + var customerValueId2 int | ||
| 20 | + var customerValueId3 int | ||
| 16 | var offTaskRecordId int64 | 21 | var offTaskRecordId int64 |
| 17 | BeforeEach(func() { | 22 | BeforeEach(func() { |
| 23 | + _, err8 := pG.DB.QueryOne( | ||
| 24 | + pg.Scan(&projectBelongId), | ||
| 25 | + "INSERT INTO project_belongs (project_belong_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 26 | + "能力展示", 101) | ||
| 27 | + Expect(err8).NotTo(HaveOccurred()) | ||
| 28 | + _, err9 := pG.DB.QueryOne( | ||
| 29 | + pg.Scan(&customerValueId1), | ||
| 30 | + "INSERT INTO customer_values (customer_value_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 31 | + "口味", 101) | ||
| 32 | + Expect(err9).NotTo(HaveOccurred()) | ||
| 33 | + _, err10 := pG.DB.QueryOne( | ||
| 34 | + pg.Scan(&customerValueId2), | ||
| 35 | + "INSERT INTO customer_values (customer_value_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 36 | + "口感", 101) | ||
| 37 | + Expect(err10).NotTo(HaveOccurred()) | ||
| 38 | + _, err11 := pG.DB.QueryOne( | ||
| 39 | + pg.Scan(&customerValueId3), | ||
| 40 | + "INSERT INTO customer_values (customer_value_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 41 | + "性价比", 101) | ||
| 42 | + Expect(err11).NotTo(HaveOccurred()) | ||
| 43 | + _, err12 := pG.DB.QueryOne( | ||
| 44 | + pg.Scan(&taskNatureId), | ||
| 45 | + "INSERT INTO task_natures (task_nature_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 46 | + "点", 101) | ||
| 47 | + Expect(err12).NotTo(HaveOccurred()) | ||
| 18 | _, err := pG.DB.QueryOne( | 48 | _, err := pG.DB.QueryOne( |
| 19 | pg.Scan(&offTaskRecordId), | 49 | pg.Scan(&offTaskRecordId), |
| 20 | "INSERT INTO off_task_records (id, task_id, operator, off_reason, create_time) VALUES (?, ?, ?, ?, ?) RETURNING id", | 50 | "INSERT INTO off_task_records (id, task_id, operator, off_reason, create_time) VALUES (?, ?, ?, ?, ?) RETURNING id", |
| @@ -25,10 +55,10 @@ var _ = Describe("搜索关闭任务记录", func() { | @@ -25,10 +55,10 @@ var _ = Describe("搜索关闭任务记录", func() { | ||
| 25 | dayAfter, _ := time.ParseDuration("72h") | 55 | dayAfter, _ := time.ParseDuration("72h") |
| 26 | _, err1 := pG.DB.QueryOne( | 56 | _, err1 := pG.DB.QueryOne( |
| 27 | pg.Scan(), | 57 | pg.Scan(), |
| 28 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 58 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 29 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | 59 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ |
| 30 | Uid: 2499036607974745088, | 60 | Uid: 2499036607974745088, |
| 31 | - }, 6, "null", pg.Array([]string{"口感", "便利", "品牌", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | 61 | + }, 6, "null", projectBelongId, pg.Array([]int{customerValueId1, customerValueId2, customerValueId3}), taskNatureId, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ |
| 32 | { | 62 | { |
| 33 | Uid: 2499036607974745077, | 63 | Uid: 2499036607974745077, |
| 34 | }, | 64 | }, |
| @@ -46,8 +76,9 @@ var _ = Describe("搜索关闭任务记录", func() { | @@ -46,8 +76,9 @@ var _ = Describe("搜索关闭任务记录", func() { | ||
| 46 | "companyId": 101, | 76 | "companyId": 101, |
| 47 | "taskContentMatch": "", | 77 | "taskContentMatch": "", |
| 48 | "taskType": 1, | 78 | "taskType": 1, |
| 49 | - "customerValue": "", | ||
| 50 | - "taskNature": "", | 79 | + "projectBelongs": make([]int, 0), |
| 80 | + "customerValues": make([]int, 0), | ||
| 81 | + "taskNatures": make([]int, 0), | ||
| 51 | "offStartTime": time.Date(2020, time.Month(4), 5, 8, 0, 0, 0, time.Now().Location()), | 82 | "offStartTime": time.Date(2020, time.Month(4), 5, 8, 0, 0, 0, time.Now().Location()), |
| 52 | "offEndTime": time.Time{}, | 83 | "offEndTime": time.Time{}, |
| 53 | "offset": 0, | 84 | "offset": 0, |
| @@ -72,8 +103,9 @@ var _ = Describe("搜索关闭任务记录", func() { | @@ -72,8 +103,9 @@ var _ = Describe("搜索关闭任务记录", func() { | ||
| 72 | "companyId": 102, | 103 | "companyId": 102, |
| 73 | "taskContentMatch": "", | 104 | "taskContentMatch": "", |
| 74 | "taskType": 1, | 105 | "taskType": 1, |
| 75 | - "customerValue": "", | ||
| 76 | - "taskNature": "", | 106 | + "projectBelongs": make([]int, 0), |
| 107 | + "customerValues": make([]int, 0), | ||
| 108 | + "taskNatures": make([]int, 0), | ||
| 77 | "offStartTime": time.Date(2020, time.Month(4), 5, 8, 0, 0, 0, time.Now().Location()), | 109 | "offStartTime": time.Date(2020, time.Month(4), 5, 8, 0, 0, 0, time.Now().Location()), |
| 78 | "offEndTime": time.Time{}, | 110 | "offEndTime": time.Time{}, |
| 79 | "offset": 0, | 111 | "offset": 0, |
| @@ -98,8 +130,9 @@ var _ = Describe("搜索关闭任务记录", func() { | @@ -98,8 +130,9 @@ var _ = Describe("搜索关闭任务记录", func() { | ||
| 98 | "companyId": 101, | 130 | "companyId": 101, |
| 99 | "taskContentMatch": "", | 131 | "taskContentMatch": "", |
| 100 | "taskType": 1, | 132 | "taskType": 1, |
| 101 | - "customerValue": "", | ||
| 102 | - "taskNature": "", | 133 | + "projectBelongs": make([]int, 0), |
| 134 | + "customerValues": make([]int, 0), | ||
| 135 | + "taskNatures": make([]int, 0), | ||
| 103 | "offStartTime": time.Date(2030, time.Month(4), 5, 8, 0, 0, 0, time.Now().Location()), | 136 | "offStartTime": time.Date(2030, time.Month(4), 5, 8, 0, 0, 0, time.Now().Location()), |
| 104 | "offEndTime": time.Time{}, | 137 | "offEndTime": time.Time{}, |
| 105 | "offset": 0, | 138 | "offset": 0, |
| @@ -123,5 +156,11 @@ var _ = Describe("搜索关闭任务记录", func() { | @@ -123,5 +156,11 @@ var _ = Describe("搜索关闭任务记录", func() { | ||
| 123 | Expect(err).NotTo(HaveOccurred()) | 156 | Expect(err).NotTo(HaveOccurred()) |
| 124 | _, err1 := pG.DB.Exec("DELETE FROM tasks WHERE true") | 157 | _, err1 := pG.DB.Exec("DELETE FROM tasks WHERE true") |
| 125 | Expect(err1).NotTo(HaveOccurred()) | 158 | Expect(err1).NotTo(HaveOccurred()) |
| 159 | + _, err3 := pG.DB.Exec("DELETE FROM project_belongs WHERE true") | ||
| 160 | + Expect(err3).NotTo(HaveOccurred()) | ||
| 161 | + _, err4 := pG.DB.Exec("DELETE FROM task_natures WHERE true") | ||
| 162 | + Expect(err4).NotTo(HaveOccurred()) | ||
| 163 | + _, err5 := pG.DB.Exec("DELETE FROM customer_values WHERE true") | ||
| 164 | + Expect(err5).NotTo(HaveOccurred()) | ||
| 126 | }) | 165 | }) |
| 127 | }) | 166 | }) |
| 1 | +package reject_task_record | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
| 5 | + "net/http" | ||
| 6 | + "time" | ||
| 7 | + | ||
| 8 | + "github.com/gavv/httpexpect" | ||
| 9 | + "github.com/go-pg/pg" | ||
| 10 | + . "github.com/onsi/ginkgo" | ||
| 11 | + . "github.com/onsi/gomega" | ||
| 12 | + pG "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/pg" | ||
| 13 | +) | ||
| 14 | + | ||
| 15 | +var _ = Describe("返回驳回任务记录", func() { | ||
| 16 | + BeforeEach(func() { | ||
| 17 | + _, err := pG.DB.QueryOne( | ||
| 18 | + pg.Scan(), | ||
| 19 | + "INSERT INTO reject_task_records (id, task_id, operator, reject_reason, create_time) VALUES (?, ?, ?, ?, ?)", | ||
| 20 | + 1, 1, &domain.EmployeeInfo{ | ||
| 21 | + Uid: 2499036607974745088, | ||
| 22 | + }, "testReason", time.Now()) | ||
| 23 | + Expect(err).NotTo(HaveOccurred()) | ||
| 24 | + }) | ||
| 25 | + Describe("返回驳回任务记录", func() { | ||
| 26 | + Context("", func() { | ||
| 27 | + It("", func() { | ||
| 28 | + httpExpect := httpexpect.New(GinkgoT(), server.URL) | ||
| 29 | + httpExpect.GET("/reject-task-records/1"). | ||
| 30 | + Expect(). | ||
| 31 | + Status(http.StatusOK). | ||
| 32 | + JSON(). | ||
| 33 | + Object(). | ||
| 34 | + ContainsKey("code").ValueEqual("code", 0). | ||
| 35 | + ContainsKey("msg").ValueEqual("msg", "ok"). | ||
| 36 | + ContainsKey("data").Value("data").Object() | ||
| 37 | + }) | ||
| 38 | + }) | ||
| 39 | + }) | ||
| 40 | + AfterEach(func() { | ||
| 41 | + _, err := pG.DB.Exec("DELETE FROM reject_task_records WHERE true") | ||
| 42 | + Expect(err).NotTo(HaveOccurred()) | ||
| 43 | + }) | ||
| 44 | +}) |
| 1 | +package reject_task_record | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "net/http" | ||
| 5 | + "net/http/httptest" | ||
| 6 | + "testing" | ||
| 7 | + | ||
| 8 | + "github.com/astaxie/beego" | ||
| 9 | + . "github.com/onsi/ginkgo" | ||
| 10 | + . "github.com/onsi/gomega" | ||
| 11 | + _ "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/pg" | ||
| 12 | + _ "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/port/beego" | ||
| 13 | +) | ||
| 14 | + | ||
| 15 | +func TestRejectTaskRecord(t *testing.T) { | ||
| 16 | + RegisterFailHandler(Fail) | ||
| 17 | + RunSpecs(t, "Beego Port RejectTaskRecord Correlations Test Case Suite") | ||
| 18 | +} | ||
| 19 | + | ||
| 20 | +var handler http.Handler | ||
| 21 | +var server *httptest.Server | ||
| 22 | + | ||
| 23 | +var _ = BeforeSuite(func() { | ||
| 24 | + handler = beego.BeeApp.Handlers | ||
| 25 | + server = httptest.NewServer(handler) | ||
| 26 | +}) | ||
| 27 | + | ||
| 28 | +var _ = AfterSuite(func() { | ||
| 29 | + server.Close() | ||
| 30 | +}) |
| 1 | +package reject_task_record | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
| 5 | + "net/http" | ||
| 6 | + "time" | ||
| 7 | + | ||
| 8 | + "github.com/gavv/httpexpect" | ||
| 9 | + "github.com/go-pg/pg" | ||
| 10 | + . "github.com/onsi/ginkgo" | ||
| 11 | + . "github.com/onsi/gomega" | ||
| 12 | + pG "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/pg" | ||
| 13 | +) | ||
| 14 | + | ||
| 15 | +var _ = Describe("搜索驳回任务记录", func() { | ||
| 16 | + var projectBelongId int | ||
| 17 | + var taskNatureId int | ||
| 18 | + var customerValueId1 int | ||
| 19 | + var customerValueId2 int | ||
| 20 | + var customerValueId3 int | ||
| 21 | + var rejectTaskRecordId int64 | ||
| 22 | + BeforeEach(func() { | ||
| 23 | + _, err8 := pG.DB.QueryOne( | ||
| 24 | + pg.Scan(&projectBelongId), | ||
| 25 | + "INSERT INTO project_belongs (project_belong_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 26 | + "能力展示", 101) | ||
| 27 | + Expect(err8).NotTo(HaveOccurred()) | ||
| 28 | + _, err9 := pG.DB.QueryOne( | ||
| 29 | + pg.Scan(&customerValueId1), | ||
| 30 | + "INSERT INTO customer_values (customer_value_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 31 | + "口味", 101) | ||
| 32 | + Expect(err9).NotTo(HaveOccurred()) | ||
| 33 | + _, err10 := pG.DB.QueryOne( | ||
| 34 | + pg.Scan(&customerValueId2), | ||
| 35 | + "INSERT INTO customer_values (customer_value_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 36 | + "口感", 101) | ||
| 37 | + Expect(err10).NotTo(HaveOccurred()) | ||
| 38 | + _, err11 := pG.DB.QueryOne( | ||
| 39 | + pg.Scan(&customerValueId3), | ||
| 40 | + "INSERT INTO customer_values (customer_value_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 41 | + "性价比", 101) | ||
| 42 | + Expect(err11).NotTo(HaveOccurred()) | ||
| 43 | + _, err12 := pG.DB.QueryOne( | ||
| 44 | + pg.Scan(&taskNatureId), | ||
| 45 | + "INSERT INTO task_natures (task_nature_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 46 | + "点", 101) | ||
| 47 | + Expect(err12).NotTo(HaveOccurred()) | ||
| 48 | + _, err := pG.DB.QueryOne( | ||
| 49 | + pg.Scan(&rejectTaskRecordId), | ||
| 50 | + "INSERT INTO reject_task_records (id, task_id, operator, reject_reason, create_time) VALUES (?, ?, ?, ?, ?) RETURNING id", | ||
| 51 | + 1, 1, &domain.EmployeeInfo{ | ||
| 52 | + Uid: 2499036607974745088, | ||
| 53 | + }, "testReason", time.Now()) | ||
| 54 | + Expect(err).NotTo(HaveOccurred()) | ||
| 55 | + dayAfter, _ := time.ParseDuration("72h") | ||
| 56 | + _, err1 := pG.DB.QueryOne( | ||
| 57 | + pg.Scan(), | ||
| 58 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | ||
| 59 | + 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | ||
| 60 | + Uid: 2499036607974745088, | ||
| 61 | + }, 6, "null", projectBelongId, pg.Array([]int{customerValueId1, customerValueId2, customerValueId3}), taskNatureId, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | ||
| 62 | + { | ||
| 63 | + Uid: 2499036607974745077, | ||
| 64 | + }, | ||
| 65 | + { | ||
| 66 | + Uid: 2499036607974745066, | ||
| 67 | + }, | ||
| 68 | + }, "null", "", pg.Array([]string{}), 2499036607974745099, time.Now(), time.Now().Add(dayAfter)) | ||
| 69 | + Expect(err1).NotTo(HaveOccurred()) | ||
| 70 | + }) | ||
| 71 | + Describe("搜索驳回任务记录", func() { | ||
| 72 | + Context("", func() { | ||
| 73 | + It("", func() { | ||
| 74 | + httpExpect := httpexpect.New(GinkgoT(), server.URL) | ||
| 75 | + body := map[string]interface{}{ | ||
| 76 | + "companyId": 101, | ||
| 77 | + "taskContentMatch": "", | ||
| 78 | + "taskType": 1, | ||
| 79 | + "projectBelongs": make([]int, 0), | ||
| 80 | + "customerValues": make([]int, 0), | ||
| 81 | + "taskNatures": make([]int, 0), | ||
| 82 | + "rejectStartTime": time.Date(2020, time.Month(5), 26, 8, 0, 0, 0, time.Now().Location()), | ||
| 83 | + "rejectEndTime": time.Time{}, | ||
| 84 | + "offset": 0, | ||
| 85 | + "limit": 20, | ||
| 86 | + } | ||
| 87 | + httpExpect.POST("/reject-task-records/search-reject-task-record"). | ||
| 88 | + WithJSON(body). | ||
| 89 | + Expect(). | ||
| 90 | + Status(http.StatusOK). | ||
| 91 | + JSON(). | ||
| 92 | + Object(). | ||
| 93 | + ContainsKey("code").ValueEqual("code", 0). | ||
| 94 | + ContainsKey("msg").ValueEqual("msg", "ok"). | ||
| 95 | + ContainsKey("data").Value("data").Object() | ||
| 96 | + }) | ||
| 97 | + }) | ||
| 98 | + }) | ||
| 99 | + AfterEach(func() { | ||
| 100 | + _, err := pG.DB.Exec("DELETE FROM reject_task_records WHERE true") | ||
| 101 | + Expect(err).NotTo(HaveOccurred()) | ||
| 102 | + _, err1 := pG.DB.Exec("DELETE FROM tasks WHERE true") | ||
| 103 | + Expect(err1).NotTo(HaveOccurred()) | ||
| 104 | + _, err3 := pG.DB.Exec("DELETE FROM project_belongs WHERE true") | ||
| 105 | + Expect(err3).NotTo(HaveOccurred()) | ||
| 106 | + _, err4 := pG.DB.Exec("DELETE FROM task_natures WHERE true") | ||
| 107 | + Expect(err4).NotTo(HaveOccurred()) | ||
| 108 | + _, err5 := pG.DB.Exec("DELETE FROM customer_values WHERE true") | ||
| 109 | + Expect(err5).NotTo(HaveOccurred()) | ||
| 110 | + }) | ||
| 111 | +}) |
| @@ -19,7 +19,7 @@ var _ = Describe("验收任务", func() { | @@ -19,7 +19,7 @@ var _ = Describe("验收任务", func() { | ||
| 19 | dayAfter, _ := time.ParseDuration("72h") | 19 | dayAfter, _ := time.ParseDuration("72h") |
| 20 | _, err := pG.DB.QueryOne( | 20 | _, err := pG.DB.QueryOne( |
| 21 | pg.Scan(), | 21 | pg.Scan(), |
| 22 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 22 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 23 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | 23 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ |
| 24 | Uid: 2499036607974745088, | 24 | Uid: 2499036607974745088, |
| 25 | }, 4, &domain.ReferenceResource{ | 25 | }, 4, &domain.ReferenceResource{ |
| @@ -32,7 +32,7 @@ var _ = Describe("验收任务", func() { | @@ -32,7 +32,7 @@ var _ = Describe("验收任务", func() { | ||
| 32 | Content: "问题内容1", | 32 | Content: "问题内容1", |
| 33 | }, | 33 | }, |
| 34 | }, | 34 | }, |
| 35 | - }, pg.Array([]string{"口感", "便利", "品牌", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, "null", "null", "", pg.Array([]string{}), 2499036607974745099, time.Now(), time.Now().Add(dayAfter)) | 35 | + }, 1, pg.Array([]int{1, 2, 3, 4}), 1, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, "null", "null", "", pg.Array([]string{}), 2499036607974745099, time.Now(), time.Now().Add(dayAfter)) |
| 36 | Expect(err).NotTo(HaveOccurred()) | 36 | Expect(err).NotTo(HaveOccurred()) |
| 37 | _, err1 := pG.DB.QueryOne( | 37 | _, err1 := pG.DB.QueryOne( |
| 38 | pg.Scan(), | 38 | pg.Scan(), |
| @@ -19,10 +19,10 @@ var _ = Describe("申请完成任务", func() { | @@ -19,10 +19,10 @@ var _ = Describe("申请完成任务", func() { | ||
| 19 | dayAfter, _ := time.ParseDuration("72h") | 19 | dayAfter, _ := time.ParseDuration("72h") |
| 20 | _, err := pG.DB.QueryOne( | 20 | _, err := pG.DB.QueryOne( |
| 21 | pg.Scan(), | 21 | pg.Scan(), |
| 22 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 22 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 23 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | 23 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ |
| 24 | Uid: 2499036607974745088, | 24 | Uid: 2499036607974745088, |
| 25 | - }, 3, "null", pg.Array([]string{"口感", "便利", "品牌", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | 25 | + }, 3, "null", 1, pg.Array([]int{1, 2, 3, 4}), 1, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ |
| 26 | { | 26 | { |
| 27 | Uid: 2499036607974745077, | 27 | Uid: 2499036607974745077, |
| 28 | }, | 28 | }, |
| @@ -19,10 +19,10 @@ var _ = Describe("对任务进行竞标", func() { | @@ -19,10 +19,10 @@ var _ = Describe("对任务进行竞标", func() { | ||
| 19 | dayAfter, _ := time.ParseDuration("72h") | 19 | dayAfter, _ := time.ParseDuration("72h") |
| 20 | _, err := pG.DB.QueryOne( | 20 | _, err := pG.DB.QueryOne( |
| 21 | pg.Scan(), | 21 | pg.Scan(), |
| 22 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 22 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 23 | 1, 101, "竞标任务1", 2, &domain.EmployeeInfo{ | 23 | 1, 101, "竞标任务1", 2, &domain.EmployeeInfo{ |
| 24 | Uid: 2499036607974745088, | 24 | Uid: 2499036607974745088, |
| 25 | - }, 2, "null", pg.Array([]string{"口感", "便利", "品牌", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | 25 | + }, 2, "null", 1, pg.Array([]int{1, 2, 3, 4}), 1, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ |
| 26 | { | 26 | { |
| 27 | Uid: 2499036607974745077, | 27 | Uid: 2499036607974745077, |
| 28 | }, | 28 | }, |
| @@ -19,10 +19,10 @@ var _ = Describe("选择竞标任务的中标人", func() { | @@ -19,10 +19,10 @@ var _ = Describe("选择竞标任务的中标人", func() { | ||
| 19 | dayAfter, _ := time.ParseDuration("72h") | 19 | dayAfter, _ := time.ParseDuration("72h") |
| 20 | _, err := pG.DB.QueryOne( | 20 | _, err := pG.DB.QueryOne( |
| 21 | pg.Scan(), | 21 | pg.Scan(), |
| 22 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 22 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 23 | 1, 101, "竞标任务1", 2, &domain.EmployeeInfo{ | 23 | 1, 101, "竞标任务1", 2, &domain.EmployeeInfo{ |
| 24 | Uid: 2499036607974745088, | 24 | Uid: 2499036607974745088, |
| 25 | - }, 2, "null", pg.Array([]string{"口感", "便利", "品牌", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | 25 | + }, 2, "null", 1, pg.Array([]int{1, 2, 3, 4}), 1, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ |
| 26 | { | 26 | { |
| 27 | Uid: 2499036607974745077, | 27 | Uid: 2499036607974745077, |
| 28 | }, | 28 | }, |
| @@ -57,8 +57,9 @@ var _ = Describe("选择竞标任务的中标人", func() { | @@ -57,8 +57,9 @@ var _ = Describe("选择竞标任务的中标人", func() { | ||
| 57 | It("选择中标人成功", func() { | 57 | It("选择中标人成功", func() { |
| 58 | httpExpect := httpexpect.New(GinkgoT(), server.URL) | 58 | httpExpect := httpexpect.New(GinkgoT(), server.URL) |
| 59 | body := map[string]interface{}{ | 59 | body := map[string]interface{}{ |
| 60 | - "operator": 2499036607974745088, | ||
| 61 | - "successfulBidder": 2499036607974745099, | 60 | + "operator": 2499036607974745088, |
| 61 | + "successfulBidder": 2499036607974745099, | ||
| 62 | + "plannedCompletionTime": time.Now(), | ||
| 62 | } | 63 | } |
| 63 | httpExpect.POST("/tasks/1/choose-successful-bidder"). | 64 | httpExpect.POST("/tasks/1/choose-successful-bidder"). |
| 64 | WithJSON(body). | 65 | WithJSON(body). |
| 1 | +package task | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
| 5 | + "net/http" | ||
| 6 | + "time" | ||
| 7 | + | ||
| 8 | + "github.com/gavv/httpexpect" | ||
| 9 | + "github.com/go-pg/pg" | ||
| 10 | + . "github.com/onsi/ginkgo" | ||
| 11 | + . "github.com/onsi/gomega" | ||
| 12 | + pG "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/pg" | ||
| 13 | +) | ||
| 14 | + | ||
| 15 | +var _ = Describe("对抢单任务进行确认", func() { | ||
| 16 | + BeforeEach(func() { | ||
| 17 | + dayAfter, _ := time.ParseDuration("72h") | ||
| 18 | + _, err := pG.DB.QueryOne( | ||
| 19 | + pg.Scan(), | ||
| 20 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | ||
| 21 | + 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | ||
| 22 | + Uid: 2499036607974745088, | ||
| 23 | + }, 7, "null", 1, pg.Array([]int{1, 2, 3, 4}), 1, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | ||
| 24 | + { | ||
| 25 | + Uid: 2499036607974745077, | ||
| 26 | + }, | ||
| 27 | + { | ||
| 28 | + Uid: 2499036607974745066, | ||
| 29 | + }, | ||
| 30 | + }, "null", "", pg.Array([]string{}), 0, time.Now(), time.Now().Add(dayAfter)) | ||
| 31 | + Expect(err).NotTo(HaveOccurred()) | ||
| 32 | + _, err1 := pG.DB.QueryOne( | ||
| 33 | + pg.Scan(), | ||
| 34 | + "INSERT INTO employees (id, company_id, uid, employee_name, employee_account, su_money) VALUES (?, ?, ?, ?, ?, ?)", | ||
| 35 | + 1, 101, 2499036607974745088, "testEmployeeName", "testEmployeeAccount", 0) | ||
| 36 | + Expect(err1).NotTo(HaveOccurred()) | ||
| 37 | + _, err2 := pG.DB.QueryOne( | ||
| 38 | + pg.Scan(), | ||
| 39 | + "INSERT INTO employees (id, company_id, uid, employee_name, employee_account, su_money) VALUES (?, ?, ?, ?, ?, ?)", | ||
| 40 | + 2, 101, 2499036607974745099, "testEmployeeName", "testEmployeeAccount", 0) | ||
| 41 | + Expect(err2).NotTo(HaveOccurred()) | ||
| 42 | + }) | ||
| 43 | + Describe("对抢单任务进行确认", func() { | ||
| 44 | + Context("任务发布人对抢单任务进行确认", func() { | ||
| 45 | + It("确认成功", func() { | ||
| 46 | + httpExpect := httpexpect.New(GinkgoT(), server.URL) | ||
| 47 | + body := map[string]interface{}{ | ||
| 48 | + "operator": 2499036607974745088, | ||
| 49 | + "plannedCompletionTime": time.Now(), | ||
| 50 | + } | ||
| 51 | + httpExpect.POST("/tasks/1/confirm-rob-task"). | ||
| 52 | + WithJSON(body). | ||
| 53 | + Expect(). | ||
| 54 | + Status(http.StatusOK). | ||
| 55 | + JSON(). | ||
| 56 | + Object(). | ||
| 57 | + ContainsKey("code").ValueEqual("code", 0). | ||
| 58 | + ContainsKey("msg").ValueEqual("msg", "ok"). | ||
| 59 | + ContainsKey("data").Value("data").Object(). | ||
| 60 | + ContainsKey("taskStatus").ValueEqual("taskStatus", 3) | ||
| 61 | + }) | ||
| 62 | + }) | ||
| 63 | + }) | ||
| 64 | + AfterEach(func() { | ||
| 65 | + _, err := pG.DB.Exec("DELETE FROM tasks WHERE true") | ||
| 66 | + Expect(err).NotTo(HaveOccurred()) | ||
| 67 | + _, err1 := pG.DB.Exec("DELETE FROM bid_infos WHERE true") | ||
| 68 | + Expect(err1).NotTo(HaveOccurred()) | ||
| 69 | + _, err2 := pG.DB.Exec("DELETE FROM bidder_infos WHERE true") | ||
| 70 | + Expect(err2).NotTo(HaveOccurred()) | ||
| 71 | + _, err3 := pG.DB.Exec("DELETE FROM employees WHERE true") | ||
| 72 | + Expect(err3).NotTo(HaveOccurred()) | ||
| 73 | + _, err4 := pG.DB.Exec("DELETE FROM rob_infos WHERE true") | ||
| 74 | + Expect(err4).NotTo(HaveOccurred()) | ||
| 75 | + }) | ||
| 76 | +}) |
| @@ -21,7 +21,7 @@ var _ = Describe("创建新任务", func() { | @@ -21,7 +21,7 @@ var _ = Describe("创建新任务", func() { | ||
| 21 | Expect(err).NotTo(HaveOccurred()) | 21 | Expect(err).NotTo(HaveOccurred()) |
| 22 | _, err1 := pG.DB.QueryOne( | 22 | _, err1 := pG.DB.QueryOne( |
| 23 | pg.Scan(), | 23 | pg.Scan(), |
| 24 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 24 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 25 | 2, 101, "抢单任务2", 1, &domain.EmployeeInfo{ | 25 | 2, 101, "抢单任务2", 1, &domain.EmployeeInfo{ |
| 26 | Uid: 2499036607974745088, | 26 | Uid: 2499036607974745088, |
| 27 | }, 2, &domain.ReferenceResource{ | 27 | }, 2, &domain.ReferenceResource{ |
| @@ -31,7 +31,7 @@ var _ = Describe("创建新任务", func() { | @@ -31,7 +31,7 @@ var _ = Describe("创建新任务", func() { | ||
| 31 | ReferenceResourceId: 4, | 31 | ReferenceResourceId: 4, |
| 32 | }, | 32 | }, |
| 33 | }, | 33 | }, |
| 34 | - }, pg.Array([]string{"口感", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), false, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now()) | 34 | + }, 1, pg.Array([]int{1, 2}), 1, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), false, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now()) |
| 35 | Expect(err1).NotTo(HaveOccurred()) | 35 | Expect(err1).NotTo(HaveOccurred()) |
| 36 | }) | 36 | }) |
| 37 | Describe("提交数据创建新任务", func() { | 37 | Describe("提交数据创建新任务", func() { |
| @@ -49,12 +49,13 @@ var _ = Describe("创建新任务", func() { | @@ -49,12 +49,13 @@ var _ = Describe("创建新任务", func() { | ||
| 49 | {"referenceResourceId": 2, "serialNumber": 2, "title": "问题标题2"}, | 49 | {"referenceResourceId": 2, "serialNumber": 2, "title": "问题标题2"}, |
| 50 | {"referenceResourceId": 3, "serialNumber": 3, "title": "问题标题3"}, | 50 | {"referenceResourceId": 3, "serialNumber": 3, "title": "问题标题3"}, |
| 51 | }, | 51 | }, |
| 52 | - "customerValue": []string{ | ||
| 53 | - "口味", | ||
| 54 | - "色泽", | ||
| 55 | - "商务服务", | 52 | + "projectBelong": 1, |
| 53 | + "customerValues": []int{ | ||
| 54 | + 1, | ||
| 55 | + 2, | ||
| 56 | + 3, | ||
| 56 | }, | 57 | }, |
| 57 | - "taskNature": "线", | 58 | + "taskNature": 1, |
| 58 | "suMoney": 1000.00, | 59 | "suMoney": 1000.00, |
| 59 | "acceptanceStandard": "验收标准", | 60 | "acceptanceStandard": "验收标准", |
| 60 | "taskDescription": "任务描述", | 61 | "taskDescription": "任务描述", |
| @@ -92,12 +93,13 @@ var _ = Describe("创建新任务", func() { | @@ -92,12 +93,13 @@ var _ = Describe("创建新任务", func() { | ||
| 92 | {"serialNumber": 2, "title": "机会标题2"}, | 93 | {"serialNumber": 2, "title": "机会标题2"}, |
| 93 | {"serialNumber": 3, "title": "机会标题3"}, | 94 | {"serialNumber": 3, "title": "机会标题3"}, |
| 94 | }, | 95 | }, |
| 95 | - "customerValue": []string{ | ||
| 96 | - "口味", | ||
| 97 | - "色泽", | ||
| 98 | - "商务服务", | 96 | + "projectBelong": 1, |
| 97 | + "customerValues": []int{ | ||
| 98 | + 1, | ||
| 99 | + 2, | ||
| 100 | + 3, | ||
| 99 | }, | 101 | }, |
| 100 | - "taskNature": "线", | 102 | + "taskNature": 1, |
| 101 | "suMoney": 1000.00, | 103 | "suMoney": 1000.00, |
| 102 | "acceptanceStandard": "验收标准", | 104 | "acceptanceStandard": "验收标准", |
| 103 | "taskDescription": "任务描述", | 105 | "taskDescription": "任务描述", |
| @@ -122,6 +124,50 @@ var _ = Describe("创建新任务", func() { | @@ -122,6 +124,50 @@ var _ = Describe("创建新任务", func() { | ||
| 122 | ContainsKey("taskId").ValueNotEqual("taskId", BeZero()) | 124 | ContainsKey("taskId").ValueNotEqual("taskId", BeZero()) |
| 123 | }) | 125 | }) |
| 124 | }) | 126 | }) |
| 127 | + Context("提交正确的指派类型任务数据", func() { | ||
| 128 | + It("返回指派类型任务数据", func() { | ||
| 129 | + httpExpect := httpexpect.New(GinkgoT(), server.URL) | ||
| 130 | + body := map[string]interface{}{ | ||
| 131 | + "companyId": 101, | ||
| 132 | + "taskName": "竞标任务", | ||
| 133 | + "taskType": 2, | ||
| 134 | + "sponsor": 2499036607974745088, | ||
| 135 | + "referenceResourceType": 2, | ||
| 136 | + "referenceResourceItems": []map[string]interface{}{ | ||
| 137 | + {"serialNumber": 1, "title": "机会标题1"}, | ||
| 138 | + {"serialNumber": 2, "title": "机会标题2"}, | ||
| 139 | + {"serialNumber": 3, "title": "机会标题3"}, | ||
| 140 | + }, | ||
| 141 | + "projectBelong": 1, | ||
| 142 | + "customerValues": []int{ | ||
| 143 | + 1, | ||
| 144 | + 2, | ||
| 145 | + 3, | ||
| 146 | + }, | ||
| 147 | + "taskNature": 1, | ||
| 148 | + "suMoney": 1000.00, | ||
| 149 | + "acceptanceStandard": "验收标准", | ||
| 150 | + "taskDescription": "任务描述", | ||
| 151 | + "taskPictureUrls": []string{ | ||
| 152 | + "url-1", | ||
| 153 | + "url-2", | ||
| 154 | + "url-3", | ||
| 155 | + }, | ||
| 156 | + "assignedPerson": 2499036607974745088, | ||
| 157 | + "plannedCompletionTime": time.Now(), | ||
| 158 | + } | ||
| 159 | + httpExpect.POST("/tasks/"). | ||
| 160 | + WithJSON(body). | ||
| 161 | + Expect(). | ||
| 162 | + Status(http.StatusOK). | ||
| 163 | + JSON(). | ||
| 164 | + Object(). | ||
| 165 | + ContainsKey("code").ValueEqual("code", 0). | ||
| 166 | + ContainsKey("msg").ValueEqual("msg", "ok"). | ||
| 167 | + ContainsKey("data").Value("data").Object(). | ||
| 168 | + ContainsKey("taskId").ValueNotEqual("taskId", BeZero()) | ||
| 169 | + }) | ||
| 170 | + }) | ||
| 125 | Context("提交已经被引用的问题ID任务数据", func() { | 171 | Context("提交已经被引用的问题ID任务数据", func() { |
| 126 | It("创建失败", func() { | 172 | It("创建失败", func() { |
| 127 | httpExpect := httpexpect.New(GinkgoT(), server.URL) | 173 | httpExpect := httpexpect.New(GinkgoT(), server.URL) |
| @@ -134,12 +180,13 @@ var _ = Describe("创建新任务", func() { | @@ -134,12 +180,13 @@ var _ = Describe("创建新任务", func() { | ||
| 134 | "referenceResourceItems": []map[string]interface{}{ | 180 | "referenceResourceItems": []map[string]interface{}{ |
| 135 | {"referenceResourceId": 4, "serialNumber": 4, "title": "问题标题4"}, | 181 | {"referenceResourceId": 4, "serialNumber": 4, "title": "问题标题4"}, |
| 136 | }, | 182 | }, |
| 137 | - "customerValue": []string{ | ||
| 138 | - "口味", | ||
| 139 | - "色泽", | ||
| 140 | - "商务服务", | 183 | + "projectBelong": 1, |
| 184 | + "customerValues": []int{ | ||
| 185 | + 1, | ||
| 186 | + 2, | ||
| 187 | + 3, | ||
| 141 | }, | 188 | }, |
| 142 | - "taskNature": "线", | 189 | + "taskNature": 1, |
| 143 | "suMoney": 1000.00, | 190 | "suMoney": 1000.00, |
| 144 | "acceptanceStandard": "验收标准", | 191 | "acceptanceStandard": "验收标准", |
| 145 | "taskDescription": "任务描述", | 192 | "taskDescription": "任务描述", |
| 1 | package task | 1 | package task |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | - "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
| 5 | - "net/http" | ||
| 6 | - "time" | ||
| 7 | - | ||
| 8 | "github.com/gavv/httpexpect" | 4 | "github.com/gavv/httpexpect" |
| 9 | "github.com/go-pg/pg" | 5 | "github.com/go-pg/pg" |
| 10 | . "github.com/onsi/ginkgo" | 6 | . "github.com/onsi/ginkgo" |
| 11 | . "github.com/onsi/gomega" | 7 | . "github.com/onsi/gomega" |
| 8 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
| 12 | pG "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/pg" | 9 | pG "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/pg" |
| 10 | + "net/http" | ||
| 11 | + "time" | ||
| 13 | ) | 12 | ) |
| 14 | 13 | ||
| 15 | var _ = Describe("返回任务", func() { | 14 | var _ = Describe("返回任务", func() { |
| 15 | + var projectBelongId int | ||
| 16 | + var taskNatureId int | ||
| 17 | + var customerValueId1 int | ||
| 18 | + var customerValueId2 int | ||
| 19 | + var customerValueId3 int | ||
| 16 | BeforeEach(func() { | 20 | BeforeEach(func() { |
| 21 | + _, err3 := pG.DB.QueryOne( | ||
| 22 | + pg.Scan(&projectBelongId), | ||
| 23 | + "INSERT INTO project_belongs (project_belong_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 24 | + "能力展示", 101) | ||
| 25 | + Expect(err3).NotTo(HaveOccurred()) | ||
| 26 | + _, err4 := pG.DB.QueryOne( | ||
| 27 | + pg.Scan(&customerValueId1), | ||
| 28 | + "INSERT INTO customer_values (customer_value_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 29 | + "口味", 101) | ||
| 30 | + Expect(err4).NotTo(HaveOccurred()) | ||
| 31 | + _, err5 := pG.DB.QueryOne( | ||
| 32 | + pg.Scan(&customerValueId2), | ||
| 33 | + "INSERT INTO customer_values (customer_value_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 34 | + "口感", 101) | ||
| 35 | + Expect(err5).NotTo(HaveOccurred()) | ||
| 36 | + _, err6 := pG.DB.QueryOne( | ||
| 37 | + pg.Scan(&customerValueId3), | ||
| 38 | + "INSERT INTO customer_values (customer_value_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 39 | + "性价比", 101) | ||
| 40 | + Expect(err6).NotTo(HaveOccurred()) | ||
| 41 | + _, err7 := pG.DB.QueryOne( | ||
| 42 | + pg.Scan(&taskNatureId), | ||
| 43 | + "INSERT INTO task_natures (task_nature_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 44 | + "点", 101) | ||
| 45 | + Expect(err7).NotTo(HaveOccurred()) | ||
| 17 | dayAfter, _ := time.ParseDuration("72h") | 46 | dayAfter, _ := time.ParseDuration("72h") |
| 18 | _, err := pG.DB.QueryOne( | 47 | _, err := pG.DB.QueryOne( |
| 19 | pg.Scan(), | 48 | pg.Scan(), |
| 20 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 49 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 21 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | 50 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ |
| 22 | Uid: 2499036607974745088, | 51 | Uid: 2499036607974745088, |
| 23 | - }, 1, "null", pg.Array([]string{"口感", "便利", "品牌"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter)) | 52 | + }, 1, "null", projectBelongId, pg.Array([]int{customerValueId1, customerValueId2, customerValueId3}), taskNatureId, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter)) |
| 24 | Expect(err).NotTo(HaveOccurred()) | 53 | Expect(err).NotTo(HaveOccurred()) |
| 25 | _, err1 := pG.DB.QueryOne( | 54 | _, err1 := pG.DB.QueryOne( |
| 26 | pg.Scan(), | 55 | pg.Scan(), |
| 27 | - "INSERT INTO bid_infos (id, task_id) VALUES (?, ?)", | ||
| 28 | - 1, 1) | 56 | + "INSERT INTO bid_infos (id, task_id, is_remind) VALUES (?, ?, ?)", |
| 57 | + 1, 1, true) | ||
| 29 | Expect(err1).NotTo(HaveOccurred()) | 58 | Expect(err1).NotTo(HaveOccurred()) |
| 30 | _, err2 := pG.DB.QueryOne( | 59 | _, err2 := pG.DB.QueryOne( |
| 31 | pg.Scan(), | 60 | pg.Scan(), |
| @@ -55,5 +84,11 @@ var _ = Describe("返回任务", func() { | @@ -55,5 +84,11 @@ var _ = Describe("返回任务", func() { | ||
| 55 | Expect(err1).NotTo(HaveOccurred()) | 84 | Expect(err1).NotTo(HaveOccurred()) |
| 56 | _, err2 := pG.DB.Exec("DELETE FROM bidder_infos WHERE true") | 85 | _, err2 := pG.DB.Exec("DELETE FROM bidder_infos WHERE true") |
| 57 | Expect(err2).NotTo(HaveOccurred()) | 86 | Expect(err2).NotTo(HaveOccurred()) |
| 87 | + _, err3 := pG.DB.Exec("DELETE FROM project_belongs WHERE true") | ||
| 88 | + Expect(err3).NotTo(HaveOccurred()) | ||
| 89 | + _, err4 := pG.DB.Exec("DELETE FROM task_natures WHERE true") | ||
| 90 | + Expect(err4).NotTo(HaveOccurred()) | ||
| 91 | + _, err5 := pG.DB.Exec("DELETE FROM customer_values WHERE true") | ||
| 92 | + Expect(err5).NotTo(HaveOccurred()) | ||
| 58 | }) | 93 | }) |
| 59 | }) | 94 | }) |
| @@ -13,14 +13,44 @@ import ( | @@ -13,14 +13,44 @@ import ( | ||
| 13 | ) | 13 | ) |
| 14 | 14 | ||
| 15 | var _ = Describe("返回任务列表", func() { | 15 | var _ = Describe("返回任务列表", func() { |
| 16 | + var projectBelongId int | ||
| 17 | + var taskNatureId int | ||
| 18 | + var customerValueId1 int | ||
| 19 | + var customerValueId2 int | ||
| 20 | + var customerValueId3 int | ||
| 16 | BeforeEach(func() { | 21 | BeforeEach(func() { |
| 22 | + _, err8 := pG.DB.QueryOne( | ||
| 23 | + pg.Scan(&projectBelongId), | ||
| 24 | + "INSERT INTO project_belongs (project_belong_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 25 | + "能力展示", 101) | ||
| 26 | + Expect(err8).NotTo(HaveOccurred()) | ||
| 27 | + _, err9 := pG.DB.QueryOne( | ||
| 28 | + pg.Scan(&customerValueId1), | ||
| 29 | + "INSERT INTO customer_values (customer_value_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 30 | + "口味", 101) | ||
| 31 | + Expect(err9).NotTo(HaveOccurred()) | ||
| 32 | + _, err10 := pG.DB.QueryOne( | ||
| 33 | + pg.Scan(&customerValueId2), | ||
| 34 | + "INSERT INTO customer_values (customer_value_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 35 | + "口感", 101) | ||
| 36 | + Expect(err10).NotTo(HaveOccurred()) | ||
| 37 | + _, err11 := pG.DB.QueryOne( | ||
| 38 | + pg.Scan(&customerValueId3), | ||
| 39 | + "INSERT INTO customer_values (customer_value_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 40 | + "性价比", 101) | ||
| 41 | + Expect(err11).NotTo(HaveOccurred()) | ||
| 42 | + _, err12 := pG.DB.QueryOne( | ||
| 43 | + pg.Scan(&taskNatureId), | ||
| 44 | + "INSERT INTO task_natures (task_nature_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 45 | + "点", 101) | ||
| 46 | + Expect(err12).NotTo(HaveOccurred()) | ||
| 17 | dayAfter, _ := time.ParseDuration("72h") | 47 | dayAfter, _ := time.ParseDuration("72h") |
| 18 | _, err := pG.DB.QueryOne( | 48 | _, err := pG.DB.QueryOne( |
| 19 | pg.Scan(), | 49 | pg.Scan(), |
| 20 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 50 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 21 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | 51 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ |
| 22 | Uid: 2499036607974745088, | 52 | Uid: 2499036607974745088, |
| 23 | - }, 1, "null", pg.Array([]string{"口感", "便利", "品牌", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | 53 | + }, 1, "null", projectBelongId, pg.Array([]int{customerValueId1, customerValueId2, customerValueId3}), taskNatureId, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ |
| 24 | { | 54 | { |
| 25 | Uid: 2499036607974745077, | 55 | Uid: 2499036607974745077, |
| 26 | }, | 56 | }, |
| @@ -31,30 +61,30 @@ var _ = Describe("返回任务列表", func() { | @@ -31,30 +61,30 @@ var _ = Describe("返回任务列表", func() { | ||
| 31 | Expect(err).NotTo(HaveOccurred()) | 61 | Expect(err).NotTo(HaveOccurred()) |
| 32 | _, err1 := pG.DB.QueryOne( | 62 | _, err1 := pG.DB.QueryOne( |
| 33 | pg.Scan(), | 63 | pg.Scan(), |
| 34 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 64 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 35 | 2, 101, "抢单任务2", 1, &domain.EmployeeInfo{ | 65 | 2, 101, "抢单任务2", 1, &domain.EmployeeInfo{ |
| 36 | Uid: 2499036607974745088, | 66 | Uid: 2499036607974745088, |
| 37 | - }, 1, "null", pg.Array([]string{"口感", "便利", "品牌"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), false, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter)) | 67 | + }, 1, "null", projectBelongId, pg.Array([]int{customerValueId1, customerValueId2}), taskNatureId, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), false, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter)) |
| 38 | _, err2 := pG.DB.QueryOne( | 68 | _, err2 := pG.DB.QueryOne( |
| 39 | pg.Scan(), | 69 | pg.Scan(), |
| 40 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 70 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 41 | 3, 102, "竞标任务1", 2, &domain.EmployeeInfo{ | 71 | 3, 102, "竞标任务1", 2, &domain.EmployeeInfo{ |
| 42 | Uid: 2499036607974745088, | 72 | Uid: 2499036607974745088, |
| 43 | - }, 1, "null", pg.Array([]string{"口感", "便利", "品牌"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter)) | 73 | + }, 1, "null", projectBelongId, pg.Array([]int{customerValueId1, customerValueId2}), taskNatureId, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter)) |
| 44 | Expect(err2).NotTo(HaveOccurred()) | 74 | Expect(err2).NotTo(HaveOccurred()) |
| 45 | _, err3 := pG.DB.QueryOne( | 75 | _, err3 := pG.DB.QueryOne( |
| 46 | pg.Scan(), | 76 | pg.Scan(), |
| 47 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 77 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 48 | 4, 101, "竞标任务1", 2, &domain.EmployeeInfo{ | 78 | 4, 101, "竞标任务1", 2, &domain.EmployeeInfo{ |
| 49 | Uid: 2499036607974745099, | 79 | Uid: 2499036607974745099, |
| 50 | - }, 1, "null", pg.Array([]string{"口感", "便利", "品牌"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), false, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter)) | 80 | + }, 1, "null", projectBelongId, pg.Array([]int{customerValueId1, customerValueId2}), taskNatureId, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), false, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter)) |
| 51 | Expect(err3).NotTo(HaveOccurred()) | 81 | Expect(err3).NotTo(HaveOccurred()) |
| 52 | _, err4 := pG.DB.QueryOne( | 82 | _, err4 := pG.DB.QueryOne( |
| 53 | pg.Scan(), | 83 | pg.Scan(), |
| 54 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 84 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 55 | 5, 303, "抢单任务1", 1, &domain.EmployeeInfo{ | 85 | 5, 303, "抢单任务1", 1, &domain.EmployeeInfo{ |
| 56 | Uid: 2499036607974745088, | 86 | Uid: 2499036607974745088, |
| 57 | - }, 6, "null", pg.Array([]string{"口感", "便利", "品牌", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | 87 | + }, 6, "null", projectBelongId, pg.Array([]int{customerValueId1, customerValueId2, customerValueId3}), taskNatureId, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ |
| 58 | { | 88 | { |
| 59 | Uid: 2499036607974745077, | 89 | Uid: 2499036607974745077, |
| 60 | }, | 90 | }, |
| @@ -64,11 +94,11 @@ var _ = Describe("返回任务列表", func() { | @@ -64,11 +94,11 @@ var _ = Describe("返回任务列表", func() { | ||
| 64 | }, "null", "", pg.Array([]string{}), 2499036607974745099, time.Now(), time.Now().Add(dayAfter)) | 94 | }, "null", "", pg.Array([]string{}), 2499036607974745099, time.Now(), time.Now().Add(dayAfter)) |
| 65 | Expect(err4).NotTo(HaveOccurred()) | 95 | Expect(err4).NotTo(HaveOccurred()) |
| 66 | Expect(err1).NotTo(HaveOccurred()) | 96 | Expect(err1).NotTo(HaveOccurred()) |
| 67 | - _, err11 := pG.DB.QueryOne( | 97 | + _, err111 := pG.DB.QueryOne( |
| 68 | pg.Scan(), | 98 | pg.Scan(), |
| 69 | "INSERT INTO bid_infos (id, task_id, bid_start_time, bid_end_time) VALUES (?, ?, ?, ?)", | 99 | "INSERT INTO bid_infos (id, task_id, bid_start_time, bid_end_time) VALUES (?, ?, ?, ?)", |
| 70 | 1, 4, time.Date(2020, time.Month(4), 5, 8, 0, 0, 0, time.Now().Location()), time.Date(2020, time.Month(4), 10, 8, 0, 0, 0, time.Now().Location())) | 100 | 1, 4, time.Date(2020, time.Month(4), 5, 8, 0, 0, 0, time.Now().Location()), time.Date(2020, time.Month(4), 10, 8, 0, 0, 0, time.Now().Location())) |
| 71 | - Expect(err11).NotTo(HaveOccurred()) | 101 | + Expect(err111).NotTo(HaveOccurred()) |
| 72 | _, err22 := pG.DB.QueryOne( | 102 | _, err22 := pG.DB.QueryOne( |
| 73 | pg.Scan(), | 103 | pg.Scan(), |
| 74 | "INSERT INTO bidder_infos (id, bid_info_id, task_id) VALUES (?, ?, ?)", | 104 | "INSERT INTO bidder_infos (id, bid_info_id, task_id) VALUES (?, ?, ?)", |
| @@ -134,7 +164,7 @@ var _ = Describe("返回任务列表", func() { | @@ -134,7 +164,7 @@ var _ = Describe("返回任务列表", func() { | ||
| 134 | httpExpect.GET("/tasks/"). | 164 | httpExpect.GET("/tasks/"). |
| 135 | WithQuery("companyId", 101). | 165 | WithQuery("companyId", 101). |
| 136 | WithQuery("sponsor", 2499036607974745088). | 166 | WithQuery("sponsor", 2499036607974745088). |
| 137 | - WithQuery("taskContentMatch", "售后服务"). | 167 | + WithQuery("taskContentMatch", "任务2"). |
| 138 | WithQuery("taskType", 1). | 168 | WithQuery("taskType", 1). |
| 139 | WithQuery("offset", 0). | 169 | WithQuery("offset", 0). |
| 140 | WithQuery("limit", 20). | 170 | WithQuery("limit", 20). |
| @@ -245,5 +275,11 @@ var _ = Describe("返回任务列表", func() { | @@ -245,5 +275,11 @@ var _ = Describe("返回任务列表", func() { | ||
| 245 | Expect(err1).NotTo(HaveOccurred()) | 275 | Expect(err1).NotTo(HaveOccurred()) |
| 246 | _, err2 := pG.DB.Exec("DELETE FROM bidder_infos WHERE true") | 276 | _, err2 := pG.DB.Exec("DELETE FROM bidder_infos WHERE true") |
| 247 | Expect(err2).NotTo(HaveOccurred()) | 277 | Expect(err2).NotTo(HaveOccurred()) |
| 278 | + _, err3 := pG.DB.Exec("DELETE FROM project_belongs WHERE true") | ||
| 279 | + Expect(err3).NotTo(HaveOccurred()) | ||
| 280 | + _, err4 := pG.DB.Exec("DELETE FROM task_natures WHERE true") | ||
| 281 | + Expect(err4).NotTo(HaveOccurred()) | ||
| 282 | + _, err5 := pG.DB.Exec("DELETE FROM customer_values WHERE true") | ||
| 283 | + Expect(err5).NotTo(HaveOccurred()) | ||
| 248 | }) | 284 | }) |
| 249 | }) | 285 | }) |
| @@ -19,10 +19,10 @@ var _ = Describe("关闭任务", func() { | @@ -19,10 +19,10 @@ var _ = Describe("关闭任务", func() { | ||
| 19 | dayAfter, _ := time.ParseDuration("72h") | 19 | dayAfter, _ := time.ParseDuration("72h") |
| 20 | _, err := pG.DB.QueryOne( | 20 | _, err := pG.DB.QueryOne( |
| 21 | pg.Scan(), | 21 | pg.Scan(), |
| 22 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 22 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 23 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | 23 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ |
| 24 | Uid: 2499036607974745088, | 24 | Uid: 2499036607974745088, |
| 25 | - }, 3, "null", pg.Array([]string{"口感", "便利", "品牌", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | 25 | + }, 3, "null", 1, pg.Array([]int{1, 2, 3, 4}), 1, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ |
| 26 | { | 26 | { |
| 27 | Uid: 2499036607974745077, | 27 | Uid: 2499036607974745077, |
| 28 | }, | 28 | }, |
| @@ -60,10 +60,10 @@ var _ = Describe("关闭任务", func() { | @@ -60,10 +60,10 @@ var _ = Describe("关闭任务", func() { | ||
| 60 | dayAfter, _ := time.ParseDuration("72h") | 60 | dayAfter, _ := time.ParseDuration("72h") |
| 61 | _, err := pG.DB.QueryOne( | 61 | _, err := pG.DB.QueryOne( |
| 62 | pg.Scan(), | 62 | pg.Scan(), |
| 63 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 63 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 64 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | 64 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ |
| 65 | Uid: 2499036607974745088, | 65 | Uid: 2499036607974745088, |
| 66 | - }, 6, "null", pg.Array([]string{"口感", "便利", "品牌", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | 66 | + }, 6, "null", 1, pg.Array([]int{1, 2, 3, 4}), 1, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ |
| 67 | { | 67 | { |
| 68 | Uid: 2499036607974745077, | 68 | Uid: 2499036607974745077, |
| 69 | }, | 69 | }, |
| 1 | +package task | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
| 5 | + "net/http" | ||
| 6 | + "time" | ||
| 7 | + | ||
| 8 | + "github.com/gavv/httpexpect" | ||
| 9 | + "github.com/go-pg/pg" | ||
| 10 | + . "github.com/onsi/ginkgo" | ||
| 11 | + . "github.com/onsi/gomega" | ||
| 12 | + pG "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/pg" | ||
| 13 | +) | ||
| 14 | + | ||
| 15 | +var _ = Describe("驳回任务领取人", func() { | ||
| 16 | + BeforeEach(func() { | ||
| 17 | + dayAfter, _ := time.ParseDuration("72h") | ||
| 18 | + _, err := pG.DB.QueryOne( | ||
| 19 | + pg.Scan(), | ||
| 20 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | ||
| 21 | + 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | ||
| 22 | + Uid: 2499036607974745088, | ||
| 23 | + }, 3, "null", 1, pg.Array([]int{1, 2, 3, 4}), 1, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | ||
| 24 | + { | ||
| 25 | + Uid: 2499036607974745077, | ||
| 26 | + }, | ||
| 27 | + { | ||
| 28 | + Uid: 2499036607974745066, | ||
| 29 | + }, | ||
| 30 | + }, "null", "", pg.Array([]string{}), 0, time.Now(), time.Now().Add(dayAfter)) | ||
| 31 | + Expect(err).NotTo(HaveOccurred()) | ||
| 32 | + _, err1 := pG.DB.QueryOne( | ||
| 33 | + pg.Scan(), | ||
| 34 | + "INSERT INTO employees (id, company_id, uid, employee_name, employee_account, su_money) VALUES (?, ?, ?, ?, ?, ?)", | ||
| 35 | + 1, 101, 2499036607974745088, "testEmployeeName", "testEmployeeAccount", 0) | ||
| 36 | + Expect(err1).NotTo(HaveOccurred()) | ||
| 37 | + _, err2 := pG.DB.QueryOne( | ||
| 38 | + pg.Scan(), | ||
| 39 | + "INSERT INTO employees (id, company_id, uid, employee_name, employee_account, su_money) VALUES (?, ?, ?, ?, ?, ?)", | ||
| 40 | + 2, 101, 2499036607974745099, "testEmployeeName", "testEmployeeAccount", 0) | ||
| 41 | + Expect(err2).NotTo(HaveOccurred()) | ||
| 42 | + _, err3 := pG.DB.QueryOne( | ||
| 43 | + pg.Scan(), | ||
| 44 | + "INSERT INTO rob_infos (id, task_id ,receiver) VALUES (?, ?, ?)", | ||
| 45 | + 1, 1, &domain.EmployeeInfo{ | ||
| 46 | + Uid: 2499036607974745099, | ||
| 47 | + }) | ||
| 48 | + Expect(err3).NotTo(HaveOccurred()) | ||
| 49 | + }) | ||
| 50 | + Describe("驳回任务领取人", func() { | ||
| 51 | + Context("任务发布人驳回任务领取人", func() { | ||
| 52 | + It("驳回成功", func() { | ||
| 53 | + httpExpect := httpexpect.New(GinkgoT(), server.URL) | ||
| 54 | + body := map[string]interface{}{ | ||
| 55 | + "operator": 2499036607974745088, | ||
| 56 | + "rejectReason": "看你不爽", | ||
| 57 | + } | ||
| 58 | + httpExpect.POST("/tasks/1/reject-task-receiver"). | ||
| 59 | + WithJSON(body). | ||
| 60 | + Expect(). | ||
| 61 | + Status(http.StatusOK). | ||
| 62 | + JSON(). | ||
| 63 | + Object(). | ||
| 64 | + ContainsKey("code").ValueEqual("code", 0). | ||
| 65 | + ContainsKey("msg").ValueEqual("msg", "ok"). | ||
| 66 | + ContainsKey("data").Value("data").Object(). | ||
| 67 | + ContainsKey("taskStatus").ValueEqual("taskStatus", 2) | ||
| 68 | + }) | ||
| 69 | + }) | ||
| 70 | + }) | ||
| 71 | + AfterEach(func() { | ||
| 72 | + _, err := pG.DB.Exec("DELETE FROM tasks WHERE true") | ||
| 73 | + Expect(err).NotTo(HaveOccurred()) | ||
| 74 | + _, err1 := pG.DB.Exec("DELETE FROM bid_infos WHERE true") | ||
| 75 | + Expect(err1).NotTo(HaveOccurred()) | ||
| 76 | + _, err2 := pG.DB.Exec("DELETE FROM bidder_infos WHERE true") | ||
| 77 | + Expect(err2).NotTo(HaveOccurred()) | ||
| 78 | + _, err3 := pG.DB.Exec("DELETE FROM employees WHERE true") | ||
| 79 | + Expect(err3).NotTo(HaveOccurred()) | ||
| 80 | + _, err4 := pG.DB.Exec("DELETE FROM rob_infos WHERE true") | ||
| 81 | + Expect(err4).NotTo(HaveOccurred()) | ||
| 82 | + _, err5 := pG.DB.Exec("DELETE FROM reject_task_records WHERE true") | ||
| 83 | + Expect(err5).NotTo(HaveOccurred()) | ||
| 84 | + }) | ||
| 85 | +}) |
| @@ -18,7 +18,7 @@ var _ = Describe("发布任务", func() { | @@ -18,7 +18,7 @@ var _ = Describe("发布任务", func() { | ||
| 18 | dayAfter, _ := time.ParseDuration("72h") | 18 | dayAfter, _ := time.ParseDuration("72h") |
| 19 | _, err := pG.DB.QueryOne( | 19 | _, err := pG.DB.QueryOne( |
| 20 | pg.Scan(), | 20 | pg.Scan(), |
| 21 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 21 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 22 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | 22 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ |
| 23 | Uid: 2499036607974745088, | 23 | Uid: 2499036607974745088, |
| 24 | }, 1, &domain.ReferenceResource{ | 24 | }, 1, &domain.ReferenceResource{ |
| @@ -28,7 +28,7 @@ var _ = Describe("发布任务", func() { | @@ -28,7 +28,7 @@ var _ = Describe("发布任务", func() { | ||
| 28 | ReferenceResourceId: 4, | 28 | ReferenceResourceId: 4, |
| 29 | }, | 29 | }, |
| 30 | }, | 30 | }, |
| 31 | - }, pg.Array([]string{"口感", "便利", "品牌", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | 31 | + }, 1, pg.Array([]int{1, 2, 3, 4}), 1, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ |
| 32 | { | 32 | { |
| 33 | Uid: 2499036607974745077, | 33 | Uid: 2499036607974745077, |
| 34 | }, | 34 | }, |
| @@ -65,10 +65,10 @@ var _ = Describe("发布任务", func() { | @@ -65,10 +65,10 @@ var _ = Describe("发布任务", func() { | ||
| 65 | dayAfter, _ := time.ParseDuration("72h") | 65 | dayAfter, _ := time.ParseDuration("72h") |
| 66 | _, err := pG.DB.QueryOne( | 66 | _, err := pG.DB.QueryOne( |
| 67 | pg.Scan(), | 67 | pg.Scan(), |
| 68 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 68 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 69 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | 69 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ |
| 70 | Uid: 2499036607974745088, | 70 | Uid: 2499036607974745088, |
| 71 | - }, 3, "null", pg.Array([]string{"口感", "便利", "品牌", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | 71 | + }, 3, "null", 1, pg.Array([]int{1, 2, 3, 4}), 1, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ |
| 72 | { | 72 | { |
| 73 | Uid: 2499036607974745077, | 73 | Uid: 2499036607974745077, |
| 74 | }, | 74 | }, |
| @@ -103,7 +103,7 @@ var _ = Describe("发布任务", func() { | @@ -103,7 +103,7 @@ var _ = Describe("发布任务", func() { | ||
| 103 | dayAfter, _ := time.ParseDuration("72h") | 103 | dayAfter, _ := time.ParseDuration("72h") |
| 104 | _, err := pG.DB.QueryOne( | 104 | _, err := pG.DB.QueryOne( |
| 105 | pg.Scan(), | 105 | pg.Scan(), |
| 106 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 106 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 107 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | 107 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ |
| 108 | Uid: 2499036607974745088, | 108 | Uid: 2499036607974745088, |
| 109 | }, 2, &domain.ReferenceResource{ | 109 | }, 2, &domain.ReferenceResource{ |
| @@ -113,7 +113,7 @@ var _ = Describe("发布任务", func() { | @@ -113,7 +113,7 @@ var _ = Describe("发布任务", func() { | ||
| 113 | ReferenceResourceId: 4, | 113 | ReferenceResourceId: 4, |
| 114 | }, | 114 | }, |
| 115 | }, | 115 | }, |
| 116 | - }, pg.Array([]string{"口感", "便利", "品牌", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | 116 | + }, 1, pg.Array([]int{1, 2, 3, 4}), 1, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ |
| 117 | { | 117 | { |
| 118 | Uid: 2499036607974745077, | 118 | Uid: 2499036607974745077, |
| 119 | }, | 119 | }, |
| @@ -129,7 +129,7 @@ var _ = Describe("发布任务", func() { | @@ -129,7 +129,7 @@ var _ = Describe("发布任务", func() { | ||
| 129 | Expect(err1).NotTo(HaveOccurred()) | 129 | Expect(err1).NotTo(HaveOccurred()) |
| 130 | _, err2 := pG.DB.QueryOne( | 130 | _, err2 := pG.DB.QueryOne( |
| 131 | pg.Scan(), | 131 | pg.Scan(), |
| 132 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 132 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 133 | 2, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | 133 | 2, 101, "抢单任务1", 1, &domain.EmployeeInfo{ |
| 134 | Uid: 2499036607974745088, | 134 | Uid: 2499036607974745088, |
| 135 | }, 2, &domain.ReferenceResource{ | 135 | }, 2, &domain.ReferenceResource{ |
| @@ -139,7 +139,7 @@ var _ = Describe("发布任务", func() { | @@ -139,7 +139,7 @@ var _ = Describe("发布任务", func() { | ||
| 139 | ReferenceResourceId: 4, | 139 | ReferenceResourceId: 4, |
| 140 | }, | 140 | }, |
| 141 | }, | 141 | }, |
| 142 | - }, pg.Array([]string{"口感", "便利", "品牌", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | 142 | + }, 1, pg.Array([]int{1, 2, 3, 4}), 1, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ |
| 143 | { | 143 | { |
| 144 | Uid: 2499036607974745077, | 144 | Uid: 2499036607974745077, |
| 145 | }, | 145 | }, |
| @@ -164,6 +164,60 @@ var _ = Describe("发布任务", func() { | @@ -164,6 +164,60 @@ var _ = Describe("发布任务", func() { | ||
| 164 | ContainsKey("msg").ValueEqual("msg", "内部服务出错:问题资源已经被引用,发布任务失败") | 164 | ContainsKey("msg").ValueEqual("msg", "内部服务出错:问题资源已经被引用,发布任务失败") |
| 165 | }) | 165 | }) |
| 166 | }) | 166 | }) |
| 167 | + Context("任务发起者发布待发布的指派任务", func() { | ||
| 168 | + BeforeEach(func() { | ||
| 169 | + dayAfter, _ := time.ParseDuration("72h") | ||
| 170 | + _, err := pG.DB.QueryOne( | ||
| 171 | + pg.Scan(), | ||
| 172 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time, assigned_person, planned_completion_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | ||
| 173 | + 1, 101, "抢单任务1", 3, &domain.EmployeeInfo{ | ||
| 174 | + Uid: 2499036607974745088, | ||
| 175 | + }, 1, &domain.ReferenceResource{ | ||
| 176 | + ReferenceResourceType: 1, | ||
| 177 | + ReferenceResourceItems: []*domain.ReferenceResourceItem{ | ||
| 178 | + { | ||
| 179 | + ReferenceResourceId: 4, | ||
| 180 | + }, | ||
| 181 | + }, | ||
| 182 | + }, 1, pg.Array([]int{1, 2, 3, 4}), 1, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | ||
| 183 | + { | ||
| 184 | + Uid: 2499036607974745077, | ||
| 185 | + }, | ||
| 186 | + { | ||
| 187 | + Uid: 2499036607974745066, | ||
| 188 | + }, | ||
| 189 | + }, "null", "", pg.Array([]string{}), 2499036607974745099, time.Now(), time.Now().Add(dayAfter), &domain.EmployeeInfo{ | ||
| 190 | + Uid: 2499036607974745099, | ||
| 191 | + }, time.Now()) | ||
| 192 | + Expect(err).NotTo(HaveOccurred()) | ||
| 193 | + _, err1 := pG.DB.QueryOne( | ||
| 194 | + pg.Scan(), | ||
| 195 | + "INSERT INTO employees (id, company_id, uid, employee_name, employee_account, su_money) VALUES (?, ?, ?, ?, ?, ?)", | ||
| 196 | + 1, 101, 2499036607974745088, "testEmployeeName", "testEmployeeAccount", 0) | ||
| 197 | + Expect(err1).NotTo(HaveOccurred()) | ||
| 198 | + _, err2 := pG.DB.QueryOne( | ||
| 199 | + pg.Scan(), | ||
| 200 | + "INSERT INTO employees (id, company_id, uid, employee_name, employee_account, su_money) VALUES (?, ?, ?, ?, ?, ?)", | ||
| 201 | + 2, 101, 2499036607974745099, "testEmployeeName", "testEmployeeAccount", 0) | ||
| 202 | + Expect(err2).NotTo(HaveOccurred()) | ||
| 203 | + }) | ||
| 204 | + It("发布任务成功", func() { | ||
| 205 | + httpExpect := httpexpect.New(GinkgoT(), server.URL) | ||
| 206 | + body := map[string]interface{}{ | ||
| 207 | + "operator": 2499036607974745088, | ||
| 208 | + } | ||
| 209 | + httpExpect.POST("/tasks/1/release"). | ||
| 210 | + WithJSON(body). | ||
| 211 | + Expect(). | ||
| 212 | + Status(http.StatusOK). | ||
| 213 | + JSON(). | ||
| 214 | + Object(). | ||
| 215 | + ContainsKey("code").ValueEqual("code", 0). | ||
| 216 | + ContainsKey("msg").ValueEqual("msg", "ok"). | ||
| 217 | + ContainsKey("data").Value("data").Object(). | ||
| 218 | + ContainsKey("taskStatus").ValueEqual("taskStatus", 3) | ||
| 219 | + }) | ||
| 220 | + }) | ||
| 167 | }) | 221 | }) |
| 168 | AfterEach(func() { | 222 | AfterEach(func() { |
| 169 | _, err := pG.DB.Exec("DELETE FROM tasks WHERE true") | 223 | _, err := pG.DB.Exec("DELETE FROM tasks WHERE true") |
| 1 | package task | 1 | package task |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
| 4 | "net/http" | 5 | "net/http" |
| 6 | + "time" | ||
| 5 | 7 | ||
| 6 | "github.com/gavv/httpexpect" | 8 | "github.com/gavv/httpexpect" |
| 7 | "github.com/go-pg/pg" | 9 | "github.com/go-pg/pg" |
| @@ -12,10 +14,13 @@ import ( | @@ -12,10 +14,13 @@ import ( | ||
| 12 | 14 | ||
| 13 | var _ = Describe("移除任务", func() { | 15 | var _ = Describe("移除任务", func() { |
| 14 | BeforeEach(func() { | 16 | BeforeEach(func() { |
| 17 | + dayAfter, _ := time.ParseDuration("72h") | ||
| 15 | _, err := pG.DB.QueryOne( | 18 | _, err := pG.DB.QueryOne( |
| 16 | pg.Scan(), | 19 | pg.Scan(), |
| 17 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | ||
| 18 | - 1, 101, "testTaskName", 1, "{}", 3, "null", pg.Array([]string{"口感"}), "testTaskNature", 100.00, "testAcceptanceStandard", "testTaskDescription", pg.Array([]string{"url"}), false) | 20 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 21 | + 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | ||
| 22 | + Uid: 2499036607974745088, | ||
| 23 | + }, 1, "null", 1, pg.Array([]int{1, 2, 3}), 1, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter)) | ||
| 19 | Expect(err).NotTo(HaveOccurred()) | 24 | Expect(err).NotTo(HaveOccurred()) |
| 20 | }) | 25 | }) |
| 21 | Describe("根据参数移除任务", func() { | 26 | Describe("根据参数移除任务", func() { |
| @@ -19,10 +19,10 @@ var _ = Describe("对任务进行抢单", func() { | @@ -19,10 +19,10 @@ var _ = Describe("对任务进行抢单", func() { | ||
| 19 | dayAfter, _ := time.ParseDuration("72h") | 19 | dayAfter, _ := time.ParseDuration("72h") |
| 20 | _, err := pG.DB.QueryOne( | 20 | _, err := pG.DB.QueryOne( |
| 21 | pg.Scan(), | 21 | pg.Scan(), |
| 22 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 22 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 23 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | 23 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ |
| 24 | Uid: 2499036607974745088, | 24 | Uid: 2499036607974745088, |
| 25 | - }, 2, "null", pg.Array([]string{"口感", "便利", "品牌", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | 25 | + }, 2, "null", 1, pg.Array([]int{1, 2, 3, 4}), 1, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ |
| 26 | { | 26 | { |
| 27 | Uid: 2499036607974745077, | 27 | Uid: 2499036607974745077, |
| 28 | }, | 28 | }, |
| @@ -56,7 +56,7 @@ var _ = Describe("对任务进行抢单", func() { | @@ -56,7 +56,7 @@ var _ = Describe("对任务进行抢单", func() { | ||
| 56 | ContainsKey("code").ValueEqual("code", 0). | 56 | ContainsKey("code").ValueEqual("code", 0). |
| 57 | ContainsKey("msg").ValueEqual("msg", "ok"). | 57 | ContainsKey("msg").ValueEqual("msg", "ok"). |
| 58 | ContainsKey("data").Value("data").Object(). | 58 | ContainsKey("data").Value("data").Object(). |
| 59 | - ContainsKey("taskStatus").ValueEqual("taskStatus", 3). | 59 | + ContainsKey("taskStatus").ValueEqual("taskStatus", 7). |
| 60 | ContainsKey("robInfo").Value("robInfo").Object(). | 60 | ContainsKey("robInfo").Value("robInfo").Object(). |
| 61 | ContainsKey("receiver").Value("receiver").Object(). | 61 | ContainsKey("receiver").Value("receiver").Object(). |
| 62 | ContainsKey("uid").ValueEqual("uid", 2499036607974745099) | 62 | ContainsKey("uid").ValueEqual("uid", 2499036607974745099) |
| @@ -67,10 +67,10 @@ var _ = Describe("对任务进行抢单", func() { | @@ -67,10 +67,10 @@ var _ = Describe("对任务进行抢单", func() { | ||
| 67 | dayAfter, _ := time.ParseDuration("72h") | 67 | dayAfter, _ := time.ParseDuration("72h") |
| 68 | _, err := pG.DB.QueryOne( | 68 | _, err := pG.DB.QueryOne( |
| 69 | pg.Scan(), | 69 | pg.Scan(), |
| 70 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 70 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 71 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | 71 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ |
| 72 | Uid: 2499036607974745088, | 72 | Uid: 2499036607974745088, |
| 73 | - }, 2, "null", pg.Array([]string{"口感", "便利", "品牌", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | 73 | + }, 2, "null", 1, pg.Array([]int{1, 2, 3, 4}), 1, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ |
| 74 | { | 74 | { |
| 75 | Uid: 2499036607974745077, | 75 | Uid: 2499036607974745077, |
| 76 | }, | 76 | }, |
| @@ -13,14 +13,44 @@ import ( | @@ -13,14 +13,44 @@ import ( | ||
| 13 | ) | 13 | ) |
| 14 | 14 | ||
| 15 | var _ = Describe("搜索任务", func() { | 15 | var _ = Describe("搜索任务", func() { |
| 16 | + var projectBelongId int | ||
| 17 | + var taskNatureId int | ||
| 18 | + var customerValueId1 int | ||
| 19 | + var customerValueId2 int | ||
| 20 | + var customerValueId3 int | ||
| 16 | BeforeEach(func() { | 21 | BeforeEach(func() { |
| 22 | + _, err8 := pG.DB.QueryOne( | ||
| 23 | + pg.Scan(&projectBelongId), | ||
| 24 | + "INSERT INTO project_belongs (project_belong_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 25 | + "能力展示", 101) | ||
| 26 | + Expect(err8).NotTo(HaveOccurred()) | ||
| 27 | + _, err9 := pG.DB.QueryOne( | ||
| 28 | + pg.Scan(&customerValueId1), | ||
| 29 | + "INSERT INTO customer_values (customer_value_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 30 | + "口味", 101) | ||
| 31 | + Expect(err9).NotTo(HaveOccurred()) | ||
| 32 | + _, err10 := pG.DB.QueryOne( | ||
| 33 | + pg.Scan(&customerValueId2), | ||
| 34 | + "INSERT INTO customer_values (customer_value_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 35 | + "口感", 101) | ||
| 36 | + Expect(err10).NotTo(HaveOccurred()) | ||
| 37 | + _, err11 := pG.DB.QueryOne( | ||
| 38 | + pg.Scan(&customerValueId3), | ||
| 39 | + "INSERT INTO customer_values (customer_value_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 40 | + "性价比", 101) | ||
| 41 | + Expect(err11).NotTo(HaveOccurred()) | ||
| 42 | + _, err12 := pG.DB.QueryOne( | ||
| 43 | + pg.Scan(&taskNatureId), | ||
| 44 | + "INSERT INTO task_natures (task_nature_name, company_id) VALUES (?, ?) RETURNING id", | ||
| 45 | + "点", 101) | ||
| 46 | + Expect(err12).NotTo(HaveOccurred()) | ||
| 17 | dayAfter, _ := time.ParseDuration("72h") | 47 | dayAfter, _ := time.ParseDuration("72h") |
| 18 | _, err := pG.DB.QueryOne( | 48 | _, err := pG.DB.QueryOne( |
| 19 | pg.Scan(), | 49 | pg.Scan(), |
| 20 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 50 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, receiver_uid, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 21 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ | 51 | 1, 101, "抢单任务1", 1, &domain.EmployeeInfo{ |
| 22 | Uid: 2499036607974745088, | 52 | Uid: 2499036607974745088, |
| 23 | - }, 1, "null", pg.Array([]string{"口感", "便利", "品牌", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ | 53 | + }, 1, "null", projectBelongId, pg.Array([]int{customerValueId1, customerValueId2, customerValueId3}), taskNatureId, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, []*domain.EmployeeInfo{ |
| 24 | { | 54 | { |
| 25 | Uid: 2499036607974745077, | 55 | Uid: 2499036607974745077, |
| 26 | }, | 56 | }, |
| @@ -31,17 +61,17 @@ var _ = Describe("搜索任务", func() { | @@ -31,17 +61,17 @@ var _ = Describe("搜索任务", func() { | ||
| 31 | Expect(err).NotTo(HaveOccurred()) | 61 | Expect(err).NotTo(HaveOccurred()) |
| 32 | _, err1 := pG.DB.QueryOne( | 62 | _, err1 := pG.DB.QueryOne( |
| 33 | pg.Scan(), | 63 | pg.Scan(), |
| 34 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 64 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 35 | 2, 101, "抢单任务2", 1, &domain.EmployeeInfo{ | 65 | 2, 101, "抢单任务2", 1, &domain.EmployeeInfo{ |
| 36 | Uid: 2499036607974745088, | 66 | Uid: 2499036607974745088, |
| 37 | - }, 1, "null", pg.Array([]string{"口感", "售后服务"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), false, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter)) | 67 | + }, 1, "null", projectBelongId, pg.Array([]int{customerValueId1, customerValueId2}), taskNatureId, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), false, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter)) |
| 38 | Expect(err1).NotTo(HaveOccurred()) | 68 | Expect(err1).NotTo(HaveOccurred()) |
| 39 | _, err2 := pG.DB.QueryOne( | 69 | _, err2 := pG.DB.QueryOne( |
| 40 | pg.Scan(), | 70 | pg.Scan(), |
| 41 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 71 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 42 | 3, 101, "竞标任务1", 2, &domain.EmployeeInfo{ | 72 | 3, 101, "竞标任务1", 2, &domain.EmployeeInfo{ |
| 43 | Uid: 2499036607974745088, | 73 | Uid: 2499036607974745088, |
| 44 | - }, 1, "null", pg.Array([]string{"口感", "便利", "品牌"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter)) | 74 | + }, 1, "null", projectBelongId, pg.Array([]int{customerValueId1, customerValueId2, customerValueId3}), taskNatureId, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter)) |
| 45 | Expect(err2).NotTo(HaveOccurred()) | 75 | Expect(err2).NotTo(HaveOccurred()) |
| 46 | _, err3 := pG.DB.QueryOne( | 76 | _, err3 := pG.DB.QueryOne( |
| 47 | pg.Scan(), | 77 | pg.Scan(), |
| @@ -57,10 +87,10 @@ var _ = Describe("搜索任务", func() { | @@ -57,10 +87,10 @@ var _ = Describe("搜索任务", func() { | ||
| 57 | Expect(err4).NotTo(HaveOccurred()) | 87 | Expect(err4).NotTo(HaveOccurred()) |
| 58 | _, err5 := pG.DB.QueryOne( | 88 | _, err5 := pG.DB.QueryOne( |
| 59 | pg.Scan(), | 89 | pg.Scan(), |
| 60 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | 90 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 61 | 4, 101, "竞标任务1", 2, &domain.EmployeeInfo{ | 91 | 4, 101, "竞标任务1", 2, &domain.EmployeeInfo{ |
| 62 | Uid: 2499036607974745088, | 92 | Uid: 2499036607974745088, |
| 63 | - }, 1, "null", pg.Array([]string{"口感", "便利", "品牌"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter)) | 93 | + }, 1, "null", projectBelongId, pg.Array([]int{customerValueId1, customerValueId2, customerValueId3}), taskNatureId, 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter)) |
| 64 | Expect(err5).NotTo(HaveOccurred()) | 94 | Expect(err5).NotTo(HaveOccurred()) |
| 65 | _, err6 := pG.DB.QueryOne( | 95 | _, err6 := pG.DB.QueryOne( |
| 66 | pg.Scan(), | 96 | pg.Scan(), |
| @@ -82,10 +112,10 @@ var _ = Describe("搜索任务", func() { | @@ -82,10 +112,10 @@ var _ = Describe("搜索任务", func() { | ||
| 82 | body := map[string]interface{}{ | 112 | body := map[string]interface{}{ |
| 83 | "companyId": 101, | 113 | "companyId": 101, |
| 84 | "sponsor": 2499036607974745088, | 114 | "sponsor": 2499036607974745088, |
| 85 | - "customerValue": []string{ | ||
| 86 | - "售后服务", | ||
| 87 | - "口感", | ||
| 88 | - "品牌", | 115 | + "customerValues": []int{ |
| 116 | + customerValueId1, | ||
| 117 | + customerValueId2, | ||
| 118 | + customerValueId3, | ||
| 89 | }, | 119 | }, |
| 90 | "offset": 0, | 120 | "offset": 0, |
| 91 | "limit": 20, | 121 | "limit": 20, |
| @@ -172,5 +202,11 @@ var _ = Describe("搜索任务", func() { | @@ -172,5 +202,11 @@ var _ = Describe("搜索任务", func() { | ||
| 172 | Expect(err1).NotTo(HaveOccurred()) | 202 | Expect(err1).NotTo(HaveOccurred()) |
| 173 | _, err2 := pG.DB.Exec("DELETE FROM bidder_infos WHERE true") | 203 | _, err2 := pG.DB.Exec("DELETE FROM bidder_infos WHERE true") |
| 174 | Expect(err2).NotTo(HaveOccurred()) | 204 | Expect(err2).NotTo(HaveOccurred()) |
| 205 | + _, err3 := pG.DB.Exec("DELETE FROM project_belongs WHERE true") | ||
| 206 | + Expect(err3).NotTo(HaveOccurred()) | ||
| 207 | + _, err4 := pG.DB.Exec("DELETE FROM task_natures WHERE true") | ||
| 208 | + Expect(err4).NotTo(HaveOccurred()) | ||
| 209 | + _, err5 := pG.DB.Exec("DELETE FROM customer_values WHERE true") | ||
| 210 | + Expect(err5).NotTo(HaveOccurred()) | ||
| 175 | }) | 211 | }) |
| 176 | }) | 212 | }) |
| @@ -16,8 +16,8 @@ var _ = Describe("更新任务", func() { | @@ -16,8 +16,8 @@ var _ = Describe("更新任务", func() { | ||
| 16 | BeforeEach(func() { | 16 | BeforeEach(func() { |
| 17 | _, err := pG.DB.QueryOne( | 17 | _, err := pG.DB.QueryOne( |
| 18 | pg.Scan(), | 18 | pg.Scan(), |
| 19 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | ||
| 20 | - 1, 101, "testTaskName", 1, "{}", 1, "{}", pg.Array([]string{"口感"}), "testTaskNature", 100.00, "testAcceptanceStandard", "testTaskDescription", pg.Array([]string{"url"}), false) | 19 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 20 | + 1, 101, "testTaskName", 1, "{}", 1, "{}", 1, pg.Array([]int{1}), 1, 100.00, "testAcceptanceStandard", "testTaskDescription", pg.Array([]string{"url"}), false) | ||
| 21 | Expect(err).NotTo(HaveOccurred()) | 21 | Expect(err).NotTo(HaveOccurred()) |
| 22 | }) | 22 | }) |
| 23 | It("返回更新后的任务数据", func() { | 23 | It("返回更新后的任务数据", func() { |
| @@ -32,12 +32,13 @@ var _ = Describe("更新任务", func() { | @@ -32,12 +32,13 @@ var _ = Describe("更新任务", func() { | ||
| 32 | {"serialNumber": 2, "title": "问题标题2"}, | 32 | {"serialNumber": 2, "title": "问题标题2"}, |
| 33 | {"serialNumber": 3, "title": "问题标题3"}, | 33 | {"serialNumber": 3, "title": "问题标题3"}, |
| 34 | }, | 34 | }, |
| 35 | - "customerValue": []string{ | ||
| 36 | - "口味", | ||
| 37 | - "色泽", | ||
| 38 | - "商务服务", | 35 | + "projectBelong": 1, |
| 36 | + "customerValues": []int{ | ||
| 37 | + 1, | ||
| 38 | + 2, | ||
| 39 | + 3, | ||
| 39 | }, | 40 | }, |
| 40 | - "taskNature": "线", | 41 | + "taskNature": 1, |
| 41 | "suMoney": 1000.00, | 42 | "suMoney": 1000.00, |
| 42 | "acceptanceStandard": "验收标准", | 43 | "acceptanceStandard": "验收标准", |
| 43 | "taskDescription": "任务描述", | 44 | "taskDescription": "任务描述", |
| @@ -64,8 +65,8 @@ var _ = Describe("更新任务", func() { | @@ -64,8 +65,8 @@ var _ = Describe("更新任务", func() { | ||
| 64 | BeforeEach(func() { | 65 | BeforeEach(func() { |
| 65 | _, err := pG.DB.QueryOne( | 66 | _, err := pG.DB.QueryOne( |
| 66 | pg.Scan(), | 67 | pg.Scan(), |
| 67 | - "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, customer_value, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", | ||
| 68 | - 1, 101, "testTaskName", 1, "{}", 3, "null", pg.Array([]string{"口感"}), "testTaskNature", 100.00, "testAcceptanceStandard", "testTaskDescription", pg.Array([]string{"url"}), false) | 68 | + "INSERT INTO tasks (id, company_id, task_name, task_type, sponsor, task_status, reference_resource, project_belong, customer_values, task_nature, su_money, acceptance_standard, task_description, task_picture_urls, is_reward_take) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", |
| 69 | + 1, 101, "testTaskName", 1, "{}", 3, "null", 1, pg.Array([]int{1}), 1, 100.00, "testAcceptanceStandard", "testTaskDescription", pg.Array([]string{"url"}), false) | ||
| 69 | Expect(err).NotTo(HaveOccurred()) | 70 | Expect(err).NotTo(HaveOccurred()) |
| 70 | }) | 71 | }) |
| 71 | It("返回当前状态不能进行编辑操作的提示", func() { | 72 | It("返回当前状态不能进行编辑操作的提示", func() { |
| @@ -80,12 +81,13 @@ var _ = Describe("更新任务", func() { | @@ -80,12 +81,13 @@ var _ = Describe("更新任务", func() { | ||
| 80 | {"serialNumber": 2, "title": "问题标题2"}, | 81 | {"serialNumber": 2, "title": "问题标题2"}, |
| 81 | {"serialNumber": 3, "title": "问题标题3"}, | 82 | {"serialNumber": 3, "title": "问题标题3"}, |
| 82 | }, | 83 | }, |
| 83 | - "customerValue": []string{ | ||
| 84 | - "口味", | ||
| 85 | - "色泽", | ||
| 86 | - "商务服务", | 84 | + "projectBelong": 1, |
| 85 | + "customerValues": []int{ | ||
| 86 | + 1, | ||
| 87 | + 2, | ||
| 88 | + 3, | ||
| 87 | }, | 89 | }, |
| 88 | - "taskNature": "线", | 90 | + "taskNature": 1, |
| 89 | "suMoney": 1000.00, | 91 | "suMoney": 1000.00, |
| 90 | "acceptanceStandard": "验收标准", | 92 | "acceptanceStandard": "验收标准", |
| 91 | "taskDescription": "任务描述", | 93 | "taskDescription": "任务描述", |
-
请 注册 或 登录 后发表评论