|
@@ -509,22 +509,28 @@ func ApplyServiceUpdate(companyId, productId, sellerId, companyApprovalId, compa
|
|
|
}
|
|
|
}()
|
|
|
|
|
|
- sql := `UPDATE company_product SET status='正式',approve_status='已审批',start_date=?,end_date=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
|
|
|
- _, err = o.Raw(sql, startDate, endDate, companyId, productId).Exec()
|
|
|
+ items := make([]*company_report_permission.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
|
|
|
}
|
|
|
- sql = `UPDATE company_approval SET approve_status='已审批',approve_time=NOW(),modify_time=NOW() WHERE company_approval_id=? AND company_id=? AND product_id=? `
|
|
|
- _, err = o.Raw(sql, companyApprovalId, companyId, productId).Exec()
|
|
|
+
|
|
|
+ //已存在的权限map
|
|
|
+ nowCompanyReportPermissionMap := make(map[int]*company_report_permission.CompanyReportPermission)
|
|
|
+ //产品服务的开始、结束日期(非产品权限)
|
|
|
+ updateStartDate := startDate
|
|
|
+ updateStartDateTime, err := time.Parse(utils.FormatDate, updateStartDate)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
- items := make([]*company_report_permission.CompanyReportPermission, 0)
|
|
|
- sql = `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? `
|
|
|
- _, err = o.Raw(sql, companyId, productId).QueryRows(&items)
|
|
|
+ updateEndDate := endDate
|
|
|
+ updateEndDateTime, err := time.Parse(utils.FormatDate, updateEndDate)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
for _, pv := range items {
|
|
|
cpLog := new(company_permission_log.CompanyPermissionLog)
|
|
|
cpLog.CompanyId = companyId
|
|
@@ -537,9 +543,46 @@ func ApplyServiceUpdate(companyId, productId, sellerId, companyApprovalId, compa
|
|
|
cpLog.ProductId = productId
|
|
|
cpLog.ProductName = pv.ProductName
|
|
|
go company_permission_log.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()
|
|
|
+
|
|
|
+ //删除所有权限
|
|
|
+ //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='正式',approve_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
|
|
|
+ }
|
|
|
+ sql = `UPDATE company_approval SET approve_status='已审批',approve_time=NOW(),modify_time=NOW() WHERE company_approval_id=? AND company_id=? AND product_id=? `
|
|
|
+ _, err = o.Raw(sql, companyApprovalId, companyId, productId).Exec()
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
@@ -551,20 +594,60 @@ func ApplyServiceUpdate(companyId, productId, sellerId, companyApprovalId, compa
|
|
|
return
|
|
|
}
|
|
|
for _, pv := range contractPermission {
|
|
|
- sql = `INSERT INTO company_report_permission(company_id, report_permission_id,created_time, last_updated_time,
|
|
|
+ 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, pv.CompanyContractId, pv.Status, 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(),?,?) `
|
|
|
- _, err = o.Raw(sql, companyId, pv.ChartPermissionId, pv.ChartPermissionId, pv.StartDate, pv.EndDate, productId, productName, companyContractId, "正式").Exec()
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
+ _, tmpErr := o.Raw(sql, companyId, pv.ChartPermissionId, pv.ChartPermissionId, pv.StartDate, pv.EndDate, productId, productName, companyContractId, "正式").Exec()
|
|
|
+ err = tmpErr
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- sql = `UPDATE company_contract SET status=1 WHERE company_contract_id=? AND company_id=? AND product_id=? `
|
|
|
+ sql = `UPDATE company_contract SET status=1,modify_time=NOW() WHERE company_contract_id=? AND company_id=? AND product_id=? `
|
|
|
_, err = o.Raw(sql, companyContractId, companyId, productId).Exec()
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
return
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//审批拒绝
|
|
@@ -598,6 +681,39 @@ func ApproveRefuse(companyId, productId int, approveStatus, approveRemark string
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+//更新审批单、合同状态
|
|
|
+func ApplyApproveContract(companyId, productId, companyApprovalId, companyContractId int) (err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ o.Begin()
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ o.Rollback()
|
|
|
+ } else {
|
|
|
+ o.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ sql := `UPDATE company_product SET approve_status='已审批',modify_time=NOW() WHERE company_id=? AND product_id=? `
|
|
|
+ _, err = o.Raw(sql, companyId, productId).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 = o.Raw(sql, companyApprovalId, companyId, productId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新合同
|
|
|
+ sql = `UPDATE company_contract SET status=1,modify_time=NOW() WHERE company_contract_id=? AND company_id=? AND product_id=? `
|
|
|
+ _, err = o.Raw(sql, companyContractId, companyId, productId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
func GetCompanyApprovalDetailById(companyId, productId int) (item *CompanyApproval, err error) {
|
|
|
sql := `SELECT * FROM company_approval WHERE company_id=? AND product_id=? AND approve_status IN('驳回','已撤回') ORDER BY modify_time DESC LIMIT 1 `
|
|
|
o := orm.NewOrm()
|