Procházet zdrojové kódy

Merge remote-tracking branch 'origin/develop' into develop

lin-jim-leon před 1 měsícem
rodič
revize
b2da9d8296

+ 279 - 0
app/controller/account_controller.go

@@ -3,6 +3,8 @@ package controller
 import (
 	"github.com/gin-gonic/gin"
 	"github.com/sirupsen/logrus"
+	"youngee_b_api/app/dao"
+	"youngee_b_api/app/entity"
 	"youngee_b_api/app/service/review_service"
 	"youngee_b_api/app/vo"
 )
@@ -27,3 +29,280 @@ func (t AccountController) OCRIdentify(c *gin.Context) {
 	}
 	returnSuccess(c, 20000, resultMap)
 }
+
+// 策略配置-自动执行&违约规则
+func (t AccountController) StrategyAuto(c *gin.Context) {
+	param := &vo.InfoAutoParam{}
+	err := c.BindJSON(param)
+	if err != nil {
+		logrus.Errorf("Request bind err:%+v\n", err)
+		returnError(c, 40000, "Parameter Error: "+err.Error())
+		return
+	}
+	autoTaskInfoLast := dao.InfoAutoTaskDao{}.GetAutoTaskLast(param.EnterpriseId)
+	autoTaskInfoNew := entity.InfoAutoTask{
+		EnterpriseID:                 param.EnterpriseId,
+		ReviewAuto:                   autoTaskInfoLast.ReviewAuto,
+		LinkReviewAuto:               autoTaskInfoLast.LinkReviewAuto,
+		TaskFinishAuto:               autoTaskInfoLast.TaskFinishAuto,
+		Invalid:                      autoTaskInfoLast.Invalid,
+		SelectionInvalid:             autoTaskInfoLast.SelectionInvalid,
+		DraftDefault:                 autoTaskInfoLast.DraftDefault,
+		DraftCooperateProjectDefault: autoTaskInfoLast.DraftCooperateProjectDefault,
+		DraftStoreDefault:            autoTaskInfoLast.DraftStoreDefault,
+		DraftCooperateLocalDefault:   autoTaskInfoLast.DraftCooperateLocalDefault,
+		LinkBreach:                   autoTaskInfoLast.LinkBreach,
+		CaseCloseDefault:             autoTaskInfoLast.CaseCloseDefault,
+
+		ReviewAutoOperator:                   autoTaskInfoLast.ReviewAutoOperator,
+		LinkReviewAutoOperator:               autoTaskInfoLast.LinkReviewAutoOperator,
+		TaskFinishAutoOperator:               autoTaskInfoLast.TaskFinishAutoOperator,
+		InvalidOperator:                      autoTaskInfoLast.InvalidOperator,
+		SelectionInvalidOperator:             autoTaskInfoLast.SelectionInvalidOperator,
+		DraftDefaultOperator:                 autoTaskInfoLast.DraftDefaultOperator,
+		DraftCooperateProjectDefaultOperator: autoTaskInfoLast.DraftCooperateProjectDefaultOperator,
+		DraftStoreDefaultOperator:            autoTaskInfoLast.DraftStoreDefaultOperator,
+		DraftCooperateLocalDefaultOperator:   autoTaskInfoLast.DraftCooperateLocalDefaultOperator,
+		LinkBreachOperator:                   autoTaskInfoLast.LinkBreachOperator,
+		CaseCloseDefaultOperator:             autoTaskInfoLast.CaseCloseDefaultOperator,
+	}
+	if param.ReviewAuto != 0 {
+		autoTaskInfoNew.ReviewAuto = param.ReviewAuto
+		autoTaskInfoNew.ReviewAutoOperator = param.EnterpriseId
+	}
+	if param.LinkReviewAuto != 0 {
+		autoTaskInfoNew.LinkReviewAuto = param.LinkReviewAuto
+		autoTaskInfoNew.LinkReviewAutoOperator = param.EnterpriseId
+	}
+	if param.TaskFinishAuto != 0 {
+		autoTaskInfoNew.TaskFinishAuto = param.TaskFinishAuto
+		autoTaskInfoNew.TaskFinishAutoOperator = param.EnterpriseId
+	}
+	if param.Invalid != 0 {
+		autoTaskInfoNew.Invalid = param.Invalid
+		autoTaskInfoNew.InvalidOperator = param.EnterpriseId
+	}
+	if param.SelectionInvalid != 0 {
+		autoTaskInfoNew.SelectionInvalid = param.SelectionInvalid
+		autoTaskInfoNew.SelectionInvalidOperator = param.EnterpriseId
+	}
+	if param.DraftDefault != 0 {
+		autoTaskInfoNew.DraftDefault = param.DraftDefault
+		autoTaskInfoNew.DraftDefaultOperator = param.EnterpriseId
+	}
+	if param.DraftCooperateProjectDefault != 0 {
+		autoTaskInfoNew.DraftCooperateProjectDefault = param.DraftCooperateProjectDefault
+		autoTaskInfoNew.DraftCooperateProjectDefaultOperator = param.EnterpriseId
+	}
+	if param.DraftStoreDefault != 0 {
+		autoTaskInfoNew.DraftStoreDefault = param.DraftStoreDefault
+		autoTaskInfoNew.DraftStoreDefaultOperator = param.EnterpriseId
+	}
+	if param.DraftCooperateLocalDefault != 0 {
+		autoTaskInfoNew.DraftCooperateLocalDefault = param.DraftCooperateLocalDefault
+		autoTaskInfoNew.DraftCooperateLocalDefaultOperator = param.EnterpriseId
+	}
+	if param.LinkBreach != 0 {
+		autoTaskInfoNew.LinkBreach = param.LinkBreach
+		autoTaskInfoNew.LinkBreachOperator = param.EnterpriseId
+	}
+	if param.CaseCloseDefault != 0 {
+		autoTaskInfoNew.CaseCloseDefault = param.CaseCloseDefault
+		autoTaskInfoNew.CaseCloseDefaultOperator = param.EnterpriseId
+	}
+	err1 := dao.InfoAutoTaskDao{}.Insert(autoTaskInfoNew)
+	if err1 != nil {
+		logrus.Errorf("[StrategyAuto] call Insert err:%+v\n", err1)
+		returnError(c, 40000, err1.Error())
+		return
+	}
+
+	returnSuccess(c, 20000, nil)
+}
+
+// 策略配置-违约扣款
+func (t AccountController) StrategyDefaultPayment(c *gin.Context) {
+	param := &vo.InfoAutoDefaultParam{}
+	err := c.BindJSON(param)
+	if err != nil {
+		logrus.Errorf("Request bind err:%+v\n", err)
+		returnError(c, 40000, "Parameter Error: "+err.Error())
+		return
+	}
+	autoDefaultInfoLast := dao.InfoAutoDefaultDao{}.GetAutoDefaultLast(param.EnterpriseId)
+	infoAutoDefaultNew := entity.InfoAutoDefault{
+		EnterpriseID:         param.EnterpriseId,
+		SketchOtherTimeOut:   autoDefaultInfoLast.SketchOtherTimeOut,
+		SketchOtherNotUpload: autoDefaultInfoLast.SketchOtherNotUpload,
+		LinkReplaceTimeOut:   autoDefaultInfoLast.LinkReplaceTimeOut,
+		LinkReplaceNotUpload: autoDefaultInfoLast.LinkReplaceNotUpload,
+		DataReplaceTimeOut:   autoDefaultInfoLast.DataReplaceTimeOut,
+		DataReplaceNotUpload: autoDefaultInfoLast.DataReplaceNotUpload,
+
+		SketchOtherTimeOutOperator:   autoDefaultInfoLast.SketchOtherTimeOutOperator,
+		SketchOtherNotUploadOperator: autoDefaultInfoLast.SketchOtherNotUploadOperator,
+		LinkReplaceTimeOutOperator:   autoDefaultInfoLast.LinkReplaceTimeOutOperator,
+		LinkReplaceNotUploadOperator: autoDefaultInfoLast.LinkReplaceNotUploadOperator,
+		DataReplaceTimeOutOperator:   autoDefaultInfoLast.DataReplaceTimeOutOperator,
+		DataReplaceNotUploadOperator: autoDefaultInfoLast.DataReplaceNotUploadOperator,
+	}
+	if param.SketchOtherTimeOut != 0 {
+		infoAutoDefaultNew.SketchOtherTimeOut = param.SketchOtherTimeOut
+		infoAutoDefaultNew.SketchOtherNotUploadOperator = param.EnterpriseId
+	}
+	if param.SketchOtherNotUpload != 0 {
+		infoAutoDefaultNew.SketchOtherNotUpload = param.SketchOtherNotUpload
+		infoAutoDefaultNew.SketchOtherNotUploadOperator = param.EnterpriseId
+	}
+	if param.LinkReplaceTimeOut != 0 {
+		infoAutoDefaultNew.LinkReplaceTimeOut = param.LinkReplaceTimeOut
+		infoAutoDefaultNew.LinkReplaceTimeOutOperator = param.EnterpriseId
+	}
+	if param.LinkReplaceNotUpload != 0 {
+		infoAutoDefaultNew.LinkReplaceNotUpload = param.LinkReplaceNotUpload
+		infoAutoDefaultNew.LinkReplaceNotUploadOperator = param.EnterpriseId
+	}
+	if param.DataReplaceTimeOut != 0 {
+		infoAutoDefaultNew.DataReplaceTimeOut = param.DataReplaceTimeOut
+		infoAutoDefaultNew.DataReplaceTimeOutOperator = param.EnterpriseId
+	}
+	if param.DataReplaceNotUpload != 0 {
+		infoAutoDefaultNew.DataReplaceNotUpload = param.DataReplaceNotUpload
+		infoAutoDefaultNew.DataReplaceNotUploadOperator = param.EnterpriseId
+	}
+	err1 := dao.InfoAutoDefaultDao{}.Insert(infoAutoDefaultNew)
+	if err1 != nil {
+		logrus.Errorf("[StrategyDefaultPayment] call Insert err:%+v\n", err1)
+		returnError(c, 40000, err1.Error())
+		return
+	}
+
+	returnSuccess(c, 20000, nil)
+}
+
+// 策略配置-自动执行&违约规则 详情
+func (t AccountController) StrategyAutoDetail(c *gin.Context) {
+	param := &vo.InfoAutoParam{}
+	err := c.BindJSON(param)
+	if err != nil {
+		logrus.Errorf("Request bind err:%+v\n", err)
+		returnError(c, 40000, "Parameter Error: "+err.Error())
+		return
+	}
+	autoTaskInfo := dao.InfoAutoTaskDao{}.GetAutoTaskLast(param.EnterpriseId)
+	reInfoAuto := vo.ReInfoAuto{
+		ReviewAuto:                           autoTaskInfo.ReviewAuto,
+		LinkReviewAuto:                       autoTaskInfo.LinkReviewAuto,
+		TaskFinishAuto:                       autoTaskInfo.TaskFinishAuto,
+		Invalid:                              autoTaskInfo.Invalid,
+		SelectionInvalid:                     autoTaskInfo.SelectionInvalid,
+		DraftDefault:                         autoTaskInfo.DraftDefault,
+		DraftCooperateProjectDefault:         autoTaskInfo.DraftCooperateProjectDefault,
+		DraftStoreDefault:                    autoTaskInfo.DraftStoreDefault,
+		DraftCooperateLocalDefault:           autoTaskInfo.DraftCooperateLocalDefault,
+		LinkBreach:                           autoTaskInfo.LinkBreach,
+		CaseCloseDefault:                     autoTaskInfo.CaseCloseDefault,
+		ReviewAutoOperator:                   "样叽系统",
+		LinkReviewAutoOperator:               "样叽系统",
+		TaskFinishAutoOperator:               "样叽系统",
+		InvalidOperator:                      "样叽系统",
+		SelectionInvalidOperator:             "样叽系统",
+		DraftDefaultOperator:                 "样叽系统",
+		DraftCooperateProjectDefaultOperator: "样叽系统",
+		DraftStoreDefaultOperator:            "样叽系统",
+		DraftCooperateLocalDefaultOperator:   "样叽系统",
+		LinkBreachOperator:                   "样叽系统",
+		CaseCloseDefaultOperator:             "样叽系统",
+	}
+	var businessName string
+	enterprise, err1 := dao.EnterpriseDao{}.GetEnterprise(autoTaskInfo.EnterpriseID)
+	if err1 != nil && enterprise != nil {
+		businessName = enterprise.BusinessName
+	}
+	if autoTaskInfo.ReviewAutoOperator != "0" {
+		reInfoAuto.ReviewAutoOperator = businessName
+	}
+	if autoTaskInfo.LinkReviewAutoOperator != "0" {
+		reInfoAuto.LinkReviewAutoOperator = businessName
+	}
+	if autoTaskInfo.TaskFinishAutoOperator != "0" {
+		reInfoAuto.TaskFinishAutoOperator = businessName
+	}
+	if autoTaskInfo.InvalidOperator != "0" {
+		reInfoAuto.InvalidOperator = businessName
+	}
+	if autoTaskInfo.SelectionInvalidOperator != "0" {
+		reInfoAuto.SelectionInvalidOperator = businessName
+	}
+	if autoTaskInfo.DraftDefaultOperator != "0" {
+		reInfoAuto.DraftDefaultOperator = businessName
+	}
+	if autoTaskInfo.DraftCooperateProjectDefaultOperator != "0" {
+		reInfoAuto.DraftCooperateProjectDefaultOperator = businessName
+	}
+	if autoTaskInfo.DraftStoreDefaultOperator != "0" {
+		reInfoAuto.DraftStoreDefaultOperator = businessName
+	}
+	if autoTaskInfo.DraftCooperateLocalDefaultOperator != "0" {
+		reInfoAuto.DraftCooperateLocalDefaultOperator = businessName
+	}
+	if autoTaskInfo.LinkBreachOperator != "0" {
+		reInfoAuto.LinkBreachOperator = businessName
+	}
+	if autoTaskInfo.CaseCloseDefaultOperator != "0" {
+		reInfoAuto.CaseCloseDefaultOperator = businessName
+	}
+
+	returnSuccess(c, 20000, reInfoAuto)
+}
+
+// 策略配置-违约扣款 详情
+func (t AccountController) StrategyDefaultPaymentPaymentDetail(c *gin.Context) {
+	param := &vo.InfoAutoDefaultParam{}
+	err := c.BindJSON(param)
+	if err != nil {
+		logrus.Errorf("Request bind err:%+v\n", err)
+		returnError(c, 40000, "Parameter Error: "+err.Error())
+		return
+	}
+	autoDefaultInfo := dao.InfoAutoDefaultDao{}.GetAutoDefaultLast(param.EnterpriseId)
+	reInfoAutoDefault := vo.ReInfoAutoDefault{
+		SketchOtherTimeOut:           autoDefaultInfo.SketchOtherTimeOut,
+		SketchOtherNotUpload:         autoDefaultInfo.SketchOtherNotUpload,
+		LinkReplaceTimeOut:           autoDefaultInfo.LinkReplaceTimeOut,
+		LinkReplaceNotUpload:         autoDefaultInfo.LinkReplaceNotUpload,
+		DataReplaceTimeOut:           autoDefaultInfo.DataReplaceTimeOut,
+		DataReplaceNotUpload:         autoDefaultInfo.DataReplaceNotUpload,
+		SketchOtherTimeOutOperator:   "样叽系统",
+		SketchOtherNotUploadOperator: "样叽系统",
+		LinkReplaceTimeOutOperator:   "样叽系统",
+		LinkReplaceNotUploadOperator: "样叽系统",
+		DataReplaceTimeOutOperator:   "样叽系统",
+		DataReplaceNotUploadOperator: "样叽系统",
+	}
+	var businessName string
+	enterprise, err1 := dao.EnterpriseDao{}.GetEnterprise(autoDefaultInfo.EnterpriseID)
+	if err1 != nil && enterprise != nil {
+		businessName = enterprise.BusinessName
+	}
+	if autoDefaultInfo.SketchOtherTimeOutOperator != "0" {
+		reInfoAutoDefault.SketchOtherTimeOutOperator = businessName
+	}
+	if autoDefaultInfo.SketchOtherNotUploadOperator != "0" {
+		reInfoAutoDefault.SketchOtherNotUploadOperator = businessName
+	}
+	if autoDefaultInfo.LinkReplaceTimeOutOperator != "0" {
+		reInfoAutoDefault.LinkReplaceTimeOutOperator = businessName
+	}
+	if autoDefaultInfo.LinkReplaceNotUploadOperator != "0" {
+		reInfoAutoDefault.LinkReplaceNotUploadOperator = businessName
+	}
+	if autoDefaultInfo.DataReplaceTimeOutOperator != "0" {
+		reInfoAutoDefault.DataReplaceTimeOutOperator = businessName
+	}
+	if autoDefaultInfo.DataReplaceNotUploadOperator != "0" {
+		reInfoAutoDefault.DataReplaceNotUploadOperator = businessName
+	}
+
+	returnSuccess(c, 20000, reInfoAutoDefault)
+}

+ 71 - 0
app/controller/workspace_controller.go

@@ -272,3 +272,74 @@ func (t WorkspaceController) GetDefault(c *gin.Context) {
 
 	returnSuccess(c, 20000, resultMap)
 }
+
+// 合作待办-任务邀约
+func (t WorkspaceController) GetTaskInvite(c *gin.Context) {
+	param := &vo.CommonParam{}
+	err := c.BindJSON(param)
+	if err != nil {
+		logrus.Errorf("Request bind err:%+v\n", err)
+		returnError(c, 40000, "Parameter Error: "+err.Error())
+		return
+	}
+	projectToDo, err1 := service.ProjectService{}.GetTaskInviteToDo(param.EnterpriseId, param.SubAccountId)
+	if err1 != nil {
+		logrus.Errorf("[ProjectService] call Show err:%+v\n", err1)
+		returnError(c, 40000, err1.Error())
+		return
+	}
+	localLifeToDo, err2 := service.LocalLifeService{}.GetTaskInviteToDo(param.EnterpriseId, param.SubAccountId)
+	if err2 != nil {
+		logrus.Errorf("[ProjectService] call Show err:%+v\n", err2)
+		returnError(c, 40000, err2.Error())
+		return
+	}
+	resultMap := make(map[string]*map[string]map[string]int64)
+	resultMap["projectToDo"] = &projectToDo
+	resultMap["localLifeToDo"] = &localLifeToDo
+	returnSuccess(c, 20000, resultMap)
+}
+
+// 合作待办-入库邀约
+func (t WorkspaceController) GetWarehouseInvite(c *gin.Context) {
+	param := &vo.CommonParam{}
+	err := c.BindJSON(param)
+	if err != nil {
+		logrus.Errorf("Request bind err:%+v\n", err)
+		returnError(c, 40000, "Parameter Error: "+err.Error())
+		return
+	}
+	resultMap := make(map[string]int64)
+	resultMap["inviteConfirming"] = 0
+	returnSuccess(c, 20000, resultMap)
+}
+
+// 财务待办-充值与发票
+func (t WorkspaceController) GetFinance(c *gin.Context) {
+	param := &vo.CommonParam{}
+	err := c.BindJSON(param)
+	if err != nil {
+		logrus.Errorf("Request bind err:%+v\n", err)
+		returnError(c, 40000, "Parameter Error: "+err.Error())
+		return
+	}
+	// 充值确认中
+	confirmingRecharge, err1 := service.RechargeService{}.GetFinance(param)
+	if err1 != nil {
+		logrus.Errorf("[RechargeService] call Show err:%+v\n", err1)
+		returnError(c, 40000, err1.Error())
+		return
+	}
+	// 开票中
+	invoicingAmount, err2 := service.InvoiceService{}.GetFinance(param)
+	if err2 != nil {
+		logrus.Errorf("[InvoiceService] call Show err:%+v\n", err2)
+		returnError(c, 40000, err2.Error())
+		return
+	}
+	res := make(map[string]float64)
+	res["confirmingRecharge"] = confirmingRecharge
+	res["invoicingAmount"] = invoicingAmount
+
+	returnSuccess(c, 20000, res)
+}

+ 9 - 0
app/dao/info_auto_default_dao.go

@@ -10,6 +10,9 @@ type InfoAutoDefaultDao struct{}
 func (d InfoAutoDefaultDao) GetAutoDefaultLast(enterpriseId string) entity.InfoAutoDefault {
 	autoDefaultInfo := entity.InfoAutoDefault{}
 	Db.Model(&entity.InfoAutoDefault{}).Where("enterprise_id = ?", enterpriseId).Last(&autoDefaultInfo)
+	if autoDefaultInfo.AutoDefaultID == 0 {
+		Db.Model(&entity.InfoAutoDefault{}).Where("auto_default_id = ?", 0).Find(&autoDefaultInfo)
+	}
 	return autoDefaultInfo
 }
 
@@ -19,3 +22,9 @@ func (d InfoAutoDefaultDao) GetValueByIdFieldName(autoDefaultId int64, fieldName
 	Db.Model(&entity.InfoAutoDefault{}).Select(fieldName).Where("auto_default_id = ?", autoDefaultId).Find(&value)
 	return value
 }
+
+// 为当前 enterpriseId 插入新的策略配置
+func (d InfoAutoDefaultDao) Insert(infoAutoDefault entity.InfoAutoDefault) error {
+	err := Db.Model(&entity.InfoAutoDefault{}).Create(&infoAutoDefault).Error
+	return err
+}

+ 9 - 0
app/dao/info_auto_task_dao.go

@@ -10,6 +10,9 @@ type InfoAutoTaskDao struct{}
 func (d InfoAutoTaskDao) GetAutoTaskLast(enterpriseId string) entity.InfoAutoTask {
 	autoTaskInfo := entity.InfoAutoTask{}
 	Db.Model(&entity.InfoAutoTask{}).Where("enterprise_id = ?", enterpriseId).Last(&autoTaskInfo)
+	if autoTaskInfo.AutoTaskID == 0 {
+		Db.Model(&entity.InfoAutoTask{}).Where("auto_task_id = ?", 0).Find(&autoTaskInfo)
+	}
 	return autoTaskInfo
 }
 
@@ -19,3 +22,9 @@ func (d InfoAutoTaskDao) GetValueByIdFieldName(autoTaskId int64, fieldName strin
 	Db.Model(&entity.InfoAutoTask{}).Select(fieldName).Where("auto_task_id = ?", autoTaskId).First(&autoTaskInfo)
 	return autoTaskInfo
 }
+
+// 为当前 enterpriseId 插入新的策略配置
+func (d InfoAutoTaskDao) Insert(autoTaskInfo entity.InfoAutoTask) error {
+	err := Db.Debug().Model(&entity.InfoAutoTask{}).Create(&autoTaskInfo).Error
+	return err
+}

+ 11 - 0
app/dao/invoice_record_dao.go

@@ -118,3 +118,14 @@ func (d InvoiceRecordDao) GetBillableProjectList(enterpriseId string, subAccount
 //
 //	return billableProjects, total, nil
 //}
+
+// 获取指定企业id的开票中/已开票金额
+func (d InvoiceRecordDao) GetInvoiceAmount(enterpriseId string, status int64) (float64, error) {
+	var totalAmount float64
+	query := Db.Debug().Model(&entity.InvoiceRecord{})
+	err := query.Where("enterprise_id = ? AND status = ?", enterpriseId, status).Select("COALESCE(SUM(invoice_amount), 0)").Scan(&totalAmount).Error
+	if err != nil {
+		return 0, err
+	}
+	return totalAmount, nil
+}

+ 80 - 0
app/dao/local_life_dao.go

@@ -591,3 +591,83 @@ func (d LocalLifeDao) GetLocalLifeFinished(enterpriseId string, invoiceStatus in
 	}
 	return localLifeAmount, err
 }
+
+// 合作待办-任务邀约
+func (d LocalLifeDao) GetTaskInviteToDo(enterpriseId string, subAccountId int64, platform int64) (map[string]int64, error) {
+	resultMap := make(map[string]int64)
+	var availInvitationNum int64 //
+	var invitingNum int64        //
+	var cooperatingNum int64     //
+	//var localInfos []entity.LocalLifeInfo
+	////query := Db.Model(&entity.LocalLifeInfo{}).Where("enterprise_id = ? and local_platform = ? and local_type = ?", enterpriseId, platform, taskType)
+	//if subAccountId == 0 {
+	//	// 待预约探店时间、探店时间待确认、达人待探店
+	//	query1 := Db.Model(&entity.LocalLifeInfo{}).Where("enterprise_id = ? and local_platform = ? and task_form = ?", enterpriseId, platform, 1)
+	//	err := query1.Where("task_status = ?", 8).Select("local_id").Find(&localInfos).Error
+	//	if err != nil {
+	//		if errors.Is(err, gorm.ErrRecordNotFound) {
+	//			needBook = 0
+	//			needConfirm = 0
+	//			needExplore = 0
+	//		} else {
+	//			return resultMap, err
+	//		}
+	//	} else if len(localInfos) > 0 {
+	//		var localIDs []string
+	//		for _, info := range localInfos {
+	//			localIDs = append(localIDs, info.LocalID)
+	//		}
+	//		if len(localIDs) > 0 {
+	//			err1 := Db.Model(&entity.LocalLifeTaskInfo{}).Where("local_id in ? and task_stage = ?", localIDs, 4).Count(&needBook).Error // task_stage=4待预约探店
+	//			if err1 != nil {
+	//				needBook = 0
+	//			}
+	//			err2 := Db.Model(&entity.LocalLifeTaskInfo{}).Where("local_id in ? and task_stage = ?", localIDs, 5).Count(&needConfirm).Error // task_stage=4预约确认中
+	//			if err2 != nil {
+	//				needConfirm = 0
+	//			}
+	//			err3 := Db.Model(&entity.LocalLifeTaskInfo{}).Where("local_id in ? and book_status = ?", localIDs, 5).Count(&needExplore).Error // book_status=5达人待探店
+	//			if err3 != nil {
+	//				needExplore = 0
+	//			}
+	//		}
+	//	}
+	//} else {
+	//	// 待预约探店时间、探店时间待确认、达人待探店
+	//	query1 := Db.Model(&entity.LocalLifeInfo{}).Where("enterprise_id = ? and local_platform = ? and task_form = ?", enterpriseId, platform, 1)
+	//	err := query1.Where("sub_account_id = ? and task_status = ?", subAccountId, 8).Select("local_id").Find(&localInfos).Error
+	//	if err != nil {
+	//		if errors.Is(err, gorm.ErrRecordNotFound) {
+	//			needBook = 0
+	//			needConfirm = 0
+	//			needExplore = 0
+	//		} else {
+	//			return resultMap, err
+	//		}
+	//	} else if len(localInfos) > 0 {
+	//		var localIDs []string
+	//		for _, info := range localInfos {
+	//			localIDs = append(localIDs, info.LocalID)
+	//		}
+	//		if len(localIDs) > 0 {
+	//			err1 := Db.Model(&entity.LocalLifeTaskInfo{}).Where("local_id in ? and task_stage = ?", localIDs, 4).Count(&needBook).Error // task_stage=4待预约探店
+	//			if err1 != nil {
+	//				needBook = 0
+	//			}
+	//			err2 := Db.Model(&entity.LocalLifeTaskInfo{}).Where("local_id in ? and task_stage = ?", localIDs, 5).Count(&needConfirm).Error // task_stage=4预约确认中
+	//			if err2 != nil {
+	//				needConfirm = 0
+	//			}
+	//			err3 := Db.Model(&entity.LocalLifeTaskInfo{}).Where("local_id in ? and book_status = ?", localIDs, 5).Count(&needExplore).Error // book_status=5达人待探店
+	//			if err3 != nil {
+	//				needExplore = 0
+	//			}
+	//		}
+	//	}
+	//}
+	resultMap["availInvitationNum"] = availInvitationNum
+	resultMap["invitingNum"] = invitingNum
+	resultMap["cooperatingNum"] = cooperatingNum
+
+	return resultMap, nil
+}

+ 70 - 0
app/dao/project_dao.go

@@ -654,3 +654,73 @@ func (d ProjectDAO) GetProjectFinished(enterpriseId string, invoiceStatus int64)
 	}
 	return projectAmount, err
 }
+
+// 寄样物流任务待办
+func (d ProjectDAO) GetTaskInviteToDo(enterpriseId string, subAccountId int64, platform int64) (map[string]int64, error) {
+	resultMap := make(map[string]int64)
+	var availInvitationNum int64
+	var invitingNum int64
+	var cooperatingNum int64
+	//var projectInfos []entity.Project
+	////query := Db.Model(&entity.Project{}).Where("enterprise_id = ? and project_platform = ? and project_type = ?", enterpriseId, platform, taskType)
+	//if subAccountId == 0 {
+	//	// 待发货、待签收
+	//	query1 := Db.Model(&entity.Project{}).Where("enterprise_id = ? and project_platform = ? and project_form = ?", enterpriseId, platform, 1)
+	//	err := query1.Where("project_status = ?", 8).Select("project_id").Find(&projectInfos).Error
+	//	if err != nil {
+	//		if errors.Is(err, gorm.ErrRecordNotFound) {
+	//			needDelivery = 0
+	//			needReceive = 0
+	//		} else {
+	//			return resultMap, err
+	//		}
+	//	} else if len(projectInfos) > 0 {
+	//		var projectIDs []string
+	//		for _, info := range projectInfos {
+	//			projectIDs = append(projectIDs, info.ProjectId)
+	//		}
+	//		if len(projectIDs) > 0 {
+	//			err1 := Db.Model(&entity.ProjectTaskInfo{}).Where("project_id in ? and task_stage = ?", projectIDs, 4).Count(&needDelivery).Error // task_stage=4待发货
+	//			if err1 != nil {
+	//				needDelivery = 0
+	//			}
+	//			err2 := Db.Model(&entity.ProjectTaskInfo{}).Where("project_id in ? and task_stage = ?", projectIDs, 5).Count(&needReceive).Error // task_stage=5已发货
+	//			if err2 != nil {
+	//				needReceive = 0
+	//			}
+	//		}
+	//	}
+	//} else {
+	//	// 待发货、待签收
+	//	query1 := Db.Model(&entity.Project{}).Where("enterprise_id = ? and project_platform = ? and project_form = ?", enterpriseId, platform, 1)
+	//	err := query1.Where("sub_account_id = ? and project_status = ?", subAccountId, 8).Select("project_id").Find(&projectInfos).Error
+	//	if err != nil {
+	//		if errors.Is(err, gorm.ErrRecordNotFound) {
+	//			needDelivery = 0
+	//			needReceive = 0
+	//		} else {
+	//			return resultMap, err
+	//		}
+	//	} else {
+	//		var projectIDs []string
+	//		for _, info := range projectInfos {
+	//			projectIDs = append(projectIDs, info.ProjectId)
+	//		}
+	//		if len(projectIDs) > 0 {
+	//			err1 := Db.Model(&entity.ProjectTaskInfo{}).Where("project_id in ? and task_stage = ?", projectIDs, 4).Count(&needDelivery).Error // task_stage=4待发货
+	//			if err1 != nil {
+	//				needDelivery = 0
+	//			}
+	//			err2 := Db.Model(&entity.ProjectTaskInfo{}).Where("project_id in ? and task_stage = ?", projectIDs, 5).Count(&needReceive).Error // task_stage=5已发货
+	//			if err2 != nil {
+	//				needReceive = 0
+	//			}
+	//		}
+	//	}
+	//}
+	resultMap["availInvitationNum"] = availInvitationNum
+	resultMap["invitingNum"] = invitingNum
+	resultMap["cooperatingNum"] = cooperatingNum
+
+	return resultMap, nil
+}

+ 1 - 1
app/dao/recharge_record_dao.go

@@ -20,7 +20,7 @@ func (d RechargeRecordDao) Insert(rechargeRecord *entity.RechargeRecord) error {
 func (d RechargeRecordDao) GetRechargeAmount(enterpriseId string, status int64) (float64, error) {
 	var totalAmount float64
 	query := Db.Debug().Model(&entity.RechargeRecord{})
-	err := query.Where("enterprise_id = ? AND status = ?", enterpriseId, status).Select("SUM(recharge_amount)").Scan(&totalAmount).Error
+	err := query.Where("enterprise_id = ? AND status = ?", enterpriseId, status).Select("COALESCE(SUM(recharge_amount), 0)").Scan(&totalAmount).Error
 	if err != nil {
 		return 0, err
 	}

+ 16 - 20
app/entity/info_auto_default.go

@@ -1,26 +1,22 @@
-package entity
-
 // Code generated by sql2gorm. DO NOT EDIT.
+package entity
 
+// 违约扣款配置
 type InfoAutoDefault struct {
-	AutoDefaultID          int64 `gorm:"column:auto_default_id;primary_key;AUTO_INCREMENT"` // 自动处理规则id
-	EnterpriseId           int64 `gorm:"column:enterprise_id"`                              // 企业id
-	SketchReplaceNotUpload int64 `gorm:"column:sketch_replace_not_upload"`                  // 初稿违约 产品置换 未上传初稿
-	SketchReplaceTimeOut   int64 `gorm:"column:sketch_replace_time_out"`                    // 初稿违约 产品置换 超时未上传初稿
-	SketchOtherNotUpload   int64 `gorm:"column:sketch_other_not_upload"`                    // 初稿违约 自报价、固定稿费 未上传初稿
-	SketchOtherTimeOut     int64 `gorm:"column:sketch_other_time_out"`                      // 初稿违约 自报价、固定稿费 超时未上传初稿
-	ScriptReplaceNotUpload int64 `gorm:"column:script_replace_not_upload"`                  // 脚本违约 产品置换 未上传脚本
-	ScriptReplaceTimeOut   int64 `gorm:"column:script_replace_time_out"`                    // 脚本违约 产品置换 超时未上传脚本
-	ScriptOtherNotUpload   int64 `gorm:"column:script_other_not_upload"`                    // 脚本违约 自报价、固定稿费 未上传脚本
-	ScriptOtherTimeOut     int64 `gorm:"column:script_other_time_out"`                      // 脚本违约 自报价、固定稿费 超时未上传脚本
-	LinkReplaceNotUpload   int64 `gorm:"column:link_replace_not_upload"`                    // 链接违约 产品置换 未上传链接
-	LinkReplaceTimeOut     int64 `gorm:"column:link_replace_time_out"`                      // 链接违约 产品置换 超时未上传链接
-	LinkOtherNotUpload     int64 `gorm:"column:link_other_not_upload"`                      // 链接违约 自报价、固定稿费 未上传链接
-	LinkOtherTimeOut       int64 `gorm:"column:link_other_time_out"`                        // 链接违约 自报价、固定稿费 超时未上传链接
-	DataReplaceNotUpload   int64 `gorm:"column:data_replace_not_upload"`                    // 数据违约 产品置换 未上传数据
-	DataReplaceTimeOut     int64 `gorm:"column:data_replace_time_out"`                      // 数据违约 产品置换 超时未上传数据
-	DataOtherNotUpload     int64 `gorm:"column:data_other_not_upload"`                      // 数据违约 自报价、固定稿费 未上传数据
-	DataOtherTimeOut       int64 `gorm:"column:data_other_time_out"`                        // 数据违约 自报价、固定稿费 超时未上传数据
+	AutoDefaultID                int64  `gorm:"column:auto_default_id;primary_key;AUTO_INCREMENT"` // 自动处理规则id
+	EnterpriseID                 string `gorm:"column:enterprise_id;NOT NULL"`                     // 企业id
+	SketchOtherTimeOut           int64  `gorm:"column:sketch_other_time_out;NOT NULL"`             // (初稿违约扣款1)
+	SketchOtherNotUpload         int64  `gorm:"column:sketch_other_not_upload;NOT NULL"`           // (初稿违约扣款2)
+	LinkReplaceTimeOut           int64  `gorm:"column:link_replace_time_out;NOT NULL"`             // (链接质检违约扣款1)
+	LinkReplaceNotUpload         int64  `gorm:"column:link_replace_not_upload;NOT NULL"`           // (链接质检违约扣款2)
+	DataReplaceTimeOut           int64  `gorm:"column:data_replace_time_out;NOT NULL"`             // (数据质检违约扣款1)
+	DataReplaceNotUpload         int64  `gorm:"column:data_replace_not_upload;NOT NULL"`           // (数据质检违约扣款2)
+	SketchOtherTimeOutOperator   string `gorm:"column:sketch_other_time_out_operator;NOT NULL"`    // (初稿违约扣款1)
+	SketchOtherNotUploadOperator string `gorm:"column:sketch_other_not_upload_operator;NOT NULL"`  // (初稿违约扣款2)
+	LinkReplaceTimeOutOperator   string `gorm:"column:link_replace_time_out_operator;NOT NULL"`    // (链接质检违约扣款1)
+	LinkReplaceNotUploadOperator string `gorm:"column:link_replace_not_upload_operator;NOT NULL"`  // (链接质检违约扣款2)
+	DataReplaceTimeOutOperator   string `gorm:"column:data_replace_time_out_operator;NOT NULL"`    // (数据质检违约扣款1)
+	DataReplaceNotUploadOperator string `gorm:"column:data_replace_not_upload_operator;NOT NULL"`  // (数据质检违约扣款2)
 }
 
 func (m *InfoAutoDefault) TableName() string {

+ 35 - 15
app/entity/info_auto_task.go

@@ -1,21 +1,41 @@
+// Code generated by sql2gorm. DO NOT EDIT.
 package entity
 
+// 自动执行、违约规则配置
 type InfoAutoTask struct {
-	AutoTaskID        int64 `gorm:"column:auto_task_id;primary_key;AUTO_INCREMENT"` // 自动处理规则id
-	EnterpriseId      int64 `gorm:"column:enterprise_id"`                           // 企业id
-	SignInOffline     int64 `gorm:"column:sign_in_offline"`                         // 线下探店自动签收时间
-	SignInVirtual     int64 `gorm:"column:sign_in_virtual"`                         // 虚拟产品测评自动签收时间
-	ReviewInMv        int64 `gorm:"column:review_in_mv"`                            // 视频形式的审稿处理
-	ReviewUnlimited   int64 `gorm:"column:review_unlimited"`                        // 不限形式的审稿处理
-	PostReview        int64 `gorm:"column:post_review"`                             // 发布审核自动处理
-	CaseClose         int64 `gorm:"column:case_close"`                              // 结案自动处理
-	Invalid           int64 `gorm:"column:invalid"`                                 // 全流程项目失效自动处理
-	DraftDefaultInPic int64 `gorm:"column:draft_default_in_pic"`                    // 图片初稿违约自动处理
-	DraftDefaultInMv  int64 `gorm:"column:draft_default_in_mv"`                     // 视频初稿违约自动处理
-	ScriptDefault     int64 `gorm:"column:script_default"`                          // 脚本违约自动处理
-	LinkBreach        int64 `gorm:"column:link_breach"`                             // 链接违约自动处理
-	CaseCloseDefault  int64 `gorm:"column:case_close_default"`                      // 结案违约自动处理
-	SelectionInvalid  int64 `gorm:"column:selection_invalid"`                       // 选品项目失效自动处理
+	AutoTaskID                   int64  `gorm:"column:auto_task_id;primary_key;AUTO_INCREMENT"`  // 自动处理规则id
+	EnterpriseID                 string `gorm:"column:enterprise_id;NOT NULL"`                   // 企业id
+	ReviewAuto                   int64  `gorm:"column:review_auto;NOT NULL"`                     // (审稿自动执行)
+	LinkReviewAuto               int64  `gorm:"column:link_review_auto;NOT NULL"`                // (链接质检自动执行)
+	TaskFinishAuto               int64  `gorm:"column:task_finish_auto;NOT NULL"`                // (任务结算自动执行)
+	Invalid                      int64  `gorm:"column:invalid;NOT NULL"`                         // 全流程项目失效自动处理(任务失效自动执行1)
+	SelectionInvalid             int64  `gorm:"column:selection_invalid;NOT NULL"`               // 选品项目失效自动处理(任务失效自动执行2)
+	DraftDefault                 int64  `gorm:"column:draft_default;NOT NULL"`                   // 初稿违约时间(初稿违约1)
+	DraftCooperateProjectDefault int64  `gorm:"column:draft_cooperate_project_default;NOT NULL"` // (初稿违约2)
+	DraftStoreDefault            int64  `gorm:"column:draft_store_default;NOT NULL"`             // (初稿违约3)
+	DraftCooperateLocalDefault   int64  `gorm:"column:draft_cooperate_local_default;NOT NULL"`   // (初稿违约4)
+	LinkBreach                   int64  `gorm:"column:link_breach;NOT NULL"`                     // 链接违约时间(链接质检违约)
+	CaseCloseDefault             int64  `gorm:"column:case_close_default;NOT NULL"`              // 数据违约时间(数据质检违约)
+
+	ReviewAutoOperator                   string `gorm:"column:review_auto_operator;NOT NULL"`                     // (审稿自动执行)
+	LinkReviewAutoOperator               string `gorm:"column:link_review_auto_operator;NOT NULL"`                // (链接质检自动执行)
+	TaskFinishAutoOperator               string `gorm:"column:task_finish_auto_operator;NOT NULL"`                // (任务结算自动执行)
+	InvalidOperator                      string `gorm:"column:invalid_operator;NOT NULL"`                         // 全流程项目失效自动处理(任务失效自动执行1)
+	SelectionInvalidOperator             string `gorm:"column:selection_invalid_operator;NOT NULL"`               // 选品项目失效自动处理(任务失效自动执行2)
+	DraftDefaultOperator                 string `gorm:"column:draft_default_operator;NOT NULL"`                   // 初稿违约时间(初稿违约1)
+	DraftCooperateProjectDefaultOperator string `gorm:"column:draft_cooperate_project_default_operator;NOT NULL"` // (初稿违约2)
+	DraftStoreDefaultOperator            string `gorm:"column:draft_store_default_operator;NOT NULL"`             // (初稿违约3)
+	DraftCooperateLocalDefaultOperator   string `gorm:"column:draft_cooperate_local_default_operator;NOT NULL"`   // (初稿违约4)
+	LinkBreachOperator                   string `gorm:"column:link_breach_operator;NOT NULL"`                     // 链接违约时间(链接质检违约)
+	CaseCloseDefaultOperator             string `gorm:"column:case_close_default_operator;NOT NULL"`              // 数据违约时间(数据质检违约)
+
+	SignInOffline   int64 `gorm:"column:sign_in_offline;NOT NULL"`  // 线下探店自动签收时间
+	SignInVirtual   int64 `gorm:"column:sign_in_virtual;NOT NULL"`  // 虚拟产品测评自动签收时间
+	ReviewInMv      int64 `gorm:"column:review_in_mv;NOT NULL"`     // 视频形式的审稿处理
+	ReviewUnlimited int64 `gorm:"column:review_unlimited;NOT NULL"` // 不限形式的审稿处理
+	PostReview      int64 `gorm:"column:post_review;NOT NULL"`      // 发布审核自动处理
+	CaseClose       int64 `gorm:"column:case_close;NOT NULL"`       // 结案自动处理
+	ScriptDefault   int64 `gorm:"column:script_default;NOT NULL"`   // 脚本违约自动处理
 }
 
 func (m *InfoAutoTask) TableName() string {

+ 4 - 3
app/service/bill_service.go

@@ -2,6 +2,7 @@ package service
 
 import (
 	"errors"
+	"time"
 	"youngee_b_api/app/dao"
 	"youngee_b_api/app/entity"
 	"youngee_b_api/app/vo"
@@ -24,7 +25,7 @@ func (s BillService) PaySelection(param *vo.PayParam) error {
 	if err2 != nil {
 		return err2
 	}
-	err3 := dao.SelectionInfoDAO{}.UpdateSelectionInfo(entity.SelectionInfo{SelectionID: selectionId, SelectionStatus: 6})
+	err3 := dao.SelectionInfoDAO{}.UpdateSelectionInfo(entity.SelectionInfo{SelectionID: selectionId, SelectionStatus: 6, PayAt: time.Now()})
 	if err3 != nil {
 		return err3
 	}
@@ -47,7 +48,7 @@ func (s BillService) PayProject(param *vo.PayParam) error {
 	if err2 != nil {
 		return err2
 	}
-	err3 := dao.ProjectDAO{}.UpdateProject(entity.Project{ProjectId: projectId, ProjectStatus: 8})
+	err3 := dao.ProjectDAO{}.UpdateProject(entity.Project{ProjectId: projectId, ProjectStatus: 8, PayAt: time.Now()})
 	if err3 != nil {
 		return err3
 	}
@@ -70,7 +71,7 @@ func (s BillService) PayLocalLife(param *vo.PayParam) error {
 	if err2 != nil {
 		return err2
 	}
-	err3 := dao.LocalLifeDao{}.UpdateLocal(entity.LocalLifeInfo{LocalID: localId, TaskStatus: 8})
+	err3 := dao.LocalLifeDao{}.UpdateLocal(entity.LocalLifeInfo{LocalID: localId, TaskStatus: 8, PayAt: time.Now()})
 	if err3 != nil {
 		return err3
 	}

+ 10 - 0
app/service/invoice_service.go

@@ -357,3 +357,13 @@ func (s InvoiceService) ShowInvoiceBill(param *vo.InvoiceBillListParam) (map[str
 
 	return resMap, nil
 }
+
+// 财务待办——开票中中金额
+func (s InvoiceService) GetFinance(param *vo.CommonParam) (float64, error) {
+	invoicingAmount, err := dao.InvoiceRecordDao{}.GetInvoiceAmount(param.EnterpriseId, 1)
+	if err != nil {
+		return 0, err
+	}
+
+	return invoicingAmount, nil
+}

+ 42 - 0
app/service/local_life_service.go

@@ -1362,3 +1362,45 @@ func (p LocalLifeService) GetDefaultToDo(enterpriseId string, subAccountId int64
 
 	return res, nil
 }
+
+// 合作待办-任务邀约
+func (p LocalLifeService) GetTaskInviteToDo(enterpriseId string, subAccountId int64) (map[string]map[string]int64, error) {
+	res := make(map[string]map[string]int64)
+	redbook, err1 := dao.LocalLifeDao{}.GetTaskInviteToDo(enterpriseId, subAccountId, 1)
+	if err1 != nil {
+		logrus.Errorf("[GetTaskInviteToDo service] call GetTaskInviteToDo error,err:%+v", err1)
+		return res, err1
+	}
+	douyin, err2 := dao.LocalLifeDao{}.GetTaskInviteToDo(enterpriseId, subAccountId, 2)
+	if err2 != nil {
+		logrus.Errorf("[GetTaskInviteToDo service] call GetTaskInviteToDo error,err:%+v", err2)
+		return res, err2
+	}
+	kuaishou, err3 := dao.LocalLifeDao{}.GetTaskInviteToDo(enterpriseId, subAccountId, 4)
+	if err3 != nil {
+		logrus.Errorf("[GetTaskInviteToDo service] call GetTaskInviteToDo error,err:%+v", err3)
+		return res, err3
+	}
+	weibo, err4 := dao.LocalLifeDao{}.GetTaskInviteToDo(enterpriseId, subAccountId, 3)
+	if err4 != nil {
+		logrus.Errorf("[GetTaskInviteToDo service] call GetTaskInviteToDo error,err:%+v", err4)
+		return res, err4
+	}
+	bilibili, err5 := dao.LocalLifeDao{}.GetTaskInviteToDo(enterpriseId, subAccountId, 5)
+	if err5 != nil {
+		logrus.Errorf("[GetTaskInviteToDo service] call GetTaskInviteToDo error,err:%+v", err5)
+		return res, err5
+	}
+	all := make(map[string]int64)
+	all["availInvitationNum"] = redbook["availInvitationNum"] + douyin["availInvitationNum"] + kuaishou["availInvitationNum"] + weibo["availInvitationNum"] + bilibili["availInvitationNum"]
+	all["invitingNum"] = redbook["invitingNum"] + douyin["invitingNum"] + kuaishou["invitingNum"] + weibo["invitingNum"] + bilibili["invitingNum"]
+	all["cooperatingNum"] = redbook["cooperatingNum"] + douyin["cooperatingNum"] + kuaishou["cooperatingNum"] + weibo["cooperatingNum"] + bilibili["cooperatingNum"]
+	res["redbook"] = redbook
+	res["douyin"] = douyin
+	res["kuaishou"] = kuaishou
+	res["weibo"] = weibo
+	res["bilibili"] = bilibili
+	res["all"] = all
+
+	return res, nil
+}

+ 42 - 0
app/service/project_service.go

@@ -1139,3 +1139,45 @@ func (p ProjectService) GetDefaultToDo(enterpriseId string, subAccountId int64,
 
 	return res, nil
 }
+
+// 合作待办-任务邀约
+func (p ProjectService) GetTaskInviteToDo(enterpriseId string, subAccountId int64) (map[string]map[string]int64, error) {
+	res := make(map[string]map[string]int64)
+	redbook, err1 := dao.ProjectDAO{}.GetTaskInviteToDo(enterpriseId, subAccountId, 1)
+	if err1 != nil {
+		logrus.Errorf("[GetTaskInviteToDo service] call GetTaskInviteToDo error,err:%+v", err1)
+		return res, err1
+	}
+	douyin, err2 := dao.ProjectDAO{}.GetTaskInviteToDo(enterpriseId, subAccountId, 2)
+	if err2 != nil {
+		logrus.Errorf("[GetTaskInviteToDo service] call GetTaskInviteToDo error,err:%+v", err2)
+		return res, err2
+	}
+	kuaishou, err3 := dao.ProjectDAO{}.GetTaskInviteToDo(enterpriseId, subAccountId, 4)
+	if err3 != nil {
+		logrus.Errorf("[GetTaskInviteToDo service] call GetTaskInviteToDo error,err:%+v", err3)
+		return res, err3
+	}
+	weibo, err4 := dao.ProjectDAO{}.GetTaskInviteToDo(enterpriseId, subAccountId, 3)
+	if err4 != nil {
+		logrus.Errorf("[GetTaskInviteToDo service] call GetTaskInviteToDo error,err:%+v", err4)
+		return res, err4
+	}
+	bilibili, err5 := dao.ProjectDAO{}.GetTaskInviteToDo(enterpriseId, subAccountId, 5)
+	if err5 != nil {
+		logrus.Errorf("[GetTaskInviteToDo service] call GetTaskInviteToDo error,err:%+v", err5)
+		return res, err5
+	}
+	all := make(map[string]int64)
+	all["availInvitationNum"] = redbook["availInvitationNum"] + douyin["availInvitationNum"] + kuaishou["availInvitationNum"] + weibo["availInvitationNum"] + bilibili["availInvitationNum"]
+	all["invitingNum"] = redbook["invitingNum"] + douyin["invitingNum"] + kuaishou["invitingNum"] + weibo["invitingNum"] + bilibili["invitingNum"]
+	all["cooperatingNum"] = redbook["cooperatingNum"] + douyin["cooperatingNum"] + kuaishou["cooperatingNum"] + weibo["cooperatingNum"] + bilibili["cooperatingNum"]
+	res["redbook"] = redbook
+	res["douyin"] = douyin
+	res["kuaishou"] = kuaishou
+	res["weibo"] = weibo
+	res["bilibili"] = bilibili
+	res["all"] = all
+
+	return res, nil
+}

+ 10 - 0
app/service/recharge_service.go

@@ -409,3 +409,13 @@ func (s RechargeService) RechargeInfoList(param *vo.RechargeParam) (vo.ResultVO,
 	}
 	return result, nil
 }
+
+// 财务待办——充值确认中金额
+func (s RechargeService) GetFinance(param *vo.CommonParam) (float64, error) {
+	confirmingRecharge, err := dao.RechargeRecordDao{}.GetRechargeAmount(param.EnterpriseId, 1)
+	if err != nil {
+		return 0, err
+	}
+
+	return confirmingRecharge, nil
+}

+ 2 - 0
app/vo/balance_param.go

@@ -5,4 +5,6 @@ type BalanceParam struct {
 	FrozenState  int64  `json:"frozen_state"`  // 冻结状态(1冻结中 2冻结解除)
 	Page         int    `json:"page"`
 	PageSize     int    `json:"page_size"`
+
+	Others string `json:"others"` // 任务标题/任务ID/创建者
 }

+ 3 - 3
app/vo/default_search_param.go

@@ -9,7 +9,7 @@ type DefaultSearchParam struct {
 	ProjectType  int64  `json:"project_type"` // 任务类型,0全部 1品牌种草,2本地生活
 	DefaultType  int64  `json:"default_type"` // 违约类型 1未传初稿 2未发作品 3未传数据 4终止合作 5已解约
 
-	TaskId string `json:"task_id"` // 任务ID
-	//ProjectName string `json:"project_name"` // 任务标题
-	//CreatorName string `json:"creator_name"` // 创建者
+	TaskId     string `json:"task_id"`     // 任务ID
+	Others     string `json:"others"`      // 任务标题/任务ID/创建者
+	TalentName string `json:"talent_name"` // 达人昵称
 }

+ 20 - 0
app/vo/info_auto_default_param.go

@@ -0,0 +1,20 @@
+package vo
+
+type InfoAutoDefaultParam struct {
+	EnterpriseId string `json:"enterprise_id"`
+	SubAccountId int64  `json:"sub_account_id"`
+
+	SketchOtherTimeOut   int64 `json:"sketch_other_time_out"`
+	SketchOtherNotUpload int64 `json:"sketch_other_not_upload"`
+	LinkReplaceTimeOut   int64 `json:"link_replace_time_out"`
+	LinkReplaceNotUpload int64 `json:"link_replace_not_upload"`
+	DataReplaceTimeOut   int64 `json:"data_replace_time_out"`
+	DataReplaceNotUpload int64 `json:"data_replace_not_upload"`
+
+	//SketchOtherTimeOutOperator   string `json:"sketch_other_time_out_operator"`
+	//SketchOtherNotUploadOperator string `json:"sketch_other_not_upload_operator"`
+	//LinkReplaceTimeOutOperator   string `json:"link_replace_time_out_operator"`
+	//LinkReplaceNotUploadOperator string `json:"link_replace_not_upload_operator"`
+	//DataReplaceTimeOutOperator   string `json:"data_replace_time_out_operator"`
+	//DataReplaceNotUploadOperator string `json:"data_replace_not_upload_operator"`
+}

+ 30 - 0
app/vo/info_auto_param.go

@@ -0,0 +1,30 @@
+package vo
+
+type InfoAutoParam struct {
+	EnterpriseId string `json:"enterprise_id"`
+	SubAccountId int64  `json:"sub_account_id"`
+
+	ReviewAuto                   int64 `json:"review_auto"`
+	LinkReviewAuto               int64 `json:"link_review_auto"`
+	TaskFinishAuto               int64 `json:"task_finish_auto"`
+	Invalid                      int64 `json:"invalid"`
+	SelectionInvalid             int64 `json:"selection_invalid"`
+	DraftDefault                 int64 `json:"draft_default"`
+	DraftCooperateProjectDefault int64 `json:"draft_cooperate_project_default"`
+	DraftStoreDefault            int64 `json:"draft_store_default"`
+	DraftCooperateLocalDefault   int64 `json:"draft_cooperate_local_default"`
+	LinkBreach                   int64 `json:"link_breach"`
+	CaseCloseDefault             int64 `json:"case_close_default"`
+
+	//ReviewAutoOperator                   string `json:"review_auto_operator"`
+	//LinkReviewAutoOperator               string `json:"link_review_auto_operator"`
+	//TaskFinishAutoOperator               string `json:"task_finish_auto_operator"`
+	//InvalidOperator                      string `json:"invalid_operator"`
+	//SelectionInvalidOperator             string `json:"selection_invalid_operator"`
+	//DraftDefaultOperator                 string `json:"draft_default_operator"`
+	//DraftCooperateProjectDefaultOperator string `json:"draft_cooperate_project_default_operator"`
+	//DraftStoreDefaultOperator            string `json:"draft_store_default_operator"`
+	//DraftCooperateLocalDefaultOperator   string `json:"draft_cooperate_local_default_operator"`
+	//LinkBreachOperator                   string `json:"link_breach_operator"`
+	//CaseCloseDefaultOperator             string `json:"case_close_default_operator"`
+}

+ 27 - 0
app/vo/re_info_auto.go

@@ -0,0 +1,27 @@
+package vo
+
+type ReInfoAuto struct {
+	ReviewAuto                   int64 `json:"reviewAuto"`
+	LinkReviewAuto               int64 `json:"linkReviewAuto"`
+	TaskFinishAuto               int64 `json:"taskFinishAuto"`
+	Invalid                      int64 `json:"invalid"`
+	SelectionInvalid             int64 `json:"selectionInvalid"`
+	DraftDefault                 int64 `json:"draftDefault"`
+	DraftCooperateProjectDefault int64 `json:"draftCooperateProjectDefault"`
+	DraftStoreDefault            int64 `json:"draftStoreDefault"`
+	DraftCooperateLocalDefault   int64 `json:"draftCooperateLocalDefault"`
+	LinkBreach                   int64 `json:"linkBreach"`
+	CaseCloseDefault             int64 `json:"caseCloseDefault"`
+
+	ReviewAutoOperator                   string `json:"reviewAutoOperator"`
+	LinkReviewAutoOperator               string `json:"linkReviewAutoOperator"`
+	TaskFinishAutoOperator               string `json:"taskFinishAutoOperator"`
+	InvalidOperator                      string `json:"invalidOperator"`
+	SelectionInvalidOperator             string `json:"selectionInvalidOperator"`
+	DraftDefaultOperator                 string `json:"draftDefaultOperator"`
+	DraftCooperateProjectDefaultOperator string `json:"draftCooperateProjectDefaultOperator"`
+	DraftStoreDefaultOperator            string `json:"draftStoreDefaultOperator"`
+	DraftCooperateLocalDefaultOperator   string `json:"draftCooperateLocalDefaultOperator"`
+	LinkBreachOperator                   string `json:"linkBreachOperator"`
+	CaseCloseDefaultOperator             string `json:"caseCloseDefaultOperator"`
+}

+ 17 - 0
app/vo/re_info_auto_default.go

@@ -0,0 +1,17 @@
+package vo
+
+type ReInfoAutoDefault struct {
+	SketchOtherTimeOut   int64 `json:"sketchOtherTimeOut"`
+	SketchOtherNotUpload int64 `json:"sketchOtherNotUpload"`
+	LinkReplaceTimeOut   int64 `json:"linkReplaceTimeOut"`
+	LinkReplaceNotUpload int64 `json:"linkReplaceNotUpload"`
+	DataReplaceTimeOut   int64 `json:"dataReplaceTimeOut"`
+	DataReplaceNotUpload int64 `json:"dataReplaceNotUpload"`
+
+	SketchOtherTimeOutOperator   string `json:"sketchOtherTimeOutOperator"`
+	SketchOtherNotUploadOperator string `json:"sketchOtherNotUploadOperator"`
+	LinkReplaceTimeOutOperator   string `json:"linkReplaceTimeOutOperator"`
+	LinkReplaceNotUploadOperator string `json:"linkReplaceNotUploadOperator"`
+	DataReplaceTimeOutOperator   string `json:"dataReplaceTimeOutOperator"`
+	DataReplaceNotUploadOperator string `json:"dataReplaceNotUploadOperator"`
+}

+ 2 - 0
app/vo/recharge_param.go

@@ -6,4 +6,6 @@ type RechargeParam struct {
 	RechargeState int64  `json:"recharge_state"` // 充值状态(1充值待确认 2已充值 3充值失败)
 	Page          int    `json:"page"`
 	PageSize      int    `json:"page_size"`
+
+	Others string `json:"others"` // 充值流水号或操作人
 }

+ 3 - 0
app/vo/supplier_search_param.go

@@ -16,12 +16,14 @@ type SupplierSearchInPoolParam struct {
 	EnterpriseId string `json:"enterprise_id"`
 	Page         int    `json:"page"`
 	PageSize     int    `json:"page_size"`
+	Others       string `json:"others"` // 服务商昵称/服务商ID/邀请人
 }
 
 type SupplierConfirmingParam struct {
 	EnterpriseId string `json:"enterprise_id"`
 	Page         int    `json:"page"`
 	PageSize     int    `json:"page_size"`
+	Others       string `json:"others"` // 服务商昵称/服务商ID/操作人
 }
 
 type SupplierSearchInTargetTaskParam struct {
@@ -32,6 +34,7 @@ type SupplierSearchInTargetTaskParam struct {
 	Status       int64  `json:"status"` // 1可邀约 2邀约中 3合作中
 	Page         int    `json:"page"`
 	PageSize     int    `json:"page_size"`
+	SupplierName string `json:"supplier_name"` // 服务商昵称
 }
 
 type SupplierInviteInTargetTaskParam struct {

+ 2 - 2
db/sub_account.go

@@ -56,11 +56,11 @@ func FindSubAccountByPhone(ctx context.Context, phone string) (*gorm_model.Young
 }
 
 // FindSubAccountByEnterpriseId 根据商家ID查找包含的所有子账号信息
-func FindSubAccountByEnterpriseId(ctx context.Context, enterpriseId string) ([]*gorm_model.YounggeeSubAccount, int64, error) {
+func FindSubAccountByEnterpriseId(ctx context.Context, enterpriseId string, jobId int, accountStatus int) ([]*gorm_model.YounggeeSubAccount, int64, error) {
 	db := GetReadDB(ctx)
 	var total int64
 	var subAccount []*gorm_model.YounggeeSubAccount
-	whereCondition := gorm_model.YounggeeSubAccount{EnterpriseId: enterpriseId, SubAccountType: 1}
+	whereCondition := gorm_model.YounggeeSubAccount{EnterpriseId: enterpriseId, SubAccountType: 1, JobId: jobId, AccountStatus: accountStatus}
 	err := db.Model(gorm_model.YounggeeSubAccount{}).Where(whereCondition).Find(&subAccount).Count(&total).Error
 	if err != nil {
 		return nil, 0, err

+ 6 - 1
model/http_model/find_all_sub_account.go

@@ -1,7 +1,11 @@
 package http_model
 
 type FindAllSubAccountRequest struct {
-	EnterpriseId string `json:"enterprise_id"` // 子账号属于的企业id
+	PageSize      int64  `json:"page_size"`
+	PageNum       int64  `json:"page_num"`
+	EnterpriseId  string `json:"enterprise_id"`  // 子账号属于的企业id
+	JobId         int    `json:"job_id"`         // 岗位ID
+	AccountStatus int    `json:"account_status"` // 账号状态,1为正常,2为停用
 }
 
 type FindAllSubAccountInfo struct {
@@ -11,6 +15,7 @@ type FindAllSubAccountInfo struct {
 	JobId          int    `json:"job_id"`           // 岗位ID
 	JobName        string `json:"job_name"`         // 岗位名称
 	EnterpriseId   string `json:"enterprise_id"`    // 所属商家账号ID
+	EnterpriseName string `json:"enterprise_name"`  // 创建人名称
 	AccountStatus  int    `json:"account_status"`   // 账号状态,1为正常,2为停用
 	UserId         int    `json:"user_id"`          // 用户表中ID
 }

+ 11 - 2
route/init.go

@@ -175,6 +175,11 @@ func InitRoute(r *gin.Engine) {
 		workspace.POST("/logistics", controller.WorkspaceController{}.GetLogistics)   // 任务待办-寄样物流
 		workspace.POST("/explore", controller.WorkspaceController{}.GetExplore)       // 任务待办-探店邀约
 		workspace.POST("/default", controller.WorkspaceController{}.GetDefault)       // 任务待办-违约管理
+		// 合作待办
+		workspace.POST("/taskInvite", controller.WorkspaceController{}.GetTaskInvite)           // 合作待办-任务邀约
+		workspace.POST("/warehouseInvite", controller.WorkspaceController{}.GetWarehouseInvite) // 合作待办-入库邀约
+		// 财务待办
+		workspace.POST("/finance", controller.WorkspaceController{}.GetFinance) // 财务待办-充值与发票
 
 	}
 	// 任务中心相关接口
@@ -381,9 +386,13 @@ func InitRoute(r *gin.Engine) {
 	account := r.Group("/youngee/b/account")
 	{
 		account.Use(middleware.LoginAuthMiddleware)
-		account.POST("/businessLicense", controller.AccountController{}.OCRIdentify) // 营业执照OCR识别/认证
+		account.POST("/businessLicense", controller.AccountController{}.OCRIdentify)                                        // 营业执照OCR识别/认证
+		account.POST("/strategy/auto/update", controller.AccountController{}.StrategyAuto)                                  // 策略配置-自动执行&违约规则
+		account.POST("/strategy/defaultPayment/update", controller.AccountController{}.StrategyDefaultPayment)              // 策略配置-违约扣款
+		account.POST("/strategy/auto/detail", controller.AccountController{}.StrategyAutoDetail)                            // 策略配置-自动执行&违约规则 详情
+		account.POST("/strategy/defaultPayment/detail", controller.AccountController{}.StrategyDefaultPaymentPaymentDetail) // 策略配置-违约扣款 详情
 	}
-	// 账号管理
+	// 通用
 	common := r.Group("/youngee/b/common")
 	{
 		common.POST("/platform", controller.CommonController{}.CooperationPlatform)     // 获取合作平台icon

+ 2 - 2
service/job.go

@@ -70,8 +70,8 @@ func (*job) FindJobByEnterpriseId(ctx context.Context, request http_model.FindAl
 		return nil, jobErr
 	}
 	if jobInfo != nil {
-		for _, job := range jobInfo {
-			jobNameData.JobInfo = append(jobNameData.JobInfo, job)
+		for _, jobData := range jobInfo {
+			jobNameData.JobInfo = append(jobNameData.JobInfo, jobData)
 		}
 		jobNameData.Total = total
 	} else {

+ 2 - 1
service/sub_account.go

@@ -79,7 +79,7 @@ func (*subaccount) FindSubAccountByEnterpriseId(ctx context.Context, request htt
 	subAccountResp = &http_model.FindAllSubAccountData{}
 
 	// 1. 取出子账号基本信息
-	newSubAccount, total, subaccountErr := db.FindSubAccountByEnterpriseId(ctx, request.EnterpriseId)
+	newSubAccount, total, subaccountErr := db.FindSubAccountByEnterpriseId(ctx, request.EnterpriseId, request.JobId, request.AccountStatus)
 	if subaccountErr != nil {
 		return nil, subaccountErr
 	}
@@ -94,6 +94,7 @@ func (*subaccount) FindSubAccountByEnterpriseId(ctx context.Context, request htt
 			subAccountInfo.UserId = s.UserId
 			subAccountInfo.PhoneNumber = s.PhoneNumber
 			subAccountInfo.EnterpriseId = s.EnterpriseId
+			subAccountInfo.EnterpriseName = s.EnterpriseId
 			subAccountInfo.AccountStatus = s.AccountStatus
 
 			// 2. 岗位信息