Browse Source

本地生活列表页

Ethan 5 months ago
parent
commit
0737410c5a

+ 40 - 1
app/controller/task_controller.go

@@ -754,7 +754,7 @@ func (t TaskController) LocalLifeToReview(c *gin.Context) {
 	localId, err := service.LocalLifeService{}.LocalLifeToReview(data)
 	if err != nil {
 		logrus.Errorf("[ProjectToReview] call ProjectToReview err:%+v\n", err)
-		returnError(c, 40000, "error")
+		returnError(c, 40000, err.Error())
 		return
 	}
 	resultMap := make(map[string]string)
@@ -780,3 +780,42 @@ func (t TaskController) LogisticsTalentList(c *gin.Context) {
 
 	returnSuccess(c, 20000, res)
 }
+
+// 种草任务列表
+func (t TaskController) LocalLifeTaskList(c *gin.Context) {
+	param := &vo.LocalSearchParam{}
+	err := c.BindJSON(param)
+	if err != nil {
+		logrus.Errorf("Request bind err:%+v\n", err)
+		returnError(c, 40000, "参数错误")
+		return
+	}
+	res, err := service.LocalLifeService{}.GetLocalLifeTaskList(param)
+	if err != nil {
+		logrus.Errorf("[LocalLifeTaskList] call Show err:%+v\n", err)
+		returnError(c, 40000, err.Error())
+		return
+	}
+
+	returnSuccess(c, 20000, res)
+}
+
+// 删除种草任务
+func (t TaskController) LocalLifeDel(c *gin.Context) {
+	param := &vo.LocalSearchParam{}
+	err := c.BindJSON(param)
+	if err != nil {
+		logrus.Errorf("Request bind err:%+v\n", err)
+		returnError(c, 40000, "参数错误")
+		return
+	}
+	localId, err := service.LocalLifeService{}.DeleteLocalLife(param.LocalId)
+	if err != nil {
+		logrus.Errorf("[LocalLifeDel] call Show err:%+v\n", err)
+		returnError(c, 40000, err.Error())
+		return
+	}
+	resultMap := make(map[string]string)
+	resultMap["localId"] = *localId
+	returnSuccess(c, 20000, resultMap)
+}

+ 78 - 0
app/dao/local_life_dao.go

@@ -5,6 +5,7 @@ import (
 	"gorm.io/gorm"
 	"time"
 	"youngee_b_api/app/entity"
+	"youngee_b_api/app/vo"
 )
 
 type LocalLifeDao struct{}
@@ -73,3 +74,80 @@ func (d LocalLifeDao) UpdateInvoiceStatus(localIDs []string) error {
 	}
 	return nil
 }
+
+// 获取本地生活任务列表
+func (d LocalLifeDao) GetLocalPreviews(param *vo.LocalSearchParam) ([]vo.ReLocalTaskPreview, int64, error) {
+	var reLocalTaskPreviews []vo.ReLocalTaskPreview
+	var localLifes []entity.LocalLifeInfo
+	var total int64
+	query := Db.Model(&entity.LocalLifeInfo{})
+	// 动态添加查询条件
+	if param.SubAccountId == 0 {
+		if param.EnterpriseId == "" {
+			return reLocalTaskPreviews, 0, errors.New("enterpriseId is empty")
+		}
+		query = query.Where("enterprise_id = ?", param.EnterpriseId)
+	} else {
+		query = query.Where("sub_account_id = ?", param.SubAccountId)
+	}
+	if param.LocalType != 0 {
+		query = query.Where("local_type = ?", param.LocalType)
+	}
+	if param.LocalPlatform != 0 {
+		query = query.Where("local_platform = ?", param.LocalPlatform)
+	}
+	if param.LocalStatus != 0 {
+		query = query.Where("task_status = ?", param.LocalStatus)
+	}
+	if param.LocalForm != 0 {
+		query = query.Where("task_form = ?", param.LocalForm)
+	}
+	if param.ContentType != 0 {
+		query = query.Where("content_type = ?", param.ContentType)
+	}
+	if param.LocalId != "" {
+		query = query.Where("local_id = ?", param.LocalId)
+	}
+	if param.LocalName != "" {
+		query = query.Where("local_name LIKE ?", "%"+param.LocalName+"%")
+	}
+	query.Count(&total)
+	query = query.Select("enterprise_id, sub_account_id, local_id, local_platform, task_status, estimated_cost, task_form, content_type, need_review, need_quality, need_calculate, store_id, team_buying_id, tools")
+	offset := (param.Page - 1) * param.PageSize
+	if err := query.Order("created_at asc").Offset(offset).Limit(param.PageSize).Find(&localLifes).Error; err != nil {
+		return nil, 0, err
+	}
+	for _, localLife := range localLifes {
+		reLocalTaskPreview := vo.ReLocalTaskPreview{
+			EnterpriseId:  localLife.EnterpriseID,
+			SubAccountId:  localLife.SubAccountID,
+			LocalId:       localLife.LocalID,
+			LocalPlatform: localLife.LocalPlatform,
+			LocalStatus:   localLife.TaskStatus,
+			EstimatedCost: localLife.EstimatedCost,
+			LocalForm:     localLife.TaskForm,
+			ContentType:   localLife.ContentType,
+			NeedReview:    localLife.NeedReview,
+			NeedQuality:   localLife.NeedQuality,
+			NeedCalculate: localLife.NeedCalculate,
+			StoreId:       localLife.StoreID,
+			TeamBuyingId:  localLife.TeamBuyingId,
+			Tools:         localLife.Tools,
+		}
+		reLocalTaskPreviews = append(reLocalTaskPreviews, reLocalTaskPreview)
+	}
+
+	return reLocalTaskPreviews, total, nil
+}
+
+// 删除本地生活任务
+func (d LocalLifeDao) DeleteLocalLife(localId string) (*string, error) {
+	if localId == "" {
+		return &localId, nil
+	}
+	err := Db.Where("local_id = ?", localId).Delete(&entity.LocalLifeInfo{}).Error
+	if err != nil {
+		return nil, err
+	}
+	return &localId, nil
+}

+ 2 - 2
app/dao/project_task_info_dao.go

@@ -22,7 +22,7 @@ func (d ProjectTaskInfoDao) CountByTaskStage(projectId string, taskStage int64)
 }
 
 // 获取指定任务阶段的种草子任务
-func (d ProjectTaskInfoDao) GetListByTaskStage(projectId string, taskStage int64, page int, pageSize int) ([]*entity.ProjectTaskInfo, int64, error) {
+func (d ProjectTaskInfoDao) GetListByTaskStage(projectId string, taskStage int64, time *string, page int, pageSize int) ([]*entity.ProjectTaskInfo, int64, error) {
 	var taskInfos []*entity.ProjectTaskInfo
 	var total int64
 	query := Db.Model(&entity.ProjectTaskInfo{}).Where("project_id = ? AND task_stage = ?", projectId, taskStage)
@@ -33,7 +33,7 @@ func (d ProjectTaskInfoDao) GetListByTaskStage(projectId string, taskStage int64
 	if taskStage == 4 {
 		err = query.Order("create_date desc").Offset(offset).Limit(pageSize).Find(&taskInfos).Error
 	} else if taskStage == 5 {
-		err = query.Order("delivery_date desc").Offset(offset).Limit(pageSize).Find(&taskInfos).Error
+		err = query.Where("delivery_date >= ?", *time).Order("delivery_date desc").Offset(offset).Limit(pageSize).Find(&taskInfos).Error
 	} else if taskStage == 6 {
 		err = query.Order("signed_time desc").Offset(offset).Limit(pageSize).Find(&taskInfos).Error
 	}

+ 3 - 0
app/entity/local_life_info.go

@@ -43,6 +43,9 @@ type LocalLifeInfo struct {
 	SettlementAmount    float64   `gorm:"column:settlement_amount"`                         // 结算金额
 	TotalRecruitNum     int64     `gorm:"column:total_recruit_num"`                         // 此任务各策略招募人数总和
 	Tools               string    `gorm:"column:tools"`                                     // 工具选择,1邀约招募 2结算账单 3样品物流 4审稿工具 5作品审查 6数据巡检(,分隔)
+	NeedReview          int64     `gorm:"column:need_review"`                               // 待审稿
+	NeedQuality         int64     `gorm:"column:need_quality"`                              // 待质检
+	NeedCalculate       int64     `gorm:"column:need_calculate"`                            // 待结算
 	InvoiceStatus       int64     `gorm:"column:invoice_status;default:0;NOT NULL"`         // 开票状态(1开票中 2已开票)
 }
 

+ 59 - 0
app/service/local_life_service.go

@@ -505,3 +505,62 @@ func (s LocalLifeService) LocalLifeToReview(localUpdateParam *vo.LocalUpdatePara
 	}
 	return &localId, nil
 }
+
+// 种草任务列表
+func (s LocalLifeService) GetLocalLifeTaskList(param *vo.LocalSearchParam) (vo.ResultVO, error) {
+	if param.Page == 0 {
+		param.Page = 1
+	}
+	if param.PageSize == 0 {
+		param.PageSize = 10
+	}
+	var result vo.ResultVO
+	reLocalTaskPreviews, total, err := (&dao.LocalLifeDao{}).GetLocalPreviews(param)
+	if err != nil {
+		return result, err
+	}
+	for i := range reLocalTaskPreviews {
+		var creatorName string
+		var storeName string
+		var storeLocation string
+		var mainImage string
+		if reLocalTaskPreviews[i].SubAccountId == 0 {
+			enterprise, err := dao.EnterpriseDao{}.GetEnterprise(reLocalTaskPreviews[i].EnterpriseId)
+			if err == nil && enterprise != nil {
+				creatorName = enterprise.BusinessName
+			}
+		} else {
+			subAccount, err := dao.SubAccountDao{}.GetSubAccount(reLocalTaskPreviews[i].SubAccountId)
+			if err == nil && subAccount != nil {
+				creatorName = subAccount.SubAccountName
+			}
+		}
+		store, err := dao.StoreDao{}.GetStoreByID(reLocalTaskPreviews[i].StoreId)
+		if err == nil && store != nil {
+			storeName = store.StoreName
+			storeLocation = store.StoreLocation
+		}
+		mainImage, err = dao.ProductPhotoDAO{}.GetMainPhotoByStoreID(reLocalTaskPreviews[i].StoreId)
+		reLocalTaskPreviews[i].CreatorName = creatorName
+		reLocalTaskPreviews[i].StoreName = storeName
+		reLocalTaskPreviews[i].StoreLocation = storeLocation
+		reLocalTaskPreviews[i].MainImage = mainImage
+	}
+	result = vo.ResultVO{
+		Page:     param.Page,
+		PageSize: param.PageSize,
+		Total:    total,
+		Data:     reLocalTaskPreviews,
+	}
+	return result, nil
+}
+
+// 删除种草任务
+func (s LocalLifeService) DeleteLocalLife(localId string) (*string, error) {
+	res, err := dao.LocalLifeDao{}.DeleteLocalLife(localId)
+	if err != nil {
+		logrus.Errorf("[localLifeDB service] call DeleteLocalLife error,err:%+v", err)
+		return res, err
+	}
+	return res, nil
+}

+ 3 - 3
app/service/task_info_service.go

@@ -27,11 +27,11 @@ func (t TaskInfoService) LogisticsTalentList(param *vo.LogisticsTalentParam) (*v
 	var err error
 	projectId := param.ProjectId
 	if param.Status == 1 { // 待发货
-		projectTaskInfos, total, err = dao.ProjectTaskInfoDao{}.GetListByTaskStage(projectId, 4, param.Page, param.PageSize)
+		projectTaskInfos, total, err = dao.ProjectTaskInfoDao{}.GetListByTaskStage(projectId, 4, nil, param.Page, param.PageSize)
 	} else if param.Status == 2 { // 待签收
-		projectTaskInfos, total, err = dao.ProjectTaskInfoDao{}.GetListByTaskStage(projectId, 5, param.Page, param.PageSize)
+		projectTaskInfos, total, err = dao.ProjectTaskInfoDao{}.GetListByTaskStage(projectId, 5, &param.DeliveryTime, param.Page, param.PageSize)
 	} else if param.Status == 3 { // 已签收
-		projectTaskInfos, total, err = dao.ProjectTaskInfoDao{}.GetListByTaskStage(projectId, 6, param.Page, param.PageSize)
+		projectTaskInfos, total, err = dao.ProjectTaskInfoDao{}.GetListByTaskStage(projectId, 6, nil, param.Page, param.PageSize)
 	}
 	if err != nil {
 		return nil, err

+ 17 - 0
app/vo/local_search_param.go

@@ -0,0 +1,17 @@
+package vo
+
+type LocalSearchParam struct {
+	EnterpriseId  string `json:"enterprise_id"`
+	SubAccountId  int64  `json:"sub_account_id"`
+	Page          int    `json:"page"`
+	PageSize      int    `json:"page_size"`
+	LocalType     int64  `json:"local_type"` // 项目类型,1全流程项目,2专项项目
+	LocalPlatform int64  `json:"local_platform"`
+	LocalStatus   int64  `json:"local_status"` // 任务状态,1-10代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、失效、执行中、已结案
+	LocalForm     int64  `json:"local_form"`   // 任务形式,1-2分别代表线下探店,素材分发
+	ContentType   int64  `json:"content_type"` // 内容形式, 1图文 2视频
+
+	LocalId   string `json:"local_id"`   // 任务ID
+	LocalName string `json:"local_name"` // 任务标题
+	//CreatorName string `json:"creator_name"` // 创建者
+}

+ 1 - 1
app/vo/local_update_param.go

@@ -16,7 +16,7 @@ type LocalUpdateParam struct {
 	RecruitDdl       string                       `json:"recruit_ddl"`       // 招募截止时间
 	RecruitStrategys []CreateLocalRecruitStrategy `json:"recruit_strategys"` // 招募策略
 
-	TaskForm      int64                `json:"task_form"`    // 项目形式,1-3分别代表商品寄拍、素材分发、虚拟产品测评
+	TaskForm      int64                `json:"task_form"`    // 项目形式,1-2分别代表线下探店,素材分发
 	ContentType   int64                `json:"content_type"` // 内容形式,1代表图文,2代表视频
 	TaskDetail    string               `json:"task_detail"`  // 项目详情
 	Tools         string               `json:"tools"`        // 工具选择 1邀约招募 2结算账单 3样品物流 4审稿工具 5作品审查 6数据巡检(,分隔)

+ 3 - 2
app/vo/logistics_talent_param.go

@@ -1,8 +1,9 @@
 package vo
 
 type LogisticsTalentParam struct {
-	ProjectId string `json:"project_id"`
-	Status    int64  `json:"status"` // 1待发货 2待签收 3已签收
+	ProjectId    string `json:"project_id"`
+	Status       int64  `json:"status"`        // 1待发货 2待签收 3已签收
+	DeliveryTime string `json:"delivery_time"` // 发货时间
 	//Nickname  string `json:"nickname"` // 达人昵称
 	Page     int `json:"page"`
 	PageSize int `json:"page_size"`

+ 25 - 0
app/vo/re_local_task_preview.go

@@ -0,0 +1,25 @@
+package vo
+
+type ReLocalTaskPreview struct {
+	MainImage     string `json:"mainImage"`
+	StoreName     string `json:"storeName"`
+	StoreLocation string `json:"storeLocation"`
+	StoreId       int64  `json:"storeId"`
+	TeamBuyingId  int64  `json:"teamBuyingId"`
+
+	EnterpriseId  string  `json:"enterpriseId"`
+	SubAccountId  int64   `json:"subAccountId"`
+	LocalId       string  `json:"localId"`
+	LocalPlatform int64   `json:"localPlatform"`
+	LocalStatus   int64   `json:"localStatus"`
+	EstimatedCost float64 `json:"estimatedCost"`
+	LocalForm     int64   `json:"localForm"`
+	ContentType   int64   `json:"contentType"`
+	NeedReview    int64   `json:"needReview"`
+	NeedQuality   int64   `json:"needQuality"`
+	NeedCalculate int64   `json:"needCalculate"`
+	CreatorName   string  `json:"creatorName"`
+	LocalType     int64   `json:"localType"`
+	CreatedAt     string  `json:"createdAt"`
+	Tools         string  `json:"tools"`
+}

+ 2 - 0
route/init.go

@@ -224,6 +224,8 @@ func InitRoute(r *gin.Engine) {
 		task.POST("/localLife/target/update", controller.TaskController{}.UpdateLocalLifeTarget) // 更新定向本地生活任务
 		task.POST("/localLife/detail", controller.TaskController{}.GetLocalLifeDetail)           // 本地生活任务预览
 		task.POST("/localLife/toReview", controller.TaskController{}.LocalLifeToReview)          // 本地生活提交审核
+		task.POST("/localLife/task/list", controller.TaskController{}.LocalLifeTaskList)         // 本地生活列表
+		task.POST("/localLife/del", controller.TaskController{}.LocalLifeDel)                    // 删除本地生活
 
 		// 草稿箱
 		task.POST("/draft/selection/list", controller.TaskController{}.GetSelectionDraftList) // 草稿箱——电商带货列表