Эх сурвалжийг харах

Merge branch 'crm/15.2' into debug

Roc 1 жил өмнө
parent
commit
aab3654893

+ 29 - 0
models/company_contract/company_contract.go

@@ -2,6 +2,7 @@ package company_contract
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_task/utils"
 	"time"
 )
 
@@ -59,6 +60,34 @@ func GetContractListByEndDate(endDate string) (total int64, list []*CompanyContr
 	return
 }
 
+// GetContractListByEndDateAndModifyTime 通过结束日期获取之前已经续约了的合同列表
+func GetContractListByEndDateAndModifyTime(endDate, modifyTime string, companyIdList []int) (total int64, list []*CompanyContract, err error) {
+	num := len(companyIdList)
+	if num <= 0 {
+		return
+	}
+
+	o := orm.NewOrm()
+	sql := "SELECT * FROM company_contract where end_date > ? AND product_id = 1 AND status = 1 AND modify_time <= ? AND company_id in (" + utils.GetOrmInReplace(num) + ")"
+	total, err = o.Raw(sql, endDate, modifyTime, companyIdList).QueryRows(&list)
+
+	return
+}
+
+// GetAfterCompanyContractListByCompanyIdListAndEndDate 通过结束日期和客户id列表获取合同列表
+func GetAfterCompanyContractListByCompanyIdListAndEndDate(endDate string, companyIdList []int) (total int64, list []*CompanyContract, err error) {
+	num := len(companyIdList)
+	if num <= 0 {
+		return
+	}
+
+	o := orm.NewOrm()
+	sql := "SELECT * FROM company_contract where end_date > ? AND product_id = 1 AND status = 1 AND company_id in (" + utils.GetOrmInReplace(num) + ")"
+	total, err = o.Raw(sql, endDate, companyIdList).QueryRows(&list)
+
+	return
+}
+
 // GetLastContractListByEndDate 通过最近一份合同的日期获取早于该合同的最晚一份合同
 func GetLastContractListByEndDate(companyId, productId int, endDate string) (item *CompanyContract, err error) {
 	o := orm.NewOrm()

+ 77 - 0
models/overseas_custom/custom.go

@@ -1,11 +1,28 @@
 package overseas_custom
 
 import (
+	"fmt"
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_task/utils"
 	"time"
 )
 
 type Custom struct {
+	CompanyId      int    `description:"客户id"`
+	CompanyName    string `description:"客户名称"`
+	Nation         string `description:"国家"`
+	SellerId       int    `description:"销售id"`
+	SellerName     string `description:"销售名称"`
+	CompanyStatus  string `description:"状态"`
+	ViewTotal      int    `description:"累计点击量"`
+	RoadShowTotal  int    `description:"路演数量"`
+	LastViewTime   string `description:"最近阅读时间"`
+	CreateTime     string `description:"创建时间"`
+	IsHide         int    `description:"是否隐藏:0:不隐藏,1:隐藏"`
+	OverseasStatus string `description:"海外客户状态:'正式','试用','关闭'"`
+	Source         int    `description:"来源:1,英文客户,2:客户列表"`
+	OverseasLabel  int    `description:"海外客户试用子标签:1未分类、2  推进、3 跟踪、4 预备、"`
+	ResetBtn       int    `description:"转正式和重置按钮:同步过来默认为0:显示转正式为1:显示重置为2"`
 }
 
 type RsCompany struct {
@@ -82,3 +99,63 @@ func (obj *Custom) UpdateEnglishCompanyLastViewTime(companyId int, lastViewTime
 	_, err = o.Raw(sql, lastViewTime, companyId).Exec()
 	return
 }
+
+type OverseasCompany struct {
+}
+
+// 获取客户路演数据
+func (obj *Custom) GetOverseasCompany() (list []*Custom, err error) {
+	o := orm.NewOrm()
+	sql := ``
+	var databaseName string
+	if utils.RunMode == "debug" {
+		databaseName = "test_v2_hongze_rddp"
+	} else {
+		databaseName = "hongze_rddp"
+	}
+
+	sql = ` SELECT * FROM (
+		SELECT a.company_id,a.company_name,a.nation,b.seller_id,b.seller_name,
+		b.view_total,b.road_show_total,a.created_time AS create_time,b.last_view_time,a.is_hide,a.overseas_status,
+		2 AS source,b.overseas_label,a.reset_btn,
+		CASE b.status 
+				WHEN '正式' THEN '正式'
+				WHEN '永续' THEN '正式'
+				WHEN '试用' THEN '试用'
+				ELSE '关闭' END AS company_status
+		FROM company AS a
+		INNER JOIN company_product AS b ON a.company_id=b.company_id
+		INNER JOIN overseas_custom_seller AS c ON b.seller_id=c.seller_id
+		WHERE b.product_id=1 AND b.is_overseas = 0
+		UNION ALL
+		SELECT t.company_id+10000000,t.company_name,t.nation,t.seller_id,t.seller_name,
+		t.view_total,t.road_show_total,t.create_time,t.last_view_time,t.is_hide,t.overseas_status,
+		1 AS source,t.overseas_label,t.reset_btn,
+		CASE t.enabled
+				WHEN 0 THEN '关闭'
+				ELSE '试用' END AS company_status
+		FROM %s.english_company AS t
+		INNER JOIN overseas_custom_seller AS n ON t.seller_id=n.seller_id
+	WHERE 1=1 AND t.is_deleted=0 
+	)AS m WHERE 1=1
+	AND m.reset_btn=0
+	AND m.company_status<>m.overseas_status  `
+
+	sql = fmt.Sprintf(sql, databaseName)
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}
+
+func (obj *Custom) UpdateEnglishCompanyOverseasStatus(companyId int, companyStatus string) (err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := ` UPDATE english_company SET overseas_status=? WHERE company_id=? `
+	_, err = o.Raw(sql, companyStatus, companyId).Exec()
+	return
+}
+
+func (obj *Custom) UpdateCompanyOverseasStatus(companyId int, companyStatus string) (err error) {
+	o := orm.NewOrm()
+	sql := ` UPDATE company SET overseas_status=? WHERE company_id=? `
+	_, err = o.Raw(sql, companyStatus, companyId).Exec()
+	return
+}

+ 434 - 6
services/company_contract/company_contract.go

@@ -31,7 +31,7 @@ func HandleCompanyContract(cont context.Context) (err error) {
 		utils.FileLog.Info("HandleCompanyContract Err:%s" + err.Error())
 		return
 	}
-	fmt.Sprintln("总共d%条数据待处理", total)
+	fmt.Printf("总共%d条数据待处理\n", total)
 	errorList := make([]string, 0)
 	for _, v := range list {
 		//fmt.Println(k, v.CompanyId)
@@ -135,10 +135,10 @@ func HandleCompanyContract(cont context.Context) (err error) {
 		//研选审批通过的时候研选扣点更新
 		{
 			cygx.YanXuanCompanyApproval(v.CompanyId)
-			cygx.ActivitySpecialCompanyApproval(v.CompanyId,  v.CompanyContractId, companyProduct.CompanyName) //审批通过的时候专项调研次数更新
-			cygx.HandleAllocationCompanyContractByYanXuan(v.CompanyContractId) //如果合同只有研选的时候,自动处理派点
-			cygx.HandleCompanyContractPackageDifference(v.CompanyContractId) //更新与上一份合同的金额的对比 '增加套餐','减少套餐','维持套餐'
-			cygx.HandleCompanyContractPermissionContractType(v.CompanyContractId) //更新合同权限表中的权限名称,以及对应的行业权限类型(行业新签、行业续约)
+			cygx.ActivitySpecialCompanyApproval(v.CompanyId, v.CompanyContractId, companyProduct.CompanyName) //审批通过的时候专项调研次数更新
+			cygx.HandleAllocationCompanyContractByYanXuan(v.CompanyContractId)                                //如果合同只有研选的时候,自动处理派点
+			cygx.HandleCompanyContractPackageDifference(v.CompanyContractId)                                  //更新与上一份合同的金额的对比 '增加套餐','减少套餐','维持套餐'
+			cygx.HandleCompanyContractPermissionContractType(v.CompanyContractId)                             //更新合同权限表中的权限名称,以及对应的行业权限类型(行业新签、行业续约)
 		}
 	}
 
@@ -235,7 +235,7 @@ func HandleCompanyRenewalRecord(cont context.Context) (err error) {
 		utils.FileLog.Info("HandleCompanyRenewalRecord GetStartContractListByEndDate Err:%s" + err.Error())
 		return
 	}
-	fmt.Sprintln("总共d%条数据待处理", total)
+	fmt.Printf("总共%d条数据待处理\n", total)
 	if total <= 0 {
 		return
 	}
@@ -281,3 +281,431 @@ func HandleCompanyRenewalRecord(cont context.Context) (err error) {
 	return
 }
 
+// handleCompanyRenewalRecord
+// @Description:  处理合同到期后还未续约的记录
+// @author: Roc
+// @datetime 2024-02-21 13:41:48
+// @param endDate string
+// @param source int
+// @return err error
+func handleCompanyRenewalRecord(endDate string, source int) (err error) {
+	defer func() {
+		if err != nil {
+			//fmt.Println("合同处理 ErrMsg:"+err.Error())
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "合同处理 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg(fmt.Sprintf("日期:%s;来源%d;处理合同到期后还未续约的记录异常 ErrMsg:%s", endDate, source, err.Error()), 3)
+		}
+	}()
+
+	// 根据日期获取截止日期是该日期的合同列表
+	total, list, err := company_contract.GetContractListByEndDate(endDate)
+	if err != nil {
+		utils.FileLog.Info("HandleCompanyRenewalRecord GetStartContractListByEndDate Err:%s" + err.Error())
+		return
+	}
+	fmt.Printf("总共%d条数据待处理\n", total)
+	if total <= 0 {
+		return
+	}
+	companyIdList := make([]int, 0)
+	for _, companyInfo := range list {
+		companyIdList = append(companyIdList, companyInfo.CompanyId)
+	}
+
+	companyList, err := models.GetCompanyProductItemListByCompanyIdList(companyIdList, 1)
+	if err != nil {
+		utils.FileLog.Info("HandleCompanyRenewalRecord GetCompanyProductListByCompanyIdList Err:%s" + err.Error())
+		return
+	}
+
+	addList := make([]*models.CompanyRenewalRecord, 0)
+	for _, v := range companyList {
+		if v.Status != "正式" {
+			var shareSellerId int
+			var shareSellerName string
+			if v.IsShare == 1 {
+				shareSellerId = v.ShareSellerId
+				shareSellerName = v.ShareSeller
+			}
+			addList = append(addList, &models.CompanyRenewalRecord{
+				Id:              0,
+				CompanyId:       v.CompanyId,
+				ProductId:       v.ProductId,
+				Source:          source,
+				SellerId:        v.SellerId,
+				SellerName:      v.SellerName,
+				ShareSellerId:   shareSellerId,
+				ShareSellerName: shareSellerName,
+				CreateTime:      time.Now(),
+				ModifyTime:      time.Now(),
+			})
+		}
+	}
+
+	if len(addList) > 0 {
+		err = models.MultiAddCompanyRenewalRecord(addList)
+	}
+
+	return
+}
+
+// handleCompanyRenewalRecord
+// @Description:  处理合同即将到期(还未过期)后还未续约的记录
+// @author: Roc
+// @datetime 2024-02-21 13:41:48
+// @param endDate string
+// @param source int
+// @return err error
+func handleCompanyExpiringRenewalRecord(contractDate string, source int) (err error) {
+	defer func() {
+		if err != nil {
+			//fmt.Println("合同处理 ErrMsg:"+err.Error())
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "合同处理 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg(fmt.Sprintf("日期:%s;来源%d;处理合同即将到期(还未过期)后还未续约的记录异常 ErrMsg:%s", contractDate, source, err.Error()), 3)
+		}
+	}()
+
+	// 根据日期获取截止日期是该日期的合同列表
+	total, list, err := company_contract.GetContractListByEndDate(contractDate)
+	if err != nil {
+		utils.FileLog.Info("HandleCompanyRenewalRecord GetStartContractListByEndDate Err:%s" + err.Error())
+		return
+	}
+	fmt.Printf("总共%d条数据待处理\n", total)
+	if total <= 0 {
+		return
+	}
+	companyIdList := make([]int, 0)
+	for _, companyInfo := range list {
+		companyIdList = append(companyIdList, companyInfo.CompanyId)
+	}
+
+	// 已经续约了的客户
+	afterContractCompanyIdMap := make(map[int]int)
+	{
+		// 根据客户id列表和上一份合同的结束日期,获取后续的合同
+		_, afterContractList, tmpErr := company_contract.GetAfterCompanyContractListByCompanyIdListAndEndDate(contractDate, companyIdList)
+		if tmpErr != nil {
+			err = tmpErr
+			utils.FileLog.Info("company_contract.GetAfterCompanyContractListByCompanyIdListAndEndDate Err:%s" + err.Error())
+			return
+		}
+		for _, afterContract := range afterContractList {
+			afterContractCompanyIdMap[afterContract.CompanyId] = afterContract.CompanyId
+		}
+	}
+
+	// 客户列表
+	companyList, err := models.GetCompanyProductItemListByCompanyIdList(companyIdList, 1)
+	if err != nil {
+		utils.FileLog.Info("HandleCompanyRenewalRecord GetCompanyProductListByCompanyIdList Err:%s" + err.Error())
+		return
+	}
+
+	addList := make([]*models.CompanyRenewalRecord, 0)
+	for _, v := range companyList {
+		_, ok := afterContractCompanyIdMap[v.CompanyId]
+
+		// 已经续约了,不处理
+		if ok {
+			continue
+		}
+
+		// 未续约客户,去记录
+		var shareSellerId int
+		var shareSellerName string
+		if v.IsShare == 1 {
+			shareSellerId = v.ShareSellerId
+			shareSellerName = v.ShareSeller
+		}
+		addList = append(addList, &models.CompanyRenewalRecord{
+			Id:              0,
+			CompanyId:       v.CompanyId,
+			ProductId:       v.ProductId,
+			Source:          source,
+			SellerId:        v.SellerId,
+			SellerName:      v.SellerName,
+			ShareSellerId:   shareSellerId,
+			ShareSellerName: shareSellerName,
+			CreateTime:      time.Now(),
+			ModifyTime:      time.Now(),
+		})
+	}
+
+	if len(addList) > 0 {
+		err = models.MultiAddCompanyRenewalRecord(addList)
+	}
+
+	return
+}
+
+func HandleCompanyRenewalRecordV2(cont context.Context) (err error) {
+	defer func() {
+		if err != nil {
+			//fmt.Println("合同处理 ErrMsg:"+err.Error())
+			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "合同处理 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+			go alarm_msg.SendAlarmMsg("合同处理 ErrMsg:"+err.Error(), 3)
+		}
+	}()
+	// 1:续约异常客户;4:合同到期后一个月未续约客户;5:合同到期未续约客户;6:合同到期前一个月还未续约的客户;7:合同到期前两个月还未续约客户;8:合同到期前3个月还未续约客户;9:合同到期前4个月还未续约客户'
+	// 下面的日期都减去1天,是为了加上当日
+
+	// 1:需求是60个自然日后未续约的客户
+	{
+		endDate := time.Now().AddDate(0, 0, -60-1).Format(utils.FormatDate)
+		handleCompanyRenewalRecord(endDate, 1)
+	}
+	// 4:需求是30个自然日后未续约的客户
+	{
+		endDate := time.Now().AddDate(0, 0, -30-1).Format(utils.FormatDate)
+		handleCompanyRenewalRecord(endDate, 4)
+	}
+	// 5:需求是到期日后未续约的客户
+	{
+		endDate := time.Now().AddDate(0, 0, -1).Format(utils.FormatDate)
+		handleCompanyRenewalRecord(endDate, 5)
+	}
+
+	// 即将到期还未到期的统计
+	// 合同到期前一个月还未续约的客户;
+	{
+		endDate := time.Now().AddDate(0, 0, 30-1).Format(utils.FormatDate)
+		handleCompanyExpiringRenewalRecord(endDate, 6)
+	}
+	// 7:合同到期前两个月还未续约客户;
+	{
+		endDate := time.Now().AddDate(0, 0, 60-1).Format(utils.FormatDate)
+		handleCompanyExpiringRenewalRecord(endDate, 7)
+	}
+	// 8:合同到期前3个月还未续约客户;
+	{
+		endDate := time.Now().AddDate(0, 0, 90-1).Format(utils.FormatDate)
+		handleCompanyExpiringRenewalRecord(endDate, 8)
+	}
+	// 9:合同到期前4个月还未续约客户
+	{
+		endDate := time.Now().AddDate(0, 0, 120-1).Format(utils.FormatDate)
+		handleCompanyExpiringRenewalRecord(endDate, 9)
+	}
+
+	return
+}
+
+// 续约异常客户数据修复
+//func FixData() {
+//	firstTime := time.Date(2023, 1, 1, 0, 0, 0, 0, time.Local)
+//	endTime := time.Date(2024, 2, 21, 1, 0, 0, 0, time.Local)
+//
+//	for currTime := firstTime; currTime.Before(endTime); currTime = currTime.AddDate(0, 0, 1) {
+//		currDate := currTime.Format(utils.FormatDate)
+//		fmt.Printf("结束%s的数据修复\n", currDate)
+//
+//		//// 4:需求是30个自然日后未续约的客户
+//		//{
+//		//	handleFixCompanyRenewalRecord(currTime.AddDate(0, 0, -30-1).Format(utils.FormatDate), currTime, 4)
+//		//}
+//		//// 5:需求是到期日后未续约的客户
+//		//{
+//		//	handleFixCompanyRenewalRecord(currTime.AddDate(0, 0, -1).Format(utils.FormatDate), currTime, 5)
+//		//}
+//
+//		// 即将到期还未到期的统计
+//		// 合同到期前一个月还未续约的客户;
+//		{
+//			handleFixCompanyExpiringRenewalRecord(currTime.AddDate(0, 0, 30-1).Format(utils.FormatDate), currTime, 6)
+//		}
+//		// 7:合同到期前两个月还未续约客户;
+//		{
+//			handleFixCompanyExpiringRenewalRecord(currTime.AddDate(0, 0, 60-1).Format(utils.FormatDate), currTime, 7)
+//		}
+//		// 8:合同到期前3个月还未续约客户;
+//		{
+//			handleFixCompanyExpiringRenewalRecord(currTime.AddDate(0, 0, 90-1).Format(utils.FormatDate), currTime, 8)
+//		}
+//		// 9:合同到期前4个月还未续约客户
+//		{
+//			handleFixCompanyExpiringRenewalRecord(currTime.AddDate(0, 0, 120-1).Format(utils.FormatDate), currTime, 9)
+//		}
+//	}
+//
+//	fmt.Println("end fix")
+//}
+//
+//// handleFixCompanyRenewalRecord
+//// @Description: 修复合同到期后N个月还未续约的客户
+//// @author: Roc
+//// @datetime 2024-02-21 15:29:29
+//// @param endDate string
+//// @param source int
+//// @return err error
+//func handleFixCompanyRenewalRecord(endDate string, currTime time.Time, source int) (err error) {
+//	defer func() {
+//		if err != nil {
+//			//fmt.Println("合同处理 ErrMsg:"+err.Error())
+//			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "合同处理 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+//			go alarm_msg.SendAlarmMsg(fmt.Sprintf("日期:%s;来源%d;处理合同到期后还未续约的记录异常 ErrMsg:%s", currTime.Format(utils.FormatDate), source, err.Error()), 3)
+//		}
+//	}()
+//
+//	// 根据日期获取截止日期是该日期的合同列表
+//	total, list, err := company_contract.GetContractListByEndDate(endDate)
+//	if err != nil {
+//		utils.FileLog.Info("HandleCompanyRenewalRecord GetStartContractListByEndDate Err:%s" + err.Error())
+//		return
+//	}
+//	fmt.Printf("总共%d条数据待处理\n", total)
+//	if total <= 0 {
+//		return
+//	}
+//	companyIdList := make([]int, 0)
+//	for _, companyInfo := range list {
+//		companyIdList = append(companyIdList, companyInfo.CompanyId)
+//	}
+//
+//	// 已经续约了的合同列表
+//	afterContractCompanyIdMap := make(map[int]int)
+//	{
+//		// 根据客户id列表和上一份合同的结束日期,获取已经续约了的合同列表
+//		_, renewalList, tmpErr := company_contract.GetContractListByEndDateAndModifyTime(endDate, endDate, companyIdList)
+//		if tmpErr != nil {
+//			err = tmpErr
+//			utils.FileLog.Info("HandleCompanyRenewalRecord GetContractListByEndDateAndModifyTime Err:%s" + err.Error())
+//			return
+//		}
+//		for _, afterContract := range renewalList {
+//			afterContractCompanyIdMap[afterContract.CompanyId] = afterContract.CompanyId
+//		}
+//	}
+//
+//	// 获取客户列表
+//	companyList, err := models.GetCompanyProductItemListByCompanyIdList(companyIdList, 1)
+//	if err != nil {
+//		utils.FileLog.Info("HandleCompanyRenewalRecord GetCompanyProductListByCompanyIdList Err:%s" + err.Error())
+//		return
+//	}
+//
+//	addList := make([]*models.CompanyRenewalRecord, 0)
+//	for _, v := range companyList {
+//		_, ok := afterContractCompanyIdMap[v.CompanyId]
+//
+//		// 已经续约了,不处理
+//		if ok {
+//			continue
+//		}
+//
+//		var shareSellerId int
+//		var shareSellerName string
+//		if v.IsShare == 1 {
+//			shareSellerId = v.ShareSellerId
+//			shareSellerName = v.ShareSeller
+//		}
+//		addList = append(addList, &models.CompanyRenewalRecord{
+//			Id:              0,
+//			CompanyId:       v.CompanyId,
+//			ProductId:       v.ProductId,
+//			Source:          source,
+//			SellerId:        v.SellerId,
+//			SellerName:      v.SellerName,
+//			ShareSellerId:   shareSellerId,
+//			ShareSellerName: shareSellerName,
+//			CreateTime:      currTime,
+//			ModifyTime:      currTime,
+//		})
+//	}
+//
+//	if len(addList) > 0 {
+//		err = models.MultiAddCompanyRenewalRecord(addList)
+//	}
+//
+//	return
+//}
+//
+//// handleFixCompanyExpiringRenewalRecord
+//// @Description: 修复合同到期前N个月还未续约的客户
+//// @author: Roc
+//// @datetime 2024-02-21 15:29:29
+//// @param endDate string
+//// @param source int
+//// @return err error
+//func handleFixCompanyExpiringRenewalRecord(endDate string, currTime time.Time, source int) (err error) {
+//	currDate := currTime.Format(utils.FormatDate)
+//	defer func() {
+//		if err != nil {
+//			//fmt.Println("合同处理 ErrMsg:"+err.Error())
+//			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "合同处理 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+//			go alarm_msg.SendAlarmMsg(fmt.Sprintf("日期:%s;来源%d;处理合同到期后还未续约的记录异常 ErrMsg:%s", currDate, source, err.Error()), 3)
+//		}
+//	}()
+//
+//	// 根据日期获取截止日期是该日期的合同列表
+//	total, list, err := company_contract.GetContractListByEndDate(endDate)
+//	if err != nil {
+//		utils.FileLog.Info("HandleCompanyRenewalRecord GetStartContractListByEndDate Err:%s" + err.Error())
+//		return
+//	}
+//	fmt.Printf("总共%d条数据待处理\n", total)
+//	if total <= 0 {
+//		return
+//	}
+//	companyIdList := make([]int, 0)
+//	for _, companyInfo := range list {
+//		companyIdList = append(companyIdList, companyInfo.CompanyId)
+//	}
+//
+//	// 已经续约了的合同列表
+//	afterContractCompanyIdMap := make(map[int]int)
+//	{
+//		// 根据客户id列表和上一份合同的结束日期,获取已经续约了的合同列表
+//		_, renewalList, tmpErr := company_contract.GetContractListByEndDateAndModifyTime(endDate, currDate, companyIdList)
+//		if tmpErr != nil {
+//			err = tmpErr
+//			utils.FileLog.Info("HandleCompanyRenewalRecord GetContractListByEndDateAndModifyTime Err:%s" + err.Error())
+//			return
+//		}
+//		for _, afterContract := range renewalList {
+//			afterContractCompanyIdMap[afterContract.CompanyId] = afterContract.CompanyId
+//		}
+//	}
+//
+//	// 获取客户列表
+//	companyList, err := models.GetCompanyProductItemListByCompanyIdList(companyIdList, 1)
+//	if err != nil {
+//		utils.FileLog.Info("HandleCompanyRenewalRecord GetCompanyProductListByCompanyIdList Err:%s" + err.Error())
+//		return
+//	}
+//
+//	addList := make([]*models.CompanyRenewalRecord, 0)
+//	for _, v := range companyList {
+//		_, ok := afterContractCompanyIdMap[v.CompanyId]
+//
+//		// 已经续约了,不处理
+//		if ok {
+//			continue
+//		}
+//
+//		var shareSellerId int
+//		var shareSellerName string
+//		if v.IsShare == 1 {
+//			shareSellerId = v.ShareSellerId
+//			shareSellerName = v.ShareSeller
+//		}
+//		addList = append(addList, &models.CompanyRenewalRecord{
+//			Id:              0,
+//			CompanyId:       v.CompanyId,
+//			ProductId:       v.ProductId,
+//			Source:          source,
+//			SellerId:        v.SellerId,
+//			SellerName:      v.SellerName,
+//			ShareSellerId:   shareSellerId,
+//			ShareSellerName: shareSellerName,
+//			CreateTime:      currTime,
+//			ModifyTime:      currTime,
+//		})
+//	}
+//
+//	if len(addList) > 0 {
+//		err = models.MultiAddCompanyRenewalRecord(addList)
+//	}
+//
+//	return
+//}

+ 29 - 0
services/overseas_custom/custom.go

@@ -4,6 +4,7 @@ import (
 	"context"
 	"fmt"
 	"hongze/hongze_task/models/overseas_custom"
+	"hongze/hongze_task/utils"
 )
 
 // 修改英文客户路演统计
@@ -63,3 +64,31 @@ func FixEnglishCompanyLastViewTime(cont context.Context) (err error) {
 	}
 	return nil
 }
+
+// 修改英文客户路演统计
+func FixCompanyOverseasStatus(cont context.Context) (err error) {
+	obj := new(overseas_custom.Custom)
+	list, err := obj.GetOverseasCompany()
+	if err != nil {
+		fmt.Println("FixCompanyOverseasStatus Err:" + err.Error())
+		return err
+	}
+
+	for _, v := range list {
+		if v.CompanyId > utils.EnCompanyIdStep {
+			v.CompanyId = v.CompanyId - utils.EnCompanyIdStep
+			err = obj.UpdateEnglishCompanyOverseasStatus(v.CompanyId, v.CompanyStatus)
+			if err != nil {
+				fmt.Println("UpdateEnglishCompanyOverseasStatusErr:" + err.Error())
+				return err
+			}
+		} else {
+			err = obj.UpdateCompanyOverseasStatus(v.CompanyId, v.CompanyStatus)
+			if err != nil {
+				fmt.Println("UpdateCompanyOverseasStatus:" + err.Error())
+				return err
+			}
+		}
+	}
+	return nil
+}

+ 6 - 2
services/task.go

@@ -53,7 +53,7 @@ func Task() {
 	task.AddTask("每日定时合同处理", handleCompanyContract)
 
 	// 每日续约异常客户信息处理
-	handleCompanyRenewalRecord := task.NewTask("handleCompanyContract", "0 5 2 * * *", company_contract.HandleCompanyRenewalRecord)
+	handleCompanyRenewalRecord := task.NewTask("handleCompanyContract", "0 5 2 * * *", company_contract.HandleCompanyRenewalRecordV2)
 	task.AddTask("每日续约异常客户信息处理", handleCompanyRenewalRecord)
 
 	//正式->试用
@@ -158,7 +158,7 @@ func Task() {
 	//task.AddTask("定时发布英文研报", publishEnglishReport)
 
 	// 定时生成本周研究汇总
-	cygxResearchSummary := task.NewTask("cygxResearchSummary", "0 0 15 * * 5", CygxResearchSummary)
+	cygxResearchSummary := task.NewTask("cygxResearchSummary", "0 0 10 * * 4", CygxResearchSummary)
 	task.AddTask("定时生成本周研究汇总", cygxResearchSummary)
 
 	// 定时生成上周纪要汇总
@@ -191,6 +191,10 @@ func Task() {
 	fixEnglishCompanyLastViewTime := task.NewTask("fixEnglishCompanyLastViewTime", "0 */30 6-23 * * *", overseas_custom.FixEnglishCompanyLastViewTime)
 	task.AddTask("英文客户最后一次阅读时间", fixEnglishCompanyLastViewTime)
 
+	//海外客户-同步客户状态
+	fixCompanyOverseasStatus := task.NewTask("fixCompanyOverseasStatus", "0 */5 * * * *", overseas_custom.FixCompanyOverseasStatus)
+	task.AddTask("同步客户状态", fixCompanyOverseasStatus)
+
 	task.StartTask()
 
 	fmt.Println("task end")

+ 4 - 0
utils/constants.go

@@ -179,3 +179,7 @@ const (
 	CHART_PERMISSION_ID_YANXUAN      int    = 31
 	CHART_PERMISSION_NAME_MF_YANXUAN string = "买方研选"
 )
+
+const (
+	EnCompanyIdStep = 10000000
+)