|
@@ -0,0 +1,749 @@
|
|
|
+package company_approval
|
|
|
+
|
|
|
+import (
|
|
|
+ "hongze/hongze_mobile_admin/models/tables/admin"
|
|
|
+ "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/utils"
|
|
|
+ "rdluck_tools/orm"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+type CompanyApproval struct {
|
|
|
+ CompanyApprovalId int `orm:"column(company_approval_id);pk"`
|
|
|
+ CompanyId int
|
|
|
+ ProductId int
|
|
|
+ ApproveStatus string `description:"'待审批','已审批','驳回','已撤回'"`
|
|
|
+ ApproveUserId int `description:"审批人"`
|
|
|
+ ApproveRoleTypeCode string `description:"审批人角色类型"`
|
|
|
+ ApproveRealName string `description:"审批人姓名"`
|
|
|
+ ApproveTime time.Time `description:"审批时间"`
|
|
|
+ ApproveContent string `description:"待审内容"`
|
|
|
+ ApplyMethod int `description:"申请类型:1:试用->正式,2:冻结—>试用,3:流失—>正式,4:试用延期,5:原销售申请领取流失客户,6:正式客户申请服务更新"`
|
|
|
+ ApplyReasons string `description:"申请原因"`
|
|
|
+ ApplyUserId int `description:"申请人"`
|
|
|
+ ApplyRealName string `description:"申请人姓名"`
|
|
|
+ CreateTime time.Time `description:"申请时间"`
|
|
|
+ ModifyTime time.Time `description:"修改时间"`
|
|
|
+ CompanyContractId int `description:"合同id"`
|
|
|
+}
|
|
|
+
|
|
|
+//新增客户产品
|
|
|
+func AddCompanyApproval(item *CompanyApproval) (lastId int, err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ o.Begin()
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ o.Rollback()
|
|
|
+ } else {
|
|
|
+ o.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ var newId int64
|
|
|
+ newId, err = o.Insert(item)
|
|
|
+ lastId = int(newId)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ sql := `UPDATE company_product SET approve_status=? WHERE company_id=? AND product_id=? `
|
|
|
+ _, err = o.Raw(sql, item.ApproveStatus, item.CompanyId, item.ProductId).Exec()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetCompanyApprovalCountById(companyId, productId int) (count int, err error) {
|
|
|
+ sql := `SELECT COUNT(1) AS count FROM company_approval WHERE company_id=? AND product_id=? AND approve_status='待审批' `
|
|
|
+ o := orm.NewOrm()
|
|
|
+ err = o.Raw(sql, companyId, productId).QueryRow(&count)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetCompanyApprovalById(companyId, productId int) (item *CompanyApproval, err error) {
|
|
|
+ sql := `SELECT * FROM company_approval WHERE company_id=? AND product_id=? AND approve_status='待审批' LIMIT 1 `
|
|
|
+ o := orm.NewOrm()
|
|
|
+ err = o.Raw(sql, companyId, productId).QueryRow(&item)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetCompanyApprovalByApprovalId(companyApprovalId int) (item *CompanyApproval, err error) {
|
|
|
+ sql := `SELECT * FROM company_approval WHERE company_approval_id=? LIMIT 1 `
|
|
|
+ o := orm.NewOrm()
|
|
|
+ err = o.Raw(sql, companyApprovalId).QueryRow(&item)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//客户审批单
|
|
|
+type CompanyApprovalList struct {
|
|
|
+ CompanyId int
|
|
|
+ ProductId int
|
|
|
+ CompanyName string `description:"客户名称"`
|
|
|
+ CreditCode string `description:"社会统一信用码"`
|
|
|
+ CompanyType string `description:"客户类型"`
|
|
|
+ IndustryName string `description:"行业名称"`
|
|
|
+ SellerName string `description:"销售名称"`
|
|
|
+ CreateTime string `description:"创建时间"`
|
|
|
+ ApprovalTime string `description:"提交申请时间"`
|
|
|
+ ApproveTime string `description:"审批时间"`
|
|
|
+ Status string `description:"客户状态"`
|
|
|
+ ApproveContent string `description:"待审内容"`
|
|
|
+ ApproveStatus string `description:"当前状态"`
|
|
|
+ ApplyMethod int `description:"申请类型:1:试用->正式,2:冻结—>试用,3:流失—>正式,4:试用延期,5:原销售申请领取流失客户,6:正式客户申请服务更新"`
|
|
|
+ ApplyReasons string `description:"申请理由"`
|
|
|
+ FreezeStartDate string `description:"冻结开始日期"`
|
|
|
+ FreezeEndDate string `description:"冻结结束日期"`
|
|
|
+ FreezeExpireDays int `description:"冻结到期天数"`
|
|
|
+ Address string `description:"地址"`
|
|
|
+ Source string `description:"客户来源"`
|
|
|
+ ApproveRemark string `description:"驳回理由"`
|
|
|
+ StartDate string `description:"开始日期"`
|
|
|
+ EndDate string `description:"结束日期"`
|
|
|
+ ExpireDay int `description:"服务到期天数"`
|
|
|
+ CompanyApprovalId int `description:"审批记录ID"`
|
|
|
+ ApprovalCount int `description:"已延期审批次数"`
|
|
|
+ CompanyContractId int `description:"合同id"`
|
|
|
+ DelayPermission string `description:"延期申请品种"`
|
|
|
+ ApplyRealName string `description:"申请人姓名"`
|
|
|
+}
|
|
|
+
|
|
|
+func GetApprovalList(condition string, pars []interface{}, startSize, pageSize int) (items []*CompanyApprovalList, err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ sql := `SELECT a.company_id,b.product_id,a.company_name,a.credit_code,a.address,b.company_type,b.industry_name,
|
|
|
+ b.seller_name,b.create_time,b.freeze_start_date,b.freeze_end_date,b.source,c.create_time AS approval_time,c.approve_time,b.status,
|
|
|
+ c.approve_content,c.approve_status,c.apply_method,c.apply_reasons,c.approve_remark,b.start_date,b.end_date,c.company_approval_id,c.company_contract_id,
|
|
|
+ c.apply_real_name
|
|
|
+ FROM company AS a
|
|
|
+ INNER JOIN company_product AS b ON a.company_id=b.company_id
|
|
|
+ INNER JOIN company_approval AS c ON b.company_id=c.company_id AND b.product_id=c.product_id
|
|
|
+ WHERE 1=1 `
|
|
|
+ if condition != "" {
|
|
|
+ sql += condition
|
|
|
+ }
|
|
|
+ sql += ` ORDER BY c.modify_time DESC LIMIT ?,? `
|
|
|
+ _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetApprovalCount(condition string, pars []interface{}) (count int, err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ sql := `SELECT COUNT(1) AS count
|
|
|
+ FROM company AS a
|
|
|
+ INNER JOIN company_product AS b ON a.company_id=b.company_id
|
|
|
+ INNER JOIN company_approval AS c ON b.company_id=c.company_id AND b.product_id=c.product_id
|
|
|
+ WHERE 1=1 `
|
|
|
+ if condition != "" {
|
|
|
+ sql += condition
|
|
|
+ }
|
|
|
+ sql += ` ORDER BY c.modify_time DESC `
|
|
|
+ err = o.Raw(sql, pars).QueryRow(&count)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//试用转正式
|
|
|
+func TryOutToFormal(companyId, productId, sellerId, companyApprovalId, companyContractId int, startDate, endDate, sellerName, productName string) (err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ o.Begin()
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ o.Rollback()
|
|
|
+ } else {
|
|
|
+ o.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ sql := `UPDATE company_product SET status='正式',approve_status='已审批',start_date=?,end_date=?,modify_time=NOW(),formal_time=NOW() WHERE company_id=? AND product_id=? `
|
|
|
+ _, err = o.Raw(sql, startDate, endDate, companyId, productId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ sql = `UPDATE company SET type=1,last_updated_time=NOW() WHERE company_id=? `
|
|
|
+ _, err = o.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 = o.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 = o.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)
|
|
|
+ }
|
|
|
+
|
|
|
+ sql = `DELETE FROM company_report_permission WHERE company_id=? AND product_id=?`
|
|
|
+ _, err = o.Raw(sql, companyId, productId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ contractPermission := make([]*company_report_permission.CompanyReportPermission, 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 {
|
|
|
+ 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
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sql = `UPDATE company_contract SET status=1 WHERE company_contract_id=? AND company_id=? AND product_id=? `
|
|
|
+ _, err = o.Raw(sql, companyContractId, companyId, productId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//冻结转试用
|
|
|
+func FreezeToTryOut(companyId, productId, sellerId, companyApprovalId, applyUserId int, sellerName, productName string) (err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ o.Begin()
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ o.Rollback()
|
|
|
+ } else {
|
|
|
+ o.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ startDate := time.Now().Format(utils.FormatDate)
|
|
|
+ endDate := time.Now().AddDate(0, 2, 0).Format(utils.FormatDate)
|
|
|
+
|
|
|
+ sellerItem, err := admin.GetAdminById(applyUserId)
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新用户产品状态
|
|
|
+ sql := `UPDATE company_product SET status='试用',approve_status='已审批',freeze_start_date=null,freeze_end_date=null,freeze_time=null,
|
|
|
+ start_date=?,end_date=?,seller_id=?,seller_name=?,group_id=?,department_id=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
|
|
|
+ _, err = o.Raw(sql, startDate, endDate, sellerItem.AdminId, sellerItem.RealName, sellerItem.GroupId, sellerItem.DepartmentId, companyId, productId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //更新用户状态
|
|
|
+ sql = `UPDATE company SET type=2,last_updated_time=NOW() WHERE company_id=? `
|
|
|
+ _, err = o.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 = o.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 = o.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)
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新产品(2021年03月02日14:58:50注释,调整为从申请权限表中获取数据并修改)
|
|
|
+ //sql = `UPDATE company_report_permission SET start_date=?,end_date=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
|
|
|
+ //_, err = o.Raw(sql, startDate, endDate, companyId, productId).Exec()
|
|
|
+ //if err != nil {
|
|
|
+ // return
|
|
|
+ //}
|
|
|
+
|
|
|
+ //查询原先是否已经存在权限,如果有权限了,那么需要先删除原有的权限
|
|
|
+ count, _ := company_report_permission.GetCompanyReportPermissionCount(companyId, productId)
|
|
|
+ if count > 0 {
|
|
|
+ sql := ` DELETE FROM company_report_permission WHERE company_id=? AND product_id=? `
|
|
|
+ _, err = o.Raw(sql, companyId, productId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //获取需要试用的权限
|
|
|
+ delayPermissionItems, err := company_delay_permission.GetDelayPermissionItems(companyId, companyApprovalId)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ status := `试用`
|
|
|
+ for _, v := range delayPermissionItems {
|
|
|
+ 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,status)
|
|
|
+ VALUES(?,?,NOW(),NOW(),?,?,?,?,?,NOW(),?) `
|
|
|
+ _, err = o.Raw(sql, companyId, v.ChartPermissionId, v.ChartPermissionId, v.StartDate, v.EndDate, productId, productName, status).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//试用延期
|
|
|
+func TryOutDelay(companyId, productId, sellerId, companyApprovalId int, sellerName, endDate, productName string) (err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ o.Begin()
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ o.Rollback()
|
|
|
+ } else {
|
|
|
+ o.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ endDateTime, err := time.Parse(utils.FormatDate, endDate)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ newEndDate := endDateTime.AddDate(0, 2, 0).Format(utils.FormatDate)
|
|
|
+ //更新用户产品状态
|
|
|
+ sql := `UPDATE company_product SET approve_status='已审批',end_date=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
|
|
|
+ _, err = o.Raw(sql, newEndDate, 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
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询该用户所有产品权限,并把当前数据做日志(允许添加不修改的数据)
|
|
|
+ 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)
|
|
|
+ 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)
|
|
|
+ }
|
|
|
+ //获取需要延期的权限
|
|
|
+ delayPermissionItems, err := company_delay_permission.GetDelayPermissionItems(companyId, companyApprovalId)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ status := `试用`
|
|
|
+ for _, v := range delayPermissionItems {
|
|
|
+ isExist, err := company_report_permission.GetCompanyPermissionCheck(companyId, v.ChartPermissionId)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if isExist > 0 {
|
|
|
+ sql = `UPDATE company_report_permission SET end_date=?,status=?,modify_time=NOW() WHERE company_id=? AND product_id=? AND chart_permission_id=?`
|
|
|
+ _, err = o.Raw(sql, newEndDate, status, companyId, productId, v.ChartPermissionId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ } 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,status)
|
|
|
+ VALUES(?,?,NOW(),NOW(),?,?,?,?,?,NOW(),?) `
|
|
|
+ _, err = o.Raw(sql, companyId, v.ChartPermissionId, v.ChartPermissionId, v.StartDate, newEndDate, productId, productName, status).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//原销售申请领取
|
|
|
+func ApplyReceive(companyId, productId, sysUserId, companyApprovalId, applyUserId int, sysUserName, productName string) (err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ o.Begin()
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ o.Rollback()
|
|
|
+ } else {
|
|
|
+ o.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ sellerItem, err := admin.GetAdminById(applyUserId)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ startDate := time.Now().Format(utils.FormatDate)
|
|
|
+ endDate := time.Now().AddDate(0, 2, 0).Format(utils.FormatDate)
|
|
|
+
|
|
|
+ //更新用户产品状态
|
|
|
+ sql := `UPDATE company_product SET status='试用',approve_status='已审批', start_date=?,end_date=?,seller_id=?,seller_name=?,group_id=?,department_id=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
|
|
|
+ _, err = o.Raw(sql, startDate, endDate, sellerItem.AdminId, sellerItem.RealName, sellerItem.GroupId, sellerItem.DepartmentId, companyId, productId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新用户状态
|
|
|
+ sql = `UPDATE company SET type=2,last_updated_time=NOW() WHERE company_id=? `
|
|
|
+ _, err = o.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 = o.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 = o.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 = sysUserId
|
|
|
+ cpLog.SysUserName = sysUserName
|
|
|
+ cpLog.StartDate = pv.StartDate
|
|
|
+ cpLog.EndDate = pv.EndDate
|
|
|
+ cpLog.ProductId = productId
|
|
|
+ cpLog.ProductName = pv.ProductName
|
|
|
+ go company_permission_log.AddCompanyPermissionLog(cpLog)
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新产品(2021年03月02日14:58:50注释,调整为从申请权限表中获取数据并修改)
|
|
|
+ //sql = `UPDATE company_report_permission SET start_date=?,end_date=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
|
|
|
+ //_, err = o.Raw(sql, startDate, endDate, companyId, productId).Exec()
|
|
|
+ //if err != nil {
|
|
|
+ // return
|
|
|
+ //}
|
|
|
+
|
|
|
+ //查询原先是否已经存在权限,如果有权限了,那么需要先删除原有的权限
|
|
|
+ count, _ := company_report_permission.GetCompanyReportPermissionCount(companyId, productId)
|
|
|
+ if count > 0 {
|
|
|
+ sql := ` DELETE FROM company_report_permission WHERE company_id=? AND product_id=? `
|
|
|
+ _, err = o.Raw(sql, companyId, productId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //获取需要试用的权限
|
|
|
+ delayPermissionItems, err := company_delay_permission.GetDelayPermissionItems(companyId, companyApprovalId)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ status := `试用`
|
|
|
+ for _, v := range delayPermissionItems {
|
|
|
+ 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,status)
|
|
|
+ VALUES(?,?,NOW(),NOW(),?,?,?,?,?,NOW(),?) `
|
|
|
+ _, err = o.Raw(sql, companyId, v.ChartPermissionId, v.ChartPermissionId, v.StartDate, v.EndDate, productId, productName, status).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//申请服务更新
|
|
|
+func ApplyServiceUpdate(companyId, productId, sellerId, companyApprovalId, companyContractId int, startDate, endDate, sellerName, productName string) (err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ o.Begin()
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ o.Rollback()
|
|
|
+ } else {
|
|
|
+ o.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ 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()
|
|
|
+ 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
|
|
|
+ }
|
|
|
+ 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
|
|
|
+ }
|
|
|
+ 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)
|
|
|
+ }
|
|
|
+ sql = `DELETE FROM company_report_permission WHERE company_id=? AND product_id=? `
|
|
|
+ _, err = o.Raw(sql, companyId, productId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ contractPermission := make([]*company_report_permission.CompanyReportPermission, 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 {
|
|
|
+ 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
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sql = `UPDATE company_contract SET status=1 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()
|
|
|
+ err = o.Raw(sql, companyId, productId).QueryRow(&item)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+type CompanyApplyDeleteReq struct {
|
|
|
+ CompanyId int `description:"客户id"`
|
|
|
+ CompanyApprovalId int `description:"审批记录ID"`
|
|
|
+}
|
|
|
+
|
|
|
+//申请服务更新
|
|
|
+func ApplyDelete(companyId, companyApprovalId, productId int) (err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ o.Begin()
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ o.Rollback()
|
|
|
+ } else {
|
|
|
+ o.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ sql := `DELETE FROM company_approval WHERE company_approval_id=? `
|
|
|
+ _, err = o.Raw(sql, companyApprovalId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ sql = `UPDATE company_product SET approve_status='' WHERE company_id=? AND product_id=? `
|
|
|
+ _, err = o.Raw(sql, companyId, productId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//修改申请信息
|
|
|
+func ModifyCompanyApproval(companyId, productId, companyApprovalId int, approveContent, applyReasons string) (err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ o.Begin()
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ utils.FileLog.Info("试用延期申请:Err %s", err.Error())
|
|
|
+ o.Rollback()
|
|
|
+ } else {
|
|
|
+ o.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ sql := `UPDATE company_approval SET approve_status = '待审批', approve_content=?,apply_reasons=?,modify_time=NOW() WHERE company_approval_id = ? `
|
|
|
+ _, err = o.Raw(sql, approveContent, applyReasons, companyApprovalId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ sql = `UPDATE company_product SET approve_status='待审批' WHERE company_id=? AND product_id=? `
|
|
|
+ _, err = o.Raw(sql, companyId, productId).Exec()
|
|
|
+ utils.FileLog.Info("试用延期申请:Err %s,%s,%d", sql, companyId, productId)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+////修改申请信息
|
|
|
+//func ModifyCompanyTurnPositive(item *CompanyApplyTurnPositiveReq, productId, companyContractId int) (err error) {
|
|
|
+// o := orm.NewOrm()
|
|
|
+// o.Begin()
|
|
|
+// defer func() {
|
|
|
+// if err != nil {
|
|
|
+// o.Rollback()
|
|
|
+// } else {
|
|
|
+// o.Commit()
|
|
|
+// }
|
|
|
+// }()
|
|
|
+// sql := `UPDATE company_contract
|
|
|
+// SET
|
|
|
+// start_date = ?,
|
|
|
+// end_date = ?,
|
|
|
+// money = ?,
|
|
|
+// pay_method = ?,
|
|
|
+// pay_channel = ?,
|
|
|
+// img_url = ?,
|
|
|
+// modify_time = NOW()
|
|
|
+// WHERE company_contract_id = ? `
|
|
|
+// _, err = o.Raw(sql, item.StartDate, item.EndDate, item.Money, item.PayMethod, item.PayChannel, item.ImgUrl, companyContractId).Exec()
|
|
|
+// if err != nil {
|
|
|
+// return
|
|
|
+// }
|
|
|
+//
|
|
|
+// sql = `DELETE FROM company_contract_permission WHERE company_contract_id = ? `
|
|
|
+// _, err = o.Raw(sql, companyContractId).Exec()
|
|
|
+// if err != nil {
|
|
|
+// return
|
|
|
+// }
|
|
|
+//
|
|
|
+// permissionArr := strings.Split(item.PermissionIds, ",")
|
|
|
+// for _, v := range permissionArr {
|
|
|
+// contractPermission := new(CompanyContractPermission)
|
|
|
+// contractPermission.CompanyId = item.CompanyId
|
|
|
+// contractPermission.CompanyContractId = companyContractId
|
|
|
+// contractPermission.ChartPermissionId = v
|
|
|
+// contractPermission.StartDate = item.StartDate
|
|
|
+// contractPermission.EndDate = item.EndDate
|
|
|
+// contractPermission.ModifyTime = time.Now()
|
|
|
+// contractPermission.CreateTime = time.Now()
|
|
|
+// err = AddCompanyContractPermission(contractPermission)
|
|
|
+// if err != nil {
|
|
|
+// return
|
|
|
+// }
|
|
|
+// //新增日志
|
|
|
+// {
|
|
|
+// itemLog := new(CompanyContractPermissionLog)
|
|
|
+// itemLog.CompanyId = item.CompanyId
|
|
|
+// itemLog.CompanyContractId = companyContractId
|
|
|
+// itemLog.ChartPermissionId = v
|
|
|
+// itemLog.StartDate = item.StartDate
|
|
|
+// itemLog.EndDate = item.EndDate
|
|
|
+// itemLog.ModifyTime = time.Now()
|
|
|
+// itemLog.CreateTime = time.Now()
|
|
|
+// itemLog.LogCreateTime = time.Now()
|
|
|
+// go AddCompanyContractPermissionLog(itemLog)
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// sql = `UPDATE company_approval SET approve_status = '待审批',modify_time=NOW() WHERE company_approval_id = ? `
|
|
|
+// _, err = o.Raw(sql, item.CompanyApprovalId).Exec()
|
|
|
+// if err != nil {
|
|
|
+// return
|
|
|
+// }
|
|
|
+// sql = `UPDATE company_product SET approve_status='待审批' WHERE company_id=? AND product_id=? `
|
|
|
+// _, err = o.Raw(sql, item.CompanyId, productId).Exec()
|
|
|
+// return
|
|
|
+//}
|
|
|
+//
|
|
|
+////修改申请信息
|
|
|
+//func ModifyCompanyApplyServiceUpdate(item *CompanyApplyServiceUpdateReq, productId, companyContractId int) (err error) {
|
|
|
+// o := orm.NewOrm()
|
|
|
+// o.Begin()
|
|
|
+// defer func() {
|
|
|
+// if err != nil {
|
|
|
+// o.Rollback()
|
|
|
+// } else {
|
|
|
+// o.Commit()
|
|
|
+// }
|
|
|
+// }()
|
|
|
+// sql := `UPDATE company_contract
|
|
|
+// SET
|
|
|
+// start_date = ?,
|
|
|
+// end_date = ?,
|
|
|
+// money = ?,
|
|
|
+// pay_method = ?,
|
|
|
+// pay_channel = ?,
|
|
|
+// img_url = ?,
|
|
|
+// modify_time = NOW()
|
|
|
+// WHERE company_contract_id = ? `
|
|
|
+// _, err = o.Raw(sql, item.StartDate, item.EndDate, item.Money, item.PayMethod, item.PayChannel, item.ImgUrl, companyContractId).Exec()
|
|
|
+// if err != nil {
|
|
|
+// return
|
|
|
+// }
|
|
|
+//
|
|
|
+// sql = `DELETE FROM company_contract_permission WHERE company_contract_id = ? `
|
|
|
+// _, err = o.Raw(sql, companyContractId).Exec()
|
|
|
+// if err != nil {
|
|
|
+// return
|
|
|
+// }
|
|
|
+//
|
|
|
+// permissionArr := strings.Split(item.PermissionIds, ",")
|
|
|
+// for _, v := range permissionArr {
|
|
|
+// contractPermission := new(CompanyContractPermission)
|
|
|
+// contractPermission.CompanyId = item.CompanyId
|
|
|
+// contractPermission.CompanyContractId = companyContractId
|
|
|
+// contractPermission.ChartPermissionId = v
|
|
|
+// contractPermission.StartDate = item.StartDate
|
|
|
+// contractPermission.EndDate = item.EndDate
|
|
|
+// contractPermission.ModifyTime = time.Now()
|
|
|
+// contractPermission.CreateTime = time.Now()
|
|
|
+// err = AddCompanyContractPermission(contractPermission)
|
|
|
+// if err != nil {
|
|
|
+// return
|
|
|
+// }
|
|
|
+// //新增日志
|
|
|
+// {
|
|
|
+// itemLog := new(CompanyContractPermissionLog)
|
|
|
+// itemLog.CompanyId = item.CompanyId
|
|
|
+// itemLog.CompanyContractId = companyContractId
|
|
|
+// itemLog.ChartPermissionId = v
|
|
|
+// itemLog.StartDate = item.StartDate
|
|
|
+// itemLog.EndDate = item.EndDate
|
|
|
+// itemLog.ModifyTime = time.Now()
|
|
|
+// itemLog.CreateTime = time.Now()
|
|
|
+// itemLog.LogCreateTime = time.Now()
|
|
|
+// go AddCompanyContractPermissionLog(itemLog)
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// sql = `UPDATE company_approval SET approve_status = '待审批',modify_time=NOW() WHERE company_approval_id = ? `
|
|
|
+// _, err = o.Raw(sql, item.CompanyApprovalId).Exec()
|
|
|
+// if err != nil {
|
|
|
+// return
|
|
|
+// }
|
|
|
+// sql = `UPDATE company_product SET approve_status='待审批' WHERE company_id=? AND product_id=? `
|
|
|
+// _, err = o.Raw(sql, item.CompanyId, productId).Exec()
|
|
|
+// return
|
|
|
+//}
|
|
|
+
|
|
|
+func GetCompanyApprovalCount(companyId, productId int) (count int, err error) {
|
|
|
+ sql := `SELECT COUNT(1) AS count FROM company_approval WHERE company_id=? AND product_id=? AND approve_content='试用延期' `
|
|
|
+ o := orm.NewOrm()
|
|
|
+ err = o.Raw(sql, companyId, productId).QueryRow(&count)
|
|
|
+ return
|
|
|
+}
|