calendar_meeting_user.go 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. package roadshow
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "hongze/hz_crm_api/controllers"
  6. "hongze/hz_crm_api/models"
  7. "hongze/hz_crm_api/models/cygx"
  8. "hongze/hz_crm_api/models/roadshow"
  9. cygxService "hongze/hz_crm_api/services/cygx"
  10. "hongze/hz_crm_api/utils"
  11. "strconv"
  12. "strings"
  13. "time"
  14. )
  15. // 日历参会名单
  16. type CalendarMeetingUserController struct {
  17. controllers.BaseAuthController
  18. }
  19. // @Title 新增路演活动参会名单接口
  20. // @Description 新增路演活动参会名单接口
  21. // @Param request body roadshow.AddRsCalendarMeetingUserReq true "type json string"
  22. // @Success Ret=200 保存成功
  23. // @router /rs_calendar_meeting_user/add [post]
  24. func (this *CalendarMeetingUserController) Add() {
  25. br := new(models.BaseResponse).Init()
  26. defer func() {
  27. this.Data["json"] = br
  28. this.ServeJSON()
  29. }()
  30. sysUser := this.SysUser
  31. if sysUser == nil {
  32. br.Msg = "请登录"
  33. br.ErrMsg = "请登录,SysUser Is Empty"
  34. br.Ret = 408
  35. return
  36. }
  37. var req roadshow.AddRsCalendarMeetingUserReq
  38. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  39. if err != nil {
  40. br.Msg = "参数解析异常!"
  41. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  42. return
  43. }
  44. rsCalendarId := req.RsCalendarId
  45. userIds := req.UserId
  46. tagList := req.TagList
  47. roadShowTheme := req.RoadShowTheme
  48. if rsCalendarId == 0 {
  49. br.Msg = "路演信息错误!"
  50. return
  51. }
  52. if roadShowTheme == "" {
  53. br.Msg = "请输入路演主题名称!"
  54. return
  55. }
  56. var itemsGroup []*roadshow.RsCalendarMeetingLabelGroup
  57. for _, v := range tagList {
  58. itemGroup := new(roadshow.RsCalendarMeetingLabelGroup)
  59. itemGroup.RsCalendarId = rsCalendarId
  60. itemGroup.TagType = v.TagType
  61. itemGroup.TagId = v.TagId
  62. itemGroup.AdminId = sysUser.AdminId
  63. itemGroup.AdminName = sysUser.RealName
  64. itemGroup.CreateTime = time.Now()
  65. itemGroup.ModifyTime = time.Now()
  66. itemsGroup = append(itemsGroup, itemGroup)
  67. }
  68. err = roadshow.AddRsCalendarMeetingLabelGroupMulti(itemsGroup, rsCalendarId)
  69. if err != nil {
  70. br.Msg = "获取信息失败!"
  71. br.ErrMsg = "获取信息失败-AddRsCalendarMeetingLabelGroupMulti!Err:" + err.Error()
  72. return
  73. }
  74. var items []*roadshow.RsCalendarMeetingUser
  75. if len(userIds) > 0 {
  76. var userIdsStr []string
  77. for _, v := range userIds {
  78. userIdsStr = append(userIdsStr, strconv.Itoa(v))
  79. }
  80. listUser, err := models.GetWxUserListByUserIdsHaveCompany(strings.Join(userIdsStr, ","))
  81. if err != nil {
  82. br.Msg = "获取用户信息失败!"
  83. br.ErrMsg = "获取用户信息失败-GetWxUserListByUserIdsHaveCompany!Err:" + err.Error()
  84. return
  85. }
  86. for _, v := range listUser {
  87. item := new(roadshow.RsCalendarMeetingUser)
  88. item.RsCalendarId = rsCalendarId
  89. item.UserId = v.UserId
  90. item.Mobile = v.Mobile
  91. item.Email = v.Email
  92. item.CompanyId = v.CompanyId
  93. item.CompanyName = v.CompanyName
  94. item.RealName = v.RealName
  95. item.Position = v.Position
  96. item.AdminId = sysUser.AdminId
  97. item.AdminName = sysUser.RealName
  98. item.RoadShowTheme = req.RoadShowTheme
  99. item.CreateTime = time.Now()
  100. item.ModifyTime = time.Now()
  101. items = append(items, item)
  102. }
  103. }
  104. err = roadshow.MultiAddRsCalendarMeetingUser(items, roadShowTheme, rsCalendarId)
  105. if err != nil {
  106. br.Msg = "操作失败!"
  107. br.ErrMsg = "操作失败-MultiAddRsCalendarMeetingUser!Err:" + err.Error()
  108. return
  109. }
  110. for _, v := range items {
  111. cygxService.RoadShowWxUserRaiLabelRedisAdd(rsCalendarId, v.UserId, v.CreateTime) //添加用户参加路演标签到Redis
  112. }
  113. br.Ret = 200
  114. br.Success = true
  115. br.Msg = "添加成功"
  116. br.IsAddLog = true
  117. }
  118. // @Title 路演活动参会名单列表接口
  119. // @Description 路演活动参会名单列表接口
  120. // @Param RsCalendarId query int true "路演活动id"
  121. // @Success 200 {object} roadshow.CalendarListResp
  122. // @router /rs_calendar_meeting_user/list [get]
  123. func (this *CalendarMeetingUserController) List() {
  124. br := new(models.BaseResponse).Init()
  125. defer func() {
  126. this.Data["json"] = br
  127. this.ServeJSON()
  128. }()
  129. sysUser := this.SysUser
  130. if sysUser == nil {
  131. br.Msg = "请登录"
  132. br.ErrMsg = "请登录,SysUser Is Empty"
  133. br.Ret = 408
  134. return
  135. }
  136. rsCalendarId, _ := this.GetInt("RsCalendarId")
  137. resp := new(roadshow.RsCalendarMeetingUserListResp)
  138. list, err := roadshow.GetRsCalendarMeetingUserListByRsCalendarId(rsCalendarId)
  139. if err != nil {
  140. br.Msg = "获取失败!"
  141. br.ErrMsg = "操作失败-GetRsCalendarMeetingUserListByRsCalendarId!Err:" + err.Error()
  142. return
  143. }
  144. totalGroup, err := roadshow.GetRsCalendarMeetingLabelGroupByRsCalendarId(rsCalendarId)
  145. if err != nil {
  146. br.Msg = "获取信息失败!"
  147. br.ErrMsg = "获取用户信息失败-GetRsCalendarMeetingLabelGroupByRsCalendarId!Err:" + err.Error()
  148. return
  149. }
  150. var lebelDetail []*cygx.RaiServeTagResp
  151. if totalGroup > 0 {
  152. listGroup, err := roadshow.GetRsCalendarMeetingLabelGroupListByRsCalendarId(rsCalendarId)
  153. if err != nil {
  154. br.Msg = "获取信息失败!"
  155. br.ErrMsg = "获取用户信息失败-GetRsCalendarMeetingLabelGroupListByRsCalendarId!Err:" + err.Error()
  156. return
  157. }
  158. var industrialManagementIds []int
  159. var industrialSubjectIds []int
  160. mapindustrialManagementName := make(map[int]string)
  161. mapindustrialSubjectName := make(map[int]string)
  162. mapCelueName := make(map[int]string)
  163. for _, v := range listGroup {
  164. switch v.TagType {
  165. case 1:
  166. industrialManagementIds = append(industrialManagementIds, v.TagId)
  167. case 2:
  168. industrialSubjectIds = append(industrialSubjectIds, v.TagId)
  169. case 3:
  170. mapCelueName[v.TagId] = "策略"
  171. }
  172. }
  173. if len(industrialManagementIds) > 0 {
  174. IndustryList, err := cygx.GetIndustryListByConditionByIds(industrialManagementIds)
  175. if err != nil {
  176. br.Msg = "获取信息失败!"
  177. br.ErrMsg = "获取用户信息失败-GetIndustryListByConditionByIds!Err:" + err.Error()
  178. return
  179. }
  180. for _, v := range IndustryList {
  181. mapindustrialManagementName[v.IndustrialManagementId] = v.IndustryName
  182. }
  183. }
  184. if len(industrialSubjectIds) > 0 {
  185. SubjectList, err := cygx.GetIndustrialSubjectDetailByIds(industrialSubjectIds)
  186. if err != nil {
  187. br.Msg = "获取信息失败!"
  188. br.ErrMsg = "获取用户信息失败-GetIndustryListByConditionByIds!Err:" + err.Error()
  189. return
  190. }
  191. for _, v := range SubjectList {
  192. mapindustrialSubjectName[v.IndustrialSubjectId] = v.SubjectName
  193. }
  194. }
  195. for _, v := range listGroup {
  196. item := new(cygx.RaiServeTagResp)
  197. item.TagType = v.TagType
  198. item.TagId = v.TagId
  199. item.Md5Key = utils.MD5(fmt.Sprintf("K_", v.TagType, "V_", v.TagId))
  200. switch v.TagType {
  201. case 1:
  202. item.TagName = mapindustrialManagementName[v.TagId]
  203. case 2:
  204. item.TagName = mapindustrialSubjectName[v.TagId]
  205. case 3:
  206. item.TagName = mapCelueName[v.TagId]
  207. }
  208. lebelDetail = append(lebelDetail, item)
  209. }
  210. }
  211. if len(list) == 0 {
  212. list = make([]*roadshow.RsCalendarMeetingUserResp, 0)
  213. } else {
  214. for _, v := range list {
  215. resp.RoadShowTheme = v.RoadShowTheme
  216. }
  217. }
  218. if len(lebelDetail) == 0 {
  219. lebelDetail = make([]*cygx.RaiServeTagResp, 0)
  220. }
  221. resp.List = list
  222. resp.ListLebel = lebelDetail
  223. br.Ret = 200
  224. br.Success = true
  225. br.Data = resp
  226. br.Msg = "获取成功"
  227. }
  228. // @Title 路演活动参会删除接口
  229. // @Description 路演活动参会删除接口
  230. // @Param RsCalendarMeetingUserId query int true "参会名单主键ID"
  231. // @Success Ret=200 删除成功
  232. // @router /rs_calendar_meeting_user/delete [post]
  233. func (this *CalendarMeetingUserController) Delete() {
  234. br := new(models.BaseResponse).Init()
  235. defer func() {
  236. this.Data["json"] = br
  237. this.ServeJSON()
  238. }()
  239. sysUser := this.SysUser
  240. if sysUser == nil {
  241. br.Msg = "请登录"
  242. br.ErrMsg = "请登录,SysUser Is Empty"
  243. br.Ret = 408
  244. return
  245. }
  246. var req roadshow.DeleteRsCalendarMeetingUserReq
  247. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  248. if err != nil {
  249. br.Msg = "参数解析异常!"
  250. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  251. return
  252. }
  253. rsCalendarMeetingUserId := req.RsCalendarMeetingUserId
  254. err = roadshow.DeleteRsCalendarMeetingUser(rsCalendarMeetingUserId)
  255. if err != nil {
  256. br.Msg = "删除失败!"
  257. br.ErrMsg = "删除失败-DeleteRsCalendarMeetingUser!Err:" + err.Error()
  258. return
  259. }
  260. br.Ret = 200
  261. br.Success = true
  262. br.Msg = "删除成功"
  263. br.IsAddLog = true
  264. }