作者 linmadan

完成部分任务搜索功能

package command
import (
"fmt"
"github.com/astaxie/beego/validation"
)
type SearchTaskCommand struct {
// 公司ID
CompanyId int64 `json:"companyId" valid:"Required"`
// 任务发起者
Sponsor int64 `json:"sponsor,omitempty"`
// 任务内容匹配
TaskContentMatch string `json:"taskContentMatch,omitempty"`
// 任务类型
TaskType int `json:"taskType,omitempty"`
// 任务状态
TaskStatus int `json:"taskStatus,omitempty"`
// 客户价值
CustomerValue string `json:"customerValue,omitempty"`
// 任务性质
TaskNature string `json:"taskNature,omitempty"`
// 是否悬赏任务
IsRewardTake bool `json:"isRewardTake,omitempty"`
// 竞标时间(1全部,2已截止,3未截止)
BidTimeMatch int `json:"bidTimeMatch,omitempty"`
// 任务领取人
Receiver int64 `json:"receiver,omitempty"`
// 任务参与者
Participator int64 `json:"participator,omitempty"`
// 查询偏离量
Offset int `json:"offset,omitempty"`
// 查询限制
Limit int `json:"limit,omitempty"`
}
func (searchTaskCommand *SearchTaskCommand) ValidateCommand() error {
valid := validation.Validation{}
b, err := valid.Valid(searchTaskCommand)
if err != nil {
return err
}
if !b {
for _, validErr := range valid.Errors {
return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
}
}
return nil
}
... ...
... ... @@ -161,6 +161,27 @@ func (taskService *TaskService) AcceptanceTask(acceptanceTaskCommand *command.Ac
return nil, nil
}
// 搜索任务
func (taskService *TaskService) SearchTask(searchTaskCommand *command.SearchTaskCommand) (interface{}, error) {
if err := searchTaskCommand.ValidateCommand(); err != nil {
return nil, application.ThrowError(application.ARG_ERROR, err.Error())
}
transactionContext, err := factory.CreateTransactionContext(nil)
if err != nil {
return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
}
if err := transactionContext.StartTransaction(); err != nil {
return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
}
defer func() {
transactionContext.RollbackTransaction()
}()
if err := transactionContext.CommitTransaction(); err != nil {
return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
}
return nil, nil
}
// 创建新任务
func (taskService *TaskService) CreateTask(createTaskCommand *command.CreateTaskCommand) (interface{}, error) {
if err := createTaskCommand.ValidateCommand(); err != nil {
... ...
... ... @@ -36,7 +36,7 @@ func (repository *TaskRepository) Save(task *domain.Task) (*domain.Task, error)
}
} else {
if _, err := tx.QueryOne(
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)),
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)),
"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=?, create_time=?, release_time=?, participators=?, task_percentage=?, solve_report=?, solve_picture_urls=? 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",
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.Identify()); err != nil {
return task, err
... ... @@ -59,83 +59,33 @@ func (repository *TaskRepository) FindOne(queryOptions map[string]interface{}) (
query := tx.Model(taskModel).Relation("RobInfo").Relation("BidInfo")
if taskId, ok := queryOptions["taskId"]; ok {
query = query.Where("task.id = ?", taskId)
}
if err := query.Limit(1).Select(); err != nil {
if err := query.First(); err != nil {
return nil, err
}
if taskModel.Id == 0 {
return nil, nil
} else {
//robInfo := &domain.RobInfo{
// Receiver: taskModel.RobInfo.Receiver,
// ReceiveTime: taskModel.RobInfo.ReceiveTime,
//}
//bidderInfos := make([]*domain.BidderInfo, len(taskModel.BidInfo.BidderInfos))
//for _, bidderInfo := range taskModel.BidInfo.BidderInfos {
// bidderInfos = append(bidderInfos, &domain.BidderInfo{
// Bidder: bidderInfo.Bidder,
// BidTime: bidderInfo.BidTime,
// })
//}
//bidInfo := &domain.BidInfo{
// BidderInfos: bidderInfos,
// BidStartTime: taskModel.BidInfo.BidStartTime,
// BidEndTime: taskModel.BidInfo.BidEndTime,
// SuccessfulBidder: taskModel.BidInfo.SuccessfulBidder,
// WinBidTime: taskModel.BidInfo.WinBidTime,
//}
var currentStatus domain.TaskStatus
switch taskModel.TaskStatus {
case domain.TASK_STATUS_UNRELEASED:
currentStatus = &domain.UnReleasedStatus{}
break
case domain.TASK_STATUS_UNCLAIMED:
currentStatus = &domain.UnClaimedStatus{}
break
case domain.TASK_STATUS_UNDERWAY:
currentStatus = &domain.UnderwayStatus{}
break
case domain.TASK_STATUS_UNACCEPTANCE:
currentStatus = &domain.UnAcceptanceStatus{}
break
case domain.TASK_STATUS_COMPLETED:
currentStatus = &domain.CompletedStatus{}
break
case domain.TASK_STATUS_CLOSED:
currentStatus = &domain.ClosedStatus{}
break
if taskModel.BidInfo != nil {
var bidderInfoModels []*models.BidderInfo
bidderInfoQuery := tx.Model(&bidderInfoModels)
if err := bidderInfoQuery.Where("bid_info_id = ?", taskModel.BidInfo.Id).Select(); err != nil {
return nil, err
}
return &domain.Task{
TaskId: taskModel.Id,
CompanyId: taskModel.CompanyId,
TaskName: taskModel.TaskName,
TaskType: taskModel.TaskType,
Sponsor: taskModel.Sponsor,
TaskStatus: taskModel.TaskStatus,
ReferenceResource: taskModel.ReferenceResource,
CustomerValue: taskModel.CustomerValue,
TaskNature: taskModel.TaskNature,
SuMoney: taskModel.SuMoney,
AcceptanceStandard: taskModel.AcceptanceStandard,
TaskDescription: taskModel.TaskDescription,
TaskPictureUrls: taskModel.TaskPictureUrls,
IsRewardTake: taskModel.IsRewardTake,
CreateTime: taskModel.CreateTime,
//RobInfo: robInfo,
//BidInfo: bidInfo,
Participators: taskModel.Participators,
TaskPercentage: taskModel.TaskPercentage,
SolveReport: taskModel.SolveReport,
SolvePictureUrls: taskModel.SolvePictureUrls,
CurrentStatus: currentStatus,
}, nil
taskModel.BidInfo.BidderInfos = bidderInfoModels
}
return repository.transformPgModelToDomainModel(taskModel)
}
}
func (repository *TaskRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.Task, error) {
tx := repository.transactionContext.PgTx
var taskModels []*models.Task
var tasks []*domain.Task
tasks := make([]*domain.Task, 0)
query := tx.Model(&taskModels).Relation("RobInfo").Relation("BidInfo")
if companyId, ok := queryOptions["companyId"]; ok {
query = query.Where("task.company_id = ?", companyId)
}
if offset, ok := queryOptions["offset"]; ok {
offset := offset.(int)
if offset > -1 {
... ... @@ -153,13 +103,41 @@ func (repository *TaskRepository) Find(queryOptions map[string]interface{}) (int
query = query.Limit(20)
}
if count, err := query.Order("id DESC").SelectAndCount(); err != nil {
return 0, nil, err
return 0, tasks, err
} else {
for _, taskModel := range taskModels {
robInfo := &domain.RobInfo{
if taskModel.BidInfo != nil {
var bidderInfoModels []*models.BidderInfo
bidderInfoQuery := tx.Model(&bidderInfoModels)
if err := bidderInfoQuery.Where("bid_info_id = ?", taskModel.BidInfo.Id).Select(); err != nil {
return int64(count), tasks, nil
}
taskModel.BidInfo.BidderInfos = bidderInfoModels
}
if take, err := repository.transformPgModelToDomainModel(taskModel); err == nil {
tasks = append(tasks, take)
} else {
return 0, tasks, err
}
}
return int64(count), tasks, nil
}
}
func (repository *TaskRepository) transformPgModelToDomainModel(taskModel *models.Task) (*domain.Task, error) {
var robInfo *domain.RobInfo
if taskModel.RobInfo == nil {
robInfo = nil
} else {
robInfo = &domain.RobInfo{
Receiver: taskModel.RobInfo.Receiver,
ReceiveTime: taskModel.RobInfo.ReceiveTime,
}
}
var bidInfo *domain.BidInfo
if taskModel.BidInfo == nil {
bidInfo = nil
} else {
bidderInfos := make([]*domain.BidderInfo, len(taskModel.BidInfo.BidderInfos))
for _, bidderInfo := range taskModel.BidInfo.BidderInfos {
bidderInfos = append(bidderInfos, &domain.BidderInfo{
... ... @@ -167,13 +145,14 @@ func (repository *TaskRepository) Find(queryOptions map[string]interface{}) (int
BidTime: bidderInfo.BidTime,
})
}
bidInfo := &domain.BidInfo{
bidInfo = &domain.BidInfo{
BidderInfos: bidderInfos,
BidStartTime: taskModel.BidInfo.BidStartTime,
BidEndTime: taskModel.BidInfo.BidEndTime,
SuccessfulBidder: taskModel.BidInfo.SuccessfulBidder,
WinBidTime: taskModel.BidInfo.WinBidTime,
}
}
var currentStatus domain.TaskStatus
switch taskModel.TaskStatus {
case domain.TASK_STATUS_UNRELEASED:
... ... @@ -195,7 +174,7 @@ func (repository *TaskRepository) Find(queryOptions map[string]interface{}) (int
currentStatus = &domain.ClosedStatus{}
break
}
tasks = append(tasks, &domain.Task{
return &domain.Task{
TaskId: taskModel.Id,
CompanyId: taskModel.CompanyId,
TaskName: taskModel.TaskName,
... ... @@ -218,11 +197,9 @@ func (repository *TaskRepository) Find(queryOptions map[string]interface{}) (int
SolveReport: taskModel.SolveReport,
SolvePictureUrls: taskModel.SolvePictureUrls,
CurrentStatus: currentStatus,
})
}
return int64(count), tasks, nil
}
}, nil
}
func NewTaskRepository(transactionContext *pgTransaction.TransactionContext) (*TaskRepository, error) {
if transactionContext == nil {
return nil, fmt.Errorf("transactionContext参数不能为nil")
... ...
... ... @@ -133,6 +133,21 @@ func (controller *TaskController) AcceptanceTask() {
controller.ServeJSON()
}
func (controller *TaskController) SearchTask() {
taskService := service.NewTaskService(nil)
searchTaskCommand := &command.SearchTaskCommand{}
json.Unmarshal(controller.Ctx.Input.GetData("requestBody").([]byte), searchTaskCommand)
data, err := taskService.SearchTask(searchTaskCommand)
var response utils.JsonResponse
if err != nil {
response = utils.ResponseError(controller.Ctx, err)
} else {
response = utils.ResponseData(controller.Ctx, data)
}
controller.Data["json"] = response
controller.ServeJSON()
}
func (controller *TaskController) CreateTask() {
taskService := service.NewTaskService(nil)
createTaskCommand := &command.CreateTaskCommand{}
... ...
... ... @@ -13,6 +13,7 @@ func init() {
beego.Router("/tasks/:taskId/choose-successful-bidder", &controllers.TaskController{}, "Post:ChooseSuccessfulBidder")
beego.Router("/tasks/:taskId/dff", &controllers.TaskController{}, "Post:OffTask")
beego.Router("/tasks/:taskId/acceptance", &controllers.TaskController{}, "Post:AcceptanceTask")
beego.Router("/tasks/search", &controllers.TaskController{}, "Post:SearchTask")
beego.Router("/tasks/", &controllers.TaskController{}, "Post:CreateTask")
beego.Router("/tasks/:taskId", &controllers.TaskController{}, "Put:UpdateTask")
beego.Router("/tasks/:taskId", &controllers.TaskController{}, "Get:GetTask")
... ...
... ... @@ -93,7 +93,7 @@ var _ = Describe("创建新任务", func() {
},
"isRewardTake": true,
"bidStartTime": time.Now(),
"bidEndTime": time.Now().Add( dayAfter),
"bidEndTime": time.Now().Add(dayAfter),
}
httpExpect.POST("/tasks/").
WithJSON(body).
... ...
package task
import (
"gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain"
"net/http"
"time"
"github.com/gavv/httpexpect"
"github.com/go-pg/pg"
... ... @@ -12,11 +14,24 @@ import (
var _ = Describe("返回任务", func() {
BeforeEach(func() {
dayAfter, _ := time.ParseDuration("72h")
_, err := pG.DB.QueryOne(
pg.Scan(),
"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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
1, 101, "testTaskName", 1, "{}", 3, "null", pg.Array([]string{"口感"}), "testTaskNature", 100.00, "testAcceptanceStandard", "testTaskDescription", pg.Array([]string{"url"}), false)
"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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
1, 101, "抢单任务1", 1, &domain.EmployeeInfo{
Uid: 2499036607974745088,
}, 1, "null", pg.Array([]string{"口感", "便利", "品牌"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter))
Expect(err).NotTo(HaveOccurred())
_, err1 := pG.DB.QueryOne(
pg.Scan(),
"INSERT INTO bid_infos (id, task_id) VALUES (?, ?)",
1, 1)
Expect(err1).NotTo(HaveOccurred())
_, err2 := pG.DB.QueryOne(
pg.Scan(),
"INSERT INTO bidder_infos (id, bid_info_id, task_id) VALUES (?, ?, ?)",
1, 1, 1)
Expect(err2).NotTo(HaveOccurred())
})
Describe("根据taskId参数返回任务", func() {
Context("传入有效的taskId", func() {
... ... @@ -36,5 +51,9 @@ var _ = Describe("返回任务", func() {
AfterEach(func() {
_, err := pG.DB.Exec("DELETE FROM tasks WHERE true")
Expect(err).NotTo(HaveOccurred())
_, err1 := pG.DB.Exec("DELETE FROM bid_infos WHERE true")
Expect(err1).NotTo(HaveOccurred())
_, err2 := pG.DB.Exec("DELETE FROM bidder_infos WHERE true")
Expect(err2).NotTo(HaveOccurred())
})
})
... ...
package task
import (
"gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain"
"net/http"
"time"
"github.com/gavv/httpexpect"
"github.com/go-pg/pg"
... ... @@ -11,32 +13,55 @@ import (
)
var _ = Describe("返回任务列表", func() {
var taskId int64
BeforeEach(func() {
dayAfter, _ := time.ParseDuration("72h")
_, err := pG.DB.QueryOne(
pg.Scan(&taskId),
"INSERT INTO tasks (task_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, rob_info, bid_info, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING id",
"testTaskId", "testCompanyId", "testTaskName", "testTaskType", "testSponsor", "testTaskStatus", "testReferenceResource", "testCustomerValue", "testTaskNature", "testSuMoney", "testAcceptanceStandard", "testTaskDescription", "testTaskPictureUrls", "testIsRewardTake", "testRobInfo", "testBidInfo", "testParticipators", "testTaskPercentage", "testSolveReport", "testSolvePictureUrls", "testCreateTime", "testReleaseTime")
pg.Scan(),
"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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
1, 101, "抢单任务1", 1, &domain.EmployeeInfo{
Uid: 2499036607974745088,
}, 1, "null", pg.Array([]string{"口感", "便利", "品牌"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter))
Expect(err).NotTo(HaveOccurred())
_, err1 := pG.DB.QueryOne(
pg.Scan(),
"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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
2, 101, "抢单任务2", 1, &domain.EmployeeInfo{
Uid: 2499036607974745088,
}, 1, "null", pg.Array([]string{"口感", "便利", "品牌"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter))
Expect(err1).NotTo(HaveOccurred())
_, err11 := pG.DB.QueryOne(
pg.Scan(),
"INSERT INTO bid_infos (id, task_id) VALUES (?, ?)",
1, 2)
Expect(err11).NotTo(HaveOccurred())
_, err22 := pG.DB.QueryOne(
pg.Scan(),
"INSERT INTO bidder_infos (id, bid_info_id, task_id) VALUES (?, ?, ?)",
1, 1, 2)
Expect(err22).NotTo(HaveOccurred())
_, err2 := pG.DB.QueryOne(
pg.Scan(),
"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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
3, 102, "抢单任务1", 1, &domain.EmployeeInfo{
Uid: 2499036607974745088,
}, 1, "null", pg.Array([]string{"口感", "便利", "品牌"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter))
Expect(err2).NotTo(HaveOccurred())
_, err3 := pG.DB.QueryOne(
pg.Scan(),
"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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
4, 101, "抢单任务1", 1, &domain.EmployeeInfo{
Uid: 2499036607974745088,
}, 1, "null", pg.Array([]string{"口感", "便利", "品牌"}), "面", 1000.00, "验收标准1", "任务描述1", pg.Array([]string{}), true, "null", "null", "", pg.Array([]string{}), time.Now(), time.Now().Add(dayAfter))
Expect(err3).NotTo(HaveOccurred())
})
Describe("根据参数返回任务列表", func() {
Context("传入有效的参数", func() {
It("返回任务数据列表", func() {
It("返回指定companyId公司的任务数据列表", func() {
httpExpect := httpexpect.New(GinkgoT(), server.URL)
httpExpect.GET("/tasks/").
WithQuery("companyId", "int64").
WithQuery("sponsor", "int64").
WithQuery("taskContentMatch", "string").
WithQuery("taskType", "int").
WithQuery("taskStatus", "int").
WithQuery("customerValue", "string").
WithQuery("taskNature", "string").
WithQuery("isRewardTake", "boolean").
WithQuery("bidTimeMatch", "int").
WithQuery("receiver", "int64").
WithQuery("participator", "int64").
WithQuery("offset", "int").
WithQuery("limit", "int").
WithQuery("companyId", 101).
WithQuery("offset", 0).
WithQuery("limit", 20).
Expect().
Status(http.StatusOK).
JSON().
... ... @@ -44,7 +69,33 @@ var _ = Describe("返回任务列表", func() {
ContainsKey("code").ValueEqual("code", 0).
ContainsKey("msg").ValueEqual("msg", "ok").
ContainsKey("data").Value("data").Object().
ContainsKey("count").ValueEqual("count", 1).
ContainsKey("count").ValueEqual("count", 3).
ContainsKey("tasks").Value("tasks").Array()
})
It("返回指定companyId公司的任务数据列表", func() {
httpExpect := httpexpect.New(GinkgoT(), server.URL)
httpExpect.GET("/tasks/").
WithQuery("companyId", 101).
//WithQuery("sponsor", "int64").
//WithQuery("taskContentMatch", "string").
//WithQuery("taskType", "int").
//WithQuery("taskStatus", "int").
//WithQuery("customerValue", "string").
//WithQuery("taskNature", "string").
//WithQuery("isRewardTake", "boolean").
//WithQuery("bidTimeMatch", "int").
//WithQuery("receiver", "int64").
//WithQuery("participator", "int64").
WithQuery("offset", 0).
WithQuery("limit", 20).
Expect().
Status(http.StatusOK).
JSON().
Object().
ContainsKey("code").ValueEqual("code", 0).
ContainsKey("msg").ValueEqual("msg", "ok").
ContainsKey("data").Value("data").Object().
ContainsKey("count").ValueEqual("count", 3).
ContainsKey("tasks").Value("tasks").Array()
})
})
... ... @@ -52,5 +103,9 @@ var _ = Describe("返回任务列表", func() {
AfterEach(func() {
_, err := pG.DB.Exec("DELETE FROM tasks WHERE true")
Expect(err).NotTo(HaveOccurred())
_, err1 := pG.DB.Exec("DELETE FROM bid_infos WHERE true")
Expect(err1).NotTo(HaveOccurred())
_, err2 := pG.DB.Exec("DELETE FROM bidder_infos WHERE true")
Expect(err2).NotTo(HaveOccurred())
})
})
... ...
package task
import (
"net/http"
"github.com/gavv/httpexpect"
"github.com/go-pg/pg"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
pG "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/pg"
)
var _ = Describe("搜索任务", func() {
var taskId int64
BeforeEach(func() {
_, err := pG.DB.QueryOne(
pg.Scan(&taskId),
"INSERT INTO tasks (task_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, rob_info, bid_info, participators, task_percentage, solve_report, solve_picture_urls, create_time, release_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING id",
"testTaskId", "testCompanyId", "testTaskName", "testTaskType", "testSponsor", "testTaskStatus", "testReferenceResource", "testCustomerValue", "testTaskNature", "testSuMoney", "testAcceptanceStandard", "testTaskDescription", "testTaskPictureUrls", "testIsRewardTake", "testRobInfo", "testBidInfo", "testParticipators", "testTaskPercentage", "testSolveReport", "testSolvePictureUrls", "testCreateTime", "testReleaseTime")
Expect(err).NotTo(HaveOccurred())
})
Describe("搜索任务", func() {
Context("", func() {
It("", func() {
httpExpect := httpexpect.New(GinkgoT(), server.URL)
body := map[string]interface{}{
"companyId": "int64",
"sponsor": "int64",
"taskContentMatch": "string",
"taskType": "int",
"taskStatus": "int",
"customerValue": "string",
"taskNature": "string",
"isRewardTake": "boolean",
"bidTimeMatch": "int",
"receiver": "int64",
"participator": "int64",
"offset": "int",
"limit": "int",
}
httpExpect.POST("/tasks/search").
WithJSON(body).
Expect().
Status(http.StatusOK).
JSON().
Object().
ContainsKey("code").ValueEqual("code", 0).
ContainsKey("msg").ValueEqual("msg", "ok").
ContainsKey("data").Value("data").Object()
})
})
})
AfterEach(func() {
_, err := pG.DB.Exec("DELETE FROM tasks WHERE true")
Expect(err).NotTo(HaveOccurred())
})
})
... ...