فهرست منبع

fix:用户权限正式转试用定时任务

Roc 3 سال پیش
والد
کامیت
6dcbdb8a16
3فایلهای تغییر یافته به همراه106 افزوده شده و 41 حذف شده
  1. 39 13
      models/company_report_permission.go
  2. 62 27
      services/company_report_permission.go
  3. 5 1
      services/task.go

+ 39 - 13
models/company_report_permission.go

@@ -1,8 +1,8 @@
 package models
 
 import (
-	"hongze/hongze_task/utils"
 	"github.com/rdlucklib/rdluck_tools/orm"
+	"hongze/hongze_task/utils"
 	"time"
 )
 
@@ -12,13 +12,13 @@ type CompanyReportPermission struct {
 	ProductId                 int       `description:"产品id"`
 	ProductName               string    `description:"产品名称"`
 	ReportPermissionId        int       `description:"权限id(作废)"`
-	Status          		  string	`description:"状态"`
+	Status                    string    `description:"状态"`
 	CreatedTime               time.Time `description:"创建时间"`
 	LastUpdatedTime           time.Time `description:"更新时间"`
 	ChartPermissionId         int       `description:"大分类ID"`
-	StartDate       string    `description:"合同开始日期"`
-	EndDate         string    `description:"合同结束日期"`
-	ModifyTime         string    `description:"更新时间"`
+	StartDate                 string    `description:"合同开始日期"`
+	EndDate                   string    `description:"合同结束日期"`
+	ModifyTime                string    `description:"更新时间"`
 }
 
 func GetCompanyReportPermission(companyId int) (items []*CompanyReportPermission, err error) {
@@ -33,14 +33,24 @@ func AddCompanyReportPermission(item *CompanyReportPermission) (err error) {
 	return
 }
 
-func ModifyCompanyOldPermission(startDate, endDate, productName string, companyId, productId int) (err error){
+func ModifyCompanyOldPermission(startDate, endDate, productName string, companyId, productId int) (err error) {
 	o := orm.NewOrm()
 	sql := `UPDATE company_report_permission SET start_date=?,end_date=?,product_id=?,product_name=?,modify_time=NOW() WHERE company_id=? AND start_date IS NULL `
-	_,err=o.Raw(sql, startDate, endDate, productId, productName, companyId).Exec()
+	_, err = o.Raw(sql, startDate, endDate, productId, productName, companyId).Exec()
+	return
+}
+
+// GetCompanyReportPermissionNeedTryOut 获取需要正式转关闭的产品权益
+func GetCompanyReportPermissionNeedTryOut(endDate string) (items []*CompanyReportPermission, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT *
+          FROM company_report_permission
+			WHERE status='正式' AND end_date<=?`
+	_, err = o.Raw(sql, endDate).QueryRows(&items)
 	return
 }
 
-//获取需要关闭的产品权益
+// GetCompanyReportPermissionNeedClose 获取需要关闭的产品权限
 func GetCompanyReportPermissionNeedClose(endDate string) (items []*CompanyReportPermission, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT *
@@ -50,12 +60,28 @@ func GetCompanyReportPermissionNeedClose(endDate string) (items []*CompanyReport
 	return
 }
 
-//关闭用户权限
-func CompanyReportPermissionClose(companyReportPermissionId int64,companyId, productId int) (err error) {
+// CompanyReportPermissionTryOut 正式转试用用户权限
+func CompanyReportPermissionTryOut(companyReportPermissionId int64, companyId, productId int) (err error) {
+	startDate := time.Now().Format(utils.FormatDate)
+	endDate := time.Now().AddDate(0, 2, 0).Format(utils.FormatDate)
+	o := orm.NewOrm()
+	//修改产品权限状态为关闭
+	//sql := `UPDATE company_report_permission SET status='试用',modify_time=NOW() WHERE company_report_permission_id = ? AND company_id= ? AND product_id = ? `
+	sql := `UPDATE company_report_permission SET status='试用',start_date=?,end_date=?,modify_time=NOW() WHERE company_report_permission_id = ? AND company_id= ? AND product_id = ? `
+	_, err = o.Raw(sql, startDate, endDate, companyReportPermissionId, companyId, productId).Exec()
+	//_, err = o.Raw(sql, companyReportPermissionId, companyId, productId).Exec()
+	if err != nil {
+		return err
+	}
+	return
+}
+
+// CompanyReportPermissionClose 关闭用户权限
+func CompanyReportPermissionClose(companyReportPermissionId int64, companyId, productId int) (err error) {
 	o := orm.NewOrm()
 	//修改产品权限状态为关闭
 	sql := `UPDATE company_report_permission SET status='关闭',modify_time=NOW() WHERE company_report_permission_id = ? AND company_id= ? AND product_id = ? `
-	_, err = o.Raw(sql, companyReportPermissionId,companyId, productId).Exec()
+	_, err = o.Raw(sql, companyReportPermissionId, companyId, productId).Exec()
 	if err != nil {
 		return err
 	}
@@ -63,13 +89,13 @@ func CompanyReportPermissionClose(companyReportPermissionId int64,companyId, pro
 }
 
 //查询是否存在还未过期的产品权限
-func GetCompanyReportPermissionCount(companyId, productId int) (count int,err error) {
+func GetCompanyReportPermissionCount(companyId, productId int) (count int, err error) {
 	o := orm.NewOrm()
 	startDate := time.Now().Format(utils.FormatDate)
 	countSql := `SELECT
 			COUNT(company_report_permission_id ) AS COUNT
 			FROM company_report_permission WHERE status in ('试用','正式') AND end_date >= ? AND company_id= ? AND product_id = ? `
 
-	err = o.Raw(countSql, startDate,companyId,productId).QueryRow(&count)
+	err = o.Raw(countSql, startDate, companyId, productId).QueryRow(&count)
 	return
 }

+ 62 - 27
services/company_report_permission.go

@@ -1,18 +1,53 @@
 package services
 
 import (
+	"context"
 	"fmt"
 	"hongze/hongze_task/models"
 	"hongze/hongze_task/utils"
 	"time"
-	"context"
 )
 
+// CompanyReportPermissionTryOut 产品正式权限  ->  产品权限试用
+func CompanyReportPermissionTryOut(cont context.Context) (err error) {
+	//fmt.Println("开始进入产品试用权限  ->  产品权限关闭")
+	endDate := time.Now().AddDate(0, 0, -1).Format(utils.FormatDate)
+	items, err := models.GetCompanyReportPermissionNeedTryOut(endDate)
+
+	if err != nil {
+		utils.FileLog.Info("GetCompanyReportPermissionNeedTryOut Err:%s" + err.Error())
+		return
+	}
+
+	for _, v := range items {
+		//fmt.Println(k, v)
+		//continue
+		//查看是否有审批单,如果有审批单,那么就退出当前循环,进入下一循环
+
+		//count, err := models.GetCompanyApprovalCount(v.CompanyId, v.ProductId)
+		//if err != nil {
+		//	continue
+		//}
+		//if count > 0 {
+		//	continue
+		//}
+
+		//正式转试用用户产品权限
+		err = models.CompanyReportPermissionTryOut(v.CompanyReportPermissionId, v.CompanyId, v.ProductId)
+		if err != nil {
+			utils.FileLog.Info("CompanyReportPermissionTryOut Err:%s" + err.Error())
+			continue
+		}
+		//添加正式转试用用户产品权限日志
+		_ = AddCompanyReportPermissionLog(v.CompanyReportPermissionId, v.CompanyId, v.ProductId, utils.AdminId, v.ProductName, utils.RealName, "正式转试用", "try_out", v.Status)
+	}
+	return
+}
 
 //产品试用权限  ->  产品权限关闭
 func CompanyReportPermissionClose(cont context.Context) (err error) {
 	//fmt.Println("开始进入产品试用权限  ->  产品权限关闭")
-	endDate := time.Now().AddDate(0,0,-1).Format(utils.FormatDate)
+	endDate := time.Now().AddDate(0, 0, -1).Format(utils.FormatDate)
 	items, err := models.GetCompanyReportPermissionNeedClose(endDate)
 
 	if err != nil {
@@ -27,7 +62,7 @@ func CompanyReportPermissionClose(cont context.Context) (err error) {
 		//fmt.Println(k, v)
 		//continue
 		//查看是否有审批单,如果有审批单,那么就退出当前循环,进入下一循环
-		count, err := models.GetCompanyApprovalCount(v.CompanyId,v.ProductId)
+		count, err := models.GetCompanyApprovalCount(v.CompanyId, v.ProductId)
 		if err != nil {
 			continue
 		}
@@ -36,33 +71,33 @@ func CompanyReportPermissionClose(cont context.Context) (err error) {
 		}
 
 		//关闭用户产品权限
-		err = models.CompanyReportPermissionClose(v.CompanyReportPermissionId,v.CompanyId, v.ProductId)
+		err = models.CompanyReportPermissionClose(v.CompanyReportPermissionId, v.CompanyId, v.ProductId)
 		if err != nil {
 			utils.FileLog.Info("CompanyReportPermissionClose Err:%s" + err.Error())
 			continue
 		}
 		//添加关闭用户产品权限日志
-		_ = AddCompanyReportPermissionLog(v.CompanyReportPermissionId,v.CompanyId,v.ProductId,utils.AdminId,v.ProductName,utils.RealName,"试用转关闭","close",v.Status)
+		_ = AddCompanyReportPermissionLog(v.CompanyReportPermissionId, v.CompanyId, v.ProductId, utils.AdminId, v.ProductName, utils.RealName, "试用转关闭", "close", v.Status)
 
 		//如果不存在该数据,那么将该数据放入待处理用户产品权限列表
-		mapKey := fmt.Sprintf("%v_%v",v.CompanyId,v.ProductId)
-		if _,ok := freezeCompanyProductList[mapKey];ok==false{
+		mapKey := fmt.Sprintf("%v_%v", v.CompanyId, v.ProductId)
+		if _, ok := freezeCompanyProductList[mapKey]; ok == false {
 			freezeCompanyProductList[mapKey] = v
 		}
 
 	}
 
 	//遍历待处理的用户产品权限列表,查询用户产品权限信息并冻结用户产品
-	for _,companyReportPermission := range freezeCompanyProductList{
+	for _, companyReportPermission := range freezeCompanyProductList {
 		go queryAndFreezeCompanyProduct(companyReportPermission)
 	}
 	return
 }
 
 //查询用户产品权限信息并冻结用户产品
-func queryAndFreezeCompanyProduct(companyReportPermission *models.CompanyReportPermission){
+func queryAndFreezeCompanyProduct(companyReportPermission *models.CompanyReportPermission) {
 	//查询该用户名下是否存在还在使用的权限
-	count,err := models.GetCompanyReportPermissionCount(companyReportPermission.CompanyId, companyReportPermission.ProductId)
+	count, err := models.GetCompanyReportPermissionCount(companyReportPermission.CompanyId, companyReportPermission.ProductId)
 	if err != nil {
 		utils.FileLog.Info("CompanyReportPermissionClose query other permission Err:%s" + err.Error())
 	}
@@ -72,18 +107,18 @@ 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
 	}
 
 	//查询用户产品信息
-	companyProduct ,err := models.GetCompanyProduct(companyReportPermission.CompanyId,companyReportPermission.ProductId)
+	companyProduct, err := models.GetCompanyProduct(companyReportPermission.CompanyId, companyReportPermission.ProductId)
 	//if err!=nil && err.Error() != utils.ErrNoRow() {
 	if err != nil {
-		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)
+		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
@@ -102,22 +137,22 @@ func queryAndFreezeCompanyProduct(companyReportPermission *models.CompanyReportP
 }
 
 //添加用户权限操作日志
-func AddCompanyReportPermissionLog(companyReportPermissionId int64,companyId,productId,sysUserId int,productName string,sysUserName,remark,operation,status string) (err error) {
+func AddCompanyReportPermissionLog(companyReportPermissionId int64, companyId, productId, sysUserId int, productName string, sysUserName, remark, operation, status string) (err error) {
 	record := models.CompanyReportPermissionLog{
-		CompanyReportPermissionId : companyReportPermissionId,
-		CompanyId : companyId,
-		ProductId : productId,
-		ProductName : productName,
-		SysUserId : sysUserId,
-		SysUserName : sysUserName,
-		Remark : remark,
-		Operation : operation,
-		Status : status,
-		CreateTime : time.Now(),
+		CompanyReportPermissionId: companyReportPermissionId,
+		CompanyId:                 companyId,
+		ProductId:                 productId,
+		ProductName:               productName,
+		SysUserId:                 sysUserId,
+		SysUserName:               sysUserName,
+		Remark:                    remark,
+		Operation:                 operation,
+		Status:                    status,
+		CreateTime:                time.Now(),
 	}
 	_, err = models.AddCompanyReportPermissionLog(&record)
-	if err != nil{
+	if err != nil {
 		go utils.SendEmail(utils.APPNAME+"失败提醒"+utils.RunMode, "services:AddCompanyReportPermissionLog;Err"+err.Error(), utils.EmailSendToUsers)
 	}
 	return
-}
+}

+ 5 - 1
services/task.go

@@ -38,8 +38,12 @@ func Task() {
 	companyLoss := task.NewTask("companyLoss", "0 20 2 * * *", CompanyLoss)
 	task.AddTask("冻结->流失", companyLoss)
 
+	//用户产品权限正式-->试用
+	companyReportPermissionTryOut := task.NewTask("companyReportPermissionTryOut", "0 30 2 * * *", CompanyReportPermissionTryOut)
+	task.AddTask("用户产品权限正式-->试用", companyReportPermissionTryOut)
+
 	//用户产品权限试用-->关闭
-	companyReportPermissionClose := task.NewTask("companyReportPermissionClose", "0 30 2 * * *", CompanyReportPermissionClose)
+	companyReportPermissionClose := task.NewTask("companyReportPermissionClose", "0 35 2 * * *", CompanyReportPermissionClose)
 	task.AddTask("用户产品权限试用-->关闭", companyReportPermissionClose)
 
 	//删除日志记录