Browse Source

no message

xingzai 10 months ago
parent
commit
432b9bb689
2 changed files with 120 additions and 17 deletions
  1. 91 0
      models/company/company_approval.go
  2. 29 17
      services/company_apply/company_approval.go

+ 91 - 0
models/company/company_approval.go

@@ -280,6 +280,97 @@ func TryOutToFormal(companyId, productId, sellerId, companyApprovalId, companyCo
 	return
 }
 
+// TryOutToFormalXClassRai 权益客户试用转正式
+func TryOutToFormalXClassRai(companyId, productId, sellerId, companyApprovalId, companyContractId int, startDate, endDate, sellerName, productName string, raiPackageType int) (newCompanyReportPermissionList []*CompanyReportPermission, 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("TryOutToFormalXClassRai 事务回滚失败,Err:"+tmpErr.Error(), 3)
+			}
+		} else {
+			err = to.Commit()
+		}
+	}()
+
+	// 套餐类型为0时, 不更新套餐类型,权益与FICC开始与结束时间一起修改
+	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 = to.Raw(sql, endDate, raiPackageType, companyId).Exec()
+	if err != nil {
+		return
+	}
+	sql = `UPDATE company SET type=1,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([]*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(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 AddCompanyPermissionLog(cpLog)
+	}
+
+	sql = `UPDATE company_report_permission SET end_date=? WHERE  company_id=?  ` // 更改权限的开始时间结束时间
+	_, err = to.Raw(sql, endDate, companyId).Exec()
+	if err != nil {
+		return
+	}
+
+	contractPermission := make([]*CompanyReportPermission, 0)
+	sql = `SELECT * FROM company_contract_permission WHERE company_contract_id=? AND company_id=? `
+	_, err = to.Raw(sql, companyContractId, companyId).QueryRows(&contractPermission)
+	if err != nil {
+		return
+	}
+	for _, pv := range contractPermission {
+		tmpCompanyReportPermission := &CompanyReportPermission{
+			//CompanyReportPermissionId: 0,
+			CompanyId:          companyId,
+			ReportPermissionId: pv.ChartPermissionId,
+			CreatedTime:        time.Now(),
+			LastUpdatedTime:    time.Now(),
+			ChartPermissionId:  pv.ChartPermissionId,
+			StartDate:          pv.StartDate,
+			EndDate:            pv.EndDate,
+			ProductId:          productId,
+			ProductName:        productName,
+			CompanyContractId:  companyContractId,
+			Status:             "永续",
+			ModifyTime:         time.Now(),
+			IsUpgrade:          pv.IsUpgrade,
+			ExpensiveYx:        pv.ExpensiveYx,
+		}
+		newCompanyReportPermissionList = append(newCompanyReportPermissionList, tmpCompanyReportPermission)
+	}
+	sql = `UPDATE company_contract SET status=1 WHERE company_contract_id=? AND company_id=? AND product_id=? `
+	_, err = to.Raw(sql, companyContractId, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+	return
+}
+
 // FreezeToTryOut 冻结转试用
 func FreezeToTryOut(companyId, productId, sellerId, companyApprovalId, applyUserId int, sellerName, productName string) (newCompanyReportPermissionList []*CompanyReportPermission, startDate, endDate string, err error) {
 	o := orm.NewOrm()

+ 29 - 17
services/company_apply/company_approval.go

@@ -630,7 +630,6 @@ func afterApproved(companyApprovalId int, opUserId int, opUserName string) (err
 		err = errors.New("获取信息客户产品失败2")
 		return
 	}
-
 	//recodeInfo.
 	logSellerId := recodeInfo.ApplyUserId
 	logSellerName := recodeInfo.ApplyRealName
@@ -669,30 +668,43 @@ func afterApproved(companyApprovalId int, opUserId int, opUserName string) (err
 		//	br.ErrMsg = "产品中合同结束时间转换失败,Err:" + err.Error()
 		//	return
 		//}
-		//如果合同时间小于等于今天,那么立马执行合同内容
-		if time.Now().After(contractStartDate) {
+		//如果是权益的用户客户转正审批单独走
+		if companyProduct.Status == utils.COMPANY_STATUS_FOREVER && companyProduct.ProductId == 2 {
+			contractInfo.StartDate = contractStartDate.AddDate(0, 4, 0).Format(utils.FormatDate) // 开始时间与结束时间都加三个月
+			contractInfo.EndDate = contractEndDate.AddDate(0, 4, 0).Format(utils.FormatDate)
 			startDate = contractInfo.StartDate
 			endDate = contractInfo.EndDate
-			companyReportPermissionList, tmpErr = company.TryOutToFormal(recodeInfo.CompanyId, recodeInfo.ProductId, opUser.AdminId, recodeInfo.CompanyApprovalId, contractInfo.CompanyContractId, contractInfo.StartDate, contractInfo.EndDate, opUser.RealName, companyProduct.ProductName, contractInfo.PackageType, contractInfo.RaiPackageType)
+			companyReportPermissionList, tmpErr = company.TryOutToFormalXClassRai(recodeInfo.CompanyId, recodeInfo.ProductId, opUser.AdminId, recodeInfo.CompanyApprovalId, contractInfo.CompanyContractId, contractInfo.StartDate, contractInfo.EndDate, opUser.RealName, companyProduct.ProductName, contractInfo.RaiPackageType)
 			if tmpErr != nil {
 				err = errors.New("试用转正式失败,Err:" + tmpErr.Error())
 				return
 			}
 		} else {
-			tmpErr = company.ApplyApproveContract(recodeInfo.CompanyId, recodeInfo.ProductId, recodeInfo.CompanyApprovalId, contractInfo.CompanyContractId)
-			if tmpErr != nil {
-				err = errors.New("试用转正式失败,Err:" + tmpErr.Error())
-				return
+			//如果合同时间小于等于今天,那么立马执行合同内容
+			if time.Now().After(contractStartDate) {
+				startDate = contractInfo.StartDate
+				endDate = contractInfo.EndDate
+				companyReportPermissionList, tmpErr = company.TryOutToFormal(recodeInfo.CompanyId, recodeInfo.ProductId, opUser.AdminId, recodeInfo.CompanyApprovalId, contractInfo.CompanyContractId, contractInfo.StartDate, contractInfo.EndDate, opUser.RealName, companyProduct.ProductName, contractInfo.PackageType, contractInfo.RaiPackageType)
+				if tmpErr != nil {
+					err = errors.New("试用转正式失败,Err:" + tmpErr.Error())
+					return
+				}
+			} else {
+				tmpErr = company.ApplyApproveContract(recodeInfo.CompanyId, recodeInfo.ProductId, recodeInfo.CompanyApprovalId, contractInfo.CompanyContractId)
+				if tmpErr != nil {
+					err = errors.New("试用转正式失败,Err:" + tmpErr.Error())
+					return
+				}
+				//不添加日志
+				isAddCompanyProductUpdateLog = false
+			}
+			//如果合同中的结束日期大于产品中的合同结束日期,那么就去修改产品中的合同结束日期
+			if contractEndDate.After(companyProduct.ContractEndDate) {
+				companyProduct.ContractEndDate = contractEndDate
+				cols := make([]string, 0)
+				cols = append(cols, "ContractEndDate")
+				_ = companyProduct.Update(cols)
 			}
-			//不添加日志
-			isAddCompanyProductUpdateLog = false
-		}
-		//如果合同中的结束日期大于产品中的合同结束日期,那么就去修改产品中的合同结束日期
-		if contractEndDate.After(companyProduct.ContractEndDate) {
-			companyProduct.ContractEndDate = contractEndDate
-			cols := make([]string, 0)
-			cols = append(cols, "ContractEndDate")
-			_ = companyProduct.Update(cols)
 		}
 	case 2: //冻结->试用
 		//权益的 x类试用转冻结的申请解冻