13 Angajamente 7464647657 ... d6c8419dec

Autor SHA1 Permisiunea de a trimite mesaje. Dacă este dezactivată, utilizatorul nu va putea trimite nici un fel de mesaj Data
  Ethan d6c8419dec fix_充值&开票 3 săptămâni în urmă
  Ethan a4b9edd41b trial 3 săptămâni în urmă
  Ethan f9c2fafbee fix 3 săptămâni în urmă
  Ethan 0c89f8ee2c total_recruit_num 4 săptămâni în urmă
  Ethan 5b85dc67f1 定向任务去除招募状态 4 săptămâni în urmă
  Ethan 1e382cabb3 种草工具选择 4 săptămâni în urmă
  lin-jim-leon 6c7ed45a77 [20250507]审核log日志 1 lună în urmă
  Xingyu Xian fe9ac8d17c kuaishou_product_open_id 1 lună în urmă
  Ethan b41034627d 任务小程序分享码 1 lună în urmă
  Xingyu Xian abd654c246 qr_code 1 lună în urmă
  lin-jim-leon 81b5a505ce [20250421]任务同意数据结算 1 lună în urmă
  lin-jim-leon 412b92c16b Merge remote-tracking branch 'origin/develop' into develop 1 lună în urmă
  lin-jim-leon be22ff182f [20250420]通过列表 1 lună în urmă

+ 19 - 1
app/controller/finance_controller.go

@@ -174,11 +174,29 @@ func (f FinanceController) RechargeInfoCount(c *gin.Context) {
 	returnSuccess(c, 20000, result)
 }
 
+// 获取企业公司名、税号、注册地址
+func (f FinanceController) GetEnterpriseMessage(c *gin.Context) {
+	param := &vo.InvoiceDefaultParam{}
+	err := c.BindJSON(param)
+	if err != nil {
+		logrus.Errorf("Request bind err:%+v\n", err)
+		returnError(c, 40000, "Parameter Error: "+err.Error())
+		return
+	}
+	reInvoiceInfo, err := service.InvoiceService{}.GetEnterpriseMessage(param)
+	if err != nil {
+		logrus.Errorf("[GetEnterpriseMessage] call Show err:%+v\n", err)
+		returnError(c, 40000, err.Error())
+		return
+	}
+	returnSuccess(c, 20000, reInvoiceInfo)
+}
+
 // 设置默认开票抬头
 func (f FinanceController) UpdateInvoiceDefault(c *gin.Context) {
 	param := &vo.InvoiceDefaultParam{}
 	err := c.BindJSON(param)
-	if err != nil {
+	if err != nil || param.EnterpriseId == "" {
 		logrus.Errorf("Request bind err:%+v\n", err)
 		returnError(c, 40000, "Parameter Error: "+err.Error())
 		return

+ 4 - 5
app/dao/invoice_info_dao.go

@@ -19,18 +19,17 @@ func (d InvoiceInfoDao) Select(invoiceId int64) (*entity.InvoiceInfo, error) {
 	return &invoiceInfo, nil
 }
 
-func (d InvoiceInfoDao) Delete(invoiceId int64) error {
-	var invoiceInfo entity.InvoiceInfo
-	err := Db.Debug().Model(&entity.InvoiceInfo{}).Where("invoice_id = ?", invoiceId).Delete(&invoiceInfo).Error
+func (d InvoiceInfoDao) Delete(invoiceInfo entity.InvoiceInfo) error {
+	err := Db.Where(invoiceInfo).Delete(&entity.InvoiceInfo{}).Error
 	if err != nil {
 		return err
 	}
 	return nil
 }
 
-func (d InvoiceInfoDao) SelectDefault(enterpriseId string, invoiceType int64, isDefault int64) (*entity.InvoiceInfo, error) {
+func (d InvoiceInfoDao) SelectDefault(enterpriseId string, invoiceType int64) (*entity.InvoiceInfo, error) {
 	var invoiceInfo entity.InvoiceInfo
-	err := Db.Debug().Model(&entity.InvoiceInfo{}).Where("enterprise_id = ? AND invoice_type = ? AND is_default = ?", enterpriseId, invoiceType, isDefault).Find(&invoiceInfo).Error
+	err := Db.Debug().Model(&entity.InvoiceInfo{}).Where("enterprise_id = ? AND invoice_type = ?", enterpriseId, invoiceType).Find(&invoiceInfo).Error
 	if err != nil {
 		if err == gorm.ErrRecordNotFound {
 			return &invoiceInfo, nil

+ 2 - 2
app/dao/recharge_record_dao.go

@@ -9,7 +9,7 @@ import (
 type RechargeRecordDao struct{}
 
 func (d RechargeRecordDao) Insert(rechargeRecord *entity.RechargeRecord) error {
-	err := Db.Debug().Model(entity.RechargeRecord{}).Omit("confirm_at", "refuse_at").Create(rechargeRecord).Error
+	err := Db.Debug().Model(entity.RechargeRecord{}).Create(rechargeRecord).Error
 	if err != nil {
 		return err
 	}
@@ -62,7 +62,7 @@ func (d RechargeRecordDao) RechargeStatusCount(enterpriseId string, rechargeStat
 }
 
 // 更新充值状态
-func (d RechargeRecordDao) UpdateRechargeStatus(rechargeId string, status int64, t time.Time) error {
+func (d RechargeRecordDao) UpdateRechargeStatus(rechargeId string, status int64, t *time.Time) error {
 	rechargeRecord := entity.RechargeRecord{
 		Status: status,
 	}

+ 2 - 0
app/entity/enterprise.go

@@ -23,6 +23,8 @@ type Enterprise struct {
 	UpdatedAt        time.Time `gorm:"column:updated_at"`        // 更新时间
 	AuthStatus       int64     `gorm:"column:auth_status"`
 	Phone            string    `gorm:"column:phone"`
+	BusinessLicense  string    `gorm:"column:business_license"` // 营业执照url
+	Usci             string    `gorm:"column:usci"`             // 统一社会信用代码
 }
 
 func (m *Enterprise) TableName() string {

+ 11 - 12
app/entity/invoice_info.go

@@ -5,18 +5,17 @@ import "time"
 // Code generated by sql2gorm. DO NOT EDIT.
 
 type InvoiceInfo struct {
-	InvoiceID         int64     `gorm:"column:invoice_id;primary_key;AUTO_INCREMENT"` // 发票信息id
-	EnterpriseID      string    `gorm:"column:enterprise_id;NOT NULL"`                // 企业id
-	InvoiceType       int64     `gorm:"column:invoice_type;NOT NULL"`                 // 发票类型
-	HeadType          string    `gorm:"column:head_type;NOT NULL"`                    // 抬头类型
-	InvoiceHeader     string    `gorm:"column:invoice_header;NOT NULL"`               // 发票抬头
-	TaxCode           string    `gorm:"column:tax_code;NOT NULL"`                     // 税务登记证号/统一社会信用代码
-	RegisteredAddress string    `gorm:"column:registered_address;NOT NULL"`           // 企业注册地址
-	RegisteredPhone   string    `gorm:"column:registered_phone;NOT NULL"`             // 企业注册电话
-	Bank              string    `gorm:"column:bank;NOT NULL"`                         // 开户银行
-	BankCardNumber    string    `gorm:"column:bank_card_number;NOT NULL"`             // 开户银行账号
-	IsDefault         int64     `gorm:"column:is_default;NOT NULL"`                   // 1默认抬头
-	UpdateAt          time.Time `gorm:"column:update_at;NOT NULL"`                    // 更新时间
+	InvoiceID         int64      `gorm:"column:invoice_id;primary_key;AUTO_INCREMENT"` // 发票信息id
+	EnterpriseID      string     `gorm:"column:enterprise_id;NOT NULL"`                // 企业id
+	InvoiceType       int64      `gorm:"column:invoice_type;NOT NULL"`                 // 发票类型
+	HeadType          string     `gorm:"column:head_type;NOT NULL"`                    // 抬头类型(企业/个人)
+	InvoiceHeader     string     `gorm:"column:invoice_header"`                        // 发票抬头
+	TaxCode           string     `gorm:"column:tax_code"`                              // 税务登记证号/统一社会信用代码
+	RegisteredAddress string     `gorm:"column:registered_address"`                    // 企业注册地址
+	RegisteredPhone   string     `gorm:"column:registered_phone;NOT NULL"`             // 企业注册电话
+	Bank              string     `gorm:"column:bank;NOT NULL"`                         // 开户银行
+	BankCardNumber    string     `gorm:"column:bank_card_number;NOT NULL"`             // 开户银行账号
+	UpdateAt          *time.Time `gorm:"column:update_at"`                             // 更新时间
 }
 
 func (m *InvoiceInfo) TableName() string {

+ 1 - 1
app/entity/project.go

@@ -9,7 +9,7 @@ type Project struct {
 	ID                int64     `gorm:"column:id;primary_key;AUTO_INCREMENT"`  // 种草主键ID
 	ProjectId         string    `gorm:"column:project_id"`                     // 项目id 项目ID生成规则:年(2位)+一年中的第几天(3位)+5位数随机数,雪花算法也可,生成10位订单号
 	ProjectName       string    `gorm:"column:project_name"`                   // 项目名称
-	ProjectStatus     int64     `gorm:"column:project_status"`                 // 项目状态,1-10分别代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、失效、执行中、已结案
+	ProjectStatus     int64     `gorm:"column:project_status"`                 // 项目状态,1-10分别代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、执行中、失效、已结案
 	ProjectType       int64     `gorm:"column:project_type"`                   // 项目类型,1代表全流程项目,2代表专项项目
 	ProjectPlatform   int64     `gorm:"column:project_platform"`               // 项目平台,1-7分别代表红book、抖音、微博、快手、b站、大众点评、知乎
 	ProjectForm       int64     `gorm:"column:project_form"`                   // 项目形式,1-4分别代表实体商品寄拍、虚拟产品测评、线下探店打卡、素材微原创

+ 14 - 14
app/entity/recharge_record.go

@@ -3,20 +3,20 @@ package entity
 import "time"
 
 type RechargeRecord struct {
-	ID                 int64     `gorm:"column:id;primary_key;column:id"`
-	RechargeID         string    `gorm:"column:recharge_id;unique_key"` // 充值订单ID
-	EnterpriseID       string    `gorm:"column:enterprise_id;NOT NULL"` // 企业id
-	SubAccountId       int64     `gorm:"column:sub_account_id;NOT NULL"`
-	RechargeAmount     float64   `gorm:"column:recharge_amount;NOT NULL"`      // 充值金额
-	TransferVoucherUrl string    `gorm:"column:transfer_voucher_url;NOT NULL"` // 转账凭证图片链接
-	Phone              string    `gorm:"column:phone;NOT NULL"`                // 联系方式
-	RechargeMethod     int64     `gorm:"column:recharge_method;NOT NULL"`      // 充值方式:1为对公转账,2为支付宝在线支付,3为微信支付
-	Status             int64     `gorm:"column:status;NOT NULL"`               // 充值状态:0为充值待确认,1为充值已确认
-	InvoiceStatus      int       `gorm:"column:invoice_status;NOT NULL"`       // 开票状态:1为可开票,2为待开票,3为已开票
-	CommitAt           time.Time `gorm:"column:commit_at;NOT NULL"`            // 充值申请提交时间
-	ConfirmAt          time.Time `gorm:"column:confirm_at"`                    // 充值确认时间
-	FailReason         string    `gorm:"column:fail_reason;NOT NULL"`          // 失败原因
-	RefuseAt           time.Time `gorm:"column:refuse_at;NOT NULL"`            // 充值失败时间
+	ID                 int64      `gorm:"column:id;primary_key;column:id"`
+	RechargeID         string     `gorm:"column:recharge_id;unique_key"` // 充值订单ID
+	EnterpriseID       string     `gorm:"column:enterprise_id;NOT NULL"` // 企业id
+	SubAccountId       int64      `gorm:"column:sub_account_id;NOT NULL"`
+	RechargeAmount     float64    `gorm:"column:recharge_amount;NOT NULL"`      // 充值金额
+	TransferVoucherUrl string     `gorm:"column:transfer_voucher_url;NOT NULL"` // 转账凭证图片链接
+	Phone              string     `gorm:"column:phone;NOT NULL"`                // 联系方式
+	RechargeMethod     int64      `gorm:"column:recharge_method;NOT NULL"`      // 充值方式:1为对公转账,2为支付宝在线支付,3为微信支付
+	Status             int64      `gorm:"column:status;NOT NULL"`               // 充值状态:0为充值待确认,1为充值已确认
+	InvoiceStatus      int        `gorm:"column:invoice_status;NOT NULL"`       // 开票状态:1为可开票,2为待开票,3为已开票
+	CommitAt           *time.Time `gorm:"column:commit_at;NOT NULL"`            // 充值申请提交时间
+	ConfirmAt          *time.Time `gorm:"column:confirm_at"`                    // 充值确认时间
+	FailReason         string     `gorm:"column:fail_reason"`                   // 失败原因
+	RefuseAt           *time.Time `gorm:"column:refuse_at"`                     // 充值失败时间
 }
 
 func (m *RechargeRecord) TableName() string {

+ 18 - 2
app/schedule/auto_task_review.go

@@ -244,10 +244,18 @@ func AutoProjectReviewTask() {
 		autoTaskInfo := dao.InfoAutoTaskDao{}.GetValueByIdFieldName(autoTaskId, "invalid")
 		dd, _ := time.ParseDuration(conv.MustString(autoTaskInfo.Invalid, "") + "h")
 		timeInvalid := projectInfo.RecruitDdl.Add(dd)
+		var projectType int64
+		var projectStatus int64
+		_ = dao.Db.Model(&entity.Project{}).Where("project_id = ?", reviewProject.ProjectID).Select("project_type").Find(&projectType).Error
 		t := time.Now()
+		if projectType == 2 {
+			projectStatus = 8
+		} else {
+			projectStatus = 4
+		}
 		_ = dao.ProjectDAO{}.UpdateProject(entity.Project{
 			ProjectId:     reviewProject.ProjectID,
-			ProjectStatus: 4,
+			ProjectStatus: projectStatus,
 			PassAt:        t,
 			AutoFailAt:    timeInvalid,
 		})
@@ -710,10 +718,18 @@ func AutoLocalLifeReviewTask() {
 		autoTaskInfo := dao.InfoAutoTaskDao{}.GetValueByIdFieldName(autoTaskId, "invalid")
 		dd, _ := time.ParseDuration(conv.MustString(autoTaskInfo.Invalid, "") + "h")
 		timeInvalid := localLifeInfo.RecruitDdl.Add(dd)
+		var localType int64
+		var taskStatus int64
+		_ = dao.Db.Model(&entity.LocalLifeInfo{}).Where("local_id = ?", reviewLocalLife.LocalID).Select("local_type").Find(&localType).Error
 		t := time.Now()
+		if localType == 2 {
+			taskStatus = 8
+		} else {
+			taskStatus = 4
+		}
 		_ = dao.LocalLifeDao{}.UpdateLocal(entity.LocalLifeInfo{
 			LocalID:    reviewLocalLife.LocalID,
-			TaskStatus: 4,
+			TaskStatus: taskStatus,
 			PassAt:     t,
 			AutoFailAt: timeInvalid,
 		})

+ 39 - 38
app/service/invoice_service.go

@@ -4,7 +4,6 @@ import (
 	"encoding/json"
 	"fmt"
 	"time"
-	"youngee_b_api/app/consts"
 	"youngee_b_api/app/dao"
 	"youngee_b_api/app/entity"
 	"youngee_b_api/app/util"
@@ -13,38 +12,43 @@ import (
 
 type InvoiceService struct{}
 
-// 设置默认开票抬头
-func (s InvoiceService) UpdateInvoiceDefault(param *vo.InvoiceDefaultParam) (*int64, error) {
-	var err error
-	invoiceInfo, err := dao.InvoiceInfoDao{}.SelectDefault(param.EnterpriseId, param.InvoiceType, 1)
+// 获取企业公司名、税号、注册地址
+func (s InvoiceService) GetEnterpriseMessage(param *vo.InvoiceDefaultParam) (*vo.ReInvoiceInfo, error) {
+	enterpriseInfor, err := dao.EnterpriseDao{}.GetEnterpriseInfo(param.EnterpriseId)
 	if err != nil {
 		return nil, err
 	}
-	if invoiceInfo != nil && invoiceInfo.InvoiceID != 0 {
-		err := dao.InvoiceInfoDao{}.Delete(invoiceInfo.InvoiceID)
-		if err != nil {
-			return nil, err
-		}
-	}
-	if param.HeadType == 0 {
-		param.HeadType = 1
+	reInvoiceInfo := &vo.ReInvoiceInfo{
+		InvoiceHeader:     enterpriseInfor.BusinessName,
+		TaxCode:           enterpriseInfor.TaxNumber,
+		RegisteredAddress: enterpriseInfor.Address,
 	}
-	enterprise, err1 := dao.EnterpriseDao{}.GetEnterpriseInfo(param.EnterpriseId)
-	if err1 != nil {
-		return nil, err1
+	return reInvoiceInfo, nil
+}
+
+// 设置默认开票抬头(只针对数电专票)
+func (s InvoiceService) UpdateInvoiceDefault(param *vo.InvoiceDefaultParam) (*int64, error) {
+	err := dao.InvoiceInfoDao{}.Delete(entity.InvoiceInfo{
+		EnterpriseID: param.EnterpriseId,
+		InvoiceType:  2,
+	})
+	if err != nil {
+		return nil, err
 	}
+	//enterprise, err1 := dao.EnterpriseDao{}.GetEnterpriseInfo(param.EnterpriseId)
+	//if err1 != nil {
+	//	return nil, err1
+	//}
 	invoiceInfoAdd := entity.InvoiceInfo{
-		EnterpriseID:      param.EnterpriseId,
-		InvoiceType:       param.InvoiceType,
-		HeadType:          consts.GetHeadType(param.HeadType),
-		InvoiceHeader:     enterprise.BusinessName,
-		TaxCode:           enterprise.TaxNumber,
-		RegisteredAddress: enterprise.Address,
-		RegisteredPhone:   param.RegisteredPhone,
-		Bank:              param.Bank,
-		BankCardNumber:    param.BankCardNumber,
-		IsDefault:         1,
-		UpdateAt:          time.Now(),
+		EnterpriseID: param.EnterpriseId,
+		InvoiceType:  2,
+		//InvoiceHeader:     enterprise.BusinessName,
+		//TaxCode:           enterprise.TaxNumber,
+		//RegisteredAddress: enterprise.Address,
+		// 只有数电专票且注册电话、开户银行、银行账号可修改
+		RegisteredPhone: param.RegisteredPhone,
+		Bank:            param.Bank,
+		BankCardNumber:  param.BankCardNumber,
 	}
 	err = dao.InvoiceInfoDao{}.Insert(&invoiceInfoAdd)
 	if err != nil {
@@ -54,22 +58,19 @@ func (s InvoiceService) UpdateInvoiceDefault(param *vo.InvoiceDefaultParam) (*in
 	return &invoiceInfoAdd.InvoiceID, nil
 }
 
-// 获取默认开票抬头
+// 获取默认数电专票开票抬头
 func (s InvoiceService) GetInvoiceDefault(param *vo.InvoiceDefaultParam) (*vo.ReInvoiceInfo, error) {
-	invoiceInfo, err := dao.InvoiceInfoDao{}.SelectDefault(param.EnterpriseId, param.InvoiceType, 1)
+	invoiceInfo, err := dao.InvoiceInfoDao{}.SelectDefault(param.EnterpriseId, 2)
 	if err != nil {
 		return nil, err
 	}
-	reInvoiceInfo := &vo.ReInvoiceInfo{
-		InvoiceHeader:     invoiceInfo.InvoiceHeader,
-		TaxCode:           invoiceInfo.TaxCode,
-		RegisteredAddress: invoiceInfo.RegisteredAddress,
-		RegisteredPhone:   invoiceInfo.RegisteredPhone,
-		Bank:              invoiceInfo.Bank,
-		BankCardNumber:    invoiceInfo.BankCardNumber,
-		IsDefault:         invoiceInfo.IsDefault,
+	var reInvoiceInfo vo.ReInvoiceInfo
+	if invoiceInfo != nil {
+		reInvoiceInfo.RegisteredPhone = invoiceInfo.RegisteredPhone
+		reInvoiceInfo.Bank = invoiceInfo.Bank
+		reInvoiceInfo.BankCardNumber = invoiceInfo.BankCardNumber
 	}
-	return reInvoiceInfo, nil
+	return &reInvoiceInfo, nil
 }
 
 // 确认开票

+ 30 - 22
app/service/local_life_service.go

@@ -72,6 +72,7 @@ func (s LocalLifeService) CreateLocalLife(localCreateParam *vo.LocalCreateParam)
 		TaskForm:            localCreateParam.TaskForm,
 		ContentType:         localCreateParam.ContentType,
 		TaskDetail:          localCreateParam.TaskDetail,
+		Tools:               localCreateParam.Tools,
 	}
 	if localCreateParam.LocalType == 1 {
 		newLocalLife.ServiceChargeRate = localCreateParam.ServiceChargeRate
@@ -153,7 +154,11 @@ func (s LocalLifeService) CreateLocalLife(localCreateParam *vo.LocalCreateParam)
 			}
 		}
 	}
-	_ = dao.LocalLifeDao{}.UpdateLocal(entity.LocalLifeInfo{LocalID: localId, EstimatedCost: estimatedCost})
+	_ = dao.LocalLifeDao{}.UpdateLocal(entity.LocalLifeInfo{
+		LocalID:         localId,
+		EstimatedCost:   estimatedCost,
+		TotalRecruitNum: totalRecruitNum,
+	})
 
 	return &localId, nil
 }
@@ -236,14 +241,15 @@ func (s LocalLifeService) UpdateLocal(localUpdateParam *vo.LocalUpdateParam) (*s
 		PromoteBody:       localUpdateParam.PromoteBody,
 		Donate:            localUpdateParam.Donate,
 		//TaskStatus:        localUpdateParam.LocalStatus,
-		LocalName:     localUpdateParam.LocalName,
-		TalentType:    localUpdateParam.TalentType,
-		RecruitDdl:    recruitDdl,
-		TaskForm:      localUpdateParam.TaskForm,
-		ContentType:   localUpdateParam.ContentType,
-		TaskDetail:    localUpdateParam.TaskDetail,
-		UpdatedAt:     t,
-		EstimatedCost: estimatedCost,
+		LocalName:       localUpdateParam.LocalName,
+		TalentType:      localUpdateParam.TalentType,
+		RecruitDdl:      recruitDdl,
+		TaskForm:        localUpdateParam.TaskForm,
+		ContentType:     localUpdateParam.ContentType,
+		TaskDetail:      localUpdateParam.TaskDetail,
+		UpdatedAt:       t,
+		EstimatedCost:   estimatedCost,
+		TotalRecruitNum: totalRecruitNum,
 	}
 	//if localUpdateParam.LocalStatus == 2 {
 	//	updateLocalLife.SubmitAt = t
@@ -394,15 +400,16 @@ func (s LocalLifeService) UpdateLocalTarget(localUpdateParam *vo.LocalUpdatePara
 		PromoteBody:       localUpdateParam.PromoteBody,
 		Donate:            localUpdateParam.Donate,
 		//TaskStatus:        localUpdateParam.LocalStatus,
-		LocalName:     localUpdateParam.LocalName,
-		TalentType:    localUpdateParam.TalentType,
-		RecruitDdl:    recruitDdl,
-		TaskForm:      localUpdateParam.TaskForm,
-		ContentType:   localUpdateParam.ContentType,
-		TaskDetail:    localUpdateParam.TaskDetail,
-		UpdatedAt:     t,
-		Tools:         localUpdateParam.Tools,
-		EstimatedCost: estimatedCost,
+		LocalName:       localUpdateParam.LocalName,
+		TalentType:      localUpdateParam.TalentType,
+		RecruitDdl:      recruitDdl,
+		TaskForm:        localUpdateParam.TaskForm,
+		ContentType:     localUpdateParam.ContentType,
+		TaskDetail:      localUpdateParam.TaskDetail,
+		UpdatedAt:       t,
+		Tools:           localUpdateParam.Tools,
+		EstimatedCost:   estimatedCost,
+		TotalRecruitNum: totalRecruitNum,
 	}
 	//if localUpdateParam.LocalStatus == 2 {
 	//	updateLocalLife.SubmitAt = t
@@ -626,14 +633,14 @@ func (s LocalLifeService) CopyLocalLife(param *vo.LocalSearchParam) (*string, er
 	t := time.Now()
 	// 获取定时任务配置id
 	infoAutoTask := entity.InfoAutoTask{}
-	infoAutoTask = dao.InfoAutoTaskDao{}.GetAutoTaskLast(param.EnterpriseId)
+	infoAutoTask = dao.InfoAutoTaskDao{}.GetAutoTaskLast(localLifeOrigin.EnterpriseID)
 	infoAutoDefault := entity.InfoAutoDefault{}
-	infoAutoDefault = dao.InfoAutoDefaultDao{}.GetAutoDefaultLast(param.EnterpriseId)
+	infoAutoDefault = dao.InfoAutoDefaultDao{}.GetAutoDefaultLast(localLifeOrigin.EnterpriseID)
 
 	// 复制任务
 	localLifeNew := entity.LocalLifeInfo{
-		EnterpriseID:        param.EnterpriseId,
-		SubAccountID:        param.SubAccountId,
+		EnterpriseID:        localLifeOrigin.EnterpriseID,
+		SubAccountID:        localLifeOrigin.SubAccountID,
 		OperatorType:        localLifeOrigin.OperatorType,
 		TaskStatus:          1,
 		LocalID:             localIdNew,
@@ -654,6 +661,7 @@ func (s LocalLifeService) CopyLocalLife(param *vo.LocalSearchParam) (*string, er
 		TaskForm:            localLifeOrigin.TaskForm,
 		ContentType:         localLifeOrigin.ContentType,
 		TaskDetail:          localLifeOrigin.TaskDetail,
+		Tools:               localLifeOrigin.Tools,
 		ServiceChargeRate:   localLifeOrigin.ServiceChargeRate,
 		EstimatedCost:       localLifeOrigin.EstimatedCost,
 	}

+ 9 - 6
app/service/project_service.go

@@ -155,8 +155,9 @@ func (s ProjectService) CreateProject(projectCreateParam *vo.ProjectCreateParam)
 		}
 	}
 	_ = dao.ProjectDAO{}.UpdateProject(entity.Project{
-		ProjectId:     projectId,
-		EstimatedCost: estimatedCost,
+		ProjectId:       projectId,
+		EstimatedCost:   estimatedCost,
+		TotalRecruitNum: totalRecruitNum,
 	})
 
 	return &projectId, nil
@@ -257,6 +258,7 @@ func (s ProjectService) UpdateProject(projectUpdateParam *vo.ProjectUpdateParam)
 		ContentType:       projectUpdateParam.ContentType,
 		ProjectDetail:     projectUpdateParam.ProjectDetail,
 		EstimatedCost:     estimatedCost,
+		TotalRecruitNum:   totalRecruitNum,
 	}
 	//if projectUpdateParam.ProjectStatus == 2 {
 	//	updateProject.SubmitAt = t
@@ -425,6 +427,7 @@ func (s ProjectService) UpdateProjectTarget(projectUpdateParam *vo.ProjectUpdate
 		ProjectDetail:    projectUpdateParam.ProjectDetail,
 		Tools:            projectUpdateParam.Tools,
 		EstimatedCost:    estimatedCost,
+		TotalRecruitNum:  totalRecruitNum,
 	}
 	//if projectUpdateParam.ProjectStatus == 2 {
 	//	updateProject.SubmitAt = t
@@ -625,9 +628,9 @@ func (s ProjectService) CopyProject(param *vo.ProjectSearchParam) (*string, erro
 	t := time.Now()
 	// 获取定时任务配置id
 	infoAutoTask := entity.InfoAutoTask{}
-	infoAutoTask = dao.InfoAutoTaskDao{}.GetAutoTaskLast(param.EnterpriseId)
+	infoAutoTask = dao.InfoAutoTaskDao{}.GetAutoTaskLast(projectOrigin.EnterpriseID)
 	infoAutoDefault := entity.InfoAutoDefault{}
-	infoAutoDefault = dao.InfoAutoDefaultDao{}.GetAutoDefaultLast(param.EnterpriseId)
+	infoAutoDefault = dao.InfoAutoDefaultDao{}.GetAutoDefaultLast(projectOrigin.EnterpriseID)
 
 	// 复制任务
 	projectNew := entity.Project{
@@ -636,8 +639,8 @@ func (s ProjectService) CopyProject(param *vo.ProjectSearchParam) (*string, erro
 		ProjectId:         projectIdNew,
 		ProductID:         projectOrigin.ProductID,
 		ProductCategory:   projectOrigin.ProductCategory,
-		EnterpriseID:      param.EnterpriseId,
-		SubAccountId:      param.SubAccountId,
+		EnterpriseID:      projectOrigin.EnterpriseID,
+		SubAccountId:      projectOrigin.SubAccountId,
 		ProjectPlatform:   projectOrigin.ProjectPlatform,
 		OperatorType:      projectOrigin.OperatorType,
 		ProductSnap:       projectOrigin.ProductSnap,

+ 9 - 6
app/service/recharge_service.go

@@ -32,6 +32,7 @@ func (s RechargeService) TransferToPublic(param *vo.RechargeTransferParam) (*str
 	//}
 	rechargeId = util.GenerateDateRelatedUUID(16)
 	phone, _ = dao.EnterpriseDao{}.GetEnterprisePhone(param.EnterpriseId)
+	var t = time.Now()
 	rechargeRecord := entity.RechargeRecord{
 		RechargeID:         rechargeId,
 		EnterpriseID:       param.EnterpriseId,
@@ -41,7 +42,7 @@ func (s RechargeService) TransferToPublic(param *vo.RechargeTransferParam) (*str
 		Phone:              phone,
 		RechargeMethod:     1,
 		Status:             1,
-		CommitAt:           time.Now(),
+		CommitAt:           &t,
 	}
 	err := dao.RechargeRecordDao{}.Insert(&rechargeRecord)
 	if err != nil {
@@ -107,6 +108,7 @@ func (s RechargeService) NativeApiServicePrepay(enterpriseId string, subAccountI
 
 	// 生成充值记录
 	phone, _ := dao.EnterpriseDao{}.GetEnterprisePhone(enterpriseId)
+	var t = time.Now()
 	rechargeRecord := entity.RechargeRecord{
 		RechargeID:     tradeId,
 		EnterpriseID:   enterpriseId,
@@ -115,8 +117,8 @@ func (s RechargeService) NativeApiServicePrepay(enterpriseId string, subAccountI
 		Phone:          phone,
 		RechargeMethod: 2,
 		Status:         1,
-		CommitAt:       time.Now(),
-		RefuseAt:       timeExpire,
+		CommitAt:       &t,
+		RefuseAt:       &timeExpire,
 	}
 	err = dao.RechargeRecordDao{}.Insert(&rechargeRecord)
 	if err != nil {
@@ -172,14 +174,15 @@ func (s RechargeService) QueryOrderByTradeId(enterpriseId string, subAccountId i
 	if "SUCCESS" == *resp.TradeState {
 		payTime := resp.SuccessTime
 		t, _ := time.Parse("2006-01-02 15:04:05", *payTime)
-		err = dao.RechargeRecordDao{}.UpdateRechargeStatus(tradeId, 2, t)
+		err = dao.RechargeRecordDao{}.UpdateRechargeStatus(tradeId, 2, &t)
 		amount := float64(*resp.Amount.Total) / 100
 		_, err = dao.EnterpriseDao{}.UpdateEnterpriseBalance(enterpriseId, amount)
 	} else if "CLOSED" == *resp.TradeState {
-		err = dao.RechargeRecordDao{}.UpdateRechargeStatus(tradeId, 3, time.Now())
+		var t = time.Now()
+		err = dao.RechargeRecordDao{}.UpdateRechargeStatus(tradeId, 3, &t)
 	}
 
-	return *resp.TradeState, nil
+	return *resp.TradeState, err
 }
 
 // 余额管理——总金额、可用余额、冻结金额

+ 6 - 5
app/service/review_service/business_license_check.go

@@ -22,11 +22,12 @@ func (c *Config) CheckBusinessLicense(param *vo.IdentifyParam) (map[string]strin
 	address := result.Address
 	bodyType := result.Type // 公司/企业类型/主体类型/类型
 	err1 := dao.EnterpriseDao{}.UpdateEnterprise(entity.Enterprise{
-		EnterpriseID: param.EnterpriseId,
-		BusinessName: *companyName,
-		TaxNumber:    *registrationNumber,
-		Address:      *address,
-		AuthStatus:   1,
+		EnterpriseID:    param.EnterpriseId,
+		BusinessName:    *companyName,
+		TaxNumber:       *registrationNumber,
+		Address:         *address,
+		BusinessLicense: param.BusinessLicenseUrl,
+		AuthStatus:      1,
 	})
 	if err1 != nil {
 		return nil, err1

+ 3 - 3
app/service/selection_info_service.go

@@ -557,7 +557,7 @@ func (s SelectionInfoService) CopySelection(param *vo.SelectionSearchParam) (*st
 	t := time.Now()
 	// 获取定时任务配置
 	infoAutoTask := entity.InfoAutoTask{}
-	infoAutoTask = dao.InfoAutoTaskDao{}.GetAutoTaskLast(param.EnterpriseId)
+	infoAutoTask = dao.InfoAutoTaskDao{}.GetAutoTaskLast(selectionOrigin.EnterpriseID)
 
 	// 复制选品
 	selectionNew := entity.SelectionInfo{
@@ -565,8 +565,8 @@ func (s SelectionInfoService) CopySelection(param *vo.SelectionSearchParam) (*st
 		SelectionID:      selectionIdNew,
 		ProductID:        selectionOrigin.ProductID,
 		ProductCategory:  selectionOrigin.ProductCategory,
-		EnterpriseID:     param.EnterpriseId,
-		SubAccountId:     param.SubAccountId,
+		EnterpriseID:     selectionOrigin.EnterpriseID,
+		SubAccountId:     selectionOrigin.SubAccountId,
 		Platform:         selectionOrigin.Platform,
 		ProductSnap:      selectionOrigin.ProductSnap,
 		ProductPhotoSnap: selectionOrigin.ProductPhotoSnap,

+ 3 - 3
app/vo/invoice_default_param.go

@@ -2,12 +2,12 @@ package vo
 
 type InvoiceDefaultParam struct {
 	EnterpriseId string `json:"enterprise_id"`
-	HeadType     int64  `json:"head_type"`    // 抬头类型(1企业 2个人)
-	InvoiceType  int64  `json:"invoice_type"` // 发票类型(1数电普票 2数电专票)
+	//HeadType     int64  `json:"head_type"` // 抬头类型(1企业 2个人)
+	//InvoiceType  int64  `json:"invoice_type"` // 发票类型(1数电普票 2数电专票)
 	//InvoiceHead  string `json:"invoice_head"` //发票抬头(企业名称)
 	//TaxCode      string `json:"tax_code"`     // 企业税号
-
 	//RegisteredAddress string `json:"registered_address"` // 企业注册地址
+
 	RegisteredPhone string `json:"registered_phone"` // 企业注册电话
 	Bank            string `json:"bank"`             // 开户银行
 	BankCardNumber  string `json:"bank_card_number"` // 银行账号

+ 1 - 1
app/vo/local_search_param.go

@@ -7,7 +7,7 @@ type LocalSearchParam struct {
 	PageSize      int    `json:"page_size"`
 	LocalType     int64  `json:"local_type"` // 项目类型,1全流程项目,2专项项目
 	LocalPlatform int64  `json:"local_platform"`
-	LocalStatus   int64  `json:"local_status"` // 任务状态,1-10代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、失效、执行中、已结案
+	LocalStatus   int64  `json:"local_status"` // 任务状态,1-10分别代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、执行中、失效、已结案
 	LocalForm     int64  `json:"local_form"`   // 任务形式,1-2分别代表线下探店,素材分发
 	ContentType   int64  `json:"content_type"` // 内容形式, 1图文 2视频
 	Order         int64  `json:"order"`        // 排序 0降序 1升序(默认0)

+ 1 - 1
app/vo/local_update_param.go

@@ -10,7 +10,7 @@ type LocalUpdateParam struct {
 	PromoteBody       int64   `json:"promote_body"` // 推广主体(1门店 2团购)
 	//LocalType         int64                        `json:"local_type"`        // 项目类型,1代表全流程项目,2代表专项项目
 	Donate int64 `json:"donate"` // 赠送达人套餐(1有赠送 2无赠送)
-	//LocalStatus      int64                        `json:"local_status"`      // 项目状态,1-10分别代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、失效、执行中、已结案
+	//LocalStatus      int64                        `json:"local_status"`      // 项目状态,1-10分别代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、执行中、失效、已结案
 	LocalName        string                       `json:"local_name"`        // 项目名称(任务标题)
 	TalentType       string                       `json:"talent_type"`       // 达人类型(,分隔)
 	RecruitDdl       string                       `json:"recruit_ddl"`       // 招募截止时间

+ 11 - 11
app/vo/project_create_param.go

@@ -1,17 +1,17 @@
 package vo
 
 type ProjectCreateParam struct {
-	EnterpriseId      string                  `json:"enterprise_id"`
-	SubAccountId      int64                   `json:"sub_account_id"`
-	Platform          int64                   `json:"platform"`
-	ProductId         int64                   `json:"product_id"`
-	ServiceChargeRate float64                 `json:"service_charge_rate"`
-	ProjectType       int64                   `json:"project_type"`      // 项目类型,1代表全流程项目,2代表专项项目
-	ProjectStatus     int64                   `json:"project_status"`    // 项目状态,1-10分别代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、失效、执行中、已结案
-	ProjectName       string                  `json:"task_name"`         // 项目名称(任务标题)
-	TalentType        string                  `json:"talent_type"`       // 达人类型
-	RecruitDdl        string                  `json:"recruit_ddl"`       // 招募截止时间
-	RecruitStrategys  []CreateRecruitStrategy `json:"recruit_strategys"` // 招募策略
+	EnterpriseId      string  `json:"enterprise_id"`
+	SubAccountId      int64   `json:"sub_account_id"`
+	Platform          int64   `json:"platform"`
+	ProductId         int64   `json:"product_id"`
+	ServiceChargeRate float64 `json:"service_charge_rate"`
+	ProjectType       int64   `json:"project_type"` // 项目类型,1代表全流程项目,2代表专项项目
+	//ProjectStatus     int64                   `json:"project_status"`    // 项目状态,1-10分别代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、执行中、失效、已结案
+	ProjectName      string                  `json:"task_name"`         // 项目名称(任务标题)
+	TalentType       string                  `json:"talent_type"`       // 达人类型
+	RecruitDdl       string                  `json:"recruit_ddl"`       // 招募截止时间
+	RecruitStrategys []CreateRecruitStrategy `json:"recruit_strategys"` // 招募策略
 
 	ProjectForm     int64                  `json:"project_form"`   // 项目形式,1-3分别代表商品寄拍、素材分发、虚拟产品测评
 	ContentType     int64                  `json:"content_type"`   // 内容形式,1代表图文,2代表视频

+ 1 - 1
app/vo/project_search_param.go

@@ -7,7 +7,7 @@ type ProjectSearchParam struct {
 	PageSize        int    `json:"page_size"`
 	ProjectType     int64  `json:"project_type"` // 项目类型,1全流程项目,2专项项目
 	ProjectPlatform int64  `json:"project_platform"`
-	ProjectStatus   int64  `json:"project_status"` // 任务状态,1-10代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、失效、执行中、已结案
+	ProjectStatus   int64  `json:"project_status"` // 任务状态,1-10分别代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、执行中、失效、已结案
 	ProjectForm     int64  `json:"project_form"`   // 任务形式,1-5代表商品寄拍、素材分发、虚拟产品测评、线下探店打卡、素材微原创
 	ContentType     int64  `json:"content_type"`   // 内容形式, 1图文 2视频
 	Order           int64  `json:"order"`          // 排序 0降序 1升序(默认0)

+ 1 - 1
app/vo/project_update_param.go

@@ -7,7 +7,7 @@ type ProjectUpdateParam struct {
 	ProductId         int64   `json:"product_id"`
 	ServiceChargeRate float64 `json:"service_charge_rate"`
 	ProjectType       int64   `json:"project_type"` // 项目类型,1代表全流程项目,2代表专项项目
-	//ProjectStatus     int64                   `json:"project_status"`    // 项目状态,1-10分别代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、失效、执行中、已结案
+	//ProjectStatus     int64                   `json:"project_status"`    // 项目状态,1-10分别代表创建中、待审核、审核通过、招募中、招募完毕、待支付、已支付、执行中、失效、已结案
 	ProjectName      string                  `json:"task_name"`         // 项目名称(任务标题)
 	TalentType       string                  `json:"talent_type"`       // 达人类型
 	RecruitDdl       string                  `json:"recruit_ddl"`       // 招募截止时间

+ 1 - 2
app/vo/re_invoice_info.go

@@ -1,11 +1,10 @@
 package vo
 
 type ReInvoiceInfo struct {
-	InvoiceHeader     string `json:"invoiceHeader"`     // 发票抬头
+	InvoiceHeader     string `json:"invoiceHeader"`     // 发票抬头(企业公司名)
 	TaxCode           string `json:"taxCode"`           // 税务登记证号/统一社会信用代码
 	RegisteredAddress string `json:"registeredAddress"` // 企业注册地址
 	RegisteredPhone   string `json:"registeredPhone"`   // 企业注册电话
 	Bank              string `json:"bank"`              // 开户银行
 	BankCardNumber    string `json:"bankCardNumber"`    // 开户银行账号
-	IsDefault         int64  `json:"isDefault"`         // 1默认抬头
 }

+ 1 - 1
app/vo/selection_search_param.go

@@ -6,7 +6,7 @@ type SelectionSearchParam struct {
 	Page              int    `json:"page"`
 	PageSize          int    `json:"page_size"`
 	SelectionPlatform int64  `json:"selection_platform"` // 平台,1-7分别代表小红书、抖音、微博、快手、b站、大众点评、知乎
-	SelectionStatus   int64  `json:"selection_status"`   // 任务状态,1-8代表创建中、待审核、审核通过、待支付、已支付、执行中、失效、已结案
+	SelectionStatus   int64  `json:"selection_status"`   // 任务状态,1-8分别代表创建中、待审核、审核通过、待支付、已支付、执行中、失效、已结案
 	FreeFlag          int64  `json:"free_flag"`          // 领样策略  0全部 1有 2无
 	RewardFlag        int64  `json:"reward_flag"`        // 悬赏策略 0全部 1有 2无
 	Order             int64  `json:"order"`              // 排序 0降序 1升序(默认0)

+ 32 - 4
db/locallife_task.go

@@ -464,6 +464,13 @@ func PassLocalTaskCoop(ctx context.Context, req http_model.PasslocalTaskCoopRequ
 				return err
 			}
 		}
+
+		for _, taskid := range req.TaskIds {
+			err = CreateTaskLog(ctx, taskid, "已确认合作")
+			if err != nil {
+				return err
+			}
+		}
 		// 返回 nil 提交事务
 		return nil
 	})
@@ -527,6 +534,13 @@ func RefuseLocalTaskCoop(ctx context.Context, req http_model.RefuselocalTaskCoop
 			return err
 		}
 
+		for _, taskid := range req.TaskIds {
+			err = CreateTaskLog(ctx, taskid, "已拒绝合作")
+			if err != nil {
+				return err
+			}
+		}
+
 		// 返回 nil 提交事务
 		return nil
 	})
@@ -771,7 +785,14 @@ func GetLocalSketchList(ctx context.Context, request http_model.LocalTasksketchl
 		return &http_model.GetsketchlocaltaskListData{}, err
 	}
 	var projecrtaskinfo []gorm_model.YoungeeLocalTaskInfo
-	query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? AND task_stage = ?", request.ProjectId, request.ScriptStatus)
+	query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? ", request.ProjectId)
+	switch request.ScriptStatus {
+	case 10:
+		query = query.Where("task_stage = 10")
+	case 11:
+
+		query = query.Where(" task_stage >= 11")
+	}
 
 	if request.Others != "" {
 		query = query.Where("talent_name LIKE ? OR s_operate_name LIKE ?", "%"+request.Others+"%", "%"+request.Others+"%")
@@ -1005,7 +1026,14 @@ func GetLocalLinkList(ctx context.Context, request http_model.LocalTaskLinklistR
 		return &http_model.GetLocalTaskLinkListData{}, err
 	}
 	var projecrtaskinfo []gorm_model.YoungeeLocalTaskInfo
-	query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? AND task_stage = ?", request.ProjectId, request.LinkStatus)
+	query := db.Model(&gorm_model.YoungeeLocalTaskInfo{}).Where("local_id = ? ", request.ProjectId)
+	switch request.LinkStatus {
+	case "12":
+		query = query.Where("task_stage = 12")
+	case "13":
+
+		query = query.Where(" task_stage >= 13")
+	}
 
 	if request.Others != "" {
 		query = query.Where("talent_name LIKE ? OR s_operate_name LIKE ?", "%"+request.Others+"%", "%"+request.Others+"%")
@@ -1330,12 +1358,12 @@ func GetLocalDataList(ctx context.Context, request http_model.LocalTaskDatalistR
 		}
 		var datainfo gorm_model.YounggeeDataInfo
 		switch request.DataStatus {
-		case "12":
+		case "14":
 			err := db.Model(&gorm_model.YounggeeDataInfo{}).Where("task_id = ? and is_review = 0 ", task.TaskId).First(&datainfo).Error
 			if err != nil {
 				return nil, err
 			}
-		case "13":
+		case "15":
 			err := db.Model(&gorm_model.YounggeeDataInfo{}).Where("task_id = ? and is_ok = 1", task.TaskId).First(&datainfo).Error
 			if err != nil {
 				return nil, err

+ 33 - 5
db/project_task.go

@@ -528,6 +528,14 @@ func PassProTaskCoop(ctx context.Context, projectId string, taskIds []string, op
 				return err
 			}
 		}
+		// 5. tasklog表插入信息
+		for _, taskid := range taskIds {
+			err = CreateTaskLog(ctx, taskid, "已确认合作")
+			if err != nil {
+				return err
+			}
+		}
+
 		// 返回 nil 提交事务
 		return nil
 	})
@@ -590,7 +598,13 @@ func RefuseproTaskCoop(ctx context.Context, taskIds []string, operatorid string,
 		if err != nil {
 			return err
 		}
-
+		// 5. tasklog表插入信息
+		for _, taskid := range taskIds {
+			err = CreateTaskLog(ctx, taskid, "已拒绝合作")
+			if err != nil {
+				return err
+			}
+		}
 		// 返回 nil 提交事务
 		return nil
 	})
@@ -712,7 +726,14 @@ func GetPreSketchList(ctx context.Context, request http_model.PreSketchListReque
 func GetSketchList(ctx context.Context, request http_model.TasksketchlistRequest) (*http_model.GetsketchtaskListData, error) {
 	db := GetReadDB(ctx)
 	var projecrtaskinfo []gorm_model.YoungeeTaskInfo
-	query := db.Model(&gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_stage = ?", request.ProjectId, request.ScriptStatus)
+	query := db.Model(&gorm_model.YoungeeTaskInfo{}).Where("project_id = ? ", request.ProjectId)
+	switch request.ScriptStatus {
+	case 10:
+		query = query.Where("task_stage = 10")
+	case 11:
+
+		query = query.Where(" task_stage >= 11")
+	}
 	var projectinfo gorm_model.ProjectInfo
 	err := db.Model(&gorm_model.ProjectInfo{}).Where("project_id = ?", request.ProjectId).First(&projectinfo).Error
 	if err != nil {
@@ -946,7 +967,14 @@ func GetPreLinkList(ctx context.Context, request http_model.PreLinkListRequest)
 func GetLinkList(ctx context.Context, request http_model.TaskLinklistRequest) (*http_model.GettasklinkListData, error) {
 	db := GetReadDB(ctx)
 	var projecrtaskinfo []gorm_model.YoungeeTaskInfo
-	query := db.Model(&gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_stage = ?", request.ProjectId, request.LinkStatus)
+	query := db.Model(&gorm_model.YoungeeTaskInfo{}).Where("project_id = ? ", request.ProjectId)
+	switch request.LinkStatus {
+	case "12":
+		query = query.Where("task_stage = 12")
+	case "13":
+
+		query = query.Where(" task_stage >= 13")
+	}
 	var projectinfo gorm_model.ProjectInfo
 	err := db.Model(&gorm_model.ProjectInfo{}).Where("project_id = ?", request.ProjectId).First(&projectinfo).Error
 	if err != nil {
@@ -1274,12 +1302,12 @@ func GetDataList(ctx context.Context, request http_model.TaskDatalistRequest) (*
 		}
 		var datainfo gorm_model.YounggeeDataInfo
 		switch request.DataStatus {
-		case "12":
+		case "14":
 			err := db.Model(&gorm_model.YounggeeDataInfo{}).Where("task_id = ? and is_review = 0 ", task.TaskID).First(&datainfo).Error
 			if err != nil {
 				return nil, err
 			}
-		case "13":
+		case "15":
 			err := db.Model(&gorm_model.YounggeeDataInfo{}).Where("task_id = ? and is_ok = 1", task.TaskID).First(&datainfo).Error
 			if err != nil {
 				return nil, err

+ 94 - 80
db/task.go

@@ -186,24 +186,6 @@ func SetTaskFinish(ctx context.Context, TaskIDs []string) error {
 			return err1
 		}
 
-		//// 2. 创建任务收益
-		//var productStruct gorm_model.YounggeeProduct
-		//if err = json.Unmarshal([]byte(projectInfo.ProductSnap), &productStruct); err != nil {
-		//	fmt.Println("Error:", err)
-		//	return err
-		//}
-		//var productPhotoStruct []gorm_model.YounggeeProductPhoto
-		//if err = json.Unmarshal([]byte(projectInfo.ProductPhotoSnap), &productPhotoStruct); err != nil {
-		//	fmt.Println("Error:", err)
-		//	return err
-		//}
-		//var mainPhoto = ""
-		//for _, w := range productPhotoStruct {
-		//	if w.Symbol == 1 {
-		//		mainPhoto = w.PhotoUrl
-		//	}
-		//}
-
 		t := time.Now()
 		income := gorm_model.YounggeeTalentIncome{
 			TalentID:  taskInfo.TalentID,
@@ -267,7 +249,7 @@ func SetLocalTaskFinish(ctx context.Context, TaskIDs []string) error {
 		}
 		//查询project_info
 		projectInfo := gorm_model.YounggeeLocalLifeInfo{}
-		err1 = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("project_id = ?", taskInfo.LocalId).Scan(&projectInfo).Error
+		err1 = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", taskInfo.LocalId).Scan(&projectInfo).Error
 		if err1 != nil {
 			logrus.WithContext(ctx).Errorf("[Task db] Find ProjectInfo error,err:%+v", err)
 			return err1
@@ -281,24 +263,6 @@ func SetLocalTaskFinish(ctx context.Context, TaskIDs []string) error {
 			return err1
 		}
 
-		// 2. 创建任务收益
-		//var productStruct gorm_model.YounggeeProduct
-		//if err = json.Unmarshal([]byte(projectInfo.ProductSnap), &productStruct); err != nil {
-		//	fmt.Println("Error:", err)
-		//	return err
-		//}
-		//var productPhotoStruct []gorm_model.YounggeeProductPhoto
-		//if err = json.Unmarshal([]byte(projectInfo.ProductPhotoSnap), &productPhotoStruct); err != nil {
-		//	fmt.Println("Error:", err)
-		//	return err
-		//}
-		//var mainPhoto = ""
-		//for _, w := range productPhotoStruct {
-		//	if w.Symbol == 1 {
-		//		mainPhoto = w.PhotoUrl
-		//	}
-		//}
-
 		t := time.Now()
 		income := gorm_model.YounggeeTalentIncome{
 			TalentID:  taskInfo.TalentId,
@@ -373,6 +337,59 @@ func SetProjectSettleFlag(ctx context.Context, projectid string) error {
 	return nil
 }
 
+func SetSettleAmount(ctx context.Context, settleamount *string, TaskIDs []string) error {
+	db := GetReadDB(ctx)
+	// 2. 转换 *string → float64
+	amount, err := strconv.ParseFloat(*settleamount, 64)
+	if err != nil {
+		return fmt.Errorf("invalid settleamount: %v", err)
+	}
+
+	// 3. 查询任务列表
+	var tasks []gorm_model.YoungeeTaskInfo
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id IN ?", TaskIDs).Find(&tasks).Error
+	if err != nil {
+		return err
+	}
+
+	// 4. 更新 SettleAmount
+	for _, taskInfo := range tasks {
+		taskInfo.SettleAmount = amount
+		if err := db.Save(&taskInfo).Error; err != nil {
+			logrus.WithContext(ctx).Errorf("failed to update task SettleAmount")
+			return fmt.Errorf("failed to update task %s: %v", taskInfo.TaskID, err)
+		}
+	}
+
+	return nil
+}
+
+func SetLocalSettleAmount(ctx context.Context, settleamount *string, TaskIDs []string) error {
+	db := GetReadDB(ctx)
+	// 2. 转换 *string → float64
+	amount, err := strconv.ParseFloat(*settleamount, 64)
+	if err != nil {
+		return fmt.Errorf("invalid settleamount: %v", err)
+	}
+
+	// 3. 查询任务列表
+	var tasks []gorm_model.YoungeeLocalTaskInfo
+	err = db.Model(gorm_model.YoungeeLocalTaskInfo{}).Where("task_id IN ?", TaskIDs).Find(&tasks).Error
+	if err != nil {
+		return err
+	}
+
+	// 4. 更新 SettleAmount
+	for _, taskInfo := range tasks {
+		taskInfo.SettleAmount = amount
+		if err := db.Save(&taskInfo).Error; err != nil {
+			logrus.WithContext(ctx).Errorf("failed to update task SettleAmount")
+			return fmt.Errorf("failed to update task %s: %v", taskInfo.TaskId, err)
+		}
+	}
+	return nil
+}
+
 // SetSpecialTaskSettleNum 结案人数+1
 func SetSpecialTaskSettleNum(ctx context.Context, TaskIDs []string) error {
 	db := GetReadDB(ctx)
@@ -384,28 +401,26 @@ func SetSpecialTaskSettleNum(ctx context.Context, TaskIDs []string) error {
 	}
 	for _, taskInfo := range tasks {
 		if taskInfo.SupplierId != 0 && taskInfo.SupplierStatus == 2 {
-			//project招募数+1,预估成本+服务商价格
-			var projectinfo gorm_model.ProjectInfo
-			err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", taskInfo.ProjectID).Find(&projectinfo).Error
-			if err != nil {
-				return err
-			}
-			projectinfo.SettleNum += 1
-			err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ? ", taskInfo.ProjectID).Updates(projectinfo).Error
+			// 在事务中更新
+			err = db.Transaction(func(tx *gorm.DB) error {
+				// 更新 ProjectInfo
+				if err := tx.Model(gorm_model.ProjectInfo{}).
+					Where("project_id = ?", taskInfo.ProjectID).
+					Update("settle_num", gorm.Expr("settle_num + ?", 1)).
+					Error; err != nil {
+					return err
+				}
+				// 更新 YounggeeSProjectInfo
+				if err := tx.Model(gorm_model.YounggeeSProjectInfo{}).
+					Where("project_id = ?", taskInfo.SprojectId).
+					Update("settle_num", gorm.Expr("settle_num + ?", 1)).
+					Error; err != nil {
+					return err
+				}
+				return nil
+			})
 			if err != nil {
-				return err
-			}
-			//服务商s_project已招募人数+1
-			var sprojectinfo gorm_model.YounggeeSProjectInfo
-			err = db.Model(gorm_model.YounggeeSProjectInfo{}).Where(" s_project_id =?", taskInfo.SprojectId).Find(&sprojectinfo).Error
-			if err != nil {
-				return err
-			}
-			sprojectinfo.RecruitNum += 1
-			//fmt.Println("......", projectinfo.RecruitNum)
-			err = db.Model(gorm_model.YounggeeSProjectInfo{}).Where(" s_project_id =?", taskInfo.SprojectId).Updates(sprojectinfo).Error
-			if err != nil {
-				return err
+				return fmt.Errorf("failed to update settle_num: %v", err)
 			}
 		}
 		if taskInfo.SupplierId == 0 && taskInfo.SupplierStatus == 0 {
@@ -455,32 +470,31 @@ func SetSpecialLocalTaskSettleNum(ctx context.Context, TaskIDs []string) error {
 	}
 	for _, taskInfo := range tasks {
 		if taskInfo.SupplierId != 0 && taskInfo.SupplierStatus == 2 {
-			//project招募数+1,预估成本+服务商价格
-			var projectinfo gorm_model.YounggeeLocalLifeInfo
-			err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", taskInfo.LocalId).Find(&projectinfo).Error
-			if err != nil {
-				return err
-			}
-			projectinfo.SettleNum += 1
-			err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ? ", taskInfo.LocalId).Updates(projectinfo).Error
+			// 在事务中更新
+			err = db.Transaction(func(tx *gorm.DB) error {
+				// 更新 YounggeeLocalLifeInfo
+				if err := tx.Model(gorm_model.YounggeeLocalLifeInfo{}).
+					Where("local_id = ?", taskInfo.LocalId).
+					Update("settle_num", gorm.Expr("settle_num + ?", 1)).
+					Error; err != nil {
+					return err
+				}
+				// 更新 YounggeeSLocalLifeInfo
+				if err := tx.Model(gorm_model.YounggeeSLocalLifeInfo{}).
+					Where("s_local_life_id = ?", taskInfo.SLocalLifeId).
+					Update("settle_num", gorm.Expr("settle_num + ?", 1)).
+					Error; err != nil {
+					return err
+				}
+				return nil
+			})
 			if err != nil {
-				return err
-			}
-			//服务商s_project已招募人数+1
-			var sprojectinfo gorm_model.YounggeeSLocalLifeInfo
-			err = db.Model(gorm_model.YounggeeSLocalLifeInfo{}).Where(" s_local_life_id =?", taskInfo.SLocalLifeId).Find(&sprojectinfo).Error
-			if err != nil {
-				return err
-			}
-			sprojectinfo.RecruitNum += 1
-			fmt.Println("......", projectinfo.RecruitNum)
-			err = db.Model(gorm_model.YounggeeSLocalLifeInfo{}).Where(" s_local_life_id =?", taskInfo.SLocalLifeId).Updates(sprojectinfo).Error
-			if err != nil {
-				return err
+				return fmt.Errorf("failed to update settle_num: %v", err)
 			}
+
 		}
 		if taskInfo.SupplierId == 0 && taskInfo.SupplierStatus == 0 {
-			//project招募数+1
+			//project结案人数+1
 			var projectinfo gorm_model.YounggeeLocalLifeInfo
 			err = db.Model(gorm_model.YounggeeLocalLifeInfo{}).Where("local_id = ?", taskInfo.LocalId).Find(&projectinfo).Error
 			if err != nil {

+ 1 - 3
handler/qrcode.go

@@ -34,9 +34,7 @@ func (q GetWxQRCodeHandler) getRequest() interface{} {
 }
 
 func (q GetWxQRCodeHandler) run() {
-	req := http_model.GetWxQRCodeRequest{}
-	req = *q.req
-	data, err := service.QrCode.GetWxQrCode(q.ctx, req.Scene, req.Page)
+	data, err := service.QrCode.GetWxQrCode(q.ctx, q.req)
 	if err != nil {
 		logrus.WithContext(q.ctx).Errorf("[GetWxQRCodeHandler] error GetWxQrCode, err:%+v", err)
 		util.HandlerPackErrorResp(q.resp, consts.ErrorInternal, consts.DefaultToast)

+ 7 - 6
model/http_model/data_accept.go

@@ -2,12 +2,13 @@ package http_model
 
 type AcceptDataRequest struct {
 	//Payment   float64 `json:"payment"`      //招募策略id
-	TaskIds      string `json:"task_id_list"` //任务id列表
-	ProjectId    string `json:"project_id"`   //项目id
-	IsSpecial    int    `json:"is_special"`   // 是否为专项项目
-	OperatorId   string `json:"operator_id"`
-	OperateType  int    `json:"operate_type"`
-	EnterpriseId string `json:"enterprise_id"`
+	TaskIds      string  `json:"task_id_list"` //任务id列表
+	ProjectId    string  `json:"project_id"`   //项目id
+	IsSpecial    int     `json:"is_special"`   // 是否为专项项目
+	OperatorId   string  `json:"operator_id"`
+	OperateType  int     `json:"operate_type"`
+	EnterpriseId string  `json:"enterprise_id"`
+	SettleAmount *string `json:"settle_amount"`
 }
 
 type AcceptDataData struct {

+ 7 - 6
model/http_model/data_localaccept.go

@@ -2,12 +2,13 @@ package http_model
 
 type LocalAcceptDataRequest struct {
 	//Payment   float64 `json:"payment"`      //招募策略id
-	TaskIds      string `json:"task_id_list"` //任务id列表
-	ProjectId    string `json:"project_id"`   //项目id
-	IsSpecial    int    `json:"is_special"`   // 是否为专项项目
-	OperatorId   string `json:"operator_id"`
-	OperateType  int    `json:"operate_type"`
-	EnterpriseId string `json:"enterprise_id"`
+	TaskIds      string  `json:"task_id_list"` //任务id列表
+	ProjectId    string  `json:"project_id"`   //项目id
+	IsSpecial    int     `json:"is_special"`   // 是否为专项项目
+	OperatorId   string  `json:"operator_id"`
+	OperateType  int     `json:"operate_type"`
+	EnterpriseId string  `json:"enterprise_id"`
+	SettleAmount *string `json:"settle_amount"`
 }
 
 type LocalAcceptDataData struct {

+ 7 - 2
model/http_model/qecode.go

@@ -1,8 +1,13 @@
 package http_model
 
 type GetWxQRCodeRequest struct {
-	Scene string `json:"scene"` // 需要携带的参数,目前为任务id
-	Page  string `json:"page"`  // 页面path
+	Scene       string `json:"scene"`        // 需要携带的参数,目前为任务id
+	Page        string `json:"page"`         // 页面path
+	SelectionId string `json:"selection_id"` // 带货任务ID
+	ProjectId   string `json:"project_id"`   // 种草任务ID
+	SProjectId  int    `json:"s_project_id"` // 服务商种草任务ID
+	LocalId     string `json:"local_id"`     // 本地生活ID
+	SLocalId    int    `json:"s_local_id"`   // 服务商本地生活ID
 }
 
 type WxAccessTokenResponse struct {

+ 10 - 5
route/init.go

@@ -57,6 +57,12 @@ func InitRoute(r *gin.Engine) {
 		accountInfo.POST("/contactInfo/update", handler.WrapUpdateContactInfoHandler) // 联系方式-更新
 	}
 
+	qrCode := r.Group("/youngee/qrCode")
+	{
+		qrCode.Use(middleware.LoginAuthMiddleware)
+		qrCode.POST("/getWXQrCode", handler.WrapGetWxQRCodeHandler) // 获取微信二维码
+	}
+
 	//r.Any("/testDemo", func(c *gin.Context) {
 	//	resp := http_model.CommonResponse{
 	//		Status:  0,
@@ -159,9 +165,7 @@ func InitRoute(r *gin.Engine) {
 		m.POST("/workspace/ddlproject", handler.WrapWorkspaceDDLprojectHandler)                  // 工作台项目统计
 		m.POST("/project/recruit/getservicecharge", handler.WrapGetServiceChargeHandler)         // 获取产品置换服务费
 		m.POST("/product/deletePhotoUrl", handler.WrapDeletePhotoUrlHandler)                     // 在数据库中删除图片url
-		m.POST("/qrcode/getwxqrcode", handler.WrapGetWxQRCodeHandler)                            // 获取微信二维码
-
-		m.POST("/project/getAllProduct", handler.WrapGetAllProjectHandler) // 查询项目广场项目列表
+		m.POST("/project/getAllProduct", handler.WrapGetAllProjectHandler)                       // 查询项目广场项目列表
 
 	}
 
@@ -361,8 +365,9 @@ func InitRoute(r *gin.Engine) {
 		finance.POST("/recharge/count", controller.FinanceController{}.RechargeInfoCount)            // 充值管理——充值记录-角标
 		// YG官方汇款账号
 
-		finance.POST("/invoice/default/update", controller.FinanceController{}.UpdateInvoiceDefault) // 设置默认开票抬头
-		finance.POST("/invoice/default/get", controller.FinanceController{}.GetInvoiceDefault)       // 获取默认开票抬头
+		finance.POST("/invoice/talent", controller.FinanceController{}.GetEnterpriseMessage)         // 获取默认开票抬头
+		finance.POST("/invoice/default/update", controller.FinanceController{}.UpdateInvoiceDefault) // 设置默认开票信息(专票)
+		finance.POST("/invoice/default/get", controller.FinanceController{}.GetInvoiceDefault)       // 获取默认开票信息(专票)
 		finance.POST("/invoice/bill", controller.FinanceController{}.BillInvoice)                    // 确认开票
 		finance.POST("/invoice/list/bill", controller.FinanceController{}.GetBillList)               // 开票记录
 		finance.POST("/invoice/list/billable", controller.FinanceController{}.GetBillableList)       // 可开票账单

+ 16 - 61
service/data.go

@@ -2,6 +2,7 @@ package service
 
 import (
 	"context"
+	"errors"
 	"fmt"
 	"strings"
 	"youngee_b_api/db"
@@ -124,27 +125,20 @@ func (*data) AcceptData(ctx context.Context, request http_model.AcceptDataReques
 			logrus.WithContext(ctx).Errorf("[Data service] call SetSpecialTaskSettleNum error,err:%+v", err)
 			return nil, err
 		}
-
+		if request.SettleAmount == nil {
+			return nil, errors.New("SettleAmount is nil")
+		}
+		err = db.SetSettleAmount(ctx, request.SettleAmount, TaskIDList)
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[Data service] call SetSettleAmount error,err:%+v", err)
+			return nil, err
+		}
 		err = db.SetProjectSettleFlag(ctx, request.ProjectId)
 		if err != nil {
 			logrus.WithContext(ctx).Errorf("[Data service] call SetProjectSettleFlag error,err:%+v", err)
 			return nil, err
 		}
-		//// 3. 判断是否全部任务已结案,若已全部结案则触发项目结案
-		//// 查询task_stage<15的任务数量
-		//unFinishedTaskNumber, err1 := db.GetUnfinishedTaskNumber(ctx, request.ProjectId)
-		//if err1 != nil {
-		//	logrus.WithContext(ctx).Errorf("[Data service] call GetUnfinishedTaskNumber error,err:%+v", err)
-		//	return nil, err
-		//}
-		//if *unFinishedTaskNumber == 0 { // 若为0则触发项目结案
-		//	err := db.SetSpecialProjectFinish(ctx, request.ProjectId)
-		//	if err1 != nil {
-		//		logrus.WithContext(ctx).Errorf("[Data service] call SetProjectFinish error,err:%+v", err)
-		//		return nil, err
-		//	}
-		//	//res.IsEnd = 1
-		//}
+
 	} else {
 		// 2. 更新YoungeeTaskInfo表,将任务结案
 		//fmt.Printf("acc request %+v", TaskIDList)
@@ -168,21 +162,6 @@ func (*data) AcceptData(ctx context.Context, request http_model.AcceptDataReques
 			logrus.WithContext(ctx).Errorf("[Data service] call SetProjectSettleFlag error,err:%+v", err)
 			return nil, err
 		}
-		// 3. 判断是否全部任务已结案,若已全部结案则触发项目结案
-		// 查询task_stage<15的任务数量
-		//unFinishedTaskNumber, err1 := db.GetUnfinishedTaskNumber(ctx, request.ProjectId)
-		//if err1 != nil {
-		//	logrus.WithContext(ctx).Errorf("[Data service] call GetUnfinishedTaskNumber error,err:%+v", err)
-		//	return nil, err
-		//}
-		//if *unFinishedTaskNumber == 0 { // 若为0则触发项目结案
-		//	err := db.SetProjectFinish(ctx, request.ProjectId)
-		//	if err1 != nil {
-		//		logrus.WithContext(ctx).Errorf("[Data service] call SetProjectFinish error,err:%+v", err)
-		//		return nil, err
-		//	}
-		//	res.IsEnd = 1
-		//}
 	}
 	return res, nil
 }
@@ -234,26 +213,17 @@ func (*data) LocalAcceptData(ctx context.Context, request http_model.LocalAccept
 			logrus.WithContext(ctx).Errorf("[Data service] call SetSpecialTaskSettleNum error,err:%+v", err)
 			return nil, err
 		}
+		err = db.SetLocalSettleAmount(ctx, request.SettleAmount, TaskIDList)
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[Data service] call SetSettleAmount error,err:%+v", err)
+			return nil, err
+		}
 		err = db.SetLocalLifeSettleFlag(ctx, request.ProjectId)
 		if err != nil {
 			logrus.WithContext(ctx).Errorf("[Data service] call SetLocalLifeSettleFlag error,err:%+v", err)
 			return nil, err
 		}
-		//// 3. 判断是否全部任务已结案,若已全部结案则触发项目结案
-		//// 查询task_stage<15的任务数量
-		//unFinishedTaskNumber, err1 := db.GetUnfinishedTaskNumber(ctx, request.ProjectId)
-		//if err1 != nil {
-		//	logrus.WithContext(ctx).Errorf("[Data service] call GetUnfinishedTaskNumber error,err:%+v", err)
-		//	return nil, err
-		//}
-		//if *unFinishedTaskNumber == 0 { // 若为0则触发项目结案
-		//	err := db.SetSpecialProjectFinish(ctx, request.ProjectId)
-		//	if err1 != nil {
-		//		logrus.WithContext(ctx).Errorf("[Data service] call SetProjectFinish error,err:%+v", err)
-		//		return nil, err
-		//	}
-		//	res.IsEnd = 1
-		//}
+
 	} else {
 		// 2. 更新YoungeeTaskInfo表,将任务结案
 		fmt.Printf("acc request %+v", TaskIDList)
@@ -277,21 +247,6 @@ func (*data) LocalAcceptData(ctx context.Context, request http_model.LocalAccept
 			logrus.WithContext(ctx).Errorf("[Data service] call SetLocalLifeSettleFlag error,err:%+v", err)
 			return nil, err
 		}
-		//// 3. 判断是否全部任务已结案,若已全部结案则触发项目结案
-		//// 查询task_stage<15的任务数量
-		//unFinishedTaskNumber, err1 := db.GetUnfinishedTaskNumber(ctx, request.ProjectId)
-		//if err1 != nil {
-		//	logrus.WithContext(ctx).Errorf("[Data service] call GetUnfinishedTaskNumber error,err:%+v", err)
-		//	return nil, err
-		//}
-		//if *unFinishedTaskNumber == 0 { // 若为0则触发项目结案
-		//	err := db.SetProjectFinish(ctx, request.ProjectId)
-		//	if err1 != nil {
-		//		logrus.WithContext(ctx).Errorf("[Data service] call SetProjectFinish error,err:%+v", err)
-		//		return nil, err
-		//	}
-		//	res.IsEnd = 1
-		//}
 	}
 	return res, nil
 }

+ 33 - 5
service/qrcode.go

@@ -8,6 +8,7 @@ import (
 	"fmt"
 	"io/ioutil"
 	"net/http"
+	"strconv"
 	"strings"
 	"time"
 	"youngee_b_api/consts"
@@ -37,7 +38,8 @@ func QrCodeInit(config *system_model.Session) {
 // getAndCacheWxAccessToken 获取并缓存微信的access token
 func getAndCacheWxAccessToken(ctx context.Context) (string, error) {
 	appId := "wxac396a3be7a16844"
-	secret := "c82ae9e75b4ed7d8022db5bda5371892"
+	// secret := "c82ae9e75b4ed7d8022db5bda5371892"
+	secret := "abbf27d46c46212c86e60f2ed3c534ee"
 	url := fmt.Sprintf(accessTokenUrlFormat, appId, secret)
 
 	resp, err := http.Get(url)
@@ -65,7 +67,7 @@ func getAndCacheWxAccessToken(ctx context.Context) (string, error) {
 	return accessTokenRes.AccessToken, nil
 }
 
-func (q *qrcode) GetWxQrCode(ctx context.Context, Scene string, Page string) (*http_model.GetWxQRCodeData, error) {
+func (q *qrcode) GetWxQrCode(ctx context.Context, req *http_model.GetWxQRCodeRequest) (*http_model.GetWxQRCodeData, error) {
 	// 获取access_token
 	accessToken, err := redis.Get(ctx, wxAccesssTokenKey)
 	if err != nil && err != consts.RedisNil {
@@ -81,12 +83,38 @@ func (q *qrcode) GetWxQrCode(ctx context.Context, Scene string, Page string) (*h
 		}
 	}
 
+	var reqPath string
+	var reqData string
+
+	if req.SelectionId != "" {
+		reqPath = "pageCommerce/taskDetail"
+		reqData = req.SelectionId
+	}
+	if req.SProjectId != 0 || req.ProjectId != "" {
+		reqPath = "pageRecommend/recommendDetail"
+		if req.SProjectId != 0 {
+			reqData = "0" + "-" + strconv.Itoa(req.SProjectId)
+		} else {
+			reqData = req.ProjectId + "-" + "0"
+		}
+	}
+	if req.SLocalId != 0 || req.LocalId != "" {
+		reqPath = "pageLife/lifeDetail"
+		if req.SLocalId != 0 {
+			reqData = "0" + "-" + strconv.Itoa(req.SLocalId)
+		} else {
+			reqData = req.LocalId + "-" + "0"
+		}
+	}
+
+	fmt.Printf("reqData: %+v\n", reqData)
+
 	qrRequest := http_model.WxQrCodeRequest{
-		Scene:      Scene,
-		Page:       Page,
+		Scene:      reqData,
+		Page:       reqPath,
 		Width:      430,
 		CheckPath:  false,
-		EnvVersion: "release",
+		EnvVersion: "trial",
 	}
 	jsonBody, err := json.Marshal(qrRequest)
 	if err != nil {