package cygx import ( "encoding/json" "fmt" "github.com/rdlucklib/rdluck_tools/paging" "github.com/tealeg/xlsx" "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/services" cygxService "hongze/hz_crm_api/services/cygx" "hongze/hz_crm_api/utils" "os" "path/filepath" "sort" "strconv" "strings" "time" ) // 权益用户管理 type UserController struct { controllers.BaseAuthController } // List // @Title 用户列表 // @Description 用户列表接口 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param Status query string true "状态:”试用','永续','冻结','流失','正式'" // @Param IsMaker query int false "是否决策人,1:是,0:否 ,2:全部'" // @Param IsRegister query int false "是否决策人,1:是,0:否 ,2:全部'" // @Param AdminId query string true "销售id,多个用英文逗号隔开,空字符串为全部" // @Param KeyWord query string true "搜索关键词" // @Param Label query string true "搜索用户标签" // @Param TryStage query int false "试用客户子标签:0全部、1未分类、2 推进、3 跟踪、4 预备。正式:套餐类型,0:无,1:大套餐,2:小套餐" // @Param SortType query string true "如何排序,是正序还是倒序,枚举值:`asc 正序`,`desc 倒叙`" // @Param IsSubscribeCygx query int true "是否关注了查研观向小助手公众号: -1-默认全部; 0-未关注; 1-已关注" // @Success 200 {object} cygx.CompanyUserListResp // @router /user/list [get] func (this *UserController) List() { 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 } roleTypeCode := sysUser.RoleTypeCode pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") isMaker, _ := this.GetInt("IsMaker") isRegister, _ := this.GetInt("IsRegister") status := this.GetString("Status") adminId := this.GetString("AdminId") keyWord := this.GetString("KeyWord") label := this.GetString("Label") tryStage, _ := this.GetInt("TryStage") //试用客户标签 sortType := this.GetString("SortType") //试用客户标签 // 套餐类型 //packageType, _ := this.GetInt("PackageType") keyWord = strings.Trim(keyWord, " ") keyWord = strings.Replace(keyWord, "'", "", -1) isSubscribeCygx, _ := this.GetInt("IsSubscribeCygx", -1) var total int page := paging.GetPaging(currentIndex, pageSize, total) //statusItems := make([]*company.CompanyStatus, 0) //var statusArr = [...]string{"全部", "试用", "正式", "冻结", "流失", "永续"} var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) var condition string var sqlOrder string var usercondition string var kwywordcondition string var pars []interface{} var parsUser []interface{} //流失 var lossCondition string //var lossPars []interface{} //状态分类查询条件 var permissionCondition string if adminId != "" { condition += ` AND b.seller_id IN (` + adminId + `) ` } lossCondition = condition //lossPars = pars permissionCondition = condition //流失客户统计 lossCondition += ` AND status='流失' ` //productId := services.GetProductId(roleTypeCode) productId := 2 //权限控制 { //如果不是超级管理员或者财务 if roleTypeCode != utils.ROLE_TYPE_CODE_ADMIN && roleTypeCode != utils.ROLE_TYPE_CODE_FINANCE { //如果是部门管理员 if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN { condition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` lossCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` permissionCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` } else { condition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` lossCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` permissionCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` if status == "全部" { ////如果是筛选了流失客户状态 if sysUser.Authority <= 0 { condition += ` AND (b.seller_id= '` + strconv.Itoa(sysUser.AdminId) + `' OR status='流失') ` permissionCondition += ` AND b.seller_id= ` + strconv.Itoa(sysUser.AdminId) } else { if sysUser.Authority == 1 { condition += ` AND (b.department_id=` + strconv.Itoa(sysUser.DepartmentId) + ` OR status='流失')` permissionCondition += ` AND b.department_id=` + strconv.Itoa(sysUser.DepartmentId) } if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id=` + strconv.Itoa(sysUser.GroupId) + ` OR status='流失') ` } permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId) } if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP { pid, err := company.GetParentIdFromGroup(sysUser.GroupId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "查询父级id异常" + err.Error() return } var ids []*string if pid != nil { if *pid != 0 { //销售主管放在三级列表中 ids, err = company.GetGroupIdsByParentId(*pid) if err != nil { fmt.Println(err.Error()) } } else { //销售主管放在二级列表中 ids, err = company.GetGroupIdsByParentId(sysUser.GroupId) if err != nil { fmt.Println(err.Error()) } } } var idSlice []string var sid string for _, id := range ids { idSlice = append(idSlice, *id) } //加入父级groupId if *pid > 0 { idSlice = append(idSlice, strconv.Itoa(*pid)) } else { idSlice = append(idSlice, strconv.Itoa(sysUser.GroupId)) } sid = strings.Join(idSlice, ",") if len(sid) > 0 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id IN (` + sid + `) OR status='流失') ` } permissionCondition += ` AND b.group_id IN (` + sid + `) ` } else { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) OR status='流失') ` } permissionCondition += ` AND b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) ` } } if sysUser.Authority == 4 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id =` + strconv.Itoa(sysUser.GroupId) + ` OR status='流失') ` //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId) //permissionPars = append(permissionPars, sysUser.GroupId) } } } else { //如果没有筛选了流失客户状态,那么需要加客户归属条件加入到查询中去 if sysUser.Authority <= 0 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND b.seller_id=` + strconv.Itoa(sysUser.AdminId) //pars = append(pars, sysUser.AdminId) } permissionCondition += ` AND b.seller_id=` + strconv.Itoa(sysUser.AdminId) //permissionPars = append(permissionPars, sysUser.AdminId) } else { if sysUser.Authority == 1 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND b.department_id=` + strconv.Itoa(sysUser.DepartmentId) //pars = append(pars, sysUser.DepartmentId) } permissionCondition += ` AND b.department_id=` + strconv.Itoa(sysUser.DepartmentId) //permissionPars = append(permissionPars, sysUser.DepartmentId) } if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND b.group_id= ` + strconv.Itoa(sysUser.GroupId) //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId) //permissionPars = append(permissionPars, sysUser.GroupId) } if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP { pid, err := company.GetParentIdFromGroup(sysUser.GroupId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "查询父级id异常" + err.Error() return } var ids []*string if pid != nil { if *pid != 0 { //销售主管放在三级列表中 ids, err = company.GetGroupIdsByParentId(*pid) if err != nil { fmt.Println(err.Error()) } } else { //销售主管放在二级列表中 ids, err = company.GetGroupIdsByParentId(sysUser.GroupId) if err != nil { fmt.Println(err.Error()) } } } var idSlice []string var sid string for _, id := range ids { idSlice = append(idSlice, *id) } //加入父级groupId if *pid > 0 { idSlice = append(idSlice, strconv.Itoa(*pid)) } else { idSlice = append(idSlice, strconv.Itoa(sysUser.GroupId)) } sid = strings.Join(idSlice, ",") if len(sid) > 0 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id IN (` + sid + `) OR status='流失') ` //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id IN (` + sid + `) ` } else { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) OR status='流失') ` //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) ` } } if sysUser.Authority == 4 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND b.group_id =` + strconv.Itoa(sysUser.GroupId) //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId) //permissionPars = append(permissionPars, sysUser.GroupId) } } } } } } //状态控制 if status != "" && status != "全部" { condition += ` AND b.status= '` + status + `'` usercondition += ` AND cp.status= '` + status + `'` } else { condition += ` AND b.status IN ('正式','试用','冻结') ` } // 试用客户标签 if status == "试用" && tryStage > 0 { condition += ` AND b.try_stage= '` + strconv.Itoa(tryStage) + `'` usercondition += ` AND cp.try_stage= '` + strconv.Itoa(tryStage) + `'` } //套餐类型 权益客户除了大套餐就是小套餐 if status == "正式" && tryStage > 0 { if tryStage == 1 { condition += ` AND b.package_type= '` + strconv.Itoa(tryStage) + `'` usercondition += ` AND cp.package_type= '` + strconv.Itoa(tryStage) + `'` } else { condition += ` AND b.package_type!= 1 ` usercondition += ` AND cp.package_type != 1 ` } } if isMaker != 2 { if isMaker == 1 { usercondition += ` AND u.is_maker = 1 ` } else { //部分脏数据 usercondition += ` AND u.is_maker != 1 ` } //parsUser = append(parsUser, isMaker) } if isRegister != 2 { if isRegister == 1 { usercondition += ` AND u.register_time IS NOT NULL` } else { //部分脏数据 usercondition += ` AND u.register_time IS NULL` } //parsUser = append(parsUser, isRegister) } kwywordcondition = condition if keyWord != "" { companyIdStr, err := company.GetCompanyIdByKeyWord(keyWord) if err != nil { br.Msg = "获取客户信息失败" br.ErrMsg = "获取客户信息失败,Err:" + err.Error() return } if companyIdStr != "" { condition += ` AND (a.company_name LIKE '%` + keyWord + `%' OR a.credit_code LIKE '%` + keyWord + `%' AND a.company_id IN(` + companyIdStr + `)) ` } else { condition += ` AND (a.company_name LIKE '%` + keyWord + `%' OR a.credit_code LIKE '%` + keyWord + `%' ) ` } } if label != "" { usercondition += ` AND u.user_label LIKE '%` + label + `%'` } // usercondition += ` AND cp.product_id = 2 AND sr.product_id = 2 ` // 是否关注弘则研究公众号 if isSubscribeCygx == 0 { usercondition += ` AND (u.cygx_subscribe = 0 OR ISNULL(u.cygx_subscribe)) ` } if isSubscribeCygx == 1 { usercondition += ` AND u.cygx_subscribe = 1 ` } condition += ` AND cp.product_id = 2 ` total, err := cygx.GetCompanyListCount(usercondition, keyWord, kwywordcondition, condition, roleTypeCode, pars) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取数据总数失败,Err:" + err.Error() return } if sortType == "" { sqlOrder = ` GROUP by u.user_id ORDER BY c.created_time DESC, u.register_time DESC ` } else { if sortType == "asc" { sqlOrder = ` GROUP by u.user_id ORDER BY u.interaction_num ASC , u.register_time DESC ` } else { sqlOrder = ` GROUP by u.user_id ORDER BY u.interaction_num DESC , u.register_time DESC ` } } list, err := cygx.GetCygxCompanyUserList(usercondition, keyWord, kwywordcondition, condition, roleTypeCode, sqlOrder, parsUser, startSize, pageSize) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } var userIds string var userIdArr []int if list != nil { for k, v := range list { if v.RegisterTime != "" { list[k].IsRegister = true } else { list[k].IsRegister = false } if v.IsShowSeeNum > 0 { list[k].IsShowSee = true } if v.Status == "正式" { if v.PackageType == 1 { list[k].Status += "(大套餐)" } else { list[k].Status += "(小套餐)" } } if v.Status == "试用" { if v.TryStage == 1 { list[k].Status += "(未分类)" } else if v.TryStage == 2 { list[k].Status += "(推进)" } else if v.TryStage == 3 { list[k].Status += "(跟踪)" } else if v.TryStage == 4 { list[k].Status += "(预备)" } } userIds += strconv.Itoa(int(v.UserId)) + "," userIdArr = append(userIdArr, int(v.UserId)) } userIds = strings.TrimRight(userIds, ",") splitList, err := cygx.GetCygxCompanyUserListSplit(userIds) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } //用户备注 userRemarksList, err := cygx.GetUserRemarksListByUserIds(userIds) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } mapUserRemarks := make(map[int]string) for _, v := range userRemarksList { if mapUserRemarks[v.UserId] == "" { mapUserRemarks[v.UserId] = v.Content } } UserRemindListMap := cygxService.GetCygxUserRemindListMap(userIdArr) for k, v := range list { for _, vsplit := range splitList { if vsplit.UserId == v.UserId { list[k].HistoryNum = vsplit.HistoryNum list[k].CountNum = vsplit.CountNum list[k].IndustryFllowNum = vsplit.IndustryFllowNum list[k].DepartmentFollowNum = vsplit.DepartmentFollowNum list[k].KeyWordNum = vsplit.KeyWordNum list[k].OnLineNum = vsplit.OnLineNum list[k].OfficeNum = vsplit.OfficeNum list[k].ChartNum = vsplit.ChartNum list[k].TripNum = vsplit.TripNum list[k].RoadshowVideoNum = vsplit.RoadshowVideoNum list[k].ActivityVideoNum = vsplit.ActivityVideoNum list[k].ActivityVoiceNum = vsplit.ActivityVoiceNum } } if mapUserRemarks[int(v.UserId)] != "" { list[k].Content = mapUserRemarks[int(v.UserId)] } list[k].IsRemind = UserRemindListMap[int(v.UserId)] } for k := range list { list[k].InteractionNum = list[k].HistoryNum + list[k].CountNum + list[k].IndustryFllowNum + list[k].DepartmentFollowNum + list[k].KeyWordNum + list[k].OnLineNum + list[k].OfficeNum + list[k].ChartNum + list[k].TripNum + list[k].RoadshowVideoNum + list[k].ActivityVideoNum + list[k].ActivityVoiceNum } } else { list = make([]*cygx.CygxCompanyUser, 0) } page = paging.GetPaging(currentIndex, pageSize, total) resp := new(cygx.CompanyUserListResp) resp.List = list resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 新增备注接口 // @Description 新增备注 // @Param request body cygx.UserRemarAddReq true "type json string" // @Success 200 新增成功 // @router /user/addRemarks [post] func (this *UserController) Add() { 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.UserRemarAddReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.Content == "" { br.Msg = "请填写内容" return } item := new(cygx.UserRemarks) item.UserId = req.UserId item.AdminId = sysUser.AdminId item.Content = req.Content item.CreateTime = time.Now() err = cygx.AddUserRemarks(item) if err != nil { br.Msg = "新增失败." br.ErrMsg = "新增失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "新增成功" } // @Title 备注列表 // @Description 备注列表接口 // @Param UserId query int true "用户id" // @Success 200 {object} cygx.UserRemarksListResp // @router /user/remark/list [get] func (this *UserController) RemarkList() { 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 } userId, _ := this.GetInt("UserId") if userId < 1 { br.Msg = "用户不存在" return } list, err := cygx.GetUserRemarksList(userId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取备注信息失败,Err:" + err.Error() return } resp := new(cygx.UserRemarksListResp) resp.List = list br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 互动详情table栏 // @Description 互动详情table栏接口 // @Param UserId query int true "用户id" // @Success 200 {object} cygx.UserRemarksListResp // @router /user/table/list [get] func (this *UserController) TableList() { 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 } userId, _ := this.GetInt("UserId") if userId < 1 { br.Msg = "用户不存在" return } wxUser, err := models.GetWxUserByUserId(userId) if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取信息失败" return } comanyDetail, err := company.GetCompanyDetailById(wxUser.CompanyId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } //阅读记录总数 countDetail, err := cygx.GetUserInteractionTableCount(userId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取各个阅读总数失败,Err:" + err.Error() return } List := []*cygx.CygxUserTableRep{{PermissionName: "报告阅读列表", Source: 1, TotalNum: countDetail.HistoryNum}, {PermissionName: "活动互动记录", Source: 2, TotalNum: countDetail.OnLineNum + countDetail.OfficeNum}, {PermissionName: "专项调研", Source: 8, TotalNum: countDetail.TripNum}, {PermissionName: "收藏的报告", Source: 3, TotalNum: countDetail.CountNum}, {PermissionName: "收藏的图表", Source: 4, TotalNum: countDetail.ChartNum}, {PermissionName: "关注的产业", Source: 5, TotalNum: countDetail.IndustryFllowNum}, {PermissionName: "关注的作者", Source: 6, TotalNum: countDetail.DepartmentFollowNum}, {PermissionName: "搜索", Source: 7, TotalNum: countDetail.KeyWordNum}, {PermissionName: "音视频播放", Source: 9, TotalNum: countDetail.RoadshowVideoNum + countDetail.ActivityVideoNum + countDetail.ActivityVoiceNum}, {PermissionName: "首页标签点击", Source: 10, TotalNum: countDetail.TagNum}} resp := new(cygx.CygxUserTableListRep) resp.List = List resp.UserName = wxUser.RealName resp.Mobile = wxUser.Mobile resp.ComapnyName = comanyDetail.CompanyName br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 互动详情 // @Description 互动详情接口 // @Param UserId query int true "用户id" // @Param Source query int true "来源" // @Param IdentityType query int true "身份类型,1:用户,2机构。默认1 (图表分页使用)" // @Param IsMeeting query string true "是否到会 1到会、2未到会" // @Param MeetType query string true "参会方式 1线上,2线下 默认为线上" // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param StartDate query string true "开始时间" // @Param EndDate query string true "结束时间" // @Param KeyWord query string true "搜索关键词" // @Success 200 {object} cygx.UserInteractionListResp // @router /user/interaction/detail [get] func (this *UserController) TableDetail() { 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") var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) userId, _ := this.GetInt("UserId") isMeeting := this.GetString("IsMeeting") meetType := this.GetString("MeetType") startDate := this.GetString("StartDate") endDate := this.GetString("EndDate") keyWord := this.GetString("KeyWord") source, _ := this.GetInt("Source") identityType, _ := this.GetInt("IdentityType") if userId < 1 { br.Msg = "用户不存在" return } // 1.标记用户表 //操作权限校验 var err error wxUser, err := models.GetWxUserByUserId(userId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } mobile := wxUser.Mobile var checkSource bool var MeetingNum int var NoMeetingNum int var list []*cygx.UserInteraction listTable := []*cygx.CygxUserTableRep{{PermissionName: "报告阅读列表", Source: 1, TotalNum: 10}, {PermissionName: "活动互动记录", Source: 2, TotalNum: 10}, {PermissionName: "收藏的报告", Source: 3, TotalNum: 10}, {PermissionName: "收藏图表", Source: 4, TotalNum: 10}, {PermissionName: "关注的产业", Source: 5, TotalNum: 10}, {PermissionName: "关注的作者", Source: 6, TotalNum: 10}, {PermissionName: "搜索", Source: 7, TotalNum: 10}, {PermissionName: "专项调研", Source: 8, TotalNum: 10}, {PermissionName: "音视频播放", Source: 9, TotalNum: 10}, {PermissionName: "首页标签点击", Source: 10, TotalNum: 10}} for _, v := range listTable { if v.Source == source { checkSource = true } } //默认类型1 if !checkSource { source = 1 } fmt.Println(source) var total int var condition string var pars []interface{} if source == 1 { if startDate != "" { startDate += " 00:00:00" condition += ` AND r.create_time >= '` + startDate + `' ` } if endDate != "" { endDate += " 23:59:59" condition += ` AND r.create_time <= '` + endDate + `' ` } if wxUser.Mobile == "" { wxUser.Mobile = wxUser.Email } total, err = cygx.GetCygxArticleHistoryCount(wxUser.Mobile, wxUser.Email, condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户阅读记录总数失败,Err:" + err.Error() return } list, err = cygx.GetCygxArticleHistoryRecordByUserNew(wxUser.Mobile, wxUser.Email, condition, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取用户阅读记录,Err:" + err.Error() return } var articleIds string var articleIdArr []int if len(list) > 0 { articleIds = "" mapAricleId := make(map[int]int) mapAricleIndustrialSubjectName := make(map[int]*cygx.ArticleIndustrialSubjectNameResp) for k, v := range list { if v.ArticleId >= utils.SummaryArticleId { list[k].ArticleType = 1 } else { list[k].ArticleType = 2 } if mapAricleId[v.ArticleId] == 0 { articleIds += strconv.Itoa(v.ArticleId) + "," mapAricleId[v.ArticleId] = v.ArticleId } list[k].RegisterPlatform = cygxService.GetArticleSourcePlatform(v.SourcePlatform) articleIdArr = append(articleIdArr, v.ArticleId) } articleIds = strings.TrimRight(articleIds, ",") listArticleIndustrialSubjectList, err := cygx.GetCygxArticleIndustrialSubjectName(articleIds) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取用户阅读记录,Err:" + err.Error() return } if len(listArticleIndustrialSubjectList) > 0 { for _, v := range listArticleIndustrialSubjectList { mapAricleIndustrialSubjectName[v.ArticleId] = v } for k, v := range list { if mapAricleIndustrialSubjectName[v.ArticleId] != nil { list[k].IndustryName = mapAricleIndustrialSubjectName[v.ArticleId].IndustryName // 产业 list[k].SubjectNameStr = mapAricleIndustrialSubjectName[v.ArticleId].SubjectNameStr // 标的 } } } //行业 mapPerssionName := cygxService.GetCygxArticlePerssionNameListMap(articleIdArr) for k, v := range list { list[k].PermissionName = mapPerssionName[v.ArticleId] } } } else if source == 2 { if mobile != "" { condition = ` AND s.mobile = '` + mobile + `' ` if isMeeting == "1" { condition += ` AND s.is_meeting = 1 ` } if isMeeting == "2" { condition += ` AND s.is_meeting = 0 ` } if meetType == "1" { condition += ` AND t.activity_type = 1 ` } if meetType == "2" { condition += ` AND t.activity_type = 0 ` } if startDate != "" { startDate += " 00:00:00" condition += ` AND a.activity_time >= '` + startDate + `' ` } if endDate != "" { endDate += " 23:59:59" condition += ` AND a.activity_time <= '` + endDate + `' ` } if keyWord != "" { condition += ` AND a.activity_name LIKE '%` + keyWord + `%' ` } total, err = cygx.GetActivityMeetByUserCount(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取参会总数失败,Err:" + err.Error() return } list, err = cygx.GetActivityMeetByUser(condition, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取参会人数列表失败" return } if len(list) > 0 { for k, v := range list { if v.ActivityType == 1 { if v.SignupType == "2" { list[k].InteractionType = "自主拨入" } else { list[k].InteractionType = "预约外呼" } if v.ReminderNum > 0 { list[k].InteractionType += "会议提醒" } } if v.IsMeeting == 0 { list[k].FirstMeetingTime = "" list[k].LastMeetingTime = "" } if v.FirstMeetingTime == "0000-00-00 00:00:00" { list[k].FirstMeetingTime = "" list[k].LastMeetingTime = "" } } } } } else if source == 3 { total, err = cygx.GetCygxArticleCollectCount(userId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户收藏记录总数失败,Err:" + err.Error() return } list, err = cygx.GetCygxArticleCollectByUser(userId, startSize, pageSize, condition) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取用户搜藏记录失败,Err:" + err.Error() return } if len(list) > 0 { for k, v := range list { if v.ArticleId >= utils.SummaryArticleId { list[k].ArticleType = 1 } else { list[k].ArticleType = 2 } } } } else if source == 4 { if identityType == 2 { condition += ` AND r.create_time < date_format(now(),'%Y-%m-%d') ` //过滤当天时间 } condition += ` AND a.publish_status = 1 AND user_id = ` + strconv.Itoa(userId) var err error total, err = cygx.GetChartCountByUser(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取总数失败,Err:" + err.Error() return } list, err = cygx.GetChartListCollectionWithCygx(condition, startSize, pageSize) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } for k, v := range list { if v.PtagName != "" { list[k].CtagNamePc = v.PtagName } if v.CtagName != "" { list[k].CtagNamePc += "," + v.CtagName } if v.PtagNameTwo != "" { list[k].CtagNamePc += "," + v.PtagNameTwo } if v.CtagNameTwo != "" { list[k].CtagNamePc += "," + v.CtagNameTwo } } } else if source == 5 { total, err = cygx.GetCygxIndustryFllowCount(userId) if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取用户关注总数失败" return } list, err = cygx.GetCygxIndustryFllowByUser(userId, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取用户关注总数失败" return } } else if source == 6 { total, err = cygx.GetCygArticleDepartmentFollowCount(userId) if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取关注作者总数失败" return } list, err = cygx.GetCygArticleDepartmentFollowByUser(userId, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取关注作者列表失败" return } if len(list) > 0 { for k, v := range list { var condition string var pars []interface{} condition += ` WHERE art.source = 1 AND art.is_summary = 1 AND art.department_id = ` + strconv.Itoa(v.DepartmentId) listArt, errList := cygx.GetSummaryManageList(condition, pars, 0, 20) if errList != nil && errList.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + errList.Error() return } if len(listArt) > 0 { mapIndustryName := make(map[string]string) mapSubjectName := make(map[string]string) var articleIdStr string for _, vArt := range listArt { if vArt.IndustryName != "" && mapIndustryName[vArt.IndustryName] == "" { list[k].IndustryName += vArt.IndustryName + "/" mapIndustryName[vArt.IndustryName] = vArt.IndustryName } articleIdStr += strconv.Itoa(vArt.ArticleId) + "," } list[k].IndustryName = strings.TrimRight(list[k].IndustryName, "/") articleIdStr = strings.TrimRight(articleIdStr, ",") listSubject, err := cygx.GetArticleSubjectList(articleIdStr) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if len(listSubject) > 0 { for _, vSub := range listSubject { if vSub.SubjectName != "" && mapSubjectName[vSub.SubjectName] == "" { list[k].SubjectNameStr += vSub.SubjectName + "/" mapSubjectName[vSub.SubjectName] = vSub.SubjectName } } list[k].SubjectNameStr = strings.TrimRight(list[k].SubjectNameStr, "/") } } } } } else if source == 7 { total, err = cygx.GetCygxSearchKeyWordCount(userId) if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取搜索记录失败" return } list, err = cygx.GetCygxSearchKeyWordByUser(userId, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取搜索记录列表失败" return } } else if source == 8 { condition += ` AND h.user_id = ? ` pars = append(pars, userId) total, err = cygx.GetCygxActivitySpecialTripCount(condition, pars) if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取搜索记录失败" return } list, err = cygx.GetCygxActivitySpecialTripByUser(userId, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取搜索记录列表失败" return } } else if source == 9 { total, err = cygx.GetCygxRoadshowCount(userId) if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取搜索记录失败" return } list, err = cygx.GetCygxRoadshowByUser(userId, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取搜索记录列表失败" return } } else if source == 10 { //标签点击记录 total, err = cygx.GetCygxTagHistoryCountByUserId(userId) if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取搜索记录失败" return } list, err = cygx.GetCygxTagHistoryByUserId(userId, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取搜索记录列表失败" return } } page := paging.GetPaging(currentIndex, pageSize, total) resp := new(cygx.UserInteractionListResp) if len(list) == 0 { list = make([]*cygx.UserInteraction, 0) } resp.MeetingNum = MeetingNum resp.NoMeetingNum = NoMeetingNum resp.List = list resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 获取用户标签详情 // @Description 获取用户标签详情接口 // @Param UserId query int true "用户id" // @Success 200 {object} cygx.UserLabel // @router /user/label/detail [get] func (this *UserController) LabelDetail() { 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 } userId, _ := this.GetInt("UserId") if userId < 1 { br.Msg = "用户不存在" return } wxUser, err := models.GetWxUserByUserId(userId) if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取信息失败" return } if userId > 0 { resp := new(cygx.UserLabel) resp.Label = wxUser.UserLabel br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp return } list, err := cygx.GetCygxCompanyUserListSplit(strconv.Itoa(userId)) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } mapLabels := make(map[string]string) var labelsListStr []*cygx.UserLabel mapActivityLabels := make(map[string]string) for k := range list { labels := list[k].Labels labelsList := strings.Split(labels, ",") for _, vL := range labelsList { if mapLabels[vL] == "" && vL != "" { mapLabels[vL] = vL item := new(cygx.UserLabel) item.Label = vL labelsListStr = append(labelsListStr, item) } } } dateTime := time.Now().AddDate(0, -3, 0).Format(utils.FormatDate) listArticlePv, err := cygx.GetArticlePvCount(wxUser.Mobile, wxUser.Email, dateTime) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } var articleIds string mapArticleIdLabelTotal := make(map[string]int) mapArticleIdPv := make(map[int]int) if len(listArticlePv) > 0 { for _, v := range listArticlePv { articleIds += strconv.Itoa(v.ArticleId) + "," mapArticleIdPv[v.ArticleId] = v.Pv } articleIds = strings.TrimRight(articleIds, ",") //产业、标的标签 listLabelName, err := cygx.GetArticleGroupyIndustryName(articleIds) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } if len(listLabelName) > 0 { for _, v := range listLabelName { labelsIndustryList := strings.Split(v.IndustryName, "/") labelsSubjectList := strings.Split(v.SubjectName, "/") //添加产业统计 if len(labelsIndustryList) > 0 { for _, vIn := range labelsIndustryList { if mapActivityLabels[vIn] != "" { mapArticleIdLabelTotal[vIn] += mapArticleIdPv[v.ArticleId] } else { mapArticleIdLabelTotal[vIn] = mapArticleIdPv[v.ArticleId] mapActivityLabels[vIn] = vIn } } } if len(labelsSubjectList) > 0 { //添加标的统计 for _, vIn := range labelsSubjectList { if mapActivityLabels[vIn] != "" { mapArticleIdLabelTotal[vIn] += mapArticleIdPv[v.ArticleId] } else { mapArticleIdLabelTotal[vIn] = mapArticleIdPv[v.ArticleId] mapActivityLabels[vIn] = vIn } } } } } } articleIds, err = cygx.GetCygxArticleCollectId(userId, dateTime) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取用户搜藏记录失败" return } if articleIds != "" { //产业、标的标签 listLabelName, err := cygx.GetArticleGroupyIndustryName(articleIds) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } if len(listLabelName) > 0 { for _, v := range listLabelName { labelsIndustryList := strings.Split(v.IndustryName, "/") labelsSubjectList := strings.Split(v.SubjectName, "/") //添加产业统计 if len(labelsIndustryList) > 0 { for _, vIn := range labelsIndustryList { if mapActivityLabels[vIn] != "" { mapArticleIdLabelTotal[vIn] += 1 } else { mapArticleIdLabelTotal[vIn] = 1 mapActivityLabels[vIn] = vIn } } } if len(labelsSubjectList) > 0 { //添加标的统计 for _, vIn := range labelsSubjectList { if mapActivityLabels[vIn] != "" { mapArticleIdLabelTotal[vIn] += 1 } else { mapArticleIdLabelTotal[vIn] = 1 mapActivityLabels[vIn] = vIn } } } } } } //活动标签计算 listActivityPv, err := cygx.GetActivitySignCount(wxUser.Mobile, dateTime) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } if len(listActivityPv) > 0 { for _, v := range listActivityPv { labelsList := strings.Split(v.Label, "-") for _, v2 := range labelsList { labelsListSon := strings.Split(v2, "/") for _, v3 := range labelsListSon { if mapActivityLabels[v3] != "" { mapArticleIdLabelTotal[v3] += 1 } else { mapArticleIdLabelTotal[v3] = 1 mapActivityLabels[v3] = v3 } } } } } //会议提醒部分标签 listActivityPvByReminder, err := cygx.GetActivityMeetingReminder(wxUser.Mobile, dateTime) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } if len(listActivityPvByReminder) > 0 { for _, v := range listActivityPvByReminder { labelsList := strings.Split(v.Label, "-") for _, v2 := range labelsList { labelsListSon := strings.Split(v2, "/") for _, v3 := range labelsListSon { if mapActivityLabels[v3] != "" { mapArticleIdLabelTotal[v3] += 1 } else { mapArticleIdLabelTotal[v3] = 1 mapActivityLabels[v3] = v3 } } } } } //对标签数量进行排序 type KvPair struct { Key string Val int } tmpList := make([]KvPair, 0) for k, v := range mapArticleIdLabelTotal { tmpList = append(tmpList, KvPair{Key: k, Val: v}) } sort.Slice(tmpList, func(i, j int) bool { return tmpList[i].Val > tmpList[j].Val // 降序 }) for _, v := range tmpList { if v.Key != "" { mapLabels[v.Key] = v.Key item := new(cygx.UserLabel) item.Label = v.Key labelsListStr = append(labelsListStr, item) } } var labelNew string for _, v := range labelsListStr { labelNew += v.Label + "," } labelNew = strings.TrimRight(labelNew, ",") resp := new(cygx.UserLabel) resp.Label = labelNew br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 状态搜索栏 // @Description 状态搜索栏接口 // @Success 200 {object} cygx.CygxUserTableStatusListRep // @router /user/status/table [get] func (this *UserController) StatusTable() { 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 } listType := []*cygx.CygxTryStageRep{{Name: "大套餐", TryStage: 1}, {Name: "小套餐", TryStage: 2}} listStatus := []*cygx.CygxTryStageRep{{Name: "未分类", TryStage: 1}, {Name: "推进", TryStage: 2}, {Name: "跟踪", TryStage: 3}, {Name: "预备", TryStage: 4}} List := []*cygx.CygxUserTableStatusRep{{Name: "正式", List: listType, TryStage: "正式"}, {Name: "试用", List: listStatus, TryStage: "试用"}, {Name: "冻结", List: []*cygx.CygxTryStageRep{}, TryStage: "冻结"}} resp := new(cygx.CygxUserTableStatusListRep) resp.List = List br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 用户互动量 // @Description 状态搜索栏接口 // @Param UserId query int true "用户id" // @Success 200 {object} cygx.CygxUserTableStatusListRep // @router /user/interactionNum [get] func (this *UserController) InteractionNum() { 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 } userId, _ := this.GetInt("UserId") if userId < 1 { br.Msg = "用户不存在" return } wxUser, err := models.GetWxUserByUserId(userId) if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取信息失败" return } cp, err := company.GetCompanyProductByCompanyIdAndProductId(wxUser.CompanyId, 2) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取客户信息失败" br.ErrMsg = "获取客户信息失败,Err:" + err.Error() return } resp := new(cygx.CygxCygxInteractionNumRespListResp) for i := 0; i < 4; i++ { item := new(cygx.CygxInteractionNumResp) if cp != nil && cp.Status == "正式" { //阅读记录总数 var startDate, endDate string item.DateTime = time.Now().AddDate(0, -i, 0).Format("2006.01") startDate = utils.GetOneMonthFirstDay(time.Now().AddDate(0, -i, 0)).Format(utils.FormatDate) endDate = utils.GetOneMonthLastDay(time.Now().AddDate(0, -i, 0)).Format(utils.FormatDate) countDetail, err := cygx.GetCompanyInteractionTableCountBytime(wxUser.CompanyId, startDate, endDate) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取各个阅读总数失败,Err:" + err.Error() return } item.InteractionNum = countDetail.HistoryNum + countDetail.CountNum + countDetail.IndustryFllowNum + countDetail.DepartmentFollowNum + countDetail.KeyWordNum + countDetail.OnLineNum + countDetail.OfficeNum + countDetail.ChartNum } else { var weekStr string switch i { case 0: weekStr = "本周(" case 1: weekStr = "上周(" case 2: weekStr = "上两周(" case 3: weekStr = "上三周(" } item.DateTime = weekStr + utils.GetNowWeekMonday().AddDate(0, 0, -i*7).Format("01.02") + "~" + utils.GetNowWeekMonday().AddDate(0, 0, -i*7+6).Format("01.02") + ")" var startDate, endDate string startDate = utils.GetNowWeekMonday().AddDate(0, 0, -i*7).Format(utils.FormatDate) endDate = utils.GetNowWeekMonday().AddDate(0, 0, -i*7+6).Format(utils.FormatDate) countDetail, err := cygx.GetCompanyInteractionTableCountBytime(wxUser.CompanyId, startDate, endDate) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取各个阅读总数失败,Err:" + err.Error() return } item.InteractionNum = countDetail.HistoryNum + countDetail.CountNum + countDetail.IndustryFllowNum + countDetail.DepartmentFollowNum + countDetail.KeyWordNum + countDetail.OnLineNum + countDetail.OfficeNum + countDetail.ChartNum + countDetail.TripNum + countDetail.RoadshowVideoNum + countDetail.ActivityVideoNum + countDetail.ActivityVoiceNum } resp.List = append(resp.List, item) } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 标签检索用户相关互动 // @Description 标签检索用户相关互动接口 // @Param UserId query int true "用户id" // @Param KeyWord query string true "搜索关键词" // @Param Source query int true "来源 1:报告阅读,2:报告收藏,3:相关活动,4:专项产业调研" // @Success 200 {object} cygx.UserInteractionrelevantListResp // @router /user/interaction/relevant [get] func (this *UserController) InteractionRelevant() { 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 } userId, _ := this.GetInt("UserId") source, _ := this.GetInt("Source") keyWord := this.GetString("KeyWord") if userId < 1 { br.Msg = "用户不存在" return } wxUser, err := models.GetWxUserByUserId(userId) if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取信息失败" return } managementIds, err := cygx.GetManagementIdsByName(keyWord) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取产业信息失败,Err:" + err.Error() return } subjectIds, err := cygx.GetIndustrialSubjectIdsByName(keyWord) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取标的信息失败,Err:" + err.Error() return } resp := new(cygx.UserInteractionrelevantListResp) var condition string if source == 1 || source == 2 { var articleIds string if managementIds != "" || subjectIds != "" { var articleIdmanagement string var articleIdsubject string if managementIds != "" { articleIdmanagement, err = cygx.GetArticleIdsByIndustrialManagementId(managementIds) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取活动ID信息失败,Err:" + err.Error() return } } if subjectIds != "" { articleIdsubject, err = cygx.GetArticleIdsBySubjectId(subjectIds) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取活动ID信息失败,Err:" + err.Error() return } } if articleIdmanagement != "" && articleIdsubject != "" { articleIds = articleIdmanagement + "," + articleIdsubject } else if articleIdmanagement != "" && articleIdsubject == "" { articleIds = articleIdmanagement } else if articleIdmanagement == "" && articleIdsubject != "" { articleIds = articleIdsubject } } else { matchDetail, err := cygx.GetCygxReportMappingCygxDetailByName(keyWord) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "GetCygxReportMappingCygxDetail,Err:" + err.Error() return } if matchDetail != nil { var condition string var pars []interface{} condition = ` AND id_cygx = ? ` pars = append(pars, matchDetail.Id) listGroup, err := cygx.GetCygxReportMappingGroupList(condition, pars, 0, 999) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } var categoryIds []int for _, v := range listGroup { categoryIds = append(categoryIds, v.CategoryIdCelue) } pars = make([]interface{}, 0) condition = ` AND category_id IN (` + utils.GetOrmInReplace(len(categoryIds)) + `)` pars = append(pars, categoryIds) listArticle, err := cygx.GetArticlList(condition, pars, 0, 999) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } for _, v := range listArticle { articleIds += strconv.Itoa(v.ArticleId) + "," } articleIds = strings.TrimRight(articleIds, ",") } } if articleIds != "" { condition = ` AND r.article_id IN (` + articleIds + `)` if source == 1 { condition += ` AND r.stop_time > 4 ` resp.List, err = cygx.GetCygxArticleHistoryRecordByUser(wxUser.Mobile, wxUser.Email, condition, 0, 0) } else { resp.List, err = cygx.GetCygxArticleCollectByUser(userId, 0, 0, condition) } if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取用户阅读记录" return } if len(resp.List) > 0 { for k, v := range resp.List { resp.List[k].RegisterPlatform = cygxService.GetArticleSourcePlatform(v.SourcePlatform) if v.ArticleId >= utils.SummaryArticleId { resp.List[k].ArticleType = 1 } else { resp.List[k].ArticleType = 2 } } } } } else if source == 3 { activityIdByLabel, err := cygx.GetactivityIdsByLabel(keyWord) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取活动ID信息失败,Err:" + err.Error() return } activityId := activityIdByLabel if activityId != "" { condition = ` AND s.is_meeting = 1 AND s.activity_id IN (` + activityId + `) AND s.mobile = ` + wxUser.Mobile resp.List, err = cygx.GetActivityMeetByUser(condition, 0, 0) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取用户搜藏记录失败,Err:" + err.Error() return } } } else if source == 4 { activityIdByLabel, err := cygx.GetactivitySpecilIdsByLabel(keyWord) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取活动ID信息失败,Err:" + err.Error() return } activityId := activityIdByLabel if activityId != "" { condition = ` AND s.is_meeting = 1 AND s.activity_id IN (` + activityId + `) AND s.mobile = ` + wxUser.Mobile resp.List, err = cygx.GetActivitySpecialMeetByUser(condition, 0, 0) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取用户搜藏记录失败,Err:" + err.Error() return } } } if len(resp.List) == 0 { resp.List = make([]*cygx.UserInteraction, 0) } resp.IndustryName = keyWord if managementIds != "" { count, err := cygx.GetCygxIndustryFllowCountByUser(userId, managementIds) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户是否关注失败,Err:" + err.Error() return } if count > 0 { resp.IsFllow = true } } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 用户相关互动下载 // @Description 用户相关互动下载接口 // @Param UserId query int true "用户id" // @Param Source query int true "来源 报告阅读列表: 1, 活动互动记录: 2" // @Param IsMeeting query string true "是否到会 1到会、2未到会" // @Param MeetType query string true "参会方式 1线上,2线下 默认为线上" // @Param StartDate query string true "开始时间" // @Param EndDate query string true "结束时间" // @Param KeyWord query string true "搜索关键词" // @Success 200 {object} cygx.CygxUserTableStatusListRep // @router /user/export/interaction [get] func (this *UserController) ExportInteraction() { 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 } userId, _ := this.GetInt("UserId") isMeeting := this.GetString("IsMeeting") meetType := this.GetString("MeetType") startDate := this.GetString("StartDate") endDate := this.GetString("EndDate") keyWord := this.GetString("KeyWord") source, _ := this.GetInt("Source") if userId < 1 { br.Msg = "用户不存在" return } wxUser, err := models.GetWxUserByUserId(userId) if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取信息失败" return } mobile := wxUser.Mobile var list []*cygx.UserInteraction var condition string var sheetName string if source == 1 { sheetName = "报告阅读列表" if startDate != "" { startDate += " 00:00:00" condition += ` AND r.create_time >= '` + startDate + `' ` } if endDate != "" { endDate += " 23:59:59" condition += ` AND r.create_time <= '` + endDate + `' ` } list, err = cygx.GetCygxArticleHistoryRecordByUser(wxUser.Mobile, wxUser.Email, condition, 0, 0) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取用户阅读记录,Err:" + err.Error() return } if len(list) > 0 { for k, v := range list { if v.ArticleId >= utils.SummaryArticleId { list[k].ArticleType = 1 } else { list[k].ArticleType = 2 } if list[k].PermissionName == "" { list[k].PermissionName = v.CategoryName } } } } else if source == 2 { sheetName = "到会管理名单" if mobile != "" { condition = ` AND s.mobile = '` + mobile + `' ` if isMeeting == "1" { condition += ` AND s.is_meeting = 1 ` } if isMeeting == "2" { condition += ` AND s.is_meeting = 0 ` } if meetType == "1" { condition += ` AND t.activity_type = 1 ` } if meetType == "2" { condition += ` AND t.activity_type = 0 ` } if startDate != "" { startDate += " 00:00:00" condition += ` AND a.activity_time >= '` + startDate + `' ` } if endDate != "" { endDate += " 23:59:59" condition += ` AND a.activity_time <= '` + endDate + `' ` } if keyWord != "" { condition += ` AND a.activity_name LIKE '%` + keyWord + `%' ` } list, err = cygx.GetActivityMeetByUser(condition, 0, 0) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取参会人数列表失败" return } if len(list) > 0 { for k, v := range list { if v.ActivityType == 1 { if v.SignupType == "2" { list[k].InteractionType = "自主拨入" } else { list[k].InteractionType = "预约外呼" } if v.ReminderNum > 0 { list[k].InteractionType += ",会议提醒" } } } } } } //创建excel dir, err := os.Executable() exPath := filepath.Dir(dir) downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx" xlsxFile := xlsx.NewFile() if err != nil { br.Msg = "生成文件失败" br.ErrMsg = "生成文件失败" return } style := xlsx.NewStyle() alignment := xlsx.Alignment{ Horizontal: "center", Vertical: "center", WrapText: true, } style.Alignment = alignment style.ApplyAlignment = true sheet, err := xlsxFile.AddSheet(sheetName) if err != nil { br.Msg = "新增Sheet失败" br.ErrMsg = "新增Sheet失败,Err:" + err.Error() return } if source == 1 { //标头 rowTitle := sheet.AddRow() cellA := rowTitle.AddCell() cellA.Value = "报告标题" cellB := rowTitle.AddCell() cellB.Value = "所属行业" cellC := rowTitle.AddCell() cellC.Value = "所属产业" cellD := rowTitle.AddCell() cellD.Value = "关联标的" cellE := rowTitle.AddCell() cellE.Value = "发布时间" cellF := rowTitle.AddCell() cellF.Value = "阅读时间" cellG := rowTitle.AddCell() cellG.Value = "阅读时长" for _, item := range list { row := sheet.AddRow() cellA := row.AddCell() cellA.Value = item.Title cellB := row.AddCell() cellB.Value = item.PermissionName cellC := row.AddCell() cellC.Value = item.IndustryName cellD := row.AddCell() cellD.Value = item.SubjectNameStr cellE := row.AddCell() cellE.Value = item.PublishDate cellF := row.AddCell() cellF.Value = item.CreateTime cellG := row.AddCell() cellG.Value = item.StopTime } } else { //标头 rowTitle := sheet.AddRow() cellA := rowTitle.AddCell() cellA.Value = "活动名称" cellB := rowTitle.AddCell() cellB.Value = "所属行业" cellC := rowTitle.AddCell() cellC.Value = "活动类型" cellD := rowTitle.AddCell() cellD.Value = "活动主题" cellE := rowTitle.AddCell() cellE.Value = "活动时间" cellF := rowTitle.AddCell() cellF.Value = "是否到会" cellG := rowTitle.AddCell() cellG.Value = "首次入会时间" cellH := rowTitle.AddCell() cellH.Value = "最后退出时间" cellI := rowTitle.AddCell() cellI.Value = "参与总时长" cellJ := rowTitle.AddCell() cellJ.Value = "参会方式" cellK := rowTitle.AddCell() cellK.Value = "参会权鉴" cellL := rowTitle.AddCell() cellL.Value = "参会状态" for _, item := range list { row := sheet.AddRow() cellA := row.AddCell() cellA.Value = item.ActivityName cellB := row.AddCell() cellB.Value = item.PermissionName cellC := row.AddCell() cellC.Value = item.ActivityTypeName cellD := row.AddCell() cellD.Value = item.Label cellE := row.AddCell() cellE.Value = item.ActivityTime cellF := row.AddCell() if item.IsMeeting == 1 { cellF.Value = "到会" } else { cellF.Value = "未到会" } cellG := row.AddCell() cellG.Value = item.FirstMeetingTime cellH := row.AddCell() cellH.Value = item.LastMeetingTime cellI := row.AddCell() cellI.Value = item.Duration cellJ := row.AddCell() cellJ.Value = item.LastMeetingTime cellK := row.AddCell() cellK.Value = item.MeetingTypeStr cellL := row.AddCell() cellL.Value = item.MeetingStatusStr } } err = xlsxFile.Save(downLoadnFilePath) if err != nil { br.Msg = "保存文件失败" br.ErrMsg = "保存文件失败" return } randStr := time.Now().Format(utils.FormatDateTimeUnSpace) downloadFileName := wxUser.RealName + randStr + ".xlsx" this.Ctx.Output.Download(downLoadnFilePath, downloadFileName) defer func() { os.Remove(downLoadnFilePath) }() br.Ret = 200 br.Success = true br.Msg = "获取成功" } // @Title 机构互动详情table栏 // @Description 互动详情table栏接口 // @Param CompanyId query int true "公司ID" // @Success 200 {object} cygx.UserRemarksListResp // @router /user/company/table/list [get] func (this *UserController) CompanyTableList() { 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 < 1 { br.Msg = "机构不存在" return } comanyDetail, err := company.GetCompanyDetailById(companyId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } condition := ` AND r.company_id IN ( ` + strconv.Itoa(companyId) + ` ) AND r.create_time < date_format(now(),'%Y-%m-%d') ` //过滤当天时间 totalEs, _, err := services.SearcCygxArticleHistoryData(utils.IndexNameArticleHistory, "", "", "", strconv.Itoa(companyId), 0, 0) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取Es文章阅读数量失败,Err:" + err.Error() return } historyNum := int(totalEs) //historyNum, err := cygx.GetCygxArticleHistoryCountByCompany(condition) //获取参会总数 activityNum, err := cygx.GetActivityMeetByCompanyCount(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取参会总数失败,Err:" + err.Error() return } //获取用户收藏记录总数 articleCollect, err := cygx.GetCygxArticleCollectCountByCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户收藏记录总数失败,Err:" + err.Error() return } //获取用户关注总数 industryFllowNum, err := cygx.GetCygxIndustryFllowCountByCompany(condition) if err != nil { br.Msg = "获取信息失败 " br.ErrMsg = "获取用户关注总数失败,Err:" + err.Error() return } //获取关注作者总数 departmentFollowNum, err := cygx.GetCygArticleDepartmentFollowCountByCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取关注作者总数失败,Err:" + err.Error() return } //获取搜索记录 keyWordNum, err := cygx.GetCygxSearchKeyWordCountBuCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录失败,Err:" + err.Error() return } chartNum, err := cygx.GetChartCountByUserMobile(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取总数失败,Err:" + err.Error() return } triptotal, err := cygx.GetCygxActivitySpecialTripCountByCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录失败,Err:" + err.Error() return } roadshowTotal, err := cygx.GetCygxRoadshowCountByCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录失败,Err:" + err.Error() return } tagNum, err := cygx.GetCygxTagHistoryCountByCompanyId(companyId, "") if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取搜索记录失败" return } List := []*cygx.CygxUserTableRep{{PermissionName: "报告阅读列表", Source: 1, TotalNum: historyNum}, {PermissionName: "活动互动记录", Source: 2, TotalNum: activityNum}, {PermissionName: "专项调研", Source: 8, TotalNum: triptotal}, {PermissionName: "收藏的报告", Source: 3, TotalNum: articleCollect}, {PermissionName: "收藏图表", Source: 4, TotalNum: chartNum}, {PermissionName: "关注的产业", Source: 5, TotalNum: industryFllowNum}, {PermissionName: "关注的作者", Source: 6, TotalNum: departmentFollowNum}, {PermissionName: "搜索", Source: 7, TotalNum: keyWordNum}, {PermissionName: "音视频播放", Source: 9, TotalNum: roadshowTotal}, {PermissionName: "首页标签点击", Source: 10, TotalNum: tagNum}} resp := new(cygx.CygxUserTableListRep) resp.List = List resp.ComapnyName = comanyDetail.CompanyName br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 机构互动详情 // @Description 机构互动详情接口 // @Param CompanyId query int true "公司ID" // @Param Source query int true "来源" // @Param IsMeeting query string false "是否到会 1到会、2未到会" // @Param MeetType query string false "参会方式 1线上,2线下 默认为线上" // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param StartDate query string false "开始时间" // @Param EndDate query string false "结束时间" // @Param KeyWord query string false "搜索关键词" // @Param ActivityName query string false "活动名称" // @Success 200 {object} cygx.UserInteractionListResp // @router /user/company/interaction/detail [get] func (this *UserController) CompanyTableDetail() { 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") var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) companyId, _ := this.GetInt("CompanyId") isMeeting := this.GetString("IsMeeting") meetType := this.GetString("MeetType") startDate := this.GetString("StartDate") endDate := this.GetString("EndDate") keyWord := this.GetString("KeyWord") activityName := this.GetString("ActivityName") source, _ := this.GetInt("Source") if companyId < 1 { br.Msg = "用户不存在" return } // 1.标记用户表 //操作权限校验 resp := new(cygx.UserInteractionListResp) var err error var list []*cygx.UserInteraction var total int var condition string condition += ` AND r.company_id = ` + strconv.Itoa(companyId) + ` AND r.create_time < '` + time.Now().Format(utils.FormatDate) + `' ` if keyWord != "" { //condition += ` AND r.mobile IN (SELECT mobile FROM wx_user WHERE mobile LIKE '%` + keyWord + `%' OR email LIKE '%` + keyWord + `%' OR real_name LIKE '%` + keyWord + `%')` condition += ` AND ( r.mobile LIKE '%` + keyWord + `%' OR r.email LIKE '%` + keyWord + `%' OR r.real_name LIKE '%` + keyWord + `%')` } if source == 1 { if startDate != "" { startDate += " 00:00:00" condition += ` AND r.create_time >= '` + startDate + `' ` } if endDate != "" { endDate += " 23:59:59" condition += ` AND r.create_time <= '` + endDate + `' ` } //fmt.Println("es 搜索") totalEs, esList, err := services.SearcCygxArticleHistoryData(utils.IndexNameArticleHistory, keyWord, startDate, endDate, strconv.Itoa(companyId), startSize, pageSize) var articleIds string if len(esList) > 0 { articleIdMap := make(map[int]int) for _, v := range esList { if _, ok := articleIdMap[v.Id]; !ok { articleIds += strconv.Itoa(v.Id) + "," articleIdMap[v.Id] = v.Id } } } articleIds = strings.TrimRight(articleIds, ",") if articleIds != "" { condition = ` AND r.id IN (` + articleIds + `) ` } //condition += ` AND r.create_time < date_format(now(),'%Y-%m-%d') ` //过滤当天时间 //total, err = cygx.GetCygxArticleHistoryCountByCompany(condition) //if err != nil { // br.Msg = "获取信息失败" // br.ErrMsg = "获取用户阅读记录总数失败,Err:" + err.Error() // return //} total = int(totalEs) list, err = cygx.GetCygxArticleHistoryRecordByCompany(condition, 0, 0) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取用户阅读记录,Err:" + err.Error() return } if len(list) > 0 { articleIds = "" mapAricleId := make(map[int]int) mapAricleIndustrialSubjectName := make(map[int]*cygx.ArticleIndustrialSubjectNameResp) for k, v := range list { if v.ArticleId >= utils.SummaryArticleId { list[k].ArticleType = 1 } else { list[k].ArticleType = 2 } if list[k].PermissionName == "" { list[k].PermissionName = v.CategoryName } if mapAricleId[v.ArticleId] == 0 { articleIds += strconv.Itoa(v.ArticleId) + "," mapAricleId[v.ArticleId] = v.ArticleId } list[k].RegisterPlatform = cygxService.GetArticleSourcePlatform(v.SourcePlatform) } articleIds = strings.TrimRight(articleIds, ",") if articleIds != "" { listArticleIndustrialSubjectList, err := cygx.GetCygxArticleIndustrialSubjectName(articleIds) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取用户阅读记录,Err:" + err.Error() return } if len(listArticleIndustrialSubjectList) > 0 { for _, v := range listArticleIndustrialSubjectList { mapAricleIndustrialSubjectName[v.ArticleId] = v } for k, v := range list { if mapAricleIndustrialSubjectName[v.ArticleId] != nil { list[k].IndustryName = mapAricleIndustrialSubjectName[v.ArticleId].IndustryName list[k].SubjectNameStr = mapAricleIndustrialSubjectName[v.ArticleId].SubjectNameStr } } } } } } else if source == 2 { if isMeeting == "1" { condition += ` AND r.is_meeting = 1 ` } if isMeeting == "2" { condition += ` AND r.is_meeting = 0 ` } if meetType == "1" { condition += ` AND t.activity_type = 1 ` } if meetType == "2" { condition += ` AND t.activity_type = 0 ` } if startDate != "" { startDate += " 00:00:00" condition += ` AND a.activity_time >= '` + startDate + `' ` } if endDate != "" { endDate += " 23:59:59" condition += ` AND a.activity_time <= '` + endDate + `' ` } if activityName != "" { condition += ` AND a.activity_name LIKE '%` + activityName + `%' ` } //condition += ` AND r.create_time < date_format(now(),'%Y-%m-%d') ` //过滤当天时间 total, err = cygx.GetActivityMeetByCompanyCount(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取参会总数失败,Err:" + err.Error() return } list, err = cygx.GetActivityMeetByCompany(condition, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取参会人数列表失败" return } if len(list) > 0 { for k, v := range list { if v.ActivityType == 1 { if v.SignupType == "2" { list[k].InteractionType = "自主拨入" } else { list[k].InteractionType = "预约外呼" } if v.ReminderNum > 0 { list[k].InteractionType += ",会议提醒" } } if v.IsMeeting == 0 || v.FirstMeetingTime == "0000-00-00 00:00:00" { list[k].FirstMeetingTime = "" list[k].LastMeetingTime = "" } if v.FirstMeetingTime == "0000-00-00 00:00:00" { list[k].FirstMeetingTime = "" list[k].LastMeetingTime = "" } } } } else if source == 3 { total, err = cygx.GetCygxArticleCollectCountByCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户收藏记录总数失败,Err:" + err.Error() return } list, err = cygx.GetCygxArticleCollectByCompany(startSize, pageSize, condition) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取用户搜藏记录失败,Err:" + err.Error() return } if len(list) > 0 { for k, v := range list { if v.ArticleId >= utils.SummaryArticleId { list[k].ArticleType = 1 } else { list[k].ArticleType = 2 } } } } else if source == 4 { //condition += ` AND r.company_id = ` + strconv.Itoa(companyId) + ` AND r.create_time < date_format(now(),'%Y-%m-%d')` //过滤当天时间 list, err = cygx.GetChartCollectList(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } if len(list) > 0 { for k, v := range list { var err error condition = ` AND a.publish_status = 1 AND r.company_id = ` + strconv.Itoa(companyId) + ` AND r.mobile = ` + v.Mobile + ` AND r.create_time < date_format(now(),'%Y-%m-%d')` //过滤当天时间 total, err = cygx.GetChartCountByUserMobile(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取总数失败,Err:" + err.Error() return } listChart, err := cygx.GetChartListCollectionWithCygxByMobile(condition, 0, 18) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } for k, vChart := range listChart { if vChart.PtagName != "" { listChart[k].CtagNamePc = vChart.PtagName } if vChart.CtagName != "" { listChart[k].CtagNamePc += "," + vChart.CtagName } if vChart.PtagNameTwo != "" { listChart[k].CtagNamePc += "," + vChart.PtagNameTwo } if vChart.CtagNameTwo != "" { listChart[k].CtagNamePc += "," + vChart.CtagNameTwo } } pageChart := paging.GetPaging(currentIndex, 18, total) list[k].ListChart = listChart list[k].Paging = pageChart list[k].IsEnd = pageChart.IsEnd list[k].CurrentIndex = pageChart.CurrentIndex } } } else if source == 5 { condition += ` AND r.create_time < date_format(now(),'%Y-%m-%d') ` //过滤当天时间 total, err = cygx.GetCygxIndustryFllowCountByCompany(condition) if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取用户关注总数失败" return } list, err = cygx.GetCygxIndustryFllowByCompany(condition, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取用户关注总数失败" return } } else if source == 6 { condition += ` AND r.create_time < date_format(now(),'%Y-%m-%d') ` //过滤当天时间 total, err = cygx.GetCygArticleDepartmentFollowCountByCompany(condition) if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取关注作者总数失败" return } list, err = cygx.GetCygArticleDepartmentFollowByCompany(condition, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取关注作者列表失败" return } if len(list) > 0 { for k, v := range list { var conditionDepartment string var pars []interface{} conditionDepartment += ` WHERE art.source = 1 AND art.is_summary = 1 AND art.department_id = ` + strconv.Itoa(v.DepartmentId) listArt, errList := cygx.GetSummaryManageList(conditionDepartment, pars, 0, 20) if errList != nil && errList.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + errList.Error() return } if len(listArt) > 0 { mapIndustryName := make(map[string]string) mapSubjectName := make(map[string]string) var articleIdStr string for _, vArt := range listArt { if vArt.IndustryName != "" && mapIndustryName[vArt.IndustryName] == "" { list[k].IndustryName += vArt.IndustryName + "/" mapIndustryName[vArt.IndustryName] = vArt.IndustryName } articleIdStr += strconv.Itoa(vArt.ArticleId) + "," } list[k].IndustryName = strings.TrimRight(list[k].IndustryName, "/") articleIdStr = strings.TrimRight(articleIdStr, ",") listSubject, err := cygx.GetArticleSubjectList(articleIdStr) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if len(listSubject) > 0 { for _, vSub := range listSubject { if vSub.SubjectName != "" && mapSubjectName[vSub.SubjectName] == "" { list[k].SubjectNameStr += vSub.SubjectName + "/" mapSubjectName[vSub.SubjectName] = vSub.SubjectName } } list[k].SubjectNameStr = strings.TrimRight(list[k].SubjectNameStr, "/") } } } } } else if source == 7 { condition += ` AND r.create_time < date_format(now(),'%Y-%m-%d') ` //过滤当天时间 total, err = cygx.GetCygxSearchKeyWordCountBuCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录失败,Err:" + err.Error() return } list, err = cygx.GetCygxSearchKeyWordByCompany(condition, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录列表失败,Err:" + err.Error() return } } else if source == 8 { total, err = cygx.GetCygxActivitySpecialTripCountByCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录失败,Err:" + err.Error() return } list, err = cygx.CygxActivitySpecialTripByCompany(condition, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录列表失败,Err:" + err.Error() return } } else if source == 9 { total, err = cygx.GetCygxRoadshowCountByCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录失败,Err:" + err.Error() return } list, err = cygx.GetCygxRoadshowByCompany(condition, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录列表失败,Err:" + err.Error() return } } else if source == 10 { //标签点击记录 condition = `` if keyWord != "" { condition += ` AND (a.mobile LIKE '%` + keyWord + `%' OR a.email LIKE '%` + keyWord + `%' OR a.real_name LIKE '%` + keyWord + `%'` + ` OR a.company_name LIKE '%` + keyWord + `%') ` } total, err = cygx.GetCygxTagHistoryCountByCompanyId(companyId, condition) if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取搜索记录失败" return } list, err = cygx.GetCygxTagHistoryByCompanyId(companyId, startSize, pageSize, condition) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取搜索记录列表失败" return } } page := paging.GetPaging(currentIndex, pageSize, total) if len(list) == 0 { list = make([]*cygx.UserInteraction, 0) } resp.List = list resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 机构相关互动下载 // @Description 机构相关互动下载接口 // @Param CompanyId query int true "公司id" // @Param Source query int true "来源 报告阅读列表: 1, 活动互动记录: 2" // @Param IsMeeting query string true "是否到会 1到会、2未到会" // @Param MeetType query string true "参会方式 1线上,2线下 默认为线上" // @Param StartDate query string true "开始时间" // @Param EndDate query string true "结束时间" // @Param KeyWord query string true "搜索关键词" // @Param ActivityName query string true "活动名称" // @Success 200 {object} cygx.CygxUserTableStatusListRep // @router /user/company/export/interaction [get] func (this *UserController) CompanyExportInteraction() { 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") isMeeting := this.GetString("IsMeeting") meetType := this.GetString("MeetType") startDate := this.GetString("StartDate") endDate := this.GetString("EndDate") keyWord := this.GetString("KeyWord") activityName := this.GetString("ActivityName") source, _ := this.GetInt("Source") if companyId < 1 { br.Msg = "用户不存在" return } //获取企业客户信息 companyInfo, err := company.GetCompanyById(companyId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "GetCompanyById,Err:" + err.Error() return } var list []*cygx.UserInteraction var condition string condition += ` AND r.company_id = ` + strconv.Itoa(companyId) + ` AND r.create_time < date_format(now(),'%Y-%m-%d') ` //过滤当天时间 if keyWord != "" { //condition += ` AND r.user_id IN (SELECT user_id FROM wx_user WHERE mobile LIKE '%` + keyWord + `%' OR email LIKE '%` + keyWord + `%' OR real_name LIKE '%` + keyWord + `%')` condition += ` AND ( r.mobile LIKE '%` + keyWord + `%' OR r.email LIKE '%` + keyWord + `%' OR r.real_name LIKE '%` + keyWord + `%')` } if source == 1 { if startDate != "" { startDate += " 00:00:00" condition += ` AND r.create_time >= '` + startDate + `' ` } if endDate != "" { endDate += " 23:59:59" condition += ` AND r.create_time <= '` + endDate + `' ` } list, err = cygx.GetCygxArticleHistoryRecordByCompany(condition, 0, 0) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取用户阅读记录,Err:" + err.Error() return } if len(list) > 0 { var articleIds string mapAricleId := make(map[int]int) mapAricleIndustrialSubjectName := make(map[int]*cygx.ArticleIndustrialSubjectNameResp) for k, v := range list { if v.ArticleId >= utils.SummaryArticleId { list[k].ArticleType = 1 } else { list[k].ArticleType = 2 } if list[k].PermissionName == "" { list[k].PermissionName = v.CategoryName } if mapAricleId[v.ArticleId] == 0 { articleIds += strconv.Itoa(v.ArticleId) + "," mapAricleId[v.ArticleId] = v.ArticleId } } articleIds = strings.TrimRight(articleIds, ",") if articleIds != "" { listArticleIndustrialSubjectList, err := cygx.GetCygxArticleIndustrialSubjectName(articleIds) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取用户阅读记录,Err:" + err.Error() return } if len(listArticleIndustrialSubjectList) > 0 { for _, v := range listArticleIndustrialSubjectList { mapAricleIndustrialSubjectName[v.ArticleId] = v } for k, v := range list { if mapAricleIndustrialSubjectName[v.ArticleId] != nil { list[k].IndustryName = mapAricleIndustrialSubjectName[v.ArticleId].IndustryName list[k].SubjectNameStr = mapAricleIndustrialSubjectName[v.ArticleId].SubjectNameStr } } } } } } else if source == 2 { if isMeeting == "1" { condition += ` AND r.is_meeting = 1 ` } if isMeeting == "2" { condition += ` AND r.is_meeting = 0 ` } if meetType == "1" { condition += ` AND t.activity_type = 1 ` } if meetType == "2" { condition += ` AND t.activity_type = 0 ` } if startDate != "" { startDate += " 00:00:00" condition += ` AND a.activity_time >= '` + startDate + `' ` } if endDate != "" { endDate += " 23:59:59" condition += ` AND a.activity_time <= '` + endDate + `' ` } if activityName != "" { condition += ` AND a.activity_name LIKE '%` + activityName + `%' ` } list, err = cygx.GetActivityMeetByCompany(condition, 0, 0) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取参会人数列表失败" return } if len(list) > 0 { for k, v := range list { if v.ActivityType == 1 { if v.SignupType == "2" { list[k].InteractionType = "自主拨入" } else { list[k].InteractionType = "预约外呼" } if v.ReminderNum > 0 { list[k].InteractionType += ",会议提醒" } } } } } //创建excel dir, err := os.Executable() exPath := filepath.Dir(dir) downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx" xlsxFile := xlsx.NewFile() if err != nil { br.Msg = "生成文件失败" br.ErrMsg = "生成文件失败" return } style := xlsx.NewStyle() alignment := xlsx.Alignment{ Horizontal: "center", Vertical: "center", WrapText: true, } style.Alignment = alignment style.ApplyAlignment = true sheet, err := xlsxFile.AddSheet("用户名单") if err != nil { br.Msg = "新增Sheet失败" br.ErrMsg = "新增Sheet失败,Err:" + err.Error() return } var excelName string if source == 1 { excelName = "阅读记录" //标头 rowTitle := sheet.AddRow() cellA := rowTitle.AddCell() cellA.Value = "姓名" cellB := rowTitle.AddCell() cellB.Value = "手机号" cellC := rowTitle.AddCell() cellC.Value = "报告标题" cellD := rowTitle.AddCell() cellD.Value = "所属行业" cellE := rowTitle.AddCell() cellE.Value = "所属产业" cellF := rowTitle.AddCell() cellF.Value = "关联标的" cellG := rowTitle.AddCell() cellG.Value = "发布时间" cellH := rowTitle.AddCell() cellH.Value = "阅读时间" cellI := rowTitle.AddCell() cellI.Value = "阅读时长" for _, item := range list { row := sheet.AddRow() cellA := row.AddCell() cellA.Value = item.RealName cellB := row.AddCell() cellB.Value = item.Mobile cellC := row.AddCell() cellC.Value = item.Title cellD := row.AddCell() cellD.Value = item.PermissionName cellE := row.AddCell() cellE.Value = item.IndustryName cellF := row.AddCell() cellF.Value = item.SubjectNameStr cellG := row.AddCell() cellG.Value = item.PublishDate cellH := row.AddCell() cellH.Value = item.CreateTime cellI := row.AddCell() cellI.Value = item.StopTime } } else { excelName = "参会记录" //标头 rowTitle := sheet.AddRow() cellA := rowTitle.AddCell() cellA.Value = "姓名" cellB := rowTitle.AddCell() cellB.Value = "手机号" cellC := rowTitle.AddCell() cellC.Value = "活动名称" cellD := rowTitle.AddCell() cellD.Value = "所属行业" cellE := rowTitle.AddCell() cellE.Value = "活动类型" cellF := rowTitle.AddCell() cellF.Value = "活动主题" cellG := rowTitle.AddCell() cellG.Value = "活动时间" cellH := rowTitle.AddCell() cellH.Value = "是否到会" cellI := rowTitle.AddCell() cellI.Value = "首次入会时间" cellJ := rowTitle.AddCell() cellJ.Value = "最后退出时间" cellK := rowTitle.AddCell() cellK.Value = "参与总时长" cellL := rowTitle.AddCell() cellL.Value = "参会方式" cellM := rowTitle.AddCell() cellM.Value = "参会权鉴" cellN := rowTitle.AddCell() cellN.Value = "参会状态" for _, item := range list { row := sheet.AddRow() cellA := row.AddCell() cellA.Value = item.RealName cellB := row.AddCell() cellB.Value = item.Mobile cellC := row.AddCell() cellC.Value = item.ActivityName cellD := row.AddCell() cellD.Value = item.PermissionName cellE := row.AddCell() cellE.Value = item.ActivityTypeName cellF := row.AddCell() cellF.Value = item.Label cellG := row.AddCell() cellG.Value = item.ActivityTime cellH := row.AddCell() if item.IsMeeting == 1 { cellH.Value = "到会" } else { cellH.Value = "未到会" } cellI := row.AddCell() cellI.Value = item.FirstMeetingTime cellJ := row.AddCell() cellJ.Value = item.LastMeetingTime cellK := row.AddCell() cellK.Value = item.Duration cellL := row.AddCell() cellL.Value = item.LastMeetingTime cellM := row.AddCell() cellM.Value = item.MeetingTypeStr cellN := row.AddCell() cellN.Value = item.MeetingStatusStr } } err = xlsxFile.Save(downLoadnFilePath) if err != nil { br.Msg = "保存文件失败" br.ErrMsg = "保存文件失败" return } randStr := time.Now().Format(utils.FormatDate) downloadFileName := excelName + companyInfo.CompanyName + randStr + ".xlsx" this.Ctx.Output.Download(downLoadnFilePath, downloadFileName) defer func() { os.Remove(downLoadnFilePath) }() br.Ret = 200 br.Success = true br.Msg = "获取成功" } // @Title 全机构互动列表 // @Description 全机构互动列表接口 // @Param Source query int true "来源" // @Param AdminId query string true "销售id,多个用英文逗号隔开,空字符串为全部" // @Param IsMeeting query string false "是否到会 1到会、2未到会" // @Param MeetType query string false "参会方式 1线上,2线下 默认为线上" // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param StartDate query string false "开始时间" // @Param EndDate query string false "结束时间" // @Param KeyWord query string false "搜索关键词" // @Param ActivityName query string false "活动名称" // @Success 200 {object} cygx.UserInteractionListResp // @router /user/company/list [get] func (this *UserController) CompanyList() { 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 } roleTypeCode := sysUser.RoleTypeCode pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") adminId := this.GetString("AdminId") keyWord := this.GetString("KeyWord") isMeeting := this.GetString("IsMeeting") meetType := this.GetString("MeetType") startDate := this.GetString("StartDate") endDate := this.GetString("EndDate") activityName := this.GetString("ActivityName") source, _ := this.GetInt("Source") status := this.GetString("Status") // 套餐类型 //packageType, _ := this.GetInt("PackageType") keyWord = strings.Trim(keyWord, " ") keyWord = strings.Replace(keyWord, "'", "", -1) var total int //statusItems := make([]*company.CompanyStatus, 0) //var statusArr = [...]string{"全部", "试用", "正式", "冻结", "流失", "永续"} var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) var condition string resp := new(cygx.UserInteractionListResp) var err error var list []*cygx.UserInteraction //流失 var lossCondition string //var lossPars []interface{} //状态分类查询条件 var permissionCondition string if adminId != "" { condition += ` AND b.seller_id IN (` + adminId + `) ` } lossCondition = condition //lossPars = pars permissionCondition = condition //流失客户统计 lossCondition += ` AND status='流失' ` //productId := services.GetProductId(roleTypeCode) productId := 2 //权限控制 { //如果不是超级管理员或者财务 if roleTypeCode != utils.ROLE_TYPE_CODE_ADMIN && roleTypeCode != utils.ROLE_TYPE_CODE_FINANCE { //如果是部门管理员 if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN { condition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` lossCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` permissionCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` } else { condition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` lossCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` permissionCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` if status == "全部" { ////如果是筛选了流失客户状态 if sysUser.Authority <= 0 { condition += ` AND (b.seller_id= '` + strconv.Itoa(sysUser.AdminId) + `' OR status='流失') ` permissionCondition += ` AND b.seller_id= ` + strconv.Itoa(sysUser.AdminId) } else { if sysUser.Authority == 1 { condition += ` AND (b.department_id=` + strconv.Itoa(sysUser.DepartmentId) + ` OR status='流失')` permissionCondition += ` AND b.department_id=` + strconv.Itoa(sysUser.DepartmentId) } if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id=` + strconv.Itoa(sysUser.GroupId) + ` OR status='流失') ` } permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId) } if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP { pid, err := company.GetParentIdFromGroup(sysUser.GroupId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "查询父级id异常" + err.Error() return } var ids []*string if pid != nil { if *pid != 0 { //销售主管放在三级列表中 ids, err = company.GetGroupIdsByParentId(*pid) if err != nil { fmt.Println(err.Error()) } } else { //销售主管放在二级列表中 ids, err = company.GetGroupIdsByParentId(sysUser.GroupId) if err != nil { fmt.Println(err.Error()) } } } var idSlice []string var sid string for _, id := range ids { idSlice = append(idSlice, *id) } //加入父级groupId if *pid > 0 { idSlice = append(idSlice, strconv.Itoa(*pid)) } else { idSlice = append(idSlice, strconv.Itoa(sysUser.GroupId)) } sid = strings.Join(idSlice, ",") if len(sid) > 0 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id IN (` + sid + `) OR status='流失') ` } permissionCondition += ` AND b.group_id IN (` + sid + `) ` } else { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) OR status='流失') ` } permissionCondition += ` AND b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) ` } } if sysUser.Authority == 4 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id =` + strconv.Itoa(sysUser.GroupId) + ` OR status='流失') ` //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId) //permissionPars = append(permissionPars, sysUser.GroupId) } } } else { //如果没有筛选了流失客户状态,那么需要加客户归属条件加入到查询中去 if sysUser.Authority <= 0 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND b.seller_id=` + strconv.Itoa(sysUser.AdminId) //pars = append(pars, sysUser.AdminId) } permissionCondition += ` AND b.seller_id=` + strconv.Itoa(sysUser.AdminId) //permissionPars = append(permissionPars, sysUser.AdminId) } else { if sysUser.Authority == 1 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND b.department_id=` + strconv.Itoa(sysUser.DepartmentId) //pars = append(pars, sysUser.DepartmentId) } permissionCondition += ` AND b.department_id=` + strconv.Itoa(sysUser.DepartmentId) //permissionPars = append(permissionPars, sysUser.DepartmentId) } if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND b.group_id= ` + strconv.Itoa(sysUser.GroupId) //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId) //permissionPars = append(permissionPars, sysUser.GroupId) } if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP { pid, err := company.GetParentIdFromGroup(sysUser.GroupId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "查询父级id异常" + err.Error() return } var ids []*string if pid != nil { if *pid != 0 { //销售主管放在三级列表中 ids, err = company.GetGroupIdsByParentId(*pid) if err != nil { fmt.Println(err.Error()) } } else { //销售主管放在二级列表中 ids, err = company.GetGroupIdsByParentId(sysUser.GroupId) if err != nil { fmt.Println(err.Error()) } } } var idSlice []string var sid string for _, id := range ids { idSlice = append(idSlice, *id) } //加入父级groupId if *pid > 0 { idSlice = append(idSlice, strconv.Itoa(*pid)) } else { idSlice = append(idSlice, strconv.Itoa(sysUser.GroupId)) } sid = strings.Join(idSlice, ",") if len(sid) > 0 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id IN (` + sid + `) OR status='流失') ` //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id IN (` + sid + `) ` } else { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) OR status='流失') ` //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) ` } } if sysUser.Authority == 4 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND b.group_id =` + strconv.Itoa(sysUser.GroupId) //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId) //permissionPars = append(permissionPars, sysUser.GroupId) } } } } } } condition += ` AND b.status IN ('正式','试用','冻结') ` companyCondition := `SELECT a.company_id FROM company AS a INNER JOIN company_product AS b ON a.company_id=b.company_id WHERE a.enabled=1 ` companyIdsCondition := `SELECT GROUP_CONCAT( DISTINCT a.company_id SEPARATOR ',' ) AS company_ids FROM company AS a INNER JOIN company_product AS b ON a.company_id=b.company_id WHERE a.enabled=1 ` if condition != "" { companyCondition += condition } companyIdsCondition += condition var companyIds string companyIds, err = cygx.GetCompanyIdsCondition(companyIdsCondition) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取公司ID数据失败,Err:" + err.Error() return } condition = ` AND r.company_id IN ( ` + companyIds + ` )AND r.create_time < date_format(now(),'%Y-%m-%d') ` //过滤当天时间 if keyWord != "" { condition += ` AND (r.mobile LIKE '%` + keyWord + `%' OR r.email LIKE '%` + keyWord + `%' OR r.real_name LIKE '%` + keyWord + `%'` + ` OR r.company_name LIKE '%` + keyWord + `%') ` } if source == 1 { if startDate != "" { startDate += " 00:00:00" condition += ` AND r.create_time >= '` + startDate + `' ` } if endDate != "" { endDate += " 23:59:59" condition += ` AND r.create_time <= '` + endDate + `' ` } //机构阅读数量太大,先存下来,后面优化 detailConfig, err := cygx.GetCygxConfigDetailByCode("company_article_history_num") if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } total, _ = strconv.Atoi(detailConfig.ConfigValue) //total, err = cygx.GetCygxArticleHistoryCountByCompany(condition) //if err != nil { // br.Msg = "获取信息失败" // br.ErrMsg = "获取用户阅读记录总数失败,Err:" + err.Error() // return //} //fmt.Println("es 搜索") totalEs, esList, err := services.SearcCygxArticleHistoryData(utils.IndexNameArticleHistory, keyWord, startDate, endDate, companyIds, startSize, pageSize) if keyWord+startDate+endDate != "" { total = int(totalEs) } var articleIds string if len(esList) > 0 { articleIdMap := make(map[int]int) for _, v := range esList { if _, ok := articleIdMap[v.Id]; !ok { articleIds += strconv.Itoa(v.Id) + "," articleIdMap[v.Id] = v.Id } } } articleIds = strings.TrimRight(articleIds, ",") if articleIds != "" { condition = ` AND r.id IN (` + articleIds + `) ` } else { condition = ` AND r.id = 0 ` } //fmt.Println(articleIds) //return list, err = cygx.GetCygxArticleHistoryRecordByCompanyList(condition, 0, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取用户阅读记录,Err:" + err.Error() return } if len(list) > 0 { var articleIds string mapAricleId := make(map[int]int) mapAricleIndustrialSubjectName := make(map[int]*cygx.ArticleIndustrialSubjectNameResp) var sellerCompanyIds []int for k, v := range list { if v.ArticleId >= utils.SummaryArticleId { list[k].ArticleType = 1 } else { list[k].ArticleType = 2 } if list[k].PermissionName == "" { list[k].PermissionName = v.CategoryName } if mapAricleId[v.ArticleId] == 0 { articleIds += strconv.Itoa(v.ArticleId) + "," mapAricleId[v.ArticleId] = v.ArticleId } list[k].RegisterPlatform = cygxService.GetArticleSourcePlatform(v.SourcePlatform) sellerCompanyIds = append(sellerCompanyIds, v.CompanyId) } sellNameMap := services.GetSellNameMapByCompanyIds(sellerCompanyIds) articleIds = strings.TrimRight(articleIds, ",") if articleIds != "" { listArticleIndustrialSubjectList, err := cygx.GetCygxArticleIndustrialSubjectName(articleIds) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取用户阅读记录,Err:" + err.Error() return } if len(listArticleIndustrialSubjectList) > 0 { for _, v := range listArticleIndustrialSubjectList { mapAricleIndustrialSubjectName[v.ArticleId] = v } for k, v := range list { if mapAricleIndustrialSubjectName[v.ArticleId] != nil { list[k].IndustryName = mapAricleIndustrialSubjectName[v.ArticleId].IndustryName list[k].SubjectNameStr = mapAricleIndustrialSubjectName[v.ArticleId].SubjectNameStr } list[k].SellerName = sellNameMap[v.CompanyId] } } } } } else if source == 2 { if isMeeting == "1" { condition += ` AND r.is_meeting = 1 ` } if isMeeting == "2" { condition += ` AND r.is_meeting = 0 ` } if meetType == "1" { condition += ` AND t.activity_type = 1 ` } if meetType == "2" { condition += ` AND t.activity_type = 0 ` } if startDate != "" { startDate += " 00:00:00" condition += ` AND a.activity_time >= '` + startDate + `' ` } if endDate != "" { endDate += " 23:59:59" condition += ` AND a.activity_time <= '` + endDate + `' ` } if activityName != "" { condition += ` AND a.activity_name LIKE '%` + activityName + `%' ` } //condition += ` AND r.create_time < date_format(now(),'%Y-%m-%d') ` //过滤当天时间 total, err = cygx.GetActivityMeetByCompanyCount(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取参会总数失败,Err:" + err.Error() return } list, err = cygx.GetActivityMeetByCompanyList(condition, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取参会人数列表失败" return } //根据公司ID获取对应销售 var sellerCompanyIds []int for _, v := range list { sellerCompanyIds = append(sellerCompanyIds, v.CompanyId) } sellNameMap := services.GetSellNameMapByCompanyIds(sellerCompanyIds) if len(list) > 0 { for k, v := range list { if v.ActivityType == 1 { if v.SignupType == "2" { list[k].InteractionType = "自主拨入" } else { list[k].InteractionType = "预约外呼" } if v.ReminderNum > 0 { list[k].InteractionType += ",会议提醒" } } if v.IsMeeting == 0 { list[k].FirstMeetingTime = "" list[k].LastMeetingTime = "" } v.SellerName = sellNameMap[v.CompanyId] } } } else if source == 3 { total, err = cygx.GetCygxArticleCollectCountByCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户收藏记录总数失败,Err:" + err.Error() return } list, err = cygx.GetCygxArticleCollectByCompanyList(startSize, pageSize, condition) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取用户搜藏记录失败,Err:" + err.Error() return } //根据公司ID获取对应销售 var sellerCompanyIds []int for _, v := range list { sellerCompanyIds = append(sellerCompanyIds, v.CompanyId) } sellNameMap := services.GetSellNameMapByCompanyIds(sellerCompanyIds) if len(list) > 0 { for k, v := range list { if v.ArticleId >= utils.SummaryArticleId { list[k].ArticleType = 1 } else { list[k].ArticleType = 2 } v.SellerName = sellNameMap[v.CompanyId] } } } else if source == 4 { total, err = cygx.GetChartCountByUserCount(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取总数失败,Err:" + err.Error() return } //condition += ` AND r.company_id = ` + strconv.Itoa(companyId) + ` AND r.create_time < date_format(now(),'%Y-%m-%d')` //过滤当天时间 list, err = cygx.GetChartCollectBycompanyList(condition, startSize, pageSize) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } if len(list) > 0 { for k, v := range list { var err error condition = ` AND a.publish_status = 1 AND r.mobile = ` + v.Mobile + ` AND r.create_time < date_format(now(),'%Y-%m-%d')` //过滤当天时间 totalUser, err := cygx.GetChartCountByUserMobile(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取总数失败,Err:" + err.Error() return } listChart, err := cygx.GetChartListCollectionWithCygxByMobile(condition, 0, 18) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } for k, vChart := range listChart { if vChart.PtagName != "" { listChart[k].CtagNamePc = vChart.PtagName } if vChart.CtagName != "" { listChart[k].CtagNamePc += "," + vChart.CtagName } if vChart.PtagNameTwo != "" { listChart[k].CtagNamePc += "," + vChart.PtagNameTwo } if vChart.CtagNameTwo != "" { listChart[k].CtagNamePc += "," + vChart.CtagNameTwo } } pageChart := paging.GetPaging(currentIndex, pageSize, totalUser) list[k].ListChart = listChart list[k].Paging = pageChart list[k].IsEnd = pageChart.IsEnd list[k].CurrentIndex = pageChart.CurrentIndex } } } else if source == 5 { total, err = cygx.GetCygxIndustryFllowCountByCompany(condition) if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取用户关注总数失败" return } list, err = cygx.GetCygxIndustryFllowByCompanyList(condition, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取用户关注总数失败" return } //根据公司ID获取对应销售 var sellerCompanyIds []int for _, v := range list { sellerCompanyIds = append(sellerCompanyIds, v.CompanyId) } sellNameMap := services.GetSellNameMapByCompanyIds(sellerCompanyIds) for _, v := range list { v.SellerName = sellNameMap[v.CompanyId] } } else if source == 6 { total, err = cygx.GetCygArticleDepartmentFollowCountByCompany(condition) if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取关注作者总数失败" return } list, err = cygx.GetCygArticleDepartmentFollowByCompanyList(condition, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取关注作者列表失败" return } if len(list) > 0 { //根据公司ID获取对应销售 var sellerCompanyIds []int for _, v := range list { sellerCompanyIds = append(sellerCompanyIds, v.CompanyId) } sellNameMap := services.GetSellNameMapByCompanyIds(sellerCompanyIds) for k, v := range list { v.SellerName = sellNameMap[v.CompanyId] var conditionDepartment string var pars []interface{} conditionDepartment += ` WHERE art.source = 1 AND art.is_summary = 1 AND art.department_id = ` + strconv.Itoa(v.DepartmentId) listArt, errList := cygx.GetSummaryManageList(conditionDepartment, pars, 0, 20) if errList != nil && errList.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + errList.Error() return } if len(listArt) > 0 { mapIndustryName := make(map[string]string) mapSubjectName := make(map[string]string) var articleIdStr string for _, vArt := range listArt { if vArt.IndustryName != "" && mapIndustryName[vArt.IndustryName] == "" { list[k].IndustryName += vArt.IndustryName + "/" mapIndustryName[vArt.IndustryName] = vArt.IndustryName } articleIdStr += strconv.Itoa(vArt.ArticleId) + "," } list[k].IndustryName = strings.TrimRight(list[k].IndustryName, "/") articleIdStr = strings.TrimRight(articleIdStr, ",") listSubject, err := cygx.GetArticleSubjectList(articleIdStr) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if len(listSubject) > 0 { for _, vSub := range listSubject { if vSub.SubjectName != "" && mapSubjectName[vSub.SubjectName] == "" { list[k].SubjectNameStr += vSub.SubjectName + "/" mapSubjectName[vSub.SubjectName] = vSub.SubjectName } } list[k].SubjectNameStr = strings.TrimRight(list[k].SubjectNameStr, "/") } } } } } else if source == 7 { condition += ` AND r.create_time < date_format(now(),'%Y-%m-%d') ` //过滤当天时间 total, err = cygx.GetCygxSearchKeyWordCountBuCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录失败,Err:" + err.Error() return } list, err = cygx.GetCygxSearchKeyWordByCompanyList(condition, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录列表失败,Err:" + err.Error() return } //根据公司ID获取对应销售 var sellerCompanyIds []int for _, v := range list { sellerCompanyIds = append(sellerCompanyIds, v.CompanyId) } sellNameMap := services.GetSellNameMapByCompanyIds(sellerCompanyIds) for _, v := range list { v.SellerName = sellNameMap[v.CompanyId] } } else if source == 8 { total, err = cygx.GetCygxActivitySpecialTripCountByCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录失败,Err:" + err.Error() return } list, err = cygx.GetCygxActivitySpecialTripByCompanyList(condition, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录列表失败,Err:" + err.Error() return } } else if source == 9 { total, err = cygx.GetCygxRoadshowCountByCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录失败,Err:" + err.Error() return } list, err = cygx.GetCygxRoadshowByCompanyList(condition, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录列表失败,Err:" + err.Error() return } //根据公司ID获取对应销售 var sellerCompanyIds []int for _, v := range list { sellerCompanyIds = append(sellerCompanyIds, v.CompanyId) } sellNameMap := services.GetSellNameMapByCompanyIds(sellerCompanyIds) for _, v := range list { v.SellerName = sellNameMap[v.CompanyId] } } else if source == 10 { //标签点击记录 condition = `` if adminId != "" { condition += ` AND p.seller_id IN (` + adminId + `) ` } if keyWord != "" { condition += ` AND (a.mobile LIKE '%` + keyWord + `%' OR a.email LIKE '%` + keyWord + `%' OR a.real_name LIKE '%` + keyWord + `%'` + ` OR a.company_name LIKE '%` + keyWord + `%') ` } total, err = cygx.GetCygxTagHistoryCountByCompanyIds(companyIds, condition) if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取搜索记录失败" return } list, err = cygx.GetCygxTagHistoryByCompanyIds(companyIds, condition, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取搜索记录列表失败" return } } page := paging.GetPaging(currentIndex, pageSize, total) if len(list) == 0 { list = make([]*cygx.UserInteraction, 0) } resp.List = list resp.Paging = page br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 机构列表相关互动下载 // @Description 机构相关互动下载接口 // @Param Source query int true "来源 报告阅读列表: 1, 活动互动记录: 2" // @Param IsMeeting query string true "是否到会 1到会、2未到会" // @Param MeetType query string true "参会方式 1线上,2线下 默认为线上" // @Param StartDate query string true "开始时间" // @Param EndDate query string true "结束时间" // @Param KeyWord query string true "搜索关键词" // @Param ActivityName query string true "活动名称" // @Success 200 {object} cygx.CygxUserTableStatusListRep // @router /user/companyList/export/interaction [get] func (this *UserController) CompanyExportInteractionList() { 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 } roleTypeCode := sysUser.RoleTypeCode adminId := this.GetString("AdminId") keyWord := this.GetString("KeyWord") isMeeting := this.GetString("IsMeeting") meetType := this.GetString("MeetType") startDate := this.GetString("StartDate") endDate := this.GetString("EndDate") activityName := this.GetString("ActivityName") source, _ := this.GetInt("Source") status := this.GetString("Status") // 套餐类型 //packageType, _ := this.GetInt("PackageType") keyWord = strings.Trim(keyWord, " ") keyWord = strings.Replace(keyWord, "'", "", -1) var list []*cygx.UserInteraction var err error var condition string //流失 var lossCondition string //var lossPars []interface{} //状态分类查询条件 var permissionCondition string if adminId != "" { condition += ` AND b.seller_id IN (` + adminId + `) ` } lossCondition = condition //lossPars = pars permissionCondition = condition //流失客户统计 lossCondition += ` AND status='流失' ` //productId := services.GetProductId(roleTypeCode) productId := 2 //权限控制 { //如果不是超级管理员或者财务 if roleTypeCode != utils.ROLE_TYPE_CODE_ADMIN && roleTypeCode != utils.ROLE_TYPE_CODE_FINANCE { //如果是部门管理员 if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN { condition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` lossCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` permissionCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` } else { condition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` lossCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` permissionCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` if status == "全部" { ////如果是筛选了流失客户状态 if sysUser.Authority <= 0 { condition += ` AND (b.seller_id= '` + strconv.Itoa(sysUser.AdminId) + `' OR status='流失') ` permissionCondition += ` AND b.seller_id= ` + strconv.Itoa(sysUser.AdminId) } else { if sysUser.Authority == 1 { condition += ` AND (b.department_id=` + strconv.Itoa(sysUser.DepartmentId) + ` OR status='流失')` permissionCondition += ` AND b.department_id=` + strconv.Itoa(sysUser.DepartmentId) } if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id=` + strconv.Itoa(sysUser.GroupId) + ` OR status='流失') ` } permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId) } if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP { pid, err := company.GetParentIdFromGroup(sysUser.GroupId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "查询父级id异常" + err.Error() return } var ids []*string if pid != nil { if *pid != 0 { //销售主管放在三级列表中 ids, err = company.GetGroupIdsByParentId(*pid) if err != nil { fmt.Println(err.Error()) } } else { //销售主管放在二级列表中 ids, err = company.GetGroupIdsByParentId(sysUser.GroupId) if err != nil { fmt.Println(err.Error()) } } } var idSlice []string var sid string for _, id := range ids { idSlice = append(idSlice, *id) } //加入父级groupId if *pid > 0 { idSlice = append(idSlice, strconv.Itoa(*pid)) } else { idSlice = append(idSlice, strconv.Itoa(sysUser.GroupId)) } sid = strings.Join(idSlice, ",") if len(sid) > 0 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id IN (` + sid + `) OR status='流失') ` } permissionCondition += ` AND b.group_id IN (` + sid + `) ` } else { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) OR status='流失') ` } permissionCondition += ` AND b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) ` } } if sysUser.Authority == 4 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id =` + strconv.Itoa(sysUser.GroupId) + ` OR status='流失') ` //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId) //permissionPars = append(permissionPars, sysUser.GroupId) } } } else { //如果没有筛选了流失客户状态,那么需要加客户归属条件加入到查询中去 if sysUser.Authority <= 0 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND b.seller_id=` + strconv.Itoa(sysUser.AdminId) //pars = append(pars, sysUser.AdminId) } permissionCondition += ` AND b.seller_id=` + strconv.Itoa(sysUser.AdminId) //permissionPars = append(permissionPars, sysUser.AdminId) } else { if sysUser.Authority == 1 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND b.department_id=` + strconv.Itoa(sysUser.DepartmentId) //pars = append(pars, sysUser.DepartmentId) } permissionCondition += ` AND b.department_id=` + strconv.Itoa(sysUser.DepartmentId) //permissionPars = append(permissionPars, sysUser.DepartmentId) } if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND b.group_id= ` + strconv.Itoa(sysUser.GroupId) //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId) //permissionPars = append(permissionPars, sysUser.GroupId) } if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP { pid, err := company.GetParentIdFromGroup(sysUser.GroupId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "查询父级id异常" + err.Error() return } var ids []*string if pid != nil { if *pid != 0 { //销售主管放在三级列表中 ids, err = company.GetGroupIdsByParentId(*pid) if err != nil { fmt.Println(err.Error()) } } else { //销售主管放在二级列表中 ids, err = company.GetGroupIdsByParentId(sysUser.GroupId) if err != nil { fmt.Println(err.Error()) } } } var idSlice []string var sid string for _, id := range ids { idSlice = append(idSlice, *id) } //加入父级groupId if *pid > 0 { idSlice = append(idSlice, strconv.Itoa(*pid)) } else { idSlice = append(idSlice, strconv.Itoa(sysUser.GroupId)) } sid = strings.Join(idSlice, ",") if len(sid) > 0 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id IN (` + sid + `) OR status='流失') ` //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id IN (` + sid + `) ` } else { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) OR status='流失') ` //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) ` } } if sysUser.Authority == 4 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND b.group_id =` + strconv.Itoa(sysUser.GroupId) //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId) //permissionPars = append(permissionPars, sysUser.GroupId) } } } } } } //condition += ` AND b.status IN ('正式','试用','冻结') ` //companyCondition := `SELECT a.company_id FROM company AS a INNER JOIN company_product AS b ON a.company_id=b.company_id WHERE a.enabled=1 ` //if condition != "" { // companyCondition += condition //} condition += ` AND b.status IN ('正式','试用','冻结') ` companyCondition := `SELECT a.company_id FROM company AS a INNER JOIN company_product AS b ON a.company_id=b.company_id WHERE a.enabled=1 ` companyIdsCondition := `SELECT GROUP_CONCAT( DISTINCT a.company_id SEPARATOR ',' ) AS company_ids FROM company AS a INNER JOIN company_product AS b ON a.company_id=b.company_id WHERE a.enabled=1 ` if condition != "" { companyCondition += condition } companyIdsCondition += condition var companyIds string companyIds, err = cygx.GetCompanyIdsCondition(companyIdsCondition) companyIds, err = cygx.GetCompanyIdsCondition(companyIdsCondition) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取公司ID数据失败,Err:" + err.Error() return } condition = ` AND r.company_id IN ( ` + companyIds + ` )AND r.create_time < date_format(now(),'%Y-%m-%d') ` //过滤当天时间 if keyWord != "" { condition += ` AND (r.mobile LIKE '%` + keyWord + `%' OR r.email LIKE '%` + keyWord + `%' OR r.real_name LIKE '%` + keyWord + `%'` + ` OR r.company_name LIKE '%` + keyWord + `%') ` } if source == 1 { if startDate != "" { startDate += " 00:00:00" condition += ` AND r.create_time >= '` + startDate + `' ` } if endDate != "" { endDate += " 23:59:59" condition += ` AND r.create_time <= '` + endDate + `' ` } list, err = cygx.GetCygxArticleHistoryRecordByCompanyList(condition, 0, 0) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取用户阅读记录,Err:" + err.Error() return } if len(list) > 0 { var articleIds string mapAricleId := make(map[int]int) mapAricleIndustrialSubjectName := make(map[int]*cygx.ArticleIndustrialSubjectNameResp) for k, v := range list { if v.ArticleId >= utils.SummaryArticleId { list[k].ArticleType = 1 } else { list[k].ArticleType = 2 } if list[k].PermissionName == "" { list[k].PermissionName = v.CategoryName } if mapAricleId[v.ArticleId] == 0 { articleIds += strconv.Itoa(v.ArticleId) + "," mapAricleId[v.ArticleId] = v.ArticleId } } articleIds = strings.TrimRight(articleIds, ",") if articleIds != "" { listArticleIndustrialSubjectList, err := cygx.GetCygxArticleIndustrialSubjectName(articleIds) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取用户阅读记录,Err:" + err.Error() return } if len(listArticleIndustrialSubjectList) > 0 { for _, v := range listArticleIndustrialSubjectList { mapAricleIndustrialSubjectName[v.ArticleId] = v } for k, v := range list { if mapAricleIndustrialSubjectName[v.ArticleId] != nil { fmt.Println(mapAricleIndustrialSubjectName[v.ArticleId].IndustryName) list[k].IndustryName = mapAricleIndustrialSubjectName[v.ArticleId].IndustryName list[k].SubjectNameStr = mapAricleIndustrialSubjectName[v.ArticleId].SubjectNameStr } } } } } } else if source == 2 { if isMeeting == "1" { condition += ` AND r.is_meeting = 1 ` } if isMeeting == "2" { condition += ` AND r.is_meeting = 0 ` } if meetType == "1" { condition += ` AND t.activity_type = 1 ` } if meetType == "2" { condition += ` AND t.activity_type = 0 ` } if startDate != "" { startDate += " 00:00:00" condition += ` AND a.activity_time >= '` + startDate + `' ` } if endDate != "" { endDate += " 23:59:59" condition += ` AND a.activity_time <= '` + endDate + `' ` } if activityName != "" { condition += ` AND a.activity_name LIKE '%` + activityName + `%' ` } list, err = cygx.GetActivityMeetByCompanyList(condition, 0, 0) if err != nil && err.Error() != utils.ErrNoRow() { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取参会人数列表失败" return } if len(list) > 0 { for k, v := range list { if v.ActivityType == 1 { if v.SignupType == "2" { list[k].InteractionType = "自主拨入" } else { list[k].InteractionType = "预约外呼" } if v.ReminderNum > 0 { list[k].InteractionType += ",会议提醒" } } } } } //创建excel dir, err := os.Executable() exPath := filepath.Dir(dir) downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx" xlsxFile := xlsx.NewFile() if err != nil { br.Msg = "生成文件失败" br.ErrMsg = "生成文件失败" return } style := xlsx.NewStyle() alignment := xlsx.Alignment{ Horizontal: "center", Vertical: "center", WrapText: true, } var excelName string style.Alignment = alignment style.ApplyAlignment = true sheet, err := xlsxFile.AddSheet("到会管理名单") if err != nil { br.Msg = "新增Sheet失败" br.ErrMsg = "新增Sheet失败,Err:" + err.Error() return } if source == 1 { excelName = "客户阅读记录" //标头 rowTitle := sheet.AddRow() cellA := rowTitle.AddCell() cellA.Value = "客户名称" cellB := rowTitle.AddCell() cellB.Value = "所属销售" cellC := rowTitle.AddCell() cellC.Value = "姓名" cellD := rowTitle.AddCell() cellD.Value = "手机号" cellE := rowTitle.AddCell() cellE.Value = "报告标题" cellF := rowTitle.AddCell() cellF.Value = "所属行业" cellG := rowTitle.AddCell() cellG.Value = "所属产业" cellH := rowTitle.AddCell() cellH.Value = "关联标的" cellI := rowTitle.AddCell() cellI.Value = "发布时间" cellJ := rowTitle.AddCell() cellJ.Value = "阅读时间" cellK := rowTitle.AddCell() cellK.Value = "阅读时长" for _, item := range list { row := sheet.AddRow() cellA := row.AddCell() cellA.Value = item.CompanyName cellB := row.AddCell() cellB.Value = item.SellerName cellC := row.AddCell() cellC.Value = item.RealName cellD := row.AddCell() cellD.Value = item.Mobile cellE := row.AddCell() cellE.Value = item.Title cellF := row.AddCell() cellF.Value = item.PermissionName cellG := row.AddCell() cellG.Value = item.IndustryName cellH := row.AddCell() cellH.Value = item.SubjectNameStr cellI := row.AddCell() cellI.Value = item.PublishDate cellJ := row.AddCell() cellJ.Value = item.CreateTime cellK := row.AddCell() cellK.Value = item.StopTime } } else { excelName = "客户参会记录" //标头 rowTitle := sheet.AddRow() cellA := rowTitle.AddCell() cellA.Value = "客户名称" cellB := rowTitle.AddCell() cellB.Value = "所属销售" cellC := rowTitle.AddCell() cellC.Value = "姓名" cellD := rowTitle.AddCell() cellD.Value = "手机号" cellE := rowTitle.AddCell() cellE.Value = "活动名称" cellF := rowTitle.AddCell() cellF.Value = "所属行业" cellG := rowTitle.AddCell() cellG.Value = "活动类型" cellH := rowTitle.AddCell() cellH.Value = "活动主题" cellI := rowTitle.AddCell() cellI.Value = "活动时间" cellJ := rowTitle.AddCell() cellJ.Value = "是否到会" cellK := rowTitle.AddCell() cellK.Value = "首次入会时间" cellL := rowTitle.AddCell() cellL.Value = "最后退出时间" cellM := rowTitle.AddCell() cellM.Value = "参与总时长" cellN := rowTitle.AddCell() cellN.Value = "参会方式" cellO := rowTitle.AddCell() cellO.Value = "参会权鉴" cellP := rowTitle.AddCell() cellP.Value = "参会状态" for _, item := range list { row := sheet.AddRow() cellA := row.AddCell() cellA.Value = item.CompanyName cellB := row.AddCell() cellB.Value = item.SellerName cellC := row.AddCell() cellC.Value = item.RealName cellD := row.AddCell() cellD.Value = item.Mobile cellE := row.AddCell() cellE.Value = item.ActivityName cellF := row.AddCell() cellF.Value = item.PermissionName cellG := row.AddCell() cellG.Value = item.ActivityTypeName cellH := row.AddCell() cellH.Value = item.Label cellI := row.AddCell() cellI.Value = item.ActivityTime cellJ := row.AddCell() if item.IsMeeting == 1 { cellJ.Value = "到会" } else { cellJ.Value = "未到会" } cellK := row.AddCell() cellK.Value = item.FirstMeetingTime cellL := row.AddCell() cellL.Value = item.LastMeetingTime cellM := row.AddCell() cellM.Value = item.Duration cellN := row.AddCell() cellN.Value = item.LastMeetingTime cellO := row.AddCell() cellO.Value = item.MeetingTypeStr cellP := row.AddCell() cellP.Value = item.MeetingStatusStr } } err = xlsxFile.Save(downLoadnFilePath) if err != nil { br.Msg = "保存文件失败" br.ErrMsg = "保存文件失败" return } randStr := time.Now().Format(utils.FormatDateTimeUnSpace) downloadFileName := excelName + randStr + ".xlsx" this.Ctx.Output.Download(downLoadnFilePath, downloadFileName) defer func() { os.Remove(downLoadnFilePath) }() br.Ret = 200 br.Success = true br.Msg = "获取成功" } // @Title 机构列表互动详情table栏 // @Description 机构列表互动详情table栏接口 // @Success 200 {object} cygx.CygxUserTableListRep // @router /user/table/companyList [get] func (this *UserController) TableCompanyList() { 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 } roleTypeCode := sysUser.RoleTypeCode status := this.GetString("Status") //流失 var lossCondition string var condition string //var lossPars []interface{} //状态分类查询条件 var permissionCondition string lossCondition = condition //lossPars = pars permissionCondition = condition //流失客户统计 lossCondition += ` AND status='流失' ` //productId := services.GetProductId(roleTypeCode) productId := 2 //权限控制 { //如果不是超级管理员或者财务 if roleTypeCode != utils.ROLE_TYPE_CODE_ADMIN && roleTypeCode != utils.ROLE_TYPE_CODE_FINANCE { //如果是部门管理员 if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN { condition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` lossCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` permissionCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` } else { condition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` lossCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` permissionCondition += ` AND b.product_id= '` + strconv.Itoa(productId) + `'` if status == "全部" { ////如果是筛选了流失客户状态 if sysUser.Authority <= 0 { condition += ` AND (b.seller_id= '` + strconv.Itoa(sysUser.AdminId) + `' OR status='流失') ` permissionCondition += ` AND b.seller_id= ` + strconv.Itoa(sysUser.AdminId) } else { if sysUser.Authority == 1 { condition += ` AND (b.department_id=` + strconv.Itoa(sysUser.DepartmentId) + ` OR status='流失')` permissionCondition += ` AND b.department_id=` + strconv.Itoa(sysUser.DepartmentId) } if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id=` + strconv.Itoa(sysUser.GroupId) + ` OR status='流失') ` } permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId) } if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP { pid, err := company.GetParentIdFromGroup(sysUser.GroupId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "查询父级id异常" + err.Error() return } var ids []*string if pid != nil { if *pid != 0 { //销售主管放在三级列表中 ids, err = company.GetGroupIdsByParentId(*pid) if err != nil { fmt.Println(err.Error()) } } else { //销售主管放在二级列表中 ids, err = company.GetGroupIdsByParentId(sysUser.GroupId) if err != nil { fmt.Println(err.Error()) } } } var idSlice []string var sid string for _, id := range ids { idSlice = append(idSlice, *id) } //加入父级groupId if *pid > 0 { idSlice = append(idSlice, strconv.Itoa(*pid)) } else { idSlice = append(idSlice, strconv.Itoa(sysUser.GroupId)) } sid = strings.Join(idSlice, ",") if len(sid) > 0 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id IN (` + sid + `) OR status='流失') ` } permissionCondition += ` AND b.group_id IN (` + sid + `) ` } else { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) OR status='流失') ` } permissionCondition += ` AND b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) ` } } if sysUser.Authority == 4 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id =` + strconv.Itoa(sysUser.GroupId) + ` OR status='流失') ` //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId) //permissionPars = append(permissionPars, sysUser.GroupId) } } } else { //如果没有筛选了流失客户状态,那么需要加客户归属条件加入到查询中去 if sysUser.Authority <= 0 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND b.seller_id=` + strconv.Itoa(sysUser.AdminId) //pars = append(pars, sysUser.AdminId) } permissionCondition += ` AND b.seller_id=` + strconv.Itoa(sysUser.AdminId) //permissionPars = append(permissionPars, sysUser.AdminId) } else { if sysUser.Authority == 1 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND b.department_id=` + strconv.Itoa(sysUser.DepartmentId) //pars = append(pars, sysUser.DepartmentId) } permissionCondition += ` AND b.department_id=` + strconv.Itoa(sysUser.DepartmentId) //permissionPars = append(permissionPars, sysUser.DepartmentId) } if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND b.group_id= ` + strconv.Itoa(sysUser.GroupId) //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId) //permissionPars = append(permissionPars, sysUser.GroupId) } if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP { pid, err := company.GetParentIdFromGroup(sysUser.GroupId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "查询父级id异常" + err.Error() return } var ids []*string if pid != nil { if *pid != 0 { //销售主管放在三级列表中 ids, err = company.GetGroupIdsByParentId(*pid) if err != nil { fmt.Println(err.Error()) } } else { //销售主管放在二级列表中 ids, err = company.GetGroupIdsByParentId(sysUser.GroupId) if err != nil { fmt.Println(err.Error()) } } } var idSlice []string var sid string for _, id := range ids { idSlice = append(idSlice, *id) } //加入父级groupId if *pid > 0 { idSlice = append(idSlice, strconv.Itoa(*pid)) } else { idSlice = append(idSlice, strconv.Itoa(sysUser.GroupId)) } sid = strings.Join(idSlice, ",") if len(sid) > 0 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id IN (` + sid + `) OR status='流失') ` //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id IN (` + sid + `) ` } else { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND (b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) OR status='流失') ` //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id IN (` + strconv.Itoa(sysUser.GroupId) + `) ` } } if sysUser.Authority == 4 { if status != utils.COMPANY_STATUS_LOSE { condition += ` AND b.group_id =` + strconv.Itoa(sysUser.GroupId) //pars = append(pars, sysUser.GroupId) } permissionCondition += ` AND b.group_id=` + strconv.Itoa(sysUser.GroupId) //permissionPars = append(permissionPars, sysUser.GroupId) } } } } } } condition += ` AND b.status IN ('正式','试用','冻结') ` companyCondition := ` AND a.enabled=1 ` if condition != "" { companyCondition += condition } //condition = ` AND r.company_id IN ( ` + companyCondition + ` )AND r.create_time < date_format(now(),'%Y-%m-%d') ` //过滤当天时间 //historyNum, err := cygx.GetCygxArticleHistoryCountByCompany(condition) //if err != nil { // br.Msg = "获取信息失败" // br.ErrMsg = "获取参会总数失败,Err:" + err.Error() // return //} //机构阅读数量太大,先存下来,后面优化 detailConfig, err := cygx.GetCygxConfigDetailByCode("company_article_history_num") if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } var pars []interface{} lsitCompany, err := company.GetCompanyProductListBycondition(condition, pars) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,GetCompanyProductListBycondition Err:" + err.Error() return } var companyIds []string for _, v := range lsitCompany { companyIds = append(companyIds, strconv.Itoa(v.CompanyId)) } condition = " AND r.company_id IN (" + strings.Join(companyIds, ",") + ")" condition += ` AND r.create_time < date_format(now(),'%Y-%m-%d') ` //过滤当天时间 historyNum, _ := strconv.Atoi(detailConfig.ConfigValue) //获取参会总数 activityNum, err := cygx.GetActivityMeetByCompanyCount(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取参会总数失败,Err:" + err.Error() return } //获取用户收藏记录总数 articleCollect, err := cygx.GetCygxArticleCollectCountByCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取用户收藏记录总数失败,Err:" + err.Error() return } //获取用户关注总数 industryFllowNum, err := cygx.GetCygxIndustryFllowCountByCompany(condition) if err != nil { br.Msg = "获取信息失败 " br.ErrMsg = "获取用户关注总数失败,Err:" + err.Error() return } //获取关注作者总数 departmentFollowNum, err := cygx.GetCygArticleDepartmentFollowCountByCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取关注作者总数失败,Err:" + err.Error() return } //获取搜索记录 keyWordNum, err := cygx.GetCygxSearchKeyWordCountBuCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录失败,Err:" + err.Error() return } chartNum, err := cygx.GetChartCountByUserMobile(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取总数失败,Err:" + err.Error() return } triptotal, err := cygx.GetCygxActivitySpecialTripCountByCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录失败,Err:" + err.Error() return } roadshowTotal, err := cygx.GetCygxRoadshowCountByCompany(condition) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取搜索记录失败,Err:" + err.Error() return } tagNum, err := cygx.GetCygxTagHistoryCountByCompanyIds(strings.Join(companyIds, ","), "") if err != nil { br.ErrMsg = "获取信息失败,Err:" + err.Error() br.Msg = "获取搜索记录失败" return } List := []*cygx.CygxUserTableRep{{PermissionName: "报告阅读列表", Source: 1, TotalNum: historyNum}, {PermissionName: "活动互动记录", Source: 2, TotalNum: activityNum}, {PermissionName: "专项调研", Source: 8, TotalNum: triptotal}, {PermissionName: "收藏的报告", Source: 3, TotalNum: articleCollect}, {PermissionName: "收藏图表", Source: 4, TotalNum: chartNum}, {PermissionName: "关注的产业", Source: 5, TotalNum: industryFllowNum}, {PermissionName: "关注的作者", Source: 6, TotalNum: departmentFollowNum}, {PermissionName: "搜索", Source: 7, TotalNum: keyWordNum}, {PermissionName: "音视频播放", Source: 9, TotalNum: roadshowTotal}, {PermissionName: "首页标签点击", Source: 10, TotalNum: tagNum}} resp := new(cygx.CygxUserTableListRep) resp.List = List br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 添加/取消用户提醒 // @Description 添加/取消用户提醒 // @Param request body cygx.UserRemarAddReq true "type json string" // @Success 200 新增成功 // @router /user/remind [post] func (this *UserController) UserRemind() { 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.UserRemarAddReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } userId := req.UserId sourceType := req.SourceType doType := req.DoType wxUser, err := cygx.GetUserAndCompanyNameList(userId) if err != nil { br.Msg = "设置互动提醒失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } if sourceType != 1 && sourceType != 2 { br.Msg = "设置互动提醒失败" br.ErrMsg = "设置互动提醒失败,sourceType:" + strconv.Itoa(sourceType) return } if doType != 1 && doType != 2 { br.Msg = "设置互动提醒失败" br.ErrMsg = "设置互动提醒失败,doType:" + strconv.Itoa(doType) return } count, err := cygx.GetCygxUserRemindCount(userId) if err != nil { br.Msg = "获取数据失败!" br.ErrMsg = "获取数据失败,Err:" + err.Error() return } resp := new(cygx.CygxUserRemindResp) if count <= 0 { var items []*cygx.CygxUserRemind if sourceType == 1 { item := new(cygx.CygxUserRemind) item.AdminId = sysUser.AdminId item.AdminName = sysUser.RealName item.UserId = userId item.Mobile = wxUser.Mobile item.Email = wxUser.Email item.CompanyId = wxUser.CompanyId item.CompanyName = wxUser.CompanyName item.RealName = wxUser.RealName item.CreateTime = time.Now() item.ModifyTime = time.Now() items = append(items, item) } else { //获取机构下所有的用户 listUser, err := models.GetWxUserListCompanyId(wxUser.CompanyId) if err != nil { br.Msg = "获取数据失败!" br.ErrMsg = "获取数据失败,GetWxUserListCompanyId Err:" + err.Error() return } //获取已经添加消息提醒的 listUserRemind, err := cygx.GetCygxUserRemindListByCompanyId(wxUser.CompanyId) if err != nil { br.Msg = "获取数据失败!" br.ErrMsg = "获取数据失败,GetCygxUserRemindListByCompanyId Err:" + err.Error() return } mapUserRemind := make(map[int]bool) for _, v := range listUserRemind { mapUserRemind[v.UserId] = true } for _, v := range listUser { //如果已经添加了提醒的用户就不做添加处理 if mapUserRemind[v.UserId] { continue } item := new(cygx.CygxUserRemind) item.AdminId = sysUser.AdminId item.AdminName = sysUser.RealName item.UserId = v.UserId item.Mobile = v.Mobile item.Email = v.Email item.CompanyId = v.CompanyId item.CompanyName = v.CompanyName item.RealName = v.RealName item.CreateTime = time.Now() item.ModifyTime = time.Now() items = append(items, item) } } //批量加入 err = cygx.AddCygxUserRemindMulti(items) if err != nil { br.Msg = "添加失败" br.ErrMsg = "添加失败,Err:" + err.Error() return } br.Msg = "收藏成功" resp.Status = 1 } else { if sourceType == 1 { err = cygx.RemoveCygxUserRemind(userId) //取消个人提醒 } else { err = cygx.RemoveCygxUserRemindByCompanyId(wxUser.CompanyId) //取消整个机构提醒 } if err != nil { br.Msg = "取消失败" br.ErrMsg = "取消失败,Err:" + err.Error() return } br.Msg = "已取消收藏" resp.Status = 2 } br.Ret = 200 br.Success = true br.Data = resp }