package cygx import ( "encoding/json" "github.com/rdlucklib/rdluck_tools/paging" "hongze/hz_crm_api/controllers" "hongze/hz_crm_api/models" "hongze/hz_crm_api/models/company" "hongze/hz_crm_api/models/cygx" "hongze/hz_crm_api/models/system" "hongze/hz_crm_api/utils" "strings" "time" ) // X类客户录分模块 type EnterScoreController struct { controllers.BaseAuthController } // @Title X试用类客户检索 // @Description X试用类客户检索接口 // @Param KeyWord query string true "搜索关键词" // @Success 200 {object} company.CompanyNameAndIdListResp // @router /enterScore/company/searchlist [get] func (this *EnterScoreController) CompanySearchList() { 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 } keyWord := this.GetString("KeyWord") keyWord = strings.Trim(keyWord, " ") keyWord = strings.Replace(keyWord, "'", "", -1) resp := new(company.CompanyNameAndIdListResp) var companyCondition string var companypars []interface{} var listResp []*company.CompanyNameAndId companyCondition += ` AND b.product_name = ? ` companypars = append(companypars, "权益") companyCondition += ` AND b.status = ? ` companypars = append(companypars, "永续") if keyWord != "" { companyCondition += ` AND a.company_name LIKE '%` + keyWord + `%' ` } companyList, err := company.GetCompanyIdListByproductName(companyCondition, companypars) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if len(companyList) == 0 { listResp = make([]*company.CompanyNameAndId, 0) } else { listResp = companyList } resp.List = listResp br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 详情 // @Description 获取详情接口 // @Param EnterScoreId query int true "录分ID" // @Success Ret=200 {object} cygx.CygxEnterScoreDetailResp // @router /enterScore/detail [get] func (this *EnterScoreController) EnterScoreDetail() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() AdminUser := this.SysUser if AdminUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,用户信息为空" br.Ret = 408 return } enterScoreId, _ := this.GetInt("EnterScoreId") resp := new(cygx.CygxEnterScoreDetailResp) var itemslistPermission []*cygx.EnterScorePermissionListResp // 权益行业 var itemsFicclistPermission []*cygx.EnterScorePermissionListResp // FICC行业 mapRaiUser := make(map[string][]*cygx.EnterScoreRealNameListResp) //权益研究员 mapFiccUser := make(map[string][]*cygx.EnterScoreRealNameListResp) // FICC研究员 var itemsGroup []*cygx.EnterScoreGroupListResp //自定义分组 if enterScoreId == 0 { //权益研究员 sysUserList, err := cygx.GetAskEmailList() if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error() return } for _, v := range sysUserList { item := new(cygx.EnterScoreRealNameListResp) item.RealName = v.Name item.ChartPermissionName = v.ChartPermissionName mapRaiUser[v.ChartPermissionName] = append(mapRaiUser[v.ChartPermissionName], item) } listPermission, err := cygx.GetChartPermissionAll() if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取品种信息失败,Err:" + err.Error() return } permissionNameArr := []string{"医药", "消费", "科技", "智造", "策略", "固收"} for _, v := range listPermission { if !utils.InArrayByStr(permissionNameArr, v.PermissionName) { continue } item := new(cygx.EnterScorePermissionListResp) item.ChartPermissionName = v.PermissionName item.List = mapRaiUser[v.PermissionName] itemslistPermission = append(itemslistPermission, item) } resp.EnterScoreObj.ListRai = itemslistPermission //ficc 研究员 ficcUserList, err := system.GetFiccEnterScoreAdmin() if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,GetFiccEnterScoreAdmin Err: " + err.Error() return } for _, v := range ficcUserList { item := new(cygx.EnterScoreRealNameListResp) item.RealName = v.RealName item.ChartPermissionName = v.GroupName mapFiccUser[v.GroupName] = append(mapFiccUser[v.GroupName], item) } permissionFiccNameArr := []string{"宏观组", "建材组", "有色组", "能化组"} for _, v := range permissionFiccNameArr { item := new(cygx.EnterScorePermissionListResp) item.ChartPermissionName = v item.List = mapFiccUser[v] itemsFicclistPermission = append(itemsFicclistPermission, item) } resp.EnterScoreObj.ListFicc = itemsFicclistPermission groupNameArr := []string{"销售分", "专题分", "专家分", "云图大拓", "艾摩宏观"} for _, v := range groupNameArr { item := new(cygx.EnterScoreGroupListResp) item.GroupName = v itemsGroup = append(itemsGroup, item) } resp.EnterScoreObj.ListGroup = itemsGroup resp.PercentageObj = resp.EnterScoreObj resp.EnterScoreType = 1 resp.Quarter = make([]string, 0) } else { //初始化数据,方便前端渲染 var itemslistPermissionInit []*cygx.EnterScorePermissionListResp // 权益行业 var itemsFicclistPermissionInit []*cygx.EnterScorePermissionListResp // FICC行业 var itemsGroupInit []*cygx.EnterScoreGroupListResp //自定义分组 mapRaiUserInit := make(map[string][]*cygx.EnterScoreRealNameListResp) //权益研究员 mapFiccUserInit := make(map[string][]*cygx.EnterScoreRealNameListResp) // FICC研究员 enterScoreDetail, err := cygx.GetCygxEnterScoreInfoById(enterScoreId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,GetCygxEnterScoreInfoById Err: " + err.Error() return } resp.EnterScoreId = enterScoreDetail.EnterScoreId resp.CompanyId = enterScoreDetail.CompanyId resp.CompanyName = enterScoreDetail.CompanyName resp.StartDate = enterScoreDetail.StartDate resp.EndDate = enterScoreDetail.EndDate resp.Quarter = strings.Split(enterScoreDetail.Quarter, ",") resp.EnterScoreType = enterScoreDetail.EnterScoreType resp.Ranking = enterScoreDetail.Ranking resp.IsMergeScoring = enterScoreDetail.IsMergeScoring resp.SecuritiesFirmsName = enterScoreDetail.SecuritiesFirmsName resp.MergeProportion = enterScoreDetail.MergeProportion resp.ProportionTotal = enterScoreDetail.ProportionTotal resp.RaiProportionTotal = enterScoreDetail.RaiProportionTotal resp.FiccProportionTotal = enterScoreDetail.FiccProportionTotal listResearcher, err := cygx.GeCygxEnterScoreResearcherListById(enterScoreId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,GeCygxEnterScoreResearcherListById Err: " + err.Error() return } for _, v := range listResearcher { item := new(cygx.EnterScoreRealNameListResp) item.RealName = v.RealName item.ChartPermissionName = v.ChartPermissionName item.Proportion = v.Proportion if v.ProductId == utils.COMPANY_PRODUCT_RAI_ID { mapRaiUser[v.ChartPermissionName] = append(mapRaiUser[v.ChartPermissionName], item) } else { mapFiccUser[v.ChartPermissionName] = append(mapFiccUser[v.ChartPermissionName], item) } } for _, v := range listResearcher { item := new(cygx.EnterScoreRealNameListResp) item.RealName = v.RealName item.ChartPermissionName = v.ChartPermissionName if v.ProductId == utils.COMPANY_PRODUCT_RAI_ID { mapRaiUserInit[v.ChartPermissionName] = append(mapRaiUserInit[v.ChartPermissionName], item) } else { mapFiccUserInit[v.ChartPermissionName] = append(mapFiccUserInit[v.ChartPermissionName], item) } } listPermission, err := cygx.GetCygxEnterScorePermissionListById(enterScoreId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,GetCygxEnterScorePermissionListById Err: " + err.Error() return } for _, v := range listPermission { item := new(cygx.EnterScorePermissionListResp) item.ChartPermissionName = v.ChartPermissionName item.Proportion = v.Proportion if v.ProductId == utils.COMPANY_PRODUCT_RAI_ID { item.List = mapRaiUser[v.ChartPermissionName] itemslistPermission = append(itemslistPermission, item) } else { item.List = mapFiccUser[v.ChartPermissionName] itemsFicclistPermission = append(itemsFicclistPermission, item) } } for _, v := range listPermission { item := new(cygx.EnterScorePermissionListResp) item.ChartPermissionName = v.ChartPermissionName if v.ProductId == utils.COMPANY_PRODUCT_RAI_ID { item.List = mapRaiUserInit[v.ChartPermissionName] itemslistPermissionInit = append(itemslistPermissionInit, item) } else { item.List = mapFiccUserInit[v.ChartPermissionName] itemsFicclistPermissionInit = append(itemsFicclistPermissionInit, item) } } listGroup, err := cygx.GeCygxEnterScoreGroupListById(enterScoreId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,GeCygxEnterScoreGroupListById Err: " + err.Error() return } for _, v := range listGroup { item := new(cygx.EnterScoreGroupListResp) item.GroupName = v.GroupName item.Proportion = v.Proportion itemsGroup = append(itemsGroup, item) } for _, v := range listGroup { item := new(cygx.EnterScoreGroupListResp) item.GroupName = v.GroupName itemsGroupInit = append(itemsGroupInit, item) } if enterScoreDetail.EnterScoreType == 1 { resp.EnterScoreObj.ListGroup = itemsGroup resp.EnterScoreObj.ListRai = itemslistPermission resp.EnterScoreObj.ListFicc = itemsFicclistPermission resp.PercentageObj.ListGroup = itemsGroupInit resp.PercentageObj.ListRai = itemslistPermissionInit resp.PercentageObj.ListFicc = itemsFicclistPermissionInit } else { resp.PercentageObj.ListGroup = itemsGroup resp.PercentageObj.ListRai = itemslistPermission resp.PercentageObj.ListFicc = itemsFicclistPermission resp.EnterScoreObj.ListGroup = itemsGroupInit resp.EnterScoreObj.ListRai = itemslistPermissionInit resp.EnterScoreObj.ListFicc = itemsFicclistPermissionInit } } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 更新录分 // @Description 更新录分接口 // @Param request body cygx.UpdateEnterScoreReq true "type json string" // @Success 200 {object} "保存成功" // @router /enterScore/update [post] func (this *EnterScoreController) EnterScoreUpdate() { 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 cygx.UpdateEnterScoreReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } enterScoreId := req.EnterScoreId companyId := req.CompanyId if companyId == 0 { br.Msg = "参数错误" br.ErrMsg = "参数错误,companyId不可为空" return } companyProduct, err := company.GetCompanyProductByCompanyIdAndProductId(companyId, utils.COMPANY_PRODUCT_RAI_ID) if err != nil { br.Msg = "查询客户产品信息失败" br.ErrMsg = "查询客户产品信息失败,Err:" + err.Error() return } item := new(cygx.CygxEnterScore) item.EnterScoreId = enterScoreId item.CompanyId = companyId item.CompanyName = req.CompanyName item.StartDate = req.StartDate item.EndDate = req.EndDate item.Quarter = strings.Join(req.Quarter, ",") item.EnterScoreType = req.EnterScoreType item.Ranking = req.Ranking item.IsMergeScoring = req.IsMergeScoring item.SecuritiesFirmsName = req.SecuritiesFirmsName item.MergeProportion = req.MergeProportion item.RaiProportionTotal = req.RaiProportionTotal item.FiccProportionTotal = req.FiccProportionTotal item.ProportionTotal = req.ProportionTotal item.SellerId = companyProduct.SellerId item.SellerName = companyProduct.SellerName item.AdminId = sysUser.AdminId item.AdminName = sysUser.RealName item.CreateTime = time.Now() item.ModifyTime = time.Now() var itemsPermission []*cygx.CygxEnterScorePermission //行业数组 var itemsResearcher []*cygx.CygxEnterScoreResearcher //研究员数组 var itemsGroup []*cygx.CygxEnterScoreGroup //自定义分组 listRai := req.ListRai listFicc := req.ListFicc listGroup := req.ListGroup for _, v := range listRai { // 权益数据 itemPermission := new(cygx.CygxEnterScorePermission) itemPermission.ChartPermissionName = v.ChartPermissionName itemPermission.Proportion = v.Proportion itemPermission.EnterScoreId = v.EnterScoreId itemPermission.AdminId = sysUser.AdminId itemPermission.AdminName = sysUser.RealName itemPermission.ProductId = utils.COMPANY_PRODUCT_RAI_ID itemPermission.CreateTime = time.Now() itemPermission.ModifyTime = time.Now() itemsPermission = append(itemsPermission, itemPermission) for _, vResearcher := range v.List { itemResearcher := new(cygx.CygxEnterScoreResearcher) itemResearcher.ChartPermissionName = v.ChartPermissionName itemResearcher.EnterScoreId = v.EnterScoreId itemResearcher.RealName = vResearcher.RealName itemResearcher.Proportion = vResearcher.Proportion itemResearcher.AdminId = sysUser.AdminId itemResearcher.AdminName = sysUser.RealName itemResearcher.ProductId = utils.COMPANY_PRODUCT_RAI_ID itemResearcher.CreateTime = time.Now() itemResearcher.ModifyTime = time.Now() itemsResearcher = append(itemsResearcher, itemResearcher) } } for _, v := range listFicc { // FICC数据 itemPermission := new(cygx.CygxEnterScorePermission) itemPermission.ChartPermissionName = v.ChartPermissionName itemPermission.Proportion = v.Proportion itemPermission.EnterScoreId = v.EnterScoreId itemPermission.AdminId = sysUser.AdminId itemPermission.AdminName = sysUser.RealName itemPermission.ProductId = utils.COMPANY_PRODUCT_FICC_ID itemPermission.CreateTime = time.Now() itemPermission.ModifyTime = time.Now() itemsPermission = append(itemsPermission, itemPermission) for _, vResearcher := range v.List { itemResearcher := new(cygx.CygxEnterScoreResearcher) itemResearcher.ChartPermissionName = v.ChartPermissionName itemResearcher.EnterScoreId = v.EnterScoreId itemResearcher.RealName = vResearcher.RealName itemResearcher.Proportion = vResearcher.Proportion itemResearcher.AdminId = sysUser.AdminId itemResearcher.AdminName = sysUser.RealName itemResearcher.ProductId = utils.COMPANY_PRODUCT_FICC_ID itemResearcher.CreateTime = time.Now() itemResearcher.ModifyTime = time.Now() itemsResearcher = append(itemsResearcher, itemResearcher) } } for _, v := range listGroup { itemGroup := new(cygx.CygxEnterScoreGroup) itemGroup.GroupName = v.GroupName itemGroup.Proportion = v.Proportion itemGroup.AdminId = sysUser.AdminId itemGroup.AdminName = sysUser.RealName itemGroup.CreateTime = time.Now() itemGroup.ModifyTime = time.Now() itemsGroup = append(itemsGroup, itemGroup) } if enterScoreId == 0 { // 新增 err = cygx.AddCygxEnterScore(item, itemsPermission, itemsResearcher, itemsGroup) } else { // 修改 item.EnterScoreId = enterScoreId err = cygx.UpdateCygxEnterScore(item, itemsPermission, itemsResearcher, itemsGroup) } if err != nil { br.Msg = "操作失败" br.ErrMsg = "操作失败Err:" + err.Error() return } br.Ret = 200 br.Success = true br.IsAddLog = true br.Msg = "操作成功" } // @Title 列表 // @Description 列表接口 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param KeyWord query string true "搜索关键词" // @Param AdminId query string true "销售id,多个用英文逗号隔开,空字符串为全部" // @Success 200 {object} cygx.GetCygxEnterScoreListRep // @router /enterScore/list [get] func (this *EnterScoreController) EnterScoreList() { 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 } pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") keyWord := this.GetString("KeyWord") adminId := this.GetString("AdminId") var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = utils.StartIndex(currentIndex, pageSize) var condition string var pars []interface{} if keyWord != "" { condition += ` AND company_name LIKE '%` + keyWord + `%' ` } if adminId != "" { condition += ` AND seller_id IN (` + adminId + `) ` } total, err := cygx.GetCygxEnterScoreCount(condition, pars) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } list, err := cygx.GetCygxEnterScoreList(condition, pars, startSize, pageSize) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } resp := new(cygx.GetCygxEnterScoreListRep) if len(list) == 0 { resp.List = make([]*cygx.EnterScoreListResp, 0) } else { for _, v := range list { item := new(cygx.EnterScoreListResp) item.EnterScoreId = v.EnterScoreId item.CompanyId = v.CompanyId item.CompanyName = v.CompanyName item.Quarter = strings.Split(v.Quarter, ",") item.EnterScoreType = v.EnterScoreType item.Ranking = v.Ranking item.IsMergeScoring = v.IsMergeScoring item.SecuritiesFirmsName = v.SecuritiesFirmsName item.ProportionTotal = v.ProportionTotal item.EnterScoreId = v.EnterScoreId item.SellerId = v.SellerId item.SellerName = v.SellerName item.CreateTime = v.CreateTime.Format(utils.FormatDateTime) item.ModifyTime = v.ModifyTime.Format(utils.FormatDateTime) resp.List = append(resp.List, item) } } page := paging.GetPaging(currentIndex, pageSize, total) resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 更新录分 // @Description 更新录分接口 // @Param request body cygx.UpdateEnterScoreReq true "type json string" // @Success 200 {object} "保存成功" // @router /enterScore/delete [post] func (this *EnterScoreController) EnterScoreDelete() { 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 cygx.EnterScoreIdReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } enterScoreId := req.EnterScoreId if enterScoreId == 0 { br.Msg = "参数错误!" br.ErrMsg = "参数错误,EnterScoreId 不能为0" return } err = cygx.DeleteEnterScore(enterScoreId) if err != nil { br.Msg = "删除失败" br.ErrMsg = "操作失败Err:" + err.Error() return } br.Ret = 200 br.Success = true br.IsAddLog = true br.Msg = "删除成功" }