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

fix(邮件提醒):调整邮件提醒中的到期时间校验,如果存在未执行的合同,那么到期时间以未执行的合同结束日期为条件

Roc 3 жил өмнө
parent
commit
2ff146952f

+ 22 - 17
models/company_product.go

@@ -31,7 +31,7 @@ func AddCompanyOperationRecord(item *CompanyOperationRecord) (lastId int64, err
 	return
 }
 
-func CompanyFreeze(companyId, productId int) (companyReportPermissionList []*CompanyReportPermission,err error) {
+func CompanyFreeze(companyId, productId int) (companyReportPermissionList []*CompanyReportPermission, err error) {
 	o := orm.NewOrm()
 	freezeStartDate := time.Now().Format(utils.FormatDate)
 	freezeEndDate := time.Now().AddDate(0, 3, 0).Format(utils.FormatDate)
@@ -45,19 +45,19 @@ func CompanyFreeze(companyId, productId int) (companyReportPermissionList []*Com
 
 	//客户产品权限 状态 变更
 	//获取需要变更的 客户产品权限
-	oldPermissionEndDate := time.Now().AddDate(0,0,-1).Format(utils.FormatDate)
+	oldPermissionEndDate := time.Now().AddDate(0, 0, -1).Format(utils.FormatDate)
 	sql = `SELECT *
           FROM company_report_permission
 			WHERE status='试用' AND end_date<=? AND company_id=? AND product_id=? `
-	total, err := o.Raw(sql, oldPermissionEndDate,companyId, productId).QueryRows(&companyReportPermissionList)
+	total, err := o.Raw(sql, oldPermissionEndDate, companyId, productId).QueryRows(&companyReportPermissionList)
 	if err != nil {
 		return
 	}
 
-	if total > 0{
+	if total > 0 {
 		sql = `UPDATE company_report_permission SET status='关闭',modify_time=NOW() 
 			WHERE status='试用' AND end_date<=? AND company_id=? AND product_id=? `
-		_, err = o.Raw(sql,oldPermissionEndDate, companyId, productId).Exec()
+		_, err = o.Raw(sql, oldPermissionEndDate, companyId, productId).Exec()
 		if err != nil {
 			return
 		}
@@ -88,7 +88,7 @@ func CompanyLoss(companyId, productId int) (err error) {
 }
 
 //正式转试用
-func CompanyTryOut(companyId, productId int) (companyReportPermissionList []*CompanyReportPermission,err error) {
+func CompanyTryOut(companyId, productId int) (companyReportPermissionList []*CompanyReportPermission, err error) {
 	o := orm.NewOrm()
 	startDate := time.Now().Format(utils.FormatDate)
 	endDate := time.Now().AddDate(0, 2, 0).Format(utils.FormatDate)
@@ -102,11 +102,11 @@ func CompanyTryOut(companyId, productId int) (companyReportPermissionList []*Com
 
 	//客户产品权限 状态 变更
 	//获取需要变更的 客户产品权限
-	oldPermissionEndDate := time.Now().AddDate(0,0,-1).Format(utils.FormatDate)
+	oldPermissionEndDate := time.Now().AddDate(0, 0, -1).Format(utils.FormatDate)
 	sql = `SELECT *
           FROM company_report_permission
 			WHERE status='正式' AND end_date<=? AND company_id=? AND product_id=? `
-	total, err := o.Raw(sql, oldPermissionEndDate,companyId, productId).QueryRows(&companyReportPermissionList)
+	total, err := o.Raw(sql, oldPermissionEndDate, companyId, productId).QueryRows(&companyReportPermissionList)
 	if err != nil {
 		return
 	}
@@ -159,17 +159,18 @@ type CompanyProduct struct {
 	ModifyTime       time.Time `description:"修改时间"`
 	StartDate        string    `description:"开始日期"`
 	EndDate          string    `description:"结束日期"`
+	ContractEndDate  string    `description:"合同结束日期"`
 	LoseReason       string    `description:"流失原因"`
 	LossTime         time.Time `description:"流失时间"`
 	CompanyType      string    `description:"客户类型"`
 }
 
 //获取产品详情
-func GetCompanyProduct(companyId int,productId int)(companyProduct *CompanyProduct,err error){
+func GetCompanyProduct(companyId int, productId int) (companyProduct *CompanyProduct, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT *
 				FROM company_product WHERE company_id= ? AND product_id = ? `
-	err = o.Raw(sql,companyId,productId).QueryRow(&companyProduct)
+	err = o.Raw(sql, companyId, productId).QueryRow(&companyProduct)
 	return
 }
 
@@ -194,19 +195,23 @@ func GetSellers() (items []*Sellers, err error) {
 	sql := `SELECT a.real_name,a.email,b.open_id,a.mobile,b.mobile,a.role_type_code,a.admin_id
            FROM admin AS a
 			LEFT JOIN wx_user AS b ON a.mobile=b.mobile
+			LEFT JOIN user_record AS c ON b.user_id=c.user_id
 			WHERE role_type_code IN('ficc_seller','ficc_admin','rai_seller','rai_admin')
-			AND b.open_id<>'' `
+			AND c.open_id<>'' and c.create_platform=1`
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
 
 func GetRemindCompany(sellerId int, endDate string) (items []*CompanyProduct, err error) {
 	o := orm.NewOrm()
-	sql := ` SELECT b.end_date,a.company_name,b.status,b.seller_id,b.seller_name
-             FROM company a
-			 INNER JOIN company_product AS b ON a.company_id=b.company_id
-			 WHERE  b.seller_id=? AND  b.end_date = ?
-			AND b.status IN('正式','试用') ORDER BY b.status DESC `
-	_,err=o.Raw(sql, sellerId, endDate).QueryRows(&items)
+	sql := ` SELECT b.end_date,b.contract_end_date,a.company_name,b.status,b.seller_id,b.seller_name FROM
+	company a
+	INNER JOIN company_product AS b ON a.company_id = b.company_id 
+WHERE
+	b.seller_id = ? 
+	AND (
+		( b.contract_end_date = ? AND b.status = "正式" )  OR (b.end_date = ? AND b.status = "试用")
+  ) ORDER BY b.status DESC `
+	_, err = o.Raw(sql, sellerId, endDate, endDate).QueryRows(&items)
 	return
 }

+ 40 - 22
services/company_product.go

@@ -15,7 +15,7 @@ func CompanyFreeze() (err error) {
 			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "试用两个月结束后,进入冻结 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
 		}
 	}()
-	endDate := time.Now().AddDate(0,0,-1).Format(utils.FormatDate)
+	endDate := time.Now().AddDate(0, 0, -1).Format(utils.FormatDate)
 	items, err := models.GetCompanyNeedFreeze(endDate)
 	if err != nil {
 		fmt.Println("GetCompanyNeedFreeze Err:" + err.Error())
@@ -24,7 +24,7 @@ func CompanyFreeze() (err error) {
 	}
 	for k, v := range items {
 		fmt.Println(k, v.CompanyId)
-		count, err := models.GetCompanyApprovalCount(v.CompanyId,v.ProductId)
+		count, err := models.GetCompanyApprovalCount(v.CompanyId, v.ProductId)
 		if err != nil {
 			return err
 		}
@@ -32,7 +32,7 @@ func CompanyFreeze() (err error) {
 			continue
 		}
 		//试用转冻结
-		companyReportPermissionList,err := models.CompanyFreeze(v.CompanyId, v.ProductId)
+		companyReportPermissionList, err := models.CompanyFreeze(v.CompanyId, v.ProductId)
 		if err != nil {
 			utils.FileLog.Info("CompanyFreeze Err:%s" + err.Error())
 			return err
@@ -46,8 +46,8 @@ func CompanyFreeze() (err error) {
 				v.ProductName, utils.RealName, remark, operation, approveContent, approveContent, "", v.Status)
 
 			//新增 客户产品权限 试用 转 冻结 的日志
-			for _,v := range companyReportPermissionList{
-				_ = AddCompanyReportPermissionLog(v.CompanyReportPermissionId,v.CompanyId,v.ProductId,utils.AdminId,v.ProductName,utils.RealName,remark,operation,v.Status)
+			for _, v := range companyReportPermissionList {
+				_ = AddCompanyReportPermissionLog(v.CompanyReportPermissionId, v.CompanyId, v.ProductId, utils.AdminId, v.ProductName, utils.RealName, remark, operation, v.Status)
 			}
 		}
 	}
@@ -61,7 +61,7 @@ func CompanyLoss() (err error) {
 			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "自动流失->冻结超3个月未处理 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
 		}
 	}()
-	endDate := time.Now().AddDate(0,0,-1).Format(utils.FormatDate)
+	endDate := time.Now().AddDate(0, 0, -1).Format(utils.FormatDate)
 	items, err := models.GetCompanyNeedLoss(endDate)
 	if err != nil {
 		fmt.Println("GetCompanyNeedLoss Err:" + err.Error())
@@ -70,7 +70,7 @@ func CompanyLoss() (err error) {
 	}
 	for k, v := range items {
 		fmt.Println(k, v.CompanyId)
-		count, err := models.GetCompanyApprovalCount(v.CompanyId,v.ProductId)
+		count, err := models.GetCompanyApprovalCount(v.CompanyId, v.ProductId)
 		if err != nil {
 			return err
 		}
@@ -101,7 +101,7 @@ func CompanyTryOut() (err error) {
 			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "正式客户自动试用->合同到期未续约转试用 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
 		}
 	}()
-	endDate := time.Now().AddDate(0,0,-1).Format(utils.FormatDate)
+	endDate := time.Now().AddDate(0, 0, -1).Format(utils.FormatDate)
 	items, err := models.GetCompanyNeedTryOut(endDate)
 	if err != nil {
 		fmt.Println("GetCompanyNeedTryOut Err:" + err.Error())
@@ -109,7 +109,7 @@ func CompanyTryOut() (err error) {
 		return
 	}
 	for k, v := range items {
-		count, err := models.GetCompanyApprovalCount(v.CompanyId,v.ProductId)
+		count, err := models.GetCompanyApprovalCount(v.CompanyId, v.ProductId)
 		if err != nil {
 			return err
 		}
@@ -119,7 +119,7 @@ func CompanyTryOut() (err error) {
 		fmt.Println(k, v.CompanyId)
 
 		//客户正式转试用
-		companyReportPermissionList,err := models.CompanyTryOut(v.CompanyId, v.ProductId)
+		companyReportPermissionList, err := models.CompanyTryOut(v.CompanyId, v.ProductId)
 		if err != nil {
 			utils.FileLog.Info("CompanyLoss Err:%s" + err.Error())
 			return err
@@ -133,8 +133,8 @@ func CompanyTryOut() (err error) {
 				v.ProductName, utils.RealName, remark, operation, approveContent, approveContent, "", v.Status)
 
 			//新增 客户产品权限 正式 转 试用 的日志
-			for _,v := range companyReportPermissionList{
-				_ = AddCompanyReportPermissionLog(v.CompanyReportPermissionId,v.CompanyId,v.ProductId,utils.AdminId,v.ProductName,utils.RealName,remark,operation,v.Status)
+			for _, v := range companyReportPermissionList {
+				_ = AddCompanyReportPermissionLog(v.CompanyReportPermissionId, v.CompanyId, v.ProductId, utils.AdminId, v.ProductName, utils.RealName, remark, operation, v.Status)
 			}
 		}
 	}
@@ -249,7 +249,7 @@ func CompanyOldDataSync() {
 }
 
 //正式/试用客户--到期提醒
-func CompanyRemind()(err error) {
+func CompanyRemind() (err error) {
 	defer func() {
 		if err != nil {
 			go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode, "到期提醒失败:CompanyRemind;Err"+err.Error(), utils.EmailSendToUsers)
@@ -260,13 +260,13 @@ func CompanyRemind()(err error) {
 	for k, v := range sellers {
 		fmt.Println(k, v.AdminId, v.Mobile)
 		CompanyRemind30Day(v)
-		time.Sleep(5*time.Second)
+		time.Sleep(5 * time.Second)
 		CompanyRemind15Day(v)
-		time.Sleep(5*time.Second)
+		time.Sleep(5 * time.Second)
 		CompanyRemind7Day(v)
-		time.Sleep(5*time.Second)
+		time.Sleep(5 * time.Second)
 		CompanyRemind1Day(v)
-		time.Sleep(5*time.Second)
+		time.Sleep(5 * time.Second)
 	}
 	return
 }
@@ -279,7 +279,9 @@ func CompanyRemind30Day(seller *models.Sellers) {
 			go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode, "到期提醒失败:CompanyRemind;Err"+err.Error(), utils.EmailSendToUsers)
 		}
 	}()
-	remindEndDate := "2020-12-31" //time.Now().AddDate(0, 0, 30).Format(utils.FormatDate)
+	remindEndDate := time.Now().AddDate(0, 0, 30).Format(utils.FormatDate)
+
+	//remindEndDate := "2020-12-31" //time.Now().AddDate(0, 0, 30).Format(utils.FormatDate)
 	companyItems, err := models.GetRemindCompany(seller.AdminId, remindEndDate)
 	if err != nil {
 		return
@@ -289,7 +291,11 @@ func CompanyRemind30Day(seller *models.Sellers) {
 	var isSend bool
 	msgContent := ``
 	for _, v := range companyItems {
-		emailContents += `<tr><td>` + v.CompanyName + `</td><td>` + v.EndDate + `</td><td>` + seller.RealName + `</td><td>` + v.Status + `</td></tr>`
+		endTime := v.EndDate
+		if v.Status == "正式" {
+			endTime = v.ContractEndDate
+		}
+		emailContents += `<tr><td>` + v.CompanyName + `</td><td>` + endTime + `</td><td>` + seller.RealName + `</td><td>` + v.Status + `</td></tr>`
 		msgContent += `客户:` + v.CompanyName + ";状态:" + v.Status + "\n"
 		isSend = true
 	}
@@ -333,7 +339,11 @@ func CompanyRemind15Day(seller *models.Sellers) {
 	emailContents := "<div><p>您有【" + strconv.Itoa(len(companyItems)) + "】 客户将于15天后到期,请注意查看</p>"
 	emailContents += "<table border='1'><tr><td width='200'>15天后到期客户名称</td><td width='200'>到期日期</td><td width='200'>销售人员</td><td>客户类型</td></tr>"
 	for _, v := range companyItems {
-		emailContents += `<tr><td>` + v.CompanyName + `</td><td>` + v.EndDate + `</td><td>` + seller.RealName + `</td><td>` + v.Status + `</td></tr>`
+		endTime := v.EndDate
+		if v.Status == "正式" {
+			endTime = v.ContractEndDate
+		}
+		emailContents += `<tr><td>` + v.CompanyName + `</td><td>` + endTime + `</td><td>` + seller.RealName + `</td><td>` + v.Status + `</td></tr>`
 		msgContent += `客户:` + v.CompanyName + ";状态:" + v.Status + "\n"
 		isSend = true
 	}
@@ -377,7 +387,11 @@ func CompanyRemind7Day(seller *models.Sellers) {
 	emailContents := "<div><p>您有【" + strconv.Itoa(len(companyItems)) + "】 客户将于7天后到期,请注意查看</p>"
 	emailContents += "<table border='1'><tr><td width='200'>7天后到期客户名称</td><td width='200'>到期日期</td><td width='200'>销售人员</td><td>客户类型</td></tr>"
 	for _, v := range companyItems {
-		emailContents += `<tr><td>` + v.CompanyName + `</td><td>` + v.EndDate + `</td><td>` + seller.RealName + `</td><td>` + v.Status + `</td></tr>`
+		endTime := v.EndDate
+		if v.Status == "正式" {
+			endTime = v.ContractEndDate
+		}
+		emailContents += `<tr><td>` + v.CompanyName + `</td><td>` + endTime + `</td><td>` + seller.RealName + `</td><td>` + v.Status + `</td></tr>`
 		msgContent += `客户:` + v.CompanyName + ";状态:" + v.Status + "\n"
 		isSend = true
 	}
@@ -421,7 +435,11 @@ func CompanyRemind1Day(seller *models.Sellers) {
 	emailContents := "<div><p>您有【" + strconv.Itoa(len(companyItems)) + "】 客户将于今天后到期,请注意查看</p>"
 	emailContents += "<table border='1'><tr><td width='200'>1天后到期客户名称</td><td width='200'>到期日期</td><td width='200'>销售人员</td><td>客户类型</td></tr>"
 	for _, v := range companyItems {
-		emailContents += `<tr><td>` + v.CompanyName + `</td><td>` + v.EndDate + `</td><td>` + seller.RealName + `</td><td>` + v.Status + `</td></tr>`
+		endTime := v.EndDate
+		if v.Status == "正式" {
+			endTime = v.ContractEndDate
+		}
+		emailContents += `<tr><td>` + v.CompanyName + `</td><td>` + endTime + `</td><td>` + seller.RealName + `</td><td>` + v.Status + `</td></tr>`
 		msgContent += `客户:` + v.CompanyName + ";状态:" + v.Status + "\n"
 		isSend = true
 	}