Przeglądaj źródła

selection_task_list_detail

Xingyu Xian 2 tygodni temu
rodzic
commit
75a2e30b67

+ 73 - 22
db/sectask.go

@@ -30,7 +30,7 @@ func GetSecTaskById(ctx context.Context, secTaskId string) (*gorm_model.Younggee
 	return &secTaskInfo, nil
 }
 
-func GetSecTaskList(ctx context.Context, selectionId string, taskStatus int, searchValue string, saleNumMin int, saleNumMax int, pageSize, pageNum int64) ([]*http_model.SecTaskInfo, int64, error) {
+func GetSecTaskList(ctx context.Context, selectionId string, taskStatus int, searchValue string, saleNumMin int, saleNumMax int, pageSize, pageNum int64, orderBy []string, orderDesc []int) ([]*http_model.SecTaskInfo, int64, error) {
 	db := GetReadDB(ctx)
 	// var taskStages []int
 	var freeStages []int
@@ -81,6 +81,32 @@ func GetSecTaskList(ctx context.Context, selectionId string, taskStatus int, sea
 		db = db.Model(gorm_model.YounggeeSecTaskInfo{}).Where("selection_id = ? and free_stage in ?", selectionId, freeStages)
 	}
 
+	// 动态排序逻辑
+	if len(orderBy) > 0 && len(orderDesc) > 0 && len(orderBy) == len(orderDesc) {
+		for i := 0; i < len(orderBy); i++ {
+			orderField := orderBy[i]
+			isDesc := orderDesc[i] == 1 // 1=降序,其他值=升序
+
+			switch orderField {
+			case "sale_num":
+				if isDesc {
+					db = db.Order("sale_num desc")
+				} else {
+					db = db.Order("sale_num asc")
+				}
+			case "fans_count":
+				if isDesc {
+					db = db.Order("fans_num desc")
+				} else {
+					db = db.Order("fans_num asc")
+				}
+			}
+		}
+	} else {
+		// 默认排序
+		db = db.Order("sec_task_id desc")
+	}
+
 	// 查询总数
 	var total int64
 	var secTaskInfoList []*gorm_model.YounggeeSecTaskInfo
@@ -88,10 +114,11 @@ func GetSecTaskList(ctx context.Context, selectionId string, taskStatus int, sea
 		logrus.WithContext(ctx).Errorf("[GetSelectionList] error query mysql total, err:%+v", err)
 		return nil, 0, err
 	}
+
 	// 查询该页数据
 	limit := pageSize
 	offset := pageSize * (pageNum - 1) // assert pageNum start with 0
-	err := db.Order("create_date desc").Limit(int(limit)).Offset(int(offset)).Find(&secTaskInfoList).Error
+	err := db.Limit(int(limit)).Offset(int(offset)).Find(&secTaskInfoList).Error
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[GetSelectionList] error query mysql total, err:%+v", err)
 		return nil, 0, err
@@ -127,7 +154,7 @@ func GetSecTaskList(ctx context.Context, selectionId string, taskStatus int, sea
 			return nil, 0, selectionInfoErr
 		}
 		v.EnterpriseId = selectionInfo.EnterpriseID
-		v.SubAccountId = 0
+		v.SubAccountId = selectionInfo.SubAccountId
 	}
 
 	// 按照saleMin和saleMax区间过滤
@@ -163,14 +190,23 @@ func GetSecTaskList(ctx context.Context, selectionId string, taskStatus int, sea
 	return resSecTaskInfoList, total, nil
 }
 
-func PassSecTaskCoop(ctx context.Context, selectionId string, taskIds []string) (bool, error) {
+func PassSecTaskCoop(ctx context.Context, selectionId string, taskIds []string, enterpriseId string, subAccountId int) (bool, error) {
 	db := GetWriteDB(ctx)
 	// 1. 校验
 	var count int64
-	fmt.Println("task_ids: ", taskIds)
+	//fmt.Println("task_ids: ", taskIds)
 	err := db.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ? AND free_stage = 1", taskIds).Count(&count).Error
 
-	fmt.Println("count: ", count)
+	var chooseTalentUserId string
+	var chooseTalentUserType int
+	if subAccountId == 0 {
+		chooseTalentUserType = 1
+		chooseTalentUserId = enterpriseId
+	} else {
+		chooseTalentUserType = 2
+		chooseTalentUserId = conv.MustString(subAccountId)
+	}
+	//fmt.Println("count: ", count)
 	if err != nil {
 		return false, err
 	}
@@ -201,11 +237,13 @@ func PassSecTaskCoop(ctx context.Context, selectionId string, taskIds []string)
 		// 若选品不提供样品,则直接跳转执行阶段,否则进入发货阶段
 		if selection.SampleMode == 3 {
 			updateData := gorm_model.YounggeeSecTaskInfo{
-				TaskStatus:       2,
-				TaskStage:        8,
-				SelectDate:       time.Now(),
-				LogisticsStatus:  3,
-				AssignmentStatus: 1,
+				ChooseTalentUserId:   chooseTalentUserId,
+				ChooseTalentUserType: chooseTalentUserType,
+				TaskStatus:           2,
+				TaskStage:            8,
+				SelectDate:           time.Now(),
+				LogisticsStatus:      3,
+				AssignmentStatus:     1,
 			}
 			err = tx.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ? AND task_stage = 3", taskIds).Updates(updateData).Error
 			if err != nil {
@@ -215,11 +253,13 @@ func PassSecTaskCoop(ctx context.Context, selectionId string, taskIds []string)
 		} else {
 			// 免费领样
 			updateData := gorm_model.YounggeeSecTaskInfo{
-				TaskStatus:      2,
-				TaskStage:       6,
-				SelectDate:      time.Now(),
-				LogisticsStatus: 1,
-				FreeStage:       3,
+				ChooseTalentUserId:   chooseTalentUserId,
+				ChooseTalentUserType: chooseTalentUserType,
+				TaskStatus:           2,
+				TaskStage:            6,
+				SelectDate:           time.Now(),
+				LogisticsStatus:      1,
+				FreeStage:            3,
 			}
 			err = tx.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ? AND free_stage = 1", taskIds).Updates(updateData).Error
 			if err != nil {
@@ -263,8 +303,17 @@ func PassSecTaskCoop(ctx context.Context, selectionId string, taskIds []string)
 	return true, nil
 }
 
-func RefuseSecTaskCoop(ctx context.Context, taskIds []string) (bool, error) {
+func RefuseSecTaskCoop(ctx context.Context, taskIds []string, enterpriseId string, subAccountId int) (bool, error) {
 	db := GetWriteDB(ctx)
+	var chooseTalentUserId string
+	var chooseTalentUserType int
+	if subAccountId == 0 {
+		chooseTalentUserType = 1
+		chooseTalentUserId = enterpriseId
+	} else {
+		chooseTalentUserType = 2
+		chooseTalentUserId = conv.MustString(subAccountId)
+	}
 	// 1. 校验
 	var count int64
 	err := db.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ? AND free_stage = 1", taskIds).Count(&count).Error
@@ -285,11 +334,13 @@ func RefuseSecTaskCoop(ctx context.Context, taskIds []string) (bool, error) {
 	err = db.Transaction(func(tx *gorm.DB) error {
 		// 2. 修改任务状态和任务阶段
 		updateData := gorm_model.YounggeeSecTaskInfo{
-			TaskStatus:     3,
-			TaskStage:      5,
-			CompleteDate:   time.Now(),
-			CompleteStatus: 3,
-			FreeStage:      2,
+			ChooseTalentUserId:   chooseTalentUserId,
+			ChooseTalentUserType: chooseTalentUserType,
+			TaskStatus:           3,
+			TaskStage:            5,
+			CompleteDate:         time.Now(),
+			CompleteStatus:       3,
+			FreeStage:            2,
 		}
 		err = tx.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ? AND free_stage = 1", taskIds).Updates(updateData).Error
 		if err != nil {

+ 1 - 1
model/gorm_model/selection_task_info.go

@@ -52,7 +52,7 @@ type YounggeeSecTaskInfo struct {
 	CreateLogisticUserType int        `gorm:"column:create_logistic_user_type"` // 创建快递单类型
 	CreateLogisticUserId   string     `gorm:"column:create_logistic_user_id"`   // 创建快递单ID
 	ChooseTalentUserId     string     `gorm:"column:choose_talent_user_id"`     // 同意/拒绝达人操作人ID
-	ChooseTalentUserType   int        `gorm:"column:choose_talent_user_type"`   // 同意/拒绝达人操作人类型,1商家,2子账号
+	ChooseTalentUserType   int        `gorm:"column:choose_talent_user_type"`   // 同意/拒绝达人操作人类型,1商家,2子账号,3管理后台
 }
 
 func (m *YounggeeSecTaskInfo) TableName() string {

+ 1 - 1
model/http_model/GetSecTaskList.go

@@ -60,7 +60,7 @@ type SecTaskInfo struct {
 	ProductId              int       `json:"product_id"`                // 商品ID
 	FreeStage              int       `json:"free_stage"`                // 免费领样阶段,1-5分别代表已申请、已拒绝、待发货、已发货、已收货
 	RewardStage            int       `json:"reward_stage"`              // 悬赏阶段,1-2分别代表待结算(管理后台设置)、已结算(小程序端设置)
-	CreateLogisticUserId   string    `json:"create_logistic_user_id"`   // 创建快递单ID
+	CreateLogisticUserId   string    `json:"create_logistic_user_id"`   // 创建快递单用户ID
 	CreateLogisticUserType int       `json:"create_logistic_user_type"` // 创建快递单类型
 	CreateLogisticUserName string    `json:"create_logistic_user_name"` // 创建快递单用户名称
 	ChooseTalentUserId     string    `json:"choose_talent_user_id"`     // 同意/拒绝达人操作人ID

+ 4 - 2
model/http_model/PassSecTaskCoop.go

@@ -1,8 +1,10 @@
 package http_model
 
 type PassSecTaskCoopRequest struct {
-	SelectionId string   `json:"selection_id"`
-	TaskIds     []string `json:"task_ids"`
+	SelectionId  string   `json:"selection_id"`
+	TaskIds      []string `json:"task_ids"`
+	EnterpriseId string   `json:"enterprise_id"`
+	SubAccountId int      `json:"sub_account_id"`
 }
 
 type PassSecTaskCoopData struct {

+ 3 - 1
model/http_model/RefuseSecTaskCoop.go

@@ -1,7 +1,9 @@
 package http_model
 
 type RefuseSecTaskCoopRequest struct {
-	TaskIds []string `json:"task_ids"`
+	TaskIds      []string `json:"task_ids"`
+	EnterpriseId string   `json:"enterprise_id"`  // 商家ID
+	SubAccountId int      `json:"sub_account_id"` // 子账号ID
 }
 
 type RefuseSecTaskCoopData struct {

+ 3 - 3
service/sectask_service/sectask.go

@@ -25,7 +25,7 @@ func (*selectionTask) GetList(ctx context.Context, request http_model.GetSecTask
 	// younggee_assignment_info:数据截图、作业链接
 	// selection_info: 返现金额、悬赏金额
 	// 1. 根据选品任务阶段、账号昵称or任务id查询任务基本信息(包括任务id、账号昵称、粉丝数、主页截图、主页链接、申请时间)
-	secTaskList, total, err := db.GetSecTaskList(ctx, request.SelectionId, request.SecTaskStatus, request.SearchValue, request.SaleNumMin, request.SaleNumMax, request.PageSize, request.PageNum)
+	secTaskList, total, err := db.GetSecTaskList(ctx, request.SelectionId, request.SecTaskStatus, request.SearchValue, request.SaleNumMin, request.SaleNumMax, request.PageSize, request.PageNum, request.OrderBy, request.OrderDesc)
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[sectask_service service] call GetSecTaskList error,err:%+v", err)
 		return nil, err
@@ -70,7 +70,7 @@ func (*selectionTask) GetList(ctx context.Context, request http_model.GetSecTask
 }
 
 func (*selectionTask) PassCoop(ctx context.Context, request http_model.PassSecTaskCoopRequest) (*http_model.PassSecTaskCoopData, error) {
-	_, err := db.PassSecTaskCoop(ctx, request.SelectionId, request.TaskIds)
+	_, err := db.PassSecTaskCoop(ctx, request.SelectionId, request.TaskIds, request.EnterpriseId, request.SubAccountId)
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[sectask_service service] call PassCoop error,err:%+v", err)
 		return nil, err
@@ -83,7 +83,7 @@ func (*selectionTask) PassCoop(ctx context.Context, request http_model.PassSecTa
 
 func (*selectionTask) RefuseCoop(ctx context.Context, request http_model.RefuseSecTaskCoopRequest) (*http_model.RefuseSecTaskCoopData, error) {
 
-	_, err := db.RefuseSecTaskCoop(ctx, request.TaskIds)
+	_, err := db.RefuseSecTaskCoop(ctx, request.TaskIds, request.EnterpriseId, request.SubAccountId)
 	if err != nil {
 		logrus.WithContext(ctx).Errorf("[sectask_service service] call RefuseCoop error,err:%+v", err)
 		return nil, err