Explorar o código

fix(客户状态变更):定时任务中,
正式->试用、试用->冻结,新增修改客户产品权限表记录数据

Roc %!s(int64=4) %!d(string=hai) anos
pai
achega
952a3bcb72

+ 55 - 12
models/company_product.go

@@ -31,54 +31,97 @@ func AddCompanyOperationRecord(item *CompanyOperationRecord) (lastId int64, err
 	return
 }
 
-func CompanyFreeze(companyId, productId int) (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)
 
+	//客户产品 状态 变更
 	sql := `UPDATE company_product SET status='冻结',freeze_time=NOW(),modify_time=NOW(),start_date=?,end_date=?,freeze_start_date=?,freeze_end_date=? WHERE company_id=? AND product_id=? `
 	_, err = o.Raw(sql, freezeStartDate, freezeEndDate, freezeStartDate, freezeEndDate, companyId, productId).Exec()
 	if err != nil {
-		return err
+		return
 	}
-	sql = `UPDATE company SET type=3,last_updated_time=NOW(),start_date=?,end_date=? WHERE company_id=? `
-	_, err = o.Raw(sql, freezeStartDate, freezeEndDate, companyId).Exec()
+
+	//客户产品权限 状态 变更
+	//获取需要变更的 客户产品权限
+	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)
 	if err != nil {
-		return err
+		return
+	}
+
+	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()
+		if err != nil {
+			return
+		}
 	}
+
+	//客户状态变更
+	sql = `UPDATE company SET type=3,last_updated_time=NOW(),start_date=?,end_date=? WHERE company_id=? `
+	_, err = o.Raw(sql, freezeStartDate, freezeEndDate, companyId).Exec()
 	return
 }
 
 func CompanyLoss(companyId, productId int) (err error) {
 	o := orm.NewOrm()
+	//客户产品状态变更
 	sql := `UPDATE company_product SET status='流失',loss_time=NOW(),modify_time=NOW(),lose_reason='冻结到期系统自动流失' WHERE company_id=? AND product_id=? `
 	_, err = o.Raw(sql, companyId, productId).Exec()
 	if err != nil {
-		return err
+		return
 	}
+
+	//客户状态变更
 	sql = `UPDATE company SET type=3,last_updated_time=NOW() WHERE company_id=? `
 	_, err = o.Raw(sql, companyId).Exec()
 	if err != nil {
-		return err
+		return
 	}
 	return
 }
 
-func CompanyTryOut(companyId, productId int) (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)
 
+	//客户产品 状态 变更
 	sql := `UPDATE company_product SET status='试用',start_date=?,end_date=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
 	_, err = o.Raw(sql, startDate, endDate, companyId, productId).Exec()
 	if err != nil {
-		return err
+		return
 	}
-	sql = `UPDATE company SET type=2,last_updated_time=NOW(),start_date=?,end_date=? WHERE company_id=? `
-	_, err = o.Raw(sql, startDate, endDate, companyId).Exec()
+
+	//客户产品权限 状态 变更
+	//获取需要变更的 客户产品权限
+	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)
 	if err != nil {
-		return err
+		return
 	}
+	if total > 0 {
+		sql = `UPDATE company_report_permission SET status='试用',start_date=?,end_date=?,modify_time=NOW() 
+			WHERE status='正式' AND end_date<=? AND company_id=? AND product_id=? `
+		_, err = o.Raw(sql, startDate, endDate, oldPermissionEndDate, companyId, productId).Exec()
+		if err != nil {
+			return
+		}
+	}
+
+	//客户状态变更
+	sql = `UPDATE company SET type=2,last_updated_time=NOW(),start_date=?,end_date=? WHERE company_id=? `
+	_, err = o.Raw(sql, startDate, endDate, companyId).Exec()
 	return
 }
 

+ 0 - 7
models/company_report_permission.go

@@ -40,7 +40,6 @@ func ModifyCompanyOldPermission(startDate, endDate, productName string, companyI
 	return
 }
 
-
 //获取需要关闭的产品权益
 func GetCompanyReportPermissionNeedClose(endDate string) (items []*CompanyReportPermission, err error) {
 	o := orm.NewOrm()
@@ -48,12 +47,6 @@ func GetCompanyReportPermissionNeedClose(endDate string) (items []*CompanyReport
           FROM company_report_permission
 			WHERE status='试用' AND end_date<=?`
 	_, err = o.Raw(sql, endDate).QueryRows(&items)
-
-	//testSql
-	//sql := `SELECT *
-    //       FROM company_report_permission
-	//		WHERE company_id in (194,197,200,201,202) and status='试用'`
-	//_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
 

+ 17 - 3
services/company_product.go

@@ -3,6 +3,7 @@ package services
 import (
 	"fmt"
 	"hongze/hongze_task/models"
+	"hongze/hongze_task/models/company_product_log"
 	"hongze/hongze_task/utils"
 	"strconv"
 	"time"
@@ -31,7 +32,8 @@ func CompanyFreeze() (err error) {
 		if count > 0 {
 			continue
 		}
-		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
@@ -41,8 +43,13 @@ func CompanyFreeze() (err error) {
 			remark := "试用转冻结"
 			operation := "freeze"
 			approveContent := "冻结"
-			AddCompanyOperationRecord(v.CompanyId, utils.AdminId, v.ProductId, utils.AdminId, v.CompanyName,
+			go AddCompanyOperationRecord(v.CompanyId, utils.AdminId, v.ProductId, utils.AdminId, v.CompanyName,
 				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)
+			}
 		}
 	}
 	return
@@ -111,7 +118,9 @@ func CompanyTryOut() (err error) {
 			continue
 		}
 		fmt.Println(k, v.CompanyId)
-		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
@@ -123,6 +132,11 @@ func CompanyTryOut() (err error) {
 			approveContent := "试用"
 			AddCompanyOperationRecord(v.CompanyId, utils.AdminId, v.ProductId, utils.AdminId, v.CompanyName,
 				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)
+			}
 		}
 	}
 	return

+ 5 - 2
services/company_report_permission.go

@@ -71,7 +71,7 @@ func queryAndFreezeCompanyProduct(companyReportPermission *models.CompanyReportP
 	}
 
 	//冻结该用户产品
-	err = models.CompanyFreeze(companyReportPermission.CompanyId, companyReportPermission.ProductId)
+	_,err = models.CompanyFreeze(companyReportPermission.CompanyId, companyReportPermission.ProductId)
 	if err != nil {
 		go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode+";冻结该用户产品", "services:queryAndFreezeCompanyProduct;Err"+err.Error(), utils.EmailSendToUsers)
 		return
@@ -81,7 +81,10 @@ func queryAndFreezeCompanyProduct(companyReportPermission *models.CompanyReportP
 	companyProduct ,err := models.GetCompanyProduct(companyReportPermission.CompanyId,companyReportPermission.ProductId)
 	//if err!=nil && err.Error() != utils.ErrNoRow() {
 	if err != nil {
-		go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode+";查询用户产品信息", "services:queryAndFreezeCompanyProduct;Err"+err.Error(), utils.EmailSendToUsers)
+		if err.Error() != utils.ErrNoRow(){
+			go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode+";查询用户产品信息", fmt.Sprint("services:queryAndFreezeCompanyProduct;Err"+err.Error(),"CompanyId:",companyReportPermission.CompanyId,";ProductId:",companyReportPermission.ProductId), utils.EmailSendToUsers)
+		}
+		//go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode+";查询用户产品信息", fmt.Sprint("services:queryAndFreezeCompanyProduct;Err"+err.Error(),"CompanyId:",companyReportPermission.CompanyId,";ProductId:",companyReportPermission.ProductId), utils.EmailSendToUsers)
 		return
 	}
 	//添加操作日志