Browse Source

Merge branch 'CRM_15.5' of http://8.136.199.33:3000/hongze/hz_crm_api

xingzai 9 months ago
parent
commit
eb653de617

+ 153 - 13
controllers/roadshow/calendar.go

@@ -6,6 +6,7 @@ import (
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"hongze/hz_crm_api/controllers"
 	"hongze/hz_crm_api/models"
+	"hongze/hz_crm_api/models/cygx"
 	"hongze/hz_crm_api/models/roadshow"
 	"hongze/hz_crm_api/models/system"
 	"hongze/hz_crm_api/services"
@@ -173,6 +174,16 @@ func (this *CalendarController) Add() {
 		br.IsSendEmail = false
 		return
 	}
+	sysUserList, err := cygx.GetAskEmailList()
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()
+		return
+	}
+	raiAskadminMap := make(map[int]bool, 0)
+	for _, v := range sysUserList {
+		raiAskadminMap[v.AdminId] = true
+	}
 
 	rsCalendar := new(roadshow.RsCalendar)
 	rsCalendar.SysUserId = sysUser.AdminId
@@ -186,6 +197,7 @@ func (this *CalendarController) Add() {
 	rsCalendar.ProvinceCode = req.ProvinceCode
 	rsCalendar.City = req.City
 	rsCalendar.CityCode = req.CityCode
+	rsCalendar.District = req.District
 	rsCalendar.Theme = req.Theme
 	rsCalendar.CooperationName = req.CooperationName
 	rsCalendar.CreateTime = time.Now()
@@ -220,6 +232,12 @@ func (this *CalendarController) Add() {
 		} else {
 			researcher.Status = 2
 		}
+
+		//CRM15.5 权益研究员直接通过
+		if raiAskadminMap[v.ResearcherId] {
+			researcher.Status = 2
+		}
+
 		rsCalendarResearcherId, err := roadshow.AddRsCalendarResearcher(researcher)
 		if err != nil {
 			br.Msg = "保存失败!"
@@ -559,6 +577,10 @@ func (this *CalendarController) Edit() {
 		calendarUpdateParams["city"] = req.City
 	}
 
+	if req.District != "" {
+		calendarUpdateParams["district"] = req.District
+	}
+
 	calendarUpdateParams["english_company"] = req.EnglishCompany
 
 	calendarUpdateParams["modify_time"] = time.Now()
@@ -582,7 +604,16 @@ func (this *CalendarController) Edit() {
 	for _, ev := range existList {
 		existResearcherMap[ev.ResearcherId] = ev.ResearcherName
 	}
-
+	sysUserList, err := cygx.GetAskEmailList()
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()
+		return
+	}
+	raiAskadminMap := make(map[int]bool, 0)
+	for _, v := range sysUserList {
+		raiAskadminMap[v.AdminId] = true
+	}
 	if rsCalendarItem.ActivityType == "路演" || rsCalendarItem.ActivityType == "公开会议" {
 		// 更新研究员信息
 		//go roadshowService.UpdateSHCalendar(req.RsCalendarId, req.RsCalendarResearcherId, req.ActivityType, req.RoadshowType, req.ActivityCategory, req.RoadshowPlatform, req.Province, req.City, req.ResearcherList)
@@ -609,6 +640,11 @@ func (this *CalendarController) Edit() {
 				calendarResearcherUpdateParams["status"] = 1
 				rsCalendarResearcherItem.Status = 1
 			}
+			//CRM15.5 权益研究员直接通过
+			if raiAskadminMap[v.ResearcherId] {
+				calendarResearcherUpdateParams["status"] = 2
+				rsCalendarResearcherItem.Status = 2
+			}
 			calendarResearcherUpdateParams["start_date"] = v.StartDate
 			rsCalendarResearcherItem.StartDate = v.StartDate
 			calendarResearcherUpdateParams["end_date"] = v.EndDate
@@ -727,6 +763,10 @@ func (this *CalendarController) Edit() {
 			} else {
 				researcher.Status = 2
 			}
+			//CRM15.5 权益研究员直接通过
+			if raiAskadminMap[v.ResearcherId] {
+				researcher.Status = 2
+			}
 			rsCalendarResearcherId, err := roadshow.AddRsCalendarResearcher(researcher)
 			if err != nil {
 				br.Msg = "保存失败!"
@@ -975,16 +1015,18 @@ func (this *CalendarController) ResearcherList() {
 	researcherList, err := roadshow.GetResearcher()
 	groupMap := make(map[int][]*roadshow.ResearcherGroup)
 	for _, v := range researcherList {
-		//if v.RoleTypeCode == "ficc_admin" {
-		//	findItems := groupMap[1]
-		//	findItems = append(findItems, v)
-		//	groupMap[1] = findItems
-		//} else {
+		item := &roadshow.ResearcherGroup{
+			GroupId:      v.GroupId,
+			GroupName:    v.GroupName,
+			AdminId:      v.AdminId,
+			RealName:     v.RealName,
+			RoleTypeCode: v.RoleTypeCode,
+		}
 		if findItems, ok := groupMap[v.GroupId]; ok {
-			findItems = append(findItems, v)
+			findItems = append(findItems, item)
 			groupMap[v.GroupId] = findItems
 		} else {
-			findItems = append(findItems, v)
+			findItems = append(findItems, item)
 			groupMap[v.GroupId] = findItems
 		}
 		//}
@@ -992,14 +1034,72 @@ func (this *CalendarController) ResearcherList() {
 	for _, v := range group {
 		v.ResearcherList = groupMap[v.GroupId]
 	}
-	//allGroup := new(roadshow.ResearcherGroup)
-	//allGroup.GroupId = 99
-	//allGroup.GroupName = "ficc全体"
-	//group = append(group, allGroup)
+
+	ficcGroup := new(roadshow.ResearcherGroup)
+	ficcGroup.GroupId = 999
+	ficcGroup.GroupName = "ficc"
+	ficcGroup.ResearcherList = group
+
+	sysUserList, err := system.GetAdminList()
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取admin列表失败, Err:" + err.Error()
+		return
+	}
+	adminMap := make(map[int]*system.Admin, 0)
+	for _, v := range sysUserList {
+		adminMap[v.AdminId] = v
+	}
+	askUserList, err := cygx.GetAskEmailList()
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()
+		return
+	}
+	mapPermissionUser := make(map[string][]*roadshow.ResearcherGroup)
+	listPermission, err := cygx.GetChartPermissionAll()
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+		return
+	}
+	mapPermissionId := make(map[string]int)
+	for _, v := range listPermission {
+		mapPermissionId[v.PermissionName] = v.ChartPermissionId
+	}
+	for _, v := range askUserList {
+		if admin, ok := adminMap[v.AdminId]; ok {
+			item := &roadshow.ResearcherGroup{
+				AdminId:      v.AdminId,
+				RealName:     v.Name,
+				GroupId:      admin.GroupId,
+				GroupName:    admin.GroupName,
+				RoleTypeCode: admin.RoleTypeCode,
+			}
+			mapPermissionUser[v.ChartPermissionName] = append(mapPermissionUser[v.ChartPermissionName], item)
+		}
+	}
+	raiList := make([]*roadshow.ResearcherGroup, 0)
+	for k, v := range mapPermissionUser {
+		respItem := new(roadshow.ResearcherGroup)
+		respItem.GroupName = k + "组"
+		respItem.GroupId = mapPermissionId[k]
+		respItem.ResearcherList = v
+		raiList = append(raiList, respItem)
+	}
+
+	raiGroup := new(roadshow.ResearcherGroup)
+	raiGroup.GroupId = 888
+	raiGroup.GroupName = "权益"
+	raiGroup.ResearcherList = raiList
+
+	var resp []*roadshow.ResearcherGroup
+	resp = append(resp, ficcGroup, raiGroup)
+
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"
-	br.Data = group
+	br.Data = resp
 }
 
 // CalendarList
@@ -1115,10 +1215,17 @@ func (this *CalendarController) CalendarList() {
 
 	// 英文客户的国家以及点击量
 	englishIds := make([]int, 0)
+	adminIds := make([]int, 0)     // 管理员ID
+	rsCalendarId := make([]int, 0) //路演ID
 	for i := range dataList {
 		if dataList[i].EnglishCompany == 1 {
 			englishIds = append(englishIds, dataList[i].CompanyId)
 		}
+
+		if calendarType == 2 {
+			adminIds = append(adminIds, dataList[i].SysUserId)
+			rsCalendarId = append(rsCalendarId, dataList[i].RsCalendarId)
+		}
 	}
 	englishMap := make(map[int]*models.EnglishCompany)
 	if len(englishIds) > 0 {
@@ -1135,6 +1242,31 @@ func (this *CalendarController) CalendarList() {
 			englishMap[englishList[i].CompanyId] = englishList[i]
 		}
 	}
+	mapRaiSllerId := make(map[int]bool)  // 是否为权益销售
+	mapMeetingCount := make(map[int]int) // 路演参会人员数量
+	if len(adminIds) > 0 {
+		listAdmin, e := system.GetAdminListByIdListWithoutEnable(adminIds)
+		if e != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取管理员信息失败, Err:" + e.Error()
+			return
+		}
+		for _, v := range listAdmin { //权益销售与权益销售组长
+			if v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER || v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP {
+				mapRaiSllerId[v.AdminId] = true
+			}
+		}
+		listMeetingCount, e := roadshow.GetRsCalendarMeetingUserListCount(rsCalendarId)
+		if e != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取路演参会人员数量信息失败, Err:" + e.Error()
+			return
+		}
+		for _, v := range listMeetingCount {
+			mapMeetingCount[v.RsCalendarId] = v.Total
+		}
+	}
+
 	for i := range dataList {
 		if dataList[i].EnglishCompany == 1 {
 			en := englishMap[dataList[i].CompanyId]
@@ -1143,6 +1275,14 @@ func (this *CalendarController) CalendarList() {
 				dataList[i].EnglishViewTotal = en.ViewTotal
 			}
 		}
+		//如果是已结束的权益销售添加的活动,就行进行按钮展示
+		if mapRaiSllerId[dataList[i].SysUserId] && utils.InArrayByInt([]int{2, 6}, dataList[i].Status) {
+			if mapMeetingCount[dataList[i].RsCalendarId] == 0 {
+				dataList[i].SubmitButton = true
+			} else {
+				dataList[i].ViewButton = true
+			}
+		}
 	}
 
 	resp.Paging = page

+ 173 - 0
controllers/roadshow/calendar_meeting_user.go

@@ -0,0 +1,173 @@
+package roadshow
+
+import (
+	"encoding/json"
+	"hongze/hz_crm_api/controllers"
+	"hongze/hz_crm_api/models"
+	"hongze/hz_crm_api/models/roadshow"
+	"strconv"
+	"strings"
+	"time"
+)
+
+// 日历参会名单
+type CalendarMeetingUserController struct {
+	controllers.BaseAuthController
+}
+
+// @Title 新增路演活动参会名单接口
+// @Description 新增路演活动参会名单接口
+// @Param	request	body roadshow.AddRsCalendarMeetingUserReq true "type json string"
+// @Success Ret=200 保存成功
+// @router /rs_calendar_meeting_user/add [post]
+func (this *CalendarMeetingUserController) 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 roadshow.AddRsCalendarMeetingUserReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	rsCalendarId := req.RsCalendarId
+	userIds := req.UserId
+
+	if rsCalendarId == 0 {
+		br.Msg = "路演信息错误!"
+		return
+	}
+	if len(userIds) == 0 {
+		br.Msg = "参会人不能为空!"
+		return
+	}
+	var userIdsStr []string
+	for _, v := range userIds {
+		userIdsStr = append(userIdsStr, strconv.Itoa(v))
+	}
+
+	listUser, err := models.GetWxUserListByUserIdsHaveCompany(strings.Join(userIdsStr, ","))
+	if err != nil {
+		br.Msg = "获取用户信息失败!"
+		br.ErrMsg = "获取用户信息失败-GetWxUserListByUserIdsHaveCompany!Err:" + err.Error()
+		return
+	}
+
+	var items []*roadshow.RsCalendarMeetingUser
+	for _, v := range listUser {
+		item := new(roadshow.RsCalendarMeetingUser)
+		item.RsCalendarId = rsCalendarId
+		item.UserId = v.UserId
+		item.Mobile = v.Mobile
+		item.Email = v.Email
+		item.CompanyId = v.CompanyId
+		item.CompanyName = v.CompanyName
+		item.RealName = v.RealName
+		item.Position = v.Position
+		item.AdminId = sysUser.AdminId
+		item.AdminName = sysUser.RealName
+		item.CreateTime = time.Now()
+		item.ModifyTime = time.Now()
+		items = append(items, item)
+	}
+	err = roadshow.MultiAddRsCalendarMeetingUser(items)
+	if err != nil {
+		br.Msg = "操作失败!"
+		br.ErrMsg = "操作失败-MultiAddRsCalendarMeetingUser!Err:" + err.Error()
+		return
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "添加成功"
+	br.IsAddLog = true
+}
+
+// @Title 路演活动参会名单列表接口
+// @Description 路演活动参会名单列表接口
+// @Param   RsCalendarId   query   int  true       "路演活动id"
+// @Success 200 {object} roadshow.CalendarListResp
+// @router /rs_calendar_meeting_user/list [get]
+func (this *CalendarMeetingUserController) 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
+	}
+
+	rsCalendarId, _ := this.GetInt("RsCalendarId")
+	resp := new(roadshow.RsCalendarMeetingUserListResp)
+	list, err := roadshow.GetRsCalendarMeetingUserListByRsCalendarId(rsCalendarId)
+	if err != nil {
+		br.Msg = "获取失败!"
+		br.ErrMsg = "操作失败-GetRsCalendarMeetingUserListByRsCalendarId!Err:" + err.Error()
+		return
+	}
+	if len(list) == 0 {
+		list = make([]*roadshow.RsCalendarMeetingUserResp, 0)
+	}
+	resp.List = list
+	br.Ret = 200
+	br.Success = true
+	br.Data = resp
+	br.Msg = "获取成功"
+}
+
+// @Title 路演活动参会删除接口
+// @Description 路演活动参会删除接口
+// @Param   RsCalendarMeetingUserId   query   int  true       "参会名单主键ID"
+// @Success Ret=200 删除成功
+// @router /rs_calendar_meeting_user/delete [post]
+func (this *CalendarMeetingUserController) Delete() {
+	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 roadshow.DeleteRsCalendarMeetingUserReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	rsCalendarMeetingUserId := req.RsCalendarMeetingUserId
+	err = roadshow.DeleteRsCalendarMeetingUser(rsCalendarMeetingUserId)
+	if err != nil {
+		br.Msg = "删除失败!"
+		br.ErrMsg = "删除失败-DeleteRsCalendarMeetingUser!Err:" + err.Error()
+		return
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "删除成功"
+	br.IsAddLog = true
+}

+ 7 - 3
controllers/roadshow/company.go

@@ -4,6 +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"
 	"strings"
 )
@@ -76,10 +77,13 @@ func (this *CalendarController) CompanyDetail() {
 		return
 	}
 	englishCompany, _ := this.GetInt("EnglishCompany")
-
+	productId := services.GetProductId(sysUser.RoleTypeCode)
+	if productId == 0 {
+		productId = 1
+	}
 	detailView := new(roadshow.CompanyDetailView)
 	if englishCompany == 0 {
-		companyProductItem, err := company.GetCompanyProductByCompanyIdAndProductId(companyId, 1)
+		companyProductItem, err := company.GetCompanyProductByCompanyIdAndProductId(companyId, productId)
 		if err != nil {
 			if err.Error() == utils.ErrNoRow() {
 				br.Msg = "该客户已被删除"
@@ -89,7 +93,7 @@ func (this *CalendarController) CompanyDetail() {
 			br.ErrMsg = "搜索客户失败!Err:" + err.Error()
 			return
 		}
-		permissionList, err := company.GetCompanyProductReportPermissionList(companyId, 1)
+		permissionList, err := company.GetCompanyProductReportPermissionList(companyId, productId)
 		if err != nil {
 			br.Msg = "搜索客户权限失败!"
 			br.ErrMsg = "搜索客户权限失败!Err:" + err.Error()

+ 12 - 7
controllers/roadshow/report.go

@@ -87,20 +87,25 @@ func (this *CalendarController) ResearcherReportList() {
 	}
 	groupMap := make(map[int][]*roadshow.ResearcherGroup)
 	for _, v := range researcherList {
-		//if v.RoleTypeCode == "ficc_admin" {
-		//	findItems := groupMap[1]
-		//	findItems = append(findItems, v)
-		//	groupMap[1] = findItems
-		//} else {
+		item := &roadshow.ResearcherGroup{
+			GroupId:      v.GroupId,
+			GroupName:    v.GroupName,
+			AdminId:      v.AdminId,
+			RealName:     v.RealName,
+			RoleTypeCode: v.RoleTypeCode,
+		}
 		if findItems, ok := groupMap[v.GroupId]; ok {
-			findItems = append(findItems, v)
+			findItems = append(findItems, item)
 			groupMap[v.GroupId] = findItems
 		} else {
-			findItems = append(findItems, v)
+			findItems = append(findItems, item)
 			groupMap[v.GroupId] = findItems
 		}
 		//}
 	}
+	for _, v := range group {
+		v.ResearcherList = groupMap[v.GroupId]
+	}
 
 	groupReportRecordList := make([]roadshow.GroupReportRecord, 0)
 	rsAllReportRecordNumList := make([]roadshow.RsReportRecordNum, 0)

+ 0 - 4
go.sum

@@ -392,8 +392,6 @@ github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec/go.mod h1:QBvMkMya+gXc
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
-github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
-github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
@@ -401,9 +399,7 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5
 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
-github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
 github.com/syndtr/goleveldb v0.0.0-20160425020131-cfa635847112/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0=
 github.com/syndtr/goleveldb v0.0.0-20181127023241-353a9fca669c/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0=
 github.com/tealeg/xlsx v1.0.5 h1:+f8oFmvY8Gw1iUXzPk+kz+4GpbDZPK1FhPiQRd+ypgE=

+ 1 - 0
models/company/company_product.go

@@ -103,6 +103,7 @@ type CompanyProductDetail struct {
 	ShareSeller      string    `description:"共享销售员"`
 	ShareSellerId    int       `description:"共享销售员id"`
 	PermissionList   []*PermissionLookList
+	ViewTotal        int `description:"总阅读次数"`
 }
 
 func GetCompanyProductsByCompanyId(companyId int) (items []*CompanyProductDetail, err error) {

+ 33 - 0
models/cygx/activity_ask_email.go

@@ -2,6 +2,7 @@ package cygx
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/models/system"
 )
 
 type AskEmailRep struct {
@@ -9,6 +10,7 @@ type AskEmailRep struct {
 	Email               string `description:"邮箱"`
 	Mobile              string `description:"手机号"`
 	ChartPermissionName string `description:"权限名称"`
+	AdminId             int
 }
 
 func GetAskEmail() (item []*AskEmailRep, err error) {
@@ -24,3 +26,34 @@ func GetAskEmailList() (item []*AskEmailRep, err error) {
 	_, err = o.Raw(sql).QueryRows(&item)
 	return
 }
+
+func UpdateAskEmail(item *AskEmailRep) (err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `UPDATE cygx_activity_ask_email SET admin_id=? where mobile=?`
+	_, err = o.Raw(sql,item.AdminId,item.Mobile).Exec()
+	return
+}
+
+func InitSyncActivityAskEmailAdminId() {
+	list, err := GetAskEmailList()
+	if err != nil {
+		return
+	}
+	sysUserList, err := system.GetAdminList()
+	if err != nil {
+		return
+	}
+	adminMap := make(map[string]*system.Admin, 0)
+	for _, v := range sysUserList {
+		adminMap[v.Mobile] = v
+	}
+	for _, v := range list {
+		if admin, ok := adminMap[v.Mobile]; ok {
+			v.AdminId = admin.AdminId
+			err = UpdateAskEmail(v)
+			if err != nil {
+				return
+			}
+		}
+	}
+}

+ 6 - 5
models/db.go

@@ -378,11 +378,12 @@ func initYb() {
 func initRoadShow() {
 	//注册对象
 	orm.RegisterModel(
-		new(roadshow.RsCalendar),           //路演主表
-		new(roadshow.RsCalendarResearcher), //路演研究员信息表
-		new(roadshow.RsMatters),            //公开会议表
-		new(roadshow.RsCalendarRelation),   //路演关系表(与上海的路演日历关系)
-		new(roadshow.RsReportRecord),       //路演统计表
+		new(roadshow.RsCalendar),            //路演主表
+		new(roadshow.RsCalendarResearcher),  //路演研究员信息表
+		new(roadshow.RsMatters),             //公开会议表
+		new(roadshow.RsCalendarRelation),    //路演关系表(与上海的路演日历关系)
+		new(roadshow.RsReportRecord),        //路演统计表
+		new(roadshow.RsCalendarMeetingUser), //路演参会名单表
 	)
 }
 

+ 8 - 2
models/roadshow/calendar.go

@@ -21,6 +21,7 @@ type AddActivityReq struct {
 	ProvinceCode     string `description:"省编码"`
 	City             string `description:"市"`
 	CityCode         string `description:"市编码"`
+	District         string `description:"区"`
 	Theme            string `description:"会议主题"`
 	CooperationName  string `description:"合作方名称"`
 	ActivityCategory string `description:"活动类别"`
@@ -52,6 +53,7 @@ type RsCalendar struct {
 	ProvinceCode     string `description:"省编码"`
 	City             string `description:"市"`
 	CityCode         string `description:"市编码"`
+	District         string `description:"区"`
 	Theme            string `description:"会议主题"`
 	CooperationName  string `description:"合作方名称"`
 	Title            string `description:"展示在日历的标题"`
@@ -273,6 +275,7 @@ type CalendarListView struct {
 	ProvinceCode           string `description:"省编码"`
 	City                   string `description:"市"`
 	CityCode               string `description:"市编码"`
+	District               string `description:"区"`
 	Theme                  string `description:"会议主题"`
 	CooperationName        string `description:"合作方名称"`
 	ActivityCategory       string `description:"活动类别"`
@@ -283,6 +286,8 @@ type CalendarListView struct {
 	EnglishCompany         int    `description:"是否为英文客户: 0-否; 1-是"`
 	EnglishCountry         string `description:"英文客户-国家"`
 	EnglishViewTotal       int    `description:"英文客户-累计点击量"`
+	SubmitButton           bool   `description:"提交按钮是否展示"`
+	ViewButton             bool   `description:"查看按钮是否展示"`
 }
 
 type CalendarListResp struct {
@@ -317,7 +322,7 @@ func GetCalendarListCount(condition string, pars []interface{}, calendarType int
 func GetCalendarList(condition string, pars []interface{}, startSize, pageSize, calendarType int) (list []*CalendarListView, err error) {
 	o := orm.NewOrm()
 	if calendarType == 3 || calendarType == 4 {
-		sql := ` SELECT a.rs_calendar_id,a.activity_type,a.roadshow_type,a.activity_category,a.roadshow_platform,b.create_time,
+		sql := ` SELECT a.rs_calendar_id,a.activity_type,a.roadshow_type,a.activity_category,a.roadshow_platform,b.create_time,a.district,
 				b.modify_time,GROUP_CONCAT(b.researcher_id ORDER BY researcher_sort ASC) AS researcher_id,GROUP_CONCAT(b.researcher_name ORDER BY researcher_sort ASC) AS researcher_name,
 				b.rs_calendar_researcher_id,b.start_date,
 				b.end_date,b.start_time,b.end_time,b.start_week,b.end_week,b.status,b.refuse_reason,b.refuse_time,
@@ -340,7 +345,7 @@ func GetCalendarList(condition string, pars []interface{}, startSize, pageSize,
 
 		_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
 	} else {
-		sql := `SELECT a.rs_calendar_id,a.activity_type,a.roadshow_type,a.activity_category,a.roadshow_platform,b.create_time,
+		sql := `SELECT a.rs_calendar_id,a.activity_type,a.roadshow_type,a.activity_category,a.roadshow_platform,b.create_time,a.district,a.sys_user_id,
 				b.modify_time,b.researcher_id,b.researcher_name,
 				b.rs_calendar_researcher_id,b.start_date,
 				b.end_date,b.start_time,b.end_time,b.start_week,b.end_week,b.status,b.refuse_reason,b.refuse_time,
@@ -537,6 +542,7 @@ type EditActivityReq struct {
 	ProvinceCode           string `description:"省编码"`
 	City                   string `description:"市"`
 	CityCode               string `description:"市编码"`
+	District               string `description:"区"`
 	Theme                  string `description:"会议主题"`
 	CooperationName        string `description:"合作方名称"`
 	ActivityCategory       string `description:"活动类别"`

+ 1 - 1
models/roadshow/company.go

@@ -37,7 +37,7 @@ func CompanySearchV2(sellerId int, keyWord string) (list []*CompanySearchView, e
 				0 AS english_company
 			FROM
 				company AS a
-			INNER JOIN company_product AS b ON a.company_id = b.company_id AND b.product_id = 1
+			INNER JOIN company_product AS b ON a.company_id = b.company_id 
 			WHERE
 				b.status IN ('正式', '试用') AND (b.seller_id = ? OR b.share_seller_id = ?) AND a.company_name LIKE ?
 			GROUP BY

+ 96 - 0
models/roadshow/rs_calendar_meeting_user.go

@@ -0,0 +1,96 @@
+package roadshow
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/utils"
+	"time"
+)
+
+type AddRsCalendarMeetingUserReq struct {
+	RsCalendarId int   `description:"日程ID"`
+	UserId       []int // 用户ID
+}
+
+type RsCalendarMeetingUser struct {
+	RsCalendarMeetingUserId int       `orm:"column(rs_calendar_meeting_user_id);pk" description:"主键ID"`
+	RsCalendarId            int       `description:"日程ID"`
+	UserId                  int       `description:"用户ID"`
+	Mobile                  string    `description:"手机号"`
+	Email                   string    `description:"邮箱"`
+	CompanyId               int       `description:"公司ID"`
+	CompanyName             string    `description:"公司名称"`
+	RealName                string    `description:"用户实际名称"`
+	Position                string    `description:"职位"`
+	AdminId                 int       `description:"管理员ID"`
+	AdminName               string    `description:"管理员姓名"`
+	CreateTime              time.Time `description:"创建时间"`
+	ModifyTime              time.Time `description:"修改时间"`
+}
+
+type RsCalendarMeetingUserResp struct {
+	RsCalendarMeetingUserId int    `description:"参会名单主键ID"`
+	RealName                string `description:"用户实际名称"`
+	Position                string `description:"职位"`
+}
+
+type DeleteRsCalendarMeetingUserReq struct {
+	RsCalendarMeetingUserId int `description:"参会名单主键ID"`
+}
+
+type RsCalendarMeetingUserListResp struct {
+	List []*RsCalendarMeetingUserResp
+}
+
+// MultiAddRsCalendarMeetingUser 批量添加RsCalendarMeetingUser
+func MultiAddRsCalendarMeetingUser(items []*RsCalendarMeetingUser) (err error) {
+	if len(items) == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	_, err = o.InsertMulti(len(items), items)
+	return
+}
+
+// 删除
+func DeleteRsCalendarMeetingUser(rsCalendarMeetingUserID int) (err error) {
+	o := orm.NewOrm()
+	sql := ` DELETE FROM rs_calendar_meeting_user WHERE rs_calendar_meeting_user_id=? `
+	_, err = o.Raw(sql, rsCalendarMeetingUserID).Exec()
+	return err
+}
+
+// 列表
+func GetRsCalendarMeetingUserList(condition string, pars []interface{}) (items *RsCalendarMeetingUserResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM rs_calendar_meeting_user WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	err = o.Raw(sql, pars).QueryRow(&items)
+	return
+}
+
+// 通过路演ID获取参会人员列表
+func GetRsCalendarMeetingUserListByRsCalendarId(rsCalendarId int) (items []*RsCalendarMeetingUserResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM rs_calendar_meeting_user WHERE  rs_calendar_id = ?  `
+	_, err = o.Raw(sql, rsCalendarId).QueryRows(&items)
+	return
+}
+
+type RsCalendarMeetingUserCountResp struct {
+	RsCalendarId int `description:"日程ID"`
+	Total        int `description:"数量"`
+}
+
+// 路演参会人员数量
+func GetRsCalendarMeetingUserListCount(rsCalendarIds []int) (items []*RsCalendarMeetingUserCountResp, err error) {
+	lenNum := len(rsCalendarIds)
+	if lenNum <= 0 {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT  rs_calendar_id ,COUNT(1) as total  FROM rs_calendar_meeting_user WHERE  rs_calendar_id IN ( ` + utils.GetOrmInReplace(lenNum) + `)   GROUP BY rs_calendar_id  `
+	_, err = o.Raw(sql, rsCalendarIds).QueryRows(&items)
+	return
+}

+ 1 - 0
models/wx_user.go

@@ -455,6 +455,7 @@ type WxUserItem struct {
 	IsMsgOutboundMobile int       `description:"是否弹窗过绑定外呼手机号区号"`
 	IsMaker             int       `description:"是否是决策人"`
 	Source              int
+	Position            string `description:"职位"`
 }
 
 // GetWxUserListByUserIds 根据用户ID集合获取用户有公司名称

+ 27 - 0
routers/commentsRouter.go

@@ -7720,6 +7720,33 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/roadshow:CalendarMeetingUserController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/roadshow:CalendarMeetingUserController"],
+        beego.ControllerComments{
+            Method: "Add",
+            Router: `/rs_calendar_meeting_user/add`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/roadshow:CalendarMeetingUserController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/roadshow:CalendarMeetingUserController"],
+        beego.ControllerComments{
+            Method: "Delete",
+            Router: `/rs_calendar_meeting_user/delete`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/roadshow:CalendarMeetingUserController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/roadshow:CalendarMeetingUserController"],
+        beego.ControllerComments{
+            Method: "List",
+            Router: `/rs_calendar_meeting_user/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/seal:SealApprovalController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/seal:SealApprovalController"],
         beego.ControllerComments{
             Method: "Apply",

+ 1 - 0
routers/router.go

@@ -233,6 +233,7 @@ func init() {
 		web.NSNamespace("/roadshow",
 			web.NSInclude(
 				&roadshow.CalendarController{},
+				&roadshow.CalendarMeetingUserController{},
 			),
 		),
 		web.NSNamespace("/taglib",