Browse Source

Merge branch 'master' of http://8.136.199.33:3000/hongze/hz_crm_api into crm/crm_14.2

xingzai 1 year ago
parent
commit
ef9359d701
100 changed files with 6674 additions and 2416 deletions
  1. 1 1
      .gitignore
  2. 2 2
      controllers/base_auth.go
  3. 107 0
      controllers/company_apply.go
  4. 384 151
      controllers/company_user.go
  5. 108 54
      controllers/cygx/activity_meet.go
  6. 292 100
      controllers/cygx/activity_signup.go
  7. 12 7
      controllers/cygx/activity_special_trip.go
  8. 2 2
      controllers/cygx/advice.go
  9. 9 4
      controllers/cygx/apply_record.go
  10. 1198 0
      controllers/cygx/contract_allocation.go
  11. 1 1
      controllers/cygx/industrial_subject.go
  12. 81 21
      controllers/cygx/interview_apply.go
  13. 16 15
      controllers/cygx/report_article.go
  14. 32 6
      controllers/cygx/report_selection.go
  15. 20 27
      controllers/cygx/search_keyword.go
  16. 11 6
      controllers/cygx/summary_manage.go
  17. 117 12
      controllers/cygx/user.go
  18. 296 0
      controllers/cygx/yanxuan_special.go
  19. 2 1
      controllers/day_new.go
  20. 59 50
      controllers/eta_business/eta_business.go
  21. 505 34
      controllers/eta_business/eta_business_menu.go
  22. 726 0
      controllers/eta_training_video/eta_training_video.go
  23. 404 0
      controllers/eta_training_video/eta_training_video_classify.go
  24. 346 0
      controllers/eta_training_video/eta_training_video_tag.go
  25. 1 13
      controllers/roadshow/company.go
  26. 1 1
      controllers/sys_role.go
  27. 3 3
      controllers/user_login.go
  28. 23 1
      models/chart_permission.go
  29. 16 0
      models/company/company_apply.go
  30. 23 0
      models/company/company_product.go
  31. 104 309
      models/company/company_user.go
  32. 16 70
      models/cygx/activity.go
  33. 18 39
      models/cygx/activity_appointment.go
  34. 12 4
      models/cygx/activity_ask_email.go
  35. 17 29
      models/cygx/activity_attendance_detail.go
  36. 2 2
      models/cygx/activity_fastsearch_keywords.go
  37. 13 27
      models/cygx/activity_help_ask.go
  38. 37 196
      models/cygx/activity_meet.go
  39. 10 149
      models/cygx/activity_meet_detail_log.go
  40. 8 8
      models/cygx/activity_meeting_history.go
  41. 6 21
      models/cygx/activity_meeting_reminder.go
  42. 6 6
      models/cygx/activity_offline_meeting_detail.go
  43. 5 5
      models/cygx/activity_points_bill.go
  44. 2 2
      models/cygx/activity_points_company.go
  45. 3 3
      models/cygx/activity_points_set.go
  46. 1 1
      models/cygx/activity_poster.go
  47. 7 7
      models/cygx/activity_restrict_signup.go
  48. 2 2
      models/cygx/activity_signin.go
  49. 41 113
      models/cygx/activity_signup.go
  50. 3 3
      models/cygx/activity_signup_break.go
  51. 6 4
      models/cygx/activity_signup_detail.go
  52. 43 92
      models/cygx/activity_special.go
  53. 6 6
      models/cygx/activity_special_day.go
  54. 8 8
      models/cygx/activity_special_meeting_detail.go
  55. 20 27
      models/cygx/activity_special_trip.go
  56. 25 29
      models/cygx/activity_special_trip_bill.go
  57. 3 3
      models/cygx/activity_type.go
  58. 3 3
      models/cygx/activity_user_remarks.go
  59. 9 9
      models/cygx/activity_video.go
  60. 7 7
      models/cygx/activity_voice.go
  61. 4 9
      models/cygx/advice.go
  62. 250 0
      models/cygx/allocation_company_contract.go
  63. 6 22
      models/cygx/apply_record.go
  64. 3 4
      models/cygx/article_ask.go
  65. 6 30
      models/cygx/article_comment.go
  66. 18 22
      models/cygx/article_department.go
  67. 8 8
      models/cygx/article_type.go
  68. 10 10
      models/cygx/banner.go
  69. 4 4
      models/cygx/banner_history.go
  70. 3 3
      models/cygx/banner_img.go
  71. 46 47
      models/cygx/chart.go
  72. 11 11
      models/cygx/chart_permission.go
  73. 92 0
      models/cygx/company_contract.go
  74. 6 6
      models/cygx/company_user_type.go
  75. 6 6
      models/cygx/config.go
  76. 6 6
      models/cygx/cygx_activity_special_points_company.go
  77. 11 11
      models/cygx/cygx_morning_meeting_review_chapter.go
  78. 13 13
      models/cygx/cygx_morning_meeting_reviews.go
  79. 8 8
      models/cygx/cygx_report_mapping.go
  80. 11 11
      models/cygx/cygx_tag.go
  81. 55 65
      models/cygx/cygx_user.go
  82. 125 127
      models/cygx/cygx_user_company.go
  83. 283 94
      models/cygx/cygx_user_record.go
  84. 151 0
      models/cygx/cygx_yanxuan_special.go
  85. 78 0
      models/cygx/cygx_yanxuan_special_user.go
  86. 9 10
      models/cygx/industrial_activity_group_management.go
  87. 7 8
      models/cygx/industrial_activity_group_subject.go
  88. 9 11
      models/cygx/industrial_analyst.go
  89. 9 11
      models/cygx/industrial_article_group_management.go
  90. 5 5
      models/cygx/industrial_article_group_subject.go
  91. 49 45
      models/cygx/industrial_management.go
  92. 23 25
      models/cygx/industrial_subject.go
  93. 34 6
      models/cygx/industry_fllow.go
  94. 11 11
      models/cygx/industry_map.go
  95. 2 2
      models/cygx/interface_log.go
  96. 8 12
      models/cygx/interview_apply.go
  97. 28 30
      models/cygx/micro_roadshow.go
  98. 12 13
      models/cygx/minutes_summary.go
  99. 4 5
      models/cygx/minutes_summary_log.go
  100. 9 9
      models/cygx/product_interior.go

+ 1 - 1
.gitignore

@@ -15,4 +15,4 @@
 *DS_Store
 /static/images/*.svg
 hz_crm_api.exe
-hz_crm_api.exe~
+hz_crm_api.exe~

+ 2 - 2
controllers/base_auth.go

@@ -185,10 +185,10 @@ func (this *BaseAuthController) Prepare() {
 					this.StopRun()
 					return
 				}
-				utils.Rc.Put(loginKey, "1", 30*time.Minute)
+				utils.Rc.Put(loginKey, "1", utils.LoginCacheTime*time.Minute)
 				// 不信任名单也同步更新
 				noTrustLoginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN_NO_TRUST, admin.AdminId)
-				utils.Rc.Put(noTrustLoginKey, session.Id, 30*time.Minute)
+				utils.Rc.Put(noTrustLoginKey, session.Id, utils.LoginCacheTime*time.Minute)
 			}
 
 			admin.RoleTypeCode = GetSysUserRoleTypeCode(admin.RoleTypeCode)

+ 107 - 0
controllers/company_apply.go

@@ -2306,3 +2306,110 @@ func (this *CompanyApplyController) GetLastContractDetailWithoutDate() {
 	br.Msg = "获取成功"
 	br.Data = contractInfo
 }
+
+// @Title 申请服务更新-签约历史(单个详情)
+// @Description 申请服务更新-签约历史接口(单个详情)
+// @Param   ContractCode   query   string  true       "合同编码"
+// @Success 200 {object} company.CompanyContractHistoryResp
+// @router /apply/contract/history/detail [get]
+func (this *CompanyApplyController) ApplyContractHistoryDetail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	contractCode := this.GetString("ContractCode")
+	if contractCode == "" {
+		br.Msg = "参数错误"
+		br.ErrMsg = "参数错误,客户id小于等于0"
+		return
+	}
+	roleTypeCode := sysUser.RoleTypeCode
+	productId := services.GetProductId(roleTypeCode)
+
+	list, err := company.GetCompanyContractHistoryListByContractCode(contractCode)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取信息失败,Err:" + err.Error()
+		return
+	}
+	listLen := len(list)
+	if listLen == 0 {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "签约信息不存在 contractCode:" + contractCode
+		return
+	}
+	expMap := map[int]string{0: "(3w)", 1: "(5w)"} // 买方研选价格
+	for i := 0; i < listLen; i++ {
+		companyContract := list[i]
+		list[i].ModifyTimeStr = companyContract.ModifyTime.Format(utils.FormatDateTime)
+		productId = list[i].ProductId
+		if productId == utils.COMPANY_PRODUCT_RAI_ID {
+			//classifyName := "权益"
+			checkList := make([]int, 0)
+			plist := new(company.ContractPermissionList)
+			hasPermissions, e := company.GetCompanyContractPermissionByCompanyContractId(companyContract.CompanyContractId)
+			if e != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取合同权限信息失败,Err:" + e.Error()
+				return
+			}
+			hasMap := make(map[int]*company.CompanyContractPermission)
+			for _, p := range hasPermissions {
+				hasMap[p.ChartPermissionId] = p
+			}
+			checkItems := make([]*company.PermissionLookItem, 0)
+			// PS:本来想把这个移到循环外面去优化一下...但是发现有指针引用变量被改掉的问题, BUG太多了改不完了先这样吧=_=!
+			raiPermissions, e := company.GetPermissionLookItemsExt("2", utils.COMPANY_PRODUCT_RAI_NAME)
+			if e != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取权益权限列表失败, Err: " + e.Error()
+				return
+			}
+
+			for _, n := range raiPermissions {
+				match := hasMap[n.ChartPermissionId]
+				if match == nil {
+					continue
+				}
+				// 升级
+				if match.IsUpgrade == 1 {
+					n.IsUpgrade = 1
+					checkList = append(checkList, n.ChartPermissionId)
+					checkItems = append(checkItems, n)
+					continue
+				}
+				// 买方研选(3w/5w)
+				if n.PermissionName == utils.CHART_PERMISSION_NAME_MF_YANXUAN {
+					n.PermissionName += expMap[match.ExpensiveYx]
+					checkList = append(checkList, n.ChartPermissionId)
+					checkItems = append(checkItems, n)
+					continue
+				}
+				checkList = append(checkList, n.ChartPermissionId)
+				checkItems = append(checkItems, n)
+			}
+			plist.Items = checkItems
+			plist.ClassifyName = utils.COMPANY_PRODUCT_RAI_NAME
+			plist.CheckList = checkList
+			list[i].PermissionList = append(list[i].PermissionList, plist)
+
+			// CRM8.8-权限主客观合并
+			newPermissionLookList := contractService.HandleEquityContractPermissionList(list[i].PermissionList)
+			list[i].PermissionList = newPermissionLookList
+		}
+	}
+	resp := new(company.CompanyContractHistoryResp)
+	resp.List = list
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 384 - 151
controllers/company_user.go

@@ -12,6 +12,7 @@ import (
 	"hongze/hz_crm_api/models/company_user"
 	"hongze/hz_crm_api/models/company_user/request"
 	"hongze/hz_crm_api/models/company_user/response"
+	"hongze/hz_crm_api/models/cygx"
 	"hongze/hz_crm_api/models/system"
 	"hongze/hz_crm_api/models/yb"
 	"hongze/hz_crm_api/services"
@@ -966,64 +967,64 @@ func (this *CompanyUserController) List() {
 		//}
 
 		//报告统计删除晨报部分统计加入每日资讯 2021-4-9
-		//手机号
-		userViewMobileTotalMap := make(map[string]*models.UserViewMobileTotalSlice)
-		userReportViewMobileTotalMap := make(map[string]*models.ReportViewMobileRecord)
-		userAdvisoryViewMobileTotalMap := make(map[string]*advisory.UserViewMobileTotalSlice)
-		userCygxArticleHistoryRecordViewMobileTotalMap := make(map[string]*models.UserViewMobileTotalSlice)
-		if len(mobilesSlice) > 0 {
-			//用户浏览数据
-			userViewMobileTotalList, _ := models.GetCountUserViewHistoryByMobiles(mobileStr)
-			for _, userViewMobile := range userViewMobileTotalList {
-				userViewMobileTotalMap[userViewMobile.Mobile] = userViewMobile
-			}
-
-			//每日点评手机号数据
-			userReportViewMobileTotalList, _ := models.GetReportViewMaxTimeByMobiles(mobileStr)
-			for _, userReportViewMobile := range userReportViewMobileTotalList {
-				userReportViewMobileTotalMap[userReportViewMobile.Mobile] = userReportViewMobile
-			}
-
-			//每日资讯
-			userAdvisoryViewMobileTotalList, _ := advisory.GetCountUserViewHistoryByMobiles(mobileStr)
-			//fmt.Println(userAdvisoryViewMobileTotalList)
-			for _, userAdvisoryViewMobile := range userAdvisoryViewMobileTotalList {
-				userAdvisoryViewMobileTotalMap[userAdvisoryViewMobile.Mobile] = userAdvisoryViewMobile
-			}
-			//查研观向
-			userCygxArticleHistoryRecordViewMobileTotalList, _ := models.GetCountCygxArticleHistoryRecordByMobiles(mobileStr)
-			for _, userCygxArticleHistoryRecordViewMobile := range userCygxArticleHistoryRecordViewMobileTotalList {
-				userCygxArticleHistoryRecordViewMobileTotalMap[userCygxArticleHistoryRecordViewMobile.Mobile] = userCygxArticleHistoryRecordViewMobile
-			}
-		}
+		////手机号
+		//userViewMobileTotalMap := make(map[string]*models.UserViewMobileTotalSlice)
+		//userReportViewMobileTotalMap := make(map[string]*models.ReportViewMobileRecord)
+		//userAdvisoryViewMobileTotalMap := make(map[string]*advisory.UserViewMobileTotalSlice)
+		//userCygxArticleHistoryRecordViewMobileTotalMap := make(map[string]*models.UserViewMobileTotalSlice)
+		//if len(mobilesSlice) > 0 {
+		//	//用户浏览数据
+		//	userViewMobileTotalList, _ := models.GetCountUserViewHistoryByMobiles(mobileStr)
+		//	for _, userViewMobile := range userViewMobileTotalList {
+		//		userViewMobileTotalMap[userViewMobile.Mobile] = userViewMobile
+		//	}
+		//
+		//	//每日点评手机号数据
+		//	userReportViewMobileTotalList, _ := models.GetReportViewMaxTimeByMobiles(mobileStr)
+		//	for _, userReportViewMobile := range userReportViewMobileTotalList {
+		//		userReportViewMobileTotalMap[userReportViewMobile.Mobile] = userReportViewMobile
+		//	}
+		//
+		//	//每日资讯
+		//	userAdvisoryViewMobileTotalList, _ := advisory.GetCountUserViewHistoryByMobiles(mobileStr)
+		//	//fmt.Println(userAdvisoryViewMobileTotalList)
+		//	for _, userAdvisoryViewMobile := range userAdvisoryViewMobileTotalList {
+		//		userAdvisoryViewMobileTotalMap[userAdvisoryViewMobile.Mobile] = userAdvisoryViewMobile
+		//	}
+		//	//查研观向
+		//	userCygxArticleHistoryRecordViewMobileTotalList, _ := models.GetCountCygxArticleHistoryRecordByMobiles(mobileStr)
+		//	for _, userCygxArticleHistoryRecordViewMobile := range userCygxArticleHistoryRecordViewMobileTotalList {
+		//		userCygxArticleHistoryRecordViewMobileTotalMap[userCygxArticleHistoryRecordViewMobile.Mobile] = userCygxArticleHistoryRecordViewMobile
+		//	}
+		//}
 
-		//邮箱
-		userViewEmailTotalMap := make(map[string]*models.UserViewEmailTotalSlice)
-		userReportViewEmailTotalMap := make(map[string]*models.ReportViewEmailRecord)
-		userAdvisoryViewEmailTotalMap := make(map[string]*advisory.UserViewEmailTotalSlice)
-		userCygxViewEmailTotalMap := make(map[string]*models.UserViewEmailTotalSlice)
-		if len(emailsSlice) > 0 {
-			//用户浏览数据
-			userViewEmailTotalList, _ := models.GetCountUserViewHistoryByEmails(emailStr)
-			for _, userViewEmail := range userViewEmailTotalList {
-				userViewEmailTotalMap[userViewEmail.Email] = userViewEmail
-			}
-			//每日点评手机号数据
-			userReportViewEmailTotalList, _ := models.GetReportViewMaxTimeByEmails(emailStr)
-			for _, userReportViewEmail := range userReportViewEmailTotalList {
-				userReportViewEmailTotalMap[userReportViewEmail.Email] = userReportViewEmail
-			}
-			//每日资讯
-			userAdvisoryViewEmailTotalList, _ := advisory.GetCountUserViewHistoryByEmails(emailStr)
-			for _, userAdvisoryViewEmail := range userAdvisoryViewEmailTotalList {
-				userAdvisoryViewEmailTotalMap[userAdvisoryViewEmail.Email] = userAdvisoryViewEmail
-			}
-			//查研观向
-			userCygxViewEmailTotalList, _ := models.GetCountCygxArticleHistoryRecordByEmails(emailStr)
-			for _, userCygxReportViewEmail := range userCygxViewEmailTotalList {
-				userCygxViewEmailTotalMap[userCygxReportViewEmail.Email] = userCygxReportViewEmail
-			}
-		}
+		////邮箱
+		//userViewEmailTotalMap := make(map[string]*models.UserViewEmailTotalSlice)
+		//userReportViewEmailTotalMap := make(map[string]*models.ReportViewEmailRecord)
+		//userAdvisoryViewEmailTotalMap := make(map[string]*advisory.UserViewEmailTotalSlice)
+		//userCygxViewEmailTotalMap := make(map[string]*models.UserViewEmailTotalSlice)
+		//if len(emailsSlice) > 0 {
+		//	//用户浏览数据
+		//	userViewEmailTotalList, _ := models.GetCountUserViewHistoryByEmails(emailStr)
+		//	for _, userViewEmail := range userViewEmailTotalList {
+		//		userViewEmailTotalMap[userViewEmail.Email] = userViewEmail
+		//	}
+		//	//每日点评手机号数据
+		//	userReportViewEmailTotalList, _ := models.GetReportViewMaxTimeByEmails(emailStr)
+		//	for _, userReportViewEmail := range userReportViewEmailTotalList {
+		//		userReportViewEmailTotalMap[userReportViewEmail.Email] = userReportViewEmail
+		//	}
+		//	//每日资讯
+		//	userAdvisoryViewEmailTotalList, _ := advisory.GetCountUserViewHistoryByEmails(emailStr)
+		//	for _, userAdvisoryViewEmail := range userAdvisoryViewEmailTotalList {
+		//		userAdvisoryViewEmailTotalMap[userAdvisoryViewEmail.Email] = userAdvisoryViewEmail
+		//	}
+		//	//查研观向
+		//	userCygxViewEmailTotalList, _ := models.GetCountCygxArticleHistoryRecordByEmails(emailStr)
+		//	for _, userCygxReportViewEmail := range userCygxViewEmailTotalList {
+		//		userCygxViewEmailTotalMap[userCygxReportViewEmail.Email] = userCygxReportViewEmail
+		//	}
+		//}
 
 		//获取联系人关联产品的条数
 		userSellerRelationTotalSlice, err := models.GetUserSellerRelationCountByUserIds(userIdStr)
@@ -1089,23 +1090,6 @@ func (this *CompanyUserController) List() {
 			item := list[i]
 			//企业名称
 			list[i].CompanyName = companyInfo.CompanyName
-			//手机号用户累计浏览次数
-			if userView, ok := userViewMobileTotalMap[item.Mobile]; ok {
-				list[i].ViewTotal += userView.Total
-				if userView.CreatedTime.After(list[i].LastViewTime) {
-					list[i].LastViewTime = userView.CreatedTime
-					list[i].LastViewTimeStr = userView.CreatedTime.Format(utils.FormatDateTime)
-				}
-			}
-			//邮箱用户累计浏览次数
-			if userView, ok := userViewEmailTotalMap[item.Email]; ok {
-				//总共浏览的报表数据需要调整为(手机号用户浏览晨报数+邮箱号用户浏览晨报数)
-				list[i].ViewTotal += userView.Total
-				if userView.CreatedTime.After(list[i].LastViewTime) {
-					list[i].LastViewTime = userView.CreatedTime
-					list[i].LastViewTimeStr = userView.CreatedTime.Format(utils.FormatDateTime)
-				}
-			}
 
 			if item.OpenId != "" {
 				list[i].IsRegister = true
@@ -1120,78 +1104,111 @@ func (this *CompanyUserController) List() {
 					list[i].IsRegister = false
 				}
 			}
-			//如果存在手机号用户日评数据,那么需要做处理
-			if reportView, ok := userReportViewMobileTotalMap[item.Mobile]; ok {
-				//对日评数据做校验,日评时间晚于晨报时间,那么将最近一次浏览时间替换
-				if reportView.LastViewTime.After(list[i].LastViewTime) {
-					list[i].LastViewTime = reportView.LastViewTime
-					list[i].LastViewTimeStr = reportView.LastViewTime.Format(utils.FormatDateTime)
-				}
-				//总共浏览的报表数据需要调整为(浏览晨报数+浏览日评数)
-				list[i].ViewTotal += reportView.ViewTotal
-			}
-			//如果存在手机号用户日评数据,那么需要做处理
-			if reportView, ok := userReportViewEmailTotalMap[item.Email]; ok {
-				//对日评数据做校验,日评时间晚于晨报时间,那么将最近一次浏览时间替换
-				if reportView.LastViewTime.After(list[i].LastViewTime) {
-					list[i].LastViewTime = reportView.LastViewTime
-					list[i].LastViewTimeStr = reportView.LastViewTime.Format(utils.FormatDateTime)
-				}
-				//总共浏览的报表数据需要调整为(浏览晨报数+浏览日评数)
-				list[i].ViewTotal += reportView.ViewTotal
-			}
 
-			//如果存在手机号用户每日资讯,那么需要做处理
-			if advisoryView, ok := userAdvisoryViewMobileTotalMap[item.Mobile]; ok {
-				//fmt.Println("蝴蝶眨几次眼睛")
-				//对每日资讯数据做校验,每日资讯时间晚日评报时间,那么将最近一次浏览时间替换
-				if advisoryView.CreatedTime.After(list[i].LastViewTime) {
-					list[i].LastViewTime = advisoryView.CreatedTime
-					list[i].LastViewTimeStr = advisoryView.CreatedTime.Format(utils.FormatDateTime)
-				}
-				//总共浏览的报表数据需要调整为(浏览晨报数+浏览日评数+每日资讯数)
-				list[i].ViewTotal += advisoryView.Total
-			}
-			//如果存在邮箱号用户每日资讯,那么需要做处理
-			if advisoryView, ok := userAdvisoryViewEmailTotalMap[item.Email]; ok {
-				//对每日资讯数据做校验,每日资讯时间晚日评报时间,那么将最近一次浏览时间替换
-				if advisoryView.CreatedTime.After(list[i].LastViewTime) {
-					list[i].LastViewTime = advisoryView.CreatedTime
-					list[i].LastViewTimeStr = advisoryView.CreatedTime.Format(utils.FormatDateTime)
-				}
-				//总共浏览的报表数据需要调整为(浏览晨报数+浏览日评数+每日资讯数)
-				list[i].ViewTotal += advisoryView.Total
-			}
+			////手机号用户累计浏览次数
+			//if userView, ok := userViewMobileTotalMap[item.Mobile]; ok {
+			//	list[i].ViewTotal += userView.Total
+			//	if userView.CreatedTime.After(list[i].LastViewTime) {
+			//		list[i].LastViewTime = userView.CreatedTime
+			//		list[i].LastViewTimeStr = userView.CreatedTime.Format(utils.FormatDateTime)
+			//	}
+			//}
+			////邮箱用户累计浏览次数
+			//if userView, ok := userViewEmailTotalMap[item.Email]; ok {
+			//	//总共浏览的报表数据需要调整为(手机号用户浏览晨报数+邮箱号用户浏览晨报数)
+			//	list[i].ViewTotal += userView.Total
+			//	if userView.CreatedTime.After(list[i].LastViewTime) {
+			//		list[i].LastViewTime = userView.CreatedTime
+			//		list[i].LastViewTimeStr = userView.CreatedTime.Format(utils.FormatDateTime)
+			//	}
+			//}
+			////如果存在手机号用户日评数据,那么需要做处理
+			//if reportView, ok := userReportViewMobileTotalMap[item.Mobile]; ok {
+			//	//对日评数据做校验,日评时间晚于晨报时间,那么将最近一次浏览时间替换
+			//	if reportView.LastViewTime.After(list[i].LastViewTime) {
+			//		list[i].LastViewTime = reportView.LastViewTime
+			//		list[i].LastViewTimeStr = reportView.LastViewTime.Format(utils.FormatDateTime)
+			//	}
+			//	//总共浏览的报表数据需要调整为(浏览晨报数+浏览日评数)
+			//	list[i].ViewTotal += reportView.ViewTotal
+			//}
+			////如果存在手机号用户日评数据,那么需要做处理
+			//if reportView, ok := userReportViewEmailTotalMap[item.Email]; ok {
+			//	//对日评数据做校验,日评时间晚于晨报时间,那么将最近一次浏览时间替换
+			//	if reportView.LastViewTime.After(list[i].LastViewTime) {
+			//		list[i].LastViewTime = reportView.LastViewTime
+			//		list[i].LastViewTimeStr = reportView.LastViewTime.Format(utils.FormatDateTime)
+			//	}
+			//	//总共浏览的报表数据需要调整为(浏览晨报数+浏览日评数)
+			//	list[i].ViewTotal += reportView.ViewTotal
+			//}
+			//
+			////如果存在手机号用户每日资讯,那么需要做处理
+			//if advisoryView, ok := userAdvisoryViewMobileTotalMap[item.Mobile]; ok {
+			//	//fmt.Println("蝴蝶眨几次眼睛")
+			//	//对每日资讯数据做校验,每日资讯时间晚日评报时间,那么将最近一次浏览时间替换
+			//	if advisoryView.CreatedTime.After(list[i].LastViewTime) {
+			//		list[i].LastViewTime = advisoryView.CreatedTime
+			//		list[i].LastViewTimeStr = advisoryView.CreatedTime.Format(utils.FormatDateTime)
+			//	}
+			//	//总共浏览的报表数据需要调整为(浏览晨报数+浏览日评数+每日资讯数)
+			//	list[i].ViewTotal += advisoryView.Total
+			//}
+			////如果存在邮箱号用户每日资讯,那么需要做处理
+			//if advisoryView, ok := userAdvisoryViewEmailTotalMap[item.Email]; ok {
+			//	//对每日资讯数据做校验,每日资讯时间晚日评报时间,那么将最近一次浏览时间替换
+			//	if advisoryView.CreatedTime.After(list[i].LastViewTime) {
+			//		list[i].LastViewTime = advisoryView.CreatedTime
+			//		list[i].LastViewTimeStr = advisoryView.CreatedTime.Format(utils.FormatDateTime)
+			//	}
+			//	//总共浏览的报表数据需要调整为(浏览晨报数+浏览日评数+每日资讯数)
+			//	list[i].ViewTotal += advisoryView.Total
+			//}
+			//
+			////如果存在手机号用户查研观向,那么需要做处理
+			//if cygxView, ok := userCygxArticleHistoryRecordViewMobileTotalMap[item.Mobile]; ok {
+			//	//对每日资讯数据做校验,每日资讯时间晚日评报时间,那么将最近一次浏览时间替换
+			//	if cygxView.CreatedTime.After(list[i].LastViewTime) {
+			//		list[i].LastViewTime = cygxView.CreatedTime
+			//		list[i].LastViewTimeStr = cygxView.CreatedTime.Format(utils.FormatDateTime)
+			//	}
+			//	//总共浏览的报表数据需要调整为(浏览晨报数+浏览日评数+每日资讯数+查研观向)
+			//	list[i].ViewTotal += cygxView.Total
+			//}
+			////如果存在邮箱号用户查研观向,那么需要做处理
+			//if cygxView, ok := userCygxViewEmailTotalMap[item.Email]; ok {
+			//	//对每日资讯数据做校验,每日资讯时间晚日评报时间,那么将最近一次浏览时间替换
+			//	if cygxView.CreatedTime.After(list[i].LastViewTime) {
+			//		list[i].LastViewTime = cygxView.CreatedTime
+			//		list[i].LastViewTimeStr = cygxView.CreatedTime.Format(utils.FormatDateTime)
+			//	}
+			//	//总共浏览的报表数据需要调整为(浏览晨报数+浏览日评数+每日资讯数+查研观向)
+			//	list[i].ViewTotal += cygxView.Total
+			//}
+			///*if reportView, ok := userReportViewTotalMap[int(item.UserId)]; ok {
+			//	//对日评数据做校验,日评时间晚于晨报时间,那么将最近一次浏览时间替换
+			//	if reportView.LastViewTime.After(list[i].LastViewTime) {
+			//		list[i].LastViewTime = reportView.LastViewTime
+			//		list[i].LastViewTimeStr = reportView.LastViewTime.Format(utils.FormatDateTime)
+			//	}
+			//	//总共浏览的报表数据需要调整为(浏览晨报数+浏览日评数)
+			//	list[i].ViewTotal += reportView.ViewTotal
+			//}*/
 
-			//如果存在手机号用户查研观向,那么需要做处理
-			if cygxView, ok := userCygxArticleHistoryRecordViewMobileTotalMap[item.Mobile]; ok {
-				//对每日资讯数据做校验,每日资讯时间晚日评报时间,那么将最近一次浏览时间替换
-				if cygxView.CreatedTime.After(list[i].LastViewTime) {
-					list[i].LastViewTime = cygxView.CreatedTime
-					list[i].LastViewTimeStr = cygxView.CreatedTime.Format(utils.FormatDateTime)
+			list[i].ViewTotal = list[i].FiccViewTotal + list[i].RaiViewTotal
+			var tmpLastViewTime time.Time
+			tmpLastViewTime = list[i].FiccLastViewTime
+
+			if !list[i].RaiLastViewTime.IsZero() {
+				if tmpLastViewTime.IsZero() || list[i].RaiLastViewTime.After(tmpLastViewTime) {
+					tmpLastViewTime = list[i].RaiLastViewTime
 				}
-				//总共浏览的报表数据需要调整为(浏览晨报数+浏览日评数+每日资讯数+查研观向)
-				list[i].ViewTotal += cygxView.Total
 			}
-			//如果存在邮箱号用户查研观向,那么需要做处理
-			if cygxView, ok := userCygxViewEmailTotalMap[item.Email]; ok {
-				//对每日资讯数据做校验,每日资讯时间晚日评报时间,那么将最近一次浏览时间替换
-				if cygxView.CreatedTime.After(list[i].LastViewTime) {
-					list[i].LastViewTime = cygxView.CreatedTime
-					list[i].LastViewTimeStr = cygxView.CreatedTime.Format(utils.FormatDateTime)
-				}
-				//总共浏览的报表数据需要调整为(浏览晨报数+浏览日评数+每日资讯数+查研观向)
-				list[i].ViewTotal += cygxView.Total
+
+			list[i].LastViewTime = tmpLastViewTime
+			if !tmpLastViewTime.IsZero() {
+				list[i].LastViewTimeStr = tmpLastViewTime.Format(utils.FormatDateTime)
 			}
-			/*if reportView, ok := userReportViewTotalMap[int(item.UserId)]; ok {
-				//对日评数据做校验,日评时间晚于晨报时间,那么将最近一次浏览时间替换
-				if reportView.LastViewTime.After(list[i].LastViewTime) {
-					list[i].LastViewTime = reportView.LastViewTime
-					list[i].LastViewTimeStr = reportView.LastViewTime.Format(utils.FormatDateTime)
-				}
-				//总共浏览的报表数据需要调整为(浏览晨报数+浏览日评数)
-				list[i].ViewTotal += reportView.ViewTotal
-			}*/
 
 			//如果有绑定数据,那么将数据返回对应的注册绑定数据
 			if _, ok := userRecordRegisterMap[int(item.UserId)]; ok {
@@ -2910,10 +2927,13 @@ Loop:
 	br.Data = resp
 }
 
+// ViewReportList
 // @Title 联系人阅读报告记录
 // @Description 联系人阅读报告记录
 // @Param   UserId   query   int  true       "用户id"
 // @Param   TxtType   query   int  true       "类型0全部,1权益,2ficc"
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   LastViewTime   query   string  true       "最近一次的阅读时间,没有的话,那就是获取最新数据"
 // @Success 200 {object} company.ViewReportListResp
 // @router /view/report/list [get]
 func (this *CompanyUserController) ViewReportList() {
@@ -2931,10 +2951,16 @@ func (this *CompanyUserController) ViewReportList() {
 	}
 	userId, _ := this.GetInt("UserId")
 	txtType, _ := this.GetInt("TxtType")
+	pageSize, _ := this.GetInt("PageSize")
+	lastViewTime := this.GetString("LastViewTime")
 	if userId <= 0 {
 		br.Msg = "参数错误"
 		return
 	}
+	// 默认20条数据
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
 
 	item, err := models.GetWxUserByUserId(userId)
 	if err != nil {
@@ -2943,28 +2969,235 @@ func (this *CompanyUserController) ViewReportList() {
 		return
 	}
 
-	list := make([]*company.ViewReportList, 0)
-
-	if item.Mobile != "" {
-		items, err := company.GetViewReportListByMobile(item.Mobile, txtType)
+	var lastViewTimeT time.Time
+	if lastViewTime != `` {
+		lastViewTimeT, err = time.ParseInLocation(utils.FormatDateTime, lastViewTime, time.Local)
 		if err != nil {
 			br.Msg = "获取失败"
-			br.Msg = "获取失败,Err:" + err.Error()
+			br.Msg = "最近一次阅读时间转换异常,Err:" + err.Error()
 			return
 		}
-		list = append(list, items...)
 	}
 
-	if item.Email != "" && item.Mobile == "" {
-		items, err := company.GetViewReportListByEmail2(item.Email, txtType)
+	list := make([]*company.ViewReportList, 0)
+	recordList := make([]*models.UserReportViewRecord, 0)
+
+	obj := models.UserReportViewRecord{}
+
+	var baseCondition string // 基础条件
+	var basePars []interface{}
+	if item.Mobile != "" {
+		baseCondition = ` AND mobile = ? `
+		basePars = append(basePars, item.Mobile)
+	} else if item.Email == "" {
+		baseCondition = ` AND email = ? `
+		basePars = append(basePars, item.Email)
+	}
+
+	// 阅读记录汇总数
+	total := item.FiccViewTotal + item.RaiViewTotal
+
+	switch txtType {
+	case 1:
+		baseCondition += ` AND source = ? `
+		basePars = append(basePars, 4)
+
+		total = item.RaiViewTotal
+		if lastViewTimeT.IsZero() {
+			if item.RaiLastViewTime != `` && item.RaiLastViewTime != `0000-00-00 00:00:00` {
+				lastViewTimeT, _ = time.ParseInLocation(utils.FormatDateTime, item.RaiLastViewTime, time.Local)
+			} else {
+				lastViewTimeT = time.Now()
+			}
+			lastViewTime = lastViewTimeT.Format(utils.FormatDateTime)
+		}
+	// 权益
+	case 2: // ficc
+		baseCondition += ` AND source in (?,?,?) `
+		basePars = append(basePars, 1, 2, 3)
+		total = item.FiccViewTotal
+
+		if lastViewTimeT.IsZero() {
+			if item.FiccLastViewTime != `` && item.FiccLastViewTime != `0000-00-00 00:00:00` {
+				lastViewTimeT, _ = time.ParseInLocation(utils.FormatDateTime, item.FiccLastViewTime, time.Local)
+			} else {
+				lastViewTimeT = time.Now()
+			}
+			lastViewTime = lastViewTimeT.Format(utils.FormatDateTime)
+		}
+	default:
+		if lastViewTimeT.IsZero() {
+			var ficcViewTime, raiViewTime time.Time
+			if item.FiccLastViewTime != `` && item.FiccLastViewTime != `0000-00-00 00:00:00` {
+				ficcViewTime, _ = time.ParseInLocation(utils.FormatDateTime, item.FiccLastViewTime, time.Local)
+			}
+			if item.RaiLastViewTime != `` && item.RaiLastViewTime != `0000-00-00 00:00:00` {
+				raiViewTime, _ = time.ParseInLocation(utils.FormatDateTime, item.RaiLastViewTime, time.Local)
+			}
+
+			// 如果两个都没有值的话,那么就是当前时间
+			if ficcViewTime.IsZero() && raiViewTime.IsZero() {
+				lastViewTimeT = time.Now()
+			} else if !ficcViewTime.IsZero() && !raiViewTime.IsZero() {
+				if ficcViewTime.After(raiViewTime) {
+					lastViewTimeT = ficcViewTime
+				} else {
+					lastViewTimeT = raiViewTime
+				}
+			} else if !ficcViewTime.IsZero() {
+				lastViewTimeT = ficcViewTime
+			} else {
+				lastViewTimeT = raiViewTime
+			}
+			// 默认要把最新的记录列出来,所以往后加1s
+			lastViewTime = lastViewTimeT.Add(1 * time.Second).Format(utils.FormatDateTime)
+		}
+	}
+
+	// 开始实际的查询
+	{
+		condition := baseCondition
+		pars := basePars
+
+		condition += `AND create_time <  ?`
+		pars = append(pars, lastViewTime)
+
+		total, items, err := obj.GetViewReportList(lastViewTimeT.Year(), condition, pars, pageSize)
 		if err != nil {
 			br.Msg = "获取失败"
 			br.Msg = "获取失败,Err:" + err.Error()
 			return
 		}
-		list = append(list, items...)
+
+		recordList = append(recordList, items...)
+
+		// 查询去年的表
+		if total < int64(pageSize) {
+			secondCondition := baseCondition
+			secondPars := basePars
+
+			secondCondition += `AND create_time <  ?`
+			secondPars = append(secondPars, lastViewTime)
+
+			_, items, err = obj.GetViewReportList(lastViewTimeT.Year(), secondCondition, secondPars, int(total)-pageSize)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.Msg = "获取失败,Err:" + err.Error()
+				return
+			}
+
+			recordList = append(recordList, items...)
+		}
+	}
+
+	viewReportMap := make(map[string]company.ViewReportList) // 阅读记录map
+	sourceReportIdListMap := make(map[int8][]int)
+
+	for _, v := range recordList {
+		tmpList, ok := sourceReportIdListMap[v.Source]
+		if !ok {
+			tmpList = make([]int, 0)
+		}
+		tmpList = append(tmpList, v.ReportId)
+		sourceReportIdListMap[v.Source] = tmpList
+
+		tmpTxtType := `ficc`
+		if v.Source == 4 {
+			tmpTxtType = `rights`
+		}
+		stopTime := `--`
+		if v.StopTime > 0 {
+			stopTime = fmt.Sprint(stopTime)
+		}
+		viewReportMap[fmt.Sprint(v.Source, "_", v.ReportId)] = company.ViewReportList{
+			ResearchReportName: "",
+			ReportType:         "",
+			CreatedTime:        v.CreateTime,
+			TxtType:            tmpTxtType,
+			MatchTypeName:      "--",
+			StopTime:           stopTime,
+		}
+	}
+
+	// 获取报告详情
+	for source, reportIdList := range sourceReportIdListMap {
+		switch source {
+		case 1: // rddp报告
+			tmpReportList, err := models.GetReportByIdList(reportIdList)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.Msg = "获取weekly报告详情失败,Err:" + err.Error()
+				return
+			}
+			for _, v := range tmpReportList {
+				tmpKey := fmt.Sprint(source, "_", v.Id)
+				if tmpInfo, ok := viewReportMap[tmpKey]; ok {
+					tmpInfo.ResearchReportName = v.Title
+					tmpInfo.ReportType = `rddp`
+					tmpInfo.MatchTypeName = v.ClassifyNameFirst
+					viewReportMap[tmpKey] = tmpInfo
+				}
+			}
+		case 2: // weekly报告
+			tmpReportList, err := models.GetResearchReportListByIdList(reportIdList)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.Msg = "获取weekly报告详情失败,Err:" + err.Error()
+				return
+			}
+			for _, v := range tmpReportList {
+				tmpKey := fmt.Sprint(source, "_", v.ResearchReportId)
+				if tmpInfo, ok := viewReportMap[tmpKey]; ok {
+					tmpInfo.ResearchReportName = v.ResearchReportName
+					tmpInfo.ReportType = v.Type
+					viewReportMap[tmpKey] = tmpInfo
+				}
+			}
+		case 3: // weekly_report商品的报告(应该是作废了);
+			tmpReportList, err := models.GetChartPermissionByIdList(reportIdList)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.Msg = "获取weekly报告详情失败,Err:" + err.Error()
+				return
+			}
+			for _, v := range tmpReportList {
+				tmpKey := fmt.Sprint(source, "_", v.ChartPermissionId)
+				if tmpInfo, ok := viewReportMap[tmpKey]; ok {
+					tmpInfo.ResearchReportName = v.ChartPermissionName
+					tmpInfo.ReportType = `advisory`
+					tmpInfo.MatchTypeName = v.ClassifyName
+					viewReportMap[tmpKey] = tmpInfo
+				}
+			}
+		case 4: // 察研观向的报告
+			tmpReportList, err := cygx.GetArticleListByIdList(reportIdList)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.Msg = "获取weekly报告详情失败,Err:" + err.Error()
+				return
+			}
+			for _, v := range tmpReportList {
+				tmpKey := fmt.Sprint(source, "_", v.ArticleId)
+				if tmpInfo, ok := viewReportMap[tmpKey]; ok {
+					tmpInfo.ResearchReportName = v.Title
+					tmpInfo.ReportType = `cygx`
+					tmpInfo.MatchTypeName = v.MatchTypeName
+					viewReportMap[tmpKey] = tmpInfo
+				}
+			}
+
+		}
+	}
+
+	// 报告标题处理
+	for _, v := range recordList {
+		tmpKey := fmt.Sprint(v.Source, "_", v.ReportId)
+		if tmpInfo, ok := viewReportMap[tmpKey]; ok {
+			list = append(list, &tmpInfo)
+		}
 	}
 
+	// 类型处理
 	for k, v := range list {
 		if v.ReportType == "day" {
 			list[k].MatchTypeName = "晨报"
@@ -2990,7 +3223,7 @@ func (this *CompanyUserController) ViewReportList() {
 	}
 	resp := new(company.ViewReportListResp)
 	resp.List = list
-	resp.Total = len(list)
+	resp.Total = total
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"

+ 108 - 54
controllers/cygx/activity_meet.go

@@ -10,6 +10,7 @@ import (
 	"hongze/hz_crm_api/models/company"
 	"hongze/hz_crm_api/models/cygx"
 	"hongze/hz_crm_api/models/system"
+	"hongze/hz_crm_api/services"
 	"hongze/hz_crm_api/services/alarm_msg"
 	cygxService "hongze/hz_crm_api/services/cygx"
 	"hongze/hz_crm_api/utils"
@@ -351,17 +352,17 @@ func (this *ActivityMeetCoAntroller) MeetingDo() {
 		br.ErrMsg = "操作失败,Err:" + errInfo.Error()
 		return
 	}
-	//校验活动后台管理员、销售是否有修改权限
-	havePower, popupMsg, err := cygxService.CheckActivityUpdatePower(AdminUser.AdminId, activityInfo)
-	if err != nil {
-		br.Msg = "获取管理员身份信息失败"
-		br.ErrMsg = "获取管理员身份信息失败,Err:" + err.Error()
-		return
-	}
-	if !havePower {
-		br.Msg = popupMsg
-		return
-	}
+	////校验活动后台管理员、销售是否有修改权限
+	//havePower, popupMsg, err := cygxService.CheckActivityUpdatePower(AdminUser.AdminId, activityInfo)
+	//if err != nil {
+	//	br.Msg = "获取管理员身份信息失败"
+	//	br.ErrMsg = "获取管理员身份信息失败,Err:" + err.Error()
+	//	return
+	//}
+	//if !havePower {
+	//	br.Msg = popupMsg
+	//	return
+	//}
 	noMeetingUids, err := cygx.GetSignupUserIds(activityId, meetingUids) //未到会的用户ID
 	if err != nil {
 		br.Msg = "获取信息失败"
@@ -512,6 +513,8 @@ func (this *ActivityMeetCoAntroller) OfflineMeetingList() {
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
+
+	var mobileArr []string
 	resp := new(cygx.CygxActivitySignupListRep)
 	if len(list) == 0 {
 		list = make([]*cygx.CygxActivitySignupList, 0)
@@ -526,6 +529,25 @@ func (this *ActivityMeetCoAntroller) OfflineMeetingList() {
 			if list[k].Channel == 0 && list[k].IsMeeting == 1 {
 				list[k].IsAirborne = 1
 			}
+			mobileArr = append(mobileArr, v.Mobile)
+		}
+	}
+	mapMobileUser := make(map[string]string)
+
+	if len(mobileArr) > 0 {
+
+		listUser, err := models.GetWxUserListByUserMobileHaveCompany(mobileArr)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetWxUserListByUserMobileHaveCompany Err:" + err.Error()
+			return
+		}
+		for _, v := range listUser {
+			mapMobileUser[v.Mobile] = v.RealName
+		}
+
+		for _, v := range list {
+			v.RealName = mapMobileUser[v.Mobile]
 		}
 	}
 
@@ -616,19 +638,32 @@ func (this *ActivityMeetCoAntroller) BreakAppointment() {
 	var list []*cygx.CygxBreakAppointmentList
 	var err error
 	if respDownload.IsCanDownload == false {
-		if adminInfo.RoleTypeCode == "rai_group" {
-			//组长查看本组所有组员
-			condition = ` AND s.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(sysUser.AdminId) + ` ) )) `
-		} else {
-			//组员查看自己
-			condition = ` AND s.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(sysUser.AdminId) + `) `
+		//if adminInfo.RoleTypeCode == "rai_group" {
+		//	//组长查看本组所有组员
+		//	condition = ` AND s.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(sysUser.AdminId) + ` ) )) `
+		//} else {
+		//	//组员查看自己
+		//	condition = ` AND s.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(sysUser.AdminId) + `) `
+		//}
+
+		//权益申请销售只能看到自己名下的客户的申请
+		companyIds, err := cygxService.GetAdminLookUserCompanyIds(sysUser)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
+			return
+		}
+		var companyIdstr []string
+		for _, v := range companyIds {
+			companyIdstr = append(companyIdstr, strconv.Itoa(v))
 		}
+		condition += ` AND s.company_id IN (` + strings.Join(companyIdstr, ",") + `) `
 	}
 	if keyWord != "" {
 		condition += ` AND (s.company_name LIKE '%` + keyWord + `%' OR s.mobile LIKE '%` + keyWord + `%') `
 	}
 	if sellerName != "" {
-		condition += ` 	AND p.seller_name = '` + sellerName + `' `
+		condition += ` 	AND s.seller_name = '` + sellerName + `' `
 	}
 	condition += ` AND a.is_limit_people > 0  `
 	total, err := cygx.GetCygxBreakAppointmentCount(condition, pars)
@@ -870,17 +905,6 @@ func (this *ActivityMeetCoAntroller) AppointmentList() {
 	}
 	sqlStr := `  AND s.do_fail_type = 0`
 	memberType := "Admin"
-	if resp.IsCanDownload == false {
-		if adminInfo.RoleTypeCode == "rai_group" {
-			//组长查看本组所有组员
-			memberType = "GroupLeader"
-			sqlStr += ` AND s.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(sysUser.AdminId) + ` ) )) `
-		} else {
-			//组员查看自己
-			memberType = "Sale"
-			sqlStr += ` AND s.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(sysUser.AdminId) + `) `
-		}
-	}
 
 	list, err := cygx.GetCygxAppointmentList(activityId, sqlStr)
 	if err != nil {
@@ -905,6 +929,26 @@ func (this *ActivityMeetCoAntroller) AppointmentList() {
 		list[k].SellerName = v.PsellerName
 	}
 	respList := new(cygx.GetAppointmentListRep)
+	//销售查看自己客户,销售组长查看组员
+	if resp.IsCanDownload == false {
+		mapMobile, err := cygxService.GetAdminLookUserMobile(adminInfo)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,销售对应权限,Err:" + err.Error()
+			return
+		}
+		for _, v := range list {
+			if _, ok := mapMobile[v.Mobile]; ok {
+				respList.List = append(respList.List, v)
+			}
+		}
+	} else {
+		respList.List = list
+	}
+	if len(respList.List) == 0 {
+		respList.List = make([]*cygx.CygxAppointmentList, 0)
+	}
+
 	respList.List = list
 	respList.Total = total
 	respList.MyTotal = myTotal
@@ -912,8 +956,7 @@ func (this *ActivityMeetCoAntroller) AppointmentList() {
 	respList.MemberType = memberType
 	respList.IsLimitPeople = activityInfo.IsLimitPeople
 	activityTypeId := activityInfo.ActivityTypeId
-	fmt.Println(activityTypeId)
-	//ExcelType     string `description:"EXcel下载类型 AppointmentCall:预约外呼、ExpertSalon:专家沙龙报名、Teleconference:公司调研电话会、OfflineResearch:公司线下调研  CClass C类"`
+
 	if activityTypeId == 1 || activityTypeId == 2 {
 		respList.ExcelType = "AppointmentCall"
 	} else if activityTypeId == 5 || activityTypeId == 6 {
@@ -961,21 +1004,30 @@ func (this *ActivityMeetCoAntroller) SignupFailExport() {
 	}
 	var err error
 	var condition string
-	if resp.IsCanDownload == false {
-		if adminInfo.RoleTypeCode == "rai_group" {
-			//组长查看本组所有组员
-			condition = ` AND s.company_id IN (SELECT company_id FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(AdminUser.AdminId) + ` ) ) GROUP BY company_id) `
-		} else {
-			//组员查看自己
-			condition = ` AND s.company_id IN (SELECT company_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(AdminUser.AdminId) + ` GROUP  BY company_id) `
-		}
-	}
-	items, err := cygx.GetMeetingExportAll(condition)
+	var items []*cygx.MeetingExportRep
+	list, err := cygx.GetMeetingExportAll(condition)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
+	//销售查看自己客户,销售组长查看组员
+	if resp.IsCanDownload == false {
+		mapMobile, err := cygxService.GetAdminLookUserMobile(adminInfo)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,销售对应权限,Err:" + err.Error()
+			return
+		}
+		for _, v := range list {
+			if _, ok := mapMobile[v.Mobile]; ok {
+				items = append(items, v)
+			}
+		}
+	} else {
+		items = list
+	}
+
 	//创建excel
 	dir, err := os.Executable()
 	exPath := filepath.Dir(dir)
@@ -1354,17 +1406,7 @@ func (this *ActivityMeetCoAntroller) AttendanceDetail() {
 	}
 	var condition string
 	var condition2 string
-	//if resp.IsCanDownload == false {
-	//	if adminInfo.RoleTypeCode == "rai_group" {
-	//		//组长查看本组所有组员
-	//		condition = ` AND s.mobile IN (SELECT mobile FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(sysUser.AdminId) + ` ) )) `
-	//		condition2 = ` AND d.mobile IN (SELECT mobile FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(sysUser.AdminId) + ` ) )) `
-	//	} else {
-	//		//组员查看自己
-	//		condition = ` AND s.mobile IN (SELECT mobile FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(sysUser.AdminId) + `) `
-	//		condition2 = ` AND d.mobile IN (SELECT mobile FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(sysUser.AdminId) + `) `
-	//	}
-	//}
+
 	//同一用户上传多次参会记录时,到会与未到会分开查询
 	list1, err := cygx.GetAttendanceDetailListGroup(activityId, condition+` AND s.is_meeting = 1 AND d.userid_entity != 3  GROUP BY s.user_id `)
 	if err != nil {
@@ -1379,6 +1421,7 @@ func (this *ActivityMeetCoAntroller) AttendanceDetail() {
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
+	var sellerCompanyIds []int
 	if len(listGroup) > 0 {
 		for _, v := range listGroup {
 			list1 = append(list1, v)
@@ -1392,19 +1435,20 @@ func (this *ActivityMeetCoAntroller) AttendanceDetail() {
 		if v.Mobile != "" {
 			mobileStr += v.Mobile + ","
 		}
+		sellerCompanyIds = append(sellerCompanyIds, v.CompanyId)
 	}
 	mobileStr = strings.TrimRight(mobileStr, ",")
 	if mobileStr == "" {
 		mobileStr = "1"
 	}
 	condition2 += ` AND d.mobile NOT IN ( ` + mobileStr + ` )  `
-	list2, err := cygx.GetAttendanceDetailList2(activityId, condition2+` AND u.company_id != 1 `)
+	list2, err := cygx.GetAttendanceDetailList2(activityId, condition2+` AND d.company_id > 1 `)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
-	listNoAppointment, err := cygx.GetAttendanceDetailList2(activityId, ` AND d.mobile NOT IN ( `+mobileStr+` )  `+` AND u.company_id != 1 `) //未预约 所有
+	listNoAppointment, err := cygx.GetAttendanceDetailList2(activityId, ` AND d.mobile NOT IN ( `+mobileStr+` )  `+` AND d.company_id > 1  `) //未预约 所有
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + err.Error()
@@ -1455,6 +1499,16 @@ func (this *ActivityMeetCoAntroller) AttendanceDetail() {
 			list2[k].FirstMeetingTime = ""
 			list2[k].LastMeetingTime = ""
 		}
+		sellerCompanyIds = append(sellerCompanyIds, v.CompanyId)
+	}
+
+	//获取公司ID所对应的销售名称
+	sellNameMap := services.GetSellNameMapByCompanyIds(sellerCompanyIds)
+	for k, v := range list1 {
+		list1[k].SellerName = sellNameMap[v.CompanyId]
+	}
+	for k, v := range list2 {
+		list2[k].SellerName = sellNameMap[v.CompanyId]
 	}
 	mobileStr = ""
 	for k, v := range list3 {

+ 292 - 100
controllers/cygx/activity_signup.go

@@ -276,23 +276,18 @@ func (this *ActivitySignupCoAntroller) AppointmentList() {
 	memberType := "Admin"
 	sqlStr := `  AND s.do_fail_type = 0  `
 	totalStr := sqlStr
-	if resp.IsCanDownload == false && (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 2 || activityInfo.ActivityTypeId == 3 || activityInfo.IsYidongConduct == 1) {
-		if adminInfo.RoleTypeCode == "rai_group" {
-			//组长查看本组所有组员
-			memberType = "GroupLeader"
-			sqlStr += ` AND s.company_id IN (SELECT company_id FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(sysUser.AdminId) + ` ) )) `
-		} else {
-			//组员查看自己
-			memberType = "Sale"
-			sqlStr += ` AND s.company_id IN (SELECT company_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(sysUser.AdminId) + `) `
-		}
-	}
 	list, err := cygx.GetCygxAppointmentList(activityId, sqlStr)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
+	//根据公司ID获取对应销售
+	var companyIds []int
+	for _, v := range list {
+		companyIds = append(companyIds, v.CompanyId)
+	}
+	sellNameMap := services.GetSellNameMapByCompanyIds(companyIds)
 	totalStr += " AND  s.company_id != 16  "
 	total, errtotal := cygx.GetCygxAppointmentCount(activityId, totalStr)
 	if errtotal != nil {
@@ -307,18 +302,29 @@ func (this *ActivitySignupCoAntroller) AppointmentList() {
 		return
 	}
 	for k, v := range list {
-		//公司调研电话会的活动,研选扣点的展示自主拨入,非扣点的展示预约外呼
-		//if activityInfo.ActivityTypeId == 3 {
-		//	if activityInfo.IsResearchPoints == 1 {
-		//		v.SignupType = 2
-		//	} else {
-		//		v.SignupType = 1
-		//	}
-		//}
-		list[k].SellerName = v.PsellerName
+		list[k].SellerName = sellNameMap[v.CompanyId]
 	}
 	respList := new(cygx.GetAppointmentListRep)
-	respList.List = list
+	//销售查看自己客户,销售组长查看组员
+	if resp.IsCanDownload == false && (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 2 || activityInfo.ActivityTypeId == 3 || activityInfo.IsYidongConduct == 1) {
+		mapMobile, err := cygxService.GetAdminLookUserMobile(adminInfo)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,销售对应权限,Err:" + err.Error()
+			return
+		}
+		for _, v := range list {
+			if _, ok := mapMobile[v.Mobile]; ok {
+				respList.List = append(respList.List, v)
+			}
+		}
+	} else {
+		respList.List = list
+	}
+
+	if len(respList.List) == 0 {
+		respList.List = make([]*cygx.CygxAppointmentList, 0)
+	}
 	respList.Total = total
 	respList.MyTotal = myTotal
 	respList.ActivityId = activityId
@@ -651,17 +657,6 @@ func (this *ActivitySignupCoAntroller) SalonFailSignupList() {
 	}
 	memberType := "Admin"
 	sqlStr := ""
-	if resp.IsCanDownload == false && (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 2 || activityInfo.ActivityTypeId == 3) {
-		if adminInfo.RoleTypeCode == "rai_group" {
-			//组长查看本组所有组员
-			memberType = "GroupLeader"
-			sqlStr = ` AND s.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(sysUser.AdminId) + ` ) )) `
-		} else {
-			//组员查看自己
-			memberType = "Sale"
-			sqlStr = ` AND s.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(sysUser.AdminId) + `) `
-		}
-	}
 	sqlStr += ` AND s.fail_type >0 `
 	list, err := cygx.GetFailSignupList(activityId, sqlStr)
 	if err != nil {
@@ -669,6 +664,12 @@ func (this *ActivitySignupCoAntroller) SalonFailSignupList() {
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
+	//根据公司ID获取对应销售
+	var sellerCompanyIds []int
+	for _, v := range list {
+		sellerCompanyIds = append(sellerCompanyIds, v.CompanyId)
+	}
+	sellNameMap := services.GetSellNameMapByCompanyIds(sellerCompanyIds)
 	sqlStrtotal := ` AND s.fail_type >0 `
 	total, errtotal := cygx.GetCygxAppointmentCount(activityId, sqlStrtotal)
 	if errtotal != nil {
@@ -676,7 +677,21 @@ func (this *ActivitySignupCoAntroller) SalonFailSignupList() {
 		br.ErrMsg = "客户总数获取失败,Err:" + errtotal.Error()
 		return
 	}
-	myTotalsqlStr := ` AND s.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(sysUser.AdminId) + `) AND s.fail_type >0 `
+
+	//权益申请销售只能看到自己名下的客户的申请 查研观向11.1
+	companyIds, err := cygxService.GetAdminLookUserCompanyIds(sysUser)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
+		return
+	}
+
+	var companyIdstr []string
+	for _, v := range companyIds {
+		companyIdstr = append(companyIdstr, strconv.Itoa(v))
+	}
+
+	myTotalsqlStr := ` AND s.company_id  IN (` + strings.Join(companyIdstr, ",") + `) AND s.fail_type >0 `
 	myTotal, errmyTotal := cygx.GetCygxAppointmentCount(activityId, myTotalsqlStr)
 	if errmyTotal != nil {
 		br.Msg = "获取失败"
@@ -703,6 +718,7 @@ func (this *ActivitySignupCoAntroller) SalonFailSignupList() {
 		}
 	}
 	for k, v := range list {
+		list[k].SellerName = sellNameMap[v.CompanyId]
 		if v.DoFailType == 0 {
 			list[k].SalonOperation = true
 			list[k].CallOperation = v.SignupType
@@ -710,7 +726,26 @@ func (this *ActivitySignupCoAntroller) SalonFailSignupList() {
 			list[k].CallOperation = 3
 		}
 	}
-	respList.List = list
+	//销售查看自己客户,销售组长查看组员
+	if resp.IsCanDownload == false && (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 2 || activityInfo.ActivityTypeId == 3) {
+		mapMobile, err := cygxService.GetAdminLookUserMobile(adminInfo)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,销售对应权限,Err:" + err.Error()
+			return
+		}
+		for _, v := range list {
+			if _, ok := mapMobile[v.Mobile]; ok {
+				respList.List = append(respList.List, v)
+			}
+		}
+	} else {
+		respList.List = list
+	}
+	if len(respList.List) == 0 {
+		respList.List = make([]*cygx.FailSignupListRep, 0)
+	}
+
 	respList.Total = total
 	respList.MyTotal = myTotal
 	respList.IsLimitPeople = activityInfo.IsLimitPeople
@@ -927,17 +962,7 @@ func (this *ActivitySignupCoAntroller) FailSignupList() {
 	memberType := "Admin"
 	var err error
 	sqlStr := ""
-	if resp.IsCanDownload == false && (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 2 || activityInfo.ActivityTypeId == 3) {
-		if adminInfo.RoleTypeCode == "rai_group" {
-			//组长查看本组所有组员
-			memberType = "GroupLeader"
-			sqlStr = ` AND s.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(sysUser.AdminId) + ` ) )) `
-		} else {
-			//组员查看自己
-			memberType = "Sale"
-			sqlStr = ` AND s.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(sysUser.AdminId) + `) `
-		}
-	}
+
 	sqlStr += ` AND s.fail_type >0 `
 	listSeller, errSeller := cygx.GetFailSignupList(activityId, sqlStr)
 	list = listSeller
@@ -953,7 +978,20 @@ func (this *ActivitySignupCoAntroller) FailSignupList() {
 		br.ErrMsg = "客户总数获取失败,Err:" + errtotal.Error()
 		return
 	}
-	myTotalsqlStr := ` AND s.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(sysUser.AdminId) + `) `
+	//权益申请销售只能看到自己名下的客户的申请 查研观向11.1
+	companyIds, err := cygxService.GetAdminLookUserCompanyIds(sysUser)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
+		return
+	}
+
+	var companyIdstr []string
+	for _, v := range companyIds {
+		companyIdstr = append(companyIdstr, strconv.Itoa(v))
+	}
+
+	myTotalsqlStr := ` AND s.company_id  IN (` + strings.Join(companyIdstr, ",") + `) AND s.fail_type >0 `
 	myTotal, errmyTotal := cygx.GetCygxAppointmentCount(activityId, myTotalsqlStr)
 	if errmyTotal != nil {
 		br.Msg = "获取失败"
@@ -983,6 +1021,27 @@ func (this *ActivitySignupCoAntroller) FailSignupList() {
 		}
 	}
 	respList := new(cygx.GetFailSignupListRep)
+	//销售查看自己客户,销售组长查看组员
+	if resp.IsCanDownload == false && (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 2 || activityInfo.ActivityTypeId == 3) {
+		mapMobile, err := cygxService.GetAdminLookUserMobile(adminInfo)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,销售对应权限,Err:" + err.Error()
+			return
+		}
+		for _, v := range listNew {
+			if _, ok := mapMobile[v.Mobile]; ok {
+				respList.List = append(respList.List, v)
+			}
+		}
+	} else {
+		respList.List = listNew
+	}
+
+	if len(respList.List) == 0 {
+		respList.List = make([]*cygx.FailSignupListRep, 0)
+	}
+
 	respList.List = listNew
 	respList.Total = total
 	respList.MyTotal = myTotal
@@ -1127,26 +1186,19 @@ func (this *ActivitySignupCoAntroller) CallExport() {
 	//var err error
 	sqlStr := " "
 
-	//if resp.IsCanDownload == false && (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 2 || activityInfo.ActivityTypeId == 3) {
-	//	if adminInfo.RoleTypeCode == "rai_group" {
-	//		//组长查看本组所有组员
-	//		sqlStr = ` AND s.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(sysUser.AdminId) + ` ) )) `
-	//	} else {
-	//		//组员查看自己
-	//		sqlStr = ` AND s.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(sysUser.AdminId) + `) `
-	//	}
-	//}
-	//sqlStr += ` AND s.do_fail_type = 0  GROUP BY s.id`
-	//list, errSeller := cygx.GetSignupExport(activityId, sqlStr)
-
 	if resp.IsCanDownload == false && (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 2 || activityInfo.ActivityTypeId == 3) {
-		if adminInfo.RoleTypeCode == "rai_group" {
-			//组长查看本组所有组员
-			sqlStr += ` AND s.company_id IN (SELECT company_id FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(sysUser.AdminId) + ` ) )) `
-		} else {
-			//组员查看自己
-			sqlStr += ` AND s.company_id IN (SELECT company_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(sysUser.AdminId) + `) `
+		//权益申请销售只能看到自己名下的客户的申请 查研观向11.1
+		companyIds, err := cygxService.GetAdminLookUserCompanyIds(sysUser)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
+			return
+		}
+		var companyIdstr []string
+		for _, v := range companyIds {
+			companyIdstr = append(companyIdstr, strconv.Itoa(v))
 		}
+		sqlStr += ` AND s.company_id  IN (` + strings.Join(companyIdstr, ",") + `) `
 	}
 	//公司调研电话会下载全部
 	if activityInfo.ActivityTypeId != 3 {
@@ -1176,6 +1228,19 @@ func (this *ActivitySignupCoAntroller) CallExport() {
 		return
 	}
 
+	//根据公司ID获取对应销售
+	var sellerCompanyIds []int
+	for _, v := range list {
+		sellerCompanyIds = append(sellerCompanyIds, v.CompanyId)
+	}
+	for _, v := range listReminder {
+		sellerCompanyIds = append(sellerCompanyIds, v.CompanyId)
+	}
+	for _, v := range listSummary {
+		sellerCompanyIds = append(sellerCompanyIds, v.CompanyId)
+	}
+	sellNameMap := services.GetSellNameMapByCompanyIds(sellerCompanyIds)
+
 	//创建excel
 	dir, err := os.Executable()
 	exPath := filepath.Dir(dir)
@@ -1253,7 +1318,7 @@ func (this *ActivitySignupCoAntroller) CallExport() {
 					cellE := row.AddCell()
 					cellE.Value = item.CompanyName
 					cellF := row.AddCell()
-					cellF.Value = item.SellerName
+					cellF.Value = sellNameMap[item.CompanyId]
 				}
 			} else {
 				rowTitle := sheet.AddRow()
@@ -1282,7 +1347,7 @@ func (this *ActivitySignupCoAntroller) CallExport() {
 					cellD := row.AddCell()
 					cellD.Value = item.CompanyName
 					cellE := row.AddCell()
-					cellE.Value = item.SellerName
+					cellE.Value = sellNameMap[item.CompanyId]
 				}
 			}
 		} else {
@@ -1300,7 +1365,7 @@ func (this *ActivitySignupCoAntroller) CallExport() {
 				cellB := row.AddCell()
 				cellB.Value = item.CompanyName
 				cellC := row.AddCell()
-				cellC.Value = item.SellerName
+				cellC.Value = sellNameMap[item.CompanyId]
 			}
 		}
 	}
@@ -1363,13 +1428,19 @@ func (this *ActivitySignupCoAntroller) SignupFailExport() {
 
 	sqlStr := ""
 	if resp.IsCanDownload == false && (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 2 || activityInfo.ActivityTypeId == 3 || activityInfo.IsYidongConduct == 1) {
-		if adminInfo.RoleTypeCode == "rai_group" {
-			//组长查看本组所有组员
-			sqlStr += ` AND s.company_id IN (SELECT company_id FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(AdminUser.AdminId) + ` ) )) `
-		} else {
-			//组员查看自己
-			sqlStr += ` AND s.company_id IN (SELECT company_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(AdminUser.AdminId) + `) `
+		//权益申请销售只能看到自己名下的客户的申请 查研观向11.1
+		companyIds, err := cygxService.GetAdminLookUserCompanyIds(AdminUser)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
+			return
+		}
+
+		var companyIdstr []string
+		for _, v := range companyIds {
+			companyIdstr = append(companyIdstr, strconv.Itoa(v))
 		}
+		sqlStr += ` AND s.company_id IN  (` + strings.Join(companyIdstr, ",") + `)`
 	}
 	sqlStrOther := sqlStr
 	var listReminder []*cygx.CygxAppointmentList
@@ -1403,6 +1474,19 @@ func (this *ActivitySignupCoAntroller) SignupFailExport() {
 		return
 	}
 
+	//根据公司ID获取对应销售
+	var sellerCompanyIds []int
+	for _, v := range listReminder {
+		sellerCompanyIds = append(sellerCompanyIds, v.CompanyId)
+	}
+	for _, v := range summaryList {
+		sellerCompanyIds = append(sellerCompanyIds, v.CompanyId)
+	}
+	for _, v := range list {
+		sellerCompanyIds = append(sellerCompanyIds, v.CompanyId)
+	}
+	sellNameMap := services.GetSellNameMapByCompanyIds(sellerCompanyIds)
+
 	//创建excel
 	dir, err := os.Executable()
 	exPath := filepath.Dir(dir)
@@ -1476,7 +1560,7 @@ func (this *ActivitySignupCoAntroller) SignupFailExport() {
 					cellE := row.AddCell()
 					cellE.Value = item.CompanyName
 					cellF := row.AddCell()
-					cellF.Value = item.SellerName
+					cellF.Value = sellNameMap[item.CompanyId]
 				}
 			} else {
 				rowTitle := sheet.AddRow()
@@ -1494,7 +1578,7 @@ func (this *ActivitySignupCoAntroller) SignupFailExport() {
 					cellB := row.AddCell()
 					cellB.Value = item.CompanyName
 					cellC := row.AddCell()
-					cellC.Value = item.SellerName
+					cellC.Value = sellNameMap[item.CompanyId]
 				}
 			}
 		} else {
@@ -1512,7 +1596,7 @@ func (this *ActivitySignupCoAntroller) SignupFailExport() {
 				cellB := row.AddCell()
 				cellB.Value = item.CompanyName
 				cellC := row.AddCell()
-				cellC.Value = item.SellerName
+				cellC.Value = sellNameMap[item.CompanyId]
 			}
 		}
 	}
@@ -2372,15 +2456,18 @@ func (this *ActivitySignupCoAntroller) SummaryList() {
 	totalStr := sqlStr
 	if isShowMobile {
 		if resp.IsCanDownload == false && (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 2 || activityInfo.ActivityTypeId == 3) {
-			if adminInfo.RoleTypeCode == "rai_group" {
-				//组长查看本组所有组员
-				memberType = "GroupLeader"
-				sqlStr += ` AND s.company_id IN (SELECT company_id FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(sysUser.AdminId) + ` ) )) `
-			} else {
-				//组员查看自己
-				memberType = "Sale"
-				sqlStr += ` AND s.company_id IN (SELECT company_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(sysUser.AdminId) + `) `
+			//权益申请销售只能看到自己名下的客户的申请
+			companyIds, err := cygxService.GetAdminLookUserCompanyIds(sysUser)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
+				return
+			}
+			var companyIdstr []string
+			for _, v := range companyIds {
+				companyIdstr = append(companyIdstr, strconv.Itoa(v))
 			}
+			sqlStr += ` AND s.company_id IN (` + strings.Join(companyIdstr, ",") + `) `
 		}
 	}
 	list, err := cygx.GetCygxAppointmentSummaryList(activityId, sqlStr)
@@ -2389,6 +2476,13 @@ func (this *ActivitySignupCoAntroller) SummaryList() {
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
+	//根据公司ID获取对应销售
+	var sellerCompanyIds []int
+	for _, v := range list {
+		sellerCompanyIds = append(sellerCompanyIds, v.CompanyId)
+	}
+	sellNameMap := services.GetSellNameMapByCompanyIds(sellerCompanyIds)
+
 	total, errtotal := cygx.GetCygxAppointmentSummaryCount(activityId, totalStr)
 	if errtotal != nil {
 		br.Msg = "获取失败"
@@ -2402,12 +2496,13 @@ func (this *ActivitySignupCoAntroller) SummaryList() {
 		return
 	}
 	for k, v := range list {
-		list[k].SellerName = v.PsellerName
+		list[k].SellerName = sellNameMap[v.CompanyId]
 		if !isShowMobile {
 			list[k].Mobile = ""
 		}
 	}
 	respList := new(cygx.GetAppointmentListRep)
+
 	respList.List = list
 	respList.Total = total
 	respList.MyTotal = myTotal
@@ -2650,15 +2745,19 @@ func (this *ActivitySignupCoAntroller) ReminderList() {
 	totalStr := sqlStr
 
 	if resp.IsCanDownload == false && (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 2 || activityInfo.ActivityTypeId == 3) {
-		if adminInfo.RoleTypeCode == "rai_group" {
-			//组长查看本组所有组员
-			memberType = "GroupLeader"
-			sqlStr += ` AND s.company_id IN (SELECT company_id FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(sysUser.AdminId) + ` ) )) `
-		} else {
-			//组员查看自己
-			memberType = "Sale"
-			sqlStr += ` AND s.company_id IN (SELECT company_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(sysUser.AdminId) + `) `
+		//权益申请销售只能看到自己名下的客户的申请
+		companyIds, err := cygxService.GetAdminLookUserCompanyIds(sysUser)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
+			return
 		}
+
+		var companyIdstr []string
+		for _, v := range companyIds {
+			companyIdstr = append(companyIdstr, strconv.Itoa(v))
+		}
+		sqlStr += ` AND s.company_id IN (` + strings.Join(companyIdstr, ",") + `) `
 	}
 
 	list, err := cygx.GetCygxActivityMeetingReminderList(activityId, sqlStr)
@@ -2667,6 +2766,35 @@ func (this *ActivitySignupCoAntroller) ReminderList() {
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
+	//根据公司ID获取对应销售
+	//var sellerCompanyIds []int
+	var userIds []int
+	for _, v := range list {
+		//sellerCompanyIds = append(sellerCompanyIds, v.CompanyId)
+		userIds = append(userIds, v.UserId)
+	}
+
+	listUser, err := models.GetWxUserRaiSllerListByUserIds(userIds)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+	//拼接用户相关信息
+	mapUser := make(map[int]*models.WxUserSller)
+	for _, v := range listUser {
+		mapUser[v.UserId] = v
+	}
+	for _, v := range list {
+		if mapUser[v.UserId] != nil {
+			v.RealName = mapUser[v.UserId].RealName
+			v.Mobile = mapUser[v.UserId].Mobile
+			v.CompanyName = mapUser[v.UserId].CompanyName
+			v.SellerName = mapUser[v.UserId].SellerName
+		}
+	}
+
+	//sellNameMap := services.GetSellNameMapByCompanyIds(sellerCompanyIds)
 	total, errtotal := cygx.GetCygxActivityMeetingReminderCount(activityId, totalStr)
 	if errtotal != nil {
 		br.Msg = "获取失败"
@@ -2680,9 +2808,9 @@ func (this *ActivitySignupCoAntroller) ReminderList() {
 		return
 	}
 	if len(list) > 0 {
-		for k, v := range list {
-			list[k].SellerName = v.PsellerName
-		}
+		//for k, v := range list {
+		//	list[k].SellerName = sellNameMap[v.CompanyId]
+		//}
 	} else {
 		list = make([]*cygx.CygxAppointmentList, 0)
 	}
@@ -2795,10 +2923,10 @@ func (this *ActivitySignupCoAntroller) TempMsg() {
 			br.ErrMsg = "参数解析异常, Err:" + e.Error()
 			return
 		}
-		var openIdList []*models.OpenIdList
+		var openIdList []*cygx.OpenIdList
 		idMap := make(map[string]string, 0)
 		if strings.Contains(req.SendGroup, "1") {
-			list, err := models.GetCygxUserIndustryFllowOpneidByActivityIds(id)
+			list, err := cygx.GetCygxUserIndustryFllowOpneidByActivityIds(id)
 			if err != nil {
 				br.Msg = "查询openId失败"
 				br.ErrMsg = "查询openId失败,Err:" + err.Error()
@@ -2810,12 +2938,40 @@ func (this *ActivitySignupCoAntroller) TempMsg() {
 			}
 		}
 		if strings.Contains(req.SendGroup, "2") {
-			list, err := models.GetCygxForeverUserIndustryFllowOpneidByActivityIds(id)
+			var condition string
+			var pars []interface{}
+
+			condition = " AND p.STATUS IN ('永续') "
+			listmobileYongxu, err := models.GetActivitySpecialOpenIdListMobile(condition, pars)
 			if err != nil {
 				br.Msg = "查询openId失败"
 				br.ErrMsg = "查询openId失败,Err:" + err.Error()
 				return
 			}
+			mapMobileYongxu := make(map[string]string)
+			for _, v := range listmobileYongxu {
+				mapMobileYongxu[v.Mobile] = v.Mobile
+			}
+
+			var mobiles []string
+			listFllow, err := cygx.GetCygxForeverUserIndustryFllowOpneidByActivityIds(id)
+			if err != nil {
+				br.Msg = "查询openId失败"
+				br.ErrMsg = "查询openId失败,Err:" + err.Error()
+				return
+			}
+
+			for _, v := range listFllow {
+				if mapMobileYongxu[v.Mobile] != "" {
+					mobiles = append(mobiles, v.Mobile)
+				}
+			}
+			list, err := cygx.GetUserRecordListByMobileArr(mobiles)
+			if err != nil {
+				br.Msg = "查询openId失败"
+				br.ErrMsg = "查询openId失败,GetUserRecordListByMobileArr Err:" + err.Error()
+				return
+			}
 			for _, idList := range openIdList {
 				idMap[idList.OpenId] = idList.OpenId
 			}
@@ -2882,12 +3038,48 @@ func (this *ActivitySignupCoAntroller) TempMsg() {
 			}
 		}
 		if strings.Contains(req.SendGroup, "6") {
-			list, err := models.GetCygxTryOutUserIndustryFllowOpneidByActivityIds(id)
+			//list, err := models.GetCygxTryOutUserIndustryFllowOpneidByActivityIds(id)
+			//if err != nil {
+			//	br.Msg = "查询openId失败"
+			//	br.ErrMsg = "查询openId失败,Err:" + err.Error()
+			//	return
+			//}
+
+			var condition string
+			var pars []interface{}
+
+			condition = " AND p.STATUS IN ('试用') "
+			listmobileShiyong, err := models.GetActivitySpecialOpenIdListMobile(condition, pars)
+			if err != nil {
+				br.Msg = "查询openId失败"
+				br.ErrMsg = "查询openId失败,Err:" + err.Error()
+				return
+			}
+			mapMobileShiyong := make(map[string]string)
+			for _, v := range listmobileShiyong {
+				mapMobileShiyong[v.Mobile] = v.Mobile
+			}
+
+			var mobiles []string
+			listFllow, err := cygx.GetCygxForeverUserIndustryFllowOpneidByActivityIds(id)
 			if err != nil {
 				br.Msg = "查询openId失败"
 				br.ErrMsg = "查询openId失败,Err:" + err.Error()
 				return
 			}
+
+			for _, v := range listFllow {
+				if mapMobileShiyong[v.Mobile] != "" {
+					mobiles = append(mobiles, v.Mobile)
+				}
+			}
+			list, err := cygx.GetUserRecordListByMobileArr(mobiles)
+			if err != nil {
+				br.Msg = "查询openId失败"
+				br.ErrMsg = "查询openId失败,GetUserRecordListByMobileArr Err:" + err.Error()
+				return
+			}
+
 			for _, idList := range openIdList {
 				idMap[idList.OpenId] = idList.OpenId
 			}

+ 12 - 7
controllers/cygx/activity_special_trip.go

@@ -183,7 +183,7 @@ func (this *ActivitySpecialTripCoAntroller) AddUser() {
 					}
 					items = append(items, item)
 				} else {
-					err = cygx.UpdateSpecialTrip(1,0,uid, activityId)
+					err = cygx.UpdateSpecialTrip(1, 0, uid, activityId)
 					if err != nil {
 						br.Msg = "报名失败,"
 						br.ErrMsg = "二次报名,更改报名是否有效状态失败,Err:" + err.Error()
@@ -202,7 +202,7 @@ func (this *ActivitySpecialTripCoAntroller) AddUser() {
 					return
 				}
 				if userType == 2 {
-					tripRemaining = tripRemaining + itemBill.BillDetailed-i
+					tripRemaining = tripRemaining + itemBill.BillDetailed - i
 					itemBill.Total = strconv.Itoa(tripRemaining) + "次"
 				} else {
 					for k, num := range mapChartName {
@@ -982,7 +982,7 @@ func (this *ActivitySpecialTripCoAntroller) TempMsg() {
 			br.ErrMsg = "参数解析异常, Err:" + e.Error()
 			return
 		}
-		var openIdList []*models.OpenIdList
+		var openIdList []*cygx.OpenIdList
 		idMap := make(map[string]string, 0)
 		//1已报名
 		if strings.Contains(req.SendGroup, "1") {
@@ -1008,12 +1008,17 @@ func (this *ActivitySpecialTripCoAntroller) TempMsg() {
 				condition += ` AND u.mobile IN (` + utils.GetOrmInReplace(mobileLen) + `)`
 				pars = append(pars, mobileArr)
 			}
-			list, err := models.GetActivitySpecialOpenIdListMobile(condition, pars)
-			if err != nil {
-				br.Msg = "查询openId失败"
-				br.ErrMsg = "查询openId失败,Err:" + err.Error()
+			//list, err := models.GetActivitySpecialOpenIdListMobile(condition, pars)
+			//if err != nil {
+			//	br.Msg = "查询openId失败"
+			//	br.ErrMsg = "查询openId失败,Err:" + err.Error()
+			//	return
+			//}
+
+			if mobileLen == 0 {
 				return
 			}
+			list, err := cygx.GetUserRecordListByMobileArr(mobileArr)
 			for _, idList := range list {
 				openIdList = append(openIdList, idList)
 				idMap[idList.OpenId] = idList.OpenId

+ 2 - 2
controllers/cygx/advice.go

@@ -9,7 +9,7 @@ import (
 	"strings"
 )
 
-//优化建议
+// 优化建议
 type AdviceController struct {
 	controllers.BaseAuthController
 }
@@ -55,7 +55,7 @@ func (this *AdviceController) List() {
 	var pars []interface{}
 
 	if keyWord != "" {
-		condition += ` AND (b.mobile LIKE '%` + keyWord + `%' OR b.email LIKE '%` + keyWord + `%' OR b.real_name LIKE '%` + keyWord + `%') `
+		condition += ` AND (a.mobile LIKE '%` + keyWord + `%' OR a.email LIKE '%` + keyWord + `%' OR a.user_real_name LIKE '%` + keyWord + `%') `
 	}
 
 	total, err := cygx.GetAdviceListCount(condition, pars)

+ 9 - 4
controllers/cygx/apply_record.go

@@ -6,6 +6,7 @@ import (
 	"hongze/hz_crm_api/controllers"
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/cygx"
+	"hongze/hz_crm_api/services"
 	cygxService "hongze/hz_crm_api/services/cygx"
 	"hongze/hz_crm_api/utils"
 	"strconv"
@@ -53,7 +54,8 @@ func (this *ApplyRecordController) ListSysRole() {
 	var pars []interface{}
 
 	if keyWord != "" {
-		condition += ` AND (b.seller_name LIKE '%` + keyWord + `%' OR a.mobile LIKE '%` + keyWord + `%' OR c.email LIKE '%` + keyWord + `%' )  `
+		//condition += ` AND (b.seller_name LIKE '%` + keyWord + `%' OR a.mobile LIKE '%` + keyWord + `%' OR c.email LIKE '%` + keyWord + `%' )  `
+		condition += ` AND a.mobile LIKE '%` + keyWord + `%'  `
 	}
 
 	customType, _ := this.GetInt("CustomType")
@@ -68,7 +70,7 @@ func (this *ApplyRecordController) ListSysRole() {
 	}
 
 	//权益申请销售只能看到自己名下的客户的申请 查研观向11.1
-	companyIds, err := cygxService.GetAdminLookUserCompanyIds(sysUser)
+	companyIds, err := cygxService.GetAdminLookUserCompanyIdsBySelf(sysUser)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
@@ -76,7 +78,7 @@ func (this *ApplyRecordController) ListSysRole() {
 	}
 	lencompanyIds := len(companyIds)
 	if lencompanyIds > 0 {
-		condition = ` AND a.company_id_pay  IN (` + utils.GetOrmInReplace(lencompanyIds) + `)`
+		condition += ` AND a.company_id_pay  IN (` + utils.GetOrmInReplace(lencompanyIds) + `)`
 		pars = append(pars, companyIds)
 	}
 
@@ -93,13 +95,15 @@ func (this *ApplyRecordController) ListSysRole() {
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
-
+	var sellerCompanyIds []int
 	var microvideoIds []int
 	for _, v := range list {
 		if v.Source == "roadshow" {
 			microvideoIds = append(microvideoIds, v.SourceId)
 		}
+		sellerCompanyIds = append(sellerCompanyIds, v.CompanyIdPay)
 	}
+	sellNameMap := services.GetSellNameMapByCompanyIds(sellerCompanyIds)
 	lenmicrovideoIds := len(microvideoIds)
 	mapmicrovideoChartPermissionId := make(map[int]int) //产业视频ID所对应的行业ID
 	mapmicrovideoIndustryId := make(map[int]int)        //产业视频ID所对应的行业ID
@@ -133,6 +137,7 @@ func (this *ApplyRecordController) ListSysRole() {
 		if v.InviteeCompany != "" {
 			list[i].ApplySource = "免费送月卡"
 		}
+		list[i].SellerName = sellNameMap[v.CompanyIdPay]
 		//用户状态,1:潜在客户 、2:现有客户 、3:FICC客户 、4:现有客户(正式,无对应权限) 、5:现有客户(试用,无对应权限)  、6:现有客户(试用暂停) 、7:现有客户(冻结) 、8:现有客户(流失)
 		switch v.CompanyIdType {
 		case 1:

+ 1198 - 0
controllers/cygx/contract_allocation.go

@@ -0,0 +1,1198 @@
+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/contract"
+	"hongze/hz_crm_api/models/cygx"
+	"hongze/hz_crm_api/models/system"
+	cygxService "hongze/hz_crm_api/services/cygx"
+	"hongze/hz_crm_api/utils"
+	"os"
+	"path/filepath"
+	"strconv"
+	"strings"
+	"time"
+)
+
+// ContractAllocationController 权益合同派单
+type ContractAllocationController struct {
+	controllers.BaseAuthController
+}
+
+// getQueryParams 获取基础查询信息
+func getQueryParams(condition string, pars []interface{}, sysUser *system.Admin, tableAlias string) (newCondition string, newPars []interface{}) {
+	if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN {
+		condition += " AND " + tableAlias + "product_id=?"
+		pars = append(pars, 1)
+	} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
+		condition += " AND " + tableAlias + "product_id=?"
+		pars = append(pars, 2)
+	} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FINANCE {
+		//超级管理员账户,不做条件限制
+	} else {
+		//如果不是研究员,那么去找对应的 部门、小组、销售
+		if sysUser.Authority == 0 {
+			//普通用户
+			condition += " AND " + tableAlias + "seller_id=?"
+			pars = append(pars, sysUser.AdminId)
+		} else if sysUser.Authority == 1 {
+			//部门主管
+			condition += " AND " + tableAlias + "department_id=?"
+			pars = append(pars, sysUser.DepartmentId)
+		} else if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP {
+			//权益小组负责人
+			condition += " AND " + tableAlias + "group_id=?"
+			pars = append(pars, sysUser.GroupId)
+		} else if sysUser.Authority == 2 && sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP {
+			//ficc销售主管
+			pid, err := company.GetParentIdFromGroup(sysUser.GroupId)
+			if err != nil {
+				fmt.Println(err.Error())
+				return
+			}
+			var ids []*string
+			if pid != nil && *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, ",")
+			condition += " AND " + tableAlias + `group_id IN (` + sid + `) `
+			fmt.Println("condition:", condition)
+			//pars = append(pars, sysUser.GroupId)
+		} else if sysUser.Authority == 4 {
+			//ficc小组负责人
+			condition += " AND " + tableAlias + "group_id=?"
+			pars = append(pars, sysUser.GroupId)
+		} else {
+			//不知道什么类型的用户(后面新增的位置类型客户)
+			condition += " AND " + tableAlias + "seller_id=?"
+			pars = append(pars, sysUser.AdminId)
+		}
+	}
+	newCondition = condition
+	newPars = pars
+	return
+}
+
+// @Title 合同列表
+// @Description 合同列表接口
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   Keyword   query   string  true       "客户名称"
+// @Param   AdminId   query   string  true       "销售id,多个用英文逗号隔开,空字符串为全部"
+// @Param   StartDate   query   string  false       "开始日期"
+// @Param   EndDate   query   string  false       "结束日期"
+// @Param   ContractType   query   string  false       "合同类型,枚举值:“,`新签合同`,`续约合同`,`补充协议`"
+// @Param   FormalType   query   string  false     "转正类型,枚举值:“,`标准`,`非标`"
+// @Param   IsExport   query   bool  false       "是否导出excel,默认是false"
+// @Param   ResearcherRealName   query   string  false       "研究员姓名"
+// @Param   IsAllocation   query   int  false       "派点状态: -1-默认全部; 0-未派点; 1-已派点"
+// @Success 200 {object}  cygx.CompanyContractListResp
+// @router /allocation/company_contract_list [get]
+func (this *ContractAllocationController) CompanyContractList() {
+	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")
+	adminId := this.GetString("AdminId")
+	formalType := this.GetString("FormalType")
+	contractType := this.GetString("ContractType")
+	keyword := this.GetString("Keyword")
+	startDate := this.GetString("StartDate")
+	endDate := this.GetString("EndDate")
+	researcherRealName := this.GetString("ResearcherRealName")
+	isAllocation, _ := this.GetInt("IsAllocation", -1) // CRM 13.9
+	if startDate == "" {
+		startDate = "2015-01-01"
+	}
+
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = utils.StartIndex(currentIndex, pageSize)
+	//是否导出报表
+	isExport, _ := this.GetBool("IsExport")
+	if isExport {
+		pageSize = 10000
+		currentIndex = 1
+	}
+
+	var condition string
+	var pars []interface{}
+
+	if endDate != "" {
+		condition += ` AND a.start_date >= ? AND a.start_date <= ? `
+		pars = append(pars, startDate+" 00:00:01", endDate+" 23:59:59")
+	}
+
+	//条件
+	if adminId != "" {
+		condition += ` AND c.seller_id in  (` + adminId + `) `
+		//pars = append(pars, adminId)
+	}
+
+	//权益申请销售只能看到自己名下的客户的申请
+	companyIds, err := cygxService.GetAdminLookUserCompanyIdsBySelf(sysUser)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
+		return
+	}
+	lencompanyIds := len(companyIds)
+	if lencompanyIds > 0 {
+		condition += ` AND c.company_id IN (` + utils.GetOrmInReplace(lencompanyIds) + `)`
+		pars = append(pars, companyIds)
+	}
+
+	//关键字搜索
+	if keyword != "" {
+		condition += ` and b.company_name like "%` + keyword + `%" `
+	}
+
+	//是否派点
+	if isAllocation != -1 {
+		condition += ` AND a.is_allocation = ? `
+		pars = append(pars, isAllocation)
+	}
+
+	// 标准非标查询
+	switch formalType {
+	case "标准":
+		condition += ` AND a.source = ? `
+		pars = append(pars, "系统合同")
+	case "非标":
+		condition += ` AND a.source = ? `
+		pars = append(pars, "上传附件")
+	}
+
+	if contractType != "" {
+		condition += ` AND a.contract_type = ? `
+		pars = append(pars, contractType)
+	}
+
+	//默认只查询权益 2023-06-01 之后的合同
+	condition += ` AND c.product_id = ?  AND a.start_date > ? `
+	pars = append(pars, 2, "2023-05-31")
+
+	mapMoneyPoint := make(map[int]float64)
+	//研究员姓名查询
+	if researcherRealName != "" {
+		var conditionAllocation string
+		var parsAllocation []interface{}
+
+		conditionAllocation = " AND  real_name = ? AND money != 0 "
+		parsAllocation = append(parsAllocation, researcherRealName)
+		allocationCompanyContractList, err := cygx.GetCygxAllocationCompanyContractList(conditionAllocation, parsAllocation)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetCygxAllocationCompanyContractListErr:" + err.Error()
+			return
+		}
+		var companyContractIds []int
+		for _, v := range allocationCompanyContractList {
+			companyContractIds = append(companyContractIds, v.CompanyContractId)
+			mapMoneyPoint[v.CompanyContractId] = v.Money
+		}
+		lenCon := len(companyContractIds)
+		if lenCon == 0 {
+			condition += ` AND a.company_contract_id = 0 `
+		} else {
+			condition += ` AND a.company_contract_id IN   (` + utils.GetOrmInReplace(lenCon) + `)`
+			pars = append(pars, companyContractIds)
+		}
+	}
+
+	var list []*cygx.CompanyContractResp
+
+	total, err := cygx.GetCompanyContractCountJoinCompany(condition, pars)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	//列表页数据
+	list, err = cygx.GetCompanyContractListJoinCompany(condition, pars, startSize, pageSize)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	//mapCompamy := make(map[int]string)
+	listLen := len(list)
+	if listLen == 0 {
+		list = make([]*cygx.CompanyContractResp, 0)
+	} else {
+
+		var contractCodes []string
+		var companyContractIds []int
+		for _, v := range list {
+			switch v.Source {
+			case "系统合同":
+				v.FormalType = "标准"
+			case "上传附件":
+				v.FormalType = "非标"
+			}
+			contractCodes = append(contractCodes, v.ContractCode)
+			companyContractIds = append(companyContractIds, v.CompanyContractId)
+			//mapCompamy[v.CompanyId] = strconv.Itoa(v.CompanyContractId)
+		}
+		lencontractCodes := len(contractCodes)
+		if lencontractCodes > 0 {
+			//获取标准合同的ID,这里上面的查询已经关联了三张表,拆分吧。。。
+			condition = ""
+			joinStr := ""
+			pars = make([]interface{}, 0)
+			condition = " AND  a.contract_code  IN (" + utils.GetOrmInReplace(lencontractCodes) + ") "
+			pars = append(pars, contractCodes)
+			listContract, err := contract.GetContractList(condition, joinStr, pars, 0, lencontractCodes)
+			if err != nil {
+				br.Msg = "获取合同列表失败!"
+				br.ErrMsg = "获取合同列表失败,Err:" + err.Error()
+				return
+			}
+
+			mapContractCode := make(map[string]int)
+			for _, v := range listContract {
+				mapContractCode[v.ContractCode] = v.ContractId
+			}
+
+			mapIsGray, err := cygxService.GetMapIsGrayByCompanyContractIds(companyContractIds)
+			if err != nil {
+				br.Msg = "获取合同列表失败!"
+				br.ErrMsg = "获取合同列表失败,GetMapIsGrayByCompanyContractIds Err:" + err.Error()
+				return
+			}
+
+			//合并合同所对应的权限
+			mappermissionName, err := cygxService.GetCompanyContractPermissionNameMapById(companyContractIds)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取失败,Err:" + err.Error()
+				return
+			}
+
+			for _, v := range list {
+				v.ContractId = mapContractCode[v.ContractCode]
+				v.MoneyPoint = mapMoneyPoint[v.CompanyContractId]
+				v.PermissionName = mappermissionName[v.CompanyContractId]
+				v.IsGray = mapIsGray[v.CompanyContractId]
+			}
+		}
+	}
+
+	page := paging.GetPaging(currentIndex, pageSize, total)
+	resp := cygx.CompanyContractListResp{
+		Paging: page,
+		List:   list,
+	}
+	//导出excel
+	if isExport {
+		CompanyContractListExport(this, resp, br)
+		return
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// CompanyContractListExport 导出Excel
+func CompanyContractListExport(this *ContractAllocationController, resp cygx.CompanyContractListResp, br *models.BaseResponse) {
+	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
+
+	sheel, err := xlsxFile.AddSheet("派点导出数据")
+	if err != nil {
+		br.Msg = "新增Sheet失败"
+		br.ErrMsg = "新增Sheet失败,Err:" + err.Error()
+		return
+	}
+	sheel.SetColWidth(0, 0, 30)
+	sheel.SetColWidth(1, 1, 15)
+	sheel.SetColWidth(2, 2, 15)
+	sheel.SetColWidth(3, 3, 18)
+
+	titleRow := sheel.AddRow()
+
+	cellA := titleRow.AddCell()
+	cellA.SetStyle(style)
+	cellA.SetValue("合同编号")
+
+	cellB := titleRow.AddCell()
+	cellB.SetStyle(style)
+	cellB.SetValue("转正类型")
+
+	cellC := titleRow.AddCell()
+	cellC.SetStyle(style)
+	cellC.SetValue("合同类型")
+
+	cellD := titleRow.AddCell()
+	cellD.SetStyle(style)
+	cellD.SetValue("公司名称")
+
+	cellE := titleRow.AddCell()
+	cellE.SetStyle(style)
+	cellE.SetValue("所属销售")
+
+	cellF := titleRow.AddCell()
+	cellF.SetStyle(style)
+	cellF.SetValue("合同金额")
+
+	cellG := titleRow.AddCell()
+	cellG.SetStyle(style)
+	cellG.SetValue("合同期限")
+
+	cellH := titleRow.AddCell()
+	cellH.SetStyle(style)
+	cellH.SetValue("签约套餐")
+
+	cellI := titleRow.AddCell()
+	cellI.SetStyle(style)
+	cellI.SetValue("状态")
+
+	for _, v := range resp.List {
+		dataRow := sheel.AddRow()
+		dataRow.SetHeight(20)
+
+		cellA := dataRow.AddCell()
+		cellA.SetStyle(style)
+		cellA.SetValue(v.ContractCode)
+
+		cellB := dataRow.AddCell()
+		cellB.SetStyle(style)
+		cellB.SetValue(v.FormalType)
+
+		cellC := dataRow.AddCell()
+		cellC.SetStyle(style)
+		cellC.SetValue(v.ContractType)
+
+		cellD := dataRow.AddCell()
+		cellD.SetStyle(style)
+		cellD.SetValue(v.CompanyName)
+
+		cellE := dataRow.AddCell()
+		cellE.SetStyle(style)
+		cellE.SetValue(v.SellerName)
+
+		cellF := dataRow.AddCell()
+		cellF.SetStyle(style)
+		cellF.SetValue(v.Money)
+
+		cellG := dataRow.AddCell()
+		cellG.SetStyle(style)
+		cellG.SetValue(fmt.Sprint(v.StartDate, " ~  ", v.EndDate))
+
+		cellH := dataRow.AddCell()
+		cellH.SetStyle(style)
+		cellH.SetValue(v.PermissionName)
+
+		cellI := dataRow.AddCell()
+		cellI.SetStyle(style)
+		if v.IsAllocation == 1 {
+			cellI.SetValue("已派点")
+		} else {
+			cellI.SetValue("未派点")
+		}
+	}
+	err = xlsxFile.Save(downLoadnFilePath)
+	if err != nil {
+		br.Msg = "保存文件失败"
+		br.ErrMsg = "保存文件失败"
+		return
+	}
+	randStr := time.Now().Format(utils.FormatDateTimeUnSpace)
+	downloadFileName := "派点导出数据_" + randStr + ".xlsx"
+	this.Ctx.Output.Download(downLoadnFilePath, downloadFileName)
+	defer func() {
+		os.Remove(downLoadnFilePath)
+	}()
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "导出成功"
+}
+
+// @Title  详情
+// @Description 获取详情接口
+// @Param   CompanyContractId   query   int  true       "ID"
+// @Param   ShowDetail   query   bool  false      "是否是派点详情展示"
+// @Success Ret=200 {object} cygx.CygxAllocationCompanyContractDetailResp
+// @router /allocation/detail [get]
+func (this *ContractAllocationController) CompanyContracDetail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	AdminUser := this.SysUser
+	if AdminUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,用户信息为空"
+		br.Ret = 408
+		return
+	}
+	resp := new(cygx.CygxAllocationCompanyContractDetailResp)
+	companyContractId, _ := this.GetInt("CompanyContractId")
+	if companyContractId < 1 {
+		br.Msg = "请输入详情ID"
+		return
+	}
+	showDetail, _ := this.GetBool("ShowDetail", false)
+	contractItem, err := company.GetCompanyContractById(companyContractId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取合同信息失败,Err:" + err.Error()
+		return
+	}
+	total, err := cygx.GetCygxAllocationCompanyContractCountByCompanyContractId(companyContractId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取合同信息失败,GetCygxAllocationCompanyContractCountByCompanyContractId Err:" + err.Error()
+		return
+	}
+
+	//var contractPermissionList []*company.ContractPermissionList
+	expMap := map[int]string{0: "(3w)", 1: "(5w)"} // 买方研选价格
+	hasPermissions, e := company.GetCompanyContractPermissionByCompanyContractId(companyContractId)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取合同权限信息失败,Err:" + e.Error()
+		return
+	}
+	hasMap := make(map[int]*company.CompanyContractPermission)
+	for _, p := range hasPermissions {
+		hasMap[p.ChartPermissionId] = p
+	}
+
+	raiPermissions, e := company.GetPermissionLookItemsExt("2", utils.COMPANY_PRODUCT_RAI_NAME)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取权益权限列表失败, Err: " + e.Error()
+		return
+	}
+	mapPermissionNameHave := make(map[string]bool) // 判断合同是否存在某一行业权限种类
+	var expensiveYx int
+	for _, n := range raiPermissions {
+		match := hasMap[n.ChartPermissionId]
+		if match == nil {
+			continue
+		}
+
+		mapPermissionNameHave[n.PermissionName] = true
+		// 买方研选(3w/5w)
+		if n.PermissionName == utils.CHART_PERMISSION_NAME_MF_YANXUAN {
+			expensiveYx = match.ExpensiveYx
+			n.PermissionName += expMap[match.ExpensiveYx]
+			continue
+		}
+	}
+
+	resp.Money = contractItem.Money / 10000
+	//有研选时,对研选套餐类型做文案处理
+	respItemYx := new(cygx.AllocationPermissionListResp)
+	if mapPermissionNameHave[utils.CHART_PERMISSION_NAME_MF_YANXUAN] {
+		var moneyYx float64
+		if expensiveYx == 0 {
+			moneyYx = 3
+		}
+		if expensiveYx == 1 {
+			moneyYx = 5
+		}
+		resp.TotalPointsContent = fmt.Sprint(resp.Money, "W,", "其中", moneyYx, "w默认归属买方研选,请对剩余", resp.Money-moneyYx, "w按照100%进行比值分配")
+		if showDetail {
+			resp.TotalPointsContent = fmt.Sprint(resp.Money, "W")
+		}
+		resp.Money = resp.Money - moneyYx
+		respItemYx.Proportion = 0
+		respItemYx.Money = moneyYx
+		respItemYx.ChartPermissionName = utils.CHART_PERMISSION_NAME_MF_YANXUAN
+		respItemYx.List = append(respItemYx.List, &cygx.AllocationRealNameListResp{utils.CHART_PERMISSION_NAME_MF_YANXUAN, 0, moneyYx})
+	} else {
+		resp.TotalPointsContent = fmt.Sprint(resp.Money, "W")
+	}
+	sysUserList, err := cygx.GetAskEmailList()
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()
+		return
+	}
+	mapPermissionUser := make(map[string][]*cygx.AllocationRealNameListResp)
+
+	var respList []*cygx.AllocationPermissionListResp
+	if total == 0 {
+		for _, v := range sysUserList {
+			if !mapPermissionNameHave[v.ChartPermissionName] {
+				continue
+			}
+			item := new(cygx.AllocationRealNameListResp)
+			item.RealName = v.Name
+			mapPermissionUser[v.ChartPermissionName] = append(mapPermissionUser[v.ChartPermissionName], item)
+		}
+
+		for k, v := range mapPermissionUser {
+			respItem := new(cygx.AllocationPermissionListResp)
+			respItem.ChartPermissionName = k
+			respItem.List = v
+			respList = append(respList, respItem)
+		}
+		if respItemYx.ChartPermissionName != "" {
+			respList = append(respList, respItemYx)
+		}
+	} else {
+		listUser, err := cygx.GetCygxAllocationCompanyContractListById(companyContractId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetCygxAllocationCompanyContractListById Err: " + err.Error()
+			return
+		}
+		for _, v := range listUser {
+			if showDetail && v.Money == 0 {
+				continue
+			}
+			item := new(cygx.AllocationRealNameListResp)
+			item.RealName = v.RealName
+			item.Money = v.Money
+			item.Proportion = v.Proportion
+			mapPermissionUser[v.ChartPermissionName] = append(mapPermissionUser[v.ChartPermissionName], item)
+		}
+		listPermission, err := cygx.GetCygxAllocationCompanyContractPermissionListById(companyContractId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetCygxAllocationCompanyContractPermissionListById Err: " + err.Error()
+			return
+		}
+		for _, v := range listPermission {
+			if showDetail && v.Money == 0 {
+				continue
+			}
+			respItem := new(cygx.AllocationPermissionListResp)
+			respItem.ChartPermissionName = v.ChartPermissionName
+			respItem.Money = v.Money
+			respItem.Proportion = v.Proportion
+			respItem.List = mapPermissionUser[v.ChartPermissionName]
+			respList = append(respList, respItem)
+		}
+	}
+	//处理是否置灰
+	mapIsGray, err := cygxService.GetMapIsGrayByCompanyContractIds([]int{companyContractId})
+	if err != nil {
+		br.Msg = "获取合同列表失败!"
+		br.ErrMsg = "获取合同列表失败,GetMapIsGrayByCompanyContractIds Err:" + err.Error()
+		return
+	}
+
+	permissionNameArr := []string{"医药", "消费", "科技", "智造", "策略", "买方研选"}
+	for _, v := range permissionNameArr {
+		for _, v2 := range respList {
+			if v2.ChartPermissionName == v {
+				resp.List = append(resp.List, v2)
+			}
+		}
+	}
+	resp.IsGray = mapIsGray[companyContractId]
+	//resp.List = respList
+	resp.CompanyContractId = companyContractId
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title 更新派点
+// @Description 更新派点接口
+// @Param	request	body cygx.AddProductInteriorReq true "type json string"
+// @Success 200 {object} "保存成功"
+// @router /allocation/update [post]
+func (this *ContractAllocationController) CompanyContracUpdate() {
+	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.UpdateAllocationCompanyContractReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	companyContractId := req.CompanyContractId
+	if companyContractId == 0 {
+		br.Msg = "参数错误"
+		br.ErrMsg = "参数错误,id不可为空"
+		return
+	}
+	mapIsGray, err := cygxService.GetMapIsGrayByCompanyContractIds([]int{companyContractId})
+	if err != nil {
+		br.Msg = "获取合同列表失败!"
+		br.ErrMsg = "获取合同列表失败,GetMapIsGrayByCompanyContractIds Err:" + err.Error()
+		return
+	}
+	if mapIsGray[companyContractId] {
+		br.Msg = "超过180天,无法修改!"
+		br.ErrMsg = "超过180天,无法修改,companyContractId :" + strconv.Itoa(companyContractId)
+		return
+	}
+
+	contractItem, err := company.GetCompanyContractById(companyContractId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取合同信息失败,Err:" + err.Error()
+		return
+	}
+	money := contractItem.Money / 10000 // 合同金额,万为单位
+	var moneyAvg float64                // 行业所占合同的平均金额
+	hasPermissions, e := company.GetCompanyContractPermissionByCompanyContractId(companyContractId)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取合同权限信息失败,Err:" + e.Error()
+		return
+	}
+
+	hasMap := make(map[int]*company.CompanyContractPermission)
+	for _, p := range hasPermissions {
+		hasMap[p.ChartPermissionId] = p
+	}
+
+	raiPermissions, e := company.GetPermissionLookItemsExt("2", utils.COMPANY_PRODUCT_RAI_NAME)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取权益权限列表失败, Err: " + e.Error()
+		return
+	}
+	mapPermissionNameHave := make(map[string]bool) // 判断合同是否存在某一行业权限种类
+	for _, n := range raiPermissions {
+		//只计算,医药、消费、科技、智造、策略、买方研选的
+		if n.PermissionName != utils.YI_YAO_NAME && n.PermissionName != utils.XIAO_FEI_NAME && n.PermissionName != utils.KE_JI_NAME && n.PermissionName != utils.ZHI_ZAO_NAME && n.PermissionName != utils.CE_LUE_NAME && n.PermissionName != utils.CHART_PERMISSION_NAME_MF_YANXUAN {
+			continue
+		}
+		match := hasMap[n.ChartPermissionId]
+		if match == nil {
+			continue
+		}
+
+		// 买方研选(3w/5w)
+		if n.PermissionName == utils.CHART_PERMISSION_NAME_MF_YANXUAN {
+			if match.ExpensiveYx == 1 {
+				money = money - 5
+			} else {
+				money = money - 3
+			}
+		} else {
+			mapPermissionNameHave[n.PermissionName] = true
+		}
+	}
+
+	if len(mapPermissionNameHave) > 0 {
+		moneyAvg = money / float64(len(mapPermissionNameHave))
+	}
+
+	list := req.List
+	var items []*cygx.CygxAllocationCompanyContract
+	var itemsPermission []*cygx.CygxAllocationCompanyContractPermission
+
+	var proportionSum float64 // 校验前端传过来的占比使用
+	for _, v := range list {
+		itemPermission := new(cygx.CygxAllocationCompanyContractPermission)
+		itemPermission.CompanyContractId = companyContractId
+		itemPermission.AdminId = sysUser.AdminId
+		itemPermission.AdminName = sysUser.RealName
+		itemPermission.Proportion = v.Proportion
+		itemPermission.Money = v.Money
+		if v.ChartPermissionName != utils.CHART_PERMISSION_NAME_MF_YANXUAN {
+			itemPermission.MoneyAvg = moneyAvg
+			if v.Money < moneyAvg/2 {
+				br.Msg = "单行业占比值不得低于平均值的一半"
+				br.ErrMsg = "单行业占比值不得低于平均值的一半,Err:" + fmt.Sprint(proportionSum)
+				return
+			}
+		}
+		itemPermission.ChartPermissionName = v.ChartPermissionName
+		itemPermission.CreateTime = time.Now()
+		itemPermission.ModifyTime = time.Now()
+		itemsPermission = append(itemsPermission, itemPermission)
+		var userProportionSum float64 // 校验前端传过来的占比使用
+
+		for _, v2 := range v.List {
+			if v2.Proportion < -20 {
+				br.Msg = "研究员占比值不得小于总额的-20%"
+				br.ErrMsg = "研究员占比值不得小于总额的20%,Err:" + fmt.Sprint(proportionSum)
+				return
+			}
+			item := new(cygx.CygxAllocationCompanyContract)
+			item.CompanyContractId = companyContractId
+			item.AdminId = sysUser.AdminId
+			item.AdminName = sysUser.RealName
+			item.Proportion = v2.Proportion
+			item.Money = v2.Money
+			item.RealName = v2.RealName
+			item.ChartPermissionName = v.ChartPermissionName
+			item.CreateTime = time.Now()
+			item.ModifyTime = time.Now()
+			items = append(items, item)
+			proportionSum += v2.Proportion
+			userProportionSum += v2.Proportion
+		}
+		//先添加0.2%的精度校验
+		if userProportionSum > (v.Proportion+0.2) || userProportionSum < (v.Proportion-0.2) {
+			br.Msg = "单行业下的研究员比值之和不等于行业占比值"
+			br.ErrMsg = "单行业下的研究员比值之和不等于行业占比值"
+			return
+		}
+	}
+
+	//先添加0.5%的精度校验
+	if proportionSum > 100.5 || proportionSum < 99.5 {
+		br.Msg = "行业总比值相加不等于100%"
+		br.ErrMsg = "行业总比值相加不等于100%,Err:"
+		return
+	}
+
+	err = cygx.AddAndUpdateCygxAllocationCompanyContract(items, itemsPermission, companyContractId)
+	if err != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "操作失败,AddAndUpdateCygxAllocationCompanyContract Err:" + err.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.IsAddLog = true
+	br.Msg = "操作成功"
+}
+
+// @Title 研究员派点统计
+// @Description 研究员派点统计接口
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   Keyword   query   string  true       "客户名称"
+// @Param   StartDate   query   string  false       "开始日期"
+// @Param   EndDate   query   string  false       "结束日期"
+// @Param   IsExport   query   bool  false       "是否导出excel,默认是false"
+// @Success 200 {object}  cygx.CompanyContractListResp
+// @router /allocation/statistics [get]
+func (this *ContractAllocationController) CompanyContractStatistics() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	keyword := this.GetString("Keyword")
+	startDate := this.GetString("StartDate")
+	endDate := this.GetString("EndDate")
+	if startDate == "" {
+		startDate = "2015-01-01"
+	}
+
+	//是否导出报表
+	isExport, _ := this.GetBool("IsExport")
+
+	var condition string
+
+	var pars []interface{}
+	if endDate != "" {
+		condition += ` AND a.start_date >= ? AND a.start_date <= ? `
+		pars = append(pars, startDate+" 00:00:01", endDate+" 23:59:59")
+	}
+	//根据当前角色来获取查询条件
+	//condition, pars = getQueryParams(condition, pars, sysUser, "c.")
+
+	companyIds, err := cygxService.GetAdminLookUserCompanyIdsBySelf(sysUser)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
+		return
+	}
+	lencompanyIds := len(companyIds)
+	if lencompanyIds > 0 {
+		condition += ` AND c.company_id IN (` + utils.GetOrmInReplace(lencompanyIds) + `)`
+		pars = append(pars, companyIds)
+	}
+
+	//关键字搜索
+	if keyword != "" {
+		condition += ` and b.company_name like "%` + keyword + `%" `
+	}
+
+	//默认只查询权益 2023-06-01 之后的合同
+	condition += ` AND c.product_id = ?  AND a.start_date > ?   `
+	pars = append(pars, 2, "2023-05-31")
+
+	//列表页数据
+	listContract, err := cygx.GetCompanyContractListJoinCompany(condition, pars, 0, 1000)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	//return
+	var companyContractIds []int
+	companyContractIdBool := make(map[int]bool)
+	for _, v := range listContract {
+		companyContractIds = append(companyContractIds, v.CompanyContractId)
+	}
+
+	lenArr := len(companyContractIds)
+	mapUserAllocation := make(map[string]float64) // 关联合同
+	mapUserMoney := make(map[string]float64)      // 派点金额
+	mapPermissionAllocation := make(map[string]float64)
+	mapPermissionMoney := make(map[string]float64)
+	mapPermissionMoneyAvg := make(map[string]float64)
+
+	//totalContract := lenArr //所有的关联合同
+	var totalMoney float64 //所有的关联合同的金额 单位万
+	if lenArr > 0 {
+		var conditionAllocation string
+		var parsAllocation []interface{}
+		conditionAllocation = ` AND company_contract_id IN(` + utils.GetOrmInReplace(lenArr) + ` ) `
+		parsAllocation = append(parsAllocation, companyContractIds)
+		allocationCompanyContractList, err := cygx.GetCygxAllocationCompanyContractList(conditionAllocation, parsAllocation)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+		allocationCompanyContractPermissionList, err := cygx.GetCygxAllocationCompanyContractPermissionList(conditionAllocation, parsAllocation)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+		for _, v := range allocationCompanyContractList {
+
+			if v.Proportion != 0 && v.ChartPermissionName != utils.CHART_PERMISSION_NAME_MF_YANXUAN {
+				mapUserAllocation[v.RealName] += 1
+				mapUserMoney[v.RealName] += v.Money
+				mapPermissionAllocation[v.ChartPermissionName] += 1
+				mapPermissionMoney[v.ChartPermissionName] += v.Money
+				totalMoney += v.Money
+				companyContractIdBool[v.CompanyContractId] = true
+			}
+		}
+		for _, v := range allocationCompanyContractPermissionList {
+			mapPermissionMoneyAvg[v.ChartPermissionName] += v.MoneyAvg
+		}
+	}
+
+	sysUserList, err := cygx.GetAskEmailList()
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()
+		return
+	}
+
+	mapPermissionUser := make(map[string][]*cygx.AllocationRealNameStatisticsListResp) //行业分组 map
+
+	for _, v := range sysUserList {
+		item := new(cygx.AllocationRealNameStatisticsListResp)
+		item.RealName = v.Name
+		item.TotalRelatedContract = mapUserAllocation[v.Name]
+		item.TotalDispatchPoint = utils.SubFloatToString(mapUserMoney[v.Name], 2)
+		if item.TotalDispatchPoint == "" {
+			item.TotalDispatchPoint = "0"
+		}
+		//组内占比
+		if mapUserMoney[v.Name] == 0 {
+			item.GroupProportion = ""
+		} else {
+			item.GroupProportion = utils.SubFloatToString(mapUserMoney[v.Name]/mapPermissionMoney[v.ChartPermissionName]*100, 2)
+		}
+		if item.GroupProportion == "" {
+			item.GroupProportion = "0"
+		}
+		item.GroupProportion += "%"
+
+		//部门占比
+		if totalMoney == 0 {
+			item.DepartmentProportion = ""
+		} else {
+			item.DepartmentProportion = utils.SubFloatToString(mapUserMoney[v.Name]/totalMoney*100, 2)
+		}
+		if item.DepartmentProportion == "" {
+			item.DepartmentProportion = "0"
+		}
+		item.DepartmentProportion += "%"
+		mapPermissionUser[v.ChartPermissionName] = append(mapPermissionUser[v.ChartPermissionName], item)
+	}
+
+	for k, v := range mapPermissionUser {
+		lenUser := len(v)
+		item := new(cygx.AllocationRealNameStatisticsListResp)
+		item.RealName = "合计"
+		item.TotalRelatedContract = mapPermissionAllocation[k]
+		item.TotalDispatchPoint = fmt.Sprint(utils.SubFloatToString(mapPermissionMoney[k], 2), "/", mapPermissionMoneyAvg[k])
+		item.GroupProportion = "100%"
+
+		//部门占比
+		if totalMoney == 0 {
+			item.DepartmentProportion = ""
+		} else {
+			item.DepartmentProportion = utils.SubFloatToString(mapPermissionMoney[k]/totalMoney*100, 2)
+		}
+		if item.DepartmentProportion == "" {
+			item.DepartmentProportion = "0"
+		}
+		item.DepartmentProportion += "%"
+		mapPermissionUser[k] = append(mapPermissionUser[k], item)
+
+		item = new(cygx.AllocationRealNameStatisticsListResp)
+		item.RealName = "平均"
+		item.TotalRelatedContract = utils.SubFloatToFloat(mapPermissionAllocation[k]/float64(lenUser), 2)
+		item.TotalDispatchPoint = utils.SubFloatToString(mapPermissionMoney[k]/float64(lenUser), 2)
+
+		//组内占比
+		if mapPermissionMoney[k] == 0 {
+			item.GroupProportion = ""
+		} else {
+			item.GroupProportion = utils.SubFloatToString(1/(float64(len(mapPermissionUser[k])-1))*100, 2)
+		}
+		if item.GroupProportion == "" {
+			item.GroupProportion = "0"
+		}
+		item.GroupProportion += "%"
+
+		// 部门占比
+		if totalMoney == 0 {
+			item.DepartmentProportion = ""
+		} else {
+			item.DepartmentProportion = utils.SubFloatToString(mapPermissionMoney[k]/totalMoney*100/float64(len(mapPermissionUser[k])-1), 2)
+		}
+
+		if item.DepartmentProportion == "" {
+			item.DepartmentProportion = "0"
+		}
+		item.DepartmentProportion += "%"
+		mapPermissionUser[k] = append(mapPermissionUser[k], item)
+	}
+
+	var list []*cygx.AllocationPermissionStatisticsListResp
+	permissionNameArr := []string{"医药", "消费", "科技", "智造", "策略"}
+	for _, v := range permissionNameArr {
+		item := new(cygx.AllocationPermissionStatisticsListResp)
+		item.ChartPermissionName = v
+		item.List = mapPermissionUser[v]
+		list = append(list, item)
+	}
+
+	resp := cygx.CygxAllocationCompanyContractDetailStatisticsResp{
+		List: list,
+	}
+	resp.TotalContract = len(companyContractIdBool)
+	resp.TotalMoney = utils.SubFloatToFloat(totalMoney, 2)
+	//导出excel
+	if isExport {
+		CompanyContractStatisticsExport(this, resp, br)
+		return
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// CompanyContractStatisticsExport 导出Excel
+func CompanyContractStatisticsExport(this *ContractAllocationController, resp cygx.CygxAllocationCompanyContractDetailStatisticsResp, br *models.BaseResponse) {
+	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
+
+	sheel, err := xlsxFile.AddSheet("研究员派点统计")
+	if err != nil {
+		br.Msg = "新增Sheet失败"
+		br.ErrMsg = "新增Sheet失败,Err:" + err.Error()
+		return
+	}
+	sheel.SetColWidth(0, 0, 30)
+	sheel.SetColWidth(1, 1, 15)
+	sheel.SetColWidth(2, 2, 15)
+	sheel.SetColWidth(3, 3, 18)
+
+	titleRow := sheel.AddRow()
+
+	cellA := titleRow.AddCell()
+	cellA.SetStyle(style)
+	cellA.SetValue("组别")
+
+	cellB := titleRow.AddCell()
+	cellB.SetStyle(style)
+	cellB.SetValue("研究员")
+
+	cellC := titleRow.AddCell()
+	cellC.SetStyle(style)
+	cellC.SetValue("关联合同")
+
+	cellD := titleRow.AddCell()
+	cellD.SetStyle(style)
+	cellD.SetValue("总派点")
+
+	cellE := titleRow.AddCell()
+	cellE.SetStyle(style)
+	cellE.SetValue("组内占比")
+
+	cellF := titleRow.AddCell()
+	cellF.SetStyle(style)
+	cellF.SetValue("部门占比")
+
+	for _, v := range resp.List {
+		for k2, v2 := range v.List {
+
+			dataRow := sheel.AddRow()
+			dataRow.SetHeight(20)
+
+			cellA := dataRow.AddCell()
+			cellA.SetStyle(style)
+			cellA.SetValue(v.ChartPermissionName)
+			if k2 < len(v.List)-1 {
+				cellA.VMerge = 1
+			}
+
+			cellB := dataRow.AddCell()
+			cellB.SetStyle(style)
+			cellB.SetValue(v2.RealName)
+
+			cellC := dataRow.AddCell()
+			cellC.SetStyle(style)
+			cellC.SetValue(v2.TotalRelatedContract)
+
+			cellD := dataRow.AddCell()
+			cellD.SetStyle(style)
+			cellD.SetValue(v2.TotalDispatchPoint)
+
+			cellE := dataRow.AddCell()
+			cellE.SetStyle(style)
+			cellE.SetValue(v2.GroupProportion)
+
+			cellF := dataRow.AddCell()
+			cellF.SetStyle(style)
+			cellF.SetValue(v2.DepartmentProportion)
+		}
+	}
+
+	titleRow = sheel.AddRow()
+	cellA = titleRow.AddCell()
+	cellA.HMerge = 1
+	cellA.SetStyle(style)
+	cellA.SetValue("部门合计")
+
+	cellB = titleRow.AddCell()
+	cellB.SetStyle(style)
+	cellB.SetValue("")
+
+	cellC = titleRow.AddCell()
+	cellC.SetStyle(style)
+	cellC.SetValue(resp.TotalContract)
+
+	cellD = titleRow.AddCell()
+	cellD.SetStyle(style)
+	cellD.SetValue(resp.TotalMoney)
+
+	cellE = titleRow.AddCell()
+	cellE.SetStyle(style)
+	cellE.SetValue("-")
+
+	cellF = titleRow.AddCell()
+	cellF.SetStyle(style)
+	cellF.SetValue("100%")
+
+	err = xlsxFile.Save(downLoadnFilePath)
+	if err != nil {
+		br.Msg = "保存文件失败"
+		br.ErrMsg = "保存文件失败"
+		return
+	}
+	randStr := time.Now().Format(utils.FormatDateTimeUnSpace)
+	downloadFileName := "研究员派点统计_" + randStr + ".xlsx"
+	this.Ctx.Output.Download(downLoadnFilePath, downloadFileName)
+	defer func() {
+		os.Remove(downLoadnFilePath)
+	}()
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "导出成功"
+}

+ 1 - 1
controllers/cygx/industrial_subject.go

@@ -464,7 +464,7 @@ func (this *IndustrialSubjectController) IndustrialSubjectSearch() {
 		condition = ` AND s.subject_name LIKE '%` + keyWord + `%'  `
 	}
 	if chartPermissionId > 0 {
-		condition += ` AND c.chart_permission_id = ` + strconv.Itoa(chartPermissionId)
+		condition += ` AND m.chart_permission_id = ` + strconv.Itoa(chartPermissionId)
 	}
 
 	listSubject, err := cygx.GetIndustrialSubjectListNameByChartId(condition)

+ 81 - 21
controllers/cygx/interview_apply.go

@@ -6,6 +6,7 @@ import (
 	"hongze/hz_crm_api/controllers"
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/cygx"
+	cygxService "hongze/hz_crm_api/services/cygx"
 	"hongze/hz_crm_api/utils"
 	"strings"
 )
@@ -45,28 +46,46 @@ func (this *InterviewApplyController) List() {
 	roleTypeCode := sysUser.RoleTypeCode
 	var condition string
 	var pars []interface{}
+	//{
+	//	if roleTypeCode != utils.ROLE_TYPE_CODE_ADMIN {
+	//		if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN {
+	//			condition += ` AND c.product_id=? `
+	//			pars = append(pars, 1)
+	//		} else if roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
+	//			condition += ` AND c.product_id=? `
+	//			pars = append(pars, 2)
+	//		} else {
+	//			if sysUser.Authority <= 0 {
+	//				condition += ` AND c.seller_id=?  `
+	//				pars = append(pars, sysUser.AdminId)
+	//			} else {
+	//				if sysUser.Authority == 1 {
+	//					condition += ` AND c.department_id=? `
+	//					pars = append(pars, sysUser.DepartmentId)
+	//				}
+	//				if sysUser.Authority == 2 {
+	//					condition += ` AND c.group_id=? `
+	//					pars = append(pars, sysUser.GroupId)
+	//				}
+	//			}
+	//		}
+	//	}
+	//}
+
 	{
 		if roleTypeCode != utils.ROLE_TYPE_CODE_ADMIN {
-			if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN {
-				condition += ` AND c.product_id=? `
-				pars = append(pars, 1)
-			} else if roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
-				condition += ` AND c.product_id=? `
-				pars = append(pars, 2)
-			} else {
-				if sysUser.Authority <= 0 {
-					condition += ` AND c.seller_id=?  `
-					pars = append(pars, sysUser.AdminId)
-				} else {
-					if sysUser.Authority == 1 {
-						condition += ` AND c.department_id=? `
-						pars = append(pars, sysUser.DepartmentId)
-					}
-					if sysUser.Authority == 2 {
-						condition += ` AND c.group_id=? `
-						pars = append(pars, sysUser.GroupId)
-					}
-				}
+			//权益申请销售只能看到自己名下的客户的申请
+			companyIds, err := cygxService.GetAdminLookUserCompanyIds(sysUser)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
+				return
+			}
+
+			lencompanyIds := len(companyIds)
+			if lencompanyIds > 0 {
+				condition += ` AND a.company_id  IN (` + utils.GetOrmInReplace(lencompanyIds) + `)`
+				pars = append(pars, companyIds)
 			}
 		}
 	}
@@ -81,7 +100,25 @@ func (this *InterviewApplyController) List() {
 	startSize = paging.StartIndex(currentIndex, pageSize)
 
 	if keyWord != "" {
-		condition += ` AND (b.mobile LIKE '%` + keyWord + `%' OR b.email LIKE '%` + keyWord + `%' OR b.real_name LIKE '%` + keyWord + `%') `
+		var conditionuiUser string
+		var parsUser []interface{}
+		conditionuiUser += ` AND (mobile LIKE '%` + keyWord + `%' OR email LIKE '%` + keyWord + `%' OR real_name LIKE '%` + keyWord + `%') `
+		listUser, err := models.GetWxUserList(conditionuiUser, parsUser)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = ",GetWxUserListErr:" + err.Error()
+			return
+		}
+		var userIds []int
+
+		for _, v := range listUser {
+			userIds = append(userIds, int(v.UserId))
+		}
+		lenuserIds := len(userIds)
+		if lenuserIds > 0 {
+			condition += ` AND a.user_id  IN (` + utils.GetOrmInReplace(lenuserIds) + `)`
+			pars = append(pars, userIds)
+		}
 	}
 
 	total, err := cygx.GetInterviewApplyListCount(condition, pars)
@@ -97,7 +134,30 @@ func (this *InterviewApplyController) List() {
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
 		return
 	}
+	var userIds []int
 
+	for _, v := range list {
+		userIds = append(userIds, v.UserId)
+	}
+	listUser, err := models.GetWxUserRaiSllerListByUserIds(userIds)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+	//拼接用户相关信息
+	mapUser := make(map[int]*models.WxUserSller)
+	for _, v := range listUser {
+		mapUser[v.UserId] = v
+	}
+	for _, v := range list {
+		if mapUser[v.UserId] != nil {
+			v.UserRealName = mapUser[v.UserId].RealName
+			v.Mobile = mapUser[v.UserId].Mobile
+			v.CompanyName = mapUser[v.UserId].CompanyName
+			v.SalesRealName = mapUser[v.UserId].SellerName
+		}
+	}
 	if list == nil {
 		list = make([]*cygx.CygxInterviewApply, 0)
 	}

+ 16 - 15
controllers/cygx/report_article.go

@@ -562,22 +562,22 @@ func (this *IndustrialSubjectController) Export() {
 	var list []*cygx.ReportExportRep
 	var err error
 	if resp.IsCanDownload == false {
-		if adminInfo.RoleTypeCode == "rai_group" {
-			//if sysUser.Authority == 2 {
-			//组长查看本组所有组员
-			//fmt.Println("组长")
-			sqlStr := ` AND h.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(sysUser.AdminId) + ` ) )) `
-			listSeller, errSeller := cygx.GetReportExportRep(reportId, sqlStr)
-			list = listSeller
-			err = errSeller
-		} else {
-			//组员查看自己
-			//fmt.Println("组员")
-			sqlStr := ` AND h.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(sysUser.AdminId) + `) `
-			listSeller, errSeller := cygx.GetReportExportRep(reportId, sqlStr)
-			list = listSeller
-			err = errSeller
+		//权益申请销售只能看到自己名下的客户的申请
+		companyIds, err := cygxService.GetAdminLookUserCompanyIds(sysUser)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
+			return
 		}
+		var companyIdstr []string
+		for _, v := range companyIds {
+			companyIdstr = append(companyIdstr, strconv.Itoa(v))
+		}
+		sqlStr := ` AND h.company_id IN  (` + strings.Join(companyIdstr, ",") + `) `
+		listSeller, errSeller := cygx.GetReportExportRep(reportId, sqlStr)
+		list = listSeller
+		err = errSeller
+
 	} else {
 		sqlStr := ""
 		listAdmin, errAdmin := cygx.GetReportExportRep(reportId, sqlStr)
@@ -600,6 +600,7 @@ func (this *IndustrialSubjectController) Export() {
 			listNew = append(listNew, v)
 		}
 	}
+
 	//创建excel
 	dir, err := os.Executable()
 	exPath := filepath.Dir(dir)

+ 32 - 6
controllers/cygx/report_selection.go

@@ -9,6 +9,7 @@ import (
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/cygx"
 	"hongze/hz_crm_api/models/system"
+	"hongze/hz_crm_api/services"
 	cygxService "hongze/hz_crm_api/services/cygx"
 	"hongze/hz_crm_api/utils"
 	"os"
@@ -325,13 +326,22 @@ func (this *ReportSelectionController) Detail() {
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
+
+	permissionNameMap, err := services.GetPermissionNameMap()
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败 GetPermissionNameMap,Err:" + err.Error()
+		return
+	}
 	mapChartLog := make(map[string]string)
 	for _, v := range listChartLog {
+		v.ChartPermissionName = permissionNameMap[v.ChartPermissionId]
 		mapChartLog[v.ChartPermissionName] = v.BodyChartSummary
 		permissionNameList = append(permissionNameList, cygx.CygxChartPermissionName{v.ChartPermissionName})
 	}
 	for _, v := range permissionNameList {
 		for _, v2 := range listMore {
+			v2.ChartPermissionName = permissionNameMap[v2.ChartPermissionId]
 			if v.ChartPermissionName == v2.ChartPermissionName {
 				item := new(cygx.CygxReportSelectionChart)
 				item.ChartPermissionName = v2.ChartPermissionName
@@ -699,13 +709,18 @@ func (this *ReportSelectionController) ArticleHistoryExport() {
 
 	var condition string
 	if resp.IsCanDownload == false {
-		if adminInfo.RoleTypeCode == "rai_group" {
-			//组长查看本组所有组员
-			condition = ` AND h.company_id IN (SELECT company_id FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(AdminUser.AdminId) + ` ) ) GROUP BY company_id) `
-		} else {
-			//组员查看自己
-			condition = ` AND h.company_id IN (SELECT company_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(AdminUser.AdminId) + ` GROUP  BY company_id) `
+		//权益申请销售只能看到自己名下的客户的申请
+		companyIds, err := cygxService.GetAdminLookUserCompanyIds(AdminUser)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
+			return
 		}
+		var companyIdstr []string
+		for _, v := range companyIds {
+			companyIdstr = append(companyIdstr, strconv.Itoa(v))
+		}
+		condition = ` AND h.company_id IN (` + strings.Join(companyIdstr, ",") + `)`
 	}
 
 	condition += `  AND h.company_id != ` + strconv.Itoa(utils.HZ_COMPANY_ID) // 过滤弘则来源
@@ -970,12 +985,23 @@ func (this *ReportSelectionController) History() {
 	articleId = detail.ArticleId
 	resp := new(cygx.HistoryReportSelectionRep)
 
+	permissionNameMap, err := services.GetPermissionNameMap()
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败 GetPermissionNameMap,Err:" + err.Error()
+		return
+	}
+
 	listSelectionLog, err := cygx.GetReportSelectionlogListAll(articleId)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "GetReportSelectionlogListAll,Err:" + err.Error()
 		return
 	}
+
+	for k, v := range listSelectionLog {
+		listSelectionLog[k].PermissionName = permissionNameMap[v.ChartPermissionId]
+	}
 	//获取标的的点击次数
 	listSelectionSubjectHistory, err := cygx.GetCygxReportSelectionSubjectHistoryList(articleId)
 	if err != nil && err.Error() != utils.ErrNoRow() {

+ 20 - 27
controllers/cygx/search_keyword.go

@@ -1,12 +1,12 @@
 package cygx
 
 import (
-	"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/cygx"
+	cygxService "hongze/hz_crm_api/services/cygx"
 	"hongze/hz_crm_api/utils"
 	"os"
 	"path/filepath"
@@ -107,40 +107,33 @@ func (this *SearchKeywordController) HostKeywordDownload() {
 	currentTime := time.Now()
 	starTime := currentTime.AddDate(0, 0, -7).Format("2006-01-02") + " 00:00:00"
 	endTime := currentTime.AddDate(0, 0, -1).Format("2006-01-02") + " 23:59:59"
-	fmt.Println(starTime)
-	fmt.Println(endTime)
+
 	var list []*cygx.KeyWordListDownload
 	var err error
-	fmt.Println(sysUser.AdminId)
-	fmt.Println(sysUser)
-	if resp.IsCanDownload == false {
-		//if sysUser.RoleTypeCode == "rai_group" {
-		if sysUser.Authority == 2 {
-			//组长查看本组所有组员
-			//fmt.Println("组长")
-			sqlStr := ` AND kw.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(sysUser.AdminId) + ` ) )) `
-			listSeller, errSeller := cygx.GetSearchKeyWordListDownloadSeller(starTime, endTime, sqlStr)
-			list = listSeller
-			err = errSeller
-		} else {
-			//组员查看自己
-			//fmt.Println("组员")
-			sqlStr := ` AND kw.user_id IN (SELECT user_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(sysUser.AdminId) + `) `
-			listSeller, errSeller := cygx.GetSearchKeyWordListDownloadSeller(starTime, endTime, sqlStr)
-			list = listSeller
-			err = errSeller
-		}
-	} else {
-		listAdmin, errAdmin := cygx.GetSearchKeyWordListDownload(starTime, endTime)
-		list = listAdmin
-		err = errAdmin
-	}
+	listAdmin, err := cygx.GetSearchKeyWordListDownload(starTime, endTime)
+
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
 
+	if resp.IsCanDownload == false {
+		mapMobile, err := cygxService.GetAdminLookUserMobile(sysUser)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,销售对应权限,Err:" + err.Error()
+			return
+		}
+		for _, v := range listAdmin {
+			if _, ok := mapMobile[v.Mobile]; ok {
+				list = append(list, v)
+			}
+		}
+	} else {
+		list = listAdmin
+	}
+
 	listComPany, err := cygx.GetCompanyProductMoreOneList(starTime, endTime)
 	var strId string
 	for _, v := range listComPany {

+ 11 - 6
controllers/cygx/summary_manage.go

@@ -1148,13 +1148,18 @@ func (this *SummaryManage) ArticleHistoryExport() {
 
 	var condition string
 	if resp.IsCanDownload == false {
-		if adminInfo.RoleTypeCode == "rai_group" {
-			//组长查看本组所有组员
-			condition = ` AND h.company_id IN (SELECT company_id FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(AdminUser.AdminId) + ` ) ) GROUP BY company_id) `
-		} else {
-			//组员查看自己
-			condition = ` AND h.company_id IN (SELECT company_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(AdminUser.AdminId) + ` GROUP  BY company_id) `
+		//权益申请销售只能看到自己名下的客户的申请
+		companyIds, err := cygxService.GetAdminLookUserCompanyIds(AdminUser)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
+			return
+		}
+		var companyIdstr []string
+		for _, v := range companyIds {
+			companyIdstr = append(companyIdstr, strconv.Itoa(v))
 		}
+		condition = ` AND h.company_id IN (` + strings.Join(companyIdstr, ",") + `) `
 	}
 
 	mapMobileSellWithUser := make(map[string]string)

+ 117 - 12
controllers/cygx/user.go

@@ -397,6 +397,7 @@ func (this *UserController) List() {
 		return
 	}
 	var userIds string
+	var userIdArr []int
 	if list != nil {
 		for k, v := range list {
 			if v.RegisterTime != "" {
@@ -426,6 +427,7 @@ func (this *UserController) List() {
 				}
 			}
 			userIds += strconv.Itoa(int(v.UserId)) + ","
+			userIdArr = append(userIdArr, int(v.UserId))
 		}
 		userIds = strings.TrimRight(userIds, ",")
 		splitList, err := cygx.GetCygxCompanyUserListSplit(userIds)
@@ -448,6 +450,8 @@ func (this *UserController) List() {
 			}
 		}
 
+		UserRemindListMap := cygxService.GetCygxUserRemindListMap(userIdArr)
+
 		for k, v := range list {
 			for _, vsplit := range splitList {
 				if vsplit.UserId == v.UserId {
@@ -468,6 +472,7 @@ func (this *UserController) List() {
 			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
@@ -993,7 +998,7 @@ func (this *UserController) TableDetail() {
 			return
 		}
 	} else if source == 8 {
-		condition += ` 	AND u.user_id = ? `
+		condition += ` 	AND h.user_id = ? `
 		pars = append(pars, userId)
 		total, err = cygx.GetCygxActivitySpecialTripCount(condition, pars)
 		if err != nil {
@@ -2039,7 +2044,8 @@ func (this *UserController) CompanyTableDetail() {
 	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 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 {
@@ -2445,7 +2451,8 @@ func (this *UserController) CompanyExportInteraction() {
 	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.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 != "" {
@@ -2987,7 +2994,7 @@ func (this *UserController) CompanyList() {
 		br.ErrMsg = "获取公司ID数据失败,Err:" + err.Error()
 		return
 	}
-	condition = ` AND r.company_id  IN  (   ` + companyCondition + `  )AND r.create_time < date_format(now(),'%Y-%m-%d') ` //过滤当天时间
+	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 + `%') `
 	}
@@ -3019,7 +3026,10 @@ func (this *UserController) CompanyList() {
 		//}
 
 		//fmt.Println("es 搜索")
-		_, esList, err := services.SearcCygxArticleHistoryData(utils.IndexNameArticleHistory, keyWord, startDate, endDate, companyIds, startSize, pageSize)
+		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)
@@ -3034,9 +3044,12 @@ func (this *UserController) CompanyList() {
 		articleIds = strings.TrimRight(articleIds, ",")
 		if articleIds != "" {
 			condition = ` AND r.id IN (` + articleIds + `) `
+		} else {
+			condition = ` AND r.id  = 0  `
 		}
-
-		list, err = cygx.GetCygxArticleHistoryRecordByCompanyList(condition, 0, 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()
@@ -3046,6 +3059,7 @@ func (this *UserController) CompanyList() {
 			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
@@ -3060,7 +3074,10 @@ func (this *UserController) CompanyList() {
 					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)
@@ -3078,6 +3095,7 @@ func (this *UserController) CompanyList() {
 							list[k].IndustryName = mapAricleIndustrialSubjectName[v.ArticleId].IndustryName
 							list[k].SubjectNameStr = mapAricleIndustrialSubjectName[v.ArticleId].SubjectNameStr
 						}
+						list[k].SellerName = sellNameMap[v.CompanyId]
 					}
 				}
 			}
@@ -3122,6 +3140,13 @@ func (this *UserController) CompanyList() {
 			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 {
@@ -3138,6 +3163,7 @@ func (this *UserController) CompanyList() {
 					list[k].FirstMeetingTime = ""
 					list[k].LastMeetingTime = ""
 				}
+				v.SellerName = sellNameMap[v.CompanyId]
 			}
 		}
 	} else if source == 3 {
@@ -3153,6 +3179,13 @@ func (this *UserController) CompanyList() {
 			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 {
@@ -3160,6 +3193,7 @@ func (this *UserController) CompanyList() {
 				} else {
 					list[k].ArticleType = 2
 				}
+				v.SellerName = sellNameMap[v.CompanyId]
 			}
 		}
 	} else if source == 4 {
@@ -3227,6 +3261,16 @@ func (this *UserController) CompanyList() {
 			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 {
@@ -3241,7 +3285,15 @@ func (this *UserController) CompanyList() {
 			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)
@@ -3296,6 +3348,16 @@ func (this *UserController) CompanyList() {
 			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 {
@@ -3322,6 +3384,17 @@ func (this *UserController) CompanyList() {
 			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 != "" {
@@ -3610,13 +3683,30 @@ func (this *UserController) CompanyExportInteractionList() {
 		}
 	}
 
+	//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  (   ` + companyCondition + `  )AND r.create_time < date_format(now(),'%Y-%m-%d') ` //过滤当天时间
+	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 + `%') `
 	}
@@ -4120,14 +4210,13 @@ func (this *UserController) TableCompanyList() {
 			}
 		}
 	}
-
 	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  `
+	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') ` //过滤当天时间
+	//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 {
@@ -4142,6 +4231,22 @@ func (this *UserController) TableCompanyList() {
 		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)
@@ -4199,7 +4304,7 @@ func (this *UserController) TableCompanyList() {
 		br.ErrMsg = "获取搜索记录失败,Err:" + err.Error()
 		return
 	}
-	tagNum, err := cygx.GetCygxTagHistoryCountByCompanyIds(companyCondition, "")
+	tagNum, err := cygx.GetCygxTagHistoryCountByCompanyIds(strings.Join(companyIds, ","), "")
 	if err != nil {
 		br.ErrMsg = "获取信息失败,Err:" + err.Error()
 		br.Msg = "获取搜索记录失败"

+ 296 - 0
controllers/cygx/yanxuan_special.go

@@ -0,0 +1,296 @@
+package cygx
+
+import (
+	"encoding/json"
+	"hongze/hz_crm_api/controllers"
+	"hongze/hz_crm_api/models"
+	"hongze/hz_crm_api/models/cygx"
+	cygxService "hongze/hz_crm_api/services/cygx"
+	"hongze/hz_crm_api/services/elastic"
+	"hongze/hz_crm_api/utils"
+	"strconv"
+	"time"
+)
+
+// YanxuanSpecialController 研选专栏
+type YanxuanSpecialController struct {
+	controllers.BaseAuthController
+}
+
+// @Title 新增研选专栏作者
+// @Description 新增研选专栏作者
+// @Param	request	body help_doc.AddHelpDocReq true "type json string"
+// @Success 200 {object} models.AddEnglishReportResp
+// @router /yanxuan_special/author/add [post]
+func (this *YanxuanSpecialController) 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.AddCygxYanxuanSpecialAuthorReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	if req.UserId <= 0 {
+		br.Msg = "请输入用户信息"
+		return
+	}
+	if req.RealName == "" {
+		br.Msg = "请输入真实姓名"
+		return
+	}
+	if req.Mobile == "" {
+		br.Msg = "请输入手机号"
+		return
+	}
+	rnd := utils.GetRandInt(1, 5)
+	item := cygx.CygxYanxuanSpecialAuthor{
+		UserId:     req.UserId,
+		RealName:   req.RealName,
+		Mobile:     req.Mobile,
+		CreateTime: time.Now(),
+		ModifyTime: time.Now(),
+		HeadImg:    utils.CYGX_YANXUAN_SPECIAL_HEAD_IMG_URL + strconv.Itoa(rnd) + ".png",
+		BgImg:      utils.CYGX_YANXUAN_SPECIAL_BG_IMG_URL + strconv.Itoa(rnd) + "a.png",
+		BgImgDown:  utils.CYGX_YANXUAN_SPECIAL_BG_IMG_URL + strconv.Itoa(rnd) + "b.png",
+		BgImgPc:    utils.CYGX_YANXUAN_SPECIAL_BG_IMG_URL_PC + strconv.Itoa(rnd) + ".png",
+		Status:     1,
+	}
+
+	_, err = cygx.AddCygxYanxuanSpecialAuthor(&item)
+	if err != nil {
+		br.Msg = "新增失败"
+		br.ErrMsg = "新增失败,Err:" + err.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "新增成功"
+}
+
+// @Title 禁用/启用研选专栏作者
+// @Description 禁用/启用研选专栏作者
+// @Param	request	body help_doc.AddHelpDocReq true "type json string"
+// @Success 200 {object} models.AddEnglishReportResp
+// @router /yanxuan_special/author/enable [post]
+func (this *YanxuanSpecialController) AuthorEnable() {
+	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.EnableCygxYanxuanSpecialAuthorReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	if req.UserId <= 0 {
+		br.Msg = "用户id错误"
+		return
+	}
+	if req.Status <= 0 {
+		br.Msg = "参数错误"
+		return
+	}
+	if tmpErr := cygx.EnableYanxuanSpecialAuthor(req.UserId, req.Status); tmpErr != nil {
+		br.Msg = "启用/禁用作者失败"
+		br.ErrMsg = "启用/禁用作者失败, Err:" + tmpErr.Error()
+		return
+	}
+
+	if req.Status == 1 {
+		br.Msg = "启用成功"
+	} else {
+		br.Msg = "禁用成功"
+	}
+
+	br.Ret = 200
+	br.Success = true
+}
+
+// @Title 作者列表
+// @Description 作者列表
+// @Param	request	body help_doc.AddHelpDocReq true "type json string"
+// @Success 200 {object} models.AddEnglishReportResp
+// @router /yanxuan_special/author/list [get]
+func (this *YanxuanSpecialController) AuthorList() {
+	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
+	}
+
+	list, tmpErr := cygx.GetYanxuanSpecialAuthorList()
+	if tmpErr != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败, Err:" + tmpErr.Error()
+		return
+	}
+
+	br.Data = list
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}
+
+// @Title 审核列表
+// @Description 审核列表
+// @Param	request	body help_doc.AddHelpDocReq true "type json string"
+// @Success 200 {object} models.AddEnglishReportResp
+// @router /yanxuan_special/list [get]
+func (this *YanxuanSpecialController) 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
+	}
+
+	userId, _ := this.GetInt("UserId", 0)
+	var condition string
+	var pars []interface{}
+
+	if userId > 0 {
+		condition += ` AND a.user_id = ? `
+		pars = append(pars, userId)
+	}
+
+	condition += ` AND a.status = 2 `
+
+	list, tmpErr := cygx.GetYanxuanSpecialList(condition, pars)
+	if tmpErr != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败, Err:" + tmpErr.Error()
+		return
+	}
+	for _, v := range list {
+		hasImg, err := utils.ArticleHasImgUrl(v.Content)
+		if err != nil {
+			return
+		}
+		if hasImg {
+			v.ContentHasImg = 1
+		}
+		if v.DocUrl != "" {
+			var docs []cygx.Doc
+			err := json.Unmarshal([]byte(v.DocUrl), &docs)
+			if err != nil {
+				br.Msg = "参数解析异常!"
+				br.ErrMsg = "参数解析失败,Err:" + err.Error()
+				return
+			}
+			v.Docs = docs
+		}
+		if v.Type == 1 {
+			v.Title = "【笔记】" + v.Title
+		} else if v.Type == 2 {
+			v.Title = "【观点】" + v.Title
+		}
+		if v.CompanyTags != "" {
+			v.Tags += v.CompanyTags
+		}
+		if v.IndustryTags != "" {
+			if v.Tags != "" {
+				v.Tags += ","
+			}
+			v.Tags += v.IndustryTags
+		}
+	}
+
+	br.Data = list
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}
+
+// @Title 审批研选专栏
+// @Description 审批研选专栏
+// @Param	request	body help_doc.AddHelpDocReq true "type json string"
+// @Success 200 {object} models.AddEnglishReportResp
+// @router /yanxuan_special/enable [post]
+func (this *YanxuanSpecialController) Enable() {
+	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.EnableCygxYanxuanSpecialReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	if req.Id <= 0 {
+		br.Msg = "文章id错误"
+		return
+	}
+	if req.Status <= 0 {
+		br.Msg = "参数错误"
+		return
+	}
+	status := 0
+	if req.Status == 1 {
+		status = 3
+	} else {
+		status = 4
+	}
+	if tmpErr := cygx.EnableYanxuanSpecial(req.Id, status, req.Reason); tmpErr != nil {
+		br.Msg = "审批失败"
+		br.ErrMsg = "审批失败, Err:" + tmpErr.Error()
+		return
+	}
+	if req.Status == 1 {
+		go cygxService.SendWxMsgSpecialFollow(req.Id)
+	}
+	go cygxService.SendWxMsgSpecialAuthor(req.Id, req.Status) // 研选专栏审核完成时,给提交人发送模板消息
+	go cygxService.UpdateYanxuanSpecialResourceData(req.Id)   //  写入首页最新  cygx_resource_data 表
+	go elastic.EsAddYanxuanSpecial(req.Id)                    //  写入es 综合搜索
+	br.Msg = "审批成功"
+	br.Ret = 200
+	br.Success = true
+}

+ 2 - 1
controllers/day_new.go

@@ -365,7 +365,8 @@ func (this *DayNewController) AddReport() {
 				br.Msg = "生成失败,列表未全部完成英文翻译"
 				return
 			}
-			content += `<p>` + v.ContentEn + `</p></br>`
+
+			content += `<p>` + time.Unix(v.MsgTime/1e3, 0).Format(utils.FormatDateTimeMinute) + ` ` + v.ContentEn + `</p></br>`
 			msgIds += `"` + v.MsgId + `",`
 		}
 

+ 59 - 50
controllers/eta_business/eta_business.go

@@ -7,6 +7,7 @@ import (
 	"hongze/hz_crm_api/controllers"
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/eta_business"
+	"hongze/hz_crm_api/models/help_doc"
 	etaBusinessService "hongze/hz_crm_api/services/eta_business"
 	"hongze/hz_crm_api/utils"
 	"strconv"
@@ -223,8 +224,8 @@ func (this *EtaBusinessController) PageList() {
 		b.SigningStatus = v.SigningStatus
 		b.Enable = v.Enable
 		b.ContractId = v.ContractId
-		b.SigningTime = v.SigningTime.Format(utils.FormatDate)
-		b.ExpiredTime = v.ExpiredTime.Format(utils.FormatDate)
+		b.SigningTime = utils.TimeTransferString(utils.FormatDate, v.SigningTime)
+		b.ExpiredTime = utils.TimeTransferString(utils.FormatDate, v.ExpiredTime)
 		b.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
 		b.ModifyTime = v.ModifyTime.Format(utils.FormatDateTime)
 		items = append(items, b)
@@ -318,32 +319,26 @@ func (this *EtaBusinessController) Add() {
 	}
 	req.CapitalScale = strings.TrimSpace(req.CapitalScale)
 
-	// 如果仅校验不新增, 那么不做第二页签约时间的校验
+	// 如果仅校验不新增, 那么不做第二页签约时间的校验(已废弃, 20230919签约时间非必填)
 	var signTime, expiredTime time.Time
 	if !req.IsCheck {
-		if req.SigningTime == "" {
-			br.Msg = "签约时间不可为空"
-			return
-		}
-		if req.ExpiredTime == "" {
-			br.Msg = "到期时间不可为空"
-			return
-		}
-		signTime, e = time.ParseInLocation(utils.FormatDate, req.SigningTime, time.Local)
-		if e != nil {
-			br.Msg = "签约时间格式有误"
-			br.ErrMsg = "签约时间格式有误, Err: " + e.Error()
-			return
-		}
-		expiredTime, e = time.ParseInLocation(utils.FormatDate, req.ExpiredTime, time.Local)
-		if e != nil {
-			br.Msg = "到期时间格式有误"
-			br.ErrMsg = "到期时间格式有误, Err: " + e.Error()
-			return
-		}
-		if !expiredTime.After(signTime) {
-			br.Msg = "到期时间不得早于签约时间"
-			return
+		if req.SigningTime != "" && req.ExpiredTime != "" {
+			signTime, e = time.ParseInLocation(utils.FormatDate, req.SigningTime, time.Local)
+			if e != nil {
+				br.Msg = "签约时间格式有误"
+				br.ErrMsg = "签约时间格式有误, Err: " + e.Error()
+				return
+			}
+			expiredTime, e = time.ParseInLocation(utils.FormatDate, req.ExpiredTime, time.Local)
+			if e != nil {
+				br.Msg = "到期时间格式有误"
+				br.ErrMsg = "到期时间格式有误, Err: " + e.Error()
+				return
+			}
+			if !expiredTime.After(signTime) {
+				br.Msg = "到期时间不得早于签约时间"
+				return
+			}
 		}
 	}
 
@@ -402,17 +397,14 @@ func (this *EtaBusinessController) Add() {
 	codeEncrypt := utils.MD5(fmt.Sprintf("%s%s", businessCode, utils.BusinessCodeSalt))
 
 	now := time.Now().Local()
+	status := eta_business.EtaBusinessSigningStatusWait // 默认待签约
 	// 若当前时间不在首次签约时间内, 也算作已终止, 进入合约期时会由定时任务改为首次签约
-	status := eta_business.EtaBusinessSigningStatusFirst
-	isTerminate := true
-	if now.Equal(signTime) || now.Equal(expiredTime) {
-		isTerminate = false
-	}
-	if now.After(signTime) && now.Before(expiredTime) {
-		isTerminate = false
-	}
-	if isTerminate {
-		status = eta_business.EtaBusinessSigningStatusTerminate
+	if !signTime.IsZero() && !expiredTime.IsZero() {
+		if !now.Before(signTime) && !now.After(expiredTime) {
+			status = eta_business.EtaBusinessSigningStatusFirst // 首次签约
+		} else {
+			status = eta_business.EtaBusinessSigningStatusTerminate // 已终止
+		}
 	}
 
 	// 新增商家和签约
@@ -440,17 +432,28 @@ func (this *EtaBusinessController) Add() {
 	businessItem.CreateTime = now
 	businessItem.ModifyTime = now
 	contractItem := new(eta_business.EtaBusinessContract)
-	contractItem.SigningTime = signTime
-	contractItem.ExpiredTime = expiredTime
-	contractItem.IsFirst = 1
-	contractItem.CreateTime = now
-	contractItem.ModifyTime = now
+	if !signTime.IsZero() && !expiredTime.IsZero() {
+		contractItem.SigningTime = signTime
+		contractItem.ExpiredTime = expiredTime
+		contractItem.IsFirst = 1
+		contractItem.CreateTime = now
+		contractItem.ModifyTime = now
+	} else {
+		contractItem = nil
+	}
 	if e = eta_business.CreateEtaBusinessAndContract(businessItem, contractItem); e != nil {
 		br.Msg = "操作失败"
 		br.ErrMsg = "新增商家和签约失败, Err: " + e.Error()
 		return
 	}
 
+	// 给商家帮助文档所有分类的权限
+	if e = help_doc.AddAllHelpDocClassifyVisible(businessItem.EtaBusinessId); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "新增商家分类文档权限失败, Err: " + e.Error()
+		return
+	}
+
 	// 操作日志
 	go func() {
 		recordOb := new(eta_business.EtaBusinessOperationRecord)
@@ -696,7 +699,7 @@ func (this *EtaBusinessController) Signing() {
 	cond := fmt.Sprintf(` AND %s = ?`, eta_business.EtaBusinessContractColumns.EtaBusinessId)
 	pars := make([]interface{}, 0)
 	pars = append(pars, req.EtaBusinessId)
-	contracts, e := contract.GetItemsByCondition(cond, pars, []string{}, "")
+	contracts, e := contract.GetItemsByCondition(cond, pars, []string{}, "signing_time ASC")
 	if e != nil {
 		br.Msg = "操作失败"
 		br.ErrMsg = "获取商家签约列表失败, Err: " + e.Error()
@@ -704,10 +707,11 @@ func (this *EtaBusinessController) Signing() {
 	}
 
 	// 校验签约时间是否重叠
-	isFirst := true // 是否为首次签约
+	isFirst := true      // 是否为首次签约
+	changeFirst := false // 是否需要更新首次签约合同
 	if len(contracts) > 0 {
 		isFirst = false
-		for _, c := range contracts {
+		for k, c := range contracts {
 			pass := false
 			if expiredTime.Before(c.SigningTime) {
 				pass = true
@@ -719,6 +723,11 @@ func (this *EtaBusinessController) Signing() {
 				br.Msg = "签约时间在存续期内, 请检查"
 				return
 			}
+			// 若该合同签约时间早于第一份合同(业务上未限制所以可能会出现这种情况, contracts已排序), 则更新为首次签约合同
+			if k == 0 && signTime.Before(c.SigningTime) {
+				changeFirst = true
+				isFirst = true
+			}
 		}
 	}
 
@@ -731,7 +740,7 @@ func (this *EtaBusinessController) Signing() {
 	if isFirst {
 		contract.IsFirst = 1
 	}
-	if e = contract.Create(); e != nil {
+	if e = contract.CreateMaybeUpdateFirst(contract, changeFirst); e != nil {
 		br.Msg = "操作失败"
 		br.ErrMsg = "新增签约失败, Err: " + e.Error()
 		return
@@ -1026,8 +1035,8 @@ func (this *EtaBusinessController) Detail() {
 	resp.SigningStatus = item.SigningStatus
 	resp.Enable = item.Enable
 	resp.ContractId = item.ContractId
-	resp.SigningTime = item.SigningTime.Format(utils.FormatDate)
-	resp.ExpiredTime = item.ExpiredTime.Format(utils.FormatDate)
+	resp.SigningTime = utils.TimeTransferString(utils.FormatDate, item.SigningTime)
+	resp.ExpiredTime = utils.TimeTransferString(utils.FormatDate, item.ExpiredTime)
 	resp.CreateTime = item.CreateTime.Format(utils.FormatDateTime)
 	resp.ModifyTime = item.ModifyTime.Format(utils.FormatDateTime)
 
@@ -1084,7 +1093,7 @@ func (this *EtaBusinessController) ContractList() {
 	cond := fmt.Sprintf(` AND %s = ?`, eta_business.EtaBusinessContractColumns.EtaBusinessId)
 	pars := make([]interface{}, 0)
 	pars = append(pars, businessId)
-	order := `signing_time DESC`
+	order := `signing_time ASC`
 
 	contractOb := new(eta_business.EtaBusinessContract)
 	list, e := contractOb.GetItemsByCondition(cond, pars, []string{}, order)
@@ -1098,8 +1107,8 @@ func (this *EtaBusinessController) ContractList() {
 		b := new(eta_business.EtaBusinessContractItem)
 		b.EtaBusinessContractId = v.EtaBusinessContractId
 		b.EtaBusinessId = v.EtaBusinessId
-		b.SigningTime = v.SigningTime.Format(utils.FormatDate)
-		b.ExpiredTime = v.ExpiredTime.Format(utils.FormatDate)
+		b.SigningTime = utils.TimeTransferString(utils.FormatDate, v.SigningTime)
+		b.ExpiredTime = utils.TimeTransferString(utils.FormatDate, v.ExpiredTime)
 		// 到期天数, 终止日按当天的23:59:59算
 		strEnd := v.ExpiredTime.Format(utils.FormatDate)
 		strEnd = strEnd + " 23:59:59"

+ 505 - 34
controllers/eta_business/eta_business_menu.go

@@ -6,6 +6,11 @@ import (
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/eta_business"
 	etaBusinessService "hongze/hz_crm_api/services/eta_business"
+	"hongze/hz_crm_api/utils"
+	"html/template"
+	"sort"
+	"strings"
+	"time"
 )
 
 // EtaBusinessMenuController ETA商家菜单
@@ -16,7 +21,8 @@ type EtaBusinessMenuController struct {
 // List
 // @Title 商家菜单列表
 // @Description 商家菜单列表
-// @Param   BusinessId	query	int	false	"商家ID"
+// @Param   BusinessId	query	int		false	"商家ID"
+// @Param   Keyword		query	string	false	"关键词: 菜单名称"
 // @Success 200 Ret=200 获取成功
 // @router /menu/list [get]
 func (this *EtaBusinessMenuController) List() {
@@ -55,54 +61,108 @@ func (this *EtaBusinessMenuController) List() {
 		return
 	}
 
+	menuCond := ``
+	menuPars := make([]interface{}, 0)
 	// 商家勾选的权限
-	businessId, _ := this.GetInt("EtaBusinessId", 0)
-	if businessId > 0 {
-		relateOb := new(eta_business.EtaBusinessMenuRelate)
-		cond := ` AND eta_business_id = ?`
-		pars := make([]interface{}, 0)
-		pars = append(pars, businessId)
-		relates, e := relateOb.GetItemsByCondition(cond, pars, []string{}, "")
-		if e != nil {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取商家菜单关联列表失败, Err: " + e.Error()
-			return
-		}
-		for _, r := range relates {
-			if r.Type == 1 {
-				resp.HalfChoiceList = append(resp.HalfChoiceList, r.MenuId)
-				continue
+	{
+		businessId, _ := this.GetInt("EtaBusinessId", 0)
+		if businessId > 0 {
+			relateOb := new(eta_business.EtaBusinessMenuRelate)
+			cond := ` AND eta_business_id = ?`
+			pars := make([]interface{}, 0)
+			pars = append(pars, businessId)
+			relates, e := relateOb.GetItemsByCondition(cond, pars, []string{}, "")
+			if e != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取商家菜单关联列表失败, Err: " + e.Error()
+				return
+			}
+			for _, r := range relates {
+				if r.Type == 1 {
+					resp.HalfChoiceList = append(resp.HalfChoiceList, r.MenuId)
+					continue
+				}
+				resp.ChoiceList = append(resp.ChoiceList, r.MenuId)
 			}
-			resp.ChoiceList = append(resp.ChoiceList, r.MenuId)
+			menuCond += ` AND hidden = 0`
 		}
 	}
 
+	// 关键词
+	keyword := this.GetString("Keyword")
+	keyword = strings.TrimSpace(keyword)
+	keyword = template.HTMLEscapeString(keyword)
+
+	// 所有菜单列表
 	menuOb := new(eta_business.EtaBusinessMenu)
 	order := `sort ASC, create_time DESC, menu_id DESC`
-	list, e := menuOb.GetItemsByCondition("", make([]interface{}, 0), []string{}, order)
+	menus, e := menuOb.GetItemsByCondition(menuCond, menuPars, []string{}, order)
 	if e != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取商家菜单列表失败, Err: " + e.Error()
 		return
 	}
 
+	list := make([]*eta_business.EtaBusinessMenu, 0)
+	if keyword != "" {
+		menuMap := make(map[int]*eta_business.EtaBusinessMenu)
+		parentMap := make(map[int]*eta_business.EtaBusinessMenu)
+		existMap := make(map[int]bool)
+
+		for _, m := range menus {
+			menuMap[m.MenuId] = m
+		}
+		for _, m := range menus {
+			if m.ParentId > 0 {
+				parentMap[m.MenuId] = menuMap[m.ParentId]
+			}
+		}
+
+		// 遍历菜单, 取出跟关键词匹配的菜单(层级比较深, 递归效率很低, 产品要这个需求暂时也没啥办法优化=_=!)
+		for _, m := range menus {
+			if !strings.Contains(m.Name, keyword) {
+				continue
+			}
+			if existMap[m.MenuId] {
+				continue
+			}
+			existMap[m.MenuId] = true
+			list = append(list, m)
+
+			// 取出关键词所匹配的所有父级菜单
+			if m.ParentId > 0 {
+				parents := etaBusinessService.GetMenuParentsRecursive(menus, m.ParentId)
+				for _, p := range parents {
+					if !existMap[p.MenuId] {
+						existMap[p.MenuId] = true
+						list = append(list, p)
+					}
+				}
+			}
+		}
+
+		sort.Slice(list, func(i, j int) bool {
+			return list[j].Sort > list[i].Sort
+		})
+	} else {
+		list = menus
+	}
+
 	items := make([]*eta_business.EtaBusinessMenuItem, 0)
 	for _, v := range list {
 		t := &eta_business.EtaBusinessMenuItem{
-			MenuId:       v.MenuId,
-			ParentId:     v.ParentId,
-			Name:         v.Name,
-			Sort:         v.Sort,
-			Path:         v.Path,
-			PathName:     v.PathName,
-			IconPath:     v.IconPath,
-			Component:    v.Component,
-			Hidden:       v.Hidden,
-			HiddenLayout: v.HiddenLayout,
-			Level:        v.Level,
-			MenuType:     v.MenuType,
-			ButtonCode:   v.ButtonCode,
-			Children:     make([]*eta_business.EtaBusinessMenuItem, 0),
+			MenuId:     v.MenuId,
+			ParentId:   v.ParentId,
+			Name:       v.Name,
+			Sort:       v.Sort,
+			Path:       v.Path,
+			IconPath:   v.IconPath,
+			Component:  v.Component,
+			Hidden:     v.Hidden,
+			MenuType:   v.MenuType,
+			ButtonCode: v.ButtonCode,
+			CreateTime: v.CreateTime.Format(utils.FormatDateTime),
+			Children:   make([]*eta_business.EtaBusinessMenuItem, 0),
 		}
 		items = append(items, t)
 	}
@@ -189,7 +249,418 @@ func (this *EtaBusinessMenuController) SaveRelate() {
 		return
 	}
 
-	// TODO:后续需要生成SQL脚本文件
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}
+
+// Add
+// @Title 新增菜单
+// @Description 新增菜单
+// @Param	request	body eta_business.EtaBusinessMenuAddReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /menu/add [post]
+func (this *EtaBusinessMenuController) Add() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	// 操作权限校验
+	ok, e := etaBusinessService.CheckEtaBusinessOperateAuth(sysUser.RoleTypeCode)
+	if e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "操作权限校验失败, ErrMsg: " + e.Error()
+		return
+	}
+	if !ok {
+		br.Msg = "无权操作"
+		return
+	}
+
+	// 参数校验
+	var req eta_business.EtaBusinessMenuAddReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	req.Name = strings.TrimSpace(req.Name)
+	if req.Name == "" {
+		br.Msg = "请输入名称"
+		return
+	}
+	if req.MenuType == 0 {
+		req.Path = strings.TrimSpace(req.Path)
+		if req.Path == "" {
+			br.Msg = "请输入路由地址"
+			return
+		}
+		req.Component = strings.TrimSpace(req.Component)
+		if req.Component == "" {
+			br.Msg = "请输入组件路径"
+			return
+		}
+	} else {
+		req.ButtonCode = strings.TrimSpace(req.ButtonCode)
+		if req.ButtonCode == "" {
+			br.Msg = "请输入按钮/字段ID"
+			return
+		}
+	}
+
+	// 重名校验
+	{
+		ob := new(eta_business.EtaBusinessMenu)
+		cond := ` AND parent_id = ? AND name = ?`
+		pars := make([]interface{}, 0)
+		pars = append(pars, req.ParentId, req.Name)
+		exist, e := ob.GetItemByCondition(cond, pars)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			br.Msg = "操作失败"
+			br.ErrMsg = "获取同名菜单失败, Err: " + e.Error()
+			return
+		}
+		if exist != nil {
+			br.Msg = "名称已存在"
+			return
+		}
+	}
+
+	// 新增
+	menuOb := new(eta_business.EtaBusinessMenu)
+	menuOb.ParentId = req.ParentId
+	menuOb.Name = req.Name
+	menuOb.Sort = req.Sort
+	menuOb.Path = req.Path
+	menuOb.IconPath = req.IconPath
+	menuOb.Component = req.Component
+	menuOb.Hidden = req.Hidden
+	menuOb.MenuType = req.MenuType
+	menuOb.ButtonCode = req.ButtonCode
+	menuOb.CreateTime = time.Now().Local()
+	menuOb.ModifyTime = time.Now().Local()
+	// TODO:多级菜单
+	if menuOb.ParentId > 0 {
+		menuOb.LevelPath = menuOb.Component
+	}
+	if e := menuOb.Create(); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "新增菜单失败, Err: " + e.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}
+
+// Edit
+// @Title 编辑菜单
+// @Description 编辑菜单
+// @Param	request	body eta_business.EtaBusinessMenuEditReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /menu/edit [post]
+func (this *EtaBusinessMenuController) Edit() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	// 操作权限校验
+	ok, e := etaBusinessService.CheckEtaBusinessOperateAuth(sysUser.RoleTypeCode)
+	if e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "操作权限校验失败, ErrMsg: " + e.Error()
+		return
+	}
+	if !ok {
+		br.Msg = "无权操作"
+		return
+	}
+
+	// 参数校验
+	var req eta_business.EtaBusinessMenuEditReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	if req.MenuId <= 0 {
+		br.Msg = "参数有误"
+		br.ErrMsg = "参数有误, MenuId"
+		return
+	}
+	req.Name = strings.TrimSpace(req.Name)
+	if req.Name == "" {
+		br.Msg = "请输入名称"
+		return
+	}
+	if req.MenuType == 0 {
+		req.Path = strings.TrimSpace(req.Path)
+		if req.Path == "" {
+			br.Msg = "请输入路由地址"
+			return
+		}
+		req.Component = strings.TrimSpace(req.Component)
+		if req.Component == "" {
+			br.Msg = "请输入组件路径"
+			return
+		}
+	} else {
+		req.ButtonCode = strings.TrimSpace(req.ButtonCode)
+		if req.ButtonCode == "" {
+			br.Msg = "请输入按钮/字段ID"
+			return
+		}
+	}
+
+	menuOb := new(eta_business.EtaBusinessMenu)
+	item, e := menuOb.GetItemById(req.MenuId)
+	if e != nil {
+		if e.Error() == utils.ErrNoRow() {
+			br.Msg = "菜单不存在, 请刷新页面"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取菜单失败, Err: " + e.Error()
+		return
+	}
+
+	// 重名校验
+	{
+		ob := new(eta_business.EtaBusinessMenu)
+		cond := ` AND parent_id = ? AND name = ?`
+		pars := make([]interface{}, 0)
+		pars = append(pars, req.ParentId, req.Name)
+		exist, e := ob.GetItemByCondition(cond, pars)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			br.Msg = "操作失败"
+			br.ErrMsg = "获取同名菜单失败, Err: " + e.Error()
+			return
+		}
+		if exist != nil && exist.MenuId != item.MenuId {
+			br.Msg = "名称已存在"
+			return
+		}
+	}
+
+	// 更新
+	item.Name = req.Name
+	item.Sort = req.Sort
+	item.Path = req.Path
+	item.IconPath = req.IconPath
+	item.Component = req.Component
+	item.Hidden = req.Hidden
+	item.ButtonCode = req.ButtonCode
+	item.ModifyTime = time.Now().Local()
+	// TODO:多级菜单
+	cols := make([]string, 0)
+	cols = append(cols, "Name", "Sort", "Path", "IconPath", "Component", "Hidden", "ButtonCode", "ModifyTime")
+	if item.ParentId > 0 {
+		item.LevelPath = item.Component
+		cols = append(cols, "LevelPath")
+	}
+	if e := item.Update(cols); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "更新菜单失败, Err: " + e.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}
+
+// Remove
+// @Title 删除菜单
+// @Description 删除菜单
+// @Param	request	body eta_business.EtaBusinessMenuRemoveReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /menu/remove [post]
+func (this *EtaBusinessMenuController) Remove() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	// 操作权限校验
+	ok, e := etaBusinessService.CheckEtaBusinessOperateAuth(sysUser.RoleTypeCode)
+	if e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "操作权限校验失败, ErrMsg: " + e.Error()
+		return
+	}
+	if !ok {
+		br.Msg = "无权操作"
+		return
+	}
+
+	// 参数校验
+	var req eta_business.EtaBusinessMenuRemoveReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	if req.MenuId <= 0 {
+		br.Msg = "参数有误"
+		br.ErrMsg = "参数有误, MenuId"
+		return
+	}
+
+	menuOb := new(eta_business.EtaBusinessMenu)
+	_, e = menuOb.GetItemById(req.MenuId)
+	if e != nil {
+		if e.Error() == utils.ErrNoRow() {
+			br.Msg = "菜单不存在, 请刷新页面"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取菜单失败, Err: " + e.Error()
+		return
+	}
+
+	// 获取所有菜单列表, 筛选出该菜单及子菜单
+	menus, e := menuOb.GetItemsByCondition(``, make([]interface{}, 0), []string{}, "")
+	if e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取菜单列表失败, Err: " + e.Error()
+		return
+	}
+	menuIds := etaBusinessService.GetMenuChildrenIdsRecursive(menus, req.MenuId)
+	menuIds = append(menuIds, req.MenuId)
+
+	// 删除菜单
+	if e = menuOb.MultiDel(menuIds); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "删除菜单及子菜单失败, Err: " + e.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}
+
+// IconList
+// @Title 图标列表
+// @Description 图标列表
+// @Success 200 Ret=200 操作成功
+// @router /menu/icon/list [get]
+func (this *EtaBusinessMenuController) IconList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	iconOb := new(eta_business.EtaBusinessMenuIcon)
+	icons, e := iconOb.GetItemsByCondition(``, make([]interface{}, 0), []string{}, "")
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取菜单列表失败, Err: " + e.Error()
+		return
+	}
+	list := make([]*eta_business.EtaBusinessMenuIconItem, 0)
+	for _, v := range icons {
+		list = append(list, &eta_business.EtaBusinessMenuIconItem{
+			IconId:   v.IconId,
+			IconPath: v.IconPath,
+		})
+	}
+
+	br.Data = list
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}
+
+// IconAdd
+// @Title 新增图标
+// @Description 新增图标
+// @Success 200 Ret=200 操作成功
+// @router /menu/icon/add [post]
+func (this *EtaBusinessMenuController) IconAdd() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		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 eta_business.EtaBusinessMenuIconAddReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	req.IconPath = strings.TrimSpace(req.IconPath)
+	if req.IconPath == "" {
+		br.Msg = "请上传图片"
+		return
+	}
+
+	iconOb := new(eta_business.EtaBusinessMenuIcon)
+	iconOb.IconPath = req.IconPath
+	iconOb.CreateTime = time.Now().Local()
+	if e := iconOb.Create(); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "新增菜单icon失败, Err: " + e.Error()
+		return
+	}
 
 	br.Ret = 200
 	br.Success = true

+ 726 - 0
controllers/eta_training_video/eta_training_video.go

@@ -0,0 +1,726 @@
+package eta_training_video
+
+import (
+	"encoding/json"
+	"fmt"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"hongze/hz_crm_api/controllers"
+	"hongze/hz_crm_api/models"
+	"hongze/hz_crm_api/models/eta_training_video"
+	etaTrainingVideoService "hongze/hz_crm_api/services/eta_training_video"
+	"hongze/hz_crm_api/utils"
+	"html/template"
+	"strings"
+	"time"
+)
+
+// EtaTrainingVideoController ETA培训视频
+type EtaTrainingVideoController struct {
+	controllers.BaseAuthController
+}
+
+// PageList
+// @Title 视频列表-分页
+// @Description 视频列表-分页
+// @Param   PageSize		query   int		true	"每页数据量"
+// @Param   CurrentIndex	query   int		true	"当前页码"
+// @Param   Keyword			query	string	false	"关键词: 视频名称/社会信用码/视频编码"
+// @Param   StartTime		query	string	false	"创建时间区间: 开始时间"
+// @Param   EndTime			query	string	false	"创建时间区间: 结束时间"
+// @Param   ClassifyId		query	int		false	"分类ID"
+// @Param   TagIds			query	string	false	"标签IDs, 英文逗号拼接"
+// @Param   PublishState	query	int		false	"发布状态: 1-未发布; 2-已发布"
+// @Success 200 Ret=200 获取成功
+// @router /page_list [get]
+func (this *EtaTrainingVideoController) PageList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		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 = utils.StartIndex(currentIndex, pageSize)
+
+	// 筛选项
+	cond := ``
+	pars := make([]interface{}, 0)
+	{
+		// 关键词
+		keyword := this.GetString("Keyword", "")
+		keyword = strings.TrimSpace(keyword)
+		keyword = template.HTMLEscapeString(keyword)
+		if keyword != "" {
+			kw := fmt.Sprint("%", keyword, "%")
+			cond += fmt.Sprintf(` AND (%s LIKE ?)`, eta_training_video.VideoColumns.Title)
+			pars = append(pars, kw)
+		}
+
+		// 创建时间
+		startTime := this.GetString("StartTime", "")
+		endTime := this.GetString("EndTime", "")
+		if startTime != "" && endTime != "" {
+			st := fmt.Sprint(startTime, " 00:00:00")
+			ed := fmt.Sprint(endTime, " 23:59:59")
+			cond += fmt.Sprintf(` AND (%s BETWEEN ? AND ?)`, eta_training_video.VideoColumns.CreateTime)
+			pars = append(pars, st, ed)
+		}
+
+		// 分类ID
+		classifyId, _ := this.GetInt("ClassifyId", 0)
+		if classifyId > 0 {
+			cond += fmt.Sprintf(` AND FIND_IN_SET(?, %s)`, eta_training_video.VideoColumns.ClassifyIds)
+			pars = append(pars, classifyId)
+		}
+
+		// 标签IDs
+		strTagIds := this.GetString("TagIds", "")
+		if strTagIds != "" {
+			strTags := strings.Split(strTagIds, ",")
+			if len(strTags) > 0 {
+				joinArr := make([]string, 0)
+				cond += ` AND (`
+				for _, s := range strTags {
+					joinArr = append(joinArr, fmt.Sprintf(`FIND_IN_SET(?, %s)`, eta_training_video.VideoColumns.TagIds))
+					pars = append(pars, s)
+				}
+				cond += strings.Join(joinArr, ` OR `)
+				cond += `)`
+			} else {
+				cond += ` AND 1=2`
+			}
+		}
+
+		// 发布状态
+		publishState, _ := this.GetInt("PublishState", 0)
+		if publishState > 0 {
+			stateMap := map[int]int{1: 0, 2: 1}
+			cond += fmt.Sprintf(` AND %s = ?`, eta_training_video.VideoColumns.PublishState)
+			pars = append(pars, stateMap[publishState])
+		}
+	}
+
+	// 获取列表
+	videoOb := new(eta_training_video.EtaTrainingVideo)
+	total, e := videoOb.GetCountByCondition(cond, pars)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取视频总数失败, Err: " + e.Error()
+		return
+	}
+	list, e := videoOb.GetPageItemsByCondition(cond, pars, []string{}, "", startSize, pageSize)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取视频列表失败, Err: " + e.Error()
+		return
+	}
+	items, e := etaTrainingVideoService.FormatVideosToVideoItems(list)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = e.Error()
+		return
+	}
+
+	resp := new(eta_training_video.EtaTrainingVideoListResp)
+	resp.List = items
+	resp.Paging = paging.GetPaging(currentIndex, pageSize, total)
+	br.Data = resp
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}
+
+// Add
+// @Title 新增视频
+// @Description 新增视频
+// @Param	request	body eta_training_video.EtaTrainingVideoAddReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /add [post]
+func (this *EtaTrainingVideoController) Add() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		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 eta_training_video.EtaTrainingVideoAddReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	if req.ClassifyId <= 0 {
+		br.Msg = "请选择视频分类"
+		return
+	}
+	req.Title = strings.TrimSpace(req.Title)
+	if req.Title == "" {
+		br.Msg = "请输入视频名称"
+		return
+	}
+	if req.Introduce != "" {
+		req.Introduce = strings.TrimSpace(req.Introduce)
+		req.Introduce = template.HTMLEscapeString(req.Introduce)
+	}
+	req.CoverImg = strings.TrimSpace(req.CoverImg)
+	if req.CoverImg == "" {
+		br.Msg = "请上传封面图"
+		return
+	}
+	req.VideoUrl = strings.TrimSpace(req.VideoUrl)
+	if req.VideoUrl == "" {
+		br.Msg = "请上传视频"
+		return
+	}
+
+	// 分类
+	strClassifyIds := ""
+	classifyRelates := make([]*eta_training_video.EtaTrainingVideoClassifyRelate, 0)
+	{
+		classifyOB := new(eta_training_video.EtaTrainingVideoClassify)
+		classifies, e := classifyOB.GetItemsByCondition(``, make([]interface{}, 0), []string{}, "")
+		if e != nil {
+			br.Msg = "操作失败"
+			br.ErrMsg = "获取分类失败, Err: " + e.Error()
+			return
+		}
+		for _, c := range classifies {
+			if c.EtaTrainingVideoClassifyId != req.ClassifyId {
+				continue
+			}
+			strClassifyIds += fmt.Sprintf("%d,", req.ClassifyId)
+			classifyRelates = append(classifyRelates, &eta_training_video.EtaTrainingVideoClassifyRelate{
+				EtaTrainingVideoClassifyId: c.EtaTrainingVideoClassifyId,
+				ClassifyParentId:           c.ParentId,
+				ClassifyName:               c.ClassifyName,
+			})
+			// 分类所有父级
+			if c.ParentId > 0 {
+				parents := etaTrainingVideoService.GetClassifyParentsRecursive(classifies, c.ParentId)
+				for _, p := range parents {
+					strClassifyIds += fmt.Sprintf("%d,", p.EtaTrainingVideoClassifyId)
+					classifyRelates = append(classifyRelates, &eta_training_video.EtaTrainingVideoClassifyRelate{
+						EtaTrainingVideoClassifyId: p.EtaTrainingVideoClassifyId,
+						ClassifyParentId:           p.ParentId,
+						ClassifyName:               p.ClassifyName,
+					})
+				}
+			}
+		}
+		strClassifyIds = strings.TrimRight(strClassifyIds, ",")
+	}
+
+	// 标签
+	strTagIds := ""
+	tagRelates := make([]*eta_training_video.EtaTrainingVideoTagRelate, 0)
+	if len(req.TagIds) > 0 {
+		tagOB := new(eta_training_video.EtaTrainingVideoTag)
+		tags, e := tagOB.GetItemsByCondition(``, make([]interface{}, 0), []string{}, "")
+		if e != nil {
+			br.Msg = "操作失败"
+			br.ErrMsg = "获取标签失败, Err: " + e.Error()
+			return
+		}
+		tagMap := make(map[int]*eta_training_video.EtaTrainingVideoTag)
+		for _, t := range tags {
+			tagMap[t.EtaTrainingVideoTagId] = t
+		}
+		for _, r := range req.TagIds {
+			t := tagMap[r]
+			if t == nil {
+				continue
+			}
+			tagRelates = append(tagRelates, &eta_training_video.EtaTrainingVideoTagRelate{
+				EtaTrainingVideoTagId: r,
+				TagName:               t.TagName,
+			})
+			strTagIds += fmt.Sprintf("%d,", r)
+		}
+		strTagIds = strings.TrimRight(strTagIds, ",")
+	}
+
+	// 视频编码
+	now := time.Now().Local()
+	videoCode := utils.MD5(fmt.Sprint(now.UnixMicro()))
+
+	item := new(eta_training_video.EtaTrainingVideo)
+	item.VideoCode = videoCode
+	item.Title = req.Title
+	item.Introduce = req.Introduce
+	item.ClassifyIds = strClassifyIds
+	item.TagIds = strTagIds
+	item.CoverImg = req.CoverImg
+	item.VideoUrl = req.VideoUrl
+	item.CreateTime = now
+	item.ModifyTime = now
+	if e := item.CreateVideoAndRelates(item, classifyRelates, tagRelates); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "新增视频及关联失败, Err: " + e.Error()
+		return
+	}
+
+	// 操作日志
+	go func() {
+		logItem := new(eta_training_video.EtaTrainingVideoOpLog)
+		logItem.EtaTrainingVideoId = item.EtaTrainingVideoId
+		logItem.SysUserId = sysUser.AdminId
+		logItem.SysRealName = sysUser.RealName
+		logItem.OpType = eta_training_video.VideoOpTypeAdd
+		logItem.OpData = string(this.Ctx.Input.RequestBody)
+		logItem.CreateTime = now
+		_ = logItem.Create()
+	}()
+
+	// 更新标签引用数
+	go func() {
+		tagOB := new(eta_training_video.EtaTrainingVideoTag)
+		for _, t := range tagRelates {
+			_ = tagOB.UpdateVideoTotal(t.EtaTrainingVideoTagId)
+		}
+	}()
+
+	br.Data = item.EtaTrainingVideoId
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}
+
+// Edit
+// @Title 编辑视频
+// @Description 编辑视频
+// @Param	request	body eta_training_video.EtaTrainingVideoEditReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /edit [post]
+func (this *EtaTrainingVideoController) Edit() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		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 eta_training_video.EtaTrainingVideoEditReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	if req.VideoId <= 0 {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("参数有误, 视频ID: %d", req.VideoId)
+		return
+	}
+	if req.ClassifyId <= 0 {
+		br.Msg = "请选择视频分类"
+		return
+	}
+	req.Title = strings.TrimSpace(req.Title)
+	if req.Title == "" {
+		br.Msg = "请输入视频名称"
+		return
+	}
+	if req.Introduce == "" {
+		req.Introduce = strings.TrimSpace(req.Introduce)
+		req.Introduce = template.HTMLEscapeString(req.Introduce)
+	}
+	req.CoverImg = strings.TrimSpace(req.CoverImg)
+	if req.CoverImg == "" {
+		br.Msg = "请上传封面图"
+		return
+	}
+	req.VideoUrl = strings.TrimSpace(req.VideoUrl)
+	if req.VideoUrl == "" {
+		br.Msg = "请上传视频"
+		return
+	}
+
+	ob := new(eta_training_video.EtaTrainingVideo)
+	item, e := ob.GetItemById(req.VideoId)
+	if e != nil {
+		if e.Error() == utils.ErrNoRow() {
+			br.Msg = "视频不存在, 请刷新页面"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取视频失败, Err: " + e.Error()
+		return
+	}
+
+	// 分类
+	strClassifyIds := ""
+	classifyRelates := make([]*eta_training_video.EtaTrainingVideoClassifyRelate, 0)
+	{
+		classifyOB := new(eta_training_video.EtaTrainingVideoClassify)
+		classifies, e := classifyOB.GetItemsByCondition(``, make([]interface{}, 0), []string{}, "")
+		if e != nil {
+			br.Msg = "操作失败"
+			br.ErrMsg = "获取分类失败, Err: " + e.Error()
+			return
+		}
+		for _, c := range classifies {
+			if c.EtaTrainingVideoClassifyId != req.ClassifyId {
+				continue
+			}
+			strClassifyIds += fmt.Sprintf("%d,", req.ClassifyId)
+			classifyRelates = append(classifyRelates, &eta_training_video.EtaTrainingVideoClassifyRelate{
+				EtaTrainingVideoClassifyId: c.EtaTrainingVideoClassifyId,
+				ClassifyParentId:           c.ParentId,
+				ClassifyName:               c.ClassifyName,
+			})
+			// 分类所有父级
+			if c.ParentId > 0 {
+				parents := etaTrainingVideoService.GetClassifyParentsRecursive(classifies, c.ParentId)
+				for _, p := range parents {
+					strClassifyIds += fmt.Sprintf("%d,", p.EtaTrainingVideoClassifyId)
+					classifyRelates = append(classifyRelates, &eta_training_video.EtaTrainingVideoClassifyRelate{
+						EtaTrainingVideoClassifyId: p.EtaTrainingVideoClassifyId,
+						ClassifyParentId:           p.ParentId,
+						ClassifyName:               p.ClassifyName,
+					})
+				}
+			}
+		}
+		strClassifyIds = strings.TrimRight(strClassifyIds, ",")
+	}
+
+	// 标签
+	strTagIds := ""
+	tagRelates := make([]*eta_training_video.EtaTrainingVideoTagRelate, 0)
+	if len(req.TagIds) > 0 {
+		tagOB := new(eta_training_video.EtaTrainingVideoTag)
+		tags, e := tagOB.GetItemsByCondition(``, make([]interface{}, 0), []string{}, "")
+		if e != nil {
+			br.Msg = "操作失败"
+			br.ErrMsg = "获取标签失败, Err: " + e.Error()
+			return
+		}
+		tagMap := make(map[int]*eta_training_video.EtaTrainingVideoTag)
+		for _, t := range tags {
+			tagMap[t.EtaTrainingVideoTagId] = t
+		}
+		for _, r := range req.TagIds {
+			t := tagMap[r]
+			if t == nil {
+				continue
+			}
+			tagRelates = append(tagRelates, &eta_training_video.EtaTrainingVideoTagRelate{
+				EtaTrainingVideoTagId: r,
+				TagName:               t.TagName,
+			})
+			strTagIds += fmt.Sprintf("%d,", r)
+		}
+		strTagIds = strings.TrimRight(strTagIds, ",")
+	}
+
+	now := time.Now().Local()
+	item.Title = req.Title
+	item.Introduce = req.Introduce
+	item.ClassifyIds = strClassifyIds
+	item.TagIds = strTagIds
+	item.CoverImg = req.CoverImg
+	item.VideoUrl = req.VideoUrl
+	item.ModifyTime = now
+	cols := []string{"Title", "Introduce", "ClassifyIds", "TagIds", "CoverImg", "VideoUrl", "ModifyTime"}
+	if e := item.UpdateVideoAndRelates(item, cols, classifyRelates, tagRelates); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "更新视频及关联失败, Err: " + e.Error()
+		return
+	}
+
+	// 操作日志
+	go func() {
+		logItem := new(eta_training_video.EtaTrainingVideoOpLog)
+		logItem.EtaTrainingVideoId = item.EtaTrainingVideoId
+		logItem.SysUserId = sysUser.AdminId
+		logItem.SysRealName = sysUser.RealName
+		logItem.OpType = eta_training_video.VideoOpTypeEdit
+		logItem.OpData = string(this.Ctx.Input.RequestBody)
+		logItem.CreateTime = now
+		_ = logItem.Create()
+	}()
+
+	// 更新标签引用数
+	go func() {
+		tagOB := new(eta_training_video.EtaTrainingVideoTag)
+		for _, t := range tagRelates {
+			_ = tagOB.UpdateVideoTotal(t.EtaTrainingVideoTagId)
+		}
+	}()
+
+	br.Data = item.EtaTrainingVideoId
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}
+
+// Publish
+// @Title 发布/取消视频
+// @Description 发布/取消视频
+// @Param	request	body eta_training_video.EtaTrainingVideoPublishReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /publish [post]
+func (this *EtaTrainingVideoController) Publish() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		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 eta_training_video.EtaTrainingVideoPublishReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	if req.VideoId <= 0 {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprint("参数有误, 视频ID: ", req.VideoId)
+		return
+	}
+	if req.PublishState != 0 && req.PublishState != 1 {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprint("参数有误, 发布状态: ", req.PublishState)
+		return
+	}
+
+	ob := new(eta_training_video.EtaTrainingVideo)
+	item, e := ob.GetItemById(req.VideoId)
+	if e != nil {
+		if e.Error() == utils.ErrNoRow() {
+			br.Msg = "视频不存在, 请刷新页面"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取ETA培训视频失败, Err: " + e.Error()
+		return
+	}
+	now := time.Now().Local()
+	item.PublishState = req.PublishState
+	item.ModifyTime = now
+	cols := []string{"PublishState", "ModifyTime"}
+	if item.PublishState == 1 {
+		item.PublishTime = now
+		cols = append(cols, "PublishTime")
+	}
+	if e := item.Update(cols); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "发布ETA培训视频失败, Err: " + e.Error()
+		return
+	}
+
+	// 操作日志
+	go func() {
+		logItem := new(eta_training_video.EtaTrainingVideoOpLog)
+		logItem.EtaTrainingVideoId = item.EtaTrainingVideoId
+		logItem.SysUserId = sysUser.AdminId
+		logItem.SysRealName = sysUser.RealName
+		opTypeMap := map[int]int{0: eta_training_video.VideoOpTypeCancelPublish, 1: eta_training_video.VideoOpTypePublish}
+		logItem.OpType = opTypeMap[req.PublishState]
+		logItem.OpData = string(this.Ctx.Input.RequestBody)
+		logItem.CreateTime = now
+		_ = logItem.Create()
+	}()
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}
+
+// Remove
+// @Title 删除视频
+// @Description 删除视频
+// @Param	request	body eta_training_video.EtaTrainingVideoRemoveReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /remove [post]
+func (this *EtaTrainingVideoController) Remove() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		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 eta_training_video.EtaTrainingVideoRemoveReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	if req.VideoId <= 0 {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprint("参数有误, 视频ID: ", req.VideoId)
+		return
+	}
+
+	ob := new(eta_training_video.EtaTrainingVideo)
+	item, e := ob.GetItemById(req.VideoId)
+	if e != nil {
+		if e.Error() == utils.ErrNoRow() {
+			br.Ret = 200
+			br.Success = true
+			br.Msg = "操作成功"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取ETA培训视频失败, Err: " + e.Error()
+		return
+	}
+	if e := item.Del(); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "删除ETA培训视频失败, Err: " + e.Error()
+		return
+	}
+
+	// 移除分类、标签关联, 更新标签引用数
+	go func() {
+		cr := new(eta_training_video.EtaTrainingVideoClassifyRelate)
+		_ = cr.RemoveRelateByVideoId(item.EtaTrainingVideoId)
+
+		tr := new(eta_training_video.EtaTrainingVideoTagRelate)
+		_ = tr.RemoveRelateByVideoId(item.EtaTrainingVideoId)
+
+		t := new(eta_training_video.EtaTrainingVideoTag)
+		_ = t.RemoveVideoTotalByVideoId(item.EtaTrainingVideoId)
+	}()
+
+	// 操作日志
+	go func() {
+		logItem := new(eta_training_video.EtaTrainingVideoOpLog)
+		logItem.EtaTrainingVideoId = item.EtaTrainingVideoId
+		logItem.SysUserId = sysUser.AdminId
+		logItem.SysRealName = sysUser.RealName
+		logItem.OpType = eta_training_video.VideoOpTypeRemove
+		b, e := json.Marshal(item)
+		if e != nil {
+			return
+		}
+		logItem.OpData = string(b)
+		logItem.CreateTime = time.Now().Local()
+		_ = logItem.Create()
+	}()
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}
+
+// Detail
+// @Title 视频详情
+// @Description 视频详情
+// @Param   VideoId		query	int		false	"视频ID"
+// @Success 200 Ret=200 操作成功
+// @router /detail [get]
+func (this *EtaTrainingVideoController) Detail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	videoId, _ := this.GetInt("VideoId", 0)
+	if videoId <= 0 {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprint("参数有误, 视频ID: ", videoId)
+		return
+	}
+
+	ob := new(eta_training_video.EtaTrainingVideo)
+	item, e := ob.GetItemById(videoId)
+	if e != nil {
+		if e.Error() == utils.ErrNoRow() {
+			br.Msg = "视频不存在, 请刷新页面"
+			return
+		}
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取ETA培训视频失败, Err: " + e.Error()
+		return
+	}
+
+	list := make([]*eta_training_video.EtaTrainingVideo, 0)
+	list = append(list, item)
+	formats, e := etaTrainingVideoService.FormatVideosToVideoItems(list)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "格式化视频信息失败, Err: " + e.Error()
+		return
+	}
+	result := new(eta_training_video.EtaTrainingVideoItem)
+	if len(formats) > 0 {
+		result = formats[0]
+	}
+
+	br.Data = result
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}

+ 404 - 0
controllers/eta_training_video/eta_training_video_classify.go

@@ -0,0 +1,404 @@
+package eta_training_video
+
+import (
+	"encoding/json"
+	"fmt"
+	"hongze/hz_crm_api/controllers"
+	"hongze/hz_crm_api/models"
+	"hongze/hz_crm_api/models/eta_training_video"
+	etaTrainingVideoService "hongze/hz_crm_api/services/eta_training_video"
+	"hongze/hz_crm_api/utils"
+	"html/template"
+	"sort"
+	"strings"
+	"time"
+)
+
+// EtaTrainingVideoClassifyController ETA培训视频分类
+type EtaTrainingVideoClassifyController struct {
+	controllers.BaseAuthController
+}
+
+// Tree
+// @Title 分类树
+// @Description 分类树
+// @Param   Keyword			query	string	false	"关键词: 分类名称"
+// @Success 200 Ret=200 获取成功
+// @router /classify/tree [get]
+func (this *EtaTrainingVideoClassifyController) Tree() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	resp := new(eta_training_video.EtaTrainingVideoClassifyResp)
+	resp.List = make([]*eta_training_video.EtaTrainingVideoClassifyItem, 0)
+
+	cond := ``
+	pars := make([]interface{}, 0)
+	// 关键词
+	keyword := this.GetString("Keyword", "")
+	keyword = strings.TrimSpace(keyword)
+	keyword = template.HTMLEscapeString(keyword)
+
+	// 获取所有分类
+	ob := new(eta_training_video.EtaTrainingVideoClassify)
+	classifies, e := ob.GetItemsByCondition(cond, pars, []string{}, ``)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取分类列表失败, Err: " + e.Error()
+		return
+	}
+
+	list := make([]*eta_training_video.EtaTrainingVideoClassify, 0)
+	if keyword != "" {
+		classifyMap := make(map[int]*eta_training_video.EtaTrainingVideoClassify)
+		parentMap := make(map[int]*eta_training_video.EtaTrainingVideoClassify)
+		existMap := make(map[int]bool)
+
+		for _, m := range classifies {
+			classifyMap[m.EtaTrainingVideoClassifyId] = m
+		}
+		for _, m := range classifies {
+			if m.ParentId > 0 {
+				parentMap[m.EtaTrainingVideoClassifyId] = classifyMap[m.ParentId]
+			}
+		}
+
+		// 遍历菜单, 取出跟关键词匹配的菜单(以后可能会更改成无限级分类, 所以相似度匹配在这里处理)
+		for _, m := range classifies {
+			if !strings.Contains(m.ClassifyName, keyword) {
+				continue
+			}
+			if existMap[m.EtaTrainingVideoClassifyId] {
+				continue
+			}
+			existMap[m.EtaTrainingVideoClassifyId] = true
+			list = append(list, m)
+
+			// 取出关键词所匹配的所有父级菜单
+			if m.ParentId > 0 {
+				parents := etaTrainingVideoService.GetClassifyParentsRecursive(classifies, m.ParentId)
+				for _, p := range parents {
+					if !existMap[p.EtaTrainingVideoClassifyId] {
+						existMap[p.EtaTrainingVideoClassifyId] = true
+						list = append(list, p)
+					}
+				}
+			}
+		}
+
+		sort.Slice(list, func(i, j int) bool {
+			return list[j].Sort > list[i].Sort
+		})
+	} else {
+		list = classifies
+	}
+
+	items := make([]*eta_training_video.EtaTrainingVideoClassifyItem, 0)
+	for _, v := range list {
+		t := &eta_training_video.EtaTrainingVideoClassifyItem{
+			ClassifyId:   v.EtaTrainingVideoClassifyId,
+			ClassifyName: v.ClassifyName,
+			ParentId:     v.ParentId,
+			Sort:         v.Sort,
+			Children:     make([]*eta_training_video.EtaTrainingVideoClassifyItem, 0),
+		}
+		items = append(items, t)
+	}
+
+	// 递归返回树形结构
+	items = etaTrainingVideoService.GetClassifyTreeRecursive(items, 0)
+
+	resp.List = items
+	br.Data = resp
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}
+
+// Add
+// @Title 新增分类
+// @Description 新增分类
+// @Param	request	body eta_training_video.EtaTrainingVideoClassifyAddReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /classify/add [post]
+func (this *EtaTrainingVideoClassifyController) Add() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		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 eta_training_video.EtaTrainingVideoClassifyAddReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	req.ClassifyName = strings.TrimSpace(req.ClassifyName)
+	if req.ClassifyName == "" {
+		br.Msg = "请输入分类名称"
+		return
+	}
+	nameRune := []rune(req.ClassifyName)
+	if len(nameRune) > 50 {
+		br.Msg = "分类名称不可超过50个字符"
+		return
+	}
+
+	// 重名校验
+	{
+		ob := new(eta_training_video.EtaTrainingVideoClassify)
+		cond := fmt.Sprintf(` AND %s = ? AND %s = ?`, eta_training_video.VideoClassifyColumns.ParentId, eta_training_video.VideoClassifyColumns.ClassifyName)
+		pars := make([]interface{}, 0)
+		pars = append(pars, req.ParentId, req.ClassifyName)
+		exist, e := ob.GetItemByCondition(cond, pars)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			br.Msg = "操作失败"
+			br.ErrMsg = "获取重名分类失败, Err: " + e.Error()
+			return
+		}
+		if exist != nil {
+			br.Msg = "分类名称已存在"
+			return
+		}
+	}
+
+	item := new(eta_training_video.EtaTrainingVideoClassify)
+	item.ClassifyName = req.ClassifyName
+	item.ParentId = req.ParentId
+	item.SysUserId = sysUser.AdminId
+	item.SysRealName = sysUser.RealName
+	item.CreateTime = time.Now().Local()
+	item.ModifyTime = time.Now().Local()
+	if e := item.Create(); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "新增分类失败, Err: " + e.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}
+
+// Edit
+// @Title 编辑分类
+// @Description 编辑分类
+// @Param	request	body eta_training_video.EtaTrainingVideoTagEditReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /classify/edit [post]
+func (this *EtaTrainingVideoClassifyController) Edit() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		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 eta_training_video.EtaTrainingVideoClassifyEditReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	if req.ClassifyId <= 0 {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("参数有误, 分类ID: %d", req.ClassifyId)
+		return
+	}
+	req.ClassifyName = strings.TrimSpace(req.ClassifyName)
+	if req.ClassifyName == "" {
+		br.Msg = "请输入分类名称"
+		return
+	}
+	nameRune := []rune(req.ClassifyName)
+	if len(nameRune) > 50 {
+		br.Msg = "分类名称不可超过50个字符"
+		return
+	}
+
+	ob := new(eta_training_video.EtaTrainingVideoClassify)
+	item, e := ob.GetItemById(req.ClassifyId)
+	if e != nil {
+		if e.Error() != utils.ErrNoRow() {
+			br.Msg = "分类不存在, 请刷新页面"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取分类失败, Err: " + e.Error()
+		return
+	}
+	if item.ParentId == req.ParentId && item.ClassifyName == req.ClassifyName {
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "操作成功"
+		return
+	}
+
+	// 重名校验
+	{
+		cond := fmt.Sprintf(` AND %s = ? AND %s = ?`, eta_training_video.VideoClassifyColumns.ParentId, eta_training_video.VideoClassifyColumns.ClassifyName)
+		pars := make([]interface{}, 0)
+		pars = append(pars, req.ParentId, req.ClassifyName)
+		exist, e := ob.GetItemByCondition(cond, pars)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			br.Msg = "操作失败"
+			br.ErrMsg = "获取重名分类失败, Err: " + e.Error()
+			return
+		}
+		if exist != nil && exist.EtaTrainingVideoClassifyId != item.EtaTrainingVideoClassifyId {
+			br.Msg = "分类已存在"
+			return
+		}
+	}
+
+	now := time.Now().Local()
+	item.ClassifyName = req.ClassifyName
+	item.ParentId = req.ParentId
+	item.ModifyTime = now
+	cols := []string{"ClassifyName", "ParentId", "ModifyTime"}
+	if e := item.Update(cols); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "更新分类失败, Err: " + e.Error()
+		return
+	}
+
+	// 更新关联表冗余
+	go func() {
+		relateOB := new(eta_training_video.EtaTrainingVideoClassifyRelate)
+		_ = relateOB.UpdateClassifyInfoByClassifyId(item.EtaTrainingVideoClassifyId, req.ParentId, req.ClassifyName)
+	}()
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}
+
+// Remove
+// @Title 删除分类
+// @Description 删除分类
+// @Param	request	body eta_training_video.EtaTrainingVideoClassifyRemoveReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /classify/remove [post]
+func (this *EtaTrainingVideoClassifyController) Remove() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		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 eta_training_video.EtaTrainingVideoClassifyRemoveReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	if req.ClassifyId <= 0 {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("参数有误, 分类ID: %d", req.ClassifyId)
+		return
+	}
+
+	ob := new(eta_training_video.EtaTrainingVideoClassify)
+	item, e := ob.GetItemById(req.ClassifyId)
+	if e != nil {
+		if e.Error() == utils.ErrNoRow() {
+			br.Ret = 200
+			br.Success = true
+			br.Msg = "操作成功"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取分类失败, Err: " + e.Error()
+		return
+	}
+
+	// 删除校验
+	{
+		// 子分类
+		childCond := fmt.Sprintf(` AND %s = ?`, eta_training_video.VideoClassifyColumns.ParentId)
+		childPars := make([]interface{}, 0)
+		childPars = append(childPars, item.EtaTrainingVideoClassifyId)
+		childTotal, e := ob.GetCountByCondition(childCond, childPars)
+		if e != nil {
+			br.Msg = "操作失败"
+			br.ErrMsg = "获取子分类数失败, Err: " + e.Error()
+			return
+		}
+		if childTotal > 0 {
+			br.Msg = "该分类下已关联内容, 不可删除"
+			return
+		}
+
+		// 引用
+		useOB := new(eta_training_video.EtaTrainingVideoClassifyRelate)
+		useCond := fmt.Sprintf(` AND %s = ?`, eta_training_video.VideoClassifyRelateColumns.EtaTrainingVideoClassifyId)
+		usePars := make([]interface{}, 0)
+		usePars = append(usePars, item.EtaTrainingVideoClassifyId)
+		useTotal, e := useOB.GetCountByCondition(useCond, usePars)
+		if e != nil {
+			br.Msg = "操作失败"
+			br.ErrMsg = "获取分类引用数失败, Err: " + e.Error()
+			return
+		}
+		if useTotal > 0 {
+			br.Msg = "该分类下已关联内容, 不可删除"
+			return
+		}
+	}
+
+	if e := item.Del(); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "删除分类失败, Err: " + e.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}

+ 346 - 0
controllers/eta_training_video/eta_training_video_tag.go

@@ -0,0 +1,346 @@
+package eta_training_video
+
+import (
+	"encoding/json"
+	"fmt"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"hongze/hz_crm_api/controllers"
+	"hongze/hz_crm_api/models"
+	"hongze/hz_crm_api/models/eta_training_video"
+	"hongze/hz_crm_api/utils"
+	"html/template"
+	"strings"
+	"time"
+)
+
+// EtaTrainingVideoTagController ETA培训视频标签
+type EtaTrainingVideoTagController struct {
+	controllers.BaseAuthController
+}
+
+// PageList
+// @Title 标签列表-分页
+// @Description 标签列表-分页
+// @Param   PageSize		query   int		true	"每页数据量"
+// @Param   CurrentIndex	query   int		true	"当前页码"
+// @Param   Keyword			query	string	false	"关键词: 标签名称"
+// @Success 200 Ret=200 获取成功
+// @router /tag/page_list [get]
+func (this *EtaTrainingVideoTagController) PageList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		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 = utils.StartIndex(currentIndex, pageSize)
+
+	cond := ``
+	pars := make([]interface{}, 0)
+	// 关键词
+	keyword := this.GetString("Keyword", "")
+	keyword = strings.TrimSpace(keyword)
+	keyword = template.HTMLEscapeString(keyword)
+	if keyword != "" {
+		kw := fmt.Sprint("%", keyword, "%")
+		cond += fmt.Sprintf(` AND %s LIKE ?`, eta_training_video.VideoTagColumns.TagName)
+		pars = append(pars, kw)
+	}
+
+	// 获取列表
+	tagOB := new(eta_training_video.EtaTrainingVideoTag)
+	total, e := tagOB.GetCountByCondition(cond, pars)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取标签总数失败, Err: " + e.Error()
+		return
+	}
+	list, e := tagOB.GetPageItemsByCondition(cond, pars, []string{}, "", startSize, pageSize)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取标签列表失败, Err: " + e.Error()
+		return
+	}
+	items := make([]*eta_training_video.EtaTrainingVideoTagItem, 0)
+	for _, v := range list {
+		t := new(eta_training_video.EtaTrainingVideoTagItem)
+		t.TagId = v.EtaTrainingVideoTagId
+		t.TagName = v.TagName
+		t.VideoTotal = v.VideoTotal
+		t.CreateTime = utils.TimeTransferString(utils.FormatDateTime, v.CreateTime)
+		t.ModifyTime = utils.TimeTransferString(utils.FormatDateTime, v.ModifyTime)
+		items = append(items, t)
+	}
+
+	resp := new(eta_training_video.EtaTrainingVideoTagPageListResp)
+	resp.List = items
+	resp.Paging = paging.GetPaging(currentIndex, pageSize, total)
+	br.Data = resp
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}
+
+// Add
+// @Title 新增标签
+// @Description 新增标签
+// @Param	request	body eta_training_video.EtaTrainingVideoTagAddReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /tag/add [post]
+func (this *EtaTrainingVideoTagController) Add() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		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 eta_training_video.EtaTrainingVideoTagAddReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	req.TagName = strings.TrimSpace(req.TagName)
+	if req.TagName == "" {
+		br.Msg = "请输入标签名称"
+		return
+	}
+	nameRune := []rune(req.TagName)
+	if len(nameRune) > 50 {
+		br.Msg = "标签名称不可超过50个字符"
+		return
+	}
+
+	// 重名校验
+	{
+		item := new(eta_training_video.EtaTrainingVideoTag)
+		cond := fmt.Sprintf(` AND %s = ?`, eta_training_video.VideoTagColumns.TagName)
+		pars := make([]interface{}, 0)
+		pars = append(pars, req.TagName)
+		exist, e := item.GetItemByCondition(cond, pars)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			br.Msg = "操作失败"
+			br.ErrMsg = "获取重名标签失败, Err: " + e.Error()
+			return
+		}
+		if exist != nil {
+			br.Msg = "标签名称已存在"
+			return
+		}
+	}
+
+	item := new(eta_training_video.EtaTrainingVideoTag)
+	item.TagName = req.TagName
+	item.SysUserId = sysUser.AdminId
+	item.SysRealName = sysUser.RealName
+	item.CreateTime = time.Now().Local()
+	item.ModifyTime = time.Now().Local()
+	if e := item.Create(); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "新增视频标签失败, Err: " + e.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}
+
+// Edit
+// @Title 编辑标签
+// @Description 编辑标签
+// @Param	request	body eta_training_video.EtaTrainingVideoTagEditReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /tag/edit [post]
+func (this *EtaTrainingVideoTagController) Edit() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		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 eta_training_video.EtaTrainingVideoTagEditReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	if req.TagId <= 0 {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprintf("参数有误, 标签ID: %d", req.TagId)
+		return
+	}
+	req.TagName = strings.TrimSpace(req.TagName)
+	if req.TagName == "" {
+		br.Msg = "请输入标签名称"
+		return
+	}
+	nameRune := []rune(req.TagName)
+	if len(nameRune) > 50 {
+		br.Msg = "标签名称不可超过50个字符"
+		return
+	}
+
+	ob := new(eta_training_video.EtaTrainingVideoTag)
+	item, e := ob.GetItemById(req.TagId)
+	if e != nil {
+		if e.Error() != utils.ErrNoRow() {
+			br.Msg = "标签不存在, 请刷新页面"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取标签失败, Err: " + e.Error()
+		return
+	}
+	if item.TagName == req.TagName {
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "操作成功"
+		return
+	}
+
+	// 重名校验
+	{
+		cond := fmt.Sprintf(` AND %s = ?`, eta_training_video.VideoTagColumns.TagName)
+		pars := make([]interface{}, 0)
+		pars = append(pars, req.TagName)
+		exist, e := ob.GetItemByCondition(cond, pars)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			br.Msg = "操作失败"
+			br.ErrMsg = "获取重名标签失败, Err: " + e.Error()
+			return
+		}
+		if exist != nil && exist.EtaTrainingVideoTagId != item.EtaTrainingVideoTagId {
+			br.Msg = "标签已存在"
+			return
+		}
+	}
+
+	now := time.Now().Local()
+	item.TagName = req.TagName
+	item.ModifyTime = now
+	cols := []string{"TagName", "ModifyTime"}
+	if e := item.Update(cols); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "更新标签失败, Err: " + e.Error()
+		return
+	}
+
+	// 更新关联表冗余
+	go func() {
+		relateOB := new(eta_training_video.EtaTrainingVideoTagRelate)
+		_ = relateOB.UpdateTagNameByTagId(item.EtaTrainingVideoTagId, req.TagName)
+	}()
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}
+
+// Remove
+// @Title 删除标签
+// @Description 删除标签
+// @Param	request	body eta_training_video.EtaTrainingVideoTagRemoveReq true "type json string"
+// @Success 200 Ret=200 操作成功
+// @router /tag/remove [post]
+func (this *EtaTrainingVideoTagController) Remove() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		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 eta_training_video.EtaTrainingVideoTagRemoveReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	if req.TagId <= 0 {
+		br.Msg = "参数有误"
+		br.ErrMsg = fmt.Sprint("参数有误, 标签ID: ", req.TagId)
+		return
+	}
+
+	ob := new(eta_training_video.EtaTrainingVideoTag)
+	item, e := ob.GetItemById(req.TagId)
+	if e != nil {
+		if e.Error() == utils.ErrNoRow() {
+			br.Ret = 200
+			br.Success = true
+			br.Msg = "操作成功"
+			return
+		}
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取标签失败, Err: " + e.Error()
+		return
+	}
+	if e := item.Del(); e != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "删除标签失败, Err: " + e.Error()
+		return
+	}
+
+	// 移除关联
+	go func() {
+		relateOB := new(eta_training_video.EtaTrainingVideoTagRelate)
+		_ = relateOB.RemoveRelateByTagId(item.EtaTrainingVideoTagId)
+	}()
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}

+ 1 - 13
controllers/roadshow/company.go

@@ -4,9 +4,7 @@ import (
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/company"
 	"hongze/hz_crm_api/models/roadshow"
-	"hongze/hz_crm_api/services"
 	"hongze/hz_crm_api/utils"
-	"strconv"
 	"strings"
 )
 
@@ -101,23 +99,13 @@ func (this *CalendarController) CompanyDetail() {
 		for _, v := range permissionList {
 			permissionArr = append(permissionArr, v.PermissionName)
 		}
-		readMap, err := services.GetFiccCountUserViewHistoryByCompanyIds(strconv.Itoa(companyId))
-		if err != nil {
-			br.Msg = "获取阅读次数失败!"
-			br.ErrMsg = "获取阅读次数失败!Err:" + err.Error()
-			return
-		}
-		readNum, ok := readMap[companyId]
-		if !ok {
-			readNum = 0
-		}
 		detailView.CompanyId = companyProductItem.CompanyId
 		detailView.CompanyName = companyProductItem.CompanyName
 		detailView.Status = companyProductItem.Status
 		detailView.IndustryId = companyProductItem.IndustryId
 		detailView.IndustryName = companyProductItem.IndustryName
 		detailView.PermissionName = strings.Join(permissionArr, "/")
-		detailView.ReportReadTotal = readNum //ficc报告-累计阅读次数
+		detailView.ReportReadTotal = companyProductItem.ViewTotal //ficc报告-累计阅读次数
 		br.Ret = 200
 		br.Success = true
 		br.Msg = "获取成功"

+ 1 - 1
controllers/sys_role.go

@@ -97,7 +97,7 @@ func (this *SysRoleController) Edit() {
 		return
 	}
 	if req.RoleName == "" {
-		br.Msg = "分组名称不能为空"
+		br.Msg = "角色名称不能为空"
 		return
 	}
 	item, err := system.GetSysRoleByName(req.RoleName)

+ 3 - 3
controllers/user_login.go

@@ -532,13 +532,13 @@ func (this *UserLoginController) Login() {
 		noTrustLoginId, _ := utils.Rc.RedisString(noTrustLoginKey)
 		if noTrustLoginId != `` { // 如果存在不可信设备,那么将其下架
 			oldNoTrustLoginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN, noTrustLoginId)
-			_ = utils.Rc.Put(oldNoTrustLoginKey, "0", 30*time.Minute)
+			_ = utils.Rc.Put(oldNoTrustLoginKey, "0", utils.LoginCacheTime*time.Minute)
 		}
 
 		// 如果当前是不可信设备,那么将其加入到不可信名单
 		loginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN, sysSession.Id)
-		_ = utils.Rc.Put(loginKey, "1", 30*time.Minute)
-		_ = utils.Rc.Put(noTrustLoginKey, sysSession.Id, 30*time.Minute)
+		_ = utils.Rc.Put(loginKey, "1", utils.LoginCacheTime*time.Minute)
+		_ = utils.Rc.Put(noTrustLoginKey, sysSession.Id, utils.LoginCacheTime*time.Minute)
 	}
 
 	// 新增登录记录

+ 23 - 1
models/chart_permission.go

@@ -2,6 +2,7 @@ package models
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/utils"
 	"time"
 )
 
@@ -108,7 +109,21 @@ func GetChartPermissionByIds(permissionIds []string) (list []*ChartPermission, e
 	return
 }
 
-// GetChartPermissionByIds 主键获取权限
+// GetChartPermissionByIdList 主键获取权限
+func GetChartPermissionByIdList(chartPermissionIdList []int) (list []*ChartPermission, err error) {
+	num := len(chartPermissionIdList)
+	if num <= 0 {
+		return
+	}
+
+	o := orm.NewOrm()
+	sql := `select * from chart_permission where chart_permission_id in (` + utils.GetOrmInReplace(num) + `)`
+	_, err = o.Raw(sql, chartPermissionIdList).QueryRows(&list)
+
+	return
+}
+
+// GetChartPermissionByNames 主键获取权限
 func GetChartPermissionByNames(permissionNames []string) (list []*ChartPermission, err error) {
 	qb, _ := orm.NewQueryBuilder("mysql")
 	// 构建查询对象
@@ -130,3 +145,10 @@ func GetChartPermissionList() (list []*ChartPermission, err error) {
 	_, err = o.Raw(sql).QueryRows(&list)
 	return
 }
+
+func GetChartPermissionListRai() (items []*ChartPermission, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM chart_permission WHERE product_id=2  ORDER BY sort ASC `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 16 - 0
models/company/company_apply.go

@@ -79,6 +79,22 @@ func GetCompanyContractHistoryList(companyId int, productId string) (items []*Co
 	return
 }
 
+func GetCompanyContractHistoryListByContractCode(contractCode string) (items []*CompanyContractHistory, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+				a.*,
+				b.contract_id
+			FROM
+				company_contract AS a
+			LEFT JOIN contract AS b ON a.contract_code = b.contract_code
+			WHERE
+				a.contract_code = ?  AND a.status = 1
+			ORDER BY
+				a.modify_time DESC`
+	_, err = o.Raw(sql, contractCode).QueryRows(&items)
+	return
+}
+
 type CompanyContractDetail struct {
 	CompanyContractId int
 	CompanyId         int       `description:"客户id"`

+ 23 - 0
models/company/company_product.go

@@ -376,6 +376,7 @@ func GetRemarkListByCompanyId(CompanyId string) (items []*CompanyProductRemark,
 	_, err = o.Raw(sql, CompanyId).QueryRows(&items)
 	return
 }
+
 // 冻结客户
 //func FreezeCompany(productId, companyId, adminId int, remark, realName string) (msg, errMsg string){
 //	time.Sleep(time.Second)
@@ -558,3 +559,25 @@ func DelCompanyRemark(remarkId int) (err error) {
 	_, err = o.Raw(sql, remarkId).Exec()
 	return
 }
+
+// 获取列表
+func GetCompanyProductList(condition string, pars []interface{}) (items []*CompanyProduct, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT *  FROM company_product WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+// 获取列表
+func GetCompanyProductListBycondition(condition string, pars []interface{}) (items []*CompanyProduct, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT a.company_id FROM company AS a  INNER JOIN company_product AS b ON a.company_id=b.company_id   WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}

+ 104 - 309
models/company/company_user.go

@@ -63,6 +63,10 @@ type CompanyUser struct {
 	IsSubscribe              int       `description:"是否关注了微信公众号: 0-未关注; 1-已关注"`
 	IsSubscribeHzyj          int       `description:"是否关注了弘则研究微信公众号: 0-未关注; 1-已关注"`
 	IsSubscribeCygx          int       `description:"是否关注了查研观向微信公众号: 0-未关注; 1-已关注"`
+	FiccViewTotal            int       `description:"ficc报告的阅读次数" json:"-"`
+	FiccLastViewTime         time.Time `description:"ficc报告最近一次阅读时间" json:"-"`
+	RaiViewTotal             int       `description:"权益报告的阅读次数" json:"-"`
+	RaiLastViewTime          time.Time `description:"权益报告的最近一次阅读时间" json:"-"`
 }
 
 type CompanyUserListResp struct {
@@ -283,315 +287,6 @@ type ViewReportListResp struct {
 	List  []*ViewReportList
 }
 
-func GetViewReportListByMobile(mobile string, txtType int) (items []*ViewReportList, err error) {
-	dataName := ""
-	sql := ``
-	if utils.RunMode == "debug" {
-		dataName = "test_v2_hongze_rddp"
-	} else {
-		dataName = "hongze_rddp"
-	}
-
-	ficcSql := `SELECT
-	rr.research_report_name,
-		rr.type AS report_type,
-		'ficc' AS txt_type,
-		'--' AS match_type_name,
-		'--' AS stop_time,
-	uvh.created_time AS created_time
-	FROM
-	user_view_history uvh
-	LEFT JOIN research_report rr ON rr.research_report_id = uvh.research_report_id
-	WHERE
-	uvh.mobile = ?
-	UNION ALL
-	SELECT
-	r.title AS research_report_name,
-		'rddp' AS report_type,
-		'ficc' AS txt_type,
-		r.classify_name_first AS match_type_name,
-		'--' AS stop_time,
-		rvr.create_time AS created_time
-	FROM %s.report_view_record rvr
-	LEFT JOIN %s.report r ON r.id = rvr.report_id
-	WHERE
-	rvr.mobile=?
-	UNION ALL
-	SELECT
-	cha.permission_name AS research_report_name,
-		'advisory' AS report_type,
-		'ficc' AS txt_type,
-		cha.classify_name AS match_type_name,
-		'--' AS stop_time,
-		auc.create_time AS created_time
-	FROM
-	advisory_user_chart_article_record auc
-	LEFT JOIN chart_permission cha ON cha.chart_permission_id = auc.chart_permission_id
-	WHERE
-	auc.mobile = ?`
-
-	rightsSql := `SELECT
-		art.title AS research_report_name,
-		'cygx' AS report_type,
-		'rights' AS txt_type,
-		art.match_type_name,
-		h.stop_time,
-		h.create_time AS created_time 
-	FROM
-		cygx_article_history_record_all h
-		INNER JOIN cygx_article art ON art.article_id = h.article_id
-	WHERE
-		h.mobile = ? AND h.company_id != 16  AND h.is_del = 0 `
-
-	if txtType == 1 {
-		sql = ` SELECT * FROM ( ` + rightsSql + `
-	      )AS t ORDER BY t.created_time DESC`
-	} else if txtType == 2 {
-		sql = ` SELECT * FROM ( ` + ficcSql + `
-	      )AS t ORDER BY t.created_time DESC`
-	} else {
-		sql = ` SELECT * FROM ( ` + ficcSql + " UNION ALL " + rightsSql + `
-	      )AS t ORDER BY t.created_time DESC`
-	}
-
-	//报告统计删除晨报部分统计加入每日资讯 2021-4-9
-	//sql := ` SELECT * FROM (
-	//					SELECT
-	//							r.title AS research_report_name,
-	//							'rddp' AS report_type,
-	//							rvr.create_time AS created_time
-	//						FROM %s.report_view_record rvr
-	//						INNER JOIN %s.report r ON r.id = rvr.report_id
-	//						WHERE
-	//							rvr.mobile=?
-	//					UNION ALL
-	//					SELECT
-	//					cha.permission_name AS research_report_name,
-	//					'advisory' AS report_type,
-	//					auc.create_time AS created_time
-	//				FROM
-	//					advisory_user_chart_article_record auc
-	//					INNER JOIN chart_permission cha ON cha.chart_permission_id = auc.chart_permission_id
-	//				WHERE
-	//					auc.mobile = ?
-	//       )AS t ORDER BY t.created_time DESC
-	//    `
-
-	o := orm.NewOrm()
-
-	if txtType == 1 {
-		_, err = o.Raw(sql, mobile).QueryRows(&items)
-	} else if txtType == 2 {
-		sql = fmt.Sprintf(sql, dataName, dataName)
-		_, err = o.Raw(sql, mobile, mobile, mobile).QueryRows(&items)
-	} else {
-		sql = fmt.Sprintf(sql, dataName, dataName)
-		_, err = o.Raw(sql, mobile, mobile, mobile, mobile).QueryRows(&items)
-	}
-
-	return
-}
-
-func GetViewReportListByEmail2(email string, txtType int) (items []*ViewReportList, err error) {
-	dataName := ""
-	sql := ``
-	if utils.RunMode == "debug" {
-		dataName = "test_v2_hongze_rddp"
-	} else {
-		dataName = "hongze_rddp"
-	}
-
-	ficcSql := `SELECT
-	rr.research_report_name,
-		rr.type AS report_type,
-		'ficc' AS txt_type,
-		'--' AS match_type_name,
-		'--' AS stop_time,
-	uvh.created_time AS created_time
-	FROM
-	user_view_history uvh
-	INNER JOIN research_report rr ON rr.research_report_id = uvh.research_report_id
-	WHERE
-	uvh.email = ?
-	UNION ALL
-	SELECT
-	r.title AS research_report_name,
-		'rddp' AS report_type,
-		'ficc' AS txt_type,
-		r.classify_name_first AS match_type_name,
-		'--' AS stop_time,
-		rvr.create_time AS created_time
-	FROM %s.report_view_record rvr
-	INNER JOIN %s.report r ON r.id = rvr.report_id
-	WHERE
-	rvr.email=?
-	UNION ALL
-	SELECT
-	cha.permission_name AS research_report_name,
-		'advisory' AS report_type,
-		'ficc' AS txt_type,
-		cha.classify_name AS match_type_name,
-		'--' AS stop_time,
-		auc.create_time AS created_time
-	FROM
-	advisory_user_chart_article_record auc
-	INNER JOIN chart_permission cha ON cha.chart_permission_id = auc.chart_permission_id
-	WHERE
-	auc.email = ?`
-
-	rightsSql := `SELECT
-		art.title AS research_report_name,
-		'cygx' AS report_type,
-		'rights' AS txt_type,
-		art.match_type_name,
-		h.stop_time,
-		h.create_time AS created_time 
-	FROM
-		cygx_article_history_record_all h
-		INNER JOIN cygx_article art ON art.article_id = h.article_id
-	WHERE
-		h.email = ? AND h.company_id != 16 AND h.is_del = 0 `
-
-	if txtType == 1 {
-		sql = ` SELECT * FROM ( ` + rightsSql + `
-	      )AS t ORDER BY t.created_time DESC`
-	} else if txtType == 2 {
-		sql = ` SELECT * FROM ( ` + ficcSql + `
-	      )AS t ORDER BY t.created_time DESC`
-	} else {
-		sql = ` SELECT * FROM ( ` + ficcSql + " UNION ALL " + rightsSql + `
-	      )AS t ORDER BY t.created_time DESC`
-	}
-
-	//报告统计删除晨报部分统计加入每日资讯 2021-4-9
-	//sql := ` SELECT * FROM (
-	//					SELECT
-	//							r.title AS research_report_name,
-	//							'rddp' AS report_type,
-	//							rvr.create_time AS created_time
-	//						FROM %s.report_view_record rvr
-	//						INNER JOIN %s.report r ON r.id = rvr.report_id
-	//						WHERE
-	//							rvr.mobile=?
-	//					UNION ALL
-	//					SELECT
-	//					cha.permission_name AS research_report_name,
-	//					'advisory' AS report_type,
-	//					auc.create_time AS created_time
-	//				FROM
-	//					advisory_user_chart_article_record auc
-	//					INNER JOIN chart_permission cha ON cha.chart_permission_id = auc.chart_permission_id
-	//				WHERE
-	//					auc.mobile = ?
-	//       )AS t ORDER BY t.created_time DESC
-	//    `
-
-	o := orm.NewOrm()
-	if txtType == 1 {
-		_, err = o.Raw(sql, email).QueryRows(&items)
-	} else if txtType == 2 {
-		sql = fmt.Sprintf(sql, dataName, dataName)
-		_, err = o.Raw(sql, email, email, email).QueryRows(&items)
-	} else {
-		sql = fmt.Sprintf(sql, dataName, dataName)
-		_, err = o.Raw(sql, email, email, email, email).QueryRows(&items)
-	}
-
-	return
-}
-
-func GetViewReportListByEmail(email string) (items []*ViewReportList, err error) {
-	dataName := ""
-	if utils.RunMode == "debug" {
-		dataName = "test_v2_hongze_rddp"
-	} else {
-		dataName = "hongze_rddp"
-	}
-	sql := ` SELECT * FROM (
-				SELECT
-							rr.research_report_name,
-							rr.type AS report_type,
-							uvh.created_time AS created_time
-						FROM
-							user_view_history uvh
-							INNER JOIN research_report rr ON rr.research_report_id = uvh.research_report_id
-						WHERE
-							uvh.email = ?
-						UNION ALL
-						SELECT
-								r.title AS research_report_name,
-								'rddp' AS report_type,
-								rvr.create_time AS created_time
-							FROM %s.report_view_record rvr
-							INNER JOIN %s.report r ON r.id = rvr.report_id
-							WHERE
-								rvr.email=?
-						UNION ALL
-						SELECT
-						cha.permission_name AS research_report_name,
-						'advisory' AS report_type,
-						auc.create_time AS created_time 
-					FROM
-						advisory_user_chart_article_record auc
-						INNER JOIN chart_permission cha ON cha.chart_permission_id = auc.chart_permission_id 
-					WHERE
-						auc.email = ?
-	      )AS t ORDER BY t.created_time DESC
-       `
-	//报告统计删除晨报部分统计加入每日资讯 2021-4-9
-	//sql := ` SELECT * FROM (
-	//					SELECT
-	//							r.title AS research_report_name,
-	//							'rddp' AS report_type,
-	//							rvr.create_time AS created_time
-	//						FROM %s.report_view_record rvr
-	//						INNER JOIN %s.report r ON r.id = rvr.report_id
-	//						WHERE
-	//							rvr.email=?
-	//					UNION ALL
-	//					SELECT
-	//					cha.permission_name AS research_report_name,
-	//					'advisory' AS report_type,
-	//					auc.create_time AS created_time
-	//				FROM
-	//					advisory_user_chart_article_record auc
-	//					INNER JOIN chart_permission cha ON cha.chart_permission_id = auc.chart_permission_id
-	//				WHERE
-	//					auc.email = ?
-	//       )AS t ORDER BY t.created_time DESC
-	//    `
-	sql = fmt.Sprintf(sql, dataName, dataName)
-	o := orm.NewOrm()
-	_, err = o.Raw(sql, email, email, email).QueryRows(&items)
-	return
-}
-
-func GetCompanyUserByCompanyId(companyId int) (items []*CompanyUser, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.company_name,
-             (SELECT count(1) FROM user_view_history AS uvh WHERE uvh.user_id=a.user_id GROUP BY a.user_id) AS view_total,
-             (SELECT max(uvh.created_time) FROM user_view_history AS uvh WHERE uvh.user_id=a.user_id GROUP BY a.user_id) AS last_view_time
-              FROM wx_user AS a 
-			 INNER JOIN company AS b ON a.company_id=b.company_id
-			 WHERE a.company_id=? `
-	sql += `ORDER BY  a.last_updated_time DESC `
-	_, err = o.Raw(sql, companyId).QueryRows(&items)
-	return
-}
-
-func GetCompanyUserExportByCompanyId(companyId int) (items []*CompanyUser, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.company_name,
-             (SELECT count(1) FROM user_view_history AS uvh WHERE uvh.user_id=a.user_id GROUP BY a.user_id) AS view_total,
-             (SELECT max(uvh.created_time) FROM user_view_history AS uvh WHERE uvh.user_id=a.user_id GROUP BY a.user_id) AS last_view_time
-              FROM wx_user AS a 
-			 INNER JOIN company AS b ON a.company_id=b.company_id
-			 WHERE a.company_id=? AND a.company_id<>1 `
-	sql += `ORDER BY  a.last_updated_time DESC `
-	_, err = o.Raw(sql, companyId).QueryRows(&items)
-	return
-}
-
 func ModifyCompanyUserCompanyId(userId, companyId int) (err error) {
 	o := orm.NewOrm()
 	sql := ` UPDATE wx_user SET company_id=?  WHERE user_id=? `
@@ -676,3 +371,103 @@ func GetCompanyUsersByCondition(condition string, pars []interface{}) (list []*C
 	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&list)
 	return
 }
+
+type ViewReportListV2 struct {
+	Id                 int    `description:"阅读记录id"`
+	UserId             int    `description:"用户id"`
+	Mobile             string `description:"手机号"`
+	Email              string `description:"邮箱"`
+	RealName           string `description:"真实姓名"`
+	CompanyName        string `description:"客户名称"`
+	ResearchReportName string `description:"报告标题"`
+	ReportType         int8   `description:"来源:1:rddp的报告;2:weekly_report的PHP报告;3:weekly_report商品的报告(应该是作废了);4:察研观向的报告""`
+	CreatedTime        string `description:"创建时间"`
+	TxtType            string `description:"类型 ficc:ficc  、 rights:权益"`
+	MatchTypeName      string `description:"匹配类型"`
+	StopTime           int    `description:"停留时间"`
+	ReportId           int    `description:"报告id"`
+	ReportChapterId    int    `description:"报告章节id"`
+}
+
+func GetViewReportListByDate(startDate, endDate string) (items []*ViewReportListV2, err error) {
+	dataName := ""
+	sql := ``
+	if utils.RunMode == "debug" {
+		dataName = "test_v2_hongze_rddp"
+	} else {
+		dataName = "hongze_rddp"
+	}
+
+	ficcSql := `SELECT
+    uvh.user_id,uvh.mobile,uvh.email,uvh.view_history_id AS id,uvh.real_name,uvh.company_name,
+    uvh.research_report_id as report_id,
+    uvh.research_report_type_id as report_chapter_id,
+	rr.research_report_name,
+		"2" AS report_type,
+		'ficc' AS txt_type,
+		'--' AS match_type_name,
+		'0' AS stop_time,
+	uvh.created_time AS created_time
+	FROM
+	user_view_history uvh
+	LEFT JOIN research_report rr ON rr.research_report_id = uvh.research_report_id
+	WHERE
+	uvh.created_time >= ? AND uvh.created_time< ?
+	UNION ALL
+	SELECT
+    rvr.user_id,rvr.mobile,rvr.email,rvr.id,rvr.real_name,rvr.company_name,
+    rvr.report_id,
+    rvr.report_chapter_id,
+	r.title AS research_report_name,
+		'1' AS report_type,
+		'ficc' AS txt_type,
+		r.classify_name_first AS match_type_name,
+		'0' AS stop_time,
+		rvr.create_time AS created_time
+	FROM %s.report_view_record rvr
+	LEFT JOIN %s.report r ON r.id = rvr.report_id
+	WHERE
+	rvr.create_time >= ? AND rvr.create_time< ?
+	UNION ALL
+	SELECT
+    auc.user_id,auc.mobile,auc.email,auc.id,auc.real_name,auc.company_name,
+    auc.chart_permission_id as report_id,
+    '0' AS report_chapter_id,
+	cha.permission_name AS research_report_name,
+		'3' AS report_type,
+		'ficc' AS txt_type,
+		cha.classify_name AS match_type_name,
+		'0' AS stop_time,
+		auc.create_time AS created_time
+	FROM
+	advisory_user_chart_article_record auc
+	LEFT JOIN chart_permission cha ON cha.chart_permission_id = auc.chart_permission_id
+	WHERE
+	auc.create_time >= ? AND auc.create_time< ?`
+
+	rightsSql := `SELECT
+    h.user_id,h.mobile,h.email,h.id,h.company_name,'' AS real_name,
+    h.article_id AS  report_id,
+    '0' AS report_chapter_id,
+		art.title AS research_report_name,
+		'4' AS report_type,
+		'rights' AS txt_type,
+		art.match_type_name,
+		h.stop_time,
+		h.create_time AS created_time 
+	FROM
+		cygx_article_history_record_newpv h
+		INNER JOIN cygx_article art ON art.article_id = h.article_id
+	WHERE
+	h.create_time >= ? AND h.create_time< ? `
+
+	sql = ` SELECT * FROM ( ` + ficcSql + " UNION ALL " + rightsSql + `
+	      )AS t ORDER BY t.created_time asc`
+
+	o := orm.NewOrm()
+
+	sql = fmt.Sprintf(sql, dataName, dataName)
+	_, err = o.Raw(sql, startDate, endDate, startDate, endDate, startDate, endDate, startDate, endDate).QueryRows(&items)
+
+	return
+}

+ 16 - 70
models/cygx/activity.go

@@ -25,7 +25,7 @@ type ActivityList struct {
 
 // 列表
 func GetActivityList() (items []*ActivityType, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_type ORDER BY sort DESC`
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
@@ -45,7 +45,7 @@ type ActivityCcustomerTypeList struct {
 
 // 列表
 func GetActivityCcustomerTypeList(condition string) (items []*ActivityCcustomerType, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_customer_type WHERE  1= 1 `
 	if condition != "" {
 		sql += condition
@@ -255,7 +255,7 @@ type CygxActivityEditDetail struct {
 
 // 添加活动
 func AddActivity(items []*CygxActivity, industrialActivityItems [][]*CygxIndustrialActivityGroupManagement, subjectActivityItems [][]*CygxIndustrialActivityGroupSubject, itemPointsSet *CygxActivityPointsSet) (newId int64, activityIdArr []int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -322,7 +322,7 @@ func AddActivity(items []*CygxActivity, industrialActivityItems [][]*CygxIndustr
 
 // 通过纪要ID获取活动详情
 func GetAddActivityInfoById(ActivityId int) (item *ActivityDetail, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			a.*,t.permission_type
 		FROM
@@ -336,7 +336,7 @@ func GetAddActivityInfoById(ActivityId int) (item *ActivityDetail, err error) {
 
 // 修改
 func EditActivity(item *CygxActivity, oldPublishStatus int, industrialActivityItems [][]*CygxIndustrialActivityGroupManagement, subjectActivityItems [][]*CygxIndustrialActivityGroupSubject, itemPointsSet *CygxActivityPointsSet) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -462,40 +462,6 @@ func EditActivity(item *CygxActivity, oldPublishStatus int, industrialActivityIt
 		}
 	}
 
-	//音频处理
-	//删除旧的音频
-	//sql = "DELETE FROM cygx_activity_voice WHERE activity_id=?"
-	//_, err = to.Raw(sql, activityId).Exec()
-	////插入新的音频
-	////if len(itemVoiceList) > 0 {
-	////	voiceId, err := to.InsertMulti(len(itemVoiceList), itemVoiceList)
-	////	if err != nil {
-	////		return
-	////	}
-	////}
-	//if itemVoice != nil {
-	//	if itemVoice.VoiceUrl != "" {
-	//		voiceId, err = to.Insert(itemVoice)
-	//		if err != nil {
-	//			return
-	//		}
-	//	}
-	//}
-	//
-	////视频处理
-	////删除旧的视频
-	//sql = "DELETE FROM cygx_activity_video WHERE activity_id=?"
-	//_, err = to.Raw(sql, activityId).Exec()
-	////插入新的音频
-	//if itemVideo != nil {
-	//	if itemVideo.VideoUrl != "" {
-	//		videoId, err = to.Insert(itemVideo)
-	//		if err != nil {
-	//			return
-	//		}
-	//	}
-	//}
-
 	{
 		//处理研选扣点子表
 		if itemPointsSet.PointsObject == "" {
@@ -547,7 +513,7 @@ func EditActivity(item *CygxActivity, oldPublishStatus int, industrialActivityIt
 
 // 修改
 func EditActivityStatus(activityId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -610,7 +576,7 @@ type GetCygxActivityListRep struct {
 
 // 列表
 func GetActivityListAll(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxActivityList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity as art WHERE 1= 1 `
 	if condition != "" {
 		sql += condition
@@ -626,14 +592,14 @@ func GetActivityCount(condition string, pars []interface{}) (count int, err erro
 	if condition != "" {
 		sqlCount += condition
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
 
 // 获取数量
 func GetActivityCountById(activityId int) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := `SELECT COUNT(1) AS count  FROM cygx_activity WHERE activity_id = ?`
 	err = o.Raw(sqlCount, activityId).QueryRow(&count)
 	return
@@ -641,7 +607,7 @@ func GetActivityCountById(activityId int) (count int, err error) {
 
 // 修改发布状态
 func ActivityPublishAndCancel(item *CygxActivity) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -660,32 +626,12 @@ func ActivityPublishAndCancel(item *CygxActivity) (err error) {
 	if err != nil {
 		return
 	}
-	//if item.PublishStatus == 0 {
-	//	//删除报名信息
-	//	sql = ` DELETE FROM cygx_activity_signup WHERE activity_id = ?`
-	//	_, err = to.Raw(sql, activityId).Exec()
-	//	if err != nil {
-	//		return
-	//	}
-	//	//删除会议提醒信息
-	//	sql = ` DELETE FROM cygx_activity_meeting_reminder WHERE activity_id = ?`
-	//	_, err = to.Raw(sql, activityId).Exec()
-	//	if err != nil {
-	//		return
-	//	}
-	//	//删除我的日程信息
-	//	sql = ` DELETE FROM cygx_my_schedule WHERE activity_id = ?`
-	//	_, err = to.Raw(sql, activityId).Exec()
-	//	if err != nil {
-	//		return
-	//	}
-	//}
 	return
 }
 
 // 删除数据
 func DeleteActivity(activityId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` DELETE FROM cygx_activity WHERE activity_id = ?`
 	_, err = o.Raw(sql, activityId).Exec()
 	return
@@ -693,7 +639,7 @@ func DeleteActivity(activityId int) (err error) {
 
 // 更新手动匹配的活动匹配关键词,建立匹配关系
 func UpdateActivityRoadshowTitle(activityId int, roadshowTitle, roadshowId string) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` UPDATE cygx_activity SET  jmcj_roadshow_title=?,jmcj_activity_id=?   WHERE activity_id=?`
 	_, err = o.Raw(sql, roadshowTitle, roadshowId, activityId).Exec()
 	return
@@ -701,7 +647,7 @@ func UpdateActivityRoadshowTitle(activityId int, roadshowTitle, roadshowId strin
 
 // 列表
 func GetArticleListByCategoryId(categoryIds, industrialSubjectIdS string) (items []*CygxArticle, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 				* 
 			FROM
@@ -728,7 +674,7 @@ func GetactivityIdsByLabel(name string) (activityIds string, err error) {
 				cygx_activity AS s 
 			WHERE
 				label LIKE '%` + name + `%' `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sql).QueryRow(&activityIds)
 	return
 }
@@ -736,7 +682,7 @@ func GetactivityIdsByLabel(name string) (activityIds string, err error) {
 // 根据易董的建会信息,修改腾讯参会信息
 func UpdateCygxActivityTencentConferenceNumber(item *ActivityDetail) (err error) {
 	sql := `UPDATE cygx_activity SET  tencent_conference_number=?,yidong_activity_id_by_cygx=?, body = ?  WHERE activity_id=? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Raw(sql, item.TencentConferenceNumber, item.YidongActivityIdByCygx, item.Body, item.ActivityId).Exec()
 	return
 }
@@ -744,7 +690,7 @@ func UpdateCygxActivityTencentConferenceNumber(item *ActivityDetail) (err error)
 // 添加场所码
 func UpdateCygxActivitySigninImg(signinImg string, activityId int) (err error) {
 	sql := `UPDATE cygx_activity SET  signin_img=?  WHERE activity_id=? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Raw(sql, signinImg, activityId).Exec()
 	return
 }

+ 18 - 39
models/cygx/activity_appointment.go

@@ -3,7 +3,6 @@ package cygx
 import (
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
-	"hongze/hz_crm_api/utils"
 	"time"
 )
 
@@ -24,7 +23,7 @@ type CygxActivityAppointment struct {
 
 // 取消纪要预约
 func CancelcygxActivityAppointment(item *CygxActivityAppointment) (lastId int64, err error) {
-	o, err := orm.NewOrm().Begin()
+	o, err := orm.NewOrmUsingDB("hz_cygx").Begin()
 	if err != nil {
 		return
 	}
@@ -64,16 +63,11 @@ func CancelcygxActivityAppointment(item *CygxActivityAppointment) (lastId int64,
 
 // 预约纪要的人数列表
 func GetCygxAppointmentSummaryList(activityId int, sqlStr string) (item []*CygxAppointmentList, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT s.id,s.activity_id,s.user_id,s.create_time,s.mobile,s.company_id ,u.real_name,c.company_name,a.activity_time,
-			(SELECT p.seller_name from company_product as p WHERE p.company_id = u.company_id  AND  p.product_id = 2 )  AS seller_name,
-			GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS pseller_name
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT s.*,a.activity_time
 			FROM
 			cygx_activity_appointment AS s
-			INNER JOIN wx_user AS u ON  u.user_id = s.user_id
 			LEFT JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-			LEFT JOIN company_product AS p ON p.company_id = u.company_id 
-			LEFT JOIN company AS c ON c.company_id = u.company_id 
 			WHERE a.activity_id = ?  ` + sqlStr + `  GROUP BY s.user_id   ORDER BY s.create_time DESC `
 	_, err = o.Raw(sql, activityId).QueryRows(&item)
 	return
@@ -81,12 +75,10 @@ func GetCygxAppointmentSummaryList(activityId int, sqlStr string) (item []*CygxA
 
 // 预约纪要的人数数量
 func GetCygxAppointmentSummaryCount(activityId int, sqlStr string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT COUNT(*) FROM
 			cygx_activity_appointment AS s
-			INNER  JOIN wx_user AS u ON  u.user_id = s.user_id
 			LEFT JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-			LEFT JOIN company_product AS p ON p.company_id = u.company_id 
 			WHERE
 			s.activity_id = ? ` + sqlStr + `
             GROUP BY s.user_id)`
@@ -97,7 +89,7 @@ func GetCygxAppointmentSummaryCount(activityId int, sqlStr string) (count int, e
 
 // 通过ID获取预约纪要详情
 func GetCygxAppointmentSummaryInfoById(id int) (item *CygxActivityAppointment, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_appointment  WHERE id=?`
 	err = o.Raw(sql, id).QueryRow(&item)
 	return
@@ -106,14 +98,14 @@ func GetCygxAppointmentSummaryInfoById(id int) (item *CygxActivityAppointment, e
 // 获取某一用户的报名的数量
 func GetUserCygxActivityAppointmentCount(uid, activityId int) (count int, err error) {
 	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_appointment  WHERE  user_id=?  AND   activity_id =? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
 	return
 }
 
 // 添加预约纪要
 func AddCygxActivityAppointmentUser(items []*CygxActivityAppointment) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -167,7 +159,7 @@ type CygxAppointmentMobileList struct {
 
 // 通过活动ID获取预约纪要的人数列表
 func GetCygxAppointmentSummaryListBySubjectId(subjectIds string) (item []*CygxAppointmentMobileList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			ap.mobile,
 			ap.activity_id,
@@ -191,30 +183,17 @@ func GetCygxAppointmentSummaryListBySubjectId(subjectIds string) (item []*CygxAp
 
 // 获取预约活动纪要的的用户的openID
 func GetActivityAppointmentOpenIdList(activityId int) (items []*OpenIdList, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	var sql string
-	if utils.RunMode == "release" {
-		sql = `SELECT DISTINCT cr.open_id,u.user_id
+	sql = `SELECT DISTINCT
+				u.open_id,
+				u.cygx_user_id AS user_id 
 			FROM
-			cygx_activity_appointment AS m
-			INNER JOIN user_record AS u ON u.bind_account = m.mobile 
-			INNER JOIN cygx_user_record AS cr ON cr.union_id = u.union_id 
-			WHERE m.activity_id = ? AND u.create_platform = 4 `
-	} else {
-		sql = `SELECT
-			u.open_id,
-			u.user_id 
-		FROM
-			cygx_activity_appointment AS s
-			INNER JOIN wx_user AS wx ON wx.user_id = s.user_id
-			INNER JOIN user_record AS u ON u.bind_account = wx.mobile
-			INNER JOIN company_product AS p ON p.company_id = wx.company_id 
-		WHERE
-			s.activity_id = ? 
-			AND u.create_platform = 1 
-			AND p.STATUS IN ( '正式', '试用', '永续' ) 
-		GROUP BY
-			u.open_id`
-	}
-	_, err = orm.NewOrm().Raw(sql, activityId).QueryRows(&items)
+				cygx_activity_appointment AS m
+				INNER JOIN cygx_user_record AS u ON u.cygx_bind_account = m.mobile 
+				AND u.cygx_user_id = m.user_id 
+			WHERE
+				m.activity_id < ? `
+	_, err = o.Raw(sql, activityId).QueryRows(&items)
 	return
 }

+ 12 - 4
models/cygx/activity_ask_email.go

@@ -5,14 +5,22 @@ import (
 )
 
 type AskEmailRep struct {
-	Name   string `description:"姓名"`
-	Email  string `description:"邮箱"`
-	Mobile string `description:"手机号"`
+	Name                string `description:"姓名"`
+	Email               string `description:"邮箱"`
+	Mobile              string `description:"手机号"`
+	ChartPermissionName string `description:"权限名称"`
 }
 
 func GetAskEmail() (item []*AskEmailRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_ask_email`
 	_, err = o.Raw(sql).QueryRows(&item)
 	return
 }
+
+func GetAskEmailList() (item []*AskEmailRep, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_activity_ask_email WHERE    chart_permission_name != ''  ORDER BY sort  DESC`
+	_, err = o.Raw(sql).QueryRows(&item)
+	return
+}

+ 17 - 29
models/cygx/activity_attendance_detail.go

@@ -36,6 +36,7 @@ type AttendanceDetail struct {
 	RealName              string `description:"姓名"`
 	Mobile                string `description:"手机号"`
 	CompanyName           string `description:"公司名称"`
+	CompanyId             int    `description:"公司ID"`
 	SellerName            string `orm:"column(pseller_name);"description:"销售姓名"`
 	IsMeeting             int    `description:"是否到会"`
 	FirstMeetingTime      string `description:"首次入会时间"`
@@ -54,7 +55,7 @@ type AttendanceDetail struct {
 }
 
 func AddAttendancDetail(items []*CygxActivityAttendanceDetail, activityId int, mobileStr string) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -106,7 +107,7 @@ func AddAttendancDetail(items []*CygxActivityAttendanceDetail, activityId int, m
 }
 
 func GetAttendanceDetailList(activityId int, sqlStr string) (item []*AttendanceDetail, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT s.id,s.activity_id,p.company_name,s.mobile,s.is_meeting,s.outbound_mobile,s.country_code,u.real_name,d.first_meeting_time,d.last_meeting_time,d.meeting_type_str,d.meeting_authentication,d.meeting_status_str,d.duration,d.userid_entity,
 			GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS pseller_name
 			FROM
@@ -119,21 +120,17 @@ func GetAttendanceDetailList(activityId int, sqlStr string) (item []*AttendanceD
 			AND s.fail_type = 0 
 			AND s.is_cancel = 0
 			AND d.userid_entity != 3
-			AND u.mobile != ''
 			AND s.activity_id = ?` + sqlStr + `  GROUP BY s.id  ORDER BY s.is_meeting DESC`
 	_, err = o.Raw(sql, activityId).QueryRows(&item)
 	return
 }
 
 func GetAttendanceDetailListGroup(activityId int, sqlStr string) (item []*AttendanceDetail, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT s.id,s.activity_id,p.company_name,s.mobile,s.is_meeting,s.outbound_mobile,s.country_code,s.real_name,d.first_meeting_time,d.last_meeting_time,d.meeting_type_str,d.meeting_authentication,d.meeting_status_str,d.duration,d.userid_entity,d.userid_entity,
-			GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS pseller_name
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT s.*,d.first_meeting_time,d.last_meeting_time,d.meeting_type_str,d.meeting_authentication,d.meeting_status_str,d.duration,d.userid_entity,d.userid_entity
 			FROM
 			cygx_activity_signup AS s
-			INNER  JOIN wx_user AS u ON u.user_id = s.user_id
 			LEFT JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-			LEFT JOIN company_product AS p ON p.company_id = s.company_id 
 			LEFT JOIN cygx_activity_attendance_detail AS d ON ( d.mobile = s.outbound_mobile   OR d.mobile = s.mobile )  AND s.activity_id = d.activity_id
 			WHERE 1 = 1 
 			AND s.do_fail_type = 0 
@@ -144,13 +141,11 @@ func GetAttendanceDetailListGroup(activityId int, sqlStr string) (item []*Attend
 }
 
 func GetAttendanceDetailListGroupByUser(mobile, sqlStr string) (item []*AttendanceDetail, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT s.id,s.activity_id,p.company_name,s.mobile,s.is_meeting,s.outbound_mobile,s.country_code,s.real_name,s.first_meeting_time,s.last_meeting_time,s.meeting_type_str,s.meeting_authentication,s.meeting_status_str,s.duration,s.userid_entity,s.userid_entity,a.activity_name,a.activity_time_text
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT s.id,s.activity_id,s.company_name,s.mobile,s.is_meeting,s.outbound_mobile,s.country_code,s.real_name,s.first_meeting_time,s.last_meeting_time,s.meeting_type_str,s.meeting_authentication,s.meeting_status_str,s.duration,s.userid_entity,s.userid_entity,a.activity_name,a.activity_time_text
 			FROM
 			cygx_activity_signup_detail AS s
-			INNER  JOIN wx_user AS u ON u.mobile = s.mobile
 			INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-			LEFT JOIN company_product AS p ON p.company_id = s.company_id
 			WHERE 1 = 1 
 			AND s.do_fail_type = 0 
 			AND s.is_cancel = 0
@@ -160,28 +155,21 @@ func GetAttendanceDetailListGroupByUser(mobile, sqlStr string) (item []*Attendan
 }
 
 func GetAttendanceDetailList2(activityId int, sqlStr string) (item []*AttendanceDetail, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT u.user_id,d.activity_id,u.real_name,u.company_id,d.first_meeting_time,d.last_meeting_time,d.meeting_type_str,d.meeting_authentication,d.meeting_status_str,d.mobile,d.duration,p.company_name,d.position,d.userid_entity,
-			GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS pseller_name 
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT d.activity_id,d.real_name,d.company_id,d.first_meeting_time,d.last_meeting_time,d.meeting_type_str,d.meeting_authentication,d.meeting_status_str,d.mobile,d.duration,d.company_name,d.position,d.userid_entity
 			FROM
 			cygx_activity_attendance_detail AS d
-			INNER JOIN wx_user AS u ON u.mobile = d.mobile
-			INNER JOIN company_product AS p ON p.company_id = u.company_id 
-			WHERE 1 = 1 AND d.activity_id = ? AND is_meeting_str = 1 AND d.userid_entity != 3 AND u.mobile != '' ` + sqlStr + ` GROUP BY d.mobile`
+			WHERE 1 = 1 AND d.activity_id = ? AND is_meeting_str = 1 AND d.userid_entity != 3  ` + sqlStr + ` GROUP BY d.mobile`
 	_, err = o.Raw(sql, activityId).QueryRows(&item)
 	return
 }
 
 func GetAttendanceDetailList3(activityId int, sqlStr string) (item []*AttendanceDetail, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT u.user_id,d.activity_id,d.real_name,u.company_id,d.first_meeting_time,d.last_meeting_time,d.meeting_type_str,d.meeting_authentication,d.meeting_status_str,d.mobile,d.duration,d.company_name,d.position,d.userid_entity,
-			GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS pseller_name 
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT d.activity_id,d.real_name,d.company_id,d.first_meeting_time,d.last_meeting_time,d.meeting_type_str,d.meeting_authentication,d.meeting_status_str,d.mobile,d.duration,d.company_name,d.position,d.userid_entity
 			FROM
 			cygx_activity_attendance_detail AS d
-			LEFT  JOIN wx_user AS u ON u.mobile = d.mobile
-			LEFT JOIN company_product AS p ON p.company_id = u.company_id
 			WHERE 1 = 1 AND d.activity_id = ?  AND d.userid_entity != 3 AND d.crm_company_map_status_id != 1 ` + sqlStr + ` GROUP BY d.mobile`
-	//fmt.Println(sql)
 	_, err = o.Raw(sql, activityId).QueryRows(&item)
 	return
 }
@@ -292,7 +280,7 @@ type CompanyMeetRep struct {
 }
 
 func GetCygxActivityAttendanceDetailByCompanyId(mobiles string) (list []*CompanyMeetRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			a.*,
 			s.mobile,
@@ -325,7 +313,7 @@ func GetCygxActivityAttendanceDetailByCompanyId(mobiles string) (list []*Company
 }
 
 func GetCygxActivityOfflineMeetingDetailByCompanyId(mobiles string) (list []*CompanyMeetRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			a.*,s.mobile,s.email,s.real_name
 		FROM
@@ -349,7 +337,7 @@ func GetCygxActivityOfflineMeetingDetailByCompanyId(mobiles string) (list []*Com
 }
 
 func GetCompanyActivityCount(companyId int) (list []*CompanyMeetRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			a.chart_permission_name,
 			date_format( a.activity_time, '%Y-%m' ) AS activity_time
@@ -366,7 +354,7 @@ func GetCompanyActivityCount(companyId int) (list []*CompanyMeetRep, err error)
 }
 
 func GetCygxActivityOfflineMeetingCoount(companyId int) (list []*CompanyMeetRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			a.chart_permission_name,
 			date_format( a.activity_time, '%Y-%m' ) AS activity_time
@@ -381,7 +369,7 @@ func GetCygxActivityOfflineMeetingCoount(companyId int) (list []*CompanyMeetRep,
 
 // 列表
 func GetCygxActivityAttendanceDetailList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxActivityAttendanceDetail, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_attendance_detail as a WHERE 1= 1 `
 	if condition != "" {
 		sql += condition

+ 2 - 2
models/cygx/activity_fastsearch_keywords.go

@@ -27,9 +27,9 @@ type ActivityFastsearchKeywordsListResp struct {
 	List []*ActivityFastsearchKeywordsResp
 }
 
-//列表
+// 列表
 func GetActivityFastsearchKeywordsList() (items []*ActivityFastsearchKeywordsResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT f.*,
 			GROUP_CONCAT( DISTINCT m.key_word SEPARATOR ',' ) AS mirror_word 
 			FROM

+ 13 - 27
models/cygx/activity_help_ask.go

@@ -2,7 +2,6 @@ package cygx
 
 import (
 	"github.com/beego/beego/v2/client/orm"
-	"hongze/hz_crm_api/utils"
 )
 
 type ActivityHelpAsk struct {
@@ -12,6 +11,7 @@ type ActivityHelpAsk struct {
 	CreateTime  string `description:"创建时间"`
 	Mobile      string `description:"手机号"`
 	CompanyName string `description:"公司名称"`
+	CompanyId   int    `description:"公司ID"`
 	RealName    string `description:"姓名"`
 	Content     string `description:"内容"`
 }
@@ -22,10 +22,9 @@ type ActivityHelpAskListResp struct {
 
 // 列表
 func GetActivityHelpAskList(activityId int) (items []*ActivityHelpAsk, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT k.*,u.real_name
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT k.*
 			FROM cygx_activity_help_ask  as k
-			INNER JOIN wx_user as u ON u.mobile = k.mobile
 			WHERE activity_id = ? ORDER BY create_time DESC`
 	_, err = o.Raw(sql, activityId).QueryRows(&items)
 	return
@@ -33,30 +32,17 @@ func GetActivityHelpAskList(activityId int) (items []*ActivityHelpAsk, err error
 
 // 获取活动带问的用户的openID
 func GetActivityHelpAskOpenIdList(activityId int) (items []*OpenIdList, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	var sql string
-	if utils.RunMode == "release" {
-		sql = `SELECT DISTINCT cr.open_id,u.user_id
+	sql = `SELECT DISTINCT
+				u.open_id,
+				u.cygx_user_id AS user_id 
 			FROM
-			cygx_activity_help_ask AS m
-			INNER JOIN user_record AS u ON u.bind_account = m.mobile 
-			INNER JOIN cygx_user_record AS cr ON cr.union_id = u.union_id 
-			WHERE m.activity_id = ? AND u.create_platform = 4 `
-	} else {
-		sql = `SELECT
-			u.open_id,
-			u.user_id 
-		FROM
-			cygx_activity_help_ask AS s
-			INNER JOIN wx_user AS wx ON wx.user_id = s.user_id
-			INNER JOIN user_record AS u ON u.bind_account = wx.mobile
-			INNER JOIN company_product AS p ON p.company_id = wx.company_id 
-		WHERE
-			s.activity_id = ? 
-			AND u.create_platform = 1 
-			AND p.STATUS IN ( '正式', '试用', '永续' ) 
-		GROUP BY
-			u.open_id`
-	}
-	_, err = orm.NewOrm().Raw(sql, activityId).QueryRows(&items)
+				cygx_activity_help_ask AS m
+				INNER JOIN cygx_user_record AS u ON u.cygx_bind_account = m.mobile 
+				AND u.cygx_user_id = m.user_id 
+			WHERE
+				m.activity_id < ? `
+	_, err = o.Raw(sql, activityId).QueryRows(&items)
 	return
 }

+ 37 - 196
models/cygx/activity_meet.go

@@ -1,7 +1,6 @@
 package cygx
 
 import (
-	"fmt"
 	"hongze/hz_crm_api/utils"
 
 	//"hongze/hz_crm_api/models"
@@ -52,17 +51,17 @@ func GetCygxMeetCount(condition string, pars []interface{}) (count int, err erro
 	if condition != "" {
 		sqlCount += condition
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
 
 // 列表
 func GetCygxMeetListAll(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxMeetList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT 
-		( SELECT COUNT( 1 ) FROM cygx_activity_signup AS s INNER JOIN wx_user as u ON  u.user_id = s.user_id   WHERE s.activity_id = a.activity_id AND s.is_cancel = 0 AND s.do_fail_type = 0 AND  s.company_id != 16 ) AS signup_people_num,
-		( SELECT COUNT( 1 ) FROM cygx_activity_signin AS s INNER JOIN wx_user as u ON  u.user_id = s.user_id   WHERE s.activity_id = a.activity_id AND s.company_id <= 1  ) AS potential_people_num,
+		( SELECT COUNT( 1 ) FROM cygx_activity_signup AS s    WHERE s.activity_id = a.activity_id AND s.is_cancel = 0 AND s.do_fail_type = 0 AND  s.company_id != 16 ) AS signup_people_num,
+		( SELECT COUNT( 1 ) FROM cygx_activity_signin AS s   WHERE s.activity_id = a.activity_id AND s.company_id <= 1  ) AS potential_people_num,
 	    ( SELECT COUNT( DISTINCT d.mobile  ) FROM cygx_activity_attendance_detail  AS d  WHERE d.activity_id = a.activity_id  AND( is_meeting_str = 1 or d.company_id <= 1) ) AS meet_people_num,
 	    ( SELECT COUNT( 1 ) FROM cygx_activity_offline_meeting_detail AS o WHERE o.activity_id = a.activity_id AND is_meeting = 1  ) AS omeet_people_num,
 		a.*
@@ -88,14 +87,6 @@ type CygxActivityMeet struct {
 	Source      int       `description:"来源,1小程序,2后台添加"`
 }
 
-// 获取用户报名数量
-func GetActivityMeetCount(uid, activityId int) (count int, err error) {
-	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0  AND activity_id=? `
-	o := orm.NewOrm()
-	err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
-	return
-}
-
 // 报名信息Excel下载
 type MeetExportRep struct {
 	Mobile      string `description:"手机号"`
@@ -115,20 +106,18 @@ type SignUpRestrictUid struct {
 
 // 到会操作
 func MeetingDo(meetingUids, noMeetingUids string, ActivityId int, items []*CygxActivityOfflineMeetingDetail) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
 	}
 	defer func() {
 		if err != nil {
-			fmt.Println(err)
 			_ = to.Rollback()
 		} else {
 			_ = to.Commit()
 		}
 	}()
-	fmt.Println("ActivityId", ActivityId)
 	//修改报名表的参会记录
 	sql := `UPDATE cygx_activity_signup SET is_meeting = 0  WHERE activity_id =? `
 	_, err = to.Raw(sql, ActivityId).Exec()
@@ -177,13 +166,12 @@ func MeetingDo(meetingUids, noMeetingUids string, ActivityId int, items []*CygxA
 
 // 获取数量
 func GetCygxBreakAppointmentCount(condition string, pars []interface{}) (count int, err error) {
-	sqlCount := ` SELECT COUNT(1)  count FROM ( SELECT u.user_id 
+	sqlCount := ` SELECT COUNT(1)  count FROM ( SELECT s.user_id 
 				FROM
 				cygx_activity_signup_break AS s
-				INNER JOIN wx_user AS u ON u.user_id = s.user_id
 				INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-				INNER JOIN company_product AS p ON p.company_id = u.company_id WHERE 1 = 1 ` + condition + ` GROUP BY u.user_id) AS c  `
-	o := orm.NewOrm()
+				 WHERE 1 = 1 ` + condition + ` GROUP BY s.user_id) AS c  `
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
@@ -207,37 +195,34 @@ type GetCygxBreakAppointmentListRep struct {
 }
 
 func GetCygxBreakAppointmentList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxBreakAppointmentList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
-			( SELECT COUNT( 1 ) FROM cygx_activity_restrict_signup AS sig WHERE sig.user_id = u.user_id AND sig.is_restrict = 1 ) AS is_restrict,
+			( SELECT COUNT( 1 ) FROM cygx_activity_restrict_signup AS sig WHERE sig.is_restrict = 1 ) AS is_restrict,
 			(
 			SELECT
 				COUNT( 1 ) count 
 			FROM
 				cygx_activity_signup_break AS s
-				INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id 
-			WHERE
-				1 = 1
-				AND s.user_id = u.user_id 
+				INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
+				WHERE
+				s.user_id = cs.user_id 
 			) AS break_appointment_num,
-			u.real_name,
-			u.mobile,
-			u.user_id,
-			u.company_id,
-			c.company_name,
+			s.real_name,
+			s.mobile,
+			s.user_id,
+			s.company_id,
+			s.company_name,
 			s.activity_id
 		FROM
 			cygx_activity_signup_break AS s
-			INNER JOIN wx_user AS u ON u.user_id = s.user_id
 			INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-			INNER JOIN company_product AS p ON p.company_id = u.company_id 
-			INNER JOIN company AS c ON c.company_id = u.company_id 
+			INNER JOIN cygx_activity_signup AS cs ON cs.activity_id = s.activity_id 
 		WHERE
 			1 = 1 `
 	if condition != "" {
 		sql += condition
 	}
-	sql += ` GROUP BY u.user_id ORDER BY break_appointment_num DESC,a.activity_time DESC LIMIT ?,?`
+	sql += ` GROUP BY s.user_id ORDER BY break_appointment_num DESC,a.activity_time DESC LIMIT ?,?`
 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
 	return
 }
@@ -246,15 +231,14 @@ func GetCygxBreakAppointmentList(condition string, pars []interface{}, startSize
 func GetCygxBreakAppointmentUserCount(uid int) (count int, err error) {
 	sqlCount := ` SELECT  COUNT(1) count
 				FROM
-				cygx_activity_signup AS s 
-                LEFT JOIN wx_user AS u ON u.user_id = s.user_id
+				cygx_activity_signup AS s
 				LEFT JOIN cygx_activity AS a ON a.activity_id = s.activity_id
 				WHERE
 				s.activity_id = a.activity_id 
 				AND s.is_meeting = 0 
 				AND a.is_submit_meeting = 1 
 				AND s.user_id = ? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, uid).QueryRow(&count)
 	return
 }
@@ -302,7 +286,7 @@ type GetCygxActivityBreakAppointmentRep struct {
 }
 
 func GetCygxActivityBreakAppointmentList(mobile string) (items []*CygxActivityBreakAppointment, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT a.activity_name,a.activity_type_name,a.chart_permission_name,a.activity_time_text
    			FROM cygx_activity AS a
 			INNER JOIN cygx_activity_signup_break AS s ON s.activity_id = a.activity_id 
@@ -314,7 +298,7 @@ func GetCygxActivityBreakAppointmentList(mobile string) (items []*CygxActivityBr
 
 // 报名限制
 func AddSignUpRestrict(uid int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -333,24 +317,6 @@ func AddSignUpRestrict(uid int) (err error) {
 	if err != nil {
 		return
 	}
-	//if count == 0 {
-	//	sql = `DELETE  FROM cygx_my_schedule   WHERE user_id=?  AND activity_id=? `
-	//	_, err = to.Raw(sql, item.UserId, item.ActivityId).Exec()
-	//	if err != nil {
-	//		return
-	//	}
-	//}
-	//
-	//sql := `UPDATE cygx_activity_signup SET is_meeting = 0  WHERE activity_id =? `
-	//_, err = to.Raw(sql, uid).Exec()
-	//if err != nil {
-	//	return
-	//}
-	//sql = `UPDATE cygx_activity_signup SET is_meeting = 1  WHERE activity_id =? AND id IN `
-	//_, err = to.Raw(sql, uid).Exec()
-	//if err != nil {
-	//	return
-	//}
 	sql = `UPDATE cygx_activity SET is_submit_meeting = 1  WHERE activity_id = ? `
 	_, err = to.Raw(sql, uid).Exec()
 	return
@@ -371,13 +337,13 @@ func GetUserBreakAppointmentCount(uid int) (count int, err error) {
 				AND s.user_id = ? 
 				GROUP BY
 				s.user_id ) as cn `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, uid).QueryRow(&count)
 	return
 }
 
 func GetCygxActivityRestrictSignupCount(uid int) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT COUNT(1) AS count FROM cygx_activity_restrict_signup WHERE user_id=? `
 	err = o.Raw(sql, uid).QueryRow(&count)
 	return
@@ -385,7 +351,7 @@ func GetCygxActivityRestrictSignupCount(uid int) (count int, err error) {
 
 // 获取限制报名详情
 func GetCygxActivityRestrictSignupInfo(uid int) (item *CygxActivityRestrictSignup, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_restrict_signup  WHERE user_id=?`
 	err = o.Raw(sql, uid).QueryRow(&item)
 	return
@@ -394,7 +360,7 @@ func GetCygxActivityRestrictSignupInfo(uid int) (item *CygxActivityRestrictSignu
 // 修改报名限制状态
 func UpdateCygxActivityRestrictSignup(newIsRestrict, uid int) (err error) {
 	sql := `UPDATE cygx_activity_restrict_signup SET  is_restrict=?  WHERE user_id=? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Raw(sql, newIsRestrict, uid).Exec()
 	return
 }
@@ -413,173 +379,48 @@ type MeetingExportRep struct {
 	Permission          string `description:"开通权限"`
 }
 
-func GetMeetingExport(sqlStr string) (item []*MeetingExportRep, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT s.id, s.company_name,s.mobile,u.real_name,a.activity_name,a.chart_permission_name,a.activity_type_name,a.activity_time_text,p.status,p.seller_name,
-			GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS pseller_name,
-			GROUP_CONCAT( DISTINCT c.chart_permission_name SEPARATOR '/' ) AS permission,
-			( SELECT COUNT( 1 ) FROM cygx_activity_signup AS s WHERE s.company_id = u.company_id AND s.is_cancel = 0 AND s.fail_type = 0 ) AS company_num,
-			( SELECT COUNT( 1 ) FROM cygx_activity_signup AS s WHERE s.user_id = u.user_id AND s.is_cancel = 0 AND s.fail_type = 0 ) AS user_num 
-			FROM
-			cygx_activity_signup AS s
-			INNER JOIN wx_user AS u ON u.user_id = s.user_id
-			INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-			LEFT JOIN company_product AS p ON p.company_id = s.company_id
-			LEFT JOIN company_report_permission AS re ON re.company_id = s.company_id
-			LEFT JOIN chart_permission AS c ON c.chart_permission_id = re.chart_permission_id 
-			WHERE 1 = 1 
-			AND s.fail_type = 0 
-			AND s.is_cancel = 0 
-			AND p.status IN ( '正式', '试用' ) 
-			AND p.is_suspend = 0 
-			AND c.is_report = 1 ` + sqlStr + ` GROUP BY s.id ORDER BY company_num DESC,user_num DESC,a.activity_time DESC `
-	_, err = o.Raw(sql).QueryRows(&item)
-	return
-}
-
 // 获取报名了的用户IDs
 func GetSignupUserIds(activityId int, uIds string) (signupUids string, err error) {
 	sql := ` SELECT
 			GROUP_CONCAT( DISTINCT s.user_id SEPARATOR ',' ) AS signupUids 
 			FROM cygx_activity_signup AS s
             WHERE s.activity_id = ? AND s.do_fail_type = 0 AND s.user_id not IN (` + uIds + `)`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sql, activityId).QueryRow(&signupUids)
 	return
 }
 
-// 获取报名了的用户IDs
-func GetSignupUserIdsFromOfflineMeeting(Ids string) (signupUids string, err error) {
-	sql := ` SELECT
-			GROUP_CONCAT( DISTINCT s.user_id SEPARATOR ',' ) AS signupUids 
-			FROM cygx_activity_offline_meeting_detail AS s WHERE s.id  IN (` + Ids + `)`
-	o := orm.NewOrm()
-	err = o.Raw(sql).QueryRow(&signupUids)
-	return
-}
-
-// 线下到会数据
-func GetMeetingExportOffline(condition string) (items []*MeetingExportRep, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT
-			s.id,
-			s.company_name,
-			s.company_id,
-			s.mobile,
-			u.real_name,
-			a.activity_name,
-			a.chart_permission_name,
-			a.activity_type_name,
-			a.activity_time_text,
-			p.status,
-			p.seller_name,
-			GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS pseller_name,
-			GROUP_CONCAT( DISTINCT c.chart_permission_name SEPARATOR '/' ) AS permission,
-			( SELECT COUNT( 1 ) FROM cygx_activity_offline_meeting_detail AS s WHERE s.company_id = u.company_id  AND s.is_meeting = 1 ) AS company_num,
-			( SELECT COUNT( 1 ) FROM cygx_activity_offline_meeting_detail AS s WHERE s.user_id = u.user_id    AND s.is_meeting = 1 ) AS user_num 
-		FROM
-			cygx_activity_offline_meeting_detail AS s
-			INNER JOIN wx_user AS u ON u.user_id = s.user_id
-			INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-			LEFT JOIN company_product AS p ON p.company_id = s.company_id
-			LEFT JOIN company_report_permission AS re ON re.company_id = s.company_id
-			LEFT JOIN chart_permission AS c ON c.chart_permission_id = re.chart_permission_id 
-		WHERE
-			1 = 1 
-			AND p.status IN ( '正式', '试用' ) 
-			AND p.is_suspend = 0 
-			AND c.is_report = 1 
-			AND a.active_state = 3
-			AND s.is_meeting = 1 `
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` GROUP BY s.id ORDER BY company_num DESC, user_num DESC, a.activity_time DESC, p.company_id DESC `
-	_, err = o.Raw(sql).QueryRows(&items)
-	return
-}
-
-// 线上到会数据
-func GetMeetingExportOnline(condition string) (items []*MeetingExportRep, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT
-			s.attendance_id,
-			s.company_name,
-			s.company_id,
-			s.mobile,
-			u.real_name,
-			a.activity_name,
-			a.chart_permission_name,
-			a.activity_type_name,
-			a.activity_time_text,
-			p.status,
-			p.seller_name,
-			GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS pseller_name,
-			GROUP_CONCAT( DISTINCT c.chart_permission_name SEPARATOR '/' ) AS permission,
-			( SELECT COUNT( 1 ) FROM cygx_activity_attendance_detail AS s WHERE s.company_id = p.company_id ) AS company_num,
-			( SELECT COUNT( 1 ) FROM cygx_activity_attendance_detail AS s WHERE s.mobile = u.outbound_mobile ) AS user_num 
-		FROM
-			cygx_activity_attendance_detail AS s
-			INNER JOIN wx_user AS u ON u.outbound_mobile = s.mobile
-			INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-			LEFT JOIN company_product AS p ON p.company_id = u.company_id
-			LEFT JOIN company_report_permission AS re ON re.company_id = u.company_id
-			LEFT JOIN chart_permission AS c ON c.chart_permission_id = re.chart_permission_id 
-		WHERE
-			1 = 1 
-			AND p.status IN ( '正式', '试用' ) 
-			AND p.is_suspend = 0 
-			AND c.is_report = 1 
-			AND a.active_state = 3  `
-	if condition != "" {
-		sql += condition
-	}
-	sql += `GROUP BY s.attendance_id ORDER BY company_num DESC, user_num DESC, a.activity_time DESC,p.company_id DESC  `
-	_, err = o.Raw(sql).QueryRows(&items)
-	return
-}
-
 // 到会数据
 func GetMeetingExportAll(condition string) (items []*MeetingExportRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			s.attendance_id,
 			s.company_name,
 			s.company_id,
 			s.mobile,
-			u.real_name,
+			s.real_name,
 			a.activity_name,
 			a.chart_permission_name,
 			a.activity_type_name,
 			a.activity_time_text,
-			p.status,
-			p.seller_name,
-			GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS pseller_name,
-			GROUP_CONCAT( DISTINCT c.chart_permission_name SEPARATOR '/' ) AS permission
+			s.seller_name
 		FROM
 			cygx_activity_meet_detail_log AS s
-			INNER JOIN wx_user AS u ON u.outbound_mobile = s.mobile
 			INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-			INNER JOIN company_product AS p ON p.company_id = u.company_id
-			INNER JOIN company_report_permission AS re ON re.company_id = u.company_id
-			INNER JOIN chart_permission AS c ON c.chart_permission_id = re.chart_permission_id 
 		WHERE
-			1 = 1 
-			AND p.status IN ( '正式', '试用' ) 
-			AND p.is_suspend = 0 
-			AND c.is_report = 1 
+			1 = 1
 			AND s.company_name != ''
 			AND a.active_state = 3   `
 	if condition != "" {
 		sql += condition
 	}
-	sql += ` GROUP BY s.attendance_id ORDER BY s.company_meet_num DESC, s.user_meet_num DESC, a.activity_time DESC,p.company_id DESC   `
+	sql += ` GROUP BY s.attendance_id ORDER BY s.company_meet_num DESC, s.user_meet_num DESC, a.activity_time DESC   `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
 
 func GetCompanyAciviytyGroupDate() (item []*CreateTimesResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT date_format(activity_time,'%Y-%m') as create_times FROM cygx_activity WHERE 1=1  AND  activity_time <= NOW()  GROUP BY create_times ORDER BY create_times DESC `
 	_, err = o.Raw(sql).QueryRows(&item)
 	return
@@ -594,7 +435,7 @@ type CygxYidongActivityMeetingApiLog struct {
 
 // 获取限制报名详情
 func GetCygxActivityYiDongUpdateTime(yidongActivityId string) (item *CygxYidongActivityMeetingApiLog, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_yidong_activity_meeting_api_log  WHERE yidong_activity_id = ? ORDER BY id DESC  LIMIT 1`
 	err = o.Raw(sql, yidongActivityId).QueryRow(&item)
 	return
@@ -618,7 +459,7 @@ func GetCygxActivityYiDongMeetNum(activityId []int) (items []*CygxAtivityIdMeetN
 			cygx_activity AS a 
 		WHERE
 			a.activity_id IN  (` + utils.GetOrmInReplace(lenactivityId) + `) `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Raw(sql, activityId).QueryRows(&items)
 	return
 }

+ 10 - 149
models/cygx/activity_meet_detail_log.go

@@ -3,7 +3,6 @@ package cygx
 import (
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
-	"strconv"
 	"strings"
 	"time"
 )
@@ -20,7 +19,7 @@ type CygxActivityMeetDetailLog struct {
 }
 
 func GetOfflineMeetingDetailListCompanyName(companyName string) (item []*CygxActivityMeetDetailLog, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_meet_detail_log WHERE company_name IN (` + companyName + `)`
 	_, err = o.Raw(sql).QueryRows(&item)
 	return
@@ -28,20 +27,20 @@ func GetOfflineMeetingDetailListCompanyName(companyName string) (item []*CygxAct
 
 // 添加
 func AddCygxActivityMeetDetailLog(item *CygxActivityMeetDetailLog) (lastId int64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	lastId, err = o.Insert(item)
 	return
 }
 
 func GetActivityMeetDetailLog(mobileStr string) (item []*CygxActivityMeetDetailLog, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM  cygx_activity_meet_detail_log WHERE mobile IN (` + mobileStr + `)`
 	_, err = o.Raw(sql).QueryRows(&item)
 	return
 }
 
 func GetActivityMeetDetailLogByMobile() (item []*CygxActivityMeetDetailLog, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM  cygx_activity_meet_detail_log WHERE mobile !='' GROUP BY mobile `
 	_, err = o.Raw(sql).QueryRows(&item)
 	return
@@ -49,7 +48,7 @@ func GetActivityMeetDetailLogByMobile() (item []*CygxActivityMeetDetailLog, err
 
 // 获取数量
 func GetActivityMeetDetailLogCount(condition string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_activity_meet_detail_log WHERE 1=1 `
 	if condition != "" {
 		sqlCount += condition
@@ -61,7 +60,7 @@ func GetActivityMeetDetailLogCount(condition string) (count int, err error) {
 // 修改公司参会数量
 func UpdateActivityMeetDetailLog(companyName string, num int) (err error) {
 	sql := ` UPDATE cygx_activity_meet_detail_log SET  company_meet_num= ?  WHERE company_name = ?`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Raw(sql, num, companyName).Exec()
 	return
 }
@@ -69,7 +68,7 @@ func UpdateActivityMeetDetailLog(companyName string, num int) (err error) {
 // 修改个人参会数量
 func UpdateActivityMeetDetailLogByUser(mobile string, num int) (err error) {
 	sql := ` UPDATE cygx_activity_meet_detail_log SET  user_meet_num= ?  WHERE mobile = ?`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Raw(sql, num, mobile).Exec()
 	return
 }
@@ -85,7 +84,7 @@ func GetMeetDetailLogGroupCount(condition string, pars []interface{}) (items []*
 	if condition == "" {
 		return
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT COUNT(1) AS count,company_id,mobile FROM cygx_activity_meet_detail_log WHERE 1=1 `
 	if condition != "" {
 		sql += condition
@@ -94,109 +93,9 @@ func GetMeetDetailLogGroupCount(condition string, pars []interface{}) (items []*
 	return
 }
 
-// 添加线下到会记录
-func AddCygxActivityMeetDetailLogOffline(meetingUids string, activityId int) (err error) {
-
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
-	defer func() {
-		if err != nil {
-			fmt.Println(err)
-			_ = to.Rollback()
-		} else {
-			_ = to.Commit()
-		}
-	}()
-	var CompanyIdStr string
-	var companyIdArr []int
-	var MobileStr string
-	var mobileArr []string
-	var items []*CygxActivityMeetDetailLog
-	list, err := GetOfflineMeetingListByUser(meetingUids, activityId)
-	if err != nil {
-		return
-	}
-	//删除原有数据
-	sql := ` DELETE FROM cygx_activity_meet_detail_log WHERE activity_id = ?`
-	_, err = to.Raw(sql, activityId).Exec()
-	if err != nil {
-		return
-	}
-	//插入新的数据
-	for _, v := range list {
-		item := new(CygxActivityMeetDetailLog)
-		item.ActivityId = v.ActivityId
-		item.Mobile = v.Mobile
-		item.CompanyName = v.CompanyName
-		item.CompanyId = v.CompanyId
-		item.CreateTime = v.CreateTime
-		CompanyIdStr += strconv.Itoa(v.CompanyId) + ","
-		if v.Mobile != "" {
-			MobileStr += v.Mobile + ","
-			mobileArr = append(mobileArr, v.Mobile)
-		}
-		companyIdArr = append(companyIdArr, v.CompanyId)
-		items = append(items, item)
-	}
-	CompanyIdStr = strings.TrimRight(CompanyIdStr, ",")
-	MobileStr = strings.TrimRight(MobileStr, ",")
-	if len(items) > 0 {
-		//批量添加记录
-		_, err = to.InsertMulti(len(items), items)
-		if err != nil {
-			return
-		}
-	}
-	listCompanyId, err := GetOfflineMeetingDetailListCompanyIdStr(CompanyIdStr)
-	if err != nil {
-		return
-	}
-	//修改公司对应的数量
-	var condition string
-	var companyNameArr []string
-	for _, v := range listCompanyId {
-		var total int
-		companyNameArr = append(companyNameArr, v.CompanyName)
-		condition = ` AND company_name = '` + v.CompanyName + `' `
-		total, err = GetActivityMeetDetailLogCount(condition)
-		if err != nil {
-			return
-		}
-		sql := ` UPDATE cygx_activity_meet_detail_log SET  company_meet_num= ?  WHERE company_name = ?`
-		_, err = to.Raw(sql, total, v.CompanyName).Exec()
-		if err != nil {
-			return
-		}
-	}
-
-	listMobile, err := GetActivityMeetDetailLog(MobileStr)
-	if err != nil {
-		return
-	}
-	//修改个人对应的数量
-	for _, v := range listMobile {
-		var total int
-		condition = ` AND mobile = '` + v.Mobile + `' `
-		total, err = GetActivityMeetDetailLogCount(condition)
-		if err != nil {
-			return
-		}
-		sql := ` UPDATE cygx_activity_meet_detail_log SET  user_meet_num= ?  WHERE mobile = ?`
-		_, err = to.Raw(sql, total, v.Mobile).Exec()
-		if err != nil {
-			return
-		}
-	}
-	return
-}
-
 // 添加线下到会记录
 func UpdatecygxActivityMeetDetailLogOffline(items []*CygxActivityMeetDetailLog, itemsUpdateCompany []*MeetDetailLoggGroupCount, itemsUpdateMobile []*MeetDetailLoggGroupCount, activityId int) (err error) {
-
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -224,50 +123,12 @@ func UpdatecygxActivityMeetDetailLogOffline(items []*CygxActivityMeetDetailLog,
 			return
 		}
 	}
-
-	//修改公司对应的数量
-	//if len(itemsUpdateCompany) > 0 {
-	//	p, err := to.Raw(` UPDATE cygx_activity_meet_detail_log SET company_meet_num = ? WHERE company_id = ? `).Prepare()
-	//	if err != nil {
-	//		return
-	//	}
-	//	defer func() {
-	//		_ = p.Close() // 别忘记关闭 statement
-	//	}()
-	//	for _, v := range itemsUpdateCompany {
-	//		_, err = p.Exec(
-	//			v.Count,
-	//			v.CompanyId)
-	//		if err != nil {
-	//			return
-	//		}
-	//	}
-	//}
-	//
-	////修改用户对应的数量
-	//if len(itemsUpdateMobile) > 0 {
-	//	p, err := to.Raw(` UPDATE cygx_activity_meet_detail_log SET user_meet_num= ?  WHERE mobile = ? `).Prepare()
-	//	if err != nil {
-	//		return
-	//	}
-	//	defer func() {
-	//		_ = p.Close() // 别忘记关闭 statement
-	//	}()
-	//	for _, v := range itemsUpdateCompany {
-	//		_, err = p.Exec(
-	//			v.Count,
-	//			v.Mobile)
-	//		if err != nil {
-	//			return
-	//		}
-	//	}
-	//}
 	return
 }
 
 // 添加线上到会记录
 func AddCygxActivityMeetDetailLogOnline(list []*CygxActivityAttendanceDetail, activityId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return

+ 8 - 8
models/cygx/activity_meeting_history.go

@@ -33,32 +33,32 @@ type CygxActivityMeetingHistoryListResp struct {
 	List []*CygxActivityMeetingHistoryResp
 }
 
-//新增
+// 新增
 func AddCygxActivityMeetingHistory(item *CygxActivityMeetingHistory) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Insert(item)
 	return
 }
 
-//获取列表
+// 获取列表
 func GetCygxActivityMeetingHistoryLlist(activityId int) (items []*CygxActivityMeetingHistoryResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT * FROM cygx_activity_meeting_history WHERE  activity_id=  ? AND  role_type_code IN ('rai_seller','rai_group')   ORDER BY id DESC   `
 	_, err = o.Raw(sql, activityId).QueryRows(&items)
 	return
 }
 
-//获取最新详情
+// 获取最新详情
 func GetCygxActivityMeetingHistoryNew(activityId, adminId int) (item *CygxActivityMeetingHistory, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_meeting_history  WHERE activity_id=? AND admin_id = ? ORDER BY id DESC LIMIT 1 `
 	err = o.Raw(sql, activityId, adminId).QueryRow(&item)
 	return
 }
 
-//更新阅读时间
+// 更新阅读时间
 func UpdateActivityMeetingHistoryTime(stipTime, id int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` UPDATE cygx_activity_meeting_history SET  stop_time=?   WHERE id=?`
 	_, err = o.Raw(sql, stipTime, id).Exec()
 	return

+ 6 - 21
models/cygx/activity_meeting_reminder.go

@@ -42,17 +42,9 @@ type AddUserList struct {
 	SignupType    int `description:"报名方式,1预约外呼,2自主拨入,3我要报名"`
 }
 
-// 获取用户报名数量
-func GetActivityMeetingReminderCount(uid, activityId int) (count int, err error) {
-	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_meeting_reminder WHERE is_cancel=0 AND user_id=? AND activity_id=? `
-	o := orm.NewOrm()
-	err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
-	return
-}
-
 // 取消会议提醒
 func CancelActivityMeetingReminder(item *CygxActivityMeetingReminder) (lastId int64, err error) {
-	o, err := orm.NewOrm().Begin()
+	o, err := orm.NewOrmUsingDB("hz_cygx").Begin()
 	if err != nil {
 		return
 	}
@@ -90,16 +82,11 @@ func CancelActivityMeetingReminder(item *CygxActivityMeetingReminder) (lastId in
 
 // 会议提醒的人数列表
 func GetCygxActivityMeetingReminderList(activityId int, sqlStr string) (item []*CygxAppointmentList, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT s.id,s.activity_id,s.user_id,s.create_time,s.mobile,s.company_id ,u.real_name,c.company_name,a.activity_time,
-			(SELECT p.seller_name from company_product as p WHERE p.company_id = u.company_id  AND  p.product_id = 2 )  AS seller_name,
-			GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS pseller_name
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT s.*,a.activity_time
 			FROM
 			cygx_activity_meeting_reminder AS s
-			INNER JOIN wx_user AS u ON  u.user_id = s.user_id
 			LEFT JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-			LEFT JOIN company_product AS p ON p.company_id = u.company_id 
-			LEFT JOIN company AS c ON c.company_id = u.company_id 
 			WHERE a.activity_id = ?  ` + sqlStr + `  GROUP BY s.user_id   ORDER BY s.create_time DESC `
 	_, err = o.Raw(sql, activityId).QueryRows(&item)
 	return
@@ -107,12 +94,10 @@ func GetCygxActivityMeetingReminderList(activityId int, sqlStr string) (item []*
 
 // 会议提醒的人数数量
 func GetCygxActivityMeetingReminderCount(activityId int, sqlStr string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT COUNT(*) FROM
 			cygx_activity_meeting_reminder AS s
-			INNER  JOIN wx_user AS u ON  u.user_id = s.user_id
 			LEFT JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-			LEFT JOIN company_product AS p ON p.company_id = u.company_id 
 			WHERE
 			s.activity_id = ? ` + sqlStr + `
             GROUP BY s.user_id)`
@@ -123,7 +108,7 @@ func GetCygxActivityMeetingReminderCount(activityId int, sqlStr string) (count i
 
 // 通过ID获取会议提醒详情
 func GetCygxActivityMeetingReminderInfoById(id int) (item *CygxActivityMeetingReminder, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_meeting_reminder  WHERE id=?`
 	err = o.Raw(sql, id).QueryRow(&item)
 	return
@@ -131,7 +116,7 @@ func GetCygxActivityMeetingReminderInfoById(id int) (item *CygxActivityMeetingRe
 
 // 添加会议提醒
 func AddActivityMeetingReminderUser(items []*CygxActivityAppointment, itemsReminder []*CygxActivityMeetingReminder) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return

+ 6 - 6
models/cygx/activity_offline_meeting_detail.go

@@ -22,18 +22,18 @@ type CygxActivityOfflineMeetingDetail struct {
 
 // 预约外呼列表
 func GetOfflineMeetingList(condition string) (items []*CygxActivitySignupList, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT s.* , u.real_name,
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT s.* ,
 			( SELECT COUNT( 1 ) FROM cygx_activity_signup AS a WHERE a.activity_id = s.activity_id AND a.user_id = s.user_id AND a.do_fail_type = 0 ) AS channel
 			FROM cygx_activity_offline_meeting_detail  as s 
-			INNER JOIN wx_user as u ON u.user_id = s.user_id  WHERE 1 =1 ` + condition
+			 WHERE 1 =1 ` + condition
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
 
 // 预约外呼列表
 func GetOfflineMeetingListByUser(meetingUids string, activityId int) (items []*CygxActivityOfflineMeetingDetail, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT s.* FROM cygx_activity_offline_meeting_detail  as s  WHERE activity_id = ? AND user_id IN  (` + meetingUids + `)`
 	_, err = o.Raw(sql, activityId).QueryRows(&items)
 	return
@@ -41,14 +41,14 @@ func GetOfflineMeetingListByUser(meetingUids string, activityId int) (items []*C
 
 // 预约外呼列表
 func GetOfflineMeetingListByYidong(condition string) (items []*CygxActivitySignupList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT * FROM cygx_activity_signup as s  WHERE  1= 1 AND s.yidong_examine_status != 2 ` + condition
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
 
 func GetOfflineMeetingDetailListCompanyIdStr(companyIdStr string) (item []*CygxActivityMeetDetailLog, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_offline_meeting_detail WHERE company_id IN (` + companyIdStr + `)`
 	_, err = o.Raw(sql).QueryRows(&item)
 	return

+ 5 - 5
models/cygx/activity_points_bill.go

@@ -44,7 +44,7 @@ type CygxActivityPointsBillResp struct {
 
 // CygxActivityPointsBillByCompanyId 根据公司名称获取机构流水表
 func CygxActivityPointsBillByCompanyId(companyId int) (items []*CygxActivityPointsBillResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT  * FROM cygx_activity_points_bill WHERE company_id =?  ORDER BY id DESC  `
 	_, err = o.Raw(sql, companyId).QueryRows(&items)
 	return
@@ -55,7 +55,7 @@ func GetCygxActivityPointsBillDetailByCondition(condition string, pars []interfa
 	if condition == "" {
 		return
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_points_bill  WHERE 1 = 1  ` + condition
 	err = o.Raw(sql, pars).QueryRow(&item)
 	return
@@ -63,7 +63,7 @@ func GetCygxActivityPointsBillDetailByCondition(condition string, pars []interfa
 
 // AddCygxActivityPointsBillMulti 批量添加
 func AddCygxActivityPointsBillMulti(items []*CygxActivityPointsBill, itemsUpdate []*CygxActivityPointsCompany) (err error) {
-	o, err := orm.NewOrm().Begin()
+	o, err := orm.NewOrmUsingDB("hz_cygx").Begin()
 	if err != nil {
 		return
 	}
@@ -97,7 +97,7 @@ func AddCygxActivityPointsBillMulti(items []*CygxActivityPointsBill, itemsUpdate
 
 // AddCygxActivityPointsBillAndCompanyMulti 批量添加
 func AddCygxActivityPointsBillAndCompanyMulti(items []*CygxActivityPointsBill, itemsCompany []*CygxActivityPointsCompany) (err error) {
-	o, err := orm.NewOrm().Begin()
+	o, err := orm.NewOrmUsingDB("hz_cygx").Begin()
 	if err != nil {
 		return
 	}
@@ -121,7 +121,7 @@ func AddCygxActivityPointsBillAndCompanyMulti(items []*CygxActivityPointsBill, i
 
 // UpdateCygxActivityPointsBillMulti 批量修改
 func UpdateCygxActivityPointsBillMulti(items []*CygxActivityPointsBill, itemsUpdate []*CygxActivityPointsCompany) (err error) {
-	o, err := orm.NewOrm().Begin()
+	o, err := orm.NewOrmUsingDB("hz_cygx").Begin()
 	if err != nil {
 		return
 	}

+ 2 - 2
models/cygx/activity_points_company.go

@@ -16,7 +16,7 @@ type CygxActivityPointsCompany struct {
 
 // 通过公司ID获取详情
 func GetCygxActivityPointsCompanyByCompanyId(companyId int) (item *CygxActivityPointsCompany, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_points_company  WHERE company_id=? `
 	err = o.Raw(sql, companyId).QueryRow(&item)
 	return
@@ -24,7 +24,7 @@ func GetCygxActivityPointsCompanyByCompanyId(companyId int) (item *CygxActivityP
 
 // 获取公司剩余点数
 func GetCompanyPoints(companyId int) (comapnyPointsNum float64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT points FROM cygx_activity_points_company  WHERE company_id=? `
 	err = o.Raw(sql, companyId).QueryRow(&comapnyPointsNum)
 	return

+ 3 - 3
models/cygx/activity_points_set.go

@@ -52,7 +52,7 @@ type CygxActivityPointsSetConfigResp struct {
 
 // 通过活动ID获取详情
 func GetCygxActivityPointsSetDetail(activityId int) (item *CygxActivityPointsSetRsq, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_points_set  WHERE activity_id=? `
 	err = o.Raw(sql, activityId).QueryRow(&item)
 	return
@@ -60,7 +60,7 @@ func GetCygxActivityPointsSetDetail(activityId int) (item *CygxActivityPointsSet
 
 // 通过活动ID获取详情
 func GetCygxActivityPointsSetUserNum(activityId int) (userPointsNum float64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT user_points_num FROM cygx_activity_points_set  WHERE activity_id=? `
 	err = o.Raw(sql, activityId).QueryRow(&userPointsNum)
 	return
@@ -69,7 +69,7 @@ func GetCygxActivityPointsSetUserNum(activityId int) (userPointsNum float64, err
 // 通过互动ID获取数量
 func GetCygxActivityPointsSetCountByActivityId(ActivityId int) (count int, err error) {
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_activity_points_set  WHERE activity_id=?   `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, ActivityId).QueryRow(&count)
 	return
 }

+ 1 - 1
models/cygx/activity_poster.go

@@ -16,7 +16,7 @@ type CygxActivityPoster struct {
 
 // 添加
 func AddCygxActivityPoster(item *CygxActivityPoster) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Insert(item)
 	return
 }

+ 7 - 7
models/cygx/activity_restrict_signup.go

@@ -19,7 +19,7 @@ type CygxActivityRestrictSignup struct {
 
 // 添加
 func AddCygxActivityRestrictSignup(item *CygxActivityRestrictSignup) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Insert(item)
 	return
 }
@@ -30,14 +30,14 @@ func AddCygxActivityRestrictSignupList(items []*CygxActivityRestrictSignup) (las
 	if lenitems == 0 {
 		return
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.InsertMulti(1, items)
 	return
 }
 
 // 删除
 func DeleteCygxActivityRestrictSignup(uid int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` DELETE FROM cygx_activity_restrict_signup  WHERE user_id=?`
 	_, err = o.Raw(sql, uid).Exec()
 	return
@@ -48,7 +48,7 @@ func DeleteCygxActivityRestrictSignupByUserIds(userIdDelArr []int) (err error) {
 	if len(userIdDelArr) == 0 {
 		return
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` DELETE FROM cygx_activity_restrict_signup  WHERE  1= 1  AND user_id IN (` + utils.GetOrmInReplace(len(userIdDelArr)) + `)`
 	_, err = o.Raw(sql, userIdDelArr).Exec()
 	return
@@ -57,7 +57,7 @@ func DeleteCygxActivityRestrictSignupByUserIds(userIdDelArr []int) (err error) {
 // 获取某一用户是否被限制报名
 func GetUserRestrictCount(mobile string) (count int, err error) {
 	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_restrict_signup WHERE is_restrict=1  AND mobile=? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, mobile).QueryRow(&count)
 	return
 }
@@ -65,14 +65,14 @@ func GetUserRestrictCount(mobile string) (count int, err error) {
 // 获取用户是否被限制报名
 func GetRestrictSignupCountByUid(uid int) (count int, err error) {
 	sqlCount := `SELECT COUNT( 1 ) count FROM cygx_activity_restrict_signup  WHERE user_id = ?`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, uid).QueryRow(&count)
 	return
 }
 
 // 列表
 func GetCygxActivityRestrictSignupList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxActivityRestrictSignup, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_restrict_signup as art WHERE 1= 1 `
 	if condition != "" {
 		sql += condition

+ 2 - 2
models/cygx/activity_signin.go

@@ -41,14 +41,14 @@ func GetCygxActivitySigninCount(condition string, pars []interface{}) (count int
 	if condition != "" {
 		sqlCount += condition
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
 
 // 列表
 func GetCygxActivitySigninList(condition string, pars []interface{}) (items []*CygxActivitySignin, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT * FROM cygx_activity_signin as s  WHERE  1= 1  ` + condition
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return

+ 41 - 113
models/cygx/activity_signup.go

@@ -52,20 +52,20 @@ func GetCygxSignupCount(condition string, pars []interface{}) (count int, err er
 	if condition != "" {
 		sqlCount += condition
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
 
 // 列表
 func GetCygxSignupListAll(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxSignupList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT 
-		( SELECT COUNT( 1 ) FROM cygx_activity_signup AS s INNER JOIN wx_user as u ON u.user_id = s.user_id WHERE s.activity_id = art.activity_id  AND s.is_cancel = 0 AND  s.do_fail_type = 0 AND  s.company_id != 16 ) AS signup_people_num,
-		( SELECT COUNT( 1 ) FROM cygx_activity_signup AS s INNER JOIN wx_user as u ON u.user_id = s.user_id WHERE s.activity_id = art.activity_id  AND s.is_cancel = 0 AND  s.fail_type >= 1) AS signup_fail_people_num, 
-		( SELECT COUNT( 1 ) FROM cygx_activity_help_ask AS k INNER JOIN wx_user as u ON u.user_id = k.user_id WHERE k.activity_id = art.activity_id ) AS ask_num, 
-		( SELECT COUNT( 1 ) FROM cygx_activity_appointment AS ap INNER JOIN wx_user as u ON u.user_id = ap.user_id WHERE ap.activity_id = art.activity_id ) AS appointment_people_num,
-		( SELECT COUNT( 1 ) FROM cygx_activity_meeting_reminder AS ap   INNER JOIN wx_user as u ON u.user_id = ap.user_id WHERE ap.activity_id = art.activity_id ) AS reminder_people_num,
+		( SELECT COUNT( 1 ) FROM cygx_activity_signup AS s WHERE s.activity_id = art.activity_id  AND s.is_cancel = 0 AND  s.do_fail_type = 0 AND  s.company_id != 16 ) AS signup_people_num,
+		( SELECT COUNT( 1 ) FROM cygx_activity_signup AS s  WHERE s.activity_id = art.activity_id  AND s.is_cancel = 0 AND  s.fail_type >= 1) AS signup_fail_people_num, 
+		( SELECT COUNT( 1 ) FROM cygx_activity_help_ask AS k  WHERE k.activity_id = art.activity_id ) AS ask_num, 
+		( SELECT COUNT( 1 ) FROM cygx_activity_appointment AS ap  WHERE ap.activity_id = art.activity_id ) AS appointment_people_num,
+		( SELECT COUNT( 1 ) FROM cygx_activity_meeting_reminder AS ap    WHERE ap.activity_id = art.activity_id ) AS reminder_people_num,
 		art.* FROM cygx_activity as art
 		WHERE 1= 1 `
 	if condition != "" {
@@ -109,23 +109,18 @@ type CygxSignupId struct {
 
 // 预约外呼列表
 func GetCygxAppointmentLisssst(activityId int) (items []*CygxAppointmentList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_signup  WHERE activity_id= ? `
 	_, err = o.Raw(sql, activityId).QueryRows(&items)
 	return
 }
 
 func GetCygxAppointmentList(article_id int, sqlStr string) (item []*CygxAppointmentList, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT s.id,s.activity_id,s.user_id,s.create_time,s.mobile,s.outbound_mobile,s.company_id,s.fail_type ,s.fail_type,s.signup_type,a.is_limit_people,u.real_name,c.company_name,a.activity_time,s.country_code,s.yidong_examine_status,s.email,
-			(SELECT p.seller_name from company_product as p WHERE p.company_id = u.company_id  AND  p.product_id = 2 )  AS seller_name,
-			GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS pseller_name
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT s.*
 			FROM
 			cygx_activity_signup AS s
-			INNER JOIN wx_user AS u ON  u.user_id = s.user_id
 			LEFT JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-			LEFT JOIN company_product AS p ON p.company_id = u.company_id 
-			LEFT JOIN company AS c ON c.company_id = u.company_id 
 			WHERE a.activity_id = ?  AND s.do_fail_type = 0 ` + sqlStr + `  GROUP BY s.user_id   ORDER BY s.create_time DESC `
 	_, err = o.Raw(sql, article_id).QueryRows(&item)
 	return
@@ -145,12 +140,10 @@ type GetAppointmentListRep struct {
 }
 
 func GetCygxAppointmentCount(articleId int, sqlStr string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT COUNT(*) FROM
 			cygx_activity_signup AS s
-			INNER  JOIN wx_user AS u ON  u.user_id = s.user_id
 			LEFT JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-			LEFT JOIN company_product AS p ON p.company_id = u.company_id 
 			WHERE
 			s.activity_id = ? ` + sqlStr + `
             GROUP BY s.user_id)`
@@ -259,7 +252,7 @@ func GetUserAndCompanyNameListByUids(uids string) (items []*UserAndCompanyName,
 
 // 新增预约人数
 func AddCygxActivitySignup(items []*CygxActivitySignup, itemsAppointment []*CygxActivityAppointment, mapYidongActivity map[int]int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -326,58 +319,10 @@ func AddCygxActivitySignup(items []*CygxActivitySignup, itemsAppointment []*Cygx
 	return
 }
 
-func AddCygxActivitySignup2(item *CygxActivitySignup) (err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
-	defer func() {
-		if err != nil {
-			fmt.Println(err)
-			_ = to.Rollback()
-		} else {
-			_ = to.Commit()
-		}
-	}()
-	var count int
-	sql := `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
-	err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
-	if err != nil {
-		return
-	}
-	if count == 0 {
-		itemMy := new(CygxMySchedule)
-		itemMy.UserId = item.UserId
-		itemMy.ActivityId = item.ActivityId
-		itemMy.CreateTime = time.Now()
-		itemMy.Mobile = item.Mobile
-		itemMy.Email = item.Email
-		itemMy.CompanyId = item.CompanyId
-		itemMy.CompanyName = item.CompanyName
-		_, err = to.Insert(itemMy)
-		if err != nil {
-			return
-		}
-	}
-	sql = `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
-	err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
-	if err != nil {
-		return
-	}
-	if count == 0 {
-		_, err = to.Insert(item)
-	} else {
-		sql := `UPDATE cygx_activity_signup SET  is_cancel=0, do_fail_type = 0 ,create_time = NOW() WHERE user_id=? AND activity_id=? `
-		_, err = to.Raw(sql, item.UserId, item.ActivityId).Exec()
-	}
-	return
-}
-
 // 获取用户报名数量
 func GetActivitySignupCount(uid, activityId int) (count int, err error) {
 	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0  AND do_fail_type = 0  AND user_id=? AND activity_id=? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
 	return
 }
@@ -387,19 +332,18 @@ func GetActivitySignupCountByActivityId(activityId int) (count int, err error) {
 					COUNT( 1 ) AS count 
 				FROM
 					cygx_activity_signup AS s
-					INNER JOIN wx_user AS u ON u.user_id = s.user_id 
 				WHERE
 					s.do_fail_type = 0 
 					AND s.company_id != 16 
 					AND s.activity_id = ? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, activityId).QueryRow(&count)
 	return
 }
 
 func GetActivitySignupCountByThisUser(activityId int, uids string) (count int, err error) {
 	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE do_fail_type = 0 AND activity_id=? AND user_id IN (` + uids + `) `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, activityId).QueryRow(&count)
 	return
 }
@@ -440,13 +384,11 @@ type GetFailSignupListRep struct {
 }
 
 func GetFailSignupList(activity_id int, sqlStr string) (item []*FailSignupListRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT s.* ,a.is_limit_people
 			FROM
 			cygx_activity_signup AS s
-			INNER JOIN wx_user AS u ON u.user_id = s.user_id
 			LEFT JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-			LEFT JOIN company_product AS p ON p.company_id = u.company_id 
 			WHERE a.activity_id = ?` + sqlStr + ` GROUP BY s.id  ORDER BY s.create_time DESC `
 	_, err = o.Raw(sql, activity_id).QueryRows(&item)
 	return
@@ -466,19 +408,19 @@ type SignupIdCall struct {
 // 获取失败数量
 func GetCygxSignupCountFile(id int) (count int, err error) {
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_activity_signup  WHERE id= ?`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, id).QueryRow(&count)
 	return
 }
 func GetCygxSignupDetailById(id int) (item *FailSignupListRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_signup  WHERE id=?`
 	err = o.Raw(sql, id).QueryRow(&item)
 	return
 }
 
 func GetCygxSignupDetailByUid(id int) (item *FailSignupListRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_signup  WHERE user_id=? LIMIT 1`
 	err = o.Raw(sql, id).QueryRow(&item)
 	return
@@ -486,7 +428,7 @@ func GetCygxSignupDetailByUid(id int) (item *FailSignupListRep, err error) {
 
 // 加入报名限制报名
 func SalonSignupEdit(newIsAdminAddSignup, doFailType, id int, item *CygxActivitySignup) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -536,7 +478,7 @@ func SalonSignupEdit(newIsAdminAddSignup, doFailType, id int, item *CygxActivity
 }
 
 func CallSignupEditByStatus3(doFailType, id int, item *CygxMySchedule) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -563,7 +505,7 @@ func CallSignupEditByStatus3(doFailType, id int, item *CygxMySchedule) (err erro
 }
 
 func CallSignupEditByStatus1_2(operationStatus, id int, item *CygxMySchedule) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -606,20 +548,6 @@ type SignupExportRep struct {
 	OutboundMobile string `description:"外呼手机号"`
 }
 
-func GetSignupExport(activity_id int, sqlStr string) (item []*SignupExportRep, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT s.*  ,a.is_limit_people,u.real_name,
-			(SELECT p.seller_name from company_product as p WHERE p.company_id = u.company_id  AND  p.product_id = 2 )  AS seller_name
-			FROM
-			cygx_activity_signup AS s
-			INNER JOIN wx_user AS u ON u.user_id = s.user_id
-			INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-			INNER JOIN company_product AS p ON p.company_id = u.company_id 
-			WHERE a.activity_id = ?` + sqlStr
-	_, err = o.Raw(sql, activity_id).QueryRows(&item)
-	return
-}
-
 type CygxActivitySignupList struct {
 	Id          int    `orm:"column(id);pk"`
 	UserId      int    `description:"用户id"`
@@ -645,15 +573,16 @@ type CygxActivitySignupListRep struct {
 
 // 预约外呼列表
 func GetCygxActivitySignup(condition string) (items []*CygxActivitySignupList, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT s.* , u.real_name FROM cygx_activity_signup  as s 
-	INNER JOIN wx_user as u ON u.user_id = s.user_id  WHERE 1 =1 ` + condition
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT s.*  FROM cygx_activity_signup  as s 
+	  WHERE 1 =1 ` + condition
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
 
 // 获取用户报名数量
 func GetActivitySignupNomeetingCount(activityId int) (count int, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := `SELECT
 	COUNT( 1 ) count 
 FROM
@@ -665,14 +594,13 @@ WHERE
 	AND s.is_meeting = 0 
 	AND a.is_submit_meeting = 1
 	AND a.activity_id = ?`
-	o := orm.NewOrm()
 	err = o.Raw(sqlCount, activityId).QueryRow(&count)
 	return
 }
 
 // 获取用户报名列表
 func GetActivitySignupNomeetingCountList(activityId int) (items []*CygxActivitySignupList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 	s.*
 FROM
@@ -689,6 +617,7 @@ WHERE
 
 // 获取用户爽约次数
 func GetActivitySignupNomeetingCountByUid(uid int) (count int, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := `SELECT
 	COUNT( 1 ) count 
 FROM
@@ -701,13 +630,12 @@ WHERE
 	AND a.is_submit_meeting = 1
 	AND s.do_fail_type = 0
 	AND s.user_id = ?`
-	o := orm.NewOrm()
 	err = o.Raw(sqlCount, uid).QueryRow(&count)
 	return
 }
 
 func GetUserMeetingMobile(activityId int) (items []*CygxActivitySignup, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT *
 FROM
 	cygx_activity_signup AS s 
@@ -726,7 +654,7 @@ type OutboundMobileEditResp struct {
 }
 
 func OutboundMobileEdit(id int, outboundMobile, countryCode string) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_activity_signup SET outbound_mobile = ?,country_code=?  WHERE id=? `
 	_, err = o.Raw(sql, outboundMobile, countryCode, id).Exec()
 	return
@@ -735,7 +663,7 @@ func OutboundMobileEdit(id int, outboundMobile, countryCode string) (err error)
 //end
 
 func AddCygxActivitySignupUser(items []*CygxActivitySignup) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -786,7 +714,7 @@ func AddCygxActivitySignupUser(items []*CygxActivitySignup) (err error) {
 
 // 通过ID获取报名详情
 func GetActivitySignupInfoById(id int) (item *CygxActivitySignup, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_signup  WHERE id=?`
 	err = o.Raw(sql, id).QueryRow(&item)
 	return
@@ -804,7 +732,7 @@ type RequestCommonPolicyConfig struct {
 
 // 取消报名
 func CancelActivitySignup(item *CygxActivitySignup) (lastId int64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -1031,12 +959,12 @@ type YidongActivitySignup struct {
 
 // GetCompanyByUserSignUp 获取客户ID列表
 func GetCompanyByUserSignUp(condition string, pars []interface{}) (items []*company.CompanyNameAndId, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 	s.company_id
 FROM
 	cygx_activity_signup AS s
 	INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-	INNER JOIN wx_user AS u ON u.mobile = s.mobile 
 	INNER JOIN cygx_activity_type AS t ON t.activity_type_id = a.activity_type_id 
 WHERE
 	1 = 1 
@@ -1046,7 +974,7 @@ WHERE
 		sql += condition
 	}
 	sql += ` GROUP BY s.company_id `
-	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&items)
+	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
 
@@ -1065,14 +993,14 @@ type UserSignUpLossListResp struct {
 
 // GetUserSignUpList 获取用户报名列表
 func GetUserSignUpList(condition string, pars []interface{}) (items []*UserSignUpLossResp, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 	s.real_name,
 	s.mobile 
 FROM
 	cygx_activity_signup_detail AS s
 	INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
-	INNER JOIN cygx_activity_type AS t ON t.activity_type_id = a.activity_type_id 
-	INNER JOIN wx_user AS u ON u.mobile = s.mobile
+	INNER JOIN cygx_activity_type AS t ON t.activity_type_id = a.activity_type_id
 WHERE
 	1 = 1 
 	AND s.is_meeting = 1 
@@ -1080,7 +1008,7 @@ WHERE
 	if condition != `` {
 		sql += condition
 	}
-	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&items)
+	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
 
@@ -1131,8 +1059,8 @@ func GetCompanyPermissionByUsersZhengShi(companyIds string) (items []*Permission
 
 // 获取某一活动某个机构已经报名的数量
 func GetActivitySignupCompanyCount(activityId, companyId int) (count int, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND do_fail_type = 0 AND activity_id=? AND company_id=? `
-	o := orm.NewOrm()
 	err = o.Raw(sqlCount, activityId, companyId).QueryRow(&count)
 	return
 }
@@ -1160,19 +1088,20 @@ func GetCompanyPermissionByUserTrip(companyId int) (permission string, err error
 
 // GetCygxCygxActivitySignupList 获取报名列表信息
 func GetActivitySignupList(condition string, pars []interface{}) (items []*CygxActivitySignup, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			*
 		FROM
 			cygx_activity_signup AS v
 		WHERE
 			1 = 1 	` + condition
-	o := orm.NewOrm()
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
 
 // GetCygxCygxActivitySignupList 获取报名列表信息
 func GetActivitySignupInnerActivityList(condition string, pars []interface{}) (items []*CygxActivitySignup, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			*
 		FROM
@@ -1180,7 +1109,6 @@ func GetActivitySignupInnerActivityList(condition string, pars []interface{}) (i
 			INNER JOIN cygx_activity as a ON v.activity_id = a.activity_id
 		WHERE
 			1 = 1 	` + condition
-	o := orm.NewOrm()
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }

+ 3 - 3
models/cygx/activity_signup_break.go

@@ -20,7 +20,7 @@ type CygxActivitySignupBreak struct {
 
 // 添加爽约记录
 func AddCygxActivitySignupBreak(item *CygxActivitySignupBreak) (lastId int64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	lastId, err = o.Insert(item)
 	return
 }
@@ -31,14 +31,14 @@ func AddCygxActivitySignupBreakList(items []*CygxActivitySignupBreak) (lastId in
 	if lenitems == 0 {
 		return
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.InsertMulti(1, items)
 	return
 }
 
 // 删除
 func DeleteCygxActivitySignupBreakById(activityId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` DELETE FROM cygx_activity_signup_break  WHERE  activity_id =? `
 	_, err = o.Raw(sql, activityId).Exec()
 	return

+ 6 - 4
models/cygx/activity_signup_detail.go

@@ -36,27 +36,29 @@ type CygxActivitySignupDetail struct {
 
 // 获取今天报名的用户信息,存入到参会记录表中
 func GetSignupDetailBySignup(condition string, pars []interface{}) (list []*CygxActivitySignupDetail, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_signup  WHERE  1= 1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&list)
+	_, err = o.Raw(sql, pars).QueryRows(&list)
 	return
 }
 
 // 获取参会记录表列表
 func GetSignupDetailList(condition string, pars []interface{}) (list []*CygxActivitySignupDetail, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_signup_detail  WHERE  1= 1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&list)
+	_, err = o.Raw(sql, pars).QueryRows(&list)
 	return
 }
 
 // 添加
 func AddCygxActivitySignupDetail(items []*CygxActivitySignupDetail) (err error) {
-	o, err := orm.NewOrm().Begin()
+	o, err := orm.NewOrmUsingDB("hz_cygx").Begin()
 	if err != nil {
 		return
 	}
@@ -79,7 +81,7 @@ func AddCygxActivitySignupDetail(items []*CygxActivitySignupDetail) (err error)
 
 // UpdateActivitySignupDetailMulti 批量修改用户报名信息且报名的人
 func UpdateActivitySignupDetailMulti(items []*CygxActivitySignupDetail) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	p, err := o.Raw(` UPDATE cygx_activity_signup_detail SET 
 							first_meeting_time = ?,
 							last_meeting_time = ?,

+ 43 - 92
models/cygx/activity_special.go

@@ -140,7 +140,7 @@ type CygxActivitySpecial struct {
 
 // 添加活动
 func AddActivitySpecial(item *CygxActivitySpecial, industrialActivityItems []*CygxIndustrialActivityGroupManagement, subjectActivityItems []*CygxIndustrialActivityGroupSubject) (newId int64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -182,7 +182,7 @@ func AddActivitySpecial(item *CygxActivitySpecial, industrialActivityItems []*Cy
 
 // 通过纪要ID获取活动详情
 func GetAddActivityInfoSpecialById(ActivityId int) (item *ActivitySpecialDetail, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_special  WHERE activity_id=?`
 	err = o.Raw(sql, ActivityId).QueryRow(&item)
 	return
@@ -190,7 +190,7 @@ func GetAddActivityInfoSpecialById(ActivityId int) (item *ActivitySpecialDetail,
 
 // 通过纪要ID获取活动详情
 func GetCustomerName(ids string) (name string, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT GROUP_CONCAT( DISTINCT c.customer_name SEPARATOR '、' ) AS name 
 			FROM cygx_customer_type AS c WHERE c.customer_type_id IN (` + ids + `)`
 	err = o.Raw(sql).QueryRow(&name)
@@ -199,7 +199,7 @@ func GetCustomerName(ids string) (name string, err error) {
 
 // 修改
 func EditActivitySpecial(updateParams map[string]interface{}, item *CygxActivitySpecial, industrialActivityItems []*CygxIndustrialActivityGroupManagement, subjectActivityItems []*CygxIndustrialActivityGroupSubject) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -258,7 +258,7 @@ func EditActivitySpecial(updateParams map[string]interface{}, item *CygxActivity
 
 // 修改
 func EditActivitySpecialStatus(item *CygxActivitySpecial) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_activity_special SET publish_status=?, last_updated_time=NOW()  WHERE activity_id=?`
 	_, err = o.Raw(sql, item.PublishStatus, item.ActivityId).Exec()
 	return
@@ -266,7 +266,7 @@ func EditActivitySpecialStatus(item *CygxActivitySpecial) (err error) {
 
 // 修改
 func UpdateActivitySpecial(updateParams map[string]interface{}, item *CygxActivitySpecial) (err error) {
-	to := orm.NewOrm()
+	to := orm.NewOrmUsingDB("hz_cygx")
 	//修改活动信息
 	ptrStructOrTableName := "cygx_activity_special"
 	whereParam := map[string]interface{}{"activity_id": item.ActivityId}
@@ -280,7 +280,7 @@ func UpdateActivitySpecial(updateParams map[string]interface{}, item *CygxActivi
 
 // 修改是否下线
 func EditActivitySpecialIsOffline(item *CygxActivitySpecial) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_activity_special SET is_offline=?,publish_status=?, last_updated_time=NOW()   WHERE activity_id=?`
 	_, err = o.Raw(sql, item.IsOffline, item.PublishStatus, item.ActivityId).Exec()
 	return
@@ -318,9 +318,9 @@ type GetCygxActivityListSpecialRep struct {
 
 // 列表
 func GetActivityListSpecialAll(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxActivitySpecialList, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT  (SELECT COUNT(1) FROM cygx_activity_special_signup AS h  INNER JOIN wx_user AS u ON u.user_id = h.user_id    WHERE h.activity_id=art.activity_id) AS interested_num ,
- (SELECT COUNT(1) FROM cygx_activity_special_trip AS h  INNER JOIN wx_user AS u ON u.user_id = h.user_id    WHERE h.activity_id=art.activity_id AND h.is_cancel =0 ) AS signup_people_num ,
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT  (SELECT COUNT(1) FROM cygx_activity_special_signup AS h     WHERE h.activity_id=art.activity_id) AS interested_num ,
+ (SELECT COUNT(1) FROM cygx_activity_special_trip AS h      WHERE h.activity_id=art.activity_id AND h.is_cancel =0 ) AS signup_people_num ,
 			art.*  FROM cygx_activity_special as art WHERE 1= 1 `
 	if condition != "" {
 		sql += condition
@@ -336,14 +336,14 @@ func GetActivitySpecialCount(condition string, pars []interface{}) (count int, e
 	if condition != "" {
 		sqlCount += condition
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
 
 // 删除数据
 func DeleteActivitySpecial(activityId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` DELETE FROM cygx_activity_special WHERE activity_id = ?`
 	_, err = o.Raw(sql, activityId).Exec()
 	return
@@ -367,23 +367,12 @@ type CygxActivitySpecialSignupListResp struct {
 
 // 感兴趣列表
 func GetCygxActivitySpecialSignupList(activityId int) (items []*CygxActivitySpecialSignup, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
-			s.id,
-			s.activity_id,
-			s.user_id,
-			s.mobile,
-			s.create_time,
-			u.real_name,
-			c.company_name,
-			( SELECT p.seller_name FROM company_product AS p WHERE p.company_id = u.company_id AND p.product_id = 2 ) AS seller_name,
-			GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS pseller_name 
+			s.*
 		FROM
 			cygx_activity_special_signup AS s
-			INNER JOIN wx_user AS u ON u.user_id = s.user_id
 			LEFT JOIN cygx_activity_special AS a ON a.activity_id = s.activity_id
-			LEFT JOIN company_product AS p ON p.company_id = u.company_id
-			LEFT JOIN company AS c ON c.company_id = u.company_id 
 		WHERE
 			a.activity_id = ?  
 		GROUP BY
@@ -397,11 +386,11 @@ func GetCygxActivitySpecialSignupList(activityId int) (items []*CygxActivitySpec
 // 获取数量
 func GetCygxActivitySpecialSignupCount(condition string, pars []interface{}) (count int, err error) {
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_activity_special_signup as s INNER JOIN cygx_activity_special AS a ON a.activity_id = s.activity_id
-			INNER JOIN wx_user AS u ON u.user_id = s.user_id  WHERE 1= 1  `
+			 WHERE 1= 1  `
 	if condition != "" {
 		sqlCount += condition
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
@@ -429,28 +418,16 @@ type CygxActivitySpecialSignupRespList struct {
 
 // 列表
 func GetCygxActivitySpecialSignupListAll(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxActivitySpecialSignupResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
-			s.id,
-			s.activity_id,
-			s.user_id,
-			s.create_time,
-			s.user_num,
-			u.real_name,
-			c.company_name,
-			c.company_id,
+			s.*,
 			a.research_theme,
 			a.label,
 			a.chart_permission_name,
-			a.create_time AS publish_date,
-			( SELECT p.seller_name FROM company_product AS p WHERE p.company_id = u.company_id AND p.product_id = 2 ) AS seller_name,
-			GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS pseller_name 
+			a.create_time AS publish_date
 		FROM
 			cygx_activity_special_signup AS s
 			INNER JOIN cygx_activity_special AS a ON a.activity_id = s.activity_id
-			INNER JOIN wx_user AS u ON u.user_id = s.user_id
-			LEFT JOIN company_product AS p ON p.company_id = u.company_id
-			LEFT JOIN company AS c ON c.company_id = u.company_id 
 		WHERE
 			1 = 1 `
 	if condition != "" {
@@ -470,80 +447,54 @@ type AdminOpenIdList struct {
 }
 
 // GetAdminOpendidByCompany 通过用户公司ID获取对应销售的openid
-func GetAdminOpendidByCompany(condition string, pars []interface{}) (list []*AdminOpenIdList, err error) {
+func GetAdminMobileByCompany(condition string, pars []interface{}) (list []*AdminOpenIdList, err error) {
 	sql := `SELECT
-			cr.open_id,a.mobile,p.company_id,cr.union_id
+		a.mobile,p.company_id
 		FROM
 			company_product AS p
-			INNER JOIN admin AS a ON a.admin_id = p.seller_id 
-			INNER JOIN user_record  as c ON c.bind_account = a.mobile
-			INNER JOIN cygx_user_record AS cr ON cr.union_id = c.union_id
+			INNER JOIN admin AS a ON a.admin_id = p.seller_id
 		WHERE
 			1 = 1 
-			AND p.product_id = 2
-			AND create_platform = 4 ` + condition
+			AND p.product_id = 2 ` + condition
 	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&list)
 	return
 }
 
 // 获取预约活动的用户的openID
-func GetActivitySpecialOpenIdList() (items []*AdminOpenIdList, err error) {
-	sql := `SELECT DISTINCT cr.open_id,u.user_id,m.company_id
+func GeFollowSpecialOpenIdList() (items []*AdminOpenIdList, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT DISTINCT u.open_id,u.cygx_user_id as  user_id ,m.company_id
 			FROM
 			cygx_user_follow_special AS m
-			INNER JOIN user_record AS u ON u.bind_account = m.mobile 
-			INNER JOIN cygx_user_record AS cr ON cr.union_id = u.union_id 
-			WHERE  u.create_platform = 4 `
-	_, err = orm.NewOrm().Raw(sql).QueryRows(&items)
+			INNER JOIN cygx_user_record AS u ON u.cygx_bind_account = m.mobile  `
+	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
 
-func GetActivitySpecialByIndustryIds(condition string, pars []interface{}) (list []*CygxActivitySpecialSignup, err error) {
-	sql := `SELECT
-			m.activity_id
-		FROM
-			cygx_industrial_activity_group_management AS m
-			INNER JOIN cygx_activity_special AS a ON a.activity_id = m.activity_id
-		WHERE
- 			1= 1
-			AND m.source = 2
-			AND a.publish_status = 1 AND a.is_offline = 0 AND a.days >0  ` + condition
-	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&list)
-	return
-}
-
-func GetWxOpenIdByMobileList(condition string, pars []interface{}) (items []*OpenIdList, err error) {
-	sql := `SELECT cr.*,user_id FROM user_record  as c
-			INNER JOIN cygx_user_record AS cr ON cr.union_id = c.union_id
-			WHERE  1= 1 AND create_platform = 4 ` + condition
-	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&items)
-	return
-}
-
-func GetWxOpenIdBList(condition string, pars []interface{}) (items []*OpenIdList, err error) {
-	sql := `SELECT
-	cr.*,
-	u.user_id 
-FROM
-	cygx_user_record AS cr
-	INNER JOIN user_record AS c ON c.union_id = cr.union_id
-	INNER JOIN wx_user AS u ON u.user_id = c.user_id 
-WHERE
-	1 = 1 
-	AND c.create_platform = 4 ` + condition + ` GROUP BY	cr.open_id `
-	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&items)
-	return
-}
+//func GetWxOpenIdBList(condition string, pars []interface{}) (items []*OpenIdList, err error) {
+//	sql := `SELECT
+//	cr.*,
+//	u.user_id
+//FROM
+//	cygx_user_record AS cr
+//	INNER JOIN user_record AS c ON c.union_id = cr.union_id
+//	INNER JOIN wx_user AS u ON u.user_id = c.user_id
+//WHERE
+//	1 = 1
+//	AND c.create_platform = 4 ` + condition + ` GROUP BY	cr.open_id `
+//	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&items)
+//	return
+//}
 
 // 通过产业名称获取关联的ID
 func GetactivitySpecilIdsByLabel(name string) (activityIds string, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT
 				GROUP_CONCAT( DISTINCT s.activity_id SEPARATOR ',' ) AS activityIds 
 			FROM
 				cygx_activity_special AS s 
 			WHERE
 				label LIKE  '%` + name + `%' `
-	o := orm.NewOrm()
 	err = o.Raw(sql).QueryRow(&activityIds)
 	return
 }

+ 6 - 6
models/cygx/activity_special_day.go

@@ -6,7 +6,7 @@ import (
 	"time"
 )
 
-//活动详情
+// 活动详情
 type CygxActivitySpecialDay struct {
 	Id         int       `orm:"column(id);pk";description:"Id"`
 	ActivityId int       `description:"活动ID"`
@@ -14,7 +14,7 @@ type CygxActivitySpecialDay struct {
 	DayTime    string    `description:"活动行程时间"`
 }
 
-//活动详情
+// 活动详情
 type CygxActivitySpecialDayResp struct {
 	Id         int       `orm:"column(id);pk";description:"Id"`
 	ActivityId int       `description:"活动ID"`
@@ -22,9 +22,9 @@ type CygxActivitySpecialDayResp struct {
 	DayTime    time.Time `description:"活动行程时间"`
 }
 
-//添加活动
+// 添加活动
 func AddCygxActivitySpecialDay(items []*CygxActivitySpecialDay, activityId int) (newId int64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -53,9 +53,9 @@ func AddCygxActivitySpecialDay(items []*CygxActivitySpecialDay, activityId int)
 	return
 }
 
-//列表
+// 列表
 func GetCygxActivitySpecialDayByActivityId(activityId int) (items []*CygxActivitySpecialDayResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT  *  FROM cygx_activity_special_day as art WHERE activity_id= ? `
 	_, err = o.Raw(sql, activityId).QueryRows(&items)
 	return

+ 8 - 8
models/cygx/activity_special_meeting_detail.go

@@ -45,17 +45,17 @@ type MeetingSpeciaDoRep struct {
 
 // 列表
 func GetCygxActivitySpecialMeetingDetailListByActivity(activityId int) (items []*CygxActivitySpecialMeetingDetailResp, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT s.* , u.real_name
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT s.*
 			FROM cygx_activity_special_meeting_detail  as s 
-			INNER JOIN wx_user as u ON u.user_id = s.user_id  WHERE 1 =1  AND s.activity_id =? `
+			WHERE 1 =1  AND s.activity_id =? `
 	_, err = o.Raw(sql, activityId).QueryRows(&items)
 	return
 }
 
 // 到会操作
 func MeetingDopecialMeet(meetingUids, noMeetingUids string, ActivityId int, items []*CygxActivitySpecialMeetingDetail, itemsBill []*CygxActivitySpecialTripBill) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -125,7 +125,7 @@ func MeetingDopecialMeet(meetingUids, noMeetingUids string, ActivityId int, item
 
 // 列表
 func GetCygxActivitySpecialMeetingDetailList(condition string, pars []interface{}) (items []*CygxActivitySpecialMeetingDetail, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT s.* 
 			FROM cygx_activity_special_meeting_detail  as s  WHERE 1 =1   ` + condition
 	_, err = o.Raw(sql, pars).QueryRows(&items)
@@ -133,7 +133,7 @@ func GetCygxActivitySpecialMeetingDetailList(condition string, pars []interface{
 }
 
 func GetCygxActivitySpecialMeetingDetailListByActivityId(activityId int) (item []*CygxActivitySpecialMeetingDetail, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT *
 			FROM
 			cygx_activity_special_trip  
@@ -144,7 +144,7 @@ func GetCygxActivitySpecialMeetingDetailListByActivityId(activityId int) (item [
 
 // 列表
 func UpdateCygxActivitySpecialMeetingDetailRealName(realName, mobile string) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	//添加记录表的到会信息
 	sql := `UPDATE cygx_activity_special_meeting_detail SET real_name = ?  WHERE mobile = ? `
 	_, err = o.Raw(sql, realName, mobile).Exec()
@@ -153,7 +153,7 @@ func UpdateCygxActivitySpecialMeetingDetailRealName(realName, mobile string) (er
 
 // 添加
 func AddCygxActivitySpecialMeetingDetail(item *CygxActivitySpecialMeetingDetail) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Insert(item)
 	return
 }

+ 20 - 27
models/cygx/activity_special_trip.go

@@ -54,18 +54,17 @@ func GetActivitySpecialTripCountByActivityId(activityId int) (count int, err err
 					COUNT( 1 ) AS count 
 				FROM
 					cygx_activity_special_trip AS s
-					INNER JOIN wx_user AS u ON u.user_id = s.user_id 
 				WHERE
 					s.is_cancel = 0 
 					AND s.activity_id = ? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, activityId).QueryRow(&count)
 	return
 }
 
 func GetActivitySpecialTripCountByThisUser(activityId int, uids string) (count int, err error) {
 	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_special_trip WHERE is_cancel = 0 AND activity_id=? AND user_id IN (` + uids + `) `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, activityId).QueryRow(&count)
 	return
 }
@@ -73,14 +72,14 @@ func GetActivitySpecialTripCountByThisUser(activityId int, uids string) (count i
 // 获取用户报名数量
 func GetActivitySpecialTripCount(uid, activityId int) (count int, err error) {
 	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_special_trip WHERE is_cancel=0   AND user_id=? AND activity_id=? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
 	return
 }
 
 // 新增预约人数
 func AddCygxActivitySpecialTrip(items []*CygxActivitySpecialTrip, itemsBill []*CygxActivitySpecialTripBill, itemsMeet []*CygxActivitySpecialMeetingDetail) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -143,28 +142,23 @@ type GetAppointmentSpecialListRsep struct {
 }
 
 func GetCygxActivitySpecialTripList(activityId int, condition string) (item []*CygxActivitySpecialTripResp, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT s.id,s.activity_id,s.user_id,s.create_time,s.mobile,s.company_id,u.real_name,c.company_name,a.activity_time,s.outbound_mobile,s.country_code,a.special_type,
-			(SELECT p.seller_name from company_product as p WHERE p.company_id = u.company_id  AND  p.product_id = 2 )  AS seller_name,
-			GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS pseller_name
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT s.*
+					a.activity_time,
+					a.special_type
 			FROM
 			cygx_activity_special_trip AS s
-			INNER JOIN wx_user AS u ON  u.user_id = s.user_id
 			INNER JOIN cygx_activity_special AS a ON a.activity_id = s.activity_id
-			LEFT JOIN company_product AS p ON p.company_id = u.company_id 
-			LEFT JOIN company AS c ON c.company_id = u.company_id 
 			WHERE a.activity_id = ?  ` + condition + `  GROUP BY s.user_id   ORDER BY s.create_time DESC `
 	_, err = o.Raw(sql, activityId).QueryRows(&item)
 	return
 }
 
 func GetActivitySpecialTripTotal(activityId int, sqlStr string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT COUNT(*) FROM
 			cygx_activity_special_trip AS s
-			INNER  JOIN wx_user AS u ON  u.user_id = s.user_id
 			LEFT JOIN cygx_activity_special AS a ON a.activity_id = s.activity_id
-			LEFT JOIN company_product AS p ON p.company_id = u.company_id 
 			WHERE
 			s.activity_id = ? ` + sqlStr + `
             GROUP BY s.user_id)`
@@ -176,7 +170,7 @@ func GetActivitySpecialTripTotal(activityId int, sqlStr string) (count int, err
 
 // ActivitySpecialTripCancel 取消报名
 func ActivitySpecialTripCancel(isValid, activityId, uid int) (err error) {
-	o, err := orm.NewOrm().Begin()
+	o, err := orm.NewOrmUsingDB("hz_cygx").Begin()
 	if err != nil {
 		return
 	}
@@ -204,21 +198,21 @@ func GetSpecialTripUserIds(activityId int, uIds string) (signupUids string, err
 			GROUP_CONCAT( DISTINCT s.user_id SEPARATOR ',' ) AS signupUids 
 			FROM cygx_activity_special_trip AS s
             WHERE s.activity_id = ? AND s.is_cancel = 0 AND s.user_id not IN (` + uIds + `)`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sql, activityId).QueryRow(&signupUids)
 	return
 }
 
 // 修改外呼手机号
 func SpecialTripOutboundMobileEdit(id int, outboundMobile, countryCode string) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_activity_special_trip SET outbound_mobile = ?,country_code=?  WHERE id=? `
 	_, err = o.Raw(sql, outboundMobile, countryCode, id).Exec()
 	return
 }
 
 func GetCygxActivitySpecialTripListByActivityId(activityId int) (item []*CygxActivitySpecialTripResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT *
 			FROM
 			cygx_activity_special_trip  
@@ -229,7 +223,7 @@ func GetCygxActivitySpecialTripListByActivityId(activityId int) (item []*CygxAct
 
 // 获取公司报名的记录
 func GetCygxActivitySpecialTripListByComapnyId(companyId int) (item []*CygxActivitySpecial, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			t.*,
 			a.chart_permission_id,
@@ -245,7 +239,7 @@ func GetCygxActivitySpecialTripListByComapnyId(companyId int) (item []*CygxActiv
 
 // 获取空降的公司报名的记录
 func GetCygxActivitySpecialTripAirborneListByComapnyId(companyId int) (item []*CygxActivitySpecial, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			t.*,
 			a.chart_permission_id,
@@ -268,7 +262,7 @@ type ActivitySpecialSignupTempMsgReq struct {
 
 // 列表
 func GetCygxActivitySpecialTripListCondition(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxActivitySpecialTrip, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_special_trip as art WHERE 1= 1 `
 	if condition != "" {
 		sql += condition
@@ -282,18 +276,17 @@ func GetCygxActivitySpecialTripListCondition(condition string, pars []interface{
 	return
 }
 
-//获取某一用户的报名的数量
+// 获取某一用户的报名的数量
 func GetUserActivitySpecialTripCount(uid, activityId int) (count int, err error) {
 	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_special_trip  WHERE  user_id=?  AND   activity_id =? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
 	return
 }
 
-
 func UpdateSpecialTrip(isValid, isCancel, userId, activityId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_activity_special_trip SET is_valid = ?,create_time=NOW(),is_cancel=?  WHERE user_id=? AND activity_id=? `
 	_, err = o.Raw(sql, isValid, isCancel, userId, activityId).Exec()
 	return
-}
+}

+ 25 - 29
models/cygx/activity_special_trip_bill.go

@@ -49,7 +49,7 @@ type CygxActivitySpecialTripBillList struct {
 
 // 添加
 func AddCygxActivitySpecialTripBill(item *CygxActivitySpecialTripBill) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Insert(item)
 	if err != nil {
 		return
@@ -58,7 +58,7 @@ func AddCygxActivitySpecialTripBill(item *CygxActivitySpecialTripBill) (err erro
 }
 
 func GetCygxActivitySpecialTripBill(condition string, pars []interface{}) (item []*CygxActivitySpecialTripBill, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT *
 			FROM
 			cygx_activity_special_trip_bill  
@@ -68,13 +68,11 @@ func GetCygxActivitySpecialTripBill(condition string, pars []interface{}) (item
 }
 
 func GetCygxActivitySpecialTripBillList(condition string, pars []interface{}) (item []*CygxActivitySpecialTripBillList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
-			b.*,
-			c.chart_permission_name 
+			b.*
 		FROM
 			cygx_activity_special_trip_bill AS b
-			LEFT JOIN chart_permission AS c ON c.chart_permission_id = b.chart_permission_id 
 		WHERE
 			1 = 1` + condition
 	_, err = o.Raw(sql, pars).QueryRows(&item)
@@ -94,7 +92,7 @@ func GetActivitySpecialTripAirborneListByActivitySpecial(condition string, pars
 			INNER JOIN cygx_activity_special AS a ON a.activity_id = t.activity_id 
 		WHERE
 			 1= 1  	AND YEAR ( t.create_time )= YEAR (NOW()) ` + condition + `GROUP BY chart_permission_id`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Raw(sqlCount, pars).QueryRows(&items)
 	return
 }
@@ -107,7 +105,7 @@ func GetActivitySpecialTripAirborneCountByActivitySpecial(condition string, pars
 			INNER JOIN cygx_activity_special AS a ON a.activity_id = t.activity_id 
 		WHERE
 			 1= 1  	AND YEAR ( t.create_time )= YEAR (NOW()) ` + condition
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
@@ -135,21 +133,21 @@ type CygxActivitySpecialTripBillDetailList struct {
 	Total               string    `description:"总和"`
 }
 
-func GetCygxActivitySpecialTripBillDetailList(condition string, pars []interface{}) (item []*CygxActivitySpecialTripBillDetailList, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT
-			b.*,
-			a.research_theme,
-			c.chart_permission_name 
-		FROM
-			cygx_activity_special_trip_bill AS b
-			INNER JOIN chart_permission AS c ON c.chart_permission_id = b.chart_permission_id 
-			INNER JOIN cygx_activity_special AS a ON a.activity_id = b.activity_id
-		WHERE
-			1 = 1` + condition
-	_, err = o.Raw(sql, pars).QueryRows(&item)
-	return
-}
+//func GetCygxActivitySpecialTripBillDetailList(condition string, pars []interface{}) (item []*CygxActivitySpecialTripBillDetailList, err error) {
+//	o := orm.NewOrm()
+//	sql := `SELECT
+//			b.*,
+//			a.research_theme,
+//			c.chart_permission_name
+//		FROM
+//			cygx_activity_special_trip_bill AS b
+//			INNER JOIN chart_permission AS c ON c.chart_permission_id = b.chart_permission_id
+//			INNER JOIN cygx_activity_special AS a ON a.activity_id = b.activity_id
+//		WHERE
+//			1 = 1` + condition
+//	_, err = o.Raw(sql, pars).QueryRows(&item)
+//	return
+//}
 
 type CygxActivitySpecialPointsBillRespItem struct {
 	Id                  int    `gorm:"column:id;primary_key;AUTO_INCREMENT"`
@@ -170,14 +168,12 @@ type CygxActivitySpecialPointsBillResp struct {
 }
 
 func GetCygxActivitySpecialTripBillDetailListAll(condition string, pars []interface{}) (item []*CygxActivitySpecialTripBillDetailList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			b.*,
-			a.research_theme,
-			c.chart_permission_name 
+			a.research_theme
 		FROM
 			cygx_activity_special_trip_bill AS b
-			LEFT JOIN chart_permission AS c ON c.chart_permission_id = b.chart_permission_id 
 			LEFT JOIN cygx_activity_special AS a ON a.activity_id = b.activity_id
 		WHERE
 			1 = 1` + condition
@@ -188,7 +184,7 @@ func GetCygxActivitySpecialTripBillDetailListAll(condition string, pars []interf
 }
 
 func GetCygxActivitySpecialTripBillByCompanyId(companyId int) (item *CygxActivitySpecialTripBill, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			*
 		FROM
@@ -196,4 +192,4 @@ func GetCygxActivitySpecialTripBillByCompanyId(companyId int) (item *CygxActivit
 		`
 	err = o.Raw(sql, companyId).QueryRow(&item)
 	return
-}
+}

+ 3 - 3
models/cygx/activity_type.go

@@ -21,14 +21,14 @@ type ActivityTypeListResp struct {
 
 // 列表
 func GetActivityTypeList() (items []*ActivityType, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_type ORDER BY sort DESC`
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
 
 func GetActivityTypeDetailById(activityTypeId int) (item *ActivityType, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_type WHERE activity_type_id = ? `
 	err = o.Raw(sql, activityTypeId).QueryRow(&item)
 	return
@@ -36,7 +36,7 @@ func GetActivityTypeDetailById(activityTypeId int) (item *ActivityType, err erro
 
 // 列表
 func GetActivityTypeSearchList(condition string) (items []*ActivityType, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_type WHERE 1= 1  ` + condition + `  ORDER BY sort DESC`
 	_, err = o.Raw(sql).QueryRows(&items)
 	return

+ 3 - 3
models/cygx/activity_user_remarks.go

@@ -37,14 +37,14 @@ type CygxActivityUserRemarksListResp struct {
 
 // 新增
 func AddCygxActivityUserRemarks(item *CygxActivityUserRemarks) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Insert(item)
 	return
 }
 
 // 获取备注列表
 func GetCygxActivityUserRemarksLlist(mobile string) (items []*CygxActivityUserRemarksResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT * FROM cygx_activity_user_remarks WHERE  mobile IN (` + mobile + `)  ORDER BY id DESC`
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
@@ -52,7 +52,7 @@ func GetCygxActivityUserRemarksLlist(mobile string) (items []*CygxActivityUserRe
 
 // 获取备注列表
 func GetCygxActivityUserRemarksLlistByActivityId(mobile string, activityId int) (items []*CygxActivityUserRemarksResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT * FROM cygx_activity_user_remarks WHERE  mobile IN (` + mobile + `) AND activity_id = ?  ORDER BY id DESC`
 	_, err = o.Raw(sql, activityId).QueryRows(&items)
 	return

+ 9 - 9
models/cygx/activity_video.go

@@ -53,14 +53,14 @@ type CygxActivityVideoListRep struct {
 
 // 添加
 func AddCygxActivityVideo(item *CygxActivityVideo) (newId int64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	newId, err = o.Insert(item)
 	return
 }
 
 // 修改
 func UpdateCygxActivityVideo(item *CygxActivityVideo) (err error) {
-	to := orm.NewOrm()
+	to := orm.NewOrmUsingDB("hz_cygx")
 	updateParams := make(map[string]interface{})
 	updateParams["VideoName"] = item.VideoName
 	updateParams["VideoDuration"] = item.VideoDuration
@@ -90,14 +90,14 @@ func GetActivityVideoCount(condition string, pars []interface{}) (count int, err
 	if condition != "" {
 		sqlCount += condition
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
 
 // 列表
 func GetActivityVideoListAll(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxActivityVideoListResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT art.*,v.video_id,v.video_name,v.video_counts,video_duration,
 (SELECT COUNT(1) FROM cygx_article_comment AS h    WHERE h.activity_id=art.activity_id AND  h.industry_id = 0 AND  h.activity_voice_id = 0) AS comment_num
 			FROM cygx_activity as art  INNER JOIN cygx_activity_video AS v ON v.activity_id = art.activity_id   WHERE 1= 1  `
@@ -111,7 +111,7 @@ func GetActivityVideoListAll(condition string, pars []interface{}, startSize, pa
 
 // 历史记录
 func GetActivityVideoHistoryById(condition string, pars []interface{}) (item []*CygxMicroRoadshowVoiceHistory, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT
 			h.* 
 		FROM
@@ -130,7 +130,7 @@ func GetActivityVideoHistoryById(condition string, pars []interface{}) (item []*
 
 // 详情
 func GetCygxActivityVideoReqDetail(activityId int) (item *CygxActivityVideo, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT *  FROM cygx_activity_video  WHERE activity_id= ? `
 	err = o.Raw(sql, activityId).QueryRow(&item)
 	return
@@ -138,7 +138,7 @@ func GetCygxActivityVideoReqDetail(activityId int) (item *CygxActivityVideo, err
 
 // 列表
 func GetCygxActivityVideoReqDetailByVideoId(videoId int) (item *CygxActivityVideo, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT *  FROM cygx_activity_video  WHERE video_id= ? `
 	err = o.Raw(sql, videoId).QueryRow(&item)
 	return
@@ -146,7 +146,7 @@ func GetCygxActivityVideoReqDetailByVideoId(videoId int) (item *CygxActivityVide
 
 // 列表
 func GetActivityVideoList(condition string, pars []interface{}) (items []*CygxActivityVideoListResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT  * FROM  cygx_activity_video  WHERE  1=1  `
 	if condition != "" {
 		sql += condition
@@ -191,7 +191,7 @@ type ActivityVideoDefaultImgResp struct {
 
 // 删除数据
 func DeleteCygxActivityVideo(activityId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` DELETE FROM cygx_activity_video WHERE  activity_id= ? `
 	_, err = o.Raw(sql, activityId).Exec()
 	return

+ 7 - 7
models/cygx/activity_voice.go

@@ -29,14 +29,14 @@ type CygxActivityVoiceReq struct {
 
 // 添加
 func AddCygxActivityVoice(item *CygxActivityVoice) (newId int64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	newId, err = o.Insert(item)
 	return
 }
 
 // 修改
 func UpdateCygxActivityVoice(item *CygxActivityVoice) (err error) {
-	to := orm.NewOrm()
+	to := orm.NewOrmUsingDB("hz_cygx")
 	updateParams := make(map[string]interface{})
 	updateParams["VoiceName"] = item.VoiceName
 	updateParams["VoicePlaySeconds"] = item.VoicePlaySeconds
@@ -59,14 +59,14 @@ func GetCygxActivityVoiceCount(condition string, pars []interface{}) (count int,
 	if condition != "" {
 		sqlCount += condition
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
 
 // 列表
 func GetCygxActivityVoiceReqList(activityId int) (items []*CygxActivityVoiceReq, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT 
 			background_img,
 			share_img,
@@ -80,7 +80,7 @@ func GetCygxActivityVoiceReqList(activityId int) (items []*CygxActivityVoiceReq,
 
 // 列表
 func GetActivityVoiceList(condition string, pars []interface{}) (items []*CygxActivityVoice, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT  * FROM  cygx_activity_voice  WHERE  1=1  `
 	if condition != "" {
 		sql += condition
@@ -90,7 +90,7 @@ func GetActivityVoiceList(condition string, pars []interface{}) (items []*CygxAc
 }
 
 func GetCygxActivityVoiceReqDetail(activityId int) (item *CygxActivityVoice, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT *  FROM cygx_activity_voice  WHERE activity_id= ? `
 	err = o.Raw(sql, activityId).QueryRow(&item)
 	return
@@ -98,7 +98,7 @@ func GetCygxActivityVoiceReqDetail(activityId int) (item *CygxActivityVoice, err
 
 // 删除数据
 func DeleteCygxActivityVoice(activityId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` DELETE FROM cygx_activity_voice WHERE  activity_id= ? `
 	_, err = o.Raw(sql, activityId).Exec()
 	return

+ 4 - 9
models/cygx/advice.go

@@ -25,10 +25,8 @@ type AdviceListResp struct {
 }
 
 func GetAdviceListCount(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT COUNT(1) AS count FROM cygx_advice AS a
-			LEFT JOIN wx_user AS b ON a.user_id=b.user_id
-			LEFT JOIN company AS c ON a.company_id=c.company_id`
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT COUNT(1) AS count FROM cygx_advice AS a `
 	if condition != "" {
 		sql += condition
 	}
@@ -37,11 +35,8 @@ func GetAdviceListCount(condition string, pars []interface{}) (count int, err er
 }
 
 func GetAdviceList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxAdvice, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.real_name AS user_real_name,c.company_name,b.mobile,b.email FROM cygx_advice AS a
-			LEFT JOIN wx_user AS b ON a.user_id=b.user_id
-			LEFT JOIN company AS c ON a.company_id=c.company_id
-			 `
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := ` SELECT a.*  FROM cygx_advice AS a `
 	if condition != "" {
 		sql += condition
 	}

+ 250 - 0
models/cygx/allocation_company_contract.go

@@ -0,0 +1,250 @@
+package cygx
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// 研究员派点
+type CygxAllocationCompanyContract struct {
+	AllocationCompanyContractId int       `orm:"column(allocation_company_contract_id);pk"`
+	CompanyContractId           int       `description:"合同id"`
+	CreateTime                  time.Time `description:"创建时间"`
+	ModifyTime                  time.Time `description:"更新时间"`
+	AdminId                     int       `description:"操作人ID"`
+	AdminName                   string    `description:"内容"`
+	Proportion                  float64   `description:"占比"`
+	Money                       float64   `description:"金额"`
+	RealName                    string    `description:"研究员姓名"`
+	ChartPermissionName         string    `description:"行业名称"`
+}
+
+// 研究员派点日志
+type CygxAllocationCompanyContractLog struct {
+	AllocationCompanyContractId int       `orm:"column(allocation_company_contract_id);pk"`
+	CompanyContractId           int       `description:"合同id"`
+	CreateTime                  time.Time `description:"创建时间"`
+	ModifyTime                  time.Time `description:"更新时间"`
+	AdminId                     int       `description:"操作人ID"`
+	AdminName                   string    `description:"内容"`
+	Proportion                  float64   `description:"占比"`
+	Money                       float64   `description:"金额"`
+	RealName                    string    `description:"研究员姓名"`
+	ChartPermissionName         string    `description:"行业名称"`
+}
+
+// 行业派点
+type CygxAllocationCompanyContractPermission struct {
+	AllocationCompanyContractId int       `orm:"column(allocation_company_contract_id);pk"`
+	CompanyContractId           int       `description:"合同id"`
+	CreateTime                  time.Time `description:"创建时间"`
+	ModifyTime                  time.Time `description:"更新时间"`
+	AdminId                     int       `description:"操作人ID"`
+	AdminName                   string    `description:"内容"`
+	Proportion                  float64   `description:"占比"`
+	Money                       float64   `description:"金额"`
+	MoneyAvg                    float64   `description:"行业所占合同的平均金额"`
+	ChartPermissionName         string    `description:"行业名称"`
+}
+
+// 行业派点日志
+type CygxAllocationCompanyContractPermissionLog struct {
+	AllocationCompanyContractId int       `orm:"column(allocation_company_contract_id);pk"`
+	CompanyContractId           int       `description:"合同id"`
+	CreateTime                  time.Time `description:"创建时间"`
+	ModifyTime                  time.Time `description:"更新时间"`
+	AdminId                     int       `description:"操作人ID"`
+	AdminName                   string    `description:"内容"`
+	Proportion                  float64   `description:"占比"`
+	Money                       float64   `description:"金额"`
+	MoneyAvg                    float64   `description:"行业所占合同的平均金额"`
+	ChartPermissionName         string    `description:"行业名称"`
+}
+
+// 更新派点信息
+func AddAndUpdateCygxAllocationCompanyContract(items []*CygxAllocationCompanyContract, itemsPermission []*CygxAllocationCompanyContractPermission, companyContractId int) (err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
+	}()
+
+	//组合研究员派点日志结构体
+	var itemsLog []*CygxAllocationCompanyContractLog
+	for _, v := range items {
+		item := new(CygxAllocationCompanyContractLog)
+		item.CompanyContractId = v.CompanyContractId
+		item.AdminId = v.AdminId
+		item.CompanyContractId = v.CompanyContractId
+		item.AdminName = v.AdminName
+		item.RealName = v.RealName
+		item.ChartPermissionName = v.ChartPermissionName
+		item.Proportion = v.Proportion
+		item.Money = v.Money
+		item.Money = v.Money
+		item.CreateTime = time.Now()
+		item.ModifyTime = time.Now()
+		itemsLog = append(itemsLog, item)
+	}
+
+	//组合行业派点日志结构体
+	var itemsPermissionLog []*CygxAllocationCompanyContractPermissionLog
+	for _, v := range itemsPermission {
+		item := new(CygxAllocationCompanyContractPermissionLog)
+		item.CompanyContractId = v.CompanyContractId
+		item.AdminId = v.AdminId
+		item.CompanyContractId = v.CompanyContractId
+		item.AdminName = v.AdminName
+		item.ChartPermissionName = v.ChartPermissionName
+		item.Proportion = v.Proportion
+		item.Money = v.Money
+		item.MoneyAvg = v.MoneyAvg
+		item.CreateTime = time.Now()
+		item.ModifyTime = time.Now()
+		itemsPermissionLog = append(itemsPermissionLog, item)
+	}
+
+	//删除原有的研究员派点信息
+	sql := `DELETE FROM cygx_allocation_company_contract WHERE company_contract_id = ?`
+	_, err = to.Raw(sql, companyContractId).Exec()
+	if err != nil {
+		return
+	}
+	//删除原有的行业派点信息
+	sql = `	DELETE FROM cygx_allocation_company_contract_permission WHERE company_contract_id = ?`
+	_, err = to.Raw(sql, companyContractId).Exec()
+	if err != nil {
+		return
+	}
+
+	//批量添加研究员派点信息
+	_, err = to.InsertMulti(len(items), items)
+	if err != nil {
+		return
+	}
+
+	_, err = to.InsertMulti(len(itemsLog), itemsLog)
+	if err != nil {
+		return
+	}
+
+	//批量添加行业派点信息
+	_, err = to.InsertMulti(len(itemsPermission), itemsPermission)
+	if err != nil {
+		return
+	}
+
+	_, err = to.InsertMulti(len(itemsPermissionLog), itemsPermissionLog)
+	if err != nil {
+		return
+	}
+
+	ow := orm.NewOrm()
+	sqlW := `UPDATE company_contract SET is_allocation=1   WHERE company_contract_id=? `
+	_, err = ow.Raw(sqlW, companyContractId).Exec()
+
+	return
+}
+
+type UpdateAllocationCompanyContractReq struct {
+	CompanyContractId int `description:"合同ID"`
+	List              []*AllocationPermissionListResp
+}
+
+type CygxAllocationCompanyContractDetailResp struct {
+	CompanyContractId  int     `description:"合同ID"`
+	Money              float64 `description:"金额(单位万)"`
+	TotalPointsContent string  `description:"总点数描述"`
+	IsGray             bool    `description:"是否置灰"`
+	List               []*AllocationPermissionListResp
+}
+
+// 行业
+type AllocationPermissionListResp struct {
+	ChartPermissionName string  `description:"行业名称"`
+	Proportion          float64 `description:"占比"`
+	Money               float64 `description:"金额(单位万)"`
+	MoneyAvg            float64 `description:"行业所占合同的平均金额"`
+	List                []*AllocationRealNameListResp
+}
+
+// 行业
+type AllocationRealNameListResp struct {
+	RealName   string  `description:"研究员姓名"`
+	Proportion float64 `description:"占比"`
+	Money      float64 `description:"金额(单位万)"`
+}
+
+// 获取数量
+func GetCygxAllocationCompanyContractCountByCompanyContractId(companyContractId int) (count int, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_allocation_company_contract WHERE company_contract_id = ? `
+	err = o.Raw(sqlCount, companyContractId).QueryRow(&count)
+	return
+}
+
+// 研究员列表
+func GetCygxAllocationCompanyContractListById(companyContractId int) (items []*CygxAllocationCompanyContract, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_allocation_company_contract WHERE company_contract_id = ? `
+	_, err = o.Raw(sql, companyContractId).QueryRows(&items)
+	return
+}
+
+// 研究员列表
+func GetCygxAllocationCompanyContractList(condition string, pars []interface{}) (items []*CygxAllocationCompanyContract, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_allocation_company_contract as art WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+// 行业列表
+func GetCygxAllocationCompanyContractPermissionListById(companyContractId int) (items []*AllocationPermissionListResp, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := ` SELECT * FROM cygx_allocation_company_contract_permission WHERE company_contract_id = ? `
+	_, err = o.Raw(sql, companyContractId).QueryRows(&items)
+	return
+}
+
+// 行业列表
+func GetCygxAllocationCompanyContractPermissionList(condition string, pars []interface{}) (items []*AllocationPermissionListResp, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := ` SELECT * FROM cygx_allocation_company_contract_permission  as art WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+type CygxAllocationCompanyContractDetailStatisticsResp struct {
+	List          []*AllocationPermissionStatisticsListResp
+	TotalContract int     `description:"关联合同总计"`
+	TotalMoney    float64 `description:"总派点总计"`
+}
+
+// 行业
+type AllocationPermissionStatisticsListResp struct {
+	ChartPermissionName string `description:"行业名称"`
+	List                []*AllocationRealNameStatisticsListResp
+}
+
+// 行业
+type AllocationRealNameStatisticsListResp struct {
+	RealName             string  `description:"研究员姓名"`
+	TotalRelatedContract float64 `description:"关联合同"`
+	TotalDispatchPoint   string  `description:"总派点"`
+	GroupProportion      string  `description:"组内占比"`
+	DepartmentProportion string  `description:"部门占比"`
+}

+ 6 - 22
models/cygx/apply_record.go

@@ -67,13 +67,9 @@ type CygxApplyRecordResp struct {
 }
 
 func GetCygxApplyRecord(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxApplyRecordResp, err error) {
-	o := orm.NewOrm()
-
-	sql := ` SELECT DISTINCT a.*,i.invitee_mobile,i.invitee_company,i.invitee_email,invitee_company_id, GROUP_CONCAT(b.seller_name ORDER BY b.product_id ASC SEPARATOR '/') AS seller_name,c.email,(SELECT COUNT(1) FROM company WHERE company_id =invitee_company_id ) as invitee_company_num
-        FROM cygx_apply_record AS a
-		LEFT JOIN company_product AS b ON a.company_id_pay=b.company_id
-		LEFT JOIN wx_user AS c ON a.user_id=c.user_id 
-		LEFT JOIN user_invitee AS i ON a.user_id = i.inviteed_user_id WHERE 1=1 `
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := ` SELECT DISTINCT a.*
+        FROM cygx_apply_record AS a  WHERE  1 = 1  `
 	if condition != "" {
 		sql += condition
 	}
@@ -83,23 +79,11 @@ func GetCygxApplyRecord(condition string, pars []interface{}, startSize, pageSiz
 }
 
 func GetCygxApplyRecordCount(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
-	//sql := `SELECT COUNT(1) AS count FROM cygx_apply_record AS a
-	//	LEFT JOIN company_product AS b ON a.company_id_pay=b.company_id
-	//	LEFT JOIN wx_user AS c ON a.user_id=c.user_id WHERE 1=1 `
-	//
-	//if condition != "" {
-	//	sql += condition
-	//}
-	sql := `SELECT COUNT(1) AS count FROM ( SELECT DISTINCT a.*,
-GROUP_CONCAT(b.seller_name ORDER BY b.product_id ASC SEPARATOR '/') AS seller_name,c.email 
-        FROM cygx_apply_record AS a
-		LEFT JOIN company_product AS b ON a.company_id_pay=b.company_id
-		LEFT JOIN wx_user AS c ON a.user_id=c.user_id WHERE 1=1 `
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT COUNT( 1 ) AS count FROM cygx_apply_record AS a WHERE  1 = 1  `
 	if condition != "" {
 		sql += condition
 	}
-	sql += ` GROUP BY a.apply_record_id ) b `
 	err = o.Raw(sql, pars).QueryRow(&count)
 	return
 }
@@ -115,7 +99,7 @@ type CygxDealReq struct {
 
 func DealCygxApplyRecord(applyRecordId, sysUserId int) (err error) {
 	sql := `UPDATE cygx_apply_record SET status=1,deal_time=NOW(),sys_user_id=? WHERE apply_record_id=? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Raw(sql, sysUserId, applyRecordId).Exec()
 	return
 }

+ 3 - 4
models/cygx/article_ask.go

@@ -19,12 +19,11 @@ type ArticleAskListResp struct {
 	List []*ArticleAsk
 }
 
-//列表
+// 列表
 func GetArticleAskList(articleId int) (items []*ArticleAsk, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT k.*,u.real_name
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT k.*
 			FROM cygx_article_ask  as k
-			LEFT JOIN wx_user as u ON u.mobile = k.mobile
 			WHERE article_id = ? ORDER BY create_time DESC`
 	_, err = o.Raw(sql, articleId).QueryRows(&items)
 	return

+ 6 - 30
models/cygx/article_comment.go

@@ -19,45 +19,21 @@ type ArticleCommentListResp struct {
 	List []*ArticleComment
 }
 
-//列表
+// 列表
 func GetArticleCommentList(articleId int) (items []*ArticleComment, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT k.*,u.real_name
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT k.*
 			FROM cygx_article_comment  as k
-			LEFT JOIN wx_user as u ON u.mobile = k.mobile
 			WHERE article_id = ? ORDER BY create_time DESC`
 	_, err = o.Raw(sql, articleId).QueryRows(&items)
 	return
 }
 
-//列表
-func GetArticleCommentListByVideoId(videoId int) (items []*ArticleComment, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT k.*,u.real_name
-			FROM cygx_article_comment  as k
-			LEFT JOIN wx_user as u ON u.mobile = k.mobile
-			WHERE video_id = ? ORDER BY create_time DESC`
-	_, err = o.Raw(sql, videoId).QueryRows(&items)
-	return
-}
-
-//列表
-func GetArticleCommentListByActivityVideoId(videoId int) (items []*ArticleComment, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT k.*,u.real_name
-			FROM cygx_article_comment  as k
-			LEFT JOIN wx_user as u ON u.mobile = k.mobile
-			WHERE video_id = ? ORDER BY create_time DESC`
-	_, err = o.Raw(sql, videoId).QueryRows(&items)
-	return
-}
-
-//留言列表
+// 留言列表
 func GetArticleCommentListSearch(condition string, pars []interface{}) (items []*ArticleComment, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT k.*,u.real_name
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := ` SELECT k.*
 			FROM cygx_article_comment  as k
-			LEFT JOIN wx_user as u ON u.mobile = k.mobile
 			WHERE  1= 1  ` + condition + ` ORDER BY create_time DESC `
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return

+ 18 - 22
models/cygx/article_department.go

@@ -29,48 +29,48 @@ type CygxArticleDepartmentList struct {
 	List []*CygxArticleDepartmentRep
 }
 
-//新增
+// 新增
 func AddCygxArticleDepartment(item *CygxArticleDepartment) (newId int64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	newId, err = o.Insert(item)
 	return
 }
 
-//详情
+// 详情
 func GetArticleDepartmentDateil(nickName, remarks string) (item *CygxArticleDepartmentRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_article_department WHERE nick_name = ? AND  remarks = ? LIMIT 1 `
 	err = o.Raw(sql, nickName, remarks).QueryRow(&item)
 	return
 }
 
-//详情
+// 详情
 func GetArticleDepartmentDateilById(departmentId int) (item *CygxArticleDepartmentRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_article_department WHERE department_id = ? `
 	err = o.Raw(sql, departmentId).QueryRow(&item)
 	return
 }
 
-//数量
+// 数量
 func GetArticleDepartmentCount(nickName, remarks string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT COUNT(1)  FROM cygx_article_department WHERE nick_name = ? AND  remarks = ? `
 	err = o.Raw(sql, nickName, remarks).QueryRow(&count)
 	return
 }
 
-//数量
+// 数量
 func GetArticleDepartmentCountAll() (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT COUNT(1)  FROM cygx_article_department`
 	err = o.Raw(sql).QueryRow(&count)
 	return
 }
 
-//列表
+// 列表
 func GetCygxArticleDepartmentList(condition string) (items []*CygxArticleDepartmentRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_article_department `
 	if condition != "" {
 		sql += condition
@@ -92,27 +92,23 @@ type CygxDepartmentFllowRep struct {
 	List     []*CygxDepartmentFllowList
 }
 
-//列表
+// 列表
 func GetCygxDepartmentFllowList(departmentId int) (items []*CygxDepartmentFllowList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
-			u.real_name,c.company_name,b.real_name as seller_name ,f.create_time
+			f.*
 		FROM
 			cygx_article_department_follow AS f
-			INNER  JOIN wx_user AS u ON u.user_id = f.user_id
-			INNER JOIN company_product AS c ON c.company_id = u.company_id
-			INNER JOIN admin AS b ON b.admin_id = c.seller_id 
 		WHERE
 			f.department_id = ?
-			AND f.type = 1
-			AND c.product_id = 2 `
+			AND f.type = 1 `
 	_, err = o.Raw(sql, departmentId).QueryRows(&items)
 	return
 }
 
-//详情
+// 详情
 func GetArticleDepartmentDateilByDepartmentId(departmentId int) (item *CygxArticleDepartment, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_article_department WHERE department_id = ? `
 	err = o.Raw(sql, departmentId).QueryRow(&item)
 	return

+ 8 - 8
models/cygx/article_type.go

@@ -28,32 +28,32 @@ type ArticleTypeListResp struct {
 	AbstractList []*ArticleTypeAndAbstract
 }
 
-//列表
+// 列表
 func GetCygxArticleTypeList() (items []*CygxArticleType, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_article_type ORDER BY sort DESC`
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
 
-//新增
+// 新增
 func AddCygxArticleType(item *CygxArticleType) (newId int64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	newId, err = o.Insert(item)
 	return
 }
 
-//详情
+// 详情
 func GetCygxArticleTypeDetailById(activityTypeId int) (item *CygxArticleType, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_article_type WHERE article_type_id = ? `
 	err = o.Raw(sql, activityTypeId).QueryRow(&item)
 	return
 }
 
-//获取数量
+// 获取数量
 func GetCygxArticleTypeCount(condition string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := `SELECT COUNT(1) AS count  FROM cygx_article_type WHERE  1=1 ` + condition
 	err = o.Raw(sqlCount).QueryRow(&count)
 	return

+ 10 - 10
models/cygx/banner.go

@@ -34,14 +34,14 @@ type CygxBannerReq struct {
 
 // 添加
 func AddCygxBanner(item *CygxBanner) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Insert(item)
 	return
 }
 
 // 修改
 func UpdateCygxBanner(item *CygxBanner) (err error) {
-	to := orm.NewOrm()
+	to := orm.NewOrmUsingDB("hz_cygx")
 	updateParams := make(map[string]interface{})
 	updateParams["ImgId"] = item.ImgId
 	updateParams["ListType"] = item.ListType
@@ -96,7 +96,7 @@ type GetCygxBannerImgRespDetailResp struct {
 
 // 通过ID获取详情
 func GetCygxBannerDetail(banneId int) (item *CygxBannerResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_banner  WHERE banner_id=? `
 	err = o.Raw(sql, banneId).QueryRow(&item)
 	return
@@ -104,7 +104,7 @@ func GetCygxBannerDetail(banneId int) (item *CygxBannerResp, err error) {
 
 // 获取某一列,最大的排序值
 func GetCygxBannerDetailByListTypeMaxSort(listType string) (item *CygxBanner, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT  * FROM cygx_banner  WHERE  list_type = ? ORDER BY sort DESC   LIMIT 1  `
 	err = o.Raw(sql, listType).QueryRow(&item)
 	return
@@ -112,7 +112,7 @@ func GetCygxBannerDetailByListTypeMaxSort(listType string) (item *CygxBanner, er
 
 // UpdateCygxBannerRespMulti 批量修改banner排序
 func UpdateCygxBannerMulti(items []*CygxBanner) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	p, err := o.Raw(` UPDATE cygx_banner SET sort = ? WHERE banner_id = ?  `).Prepare()
 	if err != nil {
 		return
@@ -133,7 +133,7 @@ func UpdateCygxBannerMulti(items []*CygxBanner) (err error) {
 
 // 修改是否展示
 func EditCygxBannerStatus(status, banneId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_banner SET status=?, modify_time=NOW()   WHERE banner_id=? `
 	_, err = o.Raw(sql, status, banneId).Exec()
 	return
@@ -145,14 +145,14 @@ func GetCygxBannerCount(condition string, pars []interface{}) (count int, err er
 	if condition != "" {
 		sqlCount += condition
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
 
 // 列表
 func GetCygxBannerList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxBannerResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_banner as art WHERE 1= 1 `
 	if condition != "" {
 		sql += condition
@@ -169,7 +169,7 @@ type CygxBannerListResp struct {
 
 // 移动列数并修改排序
 func EditCygxBannerMove(sort, banneId int, listType string) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -207,7 +207,7 @@ func EditCygxBannerMove(sort, banneId int, listType string) (err error) {
 
 // 移动列数并修改排序
 func UpdateCygxBannerlistType(sort, banneId int, listType string) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_banner SET sort = ?,  list_type =?, modify_time=NOW()  WHERE banner_id=?   `
 	_, err = o.Raw(sql, sort, listType, banneId).Exec()
 

+ 4 - 4
models/cygx/banner_history.go

@@ -22,7 +22,7 @@ type CygxBannerHistory struct {
 
 // 列表
 func GetCygxBannerHistoryList(condition string, pars []interface{}) (items []*CygxBannerHistory, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_banner_history as art WHERE 1= 1 `
 	if condition != "" {
 		sql += condition
@@ -37,7 +37,7 @@ func GetCygxBannerHistoryCount(condition string, pars []interface{}) (count int,
 	if condition != "" {
 		sqlCount += condition
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
@@ -49,7 +49,7 @@ func GetCygxBannerHistoryCountUv(bannerId int) (count int, err error) {
 		FROM
 			( SELECT count(*) FROM cygx_banner_history WHERE 1 = 1 AND banner_id = ? GROUP BY user_id ) b `
 
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, bannerId).QueryRow(&count)
 	return
 }
@@ -57,7 +57,7 @@ func GetCygxBannerHistoryCountUv(bannerId int) (count int, err error) {
 // 获取数量
 func GetCygxBannerHistoryCountPv(bannerId int) (count int, err error) {
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_banner_history as art WHERE 1= 1  AND banner_id = ? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, bannerId).QueryRow(&count)
 	return
 }

+ 3 - 3
models/cygx/banner_img.go

@@ -27,14 +27,14 @@ func GetCygxBannerImgCount(condition string, pars []interface{}) (count int, err
 	if condition != "" {
 		sqlCount += condition
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
 
 // 列表
 func GetCygxBannerImgList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxBannerImgResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_banner_img as art WHERE 1= 1 `
 	if condition != "" {
 		sql += condition
@@ -46,7 +46,7 @@ func GetCygxBannerImgList(condition string, pars []interface{}, startSize, pageS
 
 // 通过ID获取详情
 func GetCygxBannerImgDetail(imgId int) (item *CygxBannerImgResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_banner_img  WHERE img_id=? `
 	err = o.Raw(sql, imgId).QueryRow(&item)
 	return

+ 46 - 47
models/cygx/chart.go

@@ -94,19 +94,12 @@ type CygxChartDetail struct {
 }
 
 func GetChartCountById(chartId int) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT COUNT(1) AS count FROM cygx_chart WHERE chart_id = ? `
 	err = o.Raw(sql, chartId).QueryRow(&count)
 	return
 }
 
-// 新增图表
-func AddCygxChart(item *CygxChart) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
-	return
-}
-
 // 标签分类
 type ChartPtagResultApi struct {
 	Data []ChartPtagResultApidate `json:"data"`
@@ -171,7 +164,7 @@ type ChartCollectReq struct {
 
 // 获取图表列表
 func GetChartList(condition string, pars []interface{}, startSize, pageSize int) (items []*HomeChartListResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT * FROM cygx_chart AS a WHERE a.publish_status=1 `
 	if condition != "" {
 		sql += condition
@@ -183,7 +176,7 @@ func GetChartList(condition string, pars []interface{}, startSize, pageSize int)
 
 // 获取图表列表
 func GetChartListCollection(chartIds string, userId, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT a.*,
 			t.create_time AS t_create_time,
 			c.create_time AS c_create_time,
@@ -207,7 +200,7 @@ func GetChartListCollection(chartIds string, userId, startSize, pageSize int) (i
 
 // 获取图表列表本地
 func GetChartListCollectionWithCygxByMobile(condition string, startSize, pageSize int) (items []*HomeChartListResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT
 			a.chart_id,a.title,a.title_en,a.ptag_name,a.ctag_name,a.cover,a.iframe,a.ptag_name_two,a.ctag_name_two,
 			r.create_time AS create_date
@@ -225,7 +218,7 @@ func GetChartListCollectionWithCygxByMobile(condition string, startSize, pageSiz
 
 // 获取图表列表本地
 func GetChartListCollectionWithCygx(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT
 			a.chart_id,a.title,a.title_en,a.ptag_name,a.ctag_name,a.cover,a.iframe,a.ptag_name_two,a.ctag_name_two,
 			r.create_time AS create_time
@@ -244,7 +237,7 @@ func GetChartListCollectionWithCygx(condition string, startSize, pageSize int) (
 
 // 获取图表数量
 func GetChartCount(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT COUNT(1) AS count
                 FROM cygx_chart AS a
                 WHERE a.publish_status=1 `
@@ -256,13 +249,15 @@ func GetChartCount(condition string, pars []interface{}) (count int, err error)
 }
 
 func GetChartCountByUser(condition string) (count int, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT COUNT(1) AS count FROM cygx_chart_collect as r INNER JOIN cygx_chart_all AS a ON r.chart_id = a.chart_id  WHERE 1=1   ` + condition
-	err = orm.NewOrm().Raw(sql).QueryRow(&count)
+	err = o.Raw(sql).QueryRow(&count)
 	return
 }
 func GetChartCountByUserMobile(condition string) (count int, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT COUNT(1) AS count FROM cygx_chart_collect as r  INNER JOIN cygx_chart_all AS a ON a.chart_id = r.chart_id  WHERE 1= 1 ` + condition
-	err = orm.NewOrm().Raw(sql).QueryRow(&count)
+	err = o.Raw(sql).QueryRow(&count)
 	return
 }
 
@@ -273,25 +268,34 @@ type CygxChartCollect struct {
 
 // 获取图表列表
 func GetChartCollectList(condition string) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT u.mobile,u.user_id,u.real_name FROM cygx_chart_collect AS r
-			INNER JOIN wx_user AS u ON u.mobile = r.mobile 
-			LEFT  JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id 
-			WHERE 1= 1 ` + condition + `   GROUP BY r.mobile  ORDER BY ui.chart_count_num DESC `
+	//o := orm.NewOrm()
+	//sql := `SELECT u.mobile,u.user_id,u.real_name FROM cygx_chart_collect AS r
+	//		INNER JOIN wx_user AS u ON u.mobile = r.mobile
+	//		LEFT  JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
+	//		WHERE 1= 1 ` + condition + `   GROUP BY r.mobile  ORDER BY ui.chart_count_num DESC `
+	//_, err = o.Raw(sql).QueryRows(&items)
+
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT  *  FROM cygx_chart_collect AS r
+			WHERE 1= 1 ` + condition + `   GROUP BY r.mobile `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
 
 // 获取图表列表
 func GetChartCollectBycompanyList(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT u.mobile,u.user_id,u.real_name,r.company_name,
-			cp.seller_name FROM cygx_chart_collect AS r
-			INNER JOIN wx_user AS u ON u.user_id = r.user_id 
-			INNER  JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
-			LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
-			INNER JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
-			WHERE 1= 1 ` + condition + `   GROUP BY r.mobile  ORDER BY ci.chart_count_num DESC , ui.chart_count_num DESC `
+	o := orm.NewOrmUsingDB("hz_cygx")
+	//sql := `SELECT u.mobile,u.user_id,u.real_name,r.company_name,
+	//		cp.seller_name FROM cygx_chart_collect AS r
+	//		INNER JOIN wx_user AS u ON u.user_id = r.user_id
+	//		INNER  JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
+	//		LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
+	//		INNER JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
+	//		WHERE 1= 1 ` + condition + `   GROUP BY r.mobile  ORDER BY ci.chart_count_num DESC , ui.chart_count_num DESC `
+
+	sql := `SELECT r.*
+			FROM cygx_chart_collect AS r
+			WHERE 1= 1 ` + condition + `   GROUP BY r.mobile   `
 	if startSize > 0 || pageSize > 0 {
 		sql += ` LIMIT ` + strconv.Itoa(startSize) + "," + strconv.Itoa(pageSize)
 	}
@@ -301,38 +305,33 @@ func GetChartCollectBycompanyList(condition string, startSize, pageSize int) (it
 
 // 获取一共有多少用户收藏图表
 func GetChartCountByUserCount(condition string) (count int, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT
-	COUNT( 1 ) AS count 
-FROM
-	(
-	SELECT
-		COUNT( 1 ) 
-	FROM
-		cygx_chart_collect AS r
-		INNER JOIN wx_user AS u ON u.user_id = r.user_id
-		INNER JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
-		INNER JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id 
-		WHERE 1= 1 ` + condition + ` GROUP BY u.user_id ) AS count`
-	err = orm.NewOrm().Raw(sql).QueryRow(&count)
+			COUNT( 1 ) AS count 
+		FROM
+			(
+			SELECT
+				COUNT( 1 ) 
+			FROM
+				cygx_chart_collect AS r
+				INNER JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
+				INNER JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id 
+				WHERE 1= 1 ` + condition + ` GROUP BY r.user_id ) AS count`
+	err = o.Raw(sql).QueryRow(&count)
 	return
 }
 
 func GetChartCountBySeller(condition string) (list []*company.CompanyReportRecordGroup, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
-	p.seller_id AS admin_id,
 	count(
 	DISTINCT ( r.company_id )) num,
 	GROUP_CONCAT( DISTINCT r.company_id SEPARATOR ',' ) AS company_ids 
 FROM
 	cygx_chart_collect AS r
 	INNER JOIN cygx_chart_all AS a ON a.chart_id = r.chart_id
-	INNER JOIN company_product AS p ON p.company_id = r.company_id 
 WHERE
-	1 = 1 
-	AND p.product_id = 2  ` + condition
-
-	sql += ` GROUP BY p.seller_id `
+	1 = 1  ` + condition
 	_, err = o.Raw(sql).QueryRows(&list)
 	return
 }

+ 11 - 11
models/cygx/chart_permission.go

@@ -29,7 +29,7 @@ func GetChartPermissionAll() (items []*ChartPermission, err error) {
 	return
 }
 
-//获取带有ICo的产业
+// 获取带有ICo的产业
 func GetChartPermissionIco(condition string) (items []*ChartPermission, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT * FROM chart_permission  WHERE 1=1 `
@@ -41,7 +41,7 @@ func GetChartPermissionIco(condition string) (items []*ChartPermission, err erro
 	return
 }
 
-//获取带有ICo的产业
+// 获取带有ICo的产业
 func GetChartPermissionIcoNew(condition string) (items []*CygxRSlChartPermissionIcoTmp, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT chart_permission_id ,chart_permission_name,image_url as ico_link FROM chart_permission  WHERE 1=1 `
@@ -53,7 +53,7 @@ func GetChartPermissionIcoNew(condition string) (items []*CygxRSlChartPermission
 	return
 }
 
-//获取带有ICo的产业
+// 获取带有ICo的产业
 func GetChartPermissionIcoDetail(condition string) (items []*CygxRSlChartPermissionIco, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT chart_permission_id ,chart_permission_name,image_url as ico_link FROM chart_permission  WHERE 1=1 `
@@ -65,7 +65,7 @@ func GetChartPermissionIcoDetail(condition string) (items []*CygxRSlChartPermiss
 	return
 }
 
-//获取带有ICo的产业
+// 获取带有ICo的产业
 func GetChartPermissionDetail(condition string) (items []*CygxReportSelectionChart, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT chart_permission_id ,chart_permission_name,image_url as ico_link FROM chart_permission  WHERE 1=1 `
@@ -77,7 +77,7 @@ func GetChartPermissionDetail(condition string) (items []*CygxReportSelectionCha
 	return
 }
 
-//没有策略的顶级分类
+// 没有策略的顶级分类
 func GetChartPermissionAllNoTactics() (items []*ChartPermission, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT * FROM chart_permission WHERE product_id=2 AND show_type=1 AND is_report=1 AND chart_permission_id != 23 AND is_other = 0 AND permission_type != 2   ORDER BY sort ASC   `
@@ -92,7 +92,7 @@ func GetChartPermissionOtherAll() (items []*ChartPermission, err error) {
 	return
 }
 
-//获取产业数量
+// 获取产业数量
 func GetChartPermissionCount(condition string, pars []interface{}) (count int, err error) {
 	sqlCount := ` SELECT COUNT(1) AS count  FROM chart_permission WHERE 1=1 `
 	if condition != "" {
@@ -103,7 +103,7 @@ func GetChartPermissionCount(condition string, pars []interface{}) (count int, e
 	return
 }
 
-//通过ID获取分类详情
+// 通过ID获取分类详情
 func GetCategoryInfoById(chartPermissionId int) (item *ChartPermission, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT * FROM chart_permission WHERE chart_permission_id=?`
@@ -111,7 +111,7 @@ func GetCategoryInfoById(chartPermissionId int) (item *ChartPermission, err erro
 	return
 }
 
-//通过名称获取分类详情
+// 通过名称获取分类详情
 func GetCategoryInfoByName(name string) (item *ChartPermission, err error) {
 	if name == "宏观" {
 		name = "宏观经济"
@@ -122,7 +122,7 @@ func GetCategoryInfoByName(name string) (item *ChartPermission, err error) {
 	return
 }
 
-//报告分类映射类型
+// 报告分类映射类型
 type ReportMapping struct {
 	CategoryId        int    `description:"匹配ID"`
 	MatchTypeName     string `description:"匹配类型"`
@@ -131,14 +131,14 @@ type ReportMapping struct {
 }
 
 func GetReportMapping() (item []*ReportMapping, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT *  FROM	cygx_report_mapping WHERE	match_type_name != ''  `
 	_, err = o.Raw(sql).QueryRows(&item)
 	return
 }
 
 func GetReportMappingDetail(condition string, pars []interface{}) (item *ReportMapping, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT *  FROM	cygx_report_mapping WHERE	 1= 1  ` + condition + ` LIMIT 1 `
 	err = o.Raw(sql, pars).QueryRow(&item)
 	return

+ 92 - 0
models/cygx/company_contract.go

@@ -0,0 +1,92 @@
+package cygx
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
+)
+
+// 增量客户统计报表列表数据结构
+type CompanyContractResp struct {
+	CompanyContractId int     `description:"合同id"`
+	ContractType      string  `description:"合同类型"`
+	CompanyId         int     `description:"企业客户id"`
+	CompanyName       string  `description:"企业客户名称"`
+	ContractCode      string  `description:"合同编码"`
+	StartDate         string  `description:"合同开始日期"`
+	EndDate           string  `description:"合同结束日期"`
+	Money             float64 `description:"合同金额"`
+	CreateTime        string  `description:"合同创建时间"`
+	ModifyTime        string  `description:"合同修改时间"`
+	SellerId          int     `description:"归属销售id"`
+	SellerName        string  `description:"归属销售名称"`
+	IsAllocation      int     `description:"是否派点: 0-未派点; 1-已派点"`
+	Source            string  `description:"合同来源,枚举值:上传附件、系统合同,默认上传附件"`
+	FormalType        string  `description:"转正类型,枚举值: 标准、非标"`
+	IsGray            bool    `description:"是否置灰"`
+	ContractId        int     `description:"合同唯一id"`
+	MoneyPoint        float64 `description:"派点金额"`
+	PermissionName    string  `description:"权限名"`
+}
+
+// 增量客户统计报表返回类
+type CompanyContractListResp struct {
+	Paging *paging.PagingItem `description:"分页数据"`
+	List   []*CompanyContractResp
+}
+
+// 获取存量客户未续约报表列表统计数据(根据合同来展示)
+func GetCompanyContractCountJoinCompany(condition string, pars []interface{}) (total int, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT
+	count(*) AS count 
+FROM
+	(
+	SELECT
+		COUNT(*) 
+	FROM
+		company_contract a
+		JOIN company b ON a.company_id = b.company_id
+		JOIN company_product c ON a.company_id = c.company_id 
+		AND a.product_id = c.product_id 
+	WHERE
+		a.STATUS = 1 
+		` + condition + `
+	GROUP BY
+	a.company_contract_id 
+	) b`
+	err = o.Raw(sql, pars).QueryRow(&total)
+	return
+}
+
+// 获取存量客户未续约报表列表数据(根据合同来展示)
+func GetCompanyContractListJoinCompany(condition string, pars []interface{}, startSize, pageSize int) (items []*CompanyContractResp, err error) {
+	o := orm.NewOrm()
+	//
+	//sql := `SELECT a.*,b.region_type,c.seller_id,c.seller_name,b.company_name FROM company_contract a
+	//	 JOIN company b ON a.company_id = b.company_id
+	//	 JOIN company_product c ON a.company_id = c.company_id and a.product_id=c.product_id WHERE a.status = 1 `
+	//
+	//if condition != "" {
+	//	sql += condition
+	//}
+	//sql += " order by a.start_date desc "
+	//sql = `select *,count(*) count from (` + sql + `) b group by company_id  order by end_date asc,company_id desc limit ?,?`
+
+	sql := ` SELECT
+			a.*,
+			b.region_type,
+			c.seller_id,
+			c.seller_name,
+			b.company_name 
+		FROM
+			company_contract a
+			JOIN company b ON a.company_id = b.company_id
+			JOIN company_product c ON a.company_id = c.company_id 
+			AND a.product_id = c.product_id 
+		WHERE
+			a.STATUS = 1`
+	sql += condition
+	sql += `GROUP BY a.company_contract_id ORDER BY a.start_date DESC   , a.company_contract_id DESC  	LIMIT  ?,? `
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}

+ 6 - 6
models/cygx/company_user_type.go

@@ -16,13 +16,13 @@ type CygxCompanyUserType struct {
 
 // 新增权益客户身份类型
 func AddCygxCompanyUserType(item *CygxCompanyUserType) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Insert(item)
 	return
 }
 
 func GetCygxCompanyUserTypeByCompanyId(companyId int) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT COUNT(1) AS count FROM cygx_company_user_type AS a WHERE a.company_id=?  `
 	err = o.Raw(sql, companyId).QueryRow(&count)
 	return
@@ -30,7 +30,7 @@ func GetCygxCompanyUserTypeByCompanyId(companyId int) (count int, err error) {
 
 // CygxCompanyUserType 更新权益客户身份类型
 func UpdateCygxCompanyUserType(companyId, useType int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_company_user_type SET customer_type_id=? WHERE company_id=? `
 	_, err = o.Raw(sql, useType, companyId).Exec()
 	return
@@ -38,7 +38,7 @@ func UpdateCygxCompanyUserType(companyId, useType int) (err error) {
 
 // 通过活动ID获取详情
 func GetCygxCompanyUserType(companyId int) (item *CygxCompanyUserType, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT *  FROM cygx_company_user_type AS a WHERE a.company_id=?  `
 	err = o.Raw(sql, companyId).QueryRow(&item)
 	return
@@ -46,7 +46,7 @@ func GetCygxCompanyUserType(companyId int) (item *CygxCompanyUserType, err error
 
 // 获取大套餐客户列表
 func GetCygxCompanyUserTypeList() (items []*CygxCompanyUserType, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT *  FROM cygx_company_user_type AS a WHERE a.customer_type_id=2  `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
@@ -54,7 +54,7 @@ func GetCygxCompanyUserTypeList() (items []*CygxCompanyUserType, err error) {
 
 // CygxCompanyUserType 更新权益客户身份类型
 func UpdateCygxCompanyUserTypeAndPackageType(companyId, useType, packageType int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_company_user_type SET customer_type_id=?, package_type = ? WHERE company_id=? `
 	_, err = o.Raw(sql, useType, packageType, companyId).Exec()
 	return

+ 6 - 6
models/cygx/config.go

@@ -18,25 +18,25 @@ type NameAndUrlList struct {
 	List []*NameAndUrl
 }
 
-//详情
+// 详情
 func GetCygxConfigDetail() (item *CygxConfig, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_config  WHERE config_code= 'is_show_sustainable'`
 	err = o.Raw(sql).QueryRow(&item)
 	return
 }
 
-//修改
+// 修改
 func CygxConfigUpdate(newValue int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_config SET  config_value=?   WHERE config_code= 'is_show_sustainable'`
 	_, err = o.Raw(sql, newValue).Exec()
 	return
 }
 
-//详情
+// 详情
 func GetCygxConfigDetailByCode(code string) (item *CygxConfig, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_config  WHERE config_code= ?`
 	err = o.Raw(sql, code).QueryRow(&item)
 	return

+ 6 - 6
models/cygx/cygx_activity_special_points_company.go

@@ -9,7 +9,7 @@ type CygxActivitySpecialInheritPointsCompany struct {
 	Id                  int       `orm:"column(id);pk"`
 	CompanyId           int       // 公司ID
 	CompanyName         string    // 公司名称
-	Points              int   // 公司剩余点数
+	Points              int       // 公司剩余点数
 	CreateTime          time.Time // 创建时间
 	ModifyTime          time.Time // 更新时间
 	ChartPermissionId   int       // 品种ID
@@ -17,7 +17,7 @@ type CygxActivitySpecialInheritPointsCompany struct {
 }
 
 func AddCygxActivitySpecialPointsCompany(item *CygxActivitySpecialInheritPointsCompany) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Insert(item)
 	if err != nil {
 		return
@@ -26,14 +26,14 @@ func AddCygxActivitySpecialPointsCompany(item *CygxActivitySpecialInheritPointsC
 }
 
 func AddCygxActivitySpecialInheritPointsCompanyMulti(items []*CygxActivitySpecialInheritPointsCompany) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.InsertMulti(1, items)
 	return
 }
 
 func GetCygxActivitySpecialInheritPointsByCompanyId(companyId int) (list []*CygxActivitySpecialInheritPointsCompany, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT * FROM cygx_activity_special_inherit_points_company WHERE company_id = ?  `
-	_, err = o.Raw(sql,companyId).QueryRows(&list)
+	_, err = o.Raw(sql, companyId).QueryRows(&list)
 	return
-}
+}

+ 11 - 11
models/cygx/cygx_morning_meeting_review_chapter.go

@@ -40,14 +40,14 @@ type AddMorningMeetingReviewsReq struct {
 
 // 添加晨报点评章节
 func AddCygxMorningMeetingReviewChapter(item *CygxMorningMeetingReviewChapter) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Insert(item)
 	return
 }
 
 // 列表
 func GetCygxMorningMeetingReviewsListById(meetingId int) (items []*CygxMorningMeetingReviewChapter, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_morning_meeting_review_chapter WHERE meeting_id = ? `
 	_, err = o.Raw(sql, meetingId).QueryRows(&items)
 	return
@@ -55,7 +55,7 @@ func GetCygxMorningMeetingReviewsListById(meetingId int) (items []*CygxMorningMe
 
 // 列表
 func GetCygxMorningMeetingReviewChapterList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxMorningMeetingReviewChapter, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_morning_meeting_review_chapter WHERE 1=1 `
 	if condition != "" {
 		sql += condition
@@ -92,7 +92,7 @@ type CygxMorningMeetingReviewChapterResp struct {
 
 // 删除晨会点评章节
 func DeleteMorningMeetingChapter(reviewId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` DELETE FROM cygx_morning_meeting_review_chapter WHERE meeting_id =? `
 	_, err = o.Raw(sql, reviewId).Exec()
 	return
@@ -100,7 +100,7 @@ func DeleteMorningMeetingChapter(reviewId int) (err error) {
 
 // 更新晨报点评章节
 func UpdateCygxMorningMeetingReviewChapter(item *CygxMorningMeetingReviewChapter) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_morning_meeting_review_chapter
 			SET
 			  meeting_time =?,
@@ -119,7 +119,7 @@ func UpdateCygxMorningMeetingReviewChapter(item *CygxMorningMeetingReviewChapter
 }
 
 func GetCygxMorningMeetingReviewsListByIdAndIndustryId(meetingId, industryId int) (item *CygxMorningMeetingReviewChapter, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_morning_meeting_review_chapter WHERE meeting_id = ? AND industry_id = ? `
 	err = o.Raw(sql, meetingId, industryId).QueryRow(&item)
 	return
@@ -127,7 +127,7 @@ func GetCygxMorningMeetingReviewsListByIdAndIndustryId(meetingId, industryId int
 
 // 删除晨会点评章节
 func DeleteMorningMeetingChapterById(chapterId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` DELETE FROM cygx_morning_meeting_review_chapter WHERE id =? `
 	_, err = o.Raw(sql, chapterId).Exec()
 	return
@@ -145,7 +145,7 @@ type CygxMorningMeetingGather struct {
 
 // 列表
 func GetCygxMorningMeetingGatherList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxMorningMeetingGather, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_morning_meeting_gather WHERE 1=1 `
 	if condition != "" {
 		sql += condition
@@ -157,7 +157,7 @@ func GetCygxMorningMeetingGatherList(condition string, pars []interface{}, start
 
 // 更改
 func UpdateCygxMorningMeetingGather(meetingIds string, meetingGatherId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` UPDATE cygx_morning_meeting_gather SET meeting_ids=? WHERE id =?  `
 	_, err = o.Raw(sql, meetingIds, meetingGatherId).Exec()
 	return
@@ -165,7 +165,7 @@ func UpdateCygxMorningMeetingGather(meetingIds string, meetingGatherId int) (err
 
 // 详情
 func GetCygxMorningMeetingReviewChapterDetail(meetingGatherId int) (item *CygxMorningMeetingReviewChapter, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT *  FROM cygx_morning_meeting_review_chapter  WHERE id= ? `
 	err = o.Raw(sql, meetingGatherId).QueryRow(&item)
 	return
@@ -173,7 +173,7 @@ func GetCygxMorningMeetingReviewChapterDetail(meetingGatherId int) (item *CygxMo
 
 // 获取数量
 func GetCygxMorningMeetingReviewChapterCount(cid int) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := ` SELECT
 				COUNT( 1 ) AS count 
 			FROM

+ 13 - 13
models/cygx/cygx_morning_meeting_reviews.go

@@ -19,16 +19,16 @@ type CygxMorningMeetingReviews struct {
 	IndustryNames string    `json:"industryName"` // 产业名称
 }
 
-//添加晨报点评
+// 添加晨报点评
 func AddCygxMorningMeetingReviews(item *CygxMorningMeetingReviews) (id int64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	id, err = o.Insert(item)
 	return
 }
 
-//列表
+// 列表
 func GetCygxMorningMeetingReviewsList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxMorningMeetingReviews, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_morning_meeting_reviews WHERE 1=1 `
 	if condition != "" {
 		sql += condition
@@ -39,7 +39,7 @@ func GetCygxMorningMeetingReviewsList(condition string, pars []interface{}, star
 }
 
 func GetCygxMorningMeetingReviewsListCount(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT COUNT(1) AS count FROM cygx_morning_meeting_reviews WHERE 1=1 `
 	if condition != "" {
 		sql += condition
@@ -65,7 +65,7 @@ type CygxMorningMeetingReviewsList struct {
 }
 
 func GetMorningMeetingReviewById(reviewId int) (item *CygxMorningMeetingReviews, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_morning_meeting_reviews WHERE id=?`
 	err = o.Raw(sql, reviewId).QueryRow(&item)
 	return
@@ -73,7 +73,7 @@ func GetMorningMeetingReviewById(reviewId int) (item *CygxMorningMeetingReviews,
 
 // 发布报告
 func PublishMorningMeetingReviewById(reviewId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_morning_meeting_reviews SET status=1,publish_time=now(),modify_time=NOW() WHERE id = ? `
 	_, err = o.Raw(sql, reviewId).Exec()
 	return
@@ -87,9 +87,9 @@ type MorningReviewPublishCancelReq struct {
 	ReviewId int `description:"晨会id"`
 }
 
-//取消发布报告
+// 取消发布报告
 func PublishCancelMorningMeetingReview(reviewId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` UPDATE cygx_morning_meeting_reviews SET status=0,publish_time=null WHERE id =?  `
 	_, err = o.Raw(sql, reviewId).Exec()
 	return
@@ -126,17 +126,17 @@ func DeleteMorningReviewAndChapter(reviewId int) (err error) {
 	return
 }
 
-//删除晨会点评
+// 删除晨会点评
 func DeleteMorningMeeting(reviewId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` DELETE FROM cygx_morning_meeting_reviews WHERE id =? `
 	_, err = o.Raw(sql, reviewId).Exec()
 	return
 }
 
-//更新晨报点评
+// 更新晨报点评
 func UpdateCygxMorningMeetingReviews(item *CygxMorningMeetingReviews) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_morning_meeting_reviews
 			SET
 			  meeting_time =?,

+ 8 - 8
models/cygx/cygx_report_mapping.go

@@ -15,7 +15,7 @@ type CygxReportMappingListRep struct {
 
 // 主题列表
 func CygxReportMappingist(chartPermissionId int) (items []*CygxReportMapping, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT sub_category_name FROM cygx_report_mapping WHERE  chart_permission_id = ? GROUP BY sub_category_name`
 	_, err = o.Raw(sql, chartPermissionId).QueryRows(&items)
 	return
@@ -31,7 +31,7 @@ type CygxReportMappingMatchTypeRep struct {
 
 // 主题列表
 func CygxReportMappingMatchTypeList() (items []*CygxReportMappingMatchType, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT match_type_name FROM cygx_report_mapping WHERE report_type = 2  GROUP BY match_type_name`
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
@@ -39,7 +39,7 @@ func CygxReportMappingMatchTypeList() (items []*CygxReportMappingMatchType, err
 
 // 主题列表所有
 func CygxReportMappingMatchTypeListAll() (items []*CygxReportMappingMatchType, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT match_type_name FROM cygx_report_mapping WHERE match_type_name  != ''  GROUP BY match_type_name`
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
@@ -47,7 +47,7 @@ func CygxReportMappingMatchTypeListAll() (items []*CygxReportMappingMatchType, e
 
 // 主题列表
 func CygxReportMappingMatchTypeListExcel() (items []*CygxReportMappingMatchType, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT match_type_name FROM cygx_report_mapping WHERE report_type = 2 AND chart_permission_id != 23 GROUP BY match_type_name`
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
@@ -62,7 +62,7 @@ func GetReportCount(chartPermissionId, industrialManagementId int, matchTypeName
 	WHERE re.chart_permission_id = ? 
     AND man_g.industrial_management_id = ?
 	AND re.match_type_name = ` + "'" + matchTypeName + "'"
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, chartPermissionId, industrialManagementId).QueryRow(&recount)
 	return
 }
@@ -76,21 +76,21 @@ type ReportMappingRep struct {
 }
 
 func GetMatchTypeNameById(Id int) (item *ReportMappingRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_report_mapping WHERE id = ? `
 	err = o.Raw(sql, Id).QueryRow(&item)
 	return
 }
 
 func GetMatchTypeNameByPermissionId(permissionId int) (item *ReportMappingRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT category_id FROM cygx_report_mapping WHERE chart_permission_id = ? AND category_id IN (1004,1005,1006,1007) AND report_type = 2 LIMIT 1 `
 	err = o.Raw(sql, permissionId).QueryRow(&item)
 	return
 }
 
 func GetMatchTypeNameByKeyword(keyWord string) (items []*CygxReportMapping, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			* 
 		FROM

+ 11 - 11
models/cygx/cygx_tag.go

@@ -22,13 +22,13 @@ type CygxTag struct {
 
 // 添加标签
 func AddCygxTag(item *CygxTag) (id int64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	id, err = o.Insert(item)
 	return
 }
 
 func (m *CygxTag) Update(cols []string) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Update(m, cols...)
 	return
 }
@@ -52,7 +52,7 @@ type CygxTagList struct {
 
 // 获取tag列表
 func GetCygxTagList(cond string) (items []*CygxTagList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_tag  WHERE 1=1 AND status = 1 `
 	if cond != "" {
 		sql += cond
@@ -65,7 +65,7 @@ func GetCygxTagList(cond string) (items []*CygxTagList, err error) {
 
 // 获取tag列表-总数
 func GetCygxTagListCount(cond string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT COUNT(1) AS count FROM cygx_tag  WHERE 1=1  `
 	if cond != "" {
 		sql += cond
@@ -78,7 +78,7 @@ func GetCygxTagListCount(cond string) (count int, err error) {
 
 // 获取tag列表-分页
 func GetCygxTagListPage(cond string, startSize, pageSize int) (items []*CygxTagList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT *,
 		(SELECT COUNT(1) FROM cygx_tag_history AS avr WHERE avr.tag_id=cygx_tag.tag_id) AS pv,
         (SELECT COUNT(DISTINCT user_id) FROM cygx_tag_history AS avr WHERE avr.tag_id=cygx_tag.tag_id) AS uv
@@ -94,7 +94,7 @@ func GetCygxTagListPage(cond string, startSize, pageSize int) (items []*CygxTagL
 }
 
 func UpdateCygxTagStatus(id, status int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ``
 	if status == 1 {
 		sql = ` UPDATE  cygx_tag
@@ -117,7 +117,7 @@ func UpdateCygxTagStatus(id, status int) (err error) {
 
 // GetCygxTagByTagId 根据指标id获取指标信息
 func GetCygxTagByTagId(tagId int) (item *CygxTag, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_tag WHERE tag_id=? `
 	err = o.Raw(sql, tagId).QueryRow(&item)
 	return
@@ -125,7 +125,7 @@ func GetCygxTagByTagId(tagId int) (item *CygxTag, err error) {
 
 // GetCygxTagMinSort 获取最小不等于0的排序
 func GetCygxTagMinSort() (sort int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT min(sort) FROM cygx_tag WHERE  sort <> 0 `
 	err = o.Raw(sql).QueryRow(&sort)
 	return
@@ -133,7 +133,7 @@ func GetCygxTagMinSort() (sort int, err error) {
 
 // MoveDownCygxTagBySort 往下移动
 func MoveDownCygxTagBySort(prevSort, currentSort int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `update cygx_tag set sort = sort - 1 where sort <= ? and sort> ? `
 	_, err = o.Raw(sql, prevSort, currentSort).Exec()
 	return
@@ -141,7 +141,7 @@ func MoveDownCygxTagBySort(prevSort, currentSort int) (err error) {
 
 // MoveUpCygxTagBySort 往下移动
 func MoveUpCygxTagBySort(prevSort, currentSort int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `update cygx_tag set sort = sort + 1 where sort >= ? and sort< ? `
 	_, err = o.Raw(sql, prevSort, currentSort).Exec()
 	return
@@ -149,7 +149,7 @@ func MoveUpCygxTagBySort(prevSort, currentSort int) (err error) {
 
 // GetCygxTagMaxSort 获取最大不等于0的排序
 func GetCygxTagMaxSort() (sort int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT max(sort) FROM cygx_tag WHERE  sort <> 0 `
 	err = o.Raw(sql).QueryRow(&sort)
 	return

+ 55 - 65
models/cygx/cygx_user.go

@@ -109,8 +109,7 @@ func GetCygxCompanyUserList(userCondition, keyWord, kwywordcondition, condition,
 			cp.try_stage,
 			cp.package_type,
 			m.real_name as seller_name ,
-			( SELECT COUNT( 1 ) FROM user_remarks AS rm  WHERE rm.user_id = u.user_id ) AS is_show_see_num,
-			( SELECT COUNT( 1 ) FROM cygx_user_remind AS rm  WHERE rm.user_id = u.user_id ) AS is_remind
+			( SELECT COUNT( 1 ) FROM user_remarks AS rm  WHERE rm.user_id = u.user_id ) AS is_show_see_num
 		FROM
 			wx_user AS u
 			INNER JOIN company AS c ON c.company_id = u.company_id
@@ -181,7 +180,8 @@ func GetCygxCompanyUserListByNoLoss() (items []*CygxCompanyUserAndSellerResp, er
 
 // 对于上面的SQL的拆分优化查询速度
 func GetCygxCompanyUserListSplit(userIds string) (items []*CygxCompanyUser, err error) {
-	o := orm.NewOrm()
+
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			u.user_id,
 			( SELECT COUNT( 1 ) FROM cygx_article_history_record_all AS h  INNER JOIN cygx_article  as art  ON  art.article_id = h.article_id  WHERE h.mobile = u.mobile AND h.is_del = 0   AND h.mobile <>'' ) AS history_num,
@@ -215,7 +215,7 @@ func GetCygxCompanyUserListSplit(userIds string) (items []*CygxCompanyUser, err
 				man.activity_id IN ( SELECT activity_id FROM cygx_activity_signup AS f WHERE f.user_id = u.user_id  AND label != '') 
 			) AS activity_label
 		FROM
-			wx_user AS u WHERE  u.user_id IN( ` + userIds + `) `
+			cygx_user_label AS u WHERE  u.user_id IN (` + userIds + `)  AND u.mobile != ''	GROUP BY u.user_id  `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
@@ -353,6 +353,7 @@ type UserInteraction struct {
 	ChartId               int    `description:"图表id"`
 	RealName              string `description:"姓名"`
 	CompanyName           string `description:"公司名称"`
+	CompanyId             int    `description:"公司ID"`
 	SellerName            string `description:"所属销售"`
 	Mobile                string `description:"手机号"`
 	UserId                int    `description:"用户ID"`
@@ -392,7 +393,7 @@ type CygxChartResp struct {
 
 // 获取阅读记录数量
 func GetCygxArticleHistoryCount(mobile, email, condition string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_article_history_record_all as r  INNER JOIN cygx_article  as art  ON  art.article_id = r.article_id  WHERE   r.mobile  = '` + mobile + `'  AND is_del = 0 ` + condition
 	err = o.Raw(sqlCount).QueryRow(&count)
 	return
@@ -400,7 +401,7 @@ func GetCygxArticleHistoryCount(mobile, email, condition string) (count int, err
 
 // 阅读记录列表
 func GetCygxArticleHistoryRecordByUser(mobile, email, condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT
 			art.title,
 			art.article_id,
@@ -445,7 +446,7 @@ func GetCygxArticleHistoryRecordByUser(mobile, email, condition string, startSiz
 
 // 用户阅读记录列表 2023-08-02 优化拆分
 func GetCygxArticleHistoryRecordByUserNew(mobile, email, condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT
 			art.title,
 			art.article_id,
@@ -470,7 +471,7 @@ func GetCygxArticleHistoryRecordByUserNew(mobile, email, condition string, start
 
 // 收藏列表数量
 func GetCygxArticleCollectCount(uid int) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_article_collect as r INNER JOIN cygx_article AS art ON art.article_id = r.article_id  WHERE   user_id = ?  `
 	err = o.Raw(sqlCount, uid).QueryRow(&count)
 	return
@@ -478,7 +479,7 @@ func GetCygxArticleCollectCount(uid int) (count int, err error) {
 
 // 收藏列表
 func GetCygxArticleCollectByUser(uid, startSize, pageSize int, condition string) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT
 			art.title,
 			art.article_id,
@@ -521,7 +522,7 @@ func GetCygxArticleCollectByUser(uid, startSize, pageSize int, condition string)
 
 // 关注作者数量
 func GetCygArticleDepartmentFollowCount(uid int) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_article_department_follow  WHERE   user_id = ?   AND type = 1  `
 	err = o.Raw(sqlCount, uid).QueryRow(&count)
 	return
@@ -529,7 +530,7 @@ func GetCygArticleDepartmentFollowCount(uid int) (count int, err error) {
 
 // 关注作者列表
 func GetCygArticleDepartmentFollowByUser(uid, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			m.department_id,
 			m.nick_name,
@@ -546,7 +547,7 @@ func GetCygArticleDepartmentFollowByUser(uid, startSize, pageSize int) (items []
 			LEFT JOIN cygx_article AS a ON a.department_id = m.department_id
 			LEFT JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id
 			LEFT JOIN cygx_industrial_management AS i ON i.industrial_management_id = mg.industrial_management_id 
-			WHERE user_id = ? AND f.type = 1  GROUP BY m.department_id 
+			WHERE f.user_id = ? AND f.type = 1  GROUP BY m.department_id 
 			ORDER BY  f.create_time DESC LIMIT ?,? `
 	_, err = o.Raw(sql, uid, startSize, pageSize).QueryRows(&items)
 	return
@@ -554,7 +555,7 @@ func GetCygArticleDepartmentFollowByUser(uid, startSize, pageSize int) (items []
 
 // 用户搜索关键词统计
 func GetCygxSearchKeyWordCount(uid int) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_search_key_word  WHERE   user_id = ?  `
 	err = o.Raw(sqlCount, uid).QueryRow(&count)
 	return
@@ -562,7 +563,7 @@ func GetCygxSearchKeyWordCount(uid int) (count int, err error) {
 
 // 用户搜索关键词列表
 func GetCygxSearchKeyWordByUser(uid, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			key_word,create_time
 		FROM
@@ -575,13 +576,12 @@ func GetCygxSearchKeyWordByUser(uid, startSize, pageSize int) (items []*UserInte
 
 // 用户专项产业调研统计
 func GetCygxActivitySpecialTripCount(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := `SELECT
 	COUNT( 1 ) 
 FROM
 	cygx_activity_special_meeting_detail AS h
 	INNER JOIN cygx_activity_special AS a ON a.activity_id = h.activity_id
-	INNER JOIN wx_user AS u ON h.mobile = u.mobile 
 WHERE
 	1 = 1 
 	AND a.publish_status = 1 AND a.activity_time_end < NOW() ` + condition
@@ -591,7 +591,7 @@ WHERE
 
 // 用户专项产业调研列表
 func GetCygxActivitySpecialTripByUser(uid, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			a.research_theme AS activity_name,
 			a.chart_permission_name,
@@ -603,11 +603,10 @@ func GetCygxActivitySpecialTripByUser(uid, startSize, pageSize int) (items []*Us
 		FROM
 			cygx_activity_special_meeting_detail AS h
 			INNER JOIN cygx_activity_special AS a ON a.activity_id = h.activity_id
-			INNER JOIN wx_user AS u ON h.mobile = u.mobile 
 		WHERE
 			1 = 1
 			 AND a.publish_status = 1 AND a.activity_time_end < NOW()
-			AND u.user_id = ?
+			AND h.user_id = ?
 			ORDER BY  a.activity_time DESC LIMIT ?,? `
 	_, err = o.Raw(sql, uid, startSize, pageSize).QueryRows(&items)
 	return
@@ -615,7 +614,7 @@ func GetCygxActivitySpecialTripByUser(uid, startSize, pageSize int) (items []*Us
 
 // 用户音视频浏览统计
 func GetCygxRoadshowCount(uid int) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := `SELECT
 	COUNT( 1 ) total 
 FROM
@@ -625,25 +624,22 @@ FROM
 	FROM
 		cygx_micro_roadshow_video_history AS r
 		INNER JOIN cygx_micro_roadshow_video AS v ON r.video_id = v.video_id
-		INNER JOIN wx_user AS u ON r.mobile = u.mobile 
 	WHERE
-		u.user_id = ? UNION ALL
+		r.user_id = ? UNION ALL
 	SELECT
 		"" 
 	FROM
 		cygx_activity_video_history AS r
 		INNER JOIN cygx_activity_video AS v ON r.video_id = v.video_id
-		INNER JOIN wx_user AS u ON r.mobile = u.mobile 
 	WHERE
-		u.user_id = ? UNION ALL
+		r.user_id = ? UNION ALL
 	SELECT
 		"" 
 	FROM
 		cygx_activity_voice_history AS r
 		INNER JOIN cygx_activity_voice AS v ON r.activity_id = v.activity_id
-		INNER JOIN wx_user AS u ON r.mobile = u.mobile 
 	WHERE
-	u.user_id = ? 
+	r.user_id = ? 
 	)z  `
 	err = o.Raw(sqlCount, uid, uid, uid).QueryRow(&count)
 	return
@@ -651,7 +647,7 @@ FROM
 
 // 用户专项产业调研列表
 func GetCygxRoadshowByUser(uid, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			v.video_name AS media_title,
 			r.create_time,
@@ -659,9 +655,8 @@ func GetCygxRoadshowByUser(uid, startSize, pageSize int) (items []*UserInteracti
 		FROM
 			cygx_micro_roadshow_video_history AS r
 			INNER JOIN cygx_micro_roadshow_video AS v ON r.video_id = v.video_id
-			INNER JOIN wx_user AS u ON r.mobile = u.mobile 
 		WHERE
-			u.user_id = ? UNION ALL
+			r.user_id = ? UNION ALL
 		SELECT
 			v.video_name AS media_title,
 			r.create_time,
@@ -669,9 +664,8 @@ func GetCygxRoadshowByUser(uid, startSize, pageSize int) (items []*UserInteracti
 		FROM
 			cygx_activity_video_history AS r
 			INNER JOIN cygx_activity_video AS v ON r.video_id = v.video_id
-			INNER JOIN wx_user AS u ON r.mobile = u.mobile 
 		WHERE
-			u.user_id = ? UNION ALL
+			r.user_id = ? UNION ALL
 		SELECT
 			v.voice_name AS media_title,
 			r.create_time,
@@ -679,9 +673,8 @@ func GetCygxRoadshowByUser(uid, startSize, pageSize int) (items []*UserInteracti
 		FROM
 			cygx_activity_voice_history AS r
 			INNER JOIN cygx_activity_voice AS v ON r.activity_id = v.activity_id
-			INNER JOIN wx_user AS u ON r.mobile = u.mobile 
 		WHERE
-			u.user_id = ?
+			r.user_id = ?
 		ORDER BY create_time DESC   LIMIT ?,? `
 	_, err = o.Raw(sql, uid, uid, uid, startSize, pageSize).QueryRows(&items)
 	return
@@ -689,7 +682,7 @@ func GetCygxRoadshowByUser(uid, startSize, pageSize int) (items []*UserInteracti
 
 // 线上已到会列表
 func GetAttendanceDetailListByUser(isMeeting int, mobile string, startSize, pageSize int) (item []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			s.signup_type,
 			a.activity_name,
@@ -727,7 +720,7 @@ func GetAttendanceDetailListByUser(isMeeting int, mobile string, startSize, page
 
 // 线上未来到会列表
 func GetAttendanceDetailListNoMeetingByUser(isMeeting int, mobile string, startSize, pageSize int) (item []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			s.signup_type,
 			a.activity_name,
@@ -759,7 +752,7 @@ func GetAttendanceDetailListNoMeetingByUser(isMeeting int, mobile string, startS
 
 // 用户参会统计
 func GetAttendanceDetaiCount(mobile string, meetType, isMeeting int) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := ` SELECT
 				COUNT( DISTINCT a.activity_id )  as count 
 		FROM
@@ -782,7 +775,7 @@ func GetAttendanceDetaiCount(mobile string, meetType, isMeeting int) (count int,
 
 // 线下已到会列表
 func GetAttendanceOfflineListByUser(isMeeting int, mobile string, startSize, pageSize int) (item []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			a.activity_name,
 			a.chart_permission_name,
@@ -812,7 +805,7 @@ func GetAttendanceOfflineListByUser(isMeeting int, mobile string, startSize, pag
 
 // 获取用户参会记录数量
 func GetActivityMeetByUserCount(condition string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := ` SELECT
 				COUNT( DISTINCT a.activity_id )  as count 
 		FROM
@@ -831,7 +824,7 @@ func GetActivityMeetByUserCount(condition string) (count int, err error) {
 
 // 获取用户参会记录
 func GetActivityMeetByUser(condition string, startSize, pageSize int) (item []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			t.activity_type,
 			s.signup_type,
@@ -867,7 +860,7 @@ func GetActivityMeetByUser(condition string, startSize, pageSize int) (item []*U
 
 // 获取用户参会记录
 func GetActivitySpecialMeetByUser(condition string, startSize, pageSize int) (item []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 	a.activity_id,
 	a.research_theme AS activity_name,
@@ -911,28 +904,25 @@ type GetUserInteractionTableCountResp struct {
 
 // 用户互动总数统计
 func GetUserInteractionTableCount(uid int) (item *GetUserInteractionTableCountResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
-			( SELECT COUNT( 1 ) FROM cygx_article_history_record_all AS h  INNER JOIN cygx_article  as art  ON  art.article_id = h.article_id  WHERE h.mobile = u.mobile AND h.is_del = 0 OR ( h.email = u.email  AND h.email <>'' AND h.is_del = 0) ) AS history_num,
-			( SELECT COUNT( 1 ) FROM cygx_article_collect AS h WHERE h.user_id = u.user_id AND  h.article_id > 0  ) AS count_num,
-			( SELECT COUNT( 1 ) FROM cygx_chart_collect AS h INNER JOIN cygx_chart_all AS a ON h.chart_id = a.chart_id WHERE h.user_id = u.user_id  ) AS chart_num,
-			( SELECT COUNT( 1 ) FROM cygx_industry_fllow AS h WHERE h.user_id = u.user_id AND h.type = 1  ) AS industry_fllow_num,
-			( SELECT COUNT( 1 ) FROM cygx_article_department_follow AS h WHERE h.user_id = u.user_id  AND h.type = 1  ) AS department_follow_num,
-			( SELECT COUNT( 1 ) FROM cygx_search_key_word AS h WHERE h.user_id = u.user_id  ) AS key_word_num,
-			( SELECT 	COUNT( DISTINCT a.activity_id )  as count  FROM cygx_activity_signup_detail AS h INNER JOIN cygx_activity as a ON a.activity_id = h.activity_id  INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id   WHERE h.mobile = u.mobile  
+			( SELECT COUNT( 1 ) FROM cygx_article_history_record_all AS h  INNER JOIN cygx_article  as art  ON  art.article_id = h.article_id  WHERE h.user_id = ?  AND h.is_del = 0 ) AS history_num,
+			( SELECT COUNT( 1 ) FROM cygx_article_collect AS h WHERE h.user_id = ? AND  h.article_id > 0  ) AS count_num,
+			( SELECT COUNT( 1 ) FROM cygx_chart_collect AS h INNER JOIN cygx_chart_all AS a ON h.chart_id = a.chart_id WHERE h.user_id = ?  ) AS chart_num,
+			( SELECT COUNT( 1 ) FROM cygx_industry_fllow AS h WHERE h.user_id = ? AND h.type = 1  ) AS industry_fllow_num,
+			( SELECT COUNT( 1 ) FROM cygx_article_department_follow AS h WHERE h.user_id = ?  AND h.type = 1  ) AS department_follow_num,
+			( SELECT COUNT( 1 ) FROM cygx_search_key_word AS h WHERE h.user_id = ?  ) AS key_word_num,
+			( SELECT 	COUNT( DISTINCT a.activity_id )  as count  FROM cygx_activity_signup_detail AS h INNER JOIN cygx_activity as a ON a.activity_id = h.activity_id  INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id   WHERE h.user_id = ? 
 					  AND t.activity_type=1 AND h.do_fail_type = 0   ) AS on_line_num,
-			( SELECT  	COUNT( DISTINCT a.activity_id )  as count  FROM cygx_activity_signup_detail AS h INNER JOIN cygx_activity as a ON a.activity_id = h.activity_id  INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id   WHERE h.mobile = u.mobile  
+			( SELECT  	COUNT( DISTINCT a.activity_id )  as count  FROM cygx_activity_signup_detail AS h INNER JOIN cygx_activity as a ON a.activity_id = h.activity_id  INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id   WHERE h.user_id = ?
 				  AND t.activity_type = 0 AND h.do_fail_type = 0  ) AS office_num,
-			( SELECT COUNT( 1 ) FROM cygx_activity_special_meeting_detail AS h INNER JOIN cygx_activity_special AS a ON a.activity_id = h.activity_id WHERE h.mobile = u.mobile  AND a.publish_status = 1 AND a.activity_time_end < NOW()) AS trip_num,
-			( SELECT COUNT( 1 ) FROM cygx_micro_roadshow_video_history AS h  INNER JOIN cygx_micro_roadshow_video as v ON v.video_id = h.video_id WHERE  h.mobile = u.mobile  ) AS roadshow_video_num,
-			( SELECT COUNT( 1 ) FROM cygx_activity_video_history AS h  INNER JOIN cygx_activity_video as v ON v.video_id = h.video_id WHERE  h.mobile = u.mobile  ) AS activity_video_num,
-			( SELECT COUNT( 1 ) FROM cygx_activity_voice_history AS h  INNER JOIN cygx_activity_voice as v ON v.activity_id = h.activity_id WHERE  h.mobile = u.mobile  ) AS activity_voice_num,
-			( SELECT COUNT(1) FROM cygx_tag_history as a INNER JOIN cygx_tag AS b ON a.tag_id = b.tag_id WHERE a.user_id=u.user_id  ) AS tag_num
-			FROM
-			wx_user  as u
-		WHERE
-			u.user_id = ?`
-	err = o.Raw(sql, uid).QueryRow(&item)
+			( SELECT COUNT( 1 ) FROM cygx_activity_special_meeting_detail AS h INNER JOIN cygx_activity_special AS a ON a.activity_id = h.activity_id WHERE h.user_id = ?  AND a.publish_status = 1 AND a.activity_time_end < NOW()) AS trip_num,
+			( SELECT COUNT( 1 ) FROM cygx_micro_roadshow_video_history AS h  INNER JOIN cygx_micro_roadshow_video as v ON v.video_id = h.video_id WHERE  h.user_id = ?  ) AS roadshow_video_num,
+			( SELECT COUNT( 1 ) FROM cygx_activity_video_history AS h  INNER JOIN cygx_activity_video as v ON v.video_id = h.video_id WHERE  h.user_id = ?  ) AS activity_video_num,
+			( SELECT COUNT( 1 ) FROM cygx_activity_voice_history AS h  INNER JOIN cygx_activity_voice as v ON v.activity_id = h.activity_id WHERE  h.user_id = ?  ) AS activity_voice_num,
+			( SELECT COUNT(1) FROM cygx_tag_history as h INNER JOIN cygx_tag AS b ON h.tag_id = b.tag_id WHERE h.user_id = ?  ) AS tag_num
+			FROM  dual `
+	err = o.Raw(sql, uid, uid, uid, uid, uid, uid, uid, uid, uid, uid, uid, uid, uid).QueryRow(&item)
 	return
 }
 
@@ -965,7 +955,7 @@ type ArticlePvCountResp struct {
 
 // 阅读记录
 func GetArticlePvCount(mobile, email, dateTime string) (item []*ArticlePvCountResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			article_id,
 			COUNT(article_id) as pv
@@ -989,7 +979,7 @@ type ArticleIndustryNameResp struct {
 
 // 产业名称
 func GetArticleGroupyIndustryName(articleIds string) (item []*ArticleIndustryNameResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			art.article_id,
 			(
@@ -1021,7 +1011,7 @@ func GetArticleGroupyIndustryName(articleIds string) (item []*ArticleIndustryNam
 
 // 标的名称
 func GetArticleGroupySubjectName(articleIds string) (item []*ArticleIndustryNameResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			article_id,
 			subject_name 
@@ -1045,7 +1035,7 @@ type ActivityLabelCountResp struct {
 
 // 活动标签记录(我的日程)
 func GetActivitySignCount(mobile, dateTime string) (item []*ActivityLabelCountResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			label ,
 			COUNT( label ) AS pv 
@@ -1063,7 +1053,7 @@ func GetActivitySignCount(mobile, dateTime string) (item []*ActivityLabelCountRe
 
 // 活动标签记录(会议提醒)
 func GetActivityMeetingReminder(mobile, dateTime string) (item []*ActivityLabelCountResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			label ,
 			COUNT( label ) AS pv 
@@ -1087,7 +1077,7 @@ func GetCygxArticleCollectId(uid int, dateTime string) (articleIds string, err e
 		WHERE
 			user_id = ? 
 			AND create_time >= ?  `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sql, uid, dateTime).QueryRow(&articleIds)
 	return
 }

+ 125 - 127
models/cygx/cygx_user_company.go

@@ -7,54 +7,54 @@ import (
 )
 
 // 用户互动总数统计
-func GetUserInteractionTableCountByCompany(companyId int) (item *GetUserInteractionTableCountResp, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT
-			( SELECT COUNT( 1 ) FROM cygx_article_history_record_all AS h  INNER JOIN cygx_article  as art  ON  art.article_id = h.article_id  WHERE h.company_id = u.company_id AND h.is_del = 0   AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS history_num,
-			( SELECT COUNT( 1 ) FROM cygx_article_collect AS h WHERE h.company_id = u.company_id    AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS count_num,
-			( SELECT COUNT( 1 ) FROM cygx_chart_collect   AS h  INNER JOIN cygx_chart AS a ON h.chart_id = a.chart_id  WHERE h.company_id = u.company_id   AND h.create_time < date_format(now(),'%Y-%m-%d')  ) AS chart_num,
-			( SELECT COUNT( 1 ) FROM cygx_industry_fllow AS h WHERE h.company_id = u.company_id AND h.type = 1   AND h.create_time < date_format(now(),'%Y-%m-%d')  ) AS industry_fllow_num,
-			( SELECT COUNT( 1 ) FROM cygx_article_department_follow AS h WHERE h.company_id = u.company_id  AND h.type = 1   AND h.create_time < date_format(now(),'%Y-%m-%d')  ) AS department_follow_num,
-			( SELECT COUNT( 1 ) FROM cygx_search_key_word AS h WHERE h.company_id = u.company_id   AND h.create_time < date_format(now(),'%Y-%m-%d')  ) AS key_word_num,
-			( SELECT 	COUNT(1 )  as count  FROM cygx_activity_signup AS h INNER JOIN cygx_activity as a ON a.activity_id = h.activity_id  INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id  INNER JOIN wx_user as wu  ON wu.user_id = h.user_id  WHERE h.company_id = u.company_id  
-					  AND t.activity_type=1 AND h.do_fail_type = 0   AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS on_line_num,
-			( SELECT  	COUNT( 1 )  as count  FROM cygx_activity_signup AS h INNER JOIN cygx_activity as a ON a.activity_id = h.activity_id  INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id  INNER JOIN wx_user as wu  ON wu.user_id = h.user_id WHERE h.company_id = u.company_id  
-					 AND t.activity_type = 0 AND h.do_fail_type = 0 AND h.create_time < date_format(now(),'%Y-%m-%d')  ) AS office_num
-		FROM
-			company  as u
-		WHERE
-			u.company_id = ?`
-	err = o.Raw(sql, companyId).QueryRow(&item)
-	return
-}
+//func GetUserInteractionTableCountByCompany(companyId int) (item *GetUserInteractionTableCountResp, err error) {
+//	o := orm.NewOrm()
+//	sql := `SELECT
+//			( SELECT COUNT( 1 ) FROM cygx_article_history_record_all AS h  INNER JOIN cygx_article  as art  ON  art.article_id = h.article_id  WHERE h.company_id = u.company_id AND h.is_del = 0   AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS history_num,
+//			( SELECT COUNT( 1 ) FROM cygx_article_collect AS h WHERE h.company_id = u.company_id    AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS count_num,
+//			( SELECT COUNT( 1 ) FROM cygx_chart_collect   AS h  INNER JOIN cygx_chart AS a ON h.chart_id = a.chart_id  WHERE h.company_id = u.company_id   AND h.create_time < date_format(now(),'%Y-%m-%d')  ) AS chart_num,
+//			( SELECT COUNT( 1 ) FROM cygx_industry_fllow AS h WHERE h.company_id = u.company_id AND h.type = 1   AND h.create_time < date_format(now(),'%Y-%m-%d')  ) AS industry_fllow_num,
+//			( SELECT COUNT( 1 ) FROM cygx_article_department_follow AS h WHERE h.company_id = u.company_id  AND h.type = 1   AND h.create_time < date_format(now(),'%Y-%m-%d')  ) AS department_follow_num,
+//			( SELECT COUNT( 1 ) FROM cygx_search_key_word AS h WHERE h.company_id = u.company_id   AND h.create_time < date_format(now(),'%Y-%m-%d')  ) AS key_word_num,
+//			( SELECT 	COUNT(1 )  as count  FROM cygx_activity_signup AS h INNER JOIN cygx_activity as a ON a.activity_id = h.activity_id  INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id  INNER JOIN wx_user as wu  ON wu.user_id = h.user_id  WHERE h.company_id = u.company_id
+//					  AND t.activity_type=1 AND h.do_fail_type = 0   AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS on_line_num,
+//			( SELECT  	COUNT( 1 )  as count  FROM cygx_activity_signup AS h INNER JOIN cygx_activity as a ON a.activity_id = h.activity_id  INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id  INNER JOIN wx_user as wu  ON wu.user_id = h.user_id WHERE h.company_id = u.company_id
+//					 AND t.activity_type = 0 AND h.do_fail_type = 0 AND h.create_time < date_format(now(),'%Y-%m-%d')  ) AS office_num
+//		FROM
+//			company  as u
+//		WHERE
+//			u.company_id = ?`
+//	err = o.Raw(sql, companyId).QueryRow(&item)
+//	return
+//}
 
 // 获取阅读记录数量
-func GetCygxArticleHistoryCountByCompany(condition string) (count int, err error) {
-	o := orm.NewOrm()
-	sqlCount := ` SELECT COUNT( 1 ) AS count 
-FROM
-	(
-	SELECT
-		COUNT( 1 ) 
-	FROM
-		cygx_article_history_record_all AS r
-		INNER JOIN cygx_article AS art ON art.article_id = r.article_id
-		INNER JOIN company_product AS cp ON cp.company_id = r.company_id 
-		AND cp.product_id = 2
-		INNER JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
-		INNER JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
-		LEFT  JOIN cygx_report_mapping AS re ON re.category_id = art.category_id_two   WHERE   r.is_del = 0`
-	if condition != "" {
-		sqlCount += condition
-	}
-	sqlCount += `	GROUP BY r.id ) AS count `
-	err = o.Raw(sqlCount).QueryRow(&count)
-	return
-}
+//func GetCygxArticleHistoryCountByCompany(condition string) (count int, err error) {
+//	o := orm.NewOrm()
+//	sqlCount := ` SELECT COUNT( 1 ) AS count
+//FROM
+//	(
+//	SELECT
+//		COUNT( 1 )
+//	FROM
+//		cygx_article_history_record_all AS r
+//		INNER JOIN cygx_article AS art ON art.article_id = r.article_id
+//		INNER JOIN company_product AS cp ON cp.company_id = r.company_id
+//		AND cp.product_id = 2
+//		INNER JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
+//		INNER JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
+//		LEFT  JOIN cygx_report_mapping AS re ON re.category_id = art.category_id_two   WHERE   r.is_del = 0`
+//	if condition != "" {
+//		sqlCount += condition
+//	}
+//	sqlCount += `	GROUP BY r.id ) AS count `
+//	err = o.Raw(sqlCount).QueryRow(&count)
+//	return
+//}
 
 // 阅读记录列表
 func GetCygxArticleHistoryRecordByCompany(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT
 			art.title,
 			art.article_id,
@@ -86,14 +86,13 @@ func GetCygxArticleHistoryRecordByCompany(condition string, startSize, pageSize
 
 // 获取用户参会记录数量
 func GetActivityMeetByCompanyCount(condition string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := `SELECT
 				COUNT(*) AS count 
 			FROM
 				cygx_activity_signup_detail AS r
 				INNER JOIN cygx_activity AS a ON a.activity_id = r.activity_id
 				INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id
-				INNER JOIN wx_user AS u ON u.mobile = r.mobile 
 			WHERE
 				1 = 1 
 				AND r.do_fail_type = 0`
@@ -106,13 +105,13 @@ func GetActivityMeetByCompanyCount(condition string) (count int, err error) {
 
 // 获取用户参会记录
 func GetActivityMeetByCompany(condition string, startSize, pageSize int) (item []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			t.activity_type,
 			r.signup_type,
 			r.is_meeting,
-			u.mobile,
-			u.real_name,
+			r.mobile,
+			r.real_name,
 			a.activity_name,
 			a.chart_permission_name,
 			a.activity_type_name,
@@ -128,7 +127,6 @@ func GetActivityMeetByCompany(condition string, startSize, pageSize int) (item [
 			cygx_activity_signup_detail AS r
 			INNER  JOIN cygx_activity AS a ON a.activity_id = r.activity_id
 			INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id
-			INNER JOIN wx_user as u  ON u.mobile = r.mobile
 			LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
 		WHERE
 			1 = 1 
@@ -148,16 +146,16 @@ func GetActivityMeetByCompany(condition string, startSize, pageSize int) (item [
 
 // 收藏列表数量
 func GetCygxArticleCollectCountByCompany(condition string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_article_collect as r INNER JOIN cygx_article AS art ON art.article_id = r.article_id
-			INNER JOIN wx_user as u  ON u.user_id = r.user_id  WHERE   1=1 ` + condition
+		  WHERE   1=1 ` + condition
 	err = o.Raw(sqlCount).QueryRow(&count)
 	return
 }
 
 // 收藏列表
 func GetCygxArticleCollectByCompany(startSize, pageSize int, condition string) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT
 			art.title,
 			art.article_id,
@@ -188,7 +186,6 @@ func GetCygxArticleCollectByCompany(startSize, pageSize int, condition string) (
 		FROM
 			cygx_article_collect AS r
 			INNER JOIN cygx_article AS art ON art.article_id = r.article_id
-			INNER JOIN wx_user as u  ON u.user_id = r.user_id
 			LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
 			LEFT JOIN cygx_report_mapping AS re ON re.category_id = art.category_id_two
 			LEFT JOIN cygx_industrial_article_group_management AS man ON man.article_id = art.article_id 
@@ -204,27 +201,25 @@ func GetCygxArticleCollectByCompany(startSize, pageSize int, condition string) (
 
 // 关注产业数量
 func GetCygxIndustryFllowCountByCompany(condition string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_industry_fllow AS r
-			INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = r.industrial_management_id 
-			INNER JOIN wx_user as u  ON u.user_id = r.user_id  WHERE   type = 1  ` + condition
+			INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = r.industrial_management_id WHERE   type = 1  ` + condition
 	err = o.Raw(sqlCount).QueryRow(&count)
 	return
 }
 
 // 关注产业列表
 func GetCygxIndustryFllowByCompany(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			m.industry_name,
-			u.mobile,
-			u.real_name,
+			r.mobile,
+			r.real_name,
 			r.modify_time as create_time,
 			( SELECT GROUP_CONCAT( DISTINCT s.subject_name SEPARATOR '/' ) FROM cygx_industrial_subject AS s WHERE s.industrial_management_id = m.industrial_management_id ) AS subject_name_str 
 		FROM
 			cygx_industry_fllow AS r
-			LEFT  JOIN wx_user as u  ON u.mobile = r.mobile
-			LEFT  JOIN cygx_user_interaction_num as ui  ON ui.user_id = u.user_id
+			LEFT  JOIN cygx_user_interaction_num as ui  ON ui.user_id = r.user_id
 			INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = r.industrial_management_id 
 		WHERE  type = 1 ` + condition + ` ORDER BY ui.industry_fllow_num DESC, r.create_time DESC  LIMIT ?,? `
 	_, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
@@ -233,17 +228,16 @@ func GetCygxIndustryFllowByCompany(condition string, startSize, pageSize int) (i
 
 // 关注作者数量
 func GetCygArticleDepartmentFollowCountByCompany(condition string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_article_department_follow AS r
-			INNER JOIN cygx_article_department AS m ON m.department_id = r.department_id
-			INNER JOIN wx_user as u  ON u.user_id = r.user_id  WHERE    type = 1  ` + condition
+			INNER JOIN cygx_article_department AS m ON m.department_id = r.department_id WHERE    type = 1  ` + condition
 	err = o.Raw(sqlCount).QueryRow(&count)
 	return
 }
 
 // 关注作者列表
 func GetCygArticleDepartmentFollowByCompany(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			m.department_id,
 			m.nick_name,
@@ -261,7 +255,6 @@ func GetCygArticleDepartmentFollowByCompany(condition string, startSize, pageSiz
 			cygx_article_department_follow AS r
 			INNER JOIN cygx_article_department AS m ON m.department_id = r.department_id
 			INNER JOIN cygx_article AS a ON a.department_id = m.department_id
-			INNER JOIN wx_user as u  ON u.user_id = r.user_id
 			LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
 			LEFT JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id
 			LEFT JOIN cygx_industrial_management AS i ON i.industrial_management_id = mg.industrial_management_id
@@ -273,7 +266,7 @@ func GetCygArticleDepartmentFollowByCompany(condition string, startSize, pageSiz
 
 // 用户搜索关键词统计
 func GetCygxSearchKeyWordCountBuCompany(condition string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_search_key_word  as r  WHERE  1= 1  ` + condition
 	err = o.Raw(sqlCount).QueryRow(&count)
 	return
@@ -281,7 +274,7 @@ func GetCygxSearchKeyWordCountBuCompany(condition string) (count int, err error)
 
 // 用户搜索关键词列表
 func GetCygxSearchKeyWordByCompany(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			r.key_word,
 			r.create_time,
@@ -298,7 +291,7 @@ func GetCygxSearchKeyWordByCompany(condition string, startSize, pageSize int) (i
 
 // 用户专项产业调研统计
 func GetCygxActivitySpecialTripCountByCompany(condition string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := ` SELECT
 			COUNT( 1 ) 
 		FROM
@@ -313,7 +306,7 @@ func GetCygxActivitySpecialTripCountByCompany(condition string) (count int, err
 
 // 用户专项产业调研列表
 func CygxActivitySpecialTripByCompany(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			a.research_theme AS activity_name,
 			a.chart_permission_name,
@@ -336,7 +329,7 @@ func CygxActivitySpecialTripByCompany(condition string, startSize, pageSize int)
 
 // 用户音视频浏览统计
 func GetCygxRoadshowCountByCompany(condition string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := `SELECT
 	COUNT( 1 ) total 
 FROM
@@ -365,7 +358,7 @@ FROM
 
 // 用户音视频浏览列表
 func GetCygxRoadshowByCompany(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			v.video_name AS media_title,
 			r.create_time,
@@ -409,21 +402,20 @@ func GetCygxRoadshowByCompany(condition string, startSize, pageSize int) (items
 
 // 用户音视频浏览列表
 func GetCygxRoadshowByCompanyList(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			v.video_name AS media_title,
 			r.create_time,
 			r.real_name,
 			r.mobile,
 			r.company_name,
-			cp.seller_name,
+			r.company_id,
 			ci.roadshow_num,
 			ui.roadshow_num AS ui_roadshow_num,
 			"逻辑解析" AS file_type 
 		FROM
 			cygx_micro_roadshow_video_history AS r
 			INNER JOIN cygx_micro_roadshow_video AS v ON r.video_id = v.video_id
-			LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
 			LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
 			LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id 
 		WHERE 1=1 ` + condition + `  UNION ALL
@@ -433,14 +425,13 @@ func GetCygxRoadshowByCompanyList(condition string, startSize, pageSize int) (it
 			r.real_name,
 			r.mobile,
 			r.company_name,
-			cp.seller_name,
+			r.company_id,
 			ci.roadshow_num,
 			ui.roadshow_num AS ui_roadshow_num,
 			"路演回放" AS file_type 
 		FROM
 			cygx_activity_video_history AS r
 			INNER JOIN cygx_activity_video AS v ON r.video_id = v.video_id
-			LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
 			LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
 			LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id 
 		WHERE 1=1 ` + condition + `   UNION ALL
@@ -450,14 +441,13 @@ func GetCygxRoadshowByCompanyList(condition string, startSize, pageSize int) (it
 			r.real_name,
 			r.mobile,
 			r.company_name,
-			cp.seller_name,
+			r.company_id,
 			ci.roadshow_num,
 			ui.roadshow_num AS ui_roadshow_num,
 			"路演回放" AS file_type 
 		FROM
 			cygx_activity_voice_history AS r
 			INNER JOIN cygx_activity_voice AS v ON r.activity_id = v.activity_id
-			LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
 			LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
 			LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id 
 		WHERE 1=1 ` + condition + `  
@@ -468,6 +458,26 @@ func GetCygxRoadshowByCompanyList(condition string, startSize, pageSize int) (it
 
 // 根据时间获取机构互动总数统计
 func GetCompanyInteractionTableCountBytime(companyId int, startDate, endDate string) (item *GetUserInteractionTableCountResp, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT
+			( SELECT COUNT( 1 ) FROM cygx_article_history_record_all AS h  INNER JOIN cygx_article  as art  ON  art.article_id = h.article_id  WHERE h.company_id = ? AND h.is_del = 0  	AND create_time BETWEEN '` + startDate + `'AND '` + endDate + `'   AND h.create_time < date_format(now(),'%Y-%m-%d')  ) AS history_num,
+			( SELECT COUNT( 1 ) FROM cygx_article_collect AS h WHERE h.company_id = ?  AND create_time BETWEEN '` + startDate + `'AND '` + endDate + `'  AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS count_num,
+			( SELECT COUNT( 1 ) FROM cygx_chart_collect AS h WHERE h.company_id = ?  AND create_time BETWEEN '` + startDate + `'AND '` + endDate + `'  AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS chart_num,
+			( SELECT COUNT( 1 ) FROM cygx_industry_fllow AS h WHERE h.company_id = ? AND h.type = 1  AND create_time BETWEEN '` + startDate + `'AND '` + endDate + `'   AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS industry_fllow_num,
+			( SELECT COUNT( 1 ) FROM cygx_article_department_follow AS h WHERE h.company_id = ?  AND h.type = 1 AND create_time BETWEEN '` + startDate + `'AND '` + endDate + `'   AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS department_follow_num,
+			( SELECT COUNT( 1 ) FROM cygx_search_key_word AS h WHERE h.company_id = ? AND create_time BETWEEN '` + startDate + `'AND '` + endDate + `'  AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS key_word_num,
+			( SELECT 	COUNT( DISTINCT a.activity_id )  as count  FROM cygx_activity_signup AS h INNER JOIN cygx_activity as a ON a.activity_id = h.activity_id  INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id   WHERE h.company_id = ? 
+					 AND t.activity_type=1 AND h.do_fail_type = 0 AND a.activity_time BETWEEN '` + startDate + `'AND '` + endDate + `'   AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS on_line_num,
+			( SELECT  	COUNT( DISTINCT a.activity_id )  as count  FROM cygx_activity_signup AS h INNER JOIN cygx_activity as a ON a.activity_id = h.activity_id  INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id   WHERE h.company_id = ?  
+					 AND t.activity_type = 0 AND h.do_fail_type = 0  AND a.activity_time BETWEEN '` + startDate + `'AND '` + endDate + `'  AND h.create_time < date_format(now(),'%Y-%m-%d') ) AS office_num
+		FROM
+			dual `
+	err = o.Raw(sql, companyId, companyId, companyId, companyId, companyId, companyId, companyId, companyId).QueryRow(&item)
+	return
+}
+
+// 根据时间获取机构互动总数统计
+func GetCompanyInteractionTableCountBytimeold(companyId int, startDate, endDate string) (item *GetUserInteractionTableCountResp, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT
 			( SELECT COUNT( 1 ) FROM cygx_article_history_record_all AS h  INNER JOIN cygx_article  as art  ON  art.article_id = h.article_id  WHERE h.company_id = u.company_id AND h.is_del = 0  	AND create_time BETWEEN '` + startDate + `'AND '` + endDate + `'   AND h.create_time < date_format(now(),'%Y-%m-%d')  ) AS history_num,
@@ -490,7 +500,7 @@ func GetCompanyInteractionTableCountBytime(companyId int, startDate, endDate str
 
 // 机构阅读记录列表
 func GetCygxArticleHistoryRecordByCompanyList(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT
 			art.title,
 			art.article_id,
@@ -503,7 +513,7 @@ func GetCygxArticleHistoryRecordByCompanyList(condition string, startSize, pageS
 			r.mobile,
 			r.user_id,
 			r.company_name,
-			cp.seller_name,
+			r.company_id,
 			r.real_name,
 			r.stop_time,
 			r.source as source_platform,
@@ -511,7 +521,6 @@ func GetCygxArticleHistoryRecordByCompanyList(condition string, startSize, pageS
 		FROM
 			cygx_article_history_record_all AS r
 			INNER JOIN cygx_article AS art ON art.article_id = r.article_id
-			INNER JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
 			INNER JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
 			INNER JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
 			LEFT  JOIN cygx_report_mapping AS re ON re.category_id = art.category_id_two 
@@ -526,13 +535,13 @@ func GetCygxArticleHistoryRecordByCompanyList(condition string, startSize, pageS
 
 // 获取机构参会记录
 func GetActivityMeetByCompanyList(condition string, startSize, pageSize int) (item []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			t.activity_type,
 			r.signup_type,
 			r.is_meeting,
-			u.mobile,
-			u.real_name,
+			r.mobile,
+			r.real_name,
 			a.activity_name,
 			a.chart_permission_name,
 			a.activity_type_name,
@@ -544,15 +553,13 @@ func GetActivityMeetByCompanyList(condition string, startSize, pageSize int) (it
 			r.meeting_authentication,
 			r.meeting_status_str,
 			r.company_name,
-			cp.seller_name,
+			r.company_id,
 			r.real_name,
 			r.duration
 		FROM
 			cygx_activity_signup_detail AS r
 			INNER  JOIN cygx_activity AS a ON a.activity_id = r.activity_id
 			INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id
-			INNER JOIN wx_user as u  ON u.mobile = r.mobile
-			LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
 			LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
 			LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
 		WHERE
@@ -574,7 +581,7 @@ func GetActivityMeetByCompanyList(condition string, startSize, pageSize int) (it
 
 // 机构收藏列表
 func GetCygxArticleCollectByCompanyList(startSize, pageSize int, condition string) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT
 			art.title,
 			art.article_id,
@@ -587,7 +594,7 @@ func GetCygxArticleCollectByCompanyList(startSize, pageSize int, condition strin
 			r.real_name,
 			re.match_type_name,
 			r.company_name,
-			cp.seller_name,
+			r.company_id,
 			(
 			SELECT
 				GROUP_CONCAT( DISTINCT s.subject_name SEPARATOR '/' ) 
@@ -607,8 +614,6 @@ func GetCygxArticleCollectByCompanyList(startSize, pageSize int, condition strin
 		FROM
 			cygx_article_collect AS r
 			INNER JOIN cygx_article AS art ON art.article_id = r.article_id
-			INNER JOIN wx_user as u  ON u.user_id = r.user_id
-			LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
 			LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
 			LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
 			LEFT JOIN cygx_report_mapping AS re ON re.category_id = art.category_id_two
@@ -625,22 +630,21 @@ func GetCygxArticleCollectByCompanyList(startSize, pageSize int, condition strin
 
 // 关注产业列表
 func GetCygxIndustryFllowByCompanyList(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			m.industry_name,
-			u.mobile,
-			u.real_name,
+			r.mobile,
+			r.real_name,
 			r.modify_time as create_time,
-			cp.company_name,
-			cp.seller_name,
+			r.company_name,
+			r.company_id,
+
 			( SELECT GROUP_CONCAT( DISTINCT s.subject_name SEPARATOR '/' ) FROM cygx_industrial_subject AS s WHERE s.industrial_management_id = m.industrial_management_id ) AS subject_name_str 
 		FROM
 			cygx_industry_fllow AS r
-			INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = r.industrial_management_id 
-			INNER JOIN wx_user as u  ON u.user_id = r.user_id
-			LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
+			INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = r.industrial_management_id
 			LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
-			LEFT  JOIN cygx_user_interaction_num as ui  ON ui.user_id = u.user_id
+			LEFT  JOIN cygx_user_interaction_num as ui  ON ui.user_id = r.user_id
 			
 		WHERE  type = 1 ` + condition + ` ORDER BY ci.industry_fllow_num DESC,ui.industry_fllow_num DESC, r.create_time DESC  LIMIT ?,? `
 	_, err = o.Raw(sql, startSize, pageSize).QueryRows(&items)
@@ -649,15 +653,15 @@ func GetCygxIndustryFllowByCompanyList(condition string, startSize, pageSize int
 
 // 关注作者机构列表
 func GetCygArticleDepartmentFollowByCompanyList(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			m.department_id,
 			m.nick_name,
 			r.modify_time as  create_time,
 			r.mobile,
 			r.real_name,
-			cp.company_name,
-			cp.seller_name,
+			r.company_name,
+			r.company_id,
 			m.department_id,
 			i.industry_name,
 			a.title,
@@ -669,9 +673,7 @@ func GetCygArticleDepartmentFollowByCompanyList(condition string, startSize, pag
 			cygx_article_department_follow AS r
 			INNER JOIN cygx_article_department AS m ON m.department_id = r.department_id
 			INNER JOIN cygx_article AS a ON a.department_id = m.department_id
-			INNER JOIN wx_user as u  ON u.user_id = r.user_id 
 			LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
-			LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
 			LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
 			LEFT JOIN cygx_industrial_article_group_management AS mg ON mg.article_id = a.article_id
 			LEFT JOIN cygx_industrial_management AS i ON i.industrial_management_id = mg.industrial_management_id
@@ -683,17 +685,15 @@ func GetCygArticleDepartmentFollowByCompanyList(condition string, startSize, pag
 
 // 用户搜索关键词列表
 func GetCygxSearchKeyWordByCompanyList(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			r.key_word,r.create_time,
 			r.mobile,
-			r.source,
-			cp.company_name,
-			cp.seller_name,
+			r.company_name,
+			r.company_id,
 			r.real_name
 		FROM
 			cygx_search_key_word as r
-			LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
 			LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
 			LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
 			WHERE 1= 1 ` + condition + `
@@ -704,7 +704,7 @@ func GetCygxSearchKeyWordByCompanyList(condition string, startSize, pageSize int
 
 // 用户搜索关键词列表
 func GetCygxActivitySpecialTripByCompanyList(condition string, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			a.research_theme AS activity_name,
 			a.chart_permission_name,
@@ -715,13 +715,12 @@ func GetCygxActivitySpecialTripByCompanyList(condition string, startSize, pageSi
 			r.real_name,
 			r.is_meeting,
 			r.activity_id,
-			cp.company_name,
-			cp.seller_name,
+			r.company_name,
+			r.seller_name,
 			r.real_name
 		FROM
 			cygx_activity_special_trip as r
 			INNER JOIN cygx_activity_special AS a ON a.activity_id = r.activity_id
-			LEFT JOIN company_product AS cp ON cp.company_id = r.company_id AND cp.product_id = 2
 			LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
 			LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id
 			WHERE 1= 1 ` + condition + `
@@ -732,7 +731,7 @@ func GetCygxActivitySpecialTripByCompanyList(condition string, startSize, pageSi
 
 // 通过纪要ID获取活动详情
 func GetTableCompanyList() (item *GetUserInteractionTableCountResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 	SUM( article_history_num ) AS history_num,
 	SUM( article_count_num ) AS count_num,
@@ -750,6 +749,7 @@ FROM
 
 // 获取用户参会记录根据销售分组
 func GetActivityMeetBySeller(condition string) (list []*company.CompanyReportRecordGroup, err error) {
+	return
 	o := orm.NewOrm()
 	sqlCount := `				SELECT
 				p.seller_id as admin_id,count(DISTINCT(r.company_id)) num,GROUP_CONCAT(DISTINCT r.company_id SEPARATOR ',') AS company_ids
@@ -774,6 +774,7 @@ func GetActivityMeetBySeller(condition string) (list []*company.CompanyReportRec
 
 // 收藏列表数量根据销售分组
 func GetCygxArticleCollectCountBySeller(condition string) (list []*company.CompanyReportRecordGroup, err error) {
+	return // 没有使用了
 	o := orm.NewOrm()
 	sqlCount := ` SELECT
 	p.seller_id as admin_id,count(DISTINCT(r.company_id)) num,GROUP_CONCAT(DISTINCT r.company_id SEPARATOR ',') AS company_ids
@@ -816,6 +817,7 @@ WHERE
 
 // 关注作者数量根据销售分组
 func GetCygArticleDepartmentFollowCountBySeller(condition string) (list []*company.CompanyReportRecordGroup, err error) {
+	return // 没有使用了
 	o := orm.NewOrm()
 	sqlCount := ` SELECT
 	p.seller_id AS admin_id,
@@ -862,14 +864,13 @@ type CompanyAndCount struct {
 
 // 获取用户参会记录数量根据公司分组
 func GetActivityMeetGroupByCompany(condition string) (list []*CompanyAndCount, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := `	SELECT
 	r.company_id,COUNT(*) AS count  
 FROM
 	cygx_activity_signup AS r
 	INNER JOIN cygx_activity AS a ON a.activity_id = r.activity_id
 	INNER JOIN cygx_activity_type AS t ON t.activity_type_id = a.activity_type_id
-	INNER JOIN wx_user AS u ON u.user_id = r.user_id 
 WHERE
 	1 = 1 
 	AND r.do_fail_type = 0 `
@@ -883,14 +884,13 @@ WHERE
 
 // 收藏列表数量根据公司分组
 func GetCygxArticleCollectCountGroupByCompany(condition string) (list []*CompanyAndCount, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := `	SELECT
 	r.company_id,
 	COUNT(*) AS count 
 FROM
 	cygx_article_collect AS r
 	INNER JOIN cygx_article AS art ON art.article_id = r.article_id
-	INNER JOIN wx_user AS u ON u.user_id = r.user_id 
 WHERE
 	1 = 1 `
 	if condition != "" {
@@ -903,14 +903,13 @@ WHERE
 
 // 关注产业数量根据公司分组
 func GetCygxIndustryFllowCountGroupByCompany(condition string) (list []*CompanyAndCount, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := `		SELECT
 	r.company_id,
 	COUNT(*) AS count 
 FROM
 	cygx_industry_fllow AS r
 	INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = r.industrial_management_id
-	INNER JOIN wx_user AS u ON u.user_id = r.user_id 
 WHERE
 	type = 1 `
 	if condition != "" {
@@ -923,14 +922,13 @@ WHERE
 
 // 关注作者数量根据公司分组
 func GetCygArticleDepartmentFollowCountGroupByCompany(condition string) (list []*CompanyAndCount, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := `	SELECT
 	r.company_id,
 	COUNT(*) AS count 
 FROM
 	cygx_article_department_follow AS r
 	INNER JOIN cygx_article_department AS m ON m.department_id = r.department_id
-	INNER JOIN wx_user AS u ON u.user_id = r.user_id 
 WHERE
 	type = 1 `
 	if condition != "" {
@@ -943,7 +941,7 @@ WHERE
 
 // 用户搜索关键词统计
 func GetCygxSearchKeyWordCountGroupByCompany(condition string) (list []*CompanyAndCount, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := ` SELECT
 	r.company_id,
 	COUNT(*) AS count 
@@ -960,7 +958,7 @@ WHERE
 }
 
 func GetChartCountGroupByCompany(condition string) (list []*CompanyAndCount, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := ` SELECT
 	r.company_id,
 	COUNT(*) AS count 
@@ -996,7 +994,7 @@ func GetCompanyCountGroupBySeller(condition string) (list []*company.CompanyRepo
 
 // 获取文章阅读记录根据公司分组
 func GetArticleHistoryGroupByCompany(condition string) (list []*CompanyAndCount, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := `	SELECT
 	r.company_id,COUNT(*) AS count  
 FROM

+ 283 - 94
models/cygx/cygx_user_record.go

@@ -2,6 +2,7 @@ package cygx
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/utils"
 	"time"
 )
 
@@ -21,42 +22,69 @@ type CygxUserRecord struct {
 type OpenIdList struct {
 	OpenId    string
 	UserId    int
-	CompanyId int `description:"公司ID"`
+	CompanyId int    `description:"公司ID"`
+	Mobile    string `description:"手机号"`
+}
+
+type OpenIdMobileList struct {
+	OpenId string
+	UserId int
+	Mobile string `description:"手机号"`
 }
 
 func GetCygxUserRecord() (items []*CygxUserRecord, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT union_id,open_id FROM cygx_user_record  `
-	_, err = orm.NewOrm().Raw(sql).QueryRows(&items)
+	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
 
 // 获取所有有权限的用户的opid
 func GetCygxUserRecordPower(chartPermissionIds string) (items []*OpenIdList, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT
-			cr.open_id,
-			u.user_id,
-			u.company_id,
-			u.real_name,
-			u.mobile 
-		FROM
-			company_report_permission AS p
-			INNER JOIN wx_user AS u ON u.company_id = p.company_id
-			INNER JOIN user_record AS r ON r.user_id = u.user_id
-			INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id 
-		WHERE
-			p.chart_permission_id IN (` + chartPermissionIds + `)
-			AND r.create_platform = 4 
-			AND p.STATUS IN ('正式','试用','永续')   GROUP BY cr.open_id `
-	_, err = o.Raw(sql).QueryRows(&items)
+	//o := orm.NewOrm()
+	//sql := `SELECT
+	//		cr.open_id,
+	//		u.user_id,
+	//		u.company_id,
+	//		u.real_name,
+	//		u.mobile
+	//	FROM
+	//		company_report_permission AS p
+	//		INNER JOIN wx_user AS u ON u.company_id = p.company_id
+	//		INNER JOIN user_record AS r ON r.user_id = u.user_id
+	//		INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
+	//	WHERE
+	//		p.chart_permission_id IN (` + chartPermissionIds + `)
+	//		AND r.create_platform = 4
+	//		AND p.STATUS IN ('正式','试用','永续')   GROUP BY cr.open_id `
+	//_, err = o.Raw(sql).QueryRows(&items)
+
+	listMobile, err := GetCygxUserRecordPowerMobileList(chartPermissionIds)
+	if err != nil {
+		return
+	}
+	var mobileArr []string
+	for _, v := range listMobile {
+		if v.Mobile != "" {
+			mobileArr = append(mobileArr, v.Mobile)
+		}
+	}
+	mobileLen := len(mobileArr)
+	if mobileLen == 0 {
+		return
+	}
+	openIdList, err := GetUserRecordListByMobileArr(mobileArr)
+	if err != nil {
+		return
+	}
+	items = openIdList
 	return
 }
 
 // 获取所有有权限的用户的opid
-func GetCygxUserRecordPowerOpenid(condition string, pars []interface{}) (items []*OpenIdList, err error) {
+func GetCygxUserRecordPowerMobileList(chartPermissionIds string) (items []*OpenIdMobileList, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT
-			cr.open_id,
 			u.user_id,
 			u.company_id,
 			u.real_name,
@@ -65,28 +93,26 @@ func GetCygxUserRecordPowerOpenid(condition string, pars []interface{}) (items [
 			company_report_permission AS p
 			INNER JOIN wx_user AS u ON u.company_id = p.company_id
 			INNER JOIN user_record AS r ON r.user_id = u.user_id
-			INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id 
 		WHERE
- 			1 =1
-			AND r.create_platform = 4  ` + condition + ` GROUP BY cr.open_id `
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+			p.chart_permission_id IN (` + chartPermissionIds + `)
+			AND r.create_platform = 4 
+			AND p.STATUS IN ('正式','试用','永续')   GROUP BY u.user_id `
+	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
 
 // 获取关注这个文章对应产业的用户的 openid
 func GetCygxUserFllowOpenid(articleId int) (items []*OpenIdList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			cr.open_id,
-			f.user_id 
+			cr.cygx_user_id  as user_id 
 		FROM
 			cygx_xzs_choose_send AS s
 			INNER JOIN cygx_industry_fllow AS f ON f.user_id = s.user_id
-			INNER JOIN user_record AS r ON r.user_id = f.user_id
-			INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id 
+			INNER JOIN cygx_user_record AS cr ON cr.cygx_user_id = s.user_id 
 			INNER JOIN cygx_industrial_article_group_management as mg  ON mg.industrial_management_id = f.industrial_management_id
-		WHERE
-			r.create_platform = 4 
+		WHERE 1=1 
 			AND mg.article_id  = ?`
 	_, err = o.Raw(sql, articleId).QueryRows(&items)
 	return
@@ -94,17 +120,16 @@ func GetCygxUserFllowOpenid(articleId int) (items []*OpenIdList, err error) {
 
 // 获取关注这个产业的用户的 openid
 func GetCygxUserindustryFllowOpenid(industrialId int) (items []*OpenIdList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			cr.open_id,
-			f.user_id 
+			cr.cygx_user_id  as user_id 
 		FROM
 			cygx_xzs_choose_send AS s
 			INNER JOIN cygx_industry_fllow AS f ON f.user_id = s.user_id
-			INNER JOIN user_record AS r ON r.user_id = f.user_id
-			INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
+			INNER JOIN cygx_user_record AS cr ON cr.cygx_user_id = s.user_id 
 		WHERE
-			r.create_platform = 4 
+			 1=1  
 			AND f.industrial_management_id  = ?`
 	_, err = o.Raw(sql, industrialId).QueryRows(&items)
 	return
@@ -112,17 +137,16 @@ func GetCygxUserindustryFllowOpenid(industrialId int) (items []*OpenIdList, err
 
 // 获取关注这个文章对应作者的用户的 openid
 func GetCygxUserFllowDepartmentOpenid(articleId int) (items []*OpenIdList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			cr.open_id,
-			f.user_id 
+			cr.cygx_user_id  as user_id 
 		FROM
 			cygx_article_department_follow AS f
-			INNER JOIN user_record AS r ON r.user_id = f.user_id
-			INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
+			INNER JOIN cygx_user_record AS cr ON cr.cygx_user_id = f.user_id 
 			INNER JOIN cygx_article AS a ON a.department_id = f.department_id 
 		WHERE
-			r.create_platform = 4 
+			 1=1   
 			AND a.article_id = ?`
 	_, err = o.Raw(sql, articleId).QueryRows(&items)
 	return
@@ -130,16 +154,15 @@ func GetCygxUserFllowDepartmentOpenid(articleId int) (items []*OpenIdList, err e
 
 // 获取拒绝接收推送的的用户的 openid
 func GetCygxUserRefusetOpenid() (items []*OpenIdList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			cr.open_id,
-			s.user_id
+			cr.cygx_user_id  as user_id 
 			FROM
 			cygx_xzs_choose_send AS s
-			INNER JOIN user_record AS r ON r.user_id = s.user_id
-			INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
+			INNER JOIN cygx_user_record AS cr ON cr.cygx_user_id = s.user_id 
 			WHERE
-			r.create_platform = 4
+			1=1
 			AND s.is_refuse = 1`
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
@@ -147,20 +170,19 @@ func GetCygxUserRefusetOpenid() (items []*OpenIdList, err error) {
 
 // 获取选择策略推送的用户的openid openid
 func GetCygxUserFllowCeLueOpenid(categoryId int) (items []*OpenIdList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			cr.open_id,
-			f.user_id 
+			cr.cygx_user_id AS user_id 
 		FROM
 			cygx_xzs_choose_send AS s
 			INNER JOIN cygx_xzs_choose_category AS f ON f.user_id = s.user_id
-			INNER JOIN user_record AS r ON r.user_id = f.user_id
-			INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id 
+			INNER JOIN cygx_user_record AS cr ON cr.cygx_user_id = s.user_id 
 		WHERE
-			r.create_platform = 4
-			AND s.is_refuse = 0
-			AND s.is_subjective = 1
-			AND s.is_objective = 1
+			1 = 1 
+			AND s.is_refuse = 0 
+			AND s.is_subjective = 1 
+			AND s.is_objective = 1 
 			AND f.category_id = ?`
 	_, err = o.Raw(sql, categoryId).QueryRows(&items)
 	return
@@ -168,52 +190,92 @@ func GetCygxUserFllowCeLueOpenid(categoryId int) (items []*OpenIdList, err error
 
 // 获取关注这个活动对应产业的用户的 openid
 func GetCygxActiviyUserFllowOpenid(activityId int) (items []*OpenIdList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
-			cr.open_id,
-			f.user_id 
+				cr.open_id,
+				cr.cygx_user_id AS user_id  
 		FROM
 			cygx_xzs_choose_send AS s
 			INNER JOIN cygx_industry_fllow AS f ON f.user_id = s.user_id
-			INNER JOIN user_record AS r ON r.user_id = f.user_id
-			INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
+			INNER JOIN cygx_user_record AS cr  ON cr.cygx_user_id = s.user_id 
 			INNER JOIN cygx_industrial_activity_group_management AS mg ON mg.industrial_management_id = f.industrial_management_id 
 		WHERE
-			r.create_platform = 4 
-			AND mg.activity_id = ?`
+			1=1 
+			AND mg.activity_id = ?  AND mg.source = 1 `
 	_, err = o.Raw(sql, activityId).QueryRows(&items)
 	return
 }
 
-// 根据销售规模,获取所有有权限的用户的opid
-func GetCygxUserRecordPowerByScale(chartPermissionIds, scale string) (items []*OpenIdList, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT
-			cr.open_id,
-			u.user_id,
-			u.company_id,
-			u.real_name,
-			u.mobile 
-		FROM
-			company_report_permission AS p
-			INNER JOIN wx_user AS u ON u.company_id = p.company_id
-			INNER JOIN user_record AS r ON r.user_id = u.user_id
-			INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id 
-			INNER JOIN company_product AS cp ON cp.company_id = p.company_id
-		WHERE
-			p.chart_permission_id IN (` + chartPermissionIds + `)
-			AND cp.scale IN (` + scale + `)
-			AND r.create_platform = 4 
-			AND p.STATUS IN ('正式','试用','永续')   GROUP BY  u.company_id `
-	_, err = o.Raw(sql).QueryRows(&items)
-	return
-}
+//// 根据销售规模,获取所有有权限的用户的opid
+//func GetCygxUserRecordPowerByScale(chartPermissionIds, scale string) (items []*OpenIdList, err error) {
+//	o := orm.NewOrm()
+//	sql := `SELECT
+//			cr.open_id,
+//			u.user_id,
+//			u.company_id,
+//			u.real_name,
+//			u.mobile
+//		FROM
+//			company_report_permission AS p
+//			INNER JOIN wx_user AS u ON u.company_id = p.company_id
+//			INNER JOIN user_record AS r ON r.user_id = u.user_id
+//			INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
+//			INNER JOIN company_product AS cp ON cp.company_id = p.company_id
+//		WHERE
+//			p.chart_permission_id IN (` + chartPermissionIds + `)
+//			AND cp.scale IN (` + scale + `)
+//			AND r.create_platform = 4
+//			AND p.STATUS IN ('正式','试用','永续')   GROUP BY  u.company_id `
+//	_, err = o.Raw(sql).QueryRows(&items)
+//	return
+//}
 
 // GetCygxUserRecordPowerByActivitySet 根据活动设置,获取所有有权限的用户的opid
 func GetCygxUserRecordPowerByActivitySet(chartPermissionIds, condition string) (items []*OpenIdList, err error) {
+	//o := orm.NewOrm()
+	//sql := `SELECT
+	//		cr.open_id,
+	//		u.user_id,
+	//		u.company_id,
+	//		u.real_name,
+	//		u.mobile
+	//	FROM
+	//		company_report_permission AS p
+	//		INNER JOIN wx_user AS u ON u.company_id = p.company_id
+	//		INNER JOIN user_record AS r ON r.user_id = u.user_id
+	//		INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id
+	//	WHERE
+	//		p.chart_permission_id IN (` + chartPermissionIds + `) ` + condition + ` AND r.create_platform = 4
+	//		AND p.STATUS IN ('正式','试用','永续')   GROUP BY cr.open_id `
+	//_, err = o.Raw(sql).QueryRows(&items)
+
+	listMobile, err := GetCygxUserRecordPowerByActivitySetListMobile(chartPermissionIds, condition)
+	if err != nil {
+		return
+	}
+	var mobileArr []string
+	for _, v := range listMobile {
+		if v.Mobile != "" {
+			mobileArr = append(mobileArr, v.Mobile)
+		}
+	}
+	mobileLen := len(mobileArr)
+	if mobileLen == 0 {
+		return
+	}
+	openIdList, err := GetUserRecordListByMobileArr(mobileArr)
+	if err != nil {
+		return
+	}
+	items = openIdList
+
+	return
+}
+
+// GetCygxUserRecordPowerByActivitySetListMobile 根据活动设置,获取所有有权限的用户的手机号
+func GetCygxUserRecordPowerByActivitySetListMobile(chartPermissionIds, condition string) (items []*OpenIdMobileList, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT
-			cr.open_id,
 			u.user_id,
 			u.company_id,
 			u.real_name,
@@ -222,29 +284,57 @@ func GetCygxUserRecordPowerByActivitySet(chartPermissionIds, condition string) (
 			company_report_permission AS p
 			INNER JOIN wx_user AS u ON u.company_id = p.company_id
 			INNER JOIN user_record AS r ON r.user_id = u.user_id
-			INNER JOIN cygx_user_record AS cr ON cr.union_id = r.union_id 
 		WHERE
-			p.chart_permission_id IN (` + chartPermissionIds + `) ` + condition + ` AND r.create_platform = 4 
-			AND p.STATUS IN ('正式','试用','永续')   GROUP BY cr.open_id `
+			p.chart_permission_id IN (` + chartPermissionIds + `) ` + condition + ` 
+			AND p.STATUS IN ('正式','试用','永续')   GROUP BY u.user_id `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
 
 // 获取关注了查研观向小助手公众号的所有公司ID
 func GetCygxUserRecordCompany() (items []*OpenIdList, err error) {
+	listUser, err := GetCygxUserRecordCompanyUserId()
+	if err != nil {
+		return
+	}
+	var userIds []int
+	for _, v := range listUser {
+		userIds = append(userIds, v.UserId)
+	}
+	lenarr := len(userIds)
+	if lenarr == 0 {
+		return
+	}
+
+	var condition string
+	var pars []interface{}
+	condition = ` AND w.user_id  IN (` + utils.GetOrmInReplace(lenarr) + `)`
+	pars = append(pars, userIds)
+
 	o := orm.NewOrm()
 	sql := `SELECT
 			w.company_id 
 		FROM
-			cygx_user_record AS u
-			INNER JOIN user_record AS r ON r.union_id = u.union_id
-			INNER JOIN wx_user AS w ON w.user_id = r.user_id 
+			wx_user AS w
+		WHERE
+			1 = 1` + condition + `GROUP BY	 w.company_id `
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+// 获取关注了查研观向小助手公众号的所有用户ID
+func GetCygxUserRecordCompanyUserId() (items []*OpenIdList, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT
+			u.open_id,
+			u.cygx_user_id AS user_id 
+		FROM
+			cygx_user_record AS u 
 		WHERE
 			1 = 1 
-			AND r.create_platform = 4 
-			AND w.company_id != 1 
+			AND subscribe = 1 
 		GROUP BY
-			w.company_id `
+			u.cygx_user_id `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
@@ -276,3 +366,102 @@ func GetCompanyReportPermissionItem(condition string, pars []interface{}) (items
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
+
+// 根据手机号获取用户的openid
+func GetUserRecordListByMobileArr(bindAccount []string) (items []*OpenIdList, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	lenarr := len(bindAccount)
+	if lenarr == 0 {
+		return
+	}
+	var condition string
+	var pars []interface{}
+	condition = ` AND u.cygx_bind_account IN (` + utils.GetOrmInReplace(lenarr) + `)`
+	pars = append(pars, bindAccount)
+	sql := `SELECT
+			u.open_id,
+			u.cygx_user_id AS user_id 
+		FROM
+			cygx_user_record AS u 
+		WHERE
+			1 = 1  ` + condition
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+// 获取单个用户openid
+func GetUserRecordOpenidByMobile(bindAccount string) (item *OpenIdList, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	var sql string
+	sql = `SELECT cr.open_id,cr.cygx_user_id as  user_id
+			FROM cygx_user_record AS cr 
+			WHERE cr.cygx_bind_account = ?`
+	err = o.Raw(sql, bindAccount).QueryRow(&item)
+	return
+}
+
+// 获取预约活动的用户的openID
+func GetActivityOpenIdList(activityId int) (items []*OpenIdList, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT DISTINCT cr.open_id,cr.cygx_user_id as  user_id
+			FROM
+			cygx_my_schedule AS m
+			INNER JOIN cygx_user_record AS cr ON cr.cygx_bind_account = m.mobile 
+			WHERE m.activity_id = ?  `
+	_, err = o.Raw(sql, activityId).QueryRows(&items)
+	return
+}
+
+// 获取预约活动的用户的openID
+func GetActivitySpecialOpenIdList() (items []*OpenIdList, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT DISTINCT cr.open_id,cr.cygx_user_id as  user_id
+			FROM
+			cygx_user_follow_special AS m
+			INNER JOIN cygx_user_record AS cr ON cr.cygx_bind_account = m.mobile  `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 获取关注作者的用户的openID
+func GetFollowDepartmentOpenIdList(departmentId int) (items []*OpenIdList, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT  DISTINCT cr.open_id,cr.cygx_user_id as  user_id
+			FROM
+				cygx_article_department_follow AS f
+				INNER JOIN cygx_user_record AS cr  ON cr.cygx_bind_account = f.mobile   
+			WHERE
+				f.department_id = ? `
+	_, err = o.Raw(sql, departmentId).QueryRows(&items)
+	return
+}
+
+// 获取关注产业的用户的openID
+func GetFollowindustrialOpenIdList(industrialManagementId int) (items []*OpenIdList, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT DISTINCT cr.open_id,cr.cygx_user_id as  user_id
+			FROM
+			cygx_industry_fllow AS f
+			INNER JOIN cygx_user_record AS cr  ON cr.cygx_bind_account = f.mobile   
+			WHERE
+			f.industrial_management_id = ? `
+	_, err = o.Raw(sql, industrialManagementId).QueryRows(&items)
+	return
+}
+
+// 获取所有关注了该产业用户的openid
+func GetCygxUserIndustryFllowOpneidByActivityIds(activityId int) (items []*OpenIdList, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			cr.open_id,
+			cr.cygx_bind_account as mobile,
+			cr.cygx_user_id AS user_id 
+		FROM
+			cygx_industrial_activity_group_management AS agm
+			INNER JOIN cygx_industry_fllow AS f ON f.industrial_management_id = agm.industrial_management_id
+			INNER JOIN cygx_user_record AS cr ON cr.cygx_user_id = f.user_id 
+		WHERE
+			agm.activity_id = ? `
+	_, err = o.Raw(sql, activityId).QueryRows(&items)
+	return
+}

+ 151 - 0
models/cygx/cygx_yanxuan_special.go

@@ -0,0 +1,151 @@
+package cygx
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CygxYanxuanSpecial struct {
+	Id          int       `orm:"column(id);pk"`
+	UserId      int       // 用户ID
+	CreateTime  time.Time // 创建时间
+	ModifyTime  time.Time // 修改时间
+	PublishTime time.Time // 提审过审或驳回时间
+	Content     string    // 内容
+	Tags        string    // 标签
+	Status      int       // 1:未发布,2:审核中 3:已发布 4:驳回
+	ImgUrl      string    // 图片链接
+	DocUrl      string    // 文档链接
+	Reason      string    // 理由
+	Title       string    // 标题
+	Type        string    // 类型1:笔记,2:观点
+}
+
+type CygxYanxuanSpeciaResplItem struct {
+	Id            int    `orm:"column(id);pk"`
+	UserId        int    // 用户ID
+	CreateTime    string // 创建时间
+	ModifyTime    string // 修改时间
+	PublishTime   string // 提审过审或驳回时间
+	Content       string // 内容
+	Tags          string // 标签
+	Status        int    // 1:未发布,2:审核中 3:已发布 4:驳回
+	ImgUrl        string // 图片链接
+	DocUrl        string // 文档链接
+	SpecialName   string // 专栏名称
+	Introduction  string // 介绍
+	Label         string // 标签
+	NickName      string // 昵称
+	RealName      string // 姓名
+	Mobile        string // 手机号
+	HeadImg       string // 头像
+	BgImg         string // 背景图
+	Reason        string // 理由
+	Title         string // 标题
+	CompanyTags   string
+	IndustryTags  string
+	Type          int // 类型1:笔记,2:观点
+	ContentHasImg int //正文是否包含图片 1包含 0不包含
+	Docs          []Doc
+}
+
+type Doc struct {
+	DocName   string
+	DocSuffix string
+	DocUrl    string
+	DocIcon   string
+}
+
+func GetYanxuanSpecialList(condition string, pars []interface{}) (items []*CygxYanxuanSpeciaResplItem, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := ``
+	sql = `SELECT a.*,b.bg_img,b.head_img,b.introduction,b.label,b.mobile,b.nick_name,b.real_name,b.special_name
+FROM cygx_yanxuan_special AS a
+JOIN cygx_yanxuan_special_author AS b ON a.user_id = b.user_id 
+ WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += `ORDER BY a.publish_time `
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+type EnableCygxYanxuanSpecialReq struct {
+	Id     int    // 文章id
+	Status int    // 1通过2驳回
+	Reason string //理由
+}
+
+func EnableYanxuanSpecial(id, status int, reason string) (err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := ``
+	sql = `UPDATE cygx_yanxuan_special SET status=?,reason=?,publish_time=NOW() WHERE id = ? `
+	_, err = o.Raw(sql, status, reason, id).Exec()
+	return
+}
+
+type CygxYanxuanSpecialItem struct {
+	Id            int    `orm:"column(id);pk"`
+	UserId        int    // 用户ID
+	CreateTime    string // 创建时间
+	ModifyTime    string // 修改时间
+	PublishTime   string // 提审过审或驳回时间
+	Content       string // 内容
+	Tags          string // 标签
+	Status        int    // 1:未发布,2:审核中 3:已发布 4:驳回
+	ImgUrl        string // 图片链接
+	DocUrl        string // 文档链接
+	SpecialName   string // 专栏名称
+	Introduction  string // 介绍
+	Label         string // 标签
+	NickName      string // 昵称
+	RealName      string // 姓名
+	Mobile        string // 手机号
+	HeadImg       string // 头像
+	BgImg         string // 背景图
+	Reason        string // 理由
+	Title         string // 标题
+	Type          int    // 类型1:笔记,2:观点
+	CollectNum    int
+	MyCollectNum  int
+	IsCollect     int
+	CompanyTags   string
+	IndustryTags  string
+	ContentHasImg int //正文是否包含图片 1包含 0不包含
+	Docs          []Doc
+}
+
+func GetYanxuanSpecialFollowUserById(specialId int) (items []int, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := ``
+	sql = `SELECT b.user_id
+FROM cygx_yanxuan_special AS a
+JOIN cygx_yanxuan_special_follow AS b ON a.user_id = b.follow_user_id
+ WHERE a.id=? `
+	_, err = o.Raw(sql, specialId).QueryRows(&items)
+	return
+}
+
+func GetYanxuanSpecialItemById(specialId int) (item *CygxYanxuanSpecialItem, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := ``
+	sql = `SELECT a.*,b.bg_img,b.head_img,b.introduction,b.label,b.mobile,
+b.nick_name,b.real_name,b.special_name
+FROM cygx_yanxuan_special AS a
+JOIN cygx_yanxuan_special_author AS b ON a.user_id = b.user_id 
+ WHERE a.id=? `
+	err = o.Raw(sql, specialId).QueryRow(&item)
+	return
+}
+
+// 获取数量
+func GetCygxYanxuanSpecialCount(condition string, pars []interface{}) (count int, err error) {
+	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_yanxuan_special WHERE 1= 1  `
+	if condition != "" {
+		sqlCount += condition
+	}
+	o := orm.NewOrmUsingDB("hz_cygx")
+	err = o.Raw(sqlCount, pars).QueryRow(&count)
+	return
+}

+ 78 - 0
models/cygx/cygx_yanxuan_special_user.go

@@ -0,0 +1,78 @@
+package cygx
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CygxYanxuanSpecialAuthor struct {
+	Id           int       `orm:"column(id);pk"`
+	UserId       int       // 用户ID
+	SpecialName  string    // 专栏名称
+	Introduction string    // 介绍
+	Label        string    // 标签
+	NickName     string    // 昵称
+	RealName     string    // 姓名
+	Mobile       string    // 手机号
+	CreateTime   time.Time // 创建时间
+	ModifyTime   time.Time // 修改时间
+	HeadImg      string    // 头像
+	BgImg        string    // 背景图上部分
+	BgImgDown    string    // 背景图下部分
+	BgImgPc      string    // pc背景图
+	Status       int       // 1启用2禁用
+}
+
+type CygxYanxuanSpecialAuthorItem struct {
+	Id           int    `orm:"column(id);pk"`
+	UserId       int    // 用户ID
+	CompanyName  string // 公司名
+	SpecialName  string // 专栏名称
+	Introduction string // 介绍
+	Label        string // 标签
+	NickName     string // 昵称
+	RealName     string // 姓名
+	Mobile       string // 手机号
+	CreateTime   string // 创建时间
+	ModifyTime   string // 修改时间
+	HeadImg      string // 头像
+	BgImg        string // 背景图
+	Status       int    // 1启用2禁用
+}
+
+func AddCygxYanxuanSpecialAuthor(item *CygxYanxuanSpecialAuthor) (lastId int64, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	lastId, err = o.Insert(item)
+	return
+}
+
+type AddCygxYanxuanSpecialAuthorReq struct {
+	UserId   int    // 用户ID
+	RealName string // 姓名
+	Mobile   string // 手机号
+}
+
+type EnableCygxYanxuanSpecialAuthorReq struct {
+	UserId int // 用户ID
+	Status int // 1启用2禁用
+}
+
+// 启用禁用作者
+func EnableYanxuanSpecialAuthor(userId, status int) (err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := ``
+	sql = `UPDATE cygx_yanxuan_special_author SET status=? WHERE user_id = ? `
+	_, err = o.Raw(sql, status, userId).Exec()
+	return
+}
+
+func GetYanxuanSpecialAuthorList() (items []*CygxYanxuanSpecialAuthorItem, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := ``
+	sql = `SELECT
+	a.*
+FROM
+	cygx_yanxuan_special_author as a ORDER BY create_time DESC `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 9 - 10
models/cygx/industrial_activity_group_management.go

@@ -28,16 +28,14 @@ type IndustryAndSubjectName struct {
 
 // 列表
 func GetIndustrialActivityGroupManagementList(activityId, source int) (items []*IndustrialActivityGroupManagementRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
-			p.permission_name,
-			p.chart_permission_id,
+			m.chart_permission_id,
 			m.industrial_management_id,
 			m.industry_name 
 			FROM
 			cygx_industrial_activity_group_management AS am
 			INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = am.industrial_management_id
-			INNER JOIN chart_permission AS p ON p.chart_permission_id = m.chart_permission_id 
 			WHERE
 			am.activity_id = ? AND am.source = ?`
 	_, err = o.Raw(sql, activityId, source).QueryRows(&items)
@@ -55,7 +53,7 @@ func GetIndustrialManagementGroupActCount(industrialManagementId int) (count int
 				WHERE
 				am.industrial_management_id =? 
 				AND a.publish_status = 1 `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, industrialManagementId).QueryRow(&count)
 	return
 }
@@ -65,7 +63,7 @@ func GetActivityIdsByIndustrialManagementId(industrialManagementId string) (acti
 			GROUP_CONCAT( DISTINCT activity_id ORDER BY id ASC SEPARATOR ',' ) AS activityId 
 			FROM
 			cygx_industrial_activity_group_management WHERE industrial_management_id IN (` + industrialManagementId + `)`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sql).QueryRow(&activityId)
 	return
 }
@@ -78,7 +76,7 @@ type IndustrialActivityGroupResp struct {
 
 // 列表
 func GetIndustrialActivityGroupListByactivityIds(activityIds string) (items []*IndustrialActivityGroupResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT  mg.*,m.industry_name  FROM
 	        cygx_industrial_activity_group_management AS mg
 	      	 INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id 
@@ -111,7 +109,7 @@ func GetIndustryActCountGroupByType(industryId int) (list []*IndustryActCountGro
 					am.industrial_management_id = ? AND a.publish_status = 1
 				GROUP BY
 					activity_type `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Raw(sqlCount, industryId).QueryRows(&list)
 	return
 }
@@ -122,13 +120,14 @@ func GetCygxIndustrialActivityGroupManagementCount(condition string, pars []inte
 	if condition != "" {
 		sqlCount += condition
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
 
 // CygxIndustrialActivityGroupManagement 获取活动与产业关联列表
 func GetCygxIndustrialActivityGroupManagementList(condition string, pars []interface{}) (list []*CygxIndustrialActivityGroupManagement, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			*
 			FROM
@@ -138,6 +137,6 @@ func GetCygxIndustrialActivityGroupManagementList(condition string, pars []inter
 	if condition != `` {
 		sql += condition
 	}
-	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&list)
+	_, err = o.Raw(sql, pars).QueryRows(&list)
 	return
 }

+ 7 - 8
models/cygx/industrial_activity_group_subject.go

@@ -18,9 +18,9 @@ type SubjectActivityGroupManagementRep struct {
 	SubjectName         string `description:"标的名称"`
 }
 
-//列表
+// 列表
 func GetSubjectActivityGroupManagementList(activityId, source int) (items []*SubjectActivityGroupManagementRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			s.subject_name,
 			s.industrial_subject_id 
@@ -38,7 +38,7 @@ func GetActivityIdsByIndustrialSubjectId(industrialSubjectId string) (activityId
 			GROUP_CONCAT( DISTINCT activity_id ORDER BY id ASC SEPARATOR ',' ) AS activity_id 
 			FROM
 			cygx_industrial_activity_group_subject WHERE industrial_subject_id IN (` + industrialSubjectId + `)`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sql).QueryRow(&activityId)
 	return
 }
@@ -50,9 +50,9 @@ type SubjectlActivityGroupResp struct {
 	SubjectName            string `description:"标的名称"`
 }
 
-//列表
+// 列表
 func GetSubjectActivityGroupListByactivityIds(activityIds string) (items []*SubjectlActivityGroupResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			sg.*,
 			s.subject_name,
@@ -67,7 +67,6 @@ func GetSubjectActivityGroupListByactivityIds(activityIds string) (items []*Subj
 	return
 }
 
-
 type IndustrySubjectActCountGroupByType struct {
 	ActivityType  string `json:"activity_type" description:"活动类型名称"`
 	ActivityCount int    `json:"activity_count" description:"关联的活动数"`
@@ -91,7 +90,7 @@ func GetIndustrySubjectActCountGroupByType(subjectId int) (list []*IndustrySubje
 					gsub.industrial_subject_id = ? AND a.publish_status = 1
 				GROUP BY
 					activity_type`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Raw(sqlCount, subjectId).QueryRows(&list)
 	return
-}
+}

+ 9 - 11
models/cygx/industrial_analyst.go

@@ -1,7 +1,6 @@
 package cygx
 
 import (
-	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
@@ -25,44 +24,43 @@ type GetIndustrialAnalystList struct {
 	List []*CygxIndustrialAnalyst
 }
 
-//新增
+// 新增
 func AddIndustrialAnalyst(item *CygxIndustrialAnalyst) (err error) {
 	o := orm.NewOrm()
 	_, err = o.Insert(item)
 	return
 }
 
-//列表
+// 列表
 func GetIndustrialAnalystAll(IndustrialManagementId int) (items []*CygxIndustrialAnalyst, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_industrial_analyst where industrial_management_id = ? `
 	_, err = o.Raw(sql, IndustrialManagementId).QueryRows(&items)
 	return
 }
 
-//获取数量
+// 获取数量
 func GetIndustrialAnalystCount(condition string, pars []interface{}) (count int, err error) {
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_industrial_analyst WHERE 1=1 `
 	if condition != "" {
 		sqlCount += condition
 	}
-	fmt.Println(sqlCount)
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
 
-//修改
+// 修改
 func EditIndustrialAnalyst(item *CygxIndustrialAnalyst) (err error) {
 	sql := `UPDATE cygx_industrial_analyst SET  analyst_name=? WHERE industrial_analyst_id=? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Raw(sql, item.AnalystName, item.IndustrialAnalystId).Exec()
 	return
 }
 
-//删除数据
+// 删除数据
 func DeleteIndustrialAnalyst(industrialAnalystId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` DELETE FROM cygx_industrial_analyst WHERE industrial_analyst_id = ?`
 	_, err = o.Raw(sql, industrialAnalystId).Exec()
 	return

+ 9 - 11
models/cygx/industrial_article_group_management.go

@@ -16,7 +16,7 @@ type CygxIndustrialArticleGroupManagement struct {
 
 // 新增
 func AddCygxIndustrialArticleGroupManagement(item *CygxIndustrialArticleGroupManagement) (newId int64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Insert(item)
 	if err != nil {
 		return
@@ -26,16 +26,14 @@ func AddCygxIndustrialArticleGroupManagement(item *CygxIndustrialArticleGroupMan
 
 // 列表
 func GetIndustrialArticleGroupManagementList(articleId int) (items []*IndustrialActivityGroupManagementRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
-			p.permission_name,
-			p.chart_permission_id,
+			m.chart_permission_id,
 			m.industrial_management_id,
 			m.industry_name 
 			FROM
 			cygx_industrial_article_group_management AS am
 			INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = am.industrial_management_id
-			INNER JOIN chart_permission AS p ON p.chart_permission_id = m.chart_permission_id 
 			WHERE
 			am.article_id = ?`
 	_, err = o.Raw(sql, articleId).QueryRows(&items)
@@ -44,7 +42,7 @@ func GetIndustrialArticleGroupManagementList(articleId int) (items []*Industrial
 
 // 通过名称获取详情
 func GetIndustrialManagemenDetailByAaticle(articleId int) (item *CygxIndustrialArticleGroupManagement, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_industrial_article_group_management WHERE article_id = ? `
 	err = o.Raw(sql, articleId).QueryRow(&item)
 	return
@@ -55,7 +53,7 @@ func GetArticleIdsByIndustrialManagementId(industrialManagementId string) (artic
 			GROUP_CONCAT( DISTINCT article_id ORDER BY id ASC SEPARATOR ',' ) AS articleId 
 			FROM
 			cygx_industrial_article_group_management WHERE industrial_management_id IN (` + industrialManagementId + `)`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sql).QueryRow(&articleId)
 	return
 }
@@ -69,7 +67,7 @@ type ArticleIndustrialSubjectNameResp struct {
 
 // 通过文章ID获取所关联的产业与标的
 func GetCygxArticleIndustrialSubjectName(articleIds string) (items []*ArticleIndustrialSubjectNameResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT
 			art.article_id,
 			(
@@ -104,7 +102,7 @@ type IndustrialArticleGroupResp struct {
 
 // 通过id 获取详情
 func GetIndustrialManagemenDetailByAaticleID(articleId int) (items []*ArticleIndustrialSubjectNameResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			article_id,
 			m.industrial_management_id,
@@ -120,7 +118,7 @@ func GetIndustrialManagemenDetailByAaticleID(articleId int) (items []*ArticleInd
 
 // 列表
 func GetIndustrialArticleGroupListByarticleIds(articleIds string) (items []*IndustrialArticleGroupResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT  mg.*,m.industry_name  FROM
 	        cygx_industrial_article_group_management AS mg
 	      	 INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id = mg.industrial_management_id 
@@ -149,7 +147,7 @@ type IndustrialManagementHotResp struct {
 
 // 产业与文章关联列表
 func GetSearchResourceList(userId int, condition string, startSize, pageSize int) (items []*IndustrialManagementHotResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			m.industry_name,
 			m.industrial_management_id,

+ 5 - 5
models/cygx/industrial_article_group_subject.go

@@ -15,7 +15,7 @@ type CygxIndustrialArticleGroupSubject struct {
 
 // 新增
 func AddCygxIndustrialArticleGroupSubject(item *CygxIndustrialArticleGroupSubject) (newId int64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Insert(item)
 	if err != nil {
 		return
@@ -28,7 +28,7 @@ func GetSubjectIds(articleId int) (subjects string, err error) {
 			GROUP_CONCAT( DISTINCT industrial_subject_id ORDER BY id ASC SEPARATOR ',' ) AS subjects 
 			FROM
 			cygx_industrial_article_group_subject WHERE article_id = ?`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sql, articleId).QueryRow(&subjects)
 	return
 }
@@ -38,14 +38,14 @@ func GetArticleIdsBySubjectId(industrialSubjectId string) (articleId string, err
 			GROUP_CONCAT( DISTINCT article_id ORDER BY id ASC SEPARATOR ',' ) AS articleId 
 			FROM
 			cygx_industrial_article_group_subject WHERE industrial_subject_id IN (` + industrialSubjectId + `)`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sql).QueryRow(&articleId)
 	return
 }
 
 // 列表
 func GetSubjectArticleGroupManagementList(articleId int) (items []*SubjectActivityGroupManagementRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			s.subject_name,
 			s.industrial_subject_id 
@@ -67,7 +67,7 @@ type SubjectlArticleGroupResp struct {
 
 // 列表
 func GetSubjectArticleGroupListByarticleIds(articleIds string) (items []*SubjectlArticleGroupResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			sg.*,
 			s.subject_name,

+ 49 - 45
models/cygx/industrial_management.go

@@ -108,14 +108,14 @@ type GetCygxIndustrialManagementList struct {
 
 // 新增
 func AddIndustrialManagement(item *CygxIndustrialManagement) (newId int64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	newId, err = o.Insert(item)
 	return
 }
 
 // 列表
 func GetIndustrialManagementAll(condition, orderColumn string) (items []*CygxIndustrialManagementNum, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT *,
 		( SELECT COUNT( 1 ) FROM cygx_industrial_article_group_management AS man_g WHERE man_g.industrial_management_id = man.industrial_management_id ) AS art_num,
 		( SELECT COUNT( 1 ) FROM cygx_industrial_activity_group_management AS a_g  INNER JOIN cygx_activity AS a ON a.activity_id = a_g.activity_id  WHERE a_g.industrial_management_id = man.industrial_management_id AND a.publish_status = 1 ) AS act_num
@@ -132,7 +132,7 @@ func GetIndustrialManagementAll(condition, orderColumn string) (items []*CygxInd
 
 // 列表
 func GetIndustrialManagementAllCheckName(ChartPermissionId int, orderColumn string) (items []*CygxIndustrialManagementNumCheckName, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT *
 		FROM
 		cygx_industrial_management AS man 
@@ -143,7 +143,7 @@ func GetIndustrialManagementAllCheckName(ChartPermissionId int, orderColumn stri
 }
 
 func GetIndustrialManagementAllByReportTime(condition, orderSrt string) (items []*CygxIndustrialManagementNum, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			man.*,art.publish_date,man_g.industrial_management_id as man_gid,
 			MAX( art.publish_date ) AS update_time,
@@ -170,7 +170,7 @@ func GetIndustrialManagementCount(condition string, pars []interface{}) (count i
 	if condition != "" {
 		sqlCount += condition
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
@@ -178,7 +178,7 @@ func GetIndustrialManagementCount(condition string, pars []interface{}) (count i
 // 修改
 func EditIndustrialManagement(item *CygxIndustrialManagement) (err error) {
 	sql := `UPDATE cygx_industrial_management SET chart_permission_id=?, industry_name=?, recommended_index=?, layout_time=?,is_new_label=?,is_deep_label=?,is_hand_new_label=?,is_hand_deep_label=?  WHERE industrial_management_id=? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Raw(sql, item.ChartPermissionId, item.IndustryName, item.RecommendedIndex, item.LayoutTime, item.IsNewLabel, item.IsDeepLabel, item.IsHandNewLabel, item.IsHandDeepLabel, item.IndustrialManagementId).Exec()
 	return
 }
@@ -186,14 +186,14 @@ func EditIndustrialManagement(item *CygxIndustrialManagement) (err error) {
 // 通过活动添加的标签产业添加的时候二次修改
 func EditIndustrialManagementFromAct(item *CygxIndustrialManagement) (err error) {
 	sql := `UPDATE cygx_industrial_management SET  recommended_index=?, layout_time=?,is_new_label=?,is_deep_label=?,is_hand_new_label=?,is_hand_deep_label=?, source = 1  WHERE industry_name=? AND chart_permission_id=?`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Raw(sql, item.RecommendedIndex, item.LayoutTime, item.IsNewLabel, item.IsDeepLabel, item.IsHandNewLabel, item.IsHandDeepLabel, item.IndustryName, item.ChartPermissionId).Exec()
 	return
 }
 
 // 删除数据
 func DeleteIndustrialManagement(industrialManagementId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -230,7 +230,7 @@ func GetIndustrialManagementInfo(industrialManagementId int) (item *CygxIndustri
 // 获取产业关联的文章数量
 func GetIndustrialManagementGroupArtCount(industrialManagementId int) (count int, err error) {
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_industrial_article_group_management WHERE industrial_management_id=? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, industrialManagementId).QueryRow(&count)
 	return
 }
@@ -245,7 +245,7 @@ type CygxIndustrialManagementExport struct {
 }
 
 func GetChartPermissionExport(chartPermissionId int) (items []*CygxIndustrialManagementExport, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 		mp.chart_permission_name,
 		man.industry_name,
@@ -270,7 +270,7 @@ type CygxIndustrialManagementIdStr struct {
 }
 
 func GetChartPermissionIdStr() (items []*CygxIndustrialManagementIdStr, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_report_mapping WHERE report_type = 1 AND chart_permission_id != 23 GROUP BY chart_permission_id  ORDER BY sort DESC `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
@@ -289,7 +289,7 @@ type IndustrialManagementExport struct {
 }
 
 func GetIndustrialManagementIdStr(chartPermissionId int) (items []*IndustrialManagementExport, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_industrial_management WHERE chart_permission_id = ?`
 	_, err = o.Raw(sql, chartPermissionId).QueryRows(&items)
 	return
@@ -301,7 +301,7 @@ type GetReportNumLIstExport struct {
 }
 
 func GetReportNumLIst(industrialManagementId int) (items []*GetReportNumLIstExport, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 		rep.match_type_name,
 		COUNT(match_type_name) type_num 
@@ -324,7 +324,7 @@ type GetMatchTypeListRep struct {
 }
 
 func GetMatchTypeList(chartPermissionId int) (items []*GetMatchTypeListRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_report_mapping WHERE chart_permission_id = ?  GROUP BY match_type_name `
 	_, err = o.Raw(sql, chartPermissionId).QueryRows(&items)
 	return
@@ -337,7 +337,7 @@ func GetchartPermissionReportNameCount(industrialManagementId int) (count int, e
 WHERE
 	re.report_type = 1
 	AND re.chart_permission_id = ?  `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, industrialManagementId).QueryRow(&count)
 	return
 }
@@ -350,7 +350,7 @@ type IndustrialManagementDetial struct {
 
 // 通过产业ID获取详情
 func GetindustrialManagemenById(industrialManagementId int) (item *CygxIndustrialManagementNum, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT man.layout_time, art.publish_date as create_time,
 			( SELECT COUNT( 1 ) FROM cygx_industrial_article_group_management AS man_g INNER JOIN cygx_article AS art ON art.article_id = man_g.article_id  WHERE man_g.industrial_management_id = man.industrial_management_id AND art.publish_status = 1 ) AS art_num 
 			FROM
@@ -370,7 +370,7 @@ type IndustrialManagementArtTypeList struct {
 }
 
 func GetIndustrialManagementArtTypeList(industrialManagementId int) (items []*IndustrialManagementArtTypeList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 				re.match_type_name,
 				COUNT(*) AS art_num
@@ -413,7 +413,7 @@ func GetIndustrialManagementArtTypeList(industrialManagementId int) (items []*In
 
 // 获取研选路演精华的数量
 func GetIndustrialManagementArtYxLYJH(industrialManagementId int) (total int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			COUNT(*) AS art_num 
 		FROM
@@ -442,14 +442,14 @@ func GetArtGroupIndustrialManagement(reportId int) (item []*ArtGroupIndustrialMa
 			INNER JOIN cygx_industrial_management AS man ON man.industrial_management_id = man_g.industrial_management_id 
 		WHERE
 			man_g.cygx_article_id = ?`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Raw(sql, reportId).QueryRows(&item)
 	return
 }
 
 // 通过ID获取详情
 func GetIndustrialManagemenDetailById(industrialManagementId int) (item *CygxIndustrialManagementDetail, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_industrial_management WHERE industrial_management_id = ? `
 	err = o.Raw(sql, industrialManagementId).QueryRow(&item)
 	return
@@ -457,7 +457,7 @@ func GetIndustrialManagemenDetailById(industrialManagementId int) (item *CygxInd
 
 // 通过名称获取详情
 func GetIndustrialManagemenDetailByName(industryName string) (item *CygxIndustrialManagementDetail, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_industrial_management WHERE industry_name = ? `
 	err = o.Raw(sql, industryName).QueryRow(&item)
 	return
@@ -470,14 +470,14 @@ func GetIndustrialManagementGroupArtCountByDeep(industrialManagementId int) (cou
 				WHERE
 				a.industrial_management_id = ?
 				AND b.match_type_name ='行业深度' `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, industrialManagementId).QueryRow(&count)
 	return
 }
 
 // 列表
 func GetIndustrialManagement(condition string) (items []*ArtGroupIndustrialManagementRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_industrial_management as art WHERE 1= 1 `
 	if condition != "" {
 		sql += condition
@@ -494,7 +494,7 @@ func GetindustrialManagementNames(industrialManagementIds string) (names string,
 			cygx_industrial_management AS m 
 			WHERE
 			industrial_management_id IN ( ` + industrialManagementIds + `) `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sql).QueryRow(&names)
 	return
 }
@@ -513,7 +513,7 @@ func GetindustrialManagementNamesBySubjectName(subjectnName string, chartPermiss
 			cygx_industrial_subject 
 			WHERE
 			subject_name = ?) 	AND m.chart_permission_id	= ? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sql, subjectnName, chartPermissionId).QueryRow(&names)
 	return
 }
@@ -525,7 +525,7 @@ type ReportMappingCategoryRep struct {
 }
 
 func GetPermissionMappingCategoryAll() (item []*ReportMappingCategoryRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT * FROM cygx_report_mapping  GROUP BY category_id `
 	_, err = o.Raw(sql).QueryRows(&item)
 	return
@@ -548,11 +548,11 @@ type CompanyHistoryRecordNewPvRep struct {
 func GetCompanyHistoryRecordNewPv(mobiles, emails string) (item []*CompanyHistoryRecordNewPvRep, err error) {
 	//var table string
 	//table = "cygx_article_history_record_all"
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT
-			u.real_name,
-			u.mobile,
-			u.email,
+			h.real_name,
+			h.mobile,
+			h.email,
 			a.title,
 			a.category_id,
 			h.create_time,
@@ -576,7 +576,6 @@ func GetCompanyHistoryRecordNewPv(mobiles, emails string) (item []*CompanyHistor
 			) AS industry_name
 		FROM
 			cygx_article_history_record_all AS h
-			LEFT JOIN wx_user AS u ON u.mobile = h.mobile
 			INNER JOIN cygx_article AS a ON a.article_id = h.article_id 
 		WHERE
 			h.mobile IN (` + mobiles + `) AND h.is_del = 0  OR( h.email IN (` + emails + `) AND h.email <>'' AND h.is_del = 0 )   ORDER BY h.create_time 	DESC `
@@ -592,7 +591,7 @@ func GetManagementIdsByName(name string) (industrialManagementIds string, err er
 			cygx_industrial_management AS s
 			WHERE
 			industry_name =? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sql, name).QueryRow(&industrialManagementIds)
 	return
 }
@@ -605,7 +604,7 @@ func GetManagementIdsByNameLike(name string) (industrialManagementIds string, er
 			cygx_industrial_management AS s
 			WHERE
 			industry_name LIKE '%` + name + `%'`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sql).QueryRow(&industrialManagementIds)
 	return
 }
@@ -620,7 +619,7 @@ type CygxReportMappingResp struct {
 
 // 通过ID获取详情
 func GetCygxReportMappingRespByid(categoryId int) (item *CygxReportMappingResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_report_mapping WHERE category_id = ? LIMIT 1`
 	err = o.Raw(sql, categoryId).QueryRow(&item)
 	return
@@ -634,18 +633,19 @@ type IndustryMove struct {
 
 // Update 更新产业
 func (industryItem *CygxIndustrialManagement) Update(cols []string) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Update(industryItem, cols...)
 	return
 }
 
 // GetIndustryListByCondition 获取产业列表
 func GetIndustryListByCondition(condition string, pars []interface{}) (list []*CygxIndustrialManagement, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_industrial_management WHERE 1 = 1 `
 	if condition != "" {
 		sql += condition
 	}
-	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&list)
+	_, err = o.Raw(sql, pars).QueryRows(&list)
 	return
 }
 
@@ -660,6 +660,7 @@ type IndustriesEarliestLayoutTime struct {
 
 // GetIndustriesEarliestLayoutTime 获取产业最早布局时间
 func GetIndustriesEarliestLayoutTime(condition string, pars []interface{}) (list []*IndustriesEarliestLayoutTime, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 				idy.industrial_management_id,
 				idy.layout_time,
@@ -674,12 +675,13 @@ func GetIndustriesEarliestLayoutTime(condition string, pars []interface{}) (list
 		sql += condition
 	}
 	sql += ` GROUP BY idy.industrial_management_id`
-	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&list)
+	_, err = o.Raw(sql, pars).QueryRows(&list)
 	return
 }
 
 // GetIndustriesEarliestLayoutTimeByMorningMeeting 根据晨会精华获取产业最早布局时间
 func GetIndustriesEarliestLayoutTimeByMorningMeeting(condition string, pars []interface{}) (list []*IndustriesEarliestLayoutTime, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			idy.industrial_management_id,
 			idy.layout_time,
@@ -693,20 +695,21 @@ func GetIndustriesEarliestLayoutTimeByMorningMeeting(condition string, pars []in
 		sql += condition
 	}
 	sql += ` GROUP BY idy.industrial_management_id`
-	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&list)
+	_, err = o.Raw(sql, pars).QueryRows(&list)
 	return
 }
 
 // UpdateIndustryLayoutTime 更新产业布局时间
 func UpdateIndustryLayoutTime(industryId int, layoutTime string) (err error) {
 	sql := `UPDATE cygx_industrial_management SET layout_time = ? WHERE industrial_management_id = ? LIMIT 1`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Raw(sql, layoutTime, industryId).Exec()
 	return
 }
 
 // GetYxIndustryUseHzIndustryIds 获取研选产业的报告/活动所使用到的非研选产业IDs-即弘则覆盖
 func GetYxIndustryUseHzIndustryIds() (ids []int, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT DISTINCT
 				a.industrial_management_id
 			FROM
@@ -724,13 +727,13 @@ func GetYxIndustryUseHzIndustryIds() (ids []int, err error) {
 			JOIN cygx_article AS c ON a.article_id = c.article_id
 			WHERE
 				c.article_id > 1000000 AND c.article_type_id IN  (1,2,12) AND b.chart_permission_id != 31 AND c.publish_status = 1`
-	_, err = orm.NewOrm().Raw(sql).QueryRows(&ids)
+	_, err = o.Raw(sql).QueryRows(&ids)
 	return
 }
 
 // GetIndustryListWithHzCover 获取产业列表-带弘则覆盖
 func GetIndustryListWithHzCover(condition, conditionCover, orderRule string, isCover bool, pars []interface{}) (items []*CygxIndustrialManagementNum, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 				man.*, art.publish_date,
 				man_g.industrial_management_id AS man_gid,
@@ -815,7 +818,7 @@ type IndustrialManagement struct {
 
 // GetIndustrialManagementArticleNewPublishData 获取产业关联文章的最新发布时间
 func GetIndustrialManagementArticleNewPublishData() (items []*IndustrialManagement, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			man.industrial_management_id,
 			MAX( art.publish_date ) AS update_time 
@@ -839,7 +842,7 @@ func GetIndustrialManagementArticleNewPublishData() (items []*IndustrialManageme
 
 // 时间线的更新时间
 func GetTimeLineReportIndustrialPublishdateList(industrialIdArr []int) (items []*IndustrialManagement, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			mmc.industry_id AS industrial_management_id,
 			MAX( mm.meeting_time ) AS publish_date 
@@ -857,7 +860,7 @@ func GetTimeLineReportIndustrialPublishdateList(industrialIdArr []int) (items []
 
 // UpdateIndustrialManagementArticleNewPublishData 批量修改获取产业关联文章的最新发布时间
 func UpdateIndustrialManagementArticleNewPublishData(items map[int]string) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	p, err := o.Raw("UPDATE cygx_industrial_management SET new_art_publish_date = ? WHERE industrial_management_id = ?").Prepare()
 	if err != nil {
 		return
@@ -876,11 +879,12 @@ func UpdateIndustrialManagementArticleNewPublishData(items map[int]string) (err
 
 // GetTopOneMonthArtReadNumIndustry 获取列表
 func GetTopOneMonthArtReadNumIndustryAll(condition string, pars []interface{}) (items []*IndustrialManagement, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_industrial_management WHERE 1 = 1 `
 	if condition != `` {
 		sql += condition
 	}
 	sql += ` ORDER BY article_read_num DESC `
-	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&items)
+	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }

+ 23 - 25
models/cygx/industrial_subject.go

@@ -43,14 +43,14 @@ type GetIndustrialSubjectNumList struct {
 }
 
 func GetcygxIndustrialSubject(industrialManagementId int) (items []*CygxIndustrialSubject, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT subject_name FROM cygx_industrial_subject  WHERE industrial_management_id = ?`
 	_, err = o.Raw(sql, industrialManagementId).QueryRows(&items)
 	return
 }
 
 func UpdateIndustrialManagementSubjectNames(industrialManagementId int, industryName string) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	var nameSub string
 	listSub, err := GetcygxIndustrialSubject(industrialManagementId)
 	if err != nil {
@@ -67,7 +67,7 @@ func UpdateIndustrialManagementSubjectNames(industrialManagementId int, industry
 
 // 新增
 func AddIndustrialSubject(item *CygxIndustrialSubject) (newId int64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	newId, err = o.Insert(item)
 	if err != nil {
 		return
@@ -77,7 +77,7 @@ func AddIndustrialSubject(item *CygxIndustrialSubject) (newId int64, err error)
 
 // 批量新增
 func AddIndustrialSubjectList(items []*CygxIndustrialSubject) (newIdStr string, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -102,7 +102,7 @@ func AddIndustrialSubjectList(items []*CygxIndustrialSubject) (newIdStr string,
 
 // 列表
 func GetIndustrialSubjectAll(IndustrialManagementId int) (items []*CygxIndustrialSubjectNum, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT *,
 		( SELECT COUNT( 1 ) FROM cygx_industrial_article_group_subject AS sub_g WHERE sub_g.industrial_subject_id = sub.industrial_subject_id ) AS art_num
 		FROM
@@ -119,14 +119,14 @@ func GetIndustrialSubjectCount(condition string, pars []interface{}) (count int,
 	if condition != "" {
 		sqlCount += condition
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
 
 // 修改
 func EditIndustrialSubject(item *CygxIndustrialSubject) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_industrial_subject SET  subject_name=? WHERE industrial_subject_id=? `
 	_, err = o.Raw(sql, item.SubjectName, item.IndustrialSubjectId).Exec()
 	return
@@ -134,7 +134,7 @@ func EditIndustrialSubject(item *CygxIndustrialSubject) (err error) {
 
 // 删除数据
 func DeleteIndustrialSubject(industrialSubjectId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` DELETE FROM cygx_industrial_subject WHERE industrial_Subject_id = ?`
 	_, err = o.Raw(sql, industrialSubjectId).Exec()
 	return
@@ -154,7 +154,7 @@ func GetArtGroupIndustrialSubject(reportId int) (item []*ArtGroupIndustrialSubje
 		INNER JOIN cygx_industrial_subject AS sub ON sub.industrial_subject_id = sub_g.industrial_subject_id
 		WHERE
 		sub_g.cygx_article_id = ?`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Raw(sql, reportId).QueryRows(&item)
 	return
 }
@@ -162,14 +162,14 @@ func GetArtGroupIndustrialSubject(reportId int) (item []*ArtGroupIndustrialSubje
 // 获取标的关联的文章数量
 func GetIndustrialSubjectGroupArtCount(industrialSubjectId int) (count int, err error) {
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_industrial_article_group_subject WHERE industrial_subject_id=? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, industrialSubjectId).QueryRow(&count)
 	return
 }
 
 // 列表
 func GetIndustrialSubjectAllByIds(condition string) (items []*CygxIndustrialSubjectNum, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT *,
 		( SELECT COUNT( 1 ) FROM cygx_industrial_article_group_subject AS sub_g WHERE sub_g.industrial_subject_id = sub.industrial_subject_id ) AS art_num
 		FROM
@@ -180,14 +180,14 @@ func GetIndustrialSubjectAllByIds(condition string) (items []*CygxIndustrialSubj
 }
 
 func GetIndustrialSubjectDetailById(IndustrialSubjectId int) (item *CygxIndustrialSubject, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_industrial_subject WHERE industrial_subject_id = ? `
 	err = o.Raw(sql, IndustrialSubjectId).QueryRow(&item)
 	return
 }
 
 func GetIndustrialSubjectDetailByName(IndustrialSubjectName string) (item *CygxIndustrialSubject, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_industrial_subject WHERE subject_name = ? `
 	err = o.Raw(sql, IndustrialSubjectName).QueryRow(&item)
 	return
@@ -195,13 +195,12 @@ func GetIndustrialSubjectDetailByName(IndustrialSubjectName string) (item *CygxI
 
 // 列表
 func GetIndustrialSubjectListName(condition string) (items []*ArtGroupIndustrialSubjectRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT s.*
 			FROM
 			cygx_industrial_subject AS s
 			INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id =s.industrial_management_id
-			INNER JOIN chart_permission AS c ON c.chart_permission_id = m.chart_permission_id
-			WHERE c.permission_name = '研选' `
+			WHERE m.chart_permission_id = 31 `
 	if condition != "" {
 		sql += condition
 	}
@@ -235,12 +234,11 @@ type SubjectNameRep struct {
 
 // 列表
 func GetIndustrialSubjectListNameByChartId(condition string) (items []*CygxIndustrialSubjectListRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT 	s.*,m.industry_name
 			FROM
 			cygx_industrial_subject AS s
 			INNER JOIN cygx_industrial_management AS m ON m.industrial_management_id =s.industrial_management_id
-			INNER JOIN chart_permission AS c ON c.chart_permission_id = m.chart_permission_id
 			WHERE 1= 1 `
 	if condition != "" {
 		sql += condition
@@ -258,14 +256,14 @@ func GetindustrialSubjectNames(subjectIds string) (names string, err error) {
 			cygx_industrial_subject AS s
 			WHERE
 			industrial_subject_id IN ( ` + subjectIds + `) `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sql).QueryRow(&names)
 	return
 }
 
 // 列表
 func GetIndustrialSubjectListNameByName(condition string) (items []*CygxIndustrialSubject, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_industrial_subject WHERE 1= 1`
 	if condition != "" {
 		sql += condition
@@ -282,7 +280,7 @@ func GetIndustrialSubjectIdsByName(subjectName string) (industrialSubjectIds str
 			cygx_industrial_subject AS s
 			WHERE
 			subject_name =? `
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sql, subjectName).QueryRow(&industrialSubjectIds)
 	return
 }
@@ -295,7 +293,7 @@ func GetIndustrialSubjectIdsByNameLike(subjectName string) (industrialSubjectIds
 			cygx_industrial_subject AS s
 			WHERE
 			subject_name  LIKE '%` + subjectName + `%'`
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sql).QueryRow(&industrialSubjectIds)
 	return
 }
@@ -312,7 +310,7 @@ type IndustrySubjectArtTypeCountList struct {
 
 // GetIndustrySubjectArtTypeCountList 获取标的关联的报告数量列表-根据类型
 func GetIndustrySubjectArtTypeCountList(subjectId int) (list []*IndustrySubjectArtTypeCountList, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 				re.match_type_name,
 				COUNT(*) AS art_num
@@ -341,7 +339,7 @@ func GetIndustrySubjectArtTypeCountList(subjectId int) (list []*IndustrySubjectA
 
 // 列表
 func GetIndustrySubjectListByIds(IndustrialSubjectIds string) (items []*CygxIndustrialSubject, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_industrial_subject WHERE industrial_subject_id IN (` + IndustrialSubjectIds + `) `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
@@ -349,7 +347,7 @@ func GetIndustrySubjectListByIds(IndustrialSubjectIds string) (items []*CygxIndu
 
 // 获取标的列表
 func GetCygxIndustrialSubjectListCondition(condition string, pars []interface{}) (items []*CygxIndustrialSubject, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * 
 		FROM
 			cygx_industrial_subject WHERE 1 = 1 ` + condition

+ 34 - 6
models/cygx/industry_fllow.go

@@ -23,7 +23,7 @@ type CygxIndustryFllow struct {
 
 // 列表
 func GetCygxIndustryFllowList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxIndustryFllow, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_industry_fllow WHERE 1= 1 `
 	if condition != "" {
 		sql += condition
@@ -39,7 +39,7 @@ func GetCygxIndustryFllowList(condition string, pars []interface{}, startSize, p
 
 // 关注产业列表
 func GetCygxIndustryFllowByUser(uid, startSize, pageSize int) (items []*UserInteraction, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			m.industry_name,
 			f.modify_time as create_time,
@@ -58,7 +58,7 @@ func GetCygxIndustryFllowByUser(uid, startSize, pageSize int) (items []*UserInte
 
 // 关注产业数量
 func GetCygxIndustryFllowCount(uid int) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_industry_fllow  WHERE   user_id = ?  AND type = 1  `
 	err = o.Raw(sqlCount, uid).QueryRow(&count)
 	return
@@ -66,7 +66,7 @@ func GetCygxIndustryFllowCount(uid int) (count int, err error) {
 
 // 判断用户是否关注这些产业ID
 func GetCygxIndustryFllowCountByUser(uid int, industrialManagementd string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_industry_fllow  WHERE   user_id = ?  AND type = 1 AND  industrial_management_id IN (` + industrialManagementd + `)`
 	err = o.Raw(sqlCount, uid).QueryRow(&count)
 	return
@@ -74,7 +74,7 @@ func GetCygxIndustryFllowCountByUser(uid int, industrialManagementd string) (cou
 
 // GetUserFllowIndustrialListByUserIdAndIndustrial 通过用户ID 跟产业ID获取用户关注的产业列表
 func GetUserFllowIndustrialListByUserIdAndIndustrial(userIds, industrials string) (items []*CygxIndustryFllow, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_industry_fllow 
 			WHERE 1 = 1 
 		AND user_id IN ( ` + userIds + ` ) 
@@ -85,10 +85,38 @@ func GetUserFllowIndustrialListByUserIdAndIndustrial(userIds, industrials string
 
 // 批量添加
 func AddCygxIndustryFllowMulti(items []*CygxIndustryFllow) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	if len(items) > 0 {
 		//批量添加新的关注记录
 		_, err = o.InsertMulti(len(items), items)
 	}
 	return
 }
+
+// 获取所有关注了该产业永续客户的openid
+func GetCygxForeverUserIndustryFllowOpneidByActivityIds(activityId int) (items []*OpenIdList, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT
+				f.* 
+			FROM
+				cygx_industrial_activity_group_management AS agm
+				INNER JOIN cygx_industry_fllow AS f ON f.industrial_management_id = agm.industrial_management_id 
+			WHERE
+				agm.activity_id = ?`
+	_, err = o.Raw(sql, activityId).QueryRows(&items)
+	return
+}
+
+// 获取所有关注了该产业用户的companyIds
+func GetCygxIndustryFollowCompanyIdsByActivityId(activityId int) (item *string, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := ` SELECT
+	GROUP_CONCAT( DISTINCT f.company_id SEPARATOR ',' ) AS company_ids 
+FROM
+	cygx_industrial_activity_group_management AS agm
+	INNER JOIN cygx_industry_fllow AS f ON f.industrial_management_id = agm.industrial_management_id 
+WHERE
+	agm.activity_id = ? `
+	err = o.Raw(sql, activityId).QueryRow(&item)
+	return
+}

+ 11 - 11
models/cygx/industry_map.go

@@ -23,14 +23,14 @@ type CygxIndustryMapItems struct {
 }
 
 func GetCygxIndustryMapByParentId(parentId int) (items []*CygxIndustryMapItems, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT * FROM cygx_industry_map WHERE parent_id=?`
 	_, err = o.Raw(sql, parentId).QueryRows(&items)
 	return
 }
 
 func GetCygxIndustryMapAll() (items []*CygxIndustryMapItems, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT * FROM cygx_industry_map WHERE parent_id<>0`
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
@@ -40,7 +40,7 @@ type CygxIndustryMapResp struct {
 	Node *CygxIndustryMapItems
 }
 
-//新增图谱
+// 新增图谱
 type IndustryMapAddReq struct {
 	IndustryMapId   int    `orm:"column(industry_map_id);" description:"行业图谱id"`
 	IndustryMapName string `description:"图谱名称"`
@@ -48,39 +48,39 @@ type IndustryMapAddReq struct {
 }
 
 func GetCygxIndustryMapByName(name string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT COUNT(1) AS count FROM cygx_industry_map WHERE industry_map_name=?`
 	err = o.Raw(sql, name).QueryRow(&count)
 	return
 }
 
 func AddCygxIndustryMap(item *CygxIndustryMap) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Insert(item)
 	return
 }
 
-//编辑图谱
+// 编辑图谱
 type IndustryMapEditReq struct {
 	IndustryMapId   int    `orm:"column(industry_map_id);" description:"行业图谱id"`
 	IndustryMapName string `description:"图谱名称"`
 }
 
 func GetCygxIndustryMapById(industryMapId int) (items *CygxIndustryMapItems, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT * FROM cygx_industry_map WHERE industry_map_id=?`
 	err = o.Raw(sql, industryMapId).QueryRow(&items)
 	return
 }
 
 func EditCygxIndustryMap(item *IndustryMapEditReq) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_industry_map SET industry_map_name=?,modify_time = NOW()  WHERE industry_map_id=? `
 	_, err = o.Raw(sql, item.IndustryMapName, item.IndustryMapId).Exec()
 	return
 }
 
-//编辑图谱
+// 编辑图谱
 type IndustryMapDeleteReq struct {
 	IndustryMapId int `orm:"column(industry_map_id);" description:"行业图谱id"`
 }
@@ -92,9 +92,9 @@ func DeleteCygxIndustryMap(industryMapId int) (err error) {
 	return
 }
 
-//列表
+// 列表
 func GetIndustrialMapListName(condition string) (items []*IndustryMapAddReq, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_industry_map  WHERE 1= 1 `
 	if condition != "" {
 		sql += condition

+ 2 - 2
models/cygx/interface_log.go

@@ -14,9 +14,9 @@ type CygxInterfaceLog struct {
 	CreateTime time.Time `description:"创建时间"`
 }
 
-//新增
+// 新增
 func AddCygxInterfaceLog(item *CygxInterfaceLog) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Insert(item)
 	return
 }

+ 8 - 12
models/cygx/interview_apply.go

@@ -29,13 +29,11 @@ type InterviewApplyListResp struct {
 }
 
 func GetInterviewApplyList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxInterviewApply, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.real_name AS user_real_name,b.mobile,b.email,c.company_name,c.seller_id,c.seller_name AS sales_real_name,c.industry_name,d.category_name
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := ` SELECT a.*,d.category_name
 			FROM cygx_interview_apply AS a
-			LEFT JOIN wx_user AS b ON a.user_id=b.user_id
-			LEFT JOIN company_product AS c ON b.company_id=c.company_id
             LEFT JOIN cygx_article AS d on a.article_id=d.article_id
-			WHERE 1=1 AND c.product_id=2 `
+			WHERE 1=1  `
 	if condition != "" {
 		sql += condition
 	}
@@ -45,11 +43,9 @@ func GetInterviewApplyList(condition string, pars []interface{}, startSize, page
 }
 
 func GetInterviewApplyListCount(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT COUNT(1) AS count FROM cygx_interview_apply AS a
-			INNER JOIN wx_user AS b ON a.user_id=b.user_id
-			INNER JOIN company_product AS c ON b.company_id=c.company_id
-            WHERE 1=1  AND c.product_id = 2  `
+            WHERE 1=1    `
 	if condition != "" {
 		sql += condition
 	}
@@ -58,13 +54,13 @@ func GetInterviewApplyListCount(condition string, pars []interface{}) (count int
 }
 
 func GetCygxInterviewApplyDetail(interviewApplyId int) (item *CygxInterviewApply, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT * FROM cygx_interview_apply WHERE interview_apply_id=? `
 	err = o.Raw(sql, interviewApplyId).QueryRow(&item)
 	return
 }
 
-//申请领取参数
+// 申请领取参数
 type InterviewApplyStatusReq struct {
 	InterviewApplyId int    `description:"访谈申请id"`
 	InterviewTime    string `description:"访谈时间"`
@@ -72,7 +68,7 @@ type InterviewApplyStatusReq struct {
 }
 
 func InterviewApplyStatusModify(interviewApplyId int, status, interviewTime string) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ``
 	if interviewTime != "" {
 		sql = `UPDATE cygx_interview_apply SET status=?,modify_time=NOW() ,interview_time=? WHERE interview_apply_id=? `

+ 28 - 30
models/cygx/micro_roadshow.go

@@ -53,7 +53,7 @@ type MicroRoadshowVideoListResp struct {
 }
 
 func GetMicroRoadshowVideoList(condition, sortStr string, pars []interface{}, startSize, pageSize int) (items []*CygxMicroRoadshowVideo, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT *,(SELECT COUNT(1) FROM cygx_article_comment AS h    WHERE h.industry_id=v.industry_id AND  h.activity_id = 0 ) AS comment_num FROM cygx_micro_roadshow_video as v  WHERE 1=1 `
 	if condition != "" {
 		sql += condition
@@ -69,7 +69,7 @@ func GetMicroRoadshowVideoList(condition, sortStr string, pars []interface{}, st
 }
 
 func GetMicroRoadshowVideoListCount(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT COUNT(1) AS count FROM cygx_micro_roadshow_video WHERE 1=1 `
 	if condition != "" {
 		sql += condition
@@ -78,7 +78,7 @@ func GetMicroRoadshowVideoListCount(condition string, pars []interface{}) (count
 	return
 }
 
-//视频保存请求参数
+// 视频保存请求参数
 type VideoAddReq struct {
 	VideoId           int    `description:"视频Id"`
 	VideoName         string `description:"视频标题"`
@@ -94,20 +94,20 @@ type VideoAddReq struct {
 }
 
 func GetMicroRoadshowVideoByTitle(title string) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT COUNT(1) AS count FROM cygx_micro_roadshow_video WHERE video_name =? `
 	err = o.Raw(sql, title).QueryRow(&count)
 	return
 }
 
-//新增视频
+// 新增视频
 func AddMicroRoadshowVideo(item *CygxMicroRoadshowVideo) (newId int64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	newId, err = o.Insert(item)
 	return
 }
 
-//视频编辑请求参数
+// 视频编辑请求参数
 type VideoEditReq struct {
 	VideoId             int    `description:"视频id"`
 	VideoName           string `description:"视频标题"`
@@ -120,9 +120,9 @@ type VideoEditReq struct {
 	PublishDate         string `description:"发布时间"`
 }
 
-//新增视频
+// 新增视频
 func EditVideo(item *CygxMicroRoadshowVideo) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := " UPDATE cygx_micro_roadshow_video SET " +
 		" video_url = ?, video_name = ?,chart_permission_id=?, chart_permission_name=?, industry_id =?, industry_name =?, " +
 		" modify_date=?, publish_date=?, video_duration=?, img_url=?, share_img_url=?, detail_img_url=?, publish_status=? WHERE video_id = ? "
@@ -132,7 +132,7 @@ func EditVideo(item *CygxMicroRoadshowVideo) (err error) {
 }
 
 func PublishVideoCancel(videoId, publishOrCancle int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_micro_roadshow_video SET publish_status=?,modify_date=NOW() WHERE video_id =?`
 	_, err = o.Raw(sql, publishOrCancle, videoId).Exec()
 	return
@@ -154,7 +154,7 @@ type CygxMicroRoadshowVideoHistory struct {
 }
 
 func GetMicroRoadshowVideoHistoryByIdPage(condition string, pars []interface{}, startSize, pageSize int) (item []*CygxMicroRoadshowVideoHistory, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT * FROM cygx_micro_roadshow_video_history WHERE 1=1 `
 	if condition != "" {
 		sql += condition
@@ -165,7 +165,7 @@ func GetMicroRoadshowVideoHistoryByIdPage(condition string, pars []interface{},
 }
 
 func GetMicroRoadshowVideoHistoryById(condition string, pars []interface{}) (item []*CygxMicroRoadshowVideoHistory, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT * FROM cygx_micro_roadshow_video_history WHERE 1=1 `
 	if condition != "" {
 		sql += condition
@@ -241,7 +241,7 @@ type MicroRoadshowVoiceListResp struct {
 }
 
 func GetMicroRoadshowVoiceList(condition, sortStr string, pars []interface{}, startSize, pageSize int) (items []*CygxMicroRoadshowVoice, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT
 	v.*,
 	a.label,
@@ -270,7 +270,7 @@ WHERE
 }
 
 func GetMicroRoadshowVoiceListCount(condition string, pars []interface{}) (count int, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 	COUNT(1) AS count
 FROM
@@ -292,17 +292,15 @@ type PermissionNameAndIndustryName struct {
 }
 
 func GetPermissionNameAndIndustryNameByIndustryId(industryId int) (item *PermissionNameAndIndustryName, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
-	cm.industry_name as industry_name,
-	cm.chart_permission_id AS permission_id, 
-	cp.chart_permission_name AS permission_name
-FROM
-	chart_permission AS cp
-	INNER JOIN cygx_industrial_management AS cm 
-WHERE
-	cp.chart_permission_id = cm.chart_permission_id 
-	AND cm.industrial_management_id = ? `
+			cm.industry_name as industry_name,
+			cm.chart_permission_id AS permission_id
+		FROM
+			 cygx_industrial_management AS cm 
+		WHERE
+		1=1 
+			AND cm.industrial_management_id = ? `
 
 	err = o.Raw(sql, industryId).QueryRow(&item)
 	return
@@ -330,7 +328,7 @@ type CygxMicroRoadshowVoiceHistory struct {
 }
 
 func GetMicroRoadshowVoiceHistoryById(condition string, pars []interface{}) (item []*CygxMicroRoadshowVoiceHistory, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` SELECT
 	h.* 
 FROM
@@ -363,29 +361,29 @@ WHERE
 }
 
 func GetMicroRoadshowVideoByIndustryId(industryId int) (item *CygxMicroRoadshowVideo, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * from cygx_micro_roadshow_video where industry_id = ? `
 	err = o.Raw(sql, industryId).QueryRow(&item)
 	return
 }
 
 func GetMicroRoadshowVideoByVideoId(videoId int) (item *CygxMicroRoadshowVideo, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * from cygx_micro_roadshow_video where video_id = ? `
 	err = o.Raw(sql, videoId).QueryRow(&item)
 	return
 }
 
-//修改是否推送过模板消息的状态
+// 修改是否推送过模板消息的状态
 func UpdateIsSendWxMsg(videoId, isSendWxMsg int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_micro_roadshow_video SET is_send_wx_msg=?  WHERE video_id =?`
 	_, err = o.Raw(sql, isSendWxMsg, videoId).Exec()
 	return
 }
 
 func GetMicroRoadshowVoiceById(activityId int) (item *CygxMicroRoadshowVoice, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 	v.*,
 	a.label,

+ 12 - 13
models/cygx/minutes_summary.go

@@ -130,7 +130,7 @@ func AddCygxMinutesSummaryOrm(itme *CygxMinutesSummary, items []*CygxMinutesSumm
 
 // 编辑
 func UpdateCygxMinutesSummaryOrm(item *CygxMinutesSummary, items []*CygxMinutesSummaryLog) (newId int64, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -171,14 +171,14 @@ func GetCygxMinutesSummary(condition string, pars []interface{}) (count int, err
 	if condition != "" {
 		sqlCount += condition
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
 
 // 通过纪要ID获取活动详情
 func GetCygxMinutesSummaryInfoById(articleId int) (item *CygxMinutesSummaryRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_minutes_summary  WHERE article_id=?`
 	err = o.Raw(sql, articleId).QueryRow(&item)
 	return
@@ -186,7 +186,7 @@ func GetCygxMinutesSummaryInfoById(articleId int) (item *CygxMinutesSummaryRep,
 
 // 删除数据
 func DeleteCygxMinutesSummary(articleId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -211,7 +211,7 @@ func DeleteCygxMinutesSummary(articleId int) (err error) {
 
 // 列表
 func GetMinutesSummaryList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxMinutesSummaryRep, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT *,
 				(SELECT COUNT(1) FROM cygx_report_history_record AS h WHERE h.article_id=rs.article_id AND report_type = 'szjyhz'  AND  h.company_id != 16 ) AS pv,
         		(SELECT COUNT(DISTINCT user_id) FROM cygx_report_history_record AS h WHERE h.article_id=rs.article_id  AND report_type = 'szjyhz' AND  h.company_id != 16 ) AS uv
@@ -226,7 +226,7 @@ func GetMinutesSummaryList(condition string, pars []interface{}, startSize, page
 
 // 修改发布状态
 func MinutesSummaryPublishAndCancel(item *CygxMinutesSummaryRep) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_minutes_summary SET  publish_status=? , last_updated_time= ?, periods= ? , admin_id= ? , admin_name= ? ,have_publish = 1 WHERE article_id=? `
 	_, err = o.Raw(sql, item.PublishStatus, time.Now(), item.Periods, item.AdminId, item.AdminName, item.ArticleId).Exec()
 	return
@@ -234,7 +234,7 @@ func MinutesSummaryPublishAndCancel(item *CygxMinutesSummaryRep) (err error) {
 
 // 修改可见范围
 func MinutesSummaryVisibleRange(item *CygxMinutesSummaryRep) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_minutes_summary SET  is_send_wx_msg = 1,  visible_range=? , last_updated_time= ?,admin_id =? ,admin_name =?  WHERE article_id=? `
 	_, err = o.Raw(sql, item.VisibleRange, time.Now(), item.AdminId, item.AdminName, item.ArticleId).Exec()
 	return
@@ -242,7 +242,7 @@ func MinutesSummaryVisibleRange(item *CygxMinutesSummaryRep) (err error) {
 
 // 列表
 func GetMinutesSummarylogListAll(articleId int) (items []*ResearchSummaryChartPermission, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	//sql := `SELECT c.permission_name ,c.image_url,l.*
 	//		FROM
 	//		cygx_minutes_summary_log AS l
@@ -262,11 +262,10 @@ func GetMinutesSummarylogListAll(articleId int) (items []*ResearchSummaryChartPe
 
 // 列表
 func GetMinutesSummarylogSonListSecond(articleId int, artType string) (items []*CygxResearchSummaryLogSecond, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT c.permission_name ,c.chart_permission_id ,c.image_url, l.* 
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT  l.* 
 			FROM
 			cygx_minutes_summary_log AS l
-			LEFT JOIN chart_permission AS c ON c.chart_permission_id = l.chart_permission_id 
 			WHERE l.article_id = ? AND l.type =?
 			GROUP BY l.chart_permission_id
 			ORDER  BY l.chart_permission_sort ASC`
@@ -276,7 +275,7 @@ func GetMinutesSummarylogSonListSecond(articleId int, artType string) (items []*
 
 // 列表
 func GetMinutesSummarylogListThird(articleId, chartPermissionId int, artType string) (items []*CygxResearchSummaryLogThird, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT  l.link_article_id,l.body ,a.video_url
 			FROM cygx_minutes_summary_log AS l
 			LEFT JOIN cygx_article as a ON a.article_id = l.link_article_id
@@ -302,7 +301,7 @@ type CygxMinutesSummaryLogDetail struct {
 
 // 列表
 func GetMinutesSummarylogSonListAll(articleId, chartPermissionId int) (items []*CygxMinutesSummaryLogDetail, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT   l.link_article_id,l.body ,a.video_url 
 			FROM
 			cygx_minutes_summary_log AS l

+ 4 - 5
models/cygx/minutes_summary_log.go

@@ -69,17 +69,16 @@ type CygxMSlFirstList struct {
 }
 
 func GetCygxMinutesSummaryLogRepList(articleId int, typeStr string) (items []*CygxMinutesSummaryLogRep, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT l.*,c.chart_permission_name,c.image_url as  ico_link
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT l.*
 			FROM cygx_minutes_summary_log AS l
-			LEFT JOIN chart_permission as c  ON c.chart_permission_id = l.chart_permission_id
 			WHERE  1= 1 AND article_id=?  AND type =? GROUP BY l.chart_permission_id `
 	_, err = o.Raw(sql, articleId, typeStr).QueryRows(&items)
 	return
 }
 
 func GetCygxMinutesSummaryLogRepListSon(articleId, chartPermissionId int, typeStr string) (items []*AddCygxResearchSummaryLog, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT l.* FROM cygx_minutes_summary_log AS l
 			WHERE  1= 1 AND l.article_id=?  AND l.chart_permission_id =? AND l.type =? `
 	_, err = o.Raw(sql, articleId, chartPermissionId, typeStr).QueryRows(&items)
@@ -87,7 +86,7 @@ func GetCygxMinutesSummaryLogRepListSon(articleId, chartPermissionId int, typeSt
 }
 
 func GetCygxMinutesSummaryYanxList(articleId int, typeStr string) (items []*AddCygxMinutesSummaryLog, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT l.* FROM cygx_minutes_summary_log AS l
 			WHERE  1= 1 AND l.article_id=? AND l.type =?  `
 	_, err = o.Raw(sql, articleId, typeStr).QueryRows(&items)

+ 9 - 9
models/cygx/product_interior.go

@@ -48,7 +48,7 @@ type ProductInteriorIdReq struct {
 
 // 添加
 func AddProductInterior(item *CygxProductInterior, industrialManagementIds, industrialSubjectIds string) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -99,7 +99,7 @@ func AddProductInterior(item *CygxProductInterior, industrialManagementIds, indu
 
 // 修改
 func UpdateProductInterior(item *CygxProductInterior, industrialManagementIds, industrialSubjectIds string) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	to, err := o.Begin()
 	if err != nil {
 		return
@@ -217,14 +217,14 @@ func GetCygxProductInteriorCount(condition string, pars []interface{}) (count in
 	if condition != "" {
 		sqlCount += condition
 	}
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	err = o.Raw(sqlCount, pars).QueryRow(&count)
 	return
 }
 
 // 列表
 func GetCygxProductInteriorList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxProductInteriorResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_product_interior as art WHERE 1= 1 `
 	if condition != "" {
 		sql += condition
@@ -240,7 +240,7 @@ type GetCygxProductInteriorDetailResp struct {
 
 // 通过ID获取详情
 func GetCygxProductInteriorDetail(productInteriorId int) (item *CygxProductInteriorResp, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_product_interior  WHERE product_interior_id=? `
 	err = o.Raw(sql, productInteriorId).QueryRow(&item)
 	return
@@ -248,7 +248,7 @@ func GetCygxProductInteriorDetail(productInteriorId int) (item *CygxProductInter
 
 // 删除数据
 func DeleteProductInterior(productInteriorId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` DELETE FROM cygx_product_interior WHERE product_interior_id = ?`
 	_, err = o.Raw(sql, productInteriorId).Exec()
 	return
@@ -256,7 +256,7 @@ func DeleteProductInterior(productInteriorId int) (err error) {
 
 // 修改是否展示
 func EditProductInteriorStatus(status, isCancel, productInteriorId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_product_interior SET status=?,is_cancel = ? ,visible_range=0, modify_time=NOW()   WHERE product_interior_id=? `
 	_, err = o.Raw(sql, status, isCancel, productInteriorId).Exec()
 	return
@@ -264,7 +264,7 @@ func EditProductInteriorStatus(status, isCancel, productInteriorId int) (err err
 
 // 修改可见范围
 func ProductInteriorVisibleRange(visibleRange, productInteriorId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_product_interior SET visible_range=?, modify_time=NOW()   WHERE product_interior_id=?  `
 	_, err = o.Raw(sql, visibleRange, productInteriorId).Exec()
 	return
@@ -272,7 +272,7 @@ func ProductInteriorVisibleRange(visibleRange, productInteriorId int) (err error
 
 // 修改是否推送过模板消息的状态
 func UpdateProductInteriorIsSendWxMsg(productInteriorId, isSendWxMsg int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `UPDATE cygx_product_interior SET is_send_wx_msg=?  WHERE product_interior_id =?`
 	_, err = o.Raw(sql, isSendWxMsg, productInteriorId).Exec()
 	return

Some files were not shown because too many files changed in this diff