package controllers import ( "encoding/json" "fmt" "hongze/hz_crm_api/models" "hongze/hz_crm_api/models/company" "hongze/hz_crm_api/models/contract" "hongze/hz_crm_api/models/contract/response" "hongze/hz_crm_api/services" contractService "hongze/hz_crm_api/services/contract" "hongze/hz_crm_api/utils" "strconv" "strings" "time" ) // 申请管理 type CompanyApplyController struct { BaseAuthController } // @Title 申请服务更新-签约历史 // @Description 申请服务更新-签约历史接口 // @Param CompanyId query int true "客户ID" // @Param CompanyType query string true "客户类型:传空字符串或者不传为全部,'ficc','权益'" // @Success 200 {object} company.CompanyContractHistoryResp // @router /apply/contract/history/list [get] func (this *CompanyApplyController) ApplyContractHistoryList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } companyId, _ := this.GetInt("CompanyId") if companyId <= 0 { br.Msg = "参数错误" br.ErrMsg = "参数错误,客户id小于等于0" return } roleTypeCode := sysUser.RoleTypeCode productId := services.GetProductId(roleTypeCode) productIdStr := `` if productId == 0 { productIdStr = "1,2" } else { productIdStr = strconv.Itoa(productId) } list, err := company.GetCompanyContractHistoryList(companyId, productIdStr) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } listLen := len(list) // 权益permissions //raiPermissions := make([]*company.PermissionLookItem, 0) //if strings.Contains(productIdStr, "2") { // ps, e := company.GetPermissionLookItemsExt("2", utils.COMPANY_PRODUCT_RAI_NAME) // if e != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取权益权限列表失败, Err: " + e.Error() // return // } // raiPermissions = ps //} //expMap := map[int]string{0: "(3w)", 1: "(5w)"} // 买方研选价格 for i := 0; i < listLen; i++ { companyContract := list[i] list[i].ModifyTimeStr = companyContract.ModifyTime.Format(utils.FormatDateTime) productId = list[i].ProductId if productId == 1 { permissionClassifyArr, e := services.GetPermissionFirstArr(utils.COMPANY_PRODUCT_FICC_ID) if e != nil { br.Msg = "获取失败" br.ErrMsg = "获取权限分类失败,Err:" + e.Error() return } for _, v := range permissionClassifyArr { checkList := make([]int, 0) plist := new(company.ContractPermissionList) plist.Items = make([]*company.PermissionLookItem, 0) items, err := company.GetPermissionLookItemsExtByParentId(productIdStr, v.ChartPermissionId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取权限信息失败,Err:" + err.Error() return } if len(items) > 0 { for _, n := range items { count, err := company.GetCompanyContractPermissionCheckByContractId(companyId, companyContract.CompanyContractId, n.ChartPermissionId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取权限信息失败,Err:" + err.Error() return } if count > 0 { checkList = append(checkList, n.ChartPermissionId) } } plist.Items = items } plist.ClassifyName = v.PermissionName plist.CheckList = checkList list[i].PermissionList = append(list[i].PermissionList, plist) } continue } // 权益 if productId == utils.COMPANY_PRODUCT_RAI_ID { //classifyName := "权益" checkList := make([]int, 0) plist := new(company.ContractPermissionList) //items, err := company.GetPermissionLookItemsExt(productIdStr, utils.COMPANY_PRODUCT_RAI_NAME) //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取权限信息失败,Err:" + err.Error() // return //} var expensiveYx int var pints float64 // 现在就一个行业有点数,先这么写吧 hasPermissions, e := company.GetCompanyContractPermissionByCompanyContractId(companyContract.CompanyContractId) if e != nil { br.Msg = "获取失败" br.ErrMsg = "获取合同权限信息失败,Err:" + e.Error() return } hasMap := make(map[int]*company.CompanyContractPermission) for _, p := range hasPermissions { hasMap[p.ChartPermissionId] = p if p.ExpensiveYx > 0 { expensiveYx = p.ExpensiveYx } if p.Points > 0 { pints = p.Points } } checkItems := make([]*company.PermissionLookItem, 0) raiPermissions, e := company.GetPermissionLookItemsExt("2", utils.COMPANY_PRODUCT_RAI_NAME) if e != nil { br.Msg = "获取失败" br.ErrMsg = "获取权益权限列表失败, Err: " + e.Error() return } //大套餐类型单独展示 if companyContract.RaiPackageType > 0 { n := new(company.PermissionLookItem) if companyContract.RaiPackageType == 1 { n.PermissionName = "70W套餐" } else if companyContract.RaiPackageType == 2 { n.PermissionName = "45W套餐" } checkList = append(checkList, 0) checkItems = append(checkItems, n) for _, n := range raiPermissions { match := hasMap[n.ChartPermissionId] if match == nil { continue } //研选订阅、研选扣点包、专家也要单独处理 if n.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN || n.ChartPermissionId == utils.YAN_XUAN_KOU_DIAN_BAO_ID || n.ChartPermissionId == utils.ZHUAN_JIA_ID { if n.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN { if expensiveYx == 1 { n.PermissionName += "(5w)" } else if expensiveYx == 2 { n.PermissionName += "(10w)" } else if expensiveYx == 0 { //n.PermissionName += "(3w)" } } if n.ChartPermissionId == utils.YAN_XUAN_KOU_DIAN_BAO_ID { n.PermissionName += "(" + fmt.Sprint(pints) + "点)" } checkList = append(checkList, n.ChartPermissionId) checkItems = append(checkItems, n) } } } else { // PS:本来想把这个移到循环外面去优化一下...但是发现有指针引用变量被改掉的问题, BUG太多了改不完了先这样吧=_=! for _, n := range raiPermissions { match := hasMap[n.ChartPermissionId] if match == nil { continue } // 升级 if match.IsUpgrade == 1 { n.IsUpgrade = 1 checkList = append(checkList, n.ChartPermissionId) checkItems = append(checkItems, n) continue } // 买方研选(3w/5w)、 研选扣点包,拼接点数 if n.PermissionName == utils.CHART_PERMISSION_NAME_MF_YANXUAN || n.ChartPermissionId == utils.YAN_XUAN_KOU_DIAN_BAO_ID { if expensiveYx == 1 { n.PermissionName += "(5w)" } else if expensiveYx == 2 { n.PermissionName += "(10w)" } else if expensiveYx == 0 { //n.PermissionName += "(3w)" } if n.ChartPermissionId == utils.YAN_XUAN_KOU_DIAN_BAO_ID { n.PermissionName += "(" + fmt.Sprint(pints) + "点)" } //n.PermissionName += expMap[match.ExpensiveYx] checkList = append(checkList, n.ChartPermissionId) checkItems = append(checkItems, n) continue } checkList = append(checkList, n.ChartPermissionId) checkItems = append(checkItems, n) //count, err := company.GetCompanyContractUpgradePermissionCheckByContractId(companyId, companyContract.CompanyContractId, n.ChartPermissionId, 0) //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取权限信息失败,Err:" + err.Error() // return //} //if count > 0 { // checkList = append(checkList, n.ChartPermissionId) // checkItems = append(checkItems, n) //} else { // count2, err := company.GetCompanyContractUpgradePermissionCheckByContractId(companyId, companyContract.CompanyContractId, n.ChartPermissionId, 1) // if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取权限信息失败,Err:" + err.Error() // return // } // if count2 > 0 { // n.IsUpgrade = 1 // checkList = append(checkList, n.ChartPermissionId) // checkItems = append(checkItems, n) // } //} } } //合并主观客观 //mapPermissionNameList := make(map[string]int) //for _, v := range items { // if mapPermissionNameList[v.PermissionName] == 0 { // plist.Items = append(plist.Items, v) // mapPermissionNameList[v.PermissionName] = v.ChartPermissionId // } //} plist.Items = checkItems plist.ClassifyName = utils.COMPANY_PRODUCT_RAI_NAME plist.CheckList = checkList list[i].PermissionList = append(list[i].PermissionList, plist) // CRM8.8-权限主客观合并 newPermissionLookList := contractService.HandleEquityContractPermissionList(list[i].PermissionList) list[i].PermissionList = newPermissionLookList } } resp := new(company.CompanyContractHistoryResp) resp.List = list br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // GetApplyTurnContractType // @Title 获取客户申请转正的合同类型 // @Description 获取客户申请转正的合同类型接口 // @Param CompanyId query int true "客户ID" // @Success 200 {object} company.ApplyContractTypeResp // @router /apply/contract/getApplyTurnContractType [get] func (this *CompanyApplyController) GetApplyTurnContractType() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } companyId, _ := this.GetInt("CompanyId") if companyId <= 0 { br.Msg = "参数错误" br.ErrMsg = "参数错误,客户id小于等于0" return } roleTypeCode := sysUser.RoleTypeCode productId := services.GetProductId(roleTypeCode) if productId == 0 { br.Msg = "账户异常" br.ErrMsg = "账户类型异常为:" + roleTypeCode return } contractType, err := services.GetApplyTurnContractType(companyId, productId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取合同类型失败,Err:" + err.Error() return } //companyProduct, err := company.GetCompanyProductByCompanyIdAndProductId(companyId, productId) //if err != nil { // br.Msg = "获取客户信息失败" // br.ErrMsg = "获取客户信息失败" // return //} // ////合同类型 //contractType := "新签合同" //var condition string //var pars []interface{} //condition += " AND product_id = ?" //pars = append(pars, productId) //condition += " AND status = ?" //pars = append(pars, 1) //list, err := company.GetCompanyContractListByCompanyId(companyId, condition, pars) //if err != nil { // br.Msg = "获取合同信息失败" // br.ErrMsg = "获取合同信息失败,Err:" + err.Error() // return //} //if len(list) > 0 { // contractType = "续约合同" //} ////查询是否存在正式转试用的记录,如果存在,那么合同类型是续约合同 //total, err := company.GetCompanyProductOperationRecordCount(companyProduct.CompanyId, companyProduct.ProductId) //if err != nil { // br.Msg = "查询用户信息异常" // br.ErrMsg = "查询用户变更记录异常" // return //} //if total > 0 { // contractType = "续约合同" //} resp := company.ApplyContractTypeResp{ ContractType: contractType, } br.Data = resp //合同类型 end br.Ret = 200 br.Success = true br.Msg = "获取成功" } // @Title 申请服务更新-续约申请详情 // @Description 申请服务更新-续约申请详情接口 // @Param CompanyId query int true "客户ID" // @Param CompanyContractId query int true "合同id" // @Success 200 {object} company.CompanyContractDetailResp // @router /apply/contract/detail [get] func (this *CompanyApplyController) ApplyContractDetail() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } companyId, _ := this.GetInt("CompanyId") if companyId <= 0 { br.Msg = "参数错误" br.ErrMsg = "参数错误,客户id小于等于0" return } companyContractId, _ := this.GetInt("CompanyContractId") roleTypeCode := sysUser.RoleTypeCode productId := services.GetProductId(roleTypeCode) //if productId == 0 { // br.Msg = "参数错误" // br.ErrMsg = "客户类型为:" + roleTypeCode // return //} detail, err := company.GetCompanyContractDetail(companyId, productId, companyContractId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } if detail.Source == "系统合同" { detail.SourceTag = "标准合同" } else { detail.SourceTag = "非标合同" } if detail.ProductId == 1 { //子权限切片集合 allFiccPermissions, permissionMap, e := services.GetBasePermissionLookItem(utils.COMPANY_PRODUCT_FICC_ID) if e != nil { br.Msg = "查询基础权限失败" br.ErrMsg = "查询基础权限失败,Err:" + e.Error() return } //遍历获取 for _, v := range allFiccPermissions { if v.ParentId == 0 { checkList := make([]int, 0) plist := new(company.PermissionLookList) items, ok := permissionMap[v.ChartPermissionId] if !ok { br.Msg = "获取权限信息失败" return } for _, n := range items { count, err := company.GetCompanyContractPermissionCheckByContractId(companyId, detail.CompanyContractId, n.ChartPermissionId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取权限信息失败,Err:" + err.Error() return } if count > 0 { checkList = append(checkList, n.ChartPermissionId) } } plist.Items = items plist.ClassifyName = v.PermissionName plist.CheckList = checkList detail.PermissionList = append(detail.PermissionList, plist) } } } if detail.ProductId == 2 { classifyName := "权益" checkList := make([]int, 0) plist := new(company.PermissionLookList) plist.ClassifyName = classifyName items, e := company.GetPermissionLookItems(detail.ProductId, classifyName) if e != nil { br.Msg = "获取失败" br.ErrMsg = "获取权限信息失败,Err:" + e.Error() return } mapExpensive := make(map[int]bool) // 通过合同获取所勾选的买方研选5w permissionList, err := company.GetCompanyContractPermissionByCompanyContractId(companyContractId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取合同权限信息失败,Err:" + err.Error() return } permissions := make([]int, 0) // 合同权限IDs checkItems := make([]*company.PermissionLookItem, 0) //expMap := map[bool]string{false: "(3w)", true: "(5w)"} // 买方研选价格 //var expensiveYx int // 未选大套餐, 走老逻辑 var points float64 if detail.RaiPackageType == 0 { totalForever, err := company.GetCompanyProductRaiForeverCount(companyId) //判断是否是权益的永续客户 if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取客户信息失败,Err:" + err.Error() return } if totalForever > 0 { detail.Quarter, err = utils.GetQuarterStrStartDatesInRange(detail.StartDate, detail.EndDate) //通过开始时间,结束时间,获取对应季度的拼接字符串 if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取季度息失败,Err:" + err.Error() return } } mapUpgrade := make(map[int]bool) // 通过合同获取所勾选的升级行业权限 for _, v := range permissionList { if v.IsUpgrade == 1 { mapUpgrade[v.ChartPermissionId] = true } if v.ExpensiveYx > 0 { mapExpensive[v.ChartPermissionId] = true //expensiveYx = v.ExpensiveYx } if v.ChartPermissionId == utils.YAN_XUAN_KOU_DIAN_BAO_ID { points = v.Points } permissions = append(permissions, v.ChartPermissionId) } for _, n := range items { if n.ChartPermissionId == utils.YAN_XUAN_KOU_DIAN_BAO_ID { n.PermissionName += fmt.Sprint("(", points, "点)") } if utils.InArrayByInt(permissions, n.ChartPermissionId) { checkList = append(checkList, n.ChartPermissionId) checkItems = append(checkItems, n) } } plist.Items = checkItems plist.CheckList = checkList detail.PermissionList = append(detail.PermissionList, plist) // CRM8.8-权限主客观合并 newPermissionLookList := contractService.HandleEquityPermissionLookList(detail.PermissionList) for _, c := range newPermissionLookList { if c.ClassifyName != "权益" { continue } for _, p := range c.Items { // 行业升级 if mapUpgrade[p.ChartPermissionId] { if strings.Contains(p.PermissionName, "主观") { p.PermissionName = strings.Replace(p.PermissionName, "主观", "升级", -1) continue } if strings.Contains(p.PermissionName, "客观") { p.PermissionName = strings.Replace(p.PermissionName, "客观", "升级", -1) continue } p.PermissionName += "(升级)" continue } // 买方研选 //if p.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN { // if expensiveYx == 1 { // p.PermissionName += "(5w)" // } else if expensiveYx == 2 { // p.PermissionName += "(10w)" // } // //p.PermissionName += expMap[mapExpensive[p.ChartPermissionId]] //} } } detail.PermissionList = newPermissionLookList } // 如果选择的是大套餐, 那么不再展示每个具体的权限, 除大套餐外还需遍历一下专家和研选3w/5w是否有选(这两个与大套餐不互斥, 可额外选择) if detail.RaiPackageType > 0 { // 大套餐 bigPackage := new(company.PermissionLookItem) if detail.RaiPackageType == 1 { bigPackage.PermissionName = utils.CHART_PERMISSION_NAME_70W bigPackage.ChartPermissionId = utils.CHART_PERMISSION_ID_70W checkList = append(checkList, utils.CHART_PERMISSION_ID_70W) } if detail.RaiPackageType == 2 { bigPackage.PermissionName = utils.CHART_PERMISSION_NAME_45W bigPackage.ChartPermissionId = utils.CHART_PERMISSION_ID_45W checkList = append(checkList, utils.CHART_PERMISSION_ID_45W) } checkItems = append(checkItems, bigPackage) for _, v := range permissionList { if v.ExpensiveYx == 1 { mapExpensive[v.ChartPermissionId] = true } if v.ChartPermissionId == utils.YAN_XUAN_KOU_DIAN_BAO_ID { points = v.Points } permissions = append(permissions, v.ChartPermissionId) } // 专家、研选订阅、研选扣点包 for _, n := range items { if n.ChartPermissionId != utils.ZHUAN_JIA_ID && n.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN && n.ChartPermissionId != utils.YAN_XUAN_KOU_DIAN_BAO_ID { continue } //if n.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN { // //n.PermissionName += expMap[mapExpensive[n.ChartPermissionId]] // if expensiveYx == 1 { // n.PermissionName += "(5w)" // } else if expensiveYx == 2 { // n.PermissionName += "(10w)" // } //} if n.ChartPermissionId == utils.YAN_XUAN_KOU_DIAN_BAO_ID { n.PermissionName += fmt.Sprint("(", points, "点)") } if utils.InArrayByInt(permissions, n.ChartPermissionId) { checkList = append(checkList, n.ChartPermissionId) checkItems = append(checkItems, n) } } plist.Items = checkItems plist.CheckList = checkList detail.PermissionList = append(detail.PermissionList, plist) } } resp := new(company.CompanyContractDetailResp) resp.Item = detail br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 获取客户大于今天的有效合同权限详情 // @Description 获取客户大于今天的有效合同权限详情接口 // @Param CompanyId query int true "客户ID" // @Success 200 {object} []company.PermissionLookItem // @router /company/last_contract/detail [get] func (this *CompanyApplyController) GetLastContractDetail() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } companyId, _ := this.GetInt("CompanyId") if companyId <= 0 { br.Msg = "参数错误" br.ErrMsg = "参数错误,客户id小于等于0" return } roleTypeCode := sysUser.RoleTypeCode productId := services.GetProductId(roleTypeCode) if productId == 0 { br.Msg = "参数错误" br.ErrMsg = "客户类型为:" + roleTypeCode return } //permissionMap := make(map[int]company.PermissionLookItem) //contractList, err := company.GetCompanyWillContractList(companyId, productId) //if err != nil { // br.Msg = "获取合同信息失败" // br.ErrMsg = "获取合同信息失败,Err:" + err.Error() // return //} //for _, contractInfo := range contractList { // permissionList, permissionErr := company.GetCompanyContractPermissionListByContractIds(strconv.Itoa(contractInfo.CompanyContractId)) // if permissionErr != nil { // br.Msg = "获取权限失败" // br.ErrMsg = "获取权限失败,Err:" + permissionErr.Error() // return // } // for _, v := range permissionList { // if permission, ok := permissionMap[v.ChartPermissionId]; ok { // nowEndDateTime, err := time.Parse(utils.FormatDate, v.EndDate) // if err != nil { // br.Msg = "获取合同信息失败" // br.ErrMsg = "获取合同信息失败,合同结束日期格式化失败,Err:" + err.Error() // return // } // perEndDateTime, err := time.Parse(utils.FormatDate, permission.EndDate) // if err != nil { // br.Msg = "获取合同信息失败" // br.ErrMsg = "获取合同信息失败,合同结束日期格式化失败2,Err:" + err.Error() // return // } // //如果当前合同的权限期限晚于已经记录的权限期限,那么重新赋值 // if nowEndDateTime.After(perEndDateTime) { // permissionMap[v.ChartPermissionId] = company.PermissionLookItem{ // ChartPermissionId: v.ChartPermissionId, // PermissionName: v.ChartPermissionName, // StartDate: v.StartDate, // EndDate: v.EndDate, // //Status string `description:"'正式','试用','关闭'"` // //ExpireDay string `description:"到期天数"` // ClassifyName: v.ClassifyName, // } // } // } else { // permissionMap[v.ChartPermissionId] = company.PermissionLookItem{ // ChartPermissionId: v.ChartPermissionId, // PermissionName: v.ChartPermissionName, // StartDate: v.StartDate, // EndDate: v.EndDate, // //Status string `description:"'正式','试用','关闭'"` // //ExpireDay string `description:"到期天数"` // ClassifyName: v.ClassifyName, // } // } // } //} // ////获取权限 //permissionList, permissionErr := company.GetCompanyReportPermissionListByProductId(companyId, productId) //if permissionErr != nil { // br.Msg = "获取权限失败" // br.ErrMsg = "获取权限失败,Err:" + permissionErr.Error() // return //} //for _, v := range permissionList { // if permission, ok := permissionMap[v.ChartPermissionId]; ok { // nowEndDateTime, err := time.Parse(utils.FormatDate, v.EndDate) // if err != nil { // br.Msg = "获取合同信息失败" // br.ErrMsg = "获取合同信息失败,合同结束日期格式化失败,Err:" + err.Error() // return // } // perEndDateTime, err := time.Parse(utils.FormatDate, permission.EndDate) // if err != nil { // br.Msg = "获取合同信息失败" // br.ErrMsg = "获取合同信息失败,合同结束日期格式化失败2,Err:" + err.Error() // return // } // //如果当前合同的权限期限晚于已经记录的权限期限,那么重新赋值 // if nowEndDateTime.After(perEndDateTime) { // permissionMap[v.ChartPermissionId] = company.PermissionLookItem{ // ChartPermissionId: v.ChartPermissionId, // PermissionName: v.PermissionName, // StartDate: v.StartDate, // EndDate: v.EndDate, // //Status string `description:"'正式','试用','关闭'"` // //ExpireDay string `description:"到期天数"` // ClassifyName: v.ClassifyName, // } // } // } else { // permissionMap[v.ChartPermissionId] = company.PermissionLookItem{ // ChartPermissionId: v.ChartPermissionId, // PermissionName: v.PermissionName, // StartDate: v.StartDate, // EndDate: v.EndDate, // //Status string `description:"'正式','试用','关闭'"` // //ExpireDay string `description:"到期天数"` // ClassifyName: v.ClassifyName, // } // } //} permissionMap, err := services.GetLastContractPermissionList(companyId, productId) if err != nil { br.Msg = "获取合同权限信息失败" br.ErrMsg = "获取合同信息失败,Err:" + err.Error() return } //数据处理 permissionSlice := make([]company.PermissionLookItem, 0) for _, permission := range permissionMap { permissionSlice = append(permissionSlice, permission) } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = permissionSlice } // ApplyServiceUpdateOld // @Title 申请服务更新 // @Description 申请服务更新接口 // @Param request body company.CompanyApplyServiceUpdateReq true "type json string" // @Success Ret=200 申请成功 //func (this *CompanyApplyController) ApplyServiceUpdateOld() { // br := new(models.BaseResponse).Init() // defer func() { // this.Data["json"] = br // this.ServeJSON() // }() // sysUser := this.SysUser // if sysUser == nil { // br.Msg = "请登录" // br.ErrMsg = "请登录,SysUser Is Empty" // br.Ret = 408 // return // } // var req company.CompanyApplyServiceUpdateReq // err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) // if err != nil { // br.Msg = "参数解析异常!" // br.ErrMsg = "参数解析失败,Err:" + err.Error() // return // } // if req.CompanyId <= 0 { // br.Msg = "参数错误" // br.ErrMsg = "参数错误,客户id小于等于0" // return // } // if req.StartDate == "" { // br.Msg = "请选择合同开始日期" // return // } // if req.EndDate == "" { // br.Msg = "请选择合同结束日期" // return // } // if req.Money <= 0 { // br.Msg = "合同金额不能小于等于0" // } // // if req.ContractType == "" { // req.ContractType = "续约合同" // //br.Msg = "请选择合同类型" // //return // } // roleTypeCode := sysUser.RoleTypeCode // productId := services.GetProductId(roleTypeCode) // if productId == 0 { // br.Msg = "参数错误" // br.ErrMsg = "客户类型为:" + req.CompanyType // return // } // approveRoleTypeCode := "" // if productId == 1 { // approveRoleTypeCode = utils.ROLE_TYPE_CODE_FICC_ADMIN // } else { // approveRoleTypeCode = utils.ROLE_TYPE_CODE_RAI_ADMIN // } // companyProduct, err := company.GetCompanyProductByCompanyIdAndProductId(req.CompanyId, productId) // if err != nil { // br.Msg = "获取客户信息失败" // br.ErrMsg = "获取客户信息失败" // return // } // if companyProduct.Status != utils.COMPANY_STATUS_FORMAL { // br.Msg = "客户状态为:" + companyProduct.Status + ";不可进行服务更新申请" // br.ErrMsg = "客户状态为:" + companyProduct.Status + ";不可进行服务更新申请" // return // } // var approveUserId int // var approveUserRealName string // approveContent := `正式客户申请服务更新` // // approveUser, err := company.GetApproveUser(approveRoleTypeCode) // if err != nil && err.Error() != utils.ErrNoRow() { // br.Msg = "获取审批信息失败" // br.ErrMsg = "获取审批人信息失败,Err:" + err.Error() // return // } // if approveUser == nil || (err != nil && err.Error() == utils.ErrNoRow()) { // br.Msg = "审批用户不存在" // br.ErrMsg = "审批用户不存在" // return // } // // var companyApprovalId int // if req.CompanyApprovalId <= 0 { // contractCode, err := company.GetCompanyContractCode() // if err != nil { // br.Msg = "生成合同编码失败" // br.ErrMsg = "生成合同编码失败,Err:" + err.Error() // return // } // //当前待审批的合同,有且只能存在一条 // count, err := company.GetCompanyContractApproveCount(req.CompanyId, productId) // if err != nil { // br.Msg = "获取信息失败" // br.ErrMsg = "判断是否已存在待审批合同失败,Err:" + err.Error() // return // } // if count > 0 { // br.Msg = "此客户已提交过申请,请在客户审批列表重新提交" // return // } // contract := new(company.CompanyContract) // contract.CompanyId = req.CompanyId // contract.ProductId = productId // contract.ProductName = companyProduct.ProductName // contract.CompanyProductId = companyProduct.CompanyProductId // contract.ContractType = req.ContractType // contract.ContractCode = contractCode // contract.StartDate = req.StartDate // contract.EndDate = req.EndDate // contract.Money = req.Money // contract.PayMethod = req.PayMethod // contract.PayChannel = req.PayChannel // contract.ImgUrl = req.ImgUrl // contract.Status = 0 // contract.Source = "上传附件" // contract.CreateTime = time.Now() // contract.ModifyTime = time.Now() // newId, err := company.AddCompanyContract(contract) // if err != nil { // br.Msg = "新增合同失败" // br.ErrMsg = "新增合同失败,Err:" + err.Error() // return // } // permissionArr := strings.Split(req.PermissionIds, ",") // for _, v := range permissionArr { // item := new(company.CompanyContractPermission) // item.CompanyId = req.CompanyId // item.CompanyContractId = int(newId) // // chartPermissionId, tmpErr := strconv.Atoi(v) // if tmpErr != nil { // err = tmpErr // return // } // item.ChartPermissionId = chartPermissionId // // item.StartDate = req.StartDate // item.EndDate = req.EndDate // item.ModifyTime = time.Now() // item.CreateTime = time.Now() // err = company.AddCompanyContractPermission(item) // if err != nil { // br.Msg = "新增合同失败" // br.ErrMsg = "新增合同权限失败,Err:" + err.Error() // return // } // //新增日志 // { // itemLog := new(company.CompanyContractPermissionLog) // itemLog.CompanyId = req.CompanyId // itemLog.CompanyContractId = int(newId) // itemLog.ChartPermissionId = v // itemLog.StartDate = req.StartDate // itemLog.EndDate = req.EndDate // itemLog.ModifyTime = time.Now() // itemLog.CreateTime = time.Now() // itemLog.LogCreateTime = time.Now() // go company.AddCompanyContractPermissionLog(itemLog) // } // } // applyMethod := 5 // //申请类型:1:试用->正式,2:冻结—>试用,3:试用延期,4:原销售申请领取流失客户,5:正式客户申请服务更新,6:正式客户补充协议 // approval := new(company.CompanyApproval) // approval.CompanyId = req.CompanyId // approval.ProductId = productId // approval.ApproveStatus = "待审批" // approval.ApproveUserId = 0 // approval.ApproveRoleTypeCode = approveRoleTypeCode // approval.ApproveRealName = "" // approval.ApproveTime = time.Now() // approval.ApproveContent = "服务更新" // approval.ApplyMethod = applyMethod // approval.ApplyReasons = "" // approval.ApplyUserId = sysUser.AdminId // approval.ApplyRealName = sysUser.RealName // approval.CreateTime = time.Now() // approval.ModifyTime = time.Now() // approval.CompanyContractId = int(newId) // companyApprovalId, err = company.AddCompanyApproval(approval) // if err != nil { // br.Msg = "申请失败" // br.ErrMsg = "申请失败,Err:" + err.Error() // return // } // } else { // recode, err := company.GetCompanyApprovalByApprovalId(req.CompanyApprovalId) // if err != nil { // br.Msg = "申请失败" // br.ErrMsg = "获取审批记录失败,Err:" + err.Error() // return // } // err = company.ModifyCompanyApplyServiceUpdate(&req, productId, companyProduct.IsFormal, recode.CompanyContractId) // if err != nil { // br.Msg = "申请失败" // br.ErrMsg = "申请失败,Err:" + err.Error() // return // } // companyApprovalId = req.CompanyApprovalId // } // //新增操作记录 // { // remark := "服务更新" // operation := "service_update" // services.AddCompanyOperationRecord(req.CompanyId, companyProduct.SellerId, sysUser.AdminId, productId, approveUserId, companyProduct.CompanyName, // companyProduct.ProductName, sysUser.RealName, remark, operation, approveContent, approveUserRealName, "", companyProduct.Status) // } // //新增客户产品日志 // { // logType := "modify" // go services.AddCompanyProductLog(companyProduct, this.SysUser.AdminId, logType) // } // //待办通知 // { // for _, v := range approveUser { // approveUserId = v.AdminId // approveUserRealName = v.RealName // mobile := v.Mobile // content := "服务更新申请单" // err = services.AddCompanyApprovalMessage(sysUser.AdminId, approveUserId, req.CompanyId, companyApprovalId, 1, 1, 1, companyProduct.CompanyName, content, content, mobile) // if err != nil { // br.Msg = "申请失败" // br.ErrMsg = "新增待办通知失败,Err:" + err.Error() // return // } // } // } // br.Ret = 200 // br.Success = true // br.Msg = "申请成功" //} // ApplyTurnPositiveOld // @Title 申请转正 // @Description 申请转正接口 // @Param request body company.CompanyApplyTurnPositiveReq true "type json string" // @Success Ret=200 申请成功 //func (this *CompanyApplyController) ApplyTurnPositiveOld() { // br := new(models.BaseResponse).Init() // defer func() { // this.Data["json"] = br // this.ServeJSON() // }() // sysUser := this.SysUser // if sysUser == nil { // br.Msg = "请登录" // br.ErrMsg = "请登录,SysUser Is Empty" // br.Ret = 408 // return // } // var req company.CompanyApplyTurnPositiveReq // err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) // if err != nil { // br.Msg = "参数解析异常!" // br.ErrMsg = "参数解析失败,Err:" + err.Error() // return // } // if req.CompanyId <= 0 { // br.Msg = "参数错误" // br.ErrMsg = "参数错误,客户id小于等于0" // return // } // if req.StartDate == "" { // br.Msg = "请选择合同开始日期" // return // } // if req.EndDate == "" { // br.Msg = "请选择合同结束日期" // return // } // // if req.Money <= 0 { // br.Msg = "合同金额不能小于等于0" // return // } // roleTypeCode := sysUser.RoleTypeCode // productId := services.GetProductId(roleTypeCode) // if productId == 0 { // br.Msg = "参数错误" // br.ErrMsg = "客户类型为:" + roleTypeCode // return // } // companyProduct, err := company.GetCompanyProductByCompanyIdAndProductId(req.CompanyId, productId) // if err != nil { // br.Msg = "获取客户信息失败" // br.ErrMsg = "获取客户信息失败" // return // } // if companyProduct == nil { // br.Msg = "获取客户信息失败" // br.ErrMsg = "客户不存在,不可提交审批:companyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId) // return // } // if companyProduct.Status != utils.COMPANY_STATUS_TRY_OUT { // br.Msg = "客户状态为:" + companyProduct.Status + ";不可进行转正申请" // br.ErrMsg = "客户状态为:" + companyProduct.Status + ";不可进行转正申请" // return // } // // if companyProduct.ApproveStatus == "待审批" { // br.Msg = "存在待审批订单,不可重复提交" // return // } // approveContent := `试用转正式` // var approveUserId int // var approveUserRealName string // approveRoleTypeCode := "" // if productId == 1 { // approveRoleTypeCode = utils.ROLE_TYPE_CODE_FICC_ADMIN // } else { // approveRoleTypeCode = utils.ROLE_TYPE_CODE_RAI_ADMIN // } // approveUser, err := company.GetApproveUser(approveRoleTypeCode) // if err != nil && err.Error() != utils.ErrNoRow() { // br.Msg = "获取审批信息失败" // br.ErrMsg = "获取审批人信息失败,Err:" + err.Error() // return // } // if approveUser == nil || (err != nil && err.Error() == utils.ErrNoRow()) { // br.Msg = "审批用户不存在" // br.ErrMsg = "审批用户不存在" // return // } // // //合同类型 // contractType := req.ContractType // if contractType == "" { // contractType = "新签合同" // } // var condition string // var pars []interface{} // condition += " AND product_id = ?" // pars = append(pars, productId) // condition += " AND status = ?" // pars = append(pars, 1) // list, err := company.GetCompanyContractListByCompanyId(req.CompanyId, condition, pars) // if err != nil { // br.Msg = "获取合同信息失败" // br.ErrMsg = "获取合同信息失败,Err:" + err.Error() // return // } // if len(list) > 0 { // contractType = "续约合同" // } // //查询是否存在正式转试用的记录,如果存在,那么合同类型是续约合同 // total, err := company.GetCompanyProductOperationRecordCount(companyProduct.CompanyId, companyProduct.ProductId) // if err != nil { // br.Msg = "查询用户信息异常" // br.ErrMsg = "查询用户变更记录异常" // return // } // if total > 0 { // contractType = "续约合同" // } // //合同类型 end // // var companyApprovalId int // if req.CompanyApprovalId <= 0 { // contractCode, err := company.GetCompanyContractCode() // if err != nil { // br.Msg = "生成合同编码失败" // br.ErrMsg = "生成合同编码失败,Err:" + err.Error() // return // } // //当前待审批的合同,有且只能存在一条 // count, err := company.GetCompanyContractApproveCount(req.CompanyId, productId) // if err != nil { // br.Msg = "获取信息失败" // br.ErrMsg = "判断是否已存在待审批合同失败,Err:" + err.Error() // return // } // if count > 0 { // br.Msg = "此客户已提交过申请,请在客户审批列表重新提交" // return // } // contract := new(company.CompanyContract) // contract.CompanyId = req.CompanyId // contract.ProductId = productId // contract.ContractType = contractType // contract.ProductName = companyProduct.ProductName // contract.CompanyProductId = companyProduct.CompanyProductId // contract.ContractCode = contractCode // contract.StartDate = req.StartDate // contract.EndDate = req.EndDate // contract.Money = req.Money // contract.PayMethod = req.PayMethod // contract.PayChannel = req.PayChannel // contract.ImgUrl = req.ImgUrl // contract.Status = 0 // contract.Source = "上传附件" // contract.CreateTime = time.Now() // contract.ModifyTime = time.Now() // newId, err := company.AddCompanyContract(contract) // if err != nil { // br.Msg = "新增合同失败" // br.ErrMsg = "新增合同失败,Err:" + err.Error() // return // } // permissionArr := strings.Split(req.PermissionIds, ",") // for _, v := range permissionArr { // item := new(company.CompanyContractPermission) // item.CompanyId = req.CompanyId // item.CompanyContractId = int(newId) // // chartPermissionId, tmpErr := strconv.Atoi(v) // if tmpErr != nil { // err = tmpErr // return // } // item.ChartPermissionId = chartPermissionId // // item.StartDate = req.StartDate // item.EndDate = req.EndDate // item.ModifyTime = time.Now() // item.CreateTime = time.Now() // err = company.AddCompanyContractPermission(item) // if err != nil { // br.Msg = "新增合同失败" // br.ErrMsg = "新增合同权限失败,Err:" + err.Error() // return // } // //新增日志 // { // itemLog := new(company.CompanyContractPermissionLog) // itemLog.CompanyId = req.CompanyId // itemLog.CompanyContractId = int(newId) // itemLog.ChartPermissionId = v // itemLog.StartDate = req.StartDate // itemLog.EndDate = req.EndDate // itemLog.ModifyTime = time.Now() // itemLog.CreateTime = time.Now() // itemLog.LogCreateTime = time.Now() // go company.AddCompanyContractPermissionLog(itemLog) // } // } // applyMethod := 1 // approval := new(company.CompanyApproval) // approval.CompanyId = req.CompanyId // approval.ProductId = productId // approval.ApproveStatus = "待审批" // approval.ApproveUserId = 0 // approval.ApproveRoleTypeCode = approveRoleTypeCode // approval.ApproveRealName = "" // approval.ApproveTime = time.Now() // approval.ApproveContent = "试用转正式" // approval.ApplyMethod = applyMethod // approval.ApplyReasons = "" // approval.ApplyUserId = sysUser.AdminId // approval.ApplyRealName = sysUser.RealName // approval.CreateTime = time.Now() // approval.ModifyTime = time.Now() // approval.CompanyContractId = int(newId) // companyApprovalId, err = company.AddCompanyApproval(approval) // if err != nil { // br.Msg = "申请失败" // br.ErrMsg = "申请失败,Err:" + err.Error() // return // } // } else { // recode, err := company.GetCompanyApprovalByApprovalId(req.CompanyApprovalId) // if err != nil { // br.Msg = "申请失败" // br.ErrMsg = "获取审批记录失败,Err:" + err.Error() // return // } // err = company.ModifyCompanyTurnPositive(&req, productId, recode.CompanyContractId, companyProduct.IsFormal, map[int]int{}) // if err != nil { // br.Msg = "申请失败" // br.ErrMsg = "申请失败,Err:" + err.Error() // return // } // companyApprovalId = req.CompanyApprovalId // } // //新增操作记录 // { // remark := "申请转正" // operation := "turn_positive" // services.AddCompanyOperationRecord(req.CompanyId, companyProduct.SellerId, sysUser.AdminId, productId, approveUserId, companyProduct.CompanyName, // companyProduct.ProductName, sysUser.RealName, remark, operation, approveContent, approveUserRealName, "", companyProduct.Status) // } // //新增客户产品日志 // { // logType := "modify" // go services.AddCompanyProductLog(companyProduct, this.SysUser.AdminId, logType) // } // //待办通知 // { // for _, v := range approveUser { // approveUserId = v.AdminId // approveUserRealName = v.RealName // mobile := v.Mobile // content := "试用转正式申请单" // err = services.AddCompanyApprovalMessage(sysUser.AdminId, approveUserId, req.CompanyId, companyApprovalId, 1, 1, 1, companyProduct.CompanyName, content, content, mobile) // if err != nil { // br.Msg = "申请失败" // br.ErrMsg = "新增待办通知失败,Err:" + err.Error() // return // } // } // } // br.Ret = 200 // br.Success = true // br.Msg = "申请成功" //} // ApplyThawOld // @Title 申请解冻 // @Description 申请解冻接口 // @Param request body company.CompanyApplyThawReq true "type json string" // @Success Ret=200 申请成功 func (this *CompanyApplyController) ApplyThawOld() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } var req company.CompanyApplyThawReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.CompanyId <= 0 { br.Msg = "参数错误" br.ErrMsg = "参数错误,客户id小于等于0" return } roleTypeCode := sysUser.RoleTypeCode productId := services.GetProductId(roleTypeCode) if productId == 0 { br.Msg = "参数错误" br.ErrMsg = "客户类型为:" + roleTypeCode return } approveRoleTypeCode := "" if productId == 1 { approveRoleTypeCode = utils.ROLE_TYPE_CODE_FICC_ADMIN } else { approveRoleTypeCode = utils.ROLE_TYPE_CODE_RAI_ADMIN } companyProduct, err := company.GetCompanyProductByCompanyIdAndProductId(req.CompanyId, productId) if err != nil { br.Msg = "获取客户信息失败" br.ErrMsg = "获取客户信息失败" return } if companyProduct == nil { br.Msg = "获取客户信息失败" br.ErrMsg = "客户不存在,不可提交审批:companyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId) return } if companyProduct.Status != utils.COMPANY_STATUS_FREEZE { br.Msg = "客户状态为:" + companyProduct.Status + ";不可进行解冻申请" br.ErrMsg = "客户状态为:" + companyProduct.Status + ";不可进行解冻申请" return } if companyProduct.ApproveStatus == utils.COMPANY_APPROVE_STATUS { br.Msg = "存在待审批订单,不可重复提交" return } approveUser, err := company.GetApproveUser(approveRoleTypeCode) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取审批信息失败" br.ErrMsg = "获取审批人信息失败,Err:" + err.Error() return } if approveUser == nil || (err != nil && err.Error() == utils.ErrNoRow()) { br.Msg = "审批用户不存在" br.ErrMsg = "审批用户不存在" return } //申请类型:1:试用->正式,2:冻结—>试用,3:试用延期,4:原销售申请领取流失客户,5:正式客户申请服务更新,6:正式客户补充协议 approveContent := `冻结转试用` var companyApprovalId int if req.CompanyApprovalId <= 0 { applyMethod := 2 approval := new(company.CompanyApproval) approval.CompanyId = req.CompanyId approval.ProductId = productId approval.ApproveStatus = "待审批" approval.ApproveUserId = 0 approval.ApproveRoleTypeCode = approveRoleTypeCode approval.ApproveRealName = "" approval.ApproveTime = time.Now() approval.ApproveContent = approveContent approval.ApplyMethod = applyMethod approval.ApplyReasons = req.ApplyRemark approval.ApplyUserId = sysUser.AdminId approval.ApplyRealName = sysUser.RealName approval.CreateTime = time.Now() approval.ModifyTime = time.Now() companyApprovalId, err = company.AddCompanyApproval(approval) if err != nil { br.Msg = "申请失败" br.ErrMsg = "申请失败,Err:" + err.Error() return } } else { err = company.ModifyCompanyApproval(req.CompanyId, productId, req.CompanyApprovalId, approveContent, req.ApplyRemark) if err != nil { br.Msg = "申请失败" br.ErrMsg = "申请失败,Err:" + err.Error() return } companyApprovalId = req.CompanyApprovalId //先删除之前申请的权限 _ = company.DeleteCompanyDelayPermission(req.CompanyApprovalId) } //处理权限 { if req.PermissionIds != "" { permissionArr := strings.Split(req.PermissionIds, ",") for _, v := range permissionArr { //fmt.Println(k, v) //新增 if v != "" { permissionId, err := strconv.Atoi(v) if err != nil { br.Msg = "申请失败" br.ErrMsg = "权限格式转换失败,Err:" + err.Error() return } delayItem := new(company.CompanyDelayPermission) delayItem.CompanyId = req.CompanyId delayItem.CompanyApplyId = companyApprovalId delayItem.ChartPermissionId = permissionId delayItem.StartDate = time.Now().Format(utils.FormatDate) delayItem.EndDate = time.Now().AddDate(0, 2, 0).Format(utils.FormatDate) delayItem.CreateTime = time.Now() delayItem.ModifyTime = time.Now() err = company.AddCompanyDelayPermission(delayItem) if err != nil { br.Msg = "申请失败" br.ErrMsg = "新增冻结转试用审批权限失败,Err:" + err.Error() return } } } } } //新增操作记录 { remark := "申请解冻" operation := "thaw" services.AddCompanyOperationRecord(req.CompanyId, companyProduct.SellerId, sysUser.AdminId, productId, 0, companyProduct.CompanyName, companyProduct.ProductName, sysUser.RealName, remark, operation, approveContent, "", "", companyProduct.Status) } //新增客户产品日志 { logType := "modify" go services.AddCompanyProductLog(companyProduct, this.SysUser.AdminId, logType) } //待办通知 { for _, v := range approveUser { approveUserId := v.AdminId //approveUserRealName := v.RealName mobile := v.Mobile content := "冻结转试用申请单" err = services.AddCompanyApprovalMessage(sysUser.AdminId, approveUserId, req.CompanyId, companyApprovalId, 1, 1, 1, companyProduct.CompanyName, content, content, mobile) if err != nil { br.Msg = "申请失败" br.ErrMsg = "新增待办通知失败,Err:" + err.Error() return } } } br.Ret = 200 br.Success = true br.Msg = "申请成功" } // ApplyDelayOld // @Title 申请延期 // @Description 申请延期接口 // @Param request body company.CompanyApplyDelayReq true "type json string" // @Success Ret=200 申请成功 func (this *CompanyApplyController) ApplyDelayOld() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } var req company.CompanyApplyDelayReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.CompanyId <= 0 { br.Msg = "参数错误" br.ErrMsg = "参数错误,客户id小于等于0" return } roleTypeCode := sysUser.RoleTypeCode productId := services.GetProductId(roleTypeCode) if productId == 0 { br.Msg = "参数错误" br.ErrMsg = "客户类型为:" + roleTypeCode return } approveRoleTypeCode := "" if productId == 1 { approveRoleTypeCode = utils.ROLE_TYPE_CODE_FICC_ADMIN } else { approveRoleTypeCode = utils.ROLE_TYPE_CODE_RAI_ADMIN } companyProduct, err := company.GetCompanyProductByCompanyIdAndProductId(req.CompanyId, productId) if err != nil { br.Msg = "获取客户信息失败" br.ErrMsg = "获取客户信息失败" return } if companyProduct == nil { br.Msg = "获取客户信息失败" br.ErrMsg = "客户不存在,不可提交审批:companyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId) return } if companyProduct.Status != utils.COMPANY_STATUS_TRY_OUT { br.Msg = "客户状态为:" + companyProduct.Status + ";不可进行延期申请" br.ErrMsg = "客户状态为:" + companyProduct.Status + ";不可进行延期申请" return } if companyProduct.ApproveStatus == "待审批" { br.Msg = "存在待审批订单,不可重复提交" return } approveUser, err := company.GetApproveUser(approveRoleTypeCode) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取审批信息失败" br.ErrMsg = "获取审批人信息失败,Err:" + err.Error() return } if approveUser == nil || (err != nil && err.Error() == utils.ErrNoRow()) { br.Msg = "审批用户不存在" br.ErrMsg = "审批用户不存在" return } //申请类型:1:试用->正式,2:冻结—>试用,3:试用延期,4:原销售申请领取流失客户,5:正式客户申请服务更新,6:正式客户补充协议 approveContent := `试用延期` var companyApprovalId int utils.FileLog.Info("试用延期申请:%d", req.CompanyApprovalId) if req.CompanyApprovalId > 0 { utils.FileLog.Info("试用延期申请:%d", req.CompanyApprovalId) err = company.ModifyCompanyApproval(req.CompanyId, productId, req.CompanyApprovalId, approveContent, req.ApplyRemark) if err != nil { br.Msg = "申请失败" br.ErrMsg = "申请失败,Err:" + err.Error() return } companyApprovalId = req.CompanyApprovalId } else { applyMethod := 3 approval := new(company.CompanyApproval) approval.CompanyId = req.CompanyId approval.ProductId = productId approval.ApproveStatus = "待审批" approval.ApproveUserId = 0 approval.ApproveRoleTypeCode = approveRoleTypeCode approval.ApproveRealName = "" approval.ApproveTime = time.Now() approval.ApproveContent = "试用延期" approval.ApplyMethod = applyMethod approval.ApplyReasons = req.ApplyRemark approval.ApplyUserId = sysUser.AdminId approval.ApplyRealName = sysUser.RealName approval.CreateTime = time.Now() approval.ModifyTime = time.Now() companyApprovalId, err = company.AddCompanyApproval(approval) if err != nil { br.Msg = "申请失败" br.ErrMsg = "申请失败,Err:" + err.Error() return } //处理权限 { if req.PermissionIds != "" { permissionArr := strings.Split(req.PermissionIds, ",") for k, v := range permissionArr { fmt.Println(k, v) permissionId, _ := strconv.Atoi(v) //companyId, companyApplyId, chartPermissionId int count, err := company.GetDelayPermissionCount(req.CompanyId, companyApprovalId, permissionId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "申请失败" br.ErrMsg = "判断权限是否存在失败,Err:" + err.Error() return } if count > 0 { //修改 err = company.ModifyCompanyDelayPermission(req.CompanyId, companyApprovalId, permissionId) if err != nil { br.Msg = "申请失败" br.ErrMsg = "修改权限失败,Err:" + err.Error() return } } else { //新增 if v != "" { permissionId, err := strconv.Atoi(v) if err != nil { br.Msg = "申请失败" br.ErrMsg = "权限格式转换失败,Err:" + err.Error() return } delayItem := new(company.CompanyDelayPermission) delayItem.CompanyId = req.CompanyId delayItem.CompanyApplyId = companyApprovalId delayItem.ChartPermissionId = permissionId delayItem.StartDate = time.Now().Format(utils.FormatDate) delayItem.EndDate = time.Now().AddDate(0, 2, 0).Format(utils.FormatDate) delayItem.CreateTime = time.Now() delayItem.ModifyTime = time.Now() err = company.AddCompanyDelayPermission(delayItem) if err != nil { br.Msg = "申请失败" br.ErrMsg = "新增延期审批权限失败,Err:" + err.Error() return } } } } } } } //新增操作记录 { remark := "申请延期" operation := "delay" go services.AddCompanyOperationRecord(req.CompanyId, companyProduct.SellerId, sysUser.AdminId, productId, 0, companyProduct.CompanyName, companyProduct.ProductName, sysUser.RealName, remark, operation, approveContent, "", "", companyProduct.Status) } //新增客户产品日志 { logType := "modify" go services.AddCompanyProductLog(companyProduct, this.SysUser.AdminId, logType) } //待办通知 { for _, v := range approveUser { approveUserId := v.AdminId //approveUserRealName := v.RealName mobile := v.Mobile content := "试用延期申请单" utils.FileLog.Info("mobile:%s", mobile) go services.AddCompanyApprovalMessage(sysUser.AdminId, approveUserId, req.CompanyId, companyApprovalId, 1, 1, 1, companyProduct.CompanyName, content, content, mobile) } } br.Ret = 200 br.Success = true br.Msg = "申请成功" } // ApplyReceiveOld // @Title 申请领取 // @Description 申请领取接口 // @Param request body company.CompanyApplyReceiveReq true "type json string" // @Success Ret=200 申请成功 func (this *CompanyApplyController) ApplyReceiveOld() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } var req company.CompanyApplyReceiveReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.CompanyId <= 0 { br.Msg = "参数错误" br.ErrMsg = "参数错误,客户id小于等于0" return } roleTypeCode := sysUser.RoleTypeCode productId := services.GetProductId(roleTypeCode) if productId == 0 { br.Msg = "参数错误" br.ErrMsg = "客户类型为:" + roleTypeCode return } approveRoleTypeCode := "" if productId == 1 { approveRoleTypeCode = utils.ROLE_TYPE_CODE_FICC_ADMIN } else { approveRoleTypeCode = utils.ROLE_TYPE_CODE_RAI_ADMIN } companyProduct, err := company.GetCompanyProductByCompanyIdAndProductId(req.CompanyId, productId) if err != nil { br.Msg = "获取客户信息失败" br.ErrMsg = "获取客户信息失败" return } if companyProduct == nil { br.Msg = "获取客户信息失败" br.ErrMsg = "客户不存在,不可提交审批:companyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId) return } if companyProduct.Status != utils.COMPANY_STATUS_LOSE { br.Msg = "客户状态为:" + companyProduct.Status + ";不可进行延期申请" br.ErrMsg = "客户状态为:" + companyProduct.Status + ";不可进行延期申请" return } if companyProduct.ApproveStatus == "待审批" { br.Msg = "存在待审批订单,不可重复提交" return } approveUser, err := company.GetApproveUser(approveRoleTypeCode) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取审批信息失败" br.ErrMsg = "获取审批人信息失败,Err:" + err.Error() return } if approveUser == nil || (err != nil && err.Error() == utils.ErrNoRow()) { br.Msg = "审批用户不存在" br.ErrMsg = "审批用户不存在" return } approveContent := `原销售申领客户` applyMethod := 4 var companyApprovalId int //申请类型:1:试用->正式,2:冻结—>试用,3:试用延期,4:原销售申请领取流失客户,5:正式客户申请服务更新,6:正式客户补充协议 if req.CompanyApprovalId <= 0 { approval := new(company.CompanyApproval) approval.CompanyId = req.CompanyId approval.ProductId = productId approval.ApproveStatus = "待审批" approval.ApproveUserId = 0 approval.ApproveRoleTypeCode = approveRoleTypeCode approval.ApproveRealName = "" approval.ApproveTime = time.Now() approval.ApproveContent = approveContent approval.ApplyMethod = applyMethod approval.ApplyReasons = req.ApplyRemark approval.ApplyUserId = sysUser.AdminId approval.ApplyRealName = sysUser.RealName approval.CreateTime = time.Now() approval.ModifyTime = time.Now() companyApprovalId, err = company.AddCompanyApproval(approval) if err != nil { br.Msg = "申请失败" br.ErrMsg = "申请失败,Err:" + err.Error() return } } else { err = company.ModifyCompanyApproval(req.CompanyId, productId, req.CompanyApprovalId, approveContent, req.ApplyRemark) if err != nil { br.Msg = "申请失败" br.ErrMsg = "申请失败,Err:" + err.Error() return } companyApprovalId = req.CompanyApprovalId //先删除之前申请的权限 _ = company.DeleteCompanyDelayPermission(req.CompanyApprovalId) } //处理权限 { if req.PermissionIds != "" { permissionArr := strings.Split(req.PermissionIds, ",") for _, v := range permissionArr { if v != "" { permissionId, err := strconv.Atoi(v) if err != nil { br.Msg = "申请失败" br.ErrMsg = "权限格式转换失败,Err:" + err.Error() return } delayItem := new(company.CompanyDelayPermission) delayItem.CompanyId = req.CompanyId delayItem.CompanyApplyId = companyApprovalId delayItem.ChartPermissionId = permissionId delayItem.StartDate = time.Now().Format(utils.FormatDate) delayItem.EndDate = time.Now().AddDate(0, 2, 0).Format(utils.FormatDate) delayItem.CreateTime = time.Now() delayItem.ModifyTime = time.Now() err = company.AddCompanyDelayPermission(delayItem) if err != nil { br.Msg = "申请失败" br.ErrMsg = "新增领取客户审批权限失败,Err:" + err.Error() return } } } } } //新增操作记录 { remark := "申请领取" operation := "apply_receive" services.AddCompanyOperationRecord(req.CompanyId, companyProduct.SellerId, sysUser.AdminId, productId, 0, companyProduct.CompanyName, companyProduct.ProductName, sysUser.RealName, remark, operation, approveContent, "", "", companyProduct.Status) } //新增客户产品日志 { logType := "modify" go services.AddCompanyProductLog(companyProduct, this.SysUser.AdminId, logType) } //待办通知 { for _, v := range approveUser { approveUserId := v.AdminId //approveUserRealName := v.RealName mobile := v.Mobile content := "申请领取申请单" err = services.AddCompanyApprovalMessage(sysUser.AdminId, approveUserId, req.CompanyId, companyApprovalId, 1, 1, 1, companyProduct.CompanyName, content, content, mobile) if err != nil { br.Msg = "申请失败" br.ErrMsg = "新增待办通知失败,Err:" + err.Error() return } } } br.Ret = 200 br.Success = true br.Msg = "申请成功" } // ApplyRevokeOld // @Title 申请撤回 // @Description 申请撤回接口 // @Param request body company.CompanyApplyRevokeReq true "type json string" // @Success Ret=200 成功 func (this *CompanyApprovalController) ApplyRevokeOld() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } var req company.CompanyApplyRevokeReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.CompanyId <= 0 { br.Msg = "参数错误" br.ErrMsg = "客户Id小于等于0:" return } roleTypeCode := sysUser.RoleTypeCode productId := services.GetProductId(roleTypeCode) if productId == 0 { br.Msg = "参数错误" br.ErrMsg = "客户类型为:" + roleTypeCode return } companyProduct, err := company.GetCompanyProductByCompanyIdAndProductId(req.CompanyId, productId) if err != nil { br.Msg = "获取客户信息失败" br.ErrMsg = "获取客户信息失败" return } if companyProduct == nil { br.Msg = "获取客户信息失败" br.ErrMsg = "客户不存在,不可提交审批:companyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId) return } approvalItem, err := company.GetCompanyApprovalById(req.CompanyId, productId) if err != nil { if err.Error() == utils.ErrNoRow() { br.Msg = "待审批信息不存在" br.ErrMsg = "待审批信息不存在,CompanyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId) return } br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } if approvalItem == nil { br.Msg = "待审批信息不存在" br.ErrMsg = "待审批信息不存在,CompanyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId) return } if approvalItem.ApproveStatus != "待审批" { br.Msg = "客户状态为:" + companyProduct.Status + ";不可进行撤回操作" br.ErrMsg = "客户状态为:" + companyProduct.Status + ";不可进行撤回操作" return } err = company.ApplyRevoke(approvalItem.CompanyApprovalId, approvalItem.CompanyId, approvalItem.ProductId) if err != nil { br.Msg = "撤回失败" br.ErrMsg = "撤回失败,Err:" + err.Error() return } //新增操作记录 { remark := "撤回" operation := "apply_revoke" services.AddCompanyOperationRecord(req.CompanyId, companyProduct.SellerId, sysUser.AdminId, productId, 0, companyProduct.CompanyName, companyProduct.ProductName, sysUser.RealName, remark, operation, "", "", "", companyProduct.Status) } br.Ret = 200 br.Success = true br.Msg = "撤回成功" } // ApplyContract // @Title 申请服务更新/转正-审批合同信息 // @Description 申请服务更新/转正-审批合同信息接口 // @Param CompanyApprovalId query int true "审批记录ID" // @Success 200 {object} company.ApplyContractResp // @router /apply/contract [get] func (this *CompanyApplyController) ApplyContract() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } companyApprovalId, _ := this.GetInt("CompanyApprovalId") if companyApprovalId <= 0 { br.Msg = "参数错误" br.ErrMsg = "参数错误,客户id小于等于0" return } approvalRecord, err := company.GetCompanyApprovalByCompanyApprovalId(companyApprovalId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取审批信息失败,Err:" + err.Error() return } contractItem, err := company.GetCompanyContractById(approvalRecord.CompanyContractId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取合同信息失败,Err:" + err.Error() return } productId := approvalRecord.ProductId companyId := approvalRecord.CompanyId if productId == 1 { allFiccPermissions, e := company.GetPermissionLookItemsByProductId(utils.COMPANY_PRODUCT_FICC_ID) if e != nil { br.Msg = "获取权限信息失败" br.ErrMsg = "获取权限信息失败,Err:" + e.Error() return } permissionMap := make(map[int][]*company.PermissionLookItem, 0) permissionCheckMap := make(map[int][]int, 0) for _, v := range allFiccPermissions { if v.ParentId > 0 { permissionMap[v.ParentId] = append(permissionMap[v.ParentId], v) if v.IsPublic == 1 { permissionCheckMap[v.ParentId] = append(permissionCheckMap[v.ParentId], v.ChartPermissionId) } } } for _, v := range allFiccPermissions { if v.ParentId == 0 { checkList := make([]int, 0) plist := new(company.PermissionLookList) plist.Items = make([]*company.PermissionLookItem, 0) items, ok := permissionMap[v.ChartPermissionId] if ok { for _, n := range items { count, err := company.GetCompanyContractPermissionCheckByContractId(companyId, contractItem.CompanyContractId, n.ChartPermissionId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取权限信息失败,Err:" + err.Error() return } if count > 0 { checkList = append(checkList, n.ChartPermissionId) } } plist.Items = items } plist.ClassifyName = v.PermissionName plist.CheckList = checkList contractItem.PermissionList = append(contractItem.PermissionList, plist) } } } if productId == 2 { name := "权益" checkList := make([]int, 0) //p := new(company.PermissionSetList) plist := new(company.PermissionLookList) //pListType := new(company.PermissionSetListType) //p.ClassifyName = name //pListType.ClassifyName = v items, err := company.GetPermissionLookItems(productId, name) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取权限信息失败,Err:" + err.Error() return } totalForever, err := company.GetCompanyProductRaiForeverCount(companyId) //判断是否是权益的永续客户 if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取客户信息失败,Err:" + err.Error() return } // 大套餐 bigPackage70, bigPackage45 := new(company.PermissionLookItem), new(company.PermissionLookItem) if totalForever > 0 { //filterPermissionName := []string{"专家", "路演服务", "调研", "研选订阅", "研选扣点包"} //权益的永续客户这些不展示 //for _, v := range items { // if utils.InArrayByStr(filterPermissionName, v.PermissionName) { // continue // } // p.Items = append(p.Items, v) //} } else { bigPackage70.PermissionName = utils.CHART_PERMISSION_NAME_70W bigPackage45.PermissionName = utils.CHART_PERMISSION_NAME_45W plist.Items = append(plist.Items, bigPackage45, bigPackage70) } // 是否为内部人员, 内部人员需要拆分行业主客观 isRai, e := services.CheckRaiAdmin(sysUser.AdminId) if e != nil { br.Msg = "获取失败" br.ErrMsg = "判断是否为权益内部人员失败, GetRaiAdmin Err: " + e.Error() return } // 获取行业主客观权限ID childSubMap, childObjMap := make(map[string]int), make(map[string]int) { permissions, e := models.GetChartPermissionList() if e != nil { br.Msg = "获取失败" br.ErrMsg = "获取权限列表失败, GetChartPermissionList Err: " + e.Error() return } for _, v := range permissions { if !strings.Contains("医药消费科技智造", v.PermissionName) { continue } if strings.Contains(v.Remark, "主观") { childSubMap[v.PermissionName] = v.ChartPermissionId continue } childObjMap[v.PermissionName] = v.ChartPermissionId } } //升级 mapUpgrade := make(map[int]int) mapExpensive := make(map[int]bool) var expensiveYx int permissionList, err := company.GetCompanyContractPermissionByCompanyContractId(contractItem.CompanyContractId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取合同权限信息失败,Err:" + err.Error() return } permissionIds := make([]int, 0) for _, v := range permissionList { if v.IsUpgrade == 1 { mapUpgrade[v.ChartPermissionId] = v.ChartPermissionId } if v.ExpensiveYx > 0 { mapExpensive[v.ChartPermissionId] = true expensiveYx = v.ExpensiveYx } permissionIds = append(permissionIds, v.ChartPermissionId) } //mapChartPermissionId := make(map[int]int) mapChartPermissionName := make(map[string]string) // 行业主客观防止重复写入Items用的 filterPermissionName := []string{} mapPermissionNameUpgrade := make(map[string]bool) //升级权限重复 if totalForever == 0 { filterPermissionName = []string{"专家", "路演服务"} // 需要过滤不展示的行业 } else { filterPermissionName = []string{"专家", "路演服务", "调研", "研选订阅", "研选扣点包"} //权益的永续客户这些不展示 } for _, n := range items { if utils.InArrayByStr(filterPermissionName, n.PermissionName) { continue } if n.PermissionType == 2 && totalForever > 0 { continue } if utils.InArrayByInt(permissionIds, n.ChartPermissionId) { n.Checked = true if _, ok := mapUpgrade[n.ChartPermissionId]; ok { checkList = append(checkList, n.ChartPermissionId+utils.PERMISSION_ID_UPGRADE) } else { if mapExpensive[n.ChartPermissionId] { // 研选5w与10W if expensiveYx == 1 { checkList = append(checkList, n.ChartPermissionId+utils.PERMISSION_ID_YANXUAN_DIFF) // 5W } else { checkList = append(checkList, utils.PERMISSION_ID_YANXUAN_10W_DIFF) // 10W } } else { // 非内部人员, 忽略掉已有的客观权限, 否则前端升级的反选会出现问题, 重新提交的时候只提交主观权限也有对应的处理 if !strings.Contains(n.Remark, "客观") { checkList = append(checkList, n.ChartPermissionId) } // 正常的非客观权限 if strings.Contains(n.Remark, "客观") && isRai { checkList = append(checkList, n.ChartPermissionId) } } } } // 买方研选3w/5w/10w if n.PermissionName == utils.CHART_PERMISSION_NAME_MF_YANXUAN { m3 := new(company.PermissionLookItem) m3.ChartPermissionId = n.ChartPermissionId m3.PermissionName = n.PermissionName plist.Items = append(plist.Items, m3) continue } //if totalForever == 0 { // 四行业主客观/升级 if mapChartPermissionName[n.PermissionName] == "" { mapChartPermissionName[n.PermissionName] = n.PermissionName if !strings.Contains("医药消费科技智造", n.PermissionName) { plist.Items = append(plist.Items, n) continue } // 内部人员需要拆分主客观权限 if isRai && totalForever == 0 { n.Child = make([]*company.PermissionLookItem, 0) n.Child = append(n.Child, &company.PermissionLookItem{ ChartPermissionId: childSubMap[n.PermissionName], PermissionName: "主观", PermissionType: 1, }, &company.PermissionLookItem{ ChartPermissionId: childObjMap[n.PermissionName], PermissionName: "客观", PermissionType: 2, }) } } plist.Items = append(plist.Items, n) if totalForever == 0 && !mapPermissionNameUpgrade[n.PermissionName] { t := new(company.PermissionLookItem) t.ChartPermissionId = n.ChartPermissionId + utils.PERMISSION_ID_UPGRADE t.PermissionName = n.PermissionName + "(升级)" t.PermissionType = n.PermissionType t.Checked = n.Checked plist.Items = append(plist.Items, t) mapPermissionNameUpgrade[n.PermissionName] = true } } //} // 如果checklist 里的值 没有在items里,则不返回给前端 itemsIds := make([]int, 0) itemsIdExist := make(map[int]bool) for _, v := range plist.Items { if v.Child != nil && len(v.Child) > 0 { for _, v2 := range v.Child { if !itemsIdExist[v2.ChartPermissionId] { itemsIds = append(itemsIds, v2.ChartPermissionId) itemsIdExist[v2.ChartPermissionId] = true } } } if !itemsIdExist[v.ChartPermissionId] { itemsIds = append(itemsIds, v.ChartPermissionId) itemsIdExist[v.ChartPermissionId] = true } } checkList = utils.IntersectInt(checkList, itemsIds) //finalCheckList := make([]int, 0) //for _, v := range plist.Items { // for _, i := range checkList { // if v.ChartPermissionId == i { // finalCheckList = append(finalCheckList, i) // break // } // } //} //p.CheckList = checkList //plist.ItemsType = pListType.Items plist.ClassifyName = name //plist.CheckList = finalCheckList plist.CheckList = checkList contractItem.PermissionList = append(contractItem.PermissionList, plist) contractItem.Quarter, _ = utils.GetQuarterStrStartDatesInRangeHaveYear(contractItem.StartDate, contractItem.EndDate) //季度信息 } resp := new(company.ApplyContractResp) resp.Item = contractItem br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // SearchContractList // @Title 系统合同搜索列表(用于申请转正、服务更新) // @Description 系统合同搜索列表接口(用于申请转正、服务更新) // @Param Keyword query string false "搜索关键字" // @Param CreditCode query string false "社会组织信用码" // @Success 200 {object} []contract.ContractList // @router /system_contract/list [get] func (this *CompanyApplyController) SearchContractList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } productId := services.GetProductId(sysUser.RoleTypeCode) if productId <= 0 { br.Msg = "获取合同列表失败!" br.ErrMsg = "获取合同列表失败,当前账户类型异常:" + sysUser.RoleTypeCode return } keyword := this.GetString("Keyword") creditCode := this.GetString("CreditCode") if keyword == "" && creditCode == "" { br.Ret = 200 br.Success = true br.Msg = "获取成功" return } //companyIdStr, err := company.GetCompanyIdByKeyWordAll(keyword) //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取失败,Err:" + err.Error() // return //} //if companyIdStr != "" { // companyIdStr = strings.Trim(companyIdStr, ",") //} list, err := contract.GetSearchContractList(productId, sysUser.AdminId, keyword, creditCode) for _, v := range list { v.StartDateStr = v.StartDate.Format(utils.FormatDate) v.EndDateStr = v.EndDate.Format(utils.FormatDate) } if err != nil { br.Msg = "获取合同列表失败!" br.ErrMsg = "获取合同列表失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = list } // GetContractApplyDetail // @Title 系统合同详情(用于申请转正、服务更新) // @Description 系统合同详情(用于申请转正、服务更新) // @Param ContractId query int false "合同id" // @Success 200 {object} []response.ContractApplyDetailResp // @router /system_contract/detail [get] func (this *CompanyApplyController) GetContractApplyDetail() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } productId := services.GetProductId(sysUser.RoleTypeCode) if productId <= 0 { br.Msg = "获取合同列表失败!" br.ErrMsg = "获取合同列表失败,当前账户类型异常:" + sysUser.RoleTypeCode return } contractId, err := this.GetInt("ContractId") if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } //合同id if contractId <= 0 { br.Msg = "获取失败" br.ErrMsg = "获取失败,合同id必传" return } contractDetail, err := contractService.GetContractDetail(contractId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } permissionList, err := contractService.GetPermissionByContractService(contractDetail.ProductId, contractDetail.Service) if contractDetail.ProductId == 2 { newPermissionList := contractService.HandleEquityPermissionLookList(permissionList) permissionList = newPermissionList } if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取权限失败,Err:" + err.Error() return } resp := response.ContractApplyDetailResp{ ContractDetail: contractDetail, PermissionList: permissionList, } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 获取客户最近的历史合同权限详情 // @Description 获取客户最近的历史合同权限详情接口 // @Param CompanyId query int true "客户ID" // @Success 200 {object} *company.CompanyContractDetail // @router /company/last_contract/detail/withoutDate [get] func (this *CompanyApplyController) GetLastContractDetailWithoutDate() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } companyId, _ := this.GetInt("CompanyId") if companyId <= 0 { br.Msg = "参数错误" br.ErrMsg = "参数错误,客户id小于等于0" return } companyInfo, err := company.GetCompanyDetailById(companyId) if err != nil { if err.Error() == utils.ErrNoRow() { br.Msg = "参数错误" br.ErrMsg = "客户不存在" return } else { br.Msg = "查询客户信息失败" br.ErrMsg = "查询客户信息失败:" + err.Error() return } } contractInfo, err := contract.GetContractListByCompanyName(companyInfo.CompanyName) if err != nil { if err.Error() != utils.ErrNoRow() { br.Msg = "获取合同失败" br.ErrMsg = "获取合同失败:" + err.Error() return } else { br.Ret = 200 br.Success = true br.Msg = "获取成功" return } } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = contractInfo } // @Title 申请服务更新-签约历史(单个详情) // @Description 申请服务更新-签约历史接口(单个详情) // @Param ContractCode query string true "合同编码" // @Success 200 {object} company.CompanyContractHistoryResp // @router /apply/contract/history/detail [get] func (this *CompanyApplyController) ApplyContractHistoryDetail() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } contractCode := this.GetString("ContractCode") if contractCode == "" { br.Msg = "参数错误" br.ErrMsg = "参数错误,客户id小于等于0" return } roleTypeCode := sysUser.RoleTypeCode productId := services.GetProductId(roleTypeCode) list, err := company.GetCompanyContractHistoryListByContractCode(contractCode) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } listLen := len(list) if listLen == 0 { br.Msg = "获取信息失败" br.ErrMsg = "签约信息不存在 contractCode:" + contractCode return } expMap := map[int]string{0: "(3w)", 1: "(5w)"} // 买方研选价格 for i := 0; i < listLen; i++ { companyContract := list[i] list[i].ModifyTimeStr = companyContract.ModifyTime.Format(utils.FormatDateTime) productId = list[i].ProductId if productId == utils.COMPANY_PRODUCT_RAI_ID { //classifyName := "权益" checkList := make([]int, 0) plist := new(company.ContractPermissionList) hasPermissions, e := company.GetCompanyContractPermissionByCompanyContractId(companyContract.CompanyContractId) if e != nil { br.Msg = "获取失败" br.ErrMsg = "获取合同权限信息失败,Err:" + e.Error() return } hasMap := make(map[int]*company.CompanyContractPermission) for _, p := range hasPermissions { hasMap[p.ChartPermissionId] = p } checkItems := make([]*company.PermissionLookItem, 0) // PS:本来想把这个移到循环外面去优化一下...但是发现有指针引用变量被改掉的问题, BUG太多了改不完了先这样吧=_=! raiPermissions, e := company.GetPermissionLookItemsExt("2", utils.COMPANY_PRODUCT_RAI_NAME) if e != nil { br.Msg = "获取失败" br.ErrMsg = "获取权益权限列表失败, Err: " + e.Error() return } for _, n := range raiPermissions { match := hasMap[n.ChartPermissionId] if match == nil { continue } // 升级 if match.IsUpgrade == 1 { n.IsUpgrade = 1 checkList = append(checkList, n.ChartPermissionId) checkItems = append(checkItems, n) continue } // 买方研选(3w/5w) if n.PermissionName == utils.CHART_PERMISSION_NAME_MF_YANXUAN { n.PermissionName += expMap[match.ExpensiveYx] checkList = append(checkList, n.ChartPermissionId) checkItems = append(checkItems, n) continue } checkList = append(checkList, n.ChartPermissionId) checkItems = append(checkItems, n) } plist.Items = checkItems plist.ClassifyName = utils.COMPANY_PRODUCT_RAI_NAME plist.CheckList = checkList list[i].PermissionList = append(list[i].PermissionList, plist) // CRM8.8-权限主客观合并 newPermissionLookList := contractService.HandleEquityContractPermissionList(list[i].PermissionList) list[i].PermissionList = newPermissionLookList } } resp := new(company.CompanyContractHistoryResp) resp.List = list br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp }