Przeglądaj źródła

Merge branch 'dev' of hongze/hongze_task into master

hongze 3 lat temu
rodzic
commit
3133eb595e

+ 146 - 1
models/company/company.go

@@ -2,6 +2,8 @@ package company
 
 import (
 	"hongze/hongze_task/models"
+	"hongze/hongze_task/models/company_contract"
+	"hongze/hongze_task/utils"
 	"rdluck_tools/orm"
 	"time"
 )
@@ -69,7 +71,7 @@ func TryOutToFormal(companyId, productId, sellerId, companyContractId int, start
 }
 
 //服务更新
-func ApplyServiceUpdate(companyId, productId, sellerId, companyContractId int, startDate, endDate, sellerName, productName string) (err error) {
+func ApplyServiceUpdateOld(companyId, productId, sellerId, companyContractId int, startDate, endDate, sellerName, productName string) (err error) {
 	o := orm.NewOrm()
 	o.Begin()
 	defer func() {
@@ -129,3 +131,146 @@ func ApplyServiceUpdate(companyId, productId, sellerId, companyContractId int, s
 	}
 	return
 }
+
+func ApplyServiceUpdate(companyId, productId, sellerId, companyContractId int, startDate, endDate, sellerName, productName string) (err error) {
+	o := orm.NewOrm()
+	o.Begin()
+	defer func() {
+		if err != nil {
+			o.Rollback()
+		} else {
+			o.Commit()
+		}
+	}()
+
+	//合同权限变更
+	items := make([]*models.CompanyReportPermission, 0)
+	sql := `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? `
+	_, err = o.Raw(sql, companyId, productId).QueryRows(&items)
+	if err != nil {
+		return
+	}
+
+	//已存在的权限map
+	nowCompanyReportPermissionMap := make(map[int]*models.CompanyReportPermission)
+
+	//产品服务的开始、结束日期(非产品权限)
+	updateStartDate := startDate
+	updateStartDateTime, err := time.Parse(utils.FormatDate, updateStartDate)
+	if err != nil {
+		return
+	}
+	updateEndDate := endDate
+	updateEndDateTime, err := time.Parse(utils.FormatDate, updateEndDate)
+	if err != nil {
+		return
+	}
+
+	for _, pv := range items {
+		cpLog := new(models.CompanyPermissionLog)
+		cpLog.CompanyId = companyId
+		cpLog.ChartPermissionId = pv.ChartPermissionId
+		cpLog.CreateTime = time.Now()
+		cpLog.SysUserId = sellerId
+		cpLog.SysUserName = sellerName
+		cpLog.StartDate = pv.StartDate
+		cpLog.EndDate = pv.EndDate
+		cpLog.ProductId = productId
+		cpLog.ProductName = pv.ProductName
+		go models.AddCompanyPermissionLog(cpLog)
+
+		//将权限插入到已存在的权限map中
+		nowCompanyReportPermissionMap[pv.ChartPermissionId] = pv
+
+		//校验原始数据中的开始日期是否小于合同内的开始日期,如果小于,那么变更为原先的合同开始日期
+		tmpStartDate, tmpErr := time.Parse(utils.FormatDate, pv.StartDate)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		if tmpStartDate.Before(updateStartDateTime) {
+			updateStartDateTime = tmpStartDate
+		}
+
+		//校验原始数据中的结束日期是否大于合同内的结束日期,如果大于,那么变更为原先的合同结束日期
+		tmpEndDate, tmpErr := time.Parse(utils.FormatDate, pv.EndDate)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		if tmpEndDate.After(updateEndDateTime) {
+			updateEndDateTime = tmpEndDate
+		}
+	}
+	//删除所有权限
+	//sql = `DELETE FROM company_report_permission WHERE company_id=? AND product_id=? `
+	//_, err = o.Raw(sql, companyId, productId).Exec()
+	//if err != nil {
+	//	return
+	//}
+
+	//更新客户产品信息
+	sql = `UPDATE company_product SET status='正式',start_date=?,end_date=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
+	_, err = o.Raw(sql, updateStartDateTime, updateEndDateTime, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+
+	contractPermission := make([]*company_contract.CompanyContractPermission, 0)
+	sql = `SELECT * FROM company_contract_permission WHERE company_contract_id=? AND company_id=? `
+	_, err = o.Raw(sql, companyContractId, companyId).QueryRows(&contractPermission)
+	if err != nil {
+		return
+	}
+
+	for _, pv := range contractPermission {
+		nowPermission, ok := nowCompanyReportPermissionMap[pv.ChartPermissionId]
+		//判断是否已经存在该权限,如果存在的话,那么是修改,否则是新增
+		if ok {
+			needUpdate := false
+			if nowPermission.Status != "正式" && nowPermission.Status != "永续" {
+				needUpdate = true
+			}
+
+			//如果 需要更新 字段 为false,那么再去校验时间
+			if needUpdate == false {
+				//如果当前存该权限,那么去校验是否需要修改
+				nowPermissionEndDateTime, tmpErr := time.Parse(utils.FormatDate, nowPermission.EndDate)
+				if tmpErr != nil {
+					err = tmpErr
+					return
+				}
+				contractPermissionEndDateTime, tmpErr := time.Parse(utils.FormatDate, pv.EndDate)
+				if tmpErr != nil {
+					err = tmpErr
+					return
+				}
+				if contractPermissionEndDateTime.After(nowPermissionEndDateTime) {
+					needUpdate = true
+				}
+			}
+
+			//如果 需要更新 字段 为 true,那么就去更新
+			if needUpdate {
+				sql = `update company_report_permission set end_date=?,last_updated_time=now(),modify_time=now(),company_contract_id=?,status=? where company_report_permission_id=? `
+				_, tmpErr := o.Raw(sql, pv.EndDate, companyContractId, "正式", nowPermission.CompanyReportPermissionId).Exec()
+				err = tmpErr
+				if err != nil {
+					return
+				}
+			}
+
+		} else {
+			sql = `INSERT INTO company_report_permission(company_id, report_permission_id,created_time, last_updated_time,
+             chart_permission_id, start_date,end_date,product_id,product_name, modify_time,company_contract_id,status) 
+			VALUES(?,?,NOW(),NOW(),?,?,?,?,?,NOW(),?,?) `
+			_, tmpErr := o.Raw(sql, companyId, pv.ChartPermissionId, pv.ChartPermissionId, pv.StartDate, pv.EndDate, productId, productName, companyContractId, "正式").Exec()
+			err = tmpErr
+			if err != nil {
+				return
+			}
+		}
+
+	}
+	return
+}

+ 12 - 1
models/company_contract/company_contract.go

@@ -25,10 +25,21 @@ type CompanyContract struct {
 }
 
 //通过开始日期获取当天开始的合同列表
-func GetStartContractListByStartDate(startDate string)(total int64,list []*CompanyContract,err error)  {
+func GetStartContractListByStartDate(startDate string) (total int64, list []*CompanyContract, err error) {
 	o := orm.NewOrm()
 	sql := "SELECT * FROM company_contract where start_date = ? AND status = 1 "
 	total, err = o.Raw(sql, startDate).QueryRows(&list)
 	return
 	return
 }
+
+type CompanyContractPermission struct {
+	Id                int       `orm:"column(id);pk" description:"客户合同id"`
+	CompanyId         int       `description:"客户id"`
+	CompanyContractId int       `description:"合同id"`
+	ChartPermissionId int       `description:"权限id"`
+	StartDate         string    `description:"开始日期"`
+	EndDate           string    `description:"结束日期"`
+	CreateTime        time.Time `description:"创建时间"`
+	ModifyTime        time.Time `description:"修改时间"`
+}

+ 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
 }

+ 3 - 4
models/db.go

@@ -1,11 +1,11 @@
 package models
 
 import (
+	_ "github.com/go-sql-driver/mysql"
 	"hongze/hongze_task/models/company_approval"
 	"hongze/hongze_task/models/company_contract"
 	"hongze/hongze_task/models/data_manage"
 	"hongze/hongze_task/utils"
-	_ "github.com/go-sql-driver/mysql"
 	"time"
 
 	"rdluck_tools/orm"
@@ -20,7 +20,6 @@ func init() {
 	db, _ := orm.GetDB("default")
 	db.SetConnMaxLifetime(10 * time.Minute)
 
-
 	_ = orm.RegisterDataBase("rddp", "mysql", utils.MYSQL_URL_RDDP)
 	orm.SetMaxIdleConns("rddp", 50)
 	orm.SetMaxOpenConns("rddp", 100)
@@ -28,7 +27,6 @@ func init() {
 	report_db, _ := orm.GetDB("rddp")
 	report_db.SetConnMaxLifetime(10 * time.Minute)
 
-
 	_ = orm.RegisterDataBase("edb", "mysql", utils.MYSQL_URL_EDB)
 	orm.SetMaxIdleConns("edb", 50)
 	orm.SetMaxOpenConns("edb", 100)
@@ -60,9 +58,10 @@ func init() {
 		new(StackCompanyStatistic),
 		new(CompanyPermissionLog),
 		new(company_contract.CompanyContract),
+		new(company_contract.CompanyContractPermission),
 		new(company_approval.CompanyApproval),
 		new(data_manage.EdbDataWind),
 		new(data_manage.EdbDataThs),
 		new(data_manage.EdbDataPb),
 	)
-}
+}

+ 29 - 31
services/company_contract/company_contract.go

@@ -3,13 +3,11 @@ package company_contract
 import (
 	"errors"
 	"fmt"
-	"hongze/hongze_task/models"
 	"hongze/hongze_task/models/company"
 	"hongze/hongze_task/models/company_approval"
 	"hongze/hongze_task/models/company_contract"
 	"hongze/hongze_task/utils"
 	"strings"
-	"time"
 )
 
 //合同处理
@@ -21,50 +19,50 @@ func HandleCompanyContract() (err error) {
 		}
 	}()
 	today := utils.GetToday(utils.FormatDate)
-	total,list,err := company_contract.GetStartContractListByStartDate(today)
+	total, list, err := company_contract.GetStartContractListByStartDate(today)
 	if err != nil {
 		fmt.Println("HandleCompanyContract Err:" + err.Error())
 		utils.FileLog.Info("HandleCompanyContract Err:%s" + err.Error())
 		return
 	}
-	fmt.Sprintln("总共d%条数据待处理",total)
-	errorList := make([]string,0)
+	fmt.Sprintln("总共d%条数据待处理", total)
+	errorList := make([]string, 0)
 	for _, v := range list {
 		//fmt.Println(k, v.CompanyId)
 		//fmt.Println(v)
-		companyApproval,err := company_approval.GetCompanyApprovalByCompanyContractId(v.CompanyContractId)
+		companyApproval, err := company_approval.GetCompanyApprovalByCompanyContractId(v.CompanyContractId)
 		if err != nil {
-			errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";err:",err))
+			errorList = append(errorList, fmt.Sprint("合同id:", v.CompanyContractId, ";err:", err))
 			continue
 		}
-		if companyApproval == nil{
-			errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";找不到对应的审批单"))
+		if companyApproval == nil {
+			errorList = append(errorList, fmt.Sprint("合同id:", v.CompanyContractId, ";找不到对应的审批单"))
 			continue
 		}
 
-		companyProduct,err := models.GetCompanyProduct(v.CompanyId,v.ProductId)
-		if err != nil {
-			errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";寻找客户产品时异常 err:",err))
-			continue
-		}
+		//companyProduct, err := models.GetCompanyProduct(v.CompanyId, v.ProductId)
+		//if err != nil {
+		//	errorList = append(errorList, fmt.Sprint("合同id:", v.CompanyContractId, ";寻找客户产品时异常 err:", err))
+		//	continue
+		//}
 		//companyProduct.EndDate
 		//格式化客户当前产品结束日期
-		companyProductEndDate, err := time.Parse(utils.FormatDate, companyProduct.EndDate)
-		if err != nil {
-			errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";格式化客户当前产品结束时间时异常 err:",err))
-			continue
-		}
+		//companyProductEndDate, err := time.Parse(utils.FormatDate, companyProduct.EndDate)
+		//if err != nil {
+		//	errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";格式化客户当前产品结束时间时异常 err:",err))
+		//	continue
+		//}
 		//格式化合同结束日期
-		contractEndDate, err := time.Parse(utils.FormatDate, v.EndDate)
-		if err != nil {
-			errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";格式化合同结束日期时异常 err:",err))
-			continue
-		}
+		//contractEndDate, err := time.Parse(utils.FormatDate, v.EndDate)
+		//if err != nil {
+		//	errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";格式化合同结束日期时异常 err:",err))
+		//	continue
+		//}
 		//如果 合同结束日期 小于 客户当前产品结束日期,那么不执行合同内容
-		if contractEndDate.Before(companyProductEndDate) {
-			errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";合同结束日期 小于 客户当前产品结束日期,不执行该合同内容"))
-			continue
-		}
+		//if contractEndDate.Before(companyProductEndDate) {
+		//	errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";合同结束日期 小于 客户当前产品结束日期,不执行该合同内容"))
+		//	continue
+		//}
 		//申请类型:1:试用->正式,2:冻结—>试用,3:试用延期,4:原销售申请领取流失客户,5:正式客户申请服务更新
 		switch companyApproval.ApplyMethod {
 		case 1:
@@ -72,14 +70,14 @@ func HandleCompanyContract() (err error) {
 		case 5:
 			company.ApplyServiceUpdate(v.CompanyId, v.ProductId, utils.AdminId, v.CompanyContractId, v.StartDate, v.EndDate, utils.RealName, v.ProductName)
 		default:
-			errorList = append(errorList,fmt.Sprint("合同id:",v.CompanyContractId,";审批单类型异常"))
+			errorList = append(errorList, fmt.Sprint("合同id:", v.CompanyContractId, ";审批单类型异常"))
 			continue
 		}
 	}
 
 	//错误信息,批量返回错误信息
-	if len(errorList) >0 {
-		err = errors.New(strings.Join(errorList,";"))
+	if len(errorList) > 0 {
+		err = errors.New(strings.Join(errorList, ";"))
 	}
 	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
 	}