Selaa lähdekoodia

Merge branch 'fix_bug_0806' of http://8.136.199.33:3000/hongze/hongze_mobile_admin into debug

xingzai 7 kuukautta sitten
vanhempi
commit
7b37119185

+ 117 - 1
models/tables/company_approval/company_approval.go

@@ -6,6 +6,7 @@ import (
 	"hongze/hongze_mobile_admin/models/tables/company_delay_permission"
 	"hongze/hongze_mobile_admin/models/tables/company_permission_log"
 	"hongze/hongze_mobile_admin/models/tables/company_report_permission"
+	"hongze/hongze_mobile_admin/services/alarm_msg"
 	"hongze/hongze_mobile_admin/utils"
 	"time"
 )
@@ -305,7 +306,7 @@ func TryOutToFormalXClassRai(companyId, productId, sellerId, companyApprovalId,
 	}()
 	//123月份申请转正通过时,将试用期限延长(更新)至4.30。456月份申请转正通过时,将试用期限延长至7.31。789月份申请转正通过时,将试用期限延长至10.31。101112月份申请转正通过时,将试用期限延长至次年1.31。
 	endDate = utils.GetLastDayOfQuarter(time.Now()).Format(utils.FormatDate)
-	
+
 	// 当套餐类型为0时, 不更新套餐类型
 	sql := `UPDATE company_product SET status='永续',try_out_time=NULL,last_description_time=NULL,freeze_time=NULL,renewal_intention=0,is_suspend=0,is_formal=1,approve_status='已审批',end_date=?,rai_package_type=?,modify_time=NOW(),formal_time=NOW(),try_stage=1  WHERE company_id=? `
 	_, err = tx.Raw(sql, endDate, raiPackageType, companyId).Exec()
@@ -512,6 +513,121 @@ func FreezeToTryOut(companyId, productId, sellerId, companyApprovalId, applyUser
 	return
 }
 
+// FreezeToTryOutXClassRai  权益冻结转X类试用
+func FreezeToTryOutXClassRai(companyId, productId, sellerId, companyApprovalId, applyUserId int, sellerName, productName string) (newCompanyReportPermissionList []*company_report_permission.CompanyReportPermission, startDate, endDate string, err error) {
+	o := orm.NewOrm()
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			tmpErr := to.Rollback()
+			if tmpErr != nil {
+				go alarm_msg.SendAlarmMsg("FreezeToTryOutXClassRai 事务回滚失败,Err:"+tmpErr.Error(), 3)
+			}
+		} else {
+			err = to.Commit()
+		}
+	}()
+
+	startDate = time.Now().Format(utils.FormatDate)
+	endDate = time.Now().AddDate(0, 2, 0).Format(utils.FormatDate)
+
+	//sellerItem, err := system.GetSysAdminById(applyUserId)
+	//if err != nil {
+	//	return
+	//}
+
+	//更新用户产品状态
+	sql := `UPDATE company_product SET status='永续',is_suspend=0,approve_status='已审批',freeze_start_date=null,freeze_end_date=null,
+            start_date=?,end_date=?,modify_time=NOW(),try_stage=1 WHERE company_id=?  `
+	_, err = to.Raw(sql, startDate, endDate, companyId).Exec()
+	if err != nil {
+		return
+	}
+	//更新用户状态
+	sql = `UPDATE company SET type=5,last_updated_time=NOW() WHERE company_id=? `
+	_, err = to.Raw(sql, companyId).Exec()
+	if err != nil {
+		return
+	}
+	//更新审批单
+	sql = `UPDATE company_approval SET approve_status='已审批',approve_time=NOW(),modify_time=NOW() WHERE company_approval_id=? AND company_id=? AND product_id=? `
+	_, err = to.Raw(sql, companyApprovalId, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+
+	//查询该用户所有产品权限,并把当前数据做日志(允许添加不修改的数据)
+	items := make([]*company_report_permission.CompanyReportPermission, 0)
+	sql = `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? `
+	_, err = to.Raw(sql, companyId, productId).QueryRows(&items)
+	for _, pv := range items {
+		cpLog := new(company_permission_log.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 company_permission_log.AddCompanyPermissionLog(cpLog)
+	}
+
+	//查询原先是否已经存在权限,如果有权限了,那么需要先删除原有的权限
+	count, _ := company_report_permission.GetCompanyReportPermissionCount(companyId, productId)
+	if count > 0 {
+		sql := ` DELETE FROM company_report_permission WHERE company_id=? AND product_id=? `
+		_, err = to.Raw(sql, companyId, productId).Exec()
+		if err != nil {
+			return
+		}
+	}
+
+	sql = `UPDATE company_report_permission SET  status='永续',start_date=?,end_date=? WHERE  company_id=?  ` // 更改权限的开始时间结束时间
+	_, err = to.Raw(sql, startDate, endDate, companyId).Exec()
+	if err != nil {
+		return
+	}
+
+	//获取需要试用的权限
+	delayPermissionItems, tmpErr := company_delay_permission.GetDelayPermissionItems(companyId, companyApprovalId)
+	if tmpErr != nil {
+		err = tmpErr
+		return
+	}
+	status := `永续`
+	for _, v := range delayPermissionItems {
+		tmpCompanyReportPermission := &company_report_permission.CompanyReportPermission{
+			//CompanyReportPermissionId: 0,
+			CompanyId:          companyId,
+			ReportPermissionId: v.ChartPermissionId,
+			CreatedTime:        time.Now(),
+			LastUpdatedTime:    time.Now(),
+			ChartPermissionId:  v.ChartPermissionId,
+			StartDate:          v.StartDate,
+			EndDate:            endDate,
+			ProductId:          productId,
+			ProductName:        productName,
+			//CompanyContractId:         companyContractId,
+			Status:     status,
+			ModifyTime: time.Now(),
+			//IsUpgrade:                 pv.IsUpgrade,
+		}
+		newId, tmpErr := to.Insert(tmpCompanyReportPermission)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		tmpCompanyReportPermission.CompanyReportPermissionId = newId
+		newCompanyReportPermissionList = append(newCompanyReportPermissionList, tmpCompanyReportPermission)
+	}
+	return
+}
+
 // TryOutDelay 试用延期
 func TryOutDelay(companyId, productId, sellerId, companyApprovalId int, sellerName, endDate, productName string) (newCompanyReportPermissionList []*company_report_permission.CompanyReportPermission, newEndDate string, err error) {
 	o := orm.NewOrm()

+ 19 - 7
services/company_approval/company_approval.go

@@ -726,14 +726,26 @@ func afterApproved(companyApprovalId int, opUserId int, opUserName string) (err
 			}
 		}
 	case 2: //冻结->试用
-		tmpCompanyReportPermissionList, tmpStartDate, tmpEndDate, tmpErr := company_approval.FreezeToTryOut(recodeInfo.CompanyId, recodeInfo.ProductId, opUser.AdminId, recodeInfo.CompanyApprovalId, recodeInfo.ApplyUserId, opUser.RealName, companyProduct.ProductName)
-		if tmpErr != nil {
-			err = errors.New("冻结转试用失败,Err:" + tmpErr.Error())
-			return
+		//权益的 x类试用转冻结的申请解冻
+		if companyProduct.InitStatus == utils.COMPANY_STATUS_FOREVER && companyProduct.ProductId == utils.COMPANY_PRODUCT_RAI_ID {
+			tmpCompanyReportPermissionList, tmpStartDate, tmpEndDate, tmpErr := company_approval.FreezeToTryOutXClassRai(recodeInfo.CompanyId, recodeInfo.ProductId, opUser.AdminId, recodeInfo.CompanyApprovalId, recodeInfo.ApplyUserId, opUser.RealName, companyProduct.ProductName)
+			if tmpErr != nil {
+				err = errors.New("冻结转试用失败,Err:" + tmpErr.Error())
+				return
+			}
+			companyReportPermissionList = tmpCompanyReportPermissionList
+			startDate = tmpStartDate
+			endDate = tmpEndDate
+		} else {
+			tmpCompanyReportPermissionList, tmpStartDate, tmpEndDate, tmpErr := company_approval.FreezeToTryOut(recodeInfo.CompanyId, recodeInfo.ProductId, opUser.AdminId, recodeInfo.CompanyApprovalId, recodeInfo.ApplyUserId, opUser.RealName, companyProduct.ProductName)
+			if tmpErr != nil {
+				err = errors.New("冻结转试用失败,Err:" + tmpErr.Error())
+				return
+			}
+			companyReportPermissionList = tmpCompanyReportPermissionList
+			startDate = tmpStartDate
+			endDate = tmpEndDate
 		}
-		companyReportPermissionList = tmpCompanyReportPermissionList
-		startDate = tmpStartDate
-		endDate = tmpEndDate
 	case 3: //试用延期
 		tmpCompanyReportPermissionList, tmpEndDate, tmpErr := company_approval.TryOutDelay(recodeInfo.CompanyId, recodeInfo.ProductId, opUser.AdminId, recodeInfo.CompanyApprovalId, opUser.RealName, companyProduct.EndDate, companyProduct.ProductName)
 		if tmpErr != nil {